/* 公開端版面｜規格：docs/03-功能規格-公開端.md、docs/08 §1、§3
   ------------------------------------------------------------------
   R-UI-005：這裡**沒有**任何 @media (prefers-color-scheme)。
             深淺兩套色由 css/tokens.css 的 [data-theme] 提供，
             需要不同色的地方一律用語意色組（--warn-bg/-text/-border）。
   R-UI-006：最小驗證寬度 320px。窄機只調間距與字級，不改版面結構。

   命名一律 p- 前綴（public），避免跟賽務端的 class 撞名。 */

.pub{padding-bottom:var(--sp-6)}
.ptabs.ptabs--division{display:grid;grid-template-columns:1fr 1fr 1.4fr 1fr;gap:6px;overflow:visible}
.ptabs--division .ptabs__btn{min-width:0;padding:8px 4px;flex-direction:column;justify-content:center;text-align:center;white-space:normal}

/* 晉級圖：隊伍由下往上合流。四隊在 320px 可讀；多輪保留節點寬度供橫向捲動。 */
.pbracket{padding:0 var(--sp-3)}
.pbracket__hint{font-size:var(--fs-xs);color:var(--text-secondary);margin:var(--sp-3) 0}
.pbracket__hint:has(.icon){display:flex;align-items:center;gap:6px}
.pbracket__hint .icon{flex:none}
.pbracket__viewport{position:relative;min-width:0}
.pbracket__scrollGuide{position:sticky;top:8px;z-index:2;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:2px 0;background:var(--bg-root);font-size:var(--fs-xs);color:var(--text-secondary)}
.pbracket__scrollGuide[hidden]{display:none}
.pbracket__scrollArrow{display:flex;align-items:center;justify-content:center;width:var(--tap);height:var(--tap);border:1px solid var(--control-border);border-radius:var(--r-md);background:var(--bg-card);color:var(--accent)}
.pbracket__scrollArrow .icon{width:24px;height:24px}
.pbracket__scrollArrow:disabled{opacity:.4}
.pbracket__section{margin:var(--sp-4) 0 var(--sp-5)}
.pbracket__heading{display:flex;align-items:center;gap:6px;font-size:var(--fs-md);margin:0 0 var(--sp-3)}
.pbracket__scroll{overflow-x:auto;padding:18px 0 12px;overscroll-behavior-x:contain}
.pbracket__scroll--gestures{height:min(70svh,640px);min-height:240px;padding:0;overflow:hidden;touch-action:pan-y;cursor:grab;border:0;border-radius:0}
.pbracket__scroll--gestures.is-dragging{cursor:grabbing}
.pbracket__scaleSpace{position:relative;width:100%;height:100%;overflow:hidden}
.pbracket__scaleSpace>.pbracket__tree{position:absolute;top:0;left:0;transform-origin:0 0;will-change:transform}
.pbracket__scroll--gestures .pbracket__node{user-select:none;-webkit-user-select:none}
.pbracket__tree{position:relative;isolation:isolate}
.pbracket__tier{display:grid;grid-template-columns:repeat(var(--bracket-leaves),minmax(0,1fr));gap:16px;position:relative}
.pbracket__tier+.pbracket__tier{margin-top:48px}
.pbracket__cell{display:flex;justify-content:center;align-items:stretch;min-width:0}
.pbracket__node{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px;min-width:160px;width:160px;max-width:160px;min-height:92px;padding:10px 5px;border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-card);color:var(--text-primary);box-shadow:var(--shadow-1);text-align:center;overflow-wrap:anywhere}
button.pbracket__node:hover{background:var(--control-hover);border-color:var(--control-selected-border)}
.pbracket__node--root{border-top:3px solid var(--accent);background:var(--accent-bg)}
.pbracket__node.is-winner{position:relative;padding-top:22px;border-color:var(--ok-border);background:linear-gradient(color-mix(in srgb,var(--success) 10%,transparent),color-mix(in srgb,var(--success) 10%,transparent)),var(--bg-card)}
button.pbracket__node.is-winner:hover{background:linear-gradient(color-mix(in srgb,var(--success) 16%,transparent),color-mix(in srgb,var(--success) 16%,transparent)),var(--bg-card)}
.pbracket__winnerMark{position:absolute;top:-15px;right:7px;z-index:1;color:var(--success);transform:rotate(-10deg);pointer-events:none}
.pbracket__winnerMark .icon{width:34px;height:34px;stroke-width:3;filter:drop-shadow(0 1px 1px var(--bg-card))}
.pbracket__node.is-pending .pbracket__name{color:var(--text-secondary)}
.pbracket__name{font-size:var(--fs-sm);font-weight:600}
.pbracket__source,.pbracket__game,.pbracket__status,.pbracket__time,.pbracket__pk{font-size:var(--fs-xs);color:var(--text-secondary)}
.pbracket__score{font-size:var(--fs-lg);font-weight:700}
.pbracket__links{position:absolute;inset:0;width:100%;height:100%;z-index:-1;pointer-events:none;overflow:visible}
.pbracket__links path{fill:none;stroke:var(--border-strong);stroke-width:2}
.pbracket>.pcard{margin:var(--sp-3) 0}
.pbracket__missing{padding:var(--sp-3);font-size:var(--fs-sm);color:var(--text-secondary)}

/* 首頁：冰藍薄霧吉祥物主視覺、快捷入口、分層比分卡。 */
.p-home{padding:var(--sp-4) var(--sp-3) var(--sp-6)}
.p-homeHero{position:relative;isolation:isolate;overflow:hidden;min-height:225px;padding:10px 18px;border-radius:18px;background:var(--home-hero-bg);color:var(--home-hero-text);margin-bottom:var(--sp-3);text-align:center}
.p-homeHero::before{content:"";position:absolute;z-index:-2;inset:18px 0 auto;width:100%;aspect-ratio:1874/839;background:url('/img/home/feda-mascots-soft-blue.webp') center/contain no-repeat;opacity:var(--home-hero-art-opacity);mask-image:linear-gradient(to bottom,transparent,#000 16%,#000 72%,transparent);pointer-events:none}
.p-homeHero::after{content:"";position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,transparent 15%,var(--home-hero-fog) 38%,var(--home-hero-fog) 62%,transparent 85%),linear-gradient(0deg,var(--home-hero-bg),transparent 56%);pointer-events:none}
.p-homeHero__brand{display:inline-grid;grid-template-columns:minmax(0,max-content);max-width:100%}
.p-homeHero__eyebrow{font-size:var(--fs-xs);letter-spacing:.12em;font-weight:600;margin:4px 0 0;opacity:.85}
.p-homeHero__title{font-size:38px;line-height:1.2;letter-spacing:.12em;padding-inline-start:.12em;margin:4px 0}
.p-homeHero__sponsor{font-size:var(--fs-sm);line-height:1.5;font-weight:600;margin:4px 0 8px}
.p-homeHero__slogan{font-size:var(--fs-sm);line-height:1.5;margin:0}
.p-homeHero__meta{display:flex;flex-wrap:wrap;justify-content:center;gap:var(--sp-3);font-size:var(--fs-xs);margin:6px 0 0;font-variant-numeric:tabular-nums}
.p-homeMetrics{width:max-content;max-width:100%;margin:10px auto 2px;padding:8px 16px;border-radius:12px;background:var(--home-metrics-bg);color:var(--home-metrics-text);text-align:center}
.p-homeMetrics__stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:0;text-align:center}
.p-homeMetrics__stat{min-width:0}
.p-homeMetrics dt{font-size:10px;line-height:1.5;opacity:.85;white-space:nowrap}
.p-homeMetrics dd{font-size:15px;font-weight:700;line-height:1.4;margin:0;font-variant-numeric:tabular-nums}
.p-homeMetrics[data-state="stale"] dd[data-metric="views"]{opacity:.75}
.p-homeShortcuts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--border);border-radius:12px;background:var(--bg-card);margin-bottom:var(--sp-4);overflow:hidden}
.p-homeShortcuts button{min-height:80px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;position:relative;font-size:var(--fs-sm);font-weight:600;padding:12px 4px}
.p-homeShortcuts button+button::before{content:'';position:absolute;left:0;height:30px;border-left:1px solid var(--border)}
.p-homeShortcuts .icon{width:22px;height:22px;color:var(--accent)}
.p-homeShortcuts button:hover{background:var(--control-hover)}
.p-home>.ptabs{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;padding:0;margin:var(--sp-3) 0}
.p-home>.ptabs .ptabs__btn{justify-content:center;white-space:normal;text-align:center;font-variant-numeric:tabular-nums;padding:10px 4px;font-size:var(--fs-sm);min-height:52px}
.p-home>.pub__challengeEntry{padding:var(--sp-3) 0;margin:var(--sp-3) 0;border:0;border-bottom:1px solid var(--border);border-radius:0}
.p-home .pub__challengeIcon{font-size:25px;width:38px;text-align:center}
.p-home>.pcard,.p-homeMatches>.pcard{margin:var(--sp-5) 0 0;padding:0;border:0;background:transparent;box-shadow:none}
.p-home .pcard__head{color:var(--text-primary);font-size:var(--fs-lg);margin:0 0 var(--sp-3);letter-spacing:.03em}
.p-home .pcard__head>.icon{width:18px;color:var(--accent)}
.p-home .plist{display:flex;gap:var(--sp-2)}
.p-home .prow{border:1px solid var(--border);border-inline-start:3px solid var(--division-color,var(--border));padding:0 10px;border-radius:10px;background:var(--division-soft,var(--bg-card));overflow:hidden}
.p-home .prow__btn{padding:8px 0;gap:3px}
.p-home .prow__team{overflow:visible;white-space:normal;text-overflow:clip;overflow-wrap:anywhere;line-height:1.3}
.p-home .prow__score{gap:6px}
.p-home .prow .division-badge{margin-top:0}
.p-home .plist--live .prow{box-shadow:var(--shadow-1)}
.p-home .plist--live .prow__score{padding:0}
.p-home .plist--live .prow__nums{font-size:var(--fs-lg);gap:6px}
.p-matchTabs{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:4px;border:1px solid var(--border);border-radius:12px;background:var(--bg-card);margin:var(--sp-3) 0 0}
.p-matchTabs__btn{min-width:0;min-height:var(--tap);padding:8px 2px;border-radius:8px;font-size:var(--fs-sm);font-weight:600;white-space:nowrap;color:var(--text-secondary)}
.p-matchTabs__btn.is-active{background:var(--control-selected-bg);color:var(--control-selected-text);box-shadow:inset 0 0 0 1px var(--control-selected-border)}
.p-homeMatches>.pcard{margin-top:var(--sp-3)}
.p-homeMatches .pcard__head{font-size:var(--fs-md);margin-bottom:8px}
.p-scorerTabs{margin:0 0 10px}
.p-home .pcard__foot{margin-top:4px}
.p-home .ptop{background:var(--bg-card);border-radius:12px;padding:0 var(--sp-3);border:1px solid var(--border)}
.p-home .pdiv{white-space:normal;min-height:56px}
.p-home .pdiv__name{overflow:visible;text-overflow:clip}
.p-home .empty{border:1px dashed var(--border-strong);border-radius:12px;background:var(--bg-card)}

/* ── 頁首 ───────────────────────────────────────────────── */
.phead{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-3);
  padding-top:calc(var(--sp-3) + env(safe-area-inset-top));
  background:var(--primary);color:#fff;
  position:sticky;top:0;z-index:60;
}
.phead__back{
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  min-width:var(--tap);min-height:var(--tap);color:#fff;font-size:var(--fs-lg);
}
.phead__title{display:flex;flex-direction:column;min-width:0;flex:1}
.phead__title strong{
  font-size:var(--fs-md);line-height:1.3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.phead__sub{font-size:var(--fs-xs);opacity:.8;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ── 分頁列 ─────────────────────────────────────────────── */
.ptabs{
  display:flex;gap:var(--sp-2);padding:var(--sp-3);
  overflow-x:auto;scrollbar-width:none;
}
.ptabs::-webkit-scrollbar{display:none}
.ptabs__btn{
  display:inline-flex;align-items:center;gap:5px;flex:none;
  min-height:var(--tap);padding:8px var(--sp-3);border-radius:var(--control-radius);
  background:var(--control-bg);border:1px solid var(--control-border);color:var(--text-secondary);
  font-size:var(--fs-sm);font-weight:600;white-space:nowrap;
}
.ptabs__btn.is-active{background:var(--control-selected-bg);border-color:var(--control-selected-border);color:var(--control-selected-text)}
.ptabs--sub{padding-top:0}

/* ── 篩選列 ─────────────────────────────────────────────── */
.pfilter{display:flex;gap:var(--sp-2);padding:0 var(--sp-3) var(--sp-3);flex-wrap:wrap}
.pfilter__sel{flex:1;min-width:120px;min-height:var(--tap)}
.pfilter .chip{flex:none}

/* ── 區塊卡片 ───────────────────────────────────────────── */
.pcard{
  background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);
  margin:var(--sp-3);padding:var(--sp-3);box-shadow:var(--shadow-1);
}
.pcard__head{
  display:flex;align-items:center;gap:6px;
  margin:0 0 var(--sp-2);font-size:var(--fs-md);color:var(--text-secondary);
}
.pcard__foot{display:flex;justify-content:flex-end;margin-top:var(--sp-2)}
.pcard .empty{padding:var(--sp-4) var(--sp-2)}

/* ── 場次列 ─────────────────────────────────────────────── */
.plist{list-style:none;margin:0;padding:0 var(--sp-3);display:flex;flex-direction:column}
/* 卡片裡的清單已經有卡片的內距，不要疊兩層（首頁、組別頁、球隊頁） */
.pcard .plist{padding:0}
/* 時段標題跟場次列同一個左右內距，不然 08:30 會貼在螢幕邊 */
.pslot{margin:var(--sp-4) var(--sp-3) var(--sp-2)}
/* 賽程頁：每個時段一張卡，場次列不再直接貼在頁面底色上（驗收反饋 A-3：太多列會眼花） */
.psched .plist{
  background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);
  margin:0 var(--sp-3);box-shadow:var(--shadow-1);
}
/* 積分榜的進度說明（尚未開賽／進行中） */
.pstand__phase{margin:0 0 var(--sp-2)}
.prow{display:flex;align-items:stretch;gap:var(--sp-2);border-top:1px solid var(--border)}
.prow.prow--bracket{flex-direction:column;gap:0}
.prow.division-card.prow--bracket{padding-inline:var(--sp-2)}
.prow__bracketActions{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:4px;padding-bottom:8px}
.prow__bracketActions>.division-badge{align-self:center;min-width:0;white-space:normal;overflow-wrap:anywhere;margin-top:0}
.prow__bracketLink{grid-column:2;display:inline-flex;align-items:center;justify-content:center;gap:5px;min-height:var(--tap);padding:6px 10px;border:1px solid var(--control-border);border-radius:var(--control-radius);background:var(--control-bg);color:var(--division-color,var(--text-primary));font-size:var(--fs-xs);font-weight:600;white-space:nowrap}
.prow__bracketLink:hover{background:var(--control-hover);border-color:var(--control-selected-border)}
.prow:first-child{border-top:0}
/* 未定隊伍（排名階段還沒解算）：虛線框 ＋ 斜體，一眼看得出「還不確定」 */
.prow.is-placeholder .prow__team{font-style:italic;color:var(--text-muted)}
.prow.is-placeholder{border-left:2px dashed var(--border-strong)}

.prow__btn{
  flex:1;min-width:0;display:flex;flex-direction:column;gap:4px;
  padding:var(--sp-3) 0;text-align:left;
}
.prow__head{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.prow__time{font-size:var(--fs-sm);color:var(--text-secondary);flex:none;
  font-variant-numeric:tabular-nums}
.prow__meta{
  flex:1;min-width:0;font-size:var(--fs-xs);color:var(--text-muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.prow__meta--stream{display:flex;align-items:center;gap:var(--sp-2)}
.prow__metaText{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.prow__stream{display:inline-flex;align-items:center;gap:4px;flex:none;color:var(--accent);font-weight:700}
.prow__score{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.prow__team{
  flex:1;min-width:0;font-size:var(--fs-sm);font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.prow__team--away{text-align:right}
.prow__nums{display:flex;align-items:center;gap:6px;flex:none;
  font-size:var(--fs-md);font-weight:700;font-variant-numeric:tabular-nums}
.prow__dash{color:var(--text-muted);font-weight:400}
.prow__note{font-size:var(--fs-xs);color:var(--text-muted)}

/* ── 狀態徽章：顏色一定伴隨文字（docs/03 §12.5）─────────── */
.pbadge{display:inline-flex;align-items:center;gap:5px;flex:none;
  font-size:var(--fs-xs);font-weight:700;color:var(--text-secondary)}
.pbadge[data-status="live"]{color:var(--live)}
.pbadge[data-status="halftime"]{color:var(--pending)}
.pbadge[data-status="finished"],
.pbadge[data-status="confirmed"]{color:var(--finished)}
.pbadge[data-status="postponed"],
.pbadge[data-status="cancelled"]{color:var(--text-muted)}
.pbadge__text{white-space:nowrap;font-variant-numeric:tabular-nums}

/* ── 關注 ───────────────────────────────────────────────── */

/* ── 首頁小卡 ───────────────────────────────────────────── */
.pchips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.ptop{list-style:none;margin:0;padding:0;counter-reset:t}
.ptop__row{
  display:grid;grid-template-columns:2em 1fr auto auto;gap:var(--sp-2);
  align-items:center;min-height:var(--tap);border-top:1px solid var(--border);
}
.ptop__row:first-child{border-top:0}
.ptop__rank{color:var(--text-muted);font-size:var(--fs-sm)}
.ptop__name{font-weight:700;font-size:var(--fs-sm);min-width:0;text-align:left;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ptop__team{font-size:var(--fs-xs);color:var(--text-muted);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:8em}
.ptop__val{font-weight:700;font-size:var(--fs-sm);white-space:nowrap}

.pdiscipline{display:grid;gap:var(--sp-3);min-width:0;padding:0 var(--sp-3)}
.pdiscipline .pcard{margin:0}
.pdiscipline__intro{font-size:var(--fs-sm);line-height:1.7;overflow-wrap:anywhere}
.pdiscipline__intro p{margin:0 0 var(--sp-2)}
.pdiscipline__rules{border-top:1px solid var(--border);padding-top:var(--sp-2)}
.pdiscipline__rules summary{cursor:pointer;font-weight:600;min-height:var(--tap);align-content:center}
.pdiscipline__rules ul{padding-left:1.5em}
.pdiscipline__list{list-style:none;margin:0;padding:0}
.pdiscipline__row{padding:var(--sp-3) 0;border-top:1px solid var(--border);min-width:0}
.pdiscipline__row:first-child{border-top:0;padding-top:0}
.pdiscipline__team{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);width:100%;text-align:left;font-weight:700;color:var(--division-ink,var(--text));min-height:var(--tap);white-space:normal;overflow-wrap:anywhere}
.pdiscipline__team span{min-width:0}
.pdiscipline__team .icon{flex:none}
.pdiscipline__played{margin:2px 0 var(--sp-2);font-size:var(--fs-xs);color:var(--text-muted)}
.pdiscipline__metrics{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:var(--sp-2);margin:0;padding:var(--sp-3);background:var(--division-soft,var(--bg));border-radius:12px}
.pdiscipline__metrics dt{font-size:var(--fs-xs);color:var(--text-muted)}
.pdiscipline__metrics dd{margin:var(--sp-1) 0 0;font-size:var(--fs-md);font-weight:700;white-space:nowrap}
.pdiscipline__details{margin-top:var(--sp-2)}
.pdiscipline__details summary{cursor:pointer;min-height:var(--tap);align-content:center;font-size:var(--fs-sm);font-weight:600;color:var(--division-ink,var(--text))}
.pdiscipline__table{width:100%;table-layout:fixed;border-collapse:collapse;font-size:var(--fs-xs);text-align:left}
.pdiscipline__table th,.pdiscipline__table td{padding:var(--sp-2) 4px;border-bottom:1px solid var(--border);vertical-align:top;overflow-wrap:anywhere}
.pdiscipline__table th:first-child{width:46%}
.pdiscipline__table th:nth-child(2){width:23%}
.pdiscipline__table td span,.pdiscipline__table td strong,.pdiscipline__table td small{display:block}
.pdiscipline__table small{margin-top:4px;color:var(--text-muted)}
.pdiscipline__match{display:block;width:100%;min-height:var(--tap);text-align:left;white-space:normal;color:var(--division-ink,var(--text));font-size:inherit;line-height:1.6}
.pdiscipline__card-type{margin-top:4px;border-radius:4px;padding:2px 4px;background:var(--warn-bg);color:var(--warn-text);font-weight:600}
.pdiscipline__card-type[data-card="red"],.pdiscipline__card-type[data-card="second_yellow"]{background:var(--danger-bg);color:var(--danger-text)}

.psponsor{
  margin:var(--sp-4) var(--sp-3) 0;padding:var(--sp-3);
  border-top:1px solid var(--border);
  display:flex;flex-direction:column;gap:var(--sp-2);align-items:center;text-align:center;
}
.psponsor__label{font-size:var(--fs-xs);color:var(--text-muted)}
.psponsor__partners{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));column-gap:clamp(12px,4vw,32px);width:100%;max-width:480px}
.psponsor__partner{min-width:0;margin:0;display:flex;flex-direction:column;align-items:center;gap:var(--sp-2)}
.psponsor__art{--sponsor-height:clamp(116px,30vw,180px);height:var(--sponsor-height);width:100%;display:flex;align-items:center;justify-content:center}
/* 裁掉兩張透明圖的留白，保留圖案比例；兩欄在 320px 仍然並排。 */
.psponsor__logoCrop{position:relative;overflow:hidden;flex:none}
.psponsor__logoCrop--hongming{width:min(100%,160px,calc(var(--sponsor-height) * 1058 / 1159));aspect-ratio:1058/1159}
.psponsor__logoCrop--mizuno{width:min(100%,200px);aspect-ratio:1000/555}
.psponsor__logo{position:absolute;display:block;height:auto;max-width:none;filter:brightness(0)}
.psponsor__logo--hongming{left:calc(-100% * 98 / 1058);top:calc(-100% * 53 / 1159);width:calc(100% * 1254 / 1058)}
.psponsor__logo--mizuno{left:calc(-100% * 135 / 1000);top:calc(-100% * 370 / 555);width:calc(100% * 1254 / 1000)}
[data-theme="dark"] .psponsor__logo{filter:brightness(0) invert(1)}
.psponsor__name{font-size:var(--fs-sm);line-height:1.5;font-weight:700;color:var(--text-secondary);overflow-wrap:anywhere;text-wrap:balance}
.psponsor__toosterx{width:100%;display:flex;justify-content:center;padding-top:16px}
.psponsor__toosterxLogo{display:block;width:min(240px,100%);height:auto;filter:brightness(0)}
[data-theme="dark"] .psponsor__toosterxLogo{filter:brightness(0) invert(1)}
/* 版號：回報問題時要唸得出來（驗收 P-1） */
.pver{margin:var(--sp-2) var(--sp-3) 0;text-align:center;font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}

/* ── LIVE 比賽頁 ────────────────────────────────────────── */
.psb{
  display:flex;flex-direction:column;align-items:center;gap:var(--sp-2);
  padding:var(--sp-4) var(--sp-3);background:var(--bg-card);
  border-bottom:1px solid var(--border);
}
.psb__status{display:inline-flex;align-items:center;gap:6px;
  font-size:var(--fs-sm);font-weight:700;color:var(--text-secondary)}
.psb[data-status="live"] .psb__status{color:var(--live)}
.psb__statusText{font-variant-numeric:tabular-nums}
.psb__row{display:flex;align-items:center;gap:var(--sp-2);width:100%}
.psb__team{
  flex:1;min-width:0;font-size:var(--fs-sm);font-weight:700;text-align:center;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
}
.psb__nums{display:flex;align-items:center;gap:var(--sp-2);flex:none;
  font-size:var(--fs-score);font-weight:700;line-height:1;
  font-variant-numeric:tabular-nums}
.psb__dash{color:var(--text-muted);font-size:var(--fs-xl)}
.psb__num{min-width:1.1em;text-align:center;display:inline-block}
/* 比分變動時彈跳一下（docs/03 §4.3） */
.psb__num.is-bump{animation:psb-bump .25s ease-out}
@keyframes psb-bump{0%{transform:scale(1)}45%{transform:scale(1.28)}100%{transform:scale(1)}}
.psb__ht,.psb__note{margin:0;font-size:var(--fs-sm);color:var(--text-muted)}

.pmatch__actions{display:flex;gap:var(--sp-2);padding:var(--sp-3);align-items:center}

/* 事件流 */
.ptl{list-style:none;margin:0;padding:0 var(--sp-3)}
.ptl__item{
  display:grid;grid-template-columns:3.4em auto 1fr auto;gap:var(--sp-2);
  align-items:center;min-height:48px;padding:var(--sp-2) 0;
  border-bottom:1px solid var(--border);
  animation:ptl-in .18s ease-out;
}
@keyframes ptl-in{from{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}
.ptl__min{font-size:var(--fs-sm);color:var(--text-muted);font-variant-numeric:tabular-nums}
.ptl__icon{display:inline-flex;font-size:var(--fs-md);color:var(--text-secondary)}
.ptl__text{font-size:var(--fs-sm);min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ptl__team{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap;
  max-width:6em;overflow:hidden;text-overflow:ellipsis}

/* 陣容 */
.plineup{display:grid;grid-template-columns:1fr 1fr;gap:var(--sp-2);padding:var(--sp-3)}
.plineup__team{margin:0 0 var(--sp-2);font-size:var(--fs-sm);font-weight:700;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plineup__list{list-style:none;margin:0;padding:0}
.plineup__row{display:grid;grid-template-columns:2em 1fr auto;gap:6px;
  align-items:center;min-height:40px;border-top:1px solid var(--border)}
.plineup__row:first-child{border-top:0}
.plineup__no{color:var(--text-muted);font-size:var(--fs-xs);font-variant-numeric:tabular-nums}
.plineup__name{font-size:var(--fs-sm);text-align:left;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.plineup__pos{font-size:var(--fs-xs);color:var(--text-muted)}

/* 統計表 */
.pstats{width:100%;border-collapse:collapse;margin:var(--sp-3) 0}
.pstats th,.pstats td{padding:var(--sp-2);font-size:var(--fs-sm);text-align:center}
.pstats thead th{color:var(--text-muted);font-size:var(--fs-xs);
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:8em}
.pstats tbody th{color:var(--text-muted);font-weight:400;font-size:var(--fs-xs)}
.pstats tbody td{font-weight:700;font-variant-numeric:tabular-nums}
.pstats tbody tr{border-top:1px solid var(--border)}

/* ── 積分榜 ─────────────────────────────────────────────── */
.pstand{margin:0}
/* 名稱使用剩餘寬度、獨立捲動，數據欄在 320px 也完整顯示。 */
.ptable-wrap{min-width:0}
.ptable{width:100%;border-collapse:collapse;table-layout:fixed}
.ptable th,.ptable td{padding:6px 1px;font-size:var(--fs-sm);text-align:center;white-space:nowrap}
.ptable thead th{font-size:var(--fs-xs);color:var(--text-muted);font-weight:700}
.ptable th.is-left,.ptable td.is-left{text-align:left}
.ptable tbody tr{border-top:1px solid var(--border)}
.ptable td{font-variant-numeric:tabular-nums}
.ptable th:not(:nth-child(2)),.ptable td:not(:nth-child(2)){width:28px}
.ptable th:nth-child(7),.ptable td:nth-child(7),
.ptable th:nth-child(8),.ptable td:nth-child(8){width:32px}
.ptable th:nth-child(9),.ptable td:nth-child(9){width:40px}
.ptable th:nth-child(10),.ptable td:nth-child(10){width:34px}
.ptable th:nth-child(2),.ptable td:nth-child(2){width:auto;min-width:0}
.ptable__nameScroll{min-width:0;overflow-x:auto;overscroll-behavior-x:contain;
  scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent}
.ptable__nameScroll:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}
.ptable__teamName{display:block;white-space:nowrap}
.ptable__nameScroll[data-overflow]:not([data-at-end]){
  -webkit-mask-image:linear-gradient(to right,var(--text-primary) calc(100% - 1.2em),transparent);
  mask-image:linear-gradient(to right,var(--text-primary) calc(100% - 1.2em),transparent);
}
/* 隊名可以點進球隊頁：整顆按鈕都是觸控目標，高度不得低於 --tap（驗收 D-15） */
button.ptable__team{
  display:inline-flex;align-items:center;min-height:var(--tap);
  width:max-content;min-width:100%;padding:0 3px;border:0;background:none;font:inherit;text-align:left;
  /* 看得出可以按：粗體、主色、細底線（不只靠顏色） */
  font-weight:700;color:var(--accent);cursor:pointer;
  text-decoration:underline;text-decoration-color:var(--border-strong);text-underline-offset:3px;
}
button.ptable__team:hover,button.ptable__team:focus-visible{text-decoration-color:var(--accent)}
.ptable__pts{font-weight:700}
/* 階段分層：每列底部保留獨立標籤帶，320px 仍不折行、不遮住固定成績。 */
.ptable tr:is(.pstand__row--advance,.pstand__row--bye) td{vertical-align:top;padding-bottom:calc(var(--tap) + 4px)}
.ptable tr:is(.pstand__row--advance,.pstand__row--bye) td.num{padding-top:26px}
.ptable tr:is(.pstand__row--advance,.pstand__row--bye) td.is-left{position:relative}
.ptable tr:is(.pstand__row--advance,.pstand__row--bye) .ptable__team{align-items:flex-end}
.pstand__advance{position:absolute;left:3px;bottom:0;display:inline-flex;align-items:flex-start;width:max-content;min-height:var(--tap);padding:0;border:0;background:transparent;font:inherit;font-size:var(--fs-xs);font-weight:600;white-space:nowrap;text-align:left;cursor:pointer}
.pstand__advance-pill{display:inline-flex;align-items:center;gap:5px;padding:2px 8px;border:1px solid var(--ok-border);border-radius:999px;background:var(--ok-bg);color:var(--ok-text);line-height:1.4}
.pstand__advance span{white-space:nowrap}
.pstand__advance .icon{flex:none}
.pstand__advance--bye .pstand__advance-pill{background:var(--accent-bg);color:var(--accent);border-color:var(--control-selected-border)}
.pstand__advance:hover .pstand__advance-pill{filter:brightness(.97)}
.pstand__row--advance td:first-child{box-shadow:inset 3px 0 0 var(--success)}
.pstand__row--bye td:first-child{box-shadow:inset 3px 0 0 var(--accent)}
.pstand-final__podium{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:end;gap:8px;margin:var(--sp-2) 0 var(--sp-3)}
.pstand-final__place{min-width:0;text-align:center}
.pstand-final__team{display:block;max-width:100%;min-height:var(--tap);margin:auto;padding:6px 3px;border:0;background:none;color:var(--accent);font:inherit;font-size:var(--fs-sm);font-weight:700;overflow-wrap:anywhere;white-space:normal;text-align:inherit;cursor:pointer;text-decoration:underline;text-underline-offset:3px}
.pstand-final__base{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;min-height:84px;padding:10px 4px;border-radius:var(--r-md) var(--r-md) 0 0;background:var(--accent-bg);color:var(--accent);font-size:var(--fs-xs);font-weight:600}
.pstand-final__base .icon{width:24px;height:24px}
.pstand-final__place--2 .pstand-final__base{min-height:66px;background:var(--bg-elevated);color:var(--text-secondary)}
.pstand-final__place--3 .pstand-final__base{min-height:52px;background:var(--warn-bg);color:var(--warn-text)}
.pstand-final__list{list-style:none;padding:0;margin:0}
.pstand-final__row{display:flex;align-items:center;gap:10px;padding:6px 0;border-top:1px solid var(--border)}
.pstand-final__row .pstand-final__team{margin:0;text-align:left;min-width:0}
.pstand-final__rank{flex:none;padding:5px 8px;border-radius:var(--r-sm);background:var(--bg-elevated);color:var(--text-secondary);font-size:var(--fs-xs)}
.pstand-final__pending{font-size:var(--fs-sm);color:var(--text-secondary);margin:var(--sp-3) 0}
@media(max-width:479px){
  .ptable th,.ptable td{font-size:12px}
  .ptable thead th{font-size:11px}
  .ptable th:not(:nth-child(2)),.ptable td:not(:nth-child(2)){width:20px}
  .ptable th:first-child,.ptable td:first-child{width:25px}
  .ptable th:nth-child(7),.ptable td:nth-child(7),
  .ptable th:nth-child(8),.ptable td:nth-child(8){width:28px}
  .ptable th:nth-child(9),.ptable td:nth-child(9){width:36px}
  .ptable th:nth-child(10),.ptable td:nth-child(10){width:30px}
}
/* 晉級區：底色 ＋ 左邊條，兩個訊號不只靠顏色 */
.ptable tbody tr.is-qualified{background:var(--ok-bg)}
.ptable tbody tr.is-qualified td:first-child{
  box-shadow:inset 3px 0 0 var(--finished);
}
/* 排不出名次的那一列：不要偷偷給它一個數字 */
.ptable tbody tr.is-unresolved td{color:var(--text-muted);font-style:italic}
.pstand__legend{display:flex;align-items:center;gap:4px;flex-wrap:wrap;
  margin:var(--sp-2) 0 0;font-size:var(--fs-xs);color:var(--text-muted)}

/* ── 球隊／球員 ─────────────────────────────────────────── */
.prec{display:flex;gap:var(--sp-2);padding:var(--sp-3);flex-wrap:wrap}
.prec__cell{
  flex:1;min-width:56px;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:var(--sp-2);border-radius:var(--r-md);background:var(--bg-elevated);
}
.prec__val{font-size:var(--fs-lg);font-weight:700;font-variant-numeric:tabular-nums}
.prec__label{font-size:var(--fs-xs);color:var(--text-muted)}

.proster{list-style:none;margin:0;padding:0}
.proster__row{border-top:1px solid var(--border)}
.proster__row:first-child{border-top:0}
.proster__btn{
  /* 五個子節點就要五欄：背號／姓名＋隊長／位置／進球／箭頭。
     欄數少一個，多出來的那個會掉到第二行（320px 上特別明顯）。 */
  display:grid;grid-template-columns:2.4em minmax(0,1fr) auto auto auto;gap:var(--sp-2);
  align-items:center;width:100%;min-height:var(--tap);padding:var(--sp-2) 0;text-align:left;
}
.proster__nameWrap{display:flex;flex-wrap:wrap;align-items:center;gap:6px;min-width:0}
.proster__no{color:var(--text-muted);font-size:var(--fs-sm);font-variant-numeric:tabular-nums}
.proster__name{font-weight:700;font-size:var(--fs-sm);min-width:0;
  overflow-wrap:anywhere;line-height:1.5}
.proster__tag{font-size:var(--fs-xs);color:var(--accent);background:var(--accent-bg);
  padding:1px 6px;border-radius:var(--r-full);white-space:nowrap}
.proster__pos,.proster__goals{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}

.pteams{list-style:none;margin:0;padding:0 var(--sp-3)}
.pteams__btn{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);
  width:100%;min-height:var(--tap);border-top:1px solid var(--border);color:var(--text-primary)}
.pteams li:first-child .pteams__btn{border-top:0}
.pteams__name{font-weight:700;font-size:var(--fs-sm);min-width:0;
  overflow-wrap:anywhere;line-height:1.5}

.papp{list-style:none;margin:0;padding:0}
.papp__row{display:grid;grid-template-columns:auto 1fr auto;gap:var(--sp-2);
  align-items:center;min-height:var(--tap);border-top:1px solid var(--border)}
.papp__row:first-child{border-top:0}
.papp__date{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}
.papp__opp{font-size:var(--fs-sm);font-weight:700;text-align:left;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.papp__marks{font-size:var(--fs-xs);color:var(--text-muted);white-space:nowrap}

/* ── 直播 ───────────────────────────────────────────────── */
.video{
  position:relative;aspect-ratio:16/9;width:100%;
  background:var(--bg-elevated);border-radius:var(--r-md);overflow:hidden;
}
.video iframe{width:100%;height:100%;border:0;display:block}
.video[data-provider="twitch"]{min-height:300px}
.video__external{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--sp-3);padding:var(--sp-3);text-align:center;overflow-wrap:anywhere}
.video__poster{
  position:absolute;inset:0;width:100%;height:100%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  color:var(--text-secondary);
}
.video__poster img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.video__play{
  position:relative;display:inline-flex;align-items:center;justify-content:center;
  width:56px;height:56px;border-radius:50%;
  background:var(--accent);color:var(--text-on-accent);font-size:var(--fs-xl);
}
.video__hint{position:relative;font-size:var(--fs-xs);font-weight:700}
.video__off{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:6px;
  color:var(--text-muted);font-size:var(--fs-sm);
}

.pwall{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3)}
.pwall__cell{
  background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-lg);
  padding:var(--sp-3);display:flex;flex-direction:column;gap:var(--sp-2);
}
.pwall__head{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2)}
.pwall__score{
  display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);
  font-size:var(--fs-sm);font-weight:700;width:100%;min-height:36px;
}
.pwall__score span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.pwall__score .num{flex:none;font-variant-numeric:tabular-nums}

/* ── 404 ────────────────────────────────────────────────── */
.p404{
  min-height:100vh;min-height:100dvh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:var(--sp-3);padding:var(--sp-6) var(--sp-4);text-align:center;
}
.p404__code{font-size:var(--fs-2xl);font-weight:700;color:var(--text-muted);
  font-variant-numeric:tabular-nums}
.p404__title{margin:0;font-size:var(--fs-lg)}
.p404__note{margin:0;color:var(--text-muted);font-size:var(--fs-sm);max-width:32ch}

/* ── 320–359px：只調間距與字級，不改結構 ───────────────── */
@media (max-width:359px){
  .pcard{margin:var(--sp-2);padding:var(--sp-2)}
  .plineup{grid-template-columns:1fr;gap:var(--sp-3)}
  .ptl__item{grid-template-columns:3em auto 1fr;row-gap:0}
  .ptl__team{grid-column:3;font-size:10px;max-width:100%;text-align:right}
  .proster__btn{grid-template-columns:2.2em minmax(0,1fr) auto auto auto}
  .prec__cell{min-width:48px;padding:6px 2px}
}

/* ── 桌機：置中不拉寬（賽事網站的主場是手機）───────────── */
@media (min-width:840px){
  .pwall{display:grid;grid-template-columns:1fr 1fr}
}

/* ── 挑戰區入口（docs/06 §9）─────────────────────────────
   放在首頁最上面：現場立牌的 QR 掃進來就是這一頁，而掃立牌的人
   多半是路過想玩遊戲的。藏在底下的話攤位就沒有人。 */
.pub__challengeEntry {
  display: flex; align-items: center; gap: var(--sp-3);
  width: 100%; box-sizing: border-box;
  padding: var(--sp-3);
  min-height: var(--tap);
  border: 0;
  border-radius: var(--r-md);
  background: transparent;
  color: var(--text-primary);
  font: inherit; text-align: left; cursor: pointer;
}
.pub__challengeIcon { flex: none; font-size: 1.8em; color: var(--accent); line-height: 1; }
.pub__challengeMain { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.pub__challengeSub { font-size: var(--fs-xs); color: var(--text-secondary); }
.pub__challengeGo { flex: none; color: var(--accent); }

/* ── 申訴徽章（規章第二十條）── */
.psb__appeal{font-weight:600}
.psb__appeal[data-status="filed"]{color:var(--warn-text)}
.psb__appeal[data-status="upheld"]{color:var(--success)}
.psb__appeal[data-status="dismissed"]{color:var(--text-muted)}


/* ══ UI 打磨（2026-09-06 預覽版）═══════════════════════════════ */
/* 頁首：標題再大一級，並在黏頂時跟內容分得開 */
.phead{box-shadow:0 2px 10px rgba(9,16,14,.18)}
.phead__title strong{font-size:var(--fs-lg);letter-spacing:.01em}
/* 卡片標題：主文字色＋主色圖示，原本整行都是灰的，跟內容分不出層次 */
.pcard__head{color:var(--text-primary);font-weight:700}
.pcard__head svg{color:var(--accent)}
/* 還沒開打的「vs」：小字、大寫、字距，不要跟比分用同一種樣子 */
.prow__dash.is-vs{font-size:var(--fs-xs);font-weight:700;letter-spacing:.14em;text-transform:uppercase;color:var(--text-muted)}
.prow__num{font-weight:800}
/* 記分板：數字是這一頁的主角 */
.psb__num{font-weight:800;letter-spacing:-.02em}
.psb__dash{font-weight:400}
/* 首頁「各組即時排名」：兩欄的組別磚，帶組別色點，不再是一排灰色小膠囊 */
.pchips{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}
.pdiv{
  justify-content:flex-start;gap:var(--sp-2);min-height:var(--tap);
  border-radius:var(--control-radius);background:var(--control-bg);font-weight:600;white-space:nowrap;overflow:hidden;
}
.pdiv__dot{width:10px;height:10px;border-radius:50%;background:var(--division-color,var(--accent));flex:none}
.pdiv__name{overflow:hidden;text-overflow:ellipsis}
.pdiv[data-division-tone]{background:var(--division-soft);color:var(--division-ink);border-color:color-mix(in srgb,var(--division-color) 42%,var(--border));border-inline-start:3px solid var(--division-color)}
.prow.division-card{padding-inline-start:var(--sp-2)}
.prow .division-badge{align-self:flex-start;margin-top:4px;font-size:var(--fs-xs)}
.ptop__row[data-division-tone]{border-inline-start:3px solid var(--division-color);padding-inline-start:var(--sp-2)}
/* 射手榜：名次淡、進球數重 */
.ptop__val{font-size:var(--fs-md)}

/* 分頁列跟上面的頁首／記分板拉開距離，膠囊之間也鬆一點（2026-09-06 主辦看預覽版的回饋） */
.ptabs{gap:var(--sp-3)}
.ptabs--sub{padding:var(--sp-4) var(--sp-3) var(--sp-3)}
.ptabs[aria-label="日期"]{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}
.ptabs[aria-label="日期"] .ptabs__btn{min-width:0;justify-content:center;white-space:normal;text-align:center;padding:10px 4px}

/* PK 決勝（正規時間平手時的勝負） */
.prow__pk,.psb__pk{font-weight:700;color:var(--text-secondary)}

/* 用戶直播：單筆醒目、多筆收緊；點擊區域保留至少 44px。 */
.pshares{margin-top:var(--sp-4);padding:var(--sp-3);border:1px solid var(--border);border-radius:12px;background:var(--bg-card);min-width:0}
.pshares[hidden]{display:none}
.pshares__head{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap;margin-bottom:8px}
.pshares__head h2{font-size:var(--fs-md);margin:0}
.pshares__head .btn{font-size:var(--fs-sm);padding-inline:8px}
.pshares__note{font-size:var(--fs-sm);color:var(--text-muted);line-height:1.6;margin:8px 0}
.pshares__grid{list-style:none;padding:0;margin:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.pshares__item{min-width:0;padding:8px;border:1px solid var(--border);border-radius:10px}
.pshares__byline{display:flex;align-items:center;gap:4px;min-height:32px;margin-bottom:6px}
.pshares__name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:var(--fs-sm);font-weight:600}
.pshares__remove{display:grid;place-items:center;width:44px;min-width:44px;height:44px;color:var(--text-muted);border-radius:8px}
.pshares__remove:hover{background:var(--control-hover);color:var(--text-primary)}
.pshares__yt{display:flex;align-items:center;justify-content:center;gap:8px;min-height:48px;width:100%;padding:8px;border-radius:8px;background:var(--youtube-bg);color:var(--youtube-text);font-size:16px;font-weight:700}
.pshares__yt:hover{background:var(--youtube-hover)}
.pshares__yt[data-provider="twitch"]{--youtube-bg:var(--twitch-bg);--youtube-hover:var(--twitch-hover);--youtube-text:var(--twitch-text)}
.pshares__ytLogo{display:grid;place-items:center;width:28px;height:22px;border-radius:6px;background:var(--youtube-text);color:var(--youtube-bg)}
.pshares__ytLogo .icon{width:18px;height:18px;fill:currentColor;stroke-width:0}
.pshares__grid[data-density="solo"]{grid-template-columns:minmax(0,1fr)}
.pshares__grid[data-density="solo"] .pshares__item{padding:16px}
.pshares__grid[data-density="solo"] .pshares__name{font-size:var(--fs-lg)}
.pshares__grid[data-density="solo"] .pshares__yt{min-height:64px;font-size:21px}
.pshares__grid[data-density="solo"] .pshares__ytLogo{width:38px;height:28px}
.pshares__grid[data-density="compact"]{gap:6px}
.pshares__grid[data-density="compact"] .pshares__item{padding:5px}
.pshares__grid[data-density="compact"] .pshares__byline{margin-bottom:4px}
.pshares__grid[data-density="compact"] .pshares__name{font-size:13px}
.pshares__grid[data-density="compact"] .pshares__yt{min-height:44px;font-size:14px;gap:6px}
.pshares__grid[data-density="compact"] .pshares__ytLogo{width:24px;height:18px}
.pshares__more{width:100%;margin-top:8px}
.pshares__form{display:flex;flex-direction:column;gap:8px;margin-top:12px;border-top:1px solid var(--border);padding-top:12px}
.pshares__form label{font-size:var(--fs-sm);font-weight:600}
.pshares__form input{width:100%;min-width:0;min-height:44px;padding:10px;border:1px solid var(--border);border-radius:8px;background:var(--bg-root);color:var(--text-primary)}
.pshares__message{font-size:var(--fs-sm);margin:12px 0 0;color:var(--text-primary)}
.pshares__player{margin-top:12px;min-width:0}
.pshares__playerHead{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:var(--fs-sm);overflow-wrap:anywhere}
.pshares__player .video{min-height:200px}
.pshares__player .video iframe{min-height:200px}
@media(min-width:600px){.pshares__grid[data-density="compact"]{grid-template-columns:repeat(auto-fit,minmax(140px,1fr))}}

/* 首頁場地配置：保留圖片全幅，深淺主題沿用設計 tokens。 */
.venue-map{border:1px solid var(--border);border-radius:var(--r-lg);background:var(--bg-card);color:var(--text-primary);padding:0;width:min(920px,calc(100vw - 24px));max-width:none;max-height:calc(100dvh - 32px);overflow:auto;box-shadow:var(--shadow-2);animation:venue-map-in .22s ease-out}
.venue-map::backdrop{background:var(--overlay);backdrop-filter:blur(5px)}
.venue-map__head{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:18px 20px 12px}
.venue-map__eyebrow{font-size:12px;color:var(--text-secondary);margin:0 0 4px}
.venue-map h2{font-size:20px;margin:0}
.venue-map__close,.venue-map__arrow{display:grid;place-items:center;min-width:44px;min-height:44px;border:1px solid var(--border);border-radius:50%;background:var(--bg-card);color:var(--text-primary);cursor:pointer}
.venue-map__stage{touch-action:pan-y;user-select:none;margin:0 12px;overflow:hidden;border-radius:var(--r-md);background:var(--bg-root)}
.venue-map__track{display:flex;transform:translate3d(calc(-100% + var(--venue-offset,0px)),0,0);transition:transform .32s cubic-bezier(.22,.61,.36,1);will-change:transform}
.venue-map__track.is-dragging,.venue-map__track.is-resetting{transition:none}
.venue-map__slide{flex:0 0 100%;min-width:0}
.venue-map__image{display:block;width:100%;height:auto;max-height:58vh;max-height:58dvh;object-fit:contain}
.venue-map__navigation{display:flex;justify-content:center;align-items:center;gap:24px;padding:12px 16px 0}
.venue-map__dots{display:flex;gap:4px}
.venue-map__dot{width:32px;height:44px;border:0;background:transparent;cursor:pointer;display:grid;place-items:center}
.venue-map__dot::after{content:'';width:7px;height:7px;border-radius:50%;background:var(--text-secondary);opacity:.4}
.venue-map__dot[aria-pressed="true"]::after{width:22px;border-radius:6px;background:var(--text-primary);opacity:1}
.venue-map__caption{text-align:center;color:var(--text-secondary);font-size:12px;margin:4px 12px 14px}
.venue-map__footer{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid var(--border);padding:12px 20px}
.venue-map__remember{display:flex;align-items:center;gap:8px;min-height:44px;font-size:14px;cursor:pointer}
.venue-map__remember input{width:18px;height:18px;accent-color:var(--text-primary)}
.venue-map__hint{font-size:12px;color:var(--text-secondary)}
@keyframes venue-map-in{from{opacity:0;transform:translateY(16px) scale(.98)}to{opacity:1;transform:none}}
@media(max-width:480px){.venue-map__head{padding:14px 14px 10px}.venue-map__footer{padding:8px 14px;flex-wrap:wrap}.venue-map__hint{font-size:11px}.venue-map h2{font-size:18px}}
@media(prefers-reduced-motion:reduce){.venue-map{animation:none}.venue-map__track{transition:none}}
