:root{
  --bg:#0b0d10; --panel:#13161b; --panel2:#181c22; --line:#252a32;
  --dim:#6b7480; --txt:#e8eaed;
  --acid:#c9f31d; --acid-d:#8fae0f;
  --hot:#ff5c39; --cool:#3ba3ff; --ok:#26d07c;
  --r:12px;
}
*{box-sizing:border-box;margin:0;padding:0;-webkit-tap-highlight-color:transparent}
body{
  background:var(--bg);color:var(--txt);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Inter,system-ui,sans-serif;
  padding-bottom:90px;overflow-x:hidden;
}
.wrap{max-width:520px;margin:0 auto;padding:0 16px}
.mono,.lvl-n,.streak,.card-c,.xpmeta,.cnum,.ov-clock,.ov-phase,.ov-tag{
  font-family:ui-monospace,"SF Mono",Menlo,Consolas,monospace
}

/* login */
.login-wrap{min-height:100vh;display:grid;place-items:center;padding:20px}
.login-card{width:100%;max-width:340px;text-align:center}
.login-mark{
  font-family:ui-monospace,monospace;font-size:26px;font-weight:700;
  letter-spacing:.24em;color:var(--acid);margin-bottom:8px
}
.login-sub{font-size:13px;color:var(--dim);margin-bottom:26px}
.login-hint{font-size:11px;color:#3a4048;margin-top:14px}
.fld{
  width:100%;padding:14px;margin-bottom:10px;
  background:var(--panel);border:1px solid var(--line);
  border-radius:10px;color:var(--txt);font-size:16px;font-family:inherit
}
.fld:focus{outline:none;border-color:var(--acid)}
.alert{
  background:#2a1410;border:1px solid #4a2318;color:var(--hot);
  padding:11px;border-radius:9px;font-size:13px;margin-bottom:14px
}

/* hud */
.hud{
  position:sticky;top:0;z-index:50;
  background:rgba(11,13,16,.93);backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);padding:12px 0 10px;margin-bottom:18px
}
.hud-row{display:flex;align-items:center;justify-content:space-between;gap:12px}
.lvl{display:flex;align-items:baseline;gap:7px}
.lvl-n{font-size:26px;font-weight:700;color:var(--acid);line-height:1;letter-spacing:-.03em}
.lvl-l{font-size:9px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase}
.rank{font-size:11px;letter-spacing:.12em;text-transform:uppercase;font-weight:600}
.hud-right{display:flex;align-items:center;gap:9px}
.streak{font-size:13px;color:var(--hot);font-weight:700}
.shields{display:flex;gap:3px;font-size:13px}
.shield{opacity:.2}
.shield.on{opacity:1}
.xpbar{height:5px;background:var(--line);border-radius:3px;margin-top:9px;overflow:hidden}
.xpbar i{
  display:block;height:100%;width:0;border-radius:3px;
  background:linear-gradient(90deg,var(--acid-d),var(--acid));
  transition:width .5s cubic-bezier(.2,.9,.3,1)
}
.xpmeta{display:flex;justify-content:space-between;font-size:10px;color:var(--dim);margin-top:5px;letter-spacing:.05em}

/* cards */
.card{background:var(--panel);border:1px solid var(--line);border-radius:14px;padding:16px;margin-bottom:9px}
.card-h{display:flex;justify-content:space-between;align-items:center;margin-bottom:13px}
.card-t{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--dim)}
.card-c{font-size:12px;color:var(--acid);font-weight:700}
.ring{display:flex;gap:5px}
.seg{flex:1;height:6px;border-radius:3px;background:var(--line);transition:background .35s}
.seg.done{background:var(--acid)}
.sec{font-size:10px;letter-spacing:.2em;text-transform:uppercase;color:var(--dim);margin:22px 0 9px;padding-left:2px}

/* quests */
.q{
  display:flex;align-items:center;gap:13px;
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:14px;margin-bottom:9px;cursor:pointer;
  transition:border-color .2s,transform .1s,opacity .2s
}
.q:active{transform:scale(.985)}
.q:hover{border-color:#333a44}
.q.done{opacity:.42}
.q.done .q-n{text-decoration:line-through}
.q:focus-visible{outline:2px solid var(--acid);outline-offset:2px}
.q-box{
  width:26px;height:26px;flex:none;border:2px solid #39414c;border-radius:7px;
  display:grid;place-items:center;font-size:14px;font-weight:700;color:var(--bg);transition:all .2s
}
.q.done .q-box{background:var(--acid);border-color:var(--acid)}
.q-mid{flex:1;min-width:0}
.q-n{font-size:15px;font-weight:600;letter-spacing:-.01em}
.q-s{font-size:11.5px;color:var(--dim);margin-top:2px}
.q-xp{font-family:ui-monospace,monospace;font-size:11px;color:var(--acid-d);font-weight:700;flex:none}
.q.done .q-xp{color:var(--dim)}
.q-cnt{display:flex;align-items:center;gap:8px;flex:none}
.cbtn{
  width:30px;height:30px;border-radius:8px;border:1px solid var(--line);
  background:var(--panel2);color:var(--txt);font-size:17px;line-height:1;
  cursor:pointer;display:grid;place-items:center
}
.cbtn:active{background:var(--line)}
.cnum{font-size:13px;min-width:38px;text-align:center;font-weight:700}
.track-intake{border-left:2px solid var(--cool)}
.track-strength{border-left:2px solid var(--hot)}

/* mewing */
.mew{background:linear-gradient(135deg,#1a2410,var(--panel));border-color:#2f3d1a}
.mew-row{display:flex;justify-content:space-between;align-items:center;gap:10px}
.mew-n{font-size:14px;font-weight:600}
.mew-s{font-size:11.5px;color:var(--dim);margin-top:3px}
.mew-meta{font-family:ui-monospace,monospace;font-size:10px;color:var(--acid);margin-top:9px;letter-spacing:.06em;min-height:12px}
.tgl{position:relative;width:46px;height:26px;flex:none;background:var(--line);border-radius:13px;cursor:pointer;border:none;transition:background .25s}
.tgl.on{background:var(--acid)}
.tgl i{position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;background:#fff;transition:transform .25s}
.tgl.on i{transform:translateX(20px)}

/* weight */
.w-row{display:flex;gap:9px}
.w-in{margin:0;flex:1}
.w-meta{font-size:11px;color:var(--dim);margin-top:9px}
#wchart{width:100%;margin-top:10px}

/* heatmap */
.heat{display:grid;grid-template-columns:repeat(15,1fr);gap:4px}
.hc{aspect-ratio:1;border-radius:3px;background:var(--line)}
.hc.p{background:var(--acid-d);opacity:.5}
.hc.f{background:var(--acid)}

/* buttons */
.btn{
  padding:13px 16px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel2);color:var(--txt);font-size:14px;font-weight:600;
  font-family:inherit;cursor:pointer
}
.btn:active{transform:scale(.98)}
.btn.hero{background:var(--acid);border-color:var(--acid);color:#0b0d10;font-weight:700}
.btn.full{width:100%;padding:15px;font-size:15px}
.linkbtn{background:none;border:none;color:#3a4048;font-size:11px;cursor:pointer;text-decoration:underline;font-family:ui-monospace,monospace}

/* notes */
.note{
  background:var(--panel);border:1px solid var(--line);border-radius:var(--r);
  padding:14px;margin-bottom:9px;font-size:12.5px;color:var(--dim);line-height:1.65
}
.note b{color:var(--txt);font-weight:600}
.note.warn{border-color:#4a2318;background:#1a0f0b}
.note.warn b{color:var(--hot)}
.foot{text-align:center;font-size:10px;color:#3a4048;margin-top:26px;font-family:ui-monospace,monospace;display:grid;gap:8px;justify-items:center}

/* overlay */
.ov{position:fixed;inset:0;z-index:200;background:var(--bg);overflow-y:auto;padding:24px 16px 40px}
.ov[hidden]{display:none}
.ov-in{max-width:520px;margin:0 auto;text-align:center}
.ov-x{position:absolute;top:14px;right:16px;background:none;border:none;color:var(--dim);font-size:26px;cursor:pointer;padding:6px;line-height:1}
.ov-tag{font-size:10px;letter-spacing:.2em;color:var(--dim);text-transform:uppercase;margin-top:34px}
.ov-name{font-size:27px;font-weight:700;margin:9px 0 5px;letter-spacing:-.02em}
.ov-cue{font-size:14px;color:var(--dim);min-height:42px;max-width:38ch;margin:0 auto}
.ov-fig{margin:14px auto 4px;height:150px;display:grid;place-items:center}
.ov-clock{font-size:76px;font-weight:700;letter-spacing:-.05em;line-height:1;margin:6px 0 4px;font-variant-numeric:tabular-nums}
.ov-clock.hold{color:var(--acid)}
.ov-clock.rest,.ov-clock.switch{color:var(--dim)}
.ov-phase{font-size:11px;letter-spacing:.18em;text-transform:uppercase;color:var(--dim);height:14px}
.ov-bar{height:4px;background:var(--line);border-radius:2px;margin:18px 0;overflow:hidden}
.ov-bar i{display:block;height:100%;width:0;background:var(--acid);transition:width .3s linear}
.ov-note{font-size:11.5px;color:var(--hot);min-height:16px;margin-bottom:12px}
.ov-btns{display:flex;gap:9px}
.ov-btns .btn{flex:1;padding:15px}

/* toast */
.toast{
  position:fixed;left:50%;bottom:26px;transform:translate(-50%,90px);
  background:var(--acid);color:#0b0d10;padding:12px 22px;border-radius:11px;
  font-weight:700;font-size:14px;z-index:300;white-space:nowrap;
  transition:transform .35s cubic-bezier(.2,1.3,.4,1);
  box-shadow:0 6px 26px rgba(201,243,29,.22)
}
.toast.up{transform:translate(-50%,0)}

/* settings */
.rule{display:flex;align-items:center;gap:12px;background:var(--panel);border:1px solid var(--line);border-radius:var(--r);padding:14px;margin-bottom:9px}
.rule-mid{flex:1}
.rule-t{font-size:14px;font-weight:600}
.rule-b{font-size:11.5px;color:var(--dim);margin-top:2px}
.rule-time{background:var(--panel2);border:1px solid var(--line);border-radius:8px;color:var(--txt);padding:8px;font-family:ui-monospace,monospace;font-size:13px}

@media(prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
