:root{
  --navy:#0b1430; --navy2:#101a3a; --panel:#13204a; --line:#243363; --line2:#34468a;
  --paper:#f6f0e2; --paper2:#fffdf7; --paper-line:#ddd2b6;
  --ink:#241f17; --ink2:#6b5d44;
  --red:#d6202e; --red-d:#a4111c; --gold:#e6b84a; --gold-d:#b8860f;
  --blue:#2f5fe0; --blue-d:#1d3fb0; --slate:#1d2b57;
  --no:#d6202e; --amber-d:#b8860f; --green-d:#1f6e45;
  --ok-bg:#e7f6e1; --ok:#3f9d4e; --ok-ink:#1f5c2a;
  --no-bg:#ffdfe0; --no-ink:#a4111c;
  --r:16px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  font-family:'Inter','Noto Sans Thai',-apple-system,BlinkMacSystemFont,'Segoe UI',system-ui,sans-serif;
  color:#e7ecff; min-height:100%; overscroll-behavior:none; -webkit-font-smoothing:antialiased;
  background:#0b1430;
  background-image:radial-gradient(rgba(255,255,255,.045) 1px, transparent 1px);
  background-size:20px 20px; background-attachment:fixed;
}
#app{max-width:560px;margin:0 auto;padding:16px;min-height:100vh}
.hidden{display:none !important}

/* loading */
.loading{display:flex;flex-direction:column;align-items:center;gap:14px;color:#9fb0d8;padding-top:30vh}
.spinner{width:44px;height:44px;border:5px solid #1c2750;border-top-color:var(--red);border-radius:50%;animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* cards = case files (cream paper) */
.card{background:var(--paper);border:2px solid var(--paper-line);border-radius:4px var(--r) var(--r) var(--r);
  padding:20px;margin:14px 0;color:var(--ink);box-shadow:0 10px 26px rgba(0,0,0,.4);animation:pop .3s ease;position:relative}
@keyframes pop{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}

h1{font-family:'Special Elite',serif;margin:.2em 0;font-size:1.7rem;color:#fff;text-align:center;letter-spacing:1px}
h2,h3{font-family:'Special Elite',serif;margin:.2em 0;color:var(--ink);font-weight:400;letter-spacing:.4px}
h2{font-size:1.35rem}
.sub{color:#9fb0d8;text-align:center;margin:0 0 8px;font-weight:500}
.muted{color:var(--ink2)}

/* buttons (detective) */
.btn{display:flex;align-items:center;justify-content:center;gap:10px;width:100%;
  border:none;border-bottom:4px solid rgba(0,0,0,.3);border-radius:13px;padding:14px 18px;
  font-family:'Oswald',sans-serif;font-size:1.02rem;font-weight:700;letter-spacing:.6px;text-transform:uppercase;
  color:#fff;background:var(--red);cursor:pointer;transition:transform .05s,border-width .05s;margin:8px 0}
.btn:active{transform:translateY(3px);border-bottom-width:1px}
.btn.lg{font-size:1.15rem;padding:16px}
.btn.green{background:var(--red);border-bottom-color:var(--red-d)}
.btn.pink{background:var(--slate);border-bottom-color:#0e1838;border:2px solid var(--line2);border-bottom-width:4px}
.btn.blue{background:var(--blue);border-bottom-color:var(--blue-d)}
.btn.amber{background:var(--gold);color:#3b2a00;border-bottom-color:var(--gold-d)}
.btn.gray{background:#33405f;color:#dbe3f5;border-bottom-color:#1b2440}
.btn.ghost{background:transparent;color:var(--slate);border:2px dashed #b9ad8d;border-bottom-width:2px}
.topbar .btn.ghost{color:#cdd9ff;border-color:var(--line2)}
.btn:disabled{opacity:.5;cursor:not-allowed}
.btn .emoji{font-size:1.25rem}
.btn-row{display:flex;gap:10px}
.btn-row .btn{margin:8px 0}
.google-btn{background:#fff;color:#3c4043;font-family:'Inter';font-weight:700;text-transform:none;letter-spacing:0;
  border:2px solid #d0d0d0;border-bottom-width:4px}
.google-btn img{width:22px;height:22px}

/* top bar / profile (dark panel) */
.topbar{display:flex;align-items:center;gap:12px;background:var(--navy2);border:1px solid var(--line);
  border-radius:14px;padding:10px 14px;color:#e7ecff}
.avatar{width:46px;height:46px;border-radius:50%;border:3px solid var(--red);object-fit:cover;background:#0c1430}
.who{flex:1;min-width:0}
.who .nm{font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#fff}
.lvl-badge{font-family:'Special Elite';background:var(--gold);color:#3b2a00;font-weight:400;border-radius:6px;padding:2px 9px;font-size:.78rem}
.expbar{height:12px;background:#1c2750;border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-top:6px}
.expbar>i{display:block;height:100%;background:linear-gradient(90deg,var(--red),var(--gold));width:0;transition:width .6s}
.exp-txt{font-size:.72rem;color:#9fb0d8;margin-top:3px}

/* chips */
.chips{display:flex;flex-wrap:wrap;gap:9px;margin:10px 0}
.chip{flex:1 1 28%;min-width:80px;text-align:center;font-family:'Oswald';font-weight:700;
  border:2px solid var(--paper-line);border-bottom-width:4px;border-radius:11px;padding:11px 8px;
  cursor:pointer;background:var(--paper2);color:var(--ink);transition:.1s}
.chip.on{border-color:var(--red);background:#fbe3e4;color:var(--red-d)}
.chip .lv{display:block;font-size:1.2rem}
.chip .ct{font-size:.7rem;color:var(--ink2)}

/* study list */
.studylist{max-height:46vh;overflow:auto;border-radius:10px;border:2px solid var(--paper-line);background:var(--paper2)}
.wrow{padding:12px 14px;border-bottom:1px solid #eadfca}
.wrow:last-child{border-bottom:none}
.wrow .w{font-family:'Oswald';font-weight:700;font-size:1.18rem;color:var(--slate)}
.wrow .pos{font-size:.7rem;color:#fff;background:var(--red);border-radius:6px;padding:1px 6px;margin-left:6px;vertical-align:middle}
.wrow .m{color:var(--ink)}
.wrow .ex{color:var(--ink2);font-style:italic;font-size:.9rem;margin-top:2px}

/* quiz */
.qhead{display:flex;justify-content:space-between;align-items:center;font-family:'Special Elite';color:#9fb0d8;font-size:.85rem;margin-bottom:6px}
.qprog{height:10px;background:#1c2750;border:1px solid var(--line);border-radius:999px;overflow:hidden;margin-bottom:12px}
.qprog>i{display:block;height:100%;background:var(--gold);transition:width .3s}
.question{font-family:'Oswald';font-size:1.7rem;font-weight:700;text-align:center;color:var(--slate);margin:6px 0 4px;letter-spacing:.5px}
.qhint{font-family:'Special Elite';text-align:center;color:var(--ink2);margin-bottom:10px;font-size:.9rem}
.opt{display:block;width:100%;text-align:left;border:2px solid var(--paper-line);border-bottom-width:4px;
  background:var(--paper2);border-radius:11px;padding:13px 15px;font-size:1.02rem;font-weight:600;color:var(--ink);
  margin:8px 0;cursor:pointer;transition:.08s}
.opt:active{transform:translateY(2px);border-bottom-width:2px}
.opt.correct{border-color:var(--ok);background:var(--ok-bg);color:var(--ok-ink)}
.opt.wrong{border-color:var(--red);background:var(--no-bg);color:var(--no-ink)}
.opt.dim{opacity:.5}

/* countdown / level-up overlays */
.countdown{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:rgba(11,20,48,.96);z-index:50;color:#fff}
.cd-num{font-family:'Special Elite';font-size:8rem;font-weight:400;color:var(--gold);animation:cd .9s ease}
@keyframes cd{from{transform:scale(2.4);opacity:0}to{transform:scale(1);opacity:1}}
.levelup{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;
  background:rgba(11,20,48,.96);z-index:55;color:#fff;text-align:center;animation:pop .4s}
.levelup .big{font-family:'Special Elite';font-size:2.6rem;color:var(--gold)}

/* results */
.result-big{text-align:center}
.score-ring{width:140px;height:140px;margin:6px auto;border-radius:50%;display:flex;align-items:center;justify-content:center;
  background:conic-gradient(var(--red) var(--p,0%), #e3d8bf 0)}
.score-ring .inner{width:112px;height:112px;border-radius:50%;background:var(--paper2);display:flex;flex-direction:column;align-items:center;justify-content:center}
.score-ring .pct{font-family:'Oswald';font-size:2rem;font-weight:700;color:var(--red-d)}
.stat-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
.stat{background:var(--paper2);border:2px solid var(--paper-line);border-radius:12px;padding:12px;text-align:center}
.stat b{font-family:'Oswald';display:block;font-size:1.4rem;color:var(--slate)}
.stat span{font-size:.78rem;color:var(--ink2)}

/* lobby players */
.player{display:flex;align-items:center;gap:10px;padding:10px;border-radius:10px;background:var(--paper2);border:2px solid var(--paper-line);margin:8px 0}
.player img{width:36px;height:36px;border-radius:50%}
.player .tag{margin-left:auto;font-size:.74rem;font-weight:700;padding:3px 10px;border-radius:999px}
.tag.owner{background:var(--gold);color:#3b2a00}
.tag.ready{background:var(--ok-bg);color:var(--ok-ink)}
.tag.wait{background:#e7dfca;color:#6b5d44}
.tag.done{background:#dbe6ff;color:var(--slate)}

.roomcode{font-family:'Special Elite';font-size:2.5rem;letter-spacing:.3rem;text-align:center;color:var(--red-d);
  background:#fbe3e4;border:2px solid var(--paper-line);border-radius:10px;padding:12px;margin:8px 0}
.input{width:100%;border:2px solid var(--paper-line);border-bottom-width:4px;border-radius:11px;padding:14px;
  font-family:'Oswald';font-size:1.3rem;text-align:center;font-weight:700;text-transform:uppercase;letter-spacing:.2rem;background:var(--paper2);color:var(--ink)}
.input:focus{outline:none;border-color:var(--red)}

/* lists / stats */
.list-item{display:flex;align-items:center;gap:10px;padding:12px;border-bottom:1px solid #eadfca}
.list-item:last-child{border:none}
.miss-badge{margin-left:auto;background:var(--no-bg);color:var(--no-ink);font-weight:700;border-radius:999px;padding:2px 10px;font-size:.8rem}
.lead-row{display:flex;align-items:center;gap:10px;padding:10px;border-radius:10px;margin:6px 0;background:var(--paper2);border:2px solid var(--paper-line)}
.lead-row:nth-child(1){background:#fff6db;border-color:#e7c873}
.lead-row .rank{font-family:'Oswald';font-weight:700;width:28px;text-align:center}
.lead-row .pts{font-family:'Oswald';margin-left:auto;font-weight:700;color:var(--red-d)}

.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);background:#0a1026;color:#fff;border:1px solid var(--line);
  padding:12px 18px;border-radius:999px;font-weight:600;z-index:60;box-shadow:0 8px 24px rgba(0,0,0,.5);animation:pop .3s}
.center{text-align:center}
.spacer{height:8px}
small.note{display:block;color:#9fb0d8;text-align:center;margin-top:10px;font-size:.78rem}
a.link{color:var(--gold)}
