/**
 * terminal.css
 * 「YeeFinance Institutional Terminal」設計規範（2026-10，依 Stitch 稿 DESIGN.md）疊在既有樣式（site.css／index.html 內嵌樣式／obsidian.css）之上，
 * 要放在每頁 <head> 最後面載入，同樣的選擇器才蓋得過去。這一層只調整「語彙」，不動版面結構：
 *   - 字型：介面 Hanken Grotesk（中文落到 Noto Sans TC）、數字與代號 JetBrains Mono（tabular-nums）。
 *   - 色彩與形狀：主要按鈕深藍黑 #0F172A、卡片 8px 圓角＋1px 細邊＋低陰影、輸入框 4px 圓角＋天藍焦點外框、頁籤／導覽目前頁為深藍黑藥丸。
 *   - 表格：斑馬紋、數字欄右對齊等寬。台股慣例不變：紅漲綠跌。
 * 日間模式用規範的色票；夜間模式沿用既有夜間色票（規範沒有夜間版），所以主要按鈕等會跟著 --brass 走（見下面變數）。
 */
:root{
  --font-ui:'Hanken Grotesk','Inter','Noto Sans TC',sans-serif;
  --font-num:'JetBrains Mono',ui-monospace,monospace;
  --it-primary:#0f172a;
  --it-primary-hover:#1e293b;
  --it-primary-ink:#ffffff;
  --it-card-shadow:0 1px 3px 0 rgba(15,23,42,.04),0 1px 2px -1px rgba(15,23,42,.03);
  --it-float-shadow:0 4px 6px -1px rgba(15,23,42,.06),0 2px 4px -2px rgba(15,23,42,.04);
  --it-focus:rgba(2,132,199,.2);
}
/* 夜間：主要按鈕沿用既有強調色（天藍），避免深藍黑在深色底上看不見 */
:root[data-theme="dark"]{
  --it-primary:var(--brass);--it-primary-hover:var(--brass-hover);--it-primary-ink:var(--accent-ink);
  --it-card-shadow:none;--it-float-shadow:0 4px 12px rgba(0,0,0,.35);--it-focus:rgba(56,189,248,.25);
}
@media (prefers-color-scheme: dark){
  :root:not([data-theme="light"]){
    --it-primary:var(--brass);--it-primary-hover:var(--brass-hover);--it-primary-ink:var(--accent-ink);
    --it-card-shadow:none;--it-float-shadow:0 4px 12px rgba(0,0,0,.35);--it-focus:rgba(56,189,248,.25);
  }
}

/* ---------- 字型 ---------- */
body{font-family:var(--font-ui);}
body.ob{font-family:var(--font-ui);}
.brand-name,.card-title,.page-title h1,.kpi-value,body .login-panel h3,body .pwauth-panel h3{font-family:var(--font-ui);letter-spacing:-.01em;}
.brand-en{font-family:var(--font-ui);}
/* 數字、代號、價格一律等寬＋tabular-nums（規範：Quantitative Engine） */
.num,td.num,th.num,.code,.price,.big,.kpi-value,.stat-num,.mono,[class*="-num"],code,
.wl-price,.wl-change,.company-price,.cp-price,.metric-value,.tile-value,.quote-price{
  font-family:var(--font-num);font-variant-numeric:tabular-nums;
}
.kpi-value{letter-spacing:-.03em;}

/* ---------- 導覽：目前頁為深藍黑藥丸 ---------- */
.site-nav a{border-radius:6px;font-weight:500;}
.site-nav a.active{background:var(--it-primary);color:var(--it-primary-ink);}
.site-nav a:hover{background:var(--panel-2);}
.site-nav a.active:hover{background:var(--it-primary);}

/* ---------- 按鈕 ---------- */
.btn,body .btn,.btn-sm,.btn-lg{border-radius:4px;font-family:var(--font-ui);}
.btn{border-color:var(--hairline);background:var(--panel);color:var(--bone-dim);}
.btn:hover{background:var(--bg);border-color:#cbd5e1;color:var(--bone);}
:root[data-theme="dark"] .btn:hover{border-color:var(--brass);color:var(--brass);background:var(--panel-2);}
@media (prefers-color-scheme: dark){:root:not([data-theme="light"]) .btn:hover{border-color:var(--brass);color:var(--brass);background:var(--panel-2);}}
.btn-primary,body .btn-primary{background:var(--it-primary);border-color:var(--it-primary);color:var(--it-primary-ink);}
.btn-primary:hover,body .btn-primary:hover{background:var(--it-primary-hover);border-color:var(--it-primary-hover);color:var(--it-primary-ink);}
.btn-ghost{background:var(--panel-2);border-color:transparent;}

/* ---------- 卡片、輸入框 ---------- */
.card,.kpi{border-radius:8px;box-shadow:var(--it-card-shadow);}
.global-search{border-radius:8px;box-shadow:var(--it-card-shadow);}
.global-search input{border-radius:4px;font-family:var(--font-ui);}
input[type="text"],input[type="search"],input[type="number"],input[type="email"],input[type="password"],input[type="date"],select,textarea{border-radius:4px;}
input:focus-visible,select:focus-visible,textarea:focus-visible,.global-search input:focus{
  outline:none;border-color:var(--brass);box-shadow:0 0 0 2px var(--it-focus);
}
.badge{border-radius:4px;}

/* ---------- 表格：斑馬紋、緊湊、數字欄右對齊 ---------- */
table.data-table,.table-wrap table{border-collapse:collapse;}
table.data-table tbody tr:nth-child(even) td,.table-wrap table tbody tr:nth-child(even) td{background:var(--bg);}
table.data-table th,.table-wrap table th{font-weight:600;letter-spacing:.02em;}
table.data-table td.num,table.data-table th.num,.table-wrap td.num,.table-wrap th.num{text-align:right;}

/* ---------- 頁首標題列（麵包屑下方的大標＋徽章） ---------- */
.page-title h1{font-size:var(--fs-display);font-weight:700;}
.page-sub{color:var(--faint);}

/* ---------- 頁尾：四欄（由 siteFooter.js 產生） ---------- */
.site-footer .sf-grid{display:grid;grid-template-columns:minmax(220px,1.4fr) repeat(3,minmax(140px,1fr));gap:28px 32px;align-items:start;margin-bottom:20px;}
.site-footer .sf-brand p{margin:10px 0 0;color:var(--faint);font-size:var(--fs-sm);line-height:1.7;max-width:46ch;}
.site-footer .sf-feed{display:inline-flex;align-items:center;gap:6px;margin-top:12px;padding:4px 10px;border:1px solid var(--hairline);border-radius:4px;background:var(--panel);font-family:var(--font-num);font-size:var(--fs-xs);color:var(--bone-dim);}
.site-footer .sf-col h4{margin:0 0 10px;font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--bone);}
.site-footer .sf-col a{display:block;padding:3px 0;color:var(--faint);text-decoration:none;font-size:var(--fs-sm);}
.site-footer .sf-col a:hover{color:var(--brass);}
.site-footer .sf-legal{padding:12px 14px;border:1px solid var(--hairline);border-radius:8px;background:var(--panel);font-size:var(--fs-sm);line-height:1.7;color:var(--faint);}
.site-footer .sf-legal b{color:var(--bone-dim);}
@media (max-width:900px){.site-footer .sf-grid{grid-template-columns:1fr 1fr;}.site-footer .sf-brand{grid-column:1 / -1;}}
@media (max-width:520px){.site-footer .sf-grid{grid-template-columns:1fr;}}
.site-footer .sf-col.site-footer-links{display:block;gap:0;}
/* 手機：底部已有導覽列，頁尾只留品牌與合規連結，不要拉得太長 */
@media (max-width:640px){
  .site-footer .sf-col:not(.site-footer-links){display:none;}
  .site-footer .sf-grid{grid-template-columns:1fr;gap:16px;}
  .site-footer .sf-brand p{font-size:var(--fs-xs);}
}

/* ---------- 個股頁：當日行情列（開／高／低／昨收／成交量…） ---------- */
.quote-strip{
  display:flex;flex-wrap:wrap;align-items:stretch;gap:0;margin:-4px 0 14px;
  background:var(--panel);border:1px solid var(--hairline);border-radius:8px;box-shadow:var(--it-card-shadow);overflow:hidden;
}
.quote-strip[hidden]{display:none;}
.quote-strip .qs-cell{flex:1 1 110px;display:flex;flex-direction:column;gap:3px;padding:10px 16px;border-right:1px solid var(--hairline);min-width:0;}
.quote-strip .qs-label{font-size:var(--fs-xs);font-weight:600;letter-spacing:.04em;color:var(--faint);}
.quote-strip .qs-value{font-family:var(--font-num);font-variant-numeric:tabular-nums;font-size:var(--fs-lg);font-weight:600;color:var(--bone);}
.quote-strip .qs-value.up{color:var(--up);}
.quote-strip .qs-value.down{color:var(--down);}
.quote-strip .qs-date{flex:1 1 100%;padding:6px 16px;font-size:var(--fs-xs);color:var(--faint);background:var(--bg);border-top:1px solid var(--hairline);}
@media (max-width:640px){.quote-strip .qs-cell{flex:1 1 30%;padding:8px 12px;border-bottom:1px solid var(--hairline);}}

/* ---------- 行事曆：月曆格＋選取日期側欄 ---------- */
.cal-monthbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;margin:0 0 12px;}
.cal-nav{display:flex;align-items:center;gap:8px;}
.cal-month-label{font-family:var(--font-num);font-size:var(--fs-xl);min-width:8.5em;text-align:center;}
.cal-viewseg{display:flex;border:1px solid var(--hairline);border-radius:4px;overflow:hidden;}
.cal-viewseg button{padding:6px 14px;border:0;background:var(--panel);color:var(--bone-dim);font:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer;}
.cal-viewseg button.active{background:var(--it-primary);color:var(--it-primary-ink);}
.cal-month-wrap{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:16px;align-items:start;}
.cal-month-wrap[hidden]{display:none;}
.cal-grid-wrap{overflow-x:auto;}
.cal-grid{display:grid;grid-template-columns:repeat(7,minmax(92px,1fr));border-top:1px solid var(--hairline);border-left:1px solid var(--hairline);min-width:660px;}
.cal-wd{padding:8px 6px;text-align:center;font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;color:var(--faint);background:var(--bg);border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);}
.cal-cell{min-height:92px;display:flex;flex-direction:column;align-items:stretch;gap:4px;padding:6px;text-align:left;background:var(--panel);border:0;border-right:1px solid var(--hairline);border-bottom:1px solid var(--hairline);cursor:pointer;font:inherit;color:var(--bone);}
.cal-cell.cal-empty{background:var(--bg);cursor:default;}
.cal-cell.cal-weekend{background:var(--bg);}
.cal-cell:hover:not(.cal-empty){background:var(--panel-2);}
.cal-cell.cal-selected{outline:2px solid var(--brass);outline-offset:-2px;}
.cal-dnum{font-family:var(--font-num);font-size:var(--fs-sm);font-weight:700;color:var(--bone-dim);}
.cal-today .cal-dnum{display:inline-flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:4px;background:var(--it-primary);color:var(--it-primary-ink);}
.cal-chips-col{display:flex;flex-direction:column;gap:3px;min-width:0;}
.cal-chip{display:block;padding:1px 6px;border-radius:3px;font-family:var(--font-num);font-size:11px;line-height:1.5;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.cal-chip-ex{color:var(--up);background:color-mix(in srgb,var(--up) 12%,transparent);}
.cal-chip-conf{color:#0369a1;background:color-mix(in srgb,#0284c7 12%,transparent);}
.cal-chip-earn{color:var(--down);background:color-mix(in srgb,var(--down) 12%,transparent);}
.cal-chip-meet{color:#7c3aed;background:color-mix(in srgb,#7c3aed 12%,transparent);}
.cal-more{font-size:11px;color:var(--faint);}
.cal-dlmark{font-size:10px;color:var(--faint);}
.cal-side{border:1px solid var(--hairline);border-radius:8px;background:var(--panel);padding:14px 16px;box-shadow:var(--it-card-shadow);max-height:760px;overflow:auto;}
.cal-side-date{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:0 0 10px;font-size:var(--fs-lg);}
.cal-side-date strong{font-family:var(--font-num);}
.cal-side-badge{padding:2px 8px;border-radius:3px;background:var(--it-primary);color:var(--it-primary-ink);font-size:var(--fs-xs);font-weight:700;letter-spacing:.04em;}
.cal-side-h{margin:14px 0 6px;font-size:var(--fs-sm);font-weight:700;color:var(--bone);}
.cal-side-h small{margin-left:6px;font-weight:400;color:var(--faint);}
@media (max-width:980px){.cal-month-wrap{grid-template-columns:1fr;}}
.cal-side .cal-row{display:flex;flex-wrap:wrap;align-items:baseline;gap:2px 10px;padding:8px 10px;margin:0 0 6px;border-radius:6px;background:var(--bg);}
.cal-side .cal-row > a,.cal-side .cal-row > span:first-child{font-family:var(--font-num);font-weight:700;min-width:4.2em;}
.cal-side .cal-row > span{white-space:normal;}
.cal-side .cal-row .r{margin-left:auto;}

/* ---------- 估值試算：DCF 逐年表與敏感度矩陣 ---------- */
.val-sub{margin:16px 0 8px;font-size:var(--fs-md);font-weight:700;color:var(--bone);}
.val-matrix-wrap{overflow-x:auto;}
.val-matrix{width:100%;border-collapse:collapse;font-size:var(--fs-sm);}
.val-matrix th,.val-matrix td{padding:8px 12px;border:1px solid var(--hairline);text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums;}
.val-matrix thead th{background:var(--bg);color:var(--faint);font-weight:700;}
.val-matrix th:first-child,.val-matrix td:first-child{text-align:left;font-family:var(--font-ui);}
.val-matrix .mx-base{color:var(--brass);}
.val-matrix .mx-center{outline:2px solid var(--brass);outline-offset:-2px;font-weight:700;}
.val-matrix .mx-hi,.val-legend .mx-hi{background:color-mix(in srgb,var(--up) 14%,transparent);}
.val-matrix .mx-near,.val-legend .mx-near{background:var(--panel-2);}
.val-matrix .mx-lo,.val-legend .mx-lo{background:color-mix(in srgb,#0284c7 12%,transparent);}
.val-matrix .mx-na{color:var(--faint);}
.val-legend{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 0;font-size:var(--fs-xs);}
.val-legend span{padding:2px 8px;border-radius:3px;}

/* 舊的 body.ob（ETF 專區、投資組合）樣式權重比較高，導覽目前頁與主要按鈕要另外蓋 */
body.ob .site-nav a.active{background:var(--it-primary);color:var(--it-primary-ink);}
body.ob .btn-primary{background:var(--it-primary);border-color:var(--it-primary);color:var(--it-primary-ink);}
body.ob .btn-primary:hover{background:var(--it-primary-hover);border-color:var(--it-primary-hover);}

/* ---------- 頁首：台股收盤資料日期標籤 ---------- */
.mkt-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--hairline);border-radius:999px;background:var(--panel);font-family:var(--font-num);font-size:var(--fs-xs);color:var(--bone-dim);white-space:nowrap;}
.mkt-dot{width:7px;height:7px;border-radius:50%;background:var(--down);display:inline-block;}
@media (max-width:760px){.mkt-chip{display:none;}}

/* ---------- 導覽分組（siteNav.js）：分析工具／我的／市場資訊 ---------- */
.site-nav.grouped{gap:4px;flex-wrap:wrap;}
.nav-group{position:relative;}
.nav-group-btn{display:inline-flex;align-items:center;gap:2px;padding:8px 14px;border:0;border-radius:6px;background:transparent;color:var(--bone-dim);font:inherit;font-weight:500;cursor:pointer;}
.nav-group-btn .material-symbols-outlined{font-size:18px;transition:transform .15s;}
.nav-group.open .nav-group-btn .material-symbols-outlined{transform:rotate(180deg);}
.nav-group-btn:hover,.nav-group.open .nav-group-btn{background:var(--panel-2);color:var(--bone);}
.nav-group-btn.has-active{color:var(--it-primary);font-weight:700;box-shadow:inset 0 -2px 0 var(--it-primary);border-radius:6px 6px 0 0;}
.nav-panel{display:none;position:absolute;top:100%;left:0;z-index:50;min-width:176px;padding:6px;background:var(--panel);border:1px solid var(--hairline);border-radius:8px;box-shadow:0 8px 24px rgba(15,23,42,.14);flex-direction:column;gap:2px;}
.nav-group.open .nav-panel{display:flex;}
.nav-panel a{display:block;padding:8px 12px;white-space:nowrap;}
.nav-panel a.active{background:var(--panel-2);color:var(--it-primary);font-weight:700;}

/* ---------- 首頁「今日市場」 ---------- */
.market-home{margin:0 0 20px;}
.mh-head{display:flex;align-items:baseline;gap:12px;margin-bottom:10px;}
.mh-head h2{margin:0;font-size:var(--fs-xl,20px);font-weight:700;color:var(--bone);}
.mh-date{font-family:var(--font-num);font-size:var(--fs-xs);color:var(--faint);}
.mh-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;}
.mh-card{background:var(--panel);border:1px solid var(--hairline);border-radius:8px;padding:14px 16px;}
.mh-card h3{margin:0 0 8px;font-size:var(--fs-md);font-weight:700;color:var(--bone);display:flex;justify-content:space-between;align-items:baseline;gap:8px;}
.mh-card h3 small{font-size:var(--fs-xs);font-weight:400;color:var(--faint);}
.mh-list{list-style:none;margin:0;padding:0;}
.mh-list a{display:grid;grid-template-columns:1fr auto 74px;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--hairline);color:var(--bone);text-decoration:none;font-size:var(--fs-sm);}
.mh-list li:first-child a{border-top:0;}
.mh-list a:hover .mh-name{color:var(--brass);}
.mh-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mh-name b{font-family:var(--font-num);margin-right:4px;}
.mh-px,.mh-chg{font-family:var(--font-num);font-variant-numeric:tabular-nums;text-align:right;}
.mh-chg{font-weight:700;}
.mh-up{color:var(--up);}
.mh-down{color:var(--down);}
.mh-nums{display:flex;gap:16px;font-size:var(--fs-sm);color:var(--bone-dim);margin:10px 0;}
.mh-nums b{font-family:var(--font-num);font-size:26px;display:block;line-height:1.1;}
.mh-bar{display:flex;height:8px;border-radius:4px;overflow:hidden;background:var(--panel-2);}
.mh-bar i{display:block;height:100%;}
.mh-bar-up{background:var(--up);}
.mh-bar-flat{background:var(--faint);opacity:.5;}
.mh-bar-down{background:var(--down);}
.mh-total{margin:12px 0 0;font-size:var(--fs-sm);color:var(--bone-dim);}
.mh-total b{font-family:var(--font-num);color:var(--bone);font-size:var(--fs-md);}
.mh-more{display:inline-block;margin-top:8px;font-size:var(--fs-sm);color:var(--brass);text-decoration:none;}
.mh-note{margin:10px 0 0;font-size:var(--fs-xs);color:var(--faint);}

/* ---------- 個股頁數字磚：關鍵四項（EPS／本益比／ROE／現金殖利率）放大排第一排，其餘縮小 ---------- */
.stat-tiles .cell{border:1px solid var(--hairline);border-radius:8px;background:var(--panel);}
.stat-tiles .cell.key{order:0;}
.stat-tiles .cell.key .value{font-size:calc(var(--fs-3xl) * 1.5);line-height:1.1;font-weight:700;}
.stat-tiles .cell.key .label{font-weight:700;color:var(--bone);}
.stat-tiles .cell:not(.key){order:1;}
.stat-tiles .cell:not(.key) .value{font-size:var(--fs-xl);font-weight:600;}
@container (min-width:560px){ .stat-tiles{grid-template-columns:repeat(4,minmax(0,1fr));} }
@container (min-width:1000px){ .stat-tiles{grid-template-columns:repeat(4,minmax(0,1fr));} }

/* ---------- 自選清單空狀態引導 ---------- */
.wl-empty-guide{text-align:left;padding:8px 4px;}
.wl-empty-guide h3{margin:0 0 6px;font-size:var(--fs-xl);color:var(--bone);}
.wl-empty-guide p{margin:0 0 14px;color:var(--bone-dim);}
.wl-empty-presets{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:12px;}
.wl-preset{display:flex;flex-direction:column;gap:4px;align-items:flex-start;padding:14px 16px;text-align:left;font:inherit;color:var(--bone);background:var(--panel);border:1px solid var(--hairline);border-radius:8px;cursor:pointer;transition:border-color .15s,transform .15s,box-shadow .15s;}
.wl-preset:hover{border-color:var(--it-primary);transform:translateY(-2px);box-shadow:0 6px 16px rgba(15,23,42,.1);}
.wl-preset b{font-size:var(--fs-md);}
.wl-preset span{font-size:var(--fs-sm);color:var(--bone-dim);}
.wl-preset em{font-style:normal;font-family:var(--font-num);font-size:var(--fs-xs);color:var(--faint);}
.wl-preset i{font-style:normal;margin-top:6px;font-size:var(--fs-sm);font-weight:700;color:var(--brass);}

/* ---------- 窄螢幕：寬表格橫向捲動時凍結第一欄（科目／代號名稱），捲到右邊還看得到在看哪一列 ---------- */
@media (max-width:900px){
  .table-scroll table th:first-child,.table-scroll table td:first-child,
  .table-wrap table th:first-child,.table-wrap table td:first-child{position:sticky;left:0;z-index:2;background:var(--panel);box-shadow:1px 0 0 var(--hairline);}
  .table-scroll table tbody tr:nth-child(even) td:first-child,
  .table-wrap table tbody tr:nth-child(even) td:first-child{background:var(--bg);}
  .table-scroll table thead th:first-child,.table-wrap table thead th:first-child{background:var(--bg);z-index:3;}
}

/* ---------- 微互動：按鈕按下回饋、卡片懸停、連結過渡（尊重減少動態設定） ---------- */
@media (prefers-reduced-motion:no-preference){
  .btn,.star-btn,button.hot-chip,.hot-chip,.wl-preset,.cal-chip,.mh-card{transition:transform .12s,box-shadow .15s,background-color .15s,border-color .15s;}
  .btn:active,.star-btn:active,.hot-chip:active{transform:scale(.97);}
  .mh-card:hover,.insights-card:hover,.dash-card:hover{box-shadow:0 4px 14px rgba(15,23,42,.08);}
  .mh-list a:hover{background:var(--panel-2);margin:0 -8px;padding-left:8px;padding-right:8px;border-radius:4px;}
  @keyframes tw-pop{0%{transform:scale(1)}40%{transform:scale(1.25)}100%{transform:scale(1)}}
  .star-btn.just-added{animation:tw-pop .35s;}
  .toast-in{animation:tw-toast .25s ease-out;}
  @keyframes tw-toast{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
}

/* ---------- 首頁：我的投資組合摘要卡 ---------- */
.pf-home{display:flex;flex-wrap:wrap;align-items:center;gap:8px 28px;margin:0 0 16px;padding:14px 18px;background:var(--panel);border:1px solid var(--hairline);border-left:4px solid var(--it-primary);border-radius:8px;color:var(--bone);text-decoration:none;}
.pf-home[hidden]{display:none;}
.pf-home:hover{border-color:var(--it-primary);box-shadow:0 4px 14px rgba(15,23,42,.1);}
.pf-home-label{font-weight:700;font-size:var(--fs-md);display:flex;flex-direction:column;}
.pf-home-label small,.pf-home-item small{font-weight:400;font-size:var(--fs-xs);color:var(--faint);}
.pf-home-item{display:flex;flex-direction:column;gap:2px;}
.pf-home-item b{font-family:var(--font-num);font-size:calc(var(--fs-3xl) * 1.2);line-height:1.1;font-variant-numeric:tabular-nums;}
.pf-home-item span{font-family:var(--font-num);font-size:var(--fs-sm);}
.pf-home-go{margin-left:auto;color:var(--brass);font-weight:700;font-size:var(--fs-sm);}

.mh-inst li{display:grid;grid-template-columns:1fr auto 90px;gap:8px;padding:8px 0;border-top:1px solid var(--hairline);font-size:var(--fs-sm);}
.mh-inst li:first-child{border-top:0;}
.mh-total b.mh-up{color:var(--up);}.mh-total b.mh-down{color:var(--down);}

/* ---------- 個股頁概覽：河流圖＋量化解讀、同業比較矩陣 ---------- */
.ov-card{background:var(--panel);border:1px solid var(--hairline);border-radius:8px;padding:16px 20px;margin:0 0 16px;}
.ov-card[hidden]{display:none;}
.ov-head{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px 14px;margin-bottom:12px;}
.ov-head h2{margin:0;font-size:var(--fs-xl);font-weight:700;color:var(--bone);}
.ov-sub{font-size:var(--fs-xs);color:var(--faint);font-family:var(--font-num);}
.ov-head .btn{margin-left:auto;}
.ov-river-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(240px,1fr);gap:20px;}
.ov-chart{position:relative;height:300px;}
.ov-quant{border:1px solid var(--hairline);border-radius:8px;padding:14px 16px;background:var(--bg);}
.ov-quant h3{margin:0 0 8px;font-size:var(--fs-sm);letter-spacing:.08em;color:var(--brass);}
.ov-quant dl{margin:0;}
.ov-quant dl div{display:flex;justify-content:space-between;gap:12px;padding:7px 0;border-top:1px solid var(--hairline);font-size:var(--fs-sm);}
.ov-quant dl div:first-child{border-top:0;}
.ov-quant dt{color:var(--bone-dim);}
.ov-quant dd{margin:0;font-family:var(--font-num);font-weight:700;color:var(--bone);text-align:right;}
.ov-note{margin:10px 0 0;font-size:var(--fs-xs);color:var(--faint);line-height:1.6;}
.ov-table-wrap{overflow-x:auto;}
.ov-table{width:100%;border-collapse:collapse;font-size:var(--fs-sm);}
.ov-table th,.ov-table td{padding:9px 12px;border-bottom:1px solid var(--hairline);white-space:nowrap;}
.ov-table thead th{color:var(--faint);font-weight:700;text-align:left;background:var(--bg);}
.ov-table .num{text-align:right;font-family:var(--font-num);font-variant-numeric:tabular-nums;}
.ov-table td a{color:var(--bone);text-decoration:none;}
.ov-table td a:hover{color:var(--brass);}
.ov-table .ov-self td{background:color-mix(in srgb,var(--it-primary) 7%,transparent);}
.ov-tag{margin-left:8px;padding:1px 6px;border-radius:3px;background:var(--it-primary);color:var(--it-primary-ink);font-size:var(--fs-xs);}
@media (max-width:860px){.ov-river-grid{grid-template-columns:1fr;}.ov-chart{height:240px;}.ov-table th:first-child,.ov-table td:first-child{position:sticky;left:0;background:var(--panel);}}

/* ---------- 自選清單：分組、批次操作、迷你走勢 ---------- */
.wl-groups{display:flex;flex-wrap:wrap;gap:8px;margin:4px 0 12px;}
.wl-group{padding:6px 14px;border:1px solid var(--hairline);border-radius:999px;background:var(--panel);color:var(--bone-dim);font:inherit;font-size:var(--fs-sm);cursor:pointer;transition:background-color .15s,border-color .15s;}
.wl-group:hover{border-color:var(--it-primary);color:var(--bone);}
.wl-group.active{background:var(--it-primary);border-color:var(--it-primary);color:var(--it-primary-ink);font-weight:700;}
.wl-group-add,.wl-group-del{border-style:dashed;}
.wl-batch{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 12px;padding:10px 14px;background:color-mix(in srgb,var(--it-primary) 8%,var(--panel));border:1px solid var(--hairline);border-radius:8px;font-size:var(--fs-sm);}
.wl-batch[hidden]{display:none;}
.wl-batch select{margin-left:6px;padding:4px 8px;border:1px solid var(--hairline);border-radius:4px;background:var(--panel);color:var(--bone);font:inherit;}
.w-handle-col{white-space:nowrap;}
.w-handle-col .w-sel,#wlSelAll{margin-right:6px;vertical-align:middle;accent-color:var(--it-primary);cursor:pointer;}
.spark-col,.spark-cell{text-align:center;}
.spark{color:var(--up);}
.spark.down{color:var(--down);}
@media (max-width:767px){#wlTable td.spark-cell{grid-column:1 / -1;text-align:left;}#wlTable td.spark-cell::before{content:"近 5 日走勢";display:block;font-size:11px;font-weight:700;color:var(--faint);margin-bottom:2px;}#wlTable td.w-handle-col .w-sel{margin:0 0 6px;}#wlTable td.w-handle-col{flex-direction:column;}}
.mh-index{display:flex;flex-direction:column;gap:4px;margin-top:6px;}
.mh-index b{font-family:var(--font-num);font-size:calc(var(--fs-3xl) * 1.5);line-height:1.1;font-variant-numeric:tabular-nums;}
.mh-index span{font-family:var(--font-num);font-size:var(--fs-sm);font-weight:700;}

/* ---------- 選股篩選器：市值級距、產業別、結果欄位組合 ---------- */
.sc-extra{display:flex;flex-direction:column;gap:14px;margin:14px 0;padding-top:14px;border-top:1px solid var(--hairline);}
.sc-extra[hidden]{display:none;}
.sc-extra h3{margin:0 0 8px;font-size:var(--fs-sm);font-weight:700;color:var(--bone);}
.sc-extra h3 small{margin-left:6px;font-weight:400;color:var(--brass);}
.sc-tier{display:flex;flex-direction:column;gap:6px;}
.sc-tier button{padding:8px 12px;border:1px solid var(--hairline);border-radius:4px;background:var(--panel);color:var(--bone-dim);font:inherit;font-size:var(--fs-sm);text-align:left;cursor:pointer;}
.sc-tier button[aria-pressed="true"]{background:var(--it-primary);border-color:var(--it-primary);color:var(--it-primary-ink);font-weight:700;}
#scIndSearch{width:100%;margin-bottom:8px;padding:6px 10px;border:1px solid var(--hairline);border-radius:4px;background:var(--panel);color:var(--bone);font:inherit;font-size:var(--fs-sm);}
.sc-ind-list{max-height:220px;overflow-y:auto;border:1px solid var(--hairline);border-radius:4px;background:var(--panel);}
.sc-ind{display:flex;align-items:center;gap:8px;padding:6px 10px;font-size:var(--fs-sm);cursor:pointer;border-bottom:1px solid var(--hairline);}
.sc-ind:last-child{border-bottom:0;}
.sc-ind:hover{background:var(--panel-2);}
.sc-ind input{accent-color:var(--it-primary);}
.sc-ind span{flex:1;}
.sc-ind em{font-style:normal;font-family:var(--font-num);font-size:var(--fs-xs);color:var(--faint);}
.sc-colset{display:flex;gap:4px;margin:0 0 12px;padding:3px;background:var(--panel-2);border-radius:6px;width:fit-content;}
.sc-colset button{padding:6px 14px;border:0;border-radius:4px;background:transparent;color:var(--bone-dim);font:inherit;font-size:var(--fs-sm);cursor:pointer;}
.sc-colset button.active{background:var(--panel);color:var(--bone);font-weight:700;box-shadow:0 1px 2px rgba(15,23,42,.12);}

/* ---------- 類股分析：族群內漲跌幅前後 5 名 ---------- */
.movers{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin:0 0 16px;}
.movers[hidden]{display:none;}
.mv-col{border:1px solid var(--hairline);border-radius:8px;padding:12px 16px;background:var(--panel);}
.mv-col h3{margin:0 0 8px;font-size:var(--fs-md);color:var(--bone);}
.mv-col ol{list-style:none;margin:0;padding:0;}
.mv-col li{display:grid;grid-template-columns:22px 1fr auto 70px;gap:8px;align-items:center;padding:6px 0;border-top:1px solid var(--hairline);font-size:var(--fs-sm);}
.mv-col li:first-child{border-top:0;}
.mv-col a{color:var(--bone);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.mv-col a:hover{color:var(--brass);}
.mv-rank{font-family:var(--font-num);color:var(--faint);}
.mv-px,.mv-pct{font-family:var(--font-num);font-variant-numeric:tabular-nums;text-align:right;}
.mv-pct{font-weight:700;}
.mv-pct.up{color:var(--up);}
.mv-pct.down{color:var(--down);}
@media (max-width:760px){.movers{grid-template-columns:1fr;}}

/* ---------- 行事曆：週曆、事件數量、今日焦點 ---------- */
.cal-weekmode{grid-template-columns:1fr;}
.cal-weekmode .cal-side{display:none;}
.cal-week{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:1px;background:var(--hairline);border:1px solid var(--hairline);border-radius:8px;overflow:hidden;}
.cal-wcol{display:flex;flex-direction:column;gap:4px;min-height:240px;padding:8px;background:var(--panel);}
.cal-wcol.cal-weekend{background:var(--bg);}
.cal-wcol.cal-today{box-shadow:inset 0 0 0 2px var(--it-primary);}
.cal-whead{display:flex;align-items:baseline;gap:6px;flex-wrap:wrap;font-size:var(--fs-xs);color:var(--faint);padding-bottom:6px;border-bottom:1px solid var(--hairline);}
.cal-whead strong{font-family:var(--font-num);font-size:var(--fs-xl);color:var(--bone);}
.cal-wcol .cal-chip{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.cal-wempty{color:var(--faint);}
.cal-count{margin-left:6px;padding:0 6px;border-radius:999px;background:var(--panel-2);color:var(--bone-dim);font-family:var(--font-num);font-size:var(--fs-xs);}
.cal-chips button.active .cal-count{background:rgba(255,255,255,.22);color:inherit;}
.cal-focus{display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0 0 14px;padding:12px 16px;border-radius:8px;background:var(--it-primary);color:var(--it-primary-ink);}
.cal-focus[hidden]{display:none;}
.cal-focus-tag{padding:2px 8px;border-radius:3px;background:rgba(255,255,255,.18);font-size:var(--fs-xs);font-weight:700;letter-spacing:.06em;}
.cal-focus strong{font-family:var(--font-num);}
.cal-focus-mine{font-weight:700;}
.cal-focus .btn{margin-left:auto;background:#fff;color:#0f172a;border-color:#fff;}
@media (max-width:860px){.cal-week{grid-template-columns:1fr;}.cal-wcol{min-height:0;flex-direction:row;flex-wrap:wrap;align-items:center;}.cal-whead{border:0;padding:0;}}
.cal-weekmode .cal-grid{display:block;}.cal-weekmode .cal-grid-wrap{min-width:0;}

/* ---------- 財報下載：勾選批次、預覽 ---------- */
.rp-batch{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0 0 12px;padding:10px 14px;background:color-mix(in srgb,var(--it-primary) 8%,var(--panel));border:1px solid var(--hairline);border-radius:8px;font-size:var(--fs-sm);}
.rp-batch[hidden]{display:none;}
.sel-col{width:36px;}
.sel-col input{accent-color:var(--it-primary);cursor:pointer;}
.dl-col{white-space:nowrap;}
.dl-col .rp-preview{vertical-align:middle;margin-right:4px;}
th.sel-col + th{text-align:left;}
.val-matrix .mx-base-row td{background:var(--panel-2);font-weight:600;}
.val-cfchart{max-width:640px;}
.val-legend .cf-a{background:color-mix(in srgb,var(--it-primary) 18%,transparent);}
.val-legend .cf-b{background:color-mix(in srgb,var(--brass) 18%,transparent);}

/* ---------- 專欄：側欄、卡片分類標籤、文章目錄 ---------- */
.blog-layout{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:start;}
.blog-side{position:sticky;top:90px;display:flex;flex-direction:column;gap:16px;}
.blog-side[hidden]{display:none;}
.blog-side section{background:var(--panel);border:1px solid var(--hairline);border-radius:8px;padding:14px 16px;}
.blog-side h3{margin:0 0 10px;font-size:var(--fs-md);color:var(--bone);}
.blog-side ol{list-style:none;margin:0;padding:0;counter-reset:bs;}
.blog-side li{counter-increment:bs;display:flex;flex-direction:column;gap:2px;padding:8px 0 8px 26px;border-top:1px solid var(--hairline);position:relative;}
.blog-side li:first-child{border-top:0;}
.blog-side li::before{content:counter(bs);position:absolute;left:0;top:8px;font-family:var(--font-num);font-weight:700;color:var(--brass);}
.blog-side li a{color:var(--bone);text-decoration:none;font-size:var(--fs-sm);line-height:1.5;}
.blog-side li a:hover{color:var(--brass);}
.blog-side li small{color:var(--faint);font-size:var(--fs-xs);}
.bs-tags{display:flex;flex-wrap:wrap;gap:6px;}
.bs-tag{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--hairline);border-radius:999px;background:var(--bg);color:var(--bone-dim);font:inherit;font-size:var(--fs-xs);cursor:pointer;}
.bs-tag:hover{border-color:var(--it-primary);color:var(--bone);}
.bs-tag em{font-style:normal;font-family:var(--font-num);color:var(--faint);}
.bs-note p{margin:0;font-size:var(--fs-xs);color:var(--faint);line-height:1.6;}
.bc-tags{display:inline-flex;gap:6px;margin-left:10px;}
.bc-tag{padding:1px 8px;border-radius:3px;background:var(--panel-2);color:var(--bone-dim);font-size:var(--fs-xs);}
.bp-toc{margin:0 0 24px;padding:14px 18px;border:1px solid var(--hairline);border-left:3px solid var(--it-primary);border-radius:6px;background:var(--panel);}
.bp-toc strong{display:block;margin-bottom:6px;font-size:var(--fs-sm);color:var(--bone);}
.bp-toc ol{margin:0;padding-left:20px;display:flex;flex-direction:column;gap:4px;}
.bp-toc a{color:var(--bone-dim);text-decoration:none;font-size:var(--fs-sm);}
.bp-toc a:hover,.bp-toc a.on{color:var(--brass);}
.bp-toc a.on{font-weight:700;}
@media (max-width:980px){.blog-layout{grid-template-columns:1fr;}.blog-side{position:static;}}
.bp-toc li{margin:0;padding:0;line-height:1.5;}.bp-toc ol{gap:2px;}

/* ---------- 帳戶：使用容量、資料匯出 ---------- */
.usage-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:14px 0 4px;}
.usage-card{padding:12px 14px;border:1px solid var(--hairline);border-radius:8px;background:var(--bg);}
.usage-top{display:flex;justify-content:space-between;align-items:baseline;gap:8px;margin-bottom:8px;font-size:var(--fs-sm);color:var(--bone-dim);}
.usage-top b{font-family:var(--font-num);font-size:var(--fs-xl);color:var(--bone);}
.usage-top small{font-size:var(--fs-xs);font-weight:400;color:var(--faint);}
.usage-actions{margin-top:12px;}

/* ---------- ETF 專區：概覽卡、頻率／規模篩選、殖利率前 5 ---------- */
.etf-overview{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px;margin:0 0 16px;}
.etf-overview[hidden]{display:none;}
.etf-ov{display:flex;flex-direction:column;gap:4px;padding:14px 16px;background:var(--panel);border:1px solid var(--hairline);border-radius:8px;}
.etf-ov .l{font-size:var(--fs-xs);color:var(--faint);font-weight:700;}
.etf-ov b{font-family:var(--font-num);font-size:calc(var(--fs-3xl) * 1.3);line-height:1.1;color:var(--bone);}
.etf-ov b small{font-size:var(--fs-sm);font-weight:500;color:var(--bone-dim);margin-left:2px;}
.etf-ov .s{font-size:var(--fs-xs);color:var(--faint);}
.etf-toolrow select{padding:4px 8px;border:1px solid var(--hairline);border-radius:4px;background:var(--panel);color:var(--bone);font:inherit;}
#etfTopYield{margin-top:16px;}
#etfTopYield[hidden]{display:none;}
#etfTopYield .l1 b{font-family:var(--font-num);color:var(--brass);margin-right:4px;}

/* ---------- 麵包屑 ---------- */
.breadcrumb{display:flex;flex-wrap:wrap;align-items:center;gap:6px;width:100%;box-sizing:border-box;max-width:1344px;margin:0 auto;padding:10px 32px 0;font-size:var(--fs-xs);color:var(--faint);}
.breadcrumb a{color:var(--bone-dim);text-decoration:none;}
.breadcrumb a:hover{color:var(--brass);}
.breadcrumb ol{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin:0;padding:0;list-style:none;}
.breadcrumb li+li::before{content:"/" / "";margin-right:6px;color:var(--hairline);}
.breadcrumb .bc-cur{color:var(--bone);font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:60ch;}
@media (max-width:760px){.breadcrumb{display:none;}}

/* ---------- 六面向儀表板：雷達圖 ---------- */
.dash-body{display:grid;grid-template-columns:minmax(0,1fr);gap:16px;align-items:start;}
.dash-body:has(.dash-radar){grid-template-columns:340px minmax(0,1fr);}
.dash-radar{margin:0;padding:12px;border:1px solid var(--hairline);border-radius:8px;background:var(--bg);}
.dash-radar figcaption{margin-top:6px;font-size:var(--fs-xs);color:var(--faint);line-height:1.5;}
@media (max-width:900px){.dash-body:has(.dash-radar){grid-template-columns:1fr;}}
.dash-body:has(.dash-radar) .dash-grid{grid-template-columns:repeat(2,minmax(0,1fr));}@media (max-width:560px){.dash-body:has(.dash-radar) .dash-grid{grid-template-columns:1fr;}}

/* ---------- 權益變動表圖表 ---------- */
.eq-charts{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,420px),1fr));gap:16px;margin:0 0 20px;}
.eq-chart-card{border:1px solid var(--hairline);border-radius:8px;padding:14px 16px;background:var(--panel);}
.eq-chart-card h3{margin:0 0 10px;font-size:var(--fs-md);color:var(--bone);}
.eq-chart-box{position:relative;height:280px;}
.eq-note{margin:8px 0 0;font-size:var(--fs-xs);color:var(--faint);}
.eq-sub{margin:0 0 10px;font-size:var(--fs-sm);color:var(--bone-dim);line-height:1.6;}
.ov-chart-col{min-width:0;}
.ov-legend{display:flex;flex-wrap:wrap;gap:6px 14px;margin-top:10px;font-size:var(--fs-xs);color:var(--bone-dim);}
.ov-lg{display:inline-flex;align-items:center;gap:6px;}
.ov-lg i{display:inline-block;width:14px;height:10px;border:1px solid;border-radius:2px;}
.ov-lg small{color:var(--faint);}
.ov-lg-line{border:0!important;height:3px!important;background:var(--bone);border-radius:2px;}
