:root{--app-font-display: "Sora", ui-sans-serif, system-ui, sans-serif;--app-font-sans: "Manrope", ui-sans-serif, system-ui, sans-serif;--app-navy: oklch(.238 .061 254);--app-teal: oklch(.55 .091 213);--app-mint: oklch(.755 .082 187);--app-bg: oklch(.985 .004 235);--app-surface: oklch(1 0 0);--app-surface-muted: oklch(.962 .007 235);--app-border: oklch(.915 .008 240);--app-border-strong: oklch(.83 .012 240);--app-text: var(--app-navy);--app-muted: oklch(.556 .026 246);--app-muted-2: oklch(.7 .018 246);--app-primary: var(--app-teal);--app-primary-soft: oklch(.945 .021 205);--app-success: oklch(.5 .1 178);--app-success-soft: color-mix(in oklch, var(--app-success) 12%, white);--app-danger: oklch(.567 .164 22);--app-danger-soft: color-mix(in oklch, var(--app-danger) 12%, white);--app-warning: oklch(.556 .026 246);--app-warning-soft: var(--app-surface-muted);--app-info: oklch(.556 .026 246);--app-info-soft: var(--app-surface-muted);--app-radius-lg: .75rem;--app-shadow: 0 1px 2px oklch(.23 .06 250 / 4%), 0 8px 24px -16px oklch(.23 .06 250 / 18%);--app-sidebar-bg: var(--app-navy);--app-sidebar-fg: oklch(.93 .012 235);--app-sidebar-fg-70: oklch(.93 .012 235 / 70%);--app-sidebar-fg-60: oklch(.93 .012 235 / 60%);--app-sidebar-fg-45: oklch(.93 .012 235 / 55%);--app-sidebar-fg-40: oklch(.93 .012 235 / 40%);--app-sidebar-accent: oklch(.3 .058 252);--app-sidebar-accent-fg: oklch(.97 .007 235);--app-sidebar-border: oklch(1 0 0 / 10%);color:var(--app-text);background:var(--app-bg);font-family:var(--app-font-sans),ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;font-synthesis:none;text-rendering:optimizeLegibility}h1,h2,h3,h4{font-family:var(--app-font-display);letter-spacing:-.015em}*{box-sizing:border-box}body{margin:0;min-width:320px;min-height:100vh;background:var(--app-bg);background-attachment:fixed;background-position:center,center,center top;background-repeat:no-repeat;background-size:auto,auto,cover;overflow-x:hidden;color:var(--app-text)}body:before,body:after{position:fixed;top:0;right:0;bottom:0;left:0;z-index:-2;pointer-events:none;content:"";display:none}body:before{background:linear-gradient(rgba(139,205,169,.08) 1px,transparent 1px),linear-gradient(90deg,rgba(139,205,169,.08) 1px,transparent 1px);background-size:58px 58px;-webkit-mask-image:linear-gradient(180deg,rgba(0,0,0,.75),transparent 82%);mask-image:linear-gradient(180deg,rgba(0,0,0,.75),transparent 82%)}body:after{z-index:-1;background:radial-gradient(circle at 18% 22%,rgba(58,142,103,.22),transparent 28%),radial-gradient(circle at 84% 18%,rgba(196,155,69,.16),transparent 26%),linear-gradient(90deg,#07110eb8,#07110e2e 42%,#07110ead)}a{color:inherit}.inline-link{color:#8be0ad;font-weight:800}.app-shell{--sidebar-w: 240px;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr);gap:0;width:100%;min-height:100vh;padding:0;background:var(--app-bg);transition:grid-template-columns .22s ease}@media(min-width:1181px){.app-shell[data-sidebar-collapsed=true]{--sidebar-w: 72px}}.app-sidebar{position:sticky;top:0;align-self:start;display:flex;gap:0;min-height:100vh;padding:0;border:0;border-radius:0;background:var(--app-sidebar-bg);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none;flex-direction:column;width:var(--sidebar-w);max-height:100vh;margin:0;border-right:1px solid var(--app-sidebar-border);overflow:visible;transition:width .22s ease}.sidebar-brand{display:grid;gap:12px;border-bottom:0;grid-template-columns:36px minmax(0,1fr);align-items:center;min-height:74px;padding:20px 18px 12px}.sidebar-collapse-toggle{position:absolute;top:50%;right:-11px;z-index:5;display:inline-flex;width:24px;height:24px;flex:0 0 auto;align-items:center;justify-content:center;border:1px solid var(--app-border);border-radius:999px;background:var(--app-surface);color:var(--app-muted);box-shadow:var(--app-shadow);cursor:pointer;transform:translateY(-50%);transition:background-color .14s ease,color .14s ease,border-color .14s ease}.sidebar-collapse-toggle:hover{border-color:var(--app-teal);color:var(--app-teal)}.sidebar-collapse-toggle svg{width:13px;height:13px}@media(max-width:1180px){.sidebar-collapse-toggle{display:none}}@media(min-width:1181px){.app-shell[data-sidebar-collapsed=true] .sidebar-brand{grid-template-columns:1fr;justify-items:center;padding-inline:10px}.app-shell[data-sidebar-collapsed=true] .sidebar-brand-copy,.app-shell[data-sidebar-collapsed=true] .sidebar-group-label{display:none}.app-shell[data-sidebar-collapsed=true] .tabs{padding-inline:8px}.app-shell[data-sidebar-collapsed=true] .sidebar-nav-link{justify-content:center;padding-inline:0}.app-shell[data-sidebar-collapsed=true] .sidebar-nav-link span:not(.nav-icon){display:none}}.sidebar-brand h1{font-size:.92rem;margin:0;color:var(--app-sidebar-fg);font-family:var(--app-font-display);font-weight:600;line-height:1.15}.sidebar-intro{margin-bottom:0;color:#5f7084;line-height:1.55}.sidebar-actions{display:grid;gap:10px}.sidebar-actions>*{width:100%}.app-content{min-width:0;padding:28px}.tab-strip{display:flex;gap:22px;overflow-x:auto;padding:0 28px;border-bottom:1px solid var(--app-border);background:var(--app-surface)}.tab-strip a{display:inline-flex;align-items:center;padding:12px 2px;border-bottom:2px solid transparent;color:var(--app-muted);font-size:.86rem;font-weight:600;white-space:nowrap}.tab-strip a:hover{color:var(--app-text)}.tab-strip a.active{border-bottom-color:var(--app-primary);color:var(--app-text)}.hero{position:relative;display:grid;grid-template-columns:minmax(0,1fr) auto;gap:24px;min-height:150px;padding:18px 0 24px;border-bottom:1px solid rgba(154,178,160,.22)}.hero-main{display:grid;gap:10px;padding-top:10px}.hero-actions{position:relative;z-index:1;display:flex;align-items:flex-start;justify-items:end;gap:8px;justify-content:flex-end;min-width:min(100%,520px);padding-top:0}.user-menu{display:flex;max-width:min(100%,420px);min-height:42px;align-items:center;gap:8px;padding:4px 4px 4px 10px;border:1px solid rgba(173,202,184,.22);border-radius:8px;background:#0a1c16b8;box-shadow:0 18px 50px #0000003d;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.currency-switcher{display:inline-flex;min-height:32px;align-items:center;overflow:hidden;gap:2px;border-radius:8px;padding:3px}.currency-rate{display:inline-flex;min-width:max-content;align-items:center;margin-right:6px;padding:0;color:var(--app-muted);font-size:.76rem;font-weight:600;font-variant-numeric:tabular-nums;white-space:nowrap}.currency-switcher button{min-width:44px;min-height:26px;border:0;border-radius:6px;padding:0 10px;background:transparent;color:var(--app-muted);font:inherit;font-size:.76rem;font-weight:700;cursor:pointer;transition:background-color .14s ease,color .14s ease,box-shadow .14s ease}.currency-switcher button:last-child{border-right:0}.currency-switcher button[aria-pressed=true]{background:var(--app-surface);box-shadow:var(--app-shadow);color:var(--app-text)}.user-menu div{min-width:0;display:flex;align-items:center;gap:6px}.user-menu span{display:block;color:var(--app-muted-2);font-size:.66rem;font-weight:600;text-transform:none;flex:0 0 auto}.user-menu strong{display:block;max-width:150px;overflow:hidden;color:var(--app-text);font-size:.82rem;text-overflow:ellipsis;white-space:nowrap;font-weight:700}.sign-out-button{display:inline-flex;min-height:30px;flex:0 0 auto;align-items:center;justify-content:center;border:1px solid rgba(173,202,184,.28);border-radius:8px;padding:5px 9px;background:transparent;color:#c9e6d6;font:inherit;font-size:.82rem;font-weight:800;cursor:pointer}.sign-out-button:disabled{cursor:not-allowed;opacity:.6}.eyebrow{margin:0 0 8px;color:var(--app-muted);font-size:.78rem;font-weight:800;letter-spacing:0;text-transform:uppercase}.brand-line{display:flex;flex-wrap:wrap;align-items:baseline;gap:10px}.brand-line .eyebrow{margin-bottom:0}.build-meta{margin:3px 0 0;color:var(--app-sidebar-fg-40);font-variant-numeric:tabular-nums;font-size:.67rem;font-weight:500}h1,h2,h3,p{margin-top:0;color:inherit}h1{max-width:780px;margin-bottom:0;font-size:clamp(2rem,4.4vw,3.65rem);line-height:1}h2{margin-bottom:0;font-size:clamp(2rem,4vw,3.25rem);line-height:1}h3{margin-bottom:14px;font-size:1rem;color:var(--app-text);font-weight:700}.status{display:inline-flex;min-height:34px;align-items:center;justify-content:center;padding:6px 10px;border:1px solid rgba(173,202,184,.22);border-radius:8px;background:#0a1c16b8;color:#c9e6d6;font-size:.86rem;white-space:nowrap}.notice{max-width:720px;margin:28px 0;color:#d5e1d8;font-size:1.1rem}.metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(190px,1fr));gap:12px;margin:0}.metric-card{min-height:88px;padding:14px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:linear-gradient(180deg,#0c1f19e6,#081612db),linear-gradient(135deg,rgba(57,153,105,.18),transparent 42%);box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.metric-card span{display:block;margin-bottom:10px;color:#9ab2a0;font-size:.78rem}.metric-card strong{display:block;color:#e8f5ed;font-size:1.35rem;line-height:1.1;overflow-wrap:anywhere}.overview-section{gap:24px}.overview-hero-grid{display:grid;grid-template-columns:repeat(5,minmax(150px,1fr));gap:14px}.overview-primary-metric{min-height:88px;padding:14px;border:1px solid rgba(90,189,132,.3);border-radius:8px;background:linear-gradient(180deg,#103426e6,#081612db),linear-gradient(135deg,rgba(90,189,132,.18),transparent 42%);box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-color:#2563eb38}.overview-primary-metric span,.overview-mini-metrics span{display:block;margin-bottom:10px;color:#9ab2a0;font-size:.82rem;font-weight:800;text-transform:uppercase}.overview-primary-metric strong{display:block;color:#ecf4ee;font-size:clamp(1.6rem,2.5vw,2.15rem);line-height:1.08;overflow-wrap:anywhere}.overview-summary{display:grid;grid-template-columns:minmax(260px,1fr) minmax(280px,.78fr);gap:14px}.overview-copy,.overview-mini-metrics{padding:18px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#091814c2;box-shadow:0 18px 50px #00000038;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.overview-copy p{margin-bottom:0;color:#5f7084;line-height:1.6}.overview-copy p+p{margin-top:12px}.overview-mini-metrics{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.overview-mini-metrics strong{display:block;color:#e8f5ed;font-size:1.2rem;line-height:1.15;overflow-wrap:anywhere}.chart-panel{padding:20px;border:1px solid rgba(90,189,132,.26);border-radius:8px;background:#09181494;box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.chart-heading{display:flex;align-items:baseline;justify-content:space-between;gap:14px;margin-bottom:10px}.chart-heading h3{margin-bottom:0}.chart-heading span{color:#8be0ad;font-size:1rem;font-weight:900}.chart-panel svg{display:block;width:100%;height:260px}.chart-grid{display:grid;grid-template-columns:minmax(0,1fr);gap:18px}.digrin-chart svg{height:340px}.heatmap-chart svg{height:620px;min-height:520px}.heatmap-chart{width:100%;padding:14px;background:#1a2634}.chart-grid-line{stroke:#e5eaf0;stroke-width:1}.chart-axis-label{fill:#9ab2a0;font-size:12px;font-weight:700}.chart-axis-title{fill:#b9d9c6;font-size:12px;font-weight:800}.chart-area{fill:#7a94b81f}.chart-line{fill:none;stroke:var(--app-primary);stroke-linecap:round;stroke-linejoin:round;stroke-width:4}.chart-point{fill:var(--app-info);stroke:#fff;stroke-width:2}.digrin-bar{opacity:.88}.digrin-bar-0,.digrin-bar-fill-0{fill:var(--app-primary);background:var(--app-primary)}.digrin-bar-1,.digrin-bar-fill-1{fill:var(--app-info);background:var(--app-info)}.digrin-bar-2,.digrin-bar-fill-2{fill:var(--app-warning);background:var(--app-warning)}.digrin-bar-3,.digrin-bar-fill-3{fill:var(--app-danger);background:var(--app-danger)}.chart-legend{display:flex;flex-wrap:wrap;gap:8px 14px;margin-top:10px}.chart-legend span{display:inline-flex;align-items:center;gap:6px;color:#5f7084;font-size:.82rem;font-weight:800}.digrin-legend-swatch{width:10px;height:10px;border-radius:2px}.heatmap-sector-frame{fill:#0b121c3d;stroke:#111926e6;stroke-width:2}.heatmap-sector-label{fill:#dde7f2;font-size:13px;font-weight:800}.heatmap-tile{stroke:#121c29eb;stroke-width:2}.heatmap-ticker{fill:#f8fbff;font-size:16px;font-weight:500;paint-order:stroke;stroke:#15202f80;stroke-width:3px}.heatmap-value,.heatmap-change{fill:#edf3f9;font-size:12px;font-weight:400;paint-order:stroke;stroke:#15202f75;stroke-width:3px}.heatmap-neutral{fill:#73869b}.heatmap-red-3{fill:#ac6f69}.heatmap-red-2{fill:#c78d86}.heatmap-red-1{fill:#dbaca6}.heatmap-green-1{fill:#a8c5bc}.heatmap-green-2{fill:#88a99d}.heatmap-green-3{fill:#6d8f84}.pie-list{display:grid;gap:8px}.pie-list-row{display:grid;grid-template-columns:minmax(54px,82px) minmax(120px,1fr) minmax(80px,auto);align-items:center;gap:10px}.pie-list-row span{color:var(--app-text);font-weight:900}.pie-list-row strong{color:#5f7084;font-size:.86rem;text-align:right}.pie-list-bar{height:12px;overflow:hidden;border:1px solid rgba(173,202,184,.16);border-radius:999px;background:#030c0a66}.pie-list-bar i{display:block;height:100%;min-width:2px}.digrin-pie-chart{min-height:380px}.digrin-pie-slice{stroke:#fff;stroke-width:1.5}.digrin-pie-slice-0{fill:#94adc7;background:#94adc7}.digrin-pie-slice-1{fill:#b9a686;background:#b9a686}.digrin-pie-slice-2{fill:#8aa7b3;background:#8aa7b3}.digrin-pie-slice-3{fill:#c6958c;background:#c6958c}.digrin-pie-slice-4{fill:#b2a2c4;background:#b2a2c4}.digrin-pie-slice-5{fill:#96beb7;background:#96beb7}.digrin-pie-slice-6{fill:#c5aa8c;background:#c5aa8c}.digrin-pie-slice-7{fill:#a8bf97;background:#a8bf97}.digrin-pie-hole{fill:#f8fafc;stroke:#e3e8ef;stroke-width:1}.digrin-pie-percent{fill:#243445;font-size:12px;font-weight:900;pointer-events:none}.digrin-pie-total-label{fill:var(--app-muted);font-size:12px;font-weight:800;text-transform:uppercase}.digrin-pie-total{fill:var(--app-text);font-size:14px;font-weight:900}.digrin-pie-legend{display:grid;gap:7px;padding:4px;color:var(--app-text);font-family:Inter,ui-sans-serif,system-ui,sans-serif}.digrin-pie-legend-row{display:grid;grid-template-columns:12px minmax(0,1fr) auto;align-items:center;gap:8px;font-size:13px}.digrin-pie-legend-row i{width:10px;height:10px;border-radius:2px}.digrin-pie-legend-row span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.digrin-pie-legend-row strong{color:var(--app-muted);font-size:12px}.admin-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px}.admin-actions{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#091814db;box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.admin-actions p{margin-bottom:0;color:#5f7084;line-height:1.5}.snapshot-admin-panel{display:grid;gap:16px;padding:18px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#091814db;box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.snapshot-admin-panel p{margin-bottom:0;color:#5f7084;line-height:1.5}.admin-table-wrap{overflow-x:auto}.admin-table{min-width:760px}.admin-table code{color:var(--app-text);font:inherit;font-weight:900}.admin-inline-input{width:min(100%,420px);min-height:38px;border:1px solid rgba(173,202,184,.24);border-radius:8px;padding:7px 9px;background:#030c0ab8;color:#ecf4ee;font:inherit}.admin-checkbox{display:inline-flex;align-items:center;gap:8px;color:#5f7084;font-weight:800;white-space:nowrap}.admin-checkbox input{width:18px;height:18px;accent-color:#5abd84}.admin-table-actions{display:flex;flex-wrap:wrap;gap:8px}.danger-button{border-color:#ff8f8480;color:#ffb0a7}.danger-button:hover{border-color:#ff8f84cc;color:#ffd7d2}.admin-subnav{display:flex;flex-wrap:wrap;gap:8px}.admin-subnav button{display:inline-flex;min-height:38px;align-items:center;justify-content:center;border:1px solid rgba(173,202,184,.22);border-radius:8px;padding:8px 12px;background:#fff;color:var(--app-muted);font:inherit;font-size:.92rem;font-weight:800;cursor:pointer;border-color:var(--app-border)}.admin-subnav button[aria-current=page]{border-color:#7a94b866;background:var(--app-primary-soft);color:#627f9e}.admin-muted{margin-top:8px;color:#9ab2a0;font-size:.88rem;overflow-wrap:anywhere}.snapshot-picker{display:grid;min-width:min(100%,360px);gap:10px}.snapshot-picker label{display:grid;gap:8px;color:#5f7084;font-size:.92rem;font-weight:800}.snapshot-picker select{width:100%;min-height:42px;border:1px solid rgba(173,202,184,.26);border-radius:8px;padding:8px 10px;background:#030c0ab8;color:#ecf4ee;font:inherit}.portfolio-form{display:grid;grid-template-columns:minmax(180px,.8fr) minmax(260px,1.4fr) auto;align-items:end;gap:12px}.portfolio-form label{display:grid;gap:8px;color:#5f7084;font-size:.92rem;font-weight:800}.portfolio-form input{width:100%;min-height:42px;border:1px solid rgba(173,202,184,.26);border-radius:8px;padding:8px 10px;background:#030c0ab8;color:#ecf4ee;font:inherit}.admin-message{margin-bottom:0;color:var(--app-success);font-weight:800}.admin-run-result{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));align-items:end;gap:12px;padding:18px;border:1px solid rgba(90,189,132,.26);border-radius:8px;background:#f8fafc;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-color:#7a94b838}.admin-run-result span{display:block;margin-bottom:6px;color:var(--app-muted);font-size:.74rem;font-weight:800;text-transform:uppercase}.admin-run-result strong{display:block;overflow-wrap:anywhere;color:var(--app-text);font-size:.96rem}.crawler-log-list{display:grid;gap:8px;margin:0;padding:14px;border:1px solid rgba(116,167,216,.24);border-radius:8px;background:#f8fafc;border-color:#7a94b833}.crawler-log-list p{margin:0;color:#516173;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:.84rem;overflow-wrap:anywhere}.crawler-progress{display:grid;gap:14px;padding:18px;border:1px solid rgba(214,184,107,.28);border-radius:8px;background:#fcf8f2;border-color:#b292633d}.crawler-progress-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.crawler-progress-heading p{margin-bottom:0;color:#7f705f}.crawler-progress-heading>strong{color:#9d8562;font-size:1.15rem;white-space:nowrap}.crawler-progress-steps{display:grid;gap:8px;margin:0;padding:0;list-style:none}.crawler-progress-steps li{display:grid;grid-template-columns:28px 1fr;align-items:center;gap:10px;color:var(--app-muted)}.crawler-progress-steps li span{display:inline-flex;width:28px;height:28px;align-items:center;justify-content:center;border:1px solid rgba(173,202,184,.22);border-radius:999px;background:#eceff3;font-size:.82rem;font-weight:900;color:var(--app-muted)}.crawler-progress-steps li.is-active{color:#627f9e}.crawler-progress-steps li.is-active span{border-color:#ffe08aad;background:var(--app-primary-soft);color:#627f9e}.crawler-progress-steps li.is-complete{color:#6c8f80}.crawler-progress-steps li.is-complete span{border-color:#5abd849e;background:var(--app-success-soft);color:#6c8f80}.crawler-progress-portfolios{display:flex;align-items:center;justify-content:space-between;gap:12px;color:#d7cda8}.crawler-progress-portfolios strong{color:var(--app-text)}.crawler-result-list{display:grid;gap:10px}.crawler-result-list article{display:grid;gap:8px;padding:14px;border:1px solid rgba(90,189,132,.22);border-radius:8px;background:#0f312485}.crawler-result-list article>div:first-child,.crawler-result-list dl{display:flex;flex-wrap:wrap;gap:10px 16px;align-items:center;justify-content:space-between}.crawler-result-list span,.crawler-result-list dt{color:#9ab2a0;font-size:.82rem;font-weight:800;text-transform:uppercase}.crawler-result-list p,.crawler-result-list dl{margin:0}.crawler-result-list p,.crawler-result-list dd{color:#dcebe2;overflow-wrap:anywhere}.crawler-result-list dd{margin:2px 0 0;font-weight:900}.tabs{position:relative;z-index:2;display:flex;gap:0;width:100%;flex:1 1 auto;flex-direction:column;align-items:stretch;min-height:0;padding:8px 12px 20px;overflow-y:auto}.sidebar-group{display:flex;gap:8px;flex-direction:column}.sidebar-group-links{display:flex;gap:4px;padding-left:0;flex-direction:column}.sections{display:grid;gap:52px}.section{display:grid;gap:20px;padding-top:0}.section-heading{display:grid;gap:4px}.screener-snapshot-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px;justify-content:space-between}.screener-snapshot-row .admin-muted{margin-left:auto;margin-top:0;text-align:right}.section-badge{display:inline-flex;align-items:center;white-space:nowrap}.text-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.text-grid p{margin-bottom:0;color:#5f7084;line-height:1.6}.table-wrap{overflow-x:auto;padding:0;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#0918149e;box-shadow:0 18px 50px #00000047;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.table-wrap-featured{border-color:#5abd8447}.asset-filter-controls{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-bottom:-8px}.asset-filter-controls label{display:inline-flex;min-height:38px;align-items:center;gap:8px;border:1px solid rgba(173,202,184,.22);border-radius:8px;padding:7px 11px;background:#fff;color:var(--app-muted);font-size:.88rem;font-weight:800;border-color:var(--app-border);box-shadow:var(--app-shadow)}.asset-filter-controls input{width:15px;height:15px;accent-color:#5abd84}.stock-link{display:inline-flex;align-items:center;gap:6px;border:0;border-radius:6px;padding:2px 6px;background:var(--app-surface-muted);color:var(--app-text);font:inherit;font-variant-numeric:tabular-nums;font-size:.78rem;font-weight:600;text-decoration:none;text-underline-offset:3px;cursor:pointer}.stock-link:hover{background:var(--app-border);color:var(--app-text)}.portfolio-dashboard-section{gap:18px}.dashboard-heading{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:14px;padding:0 0 2px}.dashboard-heading h2{font-size:clamp(2rem,3.2vw,2.8rem)}.dashboard-heading-meta{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.dashboard-heading-meta span{display:inline-flex;min-height:34px;align-items:center;border:1px solid rgba(173,202,184,.22);border-radius:8px;padding:7px 10px;background:#0a1c16b8;color:#c9e6d6;font-size:.84rem;font-weight:800}.dashboard-muted{margin:0;color:#9ab2a0}.loading-overlay-host{position:relative;min-height:360px}.loading-overlay{position:absolute;z-index:20;top:0;right:0;bottom:0;left:0;display:grid;grid-template-columns:auto minmax(0,560px);align-items:center;align-content:start;justify-content:center;gap:16px;min-height:100%;border:1px solid rgba(90,189,132,.3);border-radius:8px;padding:clamp(36px,7vh,72px) 20px 20px;background:#fffffff0;box-shadow:var(--app-shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);cursor:wait;pointer-events:all;-webkit-user-select:none;user-select:none;border-color:var(--app-border)}.loading-overlay strong{display:block;color:var(--app-text);font-size:clamp(1.15rem,2vw,1.55rem);line-height:1.1}.loading-overlay p{max-width:620px;margin:8px 0 0;color:var(--app-muted);line-height:1.5}.loading-overlay ul{grid-column:1 / -1;display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:2px 0 0;padding:0;list-style:none}.loading-overlay li{border:1px solid rgba(173,202,184,.18);border-radius:8px;padding:7px 10px;background:var(--app-surface-muted);color:var(--app-muted);font-size:.78rem;font-weight:900;text-transform:uppercase;border-color:var(--app-border)}.loading-orbit{position:relative;width:72px;height:72px;border:1px solid rgba(173,202,184,.24);border-radius:50%;background:radial-gradient(circle at center,rgba(122,148,184,.16),rgba(124,159,168,.08) 45%,transparent 56%);border-color:var(--app-border)}.loading-orbit:before{position:absolute;top:8px;right:8px;bottom:8px;left:8px;border:1px dashed rgba(173,202,184,.28);border-radius:inherit;content:"";animation:loading-spin 8s linear infinite}.loading-orbit span{position:absolute;width:10px;height:10px;border-radius:50%;background:var(--app-primary);box-shadow:0 0 18px #7a94b847;animation:loading-pulse 1.6s ease-in-out infinite}.loading-orbit span:nth-child(1){top:5px;left:31px}.loading-orbit span:nth-child(2){right:7px;bottom:16px;animation-delay:.22s}.loading-orbit span:nth-child(3){bottom:16px;left:7px;background:var(--app-info);box-shadow:0 0 18px #7c9fa842;animation-delay:.44s}@keyframes loading-spin{to{transform:rotate(360deg)}}@keyframes loading-pulse{0%,to{transform:scale(.78);opacity:.55}50%{transform:scale(1.18);opacity:1}}.cockpit-grid{display:grid;grid-template-columns:minmax(240px,1.3fr) repeat(auto-fit,minmax(140px,1fr));gap:10px;align-items:stretch}.cockpit-score-card{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto auto auto;column-gap:14px;row-gap:4px;align-items:start;padding:14px 16px;border:1px solid rgba(90,189,132,.32);border-radius:8px;background:linear-gradient(180deg,#0f2b21eb,#081612e6),linear-gradient(135deg,rgba(214,184,107,.18),transparent 48%);box-shadow:0 18px 50px #0000004d}.cockpit-score-card>span{grid-column:1;grid-row:1}.cockpit-score-card>strong{grid-column:1;grid-row:2}.cockpit-score-card>p{grid-column:1;grid-row:3;display:-webkit-box;overflow:hidden;-webkit-box-orient:vertical;-webkit-line-clamp:2}.dashboard-score-ring{grid-column:2;grid-row:1 / 4;align-self:center;width:52px;height:52px}.dashboard-score-ring-track{stroke:var(--app-border)}.dashboard-score-ring-value{stroke:var(--app-teal);transition:stroke-dasharray .24s ease}.cockpit-score-card>span,.dashboard-metric-tile span{color:#9ab2a0;font-size:.78rem;font-weight:800;text-transform:uppercase}.cockpit-score-card strong{color:#ecf4ee;font-size:2.4rem;font-weight:900;line-height:1}.cockpit-score-card p{margin:0;color:#5f7084;font-size:.82rem;line-height:1.4}.score-bar{height:8px;overflow:hidden;border-radius:999px;background:#adcab829}.score-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#d6b86b,#5abd84)}.dashboard-metric-tile{display:flex;flex-direction:column;gap:5px;align-items:flex-start}.dashboard-metric-tile strong{color:#ecf4ee;font-size:clamp(1.1rem,1.8vw,1.35rem);line-height:1.1}.dashboard-metric-tile em{display:block;font-size:.76rem;font-style:normal;font-weight:700;line-height:1.2}.dashboard-panel-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.dashboard-panel{min-height:250px;padding:16px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#0918149e;box-shadow:0 18px 50px #0000003d;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.dashboard-panel h3{margin-bottom:14px;color:var(--app-text)}.dashboard-list{display:grid;gap:0;margin:0;padding:0;list-style:none}.dashboard-list li{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:12px;min-height:54px;padding:10px 2px;border:0;border-top:1px solid var(--app-border);border-radius:0;background:transparent}.dashboard-list li:first-child{border-top:0}.dashboard-list.compact li{min-height:44px}.dashboard-list strong,.dashboard-list span{display:block}.dashboard-list strong{color:var(--app-text)}.dashboard-list span{margin-top:3px;color:var(--app-muted);font-size:.82rem}.dashboard-list b{color:#516173;font-size:.92rem;text-align:right;white-space:nowrap}.allocation-stack{display:flex;height:20px;overflow:hidden;border:1px solid rgba(173,202,184,.18);border-radius:999px;margin-bottom:14px;background:#030c0a57}.allocation-segment{min-width:2px}.allocation-segment-stocks{background:#8fb0a2}.allocation-segment-etfs{background:#d1ba93}.recommendation-bars{display:grid;gap:12px}.recommendation-row{display:grid;grid-template-columns:90px minmax(0,1fr) 58px;align-items:center;gap:10px}.recommendation-row span{color:#c9e6d6;font-size:.86rem;font-weight:800}.recommendation-row div{height:10px;overflow:hidden;border-radius:999px;background:#e6ebf0}.recommendation-row i{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#8fb0a2,#b9a686)}.recommendation-row b{color:#dcebe2;font-size:.86rem;text-align:right}.fair-value-heatmap-section{gap:18px}.fv-heatmap-summary{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}.fv-heatmap-summary article{min-height:92px;padding:14px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#0918149e;box-shadow:0 18px 50px #0000003d}.fv-heatmap-summary span{display:block;margin-bottom:10px;color:#9ab2a0;font-size:.78rem;font-weight:800;text-transform:uppercase}.fv-heatmap-summary strong{color:var(--app-text);font-size:clamp(1.4rem,2.6vw,2rem);line-height:1}.fv-heatmap-legend{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end}.fv-heatmap-swatch{display:inline-flex;min-height:30px;align-items:center;border:1px solid rgba(173,202,184,.2);border-radius:8px;padding:5px 9px;color:#2b3b4c;font-size:.78rem;font-weight:900;border-color:#cdd6e1d9}.fv-heatmap-chart{overflow:hidden;border:1px solid var(--app-border);background:#f8fafc}.fv-heatmap-click-target{cursor:pointer;outline:none}.fv-heatmap-click-target:hover .fv-heatmap-tile,.fv-heatmap-click-target:focus-visible .fv-heatmap-tile{filter:brightness(1.04);stroke:#ffffffc7}.fv-sector-grid{display:grid;gap:14px}.fv-sector-panel{padding:14px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#0918149e;box-shadow:0 18px 50px #00000038}.fv-sector-heading{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:12px}.fv-sector-heading h3{margin-bottom:0}.fv-sector-heading span{color:#9ab2a0;font-size:.9rem;font-weight:800}.fv-tile-grid{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));grid-auto-rows:minmax(96px,auto);gap:8px}.fv-tile{display:grid;min-width:0;min-height:96px;align-content:space-between;gap:6px;border:1px solid rgba(255,255,255,.16);border-radius:8px;padding:10px;color:#06110d;font:inherit;text-align:left;cursor:pointer}.fv-tile:hover{filter:brightness(1.08)}.fv-tile span,.fv-tile strong,.fv-tile em{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.fv-tile span{font-size:.9rem;font-weight:900}.fv-tile strong{font-size:clamp(1.2rem,2.2vw,1.7rem);font-weight:900;line-height:1}.fv-tile em{font-size:.78rem;font-style:normal;font-weight:800;opacity:.82}.fv-heatmap-strong-buy,.fv-tile-strong-buy{background:#8fb0a2;fill:#8fb0a2}.fv-heatmap-buy,.fv-tile-buy{background:#b8ccb2;fill:#b8ccb2}.fv-heatmap-hold,.fv-tile-hold{background:#d7c29c;fill:#d7c29c}.fv-heatmap-reduce,.fv-tile-reduce{background:#d8ae92;fill:#d8ae92}.fv-heatmap-avoid,.fv-tile-avoid{background:#d4a09a;fill:#d4a09a}.portfolio-score-section{gap:18px}.portfolio-score-hero{display:grid;grid-template-columns:minmax(0,1fr) 180px;align-items:center;gap:24px;min-height:240px;padding:22px;border:1px solid rgba(90,189,132,.32);border-radius:8px;background:linear-gradient(180deg,#0f2b21f0,#081612e6),linear-gradient(135deg,rgba(214,184,107,.2),transparent 50%);box-shadow:0 18px 50px #0000004d}.portfolio-score-hero span{display:block;margin-bottom:10px;color:#9ab2a0;font-size:.78rem;font-weight:900;text-transform:uppercase}.portfolio-score-hero strong{display:block;color:#ecf4ee;font-size:clamp(5rem,10vw,8rem);font-weight:900;line-height:.9}.portfolio-score-hero p{max-width:680px;margin:14px 0 0;color:#5f7084;font-size:1rem;line-height:1.55}.portfolio-score-ring{display:grid;width:170px;height:170px;place-items:center;border-radius:50%;background:radial-gradient(circle at center,#fff 59%,transparent 60%),conic-gradient(var(--app-primary) calc(var(--score) * 1%),#e5eaf0 0)}.portfolio-score-ring span{margin:0;color:var(--app-text);font-size:3.6rem;line-height:1}.score-pillar-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px}.score-pillar-card{display:grid;min-height:190px;align-content:space-between;gap:10px;padding:14px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#0918149e;box-shadow:0 18px 50px #00000038}.score-pillar-heading{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.score-pillar-heading span{color:#9ab2a0;font-size:.78rem;font-weight:900;text-transform:uppercase}.score-pillar-heading strong{color:#6c87a8;font-size:2rem;line-height:1;font-weight:800}.score-pillar-bar{height:8px;overflow:hidden;border-radius:999px;background:#adcab829}.score-pillar-bar span{display:block;height:100%;border-radius:inherit;background:linear-gradient(90deg,#d6b86b,#5abd84)}.score-pillar-card p{margin:0;color:#5f7084;font-size:.9rem;line-height:1.45}.score-pillar-card b{color:#d6b86b;font-size:.86rem}.snapshot-changes-section,.allocation-concentration-section,.watchlist-section,.insight-section{gap:18px}.insight-summary-grid{display:grid;grid-template-columns:minmax(270px,1.25fr) repeat(3,minmax(140px,1fr));gap:12px}.insight-primary-card{display:grid;min-height:146px;align-content:space-between;gap:10px;padding:18px;border:1px solid rgba(90,189,132,.3);border-radius:8px;background:linear-gradient(180deg,#0f2720f0,#081612e6),linear-gradient(135deg,rgba(101,169,215,.18),transparent 46%);box-shadow:0 18px 50px #0000004d}.insight-primary-card>span{color:var(--app-muted);font-size:.78rem;font-weight:900;text-transform:uppercase}.insight-primary-card strong{color:#6c87a8;font-size:clamp(2.2rem,4.2vw,3.8rem);font-weight:900;line-height:.98}.insight-primary-card p{margin:0;color:var(--app-muted);line-height:1.45}.watchlist-summary-grid{display:grid;grid-template-columns:minmax(270px,1.25fr) repeat(4,minmax(140px,1fr));gap:12px}.watchlist-primary-card{display:grid;min-height:146px;align-content:space-between;gap:10px;padding:18px;border:1px solid rgba(101,169,215,.34);border-radius:8px;background:linear-gradient(180deg,#0d1f26f0,#081612e6),linear-gradient(135deg,rgba(214,184,107,.18),transparent 46%);box-shadow:0 18px 50px #0000004d}.watchlist-primary-card>span{color:#a8c9de;font-size:.78rem;font-weight:900;text-transform:uppercase}.watchlist-primary-card strong{color:#ecf4ee;font-size:clamp(2.4rem,4.8vw,4.2rem);font-weight:900;line-height:.95}.watchlist-primary-card p{margin:0;color:#5f7084;line-height:1.45}.watchlist-panel-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.allocation-summary-grid{display:grid;grid-template-columns:minmax(270px,1.25fr) repeat(4,minmax(140px,1fr));gap:12px}.allocation-score-card{display:grid;min-height:146px;align-content:space-between;gap:10px;padding:18px;border:1px solid rgba(214,184,107,.34);border-radius:8px;background:linear-gradient(180deg,#212314f0,#081612e6),linear-gradient(135deg,rgba(90,189,132,.18),transparent 46%);box-shadow:0 18px 50px #0000004d}.allocation-score-card>span{color:#d6c996;font-size:.78rem;font-weight:900;text-transform:uppercase}.allocation-score-card strong{color:#ecf4ee;font-size:clamp(2.4rem,4.8vw,4.2rem);font-weight:900;line-height:.95}.allocation-score-card p{margin:0;color:#d7dcc3;line-height:1.45}.allocation-main-grid{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(280px,.8fr);gap:14px}.allocation-wide-panel{grid-row:span 2}.allocation-exposure-stack{display:flex;height:22px;overflow:hidden;border:1px solid var(--app-border);border-radius:999px;margin-bottom:14px;background:#eef2f6}.allocation-exposure-segment{min-width:2px}.allocation-exposure-0,.allocation-dot-0{background:#5abd84}.allocation-exposure-1,.allocation-dot-1{background:#d6b86b}.allocation-exposure-2,.allocation-dot-2{background:#65a9d7}.allocation-exposure-3,.allocation-dot-3{background:#c98572}.allocation-exposure-4,.allocation-dot-4{background:#9fcb76}.allocation-exposure-5,.allocation-dot-5{background:#b797d6}.allocation-group-list{display:grid;gap:0}.allocation-group-list article{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;min-height:56px;padding:10px 2px;border:0;border-top:1px solid var(--app-border);border-radius:0;background:transparent}.allocation-group-list article:first-child{border-top:0}.allocation-dot{width:10px;height:34px;border-radius:999px}.allocation-group-list strong,.allocation-group-list span{display:block}.allocation-group-list strong{color:var(--app-text)}.allocation-group-list span{margin-top:3px;color:var(--app-muted);font-size:.82rem}.allocation-group-list b{color:#516173;font-size:.92rem;text-align:right}.changes-summary-grid{display:grid;grid-template-columns:minmax(260px,1.35fr) repeat(4,minmax(140px,1fr));gap:12px}.changes-primary-card{display:grid;min-height:146px;align-content:space-between;gap:10px;padding:18px;border:1px solid rgba(90,189,132,.32);border-radius:8px;background:linear-gradient(180deg,#0f2b21eb,#081612e6),linear-gradient(135deg,rgba(214,184,107,.18),transparent 48%);box-shadow:0 18px 50px #0000004d}.changes-primary-card>span{color:#9ab2a0;font-size:.78rem;font-weight:900;text-transform:uppercase}.changes-primary-card strong{color:#ecf4ee;font-size:clamp(2.4rem,4.8vw,4.2rem);font-weight:900;line-height:.95}.changes-primary-card p{margin:0;color:#5f7084;line-height:1.45}.changes-event-grid{display:grid;grid-template-columns:repeat(4,minmax(150px,1fr));gap:12px}.changes-event-grid article{min-height:88px;padding:14px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#0918149e;box-shadow:0 18px 50px #0003}.changes-event-grid span{display:block;margin-bottom:10px;color:var(--app-muted);font-size:.78rem;font-weight:900;text-transform:uppercase}.changes-event-grid strong{color:#43576d;font-size:2rem;line-height:1}.stock-price-change-badge{display:inline-flex;min-width:48px;min-height:18px;align-items:center;justify-content:center;border:1px solid var(--app-border);border-radius:5px;padding:1px 5px;background:var(--app-surface-muted);font-size:.66rem;font-weight:900;line-height:1;text-decoration:none}.stock-price-change-badge-up{border-color:#5f8f7a4d;background:var(--app-success-soft);color:var(--app-success)}.stock-price-change-badge-down{border-color:#c6857d4d;background:var(--app-danger-soft);color:var(--app-danger)}.stock-price-change-badge-flat{border-color:#b292634d;background:var(--app-warning-soft);color:var(--app-warning)}.screener-badge{display:inline-flex;min-width:76px;min-height:24px;align-items:center;justify-content:center;border:1px solid var(--app-border);border-radius:6px;padding:3px 7px;background:var(--app-surface-muted);color:var(--app-muted);font-size:.78rem;font-weight:900;line-height:1.1;text-align:center}.screener-badge-positive{border-color:#5f8f7a4d;background:var(--app-success-soft);color:var(--app-success)}.screener-badge-watchlist{border-color:#7c9fa84d;background:var(--app-info-soft);color:var(--app-info)}.screener-badge-negative{border-color:#c6857d4d;background:var(--app-danger-soft);color:var(--app-danger)}.screener-badge-neutral{color:var(--app-muted)}.screener-error{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.screener-error .auth-error{margin-bottom:0}.stock-route-section{padding-top:28px}.back-link{width:fit-content;border:1px solid var(--app-border);border-radius:8px;padding:9px 12px;background:#fff;color:var(--app-primary);cursor:pointer;font:inherit;font-weight:700;text-decoration:none;box-shadow:var(--app-shadow);transition:background-color .14s ease,border-color .14s ease,color .14s ease}.back-link:hover{border-color:#7a94b873;color:#627f9e;background:var(--app-primary-soft)}.stock-detail-panel{display:grid;gap:16px;padding:18px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:#091814b8;box-shadow:0 18px 50px #00000042;-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px)}.stock-detail-heading,.stock-detail-meta{display:flex;align-items:center;justify-content:space-between;gap:12px}.stock-title-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0}.stock-title-row h2{margin:0;font-size:1.7rem;line-height:1.1}.stock-company-name{color:#6f8195;font-size:1.08rem;font-weight:600;line-height:1.25}.stock-current-price{color:#d6b86b;font-size:1rem;font-weight:800;line-height:1.2}.stock-quote-links{display:flex;flex-basis:100%;flex-wrap:wrap;gap:6px}.stock-quote-links span{display:inline-flex;min-height:26px;align-items:center;gap:5px;border:1px solid rgba(173,202,184,.18);border-radius:999px;padding:4px 9px;background:#030c0a42;color:#dcebe2;font-size:.78rem;font-weight:700}.stock-quote-links strong{color:#9fb8aa;font-size:.68rem;text-transform:uppercase}.stock-quote-links-missing{flex-basis:100%;margin:0;color:var(--app-muted);font-size:.82rem;line-height:1.35}.stock-overview-stats{display:flex;flex-wrap:wrap;align-items:baseline;gap:6px 10px;margin:0;color:#b9d9c6;font-size:.86rem}.stock-overview-stats div{display:flex;align-items:baseline;gap:4px}.stock-overview-stats dt,.stock-overview-stats dd{margin:0}.stock-overview-stats dt{color:#6f8092;font-weight:700}.stock-overview-stats dd{color:#43576d;font-weight:800}.stock-overview-stats dd.cell-negative{color:#ff8f84}.stock-overview-stats dd.cell-positive{color:#8be0ad}.stock-detail-meta{color:#b9d9c6;font-size:.9rem}.fair-value-panel{display:grid;gap:14px;padding:14px;border:1px solid rgba(116,167,216,.34);border-radius:8px;background:linear-gradient(135deg,rgba(116,167,216,.14),transparent 48%),#030c0a61}.fair-value-panel-muted{border-color:#adcab82e;background:#030c0a47;color:var(--app-muted)}.fair-value-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.fair-value-heading h3{margin:0;color:#ecf4ee}.fair-value-title-row{display:flex;flex-wrap:wrap;align-items:center;gap:10px}.fair-value-recommendation{display:inline-flex;min-height:26px;align-items:center;justify-content:center;border:1px solid rgba(173,202,184,.18);border-radius:999px;padding:4px 9px;font-size:.78rem;font-weight:800}.fair-value-recommendation-strong-buy,.fair-value-recommendation-buy{border-color:#8be0ad66;color:#8be0ad}.fair-value-recommendation-hold,.fair-value-recommendation-reduce{border-color:#d6b86b66;color:#d6b86b}.fair-value-recommendation-avoid{border-color:#ff8f845c;color:#ffb0a7}.fair-value-summary{margin:0;color:#5f7084;line-height:1.55}.fair-value-badge{display:inline-flex;min-height:28px;align-items:center;justify-content:center;border:1px solid rgba(173,202,184,.2);border-radius:999px;padding:5px 10px;font-size:.78rem;font-weight:800;white-space:nowrap}.fair-value-badge-high{border-color:#8be0ad70;color:#8be0ad}.fair-value-badge-medium{border-color:#d6b86b70;color:#d6b86b}.fair-value-badge-low{border-color:#ff8f8461;color:#ffb0a7}.fair-value-warnings{display:flex;flex-wrap:wrap;gap:8px}.fair-value-warning{display:inline-flex;min-height:26px;align-items:center;border:1px solid rgba(178,146,99,.3);border-radius:999px;padding:4px 9px;background:var(--app-warning-soft);color:var(--app-warning);font-size:.76rem;font-weight:800}.fair-value-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.fair-value-grid article,.fair-value-details div{display:grid;gap:4px;padding:10px 12px;border:1px solid rgba(173,202,184,.14);border-radius:8px;background:#030c0a47}.fair-value-grid span,.fair-value-details dt{color:#9fb8aa;font-size:.72rem;text-transform:uppercase}.fair-value-grid strong,.fair-value-details dd{margin:0;color:#ecf4ee;font-size:1rem;font-weight:700}.fair-value-details{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px;margin:0;color:var(--app-muted)}.fair-value-checks{display:flex;flex-wrap:wrap;gap:8px}.fair-value-check{display:inline-flex;min-height:28px;align-items:center;border:1px solid rgba(173,202,184,.16);border-radius:6px;padding:5px 8px;background:#fff;color:var(--app-muted);font-size:.82rem;font-weight:700;border-color:var(--app-border)}.fair-value-check-pass{border-color:#5f8f7a47;color:#8be0ad;background:var(--app-success-soft)}.fair-value-check-fail{border-color:#c6857d47;color:#ffb0a7;background:var(--app-danger-soft)}.fair-value-check-neutral{border-color:#b292633d;color:#8d7650;background:var(--app-warning-soft)}.fair-value-check-unknown{color:#9fb8aa;background:var(--app-surface-muted)}.stock-metrics-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.stock-metric-sections{display:grid;gap:12px}.stock-metric-section{border:1px solid var(--app-border);border-radius:8px;background:#fbfcfd}.stock-metric-section summary{display:flex;min-height:46px;cursor:pointer;list-style:none;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;color:var(--app-text);font-weight:700}.stock-metric-section summary::-webkit-details-marker{display:none}.stock-metric-section summary:before{width:18px;color:#7a94b8;content:">";font-size:.9rem;transition:transform .16s ease}.stock-metric-section[open] summary:before{transform:rotate(90deg)}.stock-metric-section summary span{flex:1}.stock-metric-section summary strong{display:inline-flex;min-width:32px;min-height:24px;align-items:center;justify-content:center;border:1px solid rgba(139,224,173,.24);border-radius:999px;background:#eef3f8;color:#566d89;font-size:.78rem;border-color:#7a94b83d}.stock-metric-section .stock-metrics-grid,.stock-metric-section .notice{margin:0;padding:0 12px 12px}.stock-metric{display:grid;gap:4px;padding:10px 12px;border:1px solid var(--app-border);border-radius:8px;background:var(--app-surface-muted)}.stock-metric span{color:#6f8092;font-size:.72rem;text-transform:uppercase}.stock-metric strong{color:#43576d;font-size:1rem;font-weight:600}.stock-metric-negative strong{color:#b07a72}.stock-metric-positive strong{color:#6c8f80}.stock-history-chart svg,.stock-price-history-chart svg{height:300px}.fundamental-chart-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.fundamental-bar-chart svg{height:220px}.fundamental-bar{fill:#7c9fa8d1}.fundamental-x-label{font-size:11px}.portfolio-delta-chart svg{height:300px}.portfolio-delta-zero-line{stroke:#bec8d5cc;stroke-width:1.5}.portfolio-delta-bar-positive{fill:#8fb0a2d1}.portfolio-delta-bar-negative{fill:#d4a09ad1}.stock-history-shares-line,.stock-history-value-line{fill:none;stroke-width:2.5}.stock-history-shares-line{stroke:#8fb0a2}.stock-history-value-line{stroke:#b9a686}.stock-history-value-line-stocks{stroke:#8fb0a2}.stock-history-value-line-etfs{stroke:#8aa7b3}.stock-price-history-line-adjusted{fill:none;stroke-width:2.5;stroke:#8aa7b3}.stock-price-history-point{fill:#8aa7b3;stroke:#fff;stroke-width:2}.stock-price-transaction-marker circle{stroke:#fff;stroke-width:2}.stock-price-transaction-marker text{fill:#314356;font-size:9px;font-weight:900;pointer-events:none}.stock-price-transaction-marker-buy circle{fill:#a8c5bc}.stock-price-transaction-marker-sell circle{fill:#d6a49d}.stock-history-shares-point{fill:#a8c5bc;stroke:#fff;stroke-width:2}.stock-history-stock-bar{fill:#a8c5bce0}.stock-history-etf-bar{fill:#8aa7b3e0}.stock-history-value-point{fill:#b9a686;stroke:#fff;stroke-width:2}.stock-history-value-point-stocks{fill:#a8c5bc}.stock-history-value-point-etfs{fill:#8aa7b3}.stock-history-value-axis{fill:#a08762}.stock-history-value-axis-stocks{fill:#7d9e91}.stock-history-value-axis-etfs{fill:#6f8d99}.stock-history-legend{display:flex;flex-wrap:wrap;gap:12px;margin-top:10px;color:var(--app-muted);font-size:.82rem;font-weight:800}.stock-history-legend span{display:inline-flex;align-items:center;gap:6px}.stock-history-legend span:before{width:18px;height:3px;border-radius:999px;content:"";opacity:.95}.stock-history-legend-shares:before{background:#8be0ad}.stock-history-legend-stocks:before{background:#8be0ad}.stock-history-legend-etfs:before{background:#74a7d8}.stock-history-legend-value:before{background:#b9a686}.stock-history-legend-value-stocks:before{background:#8be0ad}.stock-history-legend-value-etfs:before{background:#74a7d8}.stock-price-history-legend-adjusted:before{background:#74a7d8}.stock-price-history-legend-buy:before{height:10px;background:#a8c5bc}.stock-price-history-legend-sell:before{height:10px;background:#d6a49d}.auth-shell{display:grid;min-height:100vh;place-items:center;padding:24px;background:var(--app-bg)}.auth-panel{width:min(100%,520px);padding:28px;border:1px solid rgba(173,202,184,.2);border-radius:8px;background:var(--app-surface);box-shadow:var(--app-shadow);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-color:var(--app-border)}.auth-panel h1{margin-bottom:18px;font-size:clamp(2.4rem,8vw,4rem);color:var(--app-text)}.auth-panel p{color:#5f7084;line-height:1.55}.auth-form{display:grid;gap:14px;margin-top:18px}.auth-form label{display:grid;gap:8px;color:#5f7084;font-size:.92rem;font-weight:700}.auth-form input{width:100%;min-height:44px;border:1px solid rgba(173,202,184,.26);border-radius:8px;padding:8px 10px;background:#030c0a9e;color:#ecf4ee;font:inherit}.auth-provider-actions{display:grid;gap:10px;margin-top:20px}.auth-provider-actions .primary-button,.auth-provider-actions .ghost-button{width:100%}.primary-button,.ghost-button{display:inline-flex;min-height:42px;align-items:center;justify-content:center;border-radius:8px;padding:9px 14px;font:inherit;font-weight:800;cursor:pointer}.primary-button{border:1px solid #5abd84;background:var(--app-primary);color:#fff;border-color:var(--app-primary)}.ghost-button{border:1px solid rgba(173,202,184,.28);background:transparent;color:#c9e6d6}.primary-button:disabled{cursor:not-allowed;opacity:.6}.icon-button{display:inline-flex;width:30px;height:30px;align-items:center;justify-content:center;border:1px solid rgba(173,202,184,.24);border-radius:8px;background:#030c0a57;color:#c9e6d6;font:inherit;font-weight:900;line-height:1;cursor:pointer}.icon-button:hover{border-color:#d6b86b85;color:#d6b86b}.crawler-button{gap:8px;min-width:154px}.button-spinner{width:15px;height:15px;border:2px solid rgba(6,17,13,.26);border-top-color:#06110d;border-radius:50%;animation:spin .8s linear infinite}.admin-loading{margin-top:-6px;color:var(--app-muted);font-size:.9rem}@keyframes spin{to{transform:rotate(360deg)}}.auth-error{color:#ff9a8d}.mfa-qr{width:min(240px,100%);height:auto;border:1px solid rgba(173,202,184,.24);border-radius:8px;background:#fff}table{width:100%;min-width:720px;border-collapse:collapse;background:transparent}th,td{padding:12px 14px;border-bottom:1px solid var(--app-border);text-align:left;vertical-align:top}th{color:var(--app-muted);font-size:.72rem;text-transform:uppercase;background:#f8fafc;font-weight:700}.sort-button{display:inline-flex;width:100%;min-height:30px;align-items:center;justify-content:space-between;gap:8px;border:0;padding:0;background:transparent;color:inherit;font:inherit;font-weight:800;text-align:left;text-transform:inherit;cursor:pointer}.sort-indicator{flex:0 0 auto;color:#8be0ad;font-size:.72rem}.table-pagination{display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;gap:10px;margin-top:14px;color:var(--app-muted);font-size:.9rem;font-weight:800}.table-pagination span{min-width:102px;text-align:center}td{color:var(--app-text)}.cell-negative{color:#ff8f84}.cell-positive{color:#8be0ad}tbody tr:nth-child(2n){background:var(--app-surface-muted)}.summary-row{background:var(--app-primary-soft)}.summary-row td{border-bottom-color:#bfdbfe;color:#627f9e;font-weight:900}.row-tone-positive{background:color-mix(in oklch,var(--app-success) 8%,white)}.row-tone-negative{background:color-mix(in oklch,var(--app-danger) 8%,white)}@media(max-width:720px){.app-shell{grid-template-columns:1fr;gap:16px;padding:16px}.app-sidebar{position:static;min-height:auto;padding:18px}.sidebar-brand h1{font-size:clamp(1.45rem,6vw,1.9rem)}.tabs{grid-template-columns:repeat(auto-fit,minmax(150px,1fr))}.sidebar-group-links{padding-left:10px}.currency-switcher{width:100%}.currency-rate{flex:1 1 auto;min-width:0;justify-content:center;font-size:.72rem}.currency-switcher button{flex:1 1 0}.status{white-space:normal}.overview-summary,.overview-mini-metrics{grid-template-columns:1fr}.overview-hero-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cockpit-grid,.allocation-main-grid,.allocation-summary-grid,.changes-event-grid,.changes-summary-grid,.dashboard-panel-grid,.fv-heatmap-summary,.insight-summary-grid,.score-pillar-grid,.watchlist-panel-grid,.watchlist-summary-grid,.portfolio-score-hero{grid-template-columns:1fr}.portfolio-score-ring{width:136px;height:136px}.portfolio-score-ring span{font-size:3rem}.cockpit-score-card{min-height:120px}.dashboard-heading-meta{justify-content:flex-start}.loading-overlay{grid-template-columns:1fr;justify-items:center;text-align:center}.loading-orbit{width:58px;height:58px}.loading-orbit span:nth-child(1){left:24px}.dashboard-list li,.recommendation-row{grid-template-columns:1fr}.dashboard-list b,.recommendation-row b{text-align:left}.fv-heatmap-legend{justify-content:flex-start}.fv-tile-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fv-tile{grid-column:span 1!important}.heatmap-chart{padding:8px}.heatmap-chart svg{height:460px;min-height:460px}.admin-actions{align-items:stretch;flex-direction:column}.portfolio-form{grid-template-columns:1fr}.stock-detail-heading{align-items:flex-start;flex-direction:column}.fundamental-chart-grid{grid-template-columns:1fr}}@media(min-width:721px)and (max-width:1060px){.app-shell{grid-template-columns:minmax(260px,300px) minmax(0,1fr);gap:18px;padding:18px}.app-sidebar{top:18px;min-height:calc(100vh - 36px);padding:18px}.overview-hero-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.cockpit-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cockpit-score-card{grid-column:1 / -1}.changes-summary-grid,.allocation-summary-grid,.watchlist-summary-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.insight-summary-grid{grid-template-columns:minmax(0,1fr)}.insight-primary-card{grid-column:1 / -1}.watchlist-panel-grid{grid-template-columns:minmax(0,1fr)}.watchlist-primary-card{grid-column:1 / -1}.allocation-main-grid{grid-template-columns:minmax(0,1fr)}.allocation-score-card{grid-column:1 / -1}.allocation-wide-panel{grid-row:auto}.changes-event-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.changes-primary-card{grid-column:1 / -1}.fv-heatmap-summary,.score-pillar-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.fv-tile-grid{grid-template-columns:repeat(6,minmax(0,1fr))}.fundamental-chart-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}.app-main{display:flex;min-width:0;flex-direction:column}.app-topbar{position:sticky;z-index:10;top:0;display:flex;width:100%;min-height:64px;align-items:center;gap:16px;padding:12px 28px;border-bottom:1px solid var(--app-border);background:#fffffff0;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.global-search{position:relative;display:flex;flex:1 1 360px;min-width:0;align-items:center}.global-search span{position:absolute;left:12px;color:var(--app-muted-2);font-size:1.1rem;line-height:1;pointer-events:none}.global-search input{width:100%;min-height:38px;border:1px solid var(--app-border);border-radius:8px;padding:8px 12px 8px 36px;background:var(--app-surface-muted);color:var(--app-text);font:inherit;font-size:.92rem;outline:none}.global-search input:focus{border-color:#2563eb6b;background:#fff;box-shadow:0 0 0 3px #2563eb1f}.topbar-actions{display:flex;flex:0 0 auto;margin-left:auto;min-width:0;align-items:center;justify-content:flex-end;gap:10px}.brand-mark{display:grid;width:32px;height:32px;place-items:center;border-radius:10px;background:var(--app-teal);color:var(--app-sidebar-accent-fg);font-family:var(--app-font-display);font-size:.92rem;font-weight:700;font-variant-numeric:tabular-nums}.sidebar-brand-copy{display:grid;gap:1px}.sidebar-subtitle{margin:0;color:var(--app-sidebar-fg-60);font-size:.78rem;font-weight:500}.sidebar-nav-groups{display:flex;flex:1 1 auto;min-height:0;flex-direction:column;gap:18px;overflow:visible;padding:4px 0 0}.sidebar-group-label{margin:0;padding:0 10px;color:var(--app-sidebar-fg-45);font-size:.69rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.sidebar-nav-link{position:relative;display:flex;min-height:36px;align-items:center;gap:12px;padding:8px 12px;border-radius:10px;background:transparent;color:var(--app-sidebar-fg-70);font-size:.92rem;font-weight:500;letter-spacing:0;text-transform:none;text-decoration:none;transition:background-color .14s ease,color .14s ease}.sidebar-nav-link:hover{background:color-mix(in oklch,var(--app-sidebar-accent) 60%,transparent);color:var(--app-sidebar-accent-fg)}.sidebar-nav-link[aria-current=page]{background:var(--app-sidebar-accent);color:var(--app-sidebar-accent-fg);font-weight:600}.sidebar-nav-link[aria-current=page]:before{position:absolute;top:6px;bottom:6px;left:-8px;width:3px;border-radius:999px;background:var(--app-teal);content:""}.nav-icon{display:flex;flex:0 0 16px;align-items:center;justify-content:center;width:16px;height:16px;color:currentColor;opacity:.85}.nav-icon svg{width:16px;height:16px}.sidebar-nav-link[aria-current=page] .nav-icon{opacity:1}h2,.dashboard-heading h2{color:var(--app-text);font-size:clamp(1.65rem,2.4vw,2.35rem);font-weight:700;line-height:1.12}.overview-section,.portfolio-dashboard-section,.portfolio-score-section,.snapshot-changes-section,.allocation-concentration-section,.watchlist-section,.insight-section,.fair-value-heatmap-section,.stock-route-section{gap:20px}.dashboard-muted,.notice,.text-grid p,.overview-copy p,.cockpit-score-card p,.watchlist-primary-card p,.allocation-score-card p,.changes-primary-card p,.portfolio-score-hero p,.score-pillar-card p{color:var(--app-muted)}.status,.dashboard-heading-meta span,.section-badge,.fair-value-badge,.fair-value-recommendation,.stock-quote-links span,.admin-muted{border:1px solid var(--app-border);border-radius:7px;background:var(--app-surface-muted);color:var(--app-muted);box-shadow:none}.currency-switcher,.user-menu{min-height:38px;border:1px solid var(--app-border);border-radius:8px;background:var(--app-surface);box-shadow:none;-webkit-backdrop-filter:none;backdrop-filter:none}.currency-switcher{min-height:32px;border:0;background:var(--app-surface-muted)}.sign-out-button,.ghost-button,.primary-button{min-height:34px;border-radius:7px;padding:7px 11px;font-size:.84rem;font-weight:700}.sign-out-button,.ghost-button{border-color:var(--app-border);background:#fff;color:var(--app-muted)}.sign-out-button:hover,.ghost-button:hover{background:var(--app-surface-muted);color:var(--app-text)}.metric-card,.overview-primary-metric,.overview-copy,.overview-mini-metrics,.chart-panel,.table-wrap,.admin-actions,.snapshot-admin-panel,.admin-run-result,.crawler-progress,.dashboard-panel,.stock-detail-panel,.fair-value-panel,.fv-heatmap-summary article,.allocation-group-list article,.fair-value-grid article,.crawler-result-list article,.cockpit-score-card,.dashboard-metric-tile,.insight-primary-card,.watchlist-primary-card,.allocation-score-card,.changes-primary-card,.changes-event-grid article,.score-pillar-card,.portfolio-score-hero{border:1px solid var(--app-border);border-radius:12px;background:var(--app-surface);box-shadow:var(--app-shadow);-webkit-backdrop-filter:none;backdrop-filter:none}.metric-card{min-height:94px;padding:14px 16px}.overview-primary-metric{min-height:118px;padding:18px}.crawler-result-list article>div:first-child,.allocation-group-list article,.fair-value-grid article{color:var(--app-text)}.stock-detail-meta span{color:#5f7084;font-weight:600}.fair-value-title-row h3{color:var(--app-text)}.fair-value-title-row .fair-value-recommendation{border-color:#7a94b83d;background:#eef3f8;color:#566d89}.fair-value-details div{border:1px solid var(--app-border);background:#fbfcfd}.fair-value-grid article{border:1px solid var(--app-border);background:var(--app-surface-muted)}.fair-value-grid span{color:#6f8092;font-weight:700}.fair-value-grid strong{color:#43576d;font-weight:800}.fair-value-details dt{color:#6f8092;font-weight:700}.fair-value-details dd{color:#43576d;font-weight:800}.allocation-wide-panel h3{color:var(--app-text)}.fv-heatmap-chart .heatmap-sector-frame{fill:#eef3f7;stroke:#d9e2eb}.fv-heatmap-chart .heatmap-sector-label{fill:#5f7084}.metric-card span,.overview-primary-metric span,.overview-mini-metrics span,.cockpit-score-card>span,.dashboard-metric-tile span,.watchlist-primary-card>span,.allocation-score-card>span,.changes-primary-card>span,.portfolio-score-hero span,.score-pillar-heading span{color:var(--app-muted);font-size:.72rem;font-weight:700;letter-spacing:0;text-transform:uppercase}.metric-card strong,.overview-primary-metric strong,.overview-mini-metrics strong,.cockpit-score-card strong,.dashboard-metric-tile strong,.watchlist-primary-card strong,.allocation-score-card strong,.changes-primary-card strong,.portfolio-score-hero strong{color:var(--app-text)}.chart-heading span,.stock-current-price,.inline-link,.sort-indicator{color:var(--app-primary)}.chart-axis-label,.chart-axis-title{fill:var(--app-muted)}.heatmap-heading h3{color:#f8fafc}.heatmap-heading span{color:#cbd5e1}.table-wrap h3{margin:0;padding:18px 18px 0}tbody tr:hover{background:#f1f5f9}.cell-positive,.stock-metric-positive strong,.fair-value-recommendation-strong-buy,.fair-value-recommendation-buy,.fair-value-badge-high,.fair-value-check-pass{color:var(--app-success)}.cell-negative,.stock-metric-negative strong,.fair-value-recommendation-avoid,.fair-value-check-fail{color:var(--app-danger)}.asset-filter-controls input,.admin-checkbox input{accent-color:var(--app-primary)}.score-bar,.score-pillar-bar,.allocation-stack,.allocation-exposure-stack,.pie-list-bar{background:#e5eaf0}.score-bar span,.score-pillar-bar span{background:linear-gradient(90deg,var(--app-primary),var(--app-info))}.admin-inline-input,.snapshot-picker select,.portfolio-form input,.auth-form input{border-color:var(--app-border);background:#fff;color:var(--app-text)}.auth-panel p,.auth-form label{color:var(--app-muted)}.recommendation-row span,.recommendation-row b{color:var(--app-text)}.fv-heatmap-summary article,.fv-sector-panel{border-color:var(--app-border);background:var(--app-surface);box-shadow:var(--app-shadow)}.fv-heatmap-summary span,.fv-sector-heading span{color:var(--app-muted)}.stock-history-legend-shares:before,.stock-history-legend-stocks:before{background:#a8c5bc}.stock-history-legend-etfs:before,.stock-price-history-legend-adjusted:before,.stock-history-legend-value-etfs:before{background:#8aa7b3}@media(max-width:920px){.app-shell{grid-template-columns:1fr}.app-sidebar{position:static;min-height:auto;max-height:none;width:auto;margin:0;border-right:0;border-bottom:1px solid rgba(255,255,255,.06)}.tabs{padding:10px}.sidebar-nav-groups{overflow:visible}.app-topbar{position:static;flex-wrap:wrap;padding:12px 16px}.global-search{flex-basis:100%;max-width:none;order:2}.topbar-actions{width:100%;flex-wrap:wrap;justify-content:flex-start}.app-content{padding:18px 16px}.overview-hero-grid,.overview-summary{grid-template-columns:1fr}}@media(min-width:921px)and (max-width:1180px){.app-shell{grid-template-columns:240px minmax(0,1fr)}.overview-hero-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
