:root{--bg:#f5f6fa;--surface:#fff;--surface-2:#f0f1f6;--text:#15161c;--muted:#6b7080;--border:#e5e7ef;--accent:#5b4cf0;--accent-text:#fff;--accent-soft:#5b4cf01a;--danger:#e5484d;--success:#27a567;--warn:#e39b1f;--running:#2f80ed;--shadow:0 1px 2px #10121b0a, 0 6px 22px #10121b0f;--radius:18px;--fab-bg:linear-gradient(135deg, #8a7cff, #4433e0);--fab-text:#fff;--fab-shadow:0 10px 28px #4433e066;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}[data-theme=dark]{--bg:#000;--surface:#0b0b0b;--surface-2:#171717;--text:#f5f5f5;--muted:#9a9a9a;--border:#303030;--accent:#fff;--accent-text:#000;--accent-soft:#ffffff14;--fab-bg:#fff;--fab-text:#000;--fab-shadow:0 0 0 1px #000, 0 0 0 2px #ffffff59;--danger:#ff6b6f;--success:#3ecf8e;--warn:#f5b546;--running:#5aa2ff;--shadow:0 1px 0 #ffffff08 inset;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}*{box-sizing:border-box}html,body{margin:0}body{background:var(--bg);color:var(--text);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none;font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}body.locked{overflow:hidden}button,input,select,textarea{font:inherit;color:inherit}button{cursor:pointer;background:0 0;border:0;padding:0}button:disabled{cursor:default;opacity:.45}h1,h2,h3{letter-spacing:-.02em;margin:0}h1{font-size:26px}h2{font-size:19px}h3{align-items:center;gap:8px;margin-bottom:12px;font-size:16px;display:flex}.muted{color:var(--muted)}.small{font-size:13px}.hint{color:var(--muted);margin:6px 0 0;font-size:12.5px}.inline-icon{vertical-align:-2px}kbd{border:1px solid var(--border);background:var(--surface-2);border-radius:5px;padding:1px 5px;font:12px ui-monospace,monospace}:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.app{min-height:100dvh;display:flex}.sidebar{display:none}.main{width:100%;max-width:1120px;padding:calc(env(safe-area-inset-top) + 8px) 16px calc(100px + env(safe-area-inset-bottom));flex:1;margin:0 auto}.topbar{justify-content:space-between;align-items:center;padding:6px 0 4px;display:flex}.brand{letter-spacing:-.02em;align-items:center;gap:10px;font-size:18px;font-weight:700;display:flex}.brand img{border-radius:9px}.page{flex-direction:column;gap:14px;display:flex}.page-head{justify-content:space-between;align-items:center;gap:12px;margin-top:8px;display:flex}.col{flex-direction:column;gap:14px;min-width:0;display:flex}.grid2{flex-direction:column;gap:14px;display:flex}.bottomnav{z-index:20;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(14px);border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom);display:flex;position:fixed;bottom:0;left:0;right:0}.bottomnav button{color:var(--muted);flex-direction:column;flex:1;align-items:center;gap:3px;padding:9px 0 8px;font-size:11px;font-weight:600;display:flex}.bottomnav button.on{color:var(--accent)}.fab{z-index:21;right:18px;bottom:calc(78px + env(safe-area-inset-bottom));background:var(--fab-bg);width:58px;height:58px;color:var(--fab-text);box-shadow:var(--fab-shadow);border-radius:20px;place-items:center;transition:transform .15s;display:grid;position:fixed}.fab:active{transform:scale(.94)}@media (width>=900px){.sidebar{border-right:1px solid var(--border);background:var(--surface);flex-direction:column;flex-shrink:0;gap:8px;width:240px;height:100dvh;padding:22px 16px;display:flex;position:sticky;top:0}.sidebar .brand{padding:0 8px 18px}.sidebar nav{flex-direction:column;flex:1;gap:4px;display:flex}.sidebar nav button{color:var(--muted);text-align:left;border-radius:12px;align-items:center;gap:12px;padding:11px 12px;font-weight:600;display:flex}.sidebar nav button:hover{background:var(--surface-2);color:var(--text)}.sidebar nav button.on{background:var(--accent-soft);color:var(--accent)}.theme-btn{color:var(--muted);border-radius:12px;align-items:center;gap:10px;padding:10px 12px;font-size:14px;display:flex}.theme-btn:hover{background:var(--surface-2)}.main{padding:26px 32px 48px}.topbar,.bottomnav,.fab{display:none}.grid2{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);align-items:start;gap:18px;display:grid}h1{font-size:30px}}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);box-shadow:var(--shadow);min-width:0;padding:16px}.card-head{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.card-head h3{margin:0}.icon-btn{width:38px;height:38px;color:var(--muted);border-radius:12px;flex-shrink:0;place-items:center;display:grid}.icon-btn:hover:not(:disabled){background:var(--surface-2);color:var(--text)}.btn{border-radius:14px;justify-content:center;align-items:center;gap:8px;height:46px;padding:0 18px;font-weight:600;transition:transform .1s,background .15s;display:inline-flex}.btn:active:not(:disabled){transform:scale(.98)}.btn.sm{border-radius:12px;height:38px;padding:0 14px;font-size:14px}.btn.primary{background:var(--accent);color:var(--accent-text)}.btn.primary:hover:not(:disabled){filter:brightness(1.07)}.btn.ghost{background:var(--surface-2)}.btn.ghost:hover:not(:disabled){background:var(--border)}.btn.danger{color:var(--danger)}.btn.block{width:100%}.btn.grow{flex:1}.btn-row{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.seg{background:var(--surface-2);border:1px solid var(--border);border-radius:14px;gap:2px;padding:4px;display:flex}.seg button{height:36px;color:var(--muted);white-space:nowrap;border-radius:10px;flex:1;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:14px;font-weight:600;display:inline-flex}.seg button.on{background:var(--surface);color:var(--text);box-shadow:0 1px 3px #0000001f}.seg-sm button{height:32px;font-size:13px}.chips{flex-wrap:wrap;gap:6px;display:flex}.chips.scroll-x{scrollbar-width:none;flex-wrap:nowrap;margin:0 -16px;padding:0 16px;overflow-x:auto}.chips.scroll-x::-webkit-scrollbar{display:none}.chip{background:var(--surface);border:1px solid var(--border);height:34px;color:var(--muted);border-radius:999px;flex-shrink:0;align-items:center;gap:6px;padding:0 12px;font-size:13.5px;font-weight:600;display:inline-flex}.chip .cat-icon{border-radius:50%}.chip.on{background:var(--accent-soft);border-color:var(--accent);color:var(--accent)}.cat-icon{border-radius:13px;flex-shrink:0;place-items:center;display:grid}.list{flex-direction:column;display:flex}.row{text-align:left;border-radius:12px;align-items:center;gap:12px;width:calc(100% + 16px);margin:0 -8px;padding:10px 8px;display:flex}.row:hover{background:var(--surface-2)}.row-main{flex:1;min-width:0}.row-title{white-space:nowrap;text-overflow:ellipsis;font-weight:600;overflow:hidden}.row-sub{color:var(--muted);align-items:center;gap:4px;font-size:12.5px;display:flex}.row-amt{font-variant-numeric:tabular-nums;white-space:nowrap;font-weight:700}.row-line{justify-content:space-between;gap:8px;display:flex}.progress{background:var(--surface-2);border-radius:99px;height:6px;margin:6px 0 4px;overflow:hidden}.progress span{border-radius:inherit;background:var(--accent);height:100%;transition:width .4s;display:block}.big-progress{height:8px;margin:10px 0 8px}.big-progress span{background:var(--success)}.empty{text-align:center;padding:22px 8px 12px}.empty-icon{background:var(--accent-soft);width:56px;height:56px;color:var(--accent);border-radius:18px;place-items:center;margin:0 auto 10px;display:grid}.empty-title{margin-bottom:2px;font-weight:700}.period-nav{justify-content:space-between;align-items:center;display:flex}.period-label{border-radius:10px;padding:6px 12px;font-size:16px;font-weight:700}.period-label:hover{background:var(--surface-2)}.hero .big{letter-spacing:-.03em;font-variant-numeric:tabular-nums;margin:2px 0 6px;font-size:38px;font-weight:800}.hero-meta{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:13px;display:flex}.delta{border-radius:99px;align-items:center;gap:4px;padding:3px 8px;font-weight:700;display:inline-flex}.delta.up{color:var(--danger);background:color-mix(in srgb, var(--danger) 12%, transparent)}.delta.down{color:var(--success);background:color-mix(in srgb, var(--success) 12%, transparent)}.chart{margin-top:14px}.chart-tip{color:var(--muted);min-height:20px;margin-bottom:6px;font-size:13px}.chart-tip b{color:var(--text)}.bars{align-items:flex-end;gap:3px;height:130px;display:flex}.bar{border-radius:6px;flex:1;align-items:flex-end;min-width:0;height:100%;display:flex}.bar span{background:color-mix(in srgb, var(--accent) 35%, transparent);border-radius:5px 5px 3px 3px;width:100%;transition:height .35s}.bar.now span{background:var(--accent)}.bar.sel span,.bar:hover span{background:var(--accent);filter:brightness(1.1)}.bar-labels{gap:3px;margin-top:6px;display:flex}.bar-labels span{text-align:center;min-width:0;color:var(--muted);white-space:nowrap;flex:1;font-size:11px;overflow:visible}.stack{border-radius:99px;gap:2px;height:12px;margin-bottom:8px;display:flex;overflow:hidden}.stack span{min-width:4px}.cat-row{align-items:flex-start}.cat-row .cat-icon{margin-top:2px}.search{background:var(--surface);border:1px solid var(--border);height:46px;color:var(--muted);border-radius:14px;align-items:center;gap:8px;padding:0 6px 0 14px;display:flex}.search input{color:var(--text);background:0 0;border:0;outline:0;flex:1;min-width:0}.day-group{padding-top:12px;padding-bottom:8px}.day-head{color:var(--muted);justify-content:space-between;margin-bottom:2px;font-size:13px;font-weight:700;display:flex}.week-strip{align-items:center;gap:2px;display:flex}.wday{color:var(--muted);border-radius:14px;flex-direction:column;flex:1;align-items:center;gap:1px;min-width:0;padding:8px 0 7px;font-size:11.5px;display:flex}.wday b{color:var(--text);font-size:17px}.wday.today b{color:var(--accent)}.wday.on{background:var(--accent);color:color-mix(in srgb, var(--accent-text) 80%, transparent)}.wday.on b{color:var(--accent-text)}.dot{background:var(--accent);border-radius:50%;width:5px;height:5px;margin-top:2px}.dot.done{background:var(--success)}.dot.none{background:0 0}.wday.on .dot{background:var(--accent-text)}.day-summary{justify-content:space-between;align-items:flex-start;display:flex}.day-summary h3{margin:0}.task{border-top:1px solid var(--border);align-items:center;gap:12px;padding:10px 0;display:flex}.task:first-child{border-top:0}.task.done .row-title{color:var(--muted);text-decoration:line-through}.task.prio-high .row-title:after{content:"";background:var(--danger);vertical-align:2px;border-radius:50%;width:7px;height:7px;margin-left:7px;display:inline-block}.status-btn{border:2px solid var(--border);color:#fff;border-radius:50%;flex-shrink:0;place-items:center;width:30px;height:30px;transition:all .15s;display:grid}.status-btn:hover{border-color:var(--accent)}.status-btn.running{border-color:var(--running);background:var(--running);animation:1.8s infinite pulse}.status-btn.done{border-color:var(--success);background:var(--success)}@keyframes pulse{0%,to{box-shadow:0 0 0 0 color-mix(in srgb, var(--running) 45%, transparent)}50%{box-shadow:0 0 0 7px #0000}}.task-main{text-align:left;flex:1;min-width:0}.task-meta{color:var(--muted);flex-wrap:wrap;gap:4px 10px;margin-top:2px;font-size:12.5px;display:flex}.task-meta span{align-items:center;gap:4px;display:inline-flex}.tag{border-radius:99px;padding:1px 7px;font-size:11.5px;font-weight:700}.tag.late{background:color-mix(in srgb, var(--warn) 18%, transparent);color:var(--warn)}.tag.running{background:color-mix(in srgb, var(--running) 16%, transparent);color:var(--running);font-variant-numeric:tabular-nums}.tag.running.over{background:color-mix(in srgb, var(--danger) 16%, transparent);color:var(--danger)}.status-select{appearance:none;background:var(--surface-2);color:var(--muted);cursor:pointer;text-align:center;border:0;border-radius:99px;padding:6px 12px;font-size:12.5px;font-weight:700}.status-select.running{background:color-mix(in srgb, var(--running) 16%, transparent);color:var(--running)}.status-select.done{background:color-mix(in srgb, var(--success) 16%, transparent);color:var(--success)}.cal-card{padding:12px}.cal-card .period-nav{margin-bottom:6px}.cal-grid{grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;display:grid}.cal-head span{text-align:center;color:var(--muted);padding:4px 0;font-size:11.5px;font-weight:600}.cal-cell{text-align:left;background:var(--surface-2);border:1px solid #0000;border-radius:10px;flex-direction:column;gap:2px;min-width:0;min-height:64px;padding:5px 4px 4px;display:flex}.cal-cell:hover{border-color:var(--border)}.cal-cell.out{opacity:.45;background:0 0}.cal-num{font-size:13px;font-weight:700;line-height:1.1}.cal-cell.today .cal-num{background:var(--accent);width:22px;height:22px;color:var(--accent-text);border-radius:50%;place-items:center;margin:-3px 0 0 -2px;display:inline-grid}.cal-cell.on{border-color:var(--accent);box-shadow:inset 0 0 0 1px var(--accent)}.cal-ev{white-space:nowrap;text-overflow:ellipsis;background:color-mix(in srgb, var(--c) 22%, transparent);border-left:2px solid var(--c);border-radius:4px;padding:0 4px;font-size:10.5px;font-weight:600;line-height:1.35;overflow:hidden}.cal-more{color:var(--muted);font-size:10px}.cal-foot{justify-content:space-between;align-items:center;gap:2px;margin-top:auto;display:flex}.cal-amt{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10px;font-weight:700;overflow:hidden}.cal-dot{background:var(--success);border-radius:50%;flex-shrink:0;width:6px;height:6px;display:inline-block}.cal-legend{color:var(--muted);flex-wrap:wrap;align-items:center;gap:6px 16px;margin-top:12px;font-size:13px;display:flex}.cal-legend b{color:var(--text)}@media (width<=600px){.cal-cell{min-height:54px;padding:4px 3px 3px}.cal-ev{background:var(--c);border-left:0;height:4px;padding:0;font-size:0}}@media (width>=900px){.cal-cell{min-height:84px}}.ev-row{align-items:stretch}.ev-bar{border-radius:4px;flex-shrink:0;width:4px}.journey{color:var(--text)}.quick-add{gap:8px;margin-bottom:8px;display:flex}.quick-add input{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;outline:0;flex:1;min-width:0;height:42px;padding:0 14px}.quick-add input:focus{border-color:var(--accent);background:var(--surface)}.quick-add .btn{width:42px;height:42px;padding:0}.journal-list{flex-direction:column;display:flex}.jrow{text-align:left;border-radius:10px;align-items:flex-start;gap:12px;width:calc(100% + 16px);margin:0 -8px;padding:8px;display:flex}button.jrow:hover{background:var(--surface-2)}.jicon{min-width:40px;height:22px;color:var(--muted);background:var(--surface-2);font-variant-numeric:tabular-nums;border-radius:99px;flex-shrink:0;place-items:center;font-size:11.5px;font-weight:700;display:grid}.jicon.done{background:var(--success);color:#fff;width:22px;min-width:22px}.jtext{white-space:pre-wrap;overflow-wrap:anywhere;flex-direction:column;flex:1;gap:2px;min-width:0;display:flex}.day-link{width:100%}.day-link:hover span:first-child{text-decoration:underline}.journey-card{text-align:center}.journey-big{letter-spacing:-.03em;font-size:34px;font-weight:800}.overlay{z-index:50;background:#08090e80;justify-content:center;align-items:flex-end;animation:.15s fade;display:flex;position:fixed;inset:0}.sheet{background:var(--surface);width:100%;max-width:560px;max-height:92dvh;padding-bottom:env(safe-area-inset-bottom);border-radius:24px 24px 0 0;flex-direction:column;animation:.22s cubic-bezier(.2,.9,.3,1) up;display:flex}@media (width>=640px){.overlay{align-items:center;padding:24px}.sheet{border-radius:24px;animation:.18s ease-out pop}}@keyframes fade{0%{opacity:0}}@keyframes up{0%{opacity:.5;transform:translateY(40px)}}@keyframes pop{0%{opacity:0;transform:scale(.97)}}.sheet-head{justify-content:space-between;align-items:center;padding:16px 16px 6px 20px;display:flex}.sheet-body{padding:8px 20px 12px;overflow-y:auto}.sheet-foot{border-top:1px solid var(--border);gap:10px;padding:12px 20px 16px;display:flex}.form{flex-direction:column;gap:14px;display:flex}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field-label{color:var(--muted);font-size:13px;font-weight:600}.field input,.field select,.field textarea,.cat-preview input{border:1px solid var(--border);background:var(--surface-2);border-radius:12px;outline:0;width:100%;height:46px;padding:0 14px}.field textarea{resize:vertical;height:auto;padding:12px 14px}.field input:focus,.field select:focus,.field textarea:focus,.cat-preview input:focus{border-color:var(--accent);background:var(--surface)}.row2{grid-template-columns:1fr 1fr;gap:10px;display:grid}.card .row2,.card .seg{margin-top:12px}.card>.seg:first-of-type{margin-top:0}.amount-input{justify-content:center;align-items:baseline;gap:8px;padding:6px 0 2px;display:flex}.amount-input input{text-align:right;letter-spacing:-.03em;font-variant-numeric:tabular-nums;background:0 0;border:0;outline:0;width:100%;max-width:260px;font-size:44px;font-weight:800}.amount-input span{color:var(--muted);flex:1;font-size:22px;font-weight:700}.cat-grid{grid-template-columns:repeat(4,1fr);gap:6px;display:grid}.cat-tile{color:var(--muted);text-align:center;border:1.5px solid #0000;border-radius:14px;flex-direction:column;align-items:center;gap:5px;padding:10px 2px 8px;font-size:11.5px;font-weight:600;line-height:1.2;display:flex}.cat-tile:hover{background:var(--surface-2)}.cat-tile.on{border-color:var(--c);background:color-mix(in srgb, var(--c) 10%, transparent);color:var(--text)}.toggle{cursor:pointer;justify-content:space-between;align-items:center;gap:12px;margin-top:8px;padding:4px 0;display:flex}.toggle input{opacity:0;pointer-events:none;position:absolute}.switch{background:var(--border);border-radius:99px;flex-shrink:0;width:44px;height:26px;transition:background .2s;position:relative}.switch:after{content:"";background:#fff;border-radius:50%;width:20px;height:20px;transition:transform .2s;position:absolute;top:3px;left:3px;box-shadow:0 1px 3px #00000040}.toggle input:checked+.switch{background:var(--accent)}.toggle input:checked+.switch:after{transform:translate(18px)}.toggle input:focus-visible+.switch{outline:2px solid var(--accent);outline-offset:2px}.weekday-pick{gap:6px;display:flex}.weekday-pick button{background:var(--surface-2);height:42px;color:var(--muted);border-radius:12px;flex:1;font-weight:700}.weekday-pick button.on{background:var(--accent);color:var(--accent-text)}.cat-preview{align-items:center;gap:12px;display:flex}.cat-preview input{flex:1;font-weight:600}.input-suffix{align-items:center;gap:8px;display:flex}.input-suffix span{color:var(--muted);font-weight:600}.swatches{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.swatches button{width:30px;height:30px;box-shadow:0 0 0 1px var(--border);border:3px solid #0000;border-radius:50%}.swatches button.on{border-color:var(--surface);box-shadow:0 0 0 2px var(--text)}.swatches input[type=color]{cursor:pointer;background:0 0;border:0;width:34px;height:34px;padding:0}.icon-grid{grid-template-columns:repeat(auto-fill,minmax(44px,1fr));gap:6px;display:grid}.icon-grid button{height:44px;color:var(--muted);background:var(--surface-2);border:1.5px solid #0000;border-radius:12px;place-items:center;display:grid}.icon-grid button.on{background:var(--surface)}.about{align-items:center;gap:14px;display:flex}.about img{border-radius:12px}.toasts{z-index:60;left:50%;bottom:calc(150px + env(safe-area-inset-bottom));pointer-events:none;flex-direction:column;gap:8px;width:min(92vw,420px);display:flex;position:fixed;transform:translate(-50%)}@media (width>=900px){.toasts{bottom:28px}}.toast{pointer-events:auto;color:#f1f2f6;background:#1d1e25;border-radius:14px;justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;font-size:14px;animation:.2s up;display:flex;box-shadow:0 10px 30px #00000040}.toast button{color:#a99fff;font-weight:700}[data-theme=dark] .toast{color:#000;background:#f5f5f5}[data-theme=dark] .toast button{color:#000;text-decoration:underline}[data-theme=dark] .seg button.on{background:#000;box-shadow:inset 0 0 0 1px #fff}[data-theme=dark] .sidebar nav button.on{box-shadow:inset 0 0 0 1px #ffffff8c}[data-theme=dark] .card{border-color:#262626}[data-theme=dark] .icon-grid button.on{color:#fff!important;border-color:#fff!important}[data-theme=dark] .wday.on{box-shadow:0 0 0 1px #fff}[data-theme=dark] .bar span{background:#ffffff47}[data-theme=dark] .bar.now span,[data-theme=dark] .bar.sel span,[data-theme=dark] .bar:hover span{background:#fff}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}
