:root{color-scheme:light;--primary: #4f46e5;--primary-dark: #4338ca;--danger: #dc2626;--danger-bg: #fef2f2;--warn: #d97706;--warn-bg: #fffbeb;--ok: #059669;--ok-bg: #ecfdf5;--bg: #f8fafc;--card: #ffffff;--text: #0f172a;--muted: #64748b;--label: #334155;--radius: 16px;--surface: #f8fafc;--border: #e8eef4;--input-bg: #ffffff;--track: #e2e8f0;--accent-soft: #e0e7ff;--accent-strong: #4338ca;--cal-today: #eef2ff;--green-num: #065f46}*{box-sizing:border-box}html,body{margin:0;padding:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:var(--bg);color:var(--text);min-height:100vh}.page{max-width:720px;margin:0 auto;padding:16px 14px 96px}.page.wide{max-width:1200px}.topbar{position:sticky;top:0;z-index:20;background:linear-gradient(135deg,#4f46e5,#7c3aed);color:#fff;padding:16px 16px 18px;border-radius:0 0 20px 20px;box-shadow:0 4px 16px #4f46e559}.topbar h1{margin:0;font-size:20px}.topbar p{margin:4px 0 0;opacity:.9;font-size:13px}.stats{display:flex;gap:8px;margin-top:12px}.stat{flex:1;background:#ffffff2e;border-radius:12px;padding:8px 10px;text-align:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}.stat b{display:block;font-size:20px}.stat span{font-size:11px;opacity:.95}.card{background:var(--card);border-radius:var(--radius);padding:14px;margin-top:12px;box-shadow:0 1px 2px #0f172a0d;border:1px solid var(--border)}.card.overdue{border-left:6px solid var(--danger);background:var(--danger-bg)}.card.due-today{border-left:6px solid var(--warn)}.card.upcoming{border-left:6px solid #cbd5e1}.card.one-time{border-left:6px solid var(--ok)}.card.mine{outline:2.5px solid var(--mine, var(--primary));outline-offset:-2.5px;background:color-mix(in srgb,var(--mine, var(--primary)) 10%,var(--card))}.badge.mine{background:color-mix(in srgb,var(--mine, var(--primary)) 22%,var(--card));color:var(--text);border:1.5px solid var(--mine, var(--primary));animation:none}.dot.mine{outline:2px solid var(--mine, var(--primary));outline-offset:-1px;font-weight:800}.log-item.mine{border-left:4px solid var(--mine, var(--primary));padding-left:8px;background:color-mix(in srgb,var(--mine, var(--primary)) 8%,transparent);border-radius:0 8px 8px 0}tr.mine td{background:color-mix(in srgb,var(--mine, var(--primary)) 9%,transparent)}tr.mine td:first-child{box-shadow:inset 4px 0 0 var(--mine, var(--primary))}.row{display:flex;align-items:center;gap:10px}.grow{flex:1;min-width:0}.icon{font-size:30px;width:44px;height:44px;display:flex;align-items:center;justify-content:center;background:var(--surface);border-radius:12px;flex-shrink:0}.title{font-weight:700;font-size:15px}.sub{color:var(--muted);font-size:12.5px;margin-top:2px}.badge{display:inline-block;font-size:11px;font-weight:700;padding:2px 8px;border-radius:999px;margin-top:6px}.badge.red{background:#fee2e2;color:#b91c1c;animation:pulse 1.6s infinite}.badge.orange{background:#fef3c7;color:#92400e}.badge.gray{background:var(--track);color:var(--text)}.badge.green{background:#d1fae5;color:#065f46}.badge.blue{background:#dbeafe;color:#1d4ed8}@keyframes pulse{0%,to{opacity:1}50%{opacity:.6}}.btn{border:none;border-radius:12px;padding:12px 16px;font-size:14px;font-weight:700;cursor:pointer;background:var(--primary);color:#fff;width:100%}.btn:active{transform:scale(.98)}.btn.secondary{background:var(--track);color:var(--text)}.btn.danger{background:var(--danger)}.btn.small{width:auto;padding:8px 12px;font-size:13px}.btn.ok{background:var(--ok)}.btn:disabled{opacity:.5}.chip{display:inline-flex;align-items:center;gap:4px;background:var(--accent-soft);color:var(--accent-strong);border-radius:999px;padding:4px 10px;font-size:12px;font-weight:700}.avatar{width:34px;height:34px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;color:#fff;font-weight:800;flex-shrink:0}.bottomnav{position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--card);border-top:1px solid var(--border);display:flex;padding:8px 4px calc(10px + env(safe-area-inset-bottom));box-shadow:0 -2px 12px #0000000f}.bottomnav a{flex:1;text-align:center;text-decoration:none;color:var(--muted);font-size:11px;font-weight:700;padding:6px 2px;border-radius:10px;position:relative}.bottomnav a.active{color:var(--primary);background:var(--accent-soft)}.bottomnav .emoji{font-size:22px;display:block}.nbadge{position:absolute;top:0;left:50%;transform:translate(4px);background:#dc2626;color:#fff;font-size:10px;font-weight:800;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:999px;padding:0 5px}.section-title{font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);margin:18px 2px 2px}input,select,textarea{width:100%;padding:11px 12px;border-radius:12px;border:1.5px solid #cbd5e1;font-size:15px;background:var(--input-bg);color:var(--text)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--primary)}label{font-size:13px;font-weight:700;color:var(--label);display:block;margin:10px 0 4px}.modal-backdrop{position:fixed;inset:0;background:#0f172a8c;z-index:50;display:flex;align-items:flex-end;justify-content:center}.modal{background:var(--card);border-radius:20px 20px 0 0;padding:18px 16px calc(20px + env(safe-area-inset-bottom));width:100%;max-width:560px;max-height:92vh;overflow-y:auto}@media (min-width: 640px){.modal-backdrop{align-items:center;padding:20px}.modal{border-radius:20px}}.form-row{display:flex;gap:8px}.form-row>*{flex:1}.empty{text-align:center;padding:28px 12px;color:var(--muted)}.empty .big{font-size:44px}.log-item{display:flex;gap:10px;padding:10px 0;border-bottom:1px solid var(--border);font-size:13px}.log-item:last-child{border-bottom:none}.cal-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:4px;margin-top:10px}.cal-dow{text-align:center;font-size:11px;font-weight:800;color:var(--muted);padding:4px 0}.cal-day{min-height:132px;background:var(--surface);border-radius:10px;padding:4px 5px;font-size:11px;border:1px solid var(--border);overflow:hidden}.cal-day.today{border:2px solid var(--primary);background:var(--cal-today)}.cal-day .num{font-weight:800;font-size:12px}.cal-day .dot{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:6px;padding:1px 3px;margin-top:2px;font-size:10px}.dot.red{background:#fee2e2;color:#b91c1c;font-weight:700}.dot.orange{background:#fef3c7;color:#92400e}.dot.gray{background:var(--track);color:var(--text)}.dot.green{background:#d1fae5;color:#065f46}.onboard{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#4f46e5,#7c3aed)}.onboard-card{background:var(--card);color:var(--text);border-radius:24px;padding:28px 22px;max-width:420px;width:100%;text-align:center}.onboard-card h1{margin:8px 0}.avatar-pick{display:flex;gap:8px;justify-content:center;margin:10px 0;flex-wrap:wrap}.avatar-pick button{width:40px;height:40px;border-radius:50%;border:3px solid transparent;cursor:pointer;font-weight:800;color:#fff}.avatar-pick button.sel{border-color:var(--text)}.hintlist{position:absolute;top:100%;left:0;right:0;z-index:60;background:var(--card);border:1px solid var(--border);border-radius:12px;margin-top:4px;max-height:220px;overflow-y:auto;padding:4px;box-shadow:0 8px 24px #0f172a2e}.hintitem{display:block;width:100%;text-align:left;background:transparent;border:none;cursor:pointer;padding:9px 10px;font-size:14px;color:var(--text);border-radius:8px}.hintitem:hover{background:var(--accent-soft)}.pickbtn{border:none;border-radius:10px;font-size:22px;width:44px;height:44px;cursor:pointer;background:var(--surface);color:var(--text)}.pickbtn.wd{font-size:13px;font-weight:800;min-width:44px;height:40px}.pickbtn.sel{background:var(--accent-soft)}.lvlbar{height:8px;background:var(--track);border-radius:999px;overflow:hidden;margin:6px 0 2px}.lvlfill{height:100%;background:linear-gradient(90deg,#4f46e5,#7c3aed);border-radius:999px;transition:width .3s}.lvlbadge{display:inline-block;font-size:12px;font-weight:800;background:#ede9fe;color:#5b21b6;border-radius:999px;padding:3px 10px;margin-top:4px}table.gtable{width:100%;border-collapse:collapse;font-size:13px;margin-top:8px;background:transparent}.gtable th{text-align:left;font-size:11px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);padding:6px 8px;border-bottom:2px solid var(--border)}.gtable td{padding:7px 8px;border-bottom:1px solid var(--border);vertical-align:top}.gtable tr:last-child td{border-bottom:none}.gtable .num{text-align:right;font-weight:800;color:var(--green-num);white-space:nowrap}.gtable .tsub{color:var(--muted);font-size:11px;white-space:nowrap}body.dark{color-scheme:dark;--bg: #0b1220;--card: #151f32;--text: #e8eef7;--muted: #8fa1b8;--label: #c3cede;--surface: #0f1a2e;--border: #26334d;--input-bg: #0f1a2e;--track: #26334d;--accent-soft: #2b3560;--accent-strong: #a5b4fc;--cal-today: #1e2a4a;--green-num: #6ee7b7;--danger-bg: #2b1d1d;--warn-bg: #2a2410;--ok-bg: #0f2a22}
