/* fi-vision app. Visual language from tso-startup (template.html): Fira Sans, Congress Blue, cyan accents,
   900 uppercase headlines, 1280 x 720 canvas scaled to the window. No external requests. */
@font-face{font-family:"Fira Sans";font-weight:300;font-style:normal;font-display:swap;src:url(/static/fonts/FiraSans-300.woff2) format("woff2")}
@font-face{font-family:"Fira Sans";font-weight:400;font-style:normal;font-display:swap;src:url(/static/fonts/FiraSans-400.woff2) format("woff2")}
@font-face{font-family:"Fira Sans";font-weight:600;font-style:normal;font-display:swap;src:url(/static/fonts/FiraSans-600.woff2) format("woff2")}
@font-face{font-family:"Fira Sans";font-weight:700;font-style:normal;font-display:swap;src:url(/static/fonts/FiraSans-700.woff2) format("woff2")}
@font-face{font-family:"Fira Sans";font-weight:900;font-style:normal;font-display:swap;src:url(/static/fonts/FiraSans-900.woff2) format("woff2")}
@font-face{font-family:"Fira Mono";font-weight:400;font-style:normal;font-display:swap;src:url(/static/fonts/FiraMono-400.woff2) format("woff2")}

:root{--blue:#004388;--cyan:#00A6E2;--ink:#111418;--grey:#6B7785;--pale:#F2F6FA;--line:#DCE3EA;--red:#C8102E;--green:#12795A;
  --ease:cubic-bezier(.16,1,.3,1);--m:120px;--chrome:#0b0f14;--chrome2:#131a22;--chrome3:#1b2430;--chrome-line:#27323f;--chrome-text:#dbe6f2;--drawer:420px}
*{box-sizing:border-box}
html,body{margin:0;background:#fff;font-family:"Fira Sans",Arial,sans-serif;color:var(--ink);-webkit-tap-highlight-color:transparent}
body{min-height:100vh;overflow-x:hidden}
body[data-view=present]{background:#000}
button,input,select{font-family:inherit}
a{color:inherit}
:focus-visible{outline:3px solid var(--cyan);outline-offset:2px}
.boot{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;font-size:12px;letter-spacing:4px;text-transform:uppercase;font-weight:700;color:var(--grey);margin:0}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
svg.i{width:18px;height:18px;flex:none;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round}
svg.i.f{fill:currentColor;stroke:none}

/* ---------------------------------------------------------------- buttons (chrome) */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:36px;padding:0 14px;border-radius:3px;border:1px solid var(--chrome-line);background:transparent;color:inherit;font-size:13px;font-weight:600;letter-spacing:.2px;text-decoration:none;cursor:pointer;white-space:nowrap;line-height:1;position:relative}
.btn:hover{background:rgba(255,255,255,.07)}
.btn.primary{background:var(--cyan);border-color:var(--cyan);color:#fff}
.btn.primary:hover{background:#0095cc}
.btn.icon{width:36px;padding:0}
.btn[aria-disabled=true]{opacity:.35;pointer-events:none}
.btn .badge{min-width:18px;height:18px;border-radius:9px;background:var(--cyan);color:#fff;font-size:11px;font-weight:700;display:inline-flex;align-items:center;justify-content:center;padding:0 5px}
.btn.primary .badge{background:#fff;color:var(--cyan)}
.light .btn{border-color:var(--line);color:var(--ink);background:#fff}
.light .btn:hover{background:var(--pale)}
.light .btn.primary{background:var(--cyan);border-color:var(--cyan);color:#fff}
.btn.big{height:52px;padding:0 26px;font-size:15px;letter-spacing:2px;text-transform:uppercase;font-weight:700}
.btn.big svg.i{width:20px;height:20px}
.btn .sl{display:none}
.acts{display:contents}
.hbar .acts{display:flex;gap:8px;flex-wrap:nowrap}

.pager{display:inline-flex;align-items:center;gap:4px}
.count{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;min-width:62px;text-align:center;color:#fff}
.stagewrap{flex:1 1 auto;min-height:0;display:flex;align-items:center;justify-content:center;padding:14px;position:relative}
.frame{position:relative;flex:none;overflow:hidden;background:#fff;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.frame>.deck,.thumb>.deck{position:absolute;left:0;top:0;width:1280px;height:720px;transform-origin:0 0;overflow:hidden;background:#fff;color:var(--ink)}
.rotate{display:none;text-align:center;font-size:12px;color:var(--grey);padding:0 16px 6px;margin:0}
@media (orientation:portrait) and (max-width:699px){.present .rotate{display:block;position:absolute;left:0;right:0;bottom:12px;color:var(--chrome-text)}}
body.drawer-open .present{right:var(--drawer)}
@media (max-width:900px){
  body.drawer-open .present{right:0}
}

.thumb{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.35)}
.thumb .deck *{animation:none!important;transition:none!important}
.thumb .deck{pointer-events:none}

/* ---------------------------------------------------------------- present */
.present{position:fixed;inset:0;display:flex;flex-direction:column;background:#000;transition:right .3s var(--ease)}
.present .stagewrap{padding:0}
.present .frame{box-shadow:none}
.notes{flex:none;max-height:34vh;overflow:auto;background:#111;color:var(--chrome-text);border-top:3px solid var(--cyan);padding:14px 24px 18px;font-size:15px;line-height:1.5}
.notes h2{margin:0 0 6px;font-size:11px;letter-spacing:2.5px;text-transform:uppercase;color:var(--cyan);font-weight:700}
.notes p{margin:0 0 12px;white-space:pre-line}
.notes ul{margin:0 0 12px;padding:0;list-style:none}
.notes li{margin:2px 0}
.notes p.snote{color:#9fb0c2;font-size:13px;font-style:italic;margin-top:-6px}
.notes li i{font-style:normal;color:var(--grey);font-size:12px;letter-spacing:1px;text-transform:uppercase;font-weight:700;margin-left:6px}
.navcue{position:absolute;top:0;bottom:0;width:150px;pointer-events:none;opacity:0;transition:opacity .25s;display:flex;align-items:center;justify-content:center;z-index:50}
.navcue.l{left:0;background:linear-gradient(90deg,rgba(0,26,54,.3),rgba(0,26,54,0))}
.navcue.r{right:0;background:linear-gradient(270deg,rgba(0,26,54,.3),rgba(0,26,54,0))}
.navcue span{font-size:72px;line-height:1;color:#fff;font-weight:300;text-shadow:0 2px 12px rgba(0,0,0,.4)}
/* the click target is the whole half; the cue is faint over the slide and full near the edge */
.deck.cue-l .navcue.l,.deck.cue-r .navcue.r{opacity:.32}
.deck.cue-l.cue-e .navcue.l,.deck.cue-r.cue-e .navcue.r{opacity:1}
.deck.cue-e{cursor:pointer}

/* presentation bars: hidden off screen, slide in on hover (top edge, bottom edge) or a tap */
.ptop{position:absolute;left:0;right:0;top:0;z-index:70;display:flex;align-items:center;gap:8px;padding:9px 14px;min-height:56px;background:rgba(11,15,20,.9);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);color:var(--chrome-text);border-bottom:1px solid var(--chrome-line);transform:translateY(-100%);visibility:hidden;transition:transform .32s var(--ease),visibility 0s .32s}
.ptop>*{flex:none}
.ptop .grow{flex:1 1 0}
.ptop .pname{font-size:11px;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;color:var(--grey);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:0 1 auto;min-width:0;margin-left:6px}
.ptop .who{color:var(--chrome-text);margin:0 6px}
.present.show-top .ptop,.ptop:has(:focus-visible){transform:none;visibility:visible;transition:transform .32s var(--ease)}
.pstrip{position:absolute;left:0;right:0;bottom:0;z-index:70;background:rgba(11,15,20,.92);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-top:1px solid var(--chrome-line);transform:translateY(100%);visibility:hidden;transition:transform .34s var(--ease),visibility 0s .34s}
.present.show-strip .pstrip,.pstrip:has(:focus-visible){transform:none;visibility:visible;transition:transform .34s var(--ease)}
.strack{display:flex;gap:22px;overflow-x:auto;overflow-y:hidden;padding:10px 16px 14px;scrollbar-width:thin;scrollbar-color:var(--chrome-line) transparent;overscroll-behavior-x:contain}
.sgroup{flex:none;display:flex;flex-direction:column;gap:7px}
.sglabel{font-size:10px;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--grey);white-space:nowrap;height:12px;line-height:12px}
.sgrow{display:flex;gap:8px}
.stile{flex:none;position:relative;display:block;width:176px;text-decoration:none;color:#fff;outline-offset:3px}
.stile .thumb{width:176px;box-shadow:0 6px 18px rgba(0,0,0,.4);opacity:.78;transition:opacity .2s,outline-color .2s;outline:2px solid transparent;outline-offset:2px}
.stile:hover .thumb{opacity:1;outline-color:var(--grey)}
.stile.on .thumb{opacity:1;outline:3px solid var(--cyan);outline-offset:2px}
.stile .sn{position:absolute;left:5px;bottom:5px;font-size:10px;font-weight:700;letter-spacing:1px;background:rgba(0,0,0,.62);color:#fff;padding:2px 5px;border-radius:2px;font-variant-numeric:tabular-nums}
.stile.on .sn{background:var(--cyan)}
@media (max-width:900px){.ptop .lbl,.ptop .pname{display:none}.ptop .sl{display:inline}}
@media (max-width:640px){.ptop{gap:6px;padding:6px 8px;flex-wrap:wrap}.ptop .acts .btn .sl{display:none}.ptop .acts .btn{width:36px;padding:0}.ptop .acts .btn[data-act=drawer]{width:auto;padding:0 10px}.ptop .who .wn{max-width:7em}
  .stile,.stile .thumb{width:132px}}
@media (max-height:520px){.ptop{min-height:46px;padding-top:5px;padding-bottom:5px}.strack{padding:6px 10px 8px;gap:14px}.sgroup{gap:4px}.stile,.stile .thumb{width:112px}.stile .sn{font-size:9px}}

/* narration marks: the item the narration names lights up (cyan, slightly larger), then settles back */
[data-item]{transition:color .35s var(--ease),transform .45s var(--ease),background-color .35s,box-shadow .35s,border-color .35s}
.b-bullets li[data-item],.clink{transform-origin:0 50%}
.b-bullets li.hl,.clink.hl{color:var(--cyan);transform:scale(1.045)}
.b-bullets li.hl:before,.cli:has(.clink.hl):before{background:var(--cyan);transform:scale(1.2)}
.b-bullets li:before{transition:background-color .35s,transform .35s}
.tone-dark .b-bullets li.hl,.tone-dark .clink.hl,.blue .b-bullets li.hl{color:#5fd3ff}
.card.hl{transform:scale(1.03);border-top-color:var(--cyan);box-shadow:0 14px 36px rgba(0,166,226,.22)}
.card.hl .ct{color:var(--cyan)}
.b-flow li.hl{background:var(--cyan)!important;color:#fff;transform:scale(1.04)}
.fig.hl{border-top-color:var(--blue);transform:scale(1.04)}
.fig.hl .fv{color:var(--cyan)}
.b-table tr.hl td,.b-table td.hl,.b-table th.hl{color:var(--cyan);background-color:rgba(0,166,226,.08)}
.b-table tr.hl td.em,.b-table td.hl.em{color:var(--cyan)}
.b-table td,.b-table th{transition:color .35s var(--ease),background-color .35s}
.thumb [data-item]{transition:none}
/* the field list on the vision slide: each name opens its field slide */
.clink{display:inline-block;color:inherit;text-decoration:none;position:relative;cursor:pointer}
/* the whole row of a field link is clickable: the margin between rows becomes padding, so the rows touch */
.b-bullets.fields li.cli{margin:0;padding-top:.25em;padding-bottom:.25em;cursor:pointer}
.b-bullets.fields li.cli:before{top:.8em}
a.clink:hover{color:var(--cyan)}
.tone-dark a.clink:hover,.blue a.clink:hover{color:#5fd3ff}
a.clink:after{content:"›";position:absolute;right:-.85em;top:0;opacity:0;transition:opacity .2s,transform .2s;transform:translateX(-4px);font-weight:700}
a.clink:hover:after,a.clink:focus-visible:after{opacity:1;transform:none}

/* ---------------------------------------------------------------- slide canvas (tso-startup) */
.slide{position:absolute;inset:0;overflow:hidden;animation:fadein .5s var(--ease) both}
@keyframes fadein{from{opacity:0}to{opacity:1}}
.photo{background:var(--blue);color:#fff}
.paper{background:#fff;color:var(--ink)}
.blue{background:var(--blue);color:#fff}
.k{font-size:12px;letter-spacing:4px;text-transform:uppercase;font-weight:700;color:var(--cyan)}
.blue .k,.photo .k{color:#fff;opacity:.9}
.slide h1{margin:0;font-weight:900;letter-spacing:-.03em;line-height:.94;text-transform:uppercase;text-wrap:balance}
.slide h1 .c,.c{color:var(--cyan)}
.slide b{font-weight:700}
/* one footer on every slide: rule, section label left, page number right (title: author left, month right) */
.foot{position:absolute;left:var(--m);right:var(--m);bottom:40px;display:flex;justify-content:space-between;gap:24px;font-size:11px;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;opacity:.55;border-top:1px solid currentColor;padding-top:12px;z-index:3}
.photo .foot,.blue .foot{color:#fff}
.L-title .foot{border-top-color:transparent;opacity:.8;text-shadow:0 1px 8px rgba(0,10,30,.6)}
.active-in,.slide .in{animation:in .9s var(--ease) both}
@keyframes in{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}
.d1{animation-delay:.12s!important}.d2{animation-delay:.24s!important}.d3{animation-delay:.36s!important}.d4{animation-delay:.48s!important}

/* editable values: a thin dotted underline (no box, no layout shift), ew-resize cursor; the hint is a
   one-line tooltip above the line on hover or focus */
.tn,.tv{font-weight:700;color:var(--blue);text-decoration:underline dotted var(--cyan);text-decoration-thickness:2px;text-underline-offset:.2em;position:relative;font-variant-numeric:tabular-nums}
.tn{cursor:ew-resize;user-select:none;-webkit-user-select:none;touch-action:none;border-radius:2px}
.tv{font:inherit;font-weight:700;background:none;border:0;padding:0;margin:0;cursor:pointer;line-height:inherit;text-align:inherit;color:var(--blue)}
.blue .tn,.photo .tn,.tone-dark .tn,.blue .tv,.tone-dark .tv{color:#fff}
.tn:hover,.tn.drag,.tv:hover{color:var(--cyan)}
.tn[data-tip]:hover::after,.tn[data-tip]:focus-visible::after,.tv[data-tip]:hover::after,.tv[data-tip]:focus-visible::after{content:attr(data-tip);position:absolute;left:50%;bottom:calc(100% + 6px);transform:translateX(-50%);white-space:nowrap;font:600 12px/1 "Fira Sans",Arial,sans-serif;letter-spacing:.2px;text-transform:none;color:#fff;background:var(--ink);padding:5px 8px;border-radius:3px;pointer-events:none;z-index:30;text-decoration:none;box-shadow:0 4px 14px rgba(0,0,0,.2)}
.tn.drag::after{display:none}
.slide .tn{animation:pulse 1.6s .9s ease-out 2}
@keyframes pulse{0%,100%{background-color:rgba(0,166,226,0)}40%{background-color:rgba(0,166,226,.16)}}
.typer{position:fixed;z-index:200;width:150px;height:40px;font-size:18px;font-weight:700;color:var(--blue);border:2px solid var(--cyan);border-radius:3px;padding:0 10px;background:#fff;box-shadow:0 10px 30px rgba(0,0,0,.25)}

/* ---------------------------------------------------------------- title: tso-startup cinematic title, literal */
.avatar{position:absolute;right:370px;bottom:113px;height:480px;width:293px;cursor:pointer;user-select:none}
.avatar:before{content:"";position:absolute;left:28%;right:26%;bottom:12px;height:27px;border-radius:50%;background:rgba(0,10,30,.55);filter:blur(15px)}
.cine{position:absolute;inset:-10%;overflow:hidden;background:#001a36;pointer-events:auto}
.rig .cine{transform:translateZ(-400px) scale(1.2)}
.cine video,.cine img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.cinehit{position:absolute;left:956px;top:266px;width:152px;height:420px;right:auto;bottom:auto;cursor:pointer;user-select:none;background:none}
.cinehit:before{display:none}
.cinehit .avhint{left:calc(100% + 215px);top:135px}
.avatar.ready.done:not(.playing) .avhint{opacity:0}
video.glow{filter:drop-shadow(0 0 10px rgba(0,166,226,.95)) drop-shadow(0 0 22px rgba(0,166,226,.5))}
video.stopped-video{filter:drop-shadow(0 0 10px rgba(225,40,40,.95)) drop-shadow(0 0 22px rgba(225,40,40,.5))}
.photo .k.cinek{position:absolute;left:114px;top:105px;font-size:15px;opacity:1;white-space:nowrap;transform:rotate(-0.14deg);transform-origin:50% 50%;color:transparent;background-color:rgba(16,12,8,.92);-webkit-background-clip:text;background-clip:text;text-shadow:1px 1px 0 rgba(255,250,240,.8),-1px -1px 0 rgba(0,0,0,.35);z-index:2;pointer-events:none}
.cam{position:absolute;inset:0;perspective:1400px;perspective-origin:50% 55%;overflow:hidden;pointer-events:none}
.rig{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateY(6deg);will-change:transform;pointer-events:none}
.layer{position:absolute;inset:0;transform-style:preserve-3d;pointer-events:none}
.layer.front{transform:translateZ(60px)}
.cine-title h1{position:absolute;color:#fff;letter-spacing:-3px;line-height:.94}
.avhint{position:absolute;left:calc(50% - 35px);top:96px;background:var(--cyan);color:#fff;font-size:12px;font-weight:700;letter-spacing:2.5px;text-transform:uppercase;padding:9px 14px;white-space:nowrap;transform:translateX(-100%);opacity:0;transition:opacity .4s;pointer-events:none}
.avhint:after{content:"";position:absolute;right:-8px;top:50%;margin-top:-8px;border:8px solid transparent;border-left-color:var(--cyan);border-right:0}
.avatar.ready:not(.playing) .avhint{opacity:1}
.avatar.playing video{filter:none}
.nomedia .avatar,.avatar.nomedia{cursor:default}
.nomedia .avhint{display:none}

/* ---------------------------------------------------------------- layouts */
.pad{position:absolute;left:var(--m);right:var(--m);top:64px;bottom:88px;display:flex;flex-direction:column;font-size:calc(18px * var(--fit,1));overflow:hidden}
.pad>.k{font-size:12px;margin-bottom:1em}
.pad h1{font-size:2.6em;margin-bottom:.32em}
.pad.statement{justify-content:center;bottom:110px}
.pad.statement h1{font-size:5.33em;max-width:900px;margin-bottom:.28em}
.pad.statement h1.long{font-size:4em}
.pad.statement h1.xlong{font-size:3.1em}
.pad h1.long{font-size:2.2em}
.pad h1.xlong{font-size:1.9em}
.lead{margin:0 0 1em;font-weight:300;font-size:1.22em;line-height:1.4;max-width:980px;text-wrap:balance}
.nw{white-space:nowrap}
.lc{text-transform:none}
.goal,.desc,.fact,.b-bullets li,.card .cx,.b-flow .fx,.b-note,.ttile .ln,.calc-notes li,.w-process .caption{text-wrap:pretty}
.card .ct,.b-flow .ft,.ttile .nm,.sov-card .sl,.b-table th,.lres{text-wrap:balance}
.statement .lead{font-size:1.33em;max-width:660px}
.lead b{font-weight:700}
.blocks{display:flex;flex-direction:column;gap:1.05em;flex:1 0 auto}
.blocks>.b-note{margin-top:auto}
/* standard slides with little content: the blocks sit a third of the way down the free space (the rest
   below), the small print stays at the bottom */
.blocks.spread::before{content:"";flex:1 1 0;max-height:120px;margin-bottom:-1.05em}
.blocks.spread::after{content:"";flex:2 1 0;order:1;margin-top:-1.05em}
.blocks.spread>.b-note{order:2;margin-top:0}
.cardframe .blocks.spread::before,.cardframe .blocks.spread::after{display:none}
.pad>.w{margin-bottom:1.05em}

.L-divider .pad,.L-end .pad{justify-content:center;bottom:110px}
.L-divider h1,.L-end h1{font-size:5.33em;max-width:1000px}
.L-divider .pad::before{content:"";display:block;width:84px;height:10px;background:var(--cyan);margin-bottom:34px}
.L-end .pad{align-items:center;text-align:center}
.L-end .lead{margin-left:auto;margin-right:auto}
.L-end .k{margin-bottom:1.4em}

/* video layout */
.vbg{position:absolute;inset:0;background:#fff}
.vbg video,.vbg img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.L-video.tone-dark .vbg{background:var(--blue)}
.vtext{position:absolute;left:0;top:0;bottom:84px;width:560px;padding:64px 28px 0 var(--m);display:flex;flex-direction:column;justify-content:center;font-size:calc(18px * var(--fit,1));overflow:hidden;z-index:2}
.vtext h1{font-size:2.9em;margin-bottom:.32em}
.vtext h1.long{font-size:2.3em}.vtext h1.xlong{font-size:1.9em}
.vtext .k{margin-bottom:1em}
.vtext .lead{font-size:1.15em;max-width:none}
.vtext .blocks{flex:none}
.vtext .b-bullets li{text-wrap:balance}
.tone-light .vtext{color:var(--ink)}
.tone-dark .vtext{color:#fff;text-shadow:0 1px 14px rgba(0,20,50,.35)}
.tone-dark .vtext .k{color:#fff}
/* video slides: the footer stays in the text column (label, then number) instead of floating over the scene */
.L-video .foot{right:auto;width:auto;min-width:200px;justify-content:flex-start;gap:36px;opacity:.7}
.L-video.tone-dark .foot{text-shadow:0 1px 8px rgba(0,20,50,.5)}
.tone-light .foot{color:var(--ink)}
.tone-dark .foot{color:#fff}
.vctl{align-self:flex-start;margin-top:1.3em;display:inline-flex;align-items:center;gap:10px;height:40px;padding:0 16px 0 12px;border:0;border-radius:0;background:var(--cyan);color:#fff;font-size:12px;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;cursor:pointer;flex:none}
.vctl .p2,.playing .vctl .p1{display:none}
.playing .vctl .p2{display:inline-flex;align-items:center;gap:10px}
.vctl .p1{display:inline-flex;align-items:center;gap:10px}
.nomedia .vctl{display:none}
.L-video .vbg{cursor:pointer}

/* target layout */
.tgrid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.08fr);column-gap:48px;align-items:start;margin-bottom:1.1em}
.tgrid.solo{grid-template-columns:minmax(0,1fr)}
.tgrid .thead>.k{font-size:12px;margin-bottom:1em}
.tgrid .thead h1{font-size:2.5em}
.goal{font-size:1.28em;font-weight:400;line-height:1.35;margin:0 0 .6em}
.desc{font-size:.95em;font-weight:300;line-height:1.45;margin:0;color:inherit;opacity:.9}
.tfacts{display:grid;grid-template-columns:repeat(var(--cols,4),minmax(0,1fr));gap:22px;margin-top:auto}
.L-target .blocks.tmid{flex:none;margin:auto 0 0}
.L-target .blocks.tmid+.tfacts{margin-top:auto}
.tnotes{margin-top:1.4em}
.tnotes .b-note{max-width:none}
.fact{border-top:5px solid var(--cyan);padding-top:.6em;font-size:.82em;line-height:1.4;font-weight:300}
.fact .fl{font-size:.72em;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--grey);margin-bottom:.45em}
.fact ul{margin:0;padding:0;list-style:none}
.fact li{margin:0 0 .3em;padding-left:.9em;position:relative}
.fact li:before{content:"";position:absolute;left:0;top:.55em;width:.38em;height:.38em;background:var(--cyan)}

/* ---------------------------------------------------------------- blocks */
.blabel{font-size:.62em;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;color:var(--grey);margin-bottom:.6em}
.blue .blabel,.tone-dark .blabel{color:rgba(255,255,255,.75)}
.b-bullets ul{margin:0;padding:0;list-style:none}
.b-bullets li{position:relative;padding-left:1.1em;margin:0 0 .5em;font-weight:300;font-size:1.05em;line-height:1.4}
.b-bullets li:before{content:"";position:absolute;left:0;top:.55em;width:.42em;height:.42em;background:var(--cyan)}
.b-table table{border-collapse:collapse;width:100%;table-layout:fixed;color:inherit}
.b-table th{color:var(--grey);font-size:.62em;letter-spacing:2px;text-transform:uppercase;border-bottom:2px solid currentColor;padding:.55em .6em;font-weight:700;text-align:left;vertical-align:bottom}
.b-table th{border-bottom-color:var(--ink)}
.blue .b-table th{color:rgba(255,255,255,.8);border-bottom-color:#fff}
.b-table td{border-bottom:1px solid var(--line);padding:.45em .6em;vertical-align:top;line-height:1.3;font-weight:300;font-size:.9em;overflow-wrap:anywhere}
.blue .b-table td{border-bottom-color:rgba(255,255,255,.25)}
.b-table td.num,.b-table th.num{text-align:right;font-variant-numeric:tabular-nums}
.b-table td.em{color:var(--blue);font-weight:700}
.blue .b-table td.em{color:#fff}
.b-table tr.sum td{font-weight:900;border-top:2px solid var(--ink);border-bottom:2px solid var(--ink)}
.b-table td:first-child{font-weight:400}
.b-table .caption{font-size:.7em;color:var(--grey);margin-top:.6em;line-height:1.4}
.b-cards{display:grid;gap:18px;grid-template-columns:repeat(var(--cols,3),minmax(0,1fr))}
.card{display:flex;flex-direction:column;background:var(--pale);color:var(--ink);border-top:6px solid var(--line);padding:1em 1.1em 1.05em;text-decoration:none;position:relative;min-width:0}
.card.accent-blue{border-top-color:var(--blue)}.card.accent-cyan{border-top-color:var(--cyan)}.card.accent-grey{border-top-color:#AAB4BF}
.blue .card{background:rgba(255,255,255,.08);color:#fff}
.card .ct{font-size:1.02em;font-weight:900;text-transform:uppercase;letter-spacing:-.01em;line-height:1.08;margin-bottom:.45em}
.card .cx{font-size:.84em;font-weight:300;line-height:1.42}
.card .tag{align-self:flex-start;font-size:.58em;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--blue);border:1px solid currentColor;padding:.3em .6em;margin-bottom:.7em}
.blue .card .tag{color:#fff}
.card.link{cursor:pointer;transition:transform .25s var(--ease),box-shadow .25s}
.card.link:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(0,26,54,.16)}
.card .go{margin-top:auto;padding-top:.7em;font-size:.62em;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--cyan)}
.b-flow{display:flex;gap:0;margin:0;padding:0;list-style:none;align-items:stretch}
.b-flow li{flex:1 1 0;min-width:0;position:relative;background:var(--pale);padding:.85em 1.6em .9em 1.25em;margin-right:.55em;clip-path:polygon(0 0,calc(100% - 1em) 0,100% 50%,calc(100% - 1em) 100%,0 100%,1em 50%)}
.b-flow li:first-child{clip-path:polygon(0 0,calc(100% - 1em) 0,100% 50%,calc(100% - 1em) 100%,0 100%);padding-left:1em}
.b-flow li:nth-child(odd){background:#E3ECF5}
.blue .b-flow li{background:rgba(255,255,255,.12)}.blue .b-flow li:nth-child(odd){background:rgba(255,255,255,.2)}
.b-flow .ft{font-size:.84em;font-weight:900;text-transform:uppercase;line-height:1.1;margin-bottom:.3em}
.b-flow .fx{font-size:.74em;font-weight:300;line-height:1.35}
.b-figures{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:22px}
.fig{border-top:6px solid var(--cyan);padding-top:.7em}
.fig .fv{font-size:2.5em;font-weight:900;letter-spacing:-.04em;line-height:1;color:var(--blue);font-variant-numeric:tabular-nums}
.blue .fig .fv{color:#fff}
.fig .fv .tn{border-bottom-width:4px}
.fig .fl{font-size:.64em;letter-spacing:2px;text-transform:uppercase;font-weight:700;margin-top:.7em;line-height:1.35}
.b-note{margin:0;font-size:.68em;line-height:1.45;color:var(--grey);font-weight:400;max-width:1000px}
.blue .b-note{color:rgba(255,255,255,.75)}

/* ---------------------------------------------------------------- interactive widgets */
.seg{display:inline-flex;flex-wrap:wrap;border:2px solid var(--blue);background:#fff}
.seg button{border:0;background:#fff;color:var(--blue);font-size:.72em;letter-spacing:2px;text-transform:uppercase;font-weight:700;padding:.75em 1.15em;cursor:pointer;display:flex;flex-direction:column;align-items:center;gap:.25em;line-height:1}
.seg button+button{border-left:2px solid var(--blue)}
.seg button small{font-size:.86em;letter-spacing:1px;font-weight:400;opacity:.8;text-transform:none}
.seg button[aria-checked=true]{background:var(--blue);color:#fff}
.seg button:hover:not([aria-checked=true]){background:var(--pale)}
.swc{display:inline-flex;align-items:center;gap:.8em;border:0;background:none;color:inherit;cursor:pointer;padding:0;font-size:.82em;font-weight:700;text-align:left;line-height:1.25}
.tg{position:relative;width:3.4em;height:1.8em;border-radius:1em;background:var(--line);transition:background .3s;flex:none}
.tg .knob{position:absolute;top:.2em;left:.2em;width:1.4em;height:1.4em;border-radius:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.2);transition:left .3s var(--ease)}
.swc[aria-checked=true] .tg{background:var(--cyan)}
.swc[aria-checked=true] .tg .knob{left:1.8em}

.steps{display:flex;flex-wrap:wrap;gap:.5em 0;margin:0;padding:0;list-style:none;align-items:center}
.steps li{display:inline-flex;align-items:center;gap:.4em;background:var(--pale);border:1.5px solid var(--line);padding:.5em .8em;font-size:.8em;font-weight:400;line-height:1.2;animation:in .6s var(--ease) both;animation-delay:calc(var(--i,0) * 60ms)}
.steps li:not(:last-child){margin-right:1.3em}
.steps li:not(:last-child):after{content:"";position:absolute;right:-.95em;top:50%;width:.42em;height:.42em;margin-top:-.23em;border-top:2px solid var(--grey);border-right:2px solid var(--grey);transform:rotate(45deg)}
.steps li{position:relative}
.steps li.ai{background:var(--cyan);border-color:var(--cyan);color:#fff;font-weight:700}
.steps li.gap{background:#fff;border-style:dashed;color:var(--grey);font-style:italic}
.aitag{font-size:.7em;letter-spacing:1.5px;font-weight:900;background:#fff;color:var(--cyan);padding:.15em .35em}
.w-process .steps{margin:1.1em 0 .9em}
.w-process .caption{margin:0;font-size:1.05em;font-weight:700;color:var(--blue)}

.w-sov .zones{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-bottom:.8em}
.zone{border:2px dashed var(--line);min-height:9.4em;padding:.8em;display:flex;flex-direction:column;gap:.6em;transition:border-color .2s,background .2s}
.zone.over{border-color:var(--cyan);background:rgba(0,166,226,.06)}
.zlabel{font-size:.62em;letter-spacing:2.5px;text-transform:uppercase;font-weight:700;color:var(--grey)}
.zcards{display:flex;flex-direction:column;gap:.55em}
.sov-card{display:flex;align-items:center;gap:.6em;border:0;background:var(--blue);color:#fff;font-size:.8em;font-weight:700;text-align:left;padding:.75em .9em;cursor:grab;touch-action:none;user-select:none;line-height:1.2;position:relative;z-index:1}
.sov-card.stays{background:var(--ink)}
.w-sov.on .sov-card.stays{background:var(--cyan)}
.sov-card.dragging{cursor:grabbing;z-index:5;box-shadow:0 18px 40px rgba(0,26,54,.3)}
.grip{width:.7em;height:1.1em;flex:none;background:radial-gradient(circle,rgba(255,255,255,.8) 1.5px,transparent 1.6px) 0 0/.35em .37em}
.sov-msg{margin:0 0 .8em;font-size:.95em;font-weight:700;min-height:1.4em;color:var(--grey)}
.sov-msg.ok{color:var(--green)}.sov-msg.bad{color:var(--red)}
.sov-bottom{display:flex;align-items:center;justify-content:space-between;gap:1em}
.linkbtn{border:0;background:none;color:var(--grey);font-size:.62em;letter-spacing:2px;text-transform:uppercase;font-weight:700;cursor:pointer;padding:.4em 0;text-decoration:underline;text-underline-offset:3px}

.w-agents .lanes{display:flex;flex-direction:column;gap:.9em;margin-top:1em}
.lane{display:grid;grid-template-columns:6.2em minmax(0,1fr);gap:.4em .8em;align-items:center;border-top:1px solid var(--line);padding-top:.8em}
.lname{font-size:.66em;letter-spacing:2px;text-transform:uppercase;font-weight:700;color:var(--grey)}
.lres{grid-column:2;font-size:.9em;font-weight:700;color:var(--blue)}
.lres.stop{color:var(--red)}

.w-targets{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px}
.ttile{display:flex;flex-direction:column;background:var(--pale);border-top:6px solid var(--cyan);padding:1em 1.1em;text-decoration:none;color:var(--ink);transition:transform .25s var(--ease),box-shadow .25s;min-width:0}
.ttile:hover{transform:translateY(-3px);box-shadow:0 18px 40px rgba(0,26,54,.16)}
.ttile .n{font-size:2.3em;font-weight:900;color:var(--blue);letter-spacing:-.04em;line-height:1}
.ttile .nm{font-size:.98em;font-weight:900;text-transform:uppercase;letter-spacing:-.01em;line-height:1.1;margin:.45em 0 .35em}
.ttile .ln{font-size:.8em;font-weight:300;line-height:1.4}

.w-calc{display:grid;grid-template-columns:minmax(0,.78fr) minmax(0,1.5fr);gap:40px;align-items:start}
.w-calc .seg{margin-bottom:1em}
.calc-bg{display:flex;align-items:center;gap:.8em;margin-bottom:.9em;font-size:.8em}
.calc-bg select{font-size:1em;font-weight:700;color:var(--blue);border:2px solid var(--line);background:#fff;padding:.35em .5em;border-radius:0}
.inputs{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:.42em .9em;margin:0;font-size:.8em;align-items:baseline}
.inputs dt{font-weight:300;line-height:1.25}
.inputs dd{margin:0;text-align:right;font-size:1.05em}
.calc-right .b-table td{font-size:.8em}
.calc-sum{display:flex;justify-content:space-between;gap:1em;align-items:baseline;margin-top:.7em;font-size:.86em}
.calc-sum b{font-size:1.25em;color:var(--blue);font-variant-numeric:tabular-nums}
.calc-notes{margin:.8em 0 0;padding:0;list-style:none;font-size:.66em;line-height:1.45;color:var(--grey)}
.calc-notes li{margin-bottom:.25em}
.calc-notes li.warn{color:var(--red);font-weight:700}
.offer{display:inline-flex;align-items:center;gap:.6em;margin-top:.9em;background:var(--blue);color:#fff;text-decoration:none;font-size:.66em;letter-spacing:2px;text-transform:uppercase;font-weight:700;padding:.8em 1.1em}
.offer:hover{background:var(--cyan)}
.offer svg.i{width:1.4em;height:1.4em}


/* ---------------------------------------------------------------- drawer */
#scrim{position:fixed;inset:0;background:rgba(0,10,20,.4);z-index:90}
#drawer{position:fixed;top:0;right:0;bottom:0;width:var(--drawer);max-width:100vw;background:#fff;color:var(--ink);z-index:100;transform:translateX(100%);transition:transform .3s var(--ease),visibility 0s .3s;visibility:hidden;display:flex;flex-direction:column;box-shadow:-20px 0 60px rgba(0,0,0,.25)}
#drawer.open{transform:none;visibility:visible;transition:transform .3s var(--ease)}
.dh{flex:none;padding:14px 18px 12px;border-bottom:1px solid var(--line);background:#fff}
.dh .row{display:flex;align-items:center;gap:8px}
.dh h2{margin:0;font-size:13px;letter-spacing:3px;text-transform:uppercase;font-weight:900;margin-right:auto}
.dcount{font-size:12px;font-weight:700;color:var(--grey)}
.dcount.on{color:var(--cyan)}
.dh .tools{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap}
.dh input[type=search]{flex:1 1 140px;height:34px;border:1px solid var(--line);padding:0 10px;font-size:14px;border-radius:3px}
.dbtn{display:inline-flex;align-items:center;gap:6px;height:34px;padding:0 12px;border:1px solid var(--line);background:#fff;color:var(--ink);font-size:12px;font-weight:700;cursor:pointer;border-radius:3px;white-space:nowrap}
.dbtn:hover{background:var(--pale)}
.dbtn svg.i{width:16px;height:16px}
.dbtn.x{width:34px;padding:0;justify-content:center}
.db{flex:1 1 auto;overflow-y:auto;padding:4px 18px 40px;overscroll-behavior:contain}
.dg{border-bottom:1px solid var(--line);padding:14px 0 6px}
.dg>h3{margin:0 0 8px;font-size:11px;letter-spacing:3px;text-transform:uppercase;font-weight:700;color:var(--cyan)}
.field{padding:9px 0 11px;border-radius:3px;transition:background .6s}
.field.flash{background:rgba(0,166,226,.14);transition:none}
.field[hidden]{display:none}
.fl{display:flex;align-items:baseline;gap:8px}
.fl label,.fl .lab{font-size:13px;font-weight:600;line-height:1.3;flex:1 1 auto}
.fv{font-size:13px;font-weight:700;color:var(--blue);font-variant-numeric:tabular-nums;white-space:nowrap}
.field.changed .fl label:before,.field.changed .fl .lab:before{content:"";display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--cyan);margin-right:7px;vertical-align:1px}
.freset{border:0;background:none;color:var(--grey);font-size:11px;font-weight:700;cursor:pointer;padding:0 0 0 4px;text-decoration:underline;visibility:hidden}
.field.changed .freset{visibility:visible}
.fh{margin:5px 0 0;font-size:12px;line-height:1.4;color:var(--grey)}
.fc{margin-top:7px;display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.fc input[type=range]{flex:1 1 150px;accent-color:var(--cyan);height:24px;margin:0}
.fc input[type=range].empty{opacity:.3}
.dbtn:disabled{opacity:.4;cursor:default;background:#fff}
.fc input[type=number],.fc input[type=date]{width:112px;height:32px;border:1px solid var(--line);padding:0 8px;font-size:14px;font-weight:600;color:var(--ink);border-radius:3px;background:#fff}
.fc input[type=date]{width:160px}
.fc input::placeholder{color:var(--grey);font-weight:400}
.dseg{display:inline-flex;flex-wrap:wrap;gap:4px}
.dseg button{border:1px solid var(--line);background:#fff;color:var(--ink);font-size:12px;font-weight:700;padding:7px 10px;cursor:pointer;border-radius:3px}
.dseg button[aria-checked=true]{background:var(--blue);border-color:var(--blue);color:#fff}
.dsw{display:inline-flex;align-items:center;gap:10px;border:0;background:none;padding:0;cursor:pointer;font-size:13px;font-weight:700;color:var(--ink)}
.dsw .tg{font-size:12px}
.dsw[aria-checked=true] .tg{background:var(--cyan)}
.dsw[aria-checked=true] .tg .knob{left:1.8em}
.dchk{display:flex;flex-direction:column;gap:6px}
.dchk label{display:flex;align-items:center;gap:8px;font-size:13px;cursor:pointer}
.dchk input{width:17px;height:17px;accent-color:var(--cyan);margin:0}
.olist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;width:100%}
.olist li{display:flex;align-items:center;gap:8px;border:1px solid var(--line);padding:6px 8px;border-radius:3px;background:#fff}
.olist li.isoff{background:var(--pale)}
.olist li.isoff .nm{color:var(--grey);text-decoration:line-through}
.olist .on{font-weight:900;color:var(--blue);min-width:18px;font-variant-numeric:tabular-nums}
.olist li.isoff .on{color:var(--grey)}
.olist .nm{flex:1 1 auto;font-size:13px;font-weight:600;line-height:1.25}
.olist .mv{width:28px;height:28px;border:1px solid var(--line);background:#fff;border-radius:3px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;padding:0;color:var(--ink)}
.olist .mv:disabled{opacity:.3;cursor:default}
.olist .mv svg.i{width:15px;height:15px}
.dfoot{font-size:12px;color:var(--grey);line-height:1.5;padding:16px 0 0}
@media (max-width:900px){#drawer{width:100vw}}


/* ---------------------------------------------------------------- toast */
#toast{position:fixed;left:50%;bottom:24px;transform:translate(-50%,20px);background:var(--ink);color:#fff;padding:10px 16px;font-size:13px;font-weight:600;border-radius:3px;opacity:0;pointer-events:none;transition:opacity .25s,transform .25s;z-index:300;max-width:calc(100vw - 32px)}
#toast.show{opacity:1;transform:translate(-50%,0)}

@media (prefers-reduced-motion:reduce){.slide,.slide .in,.steps li,.slide .tn{animation:none!important}[data-item],.ptop,.pstrip{transition:none!important}.b-bullets li.hl,.clink.hl,.card.hl,.b-flow li.hl,.fig.hl{transform:none}}

/* ---------------------------------------------------------------- viewer name in the bars */
.who{display:inline-flex;align-items:baseline;gap:8px;font-size:12px;line-height:1.2;white-space:nowrap;min-width:0}
.who .wn{font-weight:700;letter-spacing:.3px;max-width:14em;overflow:hidden;text-overflow:ellipsis}
.who .wout{background:none;border:0;padding:4px 0;margin:0;color:inherit;opacity:.72;font:inherit;text-decoration:underline;text-underline-offset:3px;cursor:pointer}
.who .wout:hover{opacity:1;color:var(--cyan)}

/* ---------------------------------------------------------------- per-slide narration (tso-startup) */
.nslot{position:absolute;inset:0;pointer-events:none;z-index:4}
.avatar.slidebot{position:absolute;right:auto;bottom:auto;cursor:pointer;user-select:none;-webkit-user-select:none;pointer-events:auto}
.avatar.slidebot:before{left:30%;right:30%;bottom:2%;height:5%;filter:blur(6px);background:rgba(0,10,30,.45)}
.avatar.slidebot video{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;object-position:50% 100%;display:block;background:transparent;transition:filter .25s}
.avatar.slidebot:hover video,.avatar.slidebot:focus-visible video{filter:drop-shadow(0 0 10px rgba(0,166,226,.95)) drop-shadow(0 0 22px rgba(0,166,226,.5))}
.avatar.slidebot.stopped video{filter:drop-shadow(0 0 10px rgba(225,40,40,.95)) drop-shadow(0 0 22px rgba(225,40,40,.5))}
.avatar.slidebot:focus-visible{outline:none}
.avatar.slidebot.nomedia{display:none}

/* ---------------------------------------------------------------- inside scene (name and code word, greetings) */
#gate{position:fixed;inset:0;z-index:400;background:#000;color:#fff;transition:opacity .5s var(--ease);overscroll-behavior:contain}
#gate[hidden]{display:none}
#gate.out{opacity:0;pointer-events:none}
body.gated{overflow:hidden}
.gstage{position:absolute;inset:0;display:flex;align-items:center;justify-content:center}
.gframe{position:relative;flex:none;overflow:hidden;background:#001a36}
.gframe>.deck{position:absolute;left:0;top:0;width:1280px;height:720px;transform-origin:0 0;overflow:hidden;background:#001a36}
.iplane{position:absolute;inset:0;overflow:hidden;opacity:0;transition:opacity .6s var(--ease)}
.iplane.ready{opacity:1}
.iplane video,.iplane img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.iplane .iclip{visibility:hidden}
#gate.clip .iplane .iclip{visibility:visible}
.gshade{position:absolute;inset:0;background:linear-gradient(90deg,rgba(0,16,36,.72) 0,rgba(0,16,36,.5) 38%,rgba(0,16,36,0) 62%);pointer-events:none}
.gscene .gform{position:absolute;left:var(--m);top:150px;width:470px;color:#fff;z-index:5}
.gform[data-kind=done]{top:auto;bottom:110px}
.gk{display:block;margin:0 0 8px;font-size:13px;letter-spacing:4px;text-transform:uppercase;font-weight:700;color:#fff;opacity:.9;text-shadow:0 1px 10px rgba(0,10,30,.55)}
.gin{display:block;box-sizing:border-box;width:100%;height:1.14em;margin:0 0 30px;padding:0 0 .06em;background:transparent;border:0;border-bottom:3px solid rgba(255,255,255,.62);border-radius:0;color:#fff;font:900 52px/1.04 "Fira Sans",Arial,sans-serif;letter-spacing:-1.5px;text-transform:uppercase;caret-color:var(--cyan);outline:0;text-shadow:0 2px 22px rgba(0,10,30,.4);-webkit-appearance:none;appearance:none;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gin::placeholder{color:rgba(255,255,255,.34);opacity:1}
.gin:focus{border-bottom-color:var(--cyan)}
.gin.pw{letter-spacing:4px}
.gin.pw::placeholder{letter-spacing:8px}
.gin.static{border-bottom-color:transparent;font-size:64px}
.gin.shake{animation:gshake .42s cubic-bezier(.36,.07,.19,.97) both}
@keyframes gshake{10%,90%{transform:translateX(-2px)}20%,80%{transform:translateX(5px)}30%,50%,70%{transform:translateX(-9px)}40%,60%{transform:translateX(9px)}}
.gact{display:flex;align-items:center;gap:22px;margin-top:6px;min-height:52px}
.gbtn{display:inline-flex;align-items:center;gap:10px;height:52px;padding:0 22px 0 26px;border:0;border-radius:3px;background:var(--cyan);color:#fff;font:700 18px "Fira Sans",Arial,sans-serif;letter-spacing:.3px;cursor:pointer;box-shadow:0 10px 30px rgba(0,10,30,.35)}
.gbtn:hover{background:#0095cc}
.gbtn svg.i{width:20px;height:20px}
.gform.busy .gbtn{opacity:.6;pointer-events:none}
.glink{background:none;border:0;padding:6px 0;color:#fff;font:600 16px "Fira Sans",Arial,sans-serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer;opacity:.88;text-shadow:0 1px 8px rgba(0,10,30,.6)}
.glink:hover{opacity:1;color:var(--cyan)}
.vh{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0 0 0 0)!important;border:0!important;white-space:nowrap!important}
/* stacked (portrait phones): the scene on top, the form below at readable sizes */
#gate.stack{overflow-y:auto;background:#001a36}
#gate.stack .gstage{position:static;display:block}
#gate.stack .gframe{box-sizing:content-box;overflow:visible;background:#001a36}
#gate.stack .gframe>.deck{box-shadow:0 10px 30px rgba(0,0,0,.35)}
#gate.stack .gshade{display:none}
#gate.stack .gform{position:static;width:auto;padding:22px 16px 40px}
#gate.stack .gk{font-size:12px;margin-bottom:6px}
#gate.stack .gin{font-size:34px;letter-spacing:-1px;margin-bottom:22px}
#gate.stack .gin.static{font-size:40px}
#gate.stack .gact{gap:16px;flex-wrap:wrap;min-height:48px}
#gate.stack .gbtn{height:48px;font-size:16px;padding:0 18px 0 22px}

/* ---------------------------------------------------------------- speech bubbles */
/* the words being spoken, over his head; --bk keeps the text readable when the slide is scaled down,
   --tx (tail below) or --ty (tail at the side) points at the head */
.hbub{position:absolute;left:0;top:0;z-index:6;--bk:1;width:max-content;max-width:calc(330px * var(--bk));background:#fff;color:var(--ink);border-radius:calc(14px * var(--bk));padding:calc(10px * var(--bk)) calc(15px * var(--bk)) calc(11px * var(--bk));box-shadow:0 14px 40px rgba(0,10,30,.35);pointer-events:none;opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s .25s;will-change:transform}
.hbub p{margin:0;font:500 calc(19px * var(--bk))/1.32 "Fira Sans",Arial,sans-serif;letter-spacing:0;text-transform:none;text-wrap:balance}
.hbub::after{content:"";position:absolute;left:var(--tx,40px);bottom:calc(-13px * var(--bk));margin-left:calc(-9px * var(--bk));border:calc(9px * var(--bk)) solid transparent;border-top:calc(14px * var(--bk)) solid #fff;border-bottom:0}
.hbub.side-l::after{left:auto;right:calc(-13px * var(--bk));bottom:auto;top:var(--ty,24px);margin:calc(-9px * var(--bk)) 0 0;border:calc(9px * var(--bk)) solid transparent;border-left:calc(14px * var(--bk)) solid #fff;border-right:0}
.hbub.side-r::after{left:calc(-13px * var(--bk));bottom:auto;top:var(--ty,24px);margin:calc(-9px * var(--bk)) 0 0;border:calc(9px * var(--bk)) solid transparent;border-right:calc(14px * var(--bk)) solid #fff;border-left:0}
.hbub.on{opacity:1;visibility:visible;transition:opacity .25s}
.hbub.on.pop p{animation:bpop .3s var(--ease) both}
@keyframes bpop{from{opacity:.2;transform:translateY(3px)}to{opacity:1;transform:none}}
body.nobub .hbub:not(.must){display:none}
.thumb .hbub{display:none}
.nslot .hbub{z-index:7}
.vbg .hbub{z-index:3}

/* ---------------------------------------------------------------- top bar switches (Edit, Bubbles) */
.modes{display:inline-flex;align-items:center;gap:14px;margin:0 6px 0 4px}
.mswitch{display:inline-flex;align-items:center;gap:7px;border:0;background:none;color:var(--chrome-text);font:600 13px "Fira Sans",Arial,sans-serif;cursor:pointer;padding:6px 2px;white-space:nowrap}
.mswitch .tg{font-size:10px;background:var(--chrome-line)}
.mswitch[aria-checked=true] .tg{background:var(--cyan)}
.mswitch[aria-checked=true] .tg .knob{left:1.8em}
.mswitch:hover{color:#fff}
@media (max-width:640px){.modes{gap:8px}.mswitch .ml{font-size:12px}}

/* ---------------------------------------------------------------- overview: every slide, grouped by part */
.pgrid{position:absolute;inset:0;z-index:80;background:#090c10;color:var(--chrome-text);overflow-y:auto;overscroll-behavior:contain;visibility:hidden;opacity:0;transition:opacity .25s,visibility 0s .25s}
.present.show-grid .pgrid{visibility:visible;opacity:1;transition:opacity .25s}
.gtop{position:sticky;top:0;z-index:2;display:flex;align-items:center;gap:14px;padding:12px clamp(16px,3vw,40px);background:rgba(9,12,16,.94);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--chrome-line)}
.gtitle{font-size:12px;letter-spacing:4px;text-transform:uppercase;font-weight:900;color:#fff}
.gmeta{font-size:12px;color:var(--grey);margin-right:auto}
.gbody{padding:8px clamp(16px,3vw,40px) 48px}
.ggroup{margin-top:22px}
.ggroup h2{margin:0 0 12px;font-size:12px;letter-spacing:3px;text-transform:uppercase;font-weight:700;color:var(--chrome-text)}
.ggroup h2 .gpn{color:var(--cyan)}
.ggrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:18px 16px}
.gtile{display:block;text-decoration:none;color:var(--chrome-text);outline-offset:4px}
.gtile .thumb{box-shadow:0 8px 22px rgba(0,0,0,.45);outline:2px solid transparent;outline-offset:2px;transition:outline-color .2s}
.gtile:hover .thumb{outline-color:var(--grey)}
.gtile.on .thumb{outline:3px solid var(--cyan)}
.gcap{display:flex;gap:8px;align-items:baseline;margin-top:8px;font-size:13px;line-height:1.3}
.gcap b{color:var(--cyan);font-variant-numeric:tabular-nums;flex:none}
.gcap span{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
@media (max-width:640px){.ggrid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px 10px}}

/* calculator phases: one row each with what the business group pays */
.seg.vert{display:flex;flex-direction:column;width:100%}
.seg.vert button{flex-direction:row;justify-content:space-between;align-items:baseline;gap:1em;text-align:left;padding:.7em .9em}
.seg.vert button+button{border-left:0;border-top:2px solid var(--blue)}
.seg.vert button small{font-size:1.05em;letter-spacing:.2px;text-transform:none;text-align:right}
.calc-sel{font:inherit;font-size:.95em;font-weight:700;color:var(--blue);border:0;border-bottom:2px dotted var(--cyan);background:transparent;padding:0 .1em;max-width:11em;cursor:pointer}

@media (prefers-reduced-motion:reduce){.hbub.on.pop p,.gin.shake{animation:none}#gate{transition:none}}
.calc-plats{margin-top:.9em;font-size:.8em}
.calc-plats .blabel{font-size:.78em}
.cplat{border-collapse:collapse;width:100%}
.cplat th,.cplat td{padding:.2em .25em;border-bottom:1px solid var(--line);font-weight:300;text-align:left;line-height:1.25;white-space:nowrap}
.cplat th{font-weight:400;white-space:normal}
.cplat td.num{text-align:right;font-variant-numeric:tabular-nums}
.cplat td.x{color:var(--grey);text-align:center;padding:0 .1em}
.cplat td.u{font-size:.8em;color:var(--grey)}
.cplat tr:not(.on){opacity:.62}
.cplat tr.on th{font-weight:700}
/* bubbles over the small per-slide clips wrap earlier, so they cover less of the slide */
.nslot .hbub{max-width:calc(250px * var(--bk))}
.nslot .hbub p{font-size:calc(17px * var(--bk))}
/* the name and code word fields fade in when Julian starts to speak */
.gscene .gform[data-kind=ask]{animation:gfade .6s var(--ease) var(--gdelay,0s) both}
@keyframes gfade{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.gscene .gform[data-kind=ask]{animation:none}}
.gtitle{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;min-width:0}
.gmeta{white-space:nowrap}
@media (max-width:480px){.gtitle{letter-spacing:2.5px;font-size:11px}.gmeta{display:none}.gtop .btn{margin-left:auto}}
