:root{--navy:#163a5f;--blue:#1769aa;--blue-soft:#eaf3fa;--ink:#1f2d3d;--muted:#68788a;--line:#dce5ec;--surface:#fff;--bg:#f4f7fa}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Noto Sans TC",sans-serif;font-size:15px}.shell{width:min(1440px,calc(100% - 48px));margin:auto}.site-header{background:var(--navy);color:#fff;box-shadow:0 2px 8px #102b4425}.header-inner{height:64px;display:flex;align-items:center;justify-content:space-between}.brand{color:#fff;text-decoration:none;font-size:18px;font-weight:700;letter-spacing:.03em}.brand span{display:inline-grid;place-items:center;background:#fff;color:var(--navy);border-radius:5px;padding:4px 6px;margin-right:7px;font-size:13px}.site-header nav{display:flex;gap:20px}.site-header nav a{color:#dbe9f5;text-decoration:none;white-space:nowrap}main{padding:34px 0 50px}.page-heading,.detail-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:24px}.page-heading h1,.detail-heading h1{margin:2px 0 7px;font-size:30px;color:#173650}.page-heading p,.detail-heading p{margin:0;color:var(--muted)}.eyebrow{font-size:12px!important;color:var(--blue)!important;font-weight:700;letter-spacing:.12em}.stat{min-width:150px;background:linear-gradient(135deg,var(--navy),var(--blue));color:#fff;border-radius:10px;padding:18px 22px}.stat strong{font-size:30px;display:block}.stat span{color:#dbe9f5}.filter-panel,.holdings-filter{display:grid;grid-template-columns:1.5fr repeat(4,1fr) auto;gap:14px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:22px;box-shadow:0 2px 8px #21384e0a}label span{display:block;font-size:12px;font-weight:600;color:#52677b;margin-bottom:7px}input,select{width:100%;height:40px;border:1px solid #cbd7e0;border-radius:6px;background:#fff;padding:0 10px;color:var(--ink);font:inherit}input:focus,select:focus{outline:2px solid #b9d9ef;border-color:var(--blue)}button,.button{height:40px;border:0;border-radius:6px;background:var(--blue);color:#fff;padding:0 17px;display:inline-flex;align-items:center;justify-content:center;text-decoration:none;font:600 14px inherit;cursor:pointer}.filter-actions{display:flex;gap:8px}.button.secondary{background:#eef3f7;color:#36536d}.panel{background:var(--surface);border:1px solid var(--line);border-radius:10px;margin-bottom:24px;box-shadow:0 2px 10px #21384e0b;overflow:hidden}.panel-title{padding:17px 20px;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between}.panel-title h2{font-size:18px;margin:0;color:#193b58}.panel-title span{font-size:13px;color:var(--muted)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;min-width:1050px}th{background:#f3f7fa;color:#506477;text-align:left;font-size:12px;letter-spacing:.02em;padding:11px 13px;border-bottom:1px solid var(--line);white-space:nowrap}td{padding:12px 13px;border-bottom:1px solid #e7edf2;vertical-align:middle}tbody tr:hover{background:#f7fbfe}tbody tr:last-child td{border-bottom:0}.num{text-align:right;font-variant-numeric:tabular-nums}.etf-link{display:flex;gap:7px;flex-direction:column;color:var(--blue);text-decoration:none;min-width:155px}.etf-link span{color:#344b60}.tags{display:flex;gap:6px;flex-wrap:wrap;margin-top:7px}.tags span{display:inline-block;border-radius:99px;background:var(--blue-soft);color:#28628c;font-size:11px;padding:3px 8px}.tags span.completeness-complete{background:#e3f6ea;color:#1c7a4c}.tags span.completeness-partial{background:#fff2d9;color:#8a5a12}.tags span.completeness-unknown{background:#f1f1f3;color:#5b5f66}.empty{text-align:center!important;color:var(--muted);padding:32px!important}.back{display:inline-block;color:var(--blue);text-decoration:none;margin-bottom:22px}.detail-heading{align-items:center}.detail-heading h1 span{color:var(--blue);margin-right:8px}.profile-grid{display:grid;grid-template-columns:repeat(3,1fr);margin:0;padding:5px 20px 18px}.profile-grid div{padding:15px 12px;border-bottom:1px solid #e8eef3}.profile-grid dt{font-size:12px;color:var(--muted);margin-bottom:5px}.profile-grid dd{margin:0;font-weight:550;line-height:1.5}.profile-grid a{color:var(--blue)}.strategy{margin:0 32px 26px;padding:17px 19px;background:#f5f8fa;border-left:3px solid var(--blue)}.strategy h3{margin:0 0 7px;font-size:14px}.strategy p{margin:0;line-height:1.7;color:#42586b}.holdings-filter{grid-template-columns:230px minmax(260px,1fr) auto auto;margin:18px 20px}.notice{margin:0 20px 18px;padding:11px 14px;background:#fff7df;border:1px solid #edd58e;border-radius:6px;color:#765a0c}.metadata{display:grid;grid-template-columns:repeat(6,1fr);gap:1px;background:var(--line);border-block:1px solid var(--line)}.metadata div{background:#f8fafc;padding:14px 16px}.metadata span{display:block;color:var(--muted);font-size:11px;margin-bottom:5px}.metadata strong{font-size:14px}.security-name{min-width:180px}.weight{color:#14689f;font-weight:650}footer{border-top:1px solid var(--line);padding:24px 0;color:var(--muted);font-size:12px}
.relationship-search,.compare-search{display:flex;gap:12px;align-items:end;background:#fff;border:1px solid var(--line);border-radius:10px;padding:18px;margin-bottom:22px}.relationship-search label{width:min(520px,100%)}.primary-link{color:var(--blue);font-weight:650;text-decoration:none}.muted{color:var(--muted)}.symbol-list{display:flex;gap:7px;flex-wrap:wrap}.symbol-list a{background:var(--blue-soft);border-radius:99px;color:#28628c;font-size:12px;padding:4px 9px;text-decoration:none}.relationship-table{min-width:780px}.etf-link.compact{gap:3px;min-width:140px}.relationship-cards{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:22px}.relationship-cards>div{background:#fff;border:1px solid var(--line);border-radius:9px;padding:17px 19px;box-shadow:0 2px 8px #21384e0a}.relationship-cards span,.relationship-cards small{display:block;color:var(--muted);font-size:12px}.relationship-cards strong{display:block;color:var(--navy);font-size:22px;margin:5px 0}.relationship-cards small{line-height:1.5}.compare-search label{width:220px}.compare-search .versus{height:40px;display:grid;place-items:center;color:var(--muted);font-weight:700}.comparison-heading{display:grid;grid-template-columns:1fr auto 1fr;gap:22px;align-items:center;background:linear-gradient(135deg,#eef6fb,#fff);border:1px solid var(--line);border-radius:10px;padding:20px 24px;margin-bottom:18px}.comparison-heading>div{display:flex;flex-direction:column;gap:4px}.comparison-heading>div:last-child{text-align:right}.comparison-heading strong{font-size:25px;color:var(--blue)}.comparison-heading span{font-size:17px;font-weight:600}.comparison-heading small{color:var(--muted)}.comparison-heading b{color:var(--muted)}.comparison-columns{display:grid;grid-template-columns:1fr 1fr;gap:18px}.compact-results{max-height:430px;overflow:auto}.compact-results>div{display:grid;grid-template-columns:100px 1fr auto;gap:12px;padding:10px 18px;border-bottom:1px solid #e7edf2}.compact-results span,.compact-results small{color:var(--muted)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:18px;margin-bottom:12px}.section-heading h2{margin:0;color:var(--navy);font-size:19px}.section-heading span{color:var(--muted);font-size:12px}.popular-relationships{margin-bottom:24px}.ranking-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.ranking-panel{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:hidden;box-shadow:0 2px 8px #21384e0a}.ranking-panel h3{margin:0;padding:14px 16px;background:#f3f7fa;border-bottom:1px solid var(--line);color:#193b58;font-size:15px}.ranking-panel ol{list-style:none;margin:0;padding:0}.ranking-panel li{border-bottom:1px solid #e7edf2}.ranking-panel li:last-child{border-bottom:0}.ranking-panel a{display:grid;grid-template-columns:25px minmax(0,1fr) auto;gap:8px;align-items:center;padding:9px 12px;text-decoration:none;color:var(--ink)}.ranking-panel a:hover{background:#f7fbfe}.ranking-panel b{color:var(--muted);font-size:12px;text-align:center}.ranking-panel a span{min-width:0}.ranking-panel strong,.ranking-panel small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.ranking-panel strong{font-size:13px;color:#285675}.ranking-panel small{font-size:10px;color:var(--muted);margin-top:2px}.ranking-panel em{font-style:normal;font-weight:700;color:var(--blue);font-size:12px;white-space:nowrap}.ranking-empty{padding:24px 16px;color:var(--muted);font-size:12px;line-height:1.6}.sort-link{color:#506477;text-decoration:none}.sort-link.active{color:var(--blue);font-weight:750}
.holdings-cost-table{min-width:1230px}.holdings-cost-table .security-name strong,.holdings-cost-table .security-name span,.cost-state strong,.cost-state span{display:block}.holdings-cost-table .security-name span,.cost-state span{font-size:11px;color:var(--muted);margin-top:3px}.cost-value{font-weight:700;color:var(--navy)}.positive{color:#b94c33;font-weight:650}.negative{color:#24715d;font-weight:650}.history-links{display:flex;flex-direction:column;gap:5px}.trend-link{color:var(--blue);text-decoration:none;white-space:nowrap}.cost-disclaimer{margin:16px 20px;padding:12px 14px;border-radius:7px;background:#fff8e7;border:1px solid #eed99f;color:#705814;line-height:1.6}.cost-history-table{min-width:980px}.cost-history-heading{margin-bottom:18px}
@media(max-width:1050px){.filter-panel{grid-template-columns:repeat(2,1fr)}.filter-actions{grid-column:span 2}.metadata{grid-template-columns:repeat(3,1fr)}.relationship-cards{grid-template-columns:repeat(2,1fr)}.ranking-grid{grid-template-columns:1fr}}@media(max-width:700px){.shell{width:min(100% - 24px,1440px)}main{padding-top:22px}.header-inner{height:auto;min-height:64px;align-items:flex-start;padding-block:14px;gap:14px}.site-header nav{gap:7px 14px;flex-wrap:wrap;justify-content:flex-end}.page-heading,.detail-heading{align-items:flex-start;flex-direction:column}.stat{width:100%}.filter-panel,.holdings-filter,.relationship-search,.compare-search{grid-template-columns:1fr;display:grid}.filter-actions{grid-column:auto}.profile-grid{grid-template-columns:1fr}.metadata{grid-template-columns:repeat(2,1fr)}.page-heading h1,.detail-heading h1{font-size:25px}.relationship-cards,.comparison-columns{grid-template-columns:1fr}.comparison-heading{grid-template-columns:1fr}.comparison-heading>div:last-child{text-align:left}.comparison-heading b{display:none}.compare-search label{width:100%}.compare-search .versus{display:none}.section-heading{align-items:flex-start;flex-direction:column;gap:4px}.holdings .table-wrap,.cost-history-wrap{overflow:visible;padding:10px}.holdings-cost-table,.cost-history-table{min-width:0}.holdings-cost-table thead,.cost-history-table thead{display:none}.holdings-cost-table tbody,.cost-history-table tbody{display:grid;gap:10px}.holdings-cost-table tr,.cost-history-table tr{display:grid;grid-template-columns:1fr 1fr;border:1px solid var(--line);border-radius:8px;padding:8px 11px;background:#fff}.holdings-cost-table td,.cost-history-table td{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;text-align:right!important;padding:8px 5px;border-bottom:1px solid #edf1f4}.holdings-cost-table td::before,.cost-history-table td::before{content:attr(data-label);color:var(--muted);font-size:11px;font-weight:600;text-align:left}.holdings-cost-table td.security-name,.holdings-cost-table td.cost-state,.holdings-cost-table td:last-child,.cost-history-table td.cost-state{grid-column:1/-1}.holdings-cost-table td.secondary-cell{display:none}.holdings-cost-table td:last-child,.cost-history-table td:last-child{border-bottom:0}.history-links{align-items:flex-end}.cost-disclaimer{margin:12px}.cost-history-heading h1{font-size:22px}}

/* ETF list: compact screener-style desktop table (full width, fixed
   proportional columns, no horizontal scroll) + card layout on mobile. */
.etf-table-wrap{overflow:visible}
.etf-table{table-layout:fixed;width:100%;min-width:0}
.etf-table th{padding:8px 10px;white-space:normal}
.etf-table td{padding:6px 10px;border-bottom:1px solid #f1f4f7;vertical-align:top}
.etf-table tbody tr:nth-child(even){background:#fafcfe}
.etf-table .etf-link{gap:1px;min-width:0}
.etf-table .tags{margin-top:3px;gap:4px}
.etf-table .stack{font-size:12px;color:#42586b}
.etf-table .stack span{display:block;overflow-wrap:break-word}
.etf-table .stack span+span{margin-top:2px}
.etf-table .num-stack{font-variant-numeric:tabular-nums}
.manager-line{margin-top:3px;font-size:10.5px;color:var(--muted)}
.etf-cards{display:none}
.mobile-sort{display:none}
/* Sort headers: reuse the project's existing .sort-link toggle for single
   fields; grouped fields open a compact <details> popover -- no JS needed
   to open/close, a small script only auto-closes it on outside click. */
th .sort-link{color:#506477;font-size:12px;letter-spacing:.02em}
th .sort-link.active{color:var(--blue)}
.sort-menu{position:relative;display:inline-block;font-size:12px}
.sort-menu summary{cursor:pointer;list-style:none;color:#506477;user-select:none}
.sort-menu summary::-webkit-details-marker{display:none}
.sort-menu .sort-arrow{color:var(--blue);font-weight:700}
.sort-menu .sort-caret{color:#9fb0c0;font-size:10px}
.sort-menu[open] summary{color:var(--blue)}
.sort-menu-panel{position:absolute;top:calc(100% + 6px);left:0;z-index:30;min-width:190px;background:#fff;border:1px solid var(--line);border-radius:8px;box-shadow:0 8px 24px #1c2e410f,0 2px 8px #1c2e4114;padding:6px;display:flex;flex-direction:column;gap:1px}
.sort-menu-panel a{display:block;padding:7px 10px;border-radius:5px;color:#344b60;text-decoration:none;font-size:12.5px;font-weight:500;white-space:nowrap}
.sort-menu-panel a:hover{background:#f2f7fb}
.sort-menu-panel a.active{color:var(--blue);font-weight:700;background:var(--blue-soft)}
@media(max-width:700px){
  .etf-table-wrap{display:none}
  .mobile-sort{display:block;margin:0 16px 12px}
  .mobile-sort .sort-menu{display:block;font-size:13px}
  .mobile-sort summary{padding:9px 12px;background:#fff;border:1px solid var(--line);border-radius:7px;color:#344b60;font-weight:600}
  .mobile-sort .sort-menu-panel{left:0;right:0;min-width:0;width:100%}
  .etf-cards{display:grid;gap:10px;list-style:none;margin:0;padding:16px}
  .etf-card{background:#fff;border:1px solid var(--line);border-radius:8px;padding:14px 16px}
  .etf-card .etf-link{min-width:0}
  .card-meta{font-size:12px;color:var(--muted);margin-top:4px;line-height:1.5}
  .metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:6px;margin-top:11px;padding-top:11px;border-top:1px solid #eef1f4}
  .metric-grid div{display:flex;flex-direction:column;gap:2px;min-width:0}
  .metric-grid span{font-size:10.5px;color:var(--muted)}
  .metric-grid strong{font-size:13px;color:var(--navy);font-variant-numeric:tabular-nums;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .card-dates{display:flex;flex-direction:column;gap:3px;margin-top:11px;padding-top:11px;border-top:1px solid #eef1f4;font-size:11.5px;color:#42586b}
  .etf-cards li.empty{background:none;border:0;text-align:center;color:var(--muted);padding:32px}
}

/* ETF detail secondary/basic-info grid: compact everywhere, 2 columns on
   mobile so short fields share a row instead of one-per-row. */
.profile-grid.profile-grid-secondary{grid-template-columns:repeat(4,1fr);grid-auto-flow:dense;padding:2px 16px 6px}
.profile-grid.profile-grid-secondary div{padding:6px 10px}
.profile-grid.profile-grid-secondary dt{margin-bottom:2px}
.profile-grid.profile-grid-secondary .wide{grid-column:span 2}
@media(max-width:700px){
  .profile-grid.profile-grid-secondary{grid-template-columns:repeat(2,1fr);padding:2px 10px 6px}
  .profile-grid.profile-grid-secondary div{padding:6px 8px}
}

/* ETF list / ETF performance tab switcher. */
.tab-nav{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:18px}
.tab-nav a{padding:9px 16px;border-radius:7px;text-decoration:none;color:#52677b;font-weight:600;font-size:14px;background:#fff;border:1px solid var(--line)}
.tab-nav a.active{background:var(--blue);color:#fff;border-color:var(--blue)}
.tab-nav a:hover:not(.active){background:var(--blue-soft)}

/* ETF Performance table: auto layout so the identity column can be wide and
   the 7 return columns stay narrow; scrolls horizontally on very small
   screens rather than squeezing percentages unreadably thin. */
.performance-table{min-width:640px}
.performance-table .num{white-space:nowrap}

/* ETF 經理人 list: keep 總規模 (e.g. "24,294 億") on one line; the auto
   table layout takes the extra room from the flexible/wrapping 管理 ETF
   pill list rather than squeezing this column. */
.relationship-table .aum-col{white-space:nowrap}

/* 股票反查 ETF: compact inline filter dropdowns beside the 熱門關聯查詢
   section title and its ranking-card titles. */
.section-heading-controls{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.inline-filter{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap}
.ranking-panel-title{margin:0;padding:14px 16px;background:#f3f7fa;border-bottom:1px solid var(--line);display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}
.ranking-panel-title h3{margin:0;padding:0;background:none;border:0;font-size:15px;color:#193b58}
.ranking-panel-controls{display:flex;gap:6px;flex-wrap:wrap}
.ranking-panel-title select,.inline-filter select{width:auto;height:26px;padding:0 6px;font-size:11px;border-radius:5px;border:1px solid #cbd7e0;background:#fff}

/* 股票反查 Lazy Ranking V1 -- one shared ranking-row layout (generalized
   from the original 最近剛開始被 ETF 買進-only hover/tap popover to all 6
   rankings) plus the tap/click expandable ETF-contributor drill-down. */
.ranking-row{position:relative;display:grid;grid-template-columns:25px minmax(0,1fr) auto;gap:8px;align-items:center;padding:9px 12px}
.ranking-row a{display:contents;text-decoration:none;color:var(--ink)}
.ranking-row b{color:var(--muted);font-size:12px;text-align:center}
.ranking-row a span{min-width:0}
.ranking-row strong,.ranking-row a small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ranking-row strong{font-size:13px;color:#285675}
.ranking-row a small{font-size:10px;color:var(--muted);margin-top:2px}
.ranking-detail-trigger{font:inherit;font-weight:700;color:var(--blue);font-size:12px;white-space:nowrap;background:none;border:0;padding:0;cursor:pointer}
.ranking-detail-trigger:hover,.ranking-detail-trigger[aria-expanded="true"]{text-decoration:underline}
.ranking-detail-panel{grid-column:1/-1;margin-top:8px;padding-top:8px;border-top:1px solid var(--line)}
.ranking-detail-panel[hidden]{display:none}
.ranking-detail-loading,.ranking-detail-empty,.ranking-detail-note{font-size:12px;color:var(--muted);padding:4px 0}
.ranking-detail-error{font-size:12px;color:#b23c3c;padding:4px 0}
.ranking-detail-retry,.ranking-retry{font:inherit;font-weight:700;color:var(--blue);background:none;border:0;padding:0;cursor:pointer;text-decoration:underline}
.ranking-status{padding:14px 16px;font-size:12px;color:var(--muted)}
