:root {
  --mv-ink:#1d2b40; --mv-muted:#5c6879; --mv-line:#e1e6ed; --mv-accent:#294b74; --mv-accent-strong:#1f3a5b; --mv-accent-soft:#e8eef6;
  --mv-bg:#f5f7fa; --mv-surface:#fff; --mv-radius:.9rem;
  --mv-shadow:0 1px 2px rgba(16,24,40,.04),0 1px 3px rgba(16,24,40,.07);
  --mv-shadow-hover:0 6px 16px rgba(16,24,40,.09);
  /* 語意色：主隊藍、客隊赭、和局灰、待定琥珀；命中綠、未命中紅 */
  --mv-home:#1d5fa8; --mv-home-bg:#e7f0fb;
  --mv-away:#b0461d; --mv-away-bg:#fcede6;
  --mv-draw:#4a5668; --mv-draw-bg:#eceff3;
  --mv-warn:#8a5a00; --mv-warn-bg:#fcf2d9;
  --mv-good:#17714a; --mv-good-bg:#e4f4eb;
  --mv-bad:#b3261e; --mv-bad-bg:#fbe9e8;
  --mv-live:#d1242f;
  /* Bootstrap 5.3 的變數改成本站的色系與中文字型 */
  --bs-body-bg:var(--mv-bg); --bs-body-color:var(--mv-ink); --bs-emphasis-color:var(--mv-ink);
  --bs-secondary-color:var(--mv-muted); --bs-border-color:var(--mv-line);
  --bs-link-color:var(--mv-accent); --bs-link-color-rgb:41,75,116; --bs-link-hover-color:var(--mv-accent-strong); --bs-link-hover-color-rgb:31,58,91;
  --bs-primary-rgb:41,75,116; --bs-code-color:#9b3a64;
  --bs-font-sans-serif:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","PingFang TC","Noto Sans TC","Microsoft JhengHei",Arial,sans-serif;
}
html { font-size:16px; -webkit-text-size-adjust:100%; text-size-adjust:100%; }
body { margin:0; background:var(--mv-bg); color:var(--mv-ink); line-height:1.65; padding-left:env(safe-area-inset-left); padding-right:env(safe-area-inset-right); -webkit-tap-highlight-color:transparent; }
[hidden] { display:none !important; }
a { color:var(--mv-accent); text-underline-offset:.18em; }
h1,h2,h3 { color:var(--mv-ink); overflow-wrap:anywhere; }
h1 { font-size:1.65rem; font-weight:650; margin:0; line-height:1.4; }
h2 { font-size:1.08rem; font-weight:650; margin:0 0 1rem; }
.icon { width:1em; height:1em; fill:currentColor; flex-shrink:0; vertical-align:-.125em; }
/* ---- Bootstrap 元件：按鈕、表單、卡片、表格（管理頁也一起套用） */
.btn,.form-control,.form-select { min-height:44px; font-size:1rem; }
.btn { display:inline-flex; align-items:center; justify-content:center; gap:.4rem; font-weight:500; --bs-btn-border-radius:.65rem; }
.btn-primary { --bs-btn-bg:var(--mv-accent); --bs-btn-border-color:var(--mv-accent); --bs-btn-hover-bg:var(--mv-accent-strong); --bs-btn-hover-border-color:var(--mv-accent-strong); --bs-btn-active-bg:#192f4a; --bs-btn-active-border-color:#192f4a; --bs-btn-disabled-bg:var(--mv-accent); --bs-btn-disabled-border-color:var(--mv-accent); --bs-btn-focus-shadow-rgb:41,75,116; }
.btn-outline-primary { --bs-btn-color:var(--mv-accent); --bs-btn-border-color:var(--mv-accent); --bs-btn-hover-color:#fff; --bs-btn-hover-bg:var(--mv-accent); --bs-btn-hover-border-color:var(--mv-accent); --bs-btn-active-color:#fff; --bs-btn-active-bg:var(--mv-accent-strong); --bs-btn-active-border-color:var(--mv-accent-strong); --bs-btn-disabled-color:var(--mv-accent); --bs-btn-disabled-border-color:var(--mv-accent); --bs-btn-focus-shadow-rgb:41,75,116; }
.btn-outline-secondary { --bs-btn-color:#3d4a5c; --bs-btn-bg:#fff; --bs-btn-border-color:#cdd5df; --bs-btn-hover-color:var(--mv-ink); --bs-btn-hover-bg:#f1f4f8; --bs-btn-hover-border-color:#b9c3cf; --bs-btn-active-color:var(--mv-ink); --bs-btn-active-bg:#e8ecf1; --bs-btn-active-border-color:#b9c3cf; --bs-btn-disabled-color:#8a94a3; --bs-btn-disabled-bg:#fff; --bs-btn-disabled-border-color:#dde3ea; }
.btn:focus-visible,a:focus-visible,summary:focus-visible { outline:3px solid #6588b6; outline-offset:3px; }
.form-control,.form-select { min-width:0; border-color:#cfd7e1; border-radius:.6rem; }
.form-control:focus,.form-select:focus { border-color:#7d97b8; box-shadow:0 0 0 .2rem rgba(41,75,116,.18); }
.form-label { font-size:.85rem; color:var(--mv-muted); margin-bottom:.3rem; }
input[type=date] { max-width:100%; }
.card { --bs-card-border-color:var(--mv-line); --bs-card-border-radius:var(--mv-radius); --bs-card-inner-border-radius:calc(var(--mv-radius) - 1px); --bs-card-cap-bg:#f8fafc; box-shadow:var(--mv-shadow); }
a.card { transition:border-color .15s,box-shadow .15s; }
a.card:hover { border-color:#c5d0de; box-shadow:var(--mv-shadow-hover); }
.table { --bs-table-bg:transparent; --bs-table-hover-bg:#f3f6f9; }
.table>thead { --bs-table-bg:#f6f8fb; }
.table>thead th { font-size:.8rem; font-weight:600; color:var(--mv-muted); white-space:nowrap; }
.table>:not(caption)>*>* { border-bottom-color:#e9edf2; }
.badge { --bs-badge-border-radius:.4rem; --bs-badge-font-weight:600; }
.alert { --bs-alert-border-radius:.75rem; }
/* ---- 版面：頁首、導覽、提示 */
.skip-link { position:absolute; left:1rem; top:-6rem; background:white; padding:.75rem; z-index:1100; }
.skip-link:focus { top:1rem; }
.app-header { background:var(--mv-surface); border-bottom:1px solid var(--mv-line); padding-top:env(safe-area-inset-top); }
.app-header-inner { min-height:68px; display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.app-brand { display:inline-flex; align-items:center; gap:.65rem; text-decoration:none; color:var(--mv-ink); }
.app-brand:hover { color:var(--mv-ink); }
.app-brand-mark { display:inline-grid; place-items:center; width:2.15rem; height:2.15rem; border-radius:.6rem; background:var(--mv-accent); color:#fff; font-size:.78rem; font-weight:800; letter-spacing:.02em; flex-shrink:0; }
.app-brand-name { font-size:1.08rem; font-weight:700; letter-spacing:-.02em; line-height:1.15; }
.app-brand-name small { display:block; font-size:.72rem; font-weight:400; letter-spacing:.06em; color:var(--mv-muted); }
.desktop-nav { display:flex; gap:.25rem; }
.desktop-nav a { display:inline-flex; align-items:center; gap:.45rem; min-height:44px; padding:.5rem .95rem; border-radius:.7rem; color:var(--mv-muted); text-decoration:none; font-weight:500; }
.desktop-nav a:hover { color:var(--mv-ink); background:#f1f4f8; }
.desktop-nav a[aria-current] { color:var(--mv-accent); background:var(--mv-accent-soft); font-weight:600; }
.app-content { padding-top:1.75rem; padding-bottom:3rem; }
.app-notice { display:flex; align-items:center; flex-wrap:wrap; gap:.65rem; background:var(--mv-warn-bg); border:1px solid #f0dfb4; border-radius:.75rem; padding:.7rem 1rem; margin-bottom:1rem; }
.mobile-nav { display:none; }
/* ---- 列表頁：標題、日期切換、篩選、賽事卡片 */
.page-heading { display:flex; align-items:flex-end; justify-content:space-between; flex-wrap:wrap; gap:.75rem 1rem; margin-bottom:1.1rem; }
.page-heading p { font-size:.9rem; margin-top:.25rem; }
.result-count { display:inline-flex; align-items:center; padding:.15rem .75rem; border-radius:999px; background:var(--mv-surface); border:1px solid var(--mv-line); color:var(--mv-muted); font-size:.85rem; white-space:nowrap; font-variant-numeric:tabular-nums; }
.date-shortcuts { display:flex; width:fit-content; max-width:100%; gap:.2rem; padding:.25rem; margin:0 0 1rem; background:#e7ebf0; border-radius:.85rem; overflow-x:auto; scrollbar-width:none; }
.date-shortcuts::-webkit-scrollbar { display:none; }
.date-shortcuts a { flex:1 0 auto; display:inline-flex; align-items:center; justify-content:center; min-height:44px; padding:.4rem 1rem; border-radius:.65rem; color:var(--mv-muted); text-decoration:none; white-space:nowrap; }
.date-shortcuts a:hover { color:var(--mv-ink); }
.date-shortcuts a[aria-current] { background:var(--mv-surface); color:var(--mv-accent); font-weight:600; box-shadow:0 1px 3px rgba(16,24,40,.12); }
summary { cursor:pointer; min-height:44px; padding:.6rem 0; }
.filter-panel>summary,.art-row>summary,.pan-row>summary,.detail-extra>summary { display:flex; align-items:center; gap:.5rem; list-style:none; }
.filter-panel>summary::-webkit-details-marker,.art-row>summary::-webkit-details-marker,.pan-row>summary::-webkit-details-marker,.detail-extra>summary::-webkit-details-marker { display:none; }
.filter-panel>summary::after,.art-row>summary::after,.pan-row>summary::after,.detail-extra>summary::after { content:""; flex-shrink:0; width:.5rem; height:.5rem; margin:0 .25rem 0 .5rem; border-right:2px solid #8a96a6; border-bottom:2px solid #8a96a6; transform:translateY(-.15rem) rotate(45deg); transition:transform .2s; }
.filter-panel[open]>summary::after,.art-row[open]>summary::after,.pan-row[open]>summary::after,.detail-extra[open]>summary::after { transform:translateY(.1rem) rotate(-135deg); }
.filter-panel>summary::after,.detail-extra>summary::after { margin-left:auto; }
.filter-panel>summary>.icon,.detail-extra>summary>.icon { color:var(--mv-accent); }
.filter-panel { margin-bottom:1.25rem; padding:0 1rem; border:1px solid var(--mv-line); background:var(--mv-surface); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow); }
.filter-panel[open] { padding-bottom:1.1rem; }
.filter-applied { padding:0 .55rem; border-radius:999px; background:var(--mv-accent-soft); color:var(--mv-accent); font-size:.78rem; font-weight:600; }
.match-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1rem; }
.match-card { display:flex; flex-direction:column; min-width:0; padding:1.05rem 1.15rem 1rem; border:1px solid var(--mv-line); border-radius:var(--mv-radius); background:var(--mv-surface); box-shadow:var(--mv-shadow); color:var(--mv-ink); text-decoration:none; transition:border-color .15s,box-shadow .15s,transform .1s; }
.match-card:hover { color:var(--mv-ink); border-color:#c5d0de; box-shadow:var(--mv-shadow-hover); }
.match-card:active { transform:scale(.985); }
.match-meta { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.4rem .75rem; color:var(--mv-muted); font-size:.83rem; overflow-wrap:anywhere; }
.match-time { display:flex; align-items:center; gap:.35rem; font-size:.85rem; color:var(--mv-muted); margin:.3rem 0 .85rem; font-variant-numeric:tabular-nums; }
.match-teams { display:grid; gap:.35rem; margin-bottom:.9rem; }
.team-row { display:flex; align-items:baseline; justify-content:space-between; gap:.75rem; min-width:0; }
.team-name { display:flex; align-items:baseline; gap:.6rem; font-size:1.08rem; font-weight:600; overflow-wrap:anywhere; min-width:0; }
.team-side { flex-shrink:0; padding:0 .3rem; border-radius:.3rem; font-size:.72rem; font-weight:600; line-height:1.55; color:var(--mv-home); background:var(--mv-home-bg); }
.team-row+.team-row .team-side { color:var(--mv-away); background:var(--mv-away-bg); }
.team-score { font-size:1.3rem; font-weight:700; line-height:1; font-variant-numeric:tabular-nums; }
.team-row.is-loser .team-name,.team-row.is-loser .team-score { color:var(--mv-muted); font-weight:500; }
.match-summary { margin-top:auto; padding-top:.8rem; border-top:1px solid var(--mv-line); display:flex; align-items:center; justify-content:space-between; gap:.75rem; }
.summary-line { display:flex; align-items:center; flex-wrap:wrap; gap:.3rem .5rem; }
.summary-label { font-size:.8rem; color:var(--mv-muted); }
.summary-score { font-size:.85rem; color:var(--mv-muted); font-variant-numeric:tabular-nums; }
.summary-timing { display:block; font-size:.76rem; color:var(--mv-muted); margin-top:.3rem; }
.summary-arrow { color:#9aa6b5; }
/* 比賽狀態與合參方向的顏色 */
.status-label { display:inline-flex; align-items:center; gap:.35rem; padding:.05rem .55rem; border-radius:999px; font-size:.76rem; font-weight:600; white-space:nowrap; background:#eef1f5; color:#4a5668; }
.status-scheduled { background:var(--mv-accent-soft); color:var(--mv-accent); }
.status-live { background:#fdeaea; color:var(--mv-live); }
.status-live::before { content:""; width:.45rem; height:.45rem; border-radius:50%; background:currentColor; animation:mv-pulse 1.4s ease-in-out infinite; }
.status-postponed { background:var(--mv-warn-bg); color:var(--mv-warn); }
.status-cancelled { color:#7a8492; text-decoration:line-through; }
@keyframes mv-pulse { 50% { opacity:.3; } }
.tone-home { --tone:var(--mv-home); --tone-bg:var(--mv-home-bg); }
.tone-away { --tone:var(--mv-away); --tone-bg:var(--mv-away-bg); }
.tone-draw { --tone:var(--mv-draw); --tone-bg:var(--mv-draw-bg); }
.tone-abstain { --tone:var(--mv-warn); --tone-bg:var(--mv-warn-bg); }
.tone-pending { --tone:var(--mv-accent); --tone-bg:var(--mv-accent-soft); }
.tone-failed { --tone:var(--mv-bad); --tone-bg:var(--mv-bad-bg); }
.tone-none { --tone:var(--mv-muted); --tone-bg:#eef1f5; }
.verdict-chip,.art-direction { display:inline-flex; align-items:center; padding:0 .6rem; border-radius:999px; font-size:.85rem; font-weight:600; line-height:1.75; white-space:nowrap; color:var(--tone); background:var(--tone-bg); }
.empty-state { padding:2.5rem 1rem; text-align:center; background:var(--mv-surface); border:1px dashed #cdd5df; border-radius:var(--mv-radius); }
.empty-icon { font-size:2.25rem; color:#9aa6b5; margin-bottom:.75rem; }
.pagination-actions { display:flex; align-items:center; gap:.5rem; flex-wrap:wrap; }
/* ---- 閱讀版：標題卡、各面板 */
.reading-detail { max-width:760px; margin:0 auto; }
.back-link { display:inline-flex; align-items:center; gap:.3rem; min-height:44px; margin:-.5rem 0 .35rem; text-decoration:none; font-weight:500; }
.detail-heading { margin-bottom:1rem; padding:1.2rem 1.5rem; background:var(--mv-surface); border:1px solid var(--mv-line); border-radius:var(--mv-radius); box-shadow:var(--mv-shadow); }
.detail-heading h1 { display:grid; gap:.35rem; margin:.55rem 0 .75rem; font-size:1.55rem; }
.detail-heading h1>span { display:flex; gap:.7rem; align-items:baseline; }
.detail-heading h1 small { font-size:.85rem; font-weight:400; color:var(--mv-muted); flex-shrink:0; }
.detail-heading h1 small:first-child { align-self:center; padding:0 .35rem; border-radius:.35rem; font-size:.78rem; font-weight:600; line-height:1.6; color:var(--mv-home); background:var(--mv-home-bg); }
.detail-heading h1>span+span small:first-child { color:var(--mv-away); background:var(--mv-away-bg); }
.detail-heading h1 small.team-original { flex-shrink:1; min-width:0; overflow-wrap:anywhere; }
.detail-facts { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.25rem 1rem; padding-top:.75rem; border-top:1px solid var(--mv-line); }
.detail-facts .match-time { margin:0; }
.detail-score { display:flex; align-items:baseline; gap:.5rem; margin:0; color:var(--mv-muted); font-size:.85rem; }
.detail-score strong { font-size:1.4rem; color:var(--mv-ink); font-variant-numeric:tabular-nums; }
.reading-panel { background:var(--mv-surface); border:1px solid var(--mv-line); padding:1.35rem 1.5rem; border-radius:var(--mv-radius); box-shadow:var(--mv-shadow); margin-bottom:1rem; min-width:0; overflow-wrap:anywhere; }
.reading-panel>h2 { display:flex; align-items:center; flex-wrap:wrap; gap:.2rem .5rem; }
.reading-panel>h2>.icon { color:var(--mv-accent); }
.section-note { font-size:.78rem; color:var(--mv-muted); font-weight:400; }
.pan-sides .section-note { margin-left:.5rem; }
.verdict-panel { position:relative; overflow:hidden; }
.verdict-panel::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:var(--tone); }
.verdict { display:inline-flex; margin:0 0 .8rem; padding:.15rem 1rem; border-radius:.8rem; font-size:1.9rem; font-weight:700; line-height:1.4; color:var(--tone); background:var(--tone-bg); }
.verdict-score { display:flex; align-items:baseline; flex-wrap:wrap; gap:.5rem; margin:0 0 .8rem; }
.verdict-score strong { font-size:1.45rem; font-variant-numeric:tabular-nums; }
.art-row { border-bottom:1px solid var(--mv-line); }
.art-row:last-child { border-bottom:0; }
.art-row>summary { padding:.7rem 0; font-weight:500; }
.art-direction { margin-left:auto; }
.art-body { color:var(--mv-muted); padding:.1rem 0 .7rem; }
.art-body p,.art-body ul { margin-bottom:.5rem; }
.art-body ul { padding-left:1.25rem; }
.evaluation-summary { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.75rem; margin:0 0 .75rem; }
.hit-tile { padding:.65rem .9rem; border-radius:.75rem; background:#f2f4f7; }
.hit-tile dt { font-size:.8rem; font-weight:400; color:var(--mv-muted); }
.hit-tile dd { display:flex; align-items:center; gap:.4rem; margin:.1rem 0 0; font-size:1.05rem; font-weight:700; color:var(--mv-muted); }
.hit-yes { background:var(--mv-good-bg); }
.hit-yes dd { color:var(--mv-good); }
.hit-no { background:var(--mv-bad-bg); }
.hit-no dd { color:var(--mv-bad); }
.reading-panel .table { overflow-wrap:normal; }
.odds-table { font-size:.92rem; }
.odds-table td:nth-child(-n+2),.odds-table td:nth-child(4),.odds-table td:nth-child(5) { white-space:nowrap; }
.detail-extra { padding-top:.4rem; padding-bottom:.4rem; }
.detail-extra>summary { font-weight:600; }
.detail-extra dt { color:var(--mv-muted); font-weight:400; font-size:.85rem; }
/* 盤口與賠率：預設收合，整列標題都可點擊；展開狀態由原生 details 提供。 */
.reading-panel.odds-panel { padding:0; }
.odds-panel>summary { padding:1rem 1.5rem; border-radius:inherit; }
.odds-panel>summary:hover { background:#f8fafc; }
.odds-panel>summary::after { margin-left:.2rem; }
.odds-panel>summary h2 { display:flex; align-items:center; gap:.65rem; flex:1; min-width:0; margin:0; font-size:1rem; }
.odds-panel>summary .icon { color:var(--mv-accent); }
.odds-summary-copy { display:grid; gap:.1rem; min-width:0; }
.odds-toggle { margin-left:auto; color:var(--mv-accent); font-size:.85rem; font-weight:500; white-space:nowrap; }
.odds-panel[open] .odds-expand,.odds-panel:not([open]) .odds-collapse { display:none; }
.odds-content { padding:1rem 1.5rem; border-top:1px solid var(--mv-line); }
/* 連結清單（閱讀版的研究工具、更多頁的管理入口） */
.link-list { display:grid; }
.reading-panel.link-list { padding-top:.35rem; padding-bottom:.35rem; }
.link-list a { display:flex; align-items:center; gap:.85rem; min-height:60px; padding:.65rem 0; border-bottom:1px solid var(--mv-line); color:var(--mv-ink); text-decoration:none; }
.link-list a:last-child { border-bottom:0; }
.link-list a:hover { color:var(--mv-accent); }
.link-list a>.icon { color:#9aa6b5; }
.link-icon { display:grid; place-items:center; flex-shrink:0; width:2.3rem; height:2.3rem; border-radius:.7rem; background:var(--mv-accent-soft); color:var(--mv-accent); font-size:1.1rem; }
.link-text { flex:1; min-width:0; display:grid; font-weight:500; }
.link-text small { font-size:.8rem; font-weight:400; color:var(--mv-muted); }
.account-row { display:flex; flex-wrap:wrap; align-items:center; gap:.85rem; }
.install-panel h2>.icon { color:var(--mv-accent); }
pre { white-space:pre-wrap; overflow-wrap:anywhere; }
/* ---- 奇門九宮盤面：照老師慣用的排盤軟體排法（上南下北、巽四起） */
.qimen-chart { font-family:"Songti TC","Noto Serif TC","Noto Serif CJK TC","PMingLiU","MingLiU",serif; color:var(--mv-ink); max-width:560px; }
.qimen-head { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:.1rem 1rem; margin:0 0 .75rem; color:var(--mv-accent); font-size:1rem; line-height:1.55; }
.qimen-head>div { display:flex; gap:.2rem; min-width:0; }
.qimen-head .qimen-wide { grid-column:1 / -1; }
.qimen-head dt { font-weight:400; white-space:nowrap; }
.qimen-head dt::after { content:"："; }
.qimen-head dd { margin:0; overflow-wrap:anywhere; }
.qimen-head dd small { font-size:.78em; color:var(--mv-muted); margin-left:.35em; }
.qimen-pillars { display:inline-grid; grid-template-columns:repeat(4,2.4em); }
.qimen-flags dd { display:flex; flex-wrap:wrap; gap:.6rem; }
.qimen-flag { color:#b3261e; font-weight:600; }
.qimen-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:1px; border:1px solid #8a8f98; background:#8a8f98; }
.qimen-cell { background:#fff; min-height:7.2rem; padding:.35rem .4rem .3rem; display:grid; grid-template-columns:auto minmax(0,1fr) auto; grid-template-rows:auto auto auto minmax(0,1fr); column-gap:.35rem; row-gap:.15rem; font-size:1.05rem; line-height:1.35; min-width:0; white-space:nowrap; }
.qimen-zhifu { background:#f3f7fc; }
.qimen-zhishi { background:#fdf7ef; }
.qimen-center { background:#fafafa; }
.qimen-corner { grid-column:1; grid-row:1 / span 3; display:flex; flex-direction:column; align-items:flex-start; gap:.15rem; }
.qimen-trigram { display:inline-flex; flex-direction:column; gap:2px; width:1.15em; margin-top:.2em; }
.qimen-trigram i { display:block; height:3px; background:var(--mv-ink); }
.qimen-trigram i.yin { background:linear-gradient(to right,var(--mv-ink) 0 40%,transparent 40% 60%,var(--mv-ink) 60% 100%); }
.qimen-palace { font-size:.82em; color:var(--mv-muted); line-height:1.2; white-space:nowrap; }
.qimen-palace b { color:var(--mv-ink); font-weight:600; margin-right:.1em; }
.qimen-top { grid-column:2 / -1; grid-row:1; display:flex; justify-content:space-between; align-items:flex-start; gap:.3em; min-width:0; }
.qimen-marks { display:flex; flex-wrap:wrap; justify-content:flex-end; gap:0 .2em; font-size:.8em; line-height:1.2; }
.qimen-marks b { font-weight:600; }
.qimen-star { grid-column:2; grid-row:2; }
.qimen-heaven { grid-column:3; grid-row:2; }
.qimen-gate { grid-column:2; grid-row:3; }
.qimen-earth { grid-column:3; grid-row:3; }
.qimen-item { display:inline-flex; flex-direction:column; align-items:flex-start; min-width:1.2em; }
.qimen-heaven,.qimen-earth { align-items:center; }
.qimen-item small { font-size:.62em; line-height:1; color:var(--mv-muted); }
.qimen-text .qimen-extra { font-size:.8em; }
.qimen-star small.qimen-extra { font-size:.7em; color:var(--mv-ink); }
.qimen-foot { grid-column:1 / -1; grid-row:4; align-self:end; font-size:.72em; color:var(--mv-muted); line-height:1.3; margin-top:.15rem; display:flex; flex-wrap:wrap; gap:0 .5em; white-space:normal; }
.qimen-mark-kong,.qimen-mark-xing,.qimen-mark-po,.qimen-mark-kong small,.qimen-mark-xing small,.qimen-mark-po small { color:#b3261e; }
.qimen-mark-mu,.qimen-mark-mu small { color:#a0730a; }
.qimen-mark-ma { color:#1d5fa8; }
.qimen-mark-kong-day,.qimen-mark-ma-day { font-size:.85em; font-weight:400; color:var(--mv-muted); }
.qimen-notes { margin:.5rem 0 0; padding-left:1.2rem; }
.qimen-side { display:inline-block; font-size:.7em; line-height:1.45; padding:0 .4em; border-radius:.3em; background:var(--mv-accent); color:#fff; font-weight:600; margin-top:.15em; }
.qimen-legend { font-size:.78rem; color:var(--mv-muted); margin:.5rem 0 0; line-height:1.5; }
.pan-row { border-bottom:1px solid var(--mv-line); }
.pan-row:last-child { border-bottom:0; }
.pan-row>summary { padding:.8rem 0; font-weight:600; }
.pan-meta { margin-left:auto; font-weight:400; color:var(--mv-muted); font-size:.85rem; text-align:right; }
.pan-body { padding:.25rem 0 .9rem; }
.pan-sides { margin:0 0 .6rem; font-weight:600; }
.reading-panel .qimen-chart { max-width:none; }
/* ---- 老師看盤台：時辰盤上的多場主客標記、每場的判讀列、對獎 */
.qimen-side-home { background:var(--mv-home); }
.qimen-side-away { background:var(--mv-away); }
.board .reading-panel>h2 { margin-bottom:.75rem; }
.board-next>summary>span:first-child,.board-yin>summary>span:first-child { display:inline-flex; align-items:center; gap:.3rem; }
.board-next { scroll-margin-top:1rem; }
.board-next:target>summary { color:var(--mv-accent); }
.pan-body>.board-yin { margin-top:.5rem; border-top:1px dashed var(--mv-line); }
.board-matches { list-style:none; margin:.75rem 0 0; padding:0; }
.board-match { padding:.85rem 0 .9rem; border-top:1px solid var(--mv-line); }
.board-match-head { display:flex; flex-wrap:wrap; align-items:baseline; justify-content:space-between; gap:.25rem .75rem; }
.board-match-title { display:inline-flex; align-items:baseline; gap:.5rem; font-size:1.05rem; font-weight:600; color:var(--mv-ink); text-decoration:none; overflow-wrap:anywhere; min-width:0; }
.board-match-title:hover { color:var(--mv-accent); }
.board-index { font-size:1.2rem; color:var(--mv-accent); }
.board-vs { font-size:.8rem; font-weight:400; color:var(--mv-muted); margin:0 .15rem; }
.board-teams .team-side { margin-right:.25rem; }
.board-teams .team-side-away { color:var(--mv-away); background:var(--mv-away-bg); }
.board-meta { display:inline-flex; flex-wrap:wrap; align-items:center; gap:.3rem .5rem; font-size:.8rem; color:var(--mv-muted); }
.board-facts { display:flex; flex-wrap:wrap; gap:.3rem .5rem; margin:.4rem 0 .55rem; font-size:.85rem; color:var(--mv-muted); }
.board-fact { display:inline-flex; align-items:center; padding:0 .5rem; border-radius:.4rem; background:#f2f4f7; line-height:1.7; }
.board-fact-link { gap:.3rem; min-height:1.75rem; color:var(--mv-accent); background:var(--mv-accent-soft); text-decoration:none; }
.board-fact-link:hover,.board-fact-link:focus-visible { text-decoration:underline; }
.board-samepalace { color:var(--mv-bad); background:var(--mv-bad-bg); font-weight:600; }
.board-unplaced { color:var(--mv-warn); background:var(--mv-warn-bg); }
.board-engine { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; margin:0 0 .55rem; font-size:.9rem; color:var(--mv-muted); }
.board-workflow-head { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.75rem; }
.board-workflow-head h2 { display:flex; align-items:center; gap:.4rem; margin-bottom:.3rem; }
.board-workflow-head h2>.icon { color:var(--mv-accent); }
.board-workflow-head p { margin:0; font-size:.85rem; color:var(--mv-muted); }
.board-progress { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.65rem; margin:1rem 0 0; }
.board-progress>div { padding:.7rem .85rem; border-radius:.65rem; background:#f4f6f9; }
.board-progress dt { font-size:.8rem; font-weight:400; color:var(--mv-muted); }
.board-progress dd { margin:0; font-size:1.65rem; font-weight:700; font-variant-numeric:tabular-nums; }
.board-progress dd small { font-size:.8rem; font-weight:400; }
.board-progress .progress-pending { background:var(--mv-accent-soft); color:var(--mv-accent); }
.pending-matches { margin-top:.6rem; font-size:.88rem; }
.pending-matches>summary { color:var(--mv-accent); }
.pending-matches nav { display:grid; }
.pending-matches a { display:flex; align-items:center; justify-content:space-between; gap:.6rem; min-height:48px; border-top:1px solid var(--mv-line); padding:.5rem 0; text-decoration:none; }
.pending-matches small { color:var(--mv-muted); padding:0 .2rem; }
.board-progress-done { display:flex; align-items:baseline; gap:.4rem; color:var(--mv-muted); font-size:.85rem; margin:.85rem 0 0; }
.board-progress-done>.icon { color:var(--mv-good); }
.board-group>.board-matches>.board-match,#unplaced>.board-matches>.board-match { padding:1rem; margin-top:.9rem; border:1px solid var(--mv-line); border-radius:.8rem; background:#fcfdff; }
.board-match { scroll-margin-top:1rem; }
.board-match:target { outline:2px solid #7d97b8; outline-offset:3px; }
.board-reading-label { display:flex; align-items:center; justify-content:space-between; gap:.5rem; margin:1rem 0 .65rem; padding-top:.8rem; border-top:1px solid var(--mv-line); font-weight:600; }
.board-reading-label>span:first-child { display:inline-flex; align-items:center; gap:.4rem; }
.board-reading-label .icon { color:var(--mv-accent); }
.reading-state { padding:.1rem .55rem; border-radius:999px; font-size:.75rem; font-weight:500; white-space:nowrap; }
.state-pending { color:var(--mv-warn); background:var(--mv-warn-bg); }
.state-saved { color:var(--mv-good); background:var(--mv-good-bg); }
.state-locked { color:var(--mv-muted); background:#eef1f5; }
.verdict-fieldset { min-width:0; padding:0; margin:0; }
.verdict-fieldset legend { float:none; width:auto; margin:0 0 .2rem; font-size:.95rem; font-weight:600; }
.verdict-help { font-size:.82rem; color:var(--mv-muted); margin:0 0 .7rem; }
.verdict-options { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:.6rem; }
.verdict-choice { position:relative; cursor:pointer; min-width:0; }
.verdict-radio { position:absolute; top:1rem; right:.75rem; width:1rem; height:1rem; margin:0; accent-color:var(--tone); cursor:pointer; }
.verdict-option { display:flex; flex-direction:column; gap:.25rem; height:100%; min-height:90px; padding:.75rem 2.1rem .75rem .8rem; border:1px solid #cdd5df; border-radius:.7rem; background:var(--mv-surface); overflow-wrap:anywhere; }
.verdict-option strong { font-size:1.1rem; color:var(--tone); }
.verdict-option small { color:var(--mv-muted); font-size:.8rem; line-height:1.45; }
.verdict-choice:hover .verdict-option { border-color:var(--tone); }
.verdict-radio:checked+.verdict-option { border-color:var(--tone); background:var(--tone-bg); box-shadow:inset 0 0 0 1px var(--tone); }
.verdict-radio:focus-visible { outline:none; }
.verdict-radio:focus-visible+.verdict-option { outline:3px solid #6588b6; outline-offset:3px; }
.board-note-field { margin-top:.65rem; font-size:.85rem; }
.board-note-field>summary { color:var(--mv-accent); padding:.4rem 0; }
.board-note-field textarea { margin-top:.35rem; font-size:1rem; }
.verdict-note-hint { display:flex; flex-wrap:wrap; justify-content:space-between; gap:.2rem .5rem; margin-top:.3rem; font-size:.75rem; color:var(--mv-muted); }
.verdict-actions { display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.6rem; margin-top:.7rem; padding-top:.8rem; border-top:1px solid var(--mv-line); }
.verdict-action-buttons { display:flex; gap:.5rem; margin-left:auto; }
.verdict-save { min-width:7.5rem; }
.verdict-save-status { margin:0; font-size:.85rem; font-weight:500; color:var(--mv-muted); }
.verdict-save-status[data-state="draft"] { color:var(--mv-warn); }
.verdict-save-status[data-state="saved"] { color:var(--mv-good); }
.verdict-saved-at { color:var(--mv-muted); font-size:.75rem; margin:.6rem 0 0; }
.teacher-review-link { display:inline-flex; align-items:center; gap:.4rem; min-height:44px; margin-top:.4rem; font-size:.9rem; }
.board-note { display:block; margin:.35rem 0 0; padding:.35rem .7rem; border-left:3px solid var(--mv-line); color:var(--mv-muted); font-size:.9rem; white-space:pre-wrap; overflow-wrap:anywhere; }
.board-verdict-state { display:flex; align-items:center; flex-wrap:wrap; gap:.3rem; margin:.5rem 0 0; font-weight:600; }
.board-verdict-state>.icon { color:var(--mv-accent); }
.chip-samepalace { display:inline-flex; align-items:center; padding:0 .45rem; border-radius:.4rem; font-size:.75rem; font-weight:600; line-height:1.7; color:var(--mv-bad); background:var(--mv-bad-bg); }
.engine-hidden { border-style:dashed; box-shadow:none; }
.review-tiles { grid-template-columns:repeat(3,minmax(0,1fr)); }
.review-tiles dd { font-size:1.2rem; flex-wrap:wrap; color:var(--mv-ink); }
.review-tiles dd small { font-size:.78rem; font-weight:500; color:var(--mv-muted); margin-left:.1rem; }
.review-overview { display:flex; align-items:center; gap:1.25rem; }
.review-rate { display:grid; min-width:7rem; color:var(--mv-accent); }
.review-rate strong { font-size:2.8rem; line-height:1.2; font-weight:750; font-variant-numeric:tabular-nums; }
.review-rate>span { font-size:.8rem; color:var(--mv-muted); margin-top:.3rem; }
.review-overview-copy { min-width:0; }
.review-overview-copy p { margin:0 0 .2rem; font-size:.85rem; color:var(--mv-muted); }
.review-overview-copy strong { font-size:1.05rem; color:var(--mv-ink); }
.review-statuses { display:flex; flex-wrap:wrap; gap:.35rem; margin:1rem 0 0; }
.review-statuses>span { font-size:.78rem; color:var(--mv-muted); background:#f2f4f7; padding:.2rem .55rem; border-radius:.4rem; }
.review-comparison { border-top:1px solid var(--mv-line); margin-top:1rem; font-size:.85rem; }
.review-comparison>summary { color:var(--mv-accent); }
.review-comparison .hit-tile dd { flex-wrap:wrap; color:var(--mv-ink); }
.review-comparison .hit-tile small { font-size:.8rem; color:var(--mv-muted); }
.review-history>summary { flex-wrap:wrap; }
.review-history-content { padding:.5rem 0 .6rem; }
.review-cols { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:.6rem; margin-top:.75rem; font-size:.9rem; color:var(--mv-muted); }
.review-result { min-width:0; padding:.65rem .75rem; border-radius:.6rem; background:#f4f6f9; }
.review-result-label { display:block; font-size:.75rem; margin-bottom:.35rem; }
.review-result>div { display:flex; align-items:center; flex-wrap:wrap; gap:.3rem; }
.review-result.review-teacher { background:var(--mv-accent-soft); }
.review-cols strong { color:var(--mv-ink); }
.review-hit { display:inline-flex; align-items:center; gap:.2rem; font-size:.8rem; font-weight:600; color:var(--mv-muted); }
.review-hit.hit-yes { color:var(--mv-good); }
.review-hit.hit-no { color:var(--mv-bad); }
/* ---- 判讀輔助：五術色條、各術細節、主客對照表、卦象 */
.art-strip { display:flex; flex-wrap:wrap; gap:.35rem; list-style:none; margin:.5rem 0; padding:0; }
.art-chip { display:inline-flex; align-items:center; gap:.3rem; padding:.15rem .55rem; border-radius:.5rem; background:var(--tone-bg); color:var(--tone); font-size:.82rem; line-height:1.5; }
.art-chip-name { color:var(--mv-ink); font-weight:500; }
.art-chip-dir { font-weight:700; }
.art-chip small { color:var(--mv-muted); font-size:.74rem; }
.art-detail { padding:.3rem 0 .6rem; }
.art-detail-head { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem .6rem; margin:0 0 .5rem; }
.art-detail-meta { font-size:.85rem; color:var(--mv-muted); }
.art-reasons { margin:0 0 .6rem; padding-left:1.2rem; font-size:.95rem; }
.art-reasons li { margin-bottom:.15rem; }
.art-detail-line { display:flex; flex-wrap:wrap; gap:.3rem .5rem; margin:.5rem 0 0; font-size:.85rem; color:var(--mv-muted); }
.art-detail-line>span { display:inline-flex; align-items:center; padding:0 .5rem; border-radius:.4rem; background:#f2f4f7; line-height:1.7; }
.art-detail-foot { margin:.5rem 0 0; font-size:.78rem; color:var(--mv-muted); }
.side-compare { width:100%; border-collapse:collapse; font-size:.92rem; margin:.25rem 0; table-layout:fixed; }
.side-compare th,.side-compare td { padding:.3rem .45rem; border-bottom:1px solid var(--mv-line); vertical-align:top; overflow-wrap:anywhere; }
.side-compare thead th { font-size:.82rem; font-weight:600; }
.side-compare tbody th { width:5.5rem; font-size:.8rem; font-weight:400; color:var(--mv-muted); }
.side-compare .side-home { color:var(--mv-home); background:var(--mv-home-bg); }
.side-compare .side-away { color:var(--mv-away); background:var(--mv-away-bg); }
.side-compare td small { margin-left:.3rem; font-size:.74rem; color:var(--mv-muted); }
.hex-row { display:flex; flex-wrap:wrap; gap:.75rem 1.5rem; margin:.25rem 0 .5rem; }
.hexagram { margin:0; min-width:0; }
.hexagram figcaption { display:flex; align-items:baseline; flex-wrap:wrap; gap:.35rem; font-size:.85rem; color:var(--mv-muted); margin-bottom:.3rem; }
.hexagram figcaption b { font-size:1rem; color:var(--mv-ink); }
.hex-title { font-size:.78rem; padding:0 .4rem; border-radius:.3rem; background:#eef1f5; }
.hex-lines { display:grid; gap:.3rem; }
.hex-line { display:grid; grid-template-columns:3.2rem 4.4rem minmax(0,1fr); align-items:center; column-gap:.5rem; font-size:.84rem; color:var(--mv-muted); padding:.05rem .2rem; border-radius:.3rem; }
.hex-line.is-home { background:var(--mv-home-bg); }
.hex-line.is-away { background:var(--mv-away-bg); }
.hex-line.is-ti .hex-bar i { background:var(--mv-home); }
.hex-line.is-yong .hex-bar i { background:var(--mv-away); }
.hex-left { text-align:right; white-space:nowrap; }
.hex-bar { display:flex; gap:.5rem; height:.55rem; }
.hex-bar i { display:block; flex:1; background:var(--mv-ink); border-radius:1px; }
.hex-line.is-moving .hex-bar i { outline:2px solid var(--mv-warn); outline-offset:1px; }
.hex-right { display:flex; flex-wrap:wrap; align-items:center; gap:.25rem; min-width:0; }
.hex-mark { padding:0 .3rem; border-radius:.3rem; background:#eef1f5; color:var(--mv-ink); font-size:.76rem; }
.hex-moving { padding:0 .3rem; border-radius:.3rem; background:var(--mv-warn-bg); color:var(--mv-warn); font-size:.76rem; }
.hex-side { padding:0 .3rem; border-radius:.3rem; color:#fff; font-size:.76rem; }
.hex-side-home { background:var(--mv-home); }
.hex-side-away { background:var(--mv-away); }
.hex-flag { font-size:.72rem; color:var(--mv-bad); }
.hex-role { font-size:.72rem; padding:0 .3rem; border-radius:.3rem; background:#eef1f5; color:var(--mv-ink); }
.board-arts { margin-top:.4rem; font-size:.9rem; }
.board-arts>summary { padding:.3rem 0; color:var(--mv-accent); font-weight:500; }
.board-arts .art-row>summary { padding:.5rem 0; }
.board-arts .art-detail { padding-left:.2rem; }
.board-combined { display:flex; flex-wrap:wrap; align-items:center; gap:.4rem; margin:.35rem 0 0; font-size:.9rem; color:var(--mv-muted); }
.board-now-form { display:flex; flex-wrap:wrap; align-items:end; gap:.6rem; }
.board-now-form .form-control { max-width:16rem; }
@media (max-width:991px) { .match-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:575px) {
  html { font-size:17px; }
  .container { padding-left:1rem; padding-right:1rem; }
  .app-header-inner { min-height:58px; }
  .app-brand-mark { width:1.95rem; height:1.95rem; }
  .desktop-nav { display:none; }
  .app-content { padding-top:1.2rem; }
  .signed-in .app-content { padding-bottom:calc(6rem + env(safe-area-inset-bottom)); }
  .match-grid { grid-template-columns:minmax(0,1fr); gap:.85rem; }
  .match-card,.reading-panel { padding:1.05rem 1.1rem; }
  .detail-heading { padding:1rem 1.1rem; }
  .detail-heading h1 { font-size:1.4rem; }
  .verdict { font-size:1.7rem; }
  .detail-extra { padding-top:.3rem; padding-bottom:.3rem; }
  .odds-panel>summary,.odds-content { padding:.85rem 1.1rem; }
  .verdict-options { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .verdict-option { min-height:83px; }
  .verdict-actions { align-items:stretch; }
  .verdict-save-status { flex-basis:100%; }
  .verdict-action-buttons { width:100%; }
  .verdict-save { flex:1; }
  .board-progress { gap:.4rem; }
  .board-progress>div { padding:.6rem .5rem; }
  .board-progress dt { font-size:.72rem; }
  .board-group>.board-matches>.board-match,#unplaced>.board-matches>.board-match { padding:.85rem; margin-left:-.4rem; margin-right:-.4rem; }
  .review-overview { gap:.8rem; }
  .review-rate { min-width:5.7rem; }
  .review-rate strong { font-size:2.35rem; }
  .review-cols { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .review-result.review-teacher { grid-column:1 / -1; display:flex; align-items:center; justify-content:space-between; flex-wrap:wrap; gap:.4rem; }
  .review-teacher .review-result-label { margin-bottom:0; }
  .reading-panel.link-list { padding-top:.2rem; padding-bottom:.2rem; }
  .date-shortcuts { width:auto; }
  .date-shortcuts a { padding:.4rem .6rem; }
  /* 手機底部分頁列：圖示在上、文字在下，選中的圖示有底色 */
  .mobile-nav { display:flex; position:fixed; bottom:0; left:0; right:0; z-index:1030; gap:.25rem; padding:.3rem max(.5rem,env(safe-area-inset-right)) calc(.3rem + env(safe-area-inset-bottom)) max(.5rem,env(safe-area-inset-left)); background:rgba(255,255,255,.94); -webkit-backdrop-filter:saturate(1.6) blur(14px); backdrop-filter:saturate(1.6) blur(14px); border-top:1px solid var(--mv-line); }
  .mobile-nav a { flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.1rem; min-height:54px; font-size:.72rem; color:var(--mv-muted); text-decoration:none; }
  .nav-icon { display:grid; place-items:center; width:3.4rem; height:1.9rem; border-radius:999px; font-size:1.2rem; transition:background-color .15s; }
  .mobile-nav a[aria-current] { color:var(--mv-accent); font-weight:600; }
  .mobile-nav a[aria-current] .nav-icon { background:var(--mv-accent-soft); }
  .qimen-cell { font-size:.92rem; min-height:6.4rem; padding:.3rem .25rem .25rem; column-gap:.25rem; }
  .qimen-head { font-size:.88rem; }
  .qimen-pillars { grid-template-columns:repeat(4,2.2em); }
  .filter-panel { padding-left:.85rem; padding-right:.85rem; }
}
@media (max-width:399px) { .filter-date { width:100%; } }
@media (prefers-reduced-motion:reduce) { *,*::before,*::after { scroll-behavior:auto !important; transition:none !important; animation:none !important; } }
