@import"https://fonts.googleapis.com/css2?family=Fraunces:opsz,wght,SOFT,WONK@9..144,300..900,0..100,0..1&family=IBM+Plex+Sans:wght@300;400;500;600;700&family=IBM+Plex+Mono:wght@400;500;600&display=swap";:root{--bg: #f6f1e7;--bg-pattern: #efe8d6;--surface: #ffffff;--surface-alt: #f1ead8;--surface-sunk: #ebe3cf;--border: #d9d0b8;--border-strong: #b8ad92;--text: #1a1714;--text-muted: #6a6354;--text-faint: #9b9381;--accent: #b94a1d;--accent-hover: #a23f15;--accent-soft: rgba(185, 74, 29, .08);--accent-bg: #f4e0d2;--positive: #1f5d3f;--positive-soft: rgba(31, 93, 63, .1);--negative: #993028;--negative-soft: rgba(153, 48, 40, .1);--shadow-sm: 0 1px 2px rgba(40, 30, 15, .04);--shadow-md: 0 4px 14px rgba(40, 30, 15, .06);--shadow-lg: 0 12px 40px rgba(40, 30, 15, .1);--radius: 4px;--radius-lg: 8px;--serif: "Fraunces", "Times New Roman", serif;--sans: "IBM Plex Sans", system-ui, -apple-system, sans-serif;--mono: "IBM Plex Mono", "SF Mono", Menlo, monospace;--sidebar-w: 248px;--topbar-h: 64px}[data-theme=dark]{--bg: #0e0f12;--bg-pattern: #14161b;--surface: #181a20;--surface-alt: #1e2128;--surface-sunk: #14161b;--border: #2a2e38;--border-strong: #3a3f4d;--text: #ede8db;--text-muted: #8c8576;--text-faint: #5d5849;--accent: #df6a35;--accent-hover: #e87a44;--accent-soft: rgba(223, 106, 53, .12);--accent-bg: rgba(223, 106, 53, .16);--positive: #4fbe85;--positive-soft: rgba(79, 190, 133, .12);--negative: #d96860;--negative-soft: rgba(217, 104, 96, .12);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .3);--shadow-md: 0 4px 14px rgba(0, 0, 0, .4);--shadow-lg: 0 12px 40px rgba(0, 0, 0, .55)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:var(--sans);font-size:15px;line-height:1.5;font-feature-settings:"ss01","ss02","cv01";-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}body{background-image:radial-gradient(circle at 1px 1px,var(--bg-pattern) 1px,transparent 0);background-size:22px 22px;background-position:0 0;min-height:100vh}#root{min-height:100vh}button{font-family:inherit;font-size:inherit;cursor:pointer;border:0;background:transparent;color:inherit}input,select,textarea{font-family:inherit;font-size:inherit;color:var(--text)}a{color:var(--accent);text-decoration:none}a:hover{text-decoration:underline}::selection{background:var(--accent);color:var(--surface)}.t-serif{font-family:var(--serif);font-weight:500;letter-spacing:-.02em}.t-mono{font-family:var(--mono);font-feature-settings:"zero","ss02"}.t-eyebrow{font-family:var(--sans);font-size:11px;font-weight:500;letter-spacing:.18em;text-transform:uppercase;color:var(--text-muted)}.t-display{font-family:var(--serif);font-weight:400;letter-spacing:-.04em;font-size:clamp(28px,4vw,44px);line-height:1;color:var(--text)}.amount{font-family:var(--mono);font-feature-settings:"tnum" 1,"zero" 1;font-variant-numeric:tabular-nums}.app{display:grid;grid-template-columns:var(--sidebar-w) 1fr;min-height:100vh}.sidebar{background:var(--surface);border-right:1px solid var(--border);padding:28px 20px 24px;display:flex;flex-direction:column;gap:32px;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:baseline;gap:10px;padding:0 8px}.brand-mark{display:inline-block;width:10px;height:10px;background:var(--accent);transform:rotate(45deg)}.brand-name{font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:-.02em;color:var(--text)}.brand-sub{font-family:var(--serif);font-style:italic;font-size:12px;color:var(--text-muted);letter-spacing:.02em}.nav{display:flex;flex-direction:column;gap:2px}.nav-section{font-size:10px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;color:var(--text-faint);padding:0 12px;margin:12px 0 6px}.nav-link{display:flex;align-items:center;gap:12px;padding:9px 12px;border-radius:var(--radius);color:var(--text-muted);font-size:14px;font-weight:500;letter-spacing:-.005em;cursor:pointer;transition:all .15s ease;position:relative}.nav-link:hover,.nav-link.active{color:var(--text);background:var(--surface-alt)}.nav-link.active:before{content:"";position:absolute;left:-20px;top:8px;bottom:8px;width:3px;background:var(--accent)}.nav-icon{width:16px;height:16px;flex-shrink:0;opacity:.7}.sidebar-foot{margin-top:auto;padding:12px;border-top:1px solid var(--border);display:flex;flex-direction:column;gap:8px}.main{display:flex;flex-direction:column;min-width:0}.topbar{height:var(--topbar-h);border-bottom:1px solid var(--border);background:var(--surface);display:flex;align-items:center;justify-content:space-between;padding:0 32px;position:sticky;top:0;z-index:10;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.topbar-title{font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:-.02em;color:var(--text)}.topbar-actions{display:flex;align-items:center;gap:12px}.page{padding:32px;max-width:1480px;margin:0 auto;width:100%;animation:pageIn .4s cubic-bezier(.2,.7,.3,1)}@keyframes pageIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.page-header{margin-bottom:32px;display:flex;align-items:flex-end;justify-content:space-between;gap:16px;flex-wrap:wrap}.page-title{font-family:var(--serif);font-size:clamp(32px,4vw,44px);font-weight:400;letter-spacing:-.03em;line-height:1;margin:0 0 8px}.page-title em{font-style:italic;color:var(--accent)}.page-sub{color:var(--text-muted);font-size:14px;max-width:60ch}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:8px 14px;border-radius:var(--radius);font-size:13px;font-weight:500;letter-spacing:-.005em;transition:all .15s ease;white-space:nowrap;border:1px solid transparent}.btn-primary{background:var(--text);color:var(--bg)}.btn-primary:hover{background:var(--accent);color:var(--surface)}.btn-secondary{background:var(--surface);color:var(--text);border-color:var(--border)}.btn-secondary:hover{border-color:var(--border-strong);background:var(--surface-alt)}.btn-ghost{color:var(--text-muted);padding:6px 10px}.btn-ghost:hover{color:var(--text);background:var(--surface-alt)}.btn-accent{background:var(--accent);color:#fff}.btn-accent:hover{background:var(--accent-hover)}.btn-danger{color:var(--negative)}.btn-danger:hover{background:var(--negative-soft)}.btn-icon{width:32px;height:32px;padding:0;display:inline-flex;align-items:center;justify-content:center}.field{display:flex;flex-direction:column;gap:6px}.field-label{font-size:11px;font-weight:500;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted)}.field-hint{font-size:12px;color:var(--text-faint);font-style:italic;font-family:var(--serif)}.input,.select,.textarea{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:9px 12px;font-size:14px;color:var(--text);transition:all .15s ease;width:100%}.input:focus,.select:focus,.textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-soft)}.input.amount,.input.t-mono{font-family:var(--mono);text-align:right}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:24px;position:relative}.card-head{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:20px;gap:12px;flex-wrap:wrap}.card-title{font-family:var(--serif);font-size:20px;font-weight:500;letter-spacing:-.015em;margin:0}.card-sub{color:var(--text-muted);font-size:13px;margin-top:2px}.kpi-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:32px}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:20px 22px;position:relative;overflow:hidden;transition:all .2s ease}.kpi:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:var(--kpi-accent, var(--border))}.kpi:hover{transform:translateY(-1px);box-shadow:var(--shadow-md)}.kpi-label{display:flex;align-items:center;gap:8px;font-size:11px;font-weight:500;letter-spacing:.15em;text-transform:uppercase;color:var(--text-muted);margin-bottom:14px}.kpi-dot{width:6px;height:6px;border-radius:50%;background:var(--kpi-accent, var(--text-muted))}.kpi-value{font-family:var(--mono);font-feature-settings:"tnum" 1,"zero" 1;font-variant-numeric:tabular-nums;font-size:28px;font-weight:500;letter-spacing:-.02em;line-height:1;color:var(--text);display:flex;align-items:baseline;gap:4px}.kpi-currency{font-family:var(--serif);font-style:italic;font-size:14px;color:var(--text-muted);font-weight:400}.kpi-foot{margin-top:14px;display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text-muted)}.kpi-foot .amount{color:var(--text);font-size:12px}.chips{display:inline-flex;background:var(--surface-sunk);border:1px solid var(--border);border-radius:999px;padding:3px;gap:2px}.chip{padding:5px 14px;border-radius:999px;font-size:12px;font-weight:500;color:var(--text-muted);letter-spacing:.01em;cursor:pointer;transition:all .15s ease}.chip:hover{color:var(--text)}.chip.active{background:var(--surface);color:var(--text);box-shadow:var(--shadow-sm)}.legend-toggles{display:flex;gap:12px;flex-wrap:wrap}.legend-tog{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);cursor:pointer;font-size:12px;font-weight:500;color:var(--text-muted);transition:all .15s ease}.legend-tog:hover{color:var(--text)}.legend-tog.on{border-color:var(--border-strong);color:var(--text)}.legend-tog.off{opacity:.5}.legend-tog .dot{width:8px;height:8px;border-radius:2px;background:var(--dot-color, var(--text-muted))}.chart-wrap{width:100%;height:360px}.tooltip{background:var(--surface);border:1px solid var(--border-strong);border-radius:var(--radius);padding:10px 12px;box-shadow:var(--shadow-lg);font-size:12px;min-width:160px}.tooltip-label{font-family:var(--serif);font-size:13px;font-weight:500;margin-bottom:6px;letter-spacing:-.01em}.tooltip-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:2px 0}.tooltip-row .label{display:inline-flex;align-items:center;gap:6px;color:var(--text-muted)}.tooltip-row .label .dot{width:8px;height:8px;border-radius:2px}.tooltip-row .val{font-family:var(--mono);font-variant-numeric:tabular-nums;color:var(--text)}.grid-2{display:grid;grid-template-columns:1.4fr 1fr;gap:16px}.grid-2-equal{display:grid;grid-template-columns:1fr 1fr;gap:16px}.tbl-wrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;font-weight:500;font-size:11px;letter-spacing:.12em;text-transform:uppercase;color:var(--text-muted);padding:14px 16px;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0}.tbl td{padding:14px 16px;border-bottom:1px solid var(--border);color:var(--text);vertical-align:middle}.tbl tr:last-child td{border-bottom:0}.tbl tbody tr:hover{background:var(--surface-alt)}.tbl .right{text-align:right}.badge{display:inline-flex;align-items:center;gap:5px;padding:3px 8px;border-radius:4px;font-size:11px;font-weight:500;letter-spacing:.03em}.badge.in{background:var(--negative-soft);color:var(--negative)}.badge.out{background:var(--positive-soft);color:var(--positive)}.badge.muted{background:var(--surface-alt);color:var(--text-muted)}.dropzone{border:1.5px dashed var(--border-strong);border-radius:var(--radius-lg);padding:32px;text-align:center;background:var(--surface);transition:all .2s ease;cursor:pointer;position:relative;overflow:hidden}.dropzone:hover,.dropzone.dragging{border-color:var(--accent);background:var(--accent-soft)}.dropzone-title{font-family:var(--serif);font-size:18px;margin:0 0 6px;letter-spacing:-.015em}.dropzone-sub{color:var(--text-muted);font-size:13px;margin:0}.dropzone-icon{width:36px;height:36px;margin:0 auto 12px;color:var(--accent)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f0c0880;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;animation:fadeIn .18s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.modal{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:640px;max-height:92vh;overflow-y:auto;box-shadow:var(--shadow-lg);animation:modalIn .22s cubic-bezier(.2,.7,.3,1)}@keyframes modalIn{0%{opacity:0;transform:translateY(8px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.modal-head{padding:20px 24px;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:space-between}.modal-title{font-family:var(--serif);font-size:22px;font-weight:500;letter-spacing:-.02em;margin:0}.modal-body{padding:22px 24px}.modal-foot{padding:16px 24px;border-top:1px solid var(--border);display:flex;justify-content:flex-end;gap:8px;background:var(--surface-sunk)}.toast-stack{position:fixed;top:16px;right:16px;z-index:200;display:flex;flex-direction:column;gap:8px;pointer-events:none}.toast{background:var(--text);color:var(--bg);padding:10px 14px;border-radius:var(--radius);font-size:13px;box-shadow:var(--shadow-lg);min-width:220px;max-width:360px;pointer-events:auto;animation:toastIn .22s cubic-bezier(.2,.7,.3,1)}.toast.error{background:var(--negative);color:#fff}.toast.success{background:var(--positive);color:#fff}@keyframes toastIn{0%{opacity:0;transform:translate(20px)}to{opacity:1;transform:translate(0)}}.setup-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:40px 16px;position:relative}.setup-wrap:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;background:radial-gradient(ellipse at 30% 20%,var(--accent-soft) 0%,transparent 50%);pointer-events:none}.setup-card{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:48px 44px;max-width:560px;width:100%;box-shadow:var(--shadow-lg)}.setup-num{font-family:var(--serif);font-style:italic;color:var(--accent);font-size:14px;letter-spacing:.04em;margin-bottom:8px}.setup-title{font-family:var(--serif);font-size:clamp(28px,4vw,38px);font-weight:400;letter-spacing:-.03em;line-height:1.05;margin:0 0 12px}.setup-title em{font-style:italic;color:var(--accent)}.setup-sub{color:var(--text-muted);margin:0 0 28px;font-size:14px;line-height:1.55}.setup-steps{display:flex;gap:6px;margin-bottom:32px}.setup-step{flex:1;height:3px;background:var(--border);border-radius:2px}.setup-step.done{background:var(--accent)}.calc{display:grid;grid-template-columns:380px 1fr;gap:20px;align-items:start}.recommendation{border-left:3px solid var(--accent);padding:16px 20px;background:var(--accent-soft);border-radius:0 var(--radius) var(--radius) 0;font-family:var(--serif);font-size:16px;line-height:1.5;letter-spacing:-.01em;color:var(--text)}.recommendation em{font-style:italic;color:var(--accent)}.empty{text-align:center;padding:60px 20px;color:var(--text-muted)}.empty-title{font-family:var(--serif);font-size:22px;font-weight:400;color:var(--text);margin:0 0 6px;letter-spacing:-.015em}.empty-sub{font-size:14px;margin:0}.spinner{width:14px;height:14px;border:2px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:spin .7s linear infinite;display:inline-block}@keyframes spin{to{transform:rotate(360deg)}}.loading-row{display:flex;align-items:center;justify-content:center;gap:10px;padding:40px;color:var(--text-muted);font-size:13px}.bottom-tabs{display:none}@media (max-width: 1100px){.kpi-grid{grid-template-columns:repeat(2,1fr)}.grid-2,.grid-2-equal,.calc{grid-template-columns:1fr}}@media (max-width: 768px){.app{grid-template-columns:1fr}.sidebar{display:none}.topbar{padding:0 16px}.page{padding:18px 16px 100px}.page-title{font-size:28px}.kpi-grid{grid-template-columns:1fr 1fr;gap:10px;margin-bottom:20px}.kpi{padding:16px}.kpi-value{font-size:22px}.card{padding:16px}.chart-wrap{height:280px}.tbl th,.tbl td{padding:10px 12px;font-size:12px}.bottom-tabs{display:flex;position:fixed;bottom:0;left:0;right:0;background:var(--surface);border-top:1px solid var(--border);z-index:30;padding:6px 4px;padding-bottom:max(6px,env(safe-area-inset-bottom));justify-content:space-around}.bottom-tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;padding:6px 4px;color:var(--text-muted);font-size:10px;font-weight:500;letter-spacing:.04em;text-transform:uppercase;transition:color .15s ease}.bottom-tab.active{color:var(--accent)}.bottom-tab svg{width:20px;height:20px}.setup-card{padding:32px 22px}}@media (max-width: 480px){.kpi-grid{grid-template-columns:1fr}}
