:root{--bg:#f4f5f7;--surface:#ffffff;--surface-2:#f8f9fb;--border:#e3e6eb;--text:#16191f;--text-2:#5b6370;--text-3:#8a919c;--accent:#1f3a68;--accent-2:#2f5597;--accent-soft:#e8eef8;--danger:#c62828;--danger-soft:#fdecec;--warn:#b26a00;--warn-soft:#fff4e0;--ok:#1b7f4b;--ok-soft:#e6f5ec;--radius:12px;--shadow:0 1px 2px rgba(16,24,40,0.05),0 1px 3px rgba(16,24,40,0.06);--tabbar-h:64px;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg:#0f1216;--surface:#171b21;--surface-2:#1d222a;--border:#2a3039;--text:#e9ecf1;--text-2:#a5adba;--text-3:#77808d;--accent:#8fb3f0;--accent-2:#a9c4f5;--accent-soft:#1c2a40;--danger:#f28b82;--danger-soft:#3a1d1d;--warn:#f3b562;--warn-soft:#3a2c15;--ok:#7fd1a1;--ok-soft:#173225;--shadow:none;color-scheme:dark}}*{box-sizing:border-box}body,html{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Hiragino Sans,Hiragino Kaku Gothic ProN,Yu Gothic UI,Meiryo,system-ui,sans-serif;font-size:15px;line-height:1.55;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent}a{color:var(--accent-2);text-decoration:none}button,input,select,textarea{font:inherit;color:inherit}h1,h2,h3{margin:0;line-height:1.3}h1{font-size:20px}h2{font-size:16px}h3{font-size:14px;color:var(--text-2);font-weight:600}.shell{display:flex;min-height:100dvh}.sidebar{width:220px;flex-shrink:0;background:var(--surface);border-right:1px solid var(--border);padding:16px 10px;position:-webkit-sticky;position:sticky;top:0;height:100dvh;display:none;flex-direction:column;gap:2px}.sidebar .brand{font-weight:700;padding:6px 10px 16px;color:var(--accent)}.sidebar .brand small{display:block;color:var(--text-3);font-weight:400;font-size:11px}.navlink{display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:8px;color:var(--text-2);font-weight:500}.navlink:hover{background:var(--surface-2)}.navlink.active{background:var(--accent-soft);color:var(--accent)}.navlink .count{margin-left:auto}.main{flex:1 1;min-width:0;padding-bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 16px)}.topbar{position:-webkit-sticky;position:sticky;top:0;z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;display:flex;align-items:center;gap:10px}.topbar h1{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.content{padding:4px 16px 16px;max-width:1100px;margin:0 auto}.tabbar{position:fixed;bottom:0;left:0;right:0;z-index:30;background:var(--surface);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr);height:calc(var(--tabbar-h) + env(safe-area-inset-bottom));padding-bottom:env(safe-area-inset-bottom)}.tab{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;font-size:10.5px;color:var(--text-3);position:relative}.tab.active{color:var(--accent)}.tab svg{width:24px;height:24px}.tab.primary .bubble{width:46px;height:46px;border-radius:50%;background:var(--accent);color:#fff;display:grid;place-items:center;margin-top:-16px;box-shadow:0 4px 12px rgba(31,58,104,.35)}@media (prefers-color-scheme:dark){.tab.primary .bubble{color:#0f1216}}@media (min-width:900px){.sidebar{display:flex}.tabbar{display:none}.main{padding-bottom:32px}.topbar{padding-top:16px}.content{padding:4px 28px 28px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow)}.card-pad{padding:14px}.section{margin-top:18px}.section-head{display:flex;align-items:center;gap:8px;margin:0 2px 8px}.section-head h2{flex:1 1}.grid-2{display:grid;grid-gap:14px;gap:14px}@media (min-width:900px){.grid-2{grid-template-columns:1fr 1fr}}.stack{flex-direction:column;gap:10px}.row,.stack{display:flex}.row{align-items:center;gap:8px;flex-wrap:wrap}.spacer{flex:1 1}.muted{color:var(--text-2)}.small{font-size:12.5px}.tiny{font-size:11px}.empty,.tiny{color:var(--text-3)}.empty{padding:18px;text-align:center;font-size:13px}.divider{height:1px;background:var(--border);margin:10px 0}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;border:1px solid var(--border);background:var(--surface);color:var(--text);padding:8px 14px;border-radius:10px;font-weight:600;font-size:14px;cursor:pointer;min-height:40px;white-space:nowrap}.btn:hover{background:var(--surface-2)}.btn:disabled{opacity:.5;cursor:default}.btn.primary{background:var(--accent);border-color:var(--accent);color:#fff}@media (prefers-color-scheme:dark){.btn.primary{color:#0f1216}}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 40%,var(--border))}.btn.ghost{border-color:transparent;background:transparent}.btn.sm{min-height:32px;padding:4px 10px;font-size:13px;border-radius:8px}.btn.block{width:100%}.iconbtn{border:none;background:transparent;padding:6px;border-radius:8px;cursor:pointer;color:var(--text-2);display:inline-grid;place-items:center;position:relative}.badge,.iconbtn:hover{background:var(--surface-2)}.badge{display:inline-flex;align-items:center;gap:4px;padding:1px 8px;border-radius:999px;font-size:11.5px;font-weight:600;color:var(--text-2);border:1px solid var(--border);white-space:nowrap}.badge.danger{background:var(--danger-soft);color:var(--danger);border-color:transparent}.badge.warn{background:var(--warn-soft);color:var(--warn)}.badge.ok,.badge.warn{border-color:transparent}.badge.ok{background:var(--ok-soft);color:var(--ok)}.badge.accent{background:var(--accent-soft);color:var(--accent);border-color:transparent}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;flex-shrink:0}.count{min-width:20px;height:20px;border-radius:10px;background:var(--danger);color:#fff;font-size:11px;font-weight:700;display:inline-grid;place-items:center;padding:0 6px}.iconbtn .count{position:absolute;top:-2px;right:-4px;transform:scale(.85)}.field{display:flex;flex-direction:column;gap:4px}.field>span{font-size:12.5px;color:var(--text-2);font-weight:600}.input,select.input,textarea.input{width:100%;border:1px solid var(--border);background:var(--surface);border-radius:10px;padding:9px 11px;font-size:16px;min-height:42px}textarea.input{min-height:80px;resize:vertical}.input:focus{outline:2px solid color-mix(in srgb,var(--accent) 40%,transparent);outline-offset:0;border-color:var(--accent)}.form-grid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:1fr 1fr}.form-grid .full{grid-column:1/-1}@media (max-width:520px){.form-grid{grid-template-columns:1fr}}.check{display:flex;align-items:center;gap:8px;font-size:14px}.check input{width:18px;height:18px}.seg{display:inline-flex;background:var(--surface-2);border:1px solid var(--border);border-radius:10px;padding:2px;gap:2px;overflow-x:auto;max-width:100%}.seg button{border:none;background:transparent;padding:6px 12px;border-radius:8px;font-size:13px;font-weight:600;color:var(--text-2);cursor:pointer;white-space:nowrap}.seg button.on{background:var(--surface);color:var(--text);box-shadow:var(--shadow)}.chips{display:flex;gap:6px;overflow-x:auto;padding-bottom:2px;scrollbar-width:none}.chip{border:1px solid var(--border);background:var(--surface);padding:5px 11px;border-radius:999px;font-size:13px;cursor:pointer;white-space:nowrap;color:var(--text-2)}.chip.on{background:var(--accent);color:#fff;border-color:var(--accent)}@media (prefers-color-scheme:dark){.chip.on{color:#0f1216}}.list{display:flex;flex-direction:column}.list>*+*{border-top:1px solid var(--border)}.trow{display:flex;gap:10px;padding:11px 12px;align-items:flex-start}.trow:hover{background:var(--surface-2)}.trow .tmain{flex:1 1;min-width:0;color:var(--text)}.trow .ttitle{font-weight:600;word-break:break-word}.trow .tmeta{display:flex;flex-wrap:wrap;gap:4px 8px;font-size:12px;color:var(--text-2);margin-top:3px;align-items:center}.trow.done .ttitle{text-decoration:line-through;color:var(--text-3)}.cb{width:24px;height:24px;border-radius:50%;border:2px solid var(--text-3);background:transparent;flex-shrink:0;cursor:pointer;display:grid;place-items:center;margin-top:1px;padding:0}.cb.on,.cb:hover{border-color:var(--ok)}.cb.on{background:var(--ok);color:#fff}.cb.locked{border-style:dashed}.prio-1{color:var(--danger);font-weight:700}.prio-2{color:var(--warn);font-weight:700}.overdue{color:var(--danger);font-weight:600}.stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:10px;gap:10px}.stat{padding:12px}.stat .num{font-size:24px;font-weight:700;line-height:1.1}.stat .lbl{font-size:12px;color:var(--text-2)}.stat.alert .num{color:var(--danger)}.quick{display:flex;gap:8px;padding:8px;align-items:center}.quick input{border:none;background:transparent;flex:1 1;font-size:16px;padding:8px;outline:none;min-width:0}.banner{padding:10px 12px;border-radius:10px;font-size:13px;display:flex;gap:8px;align-items:flex-start}.banner.warn{background:var(--warn-soft);color:var(--warn)}.banner.info{background:var(--accent-soft);color:var(--accent)}.banner.danger{background:var(--danger-soft);color:var(--danger)}.overlay{position:fixed;inset:0;background:rgba(10,14,20,.45);z-index:100;display:flex;align-items:flex-end;justify-content:center}.sheet{background:var(--surface);width:100%;max-width:640px;max-height:92dvh;overflow:auto;border-radius:18px 18px 0 0;padding:16px 16px calc(16px + env(safe-area-inset-bottom))}@media (min-width:700px){.overlay{align-items:center}.sheet{border-radius:16px}}.sheet-head{display:flex;align-items:center;gap:8px;margin-bottom:14px}.sheet-head h2{flex:1 1}.sheet-foot{display:flex;gap:8px;justify-content:flex-end;margin-top:16px;position:-webkit-sticky;position:sticky;bottom:calc(-16px - env(safe-area-inset-bottom));padding:10px 0 0}.cal-grid,.sheet-foot{background:var(--surface)}.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));border-left:1px solid var(--border);border-top:1px solid var(--border);border-radius:var(--radius);overflow:hidden}.cal-head{text-align:center;padding:6px 0;color:var(--text-2);background:var(--surface-2)}.cal-cell,.cal-head{font-size:11px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.cal-cell{min-height:92px;padding:3px;cursor:pointer;overflow:hidden}.cal-cell.other{background:var(--surface-2);color:var(--text-3)}.cal-cell.today .dnum{background:var(--accent);color:#fff;border-radius:50%}.cal-cell.sel{outline:2px solid var(--accent);outline-offset:-2px}.dnum{display:inline-grid;place-items:center;width:20px;height:20px;font-weight:600;font-size:11px}.cal-item{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-radius:4px;padding:0 4px;margin-top:2px;color:#fff;font-size:10.5px;line-height:16px}.cal-item.done{opacity:.45;text-decoration:line-through}@media (max-width:600px){.cal-cell{min-height:58px}.cal-item{font-size:0;height:5px;padding:0;margin-top:2px}}.sun{color:var(--danger)}.sat{color:var(--accent-2)}.table{width:100%;border-collapse:collapse;font-size:13.5px}.table td,.table th{text-align:left;padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:top}.table th{font-size:12px;color:var(--text-2);font-weight:600;background:var(--surface-2)}.scroll-x{overflow-x:auto}.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 12px);background:#1d2433;color:#fff;padding:10px 16px;border-radius:10px;z-index:200;font-size:14px;max-width:calc(100% - 32px);box-shadow:0 6px 20px rgba(0,0,0,.25)}.toast.err{background:var(--danger)}@media (min-width:900px){.toast{bottom:24px}}.chat{display:flex;flex-direction:column;gap:10px}.msg{max-width:85%;padding:9px 13px;border-radius:16px;font-size:14.5px;white-space:pre-wrap;word-break:break-word}.msg.me{align-self:flex-end;background:var(--accent);color:#fff;border-bottom-right-radius:4px}@media (prefers-color-scheme:dark){.msg.me{color:#0f1216}}.msg.ai{align-self:flex-start;background:var(--surface);border:1px solid var(--border);border-bottom-left-radius:4px}.composer{position:-webkit-sticky;position:sticky;bottom:calc(var(--tabbar-h) + env(safe-area-inset-bottom) + 8px)}@media (min-width:900px){.composer{bottom:16px}}.login-wrap{min-height:100dvh;display:grid;place-items:center;padding:20px}.login-card{width:100%;max-width:380px;padding:24px}