:root{color-scheme:light;--bg: #f5f5f6;--bg-elev: rgba(255, 255, 255, .7);--card: #ffffff;--card-contrast: #0f0f11;--text: #15161a;--text-muted: #5a5c63;--border: rgba(15, 16, 19, .1);--accent: #3b3d45;--accent-contrast: #ffffff;--success: rgba(84, 170, 119, .25);--danger: rgba(186, 85, 90, .25);--shadow: 0 22px 55px -35px rgba(9, 10, 12, .45);--ring: rgba(63, 65, 73, .6);--ring-offset: rgba(255, 255, 255, .4);--radius-sm: 10px;--radius-md: 14px;--radius-lg: 18px;--transition: all .16s ease;--font-display: "Sora", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-sans: "Space Grotesk", ui-sans-serif, system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Space Grotesk", "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace;--text-xs: .75rem;--text-sm: .875rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.5rem;--text-3xl: 2rem;--text-4xl: 2.5rem;--tracking-tight: -.015em;--tracking-normal: 0;--tracking-wide: .025em}:root.theme-light{color-scheme:light;--bg: #f5f5f6;--bg-elev: rgba(255, 255, 255, .7);--card: #ffffff;--card-contrast: #0f0f11;--text: #15161a;--text-muted: #5a5c63;--border: rgba(15, 16, 19, .1);--accent: #3b3d45;--accent-contrast: #ffffff;--success: rgba(84, 170, 119, .25);--danger: rgba(186, 85, 90, .25);--shadow: 0 22px 55px -35px rgba(9, 10, 12, .45);--ring: rgba(63, 65, 73, .6);--ring-offset: rgba(255, 255, 255, .4)}.theme-dark{color-scheme:dark;--bg: #0b0b0d;--bg-elev: rgba(16, 17, 22, .6);--card: rgba(18, 19, 24, .92);--card-contrast: #f5f6f8;--text: #f3f4f6;--text-muted: #9ea0a8;--border: rgba(245, 246, 250, .08);--accent: #74767e;--accent-contrast: #0d0d10;--success: rgba(124, 204, 159, .3);--danger: rgba(214, 115, 120, .3);--shadow: 0 28px 65px -28px rgba(0, 0, 0, .65);--ring: rgba(165, 167, 175, .55);--ring-offset: rgba(18, 19, 24, .75)}*,*:before,*:after{box-sizing:border-box}html,body{margin:0;padding:0;min-height:100%;background-color:var(--bg);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;font-size:16px;letter-spacing:var(--tracking-normal);line-height:1.5}img,svg{display:block;max-width:100%}button,input{font-family:inherit;transition:var(--transition)}a{color:inherit;text-decoration:none}#root{min-height:100vh;display:flex;flex-direction:column;align-items:center}#root .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#root .fade-in{animation:fade-in .35s ease}.container{width:min(100%,1100px);display:flex;flex-direction:column;gap:24px;padding:32px clamp(16px,4vw,40px) 40px}.app-shell{display:flex;flex-direction:column;gap:24px}.top-bar{position:sticky;top:0;z-index:8;display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:16px;padding:24px clamp(24px,5vw,40px);background:var(--bg-elev);border-bottom:1px solid var(--border);backdrop-filter:blur(26px);-webkit-backdrop-filter:blur(26px);box-shadow:0 18px 30px -22px #01010166}.top-bar__main{display:flex;flex-direction:column;gap:8px;flex-grow:1}.top-bar__metrics{display:flex;align-items:baseline;gap:32px;margin-left:-2px}.top-bar__title{margin:0;font-family:var(--font-display);font-size:var(--text-sm);font-weight:500;letter-spacing:.1em;text-transform:uppercase;color:var(--text-muted);opacity:.8}.top-bar__actions{display:flex;align-items:center;gap:12px}.card{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);padding:clamp(20px,3vw,28px);box-shadow:var(--shadow);display:flex;flex-direction:column;gap:24px}.card-header{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap}.card__title{margin:0;font-family:var(--font-display);font-size:var(--text-sm);font-weight:600;letter-spacing:var(--tracking-wide);text-transform:uppercase;color:var(--text-muted);position:relative;display:inline-block}.card__title:after{content:"";position:absolute;bottom:-4px;left:0;width:2rem;height:2px;background:var(--accent);opacity:.5}h1,h2,h3,h4{color:var(--card-contrast)}.btn-group{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;height:42px;padding:0 18px;border-radius:12px;border:1px solid transparent;background:transparent;color:var(--text);font-weight:600;font-size:15px;letter-spacing:.015em;cursor:pointer;transition:var(--transition);white-space:nowrap}.btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 10px 25px -18px #0c0c0ea6}.btn:active:not(:disabled){transform:translateY(1px)}.btn:focus-visible{outline:2px solid var(--ring);outline-offset:2px;box-shadow:0 0 0 2px var(--ring-offset)}.btn:disabled{cursor:not-allowed;opacity:.65}.btn--primary{background:var(--card-contrast);color:var(--accent-contrast);border-color:#0f1013cc;margin-top:2px}.btn--primary:hover:not(:disabled){background:#131418e6}.btn--ghost{border:1px solid rgba(108,110,120,.3);background:#70727b0f;color:var(--text)}.btn--ghost:hover:not(:disabled){background:#76788124;border-color:#6c6e787a}.theme-toggle{display:inline-flex;align-items:center;gap:8px;padding:8px 16px;border-radius:99px;border:1px solid rgba(108,110,120,.25);background:#70727b0a;color:var(--text-muted);font-size:14px;font-weight:500;line-height:1;cursor:pointer;transition:all .2s ease}.theme-toggle:hover{background:#70727b14;border-color:#6c6e7859;transform:translateY(-1px)}.theme-toggle:active{transform:translateY(1px)}.theme-toggle__icon{display:flex;align-items:center;justify-content:center;width:20px;height:20px;transition:transform .3s ease}.theme-toggle:hover .theme-toggle__icon{transform:rotate(12deg) scale(1.1)}.theme-toggle__label{position:relative;transition:opacity .2s ease}.theme-toggle:focus-visible{outline:2px solid var(--ring);outline-offset:2px;box-shadow:0 0 0 2px var(--ring-offset)}.portfolio-key-manager{display:flex;align-items:center;gap:8px;position:relative}.portfolio-key-input-group{position:relative;display:flex;align-items:center}.portfolio-key-input{width:160px;height:38px;padding:0 32px 0 14px;border-radius:10px;border:1px solid rgba(108,110,120,.3);background:#ffffffd9;color:var(--text);font-size:14px;font-weight:500;transition:all .2s ease}.theme-dark .portfolio-key-input{background:#1c1d22e6;border-color:#8c8e964d}.portfolio-key-input::placeholder{color:var(--text-muted);opacity:.6}.portfolio-key-input:focus{outline:2px solid var(--ring);outline-offset:2px;box-shadow:0 0 0 2px var(--ring-offset);border-color:var(--accent)}.portfolio-key-input.error{border-color:#ba555a99}.portfolio-key-input.success{border-color:#54aa7799}.portfolio-key-check{position:absolute;right:10px;color:#54aa77e6;font-size:16px;font-weight:700;pointer-events:none;animation:check-appear .3s ease}@keyframes check-appear{0%{opacity:0;transform:scale(.5)}to{opacity:1;transform:scale(1)}}.portfolio-key-actions{display:flex;gap:6px}.portfolio-key-btn{height:38px;padding:0 14px;font-size:14px;white-space:nowrap}.portfolio-key-error{position:absolute;top:calc(100% + 8px);left:0;right:0;padding:8px 12px;border-radius:8px;background:#ba555a1f;border:1px solid rgba(186,85,90,.3);color:#8f4045eb;font-size:12px;font-weight:500;white-space:nowrap;z-index:10;animation:error-appear .2s ease}@keyframes error-appear{0%{opacity:0;transform:translateY(-4px)}to{opacity:1;transform:translateY(0)}}.portfolio-key-disabled{color:var(--text-muted);font-size:13px;opacity:.7}@media(max-width:768px){.portfolio-key-input{width:140px}.portfolio-key-btn{padding:0 12px;font-size:13px}}.btn--icon{width:38px;height:38px;border-radius:11px;border:1px solid rgba(108,110,120,.25);background:#70727b0a;font-size:18px;line-height:1;color:var(--text-muted)}.btn--icon:hover:not(:disabled){color:#b35b5e;border-color:#b35b5e59;background:#b35b5e14}.btn--icon:focus-visible{outline:2px solid rgba(179,91,94,.4);box-shadow:0 0 0 2px #ffffff59}.input{width:100%;height:42px;padding:0 16px;border-radius:12px;border:1px solid rgba(112,115,123,.35);background:#ffffffb8;box-shadow:inset 0 0 0 1px #70737b14;color:var(--text);transition:var(--transition);margin-top:6px}.theme-dark .input{background:#1c1d22f2;border-color:#8c8e964d;box-shadow:inset 0 0 0 1px #8c8e9614}.input::placeholder{color:#70727bb3}.input:focus-visible{outline:2px solid var(--ring);outline-offset:2px;box-shadow:0 0 0 2px var(--ring-offset)}.input:invalid{border-color:#ba555aa6}.form-grid{display:grid;grid-template-columns:minmax(180px,1fr) minmax(140px,1fr) auto;gap:24px;align-items:start}.form-grid>div{display:flex;flex-direction:column;gap:8px}.form-grid>div:last-child{margin-top:36px}.form-grid .helper{margin-top:4px;font-size:var(--text-xs);color:var(--text-muted)}@media(max-width:768px){.form-grid{grid-template-columns:1fr}}.helper{margin-top:6px;font-size:13px;color:var(--text-muted)}.metrics-grid{display:flex;align-items:baseline;gap:32px}.kpi{display:flex;align-items:baseline;gap:16px;animation:kpi-pop .5s cubic-bezier(.2,.8,.2,1)}.kpi:first-child .kpi__value{font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:clamp(3rem,6vw,4rem);font-weight:700;color:var(--card-contrast);font-variant-numeric:tabular-nums;letter-spacing:-.04em;line-height:1;background:linear-gradient(to right,var(--card-contrast),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.kpi:last-child{position:relative;font-size:clamp(2.25rem,4.8vw,3.2rem);line-height:1}.kpi:last-child .kpi__value{font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-weight:700;color:var(--card-contrast);font-variant-numeric:tabular-nums;letter-spacing:-.04em;line-height:1;background:linear-gradient(to right,var(--card-contrast),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.kpi__label{display:none}.kpi__value{font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:inherit;font-weight:600;color:var(--card-contrast);font-variant-numeric:tabular-nums;letter-spacing:-.03em}.kpi__delta{display:inline-flex;align-items:center;gap:4px;font-variant-numeric:tabular-nums;font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:var(--text-base);font-weight:600;letter-spacing:-.02em}.kpi__delta--up{color:#498360f2}.kpi__delta--down{color:#98484de6}.table-wrapper{position:relative;overflow-x:auto;border-radius:var(--radius-lg)}.table{width:100%;border-collapse:separate;border-spacing:0;min-width:640px;font-size:15px}.table thead{position:sticky;top:0;z-index:1}.table thead th{text-align:left;padding:14px 24px;background:#f4f4f6eb;color:var(--text-muted);font-weight:600;letter-spacing:.05em;text-transform:uppercase;font-size:12px;border-bottom:1px solid rgba(112,114,123,.18)}.table thead th:not(:first-child){text-align:right}.theme-dark .table thead th{background:#18191de6}.table tbody tr{transition:var(--transition);cursor:pointer}.table tbody tr:hover{background:#797b8414;transform:translateY(-1px)}.table tbody tr.is-selected{background:#787a841f;box-shadow:inset 3px 0 0 var(--accent)}.table td{padding:16px 24px;border-bottom:1px solid rgba(112,114,123,.15);color:var(--text);font-weight:500;font-variant-numeric:tabular-nums;font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;letter-spacing:-.02em}.table td[data-align=right]{text-align:right;font-feature-settings:"tnum";font-weight:600}.table th:first-child,.table td:first-child{width:120px}.table th:nth-child(2),.table td:nth-child(2){width:100px}.table th:nth-child(3),.table td:nth-child(3){width:120px}.table th:nth-child(4),.table td:nth-child(4){width:120px}.table th:nth-child(5),.table td:nth-child(5){width:140px}.table th:last-child,.table td:last-child{width:80px;text-align:center;padding:16px 12px}.table td:first-child,.table td:nth-child(2),.table td:nth-child(3),.table td:nth-child(4),.table td:nth-child(5){font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:24px;font-weight:700;color:var(--card-contrast);font-variant-numeric:tabular-nums;letter-spacing:-.04em;line-height:1.2;background:linear-gradient(to right,var(--card-contrast),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.table td .change-value{font-family:SF Pro Display,-apple-system,BlinkMacSystemFont,system-ui,sans-serif;font-size:24px;font-weight:700;color:var(--card-contrast);font-variant-numeric:tabular-nums;letter-spacing:-.04em;line-height:1.2;background:linear-gradient(to right,var(--card-contrast),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.table td .change-value.positive,.table td .change-value.negative{background:linear-gradient(to right,var(--card-contrast),var(--accent));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:32px;border:2px dashed rgba(112,114,123,.35);border-radius:var(--radius-md);background:#797b840f;color:var(--text-muted);text-align:center}.banner{padding:12px 18px;border-radius:var(--radius-md);background:#7678811f;border:1px solid rgba(112,114,123,.25);color:var(--text-muted);font-size:14px}.banner--error{background:#a650552e;border-color:#a6505566;color:#8f4045eb}.toast{position:fixed;right:28px;bottom:28px;padding:16px 20px;border-radius:var(--radius-md);background:#141416e0;color:#f7f7f8;font-size:14px;box-shadow:0 18px 40px -25px #000000a6;border:1px solid rgba(255,255,255,.08);max-width:min(320px,80vw)}.chart{position:relative;width:100%;padding:28px 24px 16px;border-radius:var(--radius-lg);border:1px solid rgba(112,114,123,.18);background:linear-gradient(rgba(112,114,123,.12) 1px,transparent 1px) 0 0 / 100% 24px,linear-gradient(90deg,rgba(112,114,123,.12) 1px,transparent 1px) 0 0 / 36px 100%,#ffffff80;overflow:hidden}.theme-dark .chart{background:linear-gradient(rgba(112,114,123,.18) 1px,transparent 1px) 0 0 / 100% 24px,linear-gradient(90deg,rgba(112,114,123,.18) 1px,transparent 1px) 0 0 / 36px 100%,#0c0c10d1}.chart__legend{position:absolute;top:14px;right:18px}.chart svg{width:100%;height:auto}.sparkline-path{stroke:#1c1d22d9;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round;fill:none;filter:drop-shadow(0 6px 18px rgba(18,19,24,.35))}.theme-dark .sparkline-path{stroke:#d6d6dcd1;filter:drop-shadow(0 6px 22px rgba(0,0,0,.5))}.sparkline-glow{fill:#70727b2e}.tag{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:999px;background:#76788129;border:1px solid rgba(118,120,129,.28);color:var(--text);font-size:12px;letter-spacing:.08em;text-transform:uppercase}.diagnostics{margin-top:20px;font-size:13px;color:var(--text-muted)}.diagnostics pre{background:#76788114;border-radius:var(--radius-md);border:1px solid rgba(112,114,123,.2);padding:16px;overflow-x:auto}@keyframes kpi-pop{0%{transform:translateY(6px) scale(.98);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes fade-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.modal-overlay{position:fixed;inset:0;background:#0009;backdrop-filter:blur(4px);-webkit-backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:20px;animation:modal-overlay-appear .2s ease}@keyframes modal-overlay-appear{0%{opacity:0}to{opacity:1}}.modal-content{background:var(--card);border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:0 24px 48px -12px #00000080;max-width:480px;width:100%;overflow:hidden;animation:modal-content-appear .3s cubic-bezier(.2,.8,.2,1)}@keyframes modal-content-appear{0%{opacity:0;transform:scale(.95) translateY(20px)}to{opacity:1;transform:scale(1) translateY(0)}}.modal-header{padding:24px 28px 16px;border-bottom:1px solid var(--border)}.modal-title{margin:0;font-family:var(--font-display);font-size:var(--text-xl);font-weight:600;color:var(--card-contrast);letter-spacing:var(--tracking-tight)}.modal-body{padding:24px 28px}.modal-message{margin:0;font-size:var(--text-base);line-height:1.6;color:var(--text)}.modal-footer{padding:16px 28px 24px;display:flex;gap:12px;justify-content:flex-end}.modal-footer .btn{min-width:100px}@media(max-width:768px){.modal-content{max-width:calc(100vw - 32px)}.modal-header,.modal-body,.modal-footer{padding-left:20px;padding-right:20px}}
