:root{--bg: #0b1020;--bg-elevated: #131a2e;--bg-elevated-2: #1a2240;--border: #1f2940;--border-strong: #2d3a5c;--fg: #e5e7eb;--fg-muted: #9ca3af;--fg-subtle: #6b7280;--accent: #10b981;--accent-soft: rgba(16, 185, 129, .12);--danger: #ef4444;--danger-soft: rgba(239, 68, 68, .12);--warning: #f59e0b;--warning-soft: rgba(245, 158, 11, .12);--info: #3b82f6;--progress-track: var(--border);--progress-fill: var(--accent);--progress-warn: var(--warning);--progress-danger: var(--danger);--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, system-ui, sans-serif;--font-mono: "SF Mono", "Cascadia Code", Menlo, Consolas, monospace;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 24px;--space-8: 32px;--space-10: 40px;--space-12: 48px;--space-16: 64px;--radius-sm: 8px;--radius-md: 12px;--radius-lg: 16px;--radius-xl: 20px;--radius-full: 9999px;--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 4px 8px rgba(0, 0, 0, .4);--shadow-lg: 0 8px 24px rgba(0, 0, 0, .5);--bp-tablet: 600px;--bp-desktop: 1024px}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:var(--font-sans);font-size:16px;line-height:1.5;background:var(--bg);color:var(--fg);-webkit-font-smoothing:antialiased;font-variant-numeric:tabular-nums;overflow-x:hidden}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important;animation:none!important}}.app{max-width:720px;margin:0 auto;padding:var(--space-4);padding-bottom:calc(var(--space-4) + env(safe-area-inset-bottom));min-height:100%}.app.tablet{max-width:1280px;display:grid;grid-template-columns:72px 1fr 320px;gap:var(--space-5);padding:var(--space-5)}.app.tablet.wide{grid-template-columns:200px 1fr 320px}@media (min-width: 1024px){.app.tablet{grid-template-columns:200px 1fr 360px}}.header{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.header h1{font-size:20px;font-weight:600;margin:0;letter-spacing:-.01em}.header .back{display:inline-flex;align-items:center;gap:var(--space-2);background:none;border:none;color:var(--fg-muted);font-size:14px;padding:var(--space-2) 0;cursor:pointer;min-height:44px}.header .back:hover{color:var(--fg)}.header-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);margin-bottom:var(--space-4)}.header-row h1{font-size:24px;font-weight:600;margin:0;letter-spacing:-.01em}.period-label{color:var(--fg-muted);font-size:14px}.icon-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;border-radius:var(--radius-full);background:transparent;border:1px solid transparent;color:var(--fg-muted);cursor:pointer;transition:background .15s,color .15s,border-color .15s}.icon-button:hover{background:var(--bg-elevated-2);color:var(--fg);border-color:var(--border)}.bottom-nav{position:fixed;left:0;right:0;bottom:0;background:var(--bg-elevated);border-top:1px solid var(--border);display:grid;grid-template-columns:repeat(5,1fr);padding-bottom:env(safe-area-inset-bottom);z-index:5}.bottom-nav button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;background:none;border:none;color:var(--fg-muted);font-size:11px;font-weight:500;padding:var(--space-2) 0;min-height:56px;cursor:pointer;transition:color .15s}.bottom-nav button.active{color:var(--accent)}.bottom-nav button:active{background:var(--bg-elevated-2)}.side-nav{display:flex;flex-direction:column;gap:var(--space-1);padding-top:var(--space-4);position:sticky;top:var(--space-4);align-self:start}.side-nav button{display:flex;align-items:center;gap:var(--space-3);background:none;border:1px solid transparent;color:var(--fg-muted);font-size:14px;font-weight:500;padding:var(--space-3) var(--space-3);border-radius:var(--radius-md);cursor:pointer;min-height:44px;width:100%;text-align:left;transition:background .15s,color .15s,border-color .15s}.side-nav button:hover{background:var(--bg-elevated);color:var(--fg)}.side-nav button.active{background:var(--bg-elevated-2);color:var(--accent);border-color:var(--border-strong)}.side-nav .divider{height:1px;background:var(--border);margin:var(--space-3) var(--space-2)}.side-nav .icon-only-label{display:none}@media (max-width: 1023px){.side-nav button .label{display:none}.side-nav{align-items:center}.side-nav button{width:48px;padding:var(--space-3);justify-content:center}}@media (min-width: 1024px){.side-nav button .label{display:inline}}@media (max-width: 599px){.side-nav{display:none}.app{padding-bottom:calc(80px + env(safe-area-inset-bottom))}}@media (min-width: 600px){.bottom-nav{display:none}}.hero{background:linear-gradient(180deg,var(--bg-elevated) 0%,var(--bg-elevated-2) 100%);border:1px solid var(--accent);border-radius:var(--radius-lg);padding:var(--space-5) var(--space-4);margin-bottom:var(--space-3);text-align:center;box-shadow:var(--shadow-md)}.hero .label{color:var(--fg-muted);font-size:var(--text-micro, 12px);font-weight:500;text-transform:uppercase;letter-spacing:.08em;margin-bottom:var(--space-2)}.hero .value{font-size:40px;font-weight:700;line-height:1.1;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.hero .hint{color:var(--fg-subtle);font-size:12px;margin-top:var(--space-2)}.value.positive{color:var(--accent)}.value.negative{color:var(--danger)}.value.muted{color:var(--fg-muted)}.value-row{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-3)}.card{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);padding:var(--space-3) var(--space-4)}.card .label{color:var(--fg-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;font-weight:500}.card .value{font-size:22px;font-weight:600;margin-top:4px;font-variant-numeric:tabular-nums}.cards{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-bottom:var(--space-3)}@media (min-width: 600px){.cards{grid-template-columns:repeat(3,1fr)}}.stat{display:flex;flex-direction:column;gap:var(--space-2);padding:var(--space-3) 0;border-bottom:1px solid var(--border)}.stat:last-child{border-bottom:none}.stat .label{color:var(--fg-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em;font-weight:500;display:flex;justify-content:space-between;align-items:baseline}.stat .value{font-size:18px;font-weight:600;font-variant-numeric:tabular-nums}.stat .value-pair{display:flex;justify-content:space-between;align-items:baseline;gap:var(--space-2)}.stat .value-pair .total{color:var(--fg-subtle);font-size:13px;font-weight:400}.panel{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);margin-bottom:var(--space-3)}.panel h2{font-size:16px;font-weight:600;margin:0 0 var(--space-3);color:var(--fg)}.context-panel{position:sticky;top:var(--space-5);align-self:start}.progress{display:flex;flex-direction:column;gap:var(--space-2);margin-bottom:var(--space-3)}.progress .head{display:flex;justify-content:space-between;align-items:baseline;font-size:14px}.progress .head .label{color:var(--fg-muted);font-weight:500}.progress .head .numbers{font-variant-numeric:tabular-nums;color:var(--fg);font-weight:500}.progress .head .numbers .total{color:var(--fg-subtle);font-weight:400}.progress .head .pct{color:var(--fg-muted);margin-left:var(--space-2);font-size:12px}.progress .track{height:8px;background:var(--progress-track);border-radius:var(--radius-full);overflow:hidden}.progress .fill{height:100%;background:var(--progress-fill);border-radius:var(--radius-full);transition:width .3s ease}.progress.warn .fill{background:var(--progress-warn)}.progress.danger .fill{background:var(--progress-danger)}.list-aggregate{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--space-3);padding:var(--space-3) var(--space-4);background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md)}.list-aggregate .label{color:var(--fg-muted);font-size:12px;text-transform:uppercase;letter-spacing:.04em}.list-aggregate .value{font-size:20px;font-weight:600;font-variant-numeric:tabular-nums}.day-group{margin-bottom:var(--space-4)}.day-group .head{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:var(--space-2);padding:0 var(--space-1)}.day-group .head .date{color:var(--fg-muted);font-size:13px;font-weight:500;text-transform:uppercase;letter-spacing:.04em}.day-group .head .total{font-size:14px;font-weight:600;font-variant-numeric:tabular-nums}.day-group .items{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);overflow:hidden}.record{display:grid;grid-template-columns:auto 1fr auto auto;align-items:center;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--border)}.record:last-child{border-bottom:none}.record .amount{font-size:16px;font-weight:600;font-variant-numeric:tabular-nums;min-width:80px;text-align:right}.record .body{display:flex;flex-direction:column;gap:2px;min-width:0}.record .title{font-size:15px;font-weight:500;color:var(--fg);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record .meta{font-size:12px;color:var(--fg-subtle);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.record .actions{display:flex;gap:var(--space-1);margin:0}.record .actions button{width:32px;height:32px;border-radius:var(--radius-sm);background:transparent;border:none;color:var(--fg-muted);cursor:pointer;display:inline-flex;align-items:center;justify-content:center}.record .actions button:hover{background:var(--bg-elevated-2);color:var(--fg)}.record .actions button.danger:hover{background:var(--danger-soft);color:var(--danger)}.actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:var(--space-3);margin-top:var(--space-4)}@media (max-width: 599px){.actions{grid-template-columns:1fr}}button.primary,button.secondary,button.danger{border:none;border-radius:var(--radius-md);padding:var(--space-3) var(--space-2);font-size:14px;font-weight:600;cursor:pointer;min-height:44px;display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);transition:filter .15s,background .15s,border-color .15s}button.primary{background:var(--accent);color:#0b1020}button.primary:hover{filter:brightness(1.1)}button.secondary{background:transparent;color:var(--fg);border:1px solid var(--border-strong)}button.secondary:hover{background:var(--bg-elevated-2)}button.danger{background:var(--danger);color:#fff}button.danger:hover{filter:brightness(1.1)}button:disabled{opacity:.5;cursor:not-allowed}button.ghost{background:transparent;border:none;color:var(--accent);cursor:pointer;padding:var(--space-2) var(--space-3);min-height:44px;border-radius:var(--radius-sm)}button.ghost:hover{background:var(--accent-soft)}input[type=number],input[type=text],input[type=date]{width:100%;padding:var(--space-3);border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--bg-elevated);color:var(--fg);font-size:16px;min-height:44px}.field{margin-bottom:var(--space-3)}.field label{display:block;color:var(--fg-muted);font-size:12px;font-weight:500;margin-bottom:var(--space-2);text-transform:uppercase;letter-spacing:.04em}.empty{text-align:center;color:var(--fg-muted);padding:var(--space-10) var(--space-5)}.empty p{margin:var(--space-2) 0}.empty .hint{color:var(--fg-subtle);font-size:14px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:flex-end;justify-content:center;z-index:10;padding:0}@media (min-width: 600px){.modal-backdrop{align-items:center;padding:var(--space-4)}}.modal{background:var(--bg);border:1px solid var(--border-strong);border-top-left-radius:var(--radius-lg);border-top-right-radius:var(--radius-lg);width:100%;max-width:480px;padding:var(--space-5);padding-bottom:calc(var(--space-5) + env(safe-area-inset-bottom));box-shadow:var(--shadow-lg);max-height:90vh;overflow-y:auto}@media (min-width: 600px){.modal{border-radius:var(--radius-lg)}}.modal h2{margin:0 0 var(--space-3);font-size:18px;font-weight:600}.modal p{color:var(--fg-muted);font-size:14px;line-height:1.5;margin:0 0 var(--space-3)}.modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-4)}.modal-actions .full{grid-column:1 / -1}.settings-section{background:var(--bg-elevated);border:1px solid var(--border);border-radius:var(--radius-md);margin-bottom:var(--space-3);overflow:hidden}.settings-section h2{font-size:12px;font-weight:500;color:var(--fg-muted);text-transform:uppercase;letter-spacing:.06em;padding:var(--space-3) var(--space-4) var(--space-2);margin:0}.settings-row{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-4);border-top:1px solid var(--border);min-height:56px}.settings-row .label{display:flex;flex-direction:column;gap:2px;min-width:0}.settings-row .label .title{font-size:15px;font-weight:500;color:var(--fg)}.settings-row .label .hint{font-size:12px;color:var(--fg-subtle)}.settings-row .value{color:var(--fg-muted);font-size:14px;font-variant-numeric:tabular-nums}.settings-row.danger .label .title{color:var(--danger)}.danger-zone{border-color:var(--danger)}.danger-zone h2{color:var(--danger)}
