:root{color-scheme:light;font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,SF Pro Text,PingFang SC,Microsoft YaHei,sans-serif;font-synthesis:none;--color-page: #f5f7fa;--color-surface: #ffffff;--color-surface-subtle: #f8fafc;--color-primary: #1769e0;--color-primary-soft: #eaf2ff;--color-gain: #e5484d;--color-gain-soft: #fdecec;--color-loss: #2e9d62;--color-loss-soft: #eaf7f0;--color-text: #172033;--color-text-secondary: #667085;--color-text-tertiary: #98a2b3;--color-line: #e5eaf1;--color-line-soft: #eef1f5;--color-warning: #d97706;--color-warning-soft: #fff7ed;--color-danger: #c53b3f;--radius-module: 16px;--radius-container: 12px;--radius-control: 10px;--radius-status: 8px;--shadow-overlay: 0 8px 24px rgba(16, 24, 40, .08);--shadow-card: 0 10px 30px rgba(34, 66, 119, .055);--content-width: 1625px;--page-gutter: 40px}@media(max-width:1199px){:root{--page-gutter: 24px}}@media(max-width:767px){:root{--page-gutter: 16px}}:root{--bg: var(--color-page);--surface: var(--color-surface);--surface-subtle: var(--color-surface-subtle);--ink: var(--color-text);--muted: var(--color-text-secondary);--faint: var(--color-text-tertiary);--line: var(--color-line);--line-strong: #d9e4f5;--blue: var(--color-primary);--blue-soft: var(--color-primary-soft);--gain: var(--color-gain);--gain-soft: var(--color-gain-soft);--loss: var(--color-loss);--loss-soft: var(--color-loss-soft);--warning: var(--color-warning);--warning-soft: var(--color-warning-soft);--danger: var(--color-danger);--shadow: none;--radius: var(--radius-module);--content: var(--content-width)}*{box-sizing:border-box}html{background:var(--bg)}body{margin:0;min-width:320px;min-height:100vh;background:linear-gradient(180deg,#f3f7fc,#f6f8fc,#f7fafd);color:var(--ink);-webkit-font-smoothing:antialiased}button,input{font:inherit}button{color:inherit}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid rgba(23,105,224,.2);outline-offset:2px}.app-shell{min-height:100vh;overflow-x:clip}.app-header{max-width:var(--content);margin:0 auto;padding:0 45px 0 var(--page-gutter)}.brand-row{height:78px;display:flex;align-items:center;justify-content:space-between;gap:24px}.brand{min-width:0;display:flex;align-items:center;gap:12px;transform:translateY(8px)}.brand-mark{width:42px;height:42px;flex:none;display:block;object-fit:contain}.brand-copy{min-width:0;display:grid;gap:10px}.brand-title{position:relative;width:fit-content;display:block}.brand h1{margin:0;color:#14203a;font-size:24px;line-height:1;letter-spacing:.035em;font-weight:720;white-space:nowrap}.brand-copy small{color:#77839a;font-size:11px;line-height:1;font-variant-numeric:tabular-nums;white-space:nowrap}.brand-copy small svg{margin-left:2px;vertical-align:-2px}.title-refresh-button{position:absolute;top:-2px;right:-21px;width:16px;height:16px;border:1px solid #dbe5f2;border-radius:50%;padding:0;display:inline-grid;place-items:center;background:#ffffffdb;box-shadow:0 2px 6px #1f375812;color:#7183a0;cursor:pointer;transition:color .18s ease,border-color .18s ease,background .18s ease,box-shadow .18s ease,transform .18s ease}.title-refresh-button:before{position:absolute;top:-14px;right:-14px;bottom:-14px;left:-14px;border-radius:50%;content:""}.title-refresh-button:hover:not(:disabled){border-color:#b9cff0;background:#f7faff;box-shadow:0 4px 11px #1769e01f;color:var(--blue);transform:translateY(-1px)}.title-refresh-button:disabled{cursor:progress}.title-refresh-button.is-refreshing{border-color:#bfd3f2;background:var(--blue-soft);color:var(--blue)}.title-refresh-button.success{border-color:#b7decf;background:#f1faf6;color:#18845f}.title-refresh-button.error{border-color:#efc7cc;background:#fff5f6;color:#c54d59}.portfolio-nav-row{min-width:0;margin-top:16px;display:flex;align-items:stretch;gap:16px}.portfolio-tabs{min-width:0;flex:1;padding:0;display:flex;gap:16px;overflow-x:auto;background:transparent;scrollbar-width:none}.portfolio-tabs::-webkit-scrollbar{display:none}.portfolio-tabs button{position:relative;min-width:250px;height:79px;flex:1 1 0;overflow:hidden;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:1px solid #dfe5ee;border-radius:13px;background:#ffffffbd;padding:15px 22px;display:grid;align-content:center;gap:11px;color:#4f5d75;text-align:left;cursor:pointer}.portfolio-tabs button.active{border-color:#3c7ff0;background:var(--surface);box-shadow:0 8px 22px #1769e01a;color:var(--blue)}.portfolio-tab-name{min-width:0;max-width:220px;overflow:hidden;display:flex;align-items:center;font-size:15px;line-height:1.35;font-weight:680;white-space:nowrap}.portfolio-tab-name>span{min-width:0;padding-right:18px;overflow:hidden;display:block;text-overflow:ellipsis;white-space:nowrap}.portfolio-tab-name i{position:absolute;top:13px;right:14px;width:9px;height:9px;border:2px solid rgba(255,255,255,.9);border-radius:50%;background:var(--faint);box-shadow:0 0 0 1px #101b3514;opacity:0;transition:opacity .16s ease}.portfolio-tab-name i.gain{background:var(--gain)}.portfolio-tab-name i.loss{background:var(--loss)}.portfolio-tabs button.active .portfolio-tab-name i{opacity:1}.portfolio-tab-preview{min-height:15px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:15px;line-height:1.25;font-weight:560;font-variant-numeric:tabular-nums;white-space:nowrap}.portfolio-tab-preview.gain{color:var(--gain)}.portfolio-tab-preview.loss{color:var(--loss)}.portfolio-tab-preview.flat{color:var(--muted)}.portfolio-tab-preview.loading{justify-content:flex-start;color:var(--faint);animation:skeleton-pulse 1.5s ease-in-out infinite}.portfolio-tabs-loading{min-width:380px;height:79px;padding:8px;display:flex;align-items:center;gap:16px}.portfolio-tabs-loading i{width:140px;height:34px;display:block;border-radius:var(--radius-status);background:var(--line);animation:skeleton-pulse 1.5s ease-in-out infinite}.manage-portfolios-button{width:269px;min-width:269px;height:79px;flex:none;padding:0 14px;display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid #dfe5ee;border-radius:13px;background:#ffffff6b;color:#526079;font-size:14px;font-weight:650;cursor:pointer}.manage-portfolios-button:hover:not(:disabled){border-color:#d9e4f5;color:var(--blue)}.manage-portfolios-button:disabled{opacity:.55;cursor:wait}main{max-width:var(--content);margin:0 auto;padding:18px 45px 24px var(--page-gutter)}.summary-band{height:214px;display:grid;grid-template-columns:minmax(0,720px) minmax(0,1fr);overflow:hidden;border:1px solid #e4e9f1;border-radius:16px;background:#fffffff0;box-shadow:var(--shadow-card)}.summary-primary{min-width:0;padding:28px 30px 26px;display:flex;flex-direction:column}.summary-hero-row{min-width:0;flex:1;display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.summary-hero-copy{min-width:260px;display:flex;flex-direction:column;align-items:flex-start}.summary-label{display:inline-flex;align-items:center;gap:6px;color:#35425b;font-size:14px;line-height:1;font-weight:680}.hero-amount{margin-top:17px;display:flex;align-items:baseline;gap:.05em;font-size:46px;line-height:.92;font-weight:720;letter-spacing:-.035em;font-variant-numeric:tabular-nums;white-space:nowrap}.amount-sign{margin-right:.02em}.currency-symbol{font-size:.6em}.hero-rate{margin-top:14px;font-size:20px;line-height:1;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}.summary-sparkline{position:relative;width:310px;height:76px;margin:18px 13px 0 0;flex:none;color:var(--blue)}.summary-sparkline>span{position:absolute;top:1px;right:2px;color:#8794aa;font-size:9px;font-weight:600}.summary-sparkline svg{width:100%;height:100%;display:block;overflow:visible}.sparkline-axis{stroke:#dfe6f0;stroke-width:1;stroke-dasharray:2 3;vector-effect:non-scaling-stroke}.summary-sparkline-line{fill:none;stroke:currentColor;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.summary-sparkline-dot{fill:currentColor;stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.summary-sparkline.is-empty{opacity:.5}.summary-sparkline>.quiet-loading{position:absolute;top:18px;right:0;bottom:0;left:0}.summary-coverage{margin:9px 13px 0 0;padding-top:16px;display:flex;align-items:center;gap:0;border-top:1px solid #e6ebf2;color:#71809a;font-size:12px;line-height:1;white-space:nowrap}.summary-coverage span{display:inline-flex;align-items:center}.summary-coverage b{margin:0 5px 0 7px;color:#35425b;font-size:16px;line-height:1;font-weight:650}.summary-coverage .count-confirmed{color:var(--loss)}.summary-coverage .count-estimated{color:var(--blue)}.summary-coverage span+span:before{width:1px;height:15px;margin:0 26px;background:var(--line);content:""}.summary-warning{margin-top:12px;color:var(--warning);font-size:12px}.summary-secondary{min-width:0;margin:29px 0 28px;display:grid;grid-template-columns:257px 274px minmax(0,1fr)}.summary-metric-column{min-width:0;padding:9px 32px 5px;display:grid;grid-template-rows:1fr 1fr;border-left:1px solid #e6ebf2}.summary-metric-main,.summary-metric-sub{min-width:0;display:grid;align-content:start;gap:15px}.summary-metric-sub{align-content:end;gap:12px}.summary-metric-column span{display:inline-flex;align-items:center;gap:6px;color:#71809a;font-size:12px;line-height:1}.summary-metric-column strong{overflow:hidden;color:#18233d;font-size:22px;line-height:1;font-weight:680;letter-spacing:-.015em;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.summary-metric-sub strong{font-size:15px;font-weight:600}.summary-metric-column strong.gain{color:var(--gain)}.summary-metric-column strong.loss{color:var(--loss)}.secondary-currency{margin-right:4px;font-size:.68em}.summary-optional-toggle{display:none}.market-strip{height:77px;margin-top:16px;display:flex;align-items:stretch;overflow:hidden;border:1px solid #e6ebf2;border-radius:15px;background:#fffffff0;box-shadow:var(--shadow-card)}.market-item{position:relative;min-width:0;flex:1 1 0;padding:0 22px;display:grid;grid-template-columns:minmax(88px,.8fr) minmax(96px,1.2fr);align-items:center;gap:12px;color:var(--gain)}.market-item+.market-item:before{position:absolute;left:0;top:17px;bottom:17px;width:1px;background:var(--line);content:""}.market-copy{min-width:0;display:grid;gap:7px}.market-name{overflow:hidden;color:#71809a;font-size:12px;font-weight:520;text-overflow:ellipsis;white-space:nowrap}.market-quote{display:flex;flex-direction:column;align-items:flex-start;gap:7px}.market-item strong{color:#18233d;font-size:15px;line-height:1;font-weight:650;font-variant-numeric:tabular-nums;white-space:nowrap}.market-change{font-size:13px;line-height:1;font-weight:590;font-variant-numeric:tabular-nums;white-space:nowrap}.market-sparkline{width:100%;height:42px;display:block;color:currentColor;overflow:visible}.market-sparkline-line{fill:none;stroke:currentColor;stroke-width:1.65;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.market-sparkline-break{stroke:currentColor;stroke-width:1.2;stroke-dasharray:2 2;vector-effect:non-scaling-stroke}.market-sparkline.is-empty{opacity:.35}.market-item.loss{color:var(--loss)}.market-item.flat{color:var(--muted)}.market-item.flat>.market-sparkline{opacity:.35;filter:grayscale(1)}.market-more{width:70px;flex:none;display:flex;align-items:center;justify-content:center;gap:1px;color:#71809a;font-size:12px;white-space:nowrap}.market-empty{min-width:100%;display:grid;place-items:center;color:var(--muted);font-size:12px}.data-status-strip{height:50px;margin-top:12px;padding:0 20px;display:flex;align-items:center;justify-content:space-between;gap:18px;overflow:hidden;border:1px solid #d5e4fb;border-radius:14px;background:#f5f8fe;color:#71809a}.data-status-primary,.data-status-meta{min-width:0;display:flex;align-items:center}.data-status-primary{gap:9px;color:#71809a;font-size:12px;white-space:nowrap}.data-status-primary>svg{color:var(--blue)}.data-status-primary>svg:first-child{margin-right:7px}.data-status-primary strong{color:#33415c;font-size:13px;font-weight:680}.data-status-primary i,.data-status-meta i{width:1px;height:17px;margin:0 10px;background:#c9d6e9}.data-status-meta{flex:none;gap:8px;color:#71809a;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.data-status-strip.tone-warning{border-color:#e8d9b7;background:#fffaf0;color:var(--warning)}.data-status-strip.tone-warning .data-status-primary>svg,.data-status-strip.tone-warning .data-status-primary strong{color:var(--warning)}.dashboard-lower{min-width:0;margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) 272px;align-items:start;gap:16px}.fund-section{min-width:0;margin:0;overflow:hidden;border:1px solid #e6ebf2;border-radius:15px;background:var(--surface);box-shadow:var(--shadow-card)}.fund-section-header{height:52px;padding:0 16px 0 22px;display:flex;align-items:center;justify-content:space-between;gap:18px;border-bottom:1px solid var(--line)}.fund-section-header h2{margin:0;flex:none;color:#18233d;font-size:17px;line-height:1;font-weight:720;letter-spacing:-.02em}.sort-control{display:flex;align-items:center;gap:8px;color:#71809a;font-size:12px}.sort-select{width:96px;height:36px;flex:none;padding:0 26px 0 12px;border:1px solid var(--line);border-radius:9px;background:var(--surface);color:#35425b;font-size:12px;font-weight:600;cursor:pointer}.data-health-card{width:272px;min-height:318px;overflow:hidden;border:1px solid #e6ebf2;border-radius:15px;background:var(--surface);box-shadow:var(--shadow-card);color:#35425b}.data-health-card h2{margin:0;padding:22px 23px 0;font-size:16px;line-height:1;font-weight:720}.data-health-summary{margin:18px 23px 0;display:flex;align-items:center;gap:10px}.data-health-summary strong{color:var(--loss);font-size:15px;line-height:1}.health-dot{width:10px;height:10px;flex:none;border-radius:50%;background:var(--loss);box-shadow:0 0 0 4px var(--loss-soft)}.data-health-card.tone-warning .health-dot{background:var(--warning);box-shadow:0 0 0 4px var(--warning-soft)}.data-health-card.tone-critical .health-dot{background:var(--danger);box-shadow:0 0 0 4px var(--gain-soft)}.data-health-card.tone-warning .data-health-summary strong{color:var(--warning)}.data-health-card.tone-critical .data-health-summary strong{color:var(--danger)}.data-health-card dl{margin:25px 23px 0;display:grid;gap:18px}.data-health-card dl div{display:flex;align-items:center;justify-content:space-between;gap:16px}.data-health-card dt,.data-health-card dd{margin:0;color:#71809a;font-size:12px;line-height:1}.data-health-card dd{color:#35425b;font-weight:600}.health-issue{margin:14px 23px 0;overflow:hidden;color:var(--warning);font-size:10px;line-height:1.4;text-overflow:ellipsis;white-space:nowrap}.data-health-updated{height:49px;margin:26px 0 0;padding:0 23px;display:flex;align-items:center;justify-content:space-between;gap:10px;border-top:1px solid var(--line);color:#71809a;font-size:11px;font-variant-numeric:tabular-nums;white-space:nowrap}.table-row{display:grid;grid-template-columns:334px 310px 154px 150px 117px 93px;gap:12px;align-items:center}.table-head{height:31px;padding:0 16px 0 18px;background:#f4f7fb;border-bottom:1px solid var(--line-soft);color:#71809a;font-size:11px;font-weight:620}.table-record{border-bottom:1px solid var(--line-soft)}.table-record:last-child{border-bottom:0}.data-row{width:100%;height:53px;border:0;padding:0 16px 0 18px;background:var(--surface);color:var(--ink);text-align:left;cursor:pointer}.data-row:hover{background:#f9fbfd}.data-row>span{min-width:0;font-size:14px;font-variant-numeric:tabular-nums}.fund-identity{min-width:0;display:flex;align-items:center;gap:10px}.fund-identity>span:last-child{min-width:0}.fund-logo{width:30px;height:30px;flex:none;display:grid;place-items:center;overflow:hidden;border:1px solid #e8edf4;border-radius:8px;background:#fff;color:#60708a}.fund-logo-source{position:relative;justify-items:start}.fund-logo-source img{position:absolute;left:3px;top:50%;width:auto;max-width:none;height:22px;display:block;transform:translateY(-50%)}.fund-logo-default{background:#f3f6fa}.fund-identity strong{display:block;overflow:hidden;color:#26324a;font-size:12px;line-height:1.05;font-weight:660;text-overflow:ellipsis;white-space:nowrap}.fund-meta{display:block;margin-top:5px;overflow:hidden;color:#8090a9;font-size:10px;line-height:1;font-weight:430;text-overflow:ellipsis;white-space:nowrap}.numeric{text-align:right;font-weight:600;white-space:nowrap}.data-row>.numeric{text-align:left}.profit-metric{min-width:0;display:grid;justify-items:start;gap:6px}.profit-value{max-width:100%;overflow:hidden;font-size:13px;line-height:1;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.contribution-row{width:100%;display:flex;align-items:center;gap:9px}.contribution-track{width:min(180px,72%);height:5px;display:block;overflow:hidden;border-radius:3px;background:transparent}.contribution-track i{height:100%;display:block;border-radius:inherit;background:currentColor}.contribution-row small{color:#71809a;font-size:10px;font-variant-numeric:tabular-nums;white-space:nowrap}.gain{color:var(--gain)}.loss{color:var(--loss)}.flat{color:var(--muted)}.row-chevron{color:var(--faint);transition:transform .18s ease}.expanded .row-chevron{transform:rotate(90deg)}.table-status-head,.table-status-cell{display:flex;align-items:center;justify-content:flex-start;text-align:left}.detail-entry-head,.detail-entry{display:flex;align-items:center;justify-content:flex-start;padding-left:30px;text-align:left}.status-mark{height:26px;padding:0 10px;display:inline-flex;align-items:center;border-radius:8px;white-space:nowrap;font-size:10px;line-height:1;font-weight:540}.status-confirmed{background:#eaf7f0;color:#247a4d}.status-estimated{background:#eaf2ff;color:#1769e0}.status-awaiting{background:#eef2f6;color:#667085}.status-latest{background:#f4f5f7;color:#7a8494}.status-unavailable{background:#fdecec;color:#c53b3f}.fund-list-toggle{width:100%;height:36px;border:0;border-top:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:4px;background:var(--surface);color:var(--blue);font-size:12px;font-weight:600;cursor:pointer}.fund-detail-card{min-width:0;background:#f8faff;border-top:1px dashed var(--line-strong)}.detail-tabs{min-height:48px;padding:8px 24px 0;display:flex;align-items:end;gap:24px;border-bottom:1px solid var(--line);background:#ffffff8c;overflow-x:auto;scrollbar-width:none}.detail-tabs::-webkit-scrollbar{display:none}.detail-tabs button{position:relative;min-height:39px;flex:none;padding:0 2px 9px;border:0;background:transparent;color:var(--muted);font-size:12px;font-weight:680;cursor:pointer;white-space:nowrap}.detail-tabs button:after{position:absolute;left:0;right:0;bottom:-1px;height:2px;border-radius:2px 2px 0 0;background:transparent;content:""}.detail-tabs button.active{color:var(--blue)}.detail-tabs button.active:after{background:var(--blue)}.detail-tabs-compact{min-height:52px;padding:7px 22px 0;gap:20px;background:var(--surface)}.detail-tabs-compact button{font-size:12px}.fund-detail-panel{min-width:0;padding:16px 24px 18px}.detail-overview{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px 22px}.detail-overview>div{min-width:0;display:grid;gap:5px}.detail-overview small{color:var(--muted);font-size:10px}.detail-overview strong{overflow-wrap:anywhere;font-size:12px;font-weight:650}.performance-overview{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.performance-track{min-width:0;padding:14px 15px 15px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}.performance-track>header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px}.performance-track>header strong{font-size:13px}.performance-track>header span{padding:3px 7px;border-radius:999px;background:var(--surface-subtle);color:var(--muted);font-size:9px;font-weight:700}.confirmed-track{border-color:#ccecdf;background:#f6fbf8}.confirmed-track>header span{background:#e8f8f1;color:var(--loss)}.estimate-track{background:#f7f9fc}.estimate-base-mismatch,.estimate-field-conflict,.estimate-incomplete{border-color:#efd9af;background:#fff9ef}.estimate-base-mismatch>header span,.estimate-field-conflict>header span,.estimate-incomplete>header span{background:#fff0d6;color:var(--warning)}.performance-track .detail-overview{gap:13px 16px}.performance-track strong.gain{color:var(--gain)}.performance-track strong.loss{color:var(--loss)}.position-meta{grid-column:1 / -1;display:flex;flex-wrap:wrap;gap:8px 18px;padding:2px 2px 0;color:var(--muted);font-size:10px}.fund-trends{min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.trend-card{min-width:0;min-height:216px;padding:14px 15px 12px;border:1px solid var(--line);border-radius:13px;background:var(--surface)}.trend-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px}.trend-heading>div{min-width:0;display:grid;gap:4px}.trend-heading strong{font-size:12px;font-weight:700}.trend-heading span{color:var(--muted);font-size:9px;line-height:1.45}.trend-metric{flex:none;color:var(--ink);font-size:14px!important;font-weight:720;font-variant-numeric:tabular-nums}.trend-metric.gain{color:var(--gain)}.trend-metric.loss{color:var(--loss)}.trend-metric.history-metric{color:var(--blue)}.trend-plot{position:relative;min-height:158px;margin-top:8px;padding:0 42px 16px 0}.trend-plot svg{width:100%;height:142px;display:block;overflow:visible}.trend-line{fill:none;stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke;stroke-linecap:round;stroke-linejoin:round}.trend-zero{stroke:#dbe2ec;stroke-width:1;stroke-dasharray:4 5;vector-effect:non-scaling-stroke}.trend-dot{fill:var(--blue);stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.trend-virtual-line{stroke:var(--blue);stroke-width:2;stroke-dasharray:5 5;stroke-linecap:round;opacity:.72;vector-effect:non-scaling-stroke}.trend-confirmed-dot{fill:var(--surface);stroke:var(--blue);stroke-width:2;vector-effect:non-scaling-stroke}.trend-virtual-halo{fill:var(--blue-soft);opacity:.96}.trend-virtual-dot{fill:var(--blue);stroke:#fff;stroke-width:2;vector-effect:non-scaling-stroke}.trend-axis{position:absolute;right:0;color:var(--faint);font-size:8px;font-variant-numeric:tabular-nums}.trend-axis-top{top:4px}.trend-axis-bottom{bottom:22px}.trend-time-range{position:absolute;left:1px;right:42px;bottom:0;display:flex;justify-content:space-between;color:var(--faint);font-size:8px;font-variant-numeric:tabular-nums}.trend-virtual-label{display:inline-flex;align-items:center;gap:4px;color:var(--blue);font-weight:700}.trend-virtual-label:before{width:5px;height:5px;border-radius:50%;background:var(--blue);content:""}.trend-empty{min-height:158px;margin-top:8px;display:grid;place-items:center;border-radius:9px;background:var(--surface-subtle);color:var(--muted);font-size:10px}.trend-loading{background:linear-gradient(180deg,#f7f9fcb8,#f7f9fc5c)}.trend-message{display:flex;align-items:center;justify-content:center;gap:10px;color:var(--muted)}.trend-message>div{display:grid;gap:4px}.trend-message strong{color:var(--ink);font-size:11px}.trend-message span{font-size:9px}.holding-state{min-height:210px;display:flex;align-items:center;justify-content:center;gap:9px;color:var(--muted);font-size:12px}.holding-error{color:var(--danger)}.holding-empty{min-height:210px;display:grid;place-items:center;align-content:center;gap:9px;padding:24px;text-align:center;color:var(--muted)}.holding-empty svg{color:var(--blue)}.holding-empty strong{color:var(--ink);font-size:13px}.holding-empty span{max-width:440px;font-size:10px;line-height:1.6}.holdings-summary{display:grid;gap:14px}.holdings-meta{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.holdings-meta>span{display:grid;gap:4px}.holdings-meta strong{font-size:12px}.holdings-meta small{color:var(--muted);font-size:9px}.holdings-meta em{padding:4px 7px;border-radius:7px;background:var(--warning-soft);color:var(--warning);font-size:9px;font-style:normal;font-weight:700}.allocation-card{padding:13px 14px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.allocation-bar{height:9px;display:flex;overflow:hidden;border-radius:5px;background:#e9eef5}.allocation-bar span+span{border-left:2px solid white}.allocation-stock{background:var(--blue)}.allocation-bond{background:#6f7f95}.allocation-cash{background:#1ca97b}.allocation-other{background:#b9c3d2}.allocation-legend{margin-top:11px;display:flex;flex-wrap:wrap;gap:8px 18px}.allocation-legend span{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:9px}.allocation-legend i{width:7px;height:7px;border-radius:50%}.allocation-legend strong{margin-left:2px;color:var(--ink);font-size:10px}.holding-preview-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.holding-preview{min-width:0;overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.holding-preview-heading{min-height:41px;padding:10px 12px;display:flex;align-items:center;justify-content:space-between;gap:8px;border-bottom:1px solid var(--line)}.holding-preview-heading strong{font-size:11px}.holding-preview-heading span{color:var(--faint);font-size:9px}.holding-preview-list>div{min-height:42px;padding:7px 12px;display:flex;align-items:center;justify-content:space-between;gap:10px}.holding-preview-list>div+div{border-top:1px solid var(--line)}.holding-preview-list>div>span{min-width:0;display:grid;gap:3px}.holding-preview-list strong{overflow:hidden;font-size:10px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.holding-preview-list small{color:var(--faint);font-size:8px}.holding-preview-list b{flex:none;font-size:10px;font-weight:700;font-variant-numeric:tabular-nums}.holding-preview-list .holding-preview-metrics{min-width:100px;flex:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;text-align:right}.stock-daily-change{font-weight:720;font-variant-numeric:tabular-nums;white-space:nowrap}.stock-daily-change.muted{color:var(--faint)}.holding-subempty{min-height:74px;display:grid;place-items:center;padding:16px;color:var(--muted);font-size:10px;text-align:center}.holdings-warning{padding:9px 11px;border:1px solid #efd5a1;border-radius:9px;background:var(--warning-soft);color:#8a5a08;font-size:9px;line-height:1.5}.full-disclosure-button{justify-self:start;min-height:36px;padding:0 13px;border:1px solid #c8daf7;border-radius:9px;background:var(--blue-soft);color:var(--blue);font-size:10px;font-weight:700;cursor:pointer}.full-disclosure-button:hover{border-color:#9bbdef;background:#deebff}.disclosure-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;padding:34px;display:flex;align-items:center;justify-content:center;background:#0d182e6b}.disclosure-modal{width:min(920px,100%);max-height:min(760px,calc(100vh - 68px));display:flex;flex-direction:column;overflow:hidden;border:1px solid rgba(255,255,255,.75);border-radius:20px;background:var(--surface);box-shadow:var(--shadow-overlay)}.disclosure-title-row{flex:none;min-height:76px;padding:16px 20px 13px 22px;display:flex;align-items:center;justify-content:space-between;gap:18px}.disclosure-title-row>span{min-width:0;display:grid;gap:5px}.disclosure-title-row h2{overflow:hidden;margin:0;font-size:19px;line-height:1.25;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap}.disclosure-title-row p{margin:0;color:var(--muted);font-size:10px}.disclosure-title-row>button{width:38px;height:38px;flex:none;display:grid;place-items:center;border:0;border-radius:10px;background:var(--surface-subtle);color:var(--muted);cursor:pointer}.disclosure-content{min-height:260px;padding:16px 22px 22px;overflow:auto;overscroll-behavior:contain}.disclosure-content>.holdings-warning{margin-bottom:12px}.disclosure-list{overflow:hidden;border:1px solid var(--line);border-radius:12px}.disclosure-row{min-height:45px;padding:7px 12px;display:grid;grid-template-columns:minmax(180px,1.3fr) .7fr .65fr .9fr;gap:12px;align-items:center;font-size:11px}.disclosure-row-stock{grid-template-columns:minmax(180px,1.3fr) .62fr .56fr .62fr .9fr}.disclosure-row+.disclosure-row{border-top:1px solid var(--line)}.disclosure-row>span:nth-child(n+2){text-align:right;font-variant-numeric:tabular-nums}.disclosure-row strong{min-width:0;overflow-wrap:anywhere;font-size:11px}.disclosure-daily-change{display:block;text-align:right;font-size:11px}.disclosure-head{min-height:35px;background:var(--surface-subtle);color:var(--muted);font-size:9px;font-weight:700}.disclosure-empty{min-height:240px;display:grid;place-items:center;padding:24px;border-radius:12px;background:var(--surface-subtle);color:var(--muted);font-size:11px;text-align:center}.change-section{display:grid;gap:10px}.change-context{min-height:30px;display:flex;align-items:center;justify-content:space-between;gap:12px;color:var(--muted);font-size:9px}.change-context strong{color:var(--ink);font-size:10px}.change-context span{font-variant-numeric:tabular-nums}.change-list{overflow:hidden;border:1px solid var(--line);border-radius:12px}.change-row{min-height:44px;padding:6px 12px;display:grid;grid-template-columns:minmax(180px,1fr) 54px 64px 64px 70px 118px;gap:10px;align-items:center}.change-row+.change-row{border-top:1px solid var(--line)}.change-head{min-height:34px;background:var(--surface-subtle);color:var(--muted);font-size:9px;font-weight:700}.change-head>span:nth-child(n+2){text-align:right}.change-security{min-width:0;display:grid;gap:2px}.change-security strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.change-row small{color:var(--muted);font-size:9px}.change-badge{width:48px;min-height:22px;display:inline-grid;place-items:center;border-radius:7px;background:var(--surface-subtle);color:var(--muted);font-size:9px;font-weight:700}.change-badge.change-added,.change-badge.change-increased{background:var(--gain-soft);color:var(--gain)}.change-badge.change-removed,.change-badge.change-decreased{background:var(--loss-soft);color:var(--loss)}.change-weight,.change-delta{text-align:right;font-size:10px;font-variant-numeric:tabular-nums}.change-live{text-align:right;font-size:10px}.change-current{color:var(--ink);font-weight:720}.change-delta{color:var(--muted);font-weight:680}.delta-increased{color:var(--gain)}.delta-decreased{color:var(--loss)}.holding-analysis{display:grid;gap:14px}.analysis-notice{padding:11px 13px;display:grid;grid-template-columns:auto 1fr;gap:12px;align-items:baseline;border:1px solid #c9daf5;border-radius:11px;background:var(--blue-soft)}.analysis-notice strong{color:var(--blue);font-size:10px;white-space:nowrap}.analysis-notice span{color:#536983;font-size:9px;line-height:1.5}.analysis-metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.analysis-metric{min-width:0;min-height:86px;padding:11px 12px;display:grid;align-content:space-between;gap:6px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}.analysis-metric small{overflow:hidden;color:var(--muted);font-size:9px;font-weight:650;text-overflow:ellipsis;white-space:nowrap}.analysis-metric .stock-daily-change{font-size:17px;letter-spacing:-.02em}.analysis-metric>span:last-child{overflow:hidden;color:var(--faint);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.analysis-groups{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.analysis-groups section{padding:11px 12px;display:grid;grid-template-columns:repeat(3,1fr);gap:10px;border:1px solid var(--line);border-radius:11px;background:var(--surface-subtle)}.analysis-groups header{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;gap:8px}.analysis-groups header strong{font-size:10px}.analysis-groups header span{color:var(--faint);font-size:8px}.analysis-groups section>div{display:grid;gap:4px}.analysis-groups small{color:var(--muted);font-size:8px}.analysis-groups .stock-daily-change{font-size:11px}.analysis-chart{margin:0;padding:12px 14px 8px;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.analysis-chart figcaption{display:flex;align-items:center;justify-content:space-between;gap:10px}.analysis-chart figcaption strong{font-size:10px}.analysis-chart figcaption span{color:var(--faint);font-size:8px}.analysis-chart svg{width:100%;height:auto;display:block}.analysis-chart-bg{fill:var(--surface-subtle)}.analysis-axis{stroke:#c9d2df;stroke-width:1;stroke-dasharray:4 4}.analysis-axis-label,.analysis-quadrant-label{fill:var(--faint);font-size:8px}.analysis-quadrant-label{opacity:.82}.analysis-point-positive{fill:var(--gain);fill-opacity:.72;stroke:#fff;stroke-width:2}.analysis-point-negative{fill:var(--loss);fill-opacity:.72;stroke:#fff;stroke-width:2}.analysis-point-label{fill:var(--ink);font-size:8px;font-weight:650;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.analysis-chart-empty{min-height:96px;display:grid;place-items:center;border:1px dashed var(--line);border-radius:12px;color:var(--muted);font-size:10px;text-align:center}.analysis-section-heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.analysis-section-heading strong{font-size:11px}.analysis-section-heading span{color:var(--faint);font-size:8px}.analysis-list{overflow:hidden;border:1px solid var(--line);border-radius:12px}.analysis-row{min-height:47px;padding:7px 11px;display:grid;grid-template-columns:minmax(180px,1.35fr) 54px 66px repeat(4,62px);gap:9px;align-items:center}.analysis-row+.analysis-row{border-top:1px solid var(--line)}.analysis-head{min-height:34px;background:var(--surface-subtle);color:var(--muted);font-size:8px;font-weight:700}.analysis-head>span:nth-child(n+2),.analysis-row>span:nth-child(n+3){text-align:right}.analysis-security{min-width:0;display:grid;gap:3px}.analysis-security strong{overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.analysis-security small{overflow:hidden;color:var(--muted);font-size:8px;text-overflow:ellipsis;white-space:nowrap}.analysis-row>span:nth-child(n+3){font-size:10px;font-variant-numeric:tabular-nums}.mobile-list{display:none}.empty-state{padding:48px 20px;text-align:center;color:var(--muted);font-size:13px}.error-banner{margin:14px 0;padding:14px 16px;border:1px solid #f2c3c5;border-radius:var(--radius-container);background:var(--gain-soft);color:var(--danger);display:flex;align-items:center;justify-content:space-between;gap:16px;font-size:12px}.error-banner span{display:flex;gap:10px;align-items:baseline}.error-banner button{border:1px solid #efb4b7;border-radius:var(--radius-status);background:#fff;padding:7px 10px;color:var(--danger);display:inline-flex;gap:6px;align-items:center;cursor:pointer}.dashboard-skeleton{position:relative}.dashboard-skeleton p{margin:14px 0 0;color:var(--muted);font-size:11px;text-align:center}.skeleton-summary{height:214px;display:grid;grid-template-columns:720px minmax(0,1fr);overflow:hidden;border:1px solid var(--line);border-radius:var(--radius-module);background:var(--surface)}.skeleton-summary-primary{padding:34px 32px;display:grid;align-content:center;justify-items:start;gap:16px}.skeleton-summary-primary span,.skeleton-summary-primary strong,.skeleton-summary-primary i,.skeleton-summary-secondary span,.skeleton-market span,.skeleton-status,.skeleton-table i,.skeleton-health i,.skeleton-health span{display:block;border-radius:7px;background:var(--line-soft);animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-summary-primary span{width:86px;height:12px}.skeleton-summary-primary strong{width:min(360px,78%);height:48px}.skeleton-summary-primary i{width:210px;height:12px}.skeleton-summary-secondary{margin:28px 0;padding-left:32px;display:grid;align-content:stretch;border-left:1px solid var(--line)}.skeleton-summary-secondary span{width:72%;height:24px;margin:auto 32px auto 0}.skeleton-summary-secondary span+span{border-top:1px solid var(--line)}.skeleton-market{height:77px;margin-top:16px;display:grid;grid-template-columns:repeat(5,1fr);overflow:hidden;border:1px solid var(--line);border-radius:15px;background:var(--surface)}.skeleton-market span{width:62%;height:16px;margin:auto}.skeleton-market span+span{border-left:1px solid var(--line)}.skeleton-status{height:50px;margin-top:12px;border:1px solid var(--line);border-radius:14px}.skeleton-lower{margin-top:12px;display:grid;grid-template-columns:minmax(0,1fr) 272px;align-items:start;gap:16px}.skeleton-table{position:relative;height:386px;overflow:hidden;border:1px solid var(--line);border-radius:15px;background:var(--surface)}.skeleton-table:before{position:absolute;top:52px;right:0;left:0;height:31px;background:#f4f7fb;content:""}.skeleton-table i{position:absolute;top:18px;left:22px;width:96px;height:16px}.skeleton-table span{position:relative;display:block;height:53px;border-top:1px solid var(--line-soft);background:var(--surface)}.skeleton-table span:after{position:absolute;inset:20px 18px auto;height:12px;border-radius:6px;background:var(--line-soft);content:"";animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-table span:first-of-type{margin-top:83px}.skeleton-health{height:318px;padding:22px 23px;display:grid;align-content:start;gap:18px;border:1px solid var(--line);border-radius:15px;background:var(--surface)}.skeleton-health i{width:108px;height:16px}.skeleton-health span{width:100%;height:12px;margin-top:8px}@keyframes skeleton-pulse{0%,to{opacity:.55}50%{opacity:1}}.quiet-loading{display:inline-flex;align-items:center;justify-content:center;gap:9px;color:var(--faint);font-size:10px;font-weight:520}.quiet-loading-dots{height:12px;display:inline-flex;align-items:center;gap:3px}.quiet-loading-dots i{width:4px;height:4px;display:block;border-radius:50%;background:currentColor;animation:quiet-loading-pulse 1.4s ease-in-out infinite}.quiet-loading-dots i:nth-child(2){animation-delay:.16s}.quiet-loading-dots i:nth-child(3){animation-delay:.32s}.quiet-loading-compact{gap:7px;font-size:9px}.quiet-loading-compact .quiet-loading-dots i{width:3px;height:3px}@keyframes quiet-loading-pulse{0%,72%,to{opacity:.28;transform:translateY(0)}36%{opacity:.8;transform:translateY(-2px)}}.spinning{animation:spin .85s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}.portfolio-manager-backdrop{position:fixed;z-index:100;top:0;right:0;bottom:0;left:0;padding:28px;display:grid;place-items:center;background:#0c17306b}.portfolio-manager{width:min(760px,100%);max-height:min(860px,calc(100vh - 56px));overflow-y:auto;border:1px solid rgba(214,223,237,.9);border-radius:20px;background:var(--surface);box-shadow:var(--shadow-overlay)}.manager-title-row{position:sticky;z-index:2;top:0;padding:22px 24px 18px;display:flex;align-items:flex-start;justify-content:space-between;gap:20px;background:var(--surface);border-bottom:1px solid var(--line)}.manager-title-row h2{margin:0;font-size:21px;letter-spacing:-.025em}.manager-title-row p{margin:6px 0 0;color:var(--muted);font-size:12px;line-height:1.5}.manager-close{width:36px;height:36px;flex:none;display:grid;place-items:center;border:0;border-radius:10px;background:var(--surface-subtle);color:var(--muted);cursor:pointer}.manager-close:hover{color:var(--ink);background:#edf1f7}.manager-disabled{margin:18px 24px 0;padding:13px 14px;display:flex;gap:10px;align-items:flex-start;border:1px solid #f0cb86;border-radius:12px;background:var(--warning-soft);color:var(--warning)}.manager-disabled div{display:grid;gap:3px}.manager-disabled strong{color:#714700;font-size:12px}.manager-disabled span{color:#8e641a;font-size:11px}.manager-section{padding:20px 24px}.manager-section+.manager-section{border-top:1px solid var(--line)}.manager-auth-section{background:var(--surface-subtle)}.manager-auth-section .manager-field{max-width:420px}.manager-section-heading{margin-bottom:13px}.manager-section-heading>div{display:flex;align-items:baseline;justify-content:space-between;gap:12px}.manager-section-heading h3{margin:0;font-size:14px;letter-spacing:-.01em}.manager-section-heading span{color:var(--muted);font-size:10px;font-weight:620}.manager-list{border:1px solid var(--line);border-radius:13px;overflow:hidden}.manager-portfolio-row{min-height:62px;padding:10px 12px;display:flex;align-items:center;gap:11px;border-left:3px solid transparent;transition:background .16s ease,border-color .16s ease}.manager-portfolio-row.editing{border-left-color:var(--blue);background:#f5f9ff}.manager-portfolio-row+.manager-portfolio-row{border-top:1px solid var(--line)}.manager-portfolio-icon{width:34px;height:34px;flex:none;display:grid;place-items:center;border-radius:10px;background:var(--blue-soft);color:var(--blue)}.manager-portfolio-copy{min-width:0;display:grid;gap:4px}.manager-portfolio-copy strong{overflow:hidden;color:var(--ink);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.manager-portfolio-copy span{color:var(--muted);font-size:10px}.manager-portfolio-actions{margin-left:auto;flex:none;display:flex;align-items:center;gap:4px}.edit-portfolio-button,.delete-portfolio-button{width:34px;height:34px;flex:none;display:grid;place-items:center;border:0;border-radius:9px;background:transparent;color:var(--faint);cursor:pointer}.edit-portfolio-button:hover:not(:disabled){background:var(--blue-soft);color:var(--blue)}.delete-portfolio-button:hover:not(:disabled){background:var(--gain-soft);color:var(--danger)}.edit-portfolio-button:disabled,.delete-portfolio-button:disabled{opacity:.35;cursor:not-allowed}.delete-confirm{margin-left:auto;display:flex;align-items:center;gap:6px}.delete-confirm span{color:var(--danger);font-size:10px;font-weight:700}.delete-confirm button{min-height:30px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--surface);font-size:10px;font-weight:680;cursor:pointer}.delete-confirm button:first-of-type{border-color:#f1bec4;background:var(--gain-soft);color:var(--danger)}.manager-import{display:grid;gap:13px}.manager-import .manager-section-heading{margin-bottom:0}.manager-field{display:grid;gap:7px}.manager-field>span{color:var(--muted);font-size:11px;font-weight:680}.manager-field>input{min-height:42px;width:100%;border:1px solid var(--line-strong);border-radius:10px;padding:0 12px;background:var(--surface);color:var(--ink);font-size:13px}.manager-field>input::placeholder{color:var(--faint)}.manager-field>input:disabled{background:var(--surface-subtle)}.manager-holdings{display:grid;gap:13px;background:#fbfcff}.manager-holdings .manager-section-heading{margin-bottom:0}.manager-loading{min-height:96px;display:grid;place-items:center;border:1px dashed var(--line-strong);border-radius:12px;color:var(--muted);font-size:11px}.portfolio-name-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.portfolio-name-input-row input{min-width:0;width:100%;min-height:40px;padding:0 11px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink);font-size:12px}.save-portfolio-name-button{min-height:40px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:9px;background:var(--blue);color:#fff;font-size:11px;font-weight:680;cursor:pointer}.save-portfolio-name-button:disabled{opacity:.5;cursor:not-allowed}.fund-lookup{display:block}.lookup-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:8px}.lookup-input-row input,.lookup-result input,.holding-editor-row input{min-width:0;width:100%;min-height:40px;padding:0 11px;border:1px solid var(--line-strong);border-radius:9px;background:var(--surface);color:var(--ink);font-size:12px;font-variant-numeric:tabular-nums}.lookup-input-row input:focus,.lookup-result input:focus,.holding-editor-row input:focus,.manager-field>input:focus{outline:3px solid rgba(17,103,232,.14);border-color:#78a9f2}.lookup-button,.add-holding-button{min-height:40px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;gap:6px;border:0;border-radius:9px;background:var(--blue);color:#fff;font-size:11px;font-weight:680;cursor:pointer}.lookup-button:disabled,.add-holding-button:disabled{opacity:.5;cursor:not-allowed}.lookup-result{padding:12px;display:grid;grid-template-columns:minmax(0,1fr) 140px auto;gap:12px;align-items:end;border:1px solid #a9dccb;border-radius:12px;background:var(--loss-soft)}.lookup-fund-copy{min-width:0;display:grid;gap:3px}.lookup-found{display:inline-flex;align-items:center;gap:4px;color:var(--loss);font-size:9px;font-weight:720}.lookup-fund-copy strong{overflow:hidden;color:var(--ink);font-size:13px;text-overflow:ellipsis;white-space:nowrap}.lookup-fund-copy small{color:var(--muted);font-size:10px}.lookup-result label{display:grid;gap:6px}.lookup-result label>span{color:var(--muted);font-size:10px;font-weight:680}.holding-editor-list{overflow:hidden;border:1px solid var(--line);border-radius:12px;background:var(--surface)}.holding-editor-row{min-height:60px;padding:9px 10px 9px 12px;display:grid;grid-template-columns:minmax(140px,1fr) 140px 34px 34px;gap:8px;align-items:center}.holding-editor-row+.holding-editor-row{border-top:1px solid var(--line)}.holding-editor-copy{min-width:0;display:grid;gap:4px}.holding-editor-copy strong{overflow:hidden;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.holding-editor-copy span{color:var(--faint);font-size:9px}.save-holding-button,.delete-holding-button{width:34px;height:34px;display:grid;place-items:center;border:0;border-radius:9px;background:var(--surface-subtle);color:var(--muted);cursor:pointer}.save-holding-button:not(:disabled){background:var(--blue-soft);color:var(--blue)}.delete-holding-button:hover:not(:disabled){background:var(--gain-soft);color:var(--danger)}.save-holding-button:disabled,.delete-holding-button:disabled{opacity:.34;cursor:not-allowed}.holding-delete-confirm{grid-column:3 / 5;display:grid;grid-template-columns:1fr 1fr;gap:4px}.holding-delete-confirm button{min-width:0;min-height:34px;padding:0 5px;border:1px solid var(--line);border-radius:8px;background:var(--surface);color:var(--muted);font-size:9px;font-weight:680;cursor:pointer}.holding-delete-confirm button:first-child{border-color:#f1bec4;background:var(--gain-soft);color:var(--danger)}.manager-success{padding:10px 12px;display:flex;align-items:center;gap:7px;border:1px solid #b6dfd2;border-radius:10px;background:var(--loss-soft);color:var(--loss);font-size:11px;font-weight:650}.manager-standalone-error{margin:0 24px 20px}.file-picker{width:100%;min-height:68px;padding:12px 14px;display:flex;align-items:center;gap:12px;border:1px dashed #b8c5d9;border-radius:12px;background:var(--surface-subtle);color:var(--blue);text-align:left;cursor:pointer}.file-picker:hover:not(:disabled){border-color:var(--blue);background:var(--blue-soft)}.file-picker.ready{border-style:solid;border-color:#9ddbc7;background:var(--loss-soft);color:var(--loss)}.file-picker>span{min-width:0;display:grid;gap:5px}.file-picker strong{overflow:hidden;color:var(--ink);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.file-picker small{color:var(--muted);font-size:10px;line-height:1.4}.import-note{margin:-2px 0 0;color:var(--muted);font-size:10px;line-height:1.5}.manager-error{padding:10px 12px;border:1px solid #f1bec4;border-radius:10px;background:var(--gain-soft);color:var(--danger);font-size:11px;line-height:1.45}.manager-actions{margin-top:2px;display:flex;justify-content:flex-end;gap:9px}.manager-actions button{min-height:40px;padding:0 15px;border-radius:10px;display:inline-flex;align-items:center;justify-content:center;gap:7px;font-size:12px;font-weight:680;cursor:pointer}.secondary-action{border:1px solid var(--line-strong);background:var(--surface);color:var(--muted)}.primary-action{border:0;background:var(--blue);color:#fff}.manager-actions button:disabled{opacity:.55;cursor:not-allowed;box-shadow:none}.status-footer{max-width:var(--content);min-height:54px;margin:0 auto;padding:16px var(--page-gutter) 24px;display:flex;align-items:center;justify-content:flex-end;gap:12px;border-top:1px solid var(--line);color:var(--muted);font-size:11px}.status-footer span{display:inline-flex;align-items:center;gap:6px}.refresh-toast{position:fixed;z-index:80;left:50%;bottom:24px;max-width:min(520px,calc(100vw - 32px));padding:12px 16px;transform:translate(-50%);border:1px solid rgba(16,27,53,.08);border-radius:12px;background:#101b35f0;box-shadow:var(--shadow-overlay);color:#fff;font-size:12px;font-weight:650;text-align:center}@media(min-width:900px)and (max-width:1199px){.summary-band{height:auto;grid-template-columns:1fr}.summary-primary{min-height:214px}.summary-secondary{margin:0;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid #e6ebf2}.summary-metric-column{min-height:116px;padding:20px 28px;border-left:0}.summary-metric-column+.summary-metric-column{border-left:1px solid #e6ebf2}.market-strip{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity}.market-strip::-webkit-scrollbar{display:none}.market-item{min-width:224px;flex:1 0 224px;padding:0 14px;grid-template-columns:minmax(82px,.8fr) minmax(110px,1.2fr);gap:8px;scroll-snap-align:start}.market-sparkline{width:100%;height:38px}.market-more{display:none}.dashboard-lower{grid-template-columns:1fr}.data-health-card{width:100%;min-height:0}.data-health-card dl{grid-template-columns:repeat(5,minmax(0,1fr))}.skeleton-lower{grid-template-columns:1fr}.skeleton-health{width:100%;height:150px}.table-row{grid-template-columns:minmax(190px,1.35fr) minmax(112px,.82fr) minmax(92px,.65fr) minmax(116px,.78fr) 112px 64px;gap:10px}.fund-code,.fund-nav-date{display:none}.market-item{padding:0 14px;gap:8px}.market-name{max-width:92px}}@media(min-width:1200px)and (max-width:1499px){.summary-band{grid-template-columns:minmax(500px,.92fr) minmax(0,1.08fr)}.summary-primary{padding-right:24px}.summary-hero-row{gap:16px}.summary-hero-copy{min-width:0}.summary-sparkline{width:clamp(176px,16vw,250px);margin-right:0;overflow:hidden}.summary-sparkline svg{overflow:hidden}.summary-coverage{margin-right:0}.summary-coverage span+span:before{margin:0 14px}.summary-secondary{grid-template-columns:repeat(3,minmax(0,1fr))}.summary-metric-column{padding-right:clamp(16px,2vw,26px);padding-left:clamp(16px,2vw,26px)}.summary-metric-column strong{font-size:clamp(18px,1.65vw,22px)}.market-strip{overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity}.market-strip::-webkit-scrollbar{display:none}.market-item{min-width:220px;flex:1 0 220px;padding:0 15px;grid-template-columns:minmax(76px,.72fr) minmax(110px,1.28fr);gap:8px;scroll-snap-align:start}.market-more{display:none}.dashboard-lower{grid-template-columns:1fr}.data-health-card{width:100%;min-height:0}.data-health-card dl{grid-template-columns:repeat(5,minmax(0,1fr))}.skeleton-lower{grid-template-columns:1fr}.skeleton-health{width:100%;height:150px}.data-health-updated{margin-top:20px}.table-row{grid-template-columns:minmax(280px,1.35fr) minmax(245px,1.2fr) minmax(130px,.72fr) minmax(145px,.78fr) 117px 72px}}@media(min-width:1500px){.table-head>span:nth-child(2){padding-left:65px;text-align:left}.table-head>span:nth-child(3){transform:translate(-11px);text-align:left}.table-head>span:nth-child(4){padding-left:19px;text-align:left}.table-head>span:nth-child(5){padding-left:9px}.table-head>span:nth-child(6){padding-left:23px}.market-item{flex:none}.market-item:nth-of-type(1){width:303px}.market-item:nth-of-type(2){width:284px}.market-item:nth-of-type(3){width:295px}.market-item:nth-of-type(4){width:299px}.market-item:nth-of-type(5){width:287px}}@media(max-width:899px){.app-header{padding:0 var(--page-gutter)}.brand-row{height:auto;min-height:70px;padding:8px 0 6px;align-items:center}.brand{transform:translateY(3px)}.brand-mark{width:32px;height:32px}.brand-copy{gap:5px;transform:none}.brand h1{font-size:19px}.brand-copy small{font-size:11px}.title-refresh-button{top:-2px;right:-21px;width:16px;height:16px}.portfolio-nav-row{margin-top:8px;gap:6px}.portfolio-tabs{padding:4px 0;gap:4px}.portfolio-tabs button,.portfolio-tabs button.active{min-width:148px;flex:1 0 148px;height:52px;padding:5px 10px;align-content:center;gap:3px}.portfolio-tab-name i{top:6px;right:7px;width:8px;height:8px}.portfolio-tab-name{width:100%;max-width:none;font-size:14px;line-height:1.4}.portfolio-tab-name>span{padding-right:14px}.portfolio-tab-preview{gap:7px;font-size:10px;line-height:1.3}.portfolio-tabs-loading{min-width:240px}.manage-portfolios-button{width:52px;min-width:52px;height:52px;padding:0}.manage-portfolios-button span{display:none}main{padding:16px var(--page-gutter) 24px}.summary-band{height:auto;grid-template-columns:1fr}.summary-primary{padding:24px 20px}.summary-hero-row{display:grid;grid-template-columns:minmax(0,1fr)}.summary-sparkline{width:auto;height:72px;margin:14px 0 0}.hero-amount{margin-top:14px;font-size:40px}.summary-coverage{margin-right:0;margin-top:20px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 18px;overflow:visible;white-space:normal}.summary-coverage span{min-width:0}.summary-coverage span+span:before{display:none}.summary-secondary{margin:0 20px 18px;padding:0;grid-template-columns:1fr;border-top:1px solid #e8ecf2}.summary-secondary.optional-collapsed{grid-template-columns:1fr}.summary-secondary.optional-collapsed .summary-metric-column:nth-of-type(n+2){display:none}.summary-metric-column{min-height:68px;padding:13px 0;grid-template-columns:1fr 1fr;grid-template-rows:none;border-left:0}.summary-metric-column+.summary-metric-column{border-top:1px solid var(--line)}.summary-metric-main,.summary-metric-sub{gap:8px;align-content:center}.summary-metric-sub{text-align:right}.summary-metric-sub>*{justify-self:end}.summary-metric-column strong{font-size:17px}.summary-metric-sub strong{font-size:14px}.summary-optional-toggle{position:relative;height:28px;grid-column:1 / -1;border:0;padding:0;display:flex;align-items:center;justify-content:center;background:transparent;color:var(--faint);cursor:pointer}.summary-optional-toggle:before{position:absolute;right:0;left:0;top:50%;height:1px;background:var(--line);content:""}.summary-optional-toggle-icon{position:relative;z-index:1;width:34px;height:16px;display:grid;place-items:center;border:1px solid var(--line);border-radius:999px;background:var(--surface);box-shadow:0 2px 5px #2242770f}.summary-optional-toggle-icon svg{transition:transform .18s ease}.summary-optional-toggle.expanded .summary-optional-toggle-icon svg{transform:rotate(180deg)}.market-strip{margin-top:16px;overflow-x:auto;scrollbar-width:none;scroll-snap-type:x proximity}.market-strip::-webkit-scrollbar{display:none}.market-item{min-width:252px;flex:0 0 252px;padding:0 14px;grid-template-columns:minmax(88px,.8fr) minmax(118px,1.2fr);align-content:center;gap:10px;scroll-snap-align:start}.market-sparkline{width:100%;height:40px}.market-more{display:none}.market-copy{gap:7px}.market-quote{flex-direction:column;align-items:flex-start;gap:6px}.market-item strong{font-size:16px}.market-change{font-size:13px}.data-status-strip{height:64px;padding:0 12px;gap:12px;overflow:hidden}.data-status-primary{width:100%;flex:none;display:grid;grid-template-columns:20px minmax(0,1fr);grid-template-rows:auto auto;column-gap:9px;row-gap:6px;white-space:normal}.data-status-primary>svg:first-child{grid-column:1;grid-row:1 / 3;align-self:center;margin:0}.data-status-primary>strong{grid-column:2;align-self:end}.data-status-primary>i{display:none}.data-status-primary>span{grid-column:2;overflow:hidden;align-self:start;color:#71809a;text-overflow:ellipsis;white-space:nowrap}.data-status-meta{display:none}.data-status-primary,.data-status-primary strong,.data-status-meta{font-size:11px}.skeleton-summary{height:425px;min-height:0;grid-template-columns:1fr}.skeleton-summary-primary{min-height:218px;padding:28px 20px}.skeleton-summary-primary strong{width:min(300px,92%);height:40px}.skeleton-summary-secondary{margin:0 20px;padding:0;border-top:1px solid var(--line);border-left:0}.skeleton-summary-secondary span{width:65%;margin:auto 0}.skeleton-market{display:flex;overflow:hidden}.skeleton-market span{min-width:152px}.skeleton-status{height:64px}.skeleton-lower{grid-template-columns:1fr}.skeleton-table{height:386px;min-height:0}.skeleton-health{width:100%;height:260px}.dashboard-lower{margin-top:12px;grid-template-columns:1fr}.fund-section{margin:0;border-radius:var(--radius-container)}.data-health-card{width:100%;min-height:0}.fund-section-header{height:56px;padding:0 12px 0 16px;gap:10px}.fund-section-header h2{font-size:17px}.sort-select{width:98px;height:36px}.desktop-table{display:none}.mobile-list{display:grid;gap:7px;background:#f1f5fa}.mobile-fund{border:0;background:var(--surface);box-shadow:0 1px #1f32540a,0 -1px #1f32540a}.mobile-fund-main{width:100%;min-width:0;overflow:hidden;padding:16px;border:0;background:var(--surface);color:var(--ink);text-align:left;cursor:pointer}.mobile-fund-main:active{background:#f9fbfd}.mobile-fund-title{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) 20px;align-items:flex-start;gap:10px}.mobile-fund-title>span{min-width:0}.mobile-fund-identity{display:flex;align-items:center;gap:10px}.mobile-fund-identity>span{min-width:0}.mobile-fund-title strong{display:block;overflow:hidden;font-size:14px;line-height:1.2;font-weight:600;text-overflow:ellipsis;white-space:nowrap}.mobile-fund-title .row-chevron{width:19px;margin-top:1px;justify-self:end}.mobile-fund-metrics{margin-top:16px;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.mobile-fund-metrics>div{min-width:0;display:grid;align-content:start;gap:8px}.mobile-fund-metrics small{color:var(--muted);font-size:11px;line-height:1;font-weight:500;white-space:nowrap}.mobile-fund-metrics strong,.mobile-key-change{max-width:100%;overflow:hidden;font-size:14px;line-height:1.1;font-weight:600;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.mobile-profit-metric .profit-value{justify-self:start;font-size:15px}.mobile-profit-metric .profit-metric{justify-items:start;gap:10px}.mobile-profit-metric .contribution-track{width:70%}.mobile-fund-footer{min-width:0;margin-top:14px;padding-top:12px;display:flex;align-items:end;justify-content:space-between;gap:12px;border-top:1px solid #edf1f6}.mobile-current-value{min-width:0;display:grid;gap:6px}.mobile-current-value small{color:var(--muted);font-size:10px;line-height:1;font-weight:500;white-space:nowrap}.mobile-current-value strong{overflow:hidden;font-size:14px;line-height:1.1;font-weight:600;font-variant-numeric:tabular-nums;text-overflow:ellipsis;white-space:nowrap}.mobile-fund-footer .status-mark{max-width:100%;flex:none}.detail-tabs{min-height:47px;padding:7px 16px 0;gap:20px}.detail-tabs button{min-height:39px}.fund-detail-panel{padding:14px 16px 16px}.detail-overview{grid-template-columns:repeat(2,minmax(0,1fr));gap:15px 12px}.performance-overview{grid-template-columns:1fr}.performance-track{padding:13px}.performance-track .detail-overview{gap:13px 12px}.position-meta{display:grid;gap:5px}.fund-trends{grid-template-columns:1fr}.trend-card{min-height:204px;padding:13px 12px 10px}.trend-message{min-height:96px}.holding-preview-grid{grid-template-columns:1fr}.allocation-legend{display:grid;grid-template-columns:repeat(2,1fr);gap:8px 12px}.full-disclosure-button{width:100%;justify-content:center}.disclosure-backdrop{padding:0;align-items:end}.disclosure-modal{width:100%;height:94vh;max-height:94vh;border-width:1px 0 0;border-radius:20px 20px 0 0}.disclosure-title-row{min-height:72px;padding:15px 16px 12px}.disclosure-title-row h2{font-size:17px}.detail-tabs-compact{min-height:49px;padding:6px 16px 0;gap:18px}.disclosure-content{padding:14px 16px calc(18px + env(safe-area-inset-bottom))}.disclosure-list{border:0;border-radius:0}.disclosure-head{display:none}.disclosure-row{min-height:0;padding:12px;grid-template-columns:1fr auto;gap:7px 14px;border:1px solid var(--line);border-radius:11px;background:var(--surface)}.disclosure-row+.disclosure-row{margin-top:8px;border-top:1px solid var(--line)}.disclosure-row strong{grid-column:1 / -1;font-size:12px}.disclosure-row>span{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--ink);font-size:10px;text-align:right}.disclosure-row>span:before{color:var(--muted);font-size:9px;content:attr(data-label)}.disclosure-row>span:nth-child(2){grid-column:1 / -1}.disclosure-row>span:last-child{grid-column:1 / -1}.disclosure-daily-change{font-size:10px}.change-context{padding:0 1px;align-items:flex-start}.change-list{border:0;border-radius:0}.change-head{display:none}.change-row{min-height:0;padding:11px 12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 12px;border:1px solid var(--line);border-radius:11px}.change-row+.change-row{margin-top:8px;border-top:1px solid var(--line)}.change-security{grid-column:1}.change-row>span:nth-child(2){justify-self:end}.change-weight{padding-top:8px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);text-align:right}.change-weight:before,.change-live:before,.change-delta:before{color:var(--muted);font-size:9px;font-weight:500;content:attr(data-label)}.change-live{grid-column:1 / -1;padding-top:8px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line)}.change-delta{grid-column:1 / -1;display:flex;align-items:center;justify-content:space-between;text-align:right}.analysis-notice{grid-template-columns:1fr;gap:4px}.analysis-metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.analysis-metric{min-height:82px}.analysis-groups{grid-template-columns:1fr}.analysis-chart{display:none}.analysis-section-heading{align-items:flex-start}.analysis-section-heading span{max-width:190px;text-align:right;line-height:1.4}.analysis-list{border:0;border-radius:0}.analysis-head{display:none}.analysis-row{min-height:0;padding:12px;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px 14px;border:1px solid var(--line);border-radius:11px}.analysis-row+.analysis-row{margin-top:8px;border-top:1px solid var(--line)}.analysis-security{grid-column:1}.analysis-row>span:nth-child(2){justify-self:end}.analysis-row>span:nth-child(n+3){padding-top:7px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);text-align:right}.analysis-row>span:nth-child(n+3):before{color:var(--muted);font-size:8px;font-weight:500;content:attr(data-label)}.error-banner{align-items:flex-start}.error-banner span{display:grid;gap:3px}.status-footer{min-height:58px;margin:0 12px;padding:15px 0 calc(20px + env(safe-area-inset-bottom));justify-content:center;font-size:10px}.refresh-toast{bottom:calc(18px + env(safe-area-inset-bottom))}.portfolio-manager-backdrop{padding:0;align-items:end}.portfolio-manager{width:100%;max-height:94vh;border-width:1px 0 0;border-radius:20px 20px 0 0}.manager-title-row{padding:19px 16px 15px}.manager-title-row h2{font-size:19px}.manager-title-row p{max-width:290px;font-size:10px}.manager-disabled{margin:14px 16px 0}.manager-section{padding:17px 16px}.manager-portfolio-row{padding:10px}.delete-confirm span{display:none}.manager-auth-section .manager-field{max-width:none}.lookup-result{grid-template-columns:minmax(0,1fr) 116px}.portfolio-name-input-row{grid-template-columns:minmax(0,1fr)}.lookup-result .add-holding-button{grid-column:1 / -1}.holding-editor-row{grid-template-columns:minmax(0,1fr) 108px 34px 34px;gap:6px;padding-left:10px}.manager-standalone-error{margin:0 16px 17px}.manager-actions{position:sticky;bottom:0;margin:0 -16px -17px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));background:var(--surface);border-top:1px solid var(--line)}.manager-actions button{flex:1}}@media(min-width:600px)and (max-width:899px){.summary-primary{min-height:214px;padding:28px 30px 26px}.summary-hero-row{display:flex}.summary-hero-copy{min-width:220px}.summary-sparkline{width:clamp(210px,34vw,290px);height:76px;margin:18px 13px 0 0}.summary-coverage{margin-top:9px;margin-right:13px;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.summary-secondary{margin:0;grid-template-columns:repeat(3,minmax(0,1fr));border-top:1px solid #e8ecf2}.summary-secondary.optional-collapsed{grid-template-columns:1fr}.summary-metric-column{min-height:116px;padding:18px 24px;display:grid;grid-template-columns:1fr;grid-template-rows:1fr 1fr}.summary-metric-column+.summary-metric-column{border-top:0;border-left:1px solid var(--line)}.summary-metric-sub{text-align:left}.summary-metric-sub>*{justify-self:start}}@media(max-width:360px){.brand{gap:9px}.brand h1{font-size:18px}.brand-copy small{font-size:10px}.portfolio-tabs button,.portfolio-tabs button.active{min-width:136px;flex-basis:136px}.summary-metric-column strong{font-size:15px}.summary-metric-sub strong{font-size:13px}.mobile-fund-metrics{gap:12px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
