/* 管理後台｜規格：docs/05、docs/08 §1
   ------------------------------------------------------------------
   R-UI-005：這裡**沒有** @media (prefers-color-scheme)。深淺兩套色一律
             由 css/tokens.css 的 [data-theme] 提供。
   R-UI-006：最小驗證寬度 320px。

   命名一律 adm- 前綴。 */

.adm{
  max-width:var(--page-max);margin:0 auto;width:100%;
  padding:var(--sp-4) var(--sp-3) var(--sp-8);
  display:flex;flex-direction:column;gap:var(--sp-3);
}

/* ── 頁首 ───────────────────────────────────────────────── */
.adm__head{display:flex;align-items:center;gap:var(--sp-2);min-width:0}
.adm__back{
  display:inline-flex;align-items:center;justify-content:center;flex:none;
  min-width:var(--tap);min-height:var(--tap);color:var(--text-primary);
}
.adm__headText{display:flex;flex-direction:column;min-width:0}
.adm__headText strong{font-size:var(--fs-lg);color:var(--text-primary)}
.adm__headSub{font-size:var(--fs-xs);color:var(--text-secondary)}

/* ── 提示框 ─────────────────────────────────────────────── */
.adm__box{
  background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);
  padding:var(--sp-4);display:flex;flex-direction:column;gap:var(--sp-3);
  align-items:flex-start;
}
.adm__box--warn{background:var(--warn-bg);border-color:var(--warn-border);color:var(--warn-text)}
.adm__box--warn .adm__note{color:var(--warn-text);opacity:.9}
.adm__note{font-size:var(--fs-sm);color:var(--text-secondary);line-height:1.6}
.adm__empty{
  padding:var(--sp-6) var(--sp-3);text-align:center;
  font-size:var(--fs-sm);color:var(--text-secondary);line-height:1.7;
}

/* ── 分頁 ───────────────────────────────────────────────── */
/* 分頁列：標籤不換行、放不下就橫向捲動。
   360px 的手機上「報名審核」會被折成「報名審／核」（2026-09-06 驗收截圖），
   稽核紀錄的分類又從四個變成七個，塞不下是常態。 */
.adm__tabs{display:flex;gap:var(--sp-1);overflow-x:auto;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.adm__tabs::-webkit-scrollbar{display:none}
.adm__tab{
  flex:1 0 auto;min-width:0;min-height:var(--tap);white-space:nowrap;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;
  padding:var(--sp-2) var(--sp-3);border:1px solid var(--control-border);border-radius:var(--control-radius);
  background:var(--control-bg);color:var(--text-secondary);
  font-family:inherit;font-size:var(--fs-sm);font-weight:600;cursor:pointer;
}
.adm__tab.is-on{border-color:var(--control-selected-border);background:var(--control-selected-bg);color:var(--control-selected-text)}
.adm__tabCount{font-family:var(--font-num);font-size:var(--fs-xs)}

/* ── 球隊清單 ───────────────────────────────────────────── */
.adm__list{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}
.adm__item{
  background:var(--bg-card);border:1px solid var(--border);border-radius:var(--r-md);
  overflow:hidden;
}
.adm__item.is-open{border-color:var(--accent)}
.adm__itemHead{
  display:flex;align-items:center;gap:var(--sp-2);width:100%;
  min-height:var(--tap);padding:var(--sp-3);
  background:none;border:0;color:var(--text-primary);
  font-family:inherit;text-align:left;cursor:pointer;
}
.adm__itemMain{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}
.adm__teamName{
  font-size:var(--fs-md);
  overflow-wrap:anywhere;line-height:1.5;
}
.adm__teamMeta{font-size:var(--fs-xs);color:var(--text-secondary)}
.adm__teamTools{display:flex;justify-content:flex-end;gap:var(--sp-2);flex-wrap:wrap;padding:0 var(--sp-3) var(--sp-2)}
.adm__teamNamePanel{display:flex;flex-direction:column;overflow-y:hidden}
.adm__teamNamePanel .modal__title,.adm__teamNamePanel .modal__actions{flex-shrink:0}
.adm__teamNamePanel .modal__body{min-height:0;overflow-y:auto;overscroll-behavior:contain}

.adm__badge{
  flex:none;font-size:var(--fs-xs);padding:2px var(--sp-2);border-radius:999px;
  background:var(--bg-input);color:var(--text-secondary);
}
.adm__badge--submitted{background:var(--info-bg);color:var(--info)}
.adm__badge--approved{background:var(--ok-bg);color:var(--success)}
.adm__badge--rejected{background:var(--danger-bg);color:var(--danger)}

/* ── 展開後的細節 ───────────────────────────────────────── */
.adm__detail{
  padding:0 var(--sp-3) var(--sp-3);
  display:flex;flex-direction:column;gap:var(--sp-3);
  border-top:1px solid var(--border);
}
.adm__sectionHead{
  margin:var(--sp-3) 0 0;font-size:var(--fs-sm);color:var(--text-secondary);
}

/* 檢核結果。錯誤要一眼看得出來——主辦是照這個決定按不按核准的 */
.adm__checks{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}
.adm__check{
  display:flex;align-items:flex-start;gap:var(--sp-2);
  padding:var(--sp-2) var(--sp-3);border-radius:var(--r-sm);
  font-size:var(--fs-sm);line-height:1.6;
}
.adm__check--ok{background:var(--ok-bg);color:var(--success)}
.adm__check--warn{background:var(--warn-bg);color:var(--warn-text)}
.adm__check--error{background:var(--danger-bg);color:var(--danger)}
.adm__checkText{display:flex;flex-direction:column;gap:2px;min-width:0}
.adm__checkSrc{font-size:var(--fs-xs);opacity:.75}

/* 名單 */
.adm__roster{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;list-style:none}
.adm__member{
  display:grid;grid-template-columns:2.2em minmax(0,1fr) var(--tap);
  grid-template-areas:"number name edit" "meta meta meta";
  align-items:center;gap:var(--sp-1) var(--sp-2);min-width:0;
  padding:var(--sp-2) var(--sp-3);background:var(--bg-elevated);border-radius:var(--r-sm);
}
.adm__no{
  grid-area:number;min-width:0;text-align:center;
  font-family:var(--font-num);color:var(--text-primary);
}
.adm__memberName{
  grid-area:name;min-width:0;font-size:var(--fs-sm);color:var(--text-primary);
  font-weight:600;line-height:1.5;overflow-wrap:anywhere;
}
.adm__memberEdit{
  grid-area:edit;align-self:start;width:var(--tap);min-width:var(--tap);height:var(--tap);
  padding:0;font-size:20px;border-color:var(--control-border);background:var(--control-bg);color:var(--accent);
}
.adm__memberEdit:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
/* 隊職員排在球員後面，灰一階——審核看的是球員 */
.adm__member--staff{opacity:.7}
.adm__identityDate{display:flex;gap:var(--sp-2);border:0;padding:0;min-width:0;margin:0 0 var(--sp-3)}
.adm__identityDate label{flex:1;min-width:0}
.adm__identityInput{display:block;width:100%;box-sizing:border-box;min-height:44px;padding:var(--sp-2);font:inherit;color:inherit;background:var(--bg-input);border:1px solid var(--border);border-radius:var(--r-sm)}
.adm__identityField{display:block;margin-block:var(--sp-3)}
.adm__identityPanel{max-height:100%;overflow-y:auto;overscroll-behavior:contain;overflow-wrap:anywhere}
.adm__addPlayersPanel{max-width:620px;max-height:calc(100dvh - 2 * var(--sp-4));display:flex;flex-direction:column;min-height:0;padding:var(--sp-4);overflow:hidden}
.adm__addPlayersHead{flex:none;padding-bottom:var(--sp-3);border-bottom:1px solid var(--border)}
.adm__addPlayersHead .modal__title{margin-bottom:4px}
.adm__addPlayersTeam{margin:0;font-size:var(--fs-sm);color:var(--text-secondary);overflow-wrap:anywhere}
.adm__addPlayersBody{min-height:0;overflow-y:auto;overscroll-behavior:contain;margin:0;padding:var(--sp-3) 2px}
.adm__newPlayers{display:flex;flex-direction:column;gap:var(--sp-3)}
.adm__newPlayer{min-width:0;margin:0;padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);position:relative;color:var(--text-primary)}
.adm__newPlayerTitle{padding:0 6px;font-size:var(--fs-sm);font-weight:700;color:var(--accent)}
.adm__removePlayerRow{position:absolute;top:-18px;right:6px;min-width:44px;height:44px;padding:8px;background:var(--bg-card)}
.adm__removePlayerRow[hidden]{display:none}
.adm__newPlayerMain{display:grid;grid-template-columns:minmax(0,2fr) minmax(0,1fr);gap:var(--sp-2);margin-top:20px}
.adm__newPlayer label{min-width:0;font-size:var(--fs-sm)}
.adm__newPlayer .adm__identityInput{margin-top:5px;min-width:0}
.adm__newPlayerOptional{margin-top:var(--sp-3);font-size:var(--fs-sm);color:var(--text-secondary)}
.adm__newPlayerOptional summary{cursor:pointer;min-height:32px;line-height:32px}
.adm__newPlayerOptional[open] summary{margin-bottom:var(--sp-2)}
.adm__newPlayerFlags{display:flex;flex-wrap:wrap;gap:var(--sp-3)}
.adm__newPlayerFlags label{display:flex;align-items:center;gap:6px;min-height:44px}
.adm__newPlayerFlags input{width:18px;height:18px;min-height:0;margin:0}
.adm__addPlayerRow{width:100%;margin-top:var(--sp-3);border-style:dashed}
.adm__addPlayersActions{flex:none;border-top:1px solid var(--border);padding-top:var(--sp-3);gap:var(--sp-2)}
.adm__addPlayersBody>.adm__blocked:empty,.adm__addPlayersBody>[role=status]:empty{display:none}
@media(max-width:380px){.adm__addPlayersPanel{padding:var(--sp-3)}.adm__newPlayer{padding:var(--sp-2)}.adm__addPlayersActions .btn{padding-inline:var(--sp-2)}}
.adm__memberMeta{
  grid-area:meta;display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-1) var(--sp-3);
  min-width:0;font-size:var(--fs-sm);line-height:1.6;color:var(--text-secondary);
  font-family:var(--font-num);font-variant-numeric:tabular-nums;
}
.adm__memberField{white-space:nowrap}
.adm__memberPending{white-space:nowrap;padding:0 var(--sp-1);border-radius:var(--r-sm);background:var(--warn-bg);color:var(--warn-text)}

/* ── 動作 ───────────────────────────────────────────────── */
.adm__actions{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.adm__actions > .btn{flex:1 1 auto;min-width:0}
.adm__actions > .adm__note{flex-basis:100%;margin:var(--sp-2) 0}
.adm__blocked{
  flex:1 1 100%;
  display:flex;align-items:center;gap:var(--sp-2);
  font-size:var(--fs-sm);color:var(--warn-text);
}
.adm__textarea{
  width:100%;min-height:calc(var(--tap) * 2);
  padding:var(--sp-2) var(--sp-3);
  font-size:16px;font-family:inherit;line-height:1.6;
  color:var(--text-primary);background:var(--bg-input);
  border:1px solid var(--border);border-radius:var(--r-sm);resize:vertical;
}
.adm__textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}

@media (max-width:359px){
  .adm{padding-left:var(--sp-2);padding-right:var(--sp-2)}
  .adm__detail{padding-left:var(--sp-2);padding-right:var(--sp-2)}
}

/* ── 身分授權 ───────────────────────────────────────────── */
.adm__field{display:flex;flex-direction:column;gap:var(--sp-2)}
.adm__fieldLabel{font-size:var(--fs-sm);color:var(--text-secondary)}

.adm__rosterDetail,.adm__teamGroups{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}
.adm__teamGroup{border:1px solid var(--border);border-radius:var(--r-md);overflow:hidden;min-width:0}
.adm__divisionHead{background:var(--control-bg)}
.adm__groupTeams{padding:var(--sp-2)}
.adm__lockActions{display:flex;flex-wrap:wrap;gap:var(--sp-2);padding-top:var(--sp-2)}
.adm__captainPicker{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3) 0}
.adm__captainPicker select{width:100%;min-width:0;min-height:var(--tap);padding:var(--sp-2);border:1px solid var(--control-border);border-radius:var(--control-radius);background:var(--control-bg);color:var(--text-primary);font:inherit}
.adm__captainAssignments{display:flex;flex-direction:column;gap:var(--sp-2);list-style:none;padding:0;margin:0}
.adm__captainAssignment{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.adm__captainAssignment span{flex:1;min-width:0;overflow-wrap:anywhere}
.adm__search{
  width:100%;min-height:var(--tap);padding:var(--sp-2) var(--sp-3);
  font-size:16px;font-family:inherit;                 /* 16px：iOS 低於這個會自動放大整頁 */
  color:var(--text-primary);background:var(--bg-input);
  border:1px solid var(--border);border-radius:var(--r-md);
}
.adm__search:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}

.adm__choices{display:flex;flex-wrap:wrap;gap:var(--sp-2)}

/* 身分是單選。每一顆都寫得出「含哪些」——向上包含看不見的話，
   總管會把四個角色各指派一次。 */
.adm__choice{
  flex:1 1 8.5rem;min-width:0;min-height:var(--tap);
  display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;
  padding:var(--sp-2) var(--sp-3);
  border:1px solid var(--control-border);border-radius:var(--control-radius);box-shadow:var(--control-shadow);
  background:var(--control-bg);color:var(--text-secondary);
  font-family:inherit;text-align:left;cursor:pointer;
}
.adm__choice.is-on{border-color:var(--control-selected-border);background:var(--control-selected-bg);color:var(--control-selected-text)}
.adm__choiceName{font-size:var(--fs-sm);font-weight:600;color:var(--text-primary)}
.adm__choice.is-on .adm__choiceName{color:var(--control-selected-text)}
.adm__choiceNote{font-size:var(--fs-xs);opacity:.8;line-height:1.4}

.adm__chip{
  min-height:var(--tap);padding:var(--sp-2) var(--sp-4);
  border:1px solid var(--control-border);border-radius:var(--control-radius);
  background:var(--control-bg);color:var(--text-secondary);
  font-family:inherit;font-size:var(--fs-sm);cursor:pointer;
}
.adm__chip.is-on{border-color:var(--control-selected-border);background:var(--control-selected-bg);color:var(--control-selected-text)}

/* uid 是跨專案對帳唯一的鍵，要看得到也要選得起來 */
.adm__uid{
  margin:0;font-family:var(--font-num);font-size:var(--fs-xs);
  color:var(--text-muted);word-break:break-all;user-select:all;
}

/* ── 權限開關 ───────────────────────────────────────────── */
.adm__permGroup{display:flex;flex-direction:column;gap:var(--sp-2)}
.adm__perms{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}
.adm__perm{
  display:flex;align-items:center;gap:var(--sp-3);
  padding:var(--sp-3);background:var(--bg-card);
  border:1px solid var(--border);border-radius:var(--r-md);
}
/* 關掉的要一眼看得出來——這一頁的重點就是「哪幾條被動過」 */
.adm__perm.is-off{border-color:var(--warn-border);background:var(--warn-bg)}
.adm__permMain{display:flex;flex-direction:column;gap:2px;flex:1 1 auto;min-width:0}
.adm__permTop{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap;min-width:0}
.adm__permLabel{font-size:var(--fs-md);color:var(--text-primary)}
.adm__perm.is-off .adm__permLabel{color:var(--warn-text)}
.adm__permMeta{font-size:var(--fs-xs);color:var(--text-secondary)}
.adm__permNote{font-size:var(--fs-xs);color:var(--text-muted);line-height:1.5}
.adm__perm.is-off .adm__permMeta,
.adm__perm.is-off .adm__permNote{color:var(--warn-text);opacity:.85}

.adm__tag{
  display:inline-flex;align-items:center;gap:4px;flex:none;
  font-size:var(--fs-xs);padding:1px var(--sp-2);border-radius:999px;
  background:var(--bg-input);color:var(--text-secondary);
}

/* 開關。min-height 給滿 var(--tap)：現場是站著單手點的 */
.adm__switch{
  flex:none;position:relative;width:52px;height:30px;padding:0;
  min-height:var(--tap);min-width:var(--tap);
  display:flex;align-items:center;
  background:none;border:0;cursor:pointer;
}
.adm__switch::before{
  content:'';position:absolute;left:0;right:0;top:50%;transform:translateY(-50%);
  height:30px;border-radius:999px;
  background:var(--bg-input);border:1px solid var(--border);
}
.adm__switch.is-on::before{background:var(--accent-bg);border-color:var(--accent)}
.adm__switchKnob{
  position:relative;width:22px;height:22px;margin-left:4px;border-radius:50%;
  background:var(--text-muted);transition:transform .12s ease,background .12s ease;
}
.adm__switch.is-on .adm__switchKnob{transform:translateX(22px);background:var(--accent)}
.adm__switch:disabled{opacity:.5;cursor:default}
.adm__switch:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:999px}

.adm__lock{
  flex:none;display:inline-flex;align-items:center;justify-content:center;
  min-width:var(--tap);min-height:var(--tap);color:var(--text-muted);
}

@media (max-width:359px){
  /* 窄機把開關換到下一行，才不會把權限名稱擠成兩個字 */
  .adm__perm{flex-wrap:wrap}
  .adm__permMain{flex:1 1 100%}
  .adm__switch,.adm__lock{margin-left:auto}
}

/* ── 稽核紀錄 ───────────────────────────────────────────── */
.adm__audits{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;list-style:none}
.adm__audit{
  display:flex;flex-direction:column;gap:2px;
  padding:var(--sp-3);background:var(--bg-card);
  border:1px solid var(--border);border-radius:var(--r-md);
}
.adm__auditTop{display:flex;align-items:center;gap:var(--sp-2);flex-wrap:wrap}
.adm__auditWhen{font-size:var(--fs-xs);color:var(--text-secondary);font-family:var(--font-num)}
.adm__auditTitle{margin:2px 0 0;font-size:var(--fs-md);color:var(--text-primary);line-height:1.5}
.adm__auditNote{margin:0;font-size:var(--fs-xs);color:var(--text-muted);line-height:1.6}
.adm__auditWho{margin:2px 0 0;font-size:var(--fs-xs);color:var(--text-secondary)}
.adm__note .icon{vertical-align:-.15em;margin-right:2px}

/* ── 報名開關 ───────────────────────────────────────────── */
.adm__box--ok{background:var(--ok-bg);border-color:var(--success);color:var(--success)}
.adm__box--ok .adm__note{color:var(--success);opacity:.9}
.adm__timeRow{display:flex;align-items:center;gap:var(--sp-2)}
.adm__timeRow .adm__fieldLabel{flex:none}
.adm__time{max-width:11rem}

/* ── 賽程管理 ───────────────────────────────────────────── */
/* 分組的隊伍晶片。點一顆選取、再點另一組的一顆就對調——
   只能對調不能單獨搬走，不然兩組隊數不等，名次賽會少一個對手。 */
.adm__chips{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.adm__chips .adm__chip[aria-pressed="true"]{
  border-color:var(--control-selected-border);background:var(--control-selected-bg);color:var(--control-selected-text);
}
.adm__chips .adm__chip:disabled{opacity:1;cursor:default}

/* 時間 ＋ 場地兩格並排。320px 上會自己折行——一行擠不下兩個
   點得到的控制項（R-UI-006）。 */
.adm__schedRow{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.adm__schedRow > *{flex:1 1 8rem;min-width:0}
.adm__schedRow .adm__time{flex:0 1 8rem;max-width:9rem}

/* Manual planning has a larger desktop canvas; other admin pages keep their width. */
.adm__scheduleModes{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.adm__scheduleModes .btn{flex:1 1 10rem}
.adm--manual{max-width:1120px}
#app-view:has(>.has-manual-schedule){max-width:1120px}
.manual{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0;overflow-wrap:anywhere}
.manual h2,.manual h3,.manual h4,.manual p{margin:0}
.manual h2{font-size:var(--fs-lg)}
.manual h3,.manual h4{font-size:var(--fs-md)}
.manual__intro{display:flex;align-items:flex-start;justify-content:space-between;flex-wrap:wrap;gap:var(--sp-3);padding:var(--sp-4);border-radius:var(--r-md);background:var(--accent-bg);border:1px solid var(--control-selected-border)}
.manual__intro>div:first-child{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0}
.manual__intro p{font-size:var(--fs-sm);color:var(--text-secondary)}
.manual__status{font-size:var(--fs-xs);font-weight:600;color:var(--text-secondary);padding:var(--sp-2);border:1px solid var(--border-strong);border-radius:var(--r-sm);background:var(--bg-card)}
.manual__muted{font-size:var(--fs-xs);line-height:1.6;color:var(--text-secondary)}
.manual__summary{display:flex;flex-wrap:wrap;gap:var(--sp-2);font-size:var(--fs-sm)}
.manual__summary>span{padding:var(--sp-2) var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-card);font-variant-numeric:tabular-nums}
.manual__danger,.manual__failure{color:var(--danger)}
.manual__failure,.manual__restored,.manual__announce{padding:var(--sp-3);font-size:var(--fs-sm);line-height:1.6;border-radius:var(--r-sm);background:var(--bg-elevated)}
.manual__failure{background:var(--danger-bg);border:1px solid var(--danger-border)}
.manual__restored{color:var(--success);background:var(--ok-bg)}
.manual__workspace{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-4);align-items:start;min-width:0}
.manual__workspace,.manual__pool{scroll-margin-top:calc(var(--topbar-h) + var(--sp-4))}
.manual__pool,.manual__fixtures{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}
.manual__pool{padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-card)}
.manual__sectionTitle{display:flex;align-items:baseline;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap}
.manual__cards{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-2);min-width:0}
.manual__team{display:flex;min-width:0;border:1px solid var(--control-border);border-radius:var(--r-sm);background:var(--control-bg);box-shadow:var(--control-shadow)}
.manual__team.is-selected{border-color:var(--control-selected-border);background:var(--control-selected-bg);outline:2px solid var(--control-selected-border);outline-offset:1px}
.manual__handle{flex:none;width:var(--tap);min-height:var(--tap);align-self:stretch;display:flex;justify-content:center;align-items:center;background:var(--bg-elevated);border:0;border-right:1px solid var(--control-border);border-radius:var(--r-sm) 0 0 var(--r-sm);color:var(--text-secondary);touch-action:none;cursor:grab}
.manual__handle:active{cursor:grabbing}
.manual__teamPick{display:flex;flex:1;flex-direction:column;gap:var(--sp-1);align-items:flex-start;min-width:0;min-height:var(--tap-lg);padding:var(--sp-2) var(--sp-3);border:0;border-radius:0 var(--r-sm) var(--r-sm) 0;background:none;color:var(--text-primary);text-align:left;font:inherit;overflow-wrap:anywhere;touch-action:pan-y;cursor:pointer}
.manual__teamPick strong{font-size:var(--fs-sm);line-height:1.5}
.manual__teamPick span{font-size:var(--fs-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums}
.manual__handle:disabled,.manual__teamPick:disabled,.manual__slotPick:disabled{cursor:default;opacity:.7}
.manual__match{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-md);background:var(--bg-card);min-width:0}
.manual__match.is-locked{background:var(--bg-elevated)}
.manual__matchHead{display:flex;justify-content:space-between;align-items:flex-start;gap:var(--sp-2);min-width:0}
.manual__matchHead>div{display:flex;flex-direction:column;gap:var(--sp-1);min-width:0}
.manual__matchHead .adm__badge{white-space:normal;text-align:center;max-width:6rem}
.manual__opponents{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:var(--sp-2);align-items:stretch;min-width:0}
.manual__vs{align-self:center;font-size:var(--fs-xs);font-weight:700;color:var(--text-muted)}
.manual__slot{position:relative;display:flex;flex-direction:column;min-width:0;border:1px dashed var(--control-border);border-radius:var(--r-sm);background:var(--bg-input);transition:border-color .1s,background .1s}
.manual__slot.is-filled{border-style:solid;background:var(--control-bg)}
.manual__slot.is-dropTarget{outline:3px solid var(--success);background:var(--ok-bg)}
.manual__slot.is-dropInvalid{outline:3px solid var(--danger);background:var(--danger-bg)}
.manual__slotPick{display:flex;flex:1;flex-direction:column;justify-content:center;gap:var(--sp-1);align-items:flex-start;min-width:0;min-height:var(--tap-lg);padding:var(--sp-2);border:0;border-radius:var(--r-sm);background:none;color:var(--text-primary);font:inherit;text-align:left;overflow-wrap:anywhere;cursor:pointer}
.manual__slotPick strong{font-size:var(--fs-sm);line-height:1.5}
.manual__clear{display:flex;align-items:center;justify-content:center;align-self:flex-end;min-width:var(--tap);min-height:var(--tap);border:0;background:none;border-radius:var(--r-sm);color:var(--text-secondary);cursor:pointer}
.manual__source{display:flex;flex-direction:column;gap:var(--sp-1);justify-content:center;padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-sm);background:var(--bg-elevated);min-width:0}
.manual__source strong{font-size:var(--fs-sm);line-height:1.5}
.manual__fields{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,12rem),1fr));gap:var(--sp-2);min-width:0}
.manual__fields label,.manual__reason{display:flex;flex-direction:column;gap:var(--sp-2);min-width:0;font-size:var(--fs-xs);color:var(--text-secondary)}
.manual__filter{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2);font-size:var(--fs-sm);min-width:0}
.manual__filter .adm__search{flex:1 1 10rem;max-width:20rem}
.manual .adm__search{width:100%;max-width:100%;min-width:0;box-sizing:border-box}
.manual__checks,.manual__preview{display:flex;flex-direction:column;gap:var(--sp-3);min-width:0}
.manual__checks{padding-block:var(--sp-3)}
.manual__matchIssues{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-1)}
.manual__issue{font-size:var(--fs-xs);line-height:1.6;padding:var(--sp-2);border-radius:var(--r-sm)}
.manual__issue--error{color:var(--danger);background:var(--danger-bg)}
.manual__issue--warn{color:var(--warn-text);background:var(--warn-bg)}
.manual__success{font-size:var(--fs-sm);color:var(--success)}
.manual__preview{border:1px solid var(--control-selected-border);border-radius:var(--r-md);padding:var(--sp-3);background:var(--bg-card);scroll-margin-top:calc(var(--topbar-h) + var(--sp-3))}
.manual__diffs{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:var(--sp-2);font-size:var(--fs-sm)}
.manual__diffs li{display:flex;flex-direction:column;gap:var(--sp-1);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--r-sm)}
.manual__previewActions,.manual__replacement,.manual__retry{display:flex;flex-wrap:wrap;gap:var(--sp-2);align-items:center}
.manual__previewActions .btn{flex:1 1 10rem}
.manual__replacement,.manual__retry{padding:var(--sp-3);border:1px solid var(--warn-border);border-radius:var(--r-sm);background:var(--warn-bg);color:var(--warn-text);font-size:var(--fs-sm)}
.manual__replacement p,.manual__retry p{flex:1 0 100%}
.manual__footer{position:sticky;bottom:0;z-index:5;display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:var(--sp-2);padding:var(--sp-3);border:1px solid var(--border-strong);border-radius:var(--r-md);background:var(--bg-card);box-shadow:0 -3px 12px rgba(0,0,0,.08)}
.manual__footer>div{display:flex;flex-wrap:wrap;gap:var(--sp-2)}
.manual__footer .btn{min-height:var(--tap);font-size:var(--fs-sm)}
.manual__dragGhost{position:fixed;top:0;left:0;z-index:9999;max-width:15rem;padding:var(--sp-3);border:2px solid var(--accent);border-radius:var(--r-sm);background:var(--bg-card);color:var(--text-primary);box-shadow:0 8px 24px rgba(0,0,0,.2);pointer-events:none;overflow-wrap:anywhere;font:600 var(--fs-sm)/1.5 var(--font-sans)}
.manual-dragging{user-select:none;cursor:grabbing}
.manual button:focus-visible,.manual select:focus-visible,.manual textarea:focus-visible,.manual input:focus-visible{outline:3px solid var(--accent);outline-offset:3px}
@media(min-width:760px){
  .manual__workspace{grid-template-columns:minmax(220px,280px) minmax(0,1fr)}
  .manual__pool{position:sticky;top:calc(var(--topbar-h) + var(--sp-3));max-height:calc(100vh - var(--topbar-h) - 6rem);overflow-y:auto;overscroll-behavior:contain}
}

/* ── 人工裁定同分 ───────────────────────────────────────── */
/* 上下移而不是拖曳：同分群通常只有 2–3 隊，按一下就排完了，
   而 320px 的觸控拖曳既難做對也難測（同賽程管理的決定）。 */
.adm__tieList{display:flex;flex-direction:column;gap:var(--sp-2);margin:var(--sp-2) 0;padding:0;list-style:none}
.adm__tieRow{
  display:flex;align-items:center;gap:var(--sp-2);
  padding:var(--sp-2);border:1px solid var(--border);border-radius:var(--r-2);
  background:var(--surface);
}
.adm__tieRank{
  flex:none;min-width:1.6em;text-align:center;
  font-variant-numeric:tabular-nums;font-weight:700;color:var(--text-secondary);
}
.adm__tieMain{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}
.adm__tieStat{font-size:var(--fs-xs);color:var(--text-muted);font-variant-numeric:tabular-nums}
/* 兩顆按鈕不縮：320px 上點不到的箭頭等於沒有這個功能（R-UI-006） */
.adm__tieMove{flex:none;display:flex;gap:4px}
.adm__tieMove .btn{padding:var(--sp-1) var(--sp-2)}

/* ── 申訴／直播／取消（2026-09-05）── */
.adm__checkRow{display:flex;align-items:flex-start;gap:var(--sp-2);margin:var(--sp-3) 0;font-size:var(--fs-sm);line-height:1.5}
.adm__checkRow input{margin-top:.2em;width:1.2em;height:1.2em;flex:none}
.adm__permNote--err{color:var(--danger)}
.adm__appeal[data-status="upheld"]{border-color:var(--ok-border)}
.adm__appeal[data-status="dismissed"]{border-color:var(--border-strong)}
.adm__appeal[data-status="filed"]{border-color:var(--warn-border)}
.adm__stream .adm__field{margin-top:var(--sp-3)}
/* CSV 名冊：長隊名、檔名與錯誤在 320px 仍可閱讀。 */
.adm__importFile { display: grid; gap: .5rem; margin-block: 1rem; }
.adm__importFile input { max-width: 100%; width: 100%; min-width: 0; }
.adm__importTeam { padding-block: .75rem; overflow-wrap: anywhere; }
.adm__importTeam summary { cursor: pointer; font-weight: 600; }
.adm__importTeam ul, .adm__importErrors { padding-inline-start: 1.25rem; overflow-wrap: anywhere; }
.adm__importConfirm { display: flex; gap: .65rem; align-items: flex-start; margin-block: 1rem; }
.adm__importConfirm input { flex: none; margin-top: .25rem; width: 1.25rem; height: 1.25rem; padding: 0; min-height: 0; }
.adm__importConfirm span { min-width: 0; overflow-wrap: anywhere; }
.adm__csvGuide { margin-block: 1rem; padding: .75rem; border: 1px solid var(--border); border-radius: var(--r-sm); }
.adm__csvGuide summary { font-weight: 700; cursor: pointer; }
.adm__csvTable { width: 100%; table-layout: fixed; border-collapse: collapse; font-size: var(--fs-sm); }
.adm__csvTable th, .adm__csvTable td { text-align: left; vertical-align: top; padding: .6rem .3rem; border-bottom: 1px solid var(--border); overflow-wrap: anywhere; }
.adm__csvTable th:first-child { width: 24%; }
.adm__csvTable th:nth-child(2) { width: 16%; }

/* Match adjudication: result first, focused editing, separate state actions. */
#app-view:has(.adm-match){max-width:1040px}
.adm-match{max-width:980px;gap:20px}
.adm-match__hero{background:var(--primary);color:var(--text-on-accent);border-radius:20px;padding:24px;display:flex;flex-direction:column;gap:24px}
.adm-match__heroTop{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.adm-match__eyebrow{font-size:12px;font-weight:600;letter-spacing:.04em;opacity:.78}
.adm-match__badge{display:inline-flex;align-items:center;gap:6px;font-size:12px;border:1px solid rgba(255,255,255,.24);border-radius:999px;padding:6px 10px;background:rgba(255,255,255,.08)}
.adm-match__fixture{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;text-align:center}
.adm-match__team{display:flex;flex-direction:column;gap:8px;min-width:0}
.adm-match__team strong{font-size:20px;line-height:1.5;overflow-wrap:anywhere}
.adm-match__result{display:flex;flex-direction:column;align-items:center;gap:6px}
.adm-match__score{font-size:48px;line-height:1.2;letter-spacing:-.03em;white-space:nowrap}
.adm-match__pk{font-size:12px;opacity:.85}
.adm-match__heroMeta{display:flex;justify-content:center;gap:8px 20px;flex-wrap:wrap;padding-top:16px;border-top:1px solid rgba(255,255,255,.18);font-size:12px;opacity:.85}
.adm-match__heroMeta>span{display:inline-flex;align-items:center;gap:6px}
.adm-match__notice{display:flex;align-items:flex-start;gap:8px;color:var(--text-secondary);font-size:12px;line-height:1.7;padding:0 4px}
.adm-match__notice>.icon{flex:none;margin-top:2px}
.adm-match__main,.adm-match__secondary{display:grid;grid-template-columns:minmax(0,1fr);gap:20px;align-items:start}
.adm-match__card{min-width:0;background:var(--bg-card);border:1px solid var(--border);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:20px}
.adm-match__cardHead{display:flex;align-items:center;gap:12px}
.adm-match__cardHead h3,.adm-match__card>.adm__sectionHead{font-size:18px;font-weight:700;margin:0}
.adm-match__cardHead p{font-size:12px;line-height:1.6;color:var(--text-secondary);margin-top:3px}
.adm-match__sectionIcon{display:flex;align-items:center;justify-content:center;width:40px;height:40px;border-radius:12px;background:var(--accent-bg);color:var(--accent);flex:none}
.adm-match__scoreGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
.adm-match__scoreField{display:grid;grid-row:span 2;grid-template-rows:subgrid;gap:8px;min-width:0}
.adm-match__scoreField label{font-size:13px;font-weight:600;line-height:1.5;overflow-wrap:anywhere;text-align:center}
.adm-match__scoreInput{width:100%;min-width:0;height:88px;border:1px solid var(--control-border);background:var(--bg-input);border-radius:12px;text-align:center;font:700 40px var(--font-num);color:var(--text-primary);padding:8px;appearance:textfield}
.adm-match__scoreInput::-webkit-inner-spin-button,.adm-match__scoreInput::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}
.adm-match__scoreInput:focus-visible{outline:2px solid var(--accent);outline-offset:2px;background:var(--bg-card)}
.adm-match__scoreInput--pk{height:52px;font-size:24px}
.adm-match__penalties{border-top:1px solid var(--border);padding-top:16px;display:flex;flex-direction:column;gap:12px}
.adm-match__subhead{display:flex;justify-content:space-between;gap:8px;font-size:13px}
.adm-match__subhead span{font-size:12px;color:var(--text-secondary)}
.adm-match__preview{padding:12px;border-radius:10px;background:var(--accent-bg);color:var(--accent)}
.adm-match__previewText{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.7}
.adm-match__previewText>.icon{flex:none;margin-top:3px}
.adm-match__scoreActions{display:flex;gap:8px;flex-wrap:wrap}
.adm-match__scoreActions .btn--primary{flex:1;min-width:130px}
.adm-match__action{display:flex;align-items:center;gap:12px;width:100%;min-height:72px;padding:12px 0;border:0;border-bottom:1px solid var(--border);background:none;text-align:left;color:var(--text-primary);font:inherit;cursor:pointer}
.adm-match__status{gap:8px}
.adm-match__status .adm-match__cardHead{margin-bottom:8px}
.adm-match__actionIcon{display:flex;align-items:center;justify-content:center;width:36px;height:36px;border-radius:10px;background:var(--bg-elevated);color:var(--accent);flex:none}
.adm-match__actionText{display:flex;flex:1;min-width:0;flex-direction:column;gap:4px}
.adm-match__actionText strong{font-size:14px}
.adm-match__actionText>span{font-size:12px;line-height:1.6;color:var(--text-secondary)}
.adm-match__action>.icon{width:16px;height:16px;flex:none;color:var(--text-muted)}
.adm-match__action:not(:disabled):hover{background:var(--control-hover)}
.adm-match__action:disabled{cursor:default}
.adm-match__action:disabled .adm-match__actionIcon,.adm-match__action:disabled .adm-match__actionText strong{color:var(--text-muted)}
.adm-match__action--danger:not(:disabled) .adm-match__actionIcon{color:var(--danger)}
.adm-match__card .adm__box{width:100%;padding:0;border:0;background:none;border-radius:0}
.adm-match__card .adm__field,.adm-match__card .adm__textarea{width:100%;min-width:0}
.adm-match__card .adm__choices{width:100%}
.adm-match__card .adm__choice{flex:1;min-width:0}
.adm-match__card .adm__choiceName{overflow-wrap:anywhere}
.adm-match__card .adm__sectionHead{margin-top:12px}

/* 匯出資料：日期共用、兩種名單分卡、每個下載附用途。 */
.adm-export h2,.adm-export h3,.adm-export p{margin:0}
.adm-export h2{font-size:var(--fs-lg);line-height:1.5}
.adm-export h3{font-size:var(--fs-sm);line-height:1.5}
.adm-export__card>*,.adm-export__date>*{width:100%;min-width:0}
.adm-export__date .chal__days{margin:0}
.adm-export__heading{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap}
.adm-export__heading h2{display:flex;align-items:center;gap:var(--sp-2)}
.adm-export__tag{padding:3px var(--sp-2);border-radius:var(--r-full);font-size:var(--fs-xs);color:var(--text-secondary);background:var(--bg-input)}
.adm-export__controls{display:flex;align-items:flex-end;gap:var(--sp-2);flex-wrap:wrap}
.adm-export__field{display:grid;gap:var(--sp-2);flex:1 1 12rem;min-width:0;font-size:var(--fs-sm);font-weight:600}
.adm-export__field select{width:100%;min-width:0}
.adm-export__refresh{flex:0 1 auto}
.adm-export__status{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);flex-wrap:wrap;padding:var(--sp-3);border-radius:var(--r-sm);background:var(--bg-input);font-size:var(--fs-sm)}
.adm-export__status span,.adm-export__updated{font-size:var(--fs-xs);color:var(--text-secondary)}
.adm-export__preview{border-top:1px solid var(--border);padding-top:var(--sp-3);display:grid;gap:var(--sp-2)}
.adm-export__preview>strong{display:flex;align-items:center;gap:var(--sp-2)}
.adm-export__person{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-2);padding:var(--sp-2) 0;border-bottom:1px solid var(--border)}
.adm-export__personMain{display:grid;gap:2px;min-width:0;overflow-wrap:anywhere;font-size:var(--fs-sm)}
.adm-export__personMain span{font-size:var(--fs-xs);color:var(--text-secondary)}
.adm-export__progress{flex:none;font-size:var(--fs-xs);color:var(--text-secondary);font-variant-numeric:tabular-nums}
.adm-export__downloads{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-3);border-top:1px solid var(--border);padding-top:var(--sp-3)}
.adm-export__downloads>div{display:grid;align-content:start;gap:var(--sp-2);min-width:0}
.adm-export__downloads .btn{width:100%;white-space:normal}
.adm-export__downloads .adm__note{font-size:var(--fs-xs)}
.adm-export__actions{display:flex;gap:var(--sp-2);flex-wrap:wrap}
.adm-export__actions .btn{flex:1;min-width:0}
.adm-export .adm__tieRow{padding:var(--sp-2) 0;border-bottom:1px solid var(--border);border-radius:0;background:none}
.adm-export .adm__tieRank{width:auto;min-width:3rem;font-size:var(--fs-sm);color:var(--accent);background:var(--bg-input);border-radius:var(--r-sm);padding:var(--sp-2)}
.adm-export .adm__teamName{font-size:var(--fs-sm)}
.adm-export__error{padding:var(--sp-3);border-radius:var(--r-sm);background:var(--danger-bg);color:var(--danger);font-size:var(--fs-sm);overflow-wrap:anywhere}
.adm-export__help{border:1px solid var(--border);border-radius:var(--r-md);padding:var(--sp-3) var(--sp-4);color:var(--text-secondary)}
.adm-export__help summary{cursor:pointer;font-size:var(--fs-sm);font-weight:600;min-height:var(--tap);display:flex;align-items:center;gap:var(--sp-2)}
.adm-export__help summary::before{content:'+';font-size:var(--fs-lg);color:var(--accent)}
.adm-export__help[open] summary::before{content:'−'}
.adm-export__help[open] p{margin-top:var(--sp-2)}
@media(max-width:359px){
  .adm-export__downloads{grid-template-columns:minmax(0,1fr)}
  .adm-export__controls{align-items:stretch;flex-direction:column}
  .adm-export__field{flex:auto}
}
@media(min-width:760px){.adm-match__main{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr)}.adm-match__secondary{grid-template-columns:repeat(2,minmax(0,1fr))}.adm-match__hero{padding:28px 32px}}
@media(max-width:380px){.adm-match{gap:16px}.adm-match__card{padding:16px}.adm-match__hero{padding:18px 14px;gap:20px}.adm-match__fixture{gap:8px}.adm-match__team strong{font-size:15px}.adm-match__score{font-size:36px}}
