:root{
  --bg:#16121f; --bg2:#1d1730; --card:#241d3a; --card2:#2c2350;
  --ink:#ffffff; --mut:#b9aecb; --line:rgba(255,255,255,.09);
  --acc:#ffd23f; --acc-ink:#231a00; --pink:#ff5d8f; --blue:#4cc9f0; --green:#7bf59b;
  --danger:#ff6b6b; --radius:18px;
  --shadow:0 10px 30px rgba(0,0,0,.35);
}
[data-theme="light"]{
  --bg:#f6f3ec; --bg2:#efe9dc; --card:#ffffff; --card2:#f3efe4;
  --ink:#1c1530; --mut:#6b6280; --line:rgba(20,10,40,.1);
  --acc:#f5b800; --acc-ink:#231a00;
  --shadow:0 10px 26px rgba(60,40,90,.14);
}
*{box-sizing:border-box; -webkit-tap-highlight-color:transparent;}
html,body{margin:0;padding:0;}
body{
  background:radial-gradient(1200px 600px at 50% -10%, #2b2144 0%, var(--bg) 55%) fixed, var(--bg);
  color:var(--ink);
  font-family:"Avenir Next","Segoe UI",system-ui,-apple-system,sans-serif;
  min-height:100vh; min-height:100dvh;
}
[data-theme="light"] body{background:radial-gradient(1200px 600px at 50% -10%, #fff8e2 0%, var(--bg) 60%) fixed, var(--bg);}
#app{max-width:540px;margin:0 auto;min-height:100dvh;display:flex;flex-direction:column;}
#screen{flex:1;padding:20px 16px calc(28px + env(safe-area-inset-bottom));}
.screen.enter{animation:rise .28s ease both;}
.screen.noanim.enter{animation:none;}
@keyframes rise{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
@media (prefers-reduced-motion:reduce){.screen.enter{animation:none;}}

/* type */
h1{font-size:30px;margin:6px 0;letter-spacing:-.5px;font-weight:900;}
.sub{color:var(--mut);margin:0 0 14px;font-size:15px;line-height:1.45;}
.ghead{text-align:center;margin:8px 0 16px;}
.logo-mini{font-size:34px;}
.tagline{color:var(--mut);font-size:15px;margin-top:6px;}
.tagline b{color:var(--acc);}

/* hero */
.hero{text-align:center;padding:34px 10px 10px;}
.hero .clock{font-size:64px;animation:tick 2.4s ease-in-out infinite;display:inline-block;}
@keyframes tick{0%,100%{transform:rotate(-8deg);}50%{transform:rotate(8deg);}}
.hero .title{font-size:64px;font-weight:900;line-height:.95;letter-spacing:-2px;margin:10px 0 4px;
  background:linear-gradient(180deg,#fff 30%,var(--acc) 90%);-webkit-background-clip:text;background-clip:text;color:transparent;}
[data-theme="light"] .hero .title{background:linear-gradient(180deg,#2a2145 20%,#b07800 95%);-webkit-background-clip:text;background-clip:text;color:transparent;}
.hero .tagline{font-size:17px;margin:8px 0 26px;}
.hero .tagline b{color:var(--acc);}
.menu{display:flex;flex-direction:column;gap:10px;max-width:340px;margin:0 auto;}
.foot{margin-top:26px;text-align:center;color:var(--mut);font-size:12px;}

/* buttons */
.btn{border:0;border-radius:14px;padding:14px 18px;font-size:16px;font-weight:800;cursor:pointer;
  background:var(--card);color:var(--ink);border:1px solid var(--line);transition:transform .08s ease, filter .15s;}
.btn:active{transform:scale(.97);}
.btn.primary{background:var(--acc);color:var(--acc-ink);border:0;box-shadow:0 6px 0 rgba(0,0,0,.25);}
.btn.primary:active{transform:translateY(3px);box-shadow:0 2px 0 rgba(0,0,0,.25);}
.btn.big{font-size:20px;padding:17px;letter-spacing:1px;}
.btn.ghost{background:transparent;}
.btn.small{padding:9px 13px;font-size:14px;border-radius:11px;}
.btn.danger{background:transparent;border:1px solid var(--danger);color:var(--danger);}
.btn.block{width:100%;}
.btn.sel{border-color:var(--acc);color:var(--acc);}
.btn:disabled{opacity:.35;}
.stepbadge{display:inline-block;background:var(--pink);color:#fff;font-weight:900;font-size:13px;letter-spacing:2px;
  padding:7px 14px;border-radius:999px;margin-bottom:8px;}
.stepbadge.s1{background:var(--blue);} .stepbadge.s2{background:var(--pink);} .stepbadge.s3{background:var(--acc);color:var(--acc-ink);}

/* cards & rows */
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:16px;margin:12px 0;box-shadow:var(--shadow);}
.rowline{display:flex;align-items:center;gap:10px;}
.grow{flex:1;min-width:0;}
input[type=text]{width:100%;background:var(--bg2);border:1px solid var(--line);color:var(--ink);
  border-radius:12px;padding:13px 14px;font-size:16px;outline:none;}
input[type=text]:focus{border-color:var(--acc);}
.plist{display:flex;flex-direction:column;gap:8px;margin:10px 0;}
.prow{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);border-radius:12px;padding:10px 12px;}
.prow .nm{flex:1;font-weight:700;font-size:16px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.xbtn{border:0;background:transparent;color:var(--mut);font-size:18px;cursor:pointer;padding:6px 10px;border-radius:8px;}
.field{margin:14px 0;}
.field label{display:block;font-weight:800;font-size:13px;letter-spacing:1.5px;color:var(--mut);margin-bottom:8px;}
.seg{display:flex;gap:8px;flex-wrap:wrap;}

/* categories */
.catbtns{display:flex;gap:8px;margin:10px 0 4px;}
.cats{display:flex;flex-wrap:wrap;gap:8px;margin:12px 0;}
.chip{border:1.5px solid var(--line);background:var(--card);color:var(--ink);border-radius:999px;
  padding:9px 14px;font-size:14px;font-weight:700;cursor:pointer;transition:all .12s;}
.chip:active{transform:scale(.95);}
.chip.sel{background:var(--acc);border-color:var(--acc);color:var(--acc-ink);}
.chip.spicy.sel{background:var(--pink);border-color:var(--pink);color:#fff;}
/* checkmark always reserves its space: selecting never changes chip size */
.chip .ck{display:inline-block;min-width:1em;}
.chip:not(.sel) .ck{visibility:hidden;}
.catcount{text-align:center;color:var(--mut);font-weight:800;letter-spacing:1.5px;font-size:13px;margin:12px 0;}
.stickybar{position:sticky;bottom:calc(12px + env(safe-area-inset-bottom));background:var(--bg2);
  border:1px solid var(--line);border-radius:16px;padding:12px;box-shadow:var(--shadow);}

/* ordering */
.olist{display:flex;flex-direction:column;gap:8px;margin:14px 0;}
.orow{display:flex;align-items:center;gap:10px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:10px 8px 10px 12px;}
.onum{font-weight:900;color:var(--acc);font-size:17px;min-width:38px;}
.otxt{flex:1;font-weight:700;font-size:16px;line-height:1.3;}
.octl{display:flex;flex-direction:column;gap:4px;}
.obtn{border:1px solid var(--line);background:var(--bg2);color:var(--ink);border-radius:9px;
  width:44px;height:34px;font-size:14px;cursor:pointer;font-weight:900;}
.obtn:active{background:var(--acc);color:var(--acc-ink);}
.obtn:disabled{opacity:.25;}
.qcard{background:linear-gradient(135deg,var(--card2),var(--card));border:1px solid var(--line);
  border-radius:var(--radius);padding:18px;text-align:center;margin:10px 0;}
.qcard .qc{font-size:12px;font-weight:900;letter-spacing:2px;color:var(--acc);margin-bottom:6px;}
.qcard .qq{font-size:21px;font-weight:900;line-height:1.3;}
.qcard .qh{color:var(--mut);font-size:13px;margin-top:8px;}
.passhero{text-align:center;padding:30px 10px;}
.passhero .big{font-size:52px;font-weight:900;letter-spacing:-1px;line-height:1;margin:12px 0;}
.passhero .eye{font-size:46px;}
.passhero p{color:var(--mut);font-size:16px;}

/* reveal */
.bigscore{font-size:84px;font-weight:900;text-align:center;letter-spacing:-3px;line-height:1;margin:6px 0;}
.verdict{text-align:center;font-size:24px;font-weight:900;margin:4px 0 14px;}
.verdict small{display:block;font-size:15px;color:var(--mut);font-weight:700;margin-top:4px;}
.cmp{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:12px 0;}
.cmp h4{margin:0 0 8px;font-size:12px;letter-spacing:1.5px;color:var(--mut);text-align:center;}
.cmp ul{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;}
.cmp li{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:9px 10px;font-size:14px;font-weight:700;display:flex;gap:8px;align-items:center;}
.cmp li.ok{border-color:var(--green);}
.cmp li.no{opacity:.75;}
.cmp li .mk{margin-left:auto;}

/* leaderboard */
.brow{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:13px 14px;margin:8px 0;}
.brow.win{border-color:var(--acc);background:linear-gradient(135deg,var(--card2),var(--card));}
.brow .rk{font-size:22px;font-weight:900;min-width:34px;text-align:center;}
.brow .nm{flex:1;font-weight:800;font-size:17px;}
.brow .pt{font-weight:900;color:var(--acc);font-size:18px;}
.sharecard{background:linear-gradient(135deg,#2b2144,#1c2b4a);border:1px solid var(--acc);border-radius:var(--radius);
  padding:20px;text-align:center;margin:14px 0;color:#fff;}
[data-theme="light"] .sharecard{background:linear-gradient(135deg,#2a2145,#173a5e);}
.sharecard .st{font-size:26px;font-weight:900;letter-spacing:-.5px;}
.sharecard .ss{white-space:pre-line;margin:10px 0;font-size:15px;line-height:1.6;color:#e8e2f5;}

/* settings */
.setrow{display:flex;align-items:center;gap:12px;background:var(--card);border:1px solid var(--line);
  border-radius:14px;padding:14px;margin:8px 0;}
.setrow .grow .setlabel{font-weight:800;font-size:16px;}
.setrow .grow .setdesc{color:var(--mut);font-size:13px;margin-top:2px;line-height:1.4;}
.toggle{width:56px;height:32px;border-radius:999px;border:0;background:var(--bg2);border:1px solid var(--line);
  position:relative;cursor:pointer;flex-shrink:0;}
.toggle::after{content:"";position:absolute;top:3px;left:4px;width:24px;height:24px;border-radius:50%;
  background:var(--mut);transition:all .18s;}
.toggle.on{background:var(--acc);border-color:var(--acc);}
.toggle.on::after{left:26px;background:var(--acc-ink);}

/* history */
.hrow{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:13px 14px;margin:8px 0;}
.hrow .hd{font-weight:800;font-size:15px;}
.hrow .hs{color:var(--mut);font-size:13px;margin-top:3px;line-height:1.5;}
.hrnds{margin-top:8px;border-top:1px dashed var(--line);padding-top:7px;display:flex;flex-direction:column;}
.hrnd{display:flex;gap:8px;align-items:baseline;font-size:13px;padding:2px 0;}
.hrn{font-weight:900;color:var(--acc);min-width:26px;}
.hrnd .hrs{margin-left:auto;font-weight:800;white-space:nowrap;}
.hrq{color:var(--mut);font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;
  padding-left:34px;margin-bottom:4px;}
.empty{text-align:center;color:var(--mut);padding:34px 10px;font-size:15px;line-height:1.6;}

/* howto */
.howstep{display:flex;gap:14px;margin:16px 0;align-items:flex-start;}
.howstep .n{font-size:30px;}
.howstep b{font-size:17px;}
.howstep p{color:var(--mut);margin:4px 0 0;font-size:14px;line-height:1.5;}

.toast{position:fixed;left:50%;bottom:calc(30px + env(safe-area-inset-bottom));transform:translateX(-50%) translateY(20px);
  background:var(--ink);color:var(--bg);font-weight:800;font-size:14px;padding:12px 20px;border-radius:999px;
  opacity:0;transition:all .25s;z-index:10000;max-width:90%;text-align:center;}
.toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.kbd-hint{text-align:center;color:var(--mut);font-size:12px;margin-top:14px;}

/* drag reorder */
.ogrip{touch-action:none;cursor:grab;color:var(--mut);font-size:15px;letter-spacing:1px;
  padding:10px 6px;user-select:none;-webkit-user-select:none;flex-shrink:0;}
.ogrip:active{cursor:grabbing;color:var(--acc);}
.orow{transition:transform .18s ease;}
.orow.dragging{position:relative;z-index:5;transition:none;box-shadow:var(--shadow);border-color:var(--acc);}

/* category sections */
.catsec{margin:16px 0 4px;}
.catsec-head{display:flex;align-items:center;gap:8px;margin-bottom:4px;}
.catsec-name{font-weight:900;font-size:13px;letter-spacing:1.4px;text-transform:uppercase;color:var(--mut);flex:1;}
.catsec-head .btn{padding:6px 11px;font-size:12px;border-radius:9px;}
.catsec .cats{margin:6px 0 4px;}

/* surprise stepper */
.surrow{display:flex;align-items:center;gap:8px;margin:10px 0;padding:10px 12px;
  background:var(--card);border:1px dashed var(--line);border-radius:14px;}
.surrow .label{flex:1;font-weight:800;font-size:14px;}

/* mashup toggle */
.chip.big{font-size:15px;padding:10px 20px;}
.mashrow{margin:2px 0 6px;display:flex;flex-direction:column;gap:6px;align-items:flex-start;}
.msub{font-size:12.5px;color:var(--mut);line-height:1.5;}

/* tap-to-edit player names */
.prow .nm{cursor:pointer;}
.nmedit{font:inherit;font-weight:700;color:var(--ink);background:var(--bg2);
  border:1.5px solid var(--acc);border-radius:8px;padding:6px 10px;width:100%;max-width:220px;}

/* mashup category tags */
.otxt .osub{font-size:11px;font-weight:800;letter-spacing:1px;text-transform:uppercase;color:var(--mut);margin-top:2px;}
.cs{font-size:10.5px;font-weight:800;letter-spacing:.6px;text-transform:uppercase;color:var(--mut);margin-left:6px;}

/* touch polish: rapid taps never zoom, card drags never scroll the page.
   The right gutter gives thumbs a place to scroll without grabbing a card. */
button{touch-action:manipulation;}
.orow{touch-action:none;margin-right:14px;}
