:root { --bg:#111418; --fg:#eef1f4; --muted:#9aa4ae; --card:#1b2026; --line:#2c333b; --accent:#ff6a2b; --ok:#2fbf71; --bad:#e5484d; --r:14px; }
@media (prefers-color-scheme: light) { :root { --bg:#f6f7f9; --fg:#14181c; --muted:#5d6670; --card:#fff; --line:#dde1e6; } }
* { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin:0; background:var(--bg); color:var(--fg); font:17px/1.45 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif; }
main { max-width:560px; margin:0 auto; padding:12px 16px 40px; }
a { color:inherit; }
h1 { font-size:1.6rem; margin:.3em 0 .5em; } h2 { font-size:1.15rem; margin:1.4em 0 .5em; }
.top { 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(--bg); border-bottom:1px solid var(--line); }
.brand { font-weight:800; text-decoration:none; color:var(--accent); }
.top nav { display:flex; gap:4px; } .top nav a { text-decoration:none; padding:8px 10px; border-radius:10px; color:var(--muted); }
.top nav a.on { color:var(--fg); background:var(--card); }
footer { text-align:center; padding:20px; font-size:.85rem; color:var(--muted); }
.card { background:var(--card); border:1px solid var(--line); border-radius:var(--r); padding:14px; margin:10px 0; }
a.card.block { display:block; text-decoration:none; }
.muted { color:var(--muted); } .small { font-size:.88rem; } .center { text-align:center; }
.row { display:flex; gap:8px; align-items:center; } .row.wrap { flex-wrap:wrap; margin-top:16px; } .between { justify-content:space-between; }
.stack { display:flex; flex-direction:column; gap:12px; margin:12px 0; }
.grid2 { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:10px; } .span2 { grid-column:1 / -1; }
label { display:flex; flex-direction:column; gap:4px; font-size:.9rem; color:var(--muted); }
label.check { flex-direction:row; align-items:flex-start; gap:10px; color:var(--fg); font-size:1rem; }
input, select { font:inherit; color:var(--fg); background:var(--bg); border:1px solid var(--line); border-radius:10px; padding:12px; min-height:48px; width:100%; }
input[type=checkbox] { width:24px; min-height:24px; height:24px; flex:none; accent-color:var(--accent); }
input.code { font-size:1.6rem; letter-spacing:.3em; text-align:center; }
button, .button { font:inherit; font-weight:600; color:var(--fg); background:var(--card); border:1px solid var(--line); border-radius:12px; padding:12px 16px; min-height:48px; cursor:pointer; text-decoration:none; display:inline-block; text-align:center; }
button.big, .button.big { display:block; width:100%; min-height:64px; font-size:1.15rem; margin:12px 0; }
.primary { background:var(--accent) !important; border-color:var(--accent) !important; color:#fff !important; }
.danger { color:var(--bad); border-color:var(--bad); }
button.link { background:none; border:none; color:var(--muted); text-decoration:underline; padding:8px; min-height:auto; font-weight:400; }
.error { background:color-mix(in srgb, var(--bad) 18%, transparent); border:1px solid var(--bad); padding:10px 12px; border-radius:10px; }
.ok { border-color:var(--ok); }
.pill { background:var(--accent); color:#fff; border-radius:999px; padding:2px 10px; font-size:.85rem; font-weight:700; }
.days { display:flex; gap:6px; margin-top:10px; flex-wrap:wrap; border:0; padding:0; }
.day { flex:1; text-align:center; padding:6px 0; border-radius:8px; color:var(--muted); border:1px solid transparent; min-width:36px; }
.day.planned { border-color:var(--line); color:var(--fg); } .day.done { background:var(--ok); color:#fff; border-color:var(--ok); }
.daybox { flex-direction:row; align-items:center; gap:4px; color:var(--fg); }
.next small { font-weight:400; opacity:.85; font-size:.85rem; }
ol.items { list-style:none; padding:0; margin:0; }
ol.items li a, ol.items li > span { display:grid; grid-template-columns:1fr auto; grid-template-areas:"name state" "meta state"; text-decoration:none; padding:12px; border-bottom:1px solid var(--line); }
ol.items .name { grid-area:name; font-weight:600; } ol.items .meta { grid-area:meta; color:var(--muted); font-size:.9rem; } ol.items .meta small { display:block; }
ol.items .state { grid-area:state; align-self:center; font-weight:700; color:var(--ok); }
ol.items li.complete .name { opacity:.6; }
ul.plain { list-style:none; padding:0; } ul.plain li a { display:block; padding:10px 0; }
.big-num { font-size:1.6rem; font-weight:800; }
.hint { border-color:var(--accent); }
.seat summary { color:var(--muted); padding:6px 0; cursor:pointer; }
.logged { padding:8px 0; border-bottom:1px solid var(--line); }
.setform { display:flex; flex-direction:column; gap:10px; margin-top:12px; }
.stepper { display:grid; grid-template-columns:auto 64px 1fr 64px; gap:8px; align-items:center; }
.stepper .lbl { width:6.5em; color:var(--muted); font-size:.9rem; }
.stepper button { min-height:60px; font-size:1.6rem; padding:0; }
.stepper input { text-align:center; font-size:1.6rem; font-weight:700; min-height:60px; }
.rest { margin:12px 0; padding:12px; text-align:center; border-radius:12px; background:color-mix(in srgb, var(--accent) 20%, transparent); font-size:1.2rem; }
.rest .clock { font-weight:800; font-size:1.6rem; } .rest.over { background:color-mix(in srgb, var(--ok) 25%, transparent); }
.chip { display:inline-block; background:var(--bg); border:1px solid var(--line); border-radius:8px; padding:3px 8px; margin:4px 4px 0 0; font-variant-numeric:tabular-nums; }
.chart { width:100%; height:auto; color:var(--accent); }
.tbl { width:100%; border-collapse:collapse; font-size:.9rem; } .tbl td, .tbl th { border-bottom:1px solid var(--line); padding:8px 4px; text-align:left; vertical-align:top; }
code.wrap { word-break:break-all; font-size:.8rem; }
details summary { cursor:pointer; }
.prose p { margin:.6em 0; }
@media (max-width: 440px) {
  .top { padding-left:10px; padding-right:6px; gap:4px; }
  .brand { font-size:.95rem; }
  .top nav { gap:0; } .top nav a { padding:8px 6px; font-size:.92rem; }
}
