@import "https://fonts.googleapis.com/css2?family=Sora:wght@300;400;500;600;700;800&family=Hanken+Grotesk:wght@400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600&family=Oswald:wght@500;600;700&family=Fredoka:wght@400;500;600;700&family=Quicksand:wght@500;600;700&display=swap";:root{--font-display:"Sora", system-ui, sans-serif;--font-body:"Hanken Grotesk", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--accent:oklch(58% .16 275);--accent-soft:oklch(58% .16 275/.12);--accent-ink:oklch(42% .16 275);--accent-2:oklch(66% .13 300);--c-map:oklch(58% .16 275);--c-day:oklch(64% .12 205);--c-progress:oklch(60% .16 305);--c-budget:oklch(72% .13 65);--c-rose:oklch(64% .16 18);--good:oklch(62% .13 160);--warn:oklch(72% .14 70);--bad:oklch(62% .18 22);--bg-base:oklch(97.5% .01 280);--ink:oklch(27% .025 280);--ink-soft:oklch(49% .022 280);--ink-faint:oklch(62% .018 280);--line:oklch(50% .03 280/.13);--line-strong:oklch(50% .03 280/.22);--glass:oklch(100% 0 0/.62);--glass-2:oklch(100% 0 0/.46);--glass-solid:oklch(100% 0 0/.82);--glass-brd:oklch(100% 0 0/.75);--glass-hi:oklch(100% 0 0/.9);--menu-bg:oklch(99% .005 280);--shadow-sm:0 1px 2px oklch(30% .05 280/.05), 0 2px 6px oklch(30% .05 280/.05);--shadow-md:0 1px 2px oklch(30% .05 280/.05), 0 12px 30px oklch(30% .05 280/.09);--shadow-lg:0 2px 6px oklch(30% .05 280/.06), 0 24px 60px oklch(30% .05 280/.14);--r-sm:12px;--r-md:16px;--r-lg:22px;--r-xl:28px;--rail-w:248px;--mesh-a:color-mix(in oklch, var(--accent) 28%, transparent);--mesh-b:oklch(82% .1 205/.5);--mesh-c:oklch(84% .1 305/.45);--mesh-d:oklch(86% .08 150/.4)}[data-theme=dark]{--bg-base:oklch(16.5% .022 285);--ink:oklch(95% .012 285);--ink-soft:oklch(73% .02 285);--ink-faint:oklch(57% .02 285);--line:oklch(85% .05 285/.1);--line-strong:oklch(85% .05 285/.2);--glass:oklch(72% .06 285/.07);--glass-2:oklch(72% .06 285/.045);--glass-solid:oklch(26% .035 285/.72);--glass-brd:oklch(85% .07 288/.12);--glass-hi:oklch(88% .1 292/.16);--menu-bg:oklch(22% .03 285);--shadow-sm:0 1px 2px oklch(0% 0 0/.35);--shadow-md:0 1px 2px oklch(0% 0 0/.35), 0 16px 38px oklch(5% .04 285/.5);--shadow-lg:0 2px 8px oklch(0% 0 0/.45), 0 32px 70px oklch(4% .03 285/.65);--mesh-a:color-mix(in oklch, var(--accent) 34%, transparent);--mesh-b:oklch(42% .1 250/.22);--mesh-c:color-mix(in oklch, var(--accent-2) 22%, transparent);--mesh-d:oklch(40% .07 285/.06)}[data-theme=dark] body{background:radial-gradient(120% 90% at 50% -10%, oklch(21% .03 285), transparent 60%), var(--bg-base)}[data-theme=spectrum]{--accent:oklch(56% .18 277);--accent-soft:oklch(56% .18 277/.13);--accent-ink:oklch(44% .17 277);--accent-2:oklch(62% .2 305);--c-map:oklch(62% .14 195);--c-day:oklch(60% .16 250);--c-progress:oklch(60% .2 305);--menu-bg:oklch(99% .006 280);--mesh-a:oklch(78% .13 190/.55);--mesh-b:oklch(70% .16 275/.5);--mesh-c:oklch(72% .17 320/.5);--mesh-d:oklch(82% .12 160/.4)}[data-theme=arena]{--font-display:"Oswald", system-ui, sans-serif;--bg-base:#0b0b0d;--ink:#f2f3f5;--ink-soft:#b7bac2;--ink-faint:#7e828c;--line:#ffffff14;--line-strong:#ffffff2e;--glass:#ffffff0b;--glass-2:#ffffff08;--glass-solid:#18181b;--glass-brd:#ffffff1a;--glass-hi:#ffffff24;--menu-bg:#1c1c20;--shadow-sm:0 1px 2px #00000080;--shadow-md:0 1px 2px #00000080, 0 14px 34px #0000008c;--shadow-lg:0 2px 8px #0009, 0 28px 64px #000000b3;--accent:#e5484d;--accent-soft:#e5484d2e;--accent-ink:#ff6b6f;--accent-2:#ff6a3d;--good:oklch(70% .15 150);--warn:oklch(78% .15 75);--bad:#e5484d;--r-sm:6px;--r-md:8px;--r-lg:10px;--r-xl:12px;--mesh-a:#e5484d29;--mesh-b:#ff6a3d0f;--mesh-c:#e5484d0d;--mesh-d:#ffffff05}[data-theme=arena] body{background:#08080a}[data-theme=arena] .mesh:after{content:"";pointer-events:none;opacity:.5;background:repeating-linear-gradient(115deg,#0000 0 38px,#e5484d0d 38px 40px);position:absolute;inset:0;-webkit-mask-image:linear-gradient(160deg,#000,#0000 70%);mask-image:linear-gradient(160deg,#000,#0000 70%)}[data-theme=arena] .brand .name,[data-theme=arena] .nav-item,[data-theme=arena] .topbar .tt{text-transform:uppercase;letter-spacing:.06em}[data-theme=arena] .btn{text-transform:uppercase;letter-spacing:.05em;border-radius:6px;font-weight:700}[data-theme=arena] .card:before{display:none}[data-theme=arena] .nav-item.active{box-shadow:inset 3px 0 0 var(--accent), var(--shadow-sm);border-radius:6px}[data-theme=arena] .rail{background:#101013}[data-theme=bloom]{--font-display:"Fredoka", system-ui, sans-serif;--font-body:"Quicksand", system-ui, sans-serif;--bg-base:#fff3f6;--ink:#5a2e45;--ink-soft:#8a5e72;--ink-faint:#b58aa0;--line:#d6437e24;--line-strong:#d6437e42;--glass:#fff9;--glass-2:#ffffff70;--glass-solid:#ffffffe0;--glass-brd:#ffffffd9;--glass-hi:#fffffff5;--menu-bg:#fff;--shadow-sm:0 2px 6px #d6437e14;--shadow-md:0 2px 6px #d6437e14, 0 14px 32px #d6437e24;--shadow-lg:0 4px 12px #d6437e1f, 0 28px 60px #d6437e33;--accent:#ff65a3;--accent-soft:#ff65a329;--accent-ink:#d6437e;--accent-2:#ff8f6b;--c-map:oklch(66% .18 350);--c-day:oklch(70% .15 30);--c-progress:oklch(66% .18 320);--r-sm:16px;--r-md:20px;--r-lg:26px;--r-xl:32px;--mesh-a:#ff7eb380;--mesh-b:#ff8f6b73;--mesh-c:#c9b6ff73;--mesh-d:#ffd16666}[data-theme=bloom] .btn,[data-theme=bloom] .nav-item,[data-theme=bloom] .chip,[data-theme=bloom] .tag{border-radius:999px}[data-theme=bloom] .btn-accent{background:linear-gradient(135deg,#ff8fb3,#ff65a3)}[data-theme=bloom] .brand .name{letter-spacing:0}*{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{font-family:var(--font-body);color:var(--ink);background:var(--bg-base);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;overflow:hidden}#root{height:100%}button{cursor:pointer;font-family:inherit}::selection{background:var(--accent-soft)}.mono{font-family:var(--font-mono);font-feature-settings:"tnum"}.mesh{z-index:0;pointer-events:none;background:radial-gradient(46% 42% at 6% -4%, var(--mesh-a), transparent 70%), radial-gradient(42% 48% at 102% 6%, var(--mesh-b), transparent 70%), radial-gradient(48% 52% at 96% 102%, var(--mesh-c), transparent 72%), radial-gradient(46% 50% at -2% 104%, var(--mesh-d), transparent 72%);transition:background .5s;position:fixed;inset:0}.app{z-index:1;grid-template-columns:var(--rail-w) 1fr;height:100%;display:grid;position:relative}.rail{border-right:1px solid var(--line);background:var(--glass-2);-webkit-backdrop-filter:blur(20px)saturate(1.3);flex-direction:column;gap:4px;height:100%;min-height:0;padding:22px 16px;display:flex}.brand{align-items:center;gap:11px;padding:6px 10px 20px;display:flex}.brand .mark{background:linear-gradient(150deg, var(--accent), var(--accent-2));width:34px;height:34px;box-shadow:0 6px 16px var(--accent-soft);border-radius:10px;flex:none;place-items:center;display:grid}.brand .mark span{background:var(--glass-hi);border-radius:4px;width:13px;height:13px;box-shadow:0 0 0 3px oklch(100% 0 0/.25)}.brand .name{font:700 17px/1 var(--font-display);letter-spacing:-.02em}.brand .name small{font:500 11px/1.3 var(--font-body);color:var(--ink-faint);letter-spacing:.02em;margin-top:3px;display:block}.nav-label{font:600 10px/1 var(--font-body);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-faint);padding:14px 12px 8px}.nav-item{border-radius:var(--r-sm);text-align:left;width:100%;font:600 14px/1 var(--font-body);color:var(--ink-soft);white-space:nowrap;background:0 0;border:none;align-items:center;gap:12px;padding:10px 12px;transition:background .18s,color .18s;display:flex}.nav-item:hover{background:var(--glass);color:var(--ink)}.nav-item .ico{width:20px;height:20px;color:var(--ink-faint);flex:none;transition:color .18s}.nav-item:hover .ico{color:var(--ink-soft)}.nav-item.active{background:var(--glass-solid);color:var(--ink);box-shadow:var(--shadow-sm), inset 0 0 0 1px var(--glass-brd)}.nav-item.active .ico{color:var(--accent)}.nav-item .badge{font:700 11px/1 var(--font-mono);color:var(--accent-ink);background:var(--accent-soft);border-radius:20px;margin-left:auto;padding:4px 7px}.rail-foot{flex-direction:column;gap:10px;margin-top:auto;padding-top:14px;display:flex}.seg{border-radius:var(--r-sm);background:var(--glass);border:1px solid var(--line);gap:4px;padding:4px;display:flex}.seg button{color:var(--ink-soft);font:600 12px/1 var(--font-body);background:0 0;border:none;border-radius:9px;flex:1;justify-content:center;align-items:center;gap:7px;padding:8px;transition:all .16s;display:flex}.seg button.on{background:var(--glass-solid);color:var(--ink);box-shadow:var(--shadow-sm)}.seg button .ico{width:15px;height:15px}.accent-row{align-items:center;gap:8px;padding:6px 8px;display:flex}.accent-row .lbl{font:600 11px/1 var(--font-body);color:var(--ink-faint);margin-right:auto}.sw{cursor:pointer;border:2px solid #0000;border-radius:50%;width:20px;height:20px;padding:0;transition:transform .14s}.sw:hover{transform:scale(1.15)}.sw.on{border-color:var(--ink);box-shadow:0 0 0 2px var(--bg-base) inset}.theme-grid{grid-template-columns:repeat(3,1fr);gap:10px;margin-top:8px;display:grid}.theme-tile{text-align:left;border-radius:var(--r-md);border:1px solid var(--line);background:var(--glass);cursor:pointer;padding:12px;transition:border-color .15s,box-shadow .15s,transform .12s}.theme-tile:hover{border-color:var(--line-strong);transform:translateY(-1px)}.theme-tile.on{box-shadow:0 0 0 2px var(--accent), var(--shadow-sm);border-color:#0000}.theme-sw{gap:4px;margin-bottom:9px;display:flex}.theme-sw span{border:1px solid var(--line);border-radius:6px;width:18px;height:18px}.theme-name{font:700 13px/1 var(--font-display);letter-spacing:-.01em}.theme-sub{font:500 11px/1.2 var(--font-body);color:var(--ink-faint);margin-top:4px}@media (width<=620px){.theme-grid{grid-template-columns:repeat(2,1fr)}}.main{flex-direction:column;min-width:0;height:100%;min-height:0;display:flex;overflow:hidden}.topbar{flex:none;align-items:center;gap:18px;padding:22px 32px 14px;display:flex}.topbar .tt{font:700 24px/1.1 var(--font-display);letter-spacing:-.03em}.topbar .ts{font:500 13px/1.3 var(--font-body);color:var(--ink-faint);margin-top:5px}.topbar .spacer{flex:1}.topbar-actions{flex-wrap:nowrap;align-items:center;gap:8px;display:flex}.scroll{scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;flex:1;min-height:0;padding:8px 32px 36px;overflow:hidden auto}.scroll::-webkit-scrollbar{width:9px}.scroll::-webkit-scrollbar-thumb{background:var(--line-strong);background-clip:content-box;border:3px solid #0000;border-radius:20px}.btn{white-space:nowrap;border:1px solid var(--line);background:var(--glass-solid);color:var(--ink);border-radius:var(--r-sm);font:600 13px/1 var(--font-body);box-shadow:var(--shadow-sm);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);align-items:center;gap:8px;padding:10px 15px;transition:transform .14s,box-shadow .2s;display:inline-flex}.btn:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.btn .ico{width:16px;height:16px}.btn-accent{background:linear-gradient(140deg, var(--accent), var(--accent-2));color:#fff;box-shadow:0 8px 22px var(--accent-soft);border:none}.btn-ghost{box-shadow:none;border-color:var(--line);background:0 0}.card{background:var(--glass);border:1px solid var(--glass-brd);border-radius:var(--r-lg);box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(22px)saturate(1.35);position:relative}.card:before{content:"";border-radius:var(--r-lg) var(--r-lg) 0 0;background:linear-gradient(90deg, transparent, var(--glass-hi), transparent);pointer-events:none;height:1px;position:absolute;inset:0 0 auto}.card-pad{padding:22px 24px}.card-head{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.card-head h3{font:700 16px/1 var(--font-display);letter-spacing:-.02em;margin:0}.card-head .cnt{font:600 12px/1 var(--font-body);color:var(--ink-faint)}.sig-grid{grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px;display:grid}.sig{align-items:center;gap:16px;padding:18px 20px;display:flex}.sig .meta{min-width:0}.sig .lbl{font:600 12px/1.2 var(--font-body);color:var(--ink-faint)}.sig .val{font:700 27px/1 var(--font-display);letter-spacing:-.03em;margin:5px 0 4px}.sig .sub{font:500 11px/1.2 var(--font-body);color:var(--ink-soft);white-space:nowrap}.tone-dot{vertical-align:middle;border-radius:50%;width:7px;height:7px;margin-right:6px;display:inline-block}.sum-body{grid-template-columns:1.5fr 1fr;gap:16px;margin-bottom:16px;display:grid}.rcol{flex-direction:column;gap:16px;display:flex}.todo{margin:0;padding:0;list-style:none}.todo li{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:12px 0;display:flex}.todo li:last-child{border-bottom:0;padding-bottom:0}.todo li:first-child{padding-top:0}.ck{border:2px solid var(--line-strong);cursor:pointer;background:var(--glass-2);border-radius:8px;flex:none;width:23px;height:23px;transition:all .16s;position:relative}.ck:hover{border-color:var(--accent)}.ck.round{border-radius:50%}.ck.on{background:linear-gradient(140deg, var(--accent), var(--accent-2));border-color:#0000}.ck.on:after{content:"";border:2px solid #fff;border-width:0 2px 2px 0;width:5px;height:10px;position:absolute;top:3.5px;left:7px;transform:rotate(43deg)}.todo .tx{flex-direction:column;flex:1;gap:3px;min-width:0;display:flex}.todo .t{font:600 15px/1.25 var(--font-body);color:var(--ink);transition:color .16s}.todo li.done .t{color:var(--ink-faint);text-decoration:line-through;-webkit-text-decoration-color:var(--line-strong);text-decoration-color:var(--line-strong)}.todo .p{font:500 11px/1 var(--font-body);color:var(--ink-faint);margin-top:4px}.t-row{flex-wrap:wrap;align-items:center;gap:8px 9px;display:flex}.time-pill{font:700 10.5px/1 var(--font-mono);letter-spacing:.02em;font-variant-numeric:tabular-nums;color:var(--ink-soft);background:var(--glass-2);border:1px solid var(--line);border-radius:8px;flex:none;padding:4px 9px;transition:all .16s}.todo li.now .time-pill{color:#fff;background:linear-gradient(140deg, var(--accent), var(--accent-2));border-color:#0000}.now-badge{font:700 10px/1 var(--font-body);letter-spacing:.06em;text-transform:uppercase;color:#fff;background:linear-gradient(140deg, var(--accent), var(--accent-2));box-shadow:0 4px 12px var(--accent-soft);border-radius:20px;flex:none;padding:5px 10px}.kpill{font:600 10px/1 var(--font-body);letter-spacing:.04em;border-radius:20px;flex:none;margin-left:auto;padding:5px 11px}.kpill.task{background:var(--accent-soft);color:var(--accent-ink)}.kpill.habit{color:oklch(42% .09 205);background:oklch(64% .12 205/.16)}[data-theme=dark] .kpill.habit{color:oklch(78% .1 205)}.fc{border-bottom:1px solid var(--line);align-items:center;gap:13px;padding:11px 0;display:flex}.fc:last-child{border-bottom:0;padding-bottom:0}.fc:first-child{padding-top:0}.fc .fl{font:600 14px/1.2 var(--font-body)}.fc .fl small{font:500 11px/1 var(--font-body);color:var(--ink-faint);margin-top:3px;display:block}.fc .fv{font:700 16px/1 var(--font-display);margin-left:auto}.mg{grid-template-columns:1fr 1fr;gap:14px 18px;margin-bottom:16px;display:grid}.mi .ml{font:600 11px/1 var(--font-body);color:var(--ink-faint);text-transform:uppercase;letter-spacing:.05em}.mi .mv{font:700 19px/1 var(--font-display);letter-spacing:-.02em;margin-top:6px}.pbar{background:var(--glass-2);border:1px solid var(--line);border-radius:6px;height:9px;overflow:hidden}.pbar i{background:linear-gradient(90deg, var(--good), var(--warn));border-radius:6px;height:100%;display:block}.pbar-cap{font:600 11px/1 var(--font-body);color:var(--ink-faint);justify-content:space-between;margin-top:9px;display:flex}.bars{grid-template-columns:1fr 1fr;gap:13px 40px;display:grid}.bar .bh{font:600 13px/1 var(--font-body);justify-content:space-between;margin-bottom:7px;display:flex}.bar .bh span:last-child{color:var(--ink-soft);font-family:var(--font-mono);font-size:12px}.track{background:var(--glass-2);border:1px solid var(--line);border-radius:5px;height:8px;overflow:hidden}.track i{border-radius:5px;height:100%;transition:width .5s cubic-bezier(.2,.7,.3,1);display:block}.placeholder{text-align:center;place-items:center;min-height:60vh;display:grid}.placeholder .ph-ico{width:56px;height:56px;color:var(--accent);opacity:.8;margin:0 auto 18px}.placeholder h2{font:700 22px/1.2 var(--font-display);letter-spacing:-.02em;margin:0 0 8px}.placeholder p{font:500 14px/1.5 var(--font-body);color:var(--ink-soft);max-width:340px;margin:0 auto}.tabbar{display:none}.icon-btn{border:1px solid var(--line);background:var(--glass);width:36px;height:36px;color:var(--ink-soft);border-radius:10px;place-items:center;font-size:18px;transition:all .15s;display:inline-grid}.icon-btn:hover{color:var(--ink);background:var(--glass-solid)}.icon-btn .svg,.icon-btn svg{width:18px;height:18px}.segmented{background:var(--glass);border:1px solid var(--line);border-radius:12px;gap:3px;padding:4px;display:inline-flex}.segmented button{color:var(--ink-soft);font:600 13px/1 var(--font-body);white-space:nowrap;background:0 0;border:none;border-radius:9px;padding:8px 14px;transition:all .16s}.segmented.sm button{padding:6px 10px;font-size:12px}.segmented button.on{background:var(--glass-solid);color:var(--ink);box-shadow:var(--shadow-sm)}.segmented button:hover:not(.on){color:var(--ink)}.tag{font:600 11px/1 var(--font-body);background:var(--glass);border:1px solid var(--line);color:var(--ink-soft);border-radius:20px;align-items:center;gap:6px;padding:5px 10px;display:inline-flex}.chip{font:600 12px/1 var(--font-body);border:1px solid var(--line);background:var(--glass);color:var(--ink-soft);cursor:pointer;border-radius:10px;align-items:center;gap:7px;padding:7px 12px;transition:all .15s;display:inline-flex}.chip:hover{color:var(--ink);border-color:var(--line-strong)}.chip.on{background:var(--accent-soft);color:var(--accent-ink);border-color:#0000}.empty{text-align:center;color:var(--ink-faint);font:500 14px/1.5 var(--font-body);padding:40px 20px}.modal-backdrop{z-index:80;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:oklch(20% .02 285/.4);place-items:center;padding:20px;animation:.2s fade;display:grid;position:fixed;inset:0}@keyframes fade{0%{opacity:0}}.modal{border-radius:var(--r-xl);background:var(--glass-solid);border:1px solid var(--glass-brd);width:480px;max-width:100%;max-height:88vh;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(40px)saturate(1.4);backdrop-filter:blur(40px)saturate(1.4);flex-direction:column;animation:.22s cubic-bezier(.2,.8,.3,1.2) pop;display:flex;overflow:hidden}.modal.wide{width:720px}@keyframes pop{0%{opacity:0;transform:translateY(14px)scale(.98)}}.modal-head{justify-content:space-between;align-items:flex-start;gap:16px;padding:22px 24px 14px;display:flex}.modal-head h3{font:700 19px/1.1 var(--font-display);letter-spacing:-.02em;margin:0}.modal-head p{font:500 13px/1.4 var(--font-body);color:var(--ink-faint);margin:6px 0 0}.modal-body{flex:1;min-height:0;padding:4px 24px 16px;overflow-y:auto}.modal-foot{border-top:1px solid var(--line);justify-content:flex-end;gap:10px;margin-top:8px;padding:16px 24px 22px;display:flex}.field{flex-direction:column;gap:7px;margin-bottom:15px;display:flex}.field .fl{font:600 12px/1 var(--font-body);color:var(--ink-soft);letter-spacing:.01em}.field .fhint{font:500 11px/1.3 var(--font-body);color:var(--ink-faint)}.input{width:100%;font:500 14px/1.2 var(--font-body);color:var(--ink);background:var(--glass);border:1px solid var(--line-strong);border-radius:11px;padding:11px 13px;transition:border-color .15s,box-shadow .15s}.input::placeholder{color:var(--ink-faint)}.input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft);outline:none}.input.select{appearance:none;background-image:linear-gradient(45deg, transparent 50%, var(--ink-faint) 50%), linear-gradient(135deg, var(--ink-faint) 50%, transparent 50%);background-position:calc(100% - 18px) 17px,calc(100% - 13px) 17px;background-repeat:no-repeat;background-size:5px 5px;padding-right:34px}.input-wrap{align-items:center;display:flex;position:relative}.input-wrap .prefix{font:600 14px/1 var(--font-body);color:var(--ink-faint);pointer-events:none;position:absolute;left:13px}.input-wrap .prefix+.input{padding-left:46px}.grid2{grid-template-columns:1fr 1fr;gap:0 14px;display:grid}.cat-icon{border-radius:9px;flex:none;place-items:center;display:inline-grid}.weekstrip{gap:8px;margin-bottom:18px;display:flex}.weekstrip .wd{border:1px solid var(--line);background:var(--glass);cursor:pointer;border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:5px;padding:10px 4px;transition:all .15s;display:flex}.weekstrip .wd:hover{border-color:var(--line-strong)}.weekstrip .wd .dn{font:600 11px/1 var(--font-body);color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em}.weekstrip .wd .dd{font:700 17px/1 var(--font-display)}.weekstrip .wd.today{background:var(--accent-soft);border-color:#0000}.weekstrip .wd.today .dd{color:var(--accent-ink)}.weekstrip .wd.sel{background:linear-gradient(140deg, var(--accent), var(--accent-2));border-color:#0000}.weekstrip .wd.sel .dn,.weekstrip .wd.sel .dd{color:#fff}.weekstrip .wd .dot{background:var(--accent);border-radius:50%;width:5px;height:5px}.weekstrip .wd.sel .dot{background:#fff}.day-ring-row{align-items:center;gap:18px;display:flex}.daygroup-h{font:700 13px/1 var(--font-body);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-faint);margin:4px 0 12px}.weekgrid-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.weekgrid{background:var(--line);border-radius:var(--r-md);border:1px solid var(--line);grid-template-columns:90px repeat(7,1fr);gap:1px;display:grid;overflow:hidden}.weekgrid .gc{background:var(--bg-base);min-height:54px;padding:10px 8px}.weekgrid .gc.lane{font:700 11px/1.2 var(--font-body);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint);align-items:center;display:flex}.weekgrid .gc.head{text-align:center}.weekgrid .gc.head .h-dn{font:600 11px/1 var(--font-body);color:var(--ink-faint)}.weekgrid .gc.head .h-dd{font:700 16px/1 var(--font-display);margin-top:4px}.weekgrid .gc.head.today .h-dd{color:var(--accent-ink)}.wg-item{font:600 11px/1.25 var(--font-body);background:var(--glass);border:1px solid var(--line);cursor:pointer;border-radius:7px;margin-bottom:4px;padding:5px 7px}.wg-item.done{opacity:.5;text-decoration:line-through}.wg-dots{flex-wrap:wrap;gap:3px;display:flex}.wg-dots .hd{border:1.5px solid var(--line-strong);border-radius:50%;width:9px;height:9px}.wg-dots .hd.on{background:var(--accent);border-color:#0000}.monthcal{grid-template-columns:repeat(7,1fr);grid-auto-rows:auto;gap:7px;display:grid}.monthcal .mh{text-align:center;font:700 11px/1 var(--font-body);color:var(--ink-faint);text-transform:uppercase;letter-spacing:.06em;padding-bottom:4px}.mcell{border:1px solid var(--line);background:var(--glass);cursor:pointer;border-radius:13px;flex-direction:column;gap:4px;min-height:110px;padding:8px;transition:all .15s;display:flex}.mcell:hover{border-color:var(--line-strong)}.mcell.out{opacity:.35}.mcell.today{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft)}.mcell.drag-over{border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 2px var(--accent)}.mcell .md{font:700 13px/1 var(--font-display);justify-content:space-between;align-items:center;display:flex}.mcell .hsig{font:600 10px/1 var(--font-body);color:var(--ink-faint)}.mcell .mt{font:600 11px/1.3 var(--font-body);color:var(--ink-soft);background:var(--glass-2);border:1px solid var(--line);text-overflow:ellipsis;white-space:nowrap;cursor:pointer;-webkit-user-select:none;user-select:none;border-radius:6px;padding:4px 6px;transition:background .12s;overflow:hidden}.mcell .mt:hover{background:var(--accent-soft);color:var(--ink)}.mcell .mt.done{opacity:.45;text-decoration:line-through}.mcell .mt.mt-span-start{background:var(--accent-soft);border-color:var(--accent);color:var(--accent-ink)}.mcell .mt.mt-span-start .mt-dur{opacity:.7;font-size:9px}.mcell .mt.mt-span-mid{background:var(--accent);opacity:.35;height:6px;min-height:unset;border-color:#0000;border-radius:0;padding:0 3px;font-size:0}.mcell .mt.mt-span-end{background:var(--accent);opacity:.35;height:6px;min-height:unset;border-color:#0000;border-radius:0 4px 4px 0;padding:0 3px;font-size:0}.mhab-row{align-items:center;gap:3px;display:flex}.mhd{background:var(--glass-2);border:1px solid var(--line);cursor:pointer;border-radius:50%;flex:none;width:8px;height:8px;transition:background .12s,border-color .12s}.mhd.on{background:var(--accent);border-color:var(--accent)}.mini-ring{flex:none}.consist-item{border-bottom:1px solid var(--line);padding:16px 0}.consist-item:last-child{border-bottom:0}.consist-top{cursor:pointer;align-items:center;gap:14px;margin-bottom:12px;display:flex}.consist-top .ct-title{font:700 15px/1 var(--font-body)}.consist-top .ct-meta{font:500 12px/1 var(--font-body);color:var(--ink-faint);margin-top:4px}.streak{font:700 12px/1 var(--font-body);color:var(--c-budget);align-items:center;gap:5px;display:inline-flex}.streak svg{width:14px;height:14px}.hero3{grid-template-columns:1.2fr 1fr 1fr;gap:16px;margin-bottom:16px;display:grid}.hero{flex-direction:column;min-height:150px;padding:22px 24px;display:flex}.hero .hl{font:600 12px/1 var(--font-body);color:var(--ink-faint);align-items:center;gap:8px;display:flex}.hero .hv{font:700 38px/1 var(--font-display);letter-spacing:-.03em;margin:12px 0 4px}.hero .hsub{font:500 12px/1.4 var(--font-body);color:var(--ink-soft)}.hero.safe{background:linear-gradient(150deg, var(--accent), var(--accent-2));color:#fff;border:none}.hero.safe .hl,.hero.safe .hsub{color:#fff;opacity:.9}.hero .spark-wrap{margin-top:auto}.statstrip{background:var(--line);border:1px solid var(--line);border-radius:var(--r-md);grid-template-columns:repeat(6,1fr);gap:1px;margin-bottom:16px;display:grid;overflow:hidden}.statstrip .st{background:var(--bg-base);padding:14px 16px}.statstrip .st .sl{font:600 10px/1 var(--font-body);text-transform:uppercase;letter-spacing:.05em;color:var(--ink-faint)}.statstrip .st .sv{font:700 17px/1 var(--font-display);letter-spacing:-.02em;margin-top:7px}.budget-grid{grid-template-columns:1.3fr 1fr;align-items:start;gap:16px;display:grid}.fast-expense .row{gap:12px;display:flex}.fast-expense .row>*{flex:1}.ledger{margin:0;padding:0;list-style:none}.ledger li{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:12px 0;display:flex}.ledger li:last-child{border-bottom:0}.ledger .le-main{flex:1;min-width:0}.ledger .le-merch{font:600 14px/1.2 var(--font-body)}.ledger .le-sub{font:500 11px/1 var(--font-body);color:var(--ink-faint);gap:8px;margin-top:4px;display:flex}.ledger .le-amt{font:700 15px/1 var(--font-display);white-space:nowrap}.ledger .le-actions{opacity:0;gap:4px;transition:opacity .15s;display:flex}.ledger li:hover .le-actions{opacity:1}.env-row{border-bottom:1px solid var(--line);padding:13px 0}.env-row:last-child{border-bottom:0}.env-top{align-items:center;gap:12px;margin-bottom:9px;display:flex}.env-top .en-name{font:600 14px/1 var(--font-body)}.env-top .en-amt{font:600 12px/1 var(--font-body);color:var(--ink-soft);margin-left:auto}.env-track{background:var(--glass-2);border:1px solid var(--line);border-radius:6px;height:9px;overflow:hidden}.env-track i{border-radius:6px;height:100%;transition:width .5s;display:block}.status-OVER{color:var(--bad)}.status-WARNING{color:var(--warn)}.status-NORMAL{color:var(--good)}.goal-card{border-radius:var(--r-md);border:1px solid var(--line);background:var(--glass);margin-bottom:12px;padding:16px}.goal-card:last-child{margin-bottom:0}.goal-h{justify-content:space-between;align-items:baseline;margin-bottom:6px;display:flex}.goal-h .gn{font:700 15px/1 var(--font-body)}.goal-h .gp{font:600 12px/1 var(--font-body);color:var(--ink-soft)}.goal-track{background:var(--glass-2);border-radius:5px;height:8px;margin:10px 0 8px;overflow:hidden}.goal-track i{background:linear-gradient(90deg, var(--accent), var(--accent-2));border-radius:5px;height:100%;display:block}.goal-pace{font:500 12px/1.3 var(--font-body)}.contribute{gap:8px;margin-top:10px;display:flex}.acct-row{border-bottom:1px solid var(--line);align-items:center;gap:14px;padding:13px 0;display:flex}.acct-row:last-child{border-bottom:0}.acct-kind{background:var(--accent-soft);width:38px;height:38px;color:var(--accent-ink);border-radius:11px;flex:none;place-items:center;display:grid}.acct-bal{font:700 15px/1 var(--font-display);margin-left:auto}.insight{border-bottom:1px solid var(--line);font:500 13px/1.4 var(--font-body);gap:11px;padding:11px 0;display:flex}.insight:last-child{border-bottom:0}.insight .ib{border-radius:4px;flex:none;width:4px}.insight.positive .ib{background:var(--good)}.insight.warning .ib{background:var(--bad)}.insight.neutral .ib{background:var(--accent)}.merch-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:10px 0;display:flex}.merch-row:last-child{border-bottom:0}.merch-row .mr-rank{font:700 13px/1 var(--font-display);color:var(--ink-faint);width:18px}.merch-row .mr-amt{font:700 14px/1 var(--font-display);margin-left:auto}.recur-row{border-bottom:1px solid var(--line);align-items:center;gap:12px;padding:12px 0;display:flex}.recur-row:last-child{border-bottom:0}.toggle{background:var(--line-strong);cursor:pointer;border:none;border-radius:14px;flex:none;width:40px;height:24px;transition:background .18s;position:relative}.toggle.on{background:var(--accent)}.toggle:after{content:"";background:#fff;border-radius:50%;width:18px;height:18px;transition:transform .18s;position:absolute;top:3px;left:3px}.toggle.on:after{transform:translate(16px)}.legend{flex-direction:column;gap:9px;display:flex}.legend .lg-item{font:600 12px/1 var(--font-body);color:var(--ink-soft);align-items:center;gap:9px;display:flex}.legend .lg-sw{border-radius:4px;flex:none;width:11px;height:11px}.legend .lg-amt{font-family:var(--font-mono);color:var(--ink-faint);margin-left:auto;font-size:11px}.map-wrap{position:absolute;inset:0;overflow:hidden}.map-toolbar{z-index:10;pointer-events:none;align-items:center;gap:10px;display:flex;position:absolute;top:16px;left:16px;right:16px}.map-toolbar>*{pointer-events:auto}.map-canvas{cursor:grab;position:absolute;inset:0}.map-canvas.panning{cursor:grabbing}.map-inner{transform-origin:0 0;position:absolute;top:0;left:0}.node{background:var(--glass-solid);border:1px solid var(--glass-brd);width:250px;box-shadow:var(--shadow-md);-webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);cursor:grab;-webkit-user-select:none;user-select:none;border-radius:16px;padding:14px 16px;transition:box-shadow .15s,border-color .15s;position:absolute}.node:hover{border-color:var(--line-strong)}.node.sel{border-color:var(--accent);box-shadow:0 0 0 2px var(--accent-soft), var(--shadow-md)}.node.dragging{cursor:grabbing;box-shadow:var(--shadow-lg);z-index:50}.node .n-type{font:700 9px/1 var(--font-body);text-transform:uppercase;letter-spacing:.08em;color:#fff;border-radius:20px;align-items:center;gap:6px;padding:4px 8px;display:inline-flex}.node .n-title{font:600 15px/1.25 var(--font-body);margin-top:9px}.node .n-meta{font:500 11px/1 var(--font-body);color:var(--ink-faint);align-items:center;gap:8px;margin-top:7px;display:flex}.node .n-port{background:var(--accent);border:2px solid var(--bg-base);cursor:crosshair;opacity:0;border-radius:50%;width:14px;height:14px;transition:opacity .15s;position:absolute;top:50%;right:-7px;transform:translateY(-50%)}.node:hover .n-port{opacity:1}.map-edges{pointer-events:none;position:absolute;top:0;left:0;overflow:visible}.map-edges path{fill:none;stroke:var(--line-strong);stroke-width:2px}.map-edges path.hot{stroke:var(--accent)}.depth-pill{z-index:10;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.map-empty{text-align:center;place-items:center;display:grid;position:absolute;inset:0}.detail{z-index:60;background:var(--glass-solid);border-left:1px solid var(--glass-brd);width:380px;max-width:100%;box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(40px)saturate(1.4);backdrop-filter:blur(40px)saturate(1.4);flex-direction:column;animation:.25s cubic-bezier(.2,.8,.3,1) slidein;display:flex;position:absolute;top:0;bottom:0;right:0}@keyframes slidein{0%{opacity:0;transform:translate(30px)}}.detail-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:flex-start;padding:22px 22px 16px;display:flex}.detail-body{flex:1;padding:18px 22px;overflow-y:auto}.tour-overlay{z-index:100;pointer-events:none;transition:opacity .25s;animation:.25s fade;position:fixed;inset:0}.tour-overlay.tour-hidden{opacity:0;pointer-events:none}.tour-dim{-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:oklch(20% .02 285/.55);position:absolute;inset:0}.tour-spot{pointer-events:none;outline:2px solid var(--accent);outline-offset:2px;box-shadow:0 0 0 9999px oklch(20% .02 285/.55), 0 0 0 0 var(--accent-soft);transition:top .28s cubic-bezier(.2,.8,.3,1),left .28s cubic-bezier(.2,.8,.3,1),width .28s cubic-bezier(.2,.8,.3,1),height .28s cubic-bezier(.2,.8,.3,1),border-radius .28s;animation:2.2s ease-in-out infinite tourPulse;position:absolute}@keyframes tourPulse{0%,to{box-shadow:0 0 0 9999px oklch(20% .02 285/.55), 0 0 0 0 var(--accent-soft)}50%{box-shadow:0 0 0 9999px oklch(20% .02 285/.55), 0 0 0 9px var(--accent-soft)}}.tour-card{pointer-events:auto;background:var(--glass-solid);border:1px solid var(--glass-brd);border-radius:var(--r-lg);width:360px;max-width:calc(100vw - 32px);box-shadow:var(--shadow-lg);-webkit-backdrop-filter:blur(40px)saturate(1.4);backdrop-filter:blur(40px)saturate(1.4);flex-direction:column;gap:10px;padding:20px;transition:top .28s cubic-bezier(.2,.8,.3,1),left .28s cubic-bezier(.2,.8,.3,1);animation:.25s cubic-bezier(.2,.8,.3,1.2) pop;display:flex;position:absolute}.tour-card.center{width:420px;position:fixed;top:50%;left:50%;transform:translate(-50%,-50%)}.tour-card.sheet{width:100%;max-width:100%;max-height:46vh;padding:16px 18px calc(14px + env(safe-area-inset-bottom,0px));border-radius:22px 22px 0 0;gap:8px;position:fixed;inset:auto 0 0;overflow-y:auto}.tour-card.sheet h3{font-size:16px}.tour-card.sheet p{font-size:13px;line-height:1.5}.tour-card.sheet .tour-tryit{padding:8px 10px;font-size:12px}.tour-card-head{justify-content:space-between;align-items:center;display:flex}.tour-step-count{font:700 11px/1 var(--font-body);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}.tour-card h3{font:700 18px/1.25 var(--font-display);color:var(--ink);margin:0}.tour-card p{font:500 13.5px/1.55 var(--font-body);color:var(--ink-soft);margin:0}.tour-tryit{font:600 12.5px/1.5 var(--font-body);color:var(--accent);background:var(--glass-2);border:1px solid var(--glass-brd);border-radius:var(--r-md);align-items:flex-start;gap:8px;padding:10px 12px;display:flex}.tour-tryit .ico{flex:none;margin-top:1px}.tour-card-foot{align-items:center;gap:8px;margin-top:4px;display:flex}@media (width<=620px){.tour-card{padding:18px 18px calc(18px + env(safe-area-inset-bottom,0px))}}.review-overlay{z-index:90;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:oklch(20% .02 285/.5);padding:28px;animation:.2s fade;position:fixed;inset:0;overflow-y:auto}.review-bar{flex-wrap:wrap;align-items:center;gap:10px;max-width:860px;margin:0 auto 16px;display:flex}.review-bar .rb-title{font:700 17px/1 var(--font-display);color:#fff}.review-bar .spacer{flex:1}.report{color:#14151a;max-width:860px;box-shadow:var(--shadow-lg);background:#fff;border-radius:18px;margin:0 auto;overflow:hidden}.report .rp-pad{padding:44px 48px}.report-page+.report-page{border-top:1px dashed #e3e4ea}@media print{body *{visibility:hidden}.review-overlay,.review-overlay *{visibility:visible}.review-overlay{-webkit-backdrop-filter:none;backdrop-filter:none;background:#fff;padding:0;position:absolute;inset:0}.review-bar{display:none}.report{max-width:none;box-shadow:none;border-radius:0;margin:0}.report-page{page-break-after:always}@page{margin:0;size:A4}}@media (width<=1150px){.statstrip{grid-template-columns:repeat(3,1fr)}.weekgrid{font-size:11px}.detail{width:100%}.sig-grid{grid-template-columns:1fr 1fr}.sum-body{grid-template-columns:1fr}.bars{grid-template-columns:1fr 1fr}}@media (width<=900px){.app{grid-template-columns:1fr}.rail{display:none}.topbar{gap:8px;padding:16px 16px 10px}.topbar .tt{font-size:21px}.scroll{padding:6px 16px 100px}.sig-grid{grid-template-columns:1fr 1fr}.sum-body,.bars{grid-template-columns:1fr}.weekgrid-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.ledger .le-actions{opacity:1}.recur-row{flex-wrap:wrap;row-gap:8px}.tabbar{z-index:30;padding:10px 8px calc(10px + env(safe-area-inset-bottom));-webkit-overflow-scrolling:touch;scrollbar-width:none;background:var(--glass-2);-webkit-backdrop-filter:blur(24px)saturate(1.4);backdrop-filter:blur(24px)saturate(1.4);border-top:1px solid var(--line);justify-content:flex-start;gap:2px;display:flex;position:fixed;bottom:0;left:0;right:0;overflow-x:auto}.tabbar::-webkit-scrollbar{display:none}.tab{min-width:58px;color:var(--ink-faint);font:600 10px/1 var(--font-body);background:0 0;border:none;border-radius:12px;flex-direction:column;flex:none;align-items:center;gap:4px;padding:6px 8px;display:flex}.tab .ico{width:22px;height:22px}.tab.active{color:var(--accent)}}@media (width<=768px){.hero3,.budget-grid{grid-template-columns:1fr}.fast-expense .row{flex-direction:column;gap:0}.hero .hv{font-size:30px}.statstrip{grid-template-columns:repeat(2,1fr)}}@media (width<=560px){.sig-grid{grid-template-columns:1fr 1fr;gap:12px}.topbar .tt{font-size:19px}.sig{flex-direction:column;align-items:flex-start;gap:10px;padding:16px 14px}.sig .val{margin:3px 0;font-size:22px}.sig .sub{white-space:normal;line-height:1.4}}@media (width<=620px){.day-card-head{flex-wrap:wrap;row-gap:8px}.day-card-head .day-head-right{flex:0 0 100%;justify-content:space-between}.day-card-head .filter-pills{flex:1}.day-card-head .filter-pills button{text-align:center;flex:1}.day-card-head h3{width:150px;font-size:14px}.mi{min-width:0}.mi .mv{text-overflow:ellipsis;white-space:nowrap;font-size:16px;overflow:hidden}.topbar{padding-right:20px}}@media (width<=400px){.sig-grid{grid-template-columns:1fr}.weekstrip{gap:4px}.weekstrip .wd{min-height:44px;padding:8px 2px}.weekstrip .wd .dd{font-size:14px}.weekstrip .wd .dn{letter-spacing:0;font-size:9px}.day-head-right{flex-direction:column;align-items:stretch;gap:6px}.day-head-right .btn{justify-content:center}.day-card-head .filter-pills button{padding:5px 6px;font-size:11px}}@media (prefers-reduced-motion:reduce){*{transition:none!important}.tour-spot{animation:none!important}}.mobile-only{display:none}@media (width<=900px){.mobile-only{display:inline-flex}.desktop-only{display:none}.map-toolbar{flex-wrap:wrap}.weekgrid{min-width:560px}}@media (width<=620px){.modal-backdrop{align-items:flex-end;padding:0}.modal,.modal.wide{border-radius:22px 22px 0 0;width:100%;max-width:100%;max-height:92vh}.topbar .ts{display:none}.topbar .btn{padding:9px 10px;font-size:12px}.grid2{grid-template-columns:1fr}.monthcal{gap:3px}.mcell{gap:3px;min-height:80px;padding:6px 5px}.mcell .mt{padding:3px 5px;font-size:11px}.mcell .mt~.mt~.mt{display:none}.mcell .md{font-size:12px}.mhab-row{display:flex}.weekgrid{min-width:520px}.review-overlay{padding:0}.report .rp-pad{padding:26px 22px}.goal-h{flex-direction:column;align-items:flex-start;gap:4px}.contribute{flex-wrap:wrap}}.consist-heatmap-wrap{-webkit-overflow-scrolling:touch;overflow-x:auto}.budget-filter-bar{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.budget-filter-left{flex-wrap:wrap;flex:1;align-items:center;gap:8px;display:flex}@media (width<=620px){.inbox-row{flex-direction:column}.inbox-row .btn{align-self:flex-end}.budget-filter-bar{flex-direction:column;align-items:stretch}.budget-filter-left{flex:unset}}.ai-view{flex-direction:column;height:100%;min-height:0;display:flex}.ai-seg-wrap{flex-shrink:0;padding-bottom:14px}.ai-seg-wrap .segmented{width:100%}.ai-seg-wrap .segmented button{flex:1}.ai-body{flex-direction:column;flex:1;min-height:0;display:flex}.md p{margin:0 0 8px}.md p:last-child{margin-bottom:0}.md ul,.md ol{margin:6px 0;padding-left:18px}.md li{margin-bottom:3px}.md li::marker{color:var(--accent)}.md strong{color:var(--ink);font-weight:700}.md em{font-style:italic}.md a{color:var(--accent);text-decoration:underline}.md code{font-family:var(--font-mono);background:var(--glass-2);border:1px solid var(--line);border-radius:5px;padding:1px 5px;font-size:.88em}.md pre{background:var(--glass-2);border:1px solid var(--line);border-radius:var(--r-sm);margin:8px 0;padding:10px 12px;overflow-x:auto}.md pre code{background:0 0;border:none;padding:0}.md blockquote{border-left:3px solid var(--accent);color:var(--ink-soft);margin:8px 0;padding:4px 12px}.md hr{border:none;border-top:1px solid var(--line);margin:10px 0}.md h1,.md h2,.md h3,.md h4{font-family:var(--font-display);letter-spacing:-.01em;margin:10px 0 5px;font-weight:700;line-height:1.25}.md h1{font-size:1.3em}.md h2{font-size:1.15em}.md h3{font-size:1.02em}.ai-empty{text-align:center;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:10px;padding:40px 24px;display:flex}.ai-empty-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:50%;place-items:center;font-size:26px;display:grid}.ai-empty-icon .ico{width:26px;height:26px}.ai-empty-title{font:600 16px/1.3 var(--font-display);color:var(--ink)}.ai-empty-sub{font:400 13px/1.55 var(--font-body);color:var(--ink-soft);max-width:300px}.ai-empty-sub code{font-family:var(--font-mono);color:var(--accent-ink);background:var(--accent-soft);border-radius:4px;padding:1px 5px;font-size:11px}.chat-panel{flex-direction:column;height:100%;min-height:0;display:flex}.chat-msgs{flex-direction:column;flex:1;gap:12px;min-height:0;padding:2px 2px 12px;display:flex;overflow-y:auto}.chat-row{align-items:flex-end;gap:8px;max-width:100%;display:flex}.chat-row-user{flex-direction:row-reverse}.chat-avatar{background:var(--accent-soft);width:28px;height:28px;color:var(--accent);border-radius:50%;flex-shrink:0;place-items:center;margin-bottom:2px;display:grid}.chat-avatar .ico{width:15px;height:15px}.chat-bubble{max-width:84%;font:400 14px/1.6 var(--font-body);color:var(--ink);background:var(--glass);border:1px solid var(--line);border-radius:var(--r-lg) var(--r-lg) var(--r-lg) 6px;box-shadow:var(--shadow-sm);word-break:break-word;overflow-wrap:anywhere;padding:11px 14px}.chat-row-user .chat-bubble{background:var(--accent);color:#fff;border-radius:var(--r-lg) var(--r-lg) 6px var(--r-lg);box-shadow:none;border-color:#0000}.chat-row-user .chat-bubble code{background:#ffffff2e;border-color:#0000}.chat-bubble.thinking{color:var(--ink-faint)}.chat-bubble.thinking:after{content:"•••";letter-spacing:2px;animation:1.2s steps(4,end) infinite chatdots}@keyframes chatdots{0%{opacity:.3}50%{opacity:1}to{opacity:.3}}.chat-bubble.streaming:not(.thinking) .md>:last-child:after{content:"▋";color:var(--accent);margin-left:1px;animation:1s step-end infinite caret;display:inline-block}@keyframes caret{50%{opacity:0}}.chat-action{border-radius:var(--r-full,999px);background:color-mix(in oklch, var(--good) 12%, transparent);border:1px solid color-mix(in oklch, var(--good) 32%, transparent);max-width:90%;color:var(--ink-soft);font:500 12px/1.4 var(--font-body);align-self:center;align-items:center;gap:7px;padding:6px 12px;display:inline-flex}.chat-action .ico{width:13px;height:13px;color:var(--good);flex-shrink:0}.chat-action strong{color:var(--ink);font-weight:600}.chat-error{text-align:center;border-radius:var(--r-md);background:color-mix(in oklch, var(--bad) 10%, transparent);border:1px solid color-mix(in oklch, var(--bad) 30%, transparent);max-width:90%;color:var(--bad);font:500 12.5px/1.5 var(--font-body);align-self:center;padding:8px 14px}.chat-action.skipped{background:var(--glass-2);border-color:var(--line);color:var(--ink-faint)}.chat-action.skipped .ico{color:var(--ink-faint)}.chat-confirm{border-radius:var(--r-md);background:var(--glass);border:1px solid var(--accent);box-shadow:var(--shadow-sm);flex-direction:column;align-self:stretch;gap:10px;padding:14px 16px;display:flex}.chat-confirm-label{font:600 10px/1 var(--font-body);text-transform:uppercase;letter-spacing:.12em;color:var(--accent)}.chat-confirm-desc{font:500 14px/1.5 var(--font-body);color:var(--ink)}.chat-confirm-actions{justify-content:flex-end;gap:8px;display:flex}.chat-confirm-actions .btn{padding:7px 18px}.chat-input-bar{border-top:1px solid var(--line);flex-shrink:0;align-items:flex-end;gap:8px;padding-top:12px;display:flex}.chat-input{resize:none;border-radius:var(--r-md);border:1px solid var(--line);background:var(--glass);min-height:44px;max-height:140px;color:var(--ink);font:400 14px/1.5 var(--font-body);outline:none;flex:1;padding:11px 14px;transition:border-color .15s,box-shadow .15s}.chat-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.chat-input::placeholder{color:var(--ink-faint)}.chat-actions-col{align-items:center;gap:6px;display:flex}.chat-newchat{width:38px;height:38px}.chat-newchat .ico{width:17px;height:17px}.chat-send{border-radius:var(--r-md);flex-shrink:0;place-items:center;width:44px;height:44px;padding:0;display:grid}.chat-send .ico{width:19px;height:19px}.chat-send:disabled{opacity:.5}@keyframes spin{to{transform:rotate(360deg)}}.chat-spinner{border:2px solid #ffffff59;border-top-color:#fff;border-radius:50%;width:16px;height:16px;animation:.7s linear infinite spin}.journal-list{flex-direction:column;height:100%;min-height:0;display:flex}.journal-list-head{flex-shrink:0;justify-content:space-between;align-items:center;padding-bottom:14px;display:flex}.journal-list-title{font:700 18px/1 var(--font-display);letter-spacing:-.01em;color:var(--ink);align-items:center;gap:9px;display:flex}.journal-count{font:600 11px/1 var(--font-mono);color:var(--ink-faint);background:var(--glass-2);border:1px solid var(--line);border-radius:var(--r-full,999px);padding:3px 7px}.journal-entries{flex-direction:column;flex:1;gap:10px;min-height:0;padding:2px;display:flex;overflow-y:auto}.journal-card{text-align:left;background:var(--glass);border:1px solid var(--line);border-radius:var(--r-md);cursor:pointer;box-shadow:var(--shadow-sm);flex-direction:column;gap:5px;padding:13px 15px;transition:border-color .15s,transform .12s,box-shadow .15s;display:flex}.journal-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);transform:translateY(-1px)}.jc-head{justify-content:space-between;align-items:center;gap:8px;display:flex}.jc-date{font:600 11px/1 var(--font-mono);color:var(--ink-faint);text-transform:uppercase;letter-spacing:.04em}.jc-mood{font:600 11px/1 var(--font-body);color:var(--ink-soft);align-items:center;gap:5px;display:inline-flex}.jc-title{font:600 15px/1.3 var(--font-display);color:var(--ink)}.jc-preview{font:400 12.5px/1.5 var(--font-body);color:var(--ink-soft);-webkit-line-clamp:2;-webkit-box-orient:vertical;display:-webkit-box;overflow:hidden}.mood-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px;display:inline-block}.journal-editor{flex-direction:column;height:100%;min-height:0;display:flex}.journal-editor-bar{flex-shrink:0;justify-content:space-between;align-items:center;gap:8px;padding-bottom:14px;display:flex}.journal-editor-bar-right{align-items:center;gap:8px;display:flex}.journal-editor-bar .ico{width:15px;height:15px}.journal-title-input{border:none;border-bottom:1px solid var(--line);width:100%;color:var(--ink);font:700 22px/1.2 var(--font-display);letter-spacing:-.01em;background:0 0;outline:none;flex-shrink:0;padding:4px 0 12px}.journal-title-input::placeholder{color:var(--ink-faint)}.journal-mood-row{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:7px;padding:14px 0;display:flex}.journal-mood-label{font:600 10px/1 var(--font-body);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-faint);margin-right:2px}.mood-chip{border-radius:var(--r-full,999px);border:1px solid var(--line);background:var(--glass);color:var(--ink-soft);font:600 12.5px/1 var(--font-body);cursor:pointer;align-items:center;gap:6px;padding:6px 12px;transition:all .13s;display:inline-flex}.mood-chip:hover{border-color:var(--line-strong)}.journal-md-area{resize:none;border:1px solid var(--line);border-radius:var(--r-md);background:var(--glass);color:var(--ink);font:400 15px/1.75 var(--font-body);outline:none;flex:1;min-height:0;padding:16px;transition:border-color .15s,box-shadow .15s}.journal-md-area:focus{border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.journal-md-area::placeholder{color:var(--ink-faint)}.journal-preview{border:1px solid var(--line);border-radius:var(--r-md);background:var(--glass);font:400 15px/1.75 var(--font-body);color:var(--ink);flex:1;min-height:0;padding:16px;overflow-y:auto}.dbg .card,.dbg .sig,.dbg .rail,.dbg .btn,.dbg .seg,.dbg .nav-item.active,.dbg .tabbar{-webkit-backdrop-filter:none!important}.dbg .card,.dbg .sig{background:color-mix(in oklch, var(--bg-base) 25%, white)!important}[data-theme=dark] .dbg .card,[data-theme=dark] .dbg .sig{background:oklch(27% .03 280)!important}.dbg .review-overlay,.dbg .modal-backdrop{-webkit-backdrop-filter:none!important;background:oklch(30% .02 285/.55)!important}
