/* SIDECHICK style.css v2.0 — canonical single-source */

/* ─── BROWSER COMPATIBILITY SUPPORT ──────────────────────────
   ✅ Chrome/Edge 88+
   ✅ Firefox 85+
   ✅ Safari 15+
   ✅ Mobile Safari (iOS 15+)
   ✅ Chrome Android
   
   Features:
   - Backdrop-filter with webkit fallback
   - CSS Grid & Flexbox (widely supported)
   - CSS custom properties (variables)
   - Safe area insets for notches
   - Touch-action for mobile optimization
   - Vendor prefixes for webkit browsers
   ─────────────────────────────────────────────────────────── */

/* ─── 0. Tokens ─────────────────────────────────────────────── */
:root {
  --bg:#f7f7fb; --panel:rgba(255,255,255,0.3); backdrop-filter: blur(24px); border: 1px solid rgba(255,255,255,0.4); --panel-strong:rgba(255,255,255,0.5); backdrop-filter: blur(24px); border: 1px solid rgba(255,255,255,0.6);
  --border:rgba(16,24,40,0.08); --text:#121826; --muted:#58627a;
  --blue:#1dd3ff; --ink:#13233c; --amber:#ffb454; --red:#ff5b7c;
  --green:#25d89c; --sand:#a6b0c9; --accent:#1dd3ff; --accent-2:#a6ff5f;
  --accent-3:#ff6ad5; --accent-warm:#ff9b5f; --radius:22px;
  --shadow:0 24px 70px rgba(10,20,38,0.12);
  --font-sans:'Inter',sans-serif; --font-display:'Outfit',sans-serif;
  --font-mono:'IBM Plex Mono',monospace;
  --bg-grad-1:radial-gradient(circle at 10% 12%,rgba(29,211,255,0.18),transparent 40%);
  --bg-grad-2:radial-gradient(circle at 90% 8%,rgba(255,155,95,0.16),transparent 40%);
  --bg-grad-3:repeating-linear-gradient(140deg,rgba(16,24,40,0.03) 0,rgba(16,24,40,0.03) 1px,transparent 1px,transparent 10px);
  --bg-grad-4:radial-gradient(at 0% 0%, hsla(253,16%,7%,1) 0, transparent 50%), radial-gradient(at 50% 0%, hsla(225,39%,30%,1) 0, transparent 50%), radial-gradient(at 100% 0%, hsla(339,49%,30%,1) 0, transparent 50%); background-size: 200% 200%; animation: gradientBG 15s ease infinite;
  --lobby-bg:var(--bg-grad-4);
  --glow-1:radial-gradient(circle,rgba(29,211,255,0.40),transparent 62%);
  --glow-2:radial-gradient(circle,rgba(255,155,95,0.32),transparent 62%);
}
body.theme-dark {
  --bg:#050510; --panel:rgba(15,15,30,0.4); backdrop-filter: blur(24px); border: 1px solid rgba(255,255,255,0.1); --panel-strong:rgba(20,20,40,0.6); backdrop-filter: blur(24px); border: 1px solid rgba(255,255,255,0.15);
  --border:rgba(64,155,255,0.22); --text:#e9f3ff; --muted:#9bb0d2;
  --blue:#4ce8ff; --ink:#cfe7ff; --amber:#ffbe7a; --red:#ff6f8d;
  --green:#36f2b4; --sand:#7f8bb3; --accent:#4ce8ff; --accent-2:#b8ff62;
  --accent-warm:#ff9f6e; --shadow:0 30px 110px rgba(0,0,0,0.7);
  --bg-grad-1:radial-gradient(circle at 10% 12%,rgba(76,232,255,0.24),transparent 42%);
  --bg-grad-2:radial-gradient(circle at 90% 10%,rgba(255,111,141,0.20),transparent 40%);
  --bg-grad-3:repeating-linear-gradient(150deg,rgba(76,232,255,0.07) 0,rgba(76,232,255,0.07) 1px,transparent 1px,transparent 11px);
  --bg-grad-4:linear-gradient(180deg,#04060d 0%,#0b1220 100%);
  --lobby-bg:var(--bg-grad-1),var(--bg-grad-2),var(--bg-grad-3),var(--bg-grad-4);
  --glow-1:radial-gradient(circle,rgba(76,232,255,0.40),transparent 62%);
  --glow-2:radial-gradient(circle,rgba(255,111,141,0.32),transparent 62%);
}

/* ─── 1. Reset ───────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box}
html,body{height:100%;margin:0;padding:0;overflow:hidden}
body{margin:0;font-family:var(--font-sans);color:var(--text);
  background:var(--bg-grad-1),var(--bg-grad-2),var(--bg-grad-3),var(--bg-grad-4);
  min-height:100vh;overflow-x:hidden;overflow-y:hidden;position:relative}
body.app-active {
  overflow: hidden !important;
  position: fixed !important;
  width: 100vw !important;
  height: 100% !important;
  inset: 0 !important;
}
body::before,body::after{content:'';position:fixed;width:560px;height:560px;border-radius:50%;pointer-events:none;z-index:0;filter:blur(6px);opacity:.95}
body::before{top:8%;left:-6%;background:var(--glow-1)}
body::after{bottom:-6%;right:-8%;background:var(--glow-2)}
body.theme-dark::before,body.theme-dark::after{opacity:.9;filter:blur(10px)}

/* ─── 2. Keyframes ───────────────────────────────────────────── */
@keyframes rise-in{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes msg-in-left{from{opacity:0;transform:translateX(-14px)}to{opacity:1;transform:translateX(0)}}
@keyframes msg-in-right{from{opacity:0;transform:translateX(14px)}to{opacity:1;transform:translateX(0)}}
@keyframes intro-card-rise{from{opacity:0;transform:translateY(24px) scale(.96)}to{opacity:1;transform:none}}
@keyframes intro-logo-pulse{0%,100%{transform:translateY(0) scale(1)}50%{transform:translateY(-7px) scale(1.04)}}
@keyframes intro-spin{to{transform:rotate(360deg)}}
@keyframes intro-grid-drift{to{background-position:42px 42px}}
@keyframes intro-float{from{transform:translate3d(0,0,0) scale(.92)}to{transform:translate3d(26px,-18px,0) scale(1.06)}}
@keyframes intro-progress{from{transform:scaleX(0)}to{transform:scaleX(1)}}
@keyframes flicker{0%{opacity:.27}5%{opacity:.22}10%{opacity:.25}15%{opacity:.28}20%{opacity:.22}25%{opacity:.29}30%{opacity:.24}100%{opacity:.26}}
@keyframes scanline{0%{transform:translateY(-100%)}100%{transform:translateY(1000%)}}
@keyframes slide-up-fade{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}
@keyframes typingBounce{0%,80%,100%{transform:scale(0)}40%{transform:scale(1)}}
@keyframes elegantFadeIn{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}

/* ─── PRE-JS SCREEN HIDING ───────────────────────────────────────
   All non-intro screens are invisible before JS runs. This kills
   the flash-of-chat-screen on page load. JS removes this class on
   the active screen via showScreen(). No !important needed — inline
   styles from showScreen() override class styles automatically.
   ─────────────────────────────────────────────────────────────── */
/* Prevent any vertical/horizontal scrolling during intro screen */
body.intro-active {
  overflow: hidden !important;
  height: 100dvh !important;
  width: 100vw !important;
  position: fixed !important;
  inset: 0 !important;
  overscroll-behavior: none !important;
}

body.intro-active #lobby,
body.intro-active #mode-select,
body.intro-active #app,
body.intro-active #game-screen {
  display: none !important;
}

.screen { display: none; }
#intro-loader { display: grid; } /* intro-loader is always shown first */
.intro-loader{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:24px;overflow:hidden;color:#e9f3ff;background:radial-gradient(circle at 18% 18%,rgba(76,232,255,.24),transparent 34%),radial-gradient(circle at 82% 24%,rgba(255,111,141,.20),transparent 34%),linear-gradient(180deg,#04060d 0%,#08111f 100%);transition:opacity .55s ease,visibility .55s ease;overscroll-behavior:none}
.intro-loader.is-leaving{opacity:0;visibility:hidden;pointer-events:none}
.intro-grid{position:absolute;inset:0;background:linear-gradient(rgba(76,232,255,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(76,232,255,.08) 1px,transparent 1px);background-size:42px 42px;mask-image:radial-gradient(circle,#000 0%,transparent 72%);opacity:.3;animation:intro-grid-drift 8s linear infinite}
.intro-aura{position:absolute;width:min(56vw,520px);aspect-ratio:1;border-radius:50%;filter:blur(24px);opacity:.7;animation:intro-float 4s ease-in-out infinite alternate}
.intro-aura-left{left:-12%;bottom:5%;background:radial-gradient(circle,rgba(76,232,255,.32),transparent 66%)}
.intro-aura-right{right:-10%;top:4%;background:radial-gradient(circle,rgba(255,111,141,.26),transparent 66%);animation-delay:-1.2s}
.intro-card{position:relative;width:min(560px,92vw);min-height:430px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:48px 34px 34px;overflow:hidden;text-align:center;border:1px solid rgba(76,232,255,.28);border-radius:28px;background:linear-gradient(160deg,rgba(8,12,24,.88),rgba(16,25,42,.82));box-shadow:0 34px 100px rgba(0,0,0,.55),inset 0 1px 0 rgba(255,255,255,.08);backdrop-filter:blur(22px);animation:intro-card-rise .85s cubic-bezier(.22,1,.36,1) both}
.intro-card::before{content:'';position:absolute;inset:-45%;background:conic-gradient(from 120deg,transparent,rgba(76,232,255,.24),transparent,rgba(255,111,141,.18),transparent);animation:intro-spin 4.8s linear infinite}
.intro-card::after{content:'';position:absolute;inset:1px;border-radius:27px;background:linear-gradient(160deg,rgba(8,12,24,.95),rgba(16,25,42,.90))}
.intro-card>*{position:relative;z-index:1}
.intro-orbit{position:absolute;top:30px;width:210px;height:210px;border:1px solid rgba(76,232,255,.16);border-radius:50%;animation:intro-spin 7s linear infinite}
.intro-orbit::before,.intro-orbit::after{content:'';position:absolute;inset:26px;border:1px solid rgba(255,255,255,.08);border-radius:50%}
.intro-orbit::after{inset:54px}
.intro-orbit-dot{position:absolute;width:9px;height:9px;border-radius:50%;background:#4ce8ff;box-shadow:0 0 18px rgba(76,232,255,.95)}
.dot-one{top:-4px;left:50%}.dot-two{right:18px;bottom:34px;background:#ff6f8d;box-shadow:0 0 18px rgba(255,111,141,.9)}.dot-three{left:20px;bottom:45px;background:#b8ff62;box-shadow:0 0 18px rgba(184,255,98,.75)}
.intro-logo{width:118px;height:118px;display:grid;place-items:center;border-radius:32px;border:1px solid rgba(76,232,255,.35);background:radial-gradient(circle at 30% 30%,rgba(76,232,255,.34),rgba(10,16,28,.88));box-shadow:0 20px 55px rgba(76,232,255,.18);animation:intro-logo-pulse 1.9s ease-in-out infinite}
.intro-logo-mark{font-size:3.35rem;filter:drop-shadow(0 10px 28px rgba(76,232,255,.38))}
.intro-kicker{margin-top:12px;color:#4ce8ff;font-size:.76rem;font-weight:800;letter-spacing:.18em;text-transform:uppercase}
.intro-card h1{margin:0;color:#f8fbff;font-family:var(--font-display);font-size:clamp(2.8rem,9vw,5rem);line-height:.95}
.intro-card p{max-width:34ch;margin:0;color:rgba(233,243,255,.72);line-height:1.5}
.intro-credit-stack{display:grid;gap:3px;margin-top:2px;color:rgba(233,243,255,.68);font-size:.92rem}
.intro-credit-stack strong{color:#f8fbff;font-size:1.04rem}
.intro-progress{width:min(320px,74vw);height:5px;margin-top:8px;overflow:hidden;border-radius:999px;background:rgba(255,255,255,.08)}
.intro-progress span{display:block;width:100%;height:100%;border-radius:inherit;background:linear-gradient(90deg,#4ce8ff,#b8ff62,#ff6f8d);transform-origin:left;animation:intro-progress 2.8s cubic-bezier(.22,1,.36,1) both}
.intro-skip{margin-top:4px;border:1px solid rgba(76,232,255,.24);border-radius:999px;padding:8px 16px;color:rgba(233,243,255,.82);background:rgba(255,255,255,.06);font:inherit;cursor:pointer}
.intro-skip:hover{color:#f8fbff;border-color:rgba(76,232,255,.5)}

/* ─── 4. Lobby ───────────────────────────────────────────────── */
#lobby{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px;min-height:100vh;padding:88px 32px 42px;position:relative;z-index:1;background:var(--lobby-bg);opacity:1;transform:scale(1);transition:opacity .6s ease,transform .6s ease;overflow-y:auto}
body.intro-active #lobby{opacity:0;transform:scale(.985)}
.lobby-topbar{position:absolute;top:24px;left:24px;right:24px;display:flex;align-items:center;justify-content:space-between;gap:12px;z-index:3}
.lobby-brand{font-weight:700;letter-spacing:.02em;color:var(--ink)}
body.theme-dark .lobby-brand{color:var(--text)}
.hero-shell{width:min(1320px,100%);display:grid;grid-template-columns:1.1fr 0.9fr;gap:28px;align-items:stretch}
.hero-copy,.lobby-panel,.workspace-column{background:var(--panel);backdrop-filter:blur(24px);box-shadow:var(--shadow);border:1px solid var(--border);border-radius:var(--radius);animation:rise-in .7s cubic-bezier(.22,1,.36,1) both}
.lobby-panel{animation-delay:.05s}
.workspace-column{background:linear-gradient(160deg,rgba(255,255,255,.96),rgba(233,245,255,.88))}
body.theme-dark .hero-copy,body.theme-dark .lobby-panel,body.theme-dark .workspace-column{background:var(--panel)}
.hero-copy{padding:48px;position:relative;overflow:hidden}
.hero-copy::after{content:'';position:absolute;inset:auto -60px -80px auto;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(29,211,255,.2),transparent 68%)}

/* Game Selection Panel */
.game-selection-panel{background:var(--panel);backdrop-filter:blur(24px);box-shadow:var(--shadow);border:1px solid var(--border);border-radius:var(--radius);padding:28px;animation:rise-in .7s cubic-bezier(.22,1,.36,1) both;animation-delay:.1s}
.games-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin:20px 0}
.game-card{background:linear-gradient(135deg,rgba(76,232,255,.08),rgba(184,255,98,.04));border:1.5px solid rgba(76,232,255,.2);border-radius:16px;padding:20px;cursor:pointer;transition:all .3s ease;display:flex;flex-direction:column;gap:12px}
.game-card:hover{transform:translateY(-4px);border-color:rgba(76,232,255,.4);background:linear-gradient(135deg,rgba(76,232,255,.12),rgba(184,255,98,.08));box-shadow:0 12px 30px rgba(76,232,255,.2)}
.game-icon{font-size:2.4rem;text-align:center}
.game-card h3{margin:0;color:var(--text);font-size:1.1rem;font-weight:600}
.game-card p{margin:0;color:var(--muted);font-size:.9rem}
.game-card-footer{font-size:.8rem;color:var(--blue);margin-top:auto}

.divider{text-align:center;color:var(--muted);margin:24px 0;font-size:.9rem;position:relative}
.divider::before,.divider::after{content:'';position:absolute;left:0;right:0;height:1px;background:linear-gradient(90deg,transparent,rgba(76,232,255,.2),transparent)}
.divider::before{top:50%;transform:translateY(-50%)}
.divider{position:relative;padding:0 12px;background:var(--panel)}

.chat-option-panel{background:var(--panel);backdrop-filter:blur(24px);box-shadow:var(--shadow);border:1px solid var(--border);border-radius:var(--radius);padding:28px;animation:rise-in .7s cubic-bezier(.22,1,.36,1) both;animation-delay:.15s}

.eyebrow,.panel-kicker,.section-label,.field-label{text-transform:uppercase;letter-spacing:.14em;font-size:.72rem;font-weight:800;color:var(--blue)}
.hero-copy h1,.lobby-panel h2,.workspace-header h2,.intelligence-header h2{margin:10px 0 0;line-height:1.02;font-size:clamp(2.4rem,5vw,4.8rem);font-weight:700;font-family:var(--font-display)}
.lobby-panel h2,.workspace-header h2,.intelligence-header h2{font-size:1.6rem}
.hero-text,.header-sub,.field-note,.panel-status,.vibe-detail,.sys-msg{color:var(--muted);line-height:1.6}
.hero-text{max-width:58ch;margin-top:20px;font-size:1.05rem}
.privacy-panel{margin-top:24px;border:1px solid rgba(37,216,156,.22);border-radius:18px;background:rgba(255,255,255,.52);overflow:visible;position:relative;z-index:10}
.privacy-panel summary{cursor:pointer;padding:18px 20px;color:var(--ink);font-weight:800;list-style:none;display:flex;align-items:center;justify-content:space-between;user-select:none;-webkit-tap-highlight-color:transparent;min-height:48px}
.privacy-panel summary::-webkit-details-marker{display:none}
.privacy-panel summary::after{content:'+';color:var(--blue);font-size:1.2rem}
.privacy-panel[open] summary::after{content:'-'}
.privacy-panel-body{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 16px 16px}
.privacy-panel-body div{padding:12px;border-radius:14px;background:rgba(255,255,255,.5)}
.privacy-panel-body strong,.privacy-panel-body span{display:block}
.privacy-panel-body strong{color:var(--ink);font-size:.92rem}
.privacy-panel-body span{margin-top:4px;color:var(--muted);line-height:1.45;font-size:.86rem}
body.theme-dark .privacy-panel,body.theme-dark .privacy-panel-body div{background:rgba(8,12,22,.58);border-color:rgba(54,242,180,.2)}
body.theme-dark .privacy-panel summary,body.theme-dark .privacy-panel-body strong{color:var(--text)}
.lobby-panel{padding:28px}
.room-mode-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:8px 0 14px;padding:4px;border:1px solid rgba(29,211,255,.16);border-radius:18px;background:rgba(255,255,255,.34)}
body.theme-dark .room-mode-tabs{background:rgba(12,18,36,.52);border-color:rgba(76,232,255,.18)}
.room-code-row.is-hidden,label.is-hidden{display:none}
.room-mode-btn{border:0;border-radius:999px;padding:12px 16px;color:var(--muted);background:transparent;font:inherit;font-weight:800;cursor:pointer;transition:all .2s ease;min-height:44px;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.room-mode-btn.active{color:#06111f;background:linear-gradient(135deg,rgba(76,232,255,.95),rgba(255,159,110,.9));box-shadow:0 8px 20px rgba(29,211,255,.2)}
.room-code-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}
.room-code-row .lobby-input{margin-bottom:8px}
.open-room-note{display:none;margin:-2px 0 14px}
.open-room-note.is-visible{display:block}
.match-status{min-height:0;margin:0 0 12px;color:var(--muted);font-weight:700}
.match-status:empty{display:none}
.match-status.waiting{color:var(--blue)}.match-status.found{color:var(--green)}
.room-action-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:center}
.cancel-match-btn{display:none;min-height:48px;padding:0 16px}
.cancel-match-btn.is-visible{display:inline-flex;align-items:center;justify-content:center}
.privacy-note{display:flex;align-items:flex-start;gap:10px;margin-top:14px;padding:12px 14px;border:1px solid rgba(37,216,156,.22);border-radius:16px;background:linear-gradient(135deg,rgba(37,216,156,.1),rgba(29,211,255,.08));color:var(--muted);line-height:1.45}
.privacy-note p{margin:0}
.privacy-icon{flex:0 0 auto;display:inline-grid;place-items:center;width:28px;height:28px;border-radius:999px;background:rgba(37,216,156,.14)}

/* ─── 5. Form Elements ───────────────────────────────────────── */
.status-pill,.room-badge,.ghost-btn,.sugg-chip,.vibe-badge{border-radius:999px;border:1px solid var(--border);background:rgba(255,255,255,.72);color:var(--text);font-family:var(--font-sans)}
.status-pill,.room-badge{padding:8px 14px;font-size:.82rem;font-weight:700}
.lobby-input,#msg-input{width:100%;border:1px solid var(--border);border-radius:18px;background:var(--panel-strong);color:var(--text);font:inherit;padding:14px 20px;transition:all .2s ease}
.lobby-input{margin-top:8px;margin-bottom:14px;min-height:48px;font-size:1rem}
#msg-input{min-height:52px}
.lobby-input:focus,#msg-input:focus{outline:none;border-color:rgba(29,211,255,.45);box-shadow:0 0 0 4px rgba(29,211,255,.12)}
body.theme-dark .lobby-input:focus,body.theme-dark #msg-input:focus{border-color:rgba(94,234,212,.45);box-shadow:0 0 0 4px rgba(94,234,212,.12)}
body.theme-dark .lobby-input,body.theme-dark #msg-input{background:rgba(12,18,36,.8);color:var(--text);border-color:rgba(76,232,255,.2)}
.primary-btn,.send-btn{border:none;border-radius:999px;background:linear-gradient(135deg,var(--accent),var(--accent-warm));color:white;padding:14px 28px;font-weight:800;cursor:pointer;box-shadow:0 10px 25px rgba(29,211,255,.22);letter-spacing:.02em;min-height:48px;display:inline-flex;align-items:center;justify-content:center;touch-action:manipulation;-webkit-tap-highlight-color:transparent}
.ghost-btn{padding:12px 16px;font-weight:700;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;justify-content:center;-webkit-tap-highlight-color:transparent}
.ghost-btn,.tab-btn,.primary-btn,.send-btn{font:inherit;transition:transform .18s ease,box-shadow .18s ease,background .18s ease,color .18s ease}
.ghost-btn:hover,.tab-btn:hover,.primary-btn:hover,.send-btn:hover{transform:translateY(-1px);box-shadow:0 10px 24px rgba(12,20,38,.08)}
.ghost-btn.active{background:linear-gradient(135deg,var(--accent),var(--accent-warm));color:white;border-color:transparent}
.danger-btn{color:var(--red)}
.wide-btn{width:100%;justify-content:center}
.tab-btn{border:1px solid var(--border);border-radius:16px;background:rgba(255,255,255,.72);padding:12px 14px;font-weight:700;cursor:pointer}
.tab-btn.active{background:linear-gradient(135deg,rgba(29,211,255,.95),rgba(255,155,95,.95));color:white;border-color:transparent}
body.theme-dark .ghost-btn,body.theme-dark .tab-btn,body.theme-dark .status-pill,body.theme-dark .room-badge,body.theme-dark .empty-prompts button{background:rgba(12,18,36,.8);color:var(--text);border-color:rgba(76,232,255,.2)}
body.theme-dark .ghost-btn.danger-btn{color:var(--red)}
body.theme-dark .tab-btn.active,body.theme-dark .ghost-btn.active{background:linear-gradient(135deg,rgba(76,232,255,.95),rgba(255,111,141,.95));color:#f8fbff}
.inline-select,.inline-num{font-size:.82rem;padding:2px 6px;border-radius:6px;border:1.5px solid var(--border);background:var(--panel-strong);color:var(--text);font:inherit}
.inline-num{width:44px;padding:2px 4px}
body.theme-dark .inline-select,body.theme-dark .inline-num{background:rgba(12,18,36,.8);color:var(--text);border-color:rgba(76,232,255,.2)}
.intel-tab{border:1px solid var(--border);border-radius:14px;background:rgba(255,255,255,.58);padding:10px 12px;font-weight:700;cursor:pointer;font:inherit}
.intel-tab.active{background:linear-gradient(135deg,rgba(29,211,255,.95),rgba(255,155,95,.95));color:white;border-color:transparent}
body.theme-dark .intel-tab{background:rgba(8,12,22,.88);border-color:rgba(76,232,255,.2);color:var(--text)}
body.theme-dark .intel-tab.active{background:linear-gradient(135deg,rgba(76,232,255,.95),rgba(255,111,141,.95));color:#f8fbff}
.tab-content,.intel-pane{opacity:0;transform:translateX(18px);transition:opacity .4s ease,transform .4s ease}
.tab-content.is-active,.intel-pane.is-active{opacity:1;transform:translateX(0)}
.tab-content.is-hidden,.intel-pane.is-hidden{display:none}
.panel-heading,.workspace-header,.intelligence-header,.composer-head,.toolbar,.panel-control,.detail-row,.stage-row{display:flex;align-items:center;justify-content:space-between;gap:16px}
.panel-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap;justify-content:flex-end}
.hero-metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:34px}
.metric-card{padding:18px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.56)}
.metric-label{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}
.metric-card strong{display:block;margin-top:8px;font-size:1rem}
.page-credit{display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:16px;width:min(720px,92vw);margin:0 auto;padding:16px 18px;font-size:.9rem;color:#e6f4ff;position:relative;z-index:1;border-radius:18px;border:1px solid rgba(29,211,255,.28);background:linear-gradient(135deg,rgba(12,18,32,.92),rgba(20,30,50,.92));backdrop-filter:blur(12px);box-shadow:0 18px 42px rgba(6,12,24,.35)}
.credit-lines{display:grid;gap:4px;text-align:center}
.credit-line{font-weight:600;color:#e6f4ff}
.credit-line:nth-child(2),.credit-line:nth-child(3){color:rgba(230,244,255,.78);font-weight:500}
.social-links{display:flex;align-items:center;gap:10px}
.social-link{width:36px;height:36px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;border:1px solid rgba(29,211,255,.3);color:#e6f4ff;background:radial-gradient(circle at 30% 30%,rgba(29,211,255,.35),rgba(12,18,32,.8));text-decoration:none;transition:transform .18s ease,box-shadow .18s ease}
.social-link:hover{transform:translateY(-1px);box-shadow:0 12px 26px rgba(29,211,255,.2)}
.social-icon{width:18px;height:18px}
body.app-active .page-credit{display:none}
body.game-active{overflow:hidden}
body.game-active #lobby,body.game-active #app{display:none !important}
body.game-active #game-screen{display:flex !important;visibility:visible !important;opacity:1 !important;z-index:9999 !important;position:fixed;top:0;left:0;right:0;bottom:0;background:var(--bg-grad-4);height:100vh;width:100vw}
body.game-active .page-credit{display:none !important}

/* ─── 6. Toast ───────────────────────────────────────────────── */
.mode-toast{position:fixed;top:72px;right:20px;padding:8px 14px;border-radius:999px;border:1px solid var(--border);background:var(--panel-strong);color:var(--text);font-size:.85rem;box-shadow:0 12px 30px rgba(12,20,38,.12);opacity:0;transform:translateY(-6px);transition:opacity .2s ease,transform .2s ease;pointer-events:none;z-index:9000}
.mode-toast.show{opacity:1;transform:translateY(0)}

/* ─── 7. App Screen (desktop) ────────────────────────────────── */
.app-screen{height:100dvh;display:flex;flex-direction:column;overflow:hidden;position:relative;background:var(--bg-grad-4)}

/* ─── 7.5 Game Screen ────────────────────────────────────────── */
.game-screen{height:100dvh;display:none;flex-direction:column;overflow:hidden;position:relative;background:#0a0a0a;z-index:500}
.game-topbar{flex-shrink:0;display:flex !important;align-items:center;justify-content:space-between;padding:12px 22px;gap:12px;z-index:200;background:#1a1a2e;backdrop-filter:blur(18px);border-bottom:1px solid rgba(76,232,255,.2);box-shadow:0 2px 20px rgba(12,20,38,.08);visibility:visible;opacity:1;min-height:60px;width:100%}
body.theme-dark .game-topbar{background:#1a1a2e;border-color:rgba(76,232,255,.2)}
.game-room-info{font-weight:600;color:#4ce8ff;visibility:visible;opacity:1;display:flex}
.game-shell{flex:1;display:flex;align-items:center;justify-content:center;overflow-y:auto;padding:24px;width:100%;background:#0a0a0a;visibility:visible}
.game-section{width:100%;max-width:600px;display:none !important;flex-direction:column;gap:28px;margin:auto;visibility:visible;color:#fff}
.game-section[style*="display: flex"]{display:flex !important}
#game-lobby[style*="display: flex"]{display:flex !important;visibility:visible !important;opacity:1 !important}

.game-lobby-content{text-align:center;display:flex;flex-direction:column;align-items:center;gap:24px;width:100%;color:#fff;visibility:visible;opacity:1;padding:20px}
#game-lobby{display:none !important}
.game-emoji{font-size:4rem;color:#fff;visibility:visible;opacity:1;padding:10px}
.game-lobby-code{background:#1a3a3a;border:1px solid rgba(76,232,255,.2);border-radius:16px;padding:20px;margin:20px 0}
.game-lobby-code p{margin:0 0 12px;color:#fff;font-size:.9rem}
.code-display{display:flex;align-items:center;justify-content:center;gap:12px;background:#2a2a4a;padding:12px 16px;border-radius:12px;border:1px solid rgba(76,232,255,.2)}
.code-display code{font-size:1.8rem;font-weight:700;color:#4ce8ff;letter-spacing:.15em}
.copy-icon-btn{background:rgba(76,232,255,.1);border:1px solid rgba(76,232,255,.3);border-radius:8px;padding:6px 10px;cursor:pointer;transition:all .2s ease;color:#4ce8ff}
.copy-icon-btn:hover{background:rgba(76,232,255,.2);border-color:#4ce8ff}

.game-status-box{background:rgba(76,232,255,.05);border:1px dashed rgba(76,232,255,.3);border-radius:14px;padding:16px;min-height:80px;display:flex;align-items:center;justify-content:center;gap:12px}
#game-status-text{color:var(--text);font-weight:600}

.spinner{width:24px;height:24px;border:3px solid rgba(76,232,255,.2);border-top-color:#00ff00;border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

.game-players{display:flex;flex-direction:column;gap:8px}
.game-player{background:rgba(76,232,255,.15);border:1px solid rgba(76,232,255,.3);border-radius:10px;padding:10px 16px;color:var(--text);font-weight:600}

.game-content{width:100%;display:flex;flex-direction:column;gap:16px}
.game-questions{display:flex;flex-direction:column;gap:16px}
.choices-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px;width:100%;max-width:500px;margin:0 auto}
@media(max-width:480px){.choices-grid{grid-template-columns:1fr}}
.choice-card{background:rgba(255,255,255,.05);border:2px solid rgba(76,232,255,.2);border-radius:16px;padding:24px 16px;color:var(--text);font-size:1.1rem;font-weight:600;cursor:pointer;transition:all .3s cubic-bezier(.25,.8,.25,1);display:flex;align-items:center;justify-content:center;text-align:center;min-height:100px;position:relative;overflow:hidden}
.choice-card:hover{background:rgba(76,232,255,.1);border-color:rgba(76,232,255,.6);transform:translateY(-4px);box-shadow:0 8px 24px rgba(76,232,255,.15)}
.choice-card:active{transform:translateY(0);box-shadow:0 4px 12px rgba(76,232,255,.1)}
.choice-card.selected{background:var(--bg-grad-1);border-color:#4ce8ff;color:#fff;box-shadow:0 0 20px rgba(76,232,255,.4)}
.animate-in{animation:slideInRight .5s cubic-bezier(.25,.8,.25,1) forwards}
.animate-out{animation:fadeOutLeft .5s cubic-bezier(.25,.8,.25,1) forwards}
@keyframes slideInRight{0%{opacity:0;transform:translateX(50px)}100%{opacity:1;transform:translateX(0)}}
@keyframes fadeOutLeft{0%{opacity:1;transform:translateX(0)}100%{opacity:0;transform:translateX(-50px)}}

.truth-lie-buttons{display:flex;gap:12px;margin:20px 0}
.btn-choice{flex:1;padding:16px;border-radius:12px;border:2px solid rgba(76,232,255,.3);background:rgba(76,232,255,.1);color:var(--text);font-weight:600;cursor:pointer;transition:all .2s ease;font-size:1rem}
.btn-choice:hover{border-color:rgba(76,232,255,.5);background:rgba(76,232,255,.15)}
.btn-choice:active{transform:scale(.96)}

.game-results-content{text-align:center;display:flex;flex-direction:column;gap:24px;align-items:center}
.results-header h1{margin:0;color:var(--text);font-size:2.2rem}
.results-header p{margin:8px 0 0;color:var(--muted)}

.scorecard{background:linear-gradient(135deg,rgba(76,232,255,.08),rgba(184,255,98,.04));border:1.5px solid rgba(76,232,255,.2);border-radius:16px;padding:24px;width:100%}
.score-number{font-size:3.6rem;font-weight:700;color:var(--blue);margin:20px 0;animation:pulse 1.5s ease-in-out infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.6}}

.results-actions{display:flex;flex-direction:column;gap:12px;width:100%}
.results-actions .primary-btn,.results-actions .secondary-btn,.results-actions .ghost-btn{width:100%}

/* ─── 8. App Topbar ──────────────────────────────────────────── */
.app-topbar{flex-shrink:0;display:flex;align-items:center;justify-content:space-between;padding:12px 22px;gap:12px;z-index:200;background:rgba(255,255,255,.88);backdrop-filter:blur(18px);-webkit-backdrop-filter:blur(18px);border-bottom:1px solid var(--border);box-shadow:0 2px 20px rgba(12,20,38,.08)}
body.theme-dark .app-topbar{background:rgba(8,12,22,.95);border-color:rgba(76,232,255,.2);box-shadow:0 2px 20px rgba(2,6,15,.6)}
.topbar-left{display:flex;align-items:center;gap:10px;min-width:0;flex:1}
.topbar-title{font-weight:700;letter-spacing:.02em;color:var(--ink);white-space:nowrap}
body.theme-dark .topbar-title{color:var(--text)}
.private-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border:1px solid rgba(37,216,156,.24);border-radius:999px;color:var(--green);background:rgba(37,216,156,.1);font-size:.74rem;font-weight:800;white-space:nowrap}
.topbar-actions{display:flex;align-items:center;gap:8px;flex-wrap:nowrap}
.topbar-btn{min-height:38px;padding:7px 12px;font-size:.88rem;display:inline-flex;align-items:center;gap:6px;font:inherit;font-weight:700;cursor:pointer}
.btn-icon{display:inline-flex;align-items:center;justify-content:center;line-height:1;font-size:1rem}
.btn-label{font-size:.82rem}
.topbar-badge{min-height:38px;display:inline-flex;align-items:center;padding:7px 12px;font-size:.82rem}
.icon-btn{min-width:40px;height:40px;padding:0 10px;display:inline-flex;align-items:center;justify-content:center;border-radius:999px;font-size:1rem;min-height:44px;min-width:44px;-webkit-tap-highlight-color:transparent;touch-action:manipulation}
body.theme-dark .topbar-btn,body.theme-dark .mobile-menu-btn,body.theme-dark .topbar-badge{background:rgba(10,18,34,.72);border-color:rgba(76,232,255,.2)}
.theme-toggle{min-width:80px}
/* Mobile hamburger hidden on desktop */
.mobile-menu-btn{display:none !important}
/* Dropdown hidden on desktop */
.topbar-dropdown{display:none}

/* ─── 9. App Shell (desktop grid) ───────────────────────────── */
.app-shell{display:grid;grid-template-columns:1fr 380px;flex:1;min-height:0;overflow:hidden;position:relative}
.app-shell.ai-off,.app-screen.ai-off .app-shell{grid-template-columns:1fr}
.app-screen.ai-off #chat-panel{width:min(1120px,100%);justify-self:center}
.app-shell.ai-off .pitch-strip{display:none}
.workspace-column{min-height:0;height:100%;display:flex;flex-direction:column;overflow:hidden;position:relative;background:linear-gradient(160deg,rgba(255,255,255,.96),rgba(233,245,255,.88));border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}
body.theme-dark .workspace-column{background:var(--panel)}

/* Detective mode */
.app-screen[data-detective-mode="on"]{--accent:#4ce8ff;--text:#4ce8ff;--ink:#e0faff;--panel:rgba(5,10,20,.95);--border:rgba(76,232,255,.3)}
.app-screen[data-detective-mode="on"]::before{content:" ";display:block;position:absolute;top:0;left:0;bottom:0;right:0;z-index:1;background:linear-gradient(rgba(18,16,16,0) 50%,rgba(0,0,0,.15) 50%),linear-gradient(90deg,rgba(255,0,0,.04),rgba(0,255,0,.01),rgba(0,0,255,.04));background-size:100% 4px,4px 100%;pointer-events:none;animation:flicker .15s infinite}
.app-screen[data-detective-mode="on"] .msg-bubble{border-radius:4px;border:1px solid var(--accent);background:rgba(0,15,30,.85);color:var(--accent);box-shadow:0 0 10px rgba(76,232,255,.2)}
.app-screen[data-detective-mode="on"] .msg.mine .msg-bubble{background:rgba(76,232,255,.15);border-color:var(--accent);color:#fff}

/* ─── 10. Workspace header ───────────────────────────────────── */
.workspace-header,.intelligence-header,.composer{padding:20px 24px}
.workspace-header{padding-top:16px;flex-shrink:0;border-bottom:1px solid rgba(36,84,211,.08);align-items:flex-start;flex-wrap:wrap}
.participant-strip{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin-top:10px}
#participant-count{color:var(--muted);font-size:.85rem;font-weight:700}
.participant-list{display:flex;flex-wrap:wrap;gap:6px}
.participant-pill{padding:5px 9px;border-radius:999px;border:1px solid rgba(29,211,255,.18);color:var(--text);background:rgba(29,211,255,.08);font-size:.78rem;font-weight:700}

/* ─── 11. Messages ───────────────────────────────────────────── */
.messages{flex:1;padding:0 24px 20px;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:14px;position:relative;min-height:0}
#app:not(.ai-off) .messages{background:radial-gradient(circle at 50% 50%,rgba(15,23,42,.4),rgba(2,6,23,.9));box-shadow:inset 0 0 80px rgba(0,0,0,.4)}
#app:not(.ai-off) .messages::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,transparent,var(--blue),transparent);opacity:.15;z-index:0;pointer-events:none;animation:scanline 4s linear infinite}
body.theme-dark #app:not(.ai-off) .messages{background:linear-gradient(rgba(10,16,28,.8),rgba(2,6,23,.95)),repeating-linear-gradient(0deg,rgba(76,232,255,.03) 0px,rgba(76,232,255,.03) 1px,transparent 1px,transparent 2px);background-size:100% 100%,100% 4px}
.messages-empty {
  /* CRITICAL: Never use !important on display — JS uses .style.display to hide/show this.
     If display has !important, JS is silently ignored and the card stays stuck forever. */
  display: grid;
  place-items: center;
  /* Desktop: centered overlay inside the messages area */
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -55%);
  width: calc(100% - 32px);
  max-width: 520px;
  z-index: 10;
  margin: 0;
  pointer-events: none;
  padding: 0;
}
.empty-card{width:min(520px,100%);padding:26px 28px;border-radius:24px;border:1px dashed rgba(37,87,214,.2);background:rgba(255,255,255,.72);text-align:center;box-shadow:0 18px 40px rgba(61,42,24,.06)}
.empty-kicker{font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;color:var(--blue);font-weight:800}
.empty-card h3{margin:10px 0;font-size:1.3rem}
.empty-card p{margin:0;color:var(--muted);line-height:1.6}
.empty-prompts{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:18px;pointer-events:auto}
.empty-prompts button{border:1px solid var(--border);border-radius:999px;padding:8px 12px;color:var(--text);background:rgba(255,255,255,.76);font:inherit;font-size:.86rem;font-weight:700;cursor:pointer}
.empty-prompts button:hover{transform:translateY(-1px);box-shadow:0 10px 22px rgba(12,20,38,.08)}
body.theme-dark .empty-card{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}
body.theme-dark .empty-prompts button{background:rgba(12,18,36,.8);color:var(--text);border-color:rgba(76,232,255,.2)}
.msg{display:flex;gap:10px;max-width:84%}
.msg.slide-in{animation:msg-in-left .35s ease-out both}
.msg.mine.slide-in{animation-name:msg-in-right}
.msg.mine{margin-left:auto;flex-direction:row-reverse}
.msg-avatar{width:36px;height:36px;border-radius:50%;flex-shrink:0;display:grid;place-items:center;background:linear-gradient(135deg,rgba(29,211,255,.35),rgba(255,155,95,.35));border:1px solid var(--border);font-weight:800}
body.theme-dark .msg-avatar{background:linear-gradient(135deg,rgba(76,232,255,.5),rgba(255,111,141,.4))}
.msg-body{display:flex;flex-direction:column;gap:6px}
.msg-thinking,.msg-bubble,.insight-bubble,.draft-bubble,.drift-chart,.alert-banner{border:1px solid var(--border);border-radius:18px}
.msg-thinking{padding:10px 12px;background:rgba(37,87,214,.08);color:var(--ink)}
.msg-bubble{padding:12px 15px;background:rgba(255,255,255,.92);line-height:1.55;box-shadow:0 4px 14px rgba(26,17,8,.04);border-radius:20px}
.msg.mine .msg-bubble{background:linear-gradient(135deg,#214ab5,#3f7df0);color:white;border-color:transparent}
body.theme-dark .msg-bubble{background:rgba(10,16,32,.92);border-color:rgba(76,232,255,.18);color:var(--text)}
body.theme-dark .msg.mine .msg-bubble{background:linear-gradient(135deg,rgba(29,211,255,.95),rgba(29,211,255,.88));color:#06111f;border-color:transparent}
.msg.theirs .msg-bubble{border-left:3px solid hsl(var(--user-hue,200),70%,50%)}
body.theme-dark .msg.theirs .msg-bubble{background:rgba(12,18,36,.6);border-color:hsla(var(--user-hue,200),70%,50%,.3)}
body.theme-dark .msg-thinking{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}
.msg-meta{display:flex;gap:10px;color:var(--muted);font-size:.76rem;font-family:var(--font-mono)}
.sys-msg{text-align:center;font-size:.82rem;padding:6px 0}
.message-blurred .msg-bubble{filter:blur(5px);cursor:pointer;user-select:none;opacity:.8}
.message-blurred .msg-bubble:hover{filter:blur(3px);opacity:.9}
.message-revealed .msg-bubble{filter:none;cursor:auto;user-select:text}
.typing-indicator-msg{opacity:.7}
.typing-dots{display:inline-flex;gap:2px;padding:8px 12px !important;font-size:1.2rem;line-height:.5;color:var(--muted)}
.typing-dots span{animation:typingBounce 1.4s infinite both}
.typing-dots span:nth-child(1){animation-delay:-.32s}
.typing-dots span:nth-child(2){animation-delay:-.16s}
/* mobile-detective-bar hidden by default, shown only at ≤720px AND when detective mode is ON */
.mobile-detective-bar{display:none}

/* ─── 12. Composer ───────────────────────────────────────────── */
.composer{flex-shrink:0;border-top:1px solid var(--border);max-height:none;overflow:visible}
.composer-row{display:flex;gap:12px;align-items:center;flex-wrap:nowrap}
#msg-input{min-height:52px;font-family:var(--font-mono);resize:none;overflow-y:auto;flex:1 1 auto;font-size:1rem}
.send-fab{width:50px;height:50px;border-radius:50%;border:none;flex-shrink:0;display:inline-flex;align-items:center;justify-content:center;background:linear-gradient(135deg,var(--accent),var(--accent-warm));color:white;cursor:pointer;box-shadow:0 12px 28px rgba(29,211,255,.24);transition:transform .18s ease,box-shadow .18s ease}
.send-fab:hover{transform:translateY(-1px);box-shadow:0 16px 32px rgba(29,211,255,.28)}
.send-icon{width:20px;height:20px}
body.theme-dark .send-fab{box-shadow:0 12px 28px rgba(76,232,255,.3)}
.sugg-row{display:flex;flex-wrap:wrap;gap:6px;padding:6px 12px 2px;min-height:0}
.sugg-row:empty{padding:0}
.ai-off .sugg-row,.ai-off .msg-thinking,.ai-off .pitch-strip,.ai-off .alert-banner,.ai-off .composer-warning{display:none !important}
.sugg-chip{font-size:.78rem;padding:4px 10px;border-radius:999px;border:1.5px solid var(--border);background:rgba(255,255,255,.8);color:var(--text);cursor:pointer;transition:background .15s,border-color .15s;white-space:nowrap}
.sugg-chip:hover{background:rgba(29,211,255,.1);border-color:var(--accent)}
.sugg-chip.ack{border-color:#22c55e}.sugg-chip.boundary{border-color:#f59e0b}.sugg-chip.clarify{border-color:#3b82f6}
body.theme-dark .sugg-chip{background:rgba(12,18,36,.9);color:#e2e8f0;border-color:rgba(76,232,255,.25)}
.composer-reply-tip{display:none}
.composer-draft{display:none}
.alert-banner{margin:0 24px 16px;padding:12px 16px;background:rgba(255,255,255,.92);font-weight:700}
.alert-banner.level-1{border-left:6px solid #d97706}.alert-banner.level-2{border-left:6px solid #ea580c}
.alert-banner.level-3,.alert-banner.level-4{border-left:6px solid #b91c1c}
body.theme-dark .alert-banner{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}

/* ─── 13. AI Sidebar ─────────────────────────────────────────── */
#ai-panel{padding:20px;overflow-y:auto;display:flex;flex-direction:column;gap:14px;min-width:0}
.intelligence-header,.intel-tabs{position:sticky;top:0;z-index:3;background:linear-gradient(180deg,rgba(255,248,238,.98),rgba(255,248,238,.92))}
body.theme-dark .intel-tabs,body.theme-dark .intelligence-header{background:linear-gradient(180deg,rgba(8,12,24,.98),rgba(8,12,24,.9))}
.intel-tabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-bottom:14px;padding-bottom:8px}
.intel-tabs:empty{display:none;margin:0;padding:0}
.intel-pane{display:grid;gap:14px;align-content:start}
.intel-card{padding:18px;border:1px solid var(--border);border-radius:20px;background:var(--panel-strong);box-shadow:0 12px 30px rgba(44,30,14,.05);animation:slide-up-fade .5s ease both;position:relative;overflow:hidden}
body.theme-dark .intel-card{background:rgba(12,18,36,.6);backdrop-filter:blur(12px);border-color:rgba(76,232,255,.15);box-shadow:0 8px 32px rgba(0,0,0,.4)}
body.theme-dark .intel-card::before{content:'';position:absolute;top:0;left:0;width:3px;height:100%;background:linear-gradient(180deg,var(--blue),var(--accent-warm));opacity:.8}
.hero-card{background:linear-gradient(180deg,rgba(255,255,255,.92),rgba(231,245,255,.9))}
body.theme-dark .hero-card{background:linear-gradient(180deg,rgba(10,16,28,.98),rgba(14,22,36,.9))}
.hero-callout{margin-top:14px;padding:12px 14px;border-radius:16px;background:linear-gradient(135deg,rgba(29,211,255,.12),rgba(255,155,95,.12));border:1px solid rgba(29,211,255,.12);color:var(--ink);font-weight:700}
body.theme-dark .hero-callout{background:linear-gradient(135deg,rgba(76,232,255,.2),rgba(255,111,141,.18));border-color:rgba(76,232,255,.24)}
.stage-row{align-items:stretch;margin-top:10px}
.vibe-badge{padding:14px 16px;display:inline-flex;align-items:center;gap:10px;font-weight:800;min-width:160px}
.vibe-badge.level-0{color:var(--green)}.vibe-badge.level-1{color:var(--amber)}
.vibe-badge.level-2,.vibe-badge.level-3,.vibe-badge.level-4{color:var(--red)}
.vibe-icon{display:inline-grid;place-items:center;width:38px;height:38px;border-radius:50%;background:rgba(15,23,42,.06)}
.risk-projection{flex:1;padding:14px 16px;border-radius:18px;border:1px solid var(--border);background:rgba(255,255,255,.6)}
.risk-projection strong{display:block;margin-top:6px;line-height:1.45;font-size:1.05rem}
.stats-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:10px}
.stat-box{padding:14px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.56)}
.stat-box span{display:block;color:var(--muted);font-size:.84rem}
.stat-box strong{font-size:1.1rem}
body.theme-dark .stat-box,body.theme-dark .risk-projection{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}
.drift-chart{margin-top:16px;padding:10px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.58)}
.drift-chart canvas{width:100%;display:block}
body.theme-dark .drift-chart{background:rgba(8,12,22,.9);border-color:rgba(76,232,255,.18)}
.insight-bubble,.draft-bubble{padding:14px 15px;line-height:1.55;background:rgba(255,255,255,.9);margin-top:10px;border:1px solid var(--border);border-radius:18px}
.insight-bubble.cyan{border-left:5px solid var(--blue)}.insight-bubble.yellow{border-left:5px solid #d97706}
.insight-bubble.pink{border-left:5px solid #9d4edd}.insight-bubble.green{border-left:5px solid var(--green)}
.insight-bubble.blue{border-left:5px solid #0f766e}.insight-bubble.amber{border-left:5px solid var(--amber)}
.insight-bubble.soft{border-left:5px solid var(--sand)}
.draft-bubble{cursor:pointer;border-left:5px solid var(--green)}
body.theme-dark .insight-bubble,body.theme-dark .draft-bubble{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}
.detail-list{display:grid;gap:10px}
.detail-row{padding:12px 14px;border-radius:16px;border:1px solid var(--border);background:rgba(255,255,255,.58);min-width:0}
.detail-row span{color:var(--muted)}.detail-row strong{text-align:right;max-width:58%;overflow-wrap:anywhere}
body.theme-dark .detail-row{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}
.summary-grid{display:grid;gap:10px}
.summary-row{padding:12px 14px;border:1px solid var(--border);border-radius:18px;background:rgba(255,255,255,.56)}
body.theme-dark .summary-row{background:rgba(12,18,36,.82);border-color:rgba(76,232,255,.18)}
.summary-alert{margin-top:12px;padding:12px 14px;border-radius:16px;border:1px solid rgba(181,61,47,.2);background:rgba(181,61,47,.08);color:var(--red)}
.summary-row span{display:block;color:var(--muted);font-size:.78rem;text-transform:uppercase;letter-spacing:.08em}
.summary-row strong{display:block;margin-top:8px;font-size:1rem}
.ai-summary-controls{display:flex;flex-direction:column;gap:6px;margin-bottom:10px}
.summary-setting-row{display:flex;align-items:center;gap:6px;font-size:.82rem;color:var(--muted)}
.ghost-btn.loading{opacity:.6;pointer-events:none}
.ghost-btn.loading::after{content:' ⏳'}
.pitch-strip{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;padding:0 24px 18px;flex-shrink:0}
.pitch-stat{padding:14px 16px;border-radius:18px;background:rgba(36,84,211,.05);border:1px solid rgba(36,84,211,.09)}
.pitch-label{display:block;font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--blue);font-weight:800}
.pitch-stat strong{display:block;margin-top:8px;line-height:1.45;font-size:.97rem}

/* Detector OFF card - hidden by default, shown only when ai-off */
.detector-off-card{
  display:none !important;
  padding:28px 20px;
  text-align:center;
  grid-column:1;
  gap:12px;
}
.detector-off-card h3{margin:0;font-size:1.4rem;color:var(--text)}
.detector-off-card p{margin:0;color:var(--muted);line-height:1.6}
.detector-off-card .empty-kicker{color:var(--blue)}

/* Show detector OFF card and hide all other insights when detective mode is OFF */
#app.ai-off .detector-off-card{display:grid !important}
#app.ai-off #intel-overview > .intel-card:not(.detector-off-card){display:none !important}
.drawer-close-btn{display:none}
.threat-stop-overlay{position:fixed;inset:0;z-index:9999;display:none;align-items:center;justify-content:center;background:rgba(24,18,12,.52);backdrop-filter:blur(10px)}
.threat-stop-card{width:min(520px,calc(100% - 32px));padding:28px;border-radius:24px;border:1px solid rgba(181,61,47,.18);background:rgba(255,248,244,.98);box-shadow:0 28px 70px rgba(32,18,10,.28);text-align:center}
.threat-stop-kicker{font-size:.74rem;text-transform:uppercase;letter-spacing:.14em;color:var(--red);font-weight:800}
.threat-stop-card h3{margin:10px 0 12px;font-size:1.6rem}
.threat-stop-card p{margin:0 0 18px;color:var(--muted);line-height:1.6}
.panel-status.ok{color:var(--green)}.panel-status.warn{color:var(--amber)}
.toggle-switch{position:relative;display:inline-block;width:50px;height:28px}
.toggle-switch input{opacity:0;width:0;height:0}
.toggle-slider{position:absolute;inset:0;border-radius:999px;background:rgba(107,114,128,.24);border:1px solid var(--border);cursor:pointer}
.toggle-slider::before{content:'';position:absolute;left:4px;top:3px;width:20px;height:20px;border-radius:50%;background:white;transition:transform .2s ease}
.toggle-switch input:checked+.toggle-slider{background:rgba(37,87,214,.35)}
.toggle-switch input:checked+.toggle-slider::before{transform:translateX(22px)}
::-webkit-scrollbar{width:6px}
::-webkit-scrollbar-thumb{background:rgba(107,114,128,.3);border-radius:999px}

/* ─── MOBILE VIBE SIDEBAR DRAWER ────────────────────────────────
   Slides in from the right over the chat when Vibe Check is ON.
   Only active at ≤720px. Desktop keeps the inline grid panel.
   ─────────────────────────────────────────────────────────────── */

/* Backdrop */
.vibe-drawer-backdrop{
  display:none;
  position:fixed;inset:0;
  background:rgba(0,0,0,.55);
  backdrop-filter:blur(3px);
  -webkit-backdrop-filter:blur(3px);
  z-index:800;
  opacity:0;
  transition:opacity .28s ease;
}
.vibe-drawer-backdrop.open{display:block}
.vibe-drawer-backdrop.visible{opacity:1}

/* Drawer panel */
.vibe-sidebar-drawer{
  position:fixed;
  top:0;right:0;bottom:0;
  width:min(88vw,360px);
  z-index:801;
  display:flex;
  flex-direction:column;
  background:var(--panel-strong);
  border-left:1px solid var(--border);
  box-shadow:-8px 0 40px rgba(0,0,0,.35);
  transform:translateX(100%);
  transition:transform .3s cubic-bezier(.32,.72,0,1);
  overflow:hidden;
}
body.theme-dark .vibe-sidebar-drawer{
  background:rgba(8,12,22,.98);
  border-color:rgba(76,232,255,.22);
  box-shadow:-8px 0 40px rgba(0,0,0,.7);
}
.vibe-sidebar-drawer.open{transform:translateX(0)}

/* Drawer header */
.vibe-drawer-header{
  flex-shrink:0;
  display:flex;align-items:center;
  justify-content:space-between;
  padding:14px 16px;
  border-bottom:1px solid var(--border);
  background:var(--panel-strong);
  position:sticky;top:0;z-index:2;
}
body.theme-dark .vibe-drawer-header{background:rgba(8,12,22,.98);border-color:rgba(76,232,255,.2)}
.vibe-drawer-title{display:flex;flex-direction:column;gap:2px}
.vibe-drawer-title strong{font-size:1rem;color:var(--ink);font-weight:700}
body.theme-dark .vibe-drawer-title strong{color:var(--text)}
.vibe-drawer-title span{font-size:.72rem;color:var(--accent);font-weight:800;text-transform:uppercase;letter-spacing:.12em}
.vibe-drawer-close{
  width:36px;height:36px;border-radius:50%;
  border:1px solid var(--border);background:transparent;
  display:flex;align-items:center;justify-content:center;
  color:var(--text);cursor:pointer;font-size:1.1rem;
  flex-shrink:0;
  transition:background .15s;
}
.vibe-drawer-close:active{background:var(--panel)}

/* Drawer scroll body */
.vibe-drawer-body{
  flex:1;
  overflow-y:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior-y:contain;
  padding:14px 14px 24px;
  display:flex;flex-direction:column;gap:12px;
}
.vibe-drawer-body .intel-card{margin:0 !important}
.vibe-drawer-body .intel-tabs{
  display:flex !important;flex-wrap:nowrap !important;
  overflow-x:auto !important;gap:8px !important;
  scrollbar-width:none;padding-bottom:4px !important;
  position:sticky;top:0;z-index:1;
  background:var(--panel-strong);
  padding-top:4px !important;
  grid-template-columns:unset !important;
}
body.theme-dark .vibe-drawer-body .intel-tabs{background:rgba(8,12,22,.98)}
.vibe-drawer-body .intel-tabs::-webkit-scrollbar{display:none}
.vibe-drawer-body .intel-tab{flex:0 0 auto !important;white-space:nowrap;font-size:.8rem !important;padding:8px 12px !important}
/* AI summary btn */
.vibe-drawer-body .ghost-btn{width:100%;justify-content:center;text-align:center}

@media(max-width:1100px){
  .hero-shell{grid-template-columns:1fr;padding:0 16px;display:flex;flex-direction:column;gap:24px;margin-top:20px}
  .app-shell{grid-template-columns:1fr 340px}
  .pitch-strip{grid-template-columns:1fr}
}
@media(max-width:900px){
  .hero-copy,.lobby-panel{box-shadow:none;backdrop-filter:none}
  .hero-copy{padding:28px}
  .lobby-panel{padding:20px}
  .privacy-panel-body{grid-template-columns:1fr}
  
  /* Improve mobile form elements */
  .lobby-input,.primary-btn,.room-mode-btn{min-height:48px;font-size:1rem}
  .simple-entry label{font-size:.85rem;font-weight:700;margin-top:2px}
  .room-mode-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:6px}
}

/* ─── 14b. TABLET ≤1024px & ≥721px ───────────────────────────── */
@media(max-width:1024px) and (min-width:721px){
  #lobby{padding:70px 20px 32px}
  .hero-shell{gap:20px;padding:0 18px}
  .hero-copy{padding:32px}
  .lobby-panel{padding:24px}
  .privacy-panel-body{grid-template-columns:1fr}
}

/* ─── 15. MOBILE ≤720px — AUTHORITATIVE LAYOUT ──────────────────
   FIX: app-screen is position:relative (NOT fixed).
   position:fixed on Android Chrome covers the browser's own chrome bar,
   making the app's topbar render behind/under it = invisible topbar bug.
   height:100dvh correctly measures the space BELOW the browser chrome.
   ─────────────────────────────────────────────────────────────── */
@media(max-width:720px){
  /* Body when chat is active: locked, no scroll, fills visual viewport */
  body.app-active {
    overflow: hidden !important;
    /* NOT position:fixed — that breaks height:100dvh on #app in Android WebViews */
    width: 100vw !important;
    height: 100dvh !important;
    margin: 0 !important;
    padding: 0 !important;
  }
  body:not(.app-active){overflow-x:hidden;overflow-y:auto}
  #lobby{padding:70px 16px 32px;justify-content:flex-start;min-height:100dvh;overflow-y:auto;display:flex;flex-direction:column;align-items:stretch}
  .hero-shell{flex-direction:column;padding:0;gap:20px;width:100%;max-width:100%}

  /* App screen: position:relative + height:100dvh.
     dvh = dynamic viewport height = excludes browser chrome bars.
     This is the Android-safe approach — position:fixed breaks topbar
     rendering on Android Chrome by covering the browser's own UI. */
  #app.app-screen{
    display: flex !important;
    flex-direction: column !important;
    height: 100dvh !important;
    max-height: 100dvh !important;
    width: 100vw !important;
    overflow: hidden !important;
    background: var(--bg-grad-4) !important;
    z-index: 500 !important;
    padding: 0 !important;
    margin: 0 !important;
    position: relative !important;
  }

  /* Topbar: sticky in the flex column (NOT fixed).
     position:fixed takes it out of flow, meaning app-shell starts at top:0
     and slides behind/under the topbar. sticky keeps it in flow AND pinned. */
  .app-topbar{
    flex-shrink:0;
    display:grid;
    grid-template-columns:1fr auto;
    grid-template-rows:auto auto;
    gap:0 8px;
    padding:12px 14px;
    padding-top: max(12px, env(safe-area-inset-top));
    z-index:100;
    position: sticky;
    top: 0;
    overflow:visible;
    background:rgba(255,255,255,.88);
    backdrop-filter:blur(18px);
    -webkit-backdrop-filter:blur(18px);
    border-bottom:1px solid var(--border);
    box-shadow:0 2px 20px rgba(12,20,38,.08);
    width:100%;
  }
  body.theme-dark .app-topbar{background:rgba(8,12,22,.95);border-color:rgba(76,232,255,.2);box-shadow:0 2px 20px rgba(2,6,15,.6)}
  .topbar-left{grid-row:1;grid-column:1;flex:1;min-width:0;gap:8px;overflow:hidden;display:flex;align-items:center}
  .topbar-title{font-size:1rem;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .private-chip{display:none}
  .topbar-actions{display:none !important}

  /* Hamburger in row1 col2 */
  .mobile-menu-btn{
    display:inline-flex !important;
    grid-row:1;
    grid-column:2;
    align-items:center;
    min-height:44px;
    min-width:44px;
    padding:8px 12px;
    font-size:.9rem;
    white-space:nowrap;
    -webkit-tap-highlight-color:transparent
  }

  /* Dropdown: row2, full width */
  .topbar-dropdown{
    display:none;
    grid-row:2;
    grid-column:1 / -1;
    flex-direction:column;
    background:var(--panel-strong);
    border-top:1px solid var(--border);
    margin:8px -14px -12px;
    width:calc(100% + 28px);
    max-height:calc(100dvh - 100px);
    overflow-y:auto;
    -webkit-overflow-scrolling:touch
  }
  .topbar-dropdown.is-open{display:flex}
  .topbar-dropdown .dd-btn{
    display:flex;align-items:center;gap:12px;width:100%;padding:16px 18px;
    font:inherit;font-size:.95rem;font-weight:700;background:transparent;border:none;
    border-bottom:1px solid var(--border);color:var(--text);cursor:pointer;
    text-align:left;-webkit-tap-highlight-color:transparent;min-height:54px;touch-action:manipulation
  }
  .topbar-dropdown .dd-btn:last-child{border-bottom:none}
  .topbar-dropdown .dd-btn.active{color:var(--accent)}
  .topbar-dropdown .dd-btn.danger{color:var(--red)}
  .topbar-dropdown .dd-badge{display:flex;align-items:center;gap:10px;width:100%;padding:14px 18px;font-size:.9rem;font-weight:700;color:var(--muted);border-bottom:1px solid var(--border);min-height:50px}
  body.theme-dark .topbar-dropdown{background:rgba(8,12,22,.97)}
  body.theme-dark .topbar-dropdown .dd-btn{border-color:rgba(76,232,255,.15)}
  body.theme-dark .topbar-dropdown .dd-badge{border-color:rgba(76,232,255,.15)}

  /* Shell: flex child */
  .app-shell{
    display: flex !important;
    flex-direction: column !important;
    flex: 1 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    padding: 0 !important;
    margin: 0 !important;
    position: relative !important;
  }

  /* Chat panel: flex layout */
  #chat-panel,.workspace-column{
    display: flex !important;
    flex-direction: column !important;
    flex: 1 !important;
    min-height: 0 !important;
    overflow: hidden !important;
    height: 100% !important;
    border-radius: 0 !important;
    border: none !important;
    box-shadow: none !important;
    background: transparent !important;
    position: relative !important;
  }

  /* Hide redundant workspace header completely on mobile to maximize chat room height */
  .workspace-header{
    display: none !important;
  }

  /* Messages: Clean flex-grow middle container.
     No padding-top compensation needed — topbar is sticky (in-flow),
     so it naturally sits above the messages in the flex column.
     No padding-bottom needed — composer is in-flow below this. */
  .messages{
    flex: 1 !important;
    min-height: 0 !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    padding: 14px 14px 16px !important;
    -webkit-overflow-scrolling: touch !important;
    overscroll-behavior-y: contain !important;
    z-index: 1 !important;
    display: flex !important;
    flex-direction: column !important;
    gap: 12px !important;
    position: relative !important;
  }
  #app:not(.ai-off) .messages{background:transparent !important;box-shadow:none !important}
  #app:not(.ai-off) .messages::before{display:none !important}
  .app-screen[data-detective-mode="on"] .messages::after{display:none !important}
  .msg{max-width:90%}
  .msg-bubble{font-size:.95rem;line-height:1.5;padding:10px 14px}

  /* Mobile Vibe Check bar: absolute layout, hidden by default, shown ONLY in detective mode */
  .mobile-detective-bar{
    display: none !important;
    position: absolute !important;
    bottom: calc(88px + env(safe-area-inset-bottom)) !important;
    left: 0 !important;
    right: 0 !important;
    height: 54px !important;
    z-index: 100 !important;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 8px 14px;
    background: var(--panel-strong);
    border-top: 1px solid var(--border);
  }
  body.theme-dark .mobile-detective-bar{background:rgba(10,16,28,.97)}
  .mob-det-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
  .mob-det-info strong{font-size:.88rem;color:var(--ink);display:block;font-weight:700}
  body.theme-dark .mob-det-info strong{color:var(--text)}
  .mob-det-info span{font-size:.78rem;color:var(--muted);display:block;line-height:1.2}
  .toggle-det-btn{flex-shrink:0;white-space:nowrap;padding:8px 12px !important;font-size:.78rem !important;min-height:36px !important;-webkit-tap-highlight-color:transparent}
  
  /* Show mobile detective bar ONLY when detective mode is ON */
  .app-screen[data-detective-mode="on"] .mobile-detective-bar{
    display: flex !important;
    position: relative !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
  }

  /* AI panel: SIDEBAR DRAWER on mobile */
  #ai-overlay {
    display: none;
    position: fixed; inset: 0;
    background: rgba(0,0,0,.55);
    backdrop-filter: blur(3px);
    -webkit-backdrop-filter: blur(3px);
    z-index: 800;
    opacity: 0;
    transition: opacity .28s ease;
  }
  #ai-overlay.visible {
    display: block;
    opacity: 1;
  }

  #ai-panel {
    display: none !important; /* HIDE BY DEFAULT ON MOBILE TO PREVENT HORIZONTAL SCROLL OVERFLOW */
    position: fixed !important;
    top: 0 !important; right: 0 !important; bottom: 0 !important;
    width: min(88vw, 360px) !important;
    z-index: 801 !important;
    transform: translateX(100%) !important;
    transition: transform .3s cubic-bezier(.32,.72,0,1) !important;
    margin: 0 !important;
    padding: 14px 14px 24px !important;
    border-radius: 0 !important;
    border-left: 1px solid var(--border) !important;
    box-shadow: -8px 0 40px rgba(0,0,0,.35) !important;
    background: var(--panel-strong) !important;
    height: 100% !important;
    overflow-y: auto !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
  }
  #ai-panel.mobile-visible {
    display: flex !important; /* ONLY DISPLAY WHEN ACTIVE */
    transform: translateX(0) !important;
  }
  body.theme-dark #ai-panel {
    background: rgba(8,12,22,.98) !important;
    border-color: rgba(76,232,255,.22) !important;
    box-shadow: -8px 0 40px rgba(0,0,0,.7) !important;
  }
  #ai-panel.mobile-visible {
    transform: translateX(0) !important;
  }
  .intel-card{padding:12px !important}
  .insight-bubble{font-size:.85rem !important;padding:10px 12px !important}
  .stat-box{padding:10px 12px !important}
  .intelligence-header{padding:10px 14px !important;flex-shrink:0 !important}
  .intelligence-header h2{font-size:.95rem !important;margin:0 !important}
  .drawer-close-btn{display:flex !important;width:40px;height:40px;flex-shrink:0;align-items:center;justify-content:center;background:rgba(255,255,255,.15);border:1px solid var(--border);border-radius:10px;color:var(--text);cursor:pointer}

  /* Composer: IN-FLOW flex child — Golden Layout Spec §5.
     NEVER use position:absolute here — it causes messages to slide under
     the input box making the chatbox invisible (the bug we're fixing).
     flex-shrink:0 keeps it pinned at the bottom of the flex column
     without any coordinate tricks, and it can never overlap messages. */
  .composer{
    position: relative !important;
    flex-shrink: 0 !important;
    bottom: auto !important;
    left: auto !important;
    right: auto !important;
    height: auto !important;
    /* No max-height — let it grow naturally with content */
    overflow: visible !important;
    z-index: 50 !important;
    background: rgba(8,12,22,0.96) !important;
    backdrop-filter: blur(16px) !important;
    -webkit-backdrop-filter: blur(16px) !important;
    border-top: 1px solid var(--border) !important;
    /* Critical: only pad the composer-row, not all the hidden elements */
    padding: 10px 12px !important;
    /* Use env() so notched/rounded phones don't clip the input bar */
    padding-bottom: max(12px, env(safe-area-inset-bottom, 12px)) !important;
    margin: 0 !important;
    width: 100% !important;
    box-sizing: border-box !important;
  }
  /* The actual input row — always fully visible */
  .composer-row{
    display:flex !important;
    flex-direction:row !important;
    align-items:flex-end !important;
    gap:10px !important;
    flex-wrap:nowrap !important;
    width: 100% !important;
  }
  #msg-input{
    flex:1 !important;
    min-height:46px !important;
    max-height:120px !important;
    /* 16px prevents iOS from auto-zooming on focus */
    font-size:16px !important;
    resize:none !important;
    overflow-y:auto !important;
    -webkit-overflow-scrolling:touch;
    border-radius:22px;
    padding:12px 16px;
    line-height:1.4;
    box-sizing: border-box !important;
  }
  .send-fab{
    width:48px !important;
    height:48px !important;
    min-width:48px !important;
    flex-shrink:0 !important;
    -webkit-tap-highlight-color:transparent;
    touch-action:manipulation;
  }

  /* Suggestions: horizontal scroll */
  .sugg-row{flex-wrap:nowrap !important;overflow-x:auto;scrollbar-width:none;padding:6px 12px !important;-webkit-overflow-scrolling:touch;gap:8px}
  .sugg-row::-webkit-scrollbar{display:none}
  .sugg-chip{flex-shrink:0;min-height:36px;display:inline-flex;align-items:center;font-size:.85rem;padding:8px 14px;-webkit-tap-highlight-color:transparent}

  /* Alert banner */
  .alert-banner{margin:0 !important;border-radius:0 !important;padding:14px 16px !important;font-size:.9rem !important;line-height:1.5}

  /* Intel tabs */
  .intel-tabs{display:flex !important;flex-wrap:nowrap !important;overflow-x:auto !important;gap:8px !important;scrollbar-width:none;grid-template-columns:unset !important;padding:8px 0 8px !important;-webkit-overflow-scrolling:touch}
  .intel-tabs::-webkit-scrollbar{display:none}
  .intel-tab{flex:0 0 auto !important;white-space:nowrap;min-height:40px;display:inline-flex;align-items:center;padding:10px 14px !important;font-size:.85rem !important;-webkit-tap-highlight-color:transparent}

  /* Misc */
  .pitch-strip{display:none !important}
  .msg-avatar{width:32px;height:32px}
  /* messages-empty: in-flow on mobile so it doesn't float over content.
     position:absolute (desktop) is overridden here. JS .style.display still works
     because NO !important is ever on the display property. */
  .messages-empty{
    position: relative;
    top: auto;
    left: auto;
    transform: none;
    width: 100%;
    max-width: 100%;
    margin: auto;
    padding: 20px 16px;
    pointer-events: auto;
  }
  .panel-heading{flex-direction:column;align-items:stretch}
  .panel-actions{width:100%;justify-content:flex-start}
  .detail-row{min-height:44px;display:flex;align-items:center}
  .detail-row strong{max-width:none;text-align:left;font-size:.95rem}
  .mode-toast{left:12px;right:12px;top:auto;bottom:100px;text-align:center;z-index:900;font-size:.9rem}
  .hero-metrics,.stats-grid,.solo-grid{grid-template-columns:1fr}
  .capability-grid{display:flex;gap:10px;overflow-x:auto;padding-bottom:8px;-webkit-overflow-scrolling:touch}
  .capability-chip{flex:0 0 auto;white-space:nowrap;min-height:40px;display:inline-flex;align-items:center}
  .empty-card{padding:20px 18px !important;border-radius:16px}
  .empty-card h3{font-size:1.2rem !important;line-height:1.3}
  .empty-card p{font-size:.95rem;line-height:1.5}
  .empty-prompts button{min-height:42px;font-size:.88rem;padding:10px 14px;-webkit-tap-highlight-color:transparent}
}

/* ─── Message Reactions ────────────────────────────────────────────── */
.msg-reactions{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px;padding-top:6px;border-top:1px solid rgba(255,255,255,0.05)}
.reaction-btn{display:inline-flex;align-items:center;gap:4px;background:rgba(76,232,255,0.12);border:1px solid rgba(76,232,255,0.28);color:var(--text);border-radius:16px;padding:4px 10px;font-size:.8rem;cursor:pointer;transition:all 0.2s ease;font-family:var(--font-sans);user-select:none}
.reaction-btn:hover{background:rgba(76,232,255,0.2);border-color:rgba(76,232,255,0.4);transform:scale(1.05)}
.reaction-btn:active{transform:scale(0.95)}

/* Reaction quick-access buttons (shown on hover) */
.msg-react-btns{display:none;flex-wrap:wrap;gap:4px;margin-top:8px;padding:8px;background:rgba(255,255,255,0.06);border-radius:12px}
.msg:hover .msg-react-btns{display:flex;animation:fadeIn 0.2s ease}
.msg-react-btn{background:transparent;border:1px solid rgba(255,255,255,0.15);color:var(--text);border-radius:20px;width:32px;height:32px;display:flex;align-items:center;justify-content:center;cursor:pointer;font-size:1.1rem;transition:all 0.2s ease;font-family:var(--font-sans)}
.msg-react-btn:hover{background:rgba(76,232,255,0.2);border-color:rgba(76,232,255,0.4);transform:scale(1.1)}
.msg-react-btn:active{transform:scale(0.9)}

/* ─── Photo Sharing ────────────────────────────────────────────────── */
.msg-photo{max-width:280px;border-radius:12px;cursor:pointer;transition:transform 0.2s ease,box-shadow 0.2s ease}
.msg-photo:hover{transform:scale(1.02);box-shadow:0 8px 24px rgba(76,232,255,0.3)}
.photo-caption{font-size:0.95rem;margin-top:8px;line-height:1.4;word-wrap:break-word}

.photo-upload-preview{background:rgba(76,232,255,0.08);border:2px solid rgba(76,232,255,0.3);border-radius:12px;padding:12px;margin-bottom:12px;animation:slideUp 0.3s ease}
.photo-caption-input{width:100%;padding:10px 12px;background:rgba(255,255,255,0.06);border:1px solid rgba(255,255,255,0.1);border-radius:8px;color:var(--text);font-family:var(--font-sans);font-size:0.9rem;margin:8px 0;transition:all 0.2s ease}
.photo-caption-input:focus{outline:none;background:rgba(255,255,255,0.1);border-color:rgba(76,232,255,0.4);box-shadow:0 0 12px rgba(76,232,255,0.2)}

.compose-icon-btn{background:none;border:none;color:var(--text);cursor:pointer;font-size:1.3rem;padding:6px;margin:0 4px;transition:all 0.2s ease;display:flex;align-items:center;justify-content:center}
.compose-icon-btn:hover{color:var(--blue);transform:scale(1.1)}
.compose-icon-btn:active{transform:scale(0.9)}

.upload-status{animation:slideDown 0.3s ease;font-weight:500}

.btn-primary,.btn-secondary{padding:10px 16px;border:none;border-radius:8px;font-family:var(--font-sans);font-weight:500;font-size:0.9rem;cursor:pointer;transition:all 0.2s ease;-webkit-tap-highlight-color:transparent}
.btn-primary{background:var(--blue);color:#070a12}
.btn-primary:hover{background:#36f2b4;transform:translateY(-2px)}
.btn-primary:active{transform:translateY(0)}

.btn-secondary{background:rgba(255,255,255,0.1);color:var(--text);border:1px solid rgba(255,255,255,0.2)}
.btn-secondary:hover{background:rgba(255,255,255,0.15);border-color:rgba(255,255,255,0.3)}
.btn-secondary:active{transform:scale(0.97)}

/* ─── College/Gen Z Vibes ──────────────────────────────────────────── */
@keyframes slideUp{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes slideDown{from{opacity:0;transform:translateY(-12px)}to{opacity:1;transform:translateY(0)}}
@keyframes fadeIn{from{opacity:0}to{opacity:1}}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:0.7}}
@keyframes wiggle{0%,100%{transform:rotate(0deg)}25%{transform:rotate(-2deg)}75%{transform:rotate(2deg)}}

/* Gen Z aesthetic: gradient accents and vibrant effects */
.msg-bubble{position:relative;overflow:hidden}
.msg-bubble::before{content:'';position:absolute;top:0;left:-100%;width:100%;height:100%;background:linear-gradient(90deg,transparent,rgba(255,255,255,0.1),transparent);animation:shimmer 2s infinite;pointer-events:none}

@keyframes shimmer{0%{left:-100%}100%{left:100%}}

/* Vibrant reaction indicators */
.reaction-btn{background:linear-gradient(135deg,rgba(76,232,255,0.15),rgba(184,255,98,0.1))}
body.theme-dark .reaction-btn{box-shadow:inset 0 0 8px rgba(76,232,255,0.1)}

/* Photo hover glow */
body.theme-dark .msg-photo:hover{box-shadow:0 0 20px rgba(76,232,255,0.5),0 8px 24px rgba(76,232,255,0.3)}

/* Composer polish for college crowd */
.composer{background:linear-gradient(180deg,transparent,rgba(76,232,255,0.03));backdrop-filter:blur(8px)}
.composer-row{gap:8px}

#msg-input{background:rgba(255,255,255,0.06);border:1.5px solid rgba(76,232,255,0.2);transition:all 0.3s ease}
#msg-input:focus{background:rgba(255,255,255,0.08);border-color:rgba(76,232,255,0.4);box-shadow:0 0 12px rgba(76,232,255,0.15)}

/* Send button with pulse */
.send-fab{position:relative}
.send-fab::after{content:'';position:absolute;inset:-4px;border-radius:50%;border:2px solid rgba(76,232,255,0);animation:pulse-ring 1.5s ease-out infinite}

@keyframes pulse-ring{0%{border-color:var(--blue);opacity:1;transform:scale(1)}100%{border-color:transparent;opacity:0;transform:scale(1.3)}}

/* Placeholder text Gen Z styling */
#msg-input::placeholder{color:rgba(255,255,255,0.5);font-style:italic}

/* ─── GAME SCREEN ──────────────────────────────────────────── */

/* Hide game screen by default */
#game-screen {
  display: none;
}
#game-screen.is-active {
  display: flex !important;
}

/* Full-viewport game screen container */
.game-screen {
  position: fixed;
  inset: 0;
  z-index: 500;
  display: flex;
  flex-direction: column;
  background: #0b1220;
  color: #e9f3ff;
  overflow: hidden;
}
body.theme-dark .game-screen {
  background: #04060d;
}

/* Top bar */
.game-topbar {
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
  padding: 10px 16px;
  background: var(--panel-strong);
  border-bottom: 1px solid var(--border);
  gap: 12px;
  min-height: 56px;
}
body.theme-dark .game-topbar {
  background: rgba(8,12,22,0.97);
  border-color: rgba(76,232,255,0.18);
}
.game-room-info {
  flex: 1;
  text-align: center;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--muted);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}
.game-room-info span {
  color: var(--text);
}

/* Scrollable main shell */
.game-shell {
  flex: 1;
  overflow-y: auto;
  -webkit-overflow-scrolling: touch;
  overscroll-behavior-y: contain;
  display: flex;
  flex-direction: column;
  align-items: stretch;
}

/* Each game section (lobby / play / results) */
.game-section {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  padding: 32px 20px 40px;
  gap: 24px;
  min-height: 0;
}

/* Lobby content wrapper */
.game-lobby-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 20px;
  width: 100%;
  max-width: 480px;
}

/* Game emoji icon */
.game-emoji {
  font-size: 4rem;
  line-height: 1;
  display: block;
  text-align: center;
  filter: drop-shadow(0 8px 24px rgba(76,232,255,0.3));
  animation: intro-logo-pulse 2s ease-in-out infinite;
}

/* Title & description */
.game-lobby-content h1 {
  margin: 0;
  font-size: clamp(1.6rem, 5vw, 2.2rem);
  font-family: var(--font-display);
  color: var(--text);
  text-align: center;
}
.game-lobby-content p {
  margin: 0;
  color: var(--muted);
  text-align: center;
  font-size: 1rem;
  line-height: 1.5;
}

/* Code sharing box */
.game-lobby-code {
  width: 100%;
  background: var(--panel-strong);
  border: 1.5px solid rgba(76,232,255,0.25);
  border-radius: 18px;
  padding: 20px;
  text-align: center;
}
body.theme-dark .game-lobby-code {
  background: rgba(10,16,28,0.85);
}
.game-lobby-code > p {
  margin: 0 0 12px;
  font-size: 0.85rem;
  color: var(--muted);
  text-transform: uppercase;
  letter-spacing: 0.1em;
  font-weight: 700;
}
.code-display {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 12px;
  background: rgba(76,232,255,0.08);
  border: 1px solid rgba(76,232,255,0.22);
  border-radius: 12px;
  padding: 14px 20px;
}
.code-display code {
  font-family: var(--font-mono);
  font-size: 1.8rem;
  font-weight: 700;
  color: var(--blue);
  letter-spacing: 0.12em;
  line-height: 1;
  user-select: all;
}
.copy-icon-btn {
  background: none;
  border: none;
  font-size: 1.3rem;
  cursor: pointer;
  padding: 4px;
  line-height: 1;
  opacity: 0.8;
  transition: opacity 0.2s, transform 0.15s;
}
.copy-icon-btn:hover { opacity: 1; transform: scale(1.15); }
.copy-icon-btn:active { transform: scale(0.9); }

/* Status / spinner box */
.game-status-box {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 12px;
}
#game-status-text {
  color: var(--muted);
  font-size: 0.95rem;
  text-align: center;
}

/* Spinner */
.spinner {
  width: 32px;
  height: 32px;
  border-radius: 50%;
  border: 3px solid rgba(76,232,255,0.2);
  border-top-color: var(--blue);
  animation: spin 0.8s linear infinite;
}

/* Players in lobby */
.game-players {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  justify-content: center;
}
.game-player-pill {
  background: rgba(76,232,255,0.12);
  border: 1px solid rgba(76,232,255,0.28);
  border-radius: 999px;
  padding: 6px 16px;
  font-size: 0.9rem;
  font-weight: 600;
  color: var(--text);
}

/* Game content (questions etc.) */
.game-content {
  width: 100%;
  max-width: 560px;
}
.game-questions {
  display: flex;
  flex-direction: column;
  gap: 16px;
}
.game-questions h2 {
  margin: 0;
  font-size: 1.3rem;
  color: var(--text);
  text-align: center;
}

/* Results */
.game-results-content {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 24px;
  width: 100%;
  max-width: 480px;
}
.results-header {
  text-align: center;
}
.results-header h1 { margin: 0; font-size: 2rem; color: var(--text); }
.results-header p  { margin: 8px 0 0; color: var(--muted); }
.scorecard {
  width: 100%;
  background: var(--panel-strong);
  border: 1.5px solid rgba(76,232,255,0.2);
  border-radius: 18px;
  padding: 24px;
  text-align: center;
}
body.theme-dark .scorecard { background: rgba(10,16,28,0.85); }
.results-actions {
  display: flex;
  flex-direction: column;
  gap: 10px;
  width: 100%;
}
.results-actions button { width: 100%; }
.secondary-btn {
  padding: 12px 20px;
  border-radius: 14px;
  border: 1.5px solid rgba(76,232,255,0.3);
  background: rgba(76,232,255,0.08);
  color: var(--text);
  font-family: var(--font-sans);
  font-size: 0.95rem;
  font-weight: 600;
  cursor: pointer;
  transition: all 0.2s;
}
.secondary-btn:hover {
  background: rgba(76,232,255,0.16);
  border-color: rgba(76,232,255,0.5);
}

/* Truth or Lie buttons */
.truth-lie-buttons {
  display: flex;
  gap: 16px;
  justify-content: center;
  margin-top: 20px;
}
.btn-choice {
  flex: 1;
  max-width: 160px;
  padding: 14px;
  border-radius: 14px;
  border: none;
  font-family: var(--font-sans);
  font-size: 1rem;
  font-weight: 700;
  cursor: pointer;
  transition: all 0.2s;
}
.btn-truth { background: var(--green); color: #04060d; }
.btn-lie   { background: var(--red);   color: #fff; }
.btn-truth:hover { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(37,216,156,0.35); }
.btn-lie:hover   { transform: translateY(-2px); box-shadow: 0 8px 20px rgba(255,90,124,0.35); }

/* Mobile tweaks */
@media(max-width:560px){
  .code-display code { font-size: 1.4rem; }
  .game-section { padding: 20px 14px 32px; }
  .game-emoji { font-size: 3rem; }
}

/* ─── Game Features & New Interactive Elements ──────────────── */

/* Modals */
.game-modal, .prompt-modal, .modal {
  position: fixed;
  inset: 0;
  background: rgba(0, 0, 0, 0.7);
  display: flex;
  align-items: center;
  justify-content: center;
  z-index: 1000;
  padding: 20px;
  animation: fadeIn 0.3s ease;
}

.game-modal-content, .prompt-content, .modal-content {
  background: linear-gradient(135deg, rgba(8, 12, 24, 0.95), rgba(16, 25, 42, 0.95));
  border: 1.5px solid rgba(76, 232, 255, 0.3);
  border-radius: 16px;
  padding: 24px;
  max-width: 500px;
  width: 100%;
  max-height: 80vh;
  overflow-y: auto;
  box-shadow: 0 20px 60px rgba(0, 0, 0, 0.5);
  animation: slideUp 0.3s ease;
}

.game-modal h2, .prompt-content h3, .modal-content h2 {
  margin-top: 0;
  color: var(--blue);
  font-size: 1.4rem;
  text-align: center;
}

.game-questions {
  display: flex;
  flex-direction: column;
  gap: 16px;
  margin: 16px 0;
}

.game-q {
  background: rgba(255, 255, 255, 0.05);
  padding: 12px;
  border-radius: 10px;
  border: 1px solid rgba(76, 232, 255, 0.2);
}

.game-q p {
  margin: 0 0 8px;
  font-weight: 600;
  color: var(--text);
}

.game-q input {
  width: 100%;
  padding: 8px 12px;
  background: rgba(255, 255, 255, 0.08);
  border: 1px solid rgba(76, 232, 255, 0.2);
  border-radius: 8px;
  color: var(--text);
  font-family: var(--font-sans);
  margin-bottom: 8px;
  transition: all 0.2s ease;
}

.game-q input:focus {
  outline: none;
  background: rgba(255, 255, 255, 0.1);
  border-color: rgba(76, 232, 255, 0.4);
  box-shadow: 0 0 12px rgba(76, 232, 255, 0.2);
}

.prompt-options {
  display: flex;
  flex-direction: column;
  gap: 10px;
  margin: 16px 0;
}

.prompt-btn {
  background: linear-gradient(135deg, rgba(76, 232, 255, 0.1), rgba(184, 255, 98, 0.05));
  border: 1px solid rgba(76, 232, 255, 0.2);
  color: var(--text);
  padding: 12px 16px;
  border-radius: 10px;
  cursor: pointer;
  transition: all 0.2s ease;
  font-family: var(--font-sans);
  font-weight: 500;
}

.prompt-btn:hover {
  background: linear-gradient(135deg, rgba(76, 232, 255, 0.2), rgba(184, 255, 98, 0.1));
  border-color: rgba(76, 232, 255, 0.4);
  transform: translateX(4px);
}

.score-display {
  text-align: center;
  padding: 20px;
}

.score-number {
  font-size: 3rem;
  font-weight: 700;
  color: var(--blue);
  margin: 20px 0;
  animation: pulse 1.5s ease-in-out infinite;
}

.score-display p {
  color: var(--text);
  margin: 10px 0;
}

.game-result {
  text-align: center;
}

.vibe-card {
  background: rgba(0, 0, 0, 0.3);
  border: 1px solid rgba(76, 232, 255, 0.2);
  border-radius: 8px;
  padding: 12px;
  font-family: var(--font-mono);
  font-size: 0.8rem;
  color: var(--blue);
  overflow-x: auto;
  line-height: 1.4;
  margin: 16px 0;
}

/* Quick Replies */
.quick-replies {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(76, 232, 255, 0.1);
  margin-bottom: 8px;
  animation: slideDown 0.3s ease;
}

.quick-reply-btn {
  background: rgba(76, 232, 255, 0.15);
  border: 1px solid rgba(76, 232, 255, 0.3);
  color: var(--text);
  padding: 6px 12px;
  border-radius: 16px;
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.2s ease;
  font-family: var(--font-sans);
  white-space: nowrap;
}

.quick-reply-btn:hover {
  background: rgba(76, 232, 255, 0.25);
  border-color: rgba(76, 232, 255, 0.5);
  transform: scale(1.05);
}

.quick-reply-btn:active {
  transform: scale(0.95);
}

/* Features Bar */
.features-bar {
  display: flex;
  gap: 8px;
  padding: 8px 0;
  border-bottom: 1px solid rgba(76, 232, 255, 0.1);
  margin-bottom: 8px;
  overflow-x: auto;
  animation: slideDown 0.3s ease;
}

.feature-btn {
  background: linear-gradient(135deg, rgba(76, 232, 255, 0.1), rgba(184, 255, 98, 0.05));
  border: 1px solid rgba(76, 232, 255, 0.2);
  color: var(--text);
  padding: 8px 14px;
  border-radius: 10px;
  cursor: pointer;
  font-size: 0.85rem;
  transition: all 0.2s ease;
  font-family: var(--font-sans);
  white-space: nowrap;
  flex: 0 0 auto;
}

.feature-btn:hover {
  background: linear-gradient(135deg, rgba(76, 232, 255, 0.2), rgba(184, 255, 98, 0.1));
  border-color: rgba(76, 232, 255, 0.4);
  transform: translateY(-2px);
  box-shadow: 0 4px 12px rgba(76, 232, 255, 0.2);
}

.feature-btn:active {
  transform: translateY(0);
}

/* Vibe Meter */
.vibe-meter {
  background: linear-gradient(135deg, rgba(76, 232, 255, 0.08), rgba(184, 255, 98, 0.04));
  border: 1px solid rgba(76, 232, 255, 0.2);
  border-radius: 12px;
  padding: 12px;
  margin: 8px 0;
  animation: slideDown 0.3s ease;
}

.vibe-energy {
  display: flex;
  align-items: center;
  gap: 12px;
  justify-content: center;
  margin-bottom: 8px;
}

#vibe-emoji {
  font-size: 2rem;
  animation: wiggle 0.6s ease-in-out infinite;
}

#vibe-text {
  color: var(--blue);
  font-weight: 600;
}

#vibe-trend {
  font-size: 1.2rem;
}

.vibe-alerts {
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
  justify-content: center;
}

.vibe-alert-tag {
  background: rgba(76, 232, 255, 0.2);
  border: 1px solid rgba(76, 232, 255, 0.3);
  color: var(--text);
  padding: 4px 10px;
  border-radius: 10px;
  font-size: 0.8rem;
  animation: slideUp 0.3s ease;
}

/* Flags Display */
.flags-display {
  margin: 8px 0;
  animation: slideDown 0.3s ease;
}

.flags-section {
  background: rgba(255, 255, 255, 0.05);
  border: 1px solid rgba(76, 232, 255, 0.2);
  border-radius: 10px;
  padding: 10px;
  margin-bottom: 8px;
}

.flags-section p {
  margin: 4px 0;
  font-size: 0.9rem;
  display: flex;
  align-items: center;
  gap: 8px;
}

#green-flags p:before {
  content: '✨';
}

#red-flags p:before {
  content: '⚠️';
}

@media(max-width:560px){
  .hero-copy h1{font-size:2.1rem}
  .lobby-tabs,.room-mode-tabs,.room-action-row{grid-template-columns:1fr}
  .tab-btn,.status-pill,.room-badge,.toolbar-select{width:100%}
  .metric-card{padding:14px}
  .msg-meta{flex-wrap:wrap}
  .intro-card{min-height:min(520px,86vh);padding:36px 22px 26px;border-radius:24px}
  .intro-orbit{width:172px;height:172px;top:24px}
  .intro-logo{width:96px;height:96px;border-radius:26px}
  .intro-logo-mark{font-size:2.75rem}
  
  /* Lobby buttons on small screens */
  .primary-btn,.ghost-btn,.room-mode-btn{min-height:44px;touch-action:manipulation}
  .room-code-row{grid-template-columns:1fr}
  .lobby-input{font-size:16px;padding:14px 16px}
  .room-mode-tabs button{font-size:.9rem;padding:12px 14px}
}
@media(prefers-reduced-motion:reduce){
  .intro-loader *,.hero-copy,.lobby-panel,.workspace-column,.msg.slide-in{animation:none !important}
  .tab-content,.intel-pane{transition:none;transform:none}
}

/* ─── 16. Reconnect Banner ───────────────────────────────────── */
#reconnect-banner{position:fixed;top:0;left:0;right:0;z-index:9000;display:flex;align-items:center;justify-content:center;background:rgba(8,12,22,.96);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,180,84,.4);padding:10px 20px;color:var(--amber);font-family:var(--font-mono);font-size:.82rem;gap:10px}
.reconnect-inner{display:flex;flex-direction:column;align-items:center;gap:4px;text-align:center}
.reconnect-inner>span{display:flex;align-items:center;gap:6px}
.reconnect-inner small{font-size:.72rem;opacity:.6;color:var(--muted)}
.reconnect-spinner{width:14px;height:14px;border-radius:50%;flex-shrink:0;border:2px solid rgba(255,180,84,.3);border-top-color:var(--amber);animation:spin .8s linear infinite}
.reconnect-dots span{animation:dotPulse 1.4s infinite both}
.reconnect-dots span:nth-child(2){animation-delay:.2s}
.reconnect-dots span:nth-child(3){animation-delay:.4s}

/* ─── 17. Leave Confirm Sheet ────────────────────────────────── */
#leave-confirm-sheet{position:fixed;inset:0;z-index:8000;display:flex;flex-direction:column;justify-content:flex-end;opacity:0;pointer-events:none;transition:opacity .2s ease}
#leave-confirm-sheet.open{opacity:1;pointer-events:all}
.leave-sheet-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.5);backdrop-filter:blur(4px)}
.leave-sheet-card{position:relative;background:var(--panel-strong);border-top:1px solid var(--border);border-radius:24px 24px 0 0;padding:12px 24px 36px;display:flex;flex-direction:column;align-items:center;gap:10px;transform:translateY(100%);transition:transform .3s cubic-bezier(.32,.72,0,1)}
#leave-confirm-sheet.open .leave-sheet-card{transform:translateY(0)}
.leave-sheet-handle{width:40px;height:4px;background:var(--border);border-radius:999px;margin-bottom:8px}
.leave-sheet-title{font-size:1.1rem;font-weight:700;color:var(--ink);margin:0}
.leave-sheet-sub{font-size:.88rem;color:var(--muted);margin:0 0 8px;text-align:center}
.leave-sheet-confirm{width:100%;padding:14px;border-radius:16px;border:none;background:var(--red);color:#fff;font-weight:700;font-size:1rem;cursor:pointer;font-family:var(--font-sans);transition:opacity .15s}
.leave-sheet-confirm:active{opacity:.8}
.leave-sheet-cancel{width:100%;padding:14px;border-radius:16px;border:1px solid var(--border);background:transparent;color:var(--ink);font-weight:600;font-size:1rem;cursor:pointer;font-family:var(--font-sans);transition:background .15s}
.leave-sheet-cancel:active{background:var(--panel)}

/* Addictive UI & Animations */
@keyframes shiftGradient {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}

.bg-spicy { background: linear-gradient(-45deg, #2a0000, #5c0000, #ff1744, #880e4f) !important; background-size: 400% 400% !important; animation: shiftGradient 15s ease infinite !important; }
.bg-sweet { background: linear-gradient(-45deg, #1f0b2e, #4a148c, #ce93d8, #7b1fa2) !important; background-size: 400% 400% !important; animation: shiftGradient 15s ease infinite !important; }
.bg-trivia { background: linear-gradient(-45deg, #001f3f, #0074D9, #7FDBFF, #0052cc) !important; background-size: 400% 400% !important; animation: shiftGradient 15s ease infinite !important; }
.bg-truth { background: linear-gradient(-45deg, #050505, #111, #444, #222) !important; background-size: 400% 400% !important; animation: shiftGradient 15s ease infinite !important; }

@keyframes popInCard {
  0% { transform: scale(0.8) translateY(20px); opacity: 0; }
  100% { transform: scale(1) translateY(0); opacity: 1; }
}

.choice-card.animate-in {
  animation: popInCard 0.4s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
}

.choice-card:hover {
  background: rgba(255,255,255,0.1);
  border-color: rgba(255,255,255,0.8);
  transform: translateY(-6px) scale(1.02);
  box-shadow: 0 10px 30px rgba(76,232,255,0.3);
}

.choice-card.selected {
  transform: scale(0.95);
  box-shadow: 0 0 40px rgba(76,232,255,0.6);
  border-color: #fff;
}

/* Score Ring */
.score-ring-wrapper {
  position: relative;
  width: 150px;
  height: 150px;
  margin: 0 auto 20px;
}
.score-ring {
  width: 150px;
  height: 150px;
  transform: rotate(-90deg);
}
.ring-bg { fill: none; stroke: rgba(255,255,255,0.1); stroke-width: 8; }
.ring-fill { fill: none; stroke: #4ce8ff; stroke-width: 8; stroke-linecap: round; }
@keyframes fillRing {
  from { stroke-dashoffset: 283; }
  to { stroke-dashoffset: var(--target-offset); }
}
.score-number {
  position: absolute;
  top: 50%; left: 50%;
  transform: translate(-50%, -50%);
  font-size: 2.5rem; font-weight: 800; color: #fff;
  text-shadow: 0 0 15px rgba(76,232,255,0.5);
}

/* Results Breakdown */
.results-breakdown {
  width: 100%; margin-top: 30px; text-align: left;
}
.results-breakdown h3 {
  text-align: center; margin-bottom: 20px; font-size: 1.4rem; color: #4ce8ff;
}
.breakdown-card {
  background: rgba(0,0,0,0.3);
  border: 1px solid rgba(255,255,255,0.1);
  border-radius: 12px;
  padding: 16px; margin-bottom: 15px;
  position: relative;
  opacity: 0; animation: popInCard 0.5s ease forwards;
}
.breakdown-card.match { border-left: 4px solid #00E676; }
.breakdown-card.miss { border-left: 4px solid #FF1744; }
.breakdown-q-text { font-weight: 600; font-size: 1.1rem; margin-bottom: 10px; color: #fff; }
.breakdown-answers { display: flex; flex-direction: column; gap: 6px; }
.breakdown-ans { display: flex; justify-content: space-between; font-size: 0.95rem; }
.breakdown-ans span { color: rgba(255,255,255,0.6); }
.breakdown-ans strong { color: #fff; }
.breakdown-ans.match strong { color: #00E676; }
.breakdown-ans.miss strong { color: #FF1744; }
.breakdown-icon { position: absolute; top: 16px; right: 16px; font-size: 1.2rem; }

/* Premium Romantic Results Screen */
#game-results {
  position: relative;
  overflow-y: auto;
  overflow-x: hidden;
  width: 100%;
  padding-bottom: 50px;
}

#game-results::before {
  content: '';
  position: fixed;
  top: 0; left: 0;
  width: 100vw; height: 100vh;
  background: radial-gradient(circle at 50% 50%, rgba(224, 171, 142, 0.08) 0%, transparent 70%);
  animation: pulseAura 8s infinite alternate ease-in-out;
  pointer-events: none;
  z-index: 0;
}

@keyframes pulseAura {
  0% { transform: scale(1); opacity: 0.5; }
  100% { transform: scale(1.3); opacity: 1; }
}

.game-results-content {
  position: relative;
  z-index: 1;
  width: 100%;
}

.scorecard-container {
  background: rgba(15, 15, 15, 0.6);
  backdrop-filter: blur(24px);
  border: 1px solid rgba(224, 171, 142, 0.15);
  box-shadow: 0 10px 40px rgba(0,0,0,0.5), 0 0 30px rgba(224, 171, 142, 0.05);
  border-radius: 24px;
  padding: 40px 20px;
  margin: 20px 0;
  animation: elegantFadeIn 1s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

@keyframes elegantFadeIn {
  0% { transform: translateY(20px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}

/* Gradient SVG Ring */
.score-ring {
  width: 160px;
  height: 160px;
  transform: rotate(-90deg);
  filter: drop-shadow(0 0 8px rgba(224, 171, 142, 0.3));
}
.ring-bg { stroke: rgba(255,255,255,0.03); stroke-width: 6; }
.ring-fill { 
  stroke: url(#scoreGradient); 
  stroke-width: 6; 
  stroke-linecap: round; 
}

.score-number {
  font-size: 3rem; 
  font-weight: 500; 
  font-family: 'Space Grotesk', sans-serif;
  background: linear-gradient(135deg, #FFF, #E0AB8E);
  -webkit-background-clip: text;
  -webkit-text-fill-color: transparent;
  text-shadow: 0 0 20px rgba(224, 171, 142, 0.2);
}

.score-msg {
  font-size: 1.3rem;
  font-weight: 600;
  color: #E0AB8E;
  margin-bottom: 8px;
  letter-spacing: 0.5px;
}
.score-subtext {
  color: rgba(255,255,255,0.5);
  font-size: 0.95rem;
  font-weight: 400;
}

/* Breakdown Cards */
.results-breakdown h3 {
  text-align: center; margin-bottom: 24px; font-size: 1.2rem; color: rgba(255,255,255,0.8);
  font-weight: 500; text-transform: uppercase; letter-spacing: 2px;
}

.breakdown-card {
  background: rgba(15, 15, 25, 0.4);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border: 1.5px solid var(--border);
  border-radius: 16px;
  padding: 20px;
  margin-bottom: 16px;
  position: relative;
  opacity: 0;
  animation: elegantFadeIn 0.8s ease forwards;
  transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 8px 32px rgba(0, 0, 0, 0.15);
}
.breakdown-card:hover {
  transform: translateY(-4px);
  border-color: rgba(255, 255, 255, 0.15);
  background: rgba(20, 20, 35, 0.6);
  box-shadow: 0 12px 40px rgba(0, 0, 0, 0.25);
}
.breakdown-card.match {
  border-left: 3.5px solid var(--green) !important;
  background: linear-gradient(145deg, rgba(15, 15, 25, 0.4), rgba(37, 216, 156, 0.03)) !important;
}
.breakdown-card.miss {
  border-left: 3.5px solid var(--red) !important;
  background: linear-gradient(145deg, rgba(15, 15, 25, 0.4), rgba(255, 91, 124, 0.03)) !important;
}

.breakdown-q-text {
  font-weight: 600;
  font-size: 1.05rem;
  margin-bottom: 12px;
  color: var(--text);
  line-height: 1.4;
  padding-right: 42px; /* Prevents collision with absolute positioned breakdown icon */
}
.breakdown-answers { display: flex; flex-direction: column; gap: 8px; }
.breakdown-ans { display: flex; justify-content: space-between; font-size: 0.95rem; }
.breakdown-ans span { color: var(--muted); opacity: 0.8; }
.breakdown-ans strong { color: var(--text); font-weight: 500; }
.breakdown-ans.match strong { color: var(--green) !important; }
.breakdown-ans.miss strong { color: var(--red) !important; }
.breakdown-icon {
  position: absolute;
  top: 20px;
  right: 20px;
  font-size: 1.1rem;
  opacity: 0.9;
}

#results-title {
  font-size: 2rem;
  font-weight: 500;
  letter-spacing: 1px;
  color: #fff;
}
#results-subtitle {
  color: rgba(224, 171, 142, 0.8);
  font-size: 1rem;
}

/* Translucent Beating Heart Background */
.bg-heart-wrapper {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  width: 100vw;
  height: 100vh;
  display: flex;
  align-items: center;
  justify-content: center;
  pointer-events: none;
  z-index: 0;
  overflow: hidden;
}

.bg-heart-svg {
  width: 80vmin;
  height: 80vmin;
  fill: rgba(255, 105, 180, 0.04);
  animation: heartbeat 2s infinite cubic-bezier(0.215, 0.61, 0.355, 1);
  filter: drop-shadow(0 0 40px rgba(255, 105, 180, 0.1));
}

@keyframes heartbeat {
  0% { transform: scale(1); opacity: 0.8; }
  15% { transform: scale(1.15); opacity: 1; }
  30% { transform: scale(1); opacity: 0.8; }
  45% { transform: scale(1.15); opacity: 1; }
  100% { transform: scale(1); opacity: 0.8; }
}

/* Celebration Popup for >80% */
.celebration-popup {
  position: fixed;
  bottom: 40px;
  right: 40px;
  background: rgba(20, 10, 15, 0.85);
  backdrop-filter: blur(16px);
  border: 1px solid rgba(224, 171, 142, 0.4);
  box-shadow: 0 0 30px rgba(224, 171, 142, 0.2), inset 0 0 20px rgba(255, 105, 180, 0.1);
  padding: 20px 30px;
  border-radius: 16px;
  z-index: 999;
  display: flex;
  align-items: center;
  gap: 15px;
  transform: translateX(150%);
  opacity: 0;
  animation: slideInPopup 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
  animation-delay: 1.5s;
}

.celebration-popup h4 {
  margin: 0;
  color: #fff;
  font-size: 1.2rem;
  font-weight: 600;
  text-transform: uppercase;
  letter-spacing: 1px;
}

.celebration-popup p {
  margin: 5px 0 0;
  color: #E0AB8E;
  font-size: 0.9rem;
}

.celebration-icon {
  font-size: 2.5rem;
  animation: bounceRotate 2s infinite;
}

@keyframes slideInPopup {
  to { transform: translateX(0); opacity: 1; }
}

@keyframes bounceRotate {
  0%, 100% { transform: translateY(0) rotate(0deg); }
  50% { transform: translateY(-10px) rotate(15deg); }
}

@media (max-width: 768px) {
  .celebration-popup {
    bottom: 20px;
    right: 20px;
    left: 20px;
    transform: translateY(150%);
    animation: slideUpPopup 0.8s cubic-bezier(0.175, 0.885, 0.32, 1.275) forwards;
    animation-delay: 1.5s;
  }
  @keyframes slideUpPopup {
    to { transform: translateY(0); opacity: 1; }
  }
}

/* Mode Select Screen */
#mode-select {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  min-height: 100dvh;
  /* Fix: use existing token --bg-grad-4 instead of undefined --bg-body */
  background: var(--bg-grad-4);
  padding: 20px;
  position: relative;
  z-index: 50;
  overflow-y: auto;
}

.mode-select-wrapper {
  width: 100%;
  max-width: 900px;
  text-align: center;
  animation: elegantFadeIn 0.8s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}

.mode-select-header {
  margin-bottom: 40px;
}
.mode-select-header h1 {
  font-size: 2.5rem;
  /* Fix: use existing token --text instead of undefined --text-mut */
  color: var(--text);
  margin-bottom: 10px;
}
.mode-select-header p {
  /* Fix: use existing token --muted instead of undefined --text-mut */
  color: var(--muted);
  font-size: 1.1rem;
}

.mode-cards {
  display: flex;
  gap: 30px;
  justify-content: center;
  flex-wrap: wrap;
}

.mode-card {
  flex: 1;
  min-width: 280px;
  max-width: 400px;
  background: var(--panel);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  border: 1.5px solid var(--border);
  border-radius: 24px;
  padding: 40px 30px;
  cursor: pointer;
  transition: all 0.4s cubic-bezier(0.16, 1, 0.3, 1);
  box-shadow: 0 10px 30px rgba(0,0,0,0.15);
  display: flex;
  flex-direction: column;
  align-items: center;
  position: relative;
  overflow: hidden;
}

.mode-card::before {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at top right, rgba(255,255,255,0.06), transparent 60%);
  pointer-events: none;
}

.chat-card {
  border-color: rgba(224, 171, 142, 0.2) !important;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.02), rgba(224, 171, 142, 0.04)) !important;
}

body.theme-dark .chat-card {
  border-color: rgba(224, 171, 142, 0.25) !important;
  background: linear-gradient(145deg, rgba(15, 15, 30, 0.4), rgba(224, 171, 142, 0.06)) !important;
}

.mode-card.game-card {
  border-color: rgba(76, 232, 255, 0.2) !important;
  background: linear-gradient(145deg, rgba(255, 255, 255, 0.02), rgba(76, 232, 255, 0.04)) !important;
}

body.theme-dark .mode-card.game-card {
  border-color: rgba(76, 232, 255, 0.25) !important;
  background: linear-gradient(145deg, rgba(15, 15, 30, 0.4), rgba(76, 232, 255, 0.06)) !important;
}

.mode-card:hover {
  transform: translateY(-6px);
  box-shadow: 0 20px 40px rgba(0,0,0,0.25);
}

.chat-card:hover {
  border-color: rgba(224, 171, 142, 0.75) !important;
  box-shadow: 0 20px 45px rgba(224, 171, 142, 0.18), var(--shadow) !important;
}

/* Note: .game-card is also used for game selection cards in lobby — hover is safe here */
.mode-card.game-card:hover {
  border-color: rgba(76, 232, 255, 0.75) !important;
  box-shadow: 0 20px 45px rgba(76, 232, 255, 0.18), var(--shadow) !important;
}

.mode-card-icon {
  font-size: 3.5rem;
  margin-bottom: 20px;
}

.mode-card h2 {
  font-size: 1.5rem;
  color: var(--text);
  margin-bottom: 10px;
}

.mode-card p {
  color: var(--muted);
  font-size: 0.95rem;
  line-height: 1.5;
}

/* Mode toggling inside Lobby */
#lobby.mode-chat .game-selection-panel { display: none !important; }
#lobby.mode-game .chat-option-panel { display: none !important; }
#lobby.mode-game .divider { display: none !important; } /* hide 'or' divider */
/* Game Name Modal */
.modal-overlay {
  position: fixed; top: 0; left: 0; right: 0; bottom: 0;
  background: rgba(0,0,0,0.6); backdrop-filter: blur(8px);
  z-index: 1000; display: flex; align-items: center; justify-content: center;
  animation: fadeIn 0.3s ease;
}
.modal-content {
  background: var(--panel-strong);
  backdrop-filter: blur(24px);
  -webkit-backdrop-filter: blur(24px);
  padding: 30px;
  border-radius: 20px;
  width: 90%;
  max-width: 400px;
  border: 1.5px solid var(--border);
  box-shadow: var(--shadow);
  text-align: center;
  animation: elegantFadeIn 0.3s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.modal-content h2 { margin-bottom: 10px; color: var(--text); }
.modal-content p { color: var(--muted); margin-bottom: 20px; font-size: 0.95rem; }
.modal-content .lobby-input { width: 100%; margin-bottom: 20px; box-sizing: border-box; }
.modal-actions { display: flex; gap: 10px; justify-content: flex-end; }

@keyframes gradientBG {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
.btn, .choice-card, .game-card {
  transition: transform 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55), box-shadow 0.4s ease, border-color 0.4s ease !important;
}
.btn:active, .choice-card:active, .game-card:active {
  transform: scale(0.92) !important;
}
/* Toast Notifications */
.toast-container {
  position: fixed;
  top: 20px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 10000;
  display: flex;
  flex-direction: column;
  gap: 10px;
  pointer-events: none;
}
.premium-toast {
  background: var(--panel-strong);
  color: var(--text);
  padding: 12px 24px;
  border-radius: 99px;
  font-family: var(--font-display);
  font-weight: 600;
  box-shadow: 0 10px 30px rgba(0,0,0,0.3);
  backdrop-filter: blur(16px);
  border: 1px solid var(--border);
  animation: toastSlideDown 0.4s cubic-bezier(0.68, -0.55, 0.265, 1.55) forwards;
  opacity: 0;
  pointer-events: auto;
}
.premium-toast.fade-out {
  animation: toastFadeOut 0.3s ease forwards;
}
@keyframes toastSlideDown {
  0% { transform: translateY(-30px); opacity: 0; }
  100% { transform: translateY(0); opacity: 1; }
}
@keyframes toastFadeOut {
  0% { transform: translateY(0); opacity: 1; }
  100% { transform: translateY(-20px); opacity: 0; }
}
/* Suspense Animation */
.pulse-suspense {
  animation: suspensePulse 1.5s infinite ease-in-out;
  color: var(--blue);
  font-weight: bold;
}
@keyframes suspensePulse {
  0% { transform: scale(1); opacity: 0.7; text-shadow: 0 0 10px rgba(76,232,255,0.2); }
  50% { transform: scale(1.05); opacity: 1; text-shadow: 0 0 20px rgba(76,232,255,0.6); }
  100% { transform: scale(1); opacity: 0.7; text-shadow: 0 0 10px rgba(76,232,255,0.2); }
}

/* Staggered Mode Cards */
.games-grid .game-card {
  opacity: 0;
  animation: slideUpFade 0.5s cubic-bezier(0.2, 0.8, 0.2, 1) forwards;
}
.games-grid .game-card:nth-child(1) { animation-delay: 0.1s; }
.games-grid .game-card:nth-child(2) { animation-delay: 0.2s; }
.games-grid .game-card:nth-child(3) { animation-delay: 0.3s; }
.games-grid .game-card:nth-child(4) { animation-delay: 0.4s; }

@keyframes slideUpFade {
  0% { opacity: 0; transform: translateY(30px); }
  100% { opacity: 1; transform: translateY(0); }
}
\n.game-section { overflow-y: auto; padding-bottom: 80px; }\n
/* Premium Loading Spinner */
.loading-spinner {
  display: inline-block;
  width: 14px;
  height: 14px;
  border: 2px solid rgba(255,255,255,0.3);
  border-radius: 50%;
  border-top-color: #fff;
  animation: spin 0.8s linear infinite;
  margin-right: 8px;
  vertical-align: middle;
}
@keyframes spin {
  to { transform: rotate(360deg); }
}

/* ───────────────────────────────────────────────────────────── */
/* ─── BULLETPROOF MOBILE GAME VIEWPORT & SCROLLING OVERRIDES ── */
/* ───────────────────────────────────────────────────────────── */

/* Force a completely solid black-navy background on active game screen */
/* This hides all background screens 100% and prevents any transparency bleed-through */
#game-screen {
  display: none !important;
}

#game-screen.is-active,
body.game-active #game-screen {
  display: flex !important;
  visibility: visible !important;
  opacity: 1 !important;
  z-index: 9999 !important;
  position: fixed !important;
  top: 0 !important;
  left: 0 !important;
  right: 0 !important;
  bottom: 0 !important;
  background: #050510 !important; 
  height: 100dvh !important;
  width: 100vw !important;
  overflow: hidden !important;
}

/* Base style for game-screen class without overriding the display */
.game-screen {
  position: fixed !important;
  inset: 0 !important;
  z-index: 9999 !important;
  flex-direction: column !important;
  height: 100dvh !important;
  width: 100vw !important;
  background: #050510 !important;
  overflow: hidden !important;
}

/* Topbar is always pinned and cannot shrink */
.game-topbar {
  flex-shrink: 0 !important;
  z-index: 10000 !important;
  position: relative !important;
  width: 100% !important;
  background: #101025 !important;
  border-bottom: 1px solid rgba(76, 232, 255, 0.25) !important;
}

/* The parent shell is the primary vertical scrolling container */
/* We turn off all vertical flex-centering to prevent top-bottom cutoffs! */
.game-shell {
  flex: 1 !important;
  width: 100% !important;
  overflow-y: auto !important;
  -webkit-overflow-scrolling: touch !important;
  display: flex !important;
  flex-direction: column !important;
  justify-content: flex-start !important; /* Always start at the top so questions are never cut off */
  align-items: center !important;
  padding: 0 !important;
  margin: 0 !important;
  background: transparent !important;
}

/* The active section fills the width and gets safe margins & paddings */
.game-section {
  width: 100% !important;
  max-width: 540px !important;
  display: none !important;
  flex-direction: column !important;
  justify-content: flex-start !important;
  align-items: center !important;
  gap: 20px !important;
  /* Safe padding: 24px top, 16px sides, 120px bottom to prevent cutting off options on mobile */
  padding: 24px 16px 120px !important; 
  margin: 0 auto !important;
  min-height: 100% !important;
  box-sizing: border-box !important;
}

/* Ensure active display is flex */
.game-section[style*="display: flex"] {
  display: flex !important;
}
#game-lobby[style*="display: flex"],
#game-play[style*="display: flex"],
#game-results[style*="display: flex"] {
  display: flex !important;
}

/* Make sure choice cards are responsive and have a comfortable height */
.choices-grid {
  width: 100% !important;
  display: flex !important;
  flex-direction: column !important;
  gap: 12px !important;
  margin-top: 10px !important;
}

.choice-card {
  width: 100% !important;
  min-height: 54px !important;
  padding: 14px 16px !important;
  font-size: 0.95rem !important;
  line-height: 1.4 !important;
  border-radius: 14px !important;
  display: flex !important;
  align-items: center !important;
  justify-content: center !important;
  text-align: center !important;
}

/* Prevent the body from scrolling or shifting when the game screen is active on mobile */
body.game-active {
  overflow: hidden !important;
  position: fixed !important;
  width: 100vw !important;
  height: 100dvh !important;
  top: 0 !important;
  left: 0 !important;
}

/* Prevent the body from scrolling or shifting when the chat screen is active on mobile */
body.app-active {
  overflow: hidden !important;
  position: fixed !important;
  width: 100vw !important;
  height: 100dvh !important;
  top: 0 !important;
  left: 0 !important;
}

/* ─── MODE SELECT — MOBILE FIX ≤720px ───────────────────────
   The mode-select screen had no mobile CSS. Cards with min-width:280px
   and padding:40px stacked to taller than the viewport, causing the
   entire page to become scrollable and pushing the chat UI off-screen.
   This block constrains it to the viewport using the same flex layout
   spec as every other screen. 
   ─────────────────────────────────────────────────────────── */
@media(max-width:720px){
  /* Screen container: exact viewport, scrollable internally */
  #mode-select {
    height: 100dvh !important;
    min-height: unset !important;
    overflow-y: auto !important;
    overflow-x: hidden !important;
    justify-content: flex-start !important;
    padding: 40px 20px 40px !important;
    -webkit-overflow-scrolling: touch;
    overscroll-behavior-y: contain;
  }

  .mode-select-wrapper {
    width: 100% !important;
    max-width: 100% !important;
  }

  .mode-select-header {
    margin-bottom: 32px !important;
  }
  .mode-select-header h1 {
    font-size: 2.2rem !important;
    line-height: 1.1 !important;
    margin-bottom: 10px !important;
  }
  .mode-select-header p {
    font-size: 1rem !important;
  }

  /* Cards: full-width, stacked vertically, original tall aesthetic preserved */
  .mode-cards {
    flex-direction: column !important;
    gap: 20px !important;
    align-items: stretch !important;
  }
  .mode-card {
    min-width: unset !important;
    max-width: 100% !important;
    width: 100% !important;
    /* Keep original vertical layout — icon above, text below */
    flex-direction: column !important;
    align-items: center !important;
    text-align: center !important;
    padding: 36px 24px !important;
    border-radius: 22px !important;
    gap: 0 !important;
  }
  .mode-card-icon {
    font-size: 3.2rem !important;
    margin-bottom: 16px !important;
  }
  .mode-card h2 {
    font-size: 1.4rem !important;
    margin-bottom: 10px !important;
  }
  .mode-card p {
    font-size: 0.95rem !important;
    margin: 0 !important;
    max-width: 26ch;
  }
  /* No transform hover on touch — prevents sticky hover states */
  .mode-card:hover {
    transform: none !important;
  }
  .mode-card:active {
    transform: scale(0.97) !important;
    transition: transform 0.1s ease !important;
  }
}
