:root{
  --bg:#f6f5f1;--fg:#1d1d1f;--card:#fff;--line:#deddd6;--muted:#6b6b66;
  --accent:#2f6fde;--accent-fg:#fff;--ok:#1a8a3a;--bad:#c0392b;--warn:#b86e00;--soft:#eef3fd;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#121212;--fg:#ececec;--card:#1d1d1d;--line:#353535;--muted:#9a9a95;
  --accent:#7aa7ff;--accent-fg:#0b1730;--ok:#4cc46d;--bad:#ff7a6b;--warn:#f0b24a;--soft:#1c2433}}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--fg);
  font:17px/1.6 system-ui,-apple-system,"Segoe UI",Arial,sans-serif;overflow-x:hidden}
header{position:sticky;top:0;z-index:5;display:flex;align-items:center;justify-content:space-between;
  gap:8px;padding:10px 16px;padding-top:max(10px,env(safe-area-inset-top));
  background:var(--card);border-bottom:1px solid var(--line)}
.brand{font-weight:700;color:var(--fg);text-decoration:none}
nav{display:flex;gap:12px;flex-wrap:wrap}nav a{color:var(--accent);text-decoration:none;font-size:.95em}
main{max-width:780px;margin:0 auto;padding:12px 16px 80px}
h1{font-size:1.45em;margin:.6em 0 .3em;line-height:1.3}h2{font-size:1.2em;margin:1em 0 .4em}
h3{font-size:1.05em;margin:.8em 0 .3em}
a{color:var(--accent)}
.card{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 16px;
  margin:12px 0;overflow-wrap:anywhere}
.muted{color:var(--muted);font-size:.9em}.center{text-align:center}
.row{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.spread{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap}
button,.btn{font:inherit;border:1px solid var(--accent);background:var(--accent);color:var(--accent-fg);
  border-radius:10px;padding:8px 14px;cursor:pointer;text-decoration:none;display:inline-block;line-height:1.3}
button.ghost,.btn.ghost{background:transparent;color:var(--accent)}
button.small{padding:4px 10px;font-size:.88em}
button.danger{border-color:var(--bad);background:transparent;color:var(--bad)}
button:disabled{opacity:.5;cursor:default}
label{display:block;margin:10px 0 4px;font-weight:600;font-size:.95em}
input,select,textarea{font:inherit;width:100%;padding:9px 10px;border:1px solid var(--line);border-radius:10px;
  background:var(--bg);color:var(--fg)}
textarea{min-height:90px;resize:vertical}
input[type=checkbox],input[type=radio]{width:auto;transform:scale(1.25);margin:0 4px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
.grid7{display:grid;grid-template-columns:repeat(7,1fr);gap:4px}
.grid7 input{padding:6px 2px;text-align:center}
.grid7 span{font-size:.8em;text-align:center;color:var(--muted)}
.pill{display:inline-block;border-radius:999px;padding:1px 9px;font-size:.8em;background:var(--soft);color:var(--accent)}
.pill.ok{color:var(--ok)}.pill.bad{color:var(--bad)}.pill.warn{color:var(--warn)}
.bar{height:8px;border-radius:4px;background:var(--line);overflow:hidden;margin-top:4px}
.bar>i{display:block;height:100%;background:var(--accent)}
.day{border-inline-start:4px solid var(--line);padding-inline-start:10px;margin:14px 0}
.day.today{border-color:var(--accent)}.day.past{opacity:.65}
.item{display:flex;gap:8px;align-items:flex-start;padding:8px 0;border-bottom:1px dashed var(--line)}
.item:last-child{border-bottom:0}.item .body{flex:1;min-width:0}
.item.done .t{text-decoration:line-through;color:var(--muted)}
.tabs{display:flex;gap:6px;margin:10px 0;overflow-x:auto}
.tabs button{background:transparent;color:var(--fg);border-color:var(--line)}
.tabs button.on{background:var(--accent);color:var(--accent-fg);border-color:var(--accent)}
.banner{background:var(--soft);border-radius:12px;padding:10px 14px;margin:10px 0}
.banner.err{color:var(--bad)}
.spin{display:inline-block;width:14px;height:14px;border:2px solid currentColor;border-top-color:transparent;
  border-radius:50%;animation:s 1s linear infinite;vertical-align:-2px;margin-inline-end:6px}
@keyframes s{to{transform:rotate(360deg)}}
.q{margin:16px 0}.q h3{display:flex;justify-content:space-between;gap:8px}
.opts label{font-weight:400;display:flex;gap:8px;align-items:flex-start;margin:6px 0}
.fb{border-radius:10px;padding:8px 12px;margin-top:8px;background:var(--soft)}
.fb.ok{border-inline-start:4px solid var(--ok)}.fb.bad{border-inline-start:4px solid var(--bad)}
.thumbs{display:flex;gap:6px;flex-wrap:wrap;margin-top:6px}.thumbs img{width:70px;height:70px;object-fit:cover;border-radius:8px}
.katex{direction:ltr;unicode-bidi:isolate}
.katex-display{overflow-x:auto;overflow-y:hidden;padding:2px 0}
pre{direction:ltr;text-align:left;background:var(--bg);border:1px solid var(--line);padding:10px;border-radius:8px;
  overflow-x:auto;font-size:.9em}
.en{direction:ltr;text-align:left;unicode-bidi:isolate}
.fig{display:block;margin:10px auto;max-width:100%;height:auto}
.fig .seg{stroke:var(--fg);stroke-width:1.6}.fig .dash{stroke-dasharray:5 4}
.fig .ra{fill:none;stroke:var(--fg);stroke-width:1}.fig .pt{fill:var(--fg)}
.fig .axis{stroke:var(--muted);stroke-width:1}
.fig .lbl{fill:var(--fg);font:15px system-ui;text-anchor:middle}
table{border-collapse:collapse;width:100%}td,th{border-bottom:1px solid var(--line);padding:6px;text-align:right;vertical-align:top}
#toast{position:fixed;bottom:calc(16px + env(safe-area-inset-bottom));inset-inline:16px;max-width:520px;margin:auto;
  background:var(--fg);color:var(--bg);border-radius:12px;padding:10px 14px;opacity:0;pointer-events:none;
  transition:opacity .2s;text-align:center;z-index:20}
#toast.on{opacity:.95}
details summary{cursor:pointer;color:var(--accent);margin-top:6px}
.score{font-size:2em;font-weight:700}
