/* Hairshot. Built to be read on a 1080p stream and cut into 9:16 shorts:
   everything the player looks at lives in --col, a narrow centre column.
   Side furniture (the leaderboard, the language switch) stays outside it. */

:root{
  --bg:#0b0a08;
  --panel:#15130f;
  --panel-2:#1d1a15;
  --line:#2f2a22;
  --txt:#f4efe6;
  --dim:#a89e8c;
  --faint:#70685b;
  --accent:#fdc21e;          /* AurumK gold */
  --accent-hi:#ffd653;
  --ink:#170f04;
  --good:#35d07f;
  --bad:#ef4b5b;
  --col:min(520px,94vw);
  --frame:min(300px,78vw);   /* the photo frame: 300 px wide, like a 2x 600 px crop */
}

*{box-sizing:border-box;margin:0;padding:0}
body{
  min-height:100vh;color:var(--txt);
  background:var(--bg);
  background-image:radial-gradient(900px 620px at 50% -12%, rgba(253,194,30,.11), transparent 70%);
  font-family:"Segoe UI Variable Display","Segoe UI",Inter,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;
}
button{font:inherit;color:inherit}
a{color:var(--accent)}
.hidden{display:none !important}
::selection{background:rgba(253,194,30,.35)}
:focus-visible{outline:2px solid var(--accent);outline-offset:2px}

/* ---------------------------------------------------------------- column */
.col{width:var(--col);margin:0 auto;padding:22px 0 30px;
     display:flex;flex-direction:column;align-items:center;gap:12px}
.head{text-align:center}
.logo{font-size:clamp(34px,6vw,54px);font-weight:900;letter-spacing:.16em;margin-right:-.16em;
      background:linear-gradient(180deg,#fff 20%,#ffd76a);-webkit-background-clip:text;background-clip:text;color:transparent;
      line-height:1.05}
.tag{color:var(--dim);font-size:15px;margin-top:4px}

.cats,.diffs{display:flex;flex-wrap:wrap;justify-content:center;gap:6px}
.cats button{min-height:34px;padding:0 13px;border-radius:999px;cursor:pointer;
             font-size:13px;font-weight:800;letter-spacing:.02em;color:var(--dim);
             background:var(--panel);border:1px solid var(--line)}
.cats button:hover{color:var(--txt);border-color:#4a4234}
.cats button.on{background:var(--accent);border-color:var(--accent);color:var(--ink)}
.diffs button{--h:142;min-height:34px;padding:0 15px;border-radius:999px;cursor:pointer;
              font-size:13px;font-weight:800;color:hsl(var(--h) 85% 64%);
              background:hsl(var(--h) 45% 11%);border:1px solid hsl(var(--h) 45% 22%)}
.diffs button:hover{border-color:hsl(var(--h) 60% 40%)}
.diffs button:disabled{opacity:.28;cursor:default}
.diffs button.on{background:hsl(var(--h) 80% 52%);border-color:hsl(var(--h) 80% 52%);color:#0b0a08;
                 box-shadow:0 0 20px hsl(var(--h) 80% 50% / .45)}

.stats{display:flex;gap:28px;margin-top:2px}
.stat{display:flex;flex-direction:column;align-items:center;min-width:54px}
.stat b{font-size:24px;font-weight:800;line-height:1.1}
.stat span{font-size:10px;letter-spacing:.16em;color:var(--faint);font-weight:800}

/* the four stages and what each is worth; the current one lit */
.pills{display:flex;gap:6px;width:var(--frame)}
.pill{flex:1;text-align:center;padding:6px 0 5px;border-radius:10px;
      border:1px solid var(--line);background:var(--panel);color:var(--faint);
      font-size:11px;font-weight:800;letter-spacing:.06em}
.pill small{display:block;font-size:9px;letter-spacing:.1em;margin-top:1px;opacity:.85}
.pill.done{opacity:.45}
.pill.now{border-color:var(--accent);background:rgba(253,194,30,.12);color:var(--accent-hi);
          box-shadow:0 0 0 3px rgba(253,194,30,.12)}

/* the photo: one crop per stage, all the same width, each taller than the last,
   so the frame grows downward as the player skips */
.stage{display:flex;flex-direction:column;align-items:center;gap:9px;margin-top:2px}
.frame{position:relative;width:var(--frame);height:80px;overflow:hidden;border-radius:18px;
       background:#000;box-shadow:0 18px 50px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.07);
       transition:height .45s cubic-bezier(.2,.8,.2,1)}
.frame img{position:absolute;top:0;left:0;display:block;width:100%;height:auto;
           user-select:none;-webkit-user-drag:none}
.frame-wait{position:absolute;inset:0;display:grid;place-items:center;color:var(--faint);font-size:13px}
.stage-label{font-size:12px;font-weight:800;letter-spacing:.24em;color:var(--dim)}

.guessbox{position:relative;width:100%;margin-top:4px}
.guessbox input{width:100%;font:inherit;font-size:17px;padding:14px 16px;border-radius:12px;
                color:var(--txt);background:var(--panel);border:2px solid var(--line)}
.guessbox input:focus{outline:none;border-color:var(--accent)}
/* suggestions push the buttons down instead of covering them (Songshot's
   list covered GUESS and a mouse click landed on a name) */
.ac{list-style:none;margin-top:6px;border-radius:12px;overflow-y:auto;max-height:212px;
    background:var(--panel);border:1px solid var(--line)}
.ac li{display:flex;align-items:baseline;gap:8px;padding:10px 14px;cursor:pointer;font-size:15px}
.ac li + li{border-top:1px solid #221f19}
.ac li small{color:var(--faint);font-size:12px}
.ac li.on,.ac li:hover{background:rgba(253,194,30,.14)}

.actions{display:flex;gap:10px;width:100%}
.btn{flex:1;min-height:48px;padding:12px 18px;border-radius:12px;cursor:pointer;
     font-weight:800;letter-spacing:.05em;color:var(--txt);
     background:var(--panel-2);border:2px solid var(--line);
     transition:transform .08s ease,background .15s ease,border-color .15s ease}
.btn:hover{background:#26211a;border-color:#4a4234}
.btn:active{transform:translateY(1px)}
.btn:disabled{opacity:.45;cursor:default}
.btn .k{font-weight:500;color:var(--dim);font-size:12px;margin-left:4px}
.btn.primary{background:linear-gradient(180deg,var(--accent-hi),var(--accent));border-color:var(--accent);color:var(--ink);
             box-shadow:0 6px 18px rgba(253,194,30,.22)}
.btn.primary:hover{background:linear-gradient(180deg,#ffe07a,var(--accent-hi))}
.btn.big{flex:none;padding:15px 42px;font-size:17px}

.history{display:flex;flex-wrap:wrap;justify-content:center;gap:6px;min-height:6px}
.history span{font-size:13px;padding:5px 10px;border-radius:999px;background:var(--panel);border:1px solid var(--line);color:var(--dim)}
.history span.wrong{color:#ff9aa4;border-color:rgba(239,75,91,.35)}
.keys{font-size:12px;color:var(--faint);text-align:center}
.keys b{color:var(--dim)}
.foot{font-size:12.5px;color:var(--faint);text-align:center;line-height:1.7}
.foot a{font-weight:700}
.linkbtn{background:none;border:0;color:var(--dim);text-decoration:underline;cursor:pointer;font-size:12.5px;
         min-height:44px;padding:0 4px}

/* -------------------------------------------------------------- language */
.lang-sw{position:fixed;top:12px;right:14px;z-index:55;display:flex;gap:2px;padding:3px;border-radius:999px;
         background:rgba(0,0,0,.45);border:1px solid var(--line)}
.lang-sw button{min-width:44px;min-height:34px;border:0;border-radius:999px;background:none;cursor:pointer;
                font-size:12px;font-weight:800;letter-spacing:.08em;color:var(--dim)}
.lang-sw button.on{background:var(--accent);color:var(--ink)}

/* ----------------------------------------------------------- leaderboard */
.board{position:fixed;left:0;top:78px;width:248px;padding:14px 12px 12px;z-index:5;
       background:rgba(21,19,15,.92);border:1px solid var(--line);border-left:0;border-radius:0 14px 14px 0}
.board-h{font-size:10px;letter-spacing:.2em;font-weight:800;color:var(--faint)}
.board-sub{font-size:14px;font-weight:800;margin:4px 0 8px}
.board-rows{list-style:none;display:flex;flex-direction:column;gap:3px}
.board-rows li{display:flex;gap:8px;align-items:baseline;font-size:13px;padding:4px 6px;border-radius:6px}
.board-rows li i{font-style:normal;color:var(--faint);width:18px;text-align:right;font-size:12px}
.board-rows li span{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.board-rows li b{color:var(--accent)}
.board-rows li.me{background:rgba(253,194,30,.12)}
.board-empty{font-size:12px;color:var(--dim);padding:6px 2px}
.board-me{margin-top:10px;padding-top:9px;border-top:1px solid var(--line);font-size:12px;color:var(--dim);
          display:flex;align-items:center;gap:6px}
.board-me b{color:var(--txt)}
.pen{background:var(--panel-2);border:1px solid var(--line);border-radius:6px;cursor:pointer;
     min-width:28px;min-height:26px;font-size:12px}
@media (max-width:1180px){ .board{display:none} }

/* ---------------------------------------------------------------- reveal */
.reveal,.namer,.credits{position:fixed;inset:0;z-index:40;display:grid;place-items:center;padding:16px;overflow-y:auto;
        background:rgba(0,0,0,.72);animation:fade .25s ease}
@keyframes fade{from{opacity:0}}
.rev-card,.namer-card,.credits-card{width:min(440px,94vw);padding:22px 22px 18px;border-radius:20px;text-align:center;
          background:var(--panel);border:1px solid var(--line);box-shadow:0 30px 80px rgba(0,0,0,.6);
          display:flex;flex-direction:column;align-items:center;gap:8px}
.rev-verdict{font-size:14px;font-weight:900;letter-spacing:.24em}
.rev-verdict.good{color:var(--good)}
.rev-verdict.bad{color:var(--bad)}
.rev-img{width:min(300px,78vw,40vh);height:min(300px,78vw,40vh);border-radius:16px;object-fit:cover;background:#000;margin:4px 0}
.rev-name{font-size:26px;font-weight:900;line-height:1.15}
.rev-troll{font-size:15px;font-weight:900;color:#fbbf24;line-height:1.35}
.rev-desc{font-size:14px;color:var(--dim)}
.rev-about{font-size:13.5px;line-height:1.55;color:var(--dim);max-width:100%}
.rev-about a{color:var(--accent);white-space:nowrap}
.rev-points{font-size:15px;font-weight:800;color:var(--accent)}
.rev-run{font-size:14px;font-weight:800;padding:8px 14px;border-radius:10px;background:var(--panel-2);border:1px solid var(--line)}
.rev-photo{font-size:11.5px;color:var(--faint);line-height:1.5;max-width:100%}
.rev-photo a{color:var(--dim)}
.rev-card .btn.big{margin-top:6px}
.rev-credit{font-size:11.5px;color:var(--faint)}

.namer-h,.credits-h{font-size:18px;font-weight:900}
.namer-sub,.credits-lead{font-size:14px;color:var(--dim)}
.namer input{width:100%;font:inherit;font-size:17px;padding:12px 14px;border-radius:10px;margin-top:6px;
             color:var(--txt);background:var(--panel-2);border:2px solid var(--line);text-align:center}
.namer input:focus{outline:none;border-color:var(--accent)}
.namer-err{font-size:13px;color:#ff9aa4}
.namer-btns{display:flex;gap:10px;width:100%;margin-top:6px}
.credits-card{width:min(640px,94vw);max-height:86vh}
.credits-list{list-style:none;width:100%;overflow:auto;text-align:left;font-size:12.5px;color:var(--dim);
              display:flex;flex-direction:column;gap:5px;padding:4px 2px}
.credits-list b{color:var(--txt)}

.toast.err{border-color:rgba(239,75,91,.6);color:#ffc2c8}
.toast{position:fixed;left:50%;bottom:24px;transform:translateX(-50%);z-index:60;
       padding:10px 16px;border-radius:10px;font-size:14px;font-weight:700;
       background:var(--panel-2);border:1px solid var(--line);box-shadow:0 10px 30px rgba(0,0,0,.5)}

/* narrow: no room beside the column, so the switch sits above the logo
   and scrolls away (fixed at the bottom it sat on GUESS) */
@media (max-width:780px){ .lang-sw{position:static;width:max-content;margin:10px auto -8px} }
/* ten category chips: on a phone they take four rows, so they get smaller */
@media (max-width:480px){ .cats button{font-size:12.5px;padding:0 11px;letter-spacing:0} }
/* a phone on its side: the answer card fits the height without scrolling */
@media (max-height:520px){
  .rev-card{gap:4px;padding:12px 18px 10px}
  .rev-about{font-size:12.5px;line-height:1.4}
  .rev-name{font-size:20px}
  .rev-card .btn.big{padding:10px 32px;margin-top:2px}
}
@media (pointer:coarse){ .lang-sw button,.cats button,.diffs button{min-height:44px} .pen{min-width:44px;min-height:44px}
                         .ac li{min-height:46px;align-items:center} }
