:root{--bg:#f3f8ff;--card:rgba(255,255,255,.93);--tx:#142238;--mu:#5b7191;--ac:#2f7de1;--nv:#1c2e52;--ln:rgba(31,74,138,.08);--sh:0 1px 2px rgba(31,74,138,.07),0 10px 28px -10px rgba(31,74,138,.18);--g1:#d4e6ff;--g2:#d3f0fb;--tint:rgba(47,125,225,.12)}
@media (prefers-color-scheme:dark){:root{--bg:#0c1322;--card:rgba(23,34,56,.93);--tx:#e9effb;--mu:#9db0cd;--ac:#6aa8ff;--nv:#3a6fd8;--ln:rgba(157,176,205,.14);--g1:#14264a;--g2:#0f3a40;--tint:rgba(106,168,255,.16);color-scheme:dark}}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;min-height:100%}
body{font:400 16px/1.4 'DM Sans',system-ui,sans-serif;color:var(--tx);background:radial-gradient(circle at 0 0,var(--g1),transparent 55%),radial-gradient(circle at 100% 0,var(--g2),transparent 50%),var(--bg);background-attachment:fixed;max-width:480px;margin:0 auto;padding:env(safe-area-inset-top) 16px calc(100px + env(safe-area-inset-bottom))}
h1,h2{font-family:Fraunces,Georgia,serif;font-weight:600;margin:0}h1{font-size:32px}h2{font-size:20px}
.mu{color:var(--mu);font-size:13px}[hidden]{display:none!important}
#gate{padding-top:30vh;text-align:center}#gate .btn{margin-top:16px}
header{display:flex;justify-content:space-between;align-items:center;padding:16px 0 12px}
.btn{border:0;border-radius:99px;background:var(--nv);color:#fff;font:700 15px 'DM Sans',sans-serif;padding:12px 20px;cursor:pointer}
.btn.ghost{background:var(--tint);color:var(--ac)}
.pill{border:0;border-radius:99px;background:var(--card);color:var(--mu);box-shadow:var(--sh);padding:8px 14px;font:500 13px 'DM Sans',sans-serif;cursor:pointer}
.card{background:var(--card);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);border:1px solid rgba(255,255,255,.5);border-radius:23px;padding:16px;margin-bottom:10px;box-shadow:var(--sh)}
summary{list-style:none;display:flex;gap:8px;font-weight:700;cursor:pointer}summary::-webkit-details-marker{display:none}summary span{margin-left:auto;color:var(--mu);font-weight:400;font-size:13px}
.row{display:flex;align-items:center;gap:12px;padding:11px 0;border-bottom:1px solid var(--ln)}.row:last-child{border-bottom:0}
.row b{display:block}.grow{flex:1;min-width:0}.done b{text-decoration:line-through;color:var(--mu)}
.chk{flex:none;width:28px;height:28px;border-radius:50%;border:2px solid var(--mu);background:none;color:#fff;display:grid;place-items:center;padding:0;cursor:pointer}
.chk.rec{border-style:dashed}.chk.on{background:var(--ac);border-color:var(--ac)}
.fab{position:fixed;right:18px;bottom:calc(22px + env(safe-area-inset-bottom))}
.fab .btn{box-shadow:0 10px 24px -8px rgba(28,46,82,.6)}
.sheetbg{position:fixed;inset:0;background:rgba(10,20,40,.45);display:flex;align-items:flex-end;justify-content:center;z-index:9}
.sheet{width:100%;max-width:480px;background:var(--bg);border-radius:26px 26px 0 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom))}
.sheet input,.sheet select{width:100%;border:1px solid var(--ln);border-radius:16px;background:var(--card);color:var(--tx);padding:12px 14px;font:400 16px 'DM Sans',sans-serif;margin:6px 0 10px}
.sheet label{font-size:13px;color:var(--mu)}.btns{display:flex;gap:10px}.btns .btn{flex:1}
