/* ============================================================
   SpaceX 招股书超级解读 · Swiss Bold
   Fixed 1920×1080 stage · zero dependency · OKLCH-aware
   ============================================================ */

:root{
  --paper:#f4f3ef;
  --paper-2:#eceae3;
  --ink:#0d0d0f;
  --ink-2:#2a2a2c;
  --ink-3:#5a5852;
  --ink-4:#8a887f;
  --blue:#1452ff;
  --blue-soft:#e3eaff;
  --amber:#ff8a00;
  --amber-soft:#ffe9cf;
  --pos:#0a7d52;
  --neg:#d23b1e;
  --line:#dcdad2;
  --line-2:#c9c7bd;
  --stage-bg:#cfcdc6;
  --night:#0d0d0f;

  --disp:"Archivo","Noto Sans SC",sans-serif;
  --cjk:"Noto Sans SC",sans-serif;
  --mono:"IBM Plex Mono",ui-monospace,monospace;

  --z-chrome:100;
  --z-overview:400;
  --ease:cubic-bezier(.16,1,.3,1);
}

*{box-sizing:border-box;margin:0;padding:0;}
html,body{width:100%;height:100%;overflow:hidden;background:var(--stage-bg);
  font-family:var(--cjk);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;}

/* ---------- stage ---------- */
.deck-viewport{position:fixed;inset:0;overflow:hidden;background:var(--stage-bg);}
.deck-stage{position:absolute;left:0;top:0;width:1920px;height:1080px;overflow:hidden;
  transform-origin:0 0;background:var(--paper);}
.slide{position:absolute;inset:0;width:1920px;height:1080px;overflow:hidden;
  opacity:0;visibility:hidden;pointer-events:none;background:var(--paper);
  transition:opacity .42s var(--ease),visibility 0s linear .42s;}
.slide.is-active{opacity:1;visibility:visible;pointer-events:auto;
  transition:opacity .42s var(--ease),visibility 0s linear 0s;}
@media (prefers-reduced-motion:reduce){
  .slide{transition:visibility 0s linear .01s;}
  .slide.is-active{transition:visibility 0s linear 0s;}
}
.slide.dark{background:var(--night);color:#fff;}

/* ---------- full-bleed photographic backgrounds ---------- */
.photo-bg{position:absolute;inset:0;z-index:0;pointer-events:none;background-size:cover;
  background-position:center;background-repeat:no-repeat;filter:saturate(1.08) contrast(1.05);}
.photo-bg.starship{background-image:url("assets/fig17-starship-bg.png");background-size:auto 114%;
  background-position:88% 48%;background-color:#111522;}
.photo-scrim{position:absolute;inset:0;z-index:1;pointer-events:none;
  background:
    linear-gradient(90deg,rgba(13,13,15,.97) 0%,rgba(13,13,15,.9) 35%,rgba(13,13,15,.36) 66%,rgba(13,13,15,.46) 100%),
    linear-gradient(0deg,rgba(13,13,15,.82) 0%,rgba(13,13,15,.12) 46%,rgba(13,13,15,.42) 100%);}

/* ---------- structural grid ---------- */
.grid{position:absolute;inset:0;pointer-events:none;
  background-image:linear-gradient(90deg,var(--line) 1px,transparent 1px);
  background-size:240px 100%;opacity:.55;}
.grid.h{background-image:linear-gradient(var(--line) 1px,transparent 1px);background-size:100% 180px;}
.slide.dark .grid{background-image:linear-gradient(90deg,rgba(255,255,255,.07) 1px,transparent 1px);}
.slide.dark .grid.h{background-image:linear-gradient(rgba(255,255,255,.07) 1px,transparent 1px);}

.pad{position:absolute;inset:0;z-index:2;padding:72px 104px 96px;display:flex;flex-direction:column;}

/* ---------- top meta rail ---------- */
.meta{display:flex;justify-content:space-between;align-items:flex-start;
  font-family:var(--mono);font-size:17px;letter-spacing:.13em;color:var(--ink);
  text-transform:uppercase;flex:0 0 auto;}
.slide.dark .meta{color:#fff;}
.meta .rt{text-align:right;color:var(--ink-3);line-height:1.7;}
.slide.dark .meta .rt{color:#9b9aa2;}
.meta .rt b{color:var(--blue);}
.slide.dark .meta .rt b{color:#5a8bff;}

/* ---------- section head ---------- */
.head-row{display:flex;align-items:flex-end;gap:28px;margin-top:34px;flex:0 0 auto;}
.head-no{font-family:var(--disp);font-weight:900;font-size:128px;line-height:.78;
  color:var(--ink);letter-spacing:-.035em;}
.head-no .dot{color:var(--amber);}
.slide.dark .head-no{color:#fff;}
.head-tx{padding-bottom:10px;}
.kick{font-family:var(--mono);font-size:16px;letter-spacing:.14em;text-transform:uppercase;
  color:var(--blue);display:inline-flex;align-items:center;gap:10px;margin-bottom:12px;}
.kick::before{content:"";width:34px;height:5px;background:var(--amber);}
.h2{font-family:var(--cjk);font-weight:900;font-size:58px;line-height:1.02;
  letter-spacing:.005em;color:var(--ink);max-width:1180px;text-wrap:balance;}
.slide.dark .h2{color:#fff;}
.h2 .en{font-family:var(--disp);letter-spacing:-.02em;}
.h2 .on{color:#fff;background:var(--blue);padding:0 14px;box-decoration-break:clone;-webkit-box-decoration-break:clone;}
.h2 .am{color:var(--amber);}
.h2.v3-title{display:flex;flex-direction:column;align-items:flex-start;gap:24px;line-height:1;}
.h2.v3-title .on{display:inline-block;line-height:1.08;padding:8px 16px 10px;}

/* body region fills remaining height */
.body{flex:1 1 auto;min-height:0;margin-top:40px;display:flex;flex-direction:column;}
.body.center{justify-content:center;}

/* ---------- columns ---------- */
.cols{display:grid;gap:56px;flex:1 1 auto;min-height:0;}
.c-7-5{grid-template-columns:7fr 5fr;}
.c-5-7{grid-template-columns:5fr 7fr;}
.c-6-6{grid-template-columns:6fr 6fr;}
.c-4-8{grid-template-columns:4fr 8fr;}
.c-8-4{grid-template-columns:8fr 4fr;}
.colflex{display:flex;flex-direction:column;justify-content:center;gap:22px;min-height:0;}

/* ---------- prose ---------- */
.p{font-size:25px;line-height:1.62;color:var(--ink-2);max-width:62ch;}
.p.sm{font-size:21px;line-height:1.6;}
.p strong{font-weight:900;color:var(--ink);}
.p .b{color:var(--blue);font-weight:900;}
.p .a{color:var(--amber);font-weight:900;}
.p .pos{color:var(--pos);font-weight:900;}
.p .neg{color:var(--neg);font-weight:900;}
.slide.dark .p{color:#cfced4;}
.slide.dark .p strong{color:#fff;}

.lead{font-size:30px;line-height:1.55;color:var(--ink-2);max-width:34ch;}
.slide.dark .lead{color:#cfced4;}

/* bullet list */
.pts{list-style:none;display:flex;flex-direction:column;gap:14px;}
.pts li{position:relative;padding-left:30px;font-size:21px;line-height:1.5;color:var(--ink-2);}
.pts li::before{content:"";position:absolute;left:0;top:13px;width:13px;height:13px;background:var(--ink);}
.pts li strong{font-weight:900;color:var(--ink);}
.pts li .b{color:var(--blue);} .pts li .a{color:var(--amber);}
.slide.dark .pts li{color:#cfced4;}
.slide.dark .pts li::before{background:var(--amber);}
.slide.dark .pts li strong{color:#fff;}

/* ---------- big number index (cover) ---------- */
.idx{font-family:var(--disp);font-weight:900;font-size:240px;line-height:.8;
  color:var(--ink);letter-spacing:-.035em;}
.idx .dot{color:var(--amber);}

/* ---------- cover title ---------- */
.cover-title{font-family:var(--cjk);font-weight:900;color:var(--ink);
  font-size:108px;line-height:1.08;letter-spacing:.01em;max-width:1060px;}
.cover-title .en{font-family:var(--disp);font-weight:900;letter-spacing:-.02em;}
.cover-title .on{color:#fff;background:var(--blue);padding:0 16px;
  box-decoration-break:clone;-webkit-box-decoration-break:clone;}
.cover-sub{font-family:var(--cjk);font-weight:500;font-size:31px;color:var(--ink-2);}
.cover-sub .bar{display:inline-block;width:54px;height:6px;background:var(--amber);
  vertical-align:middle;margin-right:18px;}

/* ---------- stat ---------- */
.stat-row{display:flex;gap:64px;flex-wrap:wrap;}
.stat{display:flex;flex-direction:column;gap:6px;}
.stat .num{font-family:var(--disp);font-weight:900;font-size:78px;line-height:.9;
  letter-spacing:-.03em;color:var(--ink);}
.stat .num.sm{font-size:58px;}
.stat .num .u{font-size:.42em;font-weight:700;}
.stat .num.b{color:var(--blue);} .stat .num.a{color:var(--amber);}
.stat .num.pos{color:var(--pos);} .stat .num.neg{color:var(--neg);}
.stat .lbl{font-size:17px;line-height:1.4;color:var(--ink-3);max-width:22ch;
  font-family:var(--cjk);font-weight:500;}
.slide.dark .stat .num{color:#fff;}
.slide.dark .stat .lbl{color:#9b9aa2;}

/* right-rail key/value (cover) */
.side{width:480px;border-top:5px solid var(--ink);}
.side .row{display:flex;justify-content:space-between;align-items:baseline;
  padding:18px 0;border-bottom:1px solid var(--line);}
.side .k{font-family:var(--mono);font-size:16px;letter-spacing:.1em;color:var(--ink-3);text-transform:uppercase;}
.side .n{font-family:var(--disp);font-weight:900;font-size:42px;color:var(--ink);letter-spacing:-.02em;}
.side .n.b{color:var(--blue);} .side .n.a{color:var(--amber);}
.side .cap{font-family:var(--mono);font-size:14px;letter-spacing:.13em;color:var(--ink-4);
  text-transform:uppercase;margin-top:14px;}

/* ---------- figure (fixes cropping: fixed box + contain) ---------- */
.fig{display:flex;flex-direction:column;min-height:0;}
.imgbox{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;
  background:#fff;border:1px solid var(--line);overflow:hidden;}
.imgbox img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;}
.imgbox.dark{background:#000;}
.figcap{font-family:var(--mono);font-size:15px;line-height:1.5;color:var(--ink-4);
  letter-spacing:.02em;margin-top:12px;text-transform:none;}
.slide.dark .figcap{color:#7c7b84;}

/* ---------- table ---------- */
.tbl{width:100%;border-collapse:collapse;font-size:19px;}
.tbl caption{text-align:left;font-family:var(--mono);font-size:15px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--ink-3);padding-bottom:12px;}
.tbl th,.tbl td{padding:13px 16px;border-bottom:1px solid var(--line);text-align:left;}
.tbl thead th{font-family:var(--mono);font-size:14px;letter-spacing:.06em;text-transform:uppercase;
  color:var(--ink-3);border-bottom:2px solid var(--ink);}
.tbl td.num,.tbl th.num{text-align:right;font-family:var(--disp);font-weight:700;font-variant-numeric:tabular-nums;}
.tbl td{color:var(--ink-2);}
.tbl td:first-child{font-weight:700;color:var(--ink);}
.tbl tr.total td{border-top:2px solid var(--ink);border-bottom:2px solid var(--ink);
  font-weight:900;color:var(--ink);background:var(--paper-2);}
.tbl .pos{color:var(--pos);} .tbl .neg{color:var(--neg);}
.src{font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--ink-4);}

/* ---------- callout ---------- */
.callout{background:var(--blue-soft);border:2px solid var(--blue);padding:24px 28px;
  font-size:21px;line-height:1.55;color:var(--ink);}
.callout strong{font-weight:900;color:var(--blue);}
.callout.warn{background:var(--amber-soft);border-color:var(--amber);}
.callout.warn strong{color:#b35d00;}
.callout.ink{background:var(--night);border-color:var(--night);color:#fff;}
.callout.ink strong{color:var(--amber);}
.slide.dark .callout{background:rgba(20,82,255,.16);border-color:#3a6bff;color:#eef1ff;}
.slide.dark .callout strong{color:#7da0ff;}

/* ---------- embedded deep-reading blocks ---------- */
.readout{position:relative;isolation:isolate;border:1px solid var(--line-2);background:rgba(255,255,255,.72);
  padding:0;margin-top:4px;max-height:230px;overflow:auto;}
.readout summary{list-style:none;cursor:pointer;font-family:var(--mono);font-size:13px;
  letter-spacing:.13em;text-transform:uppercase;color:var(--blue);padding:12px 14px;
  border-bottom:1px solid transparent;display:flex;align-items:center;gap:10px;}
.readout summary::-webkit-details-marker{display:none;}
.readout summary::before{content:"";width:16px;height:4px;background:var(--amber);flex:0 0 auto;}
.readout[open] summary{border-bottom-color:var(--line);}
.readout .rd{padding:12px 14px 15px;display:grid;gap:9px;}
.readout p{font-size:16px;line-height:1.62;color:var(--ink-2);}
.readout p strong{font-weight:900;color:var(--ink);}
.readout ul{list-style:none;display:grid;gap:6px;}
.readout li{position:relative;padding-left:17px;font-size:15px;line-height:1.48;color:var(--ink-2);}
.readout li::before{content:"";position:absolute;left:0;top:9px;width:6px;height:6px;background:var(--amber);}
.slide.dark .readout{background:rgba(255,255,255,.06);border-color:rgba(255,255,255,.22);}
.slide.dark .readout summary{color:#7da0ff;}
.slide.dark .readout[open] summary{border-bottom-color:rgba(255,255,255,.16);}
.slide.dark .readout p,.slide.dark .readout li{color:#cfced4;}
.slide.dark .readout p strong{color:#fff;}
.readout.dropup[open]{overflow:visible;max-height:none;z-index:8;}
.readout.dropup[open] summary{position:relative;z-index:2;background:rgba(255,255,255,.94);}
.readout.dropup[open] .rd{position:absolute;left:-1px;right:-1px;bottom:100%;z-index:1;
  max-height:230px;overflow:auto;background:rgba(255,255,255,.96);border:1px solid var(--line-2);
  border-bottom:0;box-shadow:0 -18px 36px rgba(0,0,0,.16);}
.slide.dark .readout.dropup[open] summary{background:rgba(13,13,15,.92);}
.slide.dark .readout.dropup[open] .rd{background:rgba(13,13,15,.94);border-color:rgba(255,255,255,.22);
  box-shadow:0 -24px 44px rgba(0,0,0,.36);backdrop-filter:blur(8px);}

/* ---------- panel ---------- */
.panel{background:#fff;border:1px solid var(--line);padding:26px 30px;}
.panel h4{font-family:var(--cjk);font-weight:900;font-size:24px;color:var(--ink);margin-bottom:14px;}
.panel h4.b{color:var(--blue);} .panel h4.a{color:var(--amber);}

/* ---------- concept grid (slides 18/19/20) ---------- */
.concept-grid{display:grid;gap:32px;flex:1 1 auto;min-height:0;}
.concept-grid.c3{grid-template-columns:repeat(3,1fr);}
.concept-grid.c2{grid-template-columns:repeat(2,1fr);}
.concept{background:#fff;border:1px solid var(--line);border-top:6px solid var(--ink);
  padding:34px 34px 30px;display:flex;flex-direction:column;}
.concept.b{border-top-color:var(--blue);}
.concept.a{border-top-color:var(--amber);}
.concept-no{font-family:var(--disp);font-weight:900;font-size:42px;color:var(--ink);
  letter-spacing:-.02em;margin-bottom:18px;line-height:1;}
.concept.b .concept-no{color:var(--blue);}
.concept.a .concept-no{color:var(--amber);}
.concept h4{font-family:var(--cjk);font-weight:900;font-size:27px;color:var(--ink);
  margin-bottom:16px;line-height:1.2;}
.concept p{font-size:19px;line-height:1.55;color:var(--ink-2);}
.concept p strong{font-weight:900;color:var(--ink);}
.concept p .b{color:var(--blue);font-weight:900;} .concept p .a{color:var(--amber);font-weight:900;}
.concept p .pos{color:var(--pos);font-weight:900;}

/* ---------- chart host ---------- */
.chart-card{display:flex;flex-direction:column;min-height:0;background:#fff;
  border:1px solid var(--line);padding:24px 26px 18px;}
.chart-host{flex:1 1 auto;min-height:0;position:relative;}
.chart-host svg{width:100%;height:100%;display:block;}
.chart-cap{font-family:var(--mono);font-size:14px;line-height:1.5;color:var(--ink-4);
  letter-spacing:.02em;margin-top:10px;}
.duo{display:flex;flex-direction:column;gap:26px;min-height:0;}
.duo .chart-card{flex:1 1 0;}

/* svg chart primitives */
.ch-axis{stroke:var(--line-2);stroke-width:1;}
.ch-grid{stroke:var(--line);stroke-width:1;}
.ch-zero{stroke:var(--ink);stroke-width:1.5;}
.ch-tick{font-family:var(--mono);font-size:19px;fill:var(--ink-3);}
.ch-val{font-family:var(--disp);font-weight:700;font-size:21px;fill:var(--ink);}
.ch-lab{font-family:var(--cjk);font-weight:500;font-size:20px;fill:var(--ink-2);}
.ch-legend{font-family:var(--cjk);font-size:22px;fill:var(--ink-2);}
.bar-space{fill:#6b7a99;} .bar-star{fill:var(--blue);} .bar-ai{fill:var(--amber);}
.bar-pos{fill:var(--pos);} .bar-neg{fill:var(--neg);}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(26px);}
.is-active .reveal{animation:rise .8s var(--ease) forwards;}
.is-active .d1{animation-delay:.04s}
.is-active .d2{animation-delay:.15s}
.is-active .d3{animation-delay:.28s}
.is-active .d4{animation-delay:.42s}
.is-active .d5{animation-delay:.56s}
@keyframes rise{to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){
  .reveal{opacity:1!important;transform:none!important;animation:none!important;}
}

/* ---------- chrome ---------- */
.chrome{position:fixed;left:0;right:0;z-index:var(--z-chrome);pointer-events:none;}
.progress{position:fixed;top:0;left:0;right:0;height:4px;background:transparent;z-index:var(--z-chrome);}
.progress .fill{height:100%;background:var(--blue);width:0;transition:width .4s var(--ease);}
.botbar{position:fixed;left:0;right:0;bottom:0;height:54px;display:flex;align-items:center;
  justify-content:space-between;padding:0 22px;background:rgba(13,13,15,.86);
  backdrop-filter:blur(8px);z-index:var(--z-chrome);font-family:var(--mono);font-size:14px;color:#cfcecf;}
.botbar .seg{display:flex;align-items:center;gap:14px;pointer-events:auto;}
.botbar button{font-family:var(--mono);font-size:13px;letter-spacing:.04em;color:#fff;
  background:transparent;border:1px solid rgba(255,255,255,.28);padding:7px 13px;cursor:pointer;
  text-transform:uppercase;transition:background .2s,border-color .2s;}
.botbar button:hover:not(:disabled){background:var(--blue);border-color:var(--blue);}
.botbar button:disabled{opacity:.32;cursor:default;}
.botbar button.is-on{background:var(--blue);border-color:var(--blue);}
.botbar .chap{color:var(--amber);letter-spacing:.08em;text-transform:uppercase;}
.botbar .pageno b{color:#fff;}

@media (max-width:760px){
  .botbar{padding:0 8px;}
  .botbar .seg{gap:6px;}
  .botbar .chap{display:none;}
  .botbar button{font-size:12px;padding:7px 8px;}
  .botbar .pageno{min-width:38px;text-align:center;font-size:13px;}
  .hint{display:none;}
}

.hint{position:fixed;left:50%;bottom:72px;transform:translateX(-50%);z-index:var(--z-chrome);
  font-family:var(--mono);font-size:13px;letter-spacing:.1em;color:#fff;background:rgba(13,13,15,.8);
  padding:8px 16px;text-transform:uppercase;transition:opacity .6s;pointer-events:none;}

/* ---------- edge navigation ---------- */
.edge{position:fixed;top:0;bottom:54px;width:96px;z-index:90;border:none;background:transparent;
  display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--ink);
  opacity:0;transition:opacity .3s var(--ease);outline:none;-webkit-tap-highlight-color:transparent;}
.edge.prev{left:0;justify-content:flex-start;padding-left:22px;
  background:linear-gradient(90deg,rgba(20,82,255,.10),transparent);}
.edge.next{right:0;justify-content:flex-end;padding-right:22px;
  background:linear-gradient(270deg,rgba(20,82,255,.10),transparent);}
.edge:hover{opacity:1;}
.edge:disabled{opacity:0!important;pointer-events:none;cursor:default;}
.edge:focus-visible{opacity:1;outline:3px solid var(--blue);outline-offset:-3px;}
.edge svg{transition:transform .3s var(--ease);}
.edge.prev:hover svg{transform:translateX(-4px);}
.edge.next:hover svg{transform:translateX(4px);}
.edge{color:var(--ink);}
body.dark-slide .edge{color:#fff;}

/* ---------- focus-visible (keyboard a11y) ---------- */
.botbar button:focus-visible,.ov-close:focus-visible{outline:3px solid var(--blue);outline-offset:2px;}
.ov-thumb:focus-visible{outline:3px solid var(--blue);outline-offset:-1px;}
.botbar button:active:not(:disabled){transform:translateY(1px);}

/* ---------- overview ---------- */
.overview{width:min(1500px,92vw);max-height:88vh;border:none;padding:0;background:var(--paper);
  color:var(--ink);}
.overview::backdrop{background:rgba(13,13,15,.78);}
.ov-head{display:flex;justify-content:space-between;align-items:center;padding:24px 32px;
  border-bottom:2px solid var(--ink);position:sticky;top:0;background:var(--paper);}
.ov-head h3{font-family:var(--disp);font-weight:900;font-size:24px;letter-spacing:-.01em;}
.ov-close{font-family:var(--mono);font-size:13px;text-transform:uppercase;border:1px solid var(--ink);
  background:transparent;padding:8px 14px;cursor:pointer;}
.ov-close:hover{background:var(--ink);color:var(--paper);}
.ov-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;padding:28px 32px;overflow:auto;}
.ov-thumb{aspect-ratio:16/9;border:1px solid var(--line-2);background:#fff;cursor:pointer;
  padding:16px 18px;display:flex;flex-direction:column;justify-content:space-between;text-align:left;
  transition:border-color .2s,transform .2s;}
.ov-thumb:hover{border-color:var(--blue);transform:translateY(-2px);}
.ov-thumb.dark{background:var(--night);color:#fff;}
.ov-thumb.current{outline:3px solid var(--blue);outline-offset:-1px;}
.ov-n{font-family:var(--disp);font-weight:900;font-size:34px;color:var(--ink-4);letter-spacing:-.03em;}
.ov-thumb.dark .ov-n{color:#5a5970;}
.ov-t{font-family:var(--cjk);font-weight:700;font-size:16px;line-height:1.25;color:var(--ink);}
.ov-thumb.dark .ov-t{color:#fff;}
