/* Nation of Light — v1. One scene, done properly. */
:root{
  --ivory:#FAF5EA; --ivory-2:#F1EADB; --card:#FFFDF7;
  --ink:#1E170F; --ink-soft:#5A5040; --ink-faint:#958A76;
  --line:#E6DCC6;
  --gold:#C9A227; --gold-lt:#E9CE7A; --gold-deep:#8F6F12; --gold-pale:#F8F0D8;
  --crimson:#93313D; --crimson-deep:#6E2230;
  --laurel:#4F7A4B; --laurel-lt:#79A66C;
  --marble:#EFE7D6; --marble-d:#D6CBB4;
  --night:#1F2750; --night-2:#2F3D72;
  --k-courage:#9C3A47; --k-skill:#1F5E8A; --k-kindness:#2F6B4F; --k-attention:#6B4E9E;
  --spring:cubic-bezier(0.34,1.56,0.64,1); --ease:cubic-bezier(.22,.61,.36,1);
  --r:22px; --r-sm:14px;
  --display:"Fraunces",Georgia,"Times New Roman",serif;
  --sans:Inter,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;
  --shadow:0 14px 40px rgba(40,28,10,.16),0 2px 8px rgba(40,28,10,.08);
  --shadow-lift:0 24px 60px rgba(40,28,10,.26),0 4px 12px rgba(40,28,10,.1);
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%;overflow:hidden}
body{background:var(--night);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden;
  background-image:radial-gradient(900px 600px at 50% 110%,#5A4C7A 0%,transparent 60%),radial-gradient(700px 500px at 50% -10%,#3D5FA6 0%,transparent 65%)}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer;padding:0}
h1,h2,h3{font-family:var(--display);font-weight:600;letter-spacing:-.012em;margin:0;font-variation-settings:"SOFT" 30,"WONK" 0}
[hidden]{display:none!important}

/* ---- the column: a phone, centred on a big screen ---- */
.stage{position:relative;width:100%;max-width:440px;height:100vh;height:100dvh;min-height:100%;margin:0 auto;background:var(--marble);overflow:hidden;display:flex;flex-direction:column}
@media(min-width:520px){.stage{height:min(100vh,940px);margin-top:max(0px,calc((100vh - 940px)/2));border-radius:34px;box-shadow:0 40px 120px rgba(0,0,0,.45),0 0 0 1px rgba(255,255,255,.08)}}

/* ---- the scene ---- */
.scene{position:relative;width:100%;aspect-ratio:390/470;max-height:54vh;max-height:54dvh;flex:0 0 auto;overflow:hidden;background:#2F3D72}
.scene-svg{position:absolute;inset:0;width:100%;height:100%;display:block}
.lyr{will-change:transform}
.mote{animation:mote var(--d) ease-in-out infinite;animation-delay:calc(var(--o) * -1);opacity:0}
@keyframes mote{0%{transform:translate(0,0);opacity:0}20%{opacity:.75}50%{transform:translate(6px,-14px)}80%{opacity:.6}100%{transform:translate(-4px,-26px);opacity:0}}
.bird{opacity:0;animation:fly 26s linear infinite}
.b1{animation-delay:-3s}.b2{animation-delay:-12s;animation-duration:31s}.b3{animation-delay:-20s;animation-duration:29s}
@keyframes fly{0%{transform:translate(-30px,150px) scale(1);opacity:0}5%{opacity:.7}45%{transform:translate(200px,120px) scale(.7)}50%{opacity:.6}95%{opacity:0}100%{transform:translate(420px,96px) scale(.45);opacity:0}}
.clouds ellipse{animation:cloud 60s linear infinite}
@keyframes cloud{from{transform:translateX(-20px)}to{transform:translateX(30px)}}
.fl{transform-origin:50% 100%;transform-box:fill-box}
.fl1{animation:flick 1.1s ease-in-out infinite}
.fl2{animation:flick 1.5s ease-in-out infinite reverse}
.fl3{animation:flick 1.9s ease-in-out infinite}
@keyframes flick{0%,100%{transform:scaleY(1) scaleX(1)}30%{transform:scaleY(1.08) scaleX(.94) translateX(1px)}60%{transform:scaleY(.92) scaleX(1.05) translateX(-1px)}}
.flameglow{animation:glow 2.2s ease-in-out infinite;transform-origin:50% 50%;transform-box:fill-box}
@keyframes glow{0%,100%{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.08)}}
.brazier .flame{transform-origin:50% 100%;transform-box:fill-box;transition:transform .8s var(--spring),opacity .6s}
.brazier.dim .flame{transform:scale(.55);opacity:.75}
.brazier.dim .flameglow{opacity:.35}
.brazier.out .flame,.brazier.out .flameglow{opacity:0}
.brazier.flare .flame{animation:flare .9s var(--spring) both}
@keyframes flare{0%{transform:scale(1)}35%{transform:scale(1.55,1.7)}100%{transform:scale(1)}}
.wreath.hang,.hang .wreath{animation:hang 1.1s var(--spring) both;transform-origin:center;transform-box:fill-box}
@keyframes hang{0%{transform:translateY(-60px) rotate(-14deg);opacity:0}60%{opacity:1}100%{transform:none;opacity:1}}
.lightshaft{mix-blend-mode:soft-light}

/* the figure on the pavement */
.mfig{position:absolute;left:38%;bottom:-1%;width:52%;aspect-ratio:220/330;z-index:3;cursor:pointer;transform-origin:50% 100%;transition:transform .15s var(--spring)}
.mfig:active{transform:scale(.985)}
.mfig svg{width:100%;height:100%;overflow:visible;display:block}
.mfig.walk-in{animation:walkin 1.15s var(--ease) both}
@keyframes walkin{0%{transform:translateX(60%) translateY(0)}30%{transform:translateX(38%) translateY(-1.2%)}55%{transform:translateX(18%) translateY(0)}80%{transform:translateX(4%) translateY(-.8%)}100%{transform:none}}
.mfig.is-hidden{visibility:hidden}
.bubble{position:absolute;left:3%;top:22%;width:56%;z-index:4;background:var(--card);border-radius:18px 18px 18px 4px;padding:11px 13px 9px;
  font-family:var(--display);font-weight:500;font-size:15px;line-height:1.36;color:var(--ink);box-shadow:var(--shadow);animation:bubblein .45s var(--spring) both}
.bubble::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--gold-lt),var(--gold));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.bubble::after{content:"";position:absolute;right:-10px;top:38%;border-left:12px solid var(--card);border-top:7px solid transparent;border-bottom:7px solid transparent}
.bubble span{display:inline-block}
.bubble.say span{animation:wordin .4s var(--spring) both;animation-delay:calc(var(--i) * 60ms)}
.bubble .src{display:block;margin-top:6px;font-family:var(--sans);font-size:11px;font-style:italic;color:var(--ink-faint);font-weight:500}
.bubble.companion{font-family:var(--sans);font-weight:500;font-size:14px}
@keyframes bubblein{0%{transform:translateY(8px) scale(.94)}100%{transform:none}}
@keyframes wordin{0%{opacity:.3;transform:translateY(5px)}100%{opacity:1;transform:none}}

/* ---- HUD over the entablature ---- */
.hud{position:absolute;left:0;right:0;top:9px;z-index:5;display:flex;justify-content:space-between;align-items:center;padding:0 10px;pointer-events:none}
.hud>*{pointer-events:auto}
.pill{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 12px 0 9px;border-radius:17px;background:rgba(250,245,234,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);
  box-shadow:0 4px 14px rgba(40,28,10,.14),inset 0 0 0 1px rgba(201,162,39,.35);font-weight:600;font-size:13.5px;color:var(--ink);font-family:var(--sans)}
.pill b{font-family:var(--display);font-weight:600;font-size:15px}
.pill .of{color:var(--ink-faint);font-weight:500}
.pill .flame-ic{width:16px;height:20px}
.hud .right{display:flex;gap:6px}
.round{width:34px;height:34px;border-radius:50%;background:rgba(250,245,234,.88);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 4px 14px rgba(40,28,10,.14),inset 0 0 0 1px rgba(201,162,39,.35);display:grid;place-items:center;color:var(--gold-deep);font-weight:700;font-size:15px;transition:transform .2s var(--spring)}
.round:active{transform:scale(.9)}
.round svg{width:18px;height:18px}
.round.off{color:var(--ink-faint)}

/* ---- the table: laurel bar and the tablet ---- */
.deck{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;padding:10px 14px 12px;background:linear-gradient(180deg,var(--marble) 0%,#E8DFCB 100%);z-index:2}
.deck::before{content:"";position:absolute;left:0;right:0;top:0;height:14px;background:linear-gradient(180deg,rgba(60,40,20,.14),transparent);pointer-events:none}
.laurel{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:2px 2px 8px}
.laurel .bar{flex:1;display:flex;gap:1.5px;align-items:flex-end;height:22px}
.laurel .leaf{flex:1;height:14px;border-radius:60% 0 60% 0;background:var(--marble-d);transform:rotate(-22deg);transition:background .5s,transform .6s var(--spring),height .4s var(--spring);opacity:.55}
.laurel .leaf:nth-child(even){border-radius:0 60% 0 60%;transform:rotate(22deg)}
.laurel .leaf.on{background:linear-gradient(135deg,var(--laurel-lt),var(--laurel));opacity:1;height:20px}
.laurel .leaf.popping{animation:leafpop .7s var(--spring) both}
@keyframes leafpop{0%{transform:scale(.2) rotate(-90deg)}100%{transform:scale(1) rotate(-22deg)}}
.laurel .leaf:nth-child(even).popping{animation-name:leafpop2}
@keyframes leafpop2{0%{transform:scale(.2) rotate(90deg)}100%{transform:scale(1) rotate(22deg)}}
.laurel .count{font-family:var(--display);font-weight:600;font-size:14px;color:var(--ink-soft);min-width:44px;text-align:right}
.laurel .count b{color:var(--ink);font-size:16px}
.tierline{font-size:12.5px;color:var(--ink-faint);font-weight:500;margin:0 2px 8px;letter-spacing:.01em}

.tablet{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:var(--card);border-radius:var(--r);padding:16px 18px 14px;box-shadow:var(--shadow);
  --g1:var(--gold-lt);--g2:var(--gold)}
.tablet::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:2px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.tablet.rise{animation:rise .75s var(--spring) both}
@keyframes rise{0%{transform:translateY(60px) scale(.96)}100%{transform:none}}
.tablet.sink{animation:sink .4s var(--ease) both}
@keyframes sink{0%{opacity:1;transform:none}100%{opacity:0;transform:translateY(30px) scale(.97)}}
.tablet .top{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}
.tablet .num{font-family:var(--display);font-weight:600;font-size:13px;color:var(--gold-deep);letter-spacing:.04em;text-transform:uppercase}
.kind{display:inline-flex;align-items:center;gap:5px;font-size:11.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;padding:4px 9px;border-radius:10px;color:#fff;background:var(--k)}
.kind-courage{--k:var(--k-courage)}.kind-skill{--k:var(--k-skill)}.kind-kindness{--k:var(--k-kindness)}.kind-attention{--k:var(--k-attention)}
.tablet .test{font-family:var(--display);font-weight:500;font-size:clamp(18px,5.4vw,22px);line-height:1.3;color:var(--ink);flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;display:flex;align-items:center;font-variation-settings:"SOFT" 40,"WONK" 0}
.tablet .test .w{width:100%}
.tablet .test span{display:inline-block}
.tablet .test.say span{animation:wordin .4s var(--spring) both;animation-delay:calc(var(--i) * 45ms)}
.tablet .row{display:flex;gap:10px;align-items:center;margin-top:12px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:52px;padding:0 24px;border-radius:26px;font-weight:700;font-size:17px;letter-spacing:.01em;transition:transform .18s var(--spring),box-shadow .18s;position:relative}
.btn:active{transform:scale(.96)}
.btn-gold{flex:1;background:linear-gradient(135deg,#F0D98A 0%,#C9A227 60%,#B08D1E 100%);color:#2B2210;box-shadow:0 10px 24px rgba(201,162,39,.35),inset 0 1px 0 rgba(255,255,255,.5)}
.btn-gold:hover{box-shadow:0 14px 30px rgba(201,162,39,.45),inset 0 1px 0 rgba(255,255,255,.5)}
.btn-ghost{height:44px;padding:0 16px;color:var(--ink-soft);font-weight:600;font-size:14px;background:var(--ivory-2);box-shadow:inset 0 0 0 1px var(--line)}
.btn-ghost.on{color:var(--gold-deep);box-shadow:inset 0 0 0 1.5px var(--gold-lt)}
.btn-ghost svg{width:18px;height:18px}
.btn-ghost .spk{width:18px;height:18px}
.btn-ghost.on .spk{display:none}
.btn-ghost:not(.on) .eq{display:none}
.btn-ghost .eq{display:inline-flex;gap:2px;align-items:flex-end;height:14px}
.btn-ghost .eq i{width:3px;background:var(--gold);border-radius:2px;height:5px}
.btn-ghost.on .eq i{animation:eq .8s ease-in-out infinite}
.btn-ghost.on .eq i:nth-child(2){animation-delay:.15s}.btn-ghost.on .eq i:nth-child(3){animation-delay:.3s}
@keyframes eq{0%,100%{height:5px}50%{height:14px}}
.skip{align-self:center;margin-top:8px;font-size:12.5px;color:var(--ink-faint);font-weight:500;text-decoration:underline;text-underline-offset:3px;padding:6px 10px}

/* ---- overlays: the cover, the choice, the scroll, the day's end ---- */
.veil{position:absolute;inset:0;z-index:20;display:flex;flex-direction:column;justify-content:flex-end;padding:22px 20px 26px;background:linear-gradient(180deg,rgba(31,39,80,.15) 0%,rgba(31,39,80,.55) 45%,rgba(20,24,52,.92) 100%)}
.veil.light{background:linear-gradient(180deg,rgba(250,245,234,.12) 0%,rgba(250,245,234,.3) 30%,rgba(250,245,234,.92) 58%,rgba(250,245,234,.98) 100%);justify-content:flex-end;padding-bottom:max(22px,env(safe-area-inset-bottom))}
.veil.in{animation:veilin .5s var(--ease) both}
.veil.out{animation:veilout .5s var(--ease) both;pointer-events:none}
@keyframes veilin{from{opacity:0}to{opacity:1}}
@keyframes veilout{from{opacity:1}to{opacity:0}}
.cover h1{font-size:clamp(40px,11vw,50px);line-height:1;color:#FFF7E4;text-shadow:0 6px 30px rgba(0,0,0,.35);font-weight:600}
.cover .em{display:block;font-size:.5em;letter-spacing:.14em;text-transform:uppercase;font-family:var(--sans);font-weight:600;color:var(--gold-lt);margin-bottom:12px}
.cover p{color:rgba(255,247,228,.86);font-size:16px;line-height:1.5;margin:14px 0 22px;max-width:34ch}
.cover .btn-gold{width:100%;height:58px;font-size:18px}
.cover .small{margin-top:14px;font-size:12px;color:rgba(255,247,228,.55);text-align:center}
.panel{background:var(--card);border-radius:var(--r);padding:22px 20px 20px;box-shadow:var(--shadow-lift);position:relative;--g1:var(--gold-lt);--g2:var(--gold);animation:panelin .6s var(--spring) both}
.panel::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:2px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
@keyframes panelin{0%{transform:translateY(30px) scale(.96)}100%{transform:none}}
.panel h2{font-size:26px;line-height:1.15;margin-bottom:6px}
.panel .lede{color:var(--ink-soft);font-size:15px;line-height:1.5;margin:0 0 16px}
.choices{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.choice{position:relative;background:var(--ivory);border-radius:18px;padding:18px 12px 14px;text-align:center;--g1:var(--gold-lt);--g2:var(--gold);transition:transform .2s var(--spring)}
.choice::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:2px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.choice:active{transform:scale(.96)}
.choice b{display:block;font-family:var(--display);font-weight:600;font-size:38px;line-height:1;color:var(--ink)}
.choice small{display:block;margin-top:6px;font-size:12.5px;color:var(--ink-soft);font-weight:600;letter-spacing:.04em;text-transform:uppercase}
.choice em{display:block;font-style:normal;margin-top:8px;font-size:12px;color:var(--ink-faint);line-height:1.35}
.choice.ninety{--g1:#B8A5D8;--g2:#6B4E9E}
.panel .foot{font-size:12.5px;color:var(--ink-faint);line-height:1.45;margin:0}
.scroll{background:linear-gradient(180deg,#FBF4E2 0%,#F3E8CF 100%)}
.scroll h2{font-size:22px}
.scroll .eyebrow{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--gold-deep);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.scroll .eyebrow i{width:26px;height:1.5px;background:var(--gold)}
.scroll .text{font-family:var(--display);font-weight:500;font-size:17.5px;line-height:1.45;color:var(--ink);margin:8px 0 12px}
.scroll .who{font-size:12px;color:var(--ink-faint);font-style:italic;margin-bottom:16px}
.scroll .row,.today .row{display:flex;gap:10px}
.scroll .row .btn,.today .row .btn{flex:1;white-space:nowrap}
.today .row .btn-gold{flex:1.35}
.today .row .btn-ghost{padding:0 12px}
.today h2{font-size:28px}
.today .flamebig{width:64px;height:78px;margin:0 auto 6px;display:block}
.today .stat{display:flex;justify-content:center;gap:22px;margin:10px 0 16px}
.today .stat div{text-align:center}
.today .stat b{display:block;font-family:var(--display);font-size:30px;font-weight:600;line-height:1}
.today .stat small{display:block;font-size:11.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--ink-faint);margin-top:4px}
.quote{background:var(--ivory);border-radius:14px;padding:12px 48px 12px 14px;margin:0 0 16px;font-family:var(--display);font-weight:500;font-size:15.5px;line-height:1.4;position:relative}
.quote .src{display:block;font-family:var(--sans);font-size:11px;font-style:italic;color:var(--ink-faint);margin-top:6px}
.quote .play{position:absolute;right:10px;top:10px;width:28px;height:28px;border-radius:50%;background:var(--card);box-shadow:inset 0 0 0 1.3px var(--gold-lt);display:grid;place-items:center;color:var(--gold-deep)}
.quote .play svg{width:13px;height:13px}
.help{position:absolute;inset:auto 12px 12px 12px;z-index:30}
.help .panel{padding:18px 18px 14px}
.help h3{font-size:18px;margin-bottom:8px}
.help ul{margin:0;padding-left:18px;font-size:14px;color:var(--ink-soft);line-height:1.5}
.help li+li{margin-top:5px}
.help .close{margin-top:12px;width:100%}
.ver{position:absolute;right:10px;bottom:6px;z-index:6;font-size:10.5px;color:rgba(30,23,15,.35);font-weight:600;letter-spacing:.04em}
.toast{position:absolute;left:50%;bottom:18px;transform:translateX(-50%);z-index:40;background:var(--ink);color:#FFF7E4;font-size:13.5px;font-weight:600;padding:10px 16px;border-radius:14px;box-shadow:var(--shadow-lift);animation:panelin .45s var(--spring) both;white-space:nowrap}
/* leaves falling when a deck is done */
.leaffall{position:absolute;top:-20px;width:12px;height:20px;border-radius:60% 0 60% 0;background:linear-gradient(135deg,var(--laurel-lt),var(--laurel));z-index:25;pointer-events:none;animation:leaffall linear both}
@keyframes leaffall{0%{transform:translateY(0) rotate(0);opacity:1}100%{transform:translateY(110vh) rotate(720deg);opacity:.2}}
@media(prefers-reduced-motion:reduce){*{animation-duration:.01ms!important;animation-iteration-count:1!important}.mote{opacity:.4}}

/* ---- v2: the fallback line, the tier card, the medallion, the cover reveal ---- */
.tablet .fall{font-size:13px;line-height:1.4;color:var(--ink-soft);margin-top:6px;padding:8px 10px 8px 12px;border-left:3px solid var(--gold-lt);background:var(--gold-pale);border-radius:0 10px 10px 0}
.tablet .fall:empty{display:none}
.tablet .fall b{color:var(--gold-deep);font-weight:700}
.tiercard .row,.whatcard .row{display:flex}
.tiercard .eyebrow{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--gold-deep);margin-bottom:6px;display:flex;align-items:center;gap:8px}
.tiercard .eyebrow i{width:26px;height:1.5px;background:var(--gold)}
.tiercard h2{font-size:24px;margin-bottom:8px}
.tiercard .lesson{font-size:15.5px;line-height:1.5;color:var(--ink);margin:0 0 14px}
.mq{display:grid;grid-template-columns:54px 1fr;gap:12px;align-items:start;background:var(--ivory);border-radius:16px;padding:12px 12px 12px 12px;margin-bottom:16px;position:relative}
.medal{width:54px;height:54px;border-radius:50%;overflow:hidden;box-shadow:0 0 0 2px var(--gold),0 6px 14px rgba(40,28,10,.18);background:#E9DBB8}
.medal img{width:100%;height:100%;object-fit:cover;display:block}
.medal.on{animation:medal 1s ease-in-out infinite}
@keyframes medal{0%,100%{box-shadow:0 0 0 2px var(--gold),0 6px 14px rgba(40,28,10,.18)}50%{box-shadow:0 0 0 5px var(--gold-lt),0 6px 18px rgba(201,162,39,.35)}}
.mq .q{font-family:var(--display);font-weight:500;font-size:15.5px;line-height:1.4;color:var(--ink);padding-right:34px}
.mq .who{font-family:var(--sans);font-size:11.5px;color:var(--ink-faint);font-style:italic;margin-top:5px;display:block}
.mq .who b{font-style:normal;color:var(--ink-soft);font-weight:600}
.mq .play{position:absolute;right:10px;top:10px;width:28px;height:28px;border-radius:50%;background:var(--card);box-shadow:inset 0 0 0 1.3px var(--gold-lt);display:grid;place-items:center;color:var(--gold-deep)}
.mq .play svg{width:13px;height:13px}
.cover .what{align-self:center;margin-top:12px;font-size:13.5px;font-weight:600;color:var(--gold-lt);text-decoration:underline;text-underline-offset:3px;padding:6px 10px}
.cover .em{animation:reveal .9s var(--ease) both}
.cover h1 .t{display:block;animation:reveal 1s var(--ease) both;animation-delay:.25s}
.cover p{animation:reveal 1s var(--ease) both;animation-delay:.55s}
.cover .btn-gold{animation:reveal .9s var(--spring) both;animation-delay:.9s}
@keyframes reveal{0%{transform:translateY(14px)}100%{transform:none}}
.whatcard .who{font-size:12px;color:var(--ink-faint);font-style:italic;margin:0 0 14px}
.whatcard p{font-size:15px;line-height:1.5;color:var(--ink);margin:0 0 10px}

/* ---- v3: Light School ---- */
.cover .em{font-size:14px;letter-spacing:.18em;color:var(--gold-lt);margin-bottom:8px}
.cover h1 .t{font-size:clamp(46px,13vw,58px)}
.cover p .ln{display:block;margin-bottom:9px}
.cover p .ln:first-child{color:#FFF7E4;font-weight:600}
.tablet .top .kind[hidden]{display:none}
.tablet .test .w{margin:auto 0}

/* ---- v6: the doors open ---- */
.cover.intro{justify-content:center}
.cover.intro p{font-family:var(--display);font-weight:500;font-size:clamp(19px,5.6vw,23px);line-height:1.38;color:#FFF7E4;max-width:none;margin:0 0 18px}
.cover.intro .p1 .ln,.cover.intro .p2 .ln{color:#FFF7E4;font-weight:500;margin:0}
.cover.intro .p1{animation:reveal 1.2s var(--ease) both}
.cover.intro .p2.arrive{animation:reveal 1.2s var(--ease) both}
.cover.intro .btn-gold{animation-delay:1.6s;margin-top:8px}
.veil.deep{background:linear-gradient(180deg,rgba(24,28,58,.62) 0%,rgba(24,28,58,.8) 40%,rgba(18,22,48,.94) 100%)}

/* ---- v7: Aurelia, and the welcome ---- */
.afig{position:absolute;left:2%;bottom:-1%;width:48%;aspect-ratio:220/330;z-index:3;transform-origin:50% 100%}
.afig svg{width:100%;height:100%;overflow:visible;display:block}
.afig.is-hidden{visibility:hidden}
.afig.walk-in-l{animation:walkinl 1.15s var(--ease) both}
@keyframes walkinl{0%{transform:translateX(-60%)}30%{transform:translateX(-38%) translateY(-1.2%)}55%{transform:translateX(-18%)}80%{transform:translateX(-4%) translateY(-.8%)}100%{transform:none}}
.afig.walk-out-l{animation:walkoutl 1s var(--ease) both}
@keyframes walkoutl{0%{transform:none}100%{transform:translateX(-70%)}}
.cover .tag{font-family:var(--display);font-weight:500;font-size:clamp(19px,5.4vw,23px);line-height:1.3;color:#FFF7E4;margin:10px 0 22px;max-width:none}
.tablet.welcome{--g1:#F3E3A8;--g2:var(--gold)}
.tablet.welcome .num{font-size:12px}
.tablet.welcome .test{font-size:clamp(19px,5.6vw,23px)}
.tablet.welcome .skip{margin-top:auto}
.btn.arrive{animation:panelin .6s var(--spring) both}

/* short viewports (a phone browser with its toolbars): tighter deck, the text always readable */
@media (max-height:740px){
  .deck{padding:6px 12px 8px}
  .tierline{display:none}
  .laurel{padding-bottom:4px}
  .laurel .bar{height:18px}
  .tablet{padding:10px 14px 8px}
  .tablet .top{margin-bottom:4px}
  .tablet .test{font-size:clamp(17px,4.8vw,19px);line-height:1.28}
  .tablet .fall{font-size:12px;padding:6px 8px 6px 10px;margin-top:4px}
  .tablet .row{margin-top:6px}
  .btn{height:46px}
  .btn-ghost{height:40px}
  .skip{margin-top:2px;padding:4px 10px}
}
@media (max-height:740px){ .scene{max-height:46vh;max-height:46dvh} .mfig{width:44%;left:42%} .afig{width:41%;left:3%} .bubble{top:16%;width:54%;font-size:14px;padding:9px 11px 8px} .hud{top:6px} .nameplate{bottom:1%} }
@media (max-height:640px){ .scene{max-height:40vh;max-height:40dvh} .mfig{width:40%;left:44%} .afig{width:37%;left:4%} .tablet .fall{display:none} }
/* who is speaking */
.bubble .who{display:block;margin-top:5px;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gold-deep)}
.bubble .src{margin-top:3px}
.nameplate{position:absolute;bottom:2%;z-index:4;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#FFF7E4;background:rgba(30,23,15,.55);padding:4px 9px;border-radius:9px;pointer-events:none;animation:panelin .6s var(--spring) both}
.nameplate.m{left:55%}.nameplate.a{left:12%}

/* ---- v9: sparks on Done; plates that fade ---- */
.spark{position:absolute;width:6px;height:6px;border-radius:50%;background:radial-gradient(circle,#FFF3C4 0%,#F0C64A 55%,rgba(240,198,74,0) 100%);z-index:4;pointer-events:none;animation:spark 1.4s var(--ease) both}
@keyframes spark{0%{transform:translate(0,0) scale(.6);opacity:0}15%{opacity:1}100%{transform:translate(var(--dx),var(--dy)) scale(1.1);opacity:0}}
.nameplate.fade{animation:platefade .8s var(--ease) both}
@keyframes platefade{to{opacity:0;transform:translateY(6px)}}
.deck.measuring .tablet{animation:none!important;transform:none!important}
.deck.measuring .tablet .test span{animation:none!important;transform:none!important}

/* ---- v11: her bubble, over her head; she is tappable ---- */
.afig{cursor:pointer}
.abubble{left:4%;top:2%;width:60%;border-radius:18px 18px 18px 4px;font-family:var(--sans);font-weight:500;font-size:14px}
.abubble::after{right:auto;left:22%;top:auto;bottom:-9px;border-left:7px solid transparent;border-right:7px solid transparent;border-top:12px solid var(--card)}

/* ---- v12: the door ---- */
.doorcard .eyebrow{font-size:11.5px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--gold-deep);margin-bottom:6px;display:flex;align-items:center;gap:8px}
.doorcard .eyebrow i{width:26px;height:1.5px;background:var(--gold)}
.doorcard form{display:flex;flex-direction:column;gap:10px}
.doorcard label{display:flex;flex-direction:column;gap:4px;font-size:12.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-soft)}
.doorcard input,.doorcard textarea{font:inherit;font-size:16px;font-weight:500;color:var(--ink);background:var(--ivory);border:0;border-radius:12px;padding:10px 12px;box-shadow:inset 0 0 0 1.4px var(--line);outline:none}
.doorcard input:focus,.doorcard textarea:focus{box-shadow:inset 0 0 0 1.6px var(--gold)}
.doorcard .whichl{font-size:12.5px;font-weight:700;letter-spacing:.03em;color:var(--ink-soft)}
.doorcard .which{display:flex;flex-direction:column;gap:6px;margin-bottom:4px}
.doorcard .opt{flex-direction:row;align-items:center;gap:10px;font-size:14px;font-weight:500;color:var(--ink);background:var(--ivory);border-radius:12px;padding:9px 12px;box-shadow:inset 0 0 0 1.4px var(--line);letter-spacing:0}
.doorcard .opt:has(input:checked){box-shadow:inset 0 0 0 1.8px var(--gold);background:var(--gold-pale)}
.doorcard .opt input{accent-color:var(--gold-deep);margin:0}
.doorcard .what.dark{color:var(--gold-deep);width:100%;text-align:center;margin-top:6px}
.doorcard h2{font-size:24px;margin:6px 0 8px}
.veil.light:has(.doorcard){overflow-y:auto;justify-content:flex-start;padding-top:max(14px,env(safe-area-inset-top))}
.btn.arrive{animation:pulsebtn 1.6s ease-in-out infinite}
@keyframes pulsebtn{0%,100%{box-shadow:0 10px 24px rgba(201,162,39,.35)}50%{box-shadow:0 12px 34px rgba(201,162,39,.7),0 0 0 6px rgba(201,162,39,.18)}}

/* ---- v14: the school ---- */
.stage.school .scene{max-height:36vh;max-height:36dvh}
.stage.school .mfig{width:40%;left:47%}
.stage.school .afig{width:37%;left:4%}
.stage.school .bubble{top:6%;width:52%;font-size:13.5px;padding:8px 10px 7px}
.school{position:relative;flex:1 1 auto;min-height:0;display:flex;flex-direction:column;background:linear-gradient(180deg,var(--marble) 0%,#E8DFCB 100%);z-index:2}
.school::before{content:"";position:absolute;left:0;right:0;top:0;height:14px;background:linear-gradient(180deg,rgba(60,40,20,.14),transparent);pointer-events:none;z-index:1}
.scap{margin:10px 12px 0;background:var(--card);border-radius:14px;padding:9px 12px;font-family:var(--display);font-weight:500;font-size:14.5px;line-height:1.35;color:var(--ink);box-shadow:var(--shadow);animation:panelin .5s var(--spring) both}
.scap b{display:block;font-family:var(--sans);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:2px}
.stabs{display:flex;gap:6px;padding:10px 12px 6px}
.stab{flex:1;height:36px;border-radius:18px;font-weight:700;font-size:13px;color:var(--ink-soft);background:var(--ivory-2);box-shadow:inset 0 0 0 1px var(--line);position:relative;transition:transform .2s var(--spring)}
.stab:active{transform:scale(.96)}
.stab.on{color:#2B2210;background:linear-gradient(135deg,#F0D98A 0%,#C9A227 100%);box-shadow:0 6px 16px rgba(201,162,39,.3)}
.sline{font-size:12.5px;color:var(--ink-faint);font-weight:500;margin:0 14px 6px}
.slist{flex:1 1 auto;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:2px 12px 16px;display:flex;flex-direction:column;gap:8px}
.srow{position:relative;text-align:left;background:var(--card);border-radius:16px;padding:11px 14px 11px 16px;display:flex;flex-direction:column;gap:3px;box-shadow:var(--shadow);--g1:var(--c2);--g2:var(--c);transition:transform .2s var(--spring)}
.srow::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.srow:active{transform:scale(.985)}
.scat{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--c)}
.stest{font-family:var(--display);font-weight:500;font-size:16px;line-height:1.3;color:var(--ink)}
.sline2{font-size:12.5px;color:var(--ink-soft)}
.sprog{display:block;height:5px;border-radius:3px;background:var(--ivory-2);margin-top:5px;overflow:hidden}
.sprog i{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--c2),var(--c))}
.snum{position:absolute;right:14px;top:11px;font-size:11px;font-weight:700;color:var(--ink-faint)}
.sempty{padding:20px 6px;color:var(--ink-faint);font-size:14px;text-align:center}
.cpills{display:flex;flex-wrap:wrap;gap:6px;padding:2px 0 6px}
.cpill{font-size:12px;font-weight:700;padding:7px 11px;border-radius:14px;background:var(--card);color:var(--c);box-shadow:inset 0 0 0 1.4px var(--c2);transition:transform .2s var(--spring)}
.cpill:active{transform:scale(.95)}
.cpill.on{background:var(--c);color:#fff;box-shadow:0 6px 14px rgba(0,0,0,.12)}
.catline{font-size:13px;color:var(--ink-soft);padding:2px 4px 6px;border-left:3px solid var(--c);padding-left:10px;margin-bottom:2px}
.sheet{--g1:var(--c2);--g2:var(--c)}
.sheet .eyebrow{font-size:11px;letter-spacing:.1em;text-transform:uppercase;font-weight:700;color:var(--c);margin-bottom:8px;display:flex;align-items:center;gap:8px}
.sheet .eyebrow i{width:22px;height:1.5px;background:var(--c)}
.sheet h2{font-size:24px;margin-bottom:4px}
.sheet .stestbig{font-family:var(--display);font-weight:500;font-size:clamp(19px,5.4vw,23px);line-height:1.3;color:var(--ink);margin:4px 0 12px}
.sheet .how{margin:0 0 14px;padding-left:18px;font-size:14px;line-height:1.5;color:var(--ink-soft)}
.sheet .how li+li{margin-top:4px}
/* a trophy's own count against its round target */
.awprog{margin:6px 0 14px}
.awprog .rf-n{display:flex;align-items:baseline;gap:8px;justify-content:center;margin-bottom:8px}
.awprog .rf-n b{font-family:var(--display);font-weight:600;font-size:34px;line-height:1;color:var(--ink)}
.awprog .rf-n small{font-size:13px;font-weight:700;color:var(--ink-soft)}
.awprog .lvl{max-width:260px;margin:0 auto}
/* more from us: the other apps and the address */
.appsfold .lede{margin:0 0 4px}
.apptitle{font-family:var(--display);font-weight:600;font-size:26px;line-height:1.15;margin:2px 0 6px;color:var(--ink)}
.approw{display:grid;grid-template-columns:48px 1fr auto;gap:12px;align-items:center;text-decoration:none;color:inherit;padding:10px 0;border-top:1px solid var(--line)}
.appsfold .contactcard{border-top:1px solid var(--line);padding-top:12px;margin-top:4px}
.approw img{width:48px;height:48px;border-radius:12px;box-shadow:0 3px 10px rgba(40,28,10,.18)}
.approw strong{display:block;font-family:var(--display);font-weight:600;font-size:17px;color:var(--ink)}
.approw small{display:block;font-size:13px;line-height:1.4;color:var(--ink-soft);margin-top:2px}
.approw .appopen{font-size:12.5px;font-weight:800;letter-spacing:.04em;color:var(--gold-deep);padding:7px 11px;border-radius:14px;box-shadow:inset 0 0 0 1.5px var(--gold)}
.contactcard .addr b{display:block;font-family:var(--display);font-size:19px;text-align:center;margin:4px 0 12px;color:var(--ink);word-break:break-all}
/* the little one (v47): who is holding the phone */
.whostrip{display:flex;gap:8px;justify-content:center;margin:0 0 10px;flex-wrap:wrap}
.wpill{height:34px;padding:0 15px;border-radius:17px;font-weight:700;font-size:13.5px;color:var(--ink-soft);background:var(--ivory-2);box-shadow:inset 0 0 0 1px var(--line);transition:transform .2s var(--spring)}
.wpill:active{transform:scale(.95)}
.wpill.on{color:#2B2210;background:linear-gradient(135deg,#F0D98A 0%,#C9A227 100%);box-shadow:0 6px 16px rgba(201,162,39,.3)}
.wpill.add{background:transparent;box-shadow:inset 0 0 0 1.5px var(--gold);color:var(--gold-deep)}
.standcard .kidname{display:block;text-align:center;color:var(--gold-deep);margin:0 0 6px}
.kidcard .lede{margin:0 0 6px}
.kidcard .crow.done{opacity:.6}
.homebtn.kid{background:linear-gradient(135deg,#F0D98A 0%,#C9A227 100%);box-shadow:0 4px 14px rgba(201,162,39,.35)}
.homebtn.kid .stitle{color:#2B2210;max-width:30vw;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.kidpanel .field{display:block;margin:0 0 14px}
.kidpanel .field span{display:block;font-size:12px;font-weight:800;letter-spacing:.06em;text-transform:uppercase;color:var(--gold-deep);margin:0 0 6px}
.kidpanel .field input{width:100%;height:46px;border-radius:14px;border:0;box-shadow:inset 0 0 0 1.5px var(--line);background:var(--ivory);padding:0 14px;font:inherit;font-size:17px;color:var(--ink)}
.kidpanel .field input:focus{outline:none;box-shadow:inset 0 0 0 2px var(--gold)}
/* the other-hand twist: one small gold line under a rung */
.twist{font-size:13.5px;line-height:1.45;color:var(--ink-soft);margin:0 0 14px;padding:7px 12px;border-radius:12px;background:linear-gradient(90deg,rgba(212,175,55,.14),transparent)}
.twist b{color:var(--gold-deep,#8A6B14);font-weight:800;margin-right:4px}
.acard .twist{margin:8px 0 0}
.sheet .note{font-size:14px;line-height:1.5;color:var(--ink-soft);margin:0 0 14px;padding:9px 12px;background:var(--ivory);border-radius:12px;border-left:3px solid var(--c)}
.sheet .row{display:flex;gap:10px}
.sheet .row .btn-gold{flex:1}
.sheet .steps{display:flex;flex-direction:column;gap:6px;margin:10px 0 12px;max-height:46vh;overflow-y:auto}
.sheet .step{display:grid;grid-template-columns:28px 1fr;gap:8px;align-items:start;text-align:left;font-size:14px;line-height:1.35;color:var(--ink);background:var(--ivory);border-radius:12px;padding:9px 10px;box-shadow:inset 0 0 0 1px var(--line)}
.sheet .step b{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;background:var(--card);color:var(--ink-soft);box-shadow:inset 0 0 0 1.3px var(--line)}
.sheet .step.done{color:var(--ink-faint)}
.sheet .step.done b{background:var(--laurel);color:#fff;box-shadow:none}
.sheet .step.act{box-shadow:inset 0 0 0 1.8px var(--c);background:var(--card)}
.sheet .step.act b{background:var(--c);color:#fff;box-shadow:none}
.sheet .what.dark{color:var(--gold-deep);width:100%;text-align:center;margin-top:4px}
.veil.light:has(.sheet){overflow-y:auto;justify-content:flex-end}

/* ---- v15: the school full screen; the two of them pop in at the edge; a band only inside a room ---- */
.stage.school .scene{display:none}
.stage.school.room .scene{display:block;max-height:30vh;max-height:30dvh}
.stage.school.room .mfig{width:38%;left:50%}
.stage.school.room .afig{width:35%;left:5%}
.stage.school.room .bubble{top:4%;width:52%;font-size:13px;padding:8px 10px 7px}
.stage.school.room .abubble{top:4%;left:4%;width:56%}
.stage.school.room .hud{display:none}
.shead{display:flex;align-items:center;justify-content:space-between;padding:max(10px,env(safe-area-inset-top)) 12px 4px;position:relative;z-index:2}
.stitle{font-family:var(--display);font-weight:600;font-size:20px;color:var(--ink);letter-spacing:-.01em}
.shead .hud{position:static;padding:0;gap:6px;flex:0 0 auto}
.stage.school.room .shead{display:none}
.school .ghead{padding:10px 4px 4px}
.school .ghead h3{font-family:var(--display);font-weight:600;font-size:17px;color:var(--ink);margin:0}
.school .ghead p{margin:2px 0 0;font-size:12.5px;color:var(--ink-faint)}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:6px}
.tile{position:relative;text-align:left;border-radius:16px;overflow:hidden;background:var(--card);box-shadow:var(--shadow);--g1:var(--c2);--g2:var(--c);aspect-ratio:1/0.95;display:flex;flex-direction:column;transition:transform .2s var(--spring)}
.tile::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:2}
.tile:active{transform:scale(.97)}
.tile img{width:100%;height:58%;object-fit:cover;display:block}
.tile .tname{font-family:var(--display);font-weight:600;font-size:15px;line-height:1.15;color:var(--ink);padding:8px 10px 0}
.tile .tnum{font-size:11px;font-weight:700;letter-spacing:.04em;color:var(--c);padding:3px 10px 8px;margin-top:auto}
.chead{display:flex;align-items:center;gap:10px;text-align:left;padding:8px 2px 6px;margin-top:4px}
.chead img{width:44px;height:30px;object-fit:cover;border-radius:8px;box-shadow:0 0 0 1.5px var(--c)}
.chead span{font-family:var(--display);font-weight:600;font-size:15px;color:var(--c)}
.srow.pic{flex-direction:row;align-items:center;gap:11px;padding:9px 12px 9px 10px}
.srow.pic img{width:64px;height:48px;object-fit:cover;border-radius:10px;flex:0 0 auto;box-shadow:0 0 0 1.2px var(--c2)}
.srow.pic .stxt{display:flex;flex-direction:column;gap:2px;min-width:0;flex:1}
.srow.pic .stest{font-size:15px}
.srow.pic .sprog{margin-top:4px}
.srow.pic .snum{position:static;flex:0 0 auto;margin-left:6px}
.sback{align-self:flex-start;font-size:13.5px;font-weight:700;color:var(--gold-deep);padding:10px 4px 4px}
.roomhead{position:relative;border-radius:18px;overflow:hidden;box-shadow:var(--shadow);margin-bottom:4px;--g1:var(--c2);--g2:var(--c)}
.roomhead::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:2}
.roomhead img{width:100%;height:96px;object-fit:cover;display:block}
.roomhead div{padding:9px 12px 11px;background:var(--card)}
.roomhead h2{font-size:20px;margin:0}
.roomhead p{margin:3px 0 0;font-size:13px;color:var(--ink-soft);line-height:1.4}
/* the pop layer: they arrive at the bottom edge, in front of everything, and leave */
.pop{position:absolute;inset:0;z-index:30;pointer-events:none;overflow:hidden}
.pop .mfig,.pop .afig{position:absolute;bottom:-2%;width:36%;pointer-events:auto;z-index:31}
.pop .mfig{left:auto;right:2%}
.pop .afig{left:2%}
.pop .mfig.is-hidden,.pop .afig.is-hidden{visibility:hidden}
.pop .popin{animation:popin .7s var(--spring) both}
.pop .mfig.popout,.pop .afig.popout{animation:popout .6s var(--ease) both}
@keyframes popin{0%{transform:translateY(70%)}100%{transform:none}}
@keyframes popout{0%{transform:none}100%{transform:translateY(80%)}}
.pop .bubble{position:absolute;left:auto;right:4%;top:auto;bottom:31%;width:64%;pointer-events:auto;border-radius:18px 18px 4px 18px;z-index:32}
.pop .bubble::after{right:22px;left:auto;top:auto;bottom:-9px;border-left:7px solid transparent;border-right:7px solid transparent;border-top:12px solid var(--card)}
.pop .abubble{position:absolute;left:4%;right:auto;top:auto;bottom:31%;width:64%;border-radius:18px 18px 18px 4px}
.pop .abubble::after{left:22px;right:auto;top:auto;bottom:-9px;border-left:7px solid transparent;border-right:7px solid transparent;border-top:12px solid var(--card)}
.pop .spark{display:none}

.pop .bubble,.pop .abubble{display:none!important}
.stage.school.room .bubble,.stage.school.room .abubble{display:none!important}
.popcap{position:absolute;left:12px;right:12px;bottom:calc(31% + 6px);z-index:33;background:var(--card);border-radius:16px;padding:10px 13px 9px;font-family:var(--display);font-weight:500;font-size:15px;line-height:1.36;color:var(--ink);box-shadow:var(--shadow-lift);pointer-events:none;animation:panelin .45s var(--spring) both}
.popcap::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--gold-lt),var(--gold));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.popcap b{display:block;font-family:var(--sans);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:3px}
.popcap i{display:block;font-family:var(--sans);font-size:11px;font-style:italic;color:var(--ink-faint);margin-top:4px}
.popcap span{display:inline-block}
.popcap.say span{animation:wordin .4s var(--spring) both;animation-delay:calc(var(--i) * 45ms)}
.stage.school.room .popcap{bottom:auto;top:calc(30vh + 8px);top:calc(30dvh + 8px)}

/* ---- v16: the arrival, the one card, the long game ---- */
.stage.school.arrive .scene{display:block;max-height:40vh;max-height:40dvh}
.stage.school.arrive .mfig{width:40%;left:48%}
.stage.school.arrive .afig{width:37%;left:4%}
.stage.school.arrive .shead{display:none}
.stage.school.arrive .hud{display:none}
.stage.school.arrive .bubble,.stage.school.arrive .abubble{display:none!important}
.stage.school.arrive .popcap{bottom:auto;top:calc(40vh + 8px);top:calc(40dvh + 8px)}
.acard{position:relative;background:var(--card);border-radius:18px;padding:14px 14px 12px;box-shadow:var(--shadow);--g1:var(--gold-lt);--g2:var(--gold);display:flex;flex-direction:column;gap:8px}
.acard::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.acard .eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--gold-deep)}
.acard .lede{margin:0;font-size:14px;line-height:1.45;color:var(--ink-soft)}
.acard h3{font-size:18px;margin:0}
.acard.post{--g1:#B8A5D8;--g2:#6B4E9E}
.acard.post .eyebrow{color:#6B4E9E}
.acard.post p{margin:0;font-size:14.5px;line-height:1.45;color:var(--ink)}
.stand{display:grid;grid-template-columns:1fr 1fr 1fr;gap:6px;text-align:center}
.stand b{display:block;font-family:var(--display);font-size:26px;font-weight:600;line-height:1;color:var(--ink)}
.stand small{display:block;font-size:10.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:700;color:var(--ink-faint);margin-top:4px}
.lvl{height:8px;border-radius:4px;background:var(--ivory-2);overflow:hidden}
.lvl i{display:block;height:100%;border-radius:4px;background:linear-gradient(90deg,var(--gold-lt),var(--gold));transition:width .8s var(--spring)}
.pick{display:grid;grid-template-columns:56px 1fr;gap:10px;align-items:start;padding:8px 0;border-top:1px solid var(--line)}
.pick:first-of-type{border-top:0}
.pick img{width:56px;height:44px;object-fit:cover;border-radius:10px;box-shadow:0 0 0 1.2px var(--c2)}
.pick .ptxt{display:flex;flex-direction:column;gap:2px;min-width:0}
.pick .stest{font-size:14.5px}
.pick .pbtns{grid-column:2;display:flex;gap:8px;margin-top:2px}
.btn.sm{height:38px;padding:0 14px;font-size:13.5px;border-radius:19px}
.acard.one{--g1:var(--c2);--g2:var(--c)}
.acard.one img{width:100%;height:120px;object-fit:cover;border-radius:12px}
.acard.one .stestbig{font-family:var(--display);font-weight:500;font-size:clamp(19px,5.4vw,22px);line-height:1.3;color:var(--ink)}
.acard.one .row{display:flex;gap:8px;margin-top:2px}
/* NOT `.week .wrow` — the strip is used on the home card and in the run panel
   too, and scoping it to one container stacked the days vertically. Same trap
   as `.sheet .step` (v35). */
.wrow{display:flex;justify-content:space-between;gap:4px}
.wk{flex:1;display:flex;flex-direction:column;align-items:center;gap:4px}
.wk i{width:22px;height:26px;border-radius:50% 50% 50% 50%/60% 60% 40% 40%;background:var(--ivory-2);box-shadow:inset 0 0 0 1px var(--line)}
.wk.on i{background:linear-gradient(180deg,#FFD36B,#E0812A);box-shadow:0 4px 10px rgba(224,129,42,.35)}
.wk.td b{color:var(--gold-deep)}
.wk b{font-size:10.5px;color:var(--ink-faint)}
.week p{margin:0;font-size:12.5px;color:var(--ink-soft);text-align:center}
.thought{background:var(--ivory);border-radius:14px;padding:10px 14px;font-size:14px;color:var(--ink-soft)}
.thought summary{cursor:pointer;font-weight:700;color:var(--gold-deep);font-size:13px;letter-spacing:.02em}
.thought p{font-family:var(--display);font-weight:500;font-size:16px;line-height:1.4;color:var(--ink);margin:8px 0 4px}
.thought i{font-size:11px;color:var(--ink-faint)}
.proj{border-top:1px solid var(--line);padding:10px 0 6px;display:flex;flex-direction:column;gap:6px}
.proj:first-of-type{border-top:0}
.ptop{display:grid;grid-template-columns:52px 1fr 28px;gap:10px;align-items:center}
.ptop img{width:52px;height:40px;object-fit:cover;border-radius:9px;box-shadow:0 0 0 1.2px var(--c2)}
.ptop strong{display:block;font-family:var(--display);font-weight:600;font-size:16px;color:var(--ink)}
.ptop small{font-size:12px;color:var(--c);font-weight:700}
.px{width:28px;height:28px;border-radius:50%;color:var(--ink-faint);font-size:18px;line-height:1;background:var(--ivory-2)}
.pdots{display:flex;gap:5px}
.pdots i{flex:1;height:7px;border-radius:4px;background:var(--ivory-2);box-shadow:inset 0 0 0 1px var(--line)}
.pdots i.on{background:linear-gradient(90deg,var(--c2),var(--c));box-shadow:none}
.pnext{margin:0;font-family:var(--display);font-weight:500;font-size:15px;line-height:1.35;color:var(--ink)}
.proj .row{display:flex;gap:8px}
.pickp{display:grid;grid-template-columns:52px 1fr auto;gap:10px;align-items:center;text-align:left;padding:9px 0;border-top:1px solid var(--line)}
.pickp:first-of-type{border-top:0}
.pickp img{width:52px;height:40px;object-fit:cover;border-radius:9px;box-shadow:0 0 0 1.2px var(--c2)}
.pickp strong{display:block;font-family:var(--display);font-weight:600;font-size:15.5px;color:var(--ink)}
.pickp small{display:block;font-size:12.5px;color:var(--ink-soft);line-height:1.3}
.pickp em{font-style:normal;font-size:12px;font-weight:700;color:var(--c);white-space:nowrap}
.slist .what.dark{color:var(--gold-deep);width:100%;text-align:center;padding:8px}

/* ---- v17: the portico room, the feed, the tour ---- */
.shead .roombtn{width:34px;height:34px;border-radius:50%;background:rgba(250,245,234,.9);box-shadow:0 4px 14px rgba(40,28,10,.14),inset 0 0 0 1px rgba(201,162,39,.35);display:grid;place-items:center;margin-right:6px}
.shead .roombtn svg{width:19px;height:19px}
.stage.school.portico .scene{display:block;max-height:52vh;max-height:52dvh}
.stage.school.portico .mfig{width:44%;left:46%}
.stage.school.portico .afig{width:41%;left:3%}
.stage.school.portico .shead,.stage.school.portico .stabs{display:none}
.stage.school.portico .bubble,.stage.school.portico .abubble{display:none!important}
.stage.school.portico .popcap{bottom:auto;top:calc(52vh + 8px);top:calc(52dvh + 8px)}
.stage.school.portico .hud{display:none}
.roomtop{display:flex;justify-content:space-between;align-items:center;padding:8px 2px 2px}
.roomtop h2{font-size:20px;margin:0}
.reading{--g1:#F3E3A8;--g2:var(--gold)}
.reading h3{font-family:var(--display);font-weight:600;font-size:18px;margin:0}
.reading p{margin:0;font-family:var(--display);font-weight:500;font-size:16px;line-height:1.45;color:var(--ink)}
.reading .row{display:flex;gap:8px;margin-top:4px}
.feedcard{--g1:#B8A5D8;--g2:#6B4E9E}
.feedcard .eyebrow{color:#6B4E9E}
.feedpost{border-top:1px solid var(--line);padding:9px 0 6px}
.feedpost:first-of-type{border-top:0}
.feedpost h4{margin:0;font-family:var(--display);font-weight:600;font-size:16px;color:var(--ink)}
.feedpost small{display:block;font-size:11px;color:var(--ink-faint);margin:2px 0 4px;letter-spacing:.04em}
.feedpost p{margin:0;font-size:14px;line-height:1.45;color:var(--ink-soft)}
/* the tour: everything dims but the thing being explained */
.tour{position:absolute;inset:0;z-index:40;pointer-events:auto}
.tour .hole{position:absolute;border-radius:16px;box-shadow:0 0 0 9999px rgba(20,24,52,.62),0 0 0 3px var(--gold-lt);transition:all .5s var(--ease);pointer-events:none}
.tour .tcap{position:absolute;left:12px;right:12px;background:var(--card);border-radius:16px;padding:12px 14px 10px;box-shadow:var(--shadow-lift);font-family:var(--display);font-weight:500;font-size:15.5px;line-height:1.4;color:var(--ink);animation:panelin .45s var(--spring) both}
.tour .tcap b{display:block;font-family:var(--sans);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:3px}
.tour .tcap .row{display:flex;gap:8px;margin-top:10px}
.tour .tcap .row .btn{flex:1;height:42px;font-size:14px}
.offer{--g1:#F3E3A8;--g2:var(--gold)}
.offer .row{display:flex;gap:8px}

/* ---- v18 ---- */
@media (max-width:519px){body{background:var(--marble);background-image:none}}
@media (max-width:519px){.stage{position:fixed;inset:0;height:auto;max-width:none}}
.pwhere{margin:0;font-size:13px;line-height:1.35;color:var(--ink-soft)}
.pwhere b,.pnext b{color:var(--c);font-weight:700;font-family:var(--sans);font-size:12px;letter-spacing:.04em;text-transform:uppercase}
.pickp{grid-template-columns:52px 1fr}
.pickp .ladder{margin-top:3px;font-size:12px;color:var(--ink-faint)}
.pickp .ladder em{font-style:normal;color:var(--ink-soft)}
.pickp .take{grid-column:2;font-size:12.5px;font-weight:700;color:var(--c);margin-top:4px}
.acard.lib{--g1:#F3E3A8;--g2:var(--gold)}
.acard.lib p{margin:0;font-family:var(--display);font-weight:500;font-size:16px;line-height:1.45;color:var(--ink)}
.acard.lib i{font-size:11.5px;color:var(--ink-faint)}
.sharecard .eyebrow{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--gold-deep);margin-bottom:6px;display:flex;align-items:center;gap:8px}
.sharecard .eyebrow i{width:22px;height:1.5px;background:var(--gold)}
.sharecard h2{font-size:24px;margin-bottom:4px}
.sharecard .qr{width:min(58vw,220px);margin:8px auto 4px;background:#fff;border-radius:16px;padding:10px;box-shadow:inset 0 0 0 1.5px var(--gold-lt)}
.sharecard .qr img{width:100%;height:auto;display:block}
.sharecard .url{text-align:center;font-weight:700;color:var(--gold-deep);margin:4px 0 12px;font-size:15px;letter-spacing:.01em}
.sharecard .row{display:flex;gap:8px}
.sharecard .what.dark{color:var(--gold-deep);width:100%;text-align:center;margin-top:6px}
.cover .what+.what{margin-top:0}

.stitle{font-size:18px;white-space:nowrap}
.shead .roombtn,.shead .round{width:30px;height:30px}
.shead .roombtn svg{width:17px;height:17px}
.shead .pill{height:30px;font-size:12.5px;padding:0 10px 0 8px}
.pop{z-index:15}
.pop .mfig,.pop .afig{z-index:16}
.popcap{z-index:17}

/* ---- v19 ---- */
.slist{overflow-x:hidden}
.pickp span,.ptop span,.crow span{min-width:0}
.pickp strong,.ptop strong,.crow strong{overflow-wrap:anywhere}
.ladder{display:flex;flex-direction:column;gap:5px;margin:2px 0}
.rung{display:grid;grid-template-columns:26px 1fr;gap:9px;align-items:start;padding:7px 9px;border-radius:12px;background:var(--ivory);font-size:13.5px;line-height:1.3;color:var(--ink-soft)}
.rung b{width:24px;height:24px;border-radius:50%;display:grid;place-items:center;font-size:11.5px;background:var(--card);color:var(--ink-soft);box-shadow:inset 0 0 0 1.3px var(--line)}
.rung em{display:block;font-style:normal;font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;font-weight:700;color:var(--ink-faint);margin-bottom:1px}
.rung.done b{background:var(--laurel);color:#fff;box-shadow:none}
.rung.here{background:var(--card);box-shadow:inset 0 0 0 1.6px var(--c);color:var(--ink)}
.rung.here b{background:var(--c);color:#fff;box-shadow:none}
.rung.here em{color:var(--c)}
.rung.end b{background:var(--gold-pale);color:var(--gold-deep);box-shadow:inset 0 0 0 1.3px var(--gold-lt)}
.rung.end em{color:var(--gold-deep)}
.acard.carry{--g1:#A5BB93;--g2:var(--laurel)}
.acard.carry .eyebrow{color:var(--laurel)}
.crow{display:grid;grid-template-columns:48px 1fr;gap:10px;align-items:center;text-align:left;padding:8px 0;border-top:1px solid var(--line)}
.crow:first-of-type{border-top:0}
.crow img{width:48px;height:38px;object-fit:cover;border-radius:9px;box-shadow:0 0 0 1.2px var(--c2)}
.crow strong{display:block;font-family:var(--display);font-weight:600;font-size:15px;color:var(--ink)}
.crow small{display:block;font-size:12px;color:var(--ink-soft);line-height:1.3}
.crow .cprog{grid-column:2;display:block;height:5px;border-radius:3px;background:var(--ivory-2);overflow:hidden}
.crow .cprog b{display:block;height:100%;background:linear-gradient(90deg,var(--c2),var(--c))}
.acard.prog .rooms{display:flex;flex-direction:column;gap:6px;margin-top:4px}
.rr{display:grid;grid-template-columns:1fr auto;gap:2px 8px;align-items:center;font-size:13px;font-weight:600;color:var(--ink)}
.rr i{grid-column:1/3;display:block;height:6px;border-radius:3px;background:var(--ivory-2);overflow:hidden}
.rr i b{display:block;height:100%;background:linear-gradient(90deg,var(--c2),var(--c))}
.rr small{font-size:11px;color:var(--ink-faint);font-weight:700}
.acard.shelf{--g1:#F3E3A8;--g2:var(--gold)}
.medals{display:flex;flex-wrap:wrap;gap:8px}
.medal{display:flex;align-items:center;gap:7px;padding:6px 10px 6px 6px;border-radius:14px;background:var(--ivory);font-size:12.5px;font-weight:700;color:var(--ink)}
.medal i{width:22px;height:22px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff8,transparent 50%),var(--c);box-shadow:0 2px 6px rgba(40,28,10,.2)}
.medal.bronze i{background:radial-gradient(circle at 35% 30%,#fff8,transparent 50%),#B0713A}
.medal.silver i{background:radial-gradient(circle at 35% 30%,#fff9,transparent 50%),#A8ADB5}
.medal.gold i{background:radial-gradient(circle at 35% 30%,#fff9,transparent 50%),#D4AF37}
.medal.special i{background:radial-gradient(circle at 35% 30%,#fff9,transparent 50%),var(--laurel)}
.nextaw{display:flex;flex-direction:column;gap:4px;margin-top:4px}
.na{display:flex;justify-content:space-between;font-size:12.5px;color:var(--ink-soft);padding:6px 0;border-top:1px solid var(--line)}
.na small{color:var(--ink-faint);font-weight:700}
.pickp .ladder em{white-space:normal;font-weight:600;color:var(--ink)}

/* ---- v20: the back button, home, captions that move out of the way, the shelf, the room ---- */
.backbtn{position:absolute;left:12px;top:max(12px,env(safe-area-inset-top));z-index:8;width:36px;height:36px;border-radius:50%;background:rgba(250,245,234,.94);backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 4px 14px rgba(40,28,10,.18),inset 0 0 0 1px rgba(201,162,39,.45);display:grid;place-items:center;color:var(--gold-deep);transition:transform .2s var(--spring);animation:panelin .4s var(--spring) both}
.backbtn:active{transform:scale(.88)}
.backbtn svg{width:20px;height:20px;margin-left:-2px}
.veil .backbtn{z-index:3}
.homebtn{display:inline-flex;align-items:center;gap:7px;height:32px;padding:0 12px 0 6px;border-radius:16px;background:rgba(250,245,234,.92);box-shadow:0 4px 14px rgba(40,28,10,.12),inset 0 0 0 1px rgba(201,162,39,.4);color:var(--gold-deep);min-width:0;transition:transform .2s var(--spring)}
.homebtn:active{transform:scale(.95)}
.homebtn svg{width:18px;height:18px;flex:0 0 auto}
.homebtn .stitle{font-size:16px;color:var(--ink)}
.shead .roombtn svg{width:15px;height:18px}
/* the caption band: under the scene, in the flow, so it never covers anything */
.capband{flex:0 0 auto;position:relative;z-index:3;margin:8px 12px 0;background:var(--card);border-radius:14px;padding:12px 12px 8px;font-family:var(--display);font-weight:500;font-size:14.5px;line-height:1.36;color:var(--ink);box-shadow:var(--shadow);animation:panelin .4s var(--spring) both;touch-action:none;cursor:pointer;user-select:none;-webkit-user-select:none}
.capband::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--gold-lt),var(--gold));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.capband::after,.popcap::after{content:"";position:absolute;top:4px;left:50%;width:26px;height:3px;margin-left:-13px;border-radius:2px;background:var(--line)}
.capband b,.popcap b{display:block;font-family:var(--sans);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:3px}
.capband i{display:block;font-family:var(--sans);font-size:11px;font-style:italic;color:var(--ink-faint);margin-top:4px}
.capband span{display:inline-block}
.capband.say span{animation:wordin .4s var(--spring) both;animation-delay:calc(var(--i) * 45ms)}
.popcap{pointer-events:auto;touch-action:none;cursor:pointer;user-select:none;-webkit-user-select:none;padding:12px 13px 9px;font-size:14.5px}
.capband.away,.popcap.away{animation:capaway .25s var(--ease) both}
@keyframes capaway{to{opacity:0;transform:translateY(12px) scale(.96)}}
.stage.school.arrive .capband,.stage.school.portico .capband,.stage.school.room .capband{display:block}
.stage.school .capband[hidden]{display:none!important}
/* the arrival: punchy, and one row at the bottom */
.standcard .punch,.prog .punch{margin:2px 0 0;font-family:var(--display);font-weight:500;font-size:16.5px;line-height:1.3;color:var(--ink);text-align:center}
.standcard .nextp{margin:0;font-size:12.5px;font-weight:700;letter-spacing:.02em;color:var(--gold-deep);text-align:center}
.todaycard .lede{margin-bottom:0}
.gorow{display:flex;gap:10px;margin-top:4px;align-items:center}
.gorow .btn-gold{flex:1}
.iconbtn{width:52px;height:52px;border-radius:26px;background:var(--ivory-2);box-shadow:inset 0 0 0 1px var(--line);display:grid;place-items:center;color:var(--gold-deep);flex:0 0 auto;transition:transform .18s var(--spring)}
.iconbtn:active{transform:scale(.92)}
.iconbtn svg,.gorow .btn-ghost svg{width:20px;height:20px}
.gorow .btn-ghost{height:48px;gap:8px}
/* the shelf */
.shelfcard{--g1:#F3E3A8;--g2:var(--gold);gap:4px}
.shtop{display:flex;justify-content:space-between;align-items:baseline}
.shtop small{font-size:11px;font-weight:700;color:var(--ink-faint);letter-spacing:.02em}
.shelfcard .lede{margin:0 0 2px}
.shelf{position:relative;margin:0 -6px}
.shrow{display:flex;gap:2px;overflow-x:auto;padding:6px 6px 12px;scroll-snap-type:x proximity;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.shrow::-webkit-scrollbar{display:none}
.tro{flex:0 0 auto;width:82px;display:flex;flex-direction:column;align-items:center;gap:1px;scroll-snap-align:start;transition:transform .2s var(--spring);padding:2px 2px 0}
.tro:active{transform:scale(.93)}
.tsvg{display:block;overflow:visible}
.tro .tsvg{width:54px;height:68px;filter:drop-shadow(0 5px 6px rgba(40,28,10,.24))}
.tro span{font-size:11px;font-weight:700;color:var(--ink);text-align:center;line-height:1.15;max-width:80px;margin-top:3px}
.tro small{font-size:10px;color:var(--gold-deep);font-weight:700;text-transform:capitalize}
.tro.off .tsvg{filter:grayscale(1) opacity(.32)}
.tro.off span{color:var(--ink-faint)}
.tro.off small{color:var(--ink-faint);text-transform:none}
.plank{display:block;height:9px;border-radius:3px;background:linear-gradient(180deg,#DCC9A2 0%,#C1A46E 55%,#A88752 100%);box-shadow:0 3px 7px rgba(40,28,10,.22),inset 0 1px 0 rgba(255,255,255,.5);margin:-12px 6px 0;position:relative;z-index:0}
/* the show */
.veil.trophyveil{z-index:14;justify-content:flex-start;padding:max(58px,calc(env(safe-area-inset-top) + 50px)) 18px 30%}
.stage.school.arrive .veil.trophyveil,.stage.school.portico .veil.trophyveil,.stage.school.room .veil.trophyveil{padding:14px 16px 16px;justify-content:flex-start;overflow-y:auto}
.showcard{text-align:center;padding:12px 18px 16px}
.showcard .bigt{height:150px;display:grid;place-items:center;margin-bottom:4px}
.showcard .bigt .tsvg{width:118px;height:148px;filter:drop-shadow(0 12px 16px rgba(40,28,10,.3));animation:tropop .9s var(--spring) both}
.showcard .bigt.off .tsvg{filter:grayscale(1) opacity(.38)}
@keyframes tropop{0%{transform:scale(.25) rotate(-14deg);opacity:0}100%{transform:none;opacity:1}}
.showcard .eyebrow{font-size:11px;letter-spacing:.14em;text-transform:uppercase;font-weight:700;color:var(--gold-deep);display:flex;align-items:center;justify-content:center;gap:8px;margin-bottom:4px}
.showcard .eyebrow i{width:22px;height:1.5px;background:var(--gold)}
.showcard h2{font-size:24px;margin-bottom:4px}
.showcard .lede{margin-bottom:10px}
.showcard .stand{margin-bottom:6px}
.showcard .lvl{margin-bottom:4px}
.showcap{margin-top:10px;position:relative;background:var(--ivory);border-radius:14px;padding:10px 12px 9px;text-align:left;font-family:var(--display);font-weight:500;font-size:15px;line-height:1.36;color:var(--ink);animation:panelin .4s var(--spring) both}
.showcap b{display:block;font-family:var(--sans);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase;color:var(--gold-deep);margin-bottom:3px}
.showcap i{display:block;font-family:var(--sans);font-size:11px;font-style:italic;color:var(--ink-faint);margin-top:4px}
.showcap span{display:inline-block}
.showcap.say span{animation:wordin .4s var(--spring) both;animation-delay:calc(var(--i) * 45ms)}
.leaffall.gl{background:linear-gradient(135deg,#FFE9A0,#C9A227);border-radius:2px;width:8px;height:14px}
/* the portico room: each part its own thing */
.roomtitle{text-align:center;padding:10px 6px 2px}
.roomtitle h2{font-size:26px;line-height:1.1}
.roomtitle p{margin:4px auto 0;font-size:13.5px;color:var(--ink-soft);max-width:30ch;line-height:1.4}
.orn{display:flex;align-items:center;justify-content:center;gap:10px;padding:6px 0 2px}
.orn i{width:44px;height:1.5px;background:linear-gradient(90deg,transparent,var(--gold));display:block}
.orn i:last-child{background:linear-gradient(90deg,var(--gold),transparent)}
.orn b{width:8px;height:8px;background:var(--gold);transform:rotate(45deg);display:block;box-shadow:0 0 0 3px var(--marble),0 0 0 4.5px var(--gold-lt)}
.acard.prog{--g1:#B8A5D8;--g2:#6B4E9E}
.acard.prog .eyebrow{color:#6B4E9E}
.acard.reading{background:linear-gradient(180deg,#FBF4E2 0%,#F1E4C6 100%);padding:14px 16px 16px}
.reading .rhead,.visioncard .rhead{display:flex;justify-content:space-between;align-items:center;gap:10px}
.reading h3{font-size:22px;line-height:1.15;margin:2px 0 4px}
.reading p{font-size:16.5px;line-height:1.5}
.reading p::first-letter{float:left;font-family:var(--display);font-weight:600;font-size:3.1em;line-height:.8;margin:5px 7px 0 0;color:var(--gold-deep)}
.playbtn{width:38px;height:38px;border-radius:50%;background:linear-gradient(135deg,#F0D98A 0%,#C9A227 60%,#B08D1E 100%);color:#2B2210;display:grid;place-items:center;box-shadow:0 6px 14px rgba(201,162,39,.35),inset 0 1px 0 rgba(255,255,255,.5);flex:0 0 auto;transition:transform .18s var(--spring)}
.playbtn:active{transform:scale(.9)}
.playbtn svg{width:19px;height:19px}
.acard.lib.quote{padding-top:30px;background:var(--card)}
.acard.lib.quote::after{content:"\201C";position:absolute;left:12px;top:-4px;font-family:var(--display);font-size:72px;line-height:1;color:var(--gold-lt);pointer-events:none}
.acard.lib.quote .eyebrow{text-align:right}
.acard.lib.quote p{font-size:18px;line-height:1.4;font-style:italic;font-variation-settings:"SOFT" 60,"WONK" 1}
.acard.lib.quote i{text-align:right;font-style:normal;font-weight:700;color:var(--ink-soft)}
.acard.lib.book{--g1:#A5BB93;--g2:var(--laurel)}
.acard.lib.book .eyebrow{color:var(--laurel)}
.acard.lib.beauty{--g1:#B8A5D8;--g2:#6B4E9E}
.acard.lib.beauty .eyebrow{color:#6B4E9E}
.feedpost small{display:inline-block;background:#EFE8F7;color:#6B4E9E;padding:2px 9px;border-radius:9px;font-weight:700;font-size:10.5px;letter-spacing:.06em;margin:0 0 5px}
.feedpost h4{font-size:17px}
.stage.school.arrive .veil.trophyveil,.stage.school.portico .veil.trophyveil,.stage.school.room .veil.trophyveil{padding-top:54px}
.tro{width:86px}
.tro span{max-width:84px;font-size:10.5px}
/* v21: the ladder of ranks in a rank's show; room for tall flames on the shelf */
.shrow{padding-top:16px}
.ladderchips{margin:2px 0 0;text-align:left}
.ladderchips .eyebrow{justify-content:flex-start;margin-bottom:6px}
.chips{display:grid;grid-template-columns:repeat(4,1fr);gap:5px}
.chip{display:flex;flex-direction:column;align-items:center;padding:5px 2px 4px;border-radius:10px;background:var(--ivory);font-size:11px;font-weight:700;color:var(--ink-faint);box-shadow:inset 0 0 0 1px var(--line);line-height:1.1}
.chip small{font-size:9.5px;font-weight:600;margin-top:2px;color:var(--ink-faint)}
.chip.got{background:linear-gradient(135deg,#F3E3A8,#E0C25C);color:#2B2210;box-shadow:none}
.chip.got small{color:#6B5410}
.chip.this{box-shadow:0 0 0 2px var(--gold)}
/* v23: the long skills, practised day by day; the portico button that asks to be pressed */
.prac{display:flex;flex-direction:column;gap:6px;padding:8px 10px;border-radius:12px;background:var(--ivory);font-size:12.5px;color:var(--ink-soft);font-weight:600}
.prac .pbtn{display:flex;gap:8px;align-items:center}
.prac .pbtn .btn{flex:1}
.prac .btn.did{color:var(--laurel);box-shadow:inset 0 0 0 1.5px #A5BB93;background:#EEF3E8}
.prac .what.dark.sm{font-size:12.5px;font-weight:700;color:var(--gold-deep);padding:6px 8px;width:auto;white-space:nowrap}
.acard.longcard{--g1:#B8A5D8;--g2:#6B4E9E}
.acard.longcard .eyebrow{color:#6B4E9E}
.lgrow{display:grid;grid-template-columns:52px 1fr;gap:8px 10px;align-items:center;padding:8px 0;border-top:1px solid var(--line)}
.lgrow:first-of-type{border-top:0}
.lgrow img{width:52px;height:40px;object-fit:cover;border-radius:9px;box-shadow:0 0 0 1.2px var(--c2)}
.lgrow strong{display:block;font-family:var(--display);font-weight:600;font-size:16px;color:var(--ink)}
.lgrow small{display:block;font-size:12px;color:var(--ink-soft);line-height:1.3}
.lgrow .prac{grid-column:1/3}
.checkcard h2{font-size:26px}
.moods{display:flex;flex-direction:column;gap:8px;margin:4px 0 6px}
.moods .btn{width:100%}
.checkcard .what.dark{color:var(--ink-faint);width:100%;text-align:center;margin-top:4px}
.shead .roombtn.glow{animation:roomglow 1.6s ease-in-out 6}
@keyframes roomglow{0%,100%{box-shadow:0 4px 14px rgba(40,28,10,.14),inset 0 0 0 1px rgba(201,162,39,.35)}50%{box-shadow:0 0 0 6px rgba(201,162,39,.25),0 6px 18px rgba(201,162,39,.55),inset 0 0 0 1.5px var(--gold);transform:scale(1.12)}}
/* v24: one room. Folds beneath the day; today's ticks; the feed kept */
.fold{background:var(--card);border-radius:16px;box-shadow:var(--shadow);position:relative;--g1:#F3E3A8;--g2:var(--gold)}
.fold::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.fold summary{list-style:none;cursor:pointer;padding:12px 40px 12px 14px;font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:700;color:var(--gold-deep);position:relative;user-select:none;-webkit-user-select:none}
.fold summary::-webkit-details-marker{display:none}
.fold summary::after{content:"";position:absolute;right:16px;top:50%;width:9px;height:9px;border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);transform:translateY(-70%) rotate(45deg);transition:transform .25s var(--spring)}
.fold[open] summary::after{transform:translateY(-30%) rotate(225deg)}
.fold .fbody{padding:0 8px 8px;display:flex;flex-direction:column;gap:8px}
.fold .fbody .acard{box-shadow:none}
.fold .fbody .acard::before{display:none}
.fold .fbody .acard.reading{background:linear-gradient(180deg,#FBF4E2 0%,#F1E4C6 100%)}
.fold[data-fold="how"]{--g1:#B8A5D8;--g2:#6B4E9E}
.fold[data-fold="how"] summary{color:#6B4E9E}
.howlist{margin:0;padding:0 8px 6px 26px;font-size:14.5px;line-height:1.45;color:var(--ink)}
.howlist li+li{margin-top:5px}
.howlist li::marker{color:var(--gold-deep);font-weight:700}
.ticks{display:flex;gap:8px;justify-content:center;flex-wrap:wrap;margin-top:2px}
.ticks span{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-weight:700;color:var(--ink-faint);padding:5px 10px 5px 6px;border-radius:12px;background:var(--ivory);box-shadow:inset 0 0 0 1px var(--line)}
.ticks i{width:18px;height:18px;border-radius:50%;background:var(--card);box-shadow:inset 0 0 0 1.4px var(--line);display:grid;place-items:center}
.ticks span.on{color:#2F6B4F;background:#EEF3E8;box-shadow:inset 0 0 0 1px #A5BB93}
.ticks span.on i{background:var(--laurel);box-shadow:none}
.ticks span.on i::after{content:"";width:5px;height:9px;border-right:2px solid #fff;border-bottom:2px solid #fff;transform:translateY(-1px) rotate(45deg)}
.standcard .nextp.done{color:var(--laurel)}
.acard.post small{font-size:10.5px;letter-spacing:.06em;color:#6B4E9E;font-weight:700}
.acard.post .eyebrow{display:flex;align-items:center;gap:8px}
.acard.post .dot{font-size:9.5px;letter-spacing:.08em;background:#6B4E9E;color:#fff;padding:2px 7px;border-radius:8px}
/* v25: things to touch in the portico */
.brazier,.olive,.lyre{cursor:pointer}
.olive{transform-origin:48px 452px;transform-box:view-box}
.olive.rustle{animation:rustle 1s ease-out both}
@keyframes rustle{0%{transform:rotate(0)}18%{transform:rotate(2.2deg)}40%{transform:rotate(-1.8deg)}62%{transform:rotate(1.1deg)}82%{transform:rotate(-.5deg)}100%{transform:rotate(0)}}
.lyre{transform-origin:372px 285px;transform-box:view-box;transition:transform .2s var(--spring)}
.lyre:active{transform:rotate(-4deg)}
.lyre.play{animation:sway 2.6s ease-in-out infinite}
@keyframes sway{0%,100%{transform:rotate(-2deg)}50%{transform:rotate(2deg)}}
.lyre.play .str{animation:strum .22s ease-in-out infinite alternate}
.lyre.play .str:nth-child(odd){animation-delay:.08s}
@keyframes strum{from{opacity:.55}to{opacity:1}}
.lyre.hint{animation:hint 1.5s ease-in-out 6}
@keyframes hint{0%,100%{transform:rotate(0) scale(1);filter:none}50%{transform:rotate(-5deg) scale(1.12);filter:drop-shadow(0 0 6px #FFE9A0)}}
/* v26: a tap lands on what is painted, so the olive behind Aurelia can be reached */
.afig,.mfig{pointer-events:none}
.afig svg,.mfig svg{pointer-events:none}
.afig svg *,.mfig svg *{pointer-events:visiblePainted}
.toast{bottom:auto;top:calc(40vh + 10px);top:calc(40dvh + 10px);font-family:var(--display);font-weight:500;font-size:13.5px;background:rgba(30,23,15,.86);white-space:normal;max-width:80%;text-align:center;z-index:9}
.toast.gone{animation:capaway .45s var(--ease) both}
/* v28: who you become */
.fold[data-fold="vision"]{--g1:#F0D98A;--g2:#B08D1E}
.visioncard{background:linear-gradient(180deg,#FBF4E2 0%,#F1E4C6 100%)}
.visioncard p{margin:0 0 10px;font-family:var(--display);font-weight:500;font-size:16.5px;line-height:1.5;color:var(--ink)}
.visioncard p:first-of-type::first-letter{float:left;font-family:var(--display);font-weight:600;font-size:3.1em;line-height:.8;margin:5px 7px 0 0;color:var(--gold-deep)}
.visioncard p:last-of-type{margin-bottom:2px}
.polycard{--g1:#B8A5D8;--g2:#6B4E9E}
.polycard .eyebrow{color:#6B4E9E}
.poly{display:grid;grid-template-columns:1fr;gap:1px;padding:8px 0;border-top:1px solid var(--line)}
.poly:first-of-type{border-top:0}
.poly b{font-family:var(--display);font-weight:600;font-size:16px;color:var(--ink)}
.poly span{font-size:13.5px;line-height:1.4;color:var(--ink-soft)}
.polycard .close{margin:8px 0 0;font-family:var(--display);font-weight:500;font-size:15.5px;color:var(--gold-deep);text-align:center}
/* v29: the paragraph being read is lit */
.visioncard p{transition:background .4s,box-shadow .4s;border-radius:8px;padding:2px 4px;margin-left:-4px;margin-right:-4px}
.visioncard p.now{background:rgba(255,236,170,.75);box-shadow:0 0 0 1.5px var(--gold-lt)}
/* v30: six quick things, three shown; sideways phones turned back upright; no text growing on turn */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
details.more{margin-top:2px}
details.more summary{list-style:none;cursor:pointer;padding:9px 0 4px;font-size:12.5px;font-weight:700;color:var(--gold-deep);text-align:center;user-select:none;-webkit-user-select:none}
details.more summary::-webkit-details-marker{display:none}
details.more summary::after{content:"";display:inline-block;width:7px;height:7px;margin-left:8px;border-right:2px solid var(--gold);border-bottom:2px solid var(--gold);transform:translateY(-3px) rotate(45deg)}
details.more[open] summary::after{transform:translateY(1px) rotate(225deg)}
details.more .pick:first-of-type{border-top:1px solid var(--line)}
html[data-rot] body{background:var(--marble);background-image:none}
html[data-rot] .stage{position:fixed;top:0;left:0;width:100vh;height:100vw;max-width:none;margin:0;border-radius:0;box-shadow:none;transform-origin:top left}
html[data-rot="l"] .stage{transform:rotate(-90deg) translateX(-100vh)}
html[data-rot="r"] .stage{transform:rotate(90deg) translateY(-100vw)}
html[data-rot] .scene{max-height:54vw}
html[data-rot] .stage.school.arrive .scene{max-height:40vw}
html[data-rot] .stage.school.room .scene{max-height:30vw}
html[data-rot] .stage.school.arrive .veil.trophyveil,html[data-rot] .stage.school.room .veil.trophyveil{padding-top:54px}
/* v31: the choosing card; the rule under the long skills */
.offercard{--g1:var(--c2);--g2:var(--c)}
.offercard h2{font-size:23px;line-height:1.2}
.longcard .rule{margin:4px 0 0;font-size:12px;color:var(--ink-faint);text-align:center;font-weight:600}
/* v33: the commitment, and the long game page made plain */
.slist .intro{margin:2px 4px 2px;font-size:13.5px;line-height:1.45;color:var(--ink-soft)}
.acard .sub{margin:6px 0 0;font-family:var(--display);font-weight:600;font-size:15px;color:var(--ink)}
.cand{display:grid;grid-template-columns:52px 1fr;gap:6px 10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.cand img{width:52px;height:40px;object-fit:cover;border-radius:9px;box-shadow:0 0 0 1.2px var(--c2)}
.cand strong{display:block;font-family:var(--display);font-weight:600;font-size:15.5px;color:var(--ink)}
.cand small{display:block;font-size:12px;color:var(--ink-soft);line-height:1.3}
.cand .ladder{margin-top:2px;font-size:12px;color:var(--ink-faint)}
.cand .ladder em{font-style:normal;font-weight:600;color:var(--ink)}
.cand .cbtns{grid-column:2;display:flex;gap:8px}
.cand .cbtns .btn-gold{flex:1}
.takencard{--g1:#F0D98A;--g2:#B08D1E}
.proj.taken,.lgrow.taken{position:relative;padding:14px 12px 10px;margin:6px 0 2px;border-radius:16px;background:var(--card);border-top:0}
.proj.taken::before,.lgrow.taken::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:3px;background:linear-gradient(135deg,#F3E3A8,#C9A227 55%,#8F6F12);-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none}
.lgrow.taken{grid-template-columns:52px 1fr;padding-top:18px}
.seal{position:absolute;top:-10px;right:12px;display:inline-flex;align-items:center;gap:5px;padding:3px 9px 3px 6px;border-radius:10px;background:linear-gradient(135deg,#F0D98A,#C9A227);color:#2B2210;font-size:10.5px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;box-shadow:0 4px 10px rgba(201,162,39,.4);z-index:1}
.seal i{width:12px;height:12px;background:#2B2210;clip-path:polygon(50% 0%,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.seal.big{position:static;align-self:center;font-size:12px;padding:5px 12px 5px 8px;margin:0 auto 8px;animation:tropop .8s var(--spring) both}
.seal.big i{width:15px;height:15px}
.commitcard{text-align:left}
.commitcard h2{font-size:26px}
.commitcard .ladder{margin:4px 0 8px}
.commitcard .have{margin:8px 0 0;text-align:center;font-size:12px;font-weight:700;color:var(--ink-faint)}
.commitcard .full{color:var(--crimson)}
.commitcard.sealed{--g1:#F3E3A8;--g2:#B08D1E}
.commitcard .showcap{margin:0 0 10px}
.commitcard.sealed .have,.commitcard.sealed .row{display:none}
/* v34: needs labels; section headings you can see; the pop-in setting */
.scat .need{display:inline-block;margin-left:6px;padding:2px 7px;border-radius:8px;font-size:9.5px;letter-spacing:.06em;text-transform:uppercase;font-weight:800;background:var(--ivory-2);color:var(--ink-soft);box-shadow:inset 0 0 0 1px var(--line)}
.scat .need.with{background:#F3E6EA;color:#93313D}
.scat .need.out{background:#E6F0E8;color:#2F6B4F}
.scat .need.kit{background:#EAEFF5;color:#1F5E8A}
.fold[data-fold="later"]{--g1:#D6CBB4;--g2:#958A76}
.fold[data-fold="later"] summary{color:var(--ink-soft)}
.fold[data-fold="more"]{--g1:#F3E3A8;--g2:var(--gold)}
.acard .sub{margin:10px 0 2px;padding:8px 0 6px;font-family:var(--display);font-weight:600;font-size:19px;line-height:1.15;color:var(--ink);border-top:2px solid var(--gold-lt)}
.acard .sub:first-of-type{margin-top:6px}
.help .toggle{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;align-items:center;margin-top:12px;padding:10px 12px;border-radius:12px;background:var(--ivory);font-size:14px;font-weight:600;color:var(--ink);cursor:pointer}
.help .toggle input{width:20px;height:20px;accent-color:var(--gold-deep);margin:0;grid-row:1/3}
.help .toggle small{font-size:12px;font-weight:500;color:var(--ink-faint);line-height:1.35}

/* ================ one ladder, its own page (v35) ================
   The ladder used to be a veil with a column of little buttons. Everything
   here exists to make a long skill read as the large thing it is: the picture,
   the ring, the medals, the days you turned up. Nothing here is a streak and
   nothing here can be lost. Class prefix tk- so nothing collides with the
   layout classes (the v32 lesson). */
.tk{display:flex;flex-direction:column;gap:11px}
.tk-hero{position:relative;border-radius:18px;overflow:hidden;box-shadow:var(--shadow);--g1:var(--c2);--g2:var(--c)}
.tk-hero::before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1.6px;
  background:linear-gradient(135deg,var(--g1),var(--g2));-webkit-mask:linear-gradient(#fff 0 0) content-box,linear-gradient(#fff 0 0);
  -webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;z-index:3}
.tk-hero img{width:100%;height:176px;object-fit:cover;display:block}
.tk-hero::after{content:"";position:absolute;inset:0;
  background:linear-gradient(180deg,rgba(20,14,8,0) 26%,rgba(20,14,8,.3) 54%,rgba(20,14,8,.86) 100%);z-index:1}
.tk-heroin{position:absolute;left:0;right:0;bottom:0;z-index:2;padding:12px 14px 13px}
.tk-heroin h2{font-size:24px;line-height:1.16;color:#fff;margin:6px 0 2px;text-shadow:0 2px 14px rgba(0,0,0,.45)}
.tk-heroin p{margin:0;font-size:13px;line-height:1.4;color:rgba(255,255,255,.9)}
.tk-chip{display:inline-block;padding:4px 10px;border-radius:999px;background:var(--c);color:#fff;
  font-size:10.5px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;box-shadow:0 3px 12px rgba(0,0,0,.3)}
.tk-crown{position:absolute;top:10px;right:10px;z-index:3;width:40px;height:40px;border-radius:50%;
  background:linear-gradient(140deg,var(--gold-lt),var(--gold));box-shadow:0 6px 18px rgba(201,162,39,.55)}
.tk-crown::after{content:"";position:absolute;inset:9px;border-radius:50%;border:2.4px solid rgba(255,255,255,.85)}

.tk-card{gap:10px}
.tk-top{display:flex;align-items:center;gap:13px}
.tk-ring{width:96px;height:96px;flex:none}
.tk-ring-n{font-family:var(--display);font-weight:600;font-size:25px;fill:var(--ink)}
.tk-ring-s{font-size:11px;fill:var(--ink-faint);font-family:var(--sans);font-weight:600}
.tk-topt{min-width:0}
.tk-topt strong{display:block;font-family:var(--display);font-weight:600;font-size:20px;line-height:1.2}
.tk-topt small{display:block;font-size:13.5px;color:var(--ink-soft);line-height:1.42;margin-top:3px}
.tk-topt small b{color:var(--c)}
.tk-topt em{display:block;font-style:normal;font-size:12px;color:var(--ink-faint);margin-top:5px}
.tk-stats{display:flex;gap:6px}
.tk-stats span{flex:1;min-width:0;background:var(--ivory-2);border-radius:12px;padding:8px 4px;text-align:center;
  font-size:10.5px;color:var(--ink-faint);line-height:1.25}
.tk-stats b{display:block;font-family:var(--display);font-weight:600;font-size:17px;color:var(--gold-deep);margin-bottom:1px}
.tk-takel{margin:2px 0 0}

.tk-cuprow{display:flex;gap:7px}
.tk-cuprow .tro{flex:1;min-width:0}
.tk-cups .lede{margin:2px 0 0;font-size:12.5px;color:var(--ink-faint)}
.tk-next .stestbig{margin:2px 0 0}
.tk-note{margin:2px 2px 0;font-size:12.5px;line-height:1.5;color:var(--ink-soft);
  background:var(--gold-pale);border-radius:12px;padding:10px 12px}
.tk-note b{color:var(--ink)}
.tk-steps{display:flex;flex-direction:column;gap:7px;margin:2px 0 0}
/* the step rows: the sheet's look, which was scoped to .sheet and so never
   reached the page. Same shape, a little roomier because there is room here. */
.tk-steps .step{display:grid;grid-template-columns:30px 1fr;gap:10px;align-items:start;text-align:left;
  font-size:14.5px;line-height:1.38;color:var(--ink);background:var(--card);border-radius:13px;
  padding:11px 12px;box-shadow:inset 0 0 0 1px var(--line);transition:transform .18s var(--spring)}
.tk-steps .step:active{transform:scale(.985)}
.tk-steps .step b{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-size:12.5px;
  font-weight:700;background:var(--ivory-2);color:var(--ink-soft);box-shadow:inset 0 0 0 1.3px var(--line)}
.tk-steps .step.done{color:var(--ink-faint);background:var(--ivory)}
.tk-steps .step.done b{background:var(--laurel);color:#fff;box-shadow:none}
.tk-steps .step.act{box-shadow:inset 0 0 0 1.9px var(--c);background:var(--card)}
.tk-steps .step.act b{background:var(--c);color:#fff;box-shadow:none}
.tk-step span em{display:block;font-style:normal;font-size:11px;color:var(--gold-deep);font-weight:600;margin-top:3px}
.tk-band{display:flex;align-items:baseline;gap:9px;margin:11px 2px 2px;font-family:var(--sans);
  font-size:11px;font-weight:700;letter-spacing:.13em;text-transform:uppercase;color:var(--ink-faint)}
.tk-band span{flex:none}
.tk-band::after{content:"";flex:1;height:1px;background:var(--line)}
.tk-band em{flex:none;font-style:normal;letter-spacing:0;font-size:11.5px;text-transform:none}
.tk-band.full,.tk-band.full em{color:var(--c)}
.tk-band.full::after{background:linear-gradient(90deg,var(--c2),transparent)}
.tk-feeds{margin:6px 0 0;text-align:center;font-size:12px;color:var(--ink-faint)}

/* ---- how long this one really takes (v36) ----
   His words: a song on a guitar in front of a group is a major undertaking,
   juggling is a medium. So the honest answer sits at the top of the ladder
   where it cannot be missed, and on every card where the decision to take one
   on is actually made. A person who knows a thing is a year long does not quit
   it in week two believing they are slow. */
.tk-size{display:flex;flex-direction:column;gap:2px;padding:11px 14px;border-radius:14px;
  background:var(--card);box-shadow:inset 0 0 0 1.4px var(--sz,var(--line));position:relative;overflow:hidden}
.tk-size::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--sz,var(--gold))}
.tk-size b{font-family:var(--display);font-weight:600;font-size:16px;color:var(--sz,var(--ink))}
.tk-size span{font-size:12.5px;line-height:1.42;color:var(--ink-soft)}
.tk-size.inline{margin:6px 0 2px}
.sz-afternoon{--sz:var(--laurel)}
.sz-weeks{--sz:#1F5E8A}
.sz-months{--sz:#8F6F12}
.sz-major{--sz:var(--crimson)}
/* the same word, small, wherever a ladder is listed */
.szl,.szr{display:inline-block;align-self:flex-start;width:max-content;max-width:100%;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;
  color:var(--sz,var(--ink-faint));background:var(--ivory-2);border-radius:999px;padding:2px 8px;margin-top:3px;
  box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sz,var(--line)) 34%,transparent)}
.szr{margin-top:4px}
/* v35: the day bar at the top of every page; the face that switches the two of them; the soft ask */
.shead .hud{flex:1 1 auto;min-width:0;justify-content:flex-end}
.homebtn{flex:0 0 auto}
.homebtn .stitle{font-size:15px}
.daywrap{flex:1 1 auto;min-width:64px;max-width:150px;margin:0 6px 0 4px}
.daybar{position:relative;height:26px;border-radius:13px;background:rgba(250,245,234,.9);box-shadow:inset 0 0 0 1px rgba(201,162,39,.4),0 4px 14px rgba(40,28,10,.12);overflow:hidden}
.daybar i{position:absolute;left:0;top:0;bottom:0;border-radius:13px;background:linear-gradient(90deg,#F3E3A8,#C9A227 70%,#B08D1E);transition:width .8s var(--spring)}
.daybar span{position:relative;display:block;text-align:center;line-height:26px;font-size:11px;font-weight:800;letter-spacing:.04em;color:#2B2210;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:0 8px}
.daybar.full i{background:linear-gradient(90deg,#F3E3A8,#E0C25C 50%,#C9A227)}
.daybar.full{animation:dayglow 1.8s ease-in-out 3}
@keyframes dayglow{0%,100%{box-shadow:inset 0 0 0 1px rgba(201,162,39,.4),0 4px 14px rgba(40,28,10,.12)}50%{box-shadow:inset 0 0 0 1.5px var(--gold),0 0 0 5px rgba(201,162,39,.22),0 6px 18px rgba(201,162,39,.5)}}
.daybar.over i{background:linear-gradient(90deg,#FFD36B,#E0812A)}
.daywrap.home{max-width:none;margin:4px 0 0}
.daywrap.home .daybar{height:30px}
.daywrap.home .daybar span{line-height:30px;font-size:12px}
.facebtn{position:relative;width:30px;height:30px;border-radius:50%;overflow:hidden;box-shadow:0 4px 14px rgba(40,28,10,.14),inset 0 0 0 1.5px rgba(201,162,39,.6);flex:0 0 auto;transition:transform .2s var(--spring)}
.facebtn:active{transform:scale(.9)}
.facebtn img{width:100%;height:100%;object-fit:cover;display:block}
.facebtn i{position:absolute;left:-4px;top:50%;width:38px;height:3px;background:#93313D;transform:rotate(-40deg);border-radius:2px;display:none;box-shadow:0 0 0 1px #FFF7E4}
.facebtn.off img{filter:grayscale(1) opacity(.55)}
.facebtn.off i{display:block}
.softcard{--g1:var(--c2);--g2:var(--c)}
.softcard h2{font-size:23px}
.fold[data-fold="two"]{--g1:#B8A5D8;--g2:#6B4E9E}
.fold[data-fold="two"] summary{color:#6B4E9E}
.scat .need.home{background:#F6EEDC;color:#8F6F12}
.softcard .row .btn{white-space:nowrap;padding:0 14px}
/* the one guard in the school. Above the trophies and the next step, never
   under them — a warning nobody reaches is not a warning. */
.tk-warn{display:flex;flex-direction:column;gap:2px;padding:11px 14px;border-radius:14px;position:relative;
  overflow:hidden;background:#FFF6F2;box-shadow:inset 0 0 0 1.4px #E3B7A6}
.tk-warn::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--crimson)}
.tk-warn b{font-size:11px;font-weight:700;letter-spacing:.11em;text-transform:uppercase;color:var(--crimson)}
.tk-warn span{font-size:12.5px;line-height:1.45;color:var(--ink-soft)}
.tk-warn.inline{margin:6px 0 2px;text-align:left}

/* ---- search (v38) ----
   152 ladders in 22 rooms and no way to ask for one by name. The steps are
   searched as well as the names, because that is where the specific thing a
   person actually wants usually lives. */
.shead .searchbtn{margin-right:0;margin-left:auto;color:var(--gold-deep)}
.stage.school.searching .shead{display:none}
.stage.school.searching .slist{padding-top:max(10px,env(safe-area-inset-top))}
.stage.school.searching .qbar{padding-left:52px}
.shead .searchbtn.on{background:var(--gold);color:#fff;box-shadow:0 4px 14px rgba(201,162,39,.45)}
.qbar{display:flex;align-items:center;gap:9px;padding:10px 13px;border-radius:16px;background:var(--card);
  box-shadow:inset 0 0 0 1.5px var(--line),var(--shadow);position:sticky;top:0;z-index:3;flex:0 0 auto}
.qbar svg{width:19px;height:19px;flex:none;color:var(--gold-deep)}
.qbar input{flex:1;min-width:0;border:0;background:none;font:inherit;font-size:16px;color:var(--ink);outline:none;
  -webkit-appearance:none;appearance:none}
.qbar input::placeholder{color:var(--ink-faint)}
.qbar input::-webkit-search-cancel-button{display:none}
.qx{width:26px;height:26px;flex:none;border-radius:50%;background:var(--ivory-2);color:var(--ink-soft);
  font-size:17px;line-height:1;display:grid;place-items:center}
.qhint{margin:10px 4px 2px;font-size:13.5px;line-height:1.5;color:var(--ink-soft)}
.qchips{display:flex;flex-wrap:wrap;gap:7px;margin:4px 2px}
.qchip{font-size:13px;font-weight:600;padding:7px 13px;border-radius:999px;background:var(--card);
  color:var(--gold-deep);box-shadow:inset 0 0 0 1.3px var(--line);transition:transform .18s var(--spring)}
.qchip:active{transform:scale(.94)}
.qh{margin:14px 4px 2px;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ink-faint);display:flex;align-items:baseline;gap:7px}
.qh em{font-style:normal;letter-spacing:0;font-size:11.5px;color:var(--gold-deep)}
.qroom{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:8px;border-radius:15px;
  background:var(--card);box-shadow:var(--shadow);--g1:var(--c2);--g2:var(--c);transition:transform .18s var(--spring)}
.qroom:active{transform:scale(.985)}
.qroom img{width:52px;height:52px;border-radius:11px;object-fit:cover;flex:none}
.qroom strong{display:block;font-family:var(--display);font-weight:600;font-size:16px}
.qroom small{display:block;font-size:12px;color:var(--ink-soft);line-height:1.35;margin-top:1px}
.qstep{display:grid;grid-template-columns:28px 1fr;gap:10px;align-items:start;width:100%;text-align:left;
  padding:10px 12px;border-radius:13px;background:var(--card);font-size:14.5px;line-height:1.38;
  box-shadow:inset 0 0 0 1px var(--line);transition:transform .18s var(--spring)}
.qstep:active{transform:scale(.985)}
.qstep b{width:26px;height:26px;border-radius:50%;display:grid;place-items:center;font-size:12px;font-weight:700;
  background:var(--ivory-2);color:var(--ink-soft)}
.qstep.done{color:var(--ink-faint)}
.qstep.done b{background:var(--laurel);color:#fff}
.qstep em{display:block;font-style:normal;font-size:10.5px;font-weight:700;letter-spacing:.07em;
  text-transform:uppercase;color:var(--c,var(--gold-deep));margin-bottom:2px}
.qmore{margin:8px 4px 0;font-size:12.5px;color:var(--ink-faint);line-height:1.45}
/* where the ladder stops, and why (v39) */
.tk-after{display:flex;flex-direction:column;gap:3px;padding:12px 14px;border-radius:14px;margin-top:4px;
  background:var(--gold-pale);box-shadow:inset 0 0 0 1.3px rgba(201,162,39,.4)}
.tk-after b{font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:var(--gold-deep)}
.tk-after span{font-size:13px;line-height:1.5;color:var(--ink-soft)}

/* ---- going rusty (v40) ----
   His rule: you do not get to tick a step because you could do it once. A step
   counts from the day you do it, and six months on it is worth doing again.
   What fades is a LADDER'S SHARPNESS — its own bar. Completion never falls,
   points never fall, the flame never dims for this. */
.tk-sharp{gap:7px}
.shbar{height:8px;border-radius:999px;background:var(--ivory-2);overflow:hidden;
  box-shadow:inset 0 0 0 1px rgba(0,0,0,.04)}
.shbar i{display:block;height:100%;border-radius:999px;
  background:linear-gradient(90deg,var(--gold-lt),var(--gold));transition:width .6s var(--ease)}
.tk-sharp.dull{--g1:#E3C79A;--g2:#C08A2E}
.tk-sharp.dull .shbar i{background:linear-gradient(90deg,#D9C9A6,#C08A2E)}
.tk-steps .step.faded{box-shadow:inset 0 0 0 1.4px #E0CFA4;background:#FDFBF3}
.tk-steps .step.faded b{background:#E6D9B4;color:#8F6F12;box-shadow:none}
.tk-steps .step.faded span em{color:#A8801C}
.againline{margin:8px 0 2px;font-size:13.5px;line-height:1.45;color:var(--ink-soft)}
.againline.rusty{color:var(--gold-deep);font-weight:600}

/* ---- the bar races on activity, never on the clock (v41) ---- */
.rankbar i{background:linear-gradient(90deg,var(--gold-lt),var(--gold))}
.rankbar span b{font-variant-numeric:tabular-nums}
.lvlcap{margin:5px 2px 0;font-size:12px;line-height:1.45;color:var(--ink-faint);text-align:center}

/* ---- home: how far you have come, and days in a row, as two doors (v42) ---- */
.standtap{display:block;width:100%;text-align:left;transition:transform .18s var(--spring)}
.standtap:active{transform:scale(.985)}
.rankface{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:9px}
.rf-n b{display:block;font-family:var(--display);font-size:40px;font-weight:600;line-height:.95;color:var(--ink)}
.rf-n small{display:block;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--ink-faint);margin-top:4px}
.rf-r{text-align:right}
.rf-r strong{display:block;font-family:var(--display);font-size:26px;font-weight:600;line-height:1;color:var(--gold-deep)}
.rf-r small{display:block;font-size:12px;color:var(--ink-soft);margin-top:4px}
.rf-r small b{color:var(--ink);font-weight:700}
.tapmore{display:block;margin-top:8px;font-size:12px;font-weight:700;letter-spacing:.02em;color:var(--gold-deep);text-align:center}
.runcard{gap:0}
.runtop{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}
.rt-n b{display:block;font-family:var(--display);font-size:34px;font-weight:600;line-height:.95;color:var(--ink)}
.rt-n small,.rt-t small{display:block;font-size:10.5px;letter-spacing:.09em;text-transform:uppercase;font-weight:700;color:var(--ink-faint);margin-top:4px}
.rt-t{text-align:right}
.rt-t strong{display:block;font-family:var(--display);font-size:22px;font-weight:600;line-height:1;color:var(--gold-deep)}
.runcap{margin:9px 0 0;font-size:12.5px;line-height:1.45;color:var(--ink-soft);text-align:center}
.runcard .wrow{margin-top:2px}

/* the two panels off the home page */
.bigpanel{max-height:none}
.bigveil .panel{display:flex;flex-direction:column;gap:11px}
.stonelist{display:flex;flex-direction:column;gap:7px;margin-top:4px}
.stonerow{display:grid;grid-template-columns:40px 1fr;gap:11px;align-items:center;width:100%;text-align:left;
  padding:9px 12px;border-radius:13px;background:var(--ivory);box-shadow:inset 0 0 0 1px var(--line);
  position:relative;transition:transform .18s var(--spring)}
.stonerow:active{transform:scale(.985)}
.stonerow .tsvg{width:34px;height:42px;filter:grayscale(1) opacity(.34)}
.stonerow.on{background:var(--card);box-shadow:inset 0 0 0 1.4px var(--gold-lt)}
.stonerow.on .tsvg{filter:drop-shadow(0 3px 5px rgba(40,28,10,.22))}
.stonerow strong{display:block;font-family:var(--display);font-weight:600;font-size:16px}
.stonerow small{display:block;font-size:11.5px;color:var(--ink-faint);margin-top:1px}
.stonebar{position:absolute;left:12px;right:12px;bottom:5px;height:3px;border-radius:2px;background:var(--ivory-2);overflow:hidden}
.stonebar b{display:block;height:100%;border-radius:2px;background:linear-gradient(90deg,#E0D0A6,#A8873C)}
.foldic{display:inline-flex;vertical-align:-3px;margin-right:7px;color:var(--gold-deep)}
.foldic svg{width:15px;height:15px}

/* the picks: a picture you can actually see, and a button that is not shouting */
.pick{grid-template-columns:92px 1fr;gap:12px;padding:11px 0}
.pick img{width:92px;height:74px;border-radius:12px}
.pick .stest{font-size:15px;line-height:1.35}
/* the buttons stay in the text column and stop stretching, so the picture gets
   the room instead. His note: the Do it button does not need to be that size. */
.pick .pbtns{grid-column:2;justify-content:flex-start;margin-top:6px}
.pick .pbtns .btn.sm{flex:0 0 auto;padding:8px 18px;font-size:13.5px}
.lgrow{position:relative}
.lgrow .px{position:absolute;top:6px;right:6px;width:26px;height:26px;border-radius:50%;z-index:3;
  background:var(--ivory-2);color:var(--ink-faint);font-size:16px;line-height:1;display:grid;place-items:center}
.lgrow .px:active{transform:scale(.9)}

/* ---- the progress room (v44) ----
   One room, not two veils that ran up under the notch. It renders into the
   list under the portico exactly like a ladder page, so the characters are on
   top and everything else scrolls properly beneath them. */
.prheadcard .rankface{margin-top:4px}
.prsub{margin:14px 2px 6px;font-family:var(--sans);font-size:11px;font-weight:700;letter-spacing:.13em;
  text-transform:uppercase;color:var(--ink-faint);display:flex;align-items:baseline;gap:8px}
.prsub em{font-style:normal;letter-spacing:0;font-size:11.5px;color:var(--gold-deep)}
.trogrid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px 4px}
.trogrid .tro{width:auto;min-width:0}
.trogrid .tro span{max-width:100%}
.acard .chips{display:grid;grid-template-columns:repeat(4,1fr);gap:6px}

/* the button we want pressed is the one under the thumb (v44) */
.pick .pbtns .btn.sm.wide{flex:1 1 auto}

/* ---- the thin bar, and the day card at the foot (v48) ----
   His note: the home page had drifted from its purpose, which is to get you
   doing something immediately. So the top is one thin bar you read in a second,
   the three things to do sit straight under it, and everything about days and
   streaks moved to the bottom. */
.thinbar{display:block;width:100%;text-align:left;background:var(--card);border-radius:16px;
  padding:11px 14px 12px;box-shadow:var(--shadow),inset 0 0 0 1.4px rgba(201,162,39,.42);
  transition:transform .18s var(--spring)}
.thinbar:active{transform:scale(.99)}
.thinbar{display:flex;align-items:center;gap:12px}
.tb-body{flex:1;min-width:0}
.tb-nums{display:flex;align-items:baseline;gap:7px;margin-bottom:8px}
.tb-nums b{font-family:var(--display);font-weight:600;font-size:25px;line-height:1;color:var(--ink)}
.tb-nums small{font-size:10.5px;font-weight:700;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint)}
.tb-goal{flex:none;display:flex;flex-direction:column;align-items:center;gap:1px;width:62px}
/* not fully grey — you should want it. Enough colour to read as gold, enough
   fade to read as not yours yet. */
.tb-goal .tsvg{width:36px;height:44px;filter:grayscale(.5) opacity(.7)}
.tb-goal small{font-size:9.5px;line-height:1.2;text-align:center;color:var(--ink-faint);font-weight:600}
.tb-goal small b{color:var(--gold-deep);font-size:10.5px}
.addkid{display:flex;align-items:center;gap:12px;width:100%;text-align:left;padding:13px 15px;
  border-radius:16px;background:var(--card);box-shadow:inset 0 0 0 1.3px var(--line);
  transition:transform .18s var(--spring)}
.addkid:active{transform:scale(.985)}
.addkid i{width:32px;height:32px;flex:none;border-radius:50%;display:grid;place-items:center;
  background:var(--gold-pale);color:var(--gold-deep);font-style:normal;font-size:19px;font-weight:700}
.addkid strong{display:block;font-size:15px}
.addkid small{display:block;font-size:12px;color:var(--ink-faint);line-height:1.4;margin-top:1px}
.tb-track{display:block;height:6px;border-radius:3px;background:var(--ivory-2);overflow:hidden}
.tb-track i{display:block;height:100%;border-radius:3px;
  background:linear-gradient(90deg,var(--gold-lt),var(--gold));transition:width .8s var(--spring)}

.daycard{display:block;width:100%;text-align:left;gap:0;transition:transform .18s var(--spring)}
.daycard:active{transform:scale(.99)}
.dc-top{display:flex;align-items:flex-end;justify-content:space-between;gap:12px;margin-bottom:10px}
.dc-n b{display:block;font-family:var(--display);font-size:30px;font-weight:600;line-height:.95;color:var(--ink)}
.dc-n small,.dc-t small{display:block;font-size:10px;letter-spacing:.09em;text-transform:uppercase;
  font-weight:700;color:var(--ink-faint);margin-top:4px}
.dc-t{text-align:right}
.dc-t strong{display:block;font-family:var(--display);font-size:20px;font-weight:600;line-height:1;color:var(--gold-deep)}
.daycard .daywrap.home{margin-top:11px}
.daycard .ticks{margin-top:9px}
.daycard .nextp{margin:8px 0 0}
.daycard .runcap{margin-top:8px}
.homepunch{margin:4px 6px 2px;font-family:var(--display);font-weight:500;font-size:16.5px;
  line-height:1.35;color:var(--ink);text-align:center}
.kidname{margin:2px 6px -2px;font-size:11px;font-weight:700;letter-spacing:.12em;
  text-transform:uppercase;color:var(--gold-deep)}

/* ---- the promise (v50) ---- */
.asklist{display:flex;flex-direction:column;gap:8px;margin:12px 0 10px}
.askrow{display:flex;align-items:center;gap:11px;width:100%;text-align:left;padding:9px 11px;
  border-radius:14px;background:var(--ivory);box-shadow:inset 0 0 0 1.3px var(--line);
  transition:transform .18s var(--spring)}
.askrow:active{transform:scale(.985)}
.askrow img{width:46px;height:40px;border-radius:10px;object-fit:cover;flex:none;box-shadow:0 0 0 1.2px var(--c,var(--line))}
.askrow strong{display:block;font-size:14.5px;line-height:1.25}
.askrow small{display:block;font-size:12.5px;color:var(--ink-soft);line-height:1.35;margin-top:2px}
.askrow.surprise i{width:46px;height:40px;flex:none;border-radius:10px;display:grid;place-items:center;
  background:var(--gold-pale);color:var(--gold-deep);font-style:normal;font-size:18px}
.askcard h2{font-size:22px}
/* v51: who you are becoming — the four kinds of step, counted */
.traitscard{--g1:#DCC9A2;--g2:var(--gold)}
.traitscard .lede{margin-bottom:2px}
.traits{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.traits .tr{display:flex;flex-direction:column;align-items:flex-start;gap:3px;padding:10px 11px 9px;border-radius:14px;background:var(--ivory);box-shadow:inset 0 0 0 1.4px var(--c);text-align:left;transition:transform .2s var(--spring)}
.traits .tr:active{transform:scale(.96)}
.traits .tn{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:var(--c)}
.traits b{font-family:var(--display);font-weight:600;font-size:26px;line-height:1;color:var(--ink)}
.traits i{display:block;width:100%;height:6px;border-radius:3px;background:var(--card);overflow:hidden;box-shadow:inset 0 0 0 1px var(--line)}
.traits em{display:block;height:100%;border-radius:3px;background:var(--c);transition:width .8s var(--spring)}
.traits small{font-size:11px;font-weight:700;color:var(--ink-faint)}
/* v52: the page behind Who you are becoming */
.traitscard .shtop{align-items:center}
.seeall{font-size:12px;font-weight:700;color:var(--gold-deep);padding:4px 0 4px 8px}
.becominghead .bigline{margin:4px 0 0;font-family:var(--display);font-weight:500;font-size:clamp(20px,5.6vw,24px);line-height:1.25;color:var(--ink)}
.traitblock{position:relative;padding:12px 12px 10px;border-radius:14px;background:var(--ivory);box-shadow:inset 0 0 0 1.5px var(--c);margin-top:8px}
.traitblock .tbtop{display:flex;flex-direction:column;gap:2px}
.traitblock .tbtop>span{display:flex;align-items:baseline;gap:10px}
.traitblock .tn{font-size:11.5px;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--c)}
.traitblock b{font-family:var(--display);font-weight:600;font-size:30px;line-height:1;color:var(--ink)}
.traitblock p{margin:0;font-size:13.5px;color:var(--ink-soft)}
.traitblock .tshelf{padding:8px 0 4px;gap:4px}
.traitblock .tro{width:76px}
.traitblock .tro span{text-transform:capitalize}
.traitblock .tbar{display:block;height:6px;border-radius:3px;background:var(--card);overflow:hidden;box-shadow:inset 0 0 0 1px var(--line);margin-top:4px}
.traitblock .tbar em{display:block;height:100%;background:var(--c);border-radius:3px}
.cancard{--g1:#F3E3A8;--g2:var(--gold)}
.can{display:grid;grid-template-columns:52px 1fr;gap:10px;align-items:center;padding:9px 0;border-top:1px solid var(--line)}
.can img{width:52px;height:40px;object-fit:cover;border-radius:9px;box-shadow:0 0 0 1.2px var(--c2)}
.can small{display:block;font-size:10.5px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--c);line-height:1.3}
.can strong{display:block;font-family:var(--display);font-weight:500;font-size:15.5px;line-height:1.3;color:var(--ink);margin-top:2px}

/* ---- finishing a ladder (v54) ---- */
.finishcard .bigt .tsvg{width:104px;height:130px}
.finishcard h2{font-size:28px;margin-bottom:4px}
.finstats{display:flex;gap:7px;margin:14px 0 10px}
.finstats span{flex:1;min-width:0;background:var(--ivory-2);border-radius:12px;padding:9px 4px;text-align:center;
  font-size:10px;font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-faint);line-height:1.25}
.finstats b{display:block;font-family:var(--display);font-weight:600;font-size:21px;letter-spacing:0;
  text-transform:none;color:var(--c,var(--gold-deep));margin-bottom:2px}
.finafter{margin:4px 0 0;font-size:13px;line-height:1.5;color:var(--ink-soft);
  background:var(--gold-pale);border-radius:13px;padding:11px 13px}
