:root{
  --bg:#14100c; --bg2:#1d1611; --card:#221a13; --card2:#2b2118;
  --line:#3a2c1f; --line2:#4a3826;
  --amber:#e0a84e; --amber-deep:#c6862f; --gold:#f0c46a; --copper:#b9712f;
  --text:#f6ede0; --muted:#b9a890; --faint:#8a7a64;
  --good:#7fb86a; --bad:#cf6b5a;
  --serif:"Fraunces",Georgia,serif; --sans:"Inter",-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  color-scheme:dark;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;height:100%}
body{
  background:var(--bg); color:var(--text); font-family:var(--sans);
  font-size:15px; line-height:1.5; overflow-x:hidden;
  -webkit-font-smoothing:antialiased;
}
.serif{font-family:var(--serif); font-weight:600; letter-spacing:-.01em}
.hidden{display:none !important}
button{font-family:inherit; cursor:pointer}

.glow{position:fixed; inset:0; z-index:-1; pointer-events:none;
  background:
    radial-gradient(60% 45% at 50% -5%, rgba(224,168,78,.18), transparent 70%),
    radial-gradient(50% 40% at 90% 110%, rgba(185,113,47,.14), transparent 70%),
    linear-gradient(180deg,#14100c,#0f0c08);
}

/* ───────── onboarding ───────── */
.onboarding{position:fixed; inset:0; z-index:50; display:grid; place-items:center; padding:24px;
  animation:fade .4s ease}
.onboard-card{max-width:380px; width:100%; text-align:center}
.onboard-emoji{font-size:54px; filter:drop-shadow(0 8px 24px rgba(224,168,78,.35)); animation:swirl 4s ease-in-out infinite}
.onboard-card h1{font-size:40px; line-height:1.02; margin:.3em 0 .15em; color:var(--gold);
  text-shadow:0 2px 30px rgba(240,196,106,.25)}
.tagline{color:var(--amber); font-style:italic; font-family:var(--serif); margin:.2em 0 1.6em}
.sub{color:var(--muted); margin:0 0 1.4em}
#onboard-form{display:flex; flex-direction:column; gap:10px}
input,textarea{width:100%; background:var(--card); border:1px solid var(--line2); color:var(--text);
  border-radius:13px; padding:14px 16px; font-size:16px; font-family:inherit; outline:none; transition:border-color .15s}
input:focus,textarea:focus{border-color:var(--amber)}
textarea{resize:vertical; min-height:72px}
.btn-primary{background:linear-gradient(180deg,var(--gold),var(--amber-deep)); color:#2a1c0c; font-weight:700;
  border:0; border-radius:13px; padding:15px; font-size:16px; box-shadow:0 8px 24px rgba(198,134,47,.35);
  transition:transform .1s, filter .15s}
.btn-primary:active{transform:scale(.98); filter:brightness(1.05)}
.fineprint{color:var(--faint); font-size:12px; margin-top:14px}

/* ───────── app shell ───────── */
.app{min-height:100%; padding-bottom:88px; max-width:680px; margin:0 auto; animation:fade .4s ease}
.topbar{position:sticky; top:0; z-index:20; display:flex; align-items:center; justify-content:space-between;
  padding:max(14px,env(safe-area-inset-top)) 18px 12px;
  background:linear-gradient(180deg,rgba(20,16,12,.95),rgba(20,16,12,.6) 80%,transparent);
  backdrop-filter:blur(10px)}
.brand{display:flex; align-items:center; gap:10px}
.brand-mark{font-size:26px}
.brand-title{font-size:18px; color:var(--gold); line-height:1}
.brand-sub{font-size:11px; color:var(--faint); letter-spacing:.04em; text-transform:uppercase; margin-top:2px}
.whoami{background:var(--card); border:1px solid var(--line2); color:var(--amber); font-weight:600;
  border-radius:999px; padding:7px 13px; font-size:13px}

.view{padding:8px 16px 20px; animation:fade .25s ease}
.section-title{font-family:var(--serif); font-size:22px; color:var(--text); margin:14px 2px 6px}
.section-sub{color:var(--muted); font-size:13px; margin:0 2px 14px}

/* ───────── scotch grid (taste) ───────── */
.grid{display:grid; grid-template-columns:1fr 1fr; gap:12px}
.scotch-card{background:var(--card); border:1px solid var(--line); border-radius:16px; overflow:hidden;
  text-align:left; padding:0; color:var(--text); transition:transform .12s, border-color .15s; position:relative}
.scotch-card:active{transform:scale(.98)}
.scotch-card .photo{aspect-ratio:1/1; width:100%; object-fit:cover; background:
  radial-gradient(circle at 50% 35%, #3a2a1a, #221a13); display:grid; place-items:center; font-size:40px}
.scotch-card .body{padding:11px 12px 13px}
.scotch-card .nm{font-family:var(--serif); font-size:15px; line-height:1.15; margin:0}
.scotch-card .dist{color:var(--faint); font-size:11.5px; margin-top:2px}
.scotch-card .meta{display:flex; align-items:center; justify-content:space-between; margin-top:9px}
.pill{font-size:11px; font-weight:600; padding:3px 8px; border-radius:999px; border:1px solid var(--line2); color:var(--muted)}
.pill.done{background:rgba(127,184,106,.14); border-color:rgba(127,184,106,.4); color:var(--good)}
.pill.todo{background:rgba(224,168,78,.1); border-color:rgba(224,168,78,.35); color:var(--amber)}
.scorebadge{font-family:var(--serif); font-weight:700; color:var(--gold); font-size:16px}
.scorebadge small{color:var(--faint); font-weight:400; font-size:11px}

.empty{text-align:center; color:var(--muted); padding:50px 20px}
.empty .big{font-size:46px; margin-bottom:10px}

/* ───────── rate sheet ───────── */
.sheet-backdrop{position:fixed; inset:0; z-index:40; background:rgba(0,0,0,.6); backdrop-filter:blur(4px);
  display:flex; align-items:flex-end; justify-content:center; animation:fade .2s ease}
.sheet{background:var(--bg2); border:1px solid var(--line2); border-bottom:0; width:100%; max-width:680px;
  border-radius:22px 22px 0 0; padding:10px 18px max(22px,env(safe-area-inset-bottom));
  max-height:92vh; overflow-y:auto; animation:slideup .28s cubic-bezier(.2,.8,.2,1)}
.sheet-grip{width:42px; height:5px; background:var(--line2); border-radius:99px; margin:6px auto 12px}
.sheet-head{display:flex; gap:14px; align-items:center; margin-bottom:6px}
.sheet-head .ph{width:60px; height:60px; border-radius:13px; object-fit:cover; background:var(--card2);
  display:grid; place-items:center; font-size:28px; flex:none}
.sheet-head h2{font-family:var(--serif); font-size:21px; margin:0}
.sheet-head .d{color:var(--faint); font-size:12.5px}

/* sliders */
.slider-row{margin:18px 0}
.slider-top{display:flex; justify-content:space-between; align-items:baseline; margin-bottom:7px}
.slider-top .lab{font-weight:600; font-size:15px}
.slider-top .lab .emo{margin-right:6px}
.slider-top .val{font-family:var(--serif); font-weight:700; font-size:22px; color:var(--gold);
  min-width:34px; text-align:right; transition:transform .12s}
.slider-top .val.bump{transform:scale(1.3)}
input[type=range]{-webkit-appearance:none; appearance:none; width:100%; height:10px; border-radius:99px;
  background:var(--card2); outline:none; margin:0}
input[type=range]::-webkit-slider-thumb{-webkit-appearance:none; width:30px; height:30px; border-radius:50%;
  background:radial-gradient(circle at 35% 30%,var(--gold),var(--amber-deep));
  border:3px solid #2a1c0c; box-shadow:0 3px 10px rgba(0,0,0,.5); cursor:pointer}
.range-track{position:relative}
.range-fill{position:absolute; left:0; top:0; height:10px; border-radius:99px; pointer-events:none;
  background:linear-gradient(90deg,var(--copper),var(--gold)); transition:width .08s}

.total-line{display:flex; justify-content:space-between; align-items:center; margin:20px 0 6px;
  padding:14px 16px; background:var(--card); border:1px solid var(--line2); border-radius:14px}
.total-line .l{color:var(--muted); font-size:13px}
.total-line .v{font-family:var(--serif); font-size:30px; font-weight:700; color:var(--gold)}
.total-line .v small{font-size:14px; color:var(--faint)}

.btn-row{display:flex; gap:10px; margin-top:14px}
.btn-row .btn-primary{flex:1}
.btn-ghost{background:var(--card); color:var(--muted); border:1px solid var(--line2); border-radius:13px;
  padding:15px 18px; font-size:15px; font-weight:600}

/* ───────── leaderboard ───────── */
.cat-tabs{display:flex; gap:7px; overflow-x:auto; padding:4px 2px 12px; scrollbar-width:none}
.cat-tabs::-webkit-scrollbar{display:none}
.cat-tab{flex:none; background:var(--card); border:1px solid var(--line); color:var(--muted);
  border-radius:999px; padding:8px 14px; font-size:13px; font-weight:600; white-space:nowrap}
.cat-tab.active{background:linear-gradient(180deg,var(--gold),var(--amber-deep)); color:#2a1c0c; border-color:transparent}

.podium{display:flex; align-items:flex-end; justify-content:center; gap:8px; margin:6px 0 20px; min-height:150px}
.pod{flex:1; max-width:120px; text-align:center}
.pod .medal{font-size:26px}
.pod .pod-photo{width:100%; aspect-ratio:1; max-width:84px; margin:4px auto 0; border-radius:12px; object-fit:cover;
  background:var(--card2); display:grid; place-items:center; font-size:26px; border:2px solid var(--line2)}
.pod.one .pod-photo{border-color:var(--gold); box-shadow:0 0 26px rgba(240,196,106,.4)}
.pod .pod-name{font-size:12px; font-weight:600; margin-top:6px; line-height:1.15;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.pod .pod-score{font-family:var(--serif); font-weight:700; color:var(--gold); font-size:17px}
.pod .bar{margin-top:7px; border-radius:9px 9px 0 0; background:linear-gradient(180deg,var(--card2),var(--card));
  border:1px solid var(--line2); border-bottom:0}
.pod.one .bar{height:74px; background:linear-gradient(180deg,rgba(240,196,106,.25),var(--card))}
.pod.two .bar{height:52px} .pod.three .bar{height:38px}

.row{display:flex; align-items:center; gap:12px; padding:11px 13px; background:var(--card);
  border:1px solid var(--line); border-radius:14px; margin-bottom:9px; position:relative; will-change:transform}
.row .rank{font-family:var(--serif); font-weight:700; font-size:18px; color:var(--faint); width:24px; text-align:center; flex:none}
.row .rphoto{width:46px; height:46px; border-radius:11px; object-fit:cover; background:var(--card2);
  display:grid; place-items:center; font-size:22px; flex:none}
.row .info{flex:1; min-width:0}
.row .rn{font-family:var(--serif); font-size:15.5px; margin:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis}
.row .rmeta{font-size:11.5px; color:var(--faint); margin-top:3px; display:flex; gap:8px; align-items:center}
.row .totbar{height:6px; border-radius:99px; background:var(--card2); margin-top:7px; overflow:hidden}
.row .totbar i{display:block; height:100%; border-radius:99px; background:linear-gradient(90deg,var(--copper),var(--gold)); transition:width .6s cubic-bezier(.2,.8,.2,1)}
.row .score{font-family:var(--serif); font-weight:700; font-size:21px; color:var(--gold); flex:none; text-align:right}
.row .score small{display:block; font-size:10px; color:var(--faint); font-weight:400}
.row.me{border-color:var(--amber); box-shadow:inset 0 0 0 1px rgba(224,168,78,.3)}
.move{position:absolute; left:18px; top:6px; font-size:10px; font-weight:700}
.move.up{color:var(--good)} .move.down{color:var(--bad)}
.flag{display:inline-flex; align-items:center; gap:4px; color:var(--amber); font-size:11px}
.least{text-align:center; color:var(--faint); font-size:12px; margin:14px 0 4px; font-style:italic}

/* ───────── host panel ───────── */
.host-lock{text-align:center; padding:34px 18px}
.host-lock .big{font-size:46px}
.card{background:var(--card); border:1px solid var(--line); border-radius:16px; padding:16px; margin-bottom:14px}
.card h3{font-family:var(--serif); margin:0 0 4px; font-size:17px}
.card .hint{color:var(--faint); font-size:12.5px; margin:0 0 12px}
.photo-input{display:flex; align-items:center; gap:12px; margin-bottom:10px}
.photo-prev{width:64px; height:64px; border-radius:13px; object-fit:cover; background:var(--card2);
  display:grid; place-items:center; font-size:26px; border:1px dashed var(--line2); flex:none}
.label-btn{background:var(--card2); border:1px solid var(--line2); color:var(--amber); border-radius:11px; padding:11px 14px; font-size:14px; font-weight:600}
.host-scotch{display:flex; align-items:center; gap:12px; padding:10px 0; border-top:1px solid var(--line)}
.host-scotch img,.host-scotch .ph{width:44px; height:44px; border-radius:10px; object-fit:cover; background:var(--card2); display:grid; place-items:center; flex:none}
.host-scotch .nm{flex:1; min-width:0; font-weight:600}
.host-scotch .nm small{display:block; color:var(--faint); font-weight:400; font-size:11.5px}
.icon-btn{background:transparent; border:0; font-size:18px; padding:6px}
.danger{color:var(--bad)}

/* ───────── nav ───────── */
.bottomnav{position:fixed; bottom:0; left:0; right:0; z-index:30; display:flex; max-width:680px; margin:0 auto;
  background:rgba(20,16,12,.94); backdrop-filter:blur(12px); border-top:1px solid var(--line);
  padding:8px 8px max(8px,env(safe-area-inset-bottom))}
.nav-btn{flex:1; background:transparent; border:0; color:var(--faint); font-size:11px; font-weight:600;
  display:flex; flex-direction:column; align-items:center; gap:3px; padding:6px; border-radius:12px; transition:color .15s}
.nav-btn span{font-size:21px}
.nav-btn.active{color:var(--amber)}

/* ───────── toast + confetti ───────── */
.toast{position:fixed; bottom:96px; left:50%; transform:translateX(-50%); z-index:60;
  background:var(--card2); border:1px solid var(--line2); color:var(--text); padding:12px 18px;
  border-radius:13px; box-shadow:0 10px 30px rgba(0,0,0,.5); font-weight:600; font-size:14px;
  animation:toastin .3s ease; max-width:90vw; text-align:center}
.confetti{position:fixed; inset:0; z-index:55; pointer-events:none}

@keyframes fade{from{opacity:0} to{opacity:1}}
@keyframes slideup{from{transform:translateY(100%)} to{transform:translateY(0)}}
@keyframes toastin{from{opacity:0; transform:translate(-50%,12px)} to{opacity:1; transform:translate(-50%,0)}}
@keyframes swirl{0%,100%{transform:rotate(-8deg)} 50%{transform:rotate(8deg)}}
@media (min-width:560px){ .grid{grid-template-columns:1fr 1fr 1fr} }

/* ───────── avatars ───────── */
.ava{display:inline-grid; place-items:center; border-radius:50%; font-weight:700; color:#f6ede0;
  border:1.5px solid rgba(255,255,255,.18); position:relative; flex:none; line-height:1; overflow:visible}
.ava-hat{position:absolute; top:-11px; left:50%; transform:translateX(-50%) rotate(-12deg); font-size:.6em;
  filter:drop-shadow(0 1px 1px rgba(0,0,0,.55)); pointer-events:none}
.whoami .ava{vertical-align:middle; margin-right:7px}
.avastack{display:inline-flex; align-items:center; vertical-align:middle}
.avastack .ava, .avastack .more{margin-left:-8px; box-shadow:0 0 0 2px var(--card)}
.avastack .ava:first-child, .avastack .more:first-child{margin-left:0}
.avastack .more{display:inline-grid; place-items:center; border-radius:50%; background:var(--card2);
  border:1.5px solid var(--line2); color:var(--muted); font-size:10px; font-weight:700}

/* ───────── scorecard sheet ───────── */
.sc-row{display:flex; gap:11px; align-items:flex-start; padding:13px 0; border-top:1px solid var(--line)}
.sc-row:first-of-type{border-top:0}
.sc-main{flex:1; min-width:0}
.sc-name{font-weight:600; font-size:15px}
.sc-chips{display:flex; gap:6px; flex-wrap:wrap; margin-top:7px}
.sc-chip{font-size:12px; color:var(--muted); background:var(--card); border:1px solid var(--line); border-radius:8px; padding:3px 8px}
.sc-note{color:var(--faint); font-size:12.5px; font-style:italic; margin-top:8px; line-height:1.45}
.sc-total{font-family:var(--serif); font-weight:700; color:var(--gold); font-size:19px; flex:none; text-align:right; min-width:42px}
.sc-total small{display:block; font-size:10px; color:var(--faint); font-weight:400}
.row{cursor:pointer}
.row .voters{margin-top:8px}
.tap-hint{font-size:11px; color:var(--faint); margin-left:8px}

/* ───────── login / guest management ───────── */
.linkbtn{background:none; border:0; color:var(--amber); font-weight:600; font-size:14px; margin-top:14px; text-decoration:underline; text-underline-offset:3px}
.login-list{margin-top:14px; text-align:left; max-height:46vh; overflow-y:auto}
.login-row{display:flex; align-items:center; gap:11px; width:100%; background:var(--card); border:1px solid var(--line2); border-radius:13px; padding:10px 12px; margin-bottom:8px; color:var(--text); text-align:left}
.login-row:active{transform:scale(.99)}
.login-row .ln{font-weight:600; font-size:15px}
.login-row .lu{color:var(--faint); font-size:12px}
.guest-row{display:flex; align-items:center; gap:11px; padding:10px 0; border-top:1px solid var(--line)}
.guest-row:first-of-type{border-top:0}
.guest-row .gn{flex:1; min-width:0; font-weight:600}
.guest-row .gn small{display:block; color:var(--faint); font-weight:400; font-size:11.5px}

/* ───────── board scope toggle + badges ───────── */
.scope-toggle{display:flex; gap:6px; background:var(--card); border:1px solid var(--line); border-radius:12px; padding:4px; margin:8px 0 12px}
.scope-btn{flex:1; background:transparent; border:0; color:var(--muted); font-weight:600; font-size:13.5px; padding:10px; border-radius:9px}
.scope-btn.active{background:linear-gradient(180deg,var(--gold),var(--amber-deep)); color:#2a1c0c}
.badge-chip{display:inline-block; font-size:11px; font-weight:700; color:#2a1c0c; background:linear-gradient(180deg,var(--gold),var(--amber-deep)); border-radius:999px; padding:2px 8px; margin-left:6px; vertical-align:middle}
