:root{--bg:#F2F4F6;--ink:#14212B;--mute:#566574;--card:#FFFFFF;--line:#D3DAE0;--acc:#1F3A5F;--onacc:#FFFFFF;--red:#1F3A5F;--ban:#1F3A5F;--tag:#FFFFFFE6;--glow:rgba(31,58,95,.10);color-scheme:light;box-sizing:border-box;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--bg:#0F1A24;--ink:#E6EDF2;--mute:#9AABB9;--card:#16242F;--line:#2A3A47;--acc:#8FB3D9;--onacc:#0F1A24;--red:#8FB3D9;--ban:#8FB3D9;--tag:#16242FE6;--glow:rgba(143,179,217,.12);color-scheme:dark}}
:root[data-theme="dark"]{--bg:#0F1A24;--ink:#E6EDF2;--mute:#9AABB9;--card:#16242F;--line:#2A3A47;--acc:#8FB3D9;--onacc:#0F1A24;--red:#8FB3D9;--ban:#8FB3D9;--tag:#16242FE6;--glow:rgba(143,179,217,.12);color-scheme:dark}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
body{margin:0;background:var(--bg);color:var(--ink);font:400 17px/1.65 "Be Vietnam Pro",system-ui,-apple-system,"Segoe UI",sans-serif}
main{max-width:960px;margin:0 auto;padding:36px 20px 56px}
h1{font:700 clamp(30px,6.2vw,56px)/1.05 "Source Serif 4",Georgia,"Times New Roman",serif;margin:0 0 14px;text-wrap:balance;letter-spacing:-.01em}
.lede{max-width:62ch;color:var(--mute);margin:0 0 8px}
#stage{position:relative;height:clamp(360px,60vw,540px);margin:6px 0 0;background:radial-gradient(ellipse 52% 46% at 50% 56%,var(--glow),transparent 70%);overflow:hidden}
#cv{display:block;width:100%;height:100%;touch-action:pan-y;cursor:grab}
#tags{position:absolute;inset:0;pointer-events:none}
.tag{position:absolute;left:0;top:0;pointer-events:auto;font:600 14px "Be Vietnam Pro",system-ui,sans-serif;padding:6px 13px;border-radius:999px;border:1.5px solid var(--line);background:var(--tag);color:var(--ink);backdrop-filter:blur(6px);opacity:0;visibility:hidden;transition:opacity .5s,background .2s,color .2s,border-color .2s;white-space:nowrap}
.tag.on{opacity:1;visibility:visible}
.tag.sel{background:var(--red);border-color:var(--red);color:#fff}
#hint{position:absolute;left:0;right:0;bottom:8px;text-align:center;font-size:14px;color:var(--mute);transition:opacity .6s;pointer-events:none}
.bar{display:flex;flex-wrap:wrap;gap:12px;align-items:center;margin:10px 0 22px}
button{font:600 16px "Be Vietnam Pro",system-ui,sans-serif;border-radius:999px;padding:12px 24px;cursor:pointer;border:2px solid var(--ink);color:var(--ink);background:transparent}
button.go{background:var(--ban);border-color:var(--ban);color:#10283A}
button:disabled{opacity:.5;cursor:default}
button:focus-visible{outline:3px solid var(--red);outline-offset:3px}
.tag:focus-visible{outline:3px solid var(--red);outline-offset:2px}
#cnt{color:var(--mute);font-size:15px;margin-left:4px}
.card{background:var(--card);border:1px solid var(--line);border-left:8px solid var(--ban);border-radius:6px;padding:26px 28px;min-height:230px}
.in{display:grid;grid-template-columns:minmax(150px,230px) 1fr;gap:12px 32px;align-items:start}
.in.swap{animation:sw .5s cubic-bezier(.2,.8,.2,1)}
@keyframes sw{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
.fig{font:800 clamp(44px,9vw,84px)/1 "Source Serif 4",Georgia,"Times New Roman",serif;color:var(--red);letter-spacing:-.02em}
h2{font:700 clamp(20px,3.4vw,27px)/1.25 "Source Serif 4",Georgia,"Times New Roman",serif;margin:0 0 8px}
.card p{margin:0;max-width:62ch}
blockquote{margin:16px 0 0;padding-left:14px;border-left:3px solid var(--line);max-width:58ch}
blockquote span{display:block;color:var(--mute);font-size:14px;margin-top:2px}
#end{margin:18px 0 0;font-weight:500;max-width:62ch;display:none}
footer{margin-top:30px;font-size:13px;color:var(--mute);max-width:70ch}
@media (max-width:640px){.in{grid-template-columns:1fr}.card{padding:20px}.tag{font-size:12px;padding:5px 10px}}
@media (prefers-reduced-motion:reduce){.in.swap{animation:none}.tag{transition:none}}

button.go{background:var(--acc);border-color:var(--acc);color:var(--onacc)}
.tag.sel{background:var(--acc);border-color:var(--acc);color:var(--onacc)}
.card{border-left:1px solid var(--line);border-top:3px solid var(--acc);border-radius:2px;padding:28px 30px}
.in{grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:8px 40px}
.tx h2{font-size:clamp(21px,3.2vw,28px);line-height:1.25;margin:0 0 14px}
.tx p{margin:0 0 12px;max-width:62ch}
#sd{border-left:1px solid var(--line);padding-left:28px}
#sd h3,.vz h4{font:600 13px/1.45 "Be Vietnam Pro",system-ui,sans-serif;color:var(--mute);margin:0 0 10px}
dl{margin:0 0 24px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,.95fr)}
dt,dd{margin:0;padding:8px 0;border-bottom:1px solid var(--line);font-size:14px;line-height:1.45}
dt{color:var(--mute);padding-right:14px}
dd{font-weight:600;text-align:right;font-variant-numeric:tabular-nums}
.vz{margin:0 0 22px}
.br{display:grid;grid-template-columns:minmax(84px,.8fr) 2fr auto;gap:10px;align-items:center;font-size:13px;margin:7px 0}
.tr{height:10px;background:var(--line);border-radius:1px;overflow:hidden}
.tr i{display:block;height:100%;background:var(--mute);transition:width .9s cubic-bezier(.2,.8,.2,1)}
.tr i.hi{background:var(--acc)}
.br b{min-width:64px;text-align:right;font-variant-numeric:tabular-nums}
ol.steps,ol.list{margin:0;padding:0;list-style:none;font-size:14px;line-height:1.5}
ol li{position:relative;padding:0 0 12px 20px}
ol.steps li::before{content:"";position:absolute;left:2px;top:7px;width:8px;height:8px;border-radius:50%;background:var(--acc)}
ol.steps li::after{content:"";position:absolute;left:5.5px;top:17px;bottom:-2px;width:1px;background:var(--line)}
ol.steps li:last-child::after{display:none}
ol.list li::before{content:"";position:absolute;left:0;top:11px;width:9px;height:2px;background:var(--acc)}
ol li strong{display:block;font-weight:600}
ol li span{color:var(--mute)}
#end{border-top:1px solid var(--line);padding-top:16px}
@media (max-width:760px){.in{grid-template-columns:1fr}#sd{border-left:0;padding-left:0;border-top:1px solid var(--line);padding-top:18px;margin-top:6px}.br{grid-template-columns:92px 1fr auto}.card{padding:22px 20px}}
@media (prefers-reduced-motion:reduce){.tr i{transition:none}}

.route{position:relative;margin:0;padding:0 0 0 42px;list-style:none;font-size:14px;line-height:1.5}
.route li{position:relative;padding:0 0 18px}
.route li::before{content:"";position:absolute;left:-28px;top:6px;width:10px;height:10px;border-radius:50%;border:2px solid var(--mute);background:var(--card);transition:background .4s,border-color .4s}
.route li.on::before{border-color:var(--acc);background:var(--acc)}
.route li strong,.route li span{display:block;opacity:0;transform:translateY(5px);transition:opacity .6s,transform .6s}
.route li strong{font-weight:600}
.route li span{color:var(--mute)}
.route li.on strong,.route li.on span{opacity:1;transform:none}
.rl{position:absolute;left:14px;width:2px;margin-left:-1px;background:var(--line)}
.rl i{display:block;width:100%;height:0;background:var(--acc)}
.ship{position:absolute;left:0;top:0;width:36px;height:28px;margin-left:-4px;color:var(--acc);will-change:transform}
.ship svg{display:block;width:100%;height:100%;animation:bob 1.8s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-2px) rotate(-4deg)}}
.rp{margin:2px 0 0 42px;padding:4px 0;border:0;border-radius:0;background:none;color:var(--acc);font:600 13px "Be Vietnam Pro",system-ui,sans-serif;text-decoration:underline;text-underline-offset:3px}
ol li .ic{flex:none;display:grid;place-items:center;width:32px;height:32px;border-radius:50%;border:1px solid var(--line);background:var(--bg);color:var(--acc)}
.ic svg{width:18px;height:18px}
ol.list li.hasic{display:flex;gap:12px;align-items:flex-start;padding:0 0 14px}
ol.list li.hasic::before{display:none}
@media (prefers-reduced-motion:reduce){.ship svg{animation:none}.route li strong,.route li span{transition:none}}

:root{--mast:#12263F}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--mast:#0A131C}}
:root[data-theme="dark"]{--mast:#0A131C}
html{background:var(--mast)}
.mast{--gold:#E9B949;position:relative;overflow:hidden;background:var(--mast);color:#F3F6F9;padding:48px 20px 44px}
.mw{position:relative;max-width:960px;margin:0 auto}
.arc{position:absolute;right:-70px;top:-40px;width:min(72vw,640px);height:auto;fill:none;stroke:rgba(255,255,255,.1);stroke-width:2;pointer-events:none}
.bar{display:block;width:64px;height:5px;background:var(--gold);margin:0 0 24px}
.mast h1{position:relative;margin:0 0 22px;color:#fff;text-wrap:balance}
.ha{display:block;font-size:clamp(36px,7.6vw,72px);line-height:1.02;letter-spacing:-.02em}
.hb{display:block;margin-top:14px;font:italic 400 clamp(20px,3.8vw,36px)/1.25 "Source Serif 4",Georgia,"Times New Roman",serif;letter-spacing:0;color:var(--gold)}
.mast .lede{position:relative;max-width:60ch;margin:0;color:#C8D6E3;font-size:18px;border-left:3px solid rgba(255,255,255,.28);padding-left:16px}
@media (max-width:640px){.mast{padding:36px 20px 34px}.mast .lede{font-size:16px}}
.bar{display:flex;flex-direction:row;flex-wrap:nowrap;align-items:center;gap:10px}
.bar button{flex:none;white-space:nowrap}
#cnt{margin-left:4px;white-space:nowrap}
@media (max-width:480px){.bar{gap:8px}.bar button{padding:10px 16px;font-size:15px}#cnt{font-size:13px;margin-left:2px}}
