@import "https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@400;500;600;700&family=IBM+Plex+Mono:wght@400;500&display=swap";:root{--bg-color:#070d13;--text-color:#e9f3f6;--muted-text:#8caab2;--sans-font:"Space Grotesk", "Avenir Next", "Segoe UI", sans-serif;--mono-font:"IBM Plex Mono", "Fira Code", "Menlo", monospace;font-family:var(--sans-font);color:var(--text-color);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{min-height:100%}body{color:var(--text-color);background:radial-gradient(circle at 15% 10%,#2360734d,#0000 32%),radial-gradient(circle at 85% 15%,#29446647,#0000 33%),radial-gradient(circle at 45% 90%,#5c4a183d,#0000 40%),#070d13;margin:0}.app-shell{width:calc(100% - 2rem);margin:1.25rem auto 2.5rem;position:relative}.app-header{background:linear-gradient(145deg,#0c1218fa,#121d24f2);border:1px solid #6082914d;border-radius:20px;justify-content:space-between;align-items:start;gap:1rem;padding:.5rem 1.75rem;display:flex;box-shadow:0 24px 64px #01080c99}.app-header-brand{align-items:center;gap:.9rem;min-width:0;display:flex}.app-brand-logo{object-fit:contain;background:#070d1359;border:none;border-radius:14px;flex-shrink:0;width:160px;height:160px;box-shadow:0 10px 22px #00000059}.eyebrow{font-family:var(--mono-font);letter-spacing:.12em;text-transform:uppercase;color:#6db7ba;margin:0;font-size:.72rem}h1{letter-spacing:-.02em;margin:.35rem 0;font-size:clamp(1.9rem,2.4vw,2.8rem);line-height:1.1}h2,h3,h4{letter-spacing:-.01em;margin:0}.subtle{color:var(--muted-text);max-width:65ch;margin:0}.tab-strip{grid-template-columns:repeat(8,minmax(120px,1fr));gap:.5rem;margin-top:1rem;display:grid}.tab{color:var(--text-color);text-align:left;background:linear-gradient(155deg,#080d12eb,#0d151adb);border:1px solid #65829047;border-radius:12px;gap:.15rem;padding:.65rem .6rem;transition:transform .18s,border-color .18s;display:grid}.tab small{color:#79a5af;text-transform:uppercase;letter-spacing:.08em;font-family:var(--mono-font);font-size:.65rem}.tab:hover{border-color:#74b1b8;transform:translateY(-1px)}.tab.active{border-color:#5adce6b3;box-shadow:inset 0 0 0 1px #5adce64d}.content-area{margin-top:1rem}.trade-log-layout,.open-layout{gap:1rem;display:grid}.trade-log-layout{grid-template-columns:1.3fr 1.3fr .95fr;align-items:start}.open-layout{grid-template-columns:1fr}.panel{background:radial-gradient(circle at 0 0,#1c444f38,#0000 46%),linear-gradient(165deg,#090e14f2,#0f161de6);border:1px solid #65829042;border-radius:18px;padding:1rem;box-shadow:0 16px 40px #04080c73}.panel-header{gap:.3rem;margin-bottom:.75rem;display:grid}.panel-header p{color:var(--muted-text);margin:0}.split{justify-content:space-between;align-items:center;gap:1rem;display:flex}.button-row{flex-wrap:wrap;gap:.5rem;display:flex}.checkbox-row{color:var(--muted-text);align-items:center;gap:.35rem;font-size:.9rem;display:flex}.trade-form{grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;display:grid}.trade-form label,.stacked-form label{font-family:var(--mono-font);text-transform:uppercase;letter-spacing:.04em;color:#9fc2c9;gap:.3rem;font-size:.78rem;display:grid}.trade-form label input,.trade-form label select,.trade-form label textarea,.stacked-form label input,.stacked-form label textarea,.stacked-form label select,textarea,input,select{color:var(--text-color);background:#050a0eb3;border:1px solid #6e8d9a66;border-radius:10px;outline:none;padding:.55rem .65rem;font-family:inherit;font-size:.92rem}input:focus,textarea:focus,select:focus{border-color:#84d9e0;box-shadow:0 0 0 2px #84d9e02e}textarea{resize:vertical}.full-width{grid-column:1/-1}.legs-builder{border-top:1px solid #7894a23d;margin-top:.15rem;padding-top:.75rem}.leg-inputs{grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:.55rem;display:grid}.leg-list,.detail-leg-list{gap:.45rem;margin:.7rem 0 0;padding:0;list-style:none;display:grid}.leg-list li{font-family:var(--mono-font);background:#0a1016c7;border:1px solid #6785933d;border-radius:8px;justify-content:space-between;align-items:center;gap:.5rem;padding:.45rem .6rem;font-size:.8rem;display:flex}button{color:#f2fcff;letter-spacing:.02em;background:linear-gradient(140deg,#2b8994f2,#17727df2);border:1px solid #68d0d78c;border-radius:10px;padding:.56rem .85rem;font-weight:600;transition:transform .17s,opacity .17s}button:hover{transform:translateY(-1px)}button:disabled{opacity:.58;transform:none}button.secondary{background:linear-gradient(150deg,#222f3ae0,#172029db);border-color:#849daa80}button.danger{background:linear-gradient(150deg,#742a2ae6,#5e2323e0);border-color:#e4767673}.error-banner,.success-banner,.reminder-banner{font-family:var(--mono-font);border-radius:10px;margin:1rem 0 0;padding:.65rem .9rem;font-size:.82rem}.error-banner{color:#ffc9c9;background:#681f236b;border:1px solid #e663639e}.success-banner{color:#bbffd8;background:#1d583f6b;border:1px solid #70e8b08f}.reminder-banner{color:#ffe5a8;background:#6f4b1259;border:1px solid #ffc75c9e}.table-wrap{overflow:auto}table{border-collapse:collapse;width:100%;font-size:.86rem}th,td{text-align:left;vertical-align:top;border-bottom:1px solid #60829038;padding:.6rem .5rem}th{text-transform:uppercase;letter-spacing:.08em;font-size:.7rem;font-family:var(--mono-font);color:#8fb7bf}.link-button{color:#9ddce2;font:inherit;background:0 0;border:none;padding:0;text-decoration:underline}.inline-edit-trigger{color:#bceaf0;background:#1d3d4840;border:1px solid #9ddce273;border-radius:999px;align-items:center;gap:.3rem;padding:.1rem .5rem;font-size:.72rem;line-height:1.2;display:inline-flex}@media (hover:hover) and (pointer:fine){.crypto-panel tbody tr .inline-edit-trigger{opacity:0;pointer-events:none;transition:opacity .14s,transform .14s;transform:translateY(1px)}.crypto-panel tbody tr:hover .inline-edit-trigger,.crypto-panel tbody tr:focus-within .inline-edit-trigger,.crypto-panel tbody tr .inline-edit-trigger:focus-visible{opacity:1;pointer-events:auto;transform:translateY(0)}}.inline-edit-trigger svg{fill:currentColor;width:.78rem;height:.78rem}.inline-edit-trigger:hover,.inline-edit-trigger:focus-visible{background:#345c6873;border-color:#bceaf0d9}.inline-edit-trigger:disabled{opacity:.55}.column-sort-button{color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;background:0 0;border:none;padding:0}.column-sort-button:hover,.column-sort-button:focus-visible{color:#b9dde3;text-decoration:underline;transform:none}.badge-row{flex-wrap:wrap;gap:.25rem;display:flex}.badge{font-family:var(--mono-font);text-transform:uppercase;letter-spacing:.06em;border-radius:999px;align-items:center;padding:.15rem .5rem;font-size:.69rem;display:inline-flex}.badge.warning{color:#ffd692;background:#5f3d0c73;border:1px solid #ffbb5399}.badge.good{color:#b4ffd3;background:#19583c61;border:1px solid #77e5a594}.badge.neutral,.badge.closed{color:#c4d8dd;background:#1a252e8c;border:1px solid #718d9c73}.detail-row td{background:#060d1285}.detail-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.75rem;display:grid}.detail-grid p,.detail-leg-list li{color:#a8bcc2;margin:0}.close-form{grid-template-columns:repeat(3,minmax(0,1fr));gap:.6rem;display:grid}.close-form h4,.action-row{grid-column:1/-1}.action-row{gap:.45rem;display:flex}.side-stack{align-content:start;gap:1rem;display:grid}.stacked-form{gap:.65rem;display:grid}.result-box{background:#050c129e;border:1px solid #6f9fad5e;border-radius:12px;padding:.7rem}.result-box p,.result-box small{color:#a9c6cd;margin:.2rem 0}.import-duplicate-note{color:#9ec7cf;line-height:1.4;display:block}.totals-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;display:grid}.metric-card{background:#080e13bf;border:1px solid #749caa4d;border-radius:13px;padding:.8rem}.metric-card p,.metric-card small{color:#9fb8bf;margin:0}.metric-card h3{margin:.35rem 0;font-size:1.35rem}.metric-line{margin-top:.2rem;display:block}.metric-card .metric-line.positive{color:#8bf3bf}.metric-card .metric-line.balance-blue{color:#89c8ff}.metric-card .metric-line.balance-orange{color:#ffc27a}.metric-card .metric-line.balance-yellow{color:#f6dd78}.metric-card .metric-line.metric-aud{font-size:.84rem;font-weight:600}.freshness-line{font-family:var(--mono-font);letter-spacing:.02em}.totals-header{align-items:start;margin-bottom:.75rem}.totals-header-main{gap:.2rem;display:grid}.totals-sync-strip{flex-wrap:wrap;justify-content:end;gap:.45rem;display:flex}.totals-sync-chip{background:#060b1099;border:1px solid #7096a63d;border-radius:10px;gap:.08rem;min-width:140px;padding:.36rem .48rem;display:grid}.totals-sync-label{color:#b6ced4;font-family:var(--mono-font);text-transform:uppercase;letter-spacing:.05em;font-size:.66rem}.totals-sync-chip strong{font-size:.82rem}.totals-sync-chip small{white-space:nowrap;text-overflow:ellipsis;font-size:.68rem;display:block;overflow:hidden}.owner-metric-card{background:radial-gradient(circle at 100% 0,#25596933,#0000 48%),#080e13bf}.sync-state-ok{color:#8bf3bf}.sync-state-running{color:#8fd9ff}.sync-state-warning{color:#ffd18a}.sync-state-error{color:#ff9fa7}.sync-state-idle{color:#98b2ba}.balance-blue{color:#89c8ff;font-variant-numeric:tabular-nums}.balance-orange{color:#ffc27a;font-variant-numeric:tabular-nums}.balance-yellow{color:#f6dd78;font-variant-numeric:tabular-nums}.integrity-panel{margin-top:0}.integrity-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:.75rem;display:grid}.integrity-warning{color:#ffd18a}.regroup-badges{margin-top:.75rem}.regroup-filter-row{flex-wrap:wrap;align-items:center;gap:.55rem;margin-top:.75rem;display:flex}.regroup-filter-label{color:#9fc2c9;font-family:var(--mono-font);text-transform:uppercase;letter-spacing:.06em;font-size:.74rem}.regroup-filter-buttons{flex-wrap:wrap;gap:.45rem;display:flex}button.filter-toggle{background:linear-gradient(150deg,#222f3ae0,#172029db);border-color:#849daa80;padding:.42rem .65rem;font-size:.78rem}button.filter-toggle.active{border-color:#5adce6b3;box-shadow:inset 0 0 0 1px #5adce652}.regroup-filter-summary{color:#9fb8bf;font-family:var(--mono-font);font-size:.72rem}.manual-grouping-controls{background:#070d13b8;border:1px solid #7698a747;border-radius:12px;margin-top:.75rem;padding:.75rem}.manual-grouping-controls p{color:#a9c2c8;margin:0}.manual-grouping-row{flex-wrap:wrap;align-items:end;gap:.6rem;margin-top:.6rem;display:flex}.manual-grouping-row label{color:#9fc2c9;min-width:220px;font-family:var(--mono-font);text-transform:uppercase;letter-spacing:.04em;gap:.3rem;font-size:.78rem;display:grid}.manual-grouping-summary{color:#9fb8bf;font-family:var(--mono-font);margin-top:.55rem;font-size:.74rem;display:block}.position-group-checkbox{accent-color:#71d9df;width:1rem;height:1rem}.regroup-table-wrap{margin-top:.75rem}.regroup-group-row td{background:linear-gradient(160deg,#12202ce6,#0c1721e6);border-top:1px solid #769cac57;font-weight:600}.regroup-detail-row td{background:#060c1175;padding-top:.4rem;padding-bottom:.7rem}.regroup-position-table-wrap{margin-top:.2rem}.regroup-position-table{min-width:980px}.regroup-row-actions{flex-wrap:wrap;gap:.4rem;display:flex}.regroup-roll-result-display{align-items:center;gap:.45rem;display:flex}.regroup-roll-result-edit{gap:.4rem;display:grid}.regroup-roll-result-edit input{width:100%;min-width:125px}.regroup-roll-result-edit input[type=text]{min-width:220px}.regroup-roll-history-wrap{margin-top:.75rem}.regroup-roll-history-title{color:#a9c2c8;text-transform:uppercase;letter-spacing:.06em;font-size:.82rem;font-family:var(--mono-font);margin:0 0 .45rem}.regroup-roll-history-table-wrap{margin-top:0}.regroup-roll-history-table{min-width:620px}.regroup-expand-toggle{min-width:62px;padding:.32rem .55rem;font-size:.74rem}.regroup-remove-toggle{min-width:74px;padding:.32rem .55rem;font-size:.74rem}.regroup-subtitle{color:#a9c2c8;margin:0 0 .55rem;font-size:.95rem}.crypto-panel{margin-top:0}.binance-sync-box,.coinex-sync-box{background:radial-gradient(circle at 100% 0,#1b4c5940,#0000 40%),linear-gradient(170deg,#080e14e6,#0b1218e0);border:1px solid #5c839159;border-radius:14px;margin-bottom:.9rem;padding:.75rem}.binance-sync-form,.coinex-sync-form{margin-top:.4rem}.crypto-filter-row{flex-wrap:wrap;align-items:end;gap:.6rem;margin-bottom:.65rem;display:flex}.crypto-filter-row label{color:#9fc2c9;min-width:220px;font-family:var(--mono-font);text-transform:uppercase;letter-spacing:.04em;gap:.3rem;font-size:.78rem;display:grid}.crypto-filter-summary{color:#9fb8bf;font-family:var(--mono-font);font-size:.72rem}.crypto-cost-basis-display{align-items:center;gap:.45rem;display:flex}.crypto-cost-basis-edit{gap:.4rem;display:grid}.crypto-cost-basis-edit input{width:100%;min-width:120px}.roadmap-panel p{color:#9eb5bd;margin-top:.6rem}.performance-panel{gap:.8rem;display:grid}.performance-grid{grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:.75rem;display:grid}.performance-wide-grid{grid-template-columns:repeat(auto-fit,minmax(300px,1fr));align-items:stretch}.performance-entry-actions{margin-top:.25rem}.performance-growth-card{flex-direction:column;gap:.55rem;height:100%;display:flex}.performance-chart-tabs{flex-wrap:wrap;gap:.45rem;display:flex}.performance-chart-tab{letter-spacing:.02em;padding:.36rem .62rem;font-size:.74rem}.performance-chart-tab.is-active{color:#fff2df;background:linear-gradient(150deg,#8a531cf2,#764216f0);border-color:#ffb576ad}.performance-series-legend{flex-wrap:wrap;gap:.45rem;display:flex}.performance-series-pill{font-size:.72rem;font-family:var(--mono-font);letter-spacing:.02em;border:1px solid #8eabb86b;border-radius:999px;align-items:center;padding:.22rem .56rem;display:inline-flex}.performance-series-james{color:#c7e5ff;background:#3a7abe33;border-color:#67a9f080}.performance-series-carly{color:#ffe3c2;background:#aa612738;border-color:#eea66e8f}.performance-series-combined{color:#d5f1b4;background:#5680383d;border-color:#98c46b8f}.performance-growth-chart-wrap{background:#081016ad;border:1px solid #638a9857;border-radius:12px;flex:1;min-height:260px;padding:.55rem;display:flex}.performance-growth-chart{flex:1;width:100%;height:100%}.performance-growth-line{fill:none;stroke:#ffae61f5;stroke-width:2px;stroke-linecap:round;stroke-linejoin:round}.performance-growth-line-james{stroke:#7cb8f5f5}.performance-growth-line-carly{stroke:#ffae61f5}.performance-growth-line-combined{stroke:#a6d56cf5}.performance-growth-axis-line{stroke:#8faab794;stroke-width:1px}.performance-growth-grid-line{stroke:#738f9c3d;stroke-width:1px}.performance-growth-x-tick{stroke:#7e9caa9e;stroke-width:1px}.performance-growth-point{fill:#ffedd2fa;stroke:#ffa654d1;stroke-width:1px}.performance-growth-point-james{fill:#e0f1fffa;stroke:#5fa3e8e0}.performance-growth-point-carly{fill:#ffedd2fa;stroke:#ffa654d1}.performance-growth-point-combined{fill:#e7f9d1fa;stroke:#90bf5fe0}.performance-growth-axis-label,.performance-growth-month-label{fill:#91aeb8;font-family:var(--mono-font);font-size:8px}.performance-growth-y-tick-label{fill:#99b7c0;font-family:var(--mono-font);font-size:8px}.bullion-pie-card{background:#080e1394;border:1px solid #749caa40;border-radius:10px;gap:.6rem;padding:.6rem;display:grid}.bullion-summary-pies{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:.6rem;margin-top:.2rem;display:grid}.bullion-pie-layout{grid-template-columns:minmax(120px,145px) 1fr;align-items:center;gap:.7rem;display:grid}.bullion-pie-chart{border:1px solid #7ea1ae61;border-radius:999px;width:134px;height:134px;box-shadow:inset 0 0 0 1px #ffffff0a}.bullion-pie-legend{gap:.4rem;display:grid}.bullion-pie-legend-item{color:#aac5cd;font-family:var(--mono-font);align-items:center;gap:.45rem;font-size:.74rem;line-height:1.35;display:flex}.bullion-pie-swatch{border:1px solid #ebf7fd59;border-radius:2px;flex-shrink:0;width:.8rem;height:.8rem;display:inline-block}.performance-growth-month-label{fill:#a8c2cb}.performance-mini-table-wrap{margin-top:.45rem}.performance-mini-table{min-width:440px}.journal-drawer{z-index:60;background:radial-gradient(circle at 100% 0,#26586557,#0000 42%),linear-gradient(170deg,#0a1118f5,#0c1219f0);border:1px solid #7091a059;border-radius:20px;width:min(420px,100vw - 2rem);padding:1rem;position:fixed;top:1rem;bottom:1rem;right:1.25rem;overflow:auto;box-shadow:0 28px 66px #01080cad}.positive{color:#8bf3bf;font-variant-numeric:tabular-nums}.negative{color:#ff9fa7;font-variant-numeric:tabular-nums}@media (width<=1280px){.trade-log-layout{grid-template-columns:1fr}.tab-strip{grid-template-columns:repeat(4,minmax(120px,1fr))}.trade-form,.leg-inputs,.close-form,.totals-grid,.integrity-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (width<=768px){.app-shell{width:calc(100% - 1.1rem);margin:.6rem auto 1rem}.app-header,.panel{border-radius:14px;padding:.85rem}.app-header{gap:.7rem;display:grid}.app-header-brand{gap:.7rem}.app-brand-logo{width:130px;height:130px}.tab-strip{grid-template-columns:repeat(2,minmax(0,1fr))}.trade-form,.leg-inputs,.close-form,.totals-grid,.integrity-grid,.detail-grid{grid-template-columns:1fr}.split{justify-content:start;gap:.5rem;display:grid}.totals-sync-strip{justify-content:start}.totals-sync-chip{min-width:128px}.performance-mini-table{min-width:360px}.bullion-pie-layout{grid-template-columns:1fr;justify-items:center}.bullion-summary-pies{grid-template-columns:1fr}.bullion-pie-legend{width:100%}.manual-grouping-row{align-items:stretch;display:grid}.manual-grouping-row label{min-width:0}.regroup-filter-row{align-items:stretch;display:grid}.journal-drawer{border-radius:14px;width:auto;inset:.6rem}}
