:root{
  --bg:#0f1419; --panel:#171e26; --panel2:#1d2630; --line:#2a3540;
  --ink:#eef3f7; --muted:#8aa0b2; --accent:#8ad6c4; --accent2:#6fb1ff;
  --hot:#ff5a52; --warm:#ffb24d; --mid:#ffe066; --cool:#7cc6ff; --cold:#5570ff;
  --radius:14px; --maxw:560px;
  font-synthesis:none; -webkit-text-size-adjust:100%;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:radial-gradient(1200px 600px at 50% -200px,#1b2530,#0f1419 60%);
  color:var(--ink);
  font-family:ui-rounded,"SF Pro Rounded",system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  line-height:1.5; min-height:100dvh; padding-bottom:env(safe-area-inset-bottom);
}
main{max-width:var(--maxw);margin:0 auto;padding:0 16px 40px}

/* Top bar */
.topbar{max-width:var(--maxw);margin:0 auto;display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px 8px}
.brand{text-align:center;line-height:1}
.brand h1{margin:0;font-size:30px;letter-spacing:.5px;
  background:linear-gradient(90deg,var(--accent),var(--accent2));-webkit-background-clip:text;background-clip:text;color:transparent}
.brand .by{font-size:11px;color:var(--muted);letter-spacing:.4px}
.icon-btn{width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:var(--panel);
  color:var(--ink);font-size:17px;cursor:pointer;transition:.15s}
.icon-btn:hover{background:var(--panel2)}

.tagline{text-align:center;color:var(--muted);margin:6px 0 10px;font-size:15px}
.tagline b{color:var(--accent)}
.puzzle-meta{text-align:center;color:var(--muted);font-size:13px;margin-bottom:8px;min-height:18px}

/* Mode toggle */
.modes{display:flex;gap:6px;justify-content:center;background:var(--panel);border:1px solid var(--line);
  border-radius:12px;padding:4px;width:max-content;margin:0 auto 12px}
.mode{border:none;background:transparent;color:var(--muted);padding:8px 16px;border-radius:9px;cursor:pointer;
  font-size:14px;font-weight:600;transition:.15s}
.mode.active{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#06231e}

/* Category hint + score line */
.cat-hint{text-align:center;font-size:15px;color:var(--ink);background:var(--panel);border:1px solid var(--line);
  border-radius:10px;padding:9px 12px;margin:0 auto 8px;max-width:max-content}
.cat-hint b{color:var(--accent)}
.score-line{text-align:center;font-size:14px;color:var(--muted);margin-bottom:12px;display:flex;gap:8px;justify-content:center}
.score-line b{color:var(--ink)}
.score-line .dot{opacity:.5}
.score-line .under{color:var(--accent);font-weight:700}

/* Result card */
.result{margin:14px 0}
.result-card{background:var(--panel);border:1px solid var(--accent);border-radius:16px;padding:18px;text-align:center}
.result-card h3{margin:0 0 4px;font-size:20px}
.result-sub{color:var(--muted);font-size:14px;margin:0 0 12px}
.result-sub b{color:var(--ink)}
.share-grid{font-size:22px;letter-spacing:2px;margin:0 0 14px;white-space:pre-wrap;word-break:break-all;line-height:1.3}
.result-card .primary{margin-top:0}

/* Input */
#guessForm{display:flex;gap:8px;position:sticky;top:8px;z-index:5}
#guessInput{flex:1;padding:14px 16px;font-size:17px;border-radius:var(--radius);
  border:1px solid var(--line);background:var(--panel);color:var(--ink);outline:none}
#guessInput:focus{border-color:var(--accent)}
#guessBtn{padding:0 20px;font-size:16px;font-weight:700;border:none;border-radius:var(--radius);cursor:pointer;
  background:linear-gradient(135deg,var(--accent),var(--accent2));color:#06231e}
#guessBtn:disabled,#guessInput:disabled{opacity:.5}

.message{min-height:22px;text-align:center;font-size:14px;margin:8px 0;color:var(--warm)}
.message.win{color:var(--accent);font-weight:700;font-size:16px}

/* Latest guess highlight */
.latest .row{animation:pop .25s ease}
@keyframes pop{from{transform:scale(.97);opacity:.4}to{transform:scale(1);opacity:1}}

/* Guess table */
.table-head,.row{display:grid;grid-template-columns:34px 1fr 64px 110px;align-items:center;gap:6px}
.table-head{color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.6px;
  padding:10px 10px 6px;border-bottom:1px solid var(--line)}
.guess-list{list-style:none;margin:0;padding:0}
.row{padding:10px;border-radius:10px;margin-top:6px;background:var(--panel);border:1px solid transparent}
.row.hl{border-color:var(--accent)}
.row .idx{color:var(--muted);font-size:13px}
.row .word{font-weight:600;overflow:hidden;text-overflow:ellipsis}
.row .score{font-variant-numeric:tabular-nums;font-weight:700;text-align:right;padding-right:6px}
.row .bar{height:18px;border-radius:6px;background:#0c1116;overflow:hidden;position:relative;border:1px solid var(--line)}
.row .bar > i{display:block;height:100%;border-radius:6px}
.row .bar > span{position:absolute;inset:0;font-size:11px;display:flex;align-items:center;justify-content:center;
  color:#0b0f14;font-weight:700}
.row .far{font-size:18px;text-align:center}

/* Controls */
.controls{display:flex;gap:10px;justify-content:center;margin:18px 0}
.ghost{background:var(--panel);border:1px solid var(--line);color:var(--ink);padding:10px 16px;border-radius:10px;
  cursor:pointer;font-size:14px}
.ghost:hover:not(:disabled){background:var(--panel2)}
.ghost:disabled{opacity:.45;cursor:default}

/* Archive */
.archive{margin-top:26px;border-top:1px solid var(--line);padding-top:18px}
.archive h2{font-size:16px;margin:0 0 4px}
.muted{color:var(--muted);font-size:13px;margin:0 0 10px}
.archive-nav{display:flex;flex-wrap:wrap;gap:8px}
.archive-nav a{padding:8px 12px;border-radius:9px;background:var(--panel);border:1px solid var(--line);
  color:var(--ink);text-decoration:none;font-size:13px}
.archive-nav a.today{border-color:var(--accent)}
.archive-nav a:hover{background:var(--panel2)}

/* Ads */
.ad-slot{max-width:var(--maxw);margin:14px auto;min-height:90px;display:flex;align-items:center;justify-content:center;
  background:repeating-linear-gradient(45deg,#141b22,#141b22 10px,#121820 10px,#121820 20px);
  border:1px dashed var(--line);border-radius:10px;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:1px}
.ad-inline{min-height:120px}

/* Loader */
.loader{position:fixed;inset:0;background:var(--bg);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;z-index:50}
.loader.hidden{display:none}
.loader p{color:var(--muted)}
.spinner{width:44px;height:44px;border-radius:50%;border:4px solid var(--line);border-top-color:var(--accent);animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* Modal */
.modal{position:fixed;inset:0;background:rgba(6,10,14,.72);display:flex;align-items:center;justify-content:center;z-index:40;padding:16px}
.modal.hidden{display:none}
.modal-card{background:var(--panel);border:1px solid var(--line);border-radius:18px;max-width:440px;width:100%;
  padding:24px;position:relative;max-height:88dvh;overflow:auto}
.modal-card h2{margin:0 0 14px}
.modal-card ol{padding-left:18px;margin:0 0 12px}
.modal-card li{margin:8px 0}
.modal-close{position:absolute;top:12px;right:14px;background:none;border:none;color:var(--muted);font-size:26px;cursor:pointer}
.primary{margin-top:14px;width:100%;padding:13px;border:none;border-radius:12px;font-size:16px;font-weight:700;cursor:pointer;
  background:linear-gradient(135deg,var(--accent),var(--accent2));color:#06231e}

.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:8px}
.stat{background:var(--panel2);border-radius:12px;padding:12px;text-align:center}
.stat b{display:block;font-size:24px}
.stat span{font-size:11px;color:var(--muted)}

.footer{max-width:var(--maxw);margin:0 auto;text-align:center;color:var(--muted);font-size:12px;padding:24px 16px 36px}
.footer a{color:var(--accent)}

@media (max-width:420px){
  .table-head,.row{grid-template-columns:28px 1fr 54px 92px}
  .brand h1{font-size:26px}
}
