/* Light theme with Waterloo gold accents, layered over reveal's white theme */
:root{
  --bg:#FBFBF8; --panel:#FFFFFF; --panel-2:#F3F3EE; --line:#DEDED8; --text:#141414; --muted:#5E5E68;
  --gold:#FFD54F;        /* fills, highlights, the trail dot */
  --gold-deep:#E3B300;   /* lines, arrows, progress bar */
  --gold-text:#8A5B00;   /* accent text on white, readable */
  --tfo:#D97706; --com:#0F766E; --dff:#4338CA; --hop:#7E22CE; --val:#C2410C; --reg:#4B5563; --conf:#6B7280;
  --font:-apple-system,BlinkMacSystemFont,"Helvetica Neue",Inter,system-ui,sans-serif;
  --mono:"SF Mono",Menlo,Consolas,monospace;
}
.reveal-viewport{background:var(--bg)}
.reveal{font-family:var(--font);color:var(--text);font-size:30px;line-height:1.35}
.reveal h1,.reveal h2,.reveal h3{font-family:var(--font);color:var(--text);text-transform:none;letter-spacing:-0.015em;font-weight:700;text-shadow:none}
.reveal h1{font-size:2.1em;line-height:1.1}
.reveal h2{font-size:1.55em;margin:0 0 .6em}
.reveal h3{font-size:1.05em;margin:0 0 .3em}
.reveal p{margin:0 0 .5em}
.reveal .slides section{text-align:left;padding:60px 80px;box-sizing:border-box;height:100%}
.reveal .slides section.center{display:flex;flex-direction:column;justify-content:center}
.reveal .slides section.center-all{display:flex;flex-direction:column;justify-content:center;align-items:center;text-align:center}
.reveal strong{color:var(--gold-text);font-weight:700}
.gold{color:var(--gold-text)} .muted{color:var(--muted)} .small{font-size:.7em} .big{font-size:1.4em}
.mark{background:linear-gradient(transparent 55%,var(--gold) 55%);padding:0 .1em}
.hook{font-size:1.6em;font-weight:600;line-height:1.2;max-width:24ch}
.hook + .hook{margin-top:.5em}
.kicker{font-size:.55em;letter-spacing:.16em;text-transform:uppercase;color:var(--gold-text);margin:0 0 .8em;font-weight:700}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:48px;align-items:center}
.grid-3{display:grid;grid-template-columns:repeat(3,1fr);gap:28px}
.grid-5{display:grid;grid-template-columns:repeat(5,1fr);gap:22px}
.card{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:24px 28px;box-sizing:border-box;box-shadow:0 2px 10px rgba(20,20,20,.04)}
.card.is-gold{border-color:var(--gold-deep);box-shadow:0 0 0 2px var(--gold), 0 6px 24px rgba(227,179,0,.18)}
.chip{display:inline-block;font-size:.5em;font-weight:700;letter-spacing:.06em;padding:.22em .7em;border-radius:999px;color:#fff;vertical-align:middle;margin-right:.35em;line-height:1.2;font-family:var(--mono)}
.chip--tfo{background:var(--tfo)} .chip--com{background:var(--com)} .chip--dff{background:var(--dff)}
.chip--hop{background:var(--hop)} .chip--val{background:var(--val)} .chip--reg{background:var(--reg)} .chip--conf{background:var(--conf)}
.chip--deploy{background:transparent;border:2px solid var(--muted);color:var(--muted)}
.chip--pli{background:var(--gold);border:2px solid var(--gold);color:var(--text)}
/* diagrams */
.diagram{width:100%;height:auto;display:block;overflow:visible}
.diagram text{font-family:var(--font);fill:var(--text);font-size:34px}
.diagram text.t-muted{fill:var(--muted)}
.diagram text.t-gold{fill:var(--gold-text);font-weight:700}
.diagram text.t-small{font-size:28px}
.diagram .box{fill:var(--panel);stroke:var(--line);stroke-width:2.5;rx:18}
.diagram .box-gold{fill:#FFF7D6;stroke:var(--gold-deep);stroke-width:3;rx:18}
.diagram .arrow{fill:var(--gold-deep)}
.diagram .flow{stroke:var(--gold-deep);stroke-width:5;fill:none;stroke-linecap:round;stroke-dasharray:1600;stroke-dashoffset:1600;transition:stroke-dashoffset 1.1s ease}
.diagram .step{opacity:0;transition:opacity .5s ease}
.diagram.is-p .step-p,.diagram.is-l .step-l,.diagram.is-i .step-i{opacity:1}
.diagram.is-p .flow-p,.diagram.is-l .flow-l,.diagram.is-i .flow-i{stroke-dashoffset:0}
.diagram .lbl-classic,.diagram .lbl-web3{transition:opacity .6s ease}
.diagram .lbl-web3{opacity:0}
.diagram.is-web3 .lbl-classic{opacity:0}
.diagram.is-web3 .lbl-web3{opacity:1}
/* title background graph */
.bg-graph{position:absolute;inset:0;width:100%;height:100%;opacity:.9;pointer-events:none;z-index:0}
.bg-graph line{stroke:#E4E4DC;stroke-width:1.5}
.bg-graph circle{fill:#D2D2CA}
.bg-graph circle.hot{fill:var(--gold-deep);filter:drop-shadow(0 0 6px var(--gold))}
.bg-graph g{animation:drift 40s ease-in-out infinite alternate}
@keyframes drift{from{transform:translate(0,0)}to{transform:translate(-40px,20px)}}
.title .content{position:relative;z-index:1}
.title h1{font-size:2.7em;max-width:18ch;margin-bottom:.4em}
.title .sub{font-size:1.15em;color:var(--muted);max-width:40ch;margin-bottom:1.2em}
.title .meta{font-size:.8em;color:var(--muted);line-height:1.5}
.title .meta b{color:var(--text);font-weight:600}
/* Mallory trail */
#mallory{font-family:var(--font);position:fixed;left:0;right:0;bottom:22px;height:40px;pointer-events:none;z-index:50}
#mallory .trail{position:absolute;left:80px;right:80px;top:19px;height:2px;background:var(--line)}
#mallory .stop{position:absolute;top:15px;width:10px;height:10px;border-radius:50%;background:#C9C9C2;transform:translateX(-50%)}
#mallory .stop-label{position:absolute;top:30px;font-size:13px;letter-spacing:.08em;text-transform:uppercase;color:#8E8E98;transform:translateX(-50%);white-space:nowrap}
#mallory .dot{position:absolute;top:-30px;width:52px;height:52px;transform:translateX(-50%);transition:left .9s cubic-bezier(.2,.8,.2,1);filter:drop-shadow(0 3px 6px rgba(0,0,0,.25))}
#mallory .dot svg{width:100%;height:100%;display:block}
#mallory.is-moving .dot svg{animation:hop .9s cubic-bezier(.2,.8,.2,1)}
@keyframes hop{0%{transform:translateY(0) rotate(0)}35%{transform:translateY(-16px) rotate(-8deg)}70%{transform:translateY(-6px) rotate(5deg)}100%{transform:translateY(0) rotate(0)}}
.av{display:inline-block;vertical-align:middle}
.av-inline{width:1.2em;height:1.2em;margin:0 .1em;vertical-align:-.25em}
.av-hook{width:1.1em;height:1.1em;margin-right:.25em;vertical-align:-.12em}
#mallory.is-hidden{display:none}
.reveal .logo-uw{position:absolute;bottom:52px;left:80px;height:152px;z-index:1}
.reveal .logo-ncc{position:absolute;bottom:44px;right:80px;height:164px;z-index:1;border-radius:50%}
.reveal aside.notes{display:none}
.reveal .progress{color:var(--gold-deep);height:4px;background:rgba(0,0,0,.06)}
/* slide 5 heat-strip */
table.heat{border-collapse:separate;border-spacing:7px 7px;font-size:.72em;margin:0 auto}
table.heat th{font-weight:500;color:var(--muted);text-align:left;white-space:nowrap;padding:0 14px 0 0}
table.heat thead th{position:relative;width:66px;height:190px;padding:0}
table.heat thead th span{position:absolute;left:22px;bottom:6px;transform:rotate(-55deg);transform-origin:left bottom;white-space:nowrap;font-size:1em}
table.heat thead th.grp-a span{color:var(--text)}
table.heat td{width:66px;height:38px;padding:0}
table.heat td i{display:block;width:100%;height:100%;border-radius:6px;background:var(--panel-2);border:1px solid var(--line)}
table.heat td.on i{background:#6B6B78;border-color:#6B6B78}
table.heat tr.ours th{color:var(--text);font-weight:700}
table.heat tr.ours td.on i{background:var(--gold);border-color:var(--gold-deep);box-shadow:0 0 10px rgba(227,179,0,.35)}
table.heat tr.ours td i{transform:scaleX(0);transform-origin:left;transition:transform .5s ease}
.is-ours table.heat tr.ours td i{transform:scaleX(1)}
/* slide 2: the paradox */
.para{display:grid;grid-template-columns:670px 1fr;gap:44px;align-items:center;width:100%}
.para .hook{font-size:1.3em;max-width:21ch}
.para .paradox{max-height:820px}
.paradox text{font-family:var(--font);font-size:22px;fill:var(--text)}
.paradox .mono{font-family:var(--mono);font-size:19px;fill:var(--text)}
.paradox .url{font-family:var(--mono);font-size:18px;fill:var(--muted)}
.paradox .hd{font-size:17px;letter-spacing:.14em;fill:#9A9A93;font-weight:700}
.paradox .amt{font-size:22px;font-weight:700}
.paradox .age{font-size:19px;fill:#9A9A93}
.paradox .tag{font-size:18px;font-weight:800;letter-spacing:.08em}
.paradox .cap{font-size:23px;fill:var(--muted)}
.paradox .q{font-size:46px;font-weight:800;fill:var(--gold-text)}
.paradox .mapcap{font-size:26px;font-weight:700;fill:var(--gold-text)}
.paradox .win{opacity:0;transform:scale(.97);transform-box:fill-box;transform-origin:center;transition:opacity .4s ease,transform .5s cubic-bezier(.2,.9,.3,1.1)}
.paradox.is-p1 .win{opacity:1;transform:none}
.paradox .r{opacity:0;transition:opacity .45s ease}
.paradox.is-p1 .r0,.paradox.is-p2 .r{opacity:1}
.paradox .rows{transition:opacity .6s ease}
.paradox.is-p3 .rows{opacity:.13}
.paradox .tree .e{fill:none;stroke:#E3B300;stroke-width:2.5;stroke-dasharray:300;stroke-dashoffset:300;transition:stroke-dashoffset .7s ease}
.paradox .tree .n{fill:#D97706;opacity:0;transition:opacity .4s ease}
.paradox .tree .gone{opacity:0;transition:opacity .5s ease}
.paradox.is-p3 .tree .e{stroke-dashoffset:0}
.paradox.is-p3 .tree .n,.paradox.is-p3 .tree .gone{opacity:1}
.paradox .eyes,.paradox .inv{opacity:0;transform:translateY(14px);transform-box:fill-box;transform-origin:center;transition:opacity .45s ease,transform .5s ease}
.paradox.is-p2 .eyes,.paradox.is-p3 .inv{opacity:1;transform:none}
.paradox .eyes .eye{animation:blink 5s ease-in-out infinite;transform-box:fill-box;transform-origin:center}
.paradox .mapover{opacity:0;transition:opacity .5s ease}
.paradox.is-p4 .mapover{opacity:1}
@keyframes blink{0%,92%,100%{transform:scaleY(1)}96%{transform:scaleY(.1)}}
html.final .paradox .eyes .eye{animation:none}

/* slide 3: the washing machine */
.wash .hd{font-size:46px;font-weight:700;fill:var(--text)}
.wash .sub{font-size:30px;fill:var(--muted)}
.wash .capg{font-size:32px;font-weight:700;fill:var(--gold-text)}
.wash .disp{font-family:var(--mono);font-size:26px;fill:#FFD54F;letter-spacing:.14em}
.wash .say-t{font-size:30px;fill:var(--text);font-weight:600}
.wash .guide{fill:none;stroke:var(--gold-deep);stroke-width:5;stroke-dasharray:14 12;stroke-linecap:round;opacity:.75}
.wash .ghead{fill:var(--gold-deep);opacity:.75}
.wash .lamp{fill:#DEDED8;stroke:#CFCFC6;stroke-width:2}
.wash.is-l .lamp{fill:var(--gold);stroke:var(--gold-deep);animation:lampblink 1.6s ease-in-out infinite}
.wash .drum{transform-box:fill-box;transform-origin:center}
.wash.is-l .drum{animation:spin 4s linear infinite}
.wash .up{transform-box:fill-box;transform-origin:center}
.wash.is-l .up{animation:spinback 4s linear infinite}
.wash .load{opacity:0}
.wash.is-p .load{animation:fadein .5s ease 1s forwards}
.wash .bagfly{transform-box:fill-box;transform-origin:center}
.wash.is-p .bagfly{animation:toss 1.25s cubic-bezier(.35,.05,.6,1) forwards}
.wash .guide,.wash .ghead{opacity:0}
.wash.is-p .guide,.wash.is-p .ghead{animation:fadeout 1.6s ease forwards}
.wash .sud{fill:#FFFFFF;stroke:#CFE3E0;stroke-width:3;opacity:0}
.wash.is-l .sud{animation:rise 3s ease-in-out infinite}
.wash .hang{transform-box:fill-box;transform-origin:top center}
.wash.is-i .hang{animation:sway 4.5s ease-in-out infinite}
.wash .say{transform-box:fill-box;transform-origin:bottom left}
.wash.is-l .say{animation:pop .45s cubic-bezier(.2,.9,.3,1.5) backwards}
@keyframes spin{to{transform:rotate(360deg)}}
@keyframes spinback{to{transform:rotate(-360deg)}}
@keyframes fadein{to{opacity:1}}
@keyframes fadeout{0%{opacity:0}25%{opacity:.75}100%{opacity:0}}
@keyframes toss{0%{transform:translate(0,0) scale(1);opacity:1}
  60%{transform:translate(320px,-92px) scale(.85);opacity:1}
  100%{transform:translate(578px,-18px) scale(.18);opacity:0}}
@keyframes rise{0%{opacity:0;transform:translateY(0)}20%{opacity:1}100%{opacity:0;transform:translateY(-96px)}}
@keyframes sway{0%,100%{transform:rotate(-2.5deg)}50%{transform:rotate(2.5deg)}}
@keyframes lampblink{0%,100%{opacity:1}50%{opacity:.45}}
html.final .wash .lamp,html.final .wash .drum,html.final .wash .up,html.final .wash .sud,html.final .wash .hang,html.final .wash .say{animation:none}
html.final .wash .load{animation:none!important;opacity:1}
html.final .wash .bagfly{animation:none!important;opacity:0}
html.final .wash .guide,html.final .wash .ghead{animation:none!important;opacity:0}
html.final .wash.is-l .sud{opacity:1}

/* slide 6 funnel */
.funnel{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:10px}
.funnel .row{display:grid;grid-template-columns:230px 1fr;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 30px;box-sizing:border-box;box-shadow:0 2px 10px rgba(20,20,20,.04)}
.funnel .row .n{font-size:1.5em;font-weight:700;color:var(--gold-text);font-variant-numeric:tabular-nums}
.funnel .row .n.small{font-size:.9em;color:var(--text)}
.funnel .row.last{border-color:var(--gold-deep);background:#FFF7D6}
/* slide 4 enablers */
.enablers{display:flex;flex-direction:column;gap:26px}
.enablers .row{display:grid;grid-template-columns:96px 1fr;gap:26px;align-items:center}
.enablers .row .ic{width:96px;height:96px;border-radius:24px;background:#FFF7D6;border:1px solid var(--gold);display:flex;align-items:center;justify-content:center}
.enablers .row .ic svg{width:52px;height:52px;stroke:var(--gold-text);fill:none;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.enablers .row h3{margin:0}
.enablers .row p{margin:0;color:var(--muted);font-size:.9em}
/* slide 7 ladder */
/* slide 7: the ladder + the record */
.rl-wrap{display:grid;grid-template-columns:1fr 860px;gap:36px;align-items:start;margin-top:4px}
.rl-wrap .lad,.rl-wrap .rec{width:100%;height:auto;display:block;overflow:visible}
.lad .rail{stroke:var(--line);stroke-width:6;stroke-linecap:round}
.lad .rung rect{fill:var(--panel);stroke:var(--line);stroke-width:2.5;transition:fill .5s,stroke .5s}
.lad .rung text.name{font-size:34px;font-weight:700;fill:var(--text)}
.lad .rung text.def{font-size:26px;fill:var(--muted);opacity:0;transition:opacity .5s}
.lad .rung .ex{opacity:0;transition:opacity .5s}
.lad .rung .ex rect{fill:#F3F3EE;stroke:none}
.lad .rung .ex text{font-size:22px;fill:var(--muted)}
.rl-wrap.is-r1 .rung-1 rect,.rl-wrap.is-r2 .rung-2 rect,.rl-wrap.is-r3 .rung-3 rect,.rl-wrap.is-r4 .rung-4 rect{fill:#FFF7D6;stroke:var(--gold-deep)}
.rl-wrap.is-r1 .rung-1 .def,.rl-wrap.is-r2 .rung-2 .def,.rl-wrap.is-r3 .rung-3 .def,.rl-wrap.is-r4 .rung-4 .def,
.rl-wrap.is-r1 .rung-1 .ex,.rl-wrap.is-r2 .rung-2 .ex,.rl-wrap.is-r3 .rung-3 .ex,.rl-wrap.is-r4 .rung-4 .ex{opacity:1}
.lad .mal{transition:transform .8s cubic-bezier(.2,.8,.2,1)}
.rl-wrap.is-r2 .mal{transform:translateY(-170px)}
.rl-wrap.is-r3 .mal{transform:translateY(-340px)}
.rl-wrap.is-r4 .mal{transform:translateY(-510px)}
.rec text{font-family:var(--font);fill:var(--text)}
.rec .mono{font-family:var(--mono);font-size:24px;fill:var(--muted);letter-spacing:.04em}
.rec .tag{font-size:22px;fill:var(--muted)}
.rec .lb{font-size:21px;fill:#9A9A93;font-weight:700;letter-spacing:.13em}
.rec .val{font-size:26px;fill:var(--muted)}
.rec .note{font-size:23px;fill:var(--muted)}
.rec .addr{font-family:var(--mono);font-size:30px}
.rec .amt{font-size:40px;font-weight:700}
.rec .hid{font-family:var(--mono);font-size:22px;fill:#FFFFFF;letter-spacing:.16em}
.rec .stamp{font-size:28px;font-weight:800;fill:#0F766E;letter-spacing:.08em}
.rec .rd{font-size:28px}
.rec .v{opacity:0;transition:opacity .45s ease}
.rl-wrap.is-r1 .v-name,.rl-wrap.is-r1 .v-addr,.rl-wrap.is-r1 .v-path,.rl-wrap.is-r1 .v-amt,.rl-wrap.is-r1 .rd1{opacity:1}
.rl-wrap.is-r2 .v-addr,.rl-wrap.is-r2 .rd1{opacity:0}
.rl-wrap.is-r2 .v-crowd,.rl-wrap.is-r2 .rd2{opacity:1}
.rl-wrap.is-r3 .v-crowd,.rl-wrap.is-r3 .v-path,.rl-wrap.is-r3 .rd2{opacity:0}
.rl-wrap.is-r3 .v-sredact,.rl-wrap.is-r3 .v-predact,.rl-wrap.is-r3 .v-proof,.rl-wrap.is-r3 .rd3{opacity:1}
.rl-wrap.is-r4 .v-amt,.rl-wrap.is-r4 .rd3{opacity:0}
.rl-wrap.is-r4 .v-aredact,.rl-wrap.is-r4 .rd4{opacity:1}
.foot{margin:2px 0 0;font-size:.6em;color:var(--muted);line-height:1.35}
/* slide 8 lenses */
.lens{display:grid;grid-template-columns:repeat(3,1fr);gap:32px;margin-top:10px}
.lens .card{min-height:430px;position:relative;transition:border-color .5s}
.lens .card p.kicker{font-size:.55em;margin-bottom:.4em;color:var(--gold-text)}
.lens .card h3{font-size:1.25em}
.lens .card p{color:var(--muted);font-size:.95em}
.lens .card ul{margin:.3em 0 0 1em;padding:0;font-size:1em;color:var(--text)}
.lens .card li{margin:.15em 0}
.lens .card.is-gap{border:3px dashed var(--gold-deep);background:#FFF7D6}
.lens .card .tag{position:absolute;right:24px;top:22px;font-size:.55em;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-text)}
/* slide 9 skeleton */
.skel{display:flex;flex-direction:column;align-items:center;gap:46px;width:100%}
.skel .node{display:flex;flex-direction:column;align-items:center;justify-content:center;background:var(--panel);border:2px solid var(--line);border-radius:18px;padding:22px 40px;font-weight:700;font-size:1.15em;text-align:center;box-shadow:0 2px 10px rgba(20,20,20,.04);box-sizing:border-box}
.skel .node .t{display:block}
.skel .node .s{display:block;font-weight:500;color:var(--muted);font-size:.6em;margin-top:.2em}
.skel .node.root{border-color:var(--text);font-size:1.4em}
.skel .row{display:flex;gap:60px;justify-content:center;width:100%}
.skel .row > .node{flex:1 1 0;min-width:0}
.skel .col{display:flex;flex-direction:column;align-items:stretch;gap:36px;flex:1}
.skel .node.strat{border-color:var(--gold-deep);background:#FFF7D6}
.skel .node.pet{border-color:var(--dff)}
.skel .node.infra{border-color:var(--tfo)}
.skel .vline{width:3px;height:40px;background:var(--line)}
/* slide 4: enablers with a stage */
.enab-wrap{grid-template-columns:640px 1fr}
.enab-wrap .enablers{gap:12px}
.enab-wrap .enablers .row{padding:12px 18px;border-radius:16px;border:1px solid transparent;transition:background .4s,border-color .4s,box-shadow .4s}
.enab-wrap .enablers .row.is-current{background:#FFF7D6;border-color:var(--gold-deep);box-shadow:0 0 0 2px var(--gold)}
.enab-wrap .enablers .row .ic{width:84px;height:84px;border-radius:20px}
.enab-wrap .enablers .row{grid-template-columns:84px 1fr;gap:22px}
.enab-wrap .enablers .row p{font-size:.82em}
.tension{margin:16px 0 0;padding-left:20px;border-left:6px solid var(--gold);color:var(--gold-text);font-weight:700;font-size:.84em;max-width:44ch}
.stage.is-e1 .v-1,.stage.is-e2 .v-2,.stage.is-e3 .v-3,.stage.is-e4 .v-4{opacity:1}
.stage.is-e1 .idle,.stage.is-e2 .idle,.stage.is-e3 .idle,.stage.is-e4 .idle{opacity:0}
.stage .v-1 text.addr{font-family:var(--mono);font-size:46px;fill:var(--text)}
.stage .v-1 text.qq{font-size:66px;font-weight:800;fill:var(--gold-text)}

/* slide 8: three lenses over one journey */
.lensw{margin-top:2px}
.lensw .lensview{width:100%;height:auto;display:block;overflow:visible}
.lensview text{font-family:var(--font);fill:var(--text)}
.lensview .gl{font-size:24px;fill:var(--muted)}
.lensview .lcap{font-size:24px;fill:var(--gold-text);font-weight:700}
.lensview .lrow{font-family:var(--mono);font-size:22px;fill:var(--text)}
.lensview .lwarn{font-size:24px;fill:#B4232B;font-weight:600}
.lensview .lq{font-size:74px;font-weight:800;fill:var(--gold-text)}
.lensview .stub{stroke:#B9B9B0;stroke-width:4;fill:none;stroke-dasharray:9 9;stroke-linecap:round}
.lensview .lens{opacity:0;transform:translateY(-38px) scale(.92);transform-box:fill-box;transform-origin:center;transition:opacity .4s ease,transform .55s cubic-bezier(.2,.85,.3,1.15)}
.lensw.is-l1 .ln1,.lensw.is-l2 .ln2,.lensw.is-l3 .ln3{opacity:1;transform:none}
.lens3{display:grid;grid-template-columns:repeat(3,1fr);gap:34px;margin-top:14px}
.lens3 .card{position:relative;padding:18px 24px;opacity:.4;transition:opacity .45s,border-color .45s,background .45s}
.lens3 .card p.kicker{font-size:.5em;margin-bottom:.3em;color:var(--gold-text)}
.lens3 .card h3{font-size:1.1em;margin-bottom:.15em}
.lens3 .card > p{color:var(--muted);font-size:.8em;margin-bottom:.35em}
.lens3 .card ul{margin:0 0 0 1em;padding:0;font-size:.8em;color:var(--text)}
.lens3 .card li{margin:.1em 0}
.lens3 .card .tag{position:absolute;right:20px;top:18px;font-size:.5em;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--gold-text)}
.lensw.is-l1 .c-l1,.lensw.is-l2 .c-l2,.lensw.is-l3 .c-l3{opacity:1}
.lensw.is-l3 .c-l3{border:3px dashed var(--gold-deep);background:#FFF7D6}

/* slide 10 strategy cards */
.strat-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;margin-top:6px}
.strat-grid .card{min-height:250px;position:relative;border-top:8px solid var(--line)}
.strat-grid .card.c-tfo{border-top-color:var(--tfo)} .strat-grid .card.c-com{border-top-color:var(--com)} .strat-grid .card.c-dff{border-top-color:var(--dff)}
.strat-grid .card.c-hop{border-top-color:var(--hop)} .strat-grid .card.c-val{border-top-color:var(--val)} .strat-grid .card.c-reg{border-top-color:var(--reg)}
.strat-grid .card .num{position:absolute;right:24px;top:18px;font-size:1.6em;font-weight:800;color:var(--line)}
.strat-grid .card h3{font-size:1.05em;margin:.1em 0 .25em;max-width:12ch}
.strat-grid .card p{font-size:.95em;color:var(--text);margin:0 0 .6em;font-style:italic}
.strat-grid .card .stage{font-size:.8em;color:var(--muted)}
/* slide 11 DRT */
.drt{display:grid;grid-template-columns:1fr 1fr 1fr;gap:26px;margin-top:4px}
.drt .card{padding:20px 24px;min-height:560px}
.drt .card h3{font-size:1em;margin-bottom:.2em}
.drt .say{font-size:.75em;background:var(--panel-2);border-radius:12px;padding:10px 14px;margin:.3em 0 .5em;color:var(--text)}
.drt .say b{color:var(--gold-text)}
.drt .card > svg{width:100%;height:auto;display:block}
.drt .card > svg text{font-family:var(--font);font-size:26px;fill:var(--text)}
.drt .card > svg{margin:6px 0 4px}
.drt .card > svg text.bn{fill:#fff;font-weight:800}
.drt .card > svg .addr{fill:var(--panel);stroke:var(--line);stroke-width:2;rx:10}
.drt .card > svg .arr{stroke:var(--text);stroke-width:3.5;fill:none;marker-end:url(#ah)}
.drt .card > svg .dash{stroke:var(--muted);stroke-width:2.5;stroke-dasharray:8 8;fill:none}
.drt .card > svg .coin{font-size:24px;font-weight:700}
.drt .inv{font-size:.72em;color:var(--muted);font-style:italic;margin-top:.5em;border-left:4px solid var(--gold);padding-left:12px}
/* slide 12 labels */
.labels{display:grid;grid-template-columns:1fr 1fr;gap:40px;margin-top:8px}
.labels .card h3{font-size:1.3em;margin-bottom:.4em}
.labels .card h3 small{display:block;font-size:.55em;color:var(--muted);font-weight:500;margin-top:.15em}
.labels .card ul{list-style:none;margin:0;padding:0}
.labels .card li{display:flex;align-items:center;gap:14px;padding:12px 0;border-top:1px solid var(--line);font-size:.95em}
.labels .card li .chip{margin:0}
.axes{display:flex;gap:26px;margin-top:26px;align-items:center}
.axes .ax{flex:1;background:#FFF7D6;border:2px solid var(--gold-deep);border-radius:14px;padding:16px 24px;font-weight:700}
.axes .ax small{display:block;font-weight:500;color:var(--muted);font-size:.7em}
.axes .plus{font-size:1.6em;color:var(--muted)}
/* slide 13 blueprints */
.bp{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:6px}
.bp .card{border-left:10px solid var(--line);padding:20px 26px}
.bp .card.b-tfo{border-left-color:var(--tfo)} .bp .card.b-com{border-left-color:var(--com)} .bp .card.b-dff{border-left-color:var(--dff)} .bp .card.b-conf{border-left-color:var(--conf)}
.bp .card h3{font-size:.95em;margin:0 0 .4em;color:var(--muted);font-weight:600;letter-spacing:.02em}
.bp .card .chips{display:flex;flex-wrap:wrap;gap:10px 6px;margin-bottom:.5em}
.bp .card .chips .chip{font-size:.62em;margin:0}
.bp .card p{font-size:.9em;margin:0;color:var(--text)}
/* slide 14 deployment grid */
table.deploy{border-collapse:collapse;width:100%;font-size:.78em;margin-top:4px}
table.deploy td{padding:13px 14px;border-top:1px solid var(--line);vertical-align:middle}
table.deploy td.lbl{width:430px;white-space:nowrap}
table.deploy .lblrow{display:flex;align-items:center;gap:16px}
table.deploy .dg{flex:0 0 112px}
table.deploy .dg svg{width:112px;height:88px;display:block;overflow:visible}
.dg .blk{fill:#F3F3EE;stroke:#B9B9B0;stroke-width:2.2}
.dg .blk.on{fill:#FFF3CF;stroke:var(--gold-deep)}
.dg .box{fill:#FFF3CF;stroke:var(--gold-deep);stroke-width:2.4}
.dg .opbox{fill:#F5F5EF;stroke:#4A4A55;stroke-width:2.4}
.dg .ln{stroke:#4A4A55;stroke-width:2.4;fill:none;stroke-linecap:round}
.dg .dash{stroke:#B9B9B0;stroke-width:2.2;stroke-dasharray:4 4;fill:none}
.dg .lock{fill:var(--gold-text)}
table.deploy td.lbl b{display:block;font-size:1.05em}
table.deploy td.lbl small{display:block;color:var(--muted);font-size:.78em;line-height:1.25;white-space:normal}
table.deploy .tool{display:inline-flex;align-items:center;gap:4px;margin:4px 16px 4px 0;white-space:nowrap}
table.deploy .tool .chip{font-size:.55em;margin:0;padding:.2em .5em}
table.deploy .tool .chip + .chip{margin-left:-2px}
/* slide 15 timeline */
.tl text{font-family:var(--font);font-size:28px;fill:var(--text)}
.tl text.yr{font-weight:800;font-size:34px}
.tl text.who{font-weight:700;font-size:30px}
.tl text.what{fill:var(--muted);font-size:26px}
.tl .axis{stroke:var(--line);stroke-width:5;stroke-linecap:round}
.tl .ev{opacity:0;transition:opacity .5s}
.tl.is-cust .ev-cust,.tl.is-code .ev-code{opacity:1}
.tl .ev-cust circle{fill:#6B6B78} .tl .ev-code circle{fill:var(--dff)}
.tl .ev line{stroke:var(--line);stroke-width:3}
.tl .verdict{opacity:0;transition:opacity .6s;fill:var(--gold-text);font-weight:800;font-size:44px}
.tl.is-code .verdict{opacity:1}
/* slide 16 infrastructures */
.infra{display:grid;grid-template-columns:repeat(5,1fr);gap:20px;margin-top:6px}
.infra .card{padding:18px 20px;min-height:200px;transition:border-color .5s,box-shadow .5s,background .5s}
.infra .card h3{font-size:.85em;margin:0 0 .5em;min-height:2.4em}
.infra .card .nums{display:flex;gap:5px;flex-wrap:wrap;margin-bottom:.5em}
.infra .card .n{width:32px;height:32px;border-radius:50%;color:#fff;font-size:.6em;font-weight:800;display:flex;align-items:center;justify-content:center;font-family:var(--mono)}
.n-1{background:var(--tfo)} .n-2{background:var(--com)} .n-3{background:var(--dff)} .n-4{background:var(--hop)} .n-5{background:var(--val)} .n-6{background:var(--reg)}
.infra .card .chip--pli{font-size:.5em}
.infra.is-spot .card.spot{border-color:var(--gold-deep);background:#FFF7D6;box-shadow:0 0 0 2px var(--gold)}
.infra.is-spot .card:not(.spot){opacity:.55}
.legend{display:flex;gap:18px;flex-wrap:wrap;margin-top:18px;font-size:.62em;color:var(--muted);align-items:center}
.legend .n{width:26px;height:26px;border-radius:50%;color:#fff;font-weight:800;display:inline-flex;align-items:center;justify-content:center;font-size:.8em;font-family:var(--mono);margin-right:4px}
/* speech and thought bubbles */
.bub{display:flex;align-items:flex-end;gap:14px;max-width:620px}
.bub > .av{width:76px;height:76px;flex:none}
.bub .txt .av{width:1.2em;height:1.2em;vertical-align:-.25em;margin:0 .05em}
.bub .txt{position:relative;background:#fff;border:2.5px solid var(--text);border-radius:20px;padding:14px 22px;font-size:.85em;line-height:1.3;color:var(--text)}
.bub .txt:before{content:"";position:absolute;left:-12px;bottom:22px;width:18px;height:18px;background:#fff;border-left:2.5px solid var(--text);border-bottom:2.5px solid var(--text);transform:rotate(45deg)}
.bub.right{flex-direction:row-reverse}
.bub.right .txt:before{left:auto;right:-12px;border-left:0;border-bottom:0;border-right:2.5px solid var(--text);border-top:2.5px solid var(--text)}
.bub.think .txt{background:var(--panel-2);border-style:dashed;border-radius:34px}
.bub.think .txt:before{left:-22px;bottom:12px;width:16px;height:16px;border-radius:50%;background:var(--panel-2);border:2.5px dashed var(--text);transform:none}
.bub.think .txt:after{content:"";position:absolute;left:-38px;bottom:-2px;width:9px;height:9px;border-radius:50%;background:var(--panel-2);border:2.5px dashed var(--text)}
.bub.think.right .txt:before{left:auto;right:-22px}
.bub.think.right .txt:after{left:auto;right:-38px}
.bub.pin{position:absolute;right:80px;bottom:120px;z-index:2}
.bub.pin.left{right:auto;left:80px}
.bub.fragment.visible .txt{animation:pop .45s cubic-bezier(.2,.9,.3,1.4)}
@keyframes pop{from{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}
.bub.sm > .av{width:56px;height:56px} .bub.sm .txt{font-size:.75em;padding:10px 16px}
/* size bumps */
table.deploy{font-size:.88em}
.infra .card{min-height:250px} .infra .card h3{font-size:.95em} .infra .card .n{width:36px;height:36px;font-size:.66em}
.bp .card{min-height:260px;padding:26px 30px} .bp .card p{font-size:1em} .bp .card .chips .chip{font-size:.7em}
.drt .card{min-height:600px}
.drt .bub{max-width:none;margin:.3em 0 .6em}
.drt .bub .txt{font-size:.72em;padding:10px 16px}
.drt .bub > .av{width:56px;height:56px}
/* slide 17 DeFi loop */
.loop text{font-family:var(--font);font-size:30px;fill:var(--text)}
.loop text.lab{font-weight:700;font-size:29px}
.loop text.sub{fill:var(--muted);font-size:26px}
.loop .node rect{fill:var(--panel);stroke:var(--line);stroke-width:2.5}
.loop .ring{fill:none;stroke:var(--gold-deep);stroke-width:7;stroke-linecap:round;stroke-dasharray:28 22;animation:ringspin 6s linear infinite}
.loop .dir{fill:var(--gold-deep)}
.loop .origin{transition:opacity .6s}
.loop.is-c1 .origin{opacity:.6} .loop.is-c2 .origin{opacity:.34} .loop.is-c3 .origin{opacity:.12}
.loop .lyr{fill:none;stroke:#FFE7A0;stroke-width:18;opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(.72);transition:opacity .5s ease,transform .6s cubic-bezier(.2,.9,.3,1.2)}
.loop.is-c1 .lyr-1,.loop.is-c2 .lyr-2,.loop.is-c3 .lyr-3{opacity:1;transform:none}
.loop .trav{filter:drop-shadow(0 4px 8px rgba(0,0,0,.22))}
.loop .tt{font-size:28px;font-weight:700;fill:var(--gold-text);letter-spacing:.02em}
.loop .tl{font-size:30px;fill:var(--text)}
.loop .pip{fill:var(--panel-2);stroke:var(--line);stroke-width:2.5;transition:fill .45s,stroke .45s}
.loop.is-c1 .pip.p1,.loop.is-c2 .pip.p2,.loop.is-c3 .pip.p3{fill:var(--gold);stroke:var(--gold-deep)}
/* slide 18 bridge */
.bridge text{font-family:var(--font);font-size:30px;fill:var(--text)}
.bridge text.lab{font-weight:700;font-size:34px}
.bridge text.sub{fill:var(--muted);font-size:24px}
.bridge .chain{fill:var(--panel-2);stroke:var(--line);stroke-width:2.5}
.bridge .wallet{fill:var(--panel);stroke:var(--line);stroke-width:2.5}
.bridge .bb{fill:#FFF7D6;stroke:var(--gold-deep);stroke-width:3}
.bridge .path{stroke:var(--gold-deep);stroke-width:6;fill:none;stroke-linecap:round;stroke-dasharray:2000;stroke-dashoffset:2000;transition:stroke-dashoffset 1.6s ease}
.bridge.is-hop .path{stroke-dashoffset:0}
.bridge .lens{opacity:0;transition:opacity .6s} .bridge.is-lens .lens{opacity:1}
.bridge .lens rect{fill:#FFF7D6;stroke:var(--gold-deep);stroke-width:3;stroke-dasharray:14 10}
.bridge .ghost{opacity:.35}
/* slide 19 two worlds */
.worlds text{font-family:var(--font);font-size:30px;fill:var(--text)}
.worlds text.lab{font-weight:700;font-size:36px}
.worlds text.sub{fill:var(--muted);font-size:24px}
.worlds .world{fill:var(--panel-2);stroke:var(--line);stroke-width:2.5}
.worlds .dev{fill:var(--panel);stroke:var(--text);stroke-width:2.5}
.worlds .flow{stroke:var(--gold-deep);stroke-width:6;fill:none;stroke-linecap:round;stroke-dasharray:1600;stroke-dashoffset:1600;transition:stroke-dashoffset 1.4s ease}
.worlds.is-place .flow-place,.worlds.is-integ .flow-integ{stroke-dashoffset:0}
.worlds .tag{opacity:0;transition:opacity .5s} .worlds.is-place .tag-place,.worlds.is-integ .tag-integ{opacity:1}
.worlds .tag text{fill:var(--gold-text);font-weight:800;font-size:30px}
/* slide 20 countermeasures */
.cm{display:grid;grid-template-columns:1fr 1fr;gap:36px;margin-top:6px}
.cm .card h3{font-size:1.3em;margin-bottom:.2em}
.cm .card .lead{color:var(--muted);font-size:.85em;margin-bottom:.6em}
.cm .card ul{list-style:none;margin:0;padding:0}
.cm .card li{padding:12px 0;border-top:1px solid var(--line);font-size:.95em}
.cm .card li b{display:block}
.cm .card li span{color:var(--muted);font-size:.92em}
/* slide 21 challenges */
.chal{display:flex;flex-direction:column;gap:16px;margin-top:6px}
.chal .row{display:grid;grid-template-columns:1fr 60px 1.3fr;align-items:center;gap:0}
.chal .row .c{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px 24px;font-size:.9em}
.chal .row .c b{display:block;font-size:1.05em}
.chal .row .c span{color:var(--muted);font-size:.95em}
.chal .row .d{background:#FFF7D6;border:1px solid var(--gold-deep);border-radius:14px;padding:16px 24px;font-size:.9em}
.chal .row .arrow{text-align:center;color:var(--gold-deep);font-size:1.4em}
/* slide 22 insights */
.insights .hook{font-size:1.35em;max-width:34ch;margin-bottom:.9em}
.insights .hook .k{color:var(--gold-text)}
/* slide 23 contributions */

/* closing */
.closing .cast{display:flex;gap:40px;justify-content:center;margin:26px 0 10px}
.closing .cast svg{width:120px;height:120px}
/* backup */
.backup img{max-height:820px;width:auto;max-width:100%;display:block;margin:0 auto;border:1px solid var(--line);border-radius:8px}
.backup table.heat{font-size:.6em}
.bpdefs{columns:2;column-gap:40px;font-size:.78em}
.bpdefs p{break-inside:avoid;margin:0 0 .45em}
.bpdefs .chip{font-size:.62em}
/* investigator joins the trail */
#mallory .dot2{position:absolute;top:-30px;width:52px;height:52px;transform:translateX(-50%);opacity:0;transition:left .9s cubic-bezier(.2,.8,.2,1),opacity .6s;filter:drop-shadow(0 3px 6px rgba(0,0,0,.25))}
#mallory .dot2 svg{width:100%;height:100%;display:block}
#mallory.is-inv .dot2{opacity:1}
/* auction room */
.auction text{font-family:var(--font);font-size:28px;fill:var(--text)}
.auction .light{fill:url(#spot);opacity:.9}
.auction .easel{stroke:#6B5B3E;stroke-width:8;stroke-linecap:round}
.auction .frame{fill:#3B2E1E;stroke:#8A5B00;stroke-width:6}
.auction .canvas{fill:#F4EEDC}
.auction .podium{fill:#4A3A28}
.auction .seat{fill:var(--panel);stroke:var(--line);stroke-width:2.5}
.auction .pad{transition:transform .5s cubic-bezier(.2,.9,.3,1.3);transform-box:fill-box;transform-origin:50% 100%}
.auction .pad rect.face{fill:#fff;stroke:var(--text);stroke-width:3}
.auction .pad text{font-weight:800;font-size:26px}
.auction.is-b1 .pad-m{transform:translateY(-70px) rotate(-12deg)}
.auction.is-b2 .pad-m{transform:none}
.auction.is-b2 .pad-d{transform:translateY(-70px) rotate(12deg)}
.auction.is-b3 .pad-d{transform:none}
.auction.is-b3 .pad-m{transform:translateY(-70px) rotate(-12deg)}
.auction.is-sold .pad-m,.auction.is-sold .pad-d{transform:none}
.auction .price{opacity:0;transition:opacity .35s}
.auction .price text{font-size:44px;font-weight:800;fill:var(--gold-text)}
.auction .p0{opacity:1}
.auction.is-b1 .p0,.auction.is-b2 .p0,.auction.is-b3 .p0,.auction.is-sold .p0{opacity:0}
.auction.is-b1 .p1{opacity:1} .auction.is-b2 .p1{opacity:0}
.auction.is-b2 .p2{opacity:1} .auction.is-b3 .p2{opacity:0}
.auction.is-b3 .p3{opacity:1} .auction.is-sold .p3{opacity:0}
.auction.is-sold .p4{opacity:1}
.auction .bid{opacity:0;transition:opacity .35s;font-size:24px;fill:var(--muted)}
.auction.is-b1 .bid-1,.auction.is-b2 .bid-2,.auction.is-b3 .bid-3{opacity:1}
.auction.is-b2 .bid-1,.auction.is-b3 .bid-2{opacity:0}
.auction .bid text{fill:#141414}
.auction.is-sold .bid{opacity:0}
.auction .gavel{transform-box:fill-box;transform-origin:10% 90%}
.auction.is-sold .gavel{animation:bang .6s ease-out 1}
@keyframes bang{0%{transform:rotate(0)}40%{transform:rotate(-55deg)}70%{transform:rotate(8deg)}100%{transform:rotate(0)}}
.auction .sold{opacity:0;transform-box:fill-box;transform-origin:center;transform:scale(2) rotate(-14deg)}
.auction.is-sold .sold{animation:stamp .5s cubic-bezier(.2,.9,.3,1.2) .4s forwards}
@keyframes stamp{to{opacity:1;transform:scale(1) rotate(-14deg)}}
.auction .sold text{font-size:64px;font-weight:900;fill:#B91C1C;letter-spacing:.08em}
.auction .sold rect{fill:none;stroke:#B91C1C;stroke-width:7}
.auction .proceeds{opacity:0;transition:opacity .5s .5s}
.auction.is-sold .proceeds{opacity:1}
.auction .proceeds .flow{stroke:var(--gold-deep);stroke-width:6;fill:none;stroke-linecap:round;stroke-dasharray:14 12;animation:ringspin 4s linear infinite}
.auction .proceeds text.lab{fill:var(--gold-text);font-weight:800;font-size:30px}
.auction .glow{fill:var(--gold);opacity:0;transition:opacity .4s}
.auction.is-b1 .glow-m,.auction.is-b3 .glow-m,.auction.is-b2 .glow-d{opacity:.35}
.auction.is-b2 .glow-m,.auction.is-b3 .glow-d{opacity:0}
.auction.is-b3 .glow-m{opacity:.35}
.auction.is-sold .glow{opacity:0}
/* slide 10: moves list + stage */
.moves-wrap{display:grid;grid-template-columns:640px 1fr;gap:36px;align-items:start;margin-top:4px}
.moves{display:flex;flex-direction:column;gap:12px}
.moves .row{display:grid;grid-template-columns:52px 1fr auto;gap:14px;align-items:center;background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:12px 18px;transition:background .4s,border-color .4s}
.moves .row .n{width:44px;height:44px;border-radius:50%;color:#fff;font-weight:800;font-size:.7em;display:flex;align-items:center;justify-content:center;font-family:var(--mono)}
.moves .row b{display:block;font-size:.9em;line-height:1.15}
.moves .row i{display:block;color:var(--muted);font-size:.72em}
.moves .row .chip--pli{font-size:.45em}
.moves .row.is-current{background:#FFF7D6;border-color:var(--gold-deep);box-shadow:0 0 0 2px var(--gold)}
.stage{position:relative;width:100%;aspect-ratio:1000/760;background:var(--panel);border:1px solid var(--line);border-radius:18px;overflow:hidden}
.stage .v{position:absolute;inset:0;width:100%;height:100%;opacity:0;transition:opacity .45s}
.stage .v text{font-family:var(--font);font-size:28px;fill:var(--text)}
.stage .v text.cap{fill:var(--muted);font-size:26px}
.stage .v text.big{font-size:34px;font-weight:700}
.stage.is-s1 .v-1,.stage.is-s2 .v-2,.stage.is-s3 .v-3,.stage.is-s4 .v-4,.stage.is-s5 .v-5,.stage.is-s6 .v-6{opacity:1}
.stage .idle{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:var(--muted);font-size:.9em;transition:opacity .4s}
.stage.is-s1 .idle,.stage.is-s2 .idle,.stage.is-s3 .idle,.stage.is-s4 .idle,.stage.is-s5 .idle,.stage.is-s6 .idle{opacity:0}
/* v1 path */
.v-1 .hop{fill:var(--panel-2);stroke:var(--muted);stroke-width:3}
.v-1 .edge{stroke:#B8B8C0;stroke-width:3.5;fill:none;stroke-dasharray:10 8}
/* v3 scissors */
.v-3 .seg{stroke:var(--gold-deep);stroke-width:7;stroke-linecap:round}
.v-3 .cutseg{animation:cutfade 1.8s ease-in-out infinite}
@keyframes cutfade{0%,35%{opacity:1}55%,100%{opacity:0}}
.v-3 .blade{transform-box:fill-box;transform-origin:50% 50%}
.v-3 .sc-a{animation:snipA 1.8s ease-in-out infinite}
.v-3 .sc-b{animation:snipB 1.8s ease-in-out infinite}
@keyframes snipA{0%{transform:rotate(-28deg)}45%,60%{transform:rotate(0)}100%{transform:rotate(-28deg)}}
@keyframes snipB{0%{transform:rotate(28deg)}45%,60%{transform:rotate(0)}100%{transform:rotate(28deg)}}
/* v5 question mark */
.v-5 .q{animation:bob 1.6s ease-in-out infinite}
@keyframes bob{0%,100%{transform:translateY(0)}50%{transform:translateY(-14px)}}
/* TV bezel for the stage */
.moves-wrap{grid-template-columns:660px 1fr}
.tv{padding:0 20px}
.stage{aspect-ratio:1000/720;border:none;border-radius:22px;box-shadow:0 0 0 14px #1F1F27,0 0 0 18px #3A3A48,0 18px 34px rgba(0,0,0,.22)}
.tv-stand{width:200px;height:24px;margin:44px auto 0;background:#1F1F27;border-radius:0 0 14px 14px;position:relative}
.tv-stand:before{content:"";position:absolute;left:50%;top:-30px;width:64px;height:30px;margin-left:-32px;background:#1F1F27}
.stage .think text{fill:var(--text)}
/* bridges scene */
.bridge .water{fill:#DCEBF5}
.bridge .wave{stroke:#B9D3E6;stroke-width:3;fill:none;stroke-linecap:round}
.bridge .island{fill:#EEF1E6;stroke:#C9CFB8;stroke-width:3}
.bridge .grass{fill:#CFE0B8}
.bridge .deck{stroke:#4A4A55;stroke-width:8;fill:none;stroke-linecap:round}
.bridge .plank{stroke:#8A7350;stroke-width:14;fill:none;stroke-dasharray:6 18;stroke-linecap:butt}
.bridge .rail{stroke:#4A4A55;stroke-width:5;fill:none}
.bridge .post{stroke:#9A9AA6;stroke-width:5;stroke-linecap:round}
.bridge .vault{fill:#3A3A48;stroke:#1F1F27;stroke-width:4}
.bridge .vault-door{fill:#55556A;stroke:#1F1F27;stroke-width:3}
.bridge .label{fill:var(--muted);font-size:24px}
.bridge .walker{offset-path:path('M440 250 C620 90 1180 90 1360 250 C1420 300 1470 330 1520 360 C1550 400 1560 450 1560 500');offset-distance:0;offset-rotate:0deg}
.bridge.is-hop .walker{animation:walk 4.2s ease-in-out forwards}
@keyframes walk{from{offset-distance:0}to{offset-distance:100%}}
.bridge .locked{transform-box:fill-box;transform-origin:center;transition:transform .8s ease,opacity .8s ease}
.bridge.is-hop .locked{transform:scale(.2);opacity:0}
.bridge .lockicon{opacity:0;transition:opacity .5s ease .8s}
.bridge.is-hop .lockicon{opacity:1}
.bridge .minted{transform-box:fill-box;transform-origin:center;transform:scale(0);opacity:0;transition:transform .6s cubic-bezier(.2,.9,.3,1.4) 3.2s,opacity .3s ease 3.2s}
.bridge.is-hop .minted{transform:scale(1);opacity:1}
.bridge .log{opacity:0;transform:translateY(30px);transition:opacity .5s ease,transform .5s ease}
.bridge.is-lens .log{opacity:1;transform:translateY(0)}
.bridge .log rect{fill:#fff;stroke:var(--line);stroke-width:2.5}
.bridge .log text.t{font-size:26px;font-weight:700}
.bridge .log text.m{font-family:var(--mono);font-size:22px;fill:var(--muted)}
.bridge .gapq{opacity:0;transition:opacity .5s ease .4s}
.bridge.is-lens .gapq{opacity:1}
.bridge .gapq path{stroke:var(--gold-deep);stroke-width:5;stroke-dasharray:14 12;fill:none}
.bridge .gapq text{fill:var(--gold-text);font-weight:900;font-size:60px}
.bridge .gapq .box{fill:#FFF7D6;stroke:var(--gold-deep);stroke-width:3;stroke-dasharray:14 10}
.bridge .gapq .cap{fill:var(--gold-text);font-weight:700;font-size:28px}
.bub.pin.top{bottom:auto;top:230px}
/* street scene: chain meets bank */
.worlds .ground{stroke:#C9CFB8;stroke-width:4}
.worlds .kiosk{fill:#3A3A48;stroke:#1F1F27;stroke-width:4}
.worlds .screen{fill:#DCEBF5;stroke:#1F1F27;stroke-width:3}
.worlds .slot{fill:#141414}
.worlds .key{fill:#9A9AA6}
.worlds .bank{fill:#F3F3EE;stroke:#4A4A55;stroke-width:4}
.worlds .col{fill:#E4E4DC;stroke:#4A4A55;stroke-width:3}
.worlds .shop{fill:#FFF;stroke:#4A4A55;stroke-width:4}
.worlds .awn{fill:#B91C1C}
.worlds .awn2{fill:#FFF}
.worlds .phone{fill:#1F1F27}
.worlds .phone-screen{fill:#FBFBF8}
.worlds .card{fill:#E3B300;stroke:#8A5B00;stroke-width:3}
.worlds .chip{fill:#FFF7D6;stroke:#8A5B00;stroke-width:2}
.worlds .term{fill:#3A3A48;stroke:#1F1F27;stroke-width:3}
.worlds .mv{offset-rotate:0deg;offset-distance:0;opacity:0}
.worlds .mv-cash{offset-path:path('M230 470 C330 470 420 476 515 476')}
.worlds .mv-coin{offset-path:path('M515 300 C700 200 900 250 953 392')}
.worlds .mv-card{offset-path:path('M953 400 C1080 380 1180 390 1260 405')}
.worlds .mv-fiat{offset-path:path('M180 690 H230 V560')}
.worlds .mv-fiat2{offset-path:path('M230 560 V690 H953 V545')}
.worlds.is-rails .mv-fiat{animation:mv 1.4s ease-in-out forwards}
.worlds.is-rails .mv-fiat2{animation:mv 2.6s ease-in-out 1.4s forwards}
.worlds.is-rails .pop-fiat{transform:scale(1);opacity:1;transition-delay:4s}
.worlds.is-place .mv-cash{animation:mv 2.2s ease-in-out forwards}
.worlds.is-place .mv-coin{animation:mv 1.8s ease-in-out 2.2s forwards}
.worlds.is-integ .mv-card{animation:mv 2.2s ease-in-out forwards}
@keyframes mv{0%{offset-distance:0;opacity:1}90%{opacity:1}100%{offset-distance:100%;opacity:0}}
.worlds .pop{transform-box:fill-box;transform-origin:center;transform:scale(0);opacity:0;transition:transform .5s cubic-bezier(.2,.9,.3,1.4),opacity .3s}
.worlds.is-place .pop-coin{transform:scale(1);opacity:1;transition-delay:3.9s}
.worlds.is-integ .pop-bag{transform:scale(1);opacity:1;transition-delay:2.3s}
.worlds.is-integ .pop-ok{transform:scale(1);opacity:1;transition-delay:2s}
.worlds .rail{stroke:#9A9AA6;stroke-width:4;stroke-dasharray:10 10;fill:none;opacity:0;transition:opacity .5s}
.worlds.is-rails .rail{opacity:1}
.worlds .tag text{fill:var(--gold-text);font-weight:800;font-size:30px}

/* static render mode: jump every transition and one-shot animation to its end state */
html.final .reveal *{transition-duration:0s!important;transition-delay:0s!important;animation-delay:0s!important}
html.final .bridge .walker,html.final .worlds .mv,html.final .bub.fragment.visible .txt,html.final .auction .sold,html.final .auction .gavel{animation-duration:.01s!important}
.worlds .rail-lab{opacity:0;transition:opacity .5s}
.worlds.is-rails .rail-lab{opacity:1}
.mid-wrap{position:absolute;left:0;right:0;top:560px;display:flex;justify-content:center;z-index:2;pointer-events:none}
.bridge .say{opacity:0;transition:opacity .5s}
.bridge.is-say .say{opacity:1}
/* countermeasures road */
.road text{font-family:var(--font);font-size:26px;fill:var(--text)}
.road text.cap{fill:var(--muted);font-size:23px}
.road text.sec{fill:var(--gold-text);font-weight:800;font-size:32px}
.road .asphalt{fill:#55556A}
.road .centre{stroke:#FFF7D6;stroke-width:6;stroke-dasharray:40 30;fill:none}
.road .print{fill:#9A9AA6;opacity:.6}
.road .det,.road .prev{opacity:0;transition:opacity .5s,transform .6s cubic-bezier(.2,.9,.3,1.2)}
.road .prev{transform:translateY(140px)}
.road.is-det .det{opacity:1}
.road.is-prev .prev{opacity:1;transform:translateY(0)}
.road .prev.d1{transition-delay:.15s} .road .prev.d2{transition-delay:.4s} .road .prev.d3{transition-delay:.65s} .road .prev.d4{transition-delay:.9s}
.road .radar{opacity:0;transition:opacity .5s}
.road.is-det .radar{opacity:1}
.road .radar .ring{fill:none;stroke:#E3B300;stroke-width:2.5;opacity:.5}
.road .radar .sweep{fill:#E3B300;opacity:.28}
.road .kit{fill:#fff;stroke:var(--line);stroke-width:2.5}
.road .brick{fill:#B5563E;stroke:#7A3A2A;stroke-width:2}
.road .gate{fill:#B91C1C}
.road .gate2{fill:#fff}
html.final .road .prev{transition:none}
/* open challenges wall */
.wall text{font-family:var(--font);fill:var(--text)}
.wall .prob{font-size:30px;font-weight:700}
.wall .gloss{font-size:23px;fill:var(--muted)}
.wall .hole{fill:#2A2A35}
.wall .plank{transform:translateX(-1900px);transition:transform .7s cubic-bezier(.2,.9,.3,1.1)}
.wall.is-k1 .pk1,.wall.is-k2 .pk2,.wall.is-k3 .pk3,.wall.is-k4 .pk4{transform:translateX(0)}
.wall .plank rect.board{fill:#E3B300;stroke:#8A5B00;stroke-width:4}
.wall .plank circle{fill:#8A5B00}
.wall .plank text{font-size:22px;font-weight:700;fill:#141414}
html.final .wall .plank{transition:none}
/* contributions: one map, three layers */
.gmap text{font-family:var(--font);font-size:21px;fill:var(--text)}
.gmap .pl{font-size:19px}
.gmap .tb{font-size:24px;font-weight:800}
.gmap .cap{font-size:26px;fill:#5E5E68}
.gmap .band{font-size:22px;fill:#7A7364;letter-spacing:3px;font-weight:700}
.gmap .ax{font-size:22px;fill:#4338CA;font-weight:700;letter-spacing:1px}
.gmap .lg{font-size:20px;fill:#5E5E68}
.gmap .num{font-size:24px;font-weight:800;fill:#5A3B00}
.gmap .ct{font-size:26px;font-weight:800;fill:#141414}
.gmap .cb{font-size:21px;fill:#5E5E68}
.gmap .folded{transition:opacity .3s ease}
.gmap.is-m1 .folded{opacity:0}
.gmap .sheet{opacity:0;transform:scale(.22,.55);transform-box:fill-box;transform-origin:center;transition:opacity .3s ease,transform .75s cubic-bezier(.2,.85,.25,1)}
.gmap.is-m1 .sheet{opacity:1;transform:none}
.gmap .acet{opacity:0;transform:translateY(-300px) rotate(-5deg);transform-box:fill-box;transform-origin:center;transition:opacity .35s ease,transform .7s cubic-bezier(.25,.9,.3,1.05)}
.gmap.is-m2 .acet{opacity:1;transform:rotate(-1.2deg)}
.gmap .ops{opacity:0;transition:opacity .2s ease}
.gmap.is-m3 .ops{opacity:1}
.gmap .ops .droute{stroke-dashoffset:0;animation:ants 1.1s linear infinite}
.gmap .ops .pop{opacity:0;transform:scale(.5);transform-box:fill-box;transform-origin:center;transition:opacity .25s ease,transform .45s cubic-bezier(.2,.9,.3,1.5)}
.gmap.is-m3 .ops .pop{opacity:1;transform:none}
.gmap .c{opacity:0;transform:translateX(28px);transform-box:fill-box;transform-origin:center;transition:opacity .4s ease .3s,transform .5s ease .3s}
.gmap.is-m1 .c1,.gmap.is-m2 .c2,.gmap.is-m3 .c3,.gmap.is-m4 .c4{opacity:1;transform:none}
@keyframes ants{to{stroke-dashoffset:-28}}
html.final .gmap .ops .droute{animation:none}

/* cork board */
.board .cork{fill:url(#cork)}
.board .photo{fill:#fff;stroke:#DEDED8;stroke-width:2;filter:drop-shadow(0 6px 10px rgba(0,0,0,.18))}
.board .pinhead circle{fill:#1F2A44;stroke:#0E1524;stroke-width:2}
.board .pinhead circle.hi{fill:#9BB4C8;stroke:none}
.board .cap{font-family:var(--font);font-size:20px;fill:#5E5E68}
.board .string{stroke:#D62828;stroke-width:4;fill:none;stroke-linecap:round;stroke-dasharray:3000;stroke-dashoffset:3000;transition:stroke-dashoffset 1.2s ease}
.board .note{opacity:0;transform:scale(.8);transform-box:fill-box;transform-origin:center;transition:opacity .4s ease .8s,transform .5s cubic-bezier(.2,.9,.3,1.3) .8s}
.board .note rect{fill:#FFF1B8;stroke:#E3B300;stroke-width:2;filter:drop-shadow(0 4px 8px rgba(0,0,0,.18))}
.board .note text{font-family:var(--font);font-size:22px;fill:#141414}
.board .note text.h{font-weight:800;font-size:25px;fill:#8A5B00}
.board.is-i1 .g1 .string,.board.is-i2 .g2 .string,.board.is-i3 .g3 .string{stroke-dashoffset:0}
.board.is-i1 .g1 .note,.board.is-i2 .g2 .note,.board.is-i3 .g3 .note{opacity:1;transform:scale(1)}
.board .icon{opacity:0;transition:opacity .5s ease .6s}
.board.is-i3 .g3 .icon{opacity:1}
html.final .board .string,html.final .board .note,html.final .board .icon{transition:none}
