:root{--sans:"Inter", system-ui, "Segoe UI", Roboto, sans-serif;--mono:"JetBrains Mono", ui-monospace, Consolas, monospace;--sp-1:4px;--sp-2:8px;--sp-3:12px;--sp-4:16px;--sp-5:20px;--sp-6:24px;--sp-8:32px;--sp-10:40px;--sp-12:48px;--radius-sm:6px;--radius-md:10px;--radius-lg:16px;--sidebar-w:240px;--bg-base:#f8f7fc;--bg-surface:#fff;--bg-raised:#f1f0f7;--bg-overlay:#ffffffd9;--text-primary:#0f0d17;--text-secondary:#5c5870;--text-muted:#9896a8;--text-on-accent:#fff;--border:#e2e0ec;--border-focus:#7c3aed;--accent:#7c3aed;--accent-hover:#6d28d9;--accent-subtle:#7c3aed1a;--accent-muted:#7c3aed33;--positive:#059669;--positive-subtle:#0596691a;--negative:#dc2626;--negative-subtle:#dc26261a;--warning:#d97706;--warning-subtle:#d977061a;--shadow-sm:0 1px 3px #00000012, 0 1px 2px #0000000d;--shadow-md:0 4px 12px #00000014, 0 2px 4px #0000000a;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}@media (prefers-color-scheme:dark){:root{--bg-base:#0e0d14;--bg-surface:#17151f;--bg-raised:#1f1d2b;--bg-overlay:#17151fe6;--text-primary:#f0eeff;--text-secondary:#a39ec0;--text-muted:#615d7a;--text-on-accent:#fff;--border:#2c293d;--border-focus:#a78bfa;--accent:#a78bfa;--accent-hover:#c4b5fd;--accent-subtle:#a78bfa1f;--accent-muted:#a78bfa38;--positive:#34d399;--positive-subtle:#34d3991f;--negative:#f87171;--negative-subtle:#f871711f;--warning:#fbbf24;--warning-subtle:#fbbf241f;--shadow-sm:0 1px 3px #0000004d;--shadow-md:0 4px 12px #0006;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark}}*,:before,:after{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{font-family:var(--sans);background:var(--bg-base);color:var(--text-primary);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.5}#root{height:100%;display:flex}h1,h2,h3,h4{color:var(--text-primary);margin:0;font-weight:600;line-height:1.25}h1{font-size:22px}h2{font-size:18px}h3{font-size:15px;font-weight:500}h4{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;font-size:13px;font-weight:500}p{margin:0}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:var(--border);border-radius:99px}::-webkit-scrollbar-thumb:hover{background:var(--text-muted)}.sr-only{clip:rect(0,0,0,0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.text-positive{color:var(--positive)}.text-negative{color:var(--negative)}.text-muted{color:var(--text-muted)}.text-accent{color:var(--accent)}.mono{font-family:var(--mono)}.app-shell{width:100%;height:100%;display:flex;overflow:hidden}.sidebar{width:var(--sidebar-w);background:var(--bg-surface);border-right:1px solid var(--border);flex-direction:column;flex-shrink:0;display:flex;overflow:hidden auto}.sidebar-logo{padding:var(--sp-5) var(--sp-5) var(--sp-4);border-bottom:1px solid var(--border);align-items:center;gap:var(--sp-3);display:flex}.sidebar-logo-icon{background:var(--accent);border-radius:var(--radius-sm);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;display:flex}.sidebar-logo-text{color:var(--text-primary);letter-spacing:-.02em;font-size:15px;font-weight:700}.sidebar-logo-text span{color:var(--accent)}.sidebar-section{padding:var(--sp-4) var(--sp-3) var(--sp-2)}.sidebar-section-label{letter-spacing:.08em;text-transform:uppercase;color:var(--text-muted);padding:0 var(--sp-2) var(--sp-2);font-size:10px;font-weight:600}.sidebar-nav{flex-direction:column;gap:2px;display:flex}.sidebar-link{align-items:center;gap:var(--sp-3);padding:var(--sp-2) var(--sp-3);border-radius:var(--radius-sm);color:var(--text-secondary);white-space:nowrap;font-size:13.5px;font-weight:450;text-decoration:none;transition:background .12s,color .12s;display:flex}.sidebar-link:hover{background:var(--bg-raised);color:var(--text-primary)}.sidebar-link.active{background:var(--accent-subtle);color:var(--accent);font-weight:550}.sidebar-link-icon{color:currentColor;flex-shrink:0;justify-content:center;align-items:center;width:20px;display:flex}.sidebar-footer{padding:var(--sp-4) var(--sp-3);border-top:1px solid var(--border);align-items:center;gap:var(--sp-2);margin-top:auto;display:flex}.sidebar-user{color:var(--text-secondary);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:12.5px;font-weight:500;overflow:hidden}.sidebar-logout{align-items:center;gap:var(--sp-1);padding:var(--sp-1) var(--sp-2);color:var(--text-muted);cursor:pointer;border-radius:var(--radius-sm);font-size:12px;font-family:var(--sans);white-space:nowrap;background:0 0;border:none;transition:background .12s,color .12s;display:flex}.sidebar-logout:hover{background:var(--negative-subtle);color:var(--negative)}.main-content{flex-direction:column;flex:1;display:flex;overflow-y:auto}.page-header{padding:var(--sp-6) var(--sp-8) var(--sp-4);border-bottom:1px solid var(--border);background:var(--bg-surface);z-index:10;position:sticky;top:0}.page-header-title{align-items:center;gap:var(--sp-3);display:flex}.page-header-icon{color:var(--accent);align-items:center;display:flex}.page-header-subtitle{color:var(--text-muted);margin-top:var(--sp-1);font-size:13px}.page-body{padding:var(--sp-6) var(--sp-8);flex:1}@media (width<=768px){.sidebar{display:none}.page-body,.page-header{padding:var(--sp-4)}}.auth-shell{background:var(--bg-base);width:100%;height:100%;padding:var(--sp-4);justify-content:center;align-items:center;display:flex}.auth-card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);width:100%;max-width:400px;padding:var(--sp-8);box-shadow:var(--shadow-md)}.auth-logo{align-items:center;gap:var(--sp-3);margin-bottom:var(--sp-6);color:var(--text-primary);font-size:16px;font-weight:700;display:flex}.auth-logo-icon{background:var(--accent);border-radius:var(--radius-sm);color:#fff;flex-shrink:0;justify-content:center;align-items:center;width:34px;height:34px;display:flex}.auth-logo span span{color:var(--accent)}.auth-title{color:var(--text-primary);margin-bottom:var(--sp-6);font-size:20px;font-weight:700}.auth-form{gap:var(--sp-4);flex-direction:column;display:flex}.auth-field{gap:var(--sp-1);flex-direction:column;display:flex}.auth-field label{color:var(--text-secondary);font-size:12.5px;font-weight:500}.auth-field input{height:40px;padding:0 var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-primary);font-size:14px;font-family:var(--sans);outline:none;transition:border-color .15s,box-shadow .15s}.auth-field input:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-subtle)}.auth-btn{width:100%;height:42px;margin-top:var(--sp-2);font-size:14px}.auth-error{color:var(--negative);background:var(--negative-subtle);border:1px solid var(--negative);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);font-size:13px}.auth-success{color:var(--positive);background:var(--positive-subtle);border:1px solid var(--positive);border-radius:var(--radius-sm);padding:var(--sp-2) var(--sp-3);margin-bottom:var(--sp-4);font-size:13px}.auth-footer{margin-top:var(--sp-5);color:var(--text-muted);text-align:center;font-size:13px}.auth-footer a{color:var(--accent);font-weight:500}.help-btn{border:1.5px solid var(--border);background:var(--bg-raised);width:20px;height:20px;color:var(--text-muted);font-size:11px;font-weight:700;font-family:var(--sans);cursor:pointer;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;line-height:1;transition:color .15s,border-color .15s,background .15s;display:inline-flex}.help-btn:hover{color:var(--accent);border-color:var(--accent);background:color-mix(in srgb, var(--accent) 8%, var(--bg-raised))}.modal-overlay{z-index:1000;padding:var(--sp-4);-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);background:#00000073;justify-content:center;align-items:center;animation:.15s modal-fade-in;display:flex;position:fixed;inset:0}@keyframes modal-fade-in{0%{opacity:0}to{opacity:1}}.modal-panel{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow-md);flex-direction:column;width:100%;max-width:580px;max-height:80vh;animation:.18s modal-slide-in;display:flex}@keyframes modal-slide-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.modal-header{padding:var(--sp-5) var(--sp-6);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:var(--sp-3);flex-shrink:0;display:flex}.modal-header h2{color:var(--text-primary);margin:0;font-size:15px;font-weight:700}.modal-close{border-radius:var(--radius-sm);width:28px;height:28px;color:var(--text-muted);cursor:pointer;background:0 0;border:none;flex-shrink:0;justify-content:center;align-items:center;transition:background .12s,color .12s;display:flex}.modal-close:hover{background:var(--bg-raised);color:var(--text-primary)}.modal-body{padding:var(--sp-5) var(--sp-6);color:var(--text-secondary);font-size:13.5px;line-height:1.65;overflow-y:auto}.help-section{margin-bottom:var(--sp-5)}.help-section:last-child{margin-bottom:0}.help-section h3{text-transform:uppercase;letter-spacing:.06em;color:var(--text-muted);margin:0 0 var(--sp-2) 0;font-size:12px;font-weight:700}.help-section p{margin:0 0 var(--sp-2) 0;color:var(--text-secondary)}.help-section p:last-child{margin-bottom:0}.help-formula{background:var(--bg-raised);border:1px solid var(--border);border-left:3px solid var(--accent);border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);font-family:var(--mono);color:var(--text-primary);margin-bottom:var(--sp-3);white-space:pre-wrap;font-size:13px;line-height:1.8}.help-example{background:color-mix(in srgb, var(--positive) 6%, var(--bg-surface));border:1px solid color-mix(in srgb, var(--positive) 20%, var(--border));border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);margin-bottom:var(--sp-3);white-space:pre-wrap;font-size:13px;line-height:1.75;font-family:var(--mono)}.help-warning{background:color-mix(in srgb, var(--negative) 6%, var(--bg-surface));border:1px solid color-mix(in srgb, var(--negative) 20%, var(--border));border-radius:var(--radius-sm);padding:var(--sp-3) var(--sp-4);white-space:pre-wrap;font-size:13px;line-height:1.75}.help-badge{text-transform:uppercase;letter-spacing:.07em;margin-bottom:var(--sp-2);color:#fff;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:700;display:inline-block}.help-badge.compound{background:var(--accent)}.help-badge.simple{background:var(--positive)}.card{background:var(--bg-surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--sp-6);box-shadow:var(--shadow-sm)}.card-title{color:var(--text-secondary);text-transform:uppercase;letter-spacing:.06em;margin-bottom:var(--sp-4);align-items:center;gap:var(--sp-2);font-size:13px;font-weight:600;display:flex}.form-grid{gap:var(--sp-4);display:grid}.form-grid-2{grid-template-columns:1fr 1fr}.form-grid-3{grid-template-columns:1fr 1fr 1fr}@media (width<=640px){.form-grid-2,.form-grid-3{grid-template-columns:1fr}}.field{gap:var(--sp-1);flex-direction:column;display:flex}.field label{color:var(--text-secondary);font-size:12.5px;font-weight:500}.field input,.field select{height:38px;padding:0 var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--bg-raised);color:var(--text-primary);font-family:var(--sans);outline:none;width:100%;font-size:14px;transition:border-color .15s,box-shadow .15s}.field input:focus,.field select:focus{border-color:var(--border-focus);box-shadow:0 0 0 3px var(--accent-subtle)}.field input.error,.field select.error{border-color:var(--negative)}.field-error{color:var(--negative);font-size:12px}.field-hint{color:var(--text-muted);font-size:12px}.btn{justify-content:center;align-items:center;gap:var(--sp-2);height:38px;padding:0 var(--sp-5);border-radius:var(--radius-sm);font-family:var(--sans);cursor:pointer;white-space:nowrap;border:none;font-size:13.5px;font-weight:550;transition:background .12s,opacity .12s,transform 80ms;display:inline-flex}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent);color:var(--text-on-accent)}.btn-primary:hover{background:var(--accent-hover)}.btn-ghost{color:var(--text-secondary);border:1px solid var(--border);background:0 0}.btn-ghost:hover{background:var(--bg-raised);color:var(--text-primary)}.metrics-grid{gap:var(--sp-3);grid-template-columns:repeat(auto-fit,minmax(160px,1fr));display:grid}.metric{background:var(--bg-raised);border-radius:var(--radius-md);padding:var(--sp-4);gap:var(--sp-1);flex-direction:column;display:flex}.metric-label{color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;font-size:11.5px;font-weight:500}.metric-value{font-size:22px;font-weight:700;font-family:var(--mono);color:var(--text-primary);letter-spacing:-.03em}.metric-value.positive{color:var(--positive)}.metric-value.negative{color:var(--negative)}.metric-value.accent{color:var(--accent)}.metric-sub{color:var(--text-muted);font-size:11.5px}.alert{padding:var(--sp-3) var(--sp-4);border-radius:var(--radius-sm);gap:var(--sp-2);align-items:flex-start;font-size:13px;display:flex}.alert-error{background:var(--negative-subtle);border:1px solid var(--negative);color:var(--negative)}.alert-warning{background:var(--warning-subtle);border:1px solid var(--warning);color:var(--warning)}.table-wrapper{border-radius:var(--radius-md);border:1px solid var(--border);overflow-x:auto}table.data-table{border-collapse:collapse;width:100%;font-size:13px}table.data-table thead tr{background:var(--bg-raised)}table.data-table th{padding:var(--sp-2) var(--sp-4);text-align:right;color:var(--text-muted);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--border);white-space:nowrap;font-size:11.5px;font-weight:600}table.data-table th:first-child{text-align:center}table.data-table td{padding:var(--sp-2) var(--sp-4);text-align:right;border-bottom:1px solid var(--border);font-family:var(--mono);color:var(--text-primary)}table.data-table td:first-child{text-align:center;font-family:var(--sans);color:var(--text-muted);font-weight:500}table.data-table tbody tr:last-child td{border-bottom:none}table.data-table tbody tr:hover td{background:var(--accent-subtle)}.tabs{background:var(--bg-raised);border-radius:var(--radius-sm);gap:2px;width:fit-content;padding:3px;display:flex}.tab{padding:var(--sp-2) var(--sp-4);border-radius:calc(var(--radius-sm) - 2px);cursor:pointer;color:var(--text-secondary);background:0 0;border:none;font-size:13px;font-weight:500;transition:background .12s,color .12s}.tab.active{background:var(--bg-surface);color:var(--text-primary);box-shadow:var(--shadow-sm)}.section-gap{gap:var(--sp-6);flex-direction:column;display:flex}.row-gap{gap:var(--sp-4);flex-wrap:wrap;display:flex}
