/* UNSUBSCRIBE: THE BOSS FIGHT
   A clean gym "member portal" that a boss-fight HUD slowly takes over. */
:root{
  --teal:#12B5A6; --teal-d:#0A8479; --teal-l:#D6F5F1;
  --coral:#FF6B5E; --coral-d:#DB4336; --coral-l:#FFE3DF;
  --cream:#FFF4E6; --navy:#14213D; --navy-2:#22335B; --yellow:#FFD23F; --grey:#8A93A6; --paper:#fff;
  --display:"Arial Black","Segoe UI Black","Helvetica Neue",Impact,system-ui,sans-serif;
  --body:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --hard:5px 5px 0 var(--navy);
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{font-family:var(--body);color:var(--navy);background:var(--cream);-webkit-text-size-adjust:100%;line-height:1.35}
button,input{font:inherit;color:inherit}
button{cursor:pointer}
[hidden]{display:none !important}
img{max-width:100%}
small{font-size:.78em}

#app{min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;background:var(--cream)}
#app.s-fight{height:100vh;height:100dvh;overflow:hidden}

/* ── top bar: the portal chrome ───────────────────────────────────────── */
.topbar{display:flex;align-items:center;gap:18px;padding:8px 16px;background:#fff;border-bottom:3px solid var(--navy);position:relative;z-index:5;transition:background .6s,color .6s}
.brand{display:flex;align-items:center;gap:8px;text-decoration:none;color:inherit;min-width:0}
.brand img{width:36px;height:36px;object-fit:contain;flex:none}
.wordmark{font-family:var(--display);font-size:19px;letter-spacing:.02em;color:var(--teal-d);white-space:nowrap;transition:color .6s}
.wordmark sup{font-size:.5em}
.portal-tag{font-size:12px;font-weight:700;color:var(--grey);border-left:2px solid #dde2ea;padding-left:8px;white-space:nowrap}
.nav{display:flex;gap:18px;margin-left:auto;font-size:13px;font-weight:700;color:var(--navy-2);white-space:nowrap}
.nav-cancel{color:var(--grey);text-decoration:line-through;text-decoration-thickness:1px}
.nav-cancel small{text-decoration:none;display:inline-block;font-weight:500}
.toggles{display:flex;gap:6px;margin-left:8px}
.tog{border:2px solid var(--navy);background:#fff;border-radius:999px;padding:4px 10px;font-size:11px;font-weight:800;white-space:nowrap}
.tog[aria-pressed="true"]{background:var(--teal-l)}
#app.p2 .topbar{background:var(--navy-2);color:#fff}
#app.p2 .wordmark{color:var(--yellow)}
#app.p2 .nav{color:#dbe4ff}
#app.p3 .topbar{background:var(--navy);color:var(--yellow)}
#app.p3 .wordmark{color:var(--coral)}
#app.p3 .nav{color:var(--yellow)}
#app.p2 .tog,#app.p3 .tog{color:var(--navy)}

/* ── start screen ─────────────────────────────────────────────────────── */
#portal{flex:1;display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:28px;align-items:center;padding:26px clamp(16px,5vw,64px) 30px;
  background:linear-gradient(90deg,rgba(255,244,230,.96) 0%,rgba(255,244,230,.86) 45%,rgba(255,244,230,.55) 100%),url(art/lobby-wide.webp?v=1) center/cover no-repeat}
.hero{position:relative;min-width:0}
.kicker{display:inline-block;margin:0 0 12px;font-family:var(--display);font-size:15px;letter-spacing:.08em;color:#fff;background:var(--navy);padding:6px 12px;border-radius:8px;transform:rotate(-1.5deg);box-shadow:4px 4px 0 var(--coral)}
.hero h1{margin:0;font-family:var(--display);font-size:clamp(26px,3.5vw,46px);line-height:1.06;letter-spacing:-.01em}
.hero h1 em{font-style:normal;color:var(--coral-d)}
.how{margin:14px 0 0;font-size:16px;font-weight:600;color:var(--navy-2);max-width:34em}
.hero-brenda{display:block;width:min(46vh,380px);height:auto;margin:6px 0 -30px -10px;filter:drop-shadow(0 10px 0 rgba(20,33,61,.18));animation:bob 3.2s ease-in-out infinite}
@keyframes bob{50%{transform:translateY(-6px) rotate(-1deg)}}

.account{position:relative;background:#fff;border:3px solid var(--navy);border-radius:20px;box-shadow:8px 8px 0 var(--navy);padding:22px 22px 20px;max-width:470px;width:100%;justify-self:center}
.acct-mascot{position:absolute;right:-18px;top:-54px;width:104px;height:104px;object-fit:contain;transform:rotate(8deg);filter:drop-shadow(0 5px 0 rgba(20,33,61,.2))}
.acct-eyebrow{margin:0;font-size:11px;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--teal-d)}
.account h2{margin:2px 0 12px;font-family:var(--display);font-size:21px;line-height:1.15;padding-right:70px}
.acct-rows{margin:0 0 14px;border-top:2px solid #eef1f5}
.acct-rows div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:2px solid #eef1f5;font-size:14px}
.acct-rows dt{font-weight:800;color:var(--grey);white-space:nowrap}
.acct-rows dd{margin:0;font-weight:700;text-align:right}
.acct-rows small{color:var(--grey);font-weight:600}
.btn{border:3px solid var(--navy);border-radius:12px;font-weight:900;padding:9px 14px;background:#fff;box-shadow:3px 3px 0 var(--navy);transition:transform .08s,box-shadow .08s}
.btn:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--navy)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.upsells{display:flex;flex-wrap:wrap;gap:8px}
.btn.up{background:var(--teal);color:#fff;font-size:13px;flex:1 1 auto;text-shadow:0 1px 0 rgba(0,0,0,.2)}
.upsell-toast{min-height:20px;margin:8px 0 0;font-size:13px;font-weight:700;color:var(--coral-d)}
.cancel-row{position:relative;margin-top:10px;padding-top:14px;border-top:2px dashed #cfd6e2;text-align:center}
.btn.cancel{width:100%;background:var(--coral);color:#fff;font-family:var(--display);font-size:20px;padding:13px 14px;letter-spacing:.01em;animation:pulse 1.6s ease-in-out infinite;text-shadow:0 2px 0 rgba(0,0,0,.18)}
@keyframes pulse{50%{box-shadow:3px 3px 0 var(--navy),0 0 0 9px rgba(255,107,94,.22)}}
.start-here{position:absolute;left:-6px;top:-13px;font-family:var(--display);font-size:11px;letter-spacing:.06em;background:var(--yellow);border:2px solid var(--navy);border-radius:7px;padding:2px 8px;transform:rotate(-6deg);animation:nudge 1s ease-in-out infinite}
@keyframes nudge{50%{transform:rotate(-6deg) translateY(3px)}}
.cancel-note{margin:9px 0 0;font-size:12px;font-weight:700;color:var(--grey)}

/* ── fight: HUD ───────────────────────────────────────────────────────── */
#fight{flex:1;min-height:0;display:flex;flex-direction:column;position:relative;overflow:hidden;
  background:linear-gradient(180deg,rgba(20,33,61,.5) 0,rgba(20,33,61,0) 22%,rgba(20,33,61,0) 70%,rgba(20,33,61,.35) 100%),url(art/lobby-wide.webp?v=1) center/cover no-repeat}
#app.p2 #fight{background:linear-gradient(180deg,rgba(20,33,61,.72) 0,rgba(20,33,61,.25) 30%,rgba(20,33,61,.3) 70%,rgba(20,33,61,.6) 100%),url(art/lobby-wide.webp?v=1) center/cover no-repeat}
#app.p3 #fight{background:radial-gradient(ellipse at 28% 60%,rgba(255,107,94,.0) 0,rgba(120,20,30,.5) 100%),linear-gradient(180deg,rgba(20,33,61,.85) 0,rgba(20,33,61,.45) 100%),url(art/lobby-wide.webp?v=1) center/cover no-repeat}
.hud{position:relative;z-index:31;display:grid;grid-template-columns:1fr auto 1fr;gap:16px;align-items:center;padding:10px 18px 8px;animation:hudIn .6s cubic-bezier(.2,1.4,.4,1) both}
@keyframes hudIn{from{transform:translateY(-110%)}}
.bar{min-width:0}
.bar-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;color:#fff;text-shadow:0 2px 0 var(--navy),0 0 8px rgba(20,33,61,.8)}
.bar-name{font-family:var(--display);font-size:14px;letter-spacing:.04em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.bar-num{font-family:var(--display);font-size:16px}
.track{position:relative;height:22px;background:var(--navy);border:3px solid var(--navy);border-radius:8px;box-shadow:0 3px 0 rgba(0,0,0,.35),inset 0 0 0 2px #2c3d68;overflow:hidden;transform:skewX(-12deg)}
.fill,.ghost{position:absolute;inset:0 auto 0 0;width:100%;border-radius:3px}
.fill{transition:width .45s cubic-bezier(.3,1.3,.5,1)}
.ghost{background:#fff;opacity:.85;transition:width 1.1s .35s ease-out}
.boss-bar .fill{background:linear-gradient(180deg,#ff9a8f 0,var(--coral) 45%,var(--coral-d) 100%)}
.you-bar .fill{background:linear-gradient(180deg,#7ff0e4 0,var(--teal) 45%,var(--teal-d) 100%)}
.you-bar .track{transform:skewX(12deg)}
.you-bar .fill,.you-bar .ghost{inset:0 0 0 auto}
.you-bar.low .fill{background:linear-gradient(180deg,#ffe58a,var(--yellow) 45%,#e0a800);animation:lowblink .7s steps(2) infinite}
@keyframes lowblink{50%{filter:brightness(1.35)}}
.bar-label{margin-top:3px;font-size:10px;font-weight:900;letter-spacing:.16em;color:var(--yellow);text-shadow:0 1px 0 var(--navy),0 0 6px rgba(20,33,61,.9)}
.you-bar .bar-label{text-align:right}
.you-bar .bar-top{flex-direction:row-reverse}
.phase-pill{display:flex;flex-direction:column;align-items:center;background:var(--yellow);border:3px solid var(--navy);border-radius:12px;padding:3px 14px 4px;box-shadow:var(--hard);transform:rotate(-2deg);line-height:1.05}
.phase-pill small{font-size:10px;font-weight:900;letter-spacing:.16em}
.phase-pill b{font-family:var(--display);font-size:16px;white-space:nowrap}
#app.p3 .phase-pill{background:var(--coral);color:#fff}

/* ── fight: stage ─────────────────────────────────────────────────────── */
.stage{flex:1;min-height:0;display:grid;grid-template-columns:minmax(260px,42%) minmax(0,1fr);gap:18px;padding:0 18px 14px}
.boss{position:relative;min-height:0;display:flex;align-items:flex-end;justify-content:center}
.spot{position:absolute;left:50%;bottom:0;width:92%;aspect-ratio:1;max-height:100%;transform:translateX(-50%);background:radial-gradient(circle at 50% 55%,rgba(255,244,230,.85) 0,rgba(255,244,230,.35) 45%,rgba(255,244,230,0) 68%);pointer-events:none}
.portrait{position:relative;display:block;width:100%;height:100%;min-width:0;object-fit:contain;object-position:50% 100%;filter:drop-shadow(0 0 0 #fff) drop-shadow(0 10px 0 rgba(20,33,61,.22));transform-origin:50% 100%;animation:breathe 3.4s ease-in-out infinite}
@keyframes breathe{50%{transform:scale(1.012) translateY(-2px)}}
.portrait.swap{animation:pop .32s cubic-bezier(.3,1.6,.5,1)}
@keyframes pop{0%{transform:scale(.94)}100%{transform:scale(1)}}
.portrait.hurt{animation:hurt .45s}
@keyframes hurt{0%{filter:brightness(2.2) saturate(.3)}25%{transform:translateX(-12px) rotate(-3deg)}50%{transform:translateX(10px) rotate(2deg);filter:brightness(1.3)}100%{transform:none}}
.portrait.enter{animation:enter .7s cubic-bezier(.2,1.3,.4,1)}
@keyframes enter{from{transform:translateX(-120%) rotate(-8deg)}}
.sidekick{position:absolute;left:0;bottom:0;width:30%;max-width:150px;z-index:2;filter:drop-shadow(0 4px 0 rgba(20,33,61,.3));animation:tremble .35s linear infinite}
@keyframes tremble{25%{transform:translateX(-1px)}75%{transform:translateX(1px)}}
.noart{background:var(--coral-l);border:3px solid var(--navy);border-radius:50% 50% 16px 16px;min-width:180px;min-height:200px}
.hits{position:absolute;inset:0;pointer-events:none;z-index:3}
.hitnum{position:absolute;font-family:var(--display);font-size:44px;color:#fff;-webkit-text-stroke:2px var(--navy);paint-order:stroke fill;text-shadow:0 4px 0 var(--navy);white-space:nowrap;animation:floatUp 1.25s ease-out forwards;transform:translate(-50%,0)}
.hitnum small{display:block;font-size:14px;letter-spacing:.1em;-webkit-text-stroke:0;text-shadow:0 2px 0 var(--navy);text-align:center}
.hitnum.crit{font-size:64px;color:var(--yellow)}
.hitnum.firm{color:#ffd9d4}
.hitnum.weak,.hitnum.zero{font-size:28px;color:#cfd6e2}
.hitnum.heal{color:#8dffb0}
.hitnum.pat{font-size:24px;color:#9ff5ec}
@keyframes floatUp{0%{opacity:0;transform:translate(-50%,10px) scale(.5)}15%{opacity:1;transform:translate(-50%,-6px) scale(1.2)}30%{transform:translate(-50%,-12px) scale(1)}100%{opacity:0;transform:translate(-50%,-90px) scale(1)}}
.move{position:absolute;left:50%;bottom:8px;transform:translateX(-50%) rotate(-1.5deg);z-index:4;max-width:96%;font-family:var(--display);font-size:13px;letter-spacing:.03em;text-align:center;color:#fff;background:var(--navy);border:2px solid var(--yellow);border-radius:9px;padding:5px 10px;box-shadow:3px 3px 0 rgba(0,0,0,.35);opacity:0;transition:opacity .25s}
.move.on{opacity:1}
.move b{color:var(--yellow)}
#fight.shake{animation:shake .38s}
#fight.shake2{animation:shake2 .5s}
@keyframes shake{20%{transform:translate(-5px,2px)}40%{transform:translate(5px,-2px)}60%{transform:translate(-4px,-2px)}80%{transform:translate(3px,2px)}}
@keyframes shake2{10%{transform:translate(-11px,4px) rotate(-.5deg)}30%{transform:translate(10px,-5px) rotate(.5deg)}50%{transform:translate(-8px,-3px)}70%{transform:translate(7px,4px)}90%{transform:translate(-3px,1px)}}

/* ── fight: chat ──────────────────────────────────────────────────────── */
.chat{display:flex;flex-direction:column;min-height:0;min-width:0;background:rgba(255,255,255,.97);border:3px solid var(--navy);border-radius:18px;box-shadow:7px 7px 0 var(--navy);overflow:hidden}
.chat-head{display:flex;align-items:center;gap:8px;padding:8px 14px;background:var(--teal);color:#fff;font-weight:900;font-size:14px;border-bottom:3px solid var(--navy);transition:background .5s}
.chat-head .dot{width:10px;height:10px;border-radius:50%;background:#8dffb0;border:2px solid var(--navy);flex:none}
#chatTitle{white-space:nowrap}
.chat-sub{margin-left:auto;min-width:0;font-size:11px;font-weight:700;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#app.p2 .chat-head{background:var(--navy-2)}
#app.p2 .chat-head .dot{background:var(--coral);animation:lowblink .8s steps(2) infinite}
#app.p3 .chat-head{background:var(--coral-d)}
.log{flex:1;min-height:0;overflow-y:auto;padding:12px 12px 6px;display:flex;flex-direction:column;gap:8px;scroll-behavior:smooth;overscroll-behavior:contain}
.msg{max-width:86%;padding:8px 12px;border:2px solid var(--navy);border-radius:14px;font-size:15px;font-weight:600;line-height:1.3;overflow-wrap:anywhere;animation:msgIn .22s ease-out}
@keyframes msgIn{from{opacity:0;transform:translateY(6px)}}
.msg .who{display:block;font-size:10px;font-weight:900;letter-spacing:.12em;margin-bottom:1px}
.msg.you{align-self:flex-end;background:var(--teal-l);border-bottom-right-radius:4px}
.msg.you .who{color:var(--teal-d)}
.msg.brenda{align-self:flex-start;background:#fff;border-bottom-left-radius:4px;box-shadow:3px 3px 0 var(--coral)}
.msg.brenda .who{color:var(--coral-d)}
.msg.chad{align-self:flex-start;background:#eef2ff;border-bottom-left-radius:4px;box-shadow:3px 3px 0 var(--navy-2)}
.msg.chad .who{color:var(--navy-2)}
.sys{align-self:center;max-width:94%;text-align:center;font-size:12px;font-weight:800;color:var(--navy-2);background:#f1f4f9;border-radius:999px;padding:3px 12px;animation:msgIn .22s ease-out}
.sys.good{background:#dcfbe6;color:#11693a}
.sys.bad{background:var(--coral-l);color:var(--coral-d)}
.sys.move{background:var(--navy);color:#fff}
.sys.move b{color:var(--yellow)}
.typing{display:flex;align-items:center;gap:8px;padding:2px 14px 6px;font-size:12px;font-weight:700;color:var(--grey)}
.dots{display:inline-flex;gap:3px}
.dots i{width:6px;height:6px;border-radius:50%;background:var(--coral);animation:dot 1s infinite}
.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}
@keyframes dot{30%{transform:translateY(-4px)}60%{transform:none}}
.chips{display:flex;flex-wrap:wrap;gap:6px;padding:4px 10px 8px;min-height:8px}
.chip{border:2px solid var(--navy);background:var(--cream);border-radius:999px;padding:6px 12px;font-size:13px;font-weight:700;text-align:left;line-height:1.2;box-shadow:2px 2px 0 var(--navy);animation:msgIn .25s ease-out both}
.chip:nth-child(2){animation-delay:.06s}.chip:nth-child(3){animation-delay:.12s}
.chip:hover{background:var(--yellow)}
.chip:active{transform:translate(2px,2px);box-shadow:none}
.composer{display:flex;gap:8px;padding:8px 10px 10px;border-top:2px solid #e6eaf1;background:#fbfcfe}
.composer input{flex:1;min-width:0;border:3px solid var(--navy);border-radius:12px;padding:9px 12px;font-size:16px;font-weight:600;background:#fff;outline:none}
.composer input:focus{box-shadow:0 0 0 3px var(--teal-l)}
.composer input:disabled{background:#f1f4f9}
.btn.send{background:var(--coral);color:#fff}
.mic{border:3px solid var(--navy);border-radius:12px;background:#fff;font-size:12px;font-weight:900;padding:0 10px;box-shadow:3px 3px 0 var(--navy)}
.mic.live{background:var(--coral);color:#fff;animation:lowblink .6s steps(2) infinite}

/* ── phase banner ─────────────────────────────────────────────────────── */
.banner{position:absolute;inset:0;z-index:20;display:flex;align-items:center;pointer-events:none;background:rgba(20,33,61,.35);animation:bannerBg 2s forwards}
@keyframes bannerBg{0%{opacity:0}10%{opacity:1}85%{opacity:1}100%{opacity:0}}
.banner-in{width:120%;margin-left:-10%;padding:16px 12%;background:repeating-linear-gradient(-45deg,var(--navy) 0 26px,#1c2c52 26px 52px);border-top:6px solid var(--yellow);border-bottom:6px solid var(--coral);color:#fff;text-align:center;transform:rotate(-3deg);animation:bannerIn 2s cubic-bezier(.2,1,.3,1) forwards;box-shadow:0 12px 0 rgba(0,0,0,.25)}
@keyframes bannerIn{0%{transform:translateX(-110%) rotate(-3deg)}14%{transform:translateX(0) rotate(-3deg)}84%{transform:translateX(0) rotate(-3deg)}100%{transform:translateX(110%) rotate(-3deg)}}
.banner small{display:block;font-family:var(--display);font-size:clamp(13px,2vw,20px);letter-spacing:.3em;color:var(--yellow)}
.banner b{display:block;font-family:var(--display);font-size:clamp(34px,7.5vw,92px);line-height:1;letter-spacing:.01em;text-shadow:5px 5px 0 var(--coral-d)}

/* ── overlays ─────────────────────────────────────────────────────────── */
.overlay{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;padding:12px;background:rgba(20,33,61,.62);animation:fade .2s}
@keyframes fade{from{opacity:0}}
#trapLayer{padding-top:calc(var(--hud-h,84px) + 6px)}   /* the bars stay readable above a trap */
#outcomeLayer{z-index:40;background:rgba(20,33,61,.8)}
.trap{position:relative;width:min(100%,460px);max-height:100%;overflow:auto;background:#fff;border:4px solid var(--navy);border-radius:20px;box-shadow:9px 9px 0 var(--navy);padding:18px 18px 16px;text-align:center;animation:trapIn .4s cubic-bezier(.2,1.5,.4,1)}
@keyframes trapIn{from{transform:scale(.6) rotate(-4deg);opacity:0}}
.trap-tag{display:inline-block;margin:0 0 10px;font-family:var(--display);font-size:11px;letter-spacing:.1em;color:#fff;background:var(--navy);border-radius:7px;padding:4px 9px}
.trap-tag b{color:var(--yellow)}
.trap h3{margin:0 0 6px;font-family:var(--display);font-size:22px;line-height:1.1}
.trap p{margin:6px 0}
.fine{font-size:11px;color:var(--grey);font-weight:600}
.trap-result{position:absolute;inset:0;z-index:5;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:20px;border-radius:15px;text-align:center;animation:fade .2s}
.trap-result.good{background:#12a35d;color:#fff}
.trap-result.bad{background:var(--coral-d);color:#fff}
.trap-result b{font-family:var(--display);font-size:30px;line-height:1.05}
.trap-result span{font-size:15px;font-weight:700}
.trap-result em{font-style:normal;font-size:12px;font-weight:900;letter-spacing:.08em;background:rgba(0,0,0,.22);border-radius:999px;padding:4px 12px}
.big{display:block;width:100%;border:4px solid var(--navy);border-radius:16px;background:var(--coral);color:#fff;font-family:var(--display);font-size:24px;padding:16px 10px;box-shadow:5px 5px 0 var(--navy);text-shadow:0 2px 0 rgba(0,0,0,.2);animation:pulse 1.1s ease-in-out infinite}
.big:active{transform:translate(4px,4px);box-shadow:none}
.tiny{display:inline-block;margin-top:10px;padding:8px 10px;border:0;background:none;color:#a7aebb;font-size:11px;text-decoration:underline;font-weight:500}

/* discount */
.t-discount{background:radial-gradient(circle at 50% 30%,#fff7c9 0,#ffe27a 60%,var(--yellow) 100%)}
.t-discount .burst{font-family:var(--display);font-size:64px;line-height:.95;color:var(--coral-d);-webkit-text-stroke:2px var(--navy);paint-order:stroke fill;text-shadow:5px 5px 0 var(--navy);transform:rotate(-4deg);margin:8px 0 12px;animation:wob 1s ease-in-out infinite}
@keyframes wob{50%{transform:rotate(3deg) scale(1.04)}}
.t-discount.l1 .big{font-size:28px;padding:20px 10px}
.t-discount.l2 .big{font-size:33px;padding:26px 10px}
.t-discount.l1 .tiny{font-size:10px;color:#b9b28a}
.t-discount.l2 .tiny{font-size:9px;color:#c9c08f}
/* double negative */
.t-doubleneg{background:#e9edf3;border-radius:8px;text-align:left;padding:0 0 14px}
.t-doubleneg .winbar{display:flex;justify-content:space-between;align-items:center;background:var(--navy-2);color:#fff;font-size:12px;font-weight:800;padding:6px 10px;border-radius:3px 3px 0 0}
.t-doubleneg .inner{padding:12px 16px 0}
.t-doubleneg h3{font-family:var(--body);font-weight:900;font-size:24px}
.t-doubleneg .opts{display:grid;gap:8px;margin-top:10px}
.t-doubleneg .opt{border:2px solid var(--navy);border-radius:6px;background:#fff;padding:11px 10px;font-weight:800;font-size:15px;box-shadow:2px 2px 0 var(--navy);text-align:center}
.t-doubleneg .opt:hover{background:var(--teal-l)}
.timer{height:10px;background:#cfd6e2;border-radius:99px;overflow:hidden;margin-top:12px}
.timer i{display:block;height:100%;width:100%;background:var(--coral);transform-origin:left}
/* survey */
.t-survey{text-align:left}
.t-survey .q{font-weight:900;font-size:16px}
.t-survey .q sup{color:var(--coral-d)}
.t-survey .list{max-height:190px;overflow-y:auto;border:2px solid var(--navy);border-radius:10px;margin:8px 0;background:#fbfcfe;overscroll-behavior:contain}
.t-survey label{display:flex;gap:8px;align-items:flex-start;padding:8px 10px;border-bottom:1px solid #e6eaf1;font-size:14px;font-weight:600;cursor:pointer}
.t-survey label:last-child{border-bottom:0;color:#a7aebb;font-size:12px;font-weight:500}
.t-survey input{margin-top:2px;accent-color:var(--teal-d);flex:none}
.t-survey .big{font-size:19px;padding:12px;animation:none}
/* records */
.t-records .file{border:3px solid var(--navy);border-radius:10px;background:#fffbe9;text-align:left;padding:10px 12px;margin:8px 0 12px;position:relative;font-size:14px}
.t-records .file div{display:flex;justify-content:space-between;gap:10px;padding:3px 0;border-bottom:1px dashed #d9cfa6}
.t-records .file div:last-of-type{border-bottom:0}
.t-records .file dt{font-weight:800;color:var(--grey)}
.t-records .file dd{margin:0;font-weight:800;text-align:right}
.t-records .stamp{position:absolute;right:-12px;top:-20px;font-family:var(--display);font-size:22px;color:var(--coral-d);border:3px solid var(--coral-d);border-radius:8px;padding:0 8px;transform:rotate(-12deg);opacity:.85;background:rgba(255,251,233,.8)}
.t-records .big{font-size:17px;padding:12px;animation:none}
.t-records .proof{display:flex;align-items:center;justify-content:center;gap:10px;margin:14px 0 4px;font-weight:900;font-size:17px;cursor:pointer}
.t-records .proof input{width:24px;height:24px;accent-color:var(--teal-d)}
.t-records .say{min-height:20px;font-size:13px;font-weight:800;color:var(--coral-d)}
/* hold + phone tree */
.t-phone{background:var(--navy);color:#fff;border-color:#000}
.t-phone h3{color:var(--yellow)}
.t-phone .lcd{background:#0c1528;border:2px solid #33466f;border-radius:10px;padding:10px;margin:8px 0;min-height:64px;font-weight:700;font-size:14px;display:flex;align-items:center;justify-content:center;color:#b9f8f1}
.queue{font-family:var(--display);font-size:54px;line-height:1;color:#fff;margin:2px 0}
.queue.bump{animation:bump .3s}
@keyframes bump{50%{transform:scale(1.25);color:var(--coral)}}
.eq{display:flex;justify-content:center;align-items:flex-end;gap:4px;height:26px;margin:6px 0}
.eq i{width:6px;background:var(--teal);border-radius:2px;animation:eq 1s ease-in-out infinite}
.eq i:nth-child(2n){animation-duration:.7s}.eq i:nth-child(3n){animation-duration:1.3s}
@keyframes eq{0%,100%{height:5px}50%{height:26px}}
.t-phone .big{font-size:15px;padding:12px;background:var(--teal);animation:none}
.zero{margin-top:12px;border:3px solid #fff;border-radius:14px;background:#22335B;color:#fff;font-weight:900;padding:10px 16px;font-size:15px;box-shadow:3px 3px 0 #000}
.zero b{font-family:var(--display);font-size:20px;color:var(--yellow);margin-right:6px}
.zero:active{transform:translate(3px,3px);box-shadow:none}
.pad{position:relative;display:grid;grid-template-columns:repeat(3,1fr);grid-auto-rows:56px;gap:8px;margin:10px auto 0;max-width:300px}
.yard{height:66px;display:flex;align-items:center;justify-content:center;margin-top:6px}
.key{border:2px solid #fff;border-radius:12px;background:#22335B;color:#fff;padding:4px 2px 5px;min-height:0;font-family:var(--display);font-size:20px;line-height:1;box-shadow:2px 2px 0 #000;transition:transform .18s cubic-bezier(.2,1.5,.4,1)}
.key small{display:block;font-family:var(--body);font-size:9px;font-weight:700;color:#b9c6e6;margin-top:3px;line-height:1.05}
.key.nine{background:var(--coral);border-color:var(--yellow);position:relative;z-index:2}
.key.nine small{color:#fff}
.key.nine.tired{animation:pant .5s ease-in-out infinite}
@keyframes pant{50%{transform:var(--at,none) scale(1.06)}}
/* pause calendar */
.t-pause .calhead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:8px 0 4px;font-family:var(--display);font-size:15px}
.t-pause .later{border:2px solid var(--navy);border-radius:999px;background:#fff;font-size:11px;font-weight:800;padding:4px 10px;color:var(--grey);font-family:var(--body);white-space:nowrap}
.cal{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;min-height:150px;align-content:start}
.cal button{border:2px solid var(--navy);border-radius:8px;background:var(--teal-l);font-weight:800;font-size:13px;padding:6px 0}
.cal button:hover{background:var(--yellow)}
.cal .never{grid-column:1/-1;background:#f1f4f9;color:var(--grey);font-size:13px;padding:14px 0;border-style:dashed}
/* mascot */
.t-mascot{background:linear-gradient(180deg,#dff3ff,#fff 60%)}
.t-mascot img{width:150px;height:150px;object-fit:contain;animation:sob .5s ease-in-out infinite}
@keyframes sob{50%{transform:translateY(3px) rotate(-2deg)}}
.t-mascot .cry{min-height:38px;font-style:italic;font-weight:700;color:var(--navy-2)}
.guilt{height:16px;border:3px solid var(--navy);border-radius:99px;overflow:hidden;background:#fff;margin:4px 0 2px}
.guilt i{display:block;height:100%;width:0;background:linear-gradient(90deg,#9ad0ff,#5b7bff)}
.t-mascot .big{font-size:18px;padding:12px}
.look{position:relative;overflow:hidden;margin-top:10px;border:3px solid var(--navy);border-radius:12px;background:#fff;font-weight:900;font-size:14px;padding:10px 14px;width:100%;touch-action:none;user-select:none;-webkit-user-select:none}
.look i{position:absolute;inset:0 auto 0 0;width:0;background:var(--teal-l);z-index:0}
.look span{position:relative;z-index:1}
/* chad's final offer */
.t-chad{background:#fffdf5}
.t-chad .clock{font-family:var(--display);color:var(--coral-d);font-size:14px}
.t-chad .scroll{max-height:150px;overflow-y:auto;border:2px solid var(--navy);border-radius:10px;background:#fff;text-align:left;margin:8px 0 10px;padding:4px 10px;overscroll-behavior:contain}
.t-chad ol{margin:0;padding:4px 0 4px 22px;font-size:14px;font-weight:600}
.t-chad li{padding:4px 0}
.t-chad .end{font-size:12px;font-weight:800;color:var(--teal-d);padding:6px 0 8px}
.t-chad .big{font-size:20px;padding:13px}
.decline{margin-top:10px;width:100%;border:3px solid var(--navy);border-radius:12px;background:#fff;font-weight:900;padding:9px;font-size:14px}
.decline:disabled{opacity:.55;border-style:dashed}

/* ── outcome cards ────────────────────────────────────────────────────── */
.outcome{width:min(100%,520px);max-height:100%;overflow:auto;animation:trapIn .5s cubic-bezier(.2,1.4,.4,1)}
.card{position:relative;border:4px solid var(--navy);border-radius:18px;box-shadow:9px 9px 0 var(--navy);padding:18px 18px 16px;text-align:center}
.card.win{background:var(--cream);outline:3px double #c9a227;outline-offset:-12px}
.card.lose{background:linear-gradient(160deg,#1c2c52,var(--navy) 60%,#0b1326);color:#fff}
.card .pre{margin:0;font-size:10px;font-weight:900;letter-spacing:.2em;color:var(--teal-d)}
.card.lose .pre{color:var(--yellow)}
.card h3{margin:4px 0 4px;font-family:var(--display);font-size:clamp(21px,5.2vw,30px);line-height:1.05}
.card.lose h3{color:var(--yellow)}
.card h3.cert span{display:block;font-size:.72em}
.card h3.cert b{display:block;font-size:1.25em;color:var(--coral-d);letter-spacing:.01em}
.card.lose h3.cert span{color:#fff}
.card.lose h3.cert b{color:var(--yellow)}
.card .to{margin:2px 0;font-size:13px;font-weight:700}
.card .rank{display:inline-block;margin:8px 0 6px;font-family:var(--display);font-size:clamp(18px,4.6vw,24px);color:#fff;background:var(--teal-d);border:3px solid var(--navy);border-radius:10px;padding:4px 14px;transform:rotate(-2deg);box-shadow:4px 4px 0 var(--navy)}
.card.lose .rank{background:linear-gradient(120deg,#f4f6fa,#b9c2d3 45%,#f4f6fa 70%,#9aa5ba);color:var(--navy)}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:8px 0}
.stats div{border:2px solid var(--navy);border-radius:10px;background:#fff;padding:5px 2px;color:var(--navy)}
.stats b{display:block;font-family:var(--display);font-size:19px;line-height:1.1}
.stats span{display:block;font-size:9px;font-weight:900;letter-spacing:.06em;text-transform:uppercase;color:var(--grey)}
.quote{margin:8px 0 4px;padding:8px 12px;border-left:5px solid var(--coral);background:rgba(255,255,255,.7);border-radius:6px;text-align:left;font-size:14px;font-weight:700;font-style:italic;color:var(--navy);overflow-wrap:anywhere}
.quote small{display:block;font-style:normal;font-size:10px;font-weight:900;letter-spacing:.1em;color:var(--grey);text-transform:uppercase}
.card .art{position:absolute;right:-14px;top:-26px;width:96px;height:96px;object-fit:contain;transform:rotate(10deg);filter:drop-shadow(0 4px 0 rgba(20,33,61,.3))}
.card.lose .art{position:static;display:block;margin:2px auto 0;width:170px;height:auto;transform:rotate(-4deg)}
.card .sig{display:flex;justify-content:space-between;gap:10px;margin-top:6px;font-size:11px;font-weight:700;color:var(--grey)}
.card .sig i{display:block;font-family:"Brush Script MT","Segoe Script",cursive;font-size:19px;color:var(--navy);font-style:italic;border-bottom:2px solid var(--navy);padding:0 6px}
.card.lose .sig{color:#b9c6e6;justify-content:center}
.card .fineprint{margin:8px 0 0;font-size:10px;font-weight:600;color:var(--grey)}
.actions{display:flex;gap:8px;margin-top:14px;flex-wrap:wrap}
.actions .btn{flex:1 1 30%;font-size:14px;white-space:nowrap}
.actions .again{background:var(--yellow)}
.actions .copy{background:var(--teal);color:#fff}
.copied{min-height:18px;margin:8px 0 0;font-size:12px;font-weight:800;color:#fff;text-align:center;text-shadow:0 1px 0 var(--navy)}

.foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:2px 12px;padding:5px 12px;text-align:center;font-size:11px;font-weight:700;color:var(--grey);background:#fff;border-top:2px solid #e6eaf1}
#app.p2 .foot,#app.p3 .foot{background:var(--navy);color:#b9c6e6;border-top-color:var(--navy)}
.keylink{border:0;background:none;padding:2px 0;font-size:11px;font-weight:800;color:var(--teal-d);text-decoration:underline}
#app.p2 .keylink,#app.p3 .keylink{color:var(--yellow)}
.keychip{border:1.5px solid currentColor;border-radius:999px;padding:0 8px;font-size:10px;font-weight:800;white-space:nowrap}
.keychip.mine{color:#11693a;background:#dcfbe6;border-color:#11693a}
.keychip.bad{color:var(--coral-d);background:var(--coral-l);border-color:var(--coral-d)}

/* ── bring your own key ───────────────────────────────────────────────── */
.keydlg{position:fixed;inset:0;z-index:100;display:flex;align-items:center;justify-content:center;padding:14px;background:rgba(20,33,61,.7);animation:fade .2s}
.keybox{width:min(100%,420px);max-height:100%;overflow:auto;background:#fff;border:4px solid var(--navy);border-radius:18px;box-shadow:8px 8px 0 var(--navy);padding:18px}
.keybox h3{margin:0 0 4px;font-family:var(--display);font-size:22px}
.keylead{margin:0 0 10px;font-size:14px;font-weight:600;color:var(--navy-2)}
.keybox label{display:block;margin:8px 0 3px;font-size:11px;font-weight:900;letter-spacing:.1em;text-transform:uppercase;color:var(--grey)}
.keybox select,.keybox input{width:100%;border:3px solid var(--navy);border-radius:10px;padding:9px 10px;font-size:16px;font-weight:600;background:#fff}
.keymsg{min-height:20px;margin:8px 0 2px;font-size:13px;font-weight:800;color:var(--coral-d)}
.keymsg.ok{color:#11693a}
.keyrow{display:flex;gap:8px;margin:4px 0 12px}
.keyrow .btn{flex:1;font-size:14px}
#keySave{background:var(--teal);color:#fff}
.keyfine{margin:4px 0 0;font-size:12px;font-weight:600;color:var(--grey)}
.keyfine a{color:var(--teal-d);font-weight:800}
.sys.nudge{border-radius:14px;padding:6px 12px;background:#fff7d6;color:var(--navy);border:2px solid var(--yellow)}
.sys .inline{margin-left:8px;border:2px solid var(--navy);border-radius:999px;background:var(--yellow);padding:1px 10px;font-size:11px;font-weight:900;white-space:nowrap}
.cardnudge{margin:10px 0 0;padding:7px 10px 8px;font-size:12px;font-weight:700;line-height:1.5;color:#fff;text-align:center;background:var(--navy);border:2px solid var(--yellow);border-radius:12px}
.cardnudge .inline{display:inline-block;margin-left:8px;border:2px solid var(--navy);border-radius:999px;background:var(--yellow);color:var(--navy);padding:1px 10px;font-size:11px;font-weight:900;text-shadow:none}

/* ── narrow screens ───────────────────────────────────────────────────── */
@media (max-width:900px){
  .nav{display:none}
  .toggles{margin-left:auto}
}
@media (max-width:760px){
  .topbar{padding:6px 10px;gap:8px}
  .brand img{width:28px;height:28px}
  .wordmark{font-size:15px}
  .portal-tag{display:none}
  .tog{padding:3px 8px;font-size:10px}
  #portal{grid-template-columns:1fr;gap:10px;padding:14px 14px 18px;align-items:start;align-content:start;
    background:linear-gradient(180deg,rgba(255,244,230,.95) 0%,rgba(255,244,230,.82) 100%),url(art/lobby-portrait.webp?v=1) center/cover no-repeat}
  .hero{display:grid;grid-template-columns:minmax(0,1fr) 140px;column-gap:6px;align-items:end}
  .kicker{grid-column:1/-1;justify-self:start;font-size:12px;margin-bottom:9px}
  .hero h1{grid-column:1/-1;font-size:25px}
  .how{font-size:13.5px;margin:8px 0 6px;align-self:center}
  .hero-brenda{width:152px;margin:0 0 -18px -8px}
  .account{padding:14px 14px 13px;border-radius:16px;box-shadow:6px 6px 0 var(--navy)}
  .acct-mascot{width:70px;height:70px;right:-6px;top:-30px}
  .account h2{font-size:17px;margin-bottom:8px;padding-right:56px}
  .acct-rows{margin-bottom:10px}
  .acct-rows div{padding:6px 0;font-size:12.5px}
  .upsells{gap:5px;flex-wrap:nowrap}
  .btn.up{font-size:10.5px;padding:7px 4px;border-width:2px;box-shadow:2px 2px 0 var(--navy);white-space:nowrap}
  .upsell-toast{font-size:12px;min-height:17px;margin-top:6px}
  .cancel-row{margin-top:6px;padding-top:12px}
  .btn.cancel{font-size:18px;padding:12px}

  #fight{background:linear-gradient(180deg,rgba(20,33,61,.55) 0,rgba(20,33,61,.05) 30%,rgba(20,33,61,.3) 100%),url(art/lobby-portrait.webp?v=1) center top/cover no-repeat}
  #app.p2 #fight{background:linear-gradient(180deg,rgba(20,33,61,.75) 0,rgba(20,33,61,.3) 35%,rgba(20,33,61,.55) 100%),url(art/lobby-portrait.webp?v=1) center top/cover no-repeat}
  #app.p3 #fight{background:linear-gradient(180deg,rgba(20,33,61,.86) 0,rgba(120,20,30,.5) 45%,rgba(20,33,61,.7) 100%),url(art/lobby-portrait.webp?v=1) center top/cover no-repeat}
  .hud{grid-template-columns:1fr 1fr;gap:6px 10px;padding:6px 10px 4px}
  .phase-pill{grid-column:1/-1;grid-row:1;justify-self:center;flex-direction:row;gap:6px;align-items:baseline;padding:1px 12px 2px;border-width:2px;box-shadow:3px 3px 0 var(--navy)}
  .phase-pill b{font-size:13px}
  .bar-name{font-size:10.5px}
  .bar-num{font-size:12px}
  .track{height:15px;border-width:2px}
  .bar-label{font-size:8.5px;margin-top:2px}
  .stage{grid-template-columns:1fr;grid-template-rows:clamp(104px,19vh,168px) minmax(0,1fr);gap:6px;padding:0 8px 8px}
  .spot{width:auto;height:150%;bottom:-20%}
  .sidekick{width:74px;left:8%}
  .hitnum{font-size:32px}
  .hitnum.crit{font-size:44px}
  .hitnum small{font-size:11px}
  .move{font-size:10.5px;bottom:2px;padding:3px 8px;white-space:nowrap;max-width:98%;overflow:hidden;text-overflow:ellipsis}
  .chat{border-radius:14px;box-shadow:4px 4px 0 var(--navy)}
  .chat-head{padding:6px 10px;font-size:12.5px}
  .log{padding:8px 8px 4px;gap:6px}
  .msg{font-size:14px;padding:6px 10px;max-width:90%}
  .chips{flex-direction:column;flex-wrap:nowrap;gap:5px;padding:4px 8px 7px}
  .chip{font-size:12.5px;padding:6px 10px;border-radius:11px}
  .composer{padding:6px 8px 8px;gap:6px}
  .btn.send{padding:8px 12px}
  .trap{padding:14px 14px 13px;border-radius:16px}
  .t-discount .burst{font-size:52px}
  .foot{font-size:10px;padding:3px 8px}
  .stats{gap:4px}
  .stats b{font-size:16px}
  .stats span{font-size:8px}
  .card{padding:14px 12px 12px}
  .card .art{width:70px;height:70px;right:-10px;top:-26px}
  .card.win .pre{padding:0 44px;font-size:9px;letter-spacing:.14em}
  .card.lose .art{width:130px}
  .actions .btn{font-size:12.5px;padding:9px 6px}
}
@media (max-height:620px) and (min-width:761px){
  .hero-brenda{width:230px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important}
  .banner,.banner-in,.hitnum{animation:none !important}
}
