:root{--good: #16a34a;--bad: #dc2626;--neutral: #ffffff;--gold: #f59e0b;--bg: #0b1020;--panel: #131a2a;--muted: #9ca3af}*{box-sizing:border-box}body{margin:0;font-family:Inter,system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,"Apple Color Emoji","Segoe UI Emoji";background:var(--bg);color:#fff}body.no-scroll{overflow:hidden}.layout{display:grid;grid-template-columns:360px 6px 1fr;height:100vh;position:relative}.layout.mobile{grid-template-columns:1fr;height:auto}.sidebar{padding:16px;overflow-y:auto;background:var(--panel);border-right:1px solid #222a3a;position:relative;flex-shrink:0}.sidebar-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.sidebar-header h2{flex:1;margin:0}.sidebar-tabs{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;gap:8px}.tab-list{display:flex;align-items:center;gap:6px;overflow-x:auto}.tab-item{display:flex;align-items:center;background:#171f31;border:1px solid #1f2740;border-radius:8px;padding:0}.tab-item.active{background:#1f2940;border-color:#334066;box-shadow:0 0 0 1px #33406666}.tab-button{background:transparent;border:none;color:#e2e8f0;font-size:13px;padding:6px 10px;cursor:pointer}.tab-button:hover{background:#ffffff0a}.tab-rename{background:transparent;border:none;color:#e2e8f0;font-size:13px;padding:6px 10px;width:120px;outline:none}.tab-close{background:transparent;border:none;color:#f87171;font-size:16px;padding:6px 8px;cursor:pointer}.tab-close:disabled{opacity:.4;cursor:not-allowed}.tab-add{background:transparent;border:1px solid #334066;color:#e2e8f0;width:28px;height:28px;border-radius:6px;cursor:pointer;font-size:18px;line-height:1}.tab-add:hover{background:#ffffff0d}.resizer{width:6px;cursor:col-resize;background:#0e1528;border-right:1px solid #222a3a}.content{padding:16px;overflow-y:auto}@media (max-width: 1024px){.layout{grid-template-columns:1fr;height:auto}.layout.mobile .sidebar{position:fixed;top:0;left:0;height:100vh;width:360px;min-width:360px;max-width:360px;border-right:none;box-shadow:0 10px 32px #0009;transform:translate(-110%);transition:transform .25s ease,visibility 0s linear .25s;pointer-events:none;visibility:hidden;z-index:30}.layout.mobile.mobile-open{height:100vh;overflow:hidden;position:fixed;top:0;right:0;bottom:0;left:0;width:100vw}.layout.mobile.mobile-open .sidebar{transform:translate(0);pointer-events:auto;visibility:visible;transition:transform .25s ease}.layout.mobile.mobile-open .content{pointer-events:none}.layout.mobile .resizer{display:none}.content{padding:16px 16px 32px}}.mobile-toolbar{display:none;margin-bottom:12px}.mobile-toggle,.mobile-close{border:1px solid #1f2740;background:#1c2438;color:#fff;padding:10px 14px;border-radius:999px;font-size:14px;font-weight:600;cursor:pointer;touch-action:manipulation}.mobile-toggle:active,.mobile-close:active{transform:scale(.98)}.mobile-close{display:none}@media (max-width: 1024px){.mobile-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;position:sticky;top:0;z-index:5;background:linear-gradient(180deg,#0b1020f2,#0b102000);padding-top:8px;padding-bottom:8px}.mobile-close{display:inline-flex}}.mobile-summary{display:grid;grid-template-columns:repeat(3,minmax(100px,1fr));gap:8px;flex:1 1 auto;min-width:220px}.summary-item{background:#10172a;border:1px solid #1f2740;border-radius:10px;padding:8px 12px;display:flex;flex-direction:column;gap:4px;min-height:56px}.summary-label{font-size:10px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.summary-value{font-size:14px;font-weight:700;color:#fff}.summary-item.selected{border-color:#f59e0b88;box-shadow:0 0 0 1px #f59e0b33}.mobile-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b102099;border:none;margin:0;padding:0;cursor:pointer;z-index:20}.mobile-overlay:focus-visible,.mobile-toggle:focus-visible,.mobile-close:focus-visible{outline:2px solid #22d3ee;outline-offset:2px}.section{margin-bottom:16px}.section h3{margin:0 0 8px;color:var(--muted);font-weight:600}.grid{display:grid;grid-template-columns:1fr;gap:8px}.row{display:grid;grid-template-columns:1fr 140px;gap:8px;align-items:center}input,select{width:100%;padding:8px;background:#0f1424;color:#fff;border:1px solid #1f2740;border-radius:6px;font-size:16px;line-height:1.4}input[type=range]{padding:0}@media (max-width: 720px){.row{grid-template-columns:1fr}}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.card{background:var(--panel);border:1px solid #222a3a;border-radius:10px;padding:12px}.card h4{margin:0 0 6px;color:var(--muted)}.value{font-size:20px;font-weight:700}.tip{margin-left:6px;color:var(--muted);cursor:help}.good{color:var(--good)}.bad{color:var(--bad)}.neutral{color:var(--neutral)}.gold{color:var(--gold)}.card.selected{border-color:#f59e0b88;box-shadow:0 0 0 1px #f59e0b33}.badge{margin-left:6px;font-size:10px;padding:2px 6px;border:1px solid #2b334a;border-radius:999px;color:var(--muted)}@media (max-width: 1024px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width: 720px){.cards{grid-template-columns:1fr}}.charts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px;margin-top:12px}.chart{background:var(--panel);border:1px solid #222a3a;border-radius:10px;padding:12px;height:360px;display:flex;flex-direction:column}.chart h4{margin:0 0 8px;color:var(--muted)}.chart .recharts-wrapper{flex:1 1 auto}@media (max-width: 1024px){.charts{grid-template-columns:1fr}}.chart-tooltip{background:#131a2af2;border:1px solid #2b334a;border-radius:8px;padding:8px 12px;min-width:200px;box-shadow:0 8px 20px #00000059;font-size:12px;color:#e2e8f0}.chart-tooltip__label{font-weight:600;margin-bottom:6px;color:#f8fafc}.chart-tooltip__row{display:flex;justify-content:space-between;gap:12px;margin-bottom:4px}.chart-tooltip__row span:last-child{font-variant-numeric:tabular-nums}.chart-tooltip__row.bad span:last-child{color:var(--bad)}.chart-tooltip__row.good span:last-child{color:var(--good)}.footer{margin-top:16px;color:var(--muted);font-size:12px}.build-info{margin-top:16px;font-size:11px;color:var(--muted);letter-spacing:.05em;text-transform:uppercase}.year-nudge{margin:16px 0 8px;padding:10px 14px;border-radius:10px;border:1px dashed #334066;background:#131a2acc;display:flex;gap:8px;align-items:center;color:#e2e8f0;font-size:14px}.tip-glow{font-size:16px}.tip-dismiss{margin-left:auto;border:1px solid rgba(245,158,11,.6);background:#0f1424bf;color:#f8fafc;padding:6px 10px;border-radius:999px;font-size:12px;letter-spacing:.04em;cursor:pointer}.tip-dismiss:hover{background:#f59e0b26}.tip-dismiss:focus-visible{outline:2px solid #22d3ee;outline-offset:2px}.income-card{--income-columns: minmax(220px, 1fr) 150px 150px}.income-card .income-table-wrapper{overflow-x:auto;margin-top:10px}.income-card .income-table{display:flex;flex-direction:column;gap:6px}.income-card:not(.compact) .income-table{min-width:520px}.income-card .income-row{display:grid;grid-template-columns:var(--income-columns);gap:12px;align-items:center;font-variant-numeric:tabular-nums}.income-card .income-header{font-weight:600}.income-card .income-divider{border-top:1px solid #222a3a;padding-top:6px;margin-top:6px}.income-card .income-spacer{height:8px}.income-header-bar{display:flex;align-items:center;justify-content:space-between;gap:12px}.income-header-bar h4{margin:0;color:var(--muted)}.income-toggle{border:1px solid #1f2740;background:#10172a;color:#fff;padding:6px 12px;border-radius:999px;font-size:13px;font-weight:600;cursor:pointer;touch-action:manipulation}.income-toggle:active{transform:scale(.98)}.income-card.compact{--income-columns: minmax(200px, 1fr) minmax(140px, auto)}.income-card.compact .income-table{min-width:100%}.income-card.compact .income-toggle{background:#1c2438}@media (max-width: 1024px){.income-card{--income-columns: minmax(200px, 1fr) 140px 140px}}.income-toggle:focus-visible{outline:2px solid #22d3ee;outline-offset:2px}.year-nudge:before{pointer-events:none}.year-nudge:after{pointer-events:none}
