/* The Ensemble: one show, six seats. Self-hosted OFL fonts, no external resources (CSP). */
@font-face{font-family:"Bodoni Moda";src:url(/ensemble/fonts/bodoni-moda.woff2) format("woff2");font-weight:400 900;font-style:normal;font-display:swap}
@font-face{font-family:"Bodoni Moda";src:url(/ensemble/fonts/bodoni-moda-italic.woff2) format("woff2");font-weight:400 900;font-style:italic;font-display:swap}
@font-face{font-family:"Courier Prime";src:url(/ensemble/fonts/courier-prime-400.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Courier Prime";src:url(/ensemble/fonts/courier-prime-700.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Instrument Sans";src:url(/ensemble/fonts/instrument-sans.woff2) format("woff2");font-weight:400 700;font-display:swap}

:root{
  --house:#0c0708;--velvet:#1d0a0e;--curtain:#7d1022;--curtain2:#a5182f;
  --ghost:#ffd384;--paper:#f3e8d4;--ink:#f2e8d8;--soft:#bcae98;--dim:#8a7c69;
  --line:rgba(255,211,132,.16);--line2:rgba(255,211,132,.32);
  --gel:#ffd384;--gel-a:rgba(255,211,132,.14);
  --display:"Bodoni Moda",Didot,"Times New Roman",serif;
  --body:"Instrument Sans","Avenir Next",system-ui,sans-serif;
  --mono:"Courier Prime","Courier New",monospace;
  --sx:50%;--sy:20%;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--house);color:var(--ink);font:400 17px/1.62 var(--body);overflow-x:hidden;transition:background-color 1.2s}
::selection{background:var(--gel);color:var(--house)}
a{color:var(--gel)}
img,svg{max-width:100%}

/* atmosphere: the spot follows you, grain sits on top */
#spot{position:fixed;inset:0;pointer-events:none;z-index:0;background:radial-gradient(520px 420px at var(--sx) var(--sy),var(--gel-a),transparent 70%);transition:background .9s}
#grain{position:fixed;inset:-50%;pointer-events:none;z-index:60;opacity:.07;background-image:url(/ensemble/grain.svg);animation:grain 1.2s steps(6) infinite}
@keyframes grain{0%{transform:translate(0,0)}20%{transform:translate(-3%,2%)}40%{transform:translate(2%,-3%)}60%{transform:translate(-2%,-1%)}80%{transform:translate(3%,3%)}100%{transform:translate(0,0)}}
main{position:relative;z-index:1}
.wrap{width:min(1180px,100% - 32px);margin:0 auto}
.narrow{width:min(780px,100% - 32px);margin:0 auto}

/* the cue call, top right: the page's stage manager */
#call{position:fixed;top:14px;right:14px;z-index:50;display:flex;align-items:center;gap:10px;padding:8px 12px 8px 10px;background:rgba(12,7,8,.82);border:1px solid var(--line2);border-radius:999px;font:700 12px/1 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--soft);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
#call i{width:10px;height:10px;border-radius:50%;background:var(--dim);box-shadow:0 0 0 0 transparent;transition:background .3s,box-shadow .3s}
#call.go i{background:var(--gel);box-shadow:0 0 14px 3px var(--gel)}
#call.sb i{background:#ff5a4f;box-shadow:0 0 10px 2px #ff5a4f}
#call b{color:var(--ink)}
#seats{position:fixed;left:14px;top:50%;transform:translateY(-50%);z-index:50;display:flex;flex-direction:column;gap:6px}
#seats a{display:flex;align-items:center;gap:10px;min-height:30px;text-decoration:none;color:var(--dim);font:700 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase}
#seats a i{width:12px;height:12px;border-radius:3px 3px 1px 1px;border:1px solid var(--dim);transition:all .3s}
#seats a span{opacity:0;transform:translateX(-6px);transition:all .25s;white-space:nowrap;background:rgba(12,7,8,.85);padding:4px 7px;border-radius:4px}
#seats a:hover span,#seats a:focus-visible span{opacity:1;transform:none}
#seats a.on{color:var(--gel)}#seats a.on i{background:var(--gel);border-color:var(--gel);box-shadow:0 0 10px var(--gel)}
@media(max-width:1340px){#seats{display:none}}

/* the curtain */
.hero{position:relative;min-height:100vh;min-height:100svh;display:flex;flex-direction:column;justify-content:center;padding:96px 0 60px;overflow:hidden}
.drape{position:absolute;top:0;bottom:0;width:52%;z-index:3;pointer-events:none;background:repeating-linear-gradient(90deg,#5a0a17 0 18px,var(--curtain) 30px,var(--curtain2) 44px,var(--curtain) 58px,#5a0a17 76px);box-shadow:inset 0 -80px 120px rgba(0,0,0,.6);animation:open 2.4s cubic-bezier(.7,0,.2,1) .35s forwards}
.drape.l{left:0;transform-origin:left}.drape.r{right:0;transform-origin:right}
@keyframes open{to{transform:scaleX(.09)}}
.valance{position:absolute;top:0;left:0;right:0;height:56px;z-index:4;background:repeating-linear-gradient(90deg,var(--curtain2) 0 34px,#5a0a17 34px 40px);border-bottom:3px solid var(--ghost);box-shadow:0 10px 30px rgba(0,0,0,.6)}
.valance::after{content:"";position:absolute;left:0;right:0;bottom:-14px;height:14px;background:radial-gradient(circle at 20px 0,var(--curtain2) 13px,transparent 14px) 0 0/40px 14px repeat-x}
.hero .wrap{position:relative;z-index:2}
.kick{font:700 12.5px/1.4 var(--mono);letter-spacing:.14em;text-transform:uppercase;color:var(--ghost);margin:0 0 18px}
.kick a{color:inherit}
h1{font:italic 800 clamp(64px,13vw,196px)/.86 var(--display);letter-spacing:-.02em;margin:0;color:var(--paper)}
h1 em{font-style:normal;font-weight:500;display:block;font-size:.34em;letter-spacing:.04em;line-height:1.15;color:var(--ghost)}
.lede{font-size:clamp(18px,2vw,22px);line-height:1.5;max-width:660px;color:var(--ink);margin:26px 0 0}
.ghostlight{position:absolute;right:max(16px,8vw);bottom:0;width:clamp(90px,14vw,170px);z-index:1;opacity:.95}
.ghostlight .bulb{fill:var(--ghost);filter:drop-shadow(0 0 22px var(--ghost))}
.ghostlight .pole{stroke:#6b5a45;stroke-width:4}
.ghostlight .cage{fill:none;stroke:#8b765b;stroke-width:1.6}
.halo{position:absolute;right:max(16px,8vw);bottom:150px;width:420px;height:420px;margin-right:-150px;border-radius:50%;background:radial-gradient(closest-side,rgba(255,211,132,.28),transparent);z-index:0;animation:flicker 5s infinite}
@keyframes flicker{0%,100%{opacity:1}46%{opacity:1}47%{opacity:.7}48%{opacity:1}72%{opacity:.92}}

/* seat map */
.house{margin:46px 0 0}
.house p{font:700 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--soft);margin:0 0 12px}
.seatmap{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px}
.seatmap a{position:relative;display:flex;flex-direction:column;gap:6px;min-height:118px;padding:14px 14px 12px;text-decoration:none;color:var(--ink);background:linear-gradient(180deg,#1b1214,#140d0f);border:1px solid var(--line);border-radius:14px 14px 6px 6px;transition:transform .25s,border-color .25s,background .25s}
.seatmap a:hover,.seatmap a:focus-visible{transform:translateY(-4px);border-color:var(--c);background:linear-gradient(180deg,rgba(255,255,255,.07),rgba(255,255,255,.02));outline:none}
.seatmap a b{font:700 11px/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--c)}
.seatmap a strong{font:700 21px/1.08 var(--display)}
.seatmap a span{font-size:13px;line-height:1.35;color:var(--soft)}
.s1{--c:#ffb347}.s2{--c:#4fd8c4}.s3{--c:#8dff8a}.s4{--c:#7fb2ff}.s5{--c:#ff6b5e}.s6{--c:#f6c945}
.seatmap a::after{content:"";position:absolute;left:18%;right:18%;bottom:-1px;height:3px;border-radius:3px;background:var(--c);opacity:.7}
@media(max-width:900px){.seatmap{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:520px){.seatmap{grid-template-columns:repeat(2,minmax(0,1fr))}.seatmap a{min-height:104px}}

/* the cast, introduced once */
.programme{background:var(--paper);color:#1d1410;padding:clamp(56px,8vw,100px) 0;position:relative}
.programme::before,.programme::after{content:"";position:absolute;left:0;right:0;height:18px;background:radial-gradient(circle at 9px 9px,var(--house) 6px,transparent 7px) 0 0/18px 18px repeat-x}
.programme::before{top:-9px}.programme::after{bottom:-9px}
.programme h2{color:#1d1410}
.programme .kick{color:var(--curtain)}
.programme .sub{color:#4b3c30}
.castgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;border-top:2px solid #1d1410;margin-top:34px}
.castgrid div{padding:18px 16px 20px;border-bottom:1px solid rgba(29,20,16,.25);border-right:1px solid rgba(29,20,16,.25)}
.castgrid div:nth-child(4n){border-right:0}
.castgrid svg{width:40px;height:40px;display:block;margin-bottom:10px}
.castgrid svg{fill:none;stroke:#1d1410;color:var(--curtain);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.castgrid b{display:block;font:800 22px/1.1 var(--display)}
.castgrid em{display:block;font:700 11px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--curtain);margin:4px 0 8px;font-style:normal}
.castgrid p{margin:0;font-size:14.5px;line-height:1.45;color:#3a2c22}
@media(max-width:900px){.castgrid{grid-template-columns:repeat(2,minmax(0,1fr))}.castgrid div:nth-child(4n){border-right:1px solid rgba(29,20,16,.25)}.castgrid div:nth-child(2n){border-right:0}}

/* acts */
.act{position:relative;padding:clamp(90px,12vw,160px) 0 clamp(60px,8vw,100px)}
.act1{--gel:#ffb347;--gel-a:rgba(255,179,71,.13)}
.act2{--gel:#4fd8c4;--gel-a:rgba(79,216,196,.12)}
.act3{--gel:#8dff8a;--gel-a:rgba(141,255,138,.10)}
.act4{--gel:#7fb2ff;--gel-a:rgba(127,178,255,.13)}
.act5{--gel:#ff6b5e;--gel-a:rgba(255,107,94,.12)}
.act6{--gel:#f6c945;--gel-a:rgba(246,201,69,.13)}
.fin{--gel:#fff4dc;--gel-a:rgba(255,244,220,.10)}
.acthead{display:grid;grid-template-columns:auto minmax(0,1fr);gap:8px 28px;align-items:end;border-bottom:1px solid var(--line2);padding-bottom:26px}
.numeral{font:italic 900 clamp(90px,15vw,210px)/.8 var(--display);color:transparent;-webkit-text-stroke:1.5px var(--gel);grid-row:1/3}
.slate{font:700 12px/1.6 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--gel)}
.slate span{color:var(--soft)}
h2{font:800 clamp(38px,6.2vw,84px)/.98 var(--display);letter-spacing:-.015em;margin:6px 0 0;color:var(--paper)}
h2 i{font-weight:500;color:var(--gel)}
h3{font:700 clamp(24px,2.8vw,34px)/1.12 var(--display);margin:0 0 12px;color:var(--paper)}
h4{font:700 12px/1.4 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--gel);margin:0 0 10px}
.sub{font-size:clamp(18px,1.9vw,21px);line-height:1.5;color:var(--soft);max-width:760px;margin:22px 0 0}
@media(max-width:620px){.acthead{grid-template-columns:1fr}.numeral{grid-row:auto;font-size:84px}}

.block{margin-top:clamp(44px,6vw,72px)}
.two{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:clamp(22px,4vw,56px);align-items:start}
@media(max-width:820px){.two{grid-template-columns:1fr}}

.analogy{position:relative;padding:26px 26px 24px 30px;border-left:3px solid var(--gel);background:linear-gradient(90deg,var(--gel-a),transparent 80%);border-radius:0 12px 12px 0}
.analogy p{margin:0 0 12px;font-size:18px}
.analogy p:last-child{margin:0}
.analogy .big{font:italic 600 clamp(24px,2.6vw,31px)/1.25 var(--display);color:var(--paper)}

.fig{margin:0;padding:clamp(16px,2.4vw,26px);background:rgba(255,255,255,.025);border:1px solid var(--line);border-radius:16px}
.fig figcaption{font:400 13px/1.5 var(--mono);color:var(--soft);margin-top:12px}
.scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}
.mw{min-width:680px}
.mw.s{min-width:460px}

/* svg vocabulary */
.d text{font-family:var(--body);fill:var(--ink);font-size:14px}
.d .t{font:700 15px var(--body);fill:var(--paper)}
.d .m{font:400 12px var(--mono);fill:var(--soft)}
.d .h{font:700 12px var(--mono);letter-spacing:.1em;fill:var(--gel)}
.d .g{fill:var(--gel)}
.d .gk{font:700 13px var(--mono);fill:#0c0708}
.d .bx{fill:rgba(255,255,255,.04);stroke:var(--line2);stroke-width:1.2}
.d .bg{fill:var(--gel-a);stroke:var(--gel);stroke-width:1.4}
.d .bxo{fill:#1a1214;stroke:var(--line2);stroke-width:1.2}
.d .bd{fill:rgba(255,90,79,.08);stroke:#ff6b5e;stroke-width:1.2;stroke-dasharray:4 4}
.d .ln{fill:none;stroke:var(--line2);stroke-width:1.4}
.d .lg{fill:none;stroke:var(--gel);stroke-width:1.8}
.d .lr{fill:none;stroke:#ff6b5e;stroke-width:1.4;stroke-dasharray:3 4}
.d .flow{fill:none;stroke:var(--gel);stroke-width:2.2;stroke-dasharray:6 10;animation:flow 1.4s linear infinite}
@keyframes flow{to{stroke-dashoffset:-32}}
.d .pulse{fill:var(--gel);animation:pulse 2.2s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:.35}50%{opacity:1}}
.d .red{fill:#ff6b5e}
.d .redt{fill:#ff8f84}
.d .dim{fill:var(--dim)}
.d .stage{fill:#2a1712;stroke:#5c3a2a;stroke-width:1.5}
.d .boards{stroke:#3d241b;stroke-width:1}
.d .cur{fill:var(--curtain)}
.d .cur2{fill:#5a0a17}
.d .wood{fill:#3a2418}
.d .skin{fill:#e8c39e}
.d .gelfill{fill:var(--gel-a)}
.d .beam{fill:var(--gel);opacity:.12}
.d use{fill:none;stroke:var(--gel);color:var(--gel);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}

/* the crew at this depth */
.crew{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:16px;overflow:hidden}
.crew>div{display:grid;grid-template-columns:44px minmax(0,1fr);gap:4px 16px;padding:20px 20px 22px;background:var(--house)}
.crew svg{width:40px;height:40px;grid-row:1/4}
.crew svg{fill:none;stroke:var(--gel);color:var(--gel);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.crew b{font:800 20px/1.15 var(--display);color:var(--paper)}
.crew p{margin:0;font-size:15.5px;line-height:1.5;color:var(--ink)}
.crew small{display:block;font:400 12.5px/1.45 var(--mono);color:var(--soft);margin-top:6px}
.crew code,.crew kbd{font:400 13.5px var(--mono);color:var(--gel)}
@media(max-width:820px){.crew{grid-template-columns:1fr}}

.honest{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.honest>div{padding:22px 22px 20px;border-radius:14px;border:1px solid var(--line)}
.honest .no{border-color:rgba(255,107,94,.45);background:rgba(255,107,94,.05)}
.honest .no h4{color:#ff8f84}
.honest .yes{border-color:var(--gel);background:var(--gel-a)}
.honest ul{margin:0;padding:0 0 0 18px}
.honest li{margin:0 0 8px;font-size:15.5px}
@media(max-width:820px){.honest{grid-template-columns:1fr}}

/* polling vs push (act 2) */
.race{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}
.lane{position:relative;padding:18px;border:1px solid var(--line);border-radius:14px;overflow:hidden;min-height:190px}
.lane h4{margin-bottom:6px}
.lane p{margin:0;font-size:14.5px;color:var(--soft)}
.knocks{display:flex;gap:6px;flex-wrap:wrap;margin:18px 0 0}
.knocks i{font:700 12px/1 var(--mono);font-style:normal;padding:6px 8px;border-radius:6px;border:1px solid var(--line2);color:var(--soft);opacity:.25;animation:knock 6s infinite}
.knocks i.y{border-color:var(--gel);color:var(--gel)}
.knocks i:nth-child(1){animation-delay:0s}.knocks i:nth-child(2){animation-delay:.5s}.knocks i:nth-child(3){animation-delay:1s}.knocks i:nth-child(4){animation-delay:1.5s}.knocks i:nth-child(5){animation-delay:2s}.knocks i:nth-child(6){animation-delay:2.5s}.knocks i:nth-child(7){animation-delay:3s}.knocks i:nth-child(8){animation-delay:3.5s}
@keyframes knock{0%,4%{opacity:.25}6%,60%{opacity:1}100%{opacity:.25}}
.ring{display:flex;align-items:center;gap:12px;margin:18px 0 0;font:700 13px var(--mono);color:var(--gel)}
.ring i{width:16px;height:16px;border-radius:50%;background:var(--gel);animation:ringo 6s infinite}
@keyframes ringo{0%,54%{opacity:.15;transform:scale(.6)}56%{opacity:1;transform:scale(1.4);box-shadow:0 0 0 10px var(--gel-a)}70%,100%{opacity:.6;transform:scale(1)}}
@media(max-width:700px){.race{grid-template-columns:1fr}}

/* code */
pre{margin:0;padding:18px 20px;background:#070405;border:1px solid var(--line2);border-radius:12px;overflow-x:auto;font:400 13.5px/1.6 var(--mono);color:var(--ink)}
pre .c{color:var(--dim)}pre .k{color:var(--gel)}pre .s{color:#ffcf8a}
code{font:400 .9em var(--mono);color:var(--gel)}

/* lending dial (act 3) */
.dial{padding:22px;border:1px solid var(--gel);border-radius:16px;background:var(--gel-a)}
.dial label{display:block;font:700 12px/1.4 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--gel);margin-bottom:10px}
.dial input[type=range]{width:100%;accent-color:var(--gel);min-height:44px}
.dialout{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:10px}
.dialout div{padding:12px;border-radius:10px;background:rgba(0,0,0,.35)}
.dialout b{display:block;font:800 clamp(24px,3vw,34px)/1 var(--display);color:var(--paper)}
.dialout span{font-size:12.5px;color:var(--soft)}
.dial p{margin:12px 0 0;font-size:14px;color:var(--soft)}
@media(max-width:520px){.dialout{grid-template-columns:1fr}}

/* tables */
.tbl{width:100%;border-collapse:collapse;font-size:15px}
.tbl th{font:700 11.5px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--gel);text-align:left;padding:10px 12px;border-bottom:1px solid var(--gel)}
.tbl td{padding:12px;border-bottom:1px solid var(--line);vertical-align:top}
.tbl td:first-child{font-weight:600;color:var(--paper);white-space:nowrap}
.tbl .tag{display:inline-block;font:700 11px/1 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:5px 7px;border-radius:5px;white-space:nowrap}
.tag.ok{background:var(--gel-a);color:var(--gel);border:1px solid var(--gel)}
.tag.part{background:rgba(255,211,132,.08);color:var(--ghost);border:1px solid rgba(255,211,132,.5)}
.tag.not{background:rgba(255,107,94,.08);color:#ff8f84;border:1px solid rgba(255,107,94,.55)}

/* intermission */
.inter{padding:clamp(70px,9vw,120px) 0;background:repeating-linear-gradient(90deg,#5a0a17 0 18px,var(--curtain) 30px,var(--curtain2) 44px,var(--curtain) 58px,#5a0a17 76px);position:relative}
.inter::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 40%,rgba(12,7,8,.55),rgba(12,7,8,.88))}
.inter .wrap{position:relative}
.inter h2{text-align:center}
.inter .sub{text-align:center;margin:18px auto 0}
.gauges{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;margin-top:40px}
.gauge{padding:18px 18px 16px;background:rgba(12,7,8,.78);border:1px solid var(--line2);border-radius:14px}
.gauge b{display:block;font:800 30px/1 var(--display);color:var(--paper)}
.gauge span{display:block;font-size:13.5px;color:var(--soft);margin-top:6px}
.meter{height:8px;border-radius:8px;background:rgba(255,255,255,.08);margin-top:14px;overflow:hidden}
.meter i{display:block;height:100%;border-radius:8px;background:var(--ghost);transform-origin:left;transform:scaleX(0);transition:transform 1.4s cubic-bezier(.2,.7,.2,1)}
.meter i.full{background:#ff6b5e}
.in .meter i{transform:scaleX(var(--v,0))}
@media(max-width:820px){.gauges{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.gauges{grid-template-columns:1fr}}

/* risk board (act 5) */
.board{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.ticket{padding:18px;border-radius:12px;background:#f3e8d4;color:#1d1410;box-shadow:0 14px 30px -14px rgba(0,0,0,.8)}
.ticket h5{margin:0 0 8px;font:700 11px/1.3 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--curtain)}
.ticket b{display:block;font:800 18px/1.2 var(--display);margin-bottom:6px}
.ticket p{margin:0;font-size:14px;line-height:1.45;color:#3a2c22}
.ticket:nth-child(3n+1){transform:rotate(-1.2deg)}.ticket:nth-child(3n+2){transform:rotate(.8deg)}.ticket:nth-child(3n){transform:rotate(-.4deg)}
@media(max-width:820px){.board{grid-template-columns:1fr}}

/* stats strip */
.stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);border-radius:14px;overflow:hidden}
.stats div{padding:20px;background:var(--house)}
.stats b{display:block;font:800 clamp(30px,4vw,48px)/1 var(--display);color:var(--gel)}
.stats span{display:block;font-size:13.5px;line-height:1.4;color:var(--soft);margin-top:8px}
@media(max-width:820px){.stats{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* finale */
.fin h2{font-size:clamp(46px,8vw,120px)}
.bow{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:46px}
.bow div{text-align:center;padding:16px 6px 14px;border-top:3px solid var(--ghost);background:linear-gradient(180deg,rgba(255,211,132,.10),transparent)}
.bow svg{width:34px;height:34px}
.bow svg{fill:none;stroke:var(--ghost);color:var(--ghost);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.bow b{display:block;font:700 15px/1.2 var(--display);margin-top:6px}
@media(max-width:820px){.bow{grid-template-columns:repeat(4,minmax(0,1fr))}}
.closing{font:italic 600 clamp(26px,3.6vw,44px)/1.25 var(--display);color:var(--paper);max-width:900px;margin:0}
.foot{padding:50px 0 80px;border-top:1px solid var(--line);font:400 13px/1.7 var(--mono);color:var(--dim)}
.foot a{color:var(--soft)}

/* reveals */
.rv{opacity:0;transform:translateY(26px);transition:opacity .9s,transform .9s cubic-bezier(.2,.7,.2,1)}
.rv.in{opacity:1;transform:none}
.nojs .rv{opacity:1;transform:none}
.nojs .meter i{transform:none}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .drape{animation:none;transform:scaleX(.09)}
  #grain,.halo,.d .flow,.d .pulse,.knocks i,.ring i{animation:none}
  .knocks i{opacity:1}
  .rv{opacity:1;transform:none;transition:none}
  .meter i{transition:none}
}
@media(pointer:coarse){.seatmap a,.crew>div{min-height:44px}#call{top:auto;bottom:calc(14px + env(safe-area-inset-bottom));right:14px}}

/* phones */
.two>*{min-width:0}
@keyframes openm{to{transform:scaleX(.03)}}
@media(max-width:700px){
  .drape{animation-name:openm}
  .valance{height:40px}
  .hero{padding-top:76px}
  .tbl thead{display:none}
  .tbl,.tbl tbody,.tbl tr,.tbl td{display:block;width:100%}
  .tbl tr{padding:14px 0;border-bottom:1px solid var(--line)}
  .tbl td{border:0;padding:3px 0}
  .tbl td:first-child{white-space:normal;font-size:16px}
  .numeral{font-size:72px}
  .castgrid{grid-template-columns:1fr}.castgrid div{border-right:0!important}
  .bow{grid-template-columns:repeat(4,minmax(0,1fr))}
}
@media(prefers-reduced-motion:reduce) and (max-width:700px){.drape{transform:scaleX(.03)}}

/* ---------- more visuals ---------- */
.acthead.map{grid-template-columns:auto minmax(0,1fr) 230px}
.seatmini{grid-column:3;grid-row:1/3;align-self:center;width:230px}
.seatmini .rk{fill:rgba(255,255,255,.05);stroke:var(--line2);stroke-width:1}
.seatmini .st{fill:#2a1712;stroke:#5c3a2a}
.seatmini .sp{fill:var(--house);stroke:var(--dim);stroke-width:1.4}
.seatmini .on{fill:var(--gel);stroke:var(--gel);animation:pulse 2s ease-in-out infinite}
.seatmini text{font:700 9px var(--mono);fill:var(--soft);letter-spacing:.06em}
.seatmini .here{fill:var(--gel)}
@media(max-width:1000px){.acthead.map{grid-template-columns:auto minmax(0,1fr)}.seatmini{display:none}}

.vis{display:grid;gap:18px}
.vis.c2{grid-template-columns:repeat(2,minmax(0,1fr))}
.vis>*{min-width:0}
@media(max-width:820px){.vis.c2{grid-template-columns:minmax(0,1fr)}}
.d .fig-ink{fill:none;stroke:var(--paper);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.d .fig-gel{fill:none;stroke:var(--gel);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round}
.d .bub{fill:var(--paper);stroke:none}
.d .bubt{font:700 12px var(--mono);fill:#1d1410}
.d .panel{fill:rgba(255,255,255,.03);stroke:var(--line2);stroke-width:1.2}
.d .door{fill:#3a2418;stroke:#6b4a33;stroke-width:1.4}
.d .jar{fill:rgba(255,255,255,.04);stroke:var(--line2);stroke-width:1.4}
.d .jarfill{fill:var(--gel);opacity:.85}
.d .red-fill{fill:rgba(255,107,94,.25);stroke:#ff6b5e;stroke-width:1.2}
.d .gel-fill{fill:var(--gel-a);stroke:var(--gel);stroke-width:1.2}
.d .life{stroke:var(--line2);stroke-width:1.2;stroke-dasharray:3 5}
.d .msg{fill:none;stroke:var(--gel);stroke-width:1.6}
.d .msgr{fill:none;stroke:#ff6b5e;stroke-width:1.6}
.d .ret{fill:none;stroke:var(--soft);stroke-width:1.3;stroke-dasharray:5 4}
.d .tickc{fill:var(--dim)}
.d .slab{stroke-width:1.4}
.d .s1{fill:rgba(127,178,255,.16);stroke:#7fb2ff}
.d .s2{fill:rgba(141,255,138,.13);stroke:#8dff8a}
.d .s3{fill:rgba(255,211,132,.14);stroke:var(--ghost)}
.d .blast{fill:var(--gel-a);stroke:var(--gel);stroke-width:1.2;stroke-dasharray:4 5}
.d .mem{fill:none;stroke:var(--gel);stroke-width:2;stroke-dasharray:2 6;stroke-linecap:round}
.d .fun{fill:var(--gel-a);stroke:var(--gel);stroke-width:1.2}
.d .big{font:800 26px var(--display);fill:var(--paper)}
.d .bigg{font:800 22px var(--display);fill:var(--gel)}

/* launch checklist + portfolio matrix */
.check{width:100%;border-collapse:separate;border-spacing:0 6px;font-size:15px}
.check th{font:700 11.5px var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--gel);text-align:left;padding:4px 12px}
.check td{padding:12px;background:rgba(255,255,255,.03);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.check td:first-child{border-left:1px solid var(--line);border-radius:10px 0 0 10px;color:var(--paper);font-weight:600}
.check td:last-child{border-right:1px solid var(--line);border-radius:0 10px 10px 0}
.pill{display:inline-flex;align-items:center;gap:6px;font:700 11.5px/1 var(--mono);letter-spacing:.04em;padding:6px 9px;border-radius:999px;white-space:nowrap}
.pill.hand{color:#ff8f84;border:1px solid rgba(255,107,94,.5);background:rgba(255,107,94,.07)}
.pill.auto{color:var(--gel);border:1px solid var(--gel);background:var(--gel-a)}
.pill.half{color:var(--ghost);border:1px solid rgba(255,211,132,.5);background:rgba(255,211,132,.07)}
.mxp{width:100%;border-collapse:collapse;font-size:14px}
.mxp th{font:700 11px/1.25 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--gel);padding:10px 6px;text-align:center;vertical-align:bottom}
.mxp th:first-child{text-align:left}
.mxp td{padding:9px 6px;border-top:1px solid var(--line);text-align:center}
.mxp td:first-child{text-align:left;color:var(--paper);font-weight:600;white-space:nowrap}
.mxp td small{display:block;font:400 11px var(--mono);color:var(--soft);font-weight:400}
.dot{display:inline-block;width:14px;height:14px;border-radius:50%;background:var(--gel);box-shadow:0 0 10px var(--gel-a)}
.dot.no{background:transparent;border:1px solid var(--line2);box-shadow:none;width:10px;height:10px}
.mxp tr:hover td{background:rgba(255,255,255,.03)}
.legend{display:flex;flex-wrap:wrap;gap:16px;margin-top:12px;font:400 12.5px var(--mono);color:var(--soft)}
.legend span{display:inline-flex;align-items:center;gap:8px}

/* rings */
.rings{display:grid;grid-template-columns:repeat(9,minmax(0,1fr));gap:10px;margin-top:30px}
.rings div{text-align:center}
.rings svg{width:64px;height:64px}
.rings .bg{fill:none;stroke:rgba(255,255,255,.08);stroke-width:6}
.rings .fg{fill:none;stroke:var(--ghost);stroke-width:6;stroke-linecap:round;transform:rotate(-90deg);transform-origin:50% 50%;stroke-dasharray:0 176;transition:stroke-dasharray 1.6s cubic-bezier(.2,.7,.2,1)}
.rings .fg.nt{stroke:#ff6b5e}
.in .rings .fg,.rings.in .fg{stroke-dasharray:var(--a) 176}
.nojs .rings .fg{stroke-dasharray:var(--a,0) 176}
.rings span{display:block;font:400 11.5px/1.3 var(--body);color:var(--soft);margin-top:6px}
@media(max-width:900px){.rings{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(prefers-reduced-motion:reduce){.rings .fg{transition:none}}
