/* Design tokens, copied verbatim from the Flight Systems interface (light, dark by system, dark by choice, and the mark).
   The product and this site share these values. Do not edit here without editing the interface. */
:root{--bg:#F5F5F7;--card:#FFFFFF;--line:#E5E5EA;--fill:#E8E8ED;--fill2:#F2F2F5;--l1:#1D1D1F;--l2:#6E6E73;--l3:#8E8E93;--accent:#0057B8;--acc-soft:rgba(0,87,184,.09);--acc-rec:rgba(0,87,184,.46);--acc-alloc:rgba(0,87,184,.16);--green:#34C759;--green-t:#1F7A35;--orange:#FF9500;--orange-t:#B25000;--red:#FF3B30;--red-t:#C9000F;--g-bg:rgba(52,199,89,.12);--o-bg:rgba(255,149,0,.14);--r-bg:rgba(255,59,48,.10);--shadow:0 1px 2px rgba(0,0,0,.04),0 8px 24px rgba(0,0,0,.04);--bar:rgba(245,245,247,.78);--side:rgba(246,246,248,.86);--thumb:#FFFFFF;--scrim:rgba(0,0,0,.24);--code:#F5F5F7;color-scheme:light}
:root{--mark:#0057B8}

/* Components ported from the Flight Systems interface. Same markup patterns, same CSS.
   Product surfaces sit inside .ui, which carries the interface's own 15px scale and acts
   as a size container, so a component lays out by the width it is given, not the viewport. */

.ui{container:ui / inline-size;font-size:15px;line-height:1.47;color:var(--l1)}
.ui small{display:block;font-size:12px;font-weight:400;color:var(--l2);margin-top:1px}
.ui h2,.ui h3,.ui h4{margin:0}

/* type */
.ph{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}
.ph h2{font-size:34px;line-height:1.12;font-weight:700;letter-spacing:-.024em;margin:0}
.ph p{margin:6px 0 0;color:var(--l2);font-size:17px;max-width:64ch}
.basis{display:flex;align-items:center;gap:9px;margin:14px 0 26px;font-size:13px;color:var(--l2)}
.sh{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin:38px 0 12px;flex-wrap:wrap}
.sh h3{font-size:22px;font-weight:650;letter-spacing:-.016em;margin:0}
.sh .aux{font-size:13px;color:var(--l2)}
.lede{margin:0 0 14px;color:var(--l2);font-size:15px;max-width:72ch}
.note{margin:12px 0 0;font-size:13px;color:var(--l2);max-width:80ch}
.tx-neg{color:var(--red-t)}.tx-pos{color:var(--green-t)}

/* controls */
.seg{display:inline-flex;padding:2px;border-radius:999px;background:var(--fill);max-width:100%;overflow-x:auto;scrollbar-width:none}
.seg::-webkit-scrollbar{display:none}
.seg button{flex:1;border:0;background:none;font:inherit;font-size:13px;font-weight:500;color:var(--l1);padding:6px 14px;border-radius:999px;cursor:pointer;white-space:nowrap}
.seg button[aria-pressed="true"],.seg button[aria-selected="true"]{background:var(--thumb);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04)}
.seg.full{display:flex;width:100%}
.seg.full button{padding:6px 6px}
.segrow{margin:-6px 0 22px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;height:34px;padding:0 16px;border-radius:999px;border:0;font:inherit;font-size:14px;font-weight:600;line-height:1;cursor:pointer;background:var(--acc-soft);color:var(--accent);white-space:nowrap;text-decoration:none}
.btn-p{background:var(--accent);color:#fff}
.btn-sm{height:30px;padding:0 13px;font-size:13px}
.btn:disabled{opacity:.4;cursor:default}
.chip{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:999px;font-size:12px;font-weight:600;background:var(--fill2);color:var(--l2);white-space:nowrap;flex:none}
.chip i{width:7px;height:7px;border-radius:50%;background:var(--l3)}
.chip-g{color:var(--green-t);background:var(--g-bg)}.chip-g i{background:var(--green)}
.chip-o{color:var(--orange-t);background:var(--o-bg)}.chip-o i{background:var(--orange)}
.chip-r{color:var(--red-t);background:var(--r-bg)}.chip-r i{background:var(--red)}
.chip-a{color:var(--accent);background:var(--acc-soft)}.chip-a i{background:var(--accent)}

/* surfaces */
.card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);padding:20px 22px}
.card.flush{padding:0;overflow:hidden}
.k{font-size:13px;color:var(--l2);font-weight:500}
.hs{padding:30px 32px}
.hs1{margin:0;font-size:32px;line-height:1.16;font-weight:650;letter-spacing:-.024em;max-width:24ch}
.hs2{margin:12px 0 0;font-size:19px;line-height:1.35;color:var(--l2);max-width:46ch}

/* inset grouped lists */
.list{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}
.list.flat{border:0;box-shadow:none;border-radius:0;background:none;margin:8px -22px 0}
.card>.list.flat:last-child{margin-bottom:-20px}
.list.sm{border-radius:14px;box-shadow:none}
.row{display:flex;align-items:center;gap:14px;width:100%;min-height:50px;padding:12px 18px;border:0;background:none;font:inherit;color:inherit;text-align:left;position:relative}
.row+.row::before{content:"";position:absolute;top:0;left:18px;right:0;height:1px;background:var(--line)}
button.row{cursor:pointer}
button.row:hover{background:var(--fill2)}
button.row:active{background:var(--fill)}
.grow{flex:1;min-width:0}
.t{font-weight:550;font-size:15px}
.t2{font-size:14px}
.d{font-size:13px;color:var(--l2);margin-top:1px}
.val{font-weight:600;text-align:right;white-space:nowrap}
.row.tot .t,.row.tot .val{font-weight:700}
.chev{width:8px;height:14px;flex:none;fill:none;stroke:var(--l3);stroke-width:2;stroke-linecap:round;stroke-linejoin:round}

/* evidence */
.ev{display:inline-block;width:9px;height:9px;border-radius:50%;flex:none}
.ev.reconciled{background:var(--accent)}.ev.recorded{background:var(--acc-rec)}.ev.allocated{background:var(--acc-alloc)}.ev.modeled{box-shadow:inset 0 0 0 1.5px var(--l3)}
.cb{display:flex;height:8px;border-radius:999px;overflow:hidden;background:var(--fill2);min-width:60px}
.cb.tall{height:14px}
.cb i{display:block;height:100%}
.cb i.reconciled{background:var(--accent)}.cb i.recorded{background:var(--acc-rec)}.cb i.allocated{background:var(--acc-alloc)}
.cb i.modeled{background:repeating-linear-gradient(135deg,var(--l3) 0 1px,transparent 1px 4px);opacity:.8}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;margin-top:12px;font-size:13px;color:var(--l2)}
.legend span{display:inline-flex;align-items:center;gap:7px}
.legend b{color:var(--l1);font-weight:600}

/* bars */
.hb{position:relative;height:8px;border-radius:999px;background:var(--fill);margin:6px 0 4px}
.hb i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--accent)}
.hb i.neg{background:var(--red)}
.hb b{position:absolute;top:-4px;bottom:-4px;width:2px;margin-left:-1px;border-radius:2px;background:var(--l1)}
/* @owner tails.mjs */
.tail-id{width:150px;flex:none}.tail-b{flex:1;min-width:0}.tail-c{width:120px;flex:none;text-align:right}
/* @owner shared */
.wf{display:flex;flex-direction:column;gap:12px}
.wr{display:grid;grid-template-columns:200px minmax(0,1fr) 84px 60px;gap:14px;align-items:center}
.wl{font-size:14px}.wv{text-align:right;font-weight:600}.wp{text-align:right;font-size:13px;color:var(--l2)}
.wb{height:12px;border-radius:999px;background:var(--fill2);overflow:hidden}
.wb i{display:block;height:100%;border-radius:999px;background:var(--acc-alloc)}
.wb i.wb-rev,.wb i.wb-tp{background:var(--accent)}.wb i.wb-net{background:var(--green)}.wb i.wb-neg{background:var(--l3);opacity:.5}

/* economics */
.gap-top{margin-top:16px}
.g2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
/* @owner rotation.mjs */
.leg-h{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:6px}
.leg-h .leg-rt{font-size:20px;font-weight:650;letter-spacing:-.015em}
.leg-h .leg-dep{font-size:20px;font-weight:600;color:var(--l2)}
/* @owner shared */
.kv{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.kv>div{background:var(--card);padding:12px 14px;min-width:0}
.kv span{display:block;font-size:12px;color:var(--l2)}
.kv b{display:block;font-size:19px;font-weight:650;letter-spacing:-.01em;margin-top:2px}
.sent{margin:14px 0 0;font-size:17px;font-weight:600;letter-spacing:-.01em}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.frow{display:grid;grid-template-columns:minmax(190px,1.6fr) repeat(3,minmax(70px,.55fr)) minmax(150px,.9fr);gap:12px;align-items:center;padding:12px 18px;min-width:640px;position:relative}
.frow+.frow::before{content:"";position:absolute;top:0;left:18px;right:0;height:1px;background:var(--line)}
.frow.fh{font-size:12px;font-weight:600;color:var(--l2);padding-top:14px;padding-bottom:10px}
.fn{text-align:right}.fn.strong{font-weight:650}.fstat{text-align:right}
.row.cat .cn{width:96px;flex:none;text-align:right;font-weight:600}
.row.cat .cm{width:110px;flex:none}

/* sheet. Unlike the interface, a closed sheet is hidden after its transition and casts no
   shadow, so no strip shows at the viewport's right edge. */
.scrim{position:fixed;inset:0;z-index:60;background:var(--scrim);opacity:0;pointer-events:none;transition:opacity 280ms ease}
.scrim.on{opacity:1;pointer-events:auto}
.sheet{position:fixed;top:0;right:0;bottom:0;z-index:61;width:min(580px,100%);display:flex;flex-direction:column;background:var(--card);box-shadow:none;transform:translateX(100%);visibility:hidden;transition:transform 280ms cubic-bezier(.32,.72,0,1),visibility 0s linear 280ms,box-shadow 0s linear 280ms;padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px)}
.sheet.on{transform:none;visibility:visible;box-shadow:-12px 0 40px rgba(0,0,0,.14);transition:transform 280ms cubic-bezier(.32,.72,0,1),visibility 0s,box-shadow 0s}
.sheet-h{display:flex;align-items:center;gap:12px;padding:18px 20px 14px;border-bottom:1px solid var(--line)}
.sheet-h h2{flex:1;margin:0;font-size:20px;font-weight:650;letter-spacing:-.014em}
.sheet-x{width:30px;height:30px;border-radius:50%;border:0;background:var(--fill);color:var(--l2);display:grid;place-items:center;cursor:pointer;flex:none}
.sheet-x svg{width:12px;height:12px;stroke:currentColor;stroke-width:2;stroke-linecap:round}
.sheet-b{flex:1;overflow-y:auto;padding:18px 20px 32px;-webkit-overflow-scrolling:touch;overscroll-behavior:contain}
.sheet-b h3{margin:24px 0 8px;font-size:15px;font-weight:650}
.sheet-b .kv{margin-top:4px}
.sheet-b .legend{margin-top:10px}
body.sheet-lock{overflow:hidden}

/* wordmark and mark */
.logo{display:inline-flex;align-items:center;color:var(--l1);text-decoration:none;border-radius:8px;line-height:0}
.logo-svg{display:block;width:auto;height:22px;overflow:visible}

@container ui (max-width:700px){
  .ph h2{font-size:30px}.ph p{font-size:15px}
  .hs{padding:22px 20px}.hs1{font-size:25px}.hs2{font-size:16px}
  .g2{grid-template-columns:1fr}
  .row{flex-wrap:wrap}
  /* @owner tails.mjs */
  .tail-id{width:auto;flex:1}.tail-c{width:auto}.tail-b{order:3;flex-basis:100%}
  /* @owner shared */
  .row.cat .cn{width:auto}.row.cat .cm{flex-basis:100%;width:auto;order:4}
  .row.cat .grow{flex-basis:100%}
  .row.mv .grow{flex-basis:calc(100% - 22px)}
  .row.mv .val{order:3;margin-left:auto}
  .row.mv .chip{order:4}
  .row.mv .chev{order:2}
  .wr{grid-template-columns:118px minmax(0,1fr) 72px}.wp{display:none}
  .kv{grid-template-columns:repeat(2,minmax(0,1fr))}
  .sh{margin-top:30px}
}
@media (max-width:759.98px){
  .kv{grid-template-columns:repeat(2,minmax(0,1fr))}
}
.kv.kv3{grid-template-columns:repeat(3,minmax(0,1fr))}

/* The marketing page around the product: type scale, sections, header, hero, footer.
   Every rule belongs to one owner (src/render/classes.mjs). "@owner <module>" starts that
   module's rules; scripts/check-classes.mjs fails the build if a rule styles another
   module's classes, or a modifier on its own. */

/* Solid accent fills resolve at the root to the light accent (#0057B8, 6.9:1 with white), so
   buttons on the dark bands keep AA too. The site is light only. */
:root{--accent-fill:var(--accent);color-scheme:light}
.btn-p{background:var(--accent-fill)}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;background:var(--bg);scroll-padding-top:72px}
body{margin:0;background:var(--bg);color:var(--l1);font:17px/1.5 -apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue","Segoe UI",Roboto,Arial,sans-serif;font-variant-numeric:tabular-nums;-webkit-font-smoothing:antialiased}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:3px solid var(--acc-rec);outline-offset:2px}
[hidden]{display:none!important}
a{color:var(--accent)}
p{margin:0}
.wrap{max-width:1120px;margin:0 auto;padding:0 32px}
.wrap.wide{max-width:1264px}

/* type scale */
.h1{margin:0;font-size:64px;line-height:1.04;font-weight:700;letter-spacing:-.03em;max-width:15ch}
.h2{margin:0;font-size:44px;line-height:1.08;font-weight:700;letter-spacing:-.025em;max-width:22ch}
.h3{margin:0;font-size:21px;line-height:1.25;font-weight:650}
.lead{margin:16px 0 0;font-size:21px;line-height:1.45;color:var(--l2);max-width:64ch}
.small{font-size:13px;color:var(--l2)}

/* sections */
.sec{padding:72px 0}
.sec.alt{background:var(--card)}
.sec .lead{margin-top:20px}
.caption{margin:24px 0 0;font-size:13px;color:var(--l2);max-width:80ch}
.k{font-size:13px;color:var(--l2);font-weight:500}
.gap-top{margin-top:16px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}

/* the dark bands: the hero and the systems statement */
.band{--band-bg:#000000}
.band{background:#000000;color:var(--l1)}
.band .lead{color:var(--l2)}

/* section heads: the heading and its lede share a row on wide screens */
.sec-head{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,6fr);gap:56px;align-items:end}
.sec-head .lead,.sec .sec-head .lead{margin:0;font-size:19px}

/* the two explainer graphics share their formula line, their text version and figure values */
.gx-formula{margin:24px 0 0;font-size:17px;font-weight:600;min-height:1.5em;max-width:72ch}
.gx-text{margin-top:12px;font-size:14px;color:var(--l2)}
.gx-text summary{cursor:pointer;color:var(--accent);font-weight:500}
.gx-text ul{margin:10px 0 0;padding-left:18px;display:flex;flex-direction:column;gap:6px}
.gx-text b{color:var(--l1);font-weight:600}

/* rhythm: balanced headings, no paragraph ending on a lone word */
h1,h2,h3,.hs1,summary{text-wrap:balance}
p,li,dd{text-wrap:pretty}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}

@media (max-width:1099.98px){.sec-head{grid-template-columns:1fr;gap:0}.sec-head .lead,.sec .sec-head .lead{margin-top:16px}}
@media (max-width:759.98px){
  .wrap{padding:0 16px}
  .sec{padding:72px 0}
  .h1{font-size:40px;line-height:1.08}
  .h2{font-size:30px;line-height:1.12}
  .lead{font-size:18px}
}

/* @owner page.mjs */
/* header */
.top-skip{position:absolute;left:16px;top:-48px;z-index:80;background:var(--card);color:var(--l1);padding:8px 14px;border-radius:999px;border:1px solid var(--line)}
.top-skip:focus{top:12px}
.top{position:sticky;top:0;z-index:50;background:var(--bar);border-bottom:1px solid var(--line);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
.top .wrap{display:flex;align-items:center;gap:24px;height:56px;max-width:1264px}
.top .logo{margin-right:auto}
.top-nav{display:flex;align-items:center;gap:4px}
.top-nav a{color:var(--l1);text-decoration:none;font-size:14px;padding:6px 12px;border-radius:999px}
.top-nav a:hover{background:var(--fill2)}
/* Log in: a plain link beside the action, at every width */
.top-login{color:var(--l1);text-decoration:none;font-size:14px;padding:6px 12px;border-radius:999px;white-space:nowrap}
.top-login:hover{background:var(--fill2)}

/* hero */
.hero-sec{--hero-pt:12px;--hero-overlap:120px;--hero-gap:40px;padding:0 0 72px}
/* the hero band: dark, copy left, the network map right */
/* The band's height comes from its content, never the viewport. Its bottom padding is the
   window's overlap plus a fixed gap, so the buttons and the caption always clear the window by
   --hero-gap. The text area is at least tall enough that the window, overlapping from below,
   starts under the map's labels (432 px down the map, SAFE.y2 plus 8 in data/network.mjs). */
.hero-band{position:relative;overflow:hidden;padding:var(--hero-pt) 0 calc(var(--hero-overlap) + var(--hero-gap))}
.hero-grid{position:relative;min-height:calc(432px - var(--hero-pt) - var(--hero-gap))}
/* From 1280 px, where the map sits beside the text, the text column ends 32 px before the map's
   content area, in px so no font can push it further: the map is 600 px wide at the band's right padding edge (the wrap's 32 px), and its
   content starts 64 px in (SAFE.x1). */
.hero-copy{position:relative;z-index:2;max-width:680px;padding-top:12px}
@media (min-width:1280px){.hero-copy{--map-w:600px;--map-edge:64px;--text-gap:32px;max-width:min(680px,calc(100% + 32px - var(--map-w) + var(--map-edge) - var(--text-gap)))}}
.hero-copy .h1{max-width:none}
/* the secondary button on the dark band: white on a light veil holds AA */
.hero-band .btn:not(.btn-p){background:rgba(255,255,255,.12);color:#fff}
.hero-band .btn:not(.btn-p):hover{background:rgba(255,255,255,.18)}
.hero-win{position:relative;z-index:3;margin-top:calc(-1 * var(--hero-overlap) - 40px)}
/* (the 40 px is .win-fig's top margin: the window's top edge sits --hero-overlap into the band) */
.hero-cap{margin:20px 0 0;font-size:13px;color:var(--l2)}
.hero-acts{display:flex;gap:12px;flex-wrap:wrap;align-items:center;margin-top:24px}
.hero-trust{margin:8px auto 0;max-width:64ch;text-align:center;font-size:13px;color:var(--l2)}

/* fleet section */
.fleet-ctl{margin:32px 0 16px}
.fleet-ui .list .row{min-height:42px;padding-top:8px;padding-bottom:8px}

/* footer */
.foot{padding:64px 0 48px;border-top:1px solid var(--line);font-size:14px;color:var(--l2)}
.foot-grid{display:flex;flex-wrap:wrap;gap:32px 64px;align-items:flex-start}
.foot-grid>div:first-child{margin-right:auto}
.foot ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.foot a{color:var(--l1);text-decoration:none}
.foot a:hover{text-decoration:underline}
.foot-legal{margin-top:40px;display:flex;flex-wrap:wrap;gap:8px 32px;justify-content:space-between}
.foot .k{display:block;margin-bottom:10px;font-size:13px;font-weight:500;color:var(--l2)}

/* legal pages */
.legal-main{padding:96px 0 120px}
.legal-main .wrap{max-width:760px}
.legal-main h1{margin:0;font-size:44px;line-height:1.08;font-weight:700;letter-spacing:-.025em}
.legal-main .legal-date{margin:14px 0 0;font-size:13px;color:var(--l2)}
.legal-main h2{margin:44px 0 0;font-size:21px;font-weight:650;letter-spacing:-.01em}
.legal-main p,.legal-main li{font-size:17px;line-height:1.6}
.legal-main p{margin:14px 0 0}
.legal-main ul{margin:12px 0 0;padding-left:20px}
.legal-main li{margin:6px 0 0}

/* /login */
.login-main{padding:120px 0 160px}
.login-main .wrap{max-width:760px}
.login-act{margin-top:32px}
.legal-main .legal-addr{white-space:pre-line}

@media (max-width:759.98px){
  .hero-sec{padding:0 0 72px}
  .top-nav a{display:none}
  .top .wrap{gap:8px}
  .top-login{padding:6px 8px}
  .top .btn{height:30px;padding:0 12px;font-size:13px}
  .legal-main{padding:48px 0 72px}
  .legal-main h1{font-size:30px}
  .hero-band{padding:40px 0 152px}
  .hero-grid{height:auto}
}
/* the hero under 1280: the map sits under the copy, clear of the window */
@media (max-width:1279.98px){.hero-grid{height:auto}}
/* the header gives way in order: under 900 the section links go, keeping the full wordmark,
   Log in and the action; under 560 the wordmark becomes the mark alone */
@media (max-width:899.98px){.top-nav{display:none}}
@media (max-width:559.98px){.top .logo-svg{height:22px;width:32px;overflow:hidden}}

/* @owner network.mjs */
/* The map fills the right half of the band from its top edge, drawn 1:1, and runs on behind
   the window's overlap, where nothing but the state outline and grid is placed. */
.map{position:absolute;z-index:1;top:calc(-1 * var(--hero-pt));right:0;margin:0;width:600px}
.map-svg{display:block;width:600px;height:540px;-webkit-mask-image:linear-gradient(90deg,transparent 0,#000 5%);mask-image:linear-gradient(90deg,transparent 0,#000 5%)}
.map-grid line{stroke:rgba(255,255,255,.07);stroke-width:1}
.map-state{fill:rgba(255,255,255,.035);stroke:rgba(255,255,255,.32);stroke-width:1.2}
.map-arcs path{fill:none;stroke:var(--accent);stroke-opacity:.4;stroke-width:1.25}
.map-ports circle{fill:#C7CBD1}.map-ports circle.map-hub{fill:var(--accent)}
.map-ports text{fill:var(--l2);font-size:12px;font-weight:600;paint-order:stroke;stroke:var(--band-bg);stroke-width:4px;stroke-linejoin:round}
.map-ports,.map-grid,.map-state,.map-arcs,.map-clock{pointer-events:none}
.map-label-lead{stroke:var(--l3);stroke-width:1;opacity:.6}
.map-plane{cursor:pointer;outline:none}
.map-plane use{fill:#D1D5DB}.map-plane .map-prop{opacity:.55}
.map-plane .map-ring{fill:none;stroke:var(--accent);stroke-width:2;opacity:0}
.map-plane:hover .map-ring,.map-plane:focus-visible .map-ring,.map-plane.up .map-ring{opacity:1}
.map-plane.idle{opacity:0;pointer-events:none}
.map-tag{opacity:.9;transition:opacity 150ms}
.map-lead{stroke:rgba(255,255,255,.35);stroke-width:1;transition:opacity 150ms}
.map-tag.off,.map-lead.off{opacity:0}
.map-plane.up .map-tag.off{opacity:1}
.map-tag rect{fill:#1C1C1E;stroke:rgba(255,255,255,.16)}
.map-tag text{font-size:11px;font-weight:600;fill:var(--l1)}
.map-plane.pos .map-tag-cu{fill:var(--green-t)}.map-plane.neg .map-tag-cu{fill:var(--red-t)}
.map-plane.up .map-tag{opacity:1}.map-plane.up .map-tag rect{stroke:var(--accent)}
.map-clock text{font-size:13px;fill:var(--l2);text-anchor:end;font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--band-bg);stroke-width:4px}
.map-clock .map-clock-k{font-weight:500}
.map-clock .map-clock-t{fill:var(--l1);font-size:15px;font-weight:650}
@media (max-width:759.98px){
  .map{width:auto;margin:16px 0 0}
  .map-svg{width:100%;height:auto;aspect-ratio:460 / 540;-webkit-mask-image:none;mask-image:none}
}
@media (max-width:1279.98px){
  .map{position:relative;top:0;right:auto;width:600px;max-width:100%;margin:24px 0 0 auto}
  .map-svg{width:100%;height:auto;-webkit-mask-image:none;mask-image:none}
}
/* under 1024 tags show on hover, focus or tap only */
@media (max-width:1023.98px){.map-tag,.map-lead{opacity:0}.map-plane.up .map-tag,.map-plane.up .map-lead:not(.off){opacity:1}}

/* @owner window.mjs */
.win-fig{margin:40px auto 0;max-width:1200px;padding:0 0}
.win{display:flex;background:var(--bg);border:1px solid var(--line);border-radius:22px;box-shadow:0 30px 80px rgba(0,0,0,.12);overflow:hidden;text-align:left}
.win-side{flex:0 0 232px;display:flex;flex-direction:column;gap:18px;padding:22px 12px 16px;background:var(--side);border-right:1px solid var(--line)}
.win-side .logo{padding:4px 10px}
.win-tenant{margin:0 4px;padding:11px 13px;border-radius:14px;background:var(--card);border:1px solid var(--line)}
.win-tenant b{display:block;font-size:15px;font-weight:600}
.win-tenant span{font-size:13px;color:var(--l2)}
.win-nav{display:flex;flex-direction:column;gap:2px}
.win-nav button{display:flex;align-items:center;gap:12px;height:38px;padding:0 12px;border:0;border-radius:10px;background:none;font-size:15px;color:var(--l1);cursor:pointer;text-align:left}
.win-nav svg{width:21px;height:21px;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round;flex:none;color:var(--accent)}
.win-nav button:hover{background:var(--fill2)}
.win-nav button[aria-selected="true"]{background:var(--accent-fill);color:#fff}
.win-nav button[aria-selected="true"] svg{color:#fff}
.win-foot{margin-top:auto;padding:0 4px}
.win-ro{margin:2px 4px 0;font-size:12px;color:var(--l2)}
.win-main{flex:1;min-width:0;padding:32px 44px 44px}
.seg.win-tabs{display:none}
.win-cap{margin:20px 0 0;text-align:center;font-size:13px;color:var(--l2)}
@media (max-width:1100px){
  .win-side{flex-basis:208px}
  .win-main{padding:32px 28px 40px}
}
@media (max-width:759.98px){
  .win-fig{margin-top:40px}
  .win{display:block;border-radius:18px}
  .win-side{display:none}
  .seg.win-tabs{display:flex;margin:0 0 20px}
  .win-main{padding:16px 16px 24px}
}

/* @owner tails.mjs */
/* the window sidebar's fleet: seven tails, each opening its sheet; read only pinned below */
.tail-side{margin:4px 0 0}
.tail-side-k{margin:0 12px 6px;font-size:13px;font-weight:600;color:var(--l2)}
.tail-side ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:1px}
.tail-sf{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;width:100%;height:29px;padding:0 12px;border:0;border-radius:10px;background:none;font:inherit;font-size:13px;color:var(--l1);text-align:left;cursor:pointer}
.tail-sf:hover{background:var(--fill2)}
.tail-sf-r{font-weight:600}
.tail-sf-p{color:var(--l2)}
.tail-sf-c{font-size:12px;font-weight:600;padding:2px 7px;border-radius:999px}
.tail-sf-c.pos{color:var(--green-t);background:var(--g-bg)}
.tail-sf-c.neg{color:var(--red-t);background:var(--r-bg)}
/* report table */
.rpt-card{background:var(--card);border:1px solid var(--line);border-radius:18px;box-shadow:var(--shadow);overflow:hidden}
.rpt-head{display:flex;justify-content:space-between;align-items:baseline;gap:12px;flex-wrap:wrap;padding:16px 18px 12px}
.rpt-head b{font-size:17px;font-weight:650}
.rpt-head .small+.small{margin-left:auto}
.rpt{border-collapse:collapse;width:100%;min-width:760px;font-size:14px}
.rpt th,.rpt td{padding:10px 14px;text-align:right;white-space:nowrap;border-top:1px solid var(--line)}
.rpt th{font-size:12px;font-weight:600;color:var(--l2);vertical-align:bottom}
.rpt th:first-child,.rpt td:first-child{text-align:left;padding-left:18px}
.rpt th .ev{margin-left:6px;vertical-align:0}
.rpt tfoot td,.rpt tfoot th{font-weight:700}

/* @owner rotation.mjs */
.leg-card .row{min-height:42px;padding-top:8px;padding-bottom:8px}

/* @owner costs.mjs */
.cost-row .val{width:72px}
.cost-head{min-height:0;font-size:12px;font-weight:600;color:var(--l2)}
.cost-head .val{font-weight:600}
.cost-head .cost-sys{display:block;font-weight:500}
.cost-ev{width:104px;flex:none;display:inline-flex;align-items:center;gap:7px;font-size:13px;color:var(--l2)}
@media (max-width:759.98px){.cost-ev{width:auto}}

/* @owner trace.mjs */
/* graphic 1: the trace */
.trace{margin-top:40px}
/* source cards end with their content once script draws each wire up to its card; without
   script they stretch to the wires */
.tr-cols{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px 24px}
/* each source column: its sentence from the statement, then its card; the sentences share one
   row and the cards the next, so the cards keep one top edge */
.tr-src{display:grid;grid-row:span 2;grid-template-rows:subgrid;row-gap:16px;align-items:stretch}
.trace.on .tr-src{align-items:start}
.tr-say{margin:0;align-self:start;min-height:2.5em;font-size:22px;line-height:1.25;font-weight:650;letter-spacing:-.015em;color:var(--l1);text-wrap:balance}
.tr-col{padding:16px 12px 10px}
.tr-h{margin:0 0 6px;padding:0 10px;font-size:13px;font-weight:600;color:var(--l2)}
.tr-f{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:1px 12px;width:100%;padding:4px 10px;border:0;border-radius:10px;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer;transition:opacity 150ms,background-color 150ms}
.tr-f.tr-nofeed{cursor:default}
.tr-f-k{font-size:14px}
.tr-f-v{font-size:14px;font-weight:600;text-align:right;white-space:nowrap}
.tr-f-s{grid-column:1 / -1;display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--l2)}
.tr-f[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--accent)}
.tr-f:hover{background:var(--fill2)}
.tr-wires{display:block;width:100%;overflow:visible}
.tr-a{height:76px}.tr-b{height:60px}
.tr-wires path{fill:none;stroke:var(--l3);stroke-width:1.25;opacity:.22;transition:opacity 150ms,stroke 150ms}
.tr-wires path.is-lit{opacity:1;stroke:var(--accent);stroke-width:2}
/* the data flow: a short pulse along each lit line, about every 2.5 seconds, staggered */
.tr-wires path.tr-pulse{fill:none;stroke:#D6E7FF;stroke-width:3.5;stroke-linecap:round;stroke-dasharray:5 300;stroke-dashoffset:5;opacity:0;transition:none}
.trace.tr-flow .tr-wires path.tr-pulse.is-lit{opacity:1;animation:tr-pulse 2.5s linear infinite}
@keyframes tr-pulse{0%{stroke-dashoffset:5}70%{stroke-dashoffset:-100}100%{stroke-dashoffset:-100}}
.trace .tr-f.is-lit,.trace .tr-g.is-lit,.trace .tr-o.is-lit{background:var(--acc-soft)}
.tr-cards{display:grid;grid-template-columns:6fr 4fr;gap:16px}
.tr-card{padding:16px 0 0;overflow:hidden}
.tr-card .tr-h{padding:0 22px;margin-bottom:12px}
.tr-card.tr-rot .tr-figs{grid-template-columns:repeat(4,minmax(0,1fr))}
.tr-g-s{font-size:12px;color:var(--l2)}
.tr-figs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:1px;background:var(--line);border-top:1px solid var(--line)}
.tr-g{display:flex;flex-direction:column;gap:2px;padding:12px 14px;border:0;background:var(--card);font:inherit;color:inherit;text-align:left;cursor:pointer;transition:opacity 150ms}
.tr-g-k{font-size:12px;color:var(--l2)}
.tr-g-v{font-size:19px;font-weight:650;letter-spacing:-.01em}
.tr-g[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--accent)}
.tr-outs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}
.tr-o{display:block;padding:16px 18px;color:var(--l1);text-decoration:none;transition:opacity 150ms}
.tr-o:hover .tr-o-k{color:var(--accent)}
.tr-o-k{display:block;font-size:13px;font-weight:500;color:var(--l2)}
.tr-o-v{display:block;margin-top:4px;font-size:17px;font-weight:600}
/* Under 760px the graphic becomes a vertical flow: sources, then the cards, then the outputs. */
@media (max-width:759.98px){
  .tr-cols,.tr-outs{grid-template-columns:1fr;gap:12px}
  .tr-say{min-height:0}
  .tr-wires{display:none}
  .tr-cards{grid-template-columns:1fr;gap:12px;margin:12px 0}
  .tr-figs,.tr-card.tr-rot .tr-figs{grid-template-columns:repeat(2,minmax(0,1fr))}
}

/* @owner decide.mjs */
/* graphic 2: from the numbers to the decision */
.decide{margin-top:48px}
.dc-head,.dc-row{display:grid;grid-template-columns:140px 40px minmax(0,1.25fr) minmax(0,1fr);gap:0 16px;align-items:center}
.dc-head{font-size:13px;font-weight:600;color:var(--l2);padding-bottom:10px}
.dc-head span:first-child{grid-column:1 / 3}
.dc-rows{list-style:none;margin:0;padding:0}
.dc-row{padding:12px 0;border-top:1px solid var(--line);transition:opacity 150ms}
.decide.has-sel .dc-row:not(.is-lit) .dc-chart{opacity:.6}
.dc-chart{transition:opacity 150ms}
.dc-chart{height:40px;display:flex;align-items:center}
.dc-chart svg{display:block;width:100%;height:40px}
.dc-chart .cb{width:100%}
.dc-chart rect.pos{fill:var(--accent)}.dc-chart rect.neg{fill:var(--red)}
.dc-axis{stroke:var(--l3);stroke-width:1}
.dc-bar{position:relative;width:100%;height:10px;border-radius:999px;background:var(--fill)}
.dc-bar i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--accent)}
.dc-bar i.neg{background:var(--red)}
.dc-bar b{position:absolute;top:-5px;bottom:-5px;width:2px;margin-left:-1px;background:var(--l1)}
.dc-lead{display:block;width:100%;height:2px;overflow:visible}
.dc-lead line{fill:none;stroke:var(--l3);stroke-width:1.25;opacity:.22;transition:opacity 150ms,stroke 150ms}
.dc-lead line{stroke-dasharray:2 4}
.dc-row.is-lit .dc-lead line{opacity:1;stroke:var(--accent)}
.dc-item{display:flex;align-items:baseline;gap:12px;width:100%;padding:8px 10px;border:0;border-radius:10px;background:none;font:inherit;color:inherit;text-align:left;cursor:pointer}
.dc-item[aria-pressed="true"]{background:var(--acc-soft)}
.dc-n{font-weight:650;color:var(--accent)}
.dc-t{font-weight:600}
.dc-v{margin-left:auto;font-weight:650;white-space:nowrap}
.dc-d{margin:0;color:var(--l2)}
.loop{margin-top:40px}
.lp{list-style:none;margin:10px 0 0;padding:0;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px}
.lp-step{border-top:2px solid var(--accent);padding-top:12px}
.lp-h{font-weight:650}
.lp-p{margin-top:4px;font-size:14px;color:var(--l2)}
.lp-ex{margin-top:8px;font-size:13px;color:var(--l1)}
.lp-step.is-lit{background:var(--acc-soft);border-radius:0 0 12px 12px;padding:12px 12px 12px;margin:0 -12px}
.lp-step.is-lit .lp-p{color:var(--l1)}
.lp-step{transition:background-color 150ms}
.lp-next{border-top:2px dashed var(--l3)}
.lp-next a{color:var(--l2);text-decoration:none;font-weight:600}
.lp-next a:hover{color:var(--accent)}
.dc-close{margin-top:24px;font-size:21px;line-height:1.45;max-width:48ch}
/* the loop returns from Read to Close, next month */
.lp-back{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:16px;margin-top:10px}
.lp-back p{grid-column:1 / 5;position:relative;height:28px;margin:0 calc((100% - 48px) / 8 - 6px) 0 6px;border:2px solid var(--acc-rec);border-top:0;border-radius:0 0 14px 14px;text-align:center}
.lp-back span{position:absolute;left:50%;bottom:-9px;transform:translateX(-50%);padding:0 10px;background:var(--bg);font-size:13px;font-weight:600;line-height:16px;color:var(--accent);white-space:nowrap}
.lp-back p::before{content:"";position:absolute;left:-7px;top:-8px;border:6px solid transparent;border-bottom:8px solid var(--acc-rec);border-top:0}
@media (max-width:759.98px){
  .dc-head{display:none}
  .dc-row{grid-template-columns:1fr;gap:8px}
  .dc-lead{display:none}
  .lp{grid-template-columns:1fr;gap:20px}
  .lp-back{display:none}
}

/* @owner sections.mjs */
/* systems statement: the trace, then Fleet financials */
.stm{max-width:none}
.band .stm-also{color:var(--l2)}
.stm-card-h{margin-bottom:4px}
.stm-card-h .d{margin-top:2px}
.stm-bridge{margin:20px 0 0}
.stm-also{margin-top:24px;font-size:15px;max-width:64ch}
.stm-audit{margin-top:16px;font-size:17px;max-width:48ch}
.stm-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;align-items:stretch;margin-top:24px}
.stm-ledger{max-width:560px}
.stm-ledger .row{min-height:42px;padding-top:8px;padding-bottom:8px}
/* the books line over the ledger card and its waterfall */
.stm-books{margin:48px 0 0;font-size:28px;line-height:1.25;font-weight:650;letter-spacing:-.015em;max-width:40ch;text-wrap:balance}
.vwf-card{display:flex;flex-direction:column;padding:28px 28px 20px}
.vwf{flex:1;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:16px;min-height:280px}
.vwf-c{display:flex;flex-direction:column}
.vwf-p{position:relative;flex:1;border-bottom:1px solid var(--line);margin-top:28px}
.vwf-p i{position:absolute;left:12%;right:12%;border-radius:8px 8px 2px 2px;background:var(--acc-rec)}
.vwf-c.vwf-financing i,.vwf-c.vwf-reserves i{background:var(--acc-alloc);box-shadow:inset 0 0 0 1.5px var(--acc-rec)}
.vwf-c.vwf-full i{background:var(--accent)}
.vwf-p span{position:absolute;bottom:100%;left:50%;transform:translateX(-50%);margin-bottom:6px;font-size:15px;font-weight:650;white-space:nowrap;color:var(--l1);font-style:normal}
.vwf-c p{margin:10px 0 0;font-size:13px;line-height:1.35;color:var(--l2);text-align:center;min-height:54px}

/* trips */
.trips-rot{margin:40px 0 12px}
.lane{margin-top:16px}
.lane-h{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;flex-wrap:wrap;margin-bottom:4px}
.trips-div{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:18px}
.rbar{position:relative;padding:26px 0 30px;margin-top:8px}
.rbar-t{position:relative;height:12px;border-radius:999px;background:var(--fill)}
.rbar-t i{position:absolute;left:0;top:0;bottom:0;border-radius:999px;background:var(--red)}
.rbar-t b{position:absolute;top:-6px;bottom:-6px;width:2px;margin-left:-1px;border-radius:2px;background:var(--l1)}
.rbar-l{position:absolute;font-size:13px;font-weight:600;white-space:nowrap}
.rbar-l.rev{top:0;color:var(--red-t)}
.rbar-l.floor,.rbar-l.full{bottom:0}
@container ui (max-width:560px){.rbar{padding-bottom:52px}.rbar-l.floor{bottom:24px}}
/* the floor breakdown opens on request; the lane as two scales on one per pound axis */
.trips-floor{margin-top:20px;border-top:1px solid var(--line)}
.trips-floor summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none}
.trips-floor summary::-webkit-details-marker{display:none}
.trips-floor summary{padding:14px 0}
.trips-floor summary .val{margin-left:auto;font-weight:650}
.trips-floor summary::after{content:"";flex:none;width:8px;height:8px;margin:0 4px 4px 0;border-right:1.75px solid var(--l2);border-bottom:1.75px solid var(--l2);transform:rotate(45deg);transition:transform 150ms}
.trips-floor[open] summary::after{transform:rotate(225deg);margin-bottom:-4px}
.trips-floor summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
.ls-scales{display:grid;gap:8px;margin-top:12px}
.ls-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap}
.ls-s{position:relative;padding:26px 0 28px;margin-top:2px}
.ls-t{position:relative;height:10px;border-radius:999px;background:var(--fill)}
.ls-t i{position:absolute;left:0;top:0;bottom:0;border-radius:999px}
.ls-t i.pos{background:var(--accent)}.ls-t i.neg{background:var(--red)}
.ls-t b{position:absolute;top:-6px;bottom:-6px;width:2px;margin-left:-1px;border-radius:2px;background:var(--l1)}
.ls-t b.full{background:var(--l2)}
.ls-y,.ls-m{position:absolute;font-size:13px;font-weight:600;white-space:nowrap;transform:translateX(-50%)}
.ls-y{top:0}.ls-y.pos{color:var(--accent)}.ls-y.neg{color:var(--red-t)}
.ls-m{bottom:0;color:var(--l1)}.ls-m.full{color:var(--l2)}
/* the trip result and its lane side by side, the definitions under each */
.trips-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:16px;align-items:start;margin-top:16px}
.trips-row>.card{margin-top:0}
.trips-row>div{display:flex;flex-direction:column;gap:16px}
.trips-row .trips-def{padding:8px 4px 0}
.trips-row .trips-def p{margin-top:6px;color:var(--l2);font-size:16px}

/* evidence: the summary stays beside the table, the four classes defined under it */
.evd-grid{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);gap:16px;margin-top:32px;align-items:start}
.evd-grid .list .row{min-height:42px;padding-top:8px;padding-bottom:8px}
.evd-recon{display:flex;gap:12px;align-items:flex-start;margin-top:16px;padding-top:14px;border-top:1px solid var(--line)}
.evd-recon .ev{margin-top:5px}
.evd-build-v{font-size:40px;font-weight:700;letter-spacing:-.025em;margin:4px 0 16px}
.evd-side{position:sticky;top:88px}
.evd-defs{margin:20px 4px 0;display:grid;gap:12px}
.evd-defs dt{display:flex;align-items:center;gap:8px;font-weight:650}
.evd-defs dd{margin:2px 0 0 18px;color:var(--l2);font-size:15px}

/* pricing (gated) */
.prc-list{list-style:none;margin:8px 0 0;padding:0;display:flex;flex-direction:column;gap:8px}
.prc-list li{padding-left:16px;position:relative}
.prc-list li::before{content:"";position:absolute;left:0;top:.62em;width:6px;height:6px;border-radius:50%;background:var(--l3)}

/* photo band (gated): one full bleed image, one line */
.photo-band{position:relative;background:#000;color:#fff}
.photo-band img{display:block;width:100%;height:auto;max-height:560px;object-fit:cover}
.photo-band .wrap{position:absolute;left:0;right:0;bottom:40px}
.photo-line{margin:0;font-size:32px;font-weight:650;letter-spacing:-.015em;max-width:24ch;text-shadow:0 1px 12px rgba(0,0,0,.5)}

/* how it works: one line joins the steps; step text in one grid row, artifacts in the next,
   so all four artifacts share a top edge and a height */
.how-tl{list-style:none;margin:40px 0 0;padding:0;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:32px;row-gap:20px;position:relative}
.how-tl::before{content:"";position:absolute;left:6px;right:0;top:6px;height:2px;background:var(--line)}
.how-tl>li{position:relative;padding-top:28px;display:grid;grid-row:span 2;grid-template-rows:subgrid}
.how-tl-dot{position:absolute;left:0;top:0;width:14px;height:14px;border-radius:50%;background:var(--accent);box-shadow:0 0 0 4px var(--card)}
.how-tl .how-num{font-weight:650;color:var(--accent);margin:0 0 6px}
.how-tl-text>p:not(.how-num){margin:8px 0 0;color:var(--l2)}
.art{margin:0;padding:14px 16px;border:1px solid var(--line);border-radius:14px;background:var(--fill2);font-size:14px}
.art .k{margin:0 0 4px}
.art-fit-bar{height:8px;margin-top:10px;border-radius:999px;background:var(--fill)}
.art-fit-bar i{display:block;width:82%;height:100%;border-radius:999px;background:var(--green)}
.art-files ul{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.art-chip{font-size:13px;font-weight:600;padding:4px 12px;border-radius:999px;background:var(--fill);color:var(--l1)}
.art-ro{display:flex;align-items:center;gap:6px;margin:12px 0 0;font-size:13px;font-weight:600;color:var(--accent)}
.art-lock{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.6}
.art-ev p{margin:0;font-size:13px;color:var(--l2)}
.art-ev p+.art-bar{margin:6px 0 12px}
.art-ev .art-bar:last-child{margin-bottom:0}
.art-bar{height:8px;border-radius:999px;background:var(--fill)}.art-bar i{display:block;height:100%;border-radius:999px}.art-bar .art-bar-rec{background:var(--acc-rec)}.art-bar .art-bar-recon{background:var(--accent)}
.art-v{font-size:17px;font-weight:700;color:var(--l1)}
.art-thumb table{width:100%;border-collapse:collapse;font-size:12px}
.art-thumb th{text-align:left;font-weight:600;color:var(--l2);padding:0 0 4px}
.art-thumb td{padding:4px 0;border-top:1px solid var(--line)}
.art-thumb th:not(:first-child),.art-thumb td:not(:first-child){text-align:right}
.art-thumb td.pos{color:var(--green-t)}.art-thumb td.neg{color:var(--red-t)}
.how-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:32px;margin-top:48px;align-items:start}
.ask-card{padding:24px}
.ask-l{list-style:none;margin:16px 0 0;padding:0;display:grid;gap:10px}
.ask-l li{position:relative;padding-left:16px;font-size:15px;line-height:1.4}
.ask-l li::before{content:"";position:absolute;left:0;top:.6em;width:6px;height:6px;border-radius:50%;background:var(--accent)}
.ask-note{margin:18px 0 0;padding-top:14px;border-top:1px solid var(--line);font-size:14px;color:var(--l2)}
.ro-block{margin-top:0}
.ro-dia{display:block;width:100%;max-width:600px;height:auto;margin-top:20px;overflow:visible}
.ro-sys rect{fill:var(--card);stroke:var(--line)}
.ro-sys text,.ro-pe text{font-size:15px;font-weight:600;fill:var(--l1)}
.ro-pe rect{fill:var(--accent-fill)}.ro-pe text{fill:#fff}
.ro-in{fill:none;stroke:var(--accent);stroke-width:1.75}
.ro-dia marker path{fill:var(--accent)}
.ro-back{fill:none;stroke:var(--l3);stroke-width:1.5;stroke-dasharray:none;opacity:.7}
.ro-x path{stroke:var(--red);stroke-width:2.5;stroke-linecap:round}
.ro-lab{font-size:13px;font-weight:600;fill:var(--accent);paint-order:stroke;stroke:var(--card);stroke-width:5px;stroke-linejoin:round}
.ro-lab.ro-lab-back{fill:var(--l2)}
.ro-caps{display:grid;gap:8px;margin-top:20px}
.ro-caps p{margin:0;font-size:15px;color:var(--l2)}
.ro-caps b{color:var(--l1);font-weight:650}

/* where it's going: flight mode annunciator */
.stage-rule{margin-top:16px;color:var(--l2);max-width:64ch}
.sec-head .stage-rule{margin-top:12px}
.stages{list-style:none;margin:48px 0 0;padding:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:32px}
.stages p{margin-top:8px;color:var(--l2)}
.stage{border-top:1px solid var(--line);padding-top:20px}
.stage-ann{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.stage-ann i{width:14px;height:14px;border-radius:50%;flex:none}
.stage.engaged .stage-ann i{background:var(--accent)}
.stage.armed .stage-ann i{box-shadow:inset 0 0 0 2px var(--accent)}
.stage.off .stage-ann i{box-shadow:inset 0 0 0 2px var(--l3)}
.stage-l{font-size:13px;font-weight:600}
.stage.armed .stage-l,.stage.engaged .stage-l{color:var(--accent)}
.stage.off .stage-l{color:var(--l2)}

/* questions: one accordion beside its heading, the first answer open */
.faq p{margin-top:8px;color:var(--l2)}
.faq{display:block;max-width:820px;margin-top:40px;border-top:1px solid var(--line)}
.faq details{border-bottom:1px solid var(--line)}
.faq summary{display:flex;align-items:center;gap:12px;cursor:pointer;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"";flex:none;width:8px;height:8px;margin:0 4px 4px 0;border-right:1.75px solid var(--l2);border-bottom:1.75px solid var(--l2);transform:rotate(45deg);transition:transform 150ms}
.faq details[open] summary::after{transform:rotate(225deg);margin-bottom:-4px}
.faq summary:focus-visible{outline:2px solid var(--accent);outline-offset:4px;border-radius:6px}
.faq summary{justify-content:space-between;padding:16px 0}
.faq details p{margin:0 0 22px;max-width:64ch}
.faq-row{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:48px;align-items:start}
.faq-row .faq{margin-top:0;max-width:none}

/* request */
.req{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:64px;align-items:start}
.req .h2{max-width:14ch}
.req-trust{margin:24px 0 0;font-size:15px;color:var(--l2);max-width:64ch}
.fs-card{padding:24px}
.fs-tabs{list-style:none;margin:0 0 24px}
.fs-tabs li{flex:1;text-align:center;font-size:13px;font-weight:500;padding:6px 8px;border-radius:999px;color:var(--l1);white-space:nowrap}
.fs-tabs li.is-done{color:var(--l1)}
.fs-tabs li.is-active{background:var(--thumb);color:var(--l1);font-weight:600;box-shadow:0 1px 3px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04)}
.fs-step{display:none}.fs-step.is-active{display:block}
.fs-dim{font-size:13px;color:var(--l2)}
.fs-title{margin:6px 0 0}
.fs-prov{margin:6px 0 16px;color:var(--l2);font-size:15px}
.fs-opt{gap:12px;align-items:flex-start}
.fs-opt .grow>span{display:block}
.fs-radio{width:20px;height:20px;border-radius:50%;flex:none;margin-top:1px;box-shadow:inset 0 0 0 1.5px var(--l3)}
.fs-opt[aria-checked="true"] .fs-radio{box-shadow:inset 0 0 0 6px var(--accent)}
.fs-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}
.fs-field{display:flex;flex-direction:column;gap:6px;min-width:0}
.fs-label{font-size:13px;font-weight:500;color:var(--l2)}
.fs-label-opt{font-weight:400}
.fs-in{width:100%;border:1px solid var(--line);background:var(--card);border-radius:12px;padding:10px 12px;font-size:15px;color:var(--l1)}
.fs-in[aria-invalid="true"]{border-color:var(--red)}
.fs-nav{display:flex;justify-content:space-between;gap:12px;margin-top:24px}
.fs-nav .fs-next{margin-left:auto}
.privacy-line{margin-top:12px;font-size:13px;color:var(--l2);text-align:right}
.notes .privacy-line{text-align:left}
.fs-error.err{color:var(--red-t)}
.fs-hp{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
.fs-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.fs-tier{margin-top:8px}
.fs-tier-name{font-size:28px;font-weight:650;letter-spacing:-.02em}
.fs-tier-sum{margin-top:12px;color:var(--l2)}
.fs-dimres{display:flex;flex-direction:column;gap:14px;margin-top:20px}
.fs-dr-head{display:flex;justify-content:space-between;font-size:14px;font-weight:600}
.fs-followup{margin-top:24px;padding-top:16px;border-top:1px solid var(--line)}

/* field notes */
.notes{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:64px;align-items:end}
.fs-follow{display:flex;gap:12px}
.fs-follow .fs-in{flex:1;border-radius:999px;padding:8px 16px}
.notes-anchor{position:relative;top:-72px;display:block}

@media (max-width:1099.98px){
  .evd-side{position:static}
  .how-tl{grid-template-columns:repeat(2,minmax(0,1fr))}.how-tl>li:nth-child(n+3){margin-top:24px}.how-tl::before{display:none}.how-row{grid-template-columns:1fr}
  .trips-row,.faq-row{grid-template-columns:1fr}.faq-row .faq{margin-top:8px}
}
@media (max-width:1000px){
  .evd-grid,.req,.notes{grid-template-columns:1fr;gap:32px}
}
@media (max-width:759.98px){
  .stages,.faq,.fs-row{grid-template-columns:1fr}
  .fs-tabs li{font-size:12px;padding:6px 4px}
  .fs-follow{flex-direction:column}
  .stm-row{grid-template-columns:1fr;gap:12px}
  .stm-books{font-size:22px;margin-top:48px}.vwf{min-height:220px;gap:8px}.vwf-p span{font-size:13px}
  .how-tl{grid-template-columns:1fr;gap:28px;padding-left:24px}.how-tl::before{display:block;left:6px;right:auto;top:6px;bottom:0;width:2px;height:auto}.how-tl>li{padding-top:0}.how-tl-dot{left:-24px}
  .ro-sys text,.ro-pe text{font-size:18px}.ro-lab{font-size:17px}
}

/* @owner sections.mjs */
/* field notes: the link to the latest note */
.notes-link{margin-top:16px;font-size:17px;font-weight:600}

/* @owner article.mjs */
/* Field note 01: one reading column; the exhibits run wider */
.fnote{padding:72px 0 96px}
.fnote-head,.fnote-body>p,.fnote-body>h2,.fnote-body>h3{max-width:680px;margin-left:auto;margin-right:auto}
.fnote-kick{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:14px;font-weight:600;color:var(--accent)}
.fnote-kick time{font-weight:500;color:var(--l2)}
.fnote-h1{margin-top:14px;font-size:48px;line-height:1.08;max-width:none}
.fnote-stand{margin-top:24px;max-width:none}
.fnote-by{margin-top:20px;font-size:14px;font-weight:600}
.fnote-body{margin-top:24px}
.fnote-body>p{margin-top:20px;font-size:18px;line-height:1.65}
.fnote-body>h2{margin-top:56px;font-size:30px;line-height:1.15;font-weight:700;letter-spacing:-.02em}
.fnote-body>h3{margin-top:36px;font-size:21px;line-height:1.25;font-weight:650}
.fnote-body>h2+p,.fnote-body>h3+p{margin-top:12px}
.fnote-ex{max-width:1056px;margin:48px auto 0}
.fnote-ex+p,.fnote-ex+h2{margin-top:48px}
@media (max-width:759.98px){
  .fnote{padding:40px 0 64px}
  .fnote-h1{font-size:34px;line-height:1.1}
  .fnote-body>p{font-size:17px}
  .fnote-body>h2{margin-top:44px;font-size:25px}
  .fnote-ex{margin-top:36px}
}

/* @owner exhibits.mjs */
/* Exhibit 1: the bridge. Bars from zero, to one scale; --lo, --hi and --end are percents of the peak. */
.xb{margin:0;padding:28px 28px 24px}
.xb-title,.xr-title{font-size:22px;line-height:1.25;font-weight:700;letter-spacing:-.015em}
.xb-sub{margin-top:6px;font-size:16px}
.xb-unit{margin-top:12px;font-size:13px;color:var(--l2)}
.xb-legend{margin-top:2px;font-size:13px;color:var(--l2)}
.xb-chart{--g:12px;display:grid;grid-template-columns:repeat(9,minmax(0,1fr));column-gap:var(--g);list-style:none;margin:24px 0 0;padding:0}
.xb-s{min-width:0}
.xb-hit{display:flex;flex-direction:column;width:100%;padding:0;border:0;border-radius:6px;background:none;font:inherit;color:inherit;text-align:center;cursor:pointer}
.xb-p{position:relative;display:block;height:300px;margin-top:30px;border-bottom:1px solid var(--line)}
.xb-bar{position:absolute;left:12%;right:12%;bottom:calc(var(--lo) * 1%);height:calc((var(--hi) - var(--lo)) * 1%);border-radius:4px}
.xb-s.pos .xb-bar{background:var(--green)}
.xb-s.neg .xb-bar{background:var(--red)}
.xb-s.tot .xb-bar{background:var(--l3)}
.xb-hit:hover .xb-bar{opacity:.82}
.xb-cx{position:absolute;left:88%;width:calc(24% + var(--g));bottom:calc(var(--end) * 1%);border-top:1px dashed var(--l3)}
.xb-v{position:absolute;left:50%;transform:translateX(-50%);font-size:14px;font-weight:600;white-space:nowrap}
.xb-s.pos .xb-v,.xb-s.tot .xb-v{bottom:calc(var(--hi) * 1% + 6px)}
.xb-s.neg .xb-v{top:calc((100 - var(--lo)) * 1% + 6px)}
.xb-s.tot .xb-v{font-weight:750}
.xb-l{display:flex;flex-direction:column;margin-top:10px;font-size:13px;line-height:1.3}
.xb-l1{font-weight:600;white-space:nowrap}
.xb-l2{color:var(--l2);white-space:nowrap}
.xb-tip{margin-top:16px;font-size:14px}
.xb-cap,.xr-cap{margin-top:16px;font-size:13px;color:var(--l2)}
@media (max-width:1023.98px){
  .xb-chart{--g:8px}
  .xb-l,.xb-v{font-size:12px}
}
/* Below 768 px the same bridge runs across: one row per step, its bar from the running start to the running end. */
@media (max-width:767.98px){
  .xb{padding:20px 16px}
  .xb-chart{grid-template-columns:minmax(0,1fr);row-gap:6px;margin-top:20px}
  .xb-hit{display:grid;grid-template-columns:84px minmax(0,1fr) 64px;column-gap:8px;align-items:center;height:44px;text-align:left}
  .xb-l{grid-column:1;grid-row:1;margin:0}
  .xb-p{grid-column:2;grid-row:1;height:14px;margin:0;border-bottom:0;border-left:1px solid var(--line)}
  .xb-bar{left:calc(var(--lo) * 1%);right:auto;bottom:0;width:calc((var(--hi) - var(--lo)) * 1%);height:100%;border-radius:3px}
  .xb-s.pos .xb-v,.xb-s.neg .xb-v,.xb-s.tot .xb-v{top:50%;bottom:auto;left:auto;right:-72px;width:64px;transform:translateY(-50%);text-align:right}
  .xb-cx{left:calc(var(--end) * 1%);bottom:auto;top:100%;width:0;height:36px;border-top:0;border-left:1px dashed var(--l3)}
}

/* Exhibit 2: four records join into the record, which fans out to four decisions. Equal rows
   put each box's center at a known height, so the joins are drawn in CSS. */
.xr{margin:0}
.xr-grid{--cg:56px;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));column-gap:var(--cg);margin-top:20px}
.xr-col{display:flex;flex-direction:column;min-width:0}
.xr-h{margin-bottom:10px;font-size:13px;font-weight:600;color:var(--l2)}
.xr-list{--rg:12px;position:relative;flex:1;display:grid;grid-auto-rows:1fr;row-gap:var(--rg);list-style:none;margin:0;padding:0}
.xr-box{position:relative;padding:12px 14px;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow)}
.xr-n{font-size:15px;font-weight:600}
.xr-d{margin-top:2px;font-size:13px;line-height:1.4;color:var(--l2)}
.xr-mid .xr-list{grid-auto-rows:auto;align-content:center}
.xr-box.xr-rec{padding:18px;border:1.5px solid var(--accent);background:var(--acc-soft)}
.xr-rec .xr-n{font-size:17px;color:var(--accent)}
.xr-rec .xr-d{color:var(--l1)}
.xr-in .xr-box::after,.xr-rec::before,.xr-rec::after,.xr-out .xr-box::before{content:"";position:absolute;top:50%;width:calc(var(--cg) / 2);border-top:1.5px solid var(--l3)}
.xr-in .xr-box::after,.xr-rec::after{left:100%}
.xr-rec::before,.xr-out .xr-box::before{right:100%}
.xr-in .xr-list::after,.xr-out .xr-list::before{content:"";position:absolute;top:calc((100% - 3 * var(--rg)) / 8);bottom:calc((100% - 3 * var(--rg)) / 8);border-left:1.5px solid var(--l3)}
.xr-in .xr-list::after{left:calc(100% + var(--cg) / 2)}
.xr-out .xr-list::before{left:calc(var(--cg) / -2)}
.xr-mid .xr-list::before,.xr-out .xr-box::after{content:"";position:absolute;top:50%;left:-7px;margin-top:-4.25px;border-style:solid;border-width:5px 0 5px 7px;border-color:transparent transparent transparent var(--l3)}
.xr-down{display:none}
.xr-note{margin-top:20px;font-size:14px}
@media (max-width:767.98px){
  .xr-grid{grid-template-columns:minmax(0,1fr)}
  .xr-list{grid-auto-rows:auto}
  .xr-in .xr-box::after,.xr-rec::before,.xr-rec::after,.xr-out .xr-box::before,.xr-in .xr-list::after,.xr-out .xr-list::before,.xr-mid .xr-list::before,.xr-out .xr-box::after{display:none}
  .xr-down{display:block;position:relative;width:0;height:36px;margin:10px auto;border-left:1.5px solid var(--l3)}
  .xr-down::after{content:"";position:absolute;bottom:-1px;left:-6.25px;border-style:solid;border-width:7px 5px 0;border-color:var(--l3) transparent transparent}
}
/* @owner shared */

/* Generated from the dark token block in tokens.css */
.band{--bg:#000000;--card:#1C1C1E;--line:#2C2C2E;--fill:#2C2C2E;--fill2:#242426;--l1:#F5F5F7;--l2:#A1A1A6;--l3:#8E8E93;--accent:#3D8BFF;--acc-soft:rgba(61,139,255,.14);--acc-rec:rgba(61,139,255,.5);--acc-alloc:rgba(61,139,255,.2);--green-t:#32D74B;--orange-t:#FFB340;--red-t:#FF6961;--g-bg:rgba(50,215,75,.14);--o-bg:rgba(255,179,64,.14);--r-bg:rgba(255,105,97,.14);--shadow:none;--bar:rgba(22,22,24,.78);--side:rgba(14,14,16,.9);--thumb:#636366;--scrim:rgba(0,0,0,.5);--code:#121214;color-scheme:dark;--mark:#4D9FFF}
