:root{--bg: oklch(.18 .012 60);--bg-2: oklch(.21 .013 60);--surface: oklch(.235 .015 60);--surface-2: oklch(.275 .016 60);--surface-hover: oklch(.31 .017 60);--border: oklch(.34 .013 60);--border-soft: oklch(.28 .012 60);--text: oklch(.96 .012 80);--text-2: oklch(.78 .015 70);--text-3: oklch(.6 .014 65);--text-4: oklch(.46 .012 60);--accent: oklch(.78 .12 65);--accent-soft: oklch(.78 .12 65 / .14);--accent-strong: oklch(.84 .13 70);--gain: oklch(.8 .12 155);--gain-soft: oklch(.8 .12 155 / .15);--loss: oklch(.72 .13 25);--loss-soft: oklch(.72 .13 25 / .15);--gold: oklch(.82 .13 85);--usd: oklch(.78 .11 145);--eur: oklch(.75 .11 240);--stock: oklch(.78 .11 300);--crypto: oklch(.78 .13 45);--cash: oklch(.75 .04 70);--estate: oklch(.74 .09 200);--radius-sm: 8px;--radius: 14px;--radius-lg: 20px;--radius-xl: 28px;--shadow-card: 0 1px 0 0 oklch(1 0 0 / .04) inset, 0 0 0 1px var(--border-soft);--shadow-elev: 0 24px 48px -16px oklch(0 0 0 / .5), 0 0 0 1px var(--border);--font-sans: "Manrope", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font-sans);font-feature-settings:"ss01","ss02","cv11";-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:14px;line-height:1.45}button,input,select,textarea{font:inherit;color:inherit}button{border:none;background:none;cursor:pointer;padding:0}a{color:inherit;text-decoration:none}.num{font-variant-numeric:tabular-nums;font-feature-settings:"tnum"}.mono{font-family:var(--font-mono);font-variant-numeric:tabular-nums}.app{display:grid;grid-template-columns:256px 1fr;min-height:100vh;background:radial-gradient(1200px 600px at 80% -10%,oklch(.78 .12 65 / .06),transparent 60%),radial-gradient(900px 600px at -10% 100%,oklch(.75 .08 320 / .04),transparent 60%),var(--bg)}.sidebar{position:sticky;top:0;height:100vh;padding:22px 16px;border-right:1px solid var(--border-soft);display:flex;flex-direction:column;gap:22px;background:linear-gradient(180deg,oklch(.2 .014 60 / .6),transparent)}.brand{display:flex;align-items:center;gap:10px;padding:4px 8px}.brand-mark{width:32px;height:32px;border-radius:10px;background:linear-gradient(140deg,var(--accent),oklch(.7 .14 35));display:grid;place-items:center;color:var(--bg);font-weight:800;font-size:16px;box-shadow:0 6px 16px -8px #eca76099}.brand-name{font-size:18px;font-weight:700;letter-spacing:-.01em}.brand-name .dim{color:var(--text-3);font-weight:500}.greeting{padding:10px 12px;border-radius:var(--radius);background:var(--surface);border:1px solid var(--border-soft);display:flex;align-items:center;gap:10px}.avatar{width:36px;height:36px;border-radius:50%;background:linear-gradient(140deg,#b16c4c,#8b5148);color:var(--text);display:grid;place-items:center;font-weight:700;border:1px solid var(--border)}.greeting-text{line-height:1.2}.greeting-text .hi{color:var(--text-3);font-size:11px}.greeting-text .name{font-weight:600}.nav{display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:10px;color:var(--text-2);font-weight:500;font-size:14px;transition:background .15s,color .15s;position:relative}.nav-item:hover{background:var(--surface);color:var(--text)}.nav-item.active{background:var(--surface-2);color:var(--text)}.nav-item.active:before{content:"";position:absolute;left:-16px;top:8px;bottom:8px;width:3px;border-radius:2px;background:var(--accent)}.nav-icon{width:18px;height:18px;flex:none}.sidebar-footer{margin-top:auto;display:flex;flex-direction:column;gap:8px}.quick-add{margin-top:8px;background:var(--accent);color:#1d140d;border-radius:12px;padding:12px 14px;font-weight:700;display:flex;align-items:center;justify-content:center;gap:8px;transition:filter .15s,transform .05s}.quick-add:hover{filter:brightness(1.06)}.quick-add:active{transform:translateY(1px)}.main{padding:28px 36px 40px;min-width:0}.page-head{display:flex;align-items:end;justify-content:space-between;gap:20px;margin-bottom:22px}.page-head h1{font-size:26px;font-weight:700;letter-spacing:-.02em;margin:0}.page-head .sub{color:var(--text-3);margin-top:4px;font-size:13px}.head-actions{display:flex;gap:8px;align-items:center}.btn{padding:9px 14px;border-radius:10px;background:var(--surface);border:1px solid var(--border-soft);color:var(--text);font-weight:500;display:inline-flex;align-items:center;gap:8px;transition:background .15s,border-color .15s}.btn:hover{background:var(--surface-hover);border-color:var(--border)}.btn.primary{background:var(--accent);color:#1d140d;border-color:transparent;font-weight:600}.btn.primary:hover{filter:brightness(1.06)}.btn.ghost{background:transparent;border-color:transparent;color:var(--text-2)}.btn.ghost:hover{background:var(--surface);color:var(--text)}.btn.sm{padding:6px 10px;font-size:12px}.card{background:var(--surface);border-radius:var(--radius);border:1px solid var(--border-soft);padding:18px}.card.flush{padding:0}.card-title{font-size:13px;color:var(--text-3);font-weight:500;text-transform:uppercase;letter-spacing:.06em;margin-bottom:10px;display:flex;align-items:center;justify-content:space-between}.card-title .more{color:var(--text-3)}.grid-12{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.col-12{grid-column:span 12}.col-8{grid-column:span 8}.col-7{grid-column:span 7}.col-6{grid-column:span 6}.col-5{grid-column:span 5}.col-4{grid-column:span 4}.col-3{grid-column:span 3}.networth{position:relative;padding:24px 26px;background:radial-gradient(700px 280px at 90% 0%,oklch(.78 .12 65 / .12),transparent 60%),linear-gradient(180deg,var(--surface-2),var(--surface));border-radius:var(--radius-lg);border:1px solid var(--border-soft);overflow:hidden}.networth .label{color:var(--text-3);font-size:12px;text-transform:uppercase;letter-spacing:.1em;display:flex;align-items:center;gap:8px}.networth .amount{font-size:44px;font-weight:700;letter-spacing:-.02em;margin-top:6px;font-variant-numeric:tabular-nums}.networth .amount .cur{color:var(--text-3);font-weight:500;margin-right:6px;font-size:26px}.networth .change{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border-radius:999px;font-size:12px;font-weight:600;margin-top:10px}.networth .change.up{background:var(--gain-soft);color:var(--gain)}.networth .change.down{background:var(--loss-soft);color:var(--loss)}.networth .breakdown{margin-top:22px;display:grid;grid-template-columns:repeat(6,1fr);gap:10px}.networth .bar{height:6px;border-radius:4px;background:var(--bg);overflow:hidden;position:relative}.networth .bar-fill{height:100%;border-radius:4px}.brk-cell .lbl{display:flex;align-items:center;gap:6px;margin-bottom:6px;font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.brk-cell .dot{width:8px;height:8px;border-radius:50%}.brk-cell .val{font-size:14px;font-weight:600;margin-top:6px;font-variant-numeric:tabular-nums}.brk-cell .pct{font-size:11px;color:var(--text-3);margin-left:4px}.donut-wrap{display:flex;align-items:center;gap:22px}.donut{width:156px;height:156px;position:relative;flex:none}.donut svg{width:100%;height:100%;transform:rotate(-90deg)}.donut .center{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;text-align:center}.donut .center .small{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em}.donut .center .big{font-size:18px;font-weight:700;margin-top:2px;font-variant-numeric:tabular-nums}.donut-legend{display:flex;flex-direction:column;gap:10px;flex:1}.legend-row{display:grid;grid-template-columns:14px 1fr auto auto;align-items:center;gap:10px;padding:6px 0;border-bottom:1px dashed var(--border-soft);font-size:13px}.legend-row:last-child{border-bottom:none}.legend-row .dot{width:10px;height:10px;border-radius:3px}.legend-row .nm{color:var(--text-2)}.legend-row .val{font-variant-numeric:tabular-nums;font-weight:600}.legend-row .p{font-size:12px;color:var(--text-3);width:42px;text-align:right}.flow{display:flex;flex-direction:column;gap:14px}.flow-row{display:grid;grid-template-columns:60px 1fr 80px;align-items:center;gap:12px}.flow-row .mon{color:var(--text-3);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.flow-row .pair{display:grid;grid-template-rows:1fr 1fr;gap:4px}.flow-bar{height:8px;border-radius:4px;background:var(--bg);position:relative;overflow:hidden}.flow-bar .fill{height:100%;border-radius:4px}.flow-bar.income .fill{background:var(--gain)}.flow-bar.expense .fill{background:var(--loss)}.flow-row .totals{text-align:right;font-size:12px;line-height:1.2;font-variant-numeric:tabular-nums}.flow-row .totals .g{color:var(--gain)}.flow-row .totals .r{color:var(--loss)}.row-list{display:flex;flex-direction:column}.row{display:grid;grid-template-columns:36px 1fr auto auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px dashed var(--border-soft)}.row:last-child{border-bottom:none}.row .icon-pill{width:36px;height:36px;border-radius:10px;background:var(--bg-2);display:grid;place-items:center;color:var(--text-2);border:1px solid var(--border-soft)}.row .nm{font-weight:600}.row .meta{color:var(--text-3);font-size:12px}.row .val{font-weight:700;font-variant-numeric:tabular-nums}.row .val.r{color:var(--loss)}.row .val.g{color:var(--gain)}.row .right{text-align:right;color:var(--text-3);font-size:12px}.upcoming-row{display:grid;grid-template-columns:44px 1fr auto;gap:12px;align-items:center;padding:10px 0;border-bottom:1px dashed var(--border-soft)}.upcoming-row:last-child{border-bottom:none}.date-chip{width:44px;height:44px;background:var(--bg-2);border-radius:10px;display:grid;place-items:center;border:1px solid var(--border-soft);line-height:1}.date-chip .d{font-size:16px;font-weight:700;font-variant-numeric:tabular-nums}.date-chip .m{font-size:9px;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;margin-top:2px}.upcoming-row.due-soon .date-chip{background:var(--loss-soft);border-color:transparent}.upcoming-row.due-soon .date-chip .d,.upcoming-row.due-soon .date-chip .m{color:var(--loss)}.goal-card{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border-soft);padding:20px;display:flex;flex-direction:column;gap:14px;position:relative;overflow:hidden}.goal-card:before{content:"";position:absolute;right:-40px;top:-40px;width:140px;height:140px;border-radius:50%;background:var(--g-tint, oklch(.78 .12 65 / .1));filter:blur(8px)}.goal-card .gcat{display:inline-flex;align-items:center;gap:6px;font-size:11px;text-transform:uppercase;letter-spacing:.08em;color:var(--g-color, var(--accent));background:var(--g-tint, var(--accent-soft));padding:4px 8px;border-radius:999px;width:-moz-fit-content;width:fit-content;position:relative;z-index:1}.goal-card h3{margin:0;font-size:18px;font-weight:700;letter-spacing:-.01em;position:relative;z-index:1}.goal-bar{height:8px;background:var(--bg-2);border-radius:4px;overflow:hidden;position:relative;z-index:1}.goal-bar .fill{height:100%;border-radius:4px;background:var(--g-color, var(--accent))}.goal-meta{display:flex;align-items:end;justify-content:space-between;font-variant-numeric:tabular-nums;position:relative;z-index:1}.goal-meta .cur{font-size:18px;font-weight:700}.goal-meta .of{color:var(--text-3);font-size:12px;margin-left:4px}.goal-meta .pct{color:var(--g-color, var(--accent));font-weight:700}.goal-meta .eta{color:var(--text-3);font-size:11px;margin-top:4px}.asset-tabs{display:flex;gap:6px;margin-bottom:18px;flex-wrap:wrap}.tab-pill{padding:8px 14px;border-radius:999px;background:var(--surface);border:1px solid var(--border-soft);color:var(--text-2);font-size:13px;font-weight:500;display:inline-flex;align-items:center;gap:8px}.tab-pill .count{font-size:11px;color:var(--text-3);background:var(--bg);padding:1px 6px;border-radius:999px}.tab-pill.active{background:var(--text);color:var(--bg);border-color:transparent}.tab-pill.active .count{background:#0000001a;color:var(--bg-2)}.asset-table{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}.asset-table thead th{text-align:left;padding:10px 14px;font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.08em;font-weight:500;border-bottom:1px solid var(--border-soft);background:#1d1712}.asset-table tbody td{padding:14px;border-bottom:1px solid var(--border-soft);vertical-align:middle}.asset-table tbody tr{cursor:pointer;transition:background .12s}.asset-table tbody tr:hover,.asset-table tbody tr.selected{background:var(--surface-2)}.asset-table td.r,.asset-table th.r{text-align:right}.asset-name{display:flex;align-items:center;gap:12px}.asset-icon{width:36px;height:36px;border-radius:10px;display:grid;place-items:center;font-weight:700;font-size:12px;background:var(--bg-2);border:1px solid var(--border-soft)}.asset-icon.gold{background:#ebbd5726;color:var(--gold);border-color:#ebbd574d}.asset-icon.usd,.asset-icon.eur,.asset-icon.gbp{background:#8aca8b1f;color:var(--usd);border-color:#8aca8b4d}.asset-icon.stock{background:#c2a7f41f;color:var(--stock);border-color:#c2a7f44d}.asset-icon.crypto{background:#fc9b6f1f;color:var(--crypto);border-color:#fc9b6f4d}.asset-icon.cash{background:#bfaa931f;color:var(--cash);border-color:#bfaa934d}.asset-icon.estate{background:#5dbcc11f;color:var(--estate);border-color:#5dbcc14d}.asset-name .pnm{font-weight:600}.asset-name .psub{color:var(--text-3);font-size:12px}.pl-pill{display:inline-flex;align-items:center;gap:4px;padding:3px 8px;border-radius:999px;font-weight:600;font-size:12px}.pl-pill.up{background:var(--gain-soft);color:var(--gain)}.pl-pill.down{background:var(--loss-soft);color:var(--loss)}.detail-panel{background:var(--surface);border-radius:var(--radius-lg);border:1px solid var(--border-soft);padding:20px;position:sticky;top:28px}.detail-head{display:flex;align-items:start;gap:14px;margin-bottom:16px}.detail-head .ai-lg{width:52px;height:52px;border-radius:14px;display:grid;place-items:center;font-weight:700;background:var(--bg-2);border:1px solid var(--border-soft)}.detail-head h3{margin:0;font-size:18px;font-weight:700}.detail-head .sub{color:var(--text-3);font-size:12px;margin-top:2px}.detail-stats{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-top:14px;font-variant-numeric:tabular-nums}.detail-stats .stat{padding:12px;background:var(--bg-2);border-radius:10px;border:1px solid var(--border-soft)}.detail-stats .stat .l{font-size:11px;color:var(--text-3);text-transform:uppercase;letter-spacing:.06em}.detail-stats .stat .v{font-size:17px;font-weight:700;margin-top:4px}.detail-stats .stat .v.g{color:var(--gain)}.detail-stats .stat .v.r{color:var(--loss)}.spark{height:80px;margin:10px 0}.spark svg{width:100%;height:100%}.cat-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px}.cat-row{display:grid;grid-template-columns:28px 1fr auto;gap:10px;align-items:center;padding:12px;background:var(--bg-2);border-radius:10px;border:1px solid var(--border-soft)}.cat-row .cdot{width:28px;height:28px;border-radius:8px;display:grid;place-items:center;font-size:14px}.cat-row .cname{font-weight:600;font-size:13px}.cat-row .cbar{height:4px;background:var(--bg);border-radius:3px;overflow:hidden;margin-top:4px}.cat-row .cbar .fill{height:100%}.cat-row .cval{font-weight:700;font-variant-numeric:tabular-nums;font-size:13px}.cat-row .cpct{color:var(--text-3);font-size:11px;font-variant-numeric:tabular-nums}.subs{display:flex;flex-direction:column;gap:8px}.sub-row{display:grid;grid-template-columns:40px 1fr auto auto;gap:12px;align-items:center;padding:12px;background:var(--bg-2);border-radius:12px;border:1px solid var(--border-soft)}.sub-logo{width:40px;height:40px;border-radius:10px;display:grid;place-items:center;font-weight:800;font-size:16px;color:#fff;letter-spacing:-.02em}.sub-row .nm{font-weight:600;font-size:13px}.sub-row .when{color:var(--text-3);font-size:11px;margin-top:2px}.sub-row .price{font-weight:700;font-variant-numeric:tabular-nums}.sub-row .freq{color:var(--text-3);font-size:11px}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000a6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);z-index:100;display:grid;place-items:center;padding:20px;animation:fadeIn .18s ease}.modal{background:var(--bg-2);border-radius:var(--radius-lg);border:1px solid var(--border);padding:24px;width:100%;max-width:480px;box-shadow:var(--shadow-elev);animation:pop .2s ease}.modal h2{margin:0 0 4px;font-size:20px;font-weight:700;letter-spacing:-.01em}.modal .subtitle{color:var(--text-3);font-size:13px;margin-bottom:18px}.modal-close{position:absolute;top:18px;right:18px;color:var(--text-3)}.form-row{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.form-row label{font-size:12px;color:var(--text-3)}.form-row input,.form-row select{background:var(--surface);border:1px solid var(--border-soft);border-radius:10px;padding:10px 12px;outline:none;transition:border-color .15s}.form-row input:focus,.form-row select:focus{border-color:var(--accent)}.tx-type-toggle{display:grid;grid-template-columns:1fr 1fr;gap:6px;background:var(--surface);padding:4px;border-radius:10px;border:1px solid var(--border-soft);margin-bottom:16px}.tx-type-toggle button{padding:8px;border-radius:8px;color:var(--text-3);font-weight:600;font-size:13px}.tx-type-toggle button.active{background:var(--bg-2);color:var(--text)}.cat-chips{display:flex;flex-wrap:wrap;gap:6px}.cat-chip{padding:6px 10px;border-radius:999px;background:var(--surface);border:1px solid var(--border-soft);font-size:12px;color:var(--text-2);display:inline-flex;align-items:center;gap:6px}.cat-chip.active{background:var(--accent);color:var(--bg);border-color:transparent;font-weight:600}.mobile-nav,.mobile-top{display:none}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{transform:scale(.96);opacity:0}to{transform:scale(1);opacity:1}}@media (max-width: 960px){.app{grid-template-columns:1fr}.sidebar{display:none}.main{padding:16px 16px 96px}.mobile-top{display:flex;align-items:center;justify-content:space-between;padding:4px 4px 12px}.mobile-top .brand-name{font-size:16px}.mobile-top .avatar{width:34px;height:34px;font-size:13px}.mobile-nav{display:grid;position:fixed;bottom:0;left:0;right:0;grid-template-columns:repeat(5,1fr);background:#1b1510eb;backdrop-filter:blur(20px) saturate(120%);-webkit-backdrop-filter:blur(20px) saturate(120%);border-top:1px solid var(--border-soft);padding:8px 8px calc(8px + env(safe-area-inset-bottom));z-index:50}.mob-tab{display:flex;flex-direction:column;align-items:center;gap:4px;padding:8px 6px;color:var(--text-3);font-size:10px;font-weight:500;border-radius:10px;transition:color .15s}.mob-tab.active{color:var(--accent)}.mob-tab.add{color:var(--bg);background:var(--accent);margin:-4px 4px;height:48px}.page-head{flex-direction:column;align-items:stretch;gap:12px}.page-head h1{font-size:22px}.col-3,.col-4,.col-5,.col-6,.col-7,.col-8,.col-md-6{grid-column:span 12}.networth .amount{font-size:32px}.networth .amount .cur{font-size:20px}.networth .breakdown{grid-template-columns:repeat(3,1fr)}.donut-wrap{flex-direction:column;align-items:stretch}.donut{margin:0 auto}.cat-grid{grid-template-columns:1fr}.asset-table thead{display:none}.asset-table,.asset-table tbody,.asset-table tr,.asset-table td{display:block;width:100%}.asset-table tbody tr{padding:14px;border-bottom:1px solid var(--border-soft)}.asset-table tbody td{padding:4px 0;border:none;display:grid;grid-template-columns:110px 1fr}.asset-table tbody td:first-child{grid-template-columns:1fr;margin-bottom:8px}.asset-table tbody td:not(:first-child):before{content:attr(data-label);color:var(--text-3);font-size:12px;text-transform:uppercase;letter-spacing:.06em}.asset-table td.r{text-align:left}.detail-panel{position:static;margin-top:16px}}@media (max-width: 600px){.grid-12{gap:12px}.networth{padding:18px}.networth .breakdown{grid-template-columns:repeat(2,1fr)}}
