/* Almighty Points — 電光掲示板（LEDスコアボード）スタイル
   狙い: 体育館/アリーナの実機に似せる。
   - 暗いキャビネットに黒いLEDパネルがインセットされた構造
   - 数字は自前の7セグメントLED（消えたセグメントが薄く見える＝本物の質感）＋発光グロー
   - チーム識別はネームプレートの色帯で。スコア数字自体はアンバー統一（実機準拠）
*/

:root{
  --cabinet:#15181e;         /* 筐体の金属 */
  --cabinet-2:#0e1015;
  --panel:#05070c;           /* LEDパネルの黒地 */
  --bezel:#000;
  --line:rgba(150,170,200,.12);
  --ink:#EAEEF6;
  --muted:#8A93A6;           /* 副テキストは確定色（opacityで薄くしない） */

  --led-amber:#FFA828;
  --led-amber-glow:rgba(255,150,25,.55);
  --led-green:#37E27C;
  --led-green-glow:rgba(45,220,120,.5);
  --led-red:#FF4B3A;
  --led-red-glow:rgba(255,70,50,.5);

  --a:#4FA3FF;               /* ホーム側の識別色（ネームプレート帯） */
  --b:#FF7A4D;               /* アウェイ側 */
  --go:#37E27C;
  --radius:16px;
  --font: "Bahnschrift","DIN Alternate","Roboto Condensed",-apple-system, BlinkMacSystemFont,
          "Segoe UI","Hiragino Kaku Gothic ProN","Yu Gothic UI",Meiryo,system-ui,sans-serif;
}

/* 屋外向け明色モード（実機の"デイモード"）：パネルを純黒に落として数字を最大輝度に上げ、
   日光で霞むソフトグローを抑えてエッジのコントラストを稼ぐ。世界観は壊さず輝度だけ上げる */
body.bright{
  --panel:#000; --bezel:#000; --cabinet:#0a0c10; --cabinet-2:#050609;
  --ink:#FFFFFF; --muted:#C2CAD8;
  --led-amber:#FFD24D; --led-amber-glow:transparent;
  --led-green:#5BF29B; --led-green-glow:transparent;
  --led-red:#FF6A5A;   --led-red-glow:transparent;
  --a:#7DBEFF; --b:#FF9E76;
}
body.bright .skin-stage,body.bright .board{ filter:contrast(1.12) brightness(1.1); }
body.bright .side-score,body.bright .skin-stage [class$="-sc"]{ text-shadow:none; }

*{ box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
/* hidden属性 / element.hidden を必ず優先（display指定を持つ要素でも隠せるように）*/
[hidden]{ display:none !important; }
html,body{ height:100%; margin:0; }
body{
  background:
    radial-gradient(120% 80% at 50% -10%, #20242c 0%, transparent 55%),
    linear-gradient(180deg,#181b21,#0d0f13);
  color:var(--ink); font-family:var(--font);
  overscroll-behavior:none; -webkit-user-select:none; user-select:none;
  font-feature-settings:"tnum" 1;
}
button{ font-family:inherit; color:inherit; cursor:pointer; border:0; background:none; }

.app{ height:100dvh; display:flex; flex-direction:column;
  padding:max(8px,env(safe-area-inset-top)) 10px max(8px,env(safe-area-inset-bottom));
  gap:9px; min-height:0; }

/* ═══ 7セグメントLED ═══ */
.seg-svg{ height:1em; width:.60em; display:block; }
.seg-svg.seg-colon{ width:.30em; }
.seg{ fill:currentColor; }
.seg.on{ opacity:1; }
.seg.off{ opacity:.055; }                 /* 消灯セグメントを薄く残す＝本物感 */
.seg-colon circle{ fill:currentColor; }
.led{ display:inline-flex; align-items:center; line-height:1; }

/* ═══ ヘッダー（コントロールパネル風）═══ */
.topbar{ display:flex; align-items:center; justify-content:space-between; gap:8px; flex:0 0 auto; }
.pill{ display:inline-flex; align-items:baseline; gap:9px; padding:8px 15px 8px 13px; border-radius:10px;
  background:linear-gradient(180deg,#20242c,#171a20); border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05); }
.pill-kicker{ font-size:12px; letter-spacing:.16em; color:var(--muted); }
.pill-value{ font-size:15px; font-weight:700; letter-spacing:.02em; }
.pill-caret{ font-size:11px; color:var(--muted); }
.topbar-actions{ display:flex; gap:6px; }
.icon-btn{ width:42px; height:42px; border-radius:10px; display:grid; place-items:center;
  background:linear-gradient(180deg,#20242c,#171a20); border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05); }
.icon-glyph{ font-size:18px; color:var(--muted); line-height:1; }
.icon-btn[aria-pressed="true"]{ border-color:var(--led-amber); box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 0 10px var(--led-amber-glow); }
.icon-btn[aria-pressed="true"] .icon-glyph{ color:var(--led-amber); }

/* ═══ ボード本体 ═══ */
.board{ flex:1 1 auto; min-height:0;
  display:grid; grid-template-columns:1fr minmax(92px,132px) 1fr; gap:9px; }

/* LEDパネル（黒地・インセット） */
.side, .strip{
  border-radius:var(--radius); background:
    radial-gradient(120% 90% at 50% 0%, #0a0e16 0%, var(--panel) 62%);
  border:1px solid var(--bezel);
  box-shadow:
    inset 0 2px 0 rgba(255,255,255,.05),
    inset 0 0 44px rgba(0,0,0,.85),
    inset 0 -18px 40px rgba(0,0,0,.55),
    0 2px 6px rgba(0,0,0,.5);
}
.side{ position:relative; min-height:0; min-width:0; overflow:hidden;
  display:flex; flex-direction:column; align-items:center; justify-content:flex-start; padding:10px 8px; gap:6px;
  transition:box-shadow .12s ease; }
.side.flash-a{ box-shadow:inset 0 0 44px rgba(0,0,0,.85), inset 0 0 60px rgba(80,150,255,.28), 0 2px 6px rgba(0,0,0,.5); }
.side.flash-b{ box-shadow:inset 0 0 44px rgba(0,0,0,.85), inset 0 0 60px rgba(255,120,70,.28), 0 2px 6px rgba(0,0,0,.5); }
.side.flash-bust{ box-shadow:inset 0 0 44px rgba(0,0,0,.85), inset 0 0 60px rgba(255,70,50,.32), 0 2px 6px rgba(0,0,0,.5); }
/* 得点時：スコアだけ一瞬明るく灯す（点いた実感） */
.side.flash-a .side-score, .side.flash-b .side-score{ filter:drop-shadow(0 0 .18em var(--led-amber-glow)) brightness(1.22); }

/* ネームプレート（上端に常設） */
.side-name{
  flex:0 0 auto; width:100%; text-align:center;
  font-size:clamp(14px,3.4vw,20px); font-weight:700; letter-spacing:.08em; text-transform:uppercase;
  padding:6px 10px; border-radius:7px; color:#E7ECF6;
  background:linear-gradient(180deg,#171b22,#0e1116); border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05);
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis;
}
.side-a .side-name{ border-bottom:2px solid var(--a); }
.side-b .side-name{ border-bottom:2px solid var(--b); }

/* スコア（大型アンバーLED）中央で余白を全部使う */
.side-score{ flex:1 1 auto; min-height:0; color:var(--led-amber);
  filter:drop-shadow(0 0 .10em var(--led-amber-glow));
  display:flex; align-items:center; justify-content:center;
  font-size:clamp(68px,18vw,272px); max-width:100%; transition:filter .12s ease; }
.side-score[data-len="3"]{ font-size:clamp(50px,13vw,200px); }
.side-score[data-len="4"]{ font-size:clamp(40px,10vw,140px); }
.side-score .led{ display:inline-flex; align-items:center; }
/* 加点・減算競技はチップ／キーパッドに場所を譲るのでスコアを一段小さく（重なり防止） */
.side.no-tap .side-score{ font-size:clamp(48px,12vw,168px); }
.side.no-tap .side-score[data-len="3"]{ font-size:clamp(40px,9vw,120px); }
.side.no-tap .side-score[data-len="4"]{ font-size:clamp(34px,7vw,96px); }

/* 勝ち星 / ミス（スコアとドックの間） */
.side-sets{ flex:0 0 auto;
  display:flex; gap:8px; justify-content:center; align-items:center; min-height:14px; }
.side-sets .pip{ width:11px; height:11px; border-radius:50%; border:1.5px solid #3a4150; background:#0c0f15; }
.side-a .side-sets .pip.on{ background:var(--a); border-color:var(--a); box-shadow:0 0 8px rgba(80,150,255,.6); }
.side-b .side-sets .pip.on{ background:var(--b); border-color:var(--b); box-shadow:0 0 8px rgba(255,120,70,.6); }
.side-sets .pip.miss.on{ background:var(--led-red); border-color:var(--led-red); box-shadow:0 0 8px var(--led-red-glow); }
.miss-label{ font-size:12px; letter-spacing:.14em; color:var(--muted); margin-right:2px; }

/* ═══ 操作ドック（競技ごとに形が変わる常設の数字ボタン群）═══ */
.side-dock{ flex:0 0 auto; width:100%; display:flex; flex-wrap:wrap; gap:6px;
  justify-content:center; align-content:flex-end; }
.dk{ flex:1 1 auto; min-width:52px; min-height:46px; display:inline-flex; align-items:center; justify-content:center;
  font-size:19px; font-weight:750; color:var(--ink); background:#12151c; border:1px solid var(--line); border-radius:10px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04); user-select:none; }
.dk:active{ background:#1d222b; transform:translateY(1px); }
.dk.minus{ flex:0 0 auto; min-width:58px; color:var(--muted); font-size:16px; }
.dk.wide{ flex:1 1 100%; }
.dk.plus{ color:var(--led-amber); }
/* タップ加点の常設ヒント（この面全体が＋1、を明示。押すと面タップ＝加点） */
.dk-hint{ flex:1 1 100%; display:inline-flex; align-items:center; justify-content:center; gap:8px;
  min-height:46px; border-radius:10px; font-size:14px; font-weight:700; letter-spacing:.04em;
  color:var(--led-amber); background:rgba(255,168,40,.07); border:1px dashed rgba(255,168,40,.38);
  pointer-events:none; }
.dk-hint-plus{ font-size:20px; font-weight:850; line-height:1;
  filter:drop-shadow(0 0 6px var(--led-amber-glow)); }
.theme-flip .dk-hint{ color:#7a5a12; background:rgba(120,90,20,.10); border-color:rgba(120,90,20,.4); }
/* バスケの得点ボタン（+1/+2/+3、+2を主役に） */
.dk.pt{ color:var(--led-amber); background:#171206; border-color:rgba(255,168,40,.34); }
.dk.pt.big{ flex:1.7 1 auto; font-size:22px; box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 0 10px rgba(255,168,40,.18); }
/* 加点競技のチップ（1タップ＝即得点） */
.dk.chip{ flex:1 1 44px; min-width:44px; max-width:70px; font-size:18px; }
.dk.chip.miss{ flex:1 1 100%; max-width:none; color:var(--led-red); background:#1a0d0c; border-color:rgba(255,75,58,.3); }
.dk.chip.zero{ color:var(--muted); }

/* ═══ 中央ストリップ ═══ */
.strip{ min-width:0; display:flex; flex-direction:column; align-items:center; justify-content:space-between;
  padding:14px 6px; gap:12px; position:relative; }
.strip-sets{ display:flex; align-items:center; gap:8px; }
.strip-set-num{ display:inline-flex; align-items:center; color:var(--led-amber);
  filter:drop-shadow(0 0 .08em var(--led-amber-glow)); font-size:clamp(22px,5.5vw,34px); }
.strip-set-sep{ color:#39404e; font-size:20px; }
.strip-set-label{ font-size:12px; letter-spacing:.16em; color:var(--muted); text-transform:uppercase; min-height:14px; text-align:center; }

.clock-wrap{ text-align:center; display:flex; flex-direction:column; gap:5px; align-items:center; }
.clock{ display:inline-flex; align-items:center; color:var(--led-amber);
  filter:drop-shadow(0 0 .08em var(--led-amber-glow)); font-size:clamp(22px,5.6vw,40px); }
.clock.running{ color:var(--led-green); filter:drop-shadow(0 0 .09em var(--led-green-glow)); }
.clock.ended{ color:var(--led-red); filter:drop-shadow(0 0 .09em var(--led-red-glow)); }
.period{ font-size:12px; color:var(--muted); letter-spacing:.10em; min-height:14px; font-variant-numeric:tabular-nums; }

.clock-controls{ display:flex; flex-direction:column; gap:7px; align-items:center; }
.clock-btn{ width:46px; height:46px; border-radius:11px; font-size:16px; color:var(--ink);
  background:linear-gradient(180deg,#20242c,#12151b); border:1px solid var(--line);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05); display:grid; place-items:center; }
.clock-btn.ghost{ width:40px; height:40px; font-size:15px; color:var(--muted); }
.clock-btn:active{ background:#1a1e26; }

/* ═══ 下部ツールバー ═══ */
.toolbar{ flex:0 0 auto; display:flex; gap:8px; }
.tool{ flex:1; display:flex; flex-direction:column; align-items:center; gap:3px; padding:9px 6px; border-radius:11px;
  background:linear-gradient(180deg,#20242c,#151920); border:1px solid var(--line); color:var(--ink);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05); }
.tool:disabled{ color:#4b515e; }
.tool:active:not(:disabled){ background:#1a1e26; }
.tool-glyph{ font-size:19px; line-height:1; }
.tool-text{ font-size:12px; letter-spacing:.02em; }
#nextBtn{ background:linear-gradient(180deg,#12351f,#0e2417); border-color:rgba(55,226,124,.4);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 0 12px rgba(55,226,124,.25); }
#nextBtn .tool-glyph, #nextBtn .tool-text{ color:var(--go); }

/* ═══ 勝敗バナー（演出プリセット: data-fx = plain|flash|confetti）═══ */
.win-banner{ position:fixed; inset:0; z-index:40; display:grid; place-items:center;
  background:rgba(4,6,10,.86); backdrop-filter:blur(6px); }
.win-confetti{ position:absolute; inset:0; width:100%; height:100%; pointer-events:none; }
.win-inner{ position:relative; text-align:center; padding:32px; }
.win-kicker{ font-size:13px; letter-spacing:.36em; color:var(--go); text-transform:uppercase; }
.win-name{ font-size:clamp(40px,12vw,92px); font-weight:850; margin:10px 0; line-height:1; letter-spacing:.02em; }
.win-score{ font-size:clamp(17px,5vw,26px); color:var(--muted); font-variant-numeric:tabular-nums; }
.win-actions{ margin-top:26px; display:flex; gap:10px; justify-content:center; flex-wrap:wrap; }
.win-share{ padding:13px 24px; border-radius:10px; font-size:15px; font-weight:700; letter-spacing:.02em;
  background:rgba(150,170,200,.12); border:1px solid rgba(150,170,200,.28); color:var(--ink); }
.win-share:active{ background:rgba(150,170,200,.2); }
.win-close{ padding:13px 36px; border-radius:10px; font-size:16px; font-weight:700; letter-spacing:.06em;
  background:var(--go); color:#06180d; text-transform:uppercase; }
/* 端正(plain)：静かにフェードイン、色ウォッシュ無し */
.win-banner[data-fx="plain"] .win-name{ animation:winRise .28s ease-out both; }
/* 中間(flash)：勝者色の光がバナーを一度洗う＋名前が弾む */
.win-banner[data-fx="flash"]{ animation:winWash .6s ease-out both; }
.win-banner[data-fx="flash"] .win-name{ animation:winPop .42s cubic-bezier(.2,1.4,.5,1) both; }
/* 盛る(confetti)：紙吹雪(canvas)＋名前が大きく弾む */
.win-banner[data-fx="confetti"] .win-name{ animation:winPop .5s cubic-bezier(.2,1.5,.5,1) both; }
@keyframes winRise{ from{ opacity:0; transform:translateY(10px); } to{ opacity:1; transform:none; } }
@keyframes winPop{ 0%{ opacity:0; transform:scale(.6); } 60%{ opacity:1; transform:scale(1.08); } 100%{ transform:scale(1); } }
@keyframes winWash{ 0%{ background:rgba(255,255,255,.14); } 30%{ background:rgba(4,6,10,.7); } 100%{ background:rgba(4,6,10,.86); } }
@media (prefers-reduced-motion:reduce){ .win-banner,.win-name{ animation:none !important; } }

/* ═══ シート（ダイアログ）═══ */
.sheet{ border:0; padding:0; width:min(560px,94vw); border-radius:18px; color:var(--ink); margin:auto;
  background:linear-gradient(180deg,#191d24,#12151b); border:1px solid var(--line);
  box-shadow:0 24px 60px rgba(0,0,0,.6); }
.sheet::backdrop{ background:rgba(4,6,10,.72); backdrop-filter:blur(4px); }
.sheet-head{ display:flex; align-items:center; justify-content:space-between; padding:18px 20px 6px; }
.sheet-title{ margin:0; font-size:18px; font-weight:700; letter-spacing:.02em; }
.sheet-x{ width:36px; height:36px; border-radius:9px; color:var(--muted); font-size:15px; }
.sheet-x:active{ background:rgba(255,255,255,.08); }

.sport-group{ grid-column:1/-1; font-size:12px; letter-spacing:.16em; color:var(--muted); text-transform:uppercase; padding:12px 20px 2px; }
.sport-list{ display:grid; grid-template-columns:repeat(2,1fr); gap:10px; padding:2px 20px 22px; }
.sport-card{ text-align:left; padding:13px 14px; border-radius:12px;
  background:#10141b; border:1px solid var(--line); box-shadow:inset 0 1px 0 rgba(255,255,255,.03); }
.sport-card[aria-selected="true"]{ border-color:var(--led-amber); box-shadow:0 0 0 1px var(--led-amber), 0 0 14px var(--led-amber-glow); }
.sport-card-name{ font-size:16px; font-weight:700; display:block; }
.sport-card-rule{ font-size:12px; color:var(--muted); margin-top:4px; display:block; line-height:1.45; }

.menu-list{ padding:6px 20px 20px; display:flex; flex-direction:column; gap:4px; }
.menu-row{ display:flex; align-items:center; justify-content:space-between; gap:14px; padding:13px 2px; border-bottom:1px solid var(--line); }
.menu-row-text{ display:flex; flex-direction:column; gap:3px; }
.menu-row-title{ font-size:15px; font-weight:600; }
.menu-row-sub{ font-size:12px; color:var(--muted); }
.menu-row-btns{ justify-content:flex-start; gap:10px; flex-wrap:wrap; border-bottom:0; }
.menu-btn{ padding:11px 18px; border-radius:10px; background:#161a22; border:1px solid var(--line); font-size:14px; font-weight:600; }
.menu-btn.danger{ color:var(--led-red); border-color:rgba(255,75,58,.3); }
.menu-btn:active{ background:#1c212a; }
.menu-foot{ font-size:12px; color:var(--muted); text-align:center; margin:12px 0 0; }

.switch{ appearance:none; -webkit-appearance:none; width:50px; height:30px; border-radius:999px;
  background:#2a2f39; position:relative; transition:background .15s; flex:0 0 auto; }
.switch::after{ content:""; position:absolute; top:3px; left:3px; width:24px; height:24px; border-radius:50%; background:#e9edf4; transition:transform .15s; }
.switch:checked{ background:var(--go); }
.switch:checked::after{ transform:translateX(20px); }

/* 縦積みの設定行（ラベル＋セグメント選択）*/
.menu-row-col{ flex-direction:column; align-items:stretch; gap:10px; }
.seg-pick{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.seg-opt{ height:40px; border-radius:10px; font-size:14px; font-weight:700; color:var(--muted);
  background:#161a22; border:1px solid var(--line); }
.seg-opt.on{ color:var(--ink); background:rgba(55,226,124,.14); border-color:rgba(55,226,124,.45); }
.seg-opt:active{ background:#1c212a; }

/* トースト（共有のフォールバック通知など）*/
.ap-toast{ position:fixed; left:50%; bottom:calc(22px + env(safe-area-inset-bottom)); transform:translate(-50%,12px);
  z-index:60; max-width:88vw; padding:12px 18px; border-radius:12px; font-size:14px; font-weight:600; color:var(--ink);
  background:rgba(20,24,32,.96); border:1px solid var(--line); box-shadow:0 12px 30px rgba(0,0,0,.5);
  opacity:0; pointer-events:none; transition:opacity .2s, transform .2s; }
.ap-toast.show{ opacity:1; transform:translate(-50%,0); }

/* ═══ ダーツ専用入力バー（501→0）═══
   モーダルを開かず、盤面の下に常設。投げる人が自動交代し、定番合計を1タップ or キーで入力 */
.dartbar{ flex:0 0 auto; display:flex; flex-direction:column; gap:6px; padding:8px 10px;
  background:linear-gradient(180deg,#12151b,#0b0d12); border:1px solid var(--line); border-radius:14px;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 2px 6px rgba(0,0,0,.4); }
.db-row{ display:flex; align-items:center; gap:10px; }
.db-thrower{ display:flex; flex-direction:column; align-items:flex-start; gap:1px; padding:6px 14px; border-radius:10px;
  background:#12151c; border:1px solid var(--line); min-width:128px; box-shadow:inset 0 1px 0 rgba(255,255,255,.04); }
.db-thrower-k{ font-size:12px; letter-spacing:.14em; color:var(--muted); }
.db-thrower-name{ font-size:18px; font-weight:800; letter-spacing:.02em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; max-width:34vw; }
.db-thrower.side-a-turn{ border-color:var(--a); box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 0 0 1px var(--a); }
.db-thrower.side-b-turn{ border-color:var(--b); box-shadow:inset 0 1px 0 rgba(255,255,255,.04), 0 0 0 1px var(--b); }
.db-buf{ flex:1; display:flex; align-items:baseline; justify-content:flex-end; gap:12px; }
.db-buf-k{ font-size:12px; letter-spacing:.12em; color:var(--muted); }
.db-val{ font-size:36px; font-weight:800; color:var(--led-amber); font-variant-numeric:tabular-nums;
  filter:drop-shadow(0 0 8px var(--led-amber-glow)); min-width:56px; text-align:right; line-height:1; }
.db-rem{ font-size:14px; color:var(--muted); font-variant-numeric:tabular-nums; min-width:64px; text-align:right; }
.db-rem.bust{ color:var(--led-red); font-weight:700; }
.db-rem.checkout{ color:var(--go); font-weight:700; }
.db-chips{ display:flex; flex-wrap:wrap; gap:6px; }
.db-chip{ flex:1 1 auto; min-width:50px; padding:9px 0; text-align:center; border-radius:9px; font-size:16px; font-weight:750;
  color:var(--ink); background:#12151c; border:1px solid var(--line); box-shadow:inset 0 1px 0 rgba(255,255,255,.04); }
.db-chip.miss{ color:var(--led-red); }
.db-chip:active{ background:#1d222b; }
.db-keys{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.db-key{ padding:9px 0; border-radius:9px; font-size:19px; font-weight:750; color:var(--ink);
  background:#12151c; border:1px solid var(--line); box-shadow:inset 0 1px 0 rgba(255,255,255,.04); }
.db-key:active{ background:#1d222b; }
.db-key.ghost{ color:var(--muted); }
.db-key.ok{ color:#06180d; background:var(--go); font-weight:800; }
/* 横長・広い画面ではチップとキーパッドを横並びにして高さを半分に（盤面のスコアを潰さない） */
@media (min-width:680px){
  .dartbar{ display:grid; grid-template-columns:1fr 1fr; grid-template-areas:"row row" "chips keys"; align-items:start; column-gap:10px; }
  .db-row{ grid-area:row; }
  .db-chips{ grid-area:chips; align-content:flex-start; }
  .db-keys{ grid-area:keys; }
}

/* 競技カードの「電光/カード式」バッジ */
.sport-card-skin{ display:inline-block; margin-left:7px; padding:1px 7px; border-radius:6px; font-size:12px;
  background:rgba(255,255,255,.06); color:var(--muted); vertical-align:middle; }

/* ═══ 数字カード（フリップ＝手動式テーマの数字）═══ */
.as-flip{ filter:none !important; display:inline-flex; align-items:center; }
.flip-d{ display:inline-flex; align-items:center; justify-content:center;
  width:.62em; height:.96em; margin:0 .035em; border-radius:.07em;
  background:linear-gradient(#F7F3E8 0 49.5%, #E7E0CF 49.5% 50.5%, #EFE9D9 50.5% 100%);
  color:#191c22; font-weight:800; line-height:1; position:relative;
  box-shadow:0 .05em .14em rgba(0,0,0,.45), inset 0 .05em 0 rgba(255,255,255,.75), inset 0 -.05em .06em rgba(0,0,0,.12); }
.flip-d::before{ content:""; position:absolute; left:0; right:0; top:50%; height:1px; transform:translateY(-.5px);
  background:rgba(0,0,0,.28); box-shadow:0 1px 0 rgba(255,255,255,.5); }   /* 中央の折り目 */
.flip-colon{ display:inline-flex; align-items:center; padding:0 .06em; color:#F7F3E8; font-weight:800; }

/* ═══ テーマ: フリップ（緑フェルト台＋アイボリーの数字カード）═══ */
body.theme-flip{ background:
    radial-gradient(130% 90% at 50% -10%, #244139 0%, transparent 55%),
    linear-gradient(180deg,#1c332d,#111d19); }
.theme-flip .side, .theme-flip .strip{
  background:radial-gradient(120% 90% at 50% 0%, #2b4a41 0%, #1a2f29 66%);
  border:1px solid #0d1a16;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.06), inset 0 0 40px rgba(0,0,0,.42),
    inset 0 -18px 40px rgba(0,0,0,.34), 0 2px 6px rgba(0,0,0,.4); }
.theme-flip .side-name{ background:linear-gradient(180deg,#f7f3e8,#e7e0cf); color:#20242c;
  border:1px solid rgba(0,0,0,.18); box-shadow:inset 0 1px 0 rgba(255,255,255,.6); }
.theme-flip .side-a .side-name{ border-bottom:3px solid var(--a); }
.theme-flip .side-b .side-name{ border-bottom:3px solid var(--b); }
.theme-flip .strip-set-sep{ color:#82938b; }
.theme-flip .strip-set-label, .theme-flip .period{ color:#bccabf; }
.theme-flip .miss-label{ color:#bccabf; }
.theme-flip .side-sets .pip{ border-color:#5e7168; background:#16241f; }
.theme-flip .dk{ background:#173029; border-color:rgba(255,255,255,.12); color:#dbe6df; }
.theme-flip .dk.plus{ color:#fff; }
.theme-flip .dk.chip{ background:#f2ecda; color:#20242c; border-color:rgba(0,0,0,.2); box-shadow:0 .05em .12em rgba(0,0,0,.35), inset 0 1px 0 rgba(255,255,255,.6); }
.theme-flip .dk.chip:active{ background:#e6dec7; }
.theme-flip .dk.chip.miss{ background:#f2d9d5; color:#8a2018; border-color:rgba(138,32,24,.3); }
.theme-flip .dk.chip.zero{ color:#5c6660; }

/* ═══ レスポンシブ ═══ */
@media (max-width:520px){
  .board{ grid-template-columns:1fr 86px 1fr; gap:6px; }
  .dk{ min-width:46px; min-height:44px; font-size:17px; }
  .dk.minus{ min-width:50px; }
  .dk.chip{ min-width:40px; flex-basis:40px; }
  .side-name{ letter-spacing:.05em; }
  .tool-text{ font-size:12px; }
  /* 狭幅（スマホ）ではバスケの +2 を最下段フル幅＝主役に固定（+3が主役化するのを防ぐ）*/
  .dk.pt.big{ order:2; flex:1 1 100%; font-size:24px; min-height:52px; }
}
@media (orientation:landscape) and (min-width:720px){
  .board{ grid-template-columns:1fr minmax(160px,240px) 1fr; }
  .clock{ font-size:clamp(34px,4.2vw,58px); }
  .strip-set-num{ font-size:clamp(30px,4vw,46px); }
}

/* ═══════════ 競技別スキン（公式 / 日常めくり / TV帯）═══════════ */
/* 「画面全体が点数表」：スキン中はアプリのchrome（競技バー・下部ツール）を隠し、盤面がビューポート全部を占める。
   操作は上下に浮く"薄い半透明オーバーレイ"に集約し、基本は点数表しか見えないようにする */
body.skin-active{ background:#04060a; }
body.skin-active .topbar, body.skin-active .toolbar{ display:none; }
.skinboard{ position:relative; flex:1 1 auto; min-height:0; }        /* 盤面が全部：中の stage を絶対配置で敷き詰める */

/* 上部オーバーレイ：見た目タブ＋競技/設定（薄いグラデ帯・盤面に食い込ませない） */
.skin-switch{ position:absolute; top:0; left:0; right:0; z-index:6;
  display:flex; gap:8px; align-items:center; justify-content:center;
  padding:calc(6px + env(safe-area-inset-top)) 12px 10px;
  background:linear-gradient(rgba(4,6,10,.74), rgba(4,6,10,0)); }
.skin-tab{ display:inline-flex; align-items:center; gap:7px; padding:8px 16px; border-radius:999px;
  background:linear-gradient(#20242c,#171a20); border:1px solid var(--line); color:var(--muted);
  font-size:14px; font-weight:700; letter-spacing:.04em;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05), 0 2px 8px rgba(0,0,0,.28); }
.skin-tab-i{ font-size:16px; line-height:1; }
.skin-tab.on{ color:var(--ink); border-color:var(--led-amber);
  box-shadow:0 0 10px var(--led-amber-glow), inset 0 1px 0 rgba(255,255,255,.06); }

/* 盤面ステージ＝ビューポート全部（余白ゼロ・盤面が縁まで） */
.skin-stage{ position:absolute; inset:0; overflow:hidden;
  display:flex; align-items:stretch; justify-content:stretch; padding:0; }
.skin-stage > *{ width:100%; position:relative; z-index:1; }
/* JSがドック実高さで stage.bottom を設定した時は、盤面側の固定下パディング予約を無効化して二重取りを防ぐ */
.skin-stage.docked > *{ padding-bottom:16px !important; }

/* ═══ 質感レイヤー（全盤共通・"かっこよさ"の底上げ）═══
   狙い: 実機の電光掲示板に一段近づける。個別盤のCSSは触らず stage 側で一括。
   ①中央の淡いジャンボトロン光（間延びした盤の余白を"意図的な奥行き"に変える）
   ②極薄フィルムグレイン（2026 Imperfect by Design＝つるつるのデジタル面に人の手の粒状感） */
/* ①焦点グロー：盤の背後に敷く。opaque な seg 筐体では見えず、間延びしがちな盤の"面"だけ深くする */
.skin-stage::before{ content:""; position:absolute; inset:0; z-index:0; pointer-events:none;
  background:
    radial-gradient(115% 70% at 50% 30%, rgba(70,84,104,.16), transparent 55%),
    radial-gradient(120% 90% at 50% 118%, rgba(0,0,0,.5), transparent 60%); }
/* ②グレイン：全盤の上に極薄で乗せる。opacity と blend は控えめ（数字の輝度を殺さない） */
.skin-stage::after{ content:""; position:absolute; inset:0; z-index:6; pointer-events:none;
  opacity:.05; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='140' height='140'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); }
body.bright .skin-stage::after{ opacity:.03; }   /* デイモードは粒状も控えめ（エッジのキレ優先） */

/* ③LEDの芯ブルーム：各セグに currentColor の tight-core を重ねる。親の広いハローと合わさり実機の発光に近づく。
   currentColor なので amber/green/red どの盤でも自動で色が合う。デイモード(グロー無し設計)では無効化 */
body:not(.bright) .seg-svg{ filter:drop-shadow(0 0 1.5px currentColor); }

/* 上部右の操作クラスタ（競技切替・設定・全画面）と下部の元に戻す/入替/新規（半透明の小ボタン） */
.skin-imm-cluster{ position:absolute; right:12px; top:calc(6px + env(safe-area-inset-top)); z-index:7;
  display:flex; gap:6px; }
.skin-imm-btn{ display:inline-flex; align-items:center; justify-content:center; gap:5px; height:34px; padding:0 11px;
  border-radius:999px; background:rgba(16,20,28,.58); border:1px solid rgba(150,170,200,.2);
  color:#c7d0dc; font-size:13px; font-weight:700; letter-spacing:.03em;
  backdrop-filter:blur(9px) saturate(1.15); -webkit-backdrop-filter:blur(9px) saturate(1.15);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.07), 0 2px 8px rgba(0,0,0,.3); }
.skin-imm-btn .g{ font-size:15px; line-height:1; }
.skin-dock-actions{ display:flex; gap:8px; justify-content:center; flex-wrap:wrap; grid-column:1 / -1; margin-bottom:2px; }
/* ボタン内の語中折り返し（「順位確/定」等）を禁止。4個で入り切らないときは行ごと wrap で丸ごと折る */
.sda-btn{ display:inline-flex; align-items:center; justify-content:center; gap:6px; height:36px; padding:0 12px;
  border-radius:10px; background:rgba(16,20,28,.62); border:1px solid rgba(150,170,200,.18);
  color:#c7d0dc; font-size:13px; font-weight:700; white-space:nowrap;
  backdrop-filter:blur(9px) saturate(1.15); -webkit-backdrop-filter:blur(9px) saturate(1.15);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06), 0 2px 8px rgba(0,0,0,.3); }
.sda-btn:disabled{ color:#4a5361; }
.sda-btn.primary{ background:rgba(255,168,40,.16); border-color:rgba(255,168,40,.4); color:#ffd79a; }

/* タイマー競技：スキン中は上部ストリップが隠れるので、時計操作を盤面下に常設する */
.skin-dock-clock{ display:flex; align-items:center; gap:8px; justify-content:center; flex-wrap:wrap;
  grid-column:1 / -1; margin-bottom:6px; }
.sdc-toggle{ display:inline-flex; align-items:center; justify-content:center; height:38px; min-width:96px; padding:0 16px;
  border-radius:10px; font-size:14px; font-weight:800; letter-spacing:.02em; color:#0c0f13;
  background:linear-gradient(var(--led-green,#39d98a),#22b673); border:none;
  box-shadow:0 4px 14px rgba(45,210,140,.28), inset 0 1px 0 rgba(255,255,255,.35); }
.sdc-toggle.running{ color:#1a0f0a; background:linear-gradient(#ffcf6a,#ff9d2e);
  box-shadow:0 4px 14px var(--led-amber-glow,rgba(255,168,40,.35)), inset 0 1px 0 rgba(255,255,255,.35); }
.sdc-toggle:active{ transform:translateY(1px); }
.sdc-time{ font-variant-numeric:tabular-nums; font-size:20px; font-weight:800; color:#e7edf6; min-width:66px; text-align:center;
  letter-spacing:.04em; }
.sdc-nudge,.sdc-next{ display:inline-flex; align-items:center; justify-content:center; height:36px; padding:0 12px;
  border-radius:10px; font-size:13px; font-weight:700; color:#c7d0dc;
  background:rgba(18,22,30,.7); border:1px solid rgba(150,170,200,.16); backdrop-filter:blur(3px); }
.sdc-nudge:active,.sdc-next:active{ transform:translateY(1px); }
.sdc-next{ color:#bfe3ff; border-color:rgba(79,163,255,.35); background:rgba(79,163,255,.12); }

/* 入力ドック（下部オーバーレイ・＋1が主役 / −1は控えめ・0で無効 / 終了で無効） */
.skin-dock{ position:absolute; left:0; right:0; bottom:0; z-index:6; display:grid; grid-template-columns:1fr 1fr; gap:10px;
  padding:10px 12px calc(9px + env(safe-area-inset-bottom));
  background:linear-gradient(rgba(4,6,10,0), rgba(4,6,10,.62) 40%, rgba(4,6,10,.85)); }
.sd-team{ display:flex; flex-direction:column; gap:8px; padding:11px; border-radius:14px;
  background:linear-gradient(#191d24,#12151b); border:1px solid var(--line); }
.sd-name{ font-size:14px; font-weight:700; color:var(--ink); text-align:center;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.sd-team.side-a .sd-name{ color:var(--a); }
.sd-team.side-b .sd-name{ color:var(--b); }
.sd-btns{ display:flex; gap:8px; }
.sd-minus{ flex:0 0 auto; width:56px; min-height:52px; border-radius:12px; font-size:20px; font-weight:800;
  color:var(--muted); background:#0e1116; border:1px solid var(--line); }
.sd-plus{ flex:1 1 auto; min-height:52px; border-radius:12px; font-size:24px; font-weight:850;
  color:#0c0f13; background:linear-gradient(#ffc25a,#ffa828);
  box-shadow:0 6px 16px var(--led-amber-glow), inset 0 1px 0 rgba(255,255,255,.4); }
.sd-plus:active{ transform:translateY(2px); }
.sd-plus.sm{ flex:1 1 0; min-width:0; font-size:19px; background:linear-gradient(#2a3140,#1c222d); color:#e7edf6;
  border:1px solid rgba(150,170,200,.18); box-shadow:inset 0 1px 0 rgba(255,255,255,.06); }
.sd-minus:disabled{ color:#39414c; background:#0c0e12; border-color:rgba(150,170,200,.06); }
.sd-plus:disabled{ filter:grayscale(.7) brightness(.55); box-shadow:none; }
/* 加点チップ（モルック/ペタンク/ボッチャ/カーリング）：横スクロールの数字帯 */
.skin-dock.dock-chips{ grid-template-columns:1fr 1fr; }
.sd-chips{ display:grid; grid-template-columns:repeat(auto-fit,minmax(30px,1fr)); gap:5px; width:100%; }
.sd-chip{ min-width:0; min-height:38px; padding:0 4px; border-radius:9px; font-size:15px; font-weight:800;
  color:#e7edf6; background:#0e1116; border:1px solid var(--line); font-variant-numeric:tabular-nums; }
.sd-chip:active{ transform:translateY(1px); }
.sd-team.side-a .sd-chip:not(.miss):not(.zero){ border-color:color-mix(in srgb, var(--a) 34%, var(--line)); }
.sd-team.side-b .sd-chip:not(.miss):not(.zero){ border-color:color-mix(in srgb, var(--b) 34%, var(--line)); }
.sd-chip.miss{ color:#ff9a9a; border-color:rgba(255,120,120,.35); }
.sd-chip.zero{ color:var(--muted); }
.sd-chip:disabled{ filter:grayscale(.7) brightness(.55); }

/* ── パタパタ1桁（split-flap）：既定はアイボリーのカード ── */
.ap-flaps{ display:inline-flex; gap:6px; }
.ap-flap{ --w:56px; --h:94px; --fcard:#f7f2e6; --fcard2:#e5dcc5; --fink:#161819; --fgap:#9a917b;
  position:relative; width:var(--w); height:var(--h); perspective:460px;
  font-weight:900; font-size:76px; line-height:var(--h); font-variant-numeric:tabular-nums; letter-spacing:0;
  filter:drop-shadow(0 5px 5px rgba(0,0,0,.45)); }              /* カード束の物理的な厚み・落ち影 */
.ap-flap .apf-half{ position:absolute; left:0; width:100%; height:calc(var(--h)/2); overflow:hidden;
  display:flex; justify-content:center; }
.ap-flap .apf-half > b{ display:block; width:100%; height:var(--h); text-align:center;
  background:linear-gradient(var(--fcard),var(--fcard2)); color:var(--fink); }
.ap-flap .top{ top:0; border-radius:8px 8px 0 0; align-items:flex-start;
  box-shadow:inset 0 2px 0 rgba(255,255,255,.85), inset 0 -8px 9px -6px rgba(0,0,0,.4); }   /* 下端＝溝の陰 */
.ap-flap .top > b{ line-height:var(--h); }
.ap-flap .bottom{ bottom:0; border-radius:0 0 8px 8px; align-items:flex-end;
  box-shadow:inset 0 -3px 0 rgba(0,0,0,.28), inset 0 8px 8px -6px rgba(0,0,0,.16); }         /* 上端＝溝 / 下端＝厚み */
.ap-flap .bottom > b{ line-height:var(--h); margin-top:calc(var(--h)/-2); }
.ap-flap::after{ content:""; position:absolute; left:-1px; right:-1px; top:calc(50% - 1.5px); height:3px;
  background:linear-gradient(#0000005e,var(--fgap) 55%,#ffffff4d); z-index:6;
  box-shadow:0 1px 2px rgba(0,0,0,.3); }                        /* 中央のヒンジ溝＝めくる板の割れ目 */
.ap-flap .apf-fold{ position:absolute; left:0; width:100%; height:calc(var(--h)/2); overflow:hidden;
  backface-visibility:hidden; z-index:5; display:flex; justify-content:center; }
.ap-flap .apf-fold > b{ display:block; width:100%; height:var(--h); text-align:center;
  background:linear-gradient(var(--fcard),var(--fcard2)); color:var(--fink); }
.ap-flap .ft{ top:0; transform-origin:50% 100%; border-radius:9px 9px 0 0; box-shadow:inset 0 1px 0 rgba(255,255,255,.7); }
.ap-flap .ft > b{ line-height:var(--h); }
.ap-flap .fb{ bottom:0; transform-origin:50% 0%; border-radius:0 0 9px 9px; transform:rotateX(90deg); }
.ap-flap .fb > b{ line-height:var(--h); margin-top:calc(var(--h)/-2); }
.ap-flap.flip .ft{ animation:apFoldTop .16s ease-in forwards; }
.ap-flap.flip .fb{ animation:apFoldBottom .16s .16s ease-out forwards; }
.ap-flap.flip .ft > b{ animation:apShade .16s ease-in forwards; }
@keyframes apFoldTop{ 0%{transform:rotateX(0)} 100%{transform:rotateX(-90deg)} }
@keyframes apFoldBottom{ 0%{transform:rotateX(90deg)} 100%{transform:rotateX(0)} }
@keyframes apShade{ to{ filter:brightness(.82) } }

/* ═══ バレー：公式/放送（黒キャビネット + 赤LED）═══ */
.vbo{ width:100%; height:100%; max-width:none;
  display:flex; flex-direction:column; justify-content:center; gap:clamp(14px,3.6vh,36px);
  padding:calc(56px + env(safe-area-inset-top)) 22px calc(150px + env(safe-area-inset-bottom));
  background:                                                    /* 筐体：上部の光の反射 + 縦のヘアライン + 地色 */
    linear-gradient(180deg, rgba(255,255,255,.05), transparent 12%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 2px, transparent 2px 5px),
    radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a);
  border:none; border-radius:0; box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
/* 上部：リーグ名の赤マーキー（実物LEDの一番上の赤文字）*/
.vbo-marquee{ text-align:center; font-size:clamp(14px,3.6vw,20px); font-weight:800; letter-spacing:.14em; color:#ff5a4d;
  text-shadow:0 0 10px rgba(255,80,60,.5); flex:0 0 auto;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
/* 本体：[スコアA] [シアンのセット表] [スコアB]。中央の大2-1島は撤去（実物に無い）*/
.vbo-core{ flex:0 1 auto; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:10px; }
.vbo-side{ display:flex; flex-direction:column; align-items:center; gap:6px; min-width:0; }
.vbo-nm{ font-size:clamp(17px,4.6vw,26px); font-weight:800; letter-spacing:.03em; color:#9aa4b2;  /* 既定はニュートラル。実際の色は下の data-view 側別ルールで信号化 */   /* 実物はチーム名がマゼンタ */
  text-shadow:0 0 8px rgba(210,120,255,.35);
  max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vbo-seg{ display:flex; justify-content:center; height:clamp(78px,15vh,132px);
  color:var(--led-red); filter:drop-shadow(0 0 12px var(--led-red-glow)); }
.vbo-seg .seg-svg{ height:100%; width:auto; }
.vbo-srv{ height:15px; line-height:15px; color:#fff; font-size:13px; }
.vbo-side.serving .vbo-srv::before{ content:"▲"; }                                 /* サーブ側＝白い三角 */
.vbo-scap{ display:flex; align-items:center; gap:4px; font-size:13px; font-weight:800;
  font-variant-numeric:tabular-nums; }
.vbo-scap i{ font-style:normal; }
.vbo-side[data-view="a"] .vbo-scap{ color:#ff6a5a; }                               /* 左=赤S / 右=緑S（実物の配色）*/
.vbo-side[data-view="b"] .vbo-scap{ color:#37e27c; }
/* 中央：完了セットのシアン・コロン表（"公式感の核"）*/
.vbo-sets{ display:flex; flex-direction:column; gap:1px; align-items:center; padding:0 6px;
  font-variant-numeric:tabular-nums; }
.vbo-hrow{ font-size:15px; font-weight:700; color:#37c6dd; letter-spacing:.02em; white-space:pre; }
.vbo-hrow em{ font-style:normal; color:#1f7f90; }
.vbo-hrow b{ font-weight:700; color:#37c6dd; }
.vbo-hrow b.w{ color:#a7ecf7; }
.vbo-hnote{ font-size:13px; color:#5c6672; letter-spacing:.03em; text-align:center; }
/* 下部：VLリング＋緑の時刻 ／ 会場名 ／ セット番号 */
.vbo-foot{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  margin-top:10px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }
.vbo-timewrap{ display:flex; align-items:center; gap:7px; }
.vbo-ring{ width:38px; height:38px; border-radius:50%; display:flex; align-items:center; justify-content:center;
  color:#8894a6; font-size:12px; font-weight:800; letter-spacing:.04em;
  background:radial-gradient(circle, #0a0d12 54%, transparent 55%),
    repeating-conic-gradient(#3a4453 0deg 5deg, transparent 5deg 11deg); }
.vbo-clock{ font-size:15px; letter-spacing:.1em; color:var(--led-green);
  text-shadow:0 0 8px var(--led-green-glow); font-variant-numeric:tabular-nums; }
.vbo-venue{ text-align:center; font-size:13px; letter-spacing:.16em; color:#c2ccdb; font-weight:700;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vbo-per{ font-size:12px; letter-spacing:.1em; color:#5c6672; white-space:nowrap; }

/* ═══ 時間制：公式アリーナLED（黒キャビネット + アンバースコア + 緑の大時計）═══ */
/* 時間制（情報密：スコア＋時計＋ピリオド）は本物の得点板に倣い、時計を独立バンドで上に・スコアを下段に分ける
   2バンド構成（ref: docs/refs/ref-basketball.jpg = Daktronics式）。時計とスコアが横幅を奪い合わないので
   両方を大きく出せて縦の余白も自然に満ちる。1桁競技(セット制=vbo)の余白キープとは別方針＝競技ごと最適化 */
.tmo{ width:100%; height:100%; display:flex; flex-direction:column; justify-content:center; gap:clamp(18px,4.5vh,52px);
  padding:calc(56px + env(safe-area-inset-top)) 20px calc(150px + env(safe-area-inset-bottom));
  background:
    linear-gradient(180deg, rgba(255,255,255,.05), transparent 12%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 2px, transparent 2px 5px),
    radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a);
  box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.tmo-marquee{ text-align:center; font-size:clamp(14px,3.6vw,20px); font-weight:800; letter-spacing:.14em; color:#ff5a4d;
  text-shadow:0 0 10px rgba(255,80,60,.5); flex:0 0 auto; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tmo-core{ flex:0 1 auto; display:flex; flex-direction:column; justify-content:center; gap:clamp(16px,5vh,54px); min-height:0; }
/* 上段：大時計を中央に単独で（横幅をフルに使えるので大きく出せる・名前と競合しない） */
.tmo-clockband{ display:flex; justify-content:center; }
.tmo-clock{ display:flex; justify-content:center; height:clamp(56px,12vh,116px); color:var(--led-green);
  filter:drop-shadow(0 0 12px var(--led-green-glow)); }
.tmo-clock .seg-svg{ height:100%; width:auto; max-width:100%; }
.tmo.running .tmo-clock{ animation:tmoPulse 1.05s steps(1) infinite; }
@keyframes tmoPulse{ 50%{ filter:drop-shadow(0 0 18px var(--led-green-glow)) brightness(1.15); } }
/* 下段：各サイドは「名前の上にスコア」を縦積み、中央に細いピリオド列。スコアが列幅を広く取れて数字が主役になる
   （旧・単列は中央の時計に幅を奪われ数字が縮んだ）。名前は列幅いっぱいで省略されない */
.tmo-scoreband{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:clamp(6px,3vw,18px); }
.tmo-nm{ font-size:clamp(16px,4.4vw,25px); font-weight:800; letter-spacing:.03em; color:#9aa4b2;  /* 既定はニュートラル。実際の色は下の data-view 側別ルールで信号化 */
  text-shadow:0 0 8px rgba(210,120,255,.35); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; text-align:center; }
.tmo-side{ display:flex; flex-direction:column; align-items:center; gap:clamp(6px,1.4vh,12px); min-width:0; }
.tmo-seg{ display:flex; justify-content:center; height:clamp(96px,20vh,182px);
  max-width:100%; min-width:0;   /* 2〜3桁は列幅で頭打ち（隣のピリオド列に食い込ませない） */
  color:var(--led-amber); filter:drop-shadow(0 0 12px var(--led-amber-glow)); }
.tmo-seg .seg-svg{ height:100%; width:auto; max-width:100%; }
.tmo-per{ font-size:clamp(13px,3.6vw,18px); font-weight:800; letter-spacing:.1em; color:#37e27c; text-align:center; padding:0 2px; white-space:nowrap; }
.tmo-foot{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  margin-top:10px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }
.tmo-run{ font-size:12px; font-weight:800; letter-spacing:.06em; color:#5c6672; white-space:nowrap; text-align:right; }
.tmo.running .tmo-run{ color:#37e27c; }

/* ═══ 投てき：公式LED（黒キャビネット + アンバー合計 + 中央に目標/エンド）═══ */
.ado{ width:100%; height:100%; display:flex; flex-direction:column; justify-content:center; gap:clamp(14px,3.6vh,36px);
  padding:calc(56px + env(safe-area-inset-top)) 20px calc(150px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg, rgba(255,255,255,.05), transparent 12%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 2px, transparent 2px 5px),
    radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a);
  box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.ado-marquee{ text-align:center; font-size:clamp(14px,3.6vw,20px); font-weight:800; letter-spacing:.14em; color:#ff5a4d;
  text-shadow:0 0 10px rgba(255,80,60,.5); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ado-core{ flex:0 1 auto; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px; min-height:0; }
.ado-side{ display:flex; flex-direction:column; align-items:center; gap:8px; min-width:0; }
.ado-nm{ font-size:clamp(17px,4.6vw,26px); font-weight:800; letter-spacing:.03em; color:#9aa4b2;  /* 既定はニュートラル。実際の色は下の data-view 側別ルールで信号化 */
  text-shadow:0 0 8px rgba(210,120,255,.35); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.ado-seg{ display:flex; justify-content:center; height:clamp(104px,21vh,190px);
  max-width:100%; min-width:0;   /* 2桁(50等)が中央の「先取/失格」表記に食い込まないよう列幅で頭打ち */
  color:var(--led-amber); filter:drop-shadow(0 0 12px var(--led-amber-glow)); }
.ado-seg .seg-svg{ height:100%; width:auto; max-width:100%; }
.ado-meta{ font-size:14px; font-weight:700; color:#8b97a8; min-height:18px; letter-spacing:.02em; }
.ado-meta b{ color:#37c6dd; font-size:16px; font-variant-numeric:tabular-nums; }
.ado-miss{ color:#ff6a5a; letter-spacing:2px; }
.ado-mid{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:0 6px; }
.ado-goal{ font-size:clamp(14px,3.6vw,18px); font-weight:800; letter-spacing:.1em; color:#37e27c; white-space:nowrap; text-align:center; }
.ado-sub{ font-size:12px; color:#5c6672; letter-spacing:.04em; white-space:nowrap; text-align:center; }
.ado-foot{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  margin-top:10px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }

/* ═══ ダーツ 501：公式LED（残り点が主役・投者を緑でハイライト。入力は下部コンソール）═══ */
.dao{ width:100%; height:100%; display:flex; flex-direction:column; justify-content:space-between;
  padding:calc(56px + env(safe-area-inset-top)) 18px 14px;   /* 下は専用バーがあるのでドック余白なし */
  background:linear-gradient(180deg, rgba(255,255,255,.05), transparent 12%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 2px, transparent 2px 5px),
    radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a);
  box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.dao-marquee{ text-align:center; font-size:clamp(14px,3.6vw,20px); font-weight:800; letter-spacing:.14em; color:#ff5a4d;
  text-shadow:0 0 10px rgba(255,80,60,.5); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dao-core{ flex:1 1 auto; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px; min-height:0; }
.dao-side{ display:flex; flex-direction:column; align-items:center; gap:8px; min-width:0; padding:12px 6px; border-radius:16px;
  border:1px solid transparent; }
.dao-side.throwing{ border-color:rgba(55,226,124,.4);
  background:radial-gradient(120% 90% at 50% 30%, rgba(55,226,124,.09), transparent 70%); }
.dao-nm{ font-size:clamp(17px,4.6vw,26px); font-weight:800; letter-spacing:.03em; color:#9aa4b2;  /* 既定はニュートラル。実際の色は下の data-view 側別ルールで信号化 */
  text-shadow:0 0 8px rgba(210,120,255,.35); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.dao-seg{ display:flex; justify-content:center; height:clamp(72px,14vh,120px);
  max-width:100%; min-width:0;   /* 3桁(501等)が中央の「→0」表記に食い込まないよう列幅で頭打ち */
  color:var(--led-amber); filter:drop-shadow(0 0 12px var(--led-amber-glow)); }

/* 公式LEDのチーム名は多色にせず home=青/away=橙 の信号に統一（左=ホーム/右=アウェイ） */
[data-view="a"] .vbo-nm, .tmo-nm[data-view="a"], [data-view="a"] .ado-nm{
  color:var(--a); text-shadow:0 0 9px rgba(79,163,255,.42); }
[data-view="b"] .vbo-nm, .tmo-nm[data-view="b"], [data-view="b"] .ado-nm{
  color:var(--b); text-shadow:0 0 9px rgba(255,122,77,.42); }
/* ダーツは home/away でなく「投げる人=緑」が主信号。名前は投者だけ緑・他はニュートラル */
.dao-side.throwing .dao-nm{ color:var(--led-green); text-shadow:0 0 9px var(--led-green-glow); }
.dao-side.throwing .dao-seg{ color:var(--led-green); filter:drop-shadow(0 0 14px var(--led-green-glow)); }
.dao-seg .seg-svg{ height:100%; width:auto; max-width:100%; }
.dao-hint{ font-size:13px; font-weight:800; letter-spacing:.04em; color:#37e27c; min-height:17px; text-align:center; }
.dao-mid{ display:flex; flex-direction:column; align-items:center; font-size:clamp(15px,4vw,20px); font-weight:800;
  color:#37e27c; letter-spacing:.08em; }
.dao-mid span{ font-size:12px; color:#5c6672; font-weight:700; }
.dao-foot{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  margin-top:8px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }
/* ダーツTV：ドック無し（下部コンソール）なので下余白を詰める */
.vbt.dat{ padding-bottom:14px; }
.dat-hint{ font-size:13px; font-weight:800; color:#7fe0a4; }
.dat-mid{ flex-direction:column; gap:4px; }
.dat-label{ font-size:clamp(20px,6vw,34px); font-weight:850; color:#eaf1fb; letter-spacing:.04em; }

/* ═══ 投てきTV：バレーTV筐体を流用・中央に GOAL / END 情報 ═══ */
.adt-meta{ font-size:13px; font-weight:700; color:#9fb0cc; }
.adt-mid{ flex-direction:column; gap:4px; }
.adt-info{ font-size:clamp(24px,7vw,40px); font-weight:850; color:#eaf1fb; font-variant-numeric:tabular-nums; letter-spacing:.02em; line-height:1; }

/* ═══ 時間制：TV放送（バレーTVの筐体を流用・中央を大時計に）═══ */
.tmt-mid{ flex-direction:column; gap:6px; }
.tmt-clock{ font-size:clamp(34px,10vw,66px); font-weight:850; color:#eaf1fb; font-variant-numeric:tabular-nums;
  letter-spacing:.02em; line-height:1; text-shadow:0 0 22px rgba(120,180,255,.35); }
.tmt-run{ font-size:12px; font-weight:800; letter-spacing:.14em; color:#7a8ba8; }
.tmt.running .tmt-run{ color:#7fe0a4; }

/* ═══ 野球 / ソフト：公式スコアボード（アンバー得点＋回表裏＋B/S/Oカウント＋走者ダイヤ）═══ */
.bbo{ width:100%; height:100%; display:flex; flex-direction:column; justify-content:center; gap:clamp(14px,3.4vh,34px);
  padding:calc(56px + env(safe-area-inset-top)) 18px calc(150px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg, rgba(255,255,255,.05), transparent 12%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 2px, transparent 2px 5px),
    radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a);
  box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.bbo-marquee{ text-align:center; font-size:clamp(14px,3.6vw,20px); font-weight:800; letter-spacing:.14em; color:#ff5a4d;
  text-shadow:0 0 10px rgba(255,80,60,.5); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bbo-core{ flex:0 1 auto; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:clamp(6px,2.5vw,16px); min-height:0; }
.bbo-side{ display:flex; flex-direction:column; align-items:center; gap:clamp(5px,1.2vh,10px); min-width:0; padding:10px 4px;
  border-radius:16px; border:1px solid transparent; }
.bbo-side.batting{ border-color:rgba(55,226,124,.4);
  background:radial-gradient(120% 90% at 50% 30%, rgba(55,226,124,.09), transparent 70%); }
.bbo-nm{ font-size:clamp(15px,4.2vw,24px); font-weight:800; letter-spacing:.03em; color:#9aa4b2;
  text-shadow:0 0 8px rgba(210,120,255,.35); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bbo-side[data-view="a"] .bbo-nm{ color:var(--a); text-shadow:0 0 9px rgba(79,163,255,.42); }
.bbo-side[data-view="b"] .bbo-nm{ color:var(--b); text-shadow:0 0 9px rgba(255,122,77,.42); }
.bbo-seg{ display:flex; justify-content:center; height:clamp(88px,18vh,168px); max-width:100%; min-width:0;
  color:var(--led-amber); filter:drop-shadow(0 0 12px var(--led-amber-glow)); }
.bbo-seg .seg-svg{ height:100%; width:auto; max-width:100%; }
.bbo-atbat{ font-size:12px; font-weight:800; letter-spacing:.08em; color:#5c6672; min-height:15px; }
.bbo-side.batting .bbo-atbat{ color:var(--led-green); text-shadow:0 0 8px var(--led-green-glow); }
/* 中央：回(表裏)・走者ダイヤ・カウント */
.bbo-center{ display:flex; flex-direction:column; align-items:center; gap:clamp(8px,1.8vh,16px); padding:0 2px; }
.bbo-inning{ display:flex; align-items:baseline; gap:2px; color:var(--led-green); text-shadow:0 0 10px var(--led-green-glow);
  white-space:nowrap; }
.bbo-arrow{ font-size:clamp(13px,3.4vw,17px); font-weight:800; }
.bbo-inum{ font-size:clamp(22px,6.2vw,34px); font-weight:850; font-variant-numeric:tabular-nums; letter-spacing:.02em; }
.bbo-half{ font-size:clamp(14px,3.8vw,19px); font-weight:800; margin-left:1px; }
.bbo-diamond{ position:relative; width:clamp(58px,15vw,80px); height:clamp(58px,15vw,80px); }
.bb-base{ position:absolute; width:26%; height:26%; background:#141a24; border:2px solid rgba(150,170,200,.35);
  transform:rotate(45deg); box-shadow:inset 0 0 6px rgba(0,0,0,.5); }
.bb-base.on{ background:var(--led-amber); border-color:var(--led-amber); box-shadow:0 0 12px var(--led-amber-glow); }
.bb-base.b2{ top:0; left:50%; margin-left:-13%; }                    /* 二塁＝上 */
.bb-base.b3{ top:50%; left:0; margin-top:-13%; }                     /* 三塁＝左 */
.bb-base.b1{ top:50%; right:0; margin-top:-13%; }                    /* 一塁＝右 */
.bb-home{ position:absolute; bottom:0; left:50%; width:16%; height:16%; margin-left:-8%; background:#e7edf6;
  transform:rotate(45deg); opacity:.7; }
.bbo-count{ display:flex; flex-direction:column; gap:5px; }
.bbo-crow{ display:flex; align-items:center; gap:7px; }
.bbo-crow i{ font-style:normal; font-size:13px; font-weight:850; width:14px; color:#8b97a8; letter-spacing:.04em; }
.bbo-dots{ display:flex; gap:5px; }
.bbo-dots i{ width:12px; height:12px; border-radius:50%; background:#141a24; border:1.5px solid rgba(150,170,200,.3);
  box-shadow:inset 0 0 4px rgba(0,0,0,.5); }
.bbo-crow:nth-child(1) .bbo-dots i.on{ background:var(--led-green); border-color:var(--led-green); box-shadow:0 0 8px var(--led-green-glow); }
.bbo-crow:nth-child(2) .bbo-dots i.on{ background:var(--led-amber); border-color:var(--led-amber); box-shadow:0 0 8px var(--led-amber-glow); }
.bbo-crow:nth-child(3) .bbo-dots i.on{ background:var(--led-red);   border-color:var(--led-red);   box-shadow:0 0 8px var(--led-red-glow); }
.bbo-foot{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  margin-top:6px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }
.bbo-venue{ font-size:12px; color:#5c6672; letter-spacing:.04em; text-align:center; white-space:nowrap;
  overflow:hidden; text-overflow:ellipsis; }
.bbo-run{ font-size:12px; font-weight:800; letter-spacing:.06em; color:#37e27c; white-space:nowrap; text-align:right; }

/* 野球ドック：カウント大ボタン＋走者トグル＋得点＋アクション */
.skin-dock.dock-baseball{ display:flex; flex-direction:column; gap:8px; }
.bbd-count{ display:flex; gap:8px; }
.bbd-c{ flex:1 1 0; min-height:50px; border-radius:12px; font-size:16px; font-weight:850; letter-spacing:.02em;
  color:#e7edf6; border:1px solid var(--line); background:linear-gradient(#2a3140,#1c222d); }
.bbd-c:active{ transform:translateY(2px); }
.bbd-c:disabled{ filter:grayscale(.7) brightness(.55); }
.bbd-c.ball{ color:#7fe0a4; border-color:rgba(55,226,124,.32); }
.bbd-c.strike{ color:#ffd79a; border-color:rgba(255,168,40,.32); }
.bbd-c.out{ color:#ff9a8c; border-color:rgba(255,75,58,.32); }
.bbd-bases{ display:flex; align-items:center; gap:8px; }
.bbd-blab{ font-size:13px; font-weight:800; color:#8b97a8; letter-spacing:.04em; flex:0 0 auto; }
.bbd-base{ flex:1 1 0; min-height:40px; border-radius:11px; font-size:14px; font-weight:800; color:#c2cad8;
  border:1px solid var(--line); background:linear-gradient(#222835,#191e28); }
.bbd-base.on{ color:#20140a; background:var(--led-amber); border-color:var(--led-amber);
  box-shadow:0 0 12px var(--led-amber-glow); }
.bbd-base:active{ transform:translateY(2px); }
.bbd-base:disabled{ filter:grayscale(.7) brightness(.55); }
.dock-baseball .sd-team{ flex-direction:row; align-items:center; gap:10px; }
.dock-baseball .sd-name{ flex:0 0 34%; text-align:left; }
.dock-baseball .sd-btns{ flex:1 1 auto; }
.dock-baseball .sd-minus{ min-height:46px; }
.dock-baseball .sd-plus{ min-height:46px; font-size:19px; }
/* アクションは4つ（戻す/入替/試合終了/新しい試合）＝各幅を詰めて1行に収める（文字の途中改行を防ぐ）*/
.dock-baseball .skin-dock-actions{ gap:6px; }
.dock-baseball .sda-btn{ flex:1 1 0; min-width:0; padding:0 6px; font-size:13px; white-space:nowrap; }
.bbd-c.chg{ color:#9fd0ff; border-color:rgba(79,163,255,.34); }

/* 本格版：ラインスコア（回別得点）テーブル。ビジター上・ホーム下、現在の回をハイライト */
.bbo-ls{ width:100%; max-width:560px; margin:0 auto; border-collapse:collapse; table-layout:fixed;
  font-variant-numeric:tabular-nums; color:#c2cad8; }
.bbo-ls th, .bbo-ls td{ text-align:center; padding:3px 0; font-size:13px; font-weight:700;
  border:1px solid rgba(120,140,170,.16); }
.bbo-ls thead th{ color:#8b97a8; font-size:12px; font-weight:800; background:rgba(255,255,255,.02); }
.bbo-ls .bbls-nm{ width:22%; text-align:left; padding-left:8px; font-size:12px; font-weight:800; letter-spacing:.02em;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bbo-ls tr.away .bbls-nm{ color:var(--b); }
.bbo-ls tr.home .bbls-nm{ color:var(--a); }
.bbo-ls .bbls-r{ color:var(--led-amber); font-weight:850; font-size:15px; background:rgba(255,168,40,.06); }
.bbo-ls th.cur, .bbo-ls td.cur{ background:rgba(55,226,124,.14); color:#eafff2; }
.bbo-ls thead th.cur{ color:var(--led-green); }

/* 簡易版：得点＋回＋アウトだけを大きく。B/S・走者・ラインスコアは出さない */
.bbo-simple .bbo-core{ gap:clamp(4px,2vw,14px); }
.bbo-simple .bbo-seg{ height:clamp(120px,26vh,240px); }        /* 得点をさらに大きく（速報でパッと読める） */
.bbo-inning.big{ font-size:0; }                                 /* 子要素で個別サイズ指定 */
.bbo-inning.big .bbo-arrow{ font-size:clamp(18px,4.6vw,24px); }
.bbo-inning.big .bbo-inum{ font-size:clamp(40px,11vw,64px); }
.bbo-inning.big .bbo-half{ font-size:clamp(22px,6vw,34px); }
.bbo-outrow{ display:flex; align-items:center; gap:9px; margin-top:4px; }
.bbo-outrow .bbo-olab{ font-size:14px; font-weight:850; color:#8b97a8; letter-spacing:.04em; }
.bbo-outrow .bbo-dots{ display:flex; gap:6px; }
.bbo-outrow .bbo-dots i{ width:16px; height:16px; border-radius:50%; background:#141a24;
  border:1.5px solid rgba(150,170,200,.3); box-shadow:inset 0 0 4px rgba(0,0,0,.5); }
.bbo-outrow .bbo-dots i.on{ background:var(--led-red); border-color:var(--led-red); box-shadow:0 0 8px var(--led-red-glow); }

/* ═══ テニス本格版：ポイント(0/15/30/40/AD)大表示 → ゲーム → セット ═══ */
.tno{ width:100%; height:100%; display:flex; flex-direction:column; justify-content:center; gap:clamp(14px,3.4vh,32px);
  padding:calc(56px + env(safe-area-inset-top)) 18px calc(150px + env(safe-area-inset-bottom));
  background:linear-gradient(180deg, rgba(255,255,255,.05), transparent 12%),
    repeating-linear-gradient(90deg, rgba(255,255,255,.014) 0 2px, transparent 2px 5px),
    radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a);
  box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.tno-marquee{ text-align:center; font-size:clamp(14px,3.6vw,20px); font-weight:800; letter-spacing:.14em; color:#37e27c;
  text-shadow:0 0 10px rgba(55,226,124,.5); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tno-core{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:clamp(6px,2.5vw,16px); min-height:0; }
.tno-side{ display:flex; flex-direction:column; align-items:center; gap:clamp(6px,1.4vh,12px); padding:10px 4px;
  border-radius:16px; border:1px solid transparent; min-width:0; }
.tno-nm{ font-size:clamp(15px,4.2vw,24px); font-weight:800; letter-spacing:.03em;
  max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.tno-side[data-view="a"] .tno-nm{ color:var(--a); text-shadow:0 0 9px rgba(79,163,255,.42); }
.tno-side[data-view="b"] .tno-nm{ color:var(--b); text-shadow:0 0 9px rgba(255,122,77,.42); }
.tno-pt{ font-size:clamp(66px,19vw,146px); font-weight:850; line-height:.9; font-variant-numeric:tabular-nums;
  color:var(--led-amber); text-shadow:0 0 18px var(--led-amber-glow); }
.tno-pt.ad{ color:var(--led-green); text-shadow:0 0 18px var(--led-green-glow); font-size:clamp(54px,15vw,112px); }
.tno-sub{ display:flex; flex-direction:column; align-items:center; gap:6px; }
.tno-games{ font-size:14px; font-weight:800; color:#c2cad8; letter-spacing:.03em; }
.tno-sets{ display:flex; gap:5px; }
.tno-sets i{ width:12px; height:12px; border-radius:50%; background:#141a24; border:1.5px solid rgba(150,170,200,.3); }
.tno-side[data-view="a"] .tno-sets i.on{ background:var(--a); border-color:var(--a); box-shadow:0 0 8px rgba(79,163,255,.5); }
.tno-side[data-view="b"] .tno-sets i.on{ background:var(--b); border-color:var(--b); box-shadow:0 0 8px rgba(255,122,77,.5); }
.tno-mid{ display:flex; flex-direction:column; align-items:center; gap:6px; padding:0 2px; }
.tno-setno{ font-size:clamp(13px,3.4vw,17px); font-weight:800; color:#9aa4b2; white-space:nowrap; }
.tno-flag{ font-size:12px; font-weight:850; letter-spacing:.06em; color:var(--led-green); min-height:15px;
  text-shadow:0 0 8px var(--led-green-glow); }
.tno-foot{ display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px;
  margin-top:6px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }
.tno-per{ font-size:12px; font-weight:800; color:#37e27c; white-space:nowrap; text-align:right; }
/* テニス本格ドック：ポイント大ボタン */
.tnd-state{ display:flex; align-items:center; justify-content:center; gap:10px; grid-column:1 / -1; margin-bottom:2px; }
.tnd-per{ font-size:13px; font-weight:800; color:#9aa4b2; }
.tnd-flag{ font-size:12px; font-weight:850; letter-spacing:.06em; color:#20140a; background:var(--led-green);
  padding:2px 9px; border-radius:8px; }
.tnd-pt{ min-height:54px; font-size:18px; }

/* ═══ ボウリング：10フレームのスコアシート ═══ */
.bwo{ width:100%; height:100%; display:flex; flex-direction:column; justify-content:center; gap:clamp(12px,3vh,26px);
  padding:calc(56px + env(safe-area-inset-top)) 12px calc(150px + env(safe-area-inset-bottom));
  background:radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a); box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.bwo-marquee{ text-align:center; font-size:clamp(13px,3.4vw,18px); font-weight:800; letter-spacing:.14em; color:#4fa3ff;
  text-shadow:0 0 10px rgba(79,163,255,.45); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bwo-player{ display:flex; flex-direction:column; gap:6px; }
.bwo-head{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:0 2px; }
.bwo-nm{ font-size:clamp(15px,4.4vw,22px); font-weight:800; max-width:58%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bwo-player[data-view="a"] .bwo-nm{ color:var(--a); }
.bwo-player[data-view="b"] .bwo-nm{ color:var(--b); }
.bwo-total{ font-size:clamp(30px,8vw,52px); font-weight:850; font-variant-numeric:tabular-nums; color:var(--led-amber);
  text-shadow:0 0 12px var(--led-amber-glow); line-height:1; }
.bwo-frames{ display:grid; grid-template-columns:repeat(9,1fr) 1.4fr; border:1px solid rgba(120,140,170,.24);
  border-radius:8px; overflow:hidden; }
.bwo-frame{ display:flex; flex-direction:column; border-right:1px solid rgba(120,140,170,.16); min-width:0; }
.bwo-frame:last-child{ border-right:0; }
.bwo-frame.cur{ background:rgba(55,226,124,.16); }
.bwo-fno{ font-size:12px; font-weight:700; text-align:center; color:#8b97a8; background:rgba(255,255,255,.03);
  line-height:1.3; }
.bwo-rolls{ display:flex; justify-content:flex-end; gap:1px; min-height:22px; padding:2px 2px 0; }
.bwo-roll{ min-width:14px; text-align:center; font-size:13px; font-weight:800; color:#e7edf6; font-variant-numeric:tabular-nums; }
.bwo-cum{ text-align:center; font-size:14px; font-weight:850; color:var(--led-amber); min-height:21px; padding-bottom:3px;
  font-variant-numeric:tabular-nums; }
.bwo-foot{ display:flex; align-items:center; justify-content:space-between; gap:8px;
  margin-top:4px; padding-top:8px; border-top:1px solid rgba(120,140,170,.14); }
.bwo-hint{ font-size:12px; font-weight:800; letter-spacing:.05em; color:#37e27c; white-space:nowrap; text-align:right; }
/* ボウリングドック：投球者選択＋ピン数入力 */
.skin-dock.dock-bowl{ display:flex; flex-direction:column; gap:8px; }
.bwd-thrower{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.bwd-lab{ font-size:13px; font-weight:800; color:#8b97a8; letter-spacing:.04em; }
.bwd-who{ min-height:36px; padding:0 12px; border-radius:10px; font-size:14px; font-weight:800; color:#c2cad8;
  border:1px solid var(--line); background:linear-gradient(#222835,#191e28); }
.bwd-who.on{ color:#eafff2; border-color:rgba(79,163,255,.5); background:rgba(79,163,255,.14); }
.bwd-who:active{ transform:translateY(1px); }
.bwd-frame{ margin-left:auto; font-size:13px; font-weight:800; color:#37e27c; white-space:nowrap; }
.bwd-pins{ display:grid; grid-template-columns:repeat(6,1fr); gap:6px; }
.bwd-pin{ min-height:44px; border-radius:10px; font-size:16px; font-weight:850; color:#e7edf6;
  border:1px solid var(--line); background:linear-gradient(#2a3140,#1c222d); }
.bwd-pin:active{ transform:translateY(2px); }
.bwd-pin:disabled{ filter:grayscale(.7) brightness(.55); }
.bwd-pin.gutter{ color:#8b97a8; }
.bwd-pin.strike{ color:#ffd79a; border-color:rgba(255,168,40,.42); grid-column:span 2; }
.bwd-pin.spare{ color:#7fe0a4; border-color:rgba(55,226,124,.42); grid-column:span 2; }

/* グラウンドゴルフ：ホールインワン(HIO)チップ / エンド・ホール送りボタン */
.sd-chip.hio{ color:#ffd79a; border-color:rgba(255,168,40,.45); font-weight:850; grid-column:1 / -1; letter-spacing:.04em; }
.sda-btn.adv{ background:rgba(55,226,124,.14); border-color:rgba(55,226,124,.4); color:#7fe0a4; flex:1 1 auto; }

/* ═══ ヤッツィー：13カテゴリのスコアシート ═══ */
.yzo{ width:100%; height:100%; display:flex; flex-direction:column; gap:8px;
  padding:calc(52px + env(safe-area-inset-top)) 12px calc(150px + env(safe-area-inset-bottom));
  background:radial-gradient(86% 56% at 50% 42%, rgba(58,72,92,.2), transparent 62%), linear-gradient(#0c0f15,#04060a); box-shadow:inset 0 0 130px rgba(0,0,0,.6); }
.yzo-marquee{ text-align:center; font-size:clamp(13px,3.4vw,17px); font-weight:800; letter-spacing:.14em; color:#4fa3ff;
  text-shadow:0 0 10px rgba(79,163,255,.45); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.yzo-head, .yzo-row{ display:grid; grid-template-columns:1.6fr 1fr 1fr; align-items:center; gap:4px; }
.yzo-head{ padding:2px 4px 4px; border-bottom:1px solid rgba(120,140,170,.28); }
.yzo-hcat{ font-size:12px; font-weight:800; color:#8b97a8; letter-spacing:.06em; }
.yzo-hnm{ text-align:center; font-size:clamp(13px,3.8vw,17px); font-weight:850; overflow:hidden; text-overflow:ellipsis;
  white-space:nowrap; padding:3px 4px; border-radius:8px; }
.yzo-hnm[data-view="a"]{ color:var(--a); } .yzo-hnm[data-view="b"]{ color:var(--b); }
.yzo-hnm.active{ background:rgba(55,226,124,.16); box-shadow:inset 0 0 0 1px rgba(55,226,124,.4); color:#eafff2; }
.yzo-body{ flex:1; display:flex; flex-direction:column; border:1px solid rgba(120,140,170,.22); border-radius:10px;
  overflow:hidden; }
.yzo-row{ flex:1; min-height:26px; padding:0 6px; border-bottom:1px solid rgba(120,140,170,.12); }
.yzo-row:last-child{ border-bottom:0; }
.yzo-lab{ font-size:13px; font-weight:700; color:#c2cad8; display:flex; align-items:center; gap:6px; min-width:0;
  overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.yzo-fx{ font-size:12px; font-weight:800; font-style:normal; color:#8b97a8; }
.yzo-cell{ text-align:center; font-size:15px; font-weight:800; font-variant-numeric:tabular-nums; color:#e7edf6;
  min-height:24px; line-height:24px; border-radius:7px; }
.yzo-cell.open{ color:#64748b; }
.yzo-cell.cand{ color:#0a1410; background:linear-gradient(#5cf39a,#2fd47f); box-shadow:0 0 12px rgba(55,226,124,.5);
  font-weight:900; cursor:pointer; }
.yzo-cell.cand:active{ transform:translateY(1px); }
.yzo-row.sum{ background:rgba(255,255,255,.03); }
.yzo-row.sum .yzo-lab{ color:#8b97a8; font-weight:800; }
.yzo-cell.sub{ font-size:13px; font-weight:800; color:#aeb7c4; }
.yzo-cell.sub.bon{ color:var(--led-amber); text-shadow:0 0 8px var(--led-amber-glow); }
.yzo-row.total{ background:rgba(79,163,255,.08); border-top:1px solid rgba(120,140,170,.28); min-height:34px; }
.yzo-row.total .yzo-lab{ font-size:14px; font-weight:850; color:#eafff2; }
.yzo-cell.grand{ font-size:clamp(20px,6vw,28px); font-weight:900; color:var(--led-amber);
  text-shadow:0 0 12px var(--led-amber-glow); line-height:1.1; }
.yzo-foot{ text-align:center; }
.yzo-hint{ font-size:12px; font-weight:800; letter-spacing:.03em; color:#37e27c; }
/* ヤッツィードック：記入者選択＋サイコロ入力 */
.skin-dock.dock-yz{ display:flex; flex-direction:column; gap:8px; }
.yzd-who{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.yzd-dice{ display:flex; justify-content:center; gap:8px; }
.yzd-die{ width:40px; height:40px; display:flex; align-items:center; justify-content:center; border-radius:10px;
  font-size:20px; font-weight:900; font-variant-numeric:tabular-nums; color:#64748b;
  border:1px solid var(--line); background:linear-gradient(#1c222d,#141922); }
.yzd-die.set{ color:#0a1410; background:linear-gradient(#f2f6ff,#c9d6e8); border-color:transparent;
  box-shadow:0 2px 6px rgba(0,0,0,.35); }
.yzd-keys{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.yzd-key{ min-height:44px; border-radius:10px; font-size:18px; font-weight:850; color:#e7edf6;
  border:1px solid var(--line); background:linear-gradient(#2a3140,#1c222d); }
.yzd-key:active{ transform:translateY(2px); }
.yzd-key:disabled{ filter:grayscale(.7) brightness(.55); }
.yzd-key.mut{ font-size:14px; color:#aeb7c4; }

/* ═══ ボード/カード：多桁数字パッド（bigEntry）═══ */
.skin-dock.dock-adbig{ display:flex; flex-direction:column; gap:8px; }
.adb-who{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.adb-buf{ margin-left:auto; min-width:76px; padding:4px 12px; border-radius:10px; text-align:right;
  font-size:24px; font-weight:900; font-variant-numeric:tabular-nums; color:#eafff2;
  border:1px solid var(--line); background:linear-gradient(#12171f,#0c1016); box-shadow:inset 0 1px 4px rgba(0,0,0,.5); }
.adb-keys{ display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.adb-key{ min-height:48px; border-radius:10px; font-size:22px; font-weight:850; color:#e7edf6;
  border:1px solid var(--line); background:linear-gradient(#2a3140,#1c222d); }
.adb-key:active{ transform:translateY(2px); }
.adb-key:disabled{ filter:grayscale(.7) brightness(.55); }
.adb-key.mut{ font-size:18px; color:#aeb7c4; }
.adb-key.ok{ font-size:16px; font-weight:900; color:#0a1410;
  background:linear-gradient(#37e27c,#1fb862); border-color:transparent; }
.adb-hint{ min-height:16px; text-align:center; font-size:12px; font-weight:700; color:#64748b; }

/* ═══ 対局時計（チェス/将棋/囲碁）═══ */
.cmb{ height:100%; display:flex; flex-direction:column; gap:8px; padding:8px; }
.cm-tile{ flex:1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:4px;
  border-radius:16px; border:1px solid rgba(150,170,200,.12); color:var(--ink);
  background:linear-gradient(180deg,#1a1f27,#12151b); box-shadow:inset 0 1px 0 rgba(255,255,255,.03); transition:background .12s,border-color .12s; }
.cm-tile:active{ transform:scale(.995); }
.cm-tile .cm-nm{ font-size:16px; font-weight:800; color:#c2cad8; letter-spacing:.02em; }
.cm-tile .cm-time{ font-size:19vw; line-height:1; font-weight:900; font-variant-numeric:tabular-nums;
  font-family:"Bahnschrift","DIN Alternate",sans-serif; color:#e9eef7; letter-spacing:.01em; }
.cm-tile .cm-state{ font-size:13px; font-weight:800; color:#64748b; }
.cm-tile.active{ background:linear-gradient(180deg,#123021,#0e2018); border-color:rgba(55,226,124,.5); box-shadow:0 0 0 1px rgba(55,226,124,.28), inset 0 1px 0 rgba(255,255,255,.05); }
.cm-tile.active .cm-time{ color:#7ff0ae; }
.cm-tile.active .cm-state{ color:#37e27c; }
.cm-tile.active.low{ background:linear-gradient(180deg,#33201a,#241512); border-color:rgba(255,122,77,.55); box-shadow:0 0 0 1px rgba(255,122,77,.3); animation:cmpulse 1s ease-in-out infinite; }
.cm-tile.active.low .cm-time{ color:#ffb28c; }
.cm-tile.active.low .cm-state{ color:#ff7a4d; }
.cm-tile.dead{ background:linear-gradient(180deg,#2a1416,#1a0e10); border-color:rgba(255,90,90,.5); }
.cm-tile.dead .cm-time{ color:#ff6b6b; }
.cm-tile.dead .cm-state{ color:#ff6b6b; }
.cm-tile.winner{ border-color:rgba(255,196,80,.6); box-shadow:0 0 0 1px rgba(255,196,80,.35); }
.cm-tile.winner .cm-nm{ color:#ffd79a; }
.cm-tile.winner .cm-state{ color:#ffc450; }
@keyframes cmpulse{ 0%,100%{ box-shadow:0 0 0 1px rgba(255,122,77,.3); } 50%{ box-shadow:0 0 0 4px rgba(255,122,77,.16); } }
.cm-bar{ display:flex; align-items:center; justify-content:space-between; padding:2px 10px; }
.cm-title{ font-size:13px; font-weight:800; color:#8b97a8; letter-spacing:.04em; }
.cm-cfg{ font-size:13px; font-weight:800; color:#c2cad8; }
/* 対局時計ドック */
.skin-dock.dock-clock2{ display:flex; flex-direction:column; gap:8px; }
.cm-drow{ display:flex; gap:8px; }
.cmk{ flex:1; min-height:44px; border-radius:11px; font-size:15px; font-weight:850; color:var(--ink);
  border:1px solid var(--line); background:linear-gradient(#242b37,#171c25); }
.cmk:active{ transform:translateY(1px); }
.cmk:disabled{ filter:grayscale(.6) brightness(.6); }
.cmk.toggle.on{ color:#0a1410; background:linear-gradient(#37e27c,#1fb862); border-color:transparent; }
.cm-preset{ display:flex; align-items:center; gap:6px; flex-wrap:wrap; }
.cm-plab,.cm-wlab{ font-size:12px; font-weight:800; color:#8b97a8; letter-spacing:.03em; }
.cm-pk{ min-height:34px; padding:0 11px; border-radius:9px; font-size:13px; font-weight:800; color:#c2cad8;
  border:1px solid var(--line); background:linear-gradient(#20252e,#171b22); }
.cm-pk.on{ color:#eafff2; border-color:rgba(79,163,255,.5); background:rgba(79,163,255,.14); }
.cm-win{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.cm-wk{ flex:1; min-width:96px; min-height:38px; border-radius:10px; font-size:14px; font-weight:850; color:#ffd79a;
  border:1px solid rgba(255,168,40,.35); background:rgba(255,168,40,.1); }
.cm-wk:active{ transform:translateY(1px); }

/* ═══ 多人数：縦の順位リスト ═══ */
.mpb{ height:100%; display:flex; flex-direction:column; gap:8px; padding:10px; }
.mp-top{ display:flex; align-items:baseline; justify-content:space-between; gap:10px; padding:0 4px; }
.mp-title{ font-size:17px; font-weight:900; color:var(--ink); }
.mp-sub{ font-size:12px; font-weight:800; color:#64748b; }
.mp-list{ flex:1; display:flex; flex-direction:column; gap:8px; min-height:0; }
.mp-row{ flex:1; display:flex; align-items:center; gap:12px; padding:0 16px; border-radius:14px;
  border:1px solid rgba(150,170,200,.12); background:linear-gradient(180deg,#1a1f27,#12151b);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03); cursor:pointer; }
.mp-row:active{ transform:scale(.995); }
.mp-rank{ width:34px; height:34px; flex:none; display:flex; align-items:center; justify-content:center;
  border-radius:50%; font-size:16px; font-weight:900; color:#0c0f14; background:#5a6472; }
.mp-row.rank-1 .mp-rank{ background:linear-gradient(#ffdf7e,#f2b437); }
.mp-row.rank-2 .mp-rank{ background:linear-gradient(#e6ecf5,#aeb9c9); }
.mp-row.rank-3 .mp-rank{ background:linear-gradient(#f0b483,#cd8148); color:#1a0f08; }
.mp-nm{ flex:1; min-width:0; font-size:19px; font-weight:850; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.mp-pt{ font-size:34px; font-weight:900; font-variant-numeric:tabular-nums; color:#e9eef7;
  font-family:"Bahnschrift","DIN Alternate",sans-serif; }
.mp-row.lead{ border-color:rgba(255,196,80,.4); box-shadow:0 0 0 1px rgba(255,196,80,.18), inset 0 1px 0 rgba(255,255,255,.04); }
.mp-row.lead .mp-pt{ color:#ffd79a; }
.mp-row.sel{ border-color:rgba(79,163,255,.55); box-shadow:0 0 0 1px rgba(79,163,255,.28); }
.mp-row.win{ border-color:rgba(55,226,124,.55); box-shadow:0 0 0 1px rgba(55,226,124,.3); }
.mp-row.win .mp-pt{ color:#7ff0ae; }
/* 多人数ドック */
.skin-dock.dock-multi{ display:flex; flex-direction:column; gap:8px; }
.mp-cnt{ display:flex; align-items:center; gap:8px; }
.mp-clab{ font-size:12px; font-weight:800; color:#8b97a8; letter-spacing:.03em; }
.mp-ck{ min-height:34px; padding:0 14px; border-radius:9px; font-size:14px; font-weight:850; color:#c2cad8;
  border:1px solid var(--line); background:linear-gradient(#20252e,#171b22); }
.mp-ck.on{ color:#eafff2; border-color:rgba(79,163,255,.5); background:rgba(79,163,255,.14); }
.mp-who{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.mp-signrow{ display:flex; }
.mp-sign{ flex:1; min-height:36px; border-radius:10px; font-size:13px; font-weight:850; color:#c2cad8;
  border:1px solid var(--line); background:linear-gradient(#20252e,#171b22); }
.mp-sign.on{ color:#ffb28c; border-color:rgba(255,122,77,.5); background:rgba(255,122,77,.12); }

/* ═══ 採点競技ドック（審判点コンソール）═══ */
.jdg-slots{ display:flex; flex-wrap:wrap; gap:6px; }
.jdg-slot{ flex:1 1 56px; min-width:56px; min-height:52px; display:flex; flex-direction:column; align-items:center;
  justify-content:center; gap:2px; border-radius:10px; border:1px solid var(--line);
  background:linear-gradient(#20252e,#171b22); }
.jdg-slot.wide{ flex:1 1 100%; flex-direction:row; gap:8px; min-height:46px; }
.jdg-slot.filled{ border-color:rgba(79,163,255,.35); }
.jdg-slot.on{ border-color:rgba(79,163,255,.7); box-shadow:0 0 0 1px rgba(79,163,255,.32); background:rgba(79,163,255,.12); }
.jdg-slot:active{ transform:translateY(1px); }
.jdg-slot:disabled{ filter:grayscale(.6) brightness(.6); }
.jdg-slab{ font-size:12px; font-weight:800; color:#8b97a8; letter-spacing:.03em; }
.jdg-sval{ font-size:20px; font-weight:850; color:#e7edf6; font-variant-numeric:tabular-nums; }
.jdg-slot.filled .jdg-sval{ color:#eafff2; }
.jdg-preview{ min-height:34px; display:flex; align-items:center; justify-content:center; gap:10px;
  border-radius:10px; border:1px solid var(--line); background:rgba(79,163,255,.06); padding:4px 12px; }
.jdg-plab{ font-size:13px; font-weight:800; color:#c2cad8; }
.jdg-plab b{ color:#eafff2; }
.jdg-pv{ font-size:26px; font-weight:900; color:#7ff0ae; font-variant-numeric:tabular-nums; letter-spacing:.01em; }
.dock-judge .sda-btn.adv{ font-weight:900; }

/* ═══ 盤上系（スヌーカー / クリケット / ブリッジ）共通ドック ═══ */
.skin-dock.dock-board3{ display:flex; flex-direction:column; gap:9px; }

/* ── スヌーカー盤面 ── */
.snk{ height:100%; display:flex; flex-direction:column; gap:10px; padding:12px; }
.snk-marq{ font-size:13px; font-weight:850; letter-spacing:.06em; color:#8b97a8; text-transform:uppercase; text-align:center; }
.snk-rows{ flex:1; display:flex; flex-direction:column; gap:10px; min-height:0; }
.snk-side{ flex:1; display:grid; grid-template-columns:1fr auto; align-items:center; gap:8px; padding:0 18px;
  border-radius:16px; border:1px solid rgba(150,170,200,.14); background:linear-gradient(180deg,#1a1f27,#12151b);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.03); }
.snk-nm{ font-size:19px; font-weight:850; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.snk-sc{ grid-row:1 / span 2; align-self:center; font-size:58px; font-weight:900; color:#e9eef7;
  font-variant-numeric:tabular-nums; font-family:"Bahnschrift","DIN Alternate",sans-serif; line-height:1; }
.snk-meta{ display:flex; align-items:center; gap:10px; }
.snk-fr{ font-size:13px; font-weight:800; color:#c2cad8; display:flex; align-items:baseline; gap:5px; }
.snk-fr i{ font-size:12px; font-weight:800; color:#64748b; font-style:normal; }
.snk-tag{ display:none; font-size:12px; font-weight:900; color:#0c0f14; background:#37e27c; padding:2px 9px; border-radius:999px; }
.snk-side.at{ border-color:rgba(55,226,124,.5); box-shadow:0 0 0 1px rgba(55,226,124,.28), inset 0 1px 0 rgba(255,255,255,.04); }
.snk-side.at .snk-tag{ display:inline-block; }
.snk-side.win{ border-color:rgba(255,196,80,.55); box-shadow:0 0 0 1px rgba(255,196,80,.3); }
.snk-side.win .snk-sc{ color:#ffd79a; }
.snk-break{ display:flex; align-items:center; justify-content:center; gap:12px; min-height:44px;
  border-radius:12px; border:1px solid var(--line); background:rgba(79,163,255,.06); }
.snk-blab{ font-size:13px; font-weight:800; color:#8b97a8; }
.snk-bval{ font-size:30px; font-weight:900; color:#7fb2ff; font-variant-numeric:tabular-nums; }
/* スヌーカー・ドック */
.snk-balls{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.snk-ball{ min-height:56px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
  border-radius:12px; border:1px solid rgba(0,0,0,.4); background:var(--bc);
  box-shadow:inset 0 2px 6px rgba(255,255,255,.25), inset 0 -3px 6px rgba(0,0,0,.35), 0 2px 5px rgba(0,0,0,.4); }
.snk-ball b{ font-size:22px; font-weight:900; color:#fff; text-shadow:0 1px 2px rgba(0,0,0,.6); }
.snk-ball i{ font-size:12px; font-weight:800; color:rgba(255,255,255,.92); font-style:normal; text-shadow:0 1px 1px rgba(0,0,0,.6); }
.snk-ball:active{ transform:translateY(1px); }
.snk-ball:disabled{ filter:grayscale(.5) brightness(.55); }
.snk-fouls{ display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
.snk-foul{ min-width:44px; min-height:36px; border-radius:9px; font-size:15px; font-weight:850; color:#ffb28c;
  border:1px solid rgba(255,122,77,.4); background:rgba(255,122,77,.1); }
.snk-foul:active{ transform:translateY(1px); }

/* ── クリケット盤面 ── */
.crk{ height:100%; display:flex; flex-direction:column; gap:6px; padding:12px; }
.crk-marq{ font-size:13px; font-weight:850; letter-spacing:.06em; color:#8b97a8; text-transform:uppercase; text-align:center; }
.crk-head,.crk-foot{ display:grid; grid-template-columns:1fr 78px 1fr; align-items:center; text-align:center; }
.crk-hn{ font-size:16px; font-weight:850; color:var(--ink); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.crk-hmid,.crk-ptmid{ font-size:12px; font-weight:800; color:#64748b; }
.crk-grid{ flex:1; display:flex; flex-direction:column; gap:5px; min-height:0; }
.crk-row{ flex:1; display:grid; grid-template-columns:1fr 78px 1fr; align-items:center; text-align:center;
  border-radius:11px; border:1px solid rgba(150,170,200,.12); background:linear-gradient(180deg,#1a1f27,#12151b); }
.crk-num{ font-size:22px; font-weight:900; color:#e9eef7; font-variant-numeric:tabular-nums; }
.crk-mk{ font-size:26px; font-weight:900; color:#5a6472; line-height:1; }
.crk-mk.closed{ color:#37e27c; }
.crk-pt{ display:flex; flex-direction:column; align-items:center; gap:1px; }
.crk-pt i{ font-size:12px; font-weight:800; color:#64748b; font-style:normal; }
.crk-pt b{ font-size:32px; font-weight:900; color:#e9eef7; font-variant-numeric:tabular-nums;
  font-family:"Bahnschrift","DIN Alternate",sans-serif; }
.crk-pt.win b{ color:#7ff0ae; }
/* クリケット・ドック */
.crk-nums{ display:grid; grid-template-columns:repeat(7,1fr); gap:6px; }
.crk-nbtn{ min-height:48px; border-radius:12px; font-size:19px; font-weight:900; color:#e7edf6;
  border:1px solid var(--line); background:linear-gradient(#20252e,#171b22); font-variant-numeric:tabular-nums; }
.crk-nbtn.bull{ color:#ffd79a; border-color:rgba(255,196,80,.4); }
.crk-nbtn:active{ transform:translateY(1px); }
.crk-nbtn:disabled{ filter:grayscale(.6) brightness(.6); }

/* ── ブリッジ盤面 ── */
.br{ height:100%; display:flex; flex-direction:column; gap:10px; padding:12px; }
.br-marq{ font-size:13px; font-weight:850; letter-spacing:.06em; color:#8b97a8; text-transform:uppercase; text-align:center; }
.br-tot{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:10px; }
.br-team{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:12px 8px; border-radius:16px;
  border:1px solid rgba(150,170,200,.14); background:linear-gradient(180deg,#1a1f27,#12151b); }
.br-nm{ font-size:16px; font-weight:850; color:var(--ink); max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.br-sc{ font-size:44px; font-weight:900; color:#e9eef7; font-variant-numeric:tabular-nums;
  font-family:"Bahnschrift","DIN Alternate",sans-serif; line-height:1; }
.br-team.win{ border-color:rgba(255,196,80,.55); box-shadow:0 0 0 1px rgba(255,196,80,.3); }
.br-team.win .br-sc{ color:#ffd79a; }
.br-vs{ font-size:13px; font-weight:800; color:#64748b; }
.br-log{ flex:1; min-height:0; overflow-y:auto; display:flex; flex-direction:column; gap:5px; padding-bottom:4px; }
.br-empty{ font-size:13px; font-weight:700; color:#64748b; text-align:center; padding:14px 0; }
.br-le{ display:flex; align-items:center; justify-content:space-between; gap:10px; padding:8px 12px; border-radius:10px;
  border:1px solid rgba(150,170,200,.1); background:rgba(255,255,255,.02); }
.br-lc{ font-size:14px; font-weight:800; color:#c2cad8; }
.br-lc i{ font-style:normal; color:#ffb28c; font-weight:900; }
.br-lp{ font-size:15px; font-weight:900; color:#7ff0ae; font-variant-numeric:tabular-nums; }
/* ブリッジ・ドック（採点フォーム） */
.br-frow{ display:flex; align-items:center; gap:8px; }
.br-flab{ flex:none; width:52px; font-size:12px; font-weight:800; color:#8b97a8; letter-spacing:.02em; }
.br-fseg{ flex:1; display:flex; gap:5px; }
.br-fb{ flex:1; min-height:38px; border-radius:9px; font-size:16px; font-weight:850; color:#c2cad8;
  border:1px solid var(--line); background:linear-gradient(#20252e,#171b22); }
.br-fb.suit{ font-size:19px; }
.br-fb.suit.red{ color:#ff8f8f; }
.br-fb.wide{ font-size:14px; }
.br-fb.on{ color:#eafff2; border-color:rgba(79,163,255,.55); background:rgba(79,163,255,.16); }
.br-fb.suit.red.on{ color:#ffd0d0; }
.br-fb:active{ transform:translateY(1px); }
.br-fstep{ flex:1; display:flex; align-items:center; gap:8px; }
.br-step{ width:44px; min-height:38px; border-radius:9px; font-size:22px; font-weight:900; color:#e7edf6;
  border:1px solid var(--line); background:linear-gradient(#20252e,#171b22); }
.br-step:active{ transform:translateY(1px); }
.br-steplab{ flex:1; display:flex; flex-direction:column; align-items:center; gap:1px; font-size:15px; font-weight:850; color:#eafff2; }
.br-steplab i{ font-size:12px; font-weight:800; color:#64748b; font-style:normal; }

/* ═══ 選手権ポイント（F1 / 十種 / ボクシング / 相撲）═══ */
.skin-dock.dock-champ{ gap:9px; }
/* F1: 順位ポイントのグリッド */
.f1-grid{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.f1-pos{ min-height:50px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:1px;
  border:1px solid rgba(150,170,200,.14); border-radius:11px; background:linear-gradient(#20304a,#182338);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.05); }
.f1-pos:active{ transform:translateY(1px); }
.f1-pos:disabled{ opacity:.5; }
.f1-p{ font-size:12px; font-weight:800; color:#8b97a8; }
.f1-pt{ font-size:22px; font-weight:900; color:#eaf1fb; font-variant-numeric:tabular-nums; }
.f1-pos.out{ background:linear-gradient(#2a2230,#1d1826); }
.f1-pos.out .f1-pt{ color:#64748b; }
.f1-flrow{ display:flex; }
.f1-fl{ flex:1; min-height:42px; border:1px solid rgba(150,170,200,.14); border-radius:11px; background:#1a2536;
  font-size:15px; font-weight:800; color:#c8d2e0; }
.f1-fl.on{ background:linear-gradient(#7a3ad6,#5a27b0); border-color:#9a6ce8; color:#fff; }
.f1-fl:active{ transform:translateY(1px); }
/* 十種: 種目切替＋記録入力 */
.deca-evrow{ display:flex; align-items:center; gap:8px; }
.deca-nav{ width:46px; min-height:46px; border-radius:11px; font-size:20px; font-weight:900; color:#e7edf6;
  border:1px solid rgba(150,170,200,.14); background:linear-gradient(#20304a,#182338); }
.deca-nav:active{ transform:translateY(1px); }
.deca-nav:disabled{ opacity:.45; }
.deca-evc{ flex:1; display:flex; flex-direction:column; align-items:center; gap:2px; }
.deca-evn{ font-size:17px; font-weight:850; color:#eaf1fb; }
.deca-evu{ font-size:12px; font-weight:700; color:#64748b; }
.deca-inrow{ display:flex; align-items:center; gap:10px; padding:8px 12px; border-radius:11px;
  background:#141d2c; border:1px solid rgba(150,170,200,.12); }
.deca-inlab{ font-size:14px; font-weight:800; color:#8b97a8; }
.deca-inbuf{ flex:1; text-align:right; font-size:26px; font-weight:900; color:#eaf1fb; font-variant-numeric:tabular-nums; }
.deca-inu{ font-size:14px; font-weight:800; color:#64748b; }
/* ボクシング: ドックの3ジャッジ採点 */
.bx-jrows{ display:flex; flex-direction:column; gap:6px; }
.bx-jrow{ display:flex; align-items:center; gap:5px; }
.bx-jlab{ width:34px; font-size:13px; font-weight:850; color:#8b97a8; }
.bx-jb{ flex:1; min-height:40px; border:1px solid rgba(150,170,200,.12); border-radius:9px; background:#182338;
  font-size:13px; font-weight:800; color:#c8d2e0; padding:0 2px; }
.bx-jb:active{ transform:translateY(1px); }
.bx-jb:disabled{ opacity:.5; }
.bx-jb.on.sa{ background:linear-gradient(#2f6fd6,#1f57b8); border-color:#5a95ea; color:#fff; }
.bx-jb.on.sb{ background:linear-gradient(#d64a4a,#b52f2f); border-color:#ea7a7a; color:#fff; }
.bx-jb.on.ev{ background:linear-gradient(#5a6472,#454e5c); border-color:#8b97a8; color:#fff; }
.bx-korow{ display:flex; gap:8px; }
.bx-ko{ flex:1; min-height:44px; border:1px solid rgba(214,74,74,.4); border-radius:11px; background:#241a1e;
  font-size:14px; font-weight:850; color:#f0c8c8; }
.bx-ko:active{ transform:translateY(1px); }
.bx-ko:disabled{ opacity:.5; }
/* ボクシング: 盤面 */
.bx{ width:100%; max-width:600px; height:100%; justify-content:center; display:flex; flex-direction:column; gap:14px; }  /* height:100%欠落で上詰め→縦センターで面を埋める */
.bx-marq{ font-size:13px; font-weight:800; letter-spacing:.06em; color:#8b97a8; text-align:center; }
.bx-fighters{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; }
.bx-ft{ display:flex; justify-content:center; padding:10px; border-radius:14px; background:linear-gradient(#1c283c,#141d2c);
  border:1px solid rgba(150,170,200,.12); }
.bx-nm{ font-size:22px; font-weight:900; color:#eaf1fb; max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bx-ft.win{ border-color:#37e27c; box-shadow:0 0 0 2px rgba(55,226,124,.35); }
.bx-ft.win .bx-nm{ color:#8effc0; }
.bx-rd{ display:flex; flex-direction:column; align-items:center; gap:2px; }
.bx-rd i{ font-size:12px; font-weight:800; color:#64748b; font-style:normal; letter-spacing:.1em; }
.bx-rd b{ font-size:30px; font-weight:900; color:#ffd166; font-variant-numeric:tabular-nums; }
.bx-cards{ display:flex; flex-direction:column; gap:8px; }
.bx-card{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:12px; padding:10px 16px;
  border-radius:12px; background:#141d2c; border:1px solid rgba(150,170,200,.1); }
.bx-cv{ font-size:30px; font-weight:900; color:#9aa6b6; font-variant-numeric:tabular-nums; }
.bx-cv:first-child{ text-align:right; }
.bx-cv:last-child{ text-align:left; }
.bx-cv.lead{ color:#eaf1fb; }
.bx-clab{ font-size:13px; font-weight:800; color:#64748b; }
.bx-result{ text-align:center; font-size:20px; font-weight:900; color:#ffd166; min-height:0; display:none; }
.bx-result.show{ display:block; }
/* 相撲: 星取表 盤面 */
.sm{ width:100%; max-width:600px; height:100%; justify-content:center; display:flex; flex-direction:column; gap:12px; }  /* height:100%欠落で上詰め→縦センターで面を埋める */
.sm-marq{ font-size:13px; font-weight:800; letter-spacing:.06em; color:#8b97a8; text-align:center; }
.sm-rows{ display:flex; flex-direction:column; gap:12px; }
.sm-side{ padding:12px 14px; border-radius:14px; background:linear-gradient(#1c283c,#141d2c);
  border:1px solid rgba(150,170,200,.12); }
.sm-side.win{ border-color:#37e27c; box-shadow:0 0 0 2px rgba(55,226,124,.3); }
.sm-head{ display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.sm-nm{ font-size:20px; font-weight:900; color:#eaf1fb; }
.sm-rec{ font-size:20px; font-weight:900; color:#eaf1fb; font-variant-numeric:tabular-nums; }
.sm-rec i{ font-size:13px; font-weight:800; color:#64748b; font-style:normal; margin:0 6px 0 1px; }
.sm-tag{ margin-left:auto; font-size:13px; font-weight:850; padding:3px 10px; border-radius:999px; }
.sm-tag.kachi{ background:rgba(55,226,124,.16); color:#8effc0; border:1px solid rgba(55,226,124,.4); }
.sm-tag.make{ background:rgba(214,74,74,.16); color:#f0a8a8; border:1px solid rgba(214,74,74,.4); }
.sm-grid{ display:grid; grid-template-columns:repeat(15,1fr); gap:4px; }
.sm-star{ aspect-ratio:1; display:flex; align-items:center; justify-content:center; border-radius:6px;
  font-size:16px; font-weight:900; background:#0f1622; }
.sm-star.w{ color:#eaf1fb; background:#1f3350; }
.sm-star.l{ color:#3a4352; background:#181117; }
.sm-star.e{ color:#3a4352; }
/* 相撲: ドック */
.sm-inrows{ display:flex; flex-direction:column; gap:8px; }
.sm-inrow{ display:flex; align-items:center; gap:8px; }
.sm-inlab{ flex:1; font-size:16px; font-weight:850; color:#eaf1fb; }
.sm-inlab i{ font-size:12px; font-weight:700; color:#64748b; font-style:normal; margin-left:6px; }
.sm-mk{ min-width:96px; min-height:44px; border-radius:11px; font-size:15px; font-weight:850;
  border:1px solid rgba(150,170,200,.14); }
.sm-mk:active{ transform:translateY(1px); }
.sm-mk:disabled{ opacity:.4; }
.sm-mk.w{ background:linear-gradient(#20304a,#182338); color:#eaf1fb; }
.sm-mk.l{ background:linear-gradient(#241a1e,#1a1216); color:#f0c8c8; }

/* ═══ Ⓔ 的スポーツ：順位表(mp)流用ドック（環スコア / 弓道 / ダーツ）═══ */
.skin-dock.dock-target .adb-hint{ text-align:center; }
/* 順位表の弓道サブ（n中/m射/率）と単位「中」 */
.mp-note{ display:block; font-size:12px; font-weight:700; color:#8b97a8; margin-top:2px; }
.mp-ptu{ font-size:12px; font-weight:800; color:#8b97a8; font-style:normal; margin-left:2px; }
/* アーチェリー・射撃：環ボタングリッド（的の色分け） */
.ring-grid{ display:grid; grid-template-columns:repeat(6,1fr); gap:7px; margin-bottom:9px; }
.ring-b{ min-height:46px; border-radius:12px; border:1px solid rgba(150,170,200,.14);
  font-size:19px; font-weight:900; color:#0e1726; cursor:pointer; box-shadow:0 1px 2px rgba(10,16,28,.18); }
.ring-b:active{ transform:translateY(1px); }
.ring-b:disabled{ opacity:.45; }
.ring-b.ring-x{ background:linear-gradient(#fff3b0,#f6d34a); color:#5a4600; }   /* インナー10 */
.ring-b.ring-hi{ background:linear-gradient(#ffe98a,#ffd54a); color:#5a4600; } /* 10・9 金 */
.ring-b.ring-mid{ background:linear-gradient(#ff8f8f,#e5484d); color:#fff; }   /* 8〜6 赤 */
.ring-b.ring-lo{ background:linear-gradient(#7fbfff,#3b82f6); color:#fff; }    /* 5〜1 青 */
.ring-b.ring-m{ background:linear-gradient(#39424f,#232a34); color:#c6cfdb; }  /* 外し */
/* 弓道：中り/外れ */
.ky-cur{ display:flex; justify-content:space-between; align-items:baseline; padding:4px 6px 10px; }
.ky-cur b{ font-size:15px; color:#eaf1fb; }
.ky-curv{ font-size:16px; font-weight:850; color:#c6cfdb; }
.ky-btns{ display:grid; grid-template-columns:1fr 1fr; gap:11px; margin-bottom:9px; }
.ky-b{ min-height:66px; border-radius:15px; border:1px solid rgba(150,170,200,.14);
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:2px;
  font-size:15px; font-weight:850; cursor:pointer; box-shadow:0 1px 3px rgba(10,16,28,.2); }
.ky-b:active{ transform:translateY(1px); }
.ky-b:disabled{ opacity:.45; }
.ky-b .ky-mk{ font-size:28px; line-height:1; }
.ky-b.hit{ background:linear-gradient(#20304a,#152036); color:#eaf1fb; }
.ky-b.hit .ky-mk{ color:#7fd7a0; }
.ky-b.miss{ background:linear-gradient(#241a1e,#171015); color:#e6c6c6; }
.ky-b.miss .ky-mk{ color:#e56b6b; }
/* カウントアップ（ダーツ）：倍率＋数字グリッド＋ブル */
.cup-multrow{ display:grid; grid-template-columns:repeat(3,1fr); gap:8px; margin-bottom:9px; }
.cup-mult{ min-height:42px; border-radius:11px; border:1px solid rgba(150,170,200,.14);
  background:linear-gradient(#222c3a,#1a222e); color:#c6cfdb; font-size:14px; font-weight:800; cursor:pointer; }
.cup-mult.on{ background:linear-gradient(#2f7d5b,#1f5f43); color:#eafff2; border-color:rgba(120,220,170,.4); }
.cup-mult:disabled{ opacity:.45; }
.cup-grid{ display:grid; grid-template-columns:repeat(5,1fr); gap:7px; margin-bottom:8px; }
.cup-seg{ min-height:44px; border-radius:11px; border:1px solid rgba(150,170,200,.14);
  background:linear-gradient(#eef2f8,#d8e0ec); color:#12203a; font-size:18px; font-weight:850; cursor:pointer;
  box-shadow:0 1px 2px rgba(10,16,28,.16); }
.cup-seg:active{ transform:translateY(1px); }
.cup-seg:disabled{ opacity:.45; }
.cup-bullrow{ display:grid; grid-template-columns:1fr 1fr; gap:9px; margin-bottom:9px; }
.cup-bull{ min-height:48px; border-radius:12px; border:1px solid rgba(150,170,200,.14);
  background:linear-gradient(#ff8f8f,#e5484d); color:#fff; font-size:15px; font-weight:850; cursor:pointer; }
.cup-bull.inner{ background:linear-gradient(#7fd79a,#2f9e5b); }
.cup-bull:active{ transform:translateY(1px); }
.cup-bull:disabled{ opacity:.45; }
.bx-ko.sub{ border-color:rgba(120,150,220,.42); background:#181e30; color:#c6d2f0; }

/* ═══ Ⓕ 格闘技（柔道/剣道）共通ボード ═══ */
.cmb{ width:100%; max-width:600px; display:flex; flex-direction:column; gap:14px; }
.cmb-marq{ font-size:13px; font-weight:800; letter-spacing:.06em; color:#8b97a8; text-align:center; }
.cmb-sides{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.cmb-side{ display:flex; flex-direction:column; align-items:center; gap:8px; padding:16px 10px; border-radius:16px;
  background:linear-gradient(#141d2c,#101725); border:1px solid rgba(150,170,200,.14); }
.cmb-side.win{ border-color:#e2b13a; box-shadow:0 0 0 2px rgba(226,177,58,.4) inset; }
.cmb-nm{ font-size:18px; font-weight:900; color:#eaf1fb; }
.cmb-big{ font-size:30px; font-weight:900; color:#f4d78a; min-height:38px; line-height:1; letter-spacing:.02em; }
.cmb-sub{ font-size:14px; font-weight:800; color:#9aa6b6; }
.cmb-sub b{ color:#eaf1fb; font-size:18px; }
.cmb-pen{ display:flex; align-items:center; gap:6px; font-size:13px; font-weight:800; color:#8b97a8; }
.cmb-pen i{ width:13px; height:13px; border-radius:50%; border:1px solid rgba(214,74,74,.5); background:transparent; }
.cmb-pen i.on{ background:linear-gradient(#e05a5a,#c23434); border-color:#ea7a7a; }
.kd-slots{ display:flex; gap:10px; }
.kd-ip{ min-width:48px; padding:8px 10px; border-radius:11px; font-size:18px; font-weight:900; color:#5a6472;
  background:#0f1622; border:1px dashed rgba(150,170,200,.28); }
.kd-ip.on{ color:#0d1420; background:linear-gradient(#f4d78a,#d9b24a); border:1px solid #e2b13a; }
.cmb-result{ text-align:center; font-size:20px; font-weight:900; color:#f4d78a; min-height:26px;
  opacity:0; transition:opacity .2s; }
.cmb-result.show{ opacity:1; }
.cmb-cols{ display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.cmb-sides.kin3{ grid-template-columns:1fr 1fr 1fr; gap:8px; }
.cmb-cols.kin3{ grid-template-columns:1fr 1fr 1fr; gap:7px; }
.cmb-side.kin-a{ background:linear-gradient(#1c2330,#11151d); border-color:rgba(185,195,210,.30); }
.cmb-side.kin-b{ background:linear-gradient(#132038,#0e1728); border-color:rgba(90,149,234,.42); }
.cmb-side.kin-c{ background:linear-gradient(#21252d,#181c22); border-color:rgba(150,160,175,.34); }
/* スポーツクライミング（ボルダー）盤 */
.cmb.bldr .cmb-side{ background:linear-gradient(#141b1a,#0e1413); border-color:rgba(120,200,170,.30); }
.bldr-big{ font-size:64px; font-weight:900; line-height:1; letter-spacing:-1px; color:#eafff4; display:flex; align-items:baseline; justify-content:center; gap:6px; }
.bldr-lab{ font-size:15px; font-weight:800; color:#79d3a8; letter-spacing:.5px; }
.bldr-row{ display:flex; justify-content:center; gap:10px; margin-top:8px; }
.bldr-cell{ font-size:15px; font-weight:700; color:#9fb4ac; background:rgba(120,200,170,.10); border:1px solid rgba(120,200,170,.18); border-radius:8px; padding:4px 10px; }
.bldr-cell b{ color:#eafff4; font-size:17px; margin-left:2px; }
/* ── パネル盤の配置ムラ修正（seg盤には影響させない）──
   ①縦充填: .cmb-sides だけ flex:1 が抜けていて中身が上詰め→下がスカスカ（climbing で顕著）。
     .mpb/.snk/.crk/.yzo は各リストに flex:1 済みなので対象外。カードは中央寄せで面を埋める。
   ②上部クリアランス: パネル盤の見出し(-marq/-top)が上部オーバーレイ（表示切替タブ＋競技/⤢/⋯クラスタ）と
     重なる。seg盤は元々クリア済みなので、パネル盤ルートにだけ上部の余白を足して衝突を解消する。 */
.cmb-sides{ flex:1 1 auto; min-height:0; }
.cmb-side{ justify-content:center; }
/* .cmb系は盤ごとに中間コンテナ名が違う（.cmb-sides / .gob / .bg… ）。flex:1 が無い盤は
   内容が上詰め→下スカスカになるので、.cmb 自体を縦センターにして内部構造に依存せず面を整える。
   flex:1 を持つ盤（climbing/格闘の .cmb-sides）では中間が伸びきるため justify は無効化され無害。 */
.cmb{ justify-content:center; }
.mpb, .cmb, .snk, .crk, .br, .bwo, .yzo, .ck, .bx, .sm{ padding-top:calc(54px + env(safe-area-inset-top)); }
.cmb-col{ display:flex; flex-direction:column; gap:7px; }
.cmb-cnm{ text-align:center; font-size:14px; font-weight:850; color:#8b97a8; }
.cmb-b{ min-height:44px; border-radius:11px; border:1px solid rgba(150,170,200,.14); background:#182338;
  font-size:15px; font-weight:850; color:#dbe4f0; }
.cmb-b:active{ transform:translateY(1px); }
.cmb-b:disabled{ opacity:.45; }
.cmb-b.ippon{ background:linear-gradient(#3f7fe0,#255bc0); border-color:#5a95ea; color:#fff; }
.cmb-b.waza{ background:linear-gradient(#2a3a54,#1d2a40); color:#eaf1fb; }
.cmb-b.shido{ background:#241a1e; border-color:rgba(214,74,74,.4); color:#f0c8c8; }
.kd-strikes{ display:grid; grid-template-columns:1fr 1fr; gap:6px; }
.cmb-b.kdpt{ min-height:40px; font-size:14px; background:linear-gradient(#20304a,#182338); }

/* ═══ Ⓖ 本格クリケット：2チームのスコアボード ═══ */
.ck{ width:100%; max-width:600px; height:100%; display:flex; flex-direction:column; gap:12px; }  /* height:100% が抜けていて上詰め→下スカスカだった */
.ck-marq{ font-size:13px; font-weight:800; letter-spacing:.06em; color:#8b97a8; text-align:center; }
.ck-rows{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; gap:10px; }
.ck-side{ flex:1; justify-content:center; display:flex; flex-direction:column; gap:5px; padding:14px 16px; border-radius:15px;
  background:linear-gradient(#141d2c,#101725); border:1px solid rgba(150,170,200,.14); }
.ck-side.bat{ border-color:#3f7fe0; box-shadow:0 0 0 1px rgba(63,127,224,.35) inset; }
.ck-side.win{ border-color:#e2b13a; box-shadow:0 0 0 2px rgba(226,177,58,.4) inset; }
.ck-head{ display:flex; align-items:center; gap:9px; }
.ck-nm{ font-size:17px; font-weight:900; color:#eaf1fb; }
.ck-badge{ font-size:12px; font-weight:850; color:#0d1420; background:linear-gradient(#5a9bf0,#3f7fe0);
  padding:2px 9px; border-radius:999px; }
.ck-role{ font-size:12px; font-weight:800; color:#8b97a8; }
.ck-score{ display:flex; align-items:baseline; gap:8px; }
.ck-score b{ font-size:38px; font-weight:900; color:#f4d78a; line-height:1; font-variant-numeric:tabular-nums; }
.ck-wk{ font-size:22px; font-weight:850; color:#9aa6b6; }
.ck-meta{ font-size:13px; font-weight:750; color:#8b97a8; }
.ck-chase{ text-align:center; font-size:14px; font-weight:800; color:#c8d2e0; min-height:20px;
  padding:8px 10px; border-radius:11px; background:#141d2c; border:1px solid rgba(150,170,200,.12);
  opacity:0; transition:opacity .2s; }
.ck-chase.show{ opacity:1; }
.ck-chase b{ color:#f4d78a; }
.ck-result{ text-align:center; font-size:20px; font-weight:900; color:#f4d78a; min-height:26px;
  opacity:0; transition:opacity .2s; }
.ck-result.show{ opacity:1; }
/* クリケット ドック */
.ck-batline{ text-align:center; font-size:14px; font-weight:800; color:#8b97a8; margin-bottom:2px; }
.ck-batline b{ color:#eaf1fb; font-size:16px; }
.ck-runs{ display:grid; grid-template-columns:repeat(6,1fr); gap:7px; }
.ck-run{ min-height:52px; border-radius:12px; border:1px solid rgba(150,170,200,.14); background:linear-gradient(#1c2740,#141d2c);
  font-size:22px; font-weight:900; color:#eaf1fb; font-variant-numeric:tabular-nums; }
.ck-run:active{ transform:translateY(1px); }
.ck-run:disabled{ opacity:.45; }
.ck-run.boundary{ background:linear-gradient(#2f6fd6,#1f57b8); border-color:#5a95ea; color:#fff; }
.ck-xrow{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:7px; }
.ck-x{ min-height:46px; border-radius:11px; border:1px solid rgba(150,170,200,.14); background:#182338;
  font-size:14px; font-weight:800; color:#dbe4f0; }
.ck-x:active{ transform:translateY(1px); }
.ck-x:disabled{ opacity:.45; }
.ck-x.wk{ background:#241a1e; border-color:rgba(214,74,74,.4); color:#f0c8c8; }

/* ═══ オセロ：石数(64) ═══ */
.otb{ display:flex; flex-direction:column; gap:14px; padding:4px 2px; }
.ot-sides{ display:grid; grid-template-columns:1fr 1fr; gap:12px; }
.ot-side{ display:flex; flex-direction:column; align-items:center; gap:4px; padding:14px 8px; border-radius:14px;
  border:1px solid rgba(150,170,200,.12); background:#141d2c; }
.ot-side.blk{ background:linear-gradient(#12161f,#0d1017); border-color:rgba(160,180,210,.14); }
.ot-side.wht{ background:linear-gradient(#e9edf4,#d4dae6); border-color:rgba(120,140,170,.3); }
.ot-side.win{ box-shadow:0 0 0 2px #f4d78a inset; }
.ot-nm{ font-size:15px; font-weight:800; color:#cdd7e6; }
.ot-side.wht .ot-nm{ color:#2a3346; }
.ot-big{ font-size:60px; font-weight:900; line-height:1; color:#eaf1fb; font-variant-numeric:tabular-nums; }
.ot-side.wht .ot-big{ color:#161c28; }
.ot-bar{ display:flex; height:16px; border-radius:8px; overflow:hidden; border:1px solid rgba(150,170,200,.18); }
.ot-seg{ display:block; }
.ot-seg.blk{ background:#1b2233; }
.ot-seg.em{ background:#2f3a4e; }
.ot-seg.wht{ background:#e6ebf3; }
.ot-meta{ text-align:center; font-size:13px; font-weight:700; color:#8b97a8; }
.ot-btns{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:7px; }

/* ═══ 囲碁：地合い（地＋アゲハマ＋コミ）═══ */
.gob{ display:grid; grid-template-columns:1fr 1fr; gap:12px; padding:4px 2px; }
.go-side{ padding:14px 12px; border-radius:14px; border:1px solid rgba(150,170,200,.12); background:#141d2c; }
.go-side.blk{ background:linear-gradient(#141a24,#0f131b); }
.go-side.wht{ background:linear-gradient(#1a2130,#141a26); }
.go-side.win{ box-shadow:0 0 0 2px #f4d78a inset; }
.go-head{ display:flex; align-items:baseline; justify-content:space-between; gap:8px; }
.go-nm{ font-size:15px; font-weight:800; color:#dbe4f0; }
.go-tot{ font-size:34px; font-weight:900; color:#f4d78a; font-variant-numeric:tabular-nums; }
.go-tu{ font-size:14px; font-weight:700; color:#8b97a8; margin-left:2px; }
.go-brk{ margin-top:6px; font-size:14px; font-weight:700; color:#8b97a8; }
.go-brk b{ color:#eaf1fb; font-size:16px; }
.go-btns{ display:grid; grid-template-columns:1fr 1fr; gap:7px; }

/* ═══ バックギャモン：マッチ得点＋キューブ ═══ */
.bgb{ padding:6px 2px; }
.bg-sides{ display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:8px; }
.bg-side{ display:flex; flex-direction:column; align-items:center; gap:2px; padding:12px 6px; border-radius:14px;
  border:1px solid rgba(150,170,200,.12); background:#141d2c; }
.bg-side.win{ box-shadow:0 0 0 2px #f4d78a inset; }
.bg-nm{ font-size:15px; font-weight:800; color:#cdd7e6; }
.bg-big{ font-size:56px; font-weight:900; line-height:1; color:#eaf1fb; font-variant-numeric:tabular-nums; }
.bg-to{ font-size:13px; font-weight:700; color:#8b97a8; }
.bg-cube{ display:flex; flex-direction:column; align-items:center; gap:3px; padding:8px 10px; border-radius:12px;
  background:#0f131b; border:1px solid rgba(150,170,200,.16); }
.bg-cl{ font-size:12px; font-weight:700; color:#8b97a8; }
.bg-cv{ font-size:26px; font-weight:900; color:#f4d78a; }
.bg-btns{ display:grid; grid-template-columns:1fr; gap:6px; }
.bg-cuberow{ margin-top:2px; }
.bg-cuberow .cmb-b{ width:100%; }

/* ═══ クリベッジ：121ペグ盤 ═══ */
.cbb{ display:flex; flex-direction:column; gap:12px; padding:4px 2px; }
.cb-lane{ padding:12px 12px; border-radius:14px; border:1px solid rgba(150,170,200,.12); background:#141d2c; }
.cb-lane.win{ box-shadow:0 0 0 2px #f4d78a inset; }
.cb-head{ display:flex; align-items:baseline; justify-content:space-between; }
.cb-nm{ font-size:15px; font-weight:800; color:#dbe4f0; }
.cb-pt{ font-size:32px; font-weight:900; color:#f4d78a; font-variant-numeric:tabular-nums; }
.cb-pu{ font-size:13px; font-weight:700; color:#8b97a8; margin-left:3px; }
.cb-track{ position:relative; height:14px; margin-top:8px; border-radius:7px; background:#0f131b;
  border:1px solid rgba(150,170,200,.16); overflow:visible; }
.cb-fill{ position:absolute; left:0; top:0; bottom:0; border-radius:7px 0 0 7px; background:linear-gradient(90deg,#2f6fd6,#5a95ea); }
.cb-peg{ position:absolute; top:50%; width:12px; height:12px; margin-left:-6px; border-radius:50%;
  background:#f4d78a; border:2px solid #1a1205; transform:translateY(-50%); box-shadow:0 1px 3px rgba(0,0,0,.5); }
.cb-meta{ margin-top:6px; font-size:13px; font-weight:700; color:#8b97a8; }
.cb-btns{ display:grid; grid-template-columns:repeat(4,1fr); gap:6px; }
.cb-b{ min-height:38px; font-size:15px; }

/* ═══ カタン：VP内訳ドック ═══ */
.vp-grid{ display:grid; grid-template-columns:1fr 1fr 1fr; gap:8px; }
.vp-b{ display:flex; flex-direction:column; align-items:center; gap:2px; min-height:52px; justify-content:center;
  border-radius:12px; border:1px solid rgba(150,170,200,.14); background:linear-gradient(#20304a,#182338); color:#eaf1fb; }
.vp-b:active{ transform:translateY(1px); }
.vp-b:disabled{ opacity:.45; }
.vp-b.neg{ background:#241a1e; border-color:rgba(214,74,74,.4); color:#f0c8c8; }
.vp-l{ font-size:13px; font-weight:800; }
.vp-v{ font-size:15px; font-weight:900; color:#f4d78a; }
.vp-b.neg .vp-v{ color:#f0c8c8; }

/* ═══ スクラブル：ビンゴボタン ═══ */
.sc-bingorow{ margin:2px 0; }
.sc-bingo{ width:100%; min-height:44px; border-radius:12px; border:1px solid #5a95ea;
  background:linear-gradient(#2f6fd6,#1f57b8); color:#fff; font-size:15px; font-weight:900; }
.sc-bingo:active{ transform:translateY(1px); }
.sc-bingo:disabled{ opacity:.45; }

/* ═══ バレー：体育館・日常（緑フェルト + めくりカード）═══ */
.vbg{ width:100%; max-width:600px; display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:10px;
  background:                                                    /* フェルト：手続き的ノイズ（毛羽）＋細かな織り目＋地色 */
    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='150' height='150'%3E%3Cfilter id='fz'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='150' height='150' filter='url(%23fz)' opacity='0.6'/%3E%3C/svg%3E"),
    repeating-linear-gradient(135deg, rgba(0,0,0,.05) 0 3px, rgba(255,255,255,.015) 3px 6px),
    linear-gradient(160deg,#237a51,#154c31);
  background-size:150px 150px, auto, auto;
  background-blend-mode:overlay, soft-light, normal;
  border:2px solid #103823; border-radius:16px; padding:18px 14px;
  box-shadow:inset 0 0 55px rgba(0,0,0,.4), inset 0 2px 0 rgba(255,255,255,.07), 0 18px 40px rgba(0,0,0,.45); }
.vbg-team{ display:flex; flex-direction:column; align-items:center; gap:10px; padding:6px; border-radius:12px; }
.vbg-nm{ font-size:16px; font-weight:800; letter-spacing:.04em; color:#eafff2; text-shadow:0 1px 2px rgba(0,0,0,.4);
  max-width:100%; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.vbg-team.serving .vbg-nm{ color:#fff; }
.vbg-foot{ display:flex; align-items:center; gap:8px; }
.vbg-setcard{ display:inline-flex; align-items:center; justify-content:center; min-width:30px; height:38px; padding:0 6px;
  background:linear-gradient(#f5f0e6,#e9e2d1); color:#1a1c1f; border-radius:6px; font-size:24px; font-weight:800;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.6), 0 2px 4px rgba(0,0,0,.3); font-variant-numeric:tabular-nums; }
.vbg-slab{ font-size:13px; letter-spacing:.08em; color:#c2e8d2; }
.vbg-serve{ font-size:13px; font-weight:700; color:transparent; }
.vbg-team.serving .vbg-serve{ color:#ffe08a; }
.vbg-mid{ display:flex; flex-direction:column; align-items:center; gap:6px; }
.vbg-mlab{ font-size:clamp(12px,3vw,15px); letter-spacing:.2em; color:#c2e8d2; }
.vbg-setno{ font-size:clamp(26px,7vw,40px); font-weight:800; color:#eafff2; font-variant-numeric:tabular-nums; }
/* 全画面向けに大型化（めくりカードを主役サイズへ。左右2桁×2チームが収まる範囲で最大化）*/
.vbg{ gap:6px; padding:18px 10px; }
.vbg .ap-flaps{ gap:4px; }
.vbg .ap-flap{ --w:clamp(54px,16.5vw,80px); --h:clamp(84px,26vw,126px); font-size:clamp(62px,18vw,100px); }
.vbg-nm{ font-size:clamp(17px,4.6vw,26px); }
.vbg-setcard{ min-width:clamp(34px,9vw,46px); height:clamp(42px,11vw,56px); font-size:clamp(26px,7vw,34px); }
.vbg-slab, .vbg-serve{ font-size:clamp(12px,3.2vw,15px); }

/* ═══ バレー：TV放送グラフィック（全画面・2チーム分割で画面を埋める）═══ */
/* ロワーサードのバグではなく、映像の隙間を残さない"フルスクリーングラフィック"。voidを作らない */
body.skin-active[data-skin-mode="tv"]{
  background:
    radial-gradient(120% 80% at 100% 0%, rgba(70,110,190,.20), transparent 60%),
    radial-gradient(120% 80% at 0% 100%, rgba(40,70,130,.22), transparent 60%),
    linear-gradient(150deg, #101a30 0%, #0a1224 46%, #070c18 100%); }
.vbt{ width:100%; height:100%; display:flex; flex-direction:column;
  padding:calc(50px + env(safe-area-inset-top)) 0 calc(158px + env(safe-area-inset-bottom)); }
.vbt-top{ flex:0 0 auto; display:flex; align-items:center; justify-content:space-between;
  padding:0 20px 10px; }
.vbt-league{ font-size:clamp(13px,3.4vw,17px); font-weight:800; letter-spacing:.16em; color:#dbe4f2;
  text-shadow:0 1px 6px rgba(0,0,0,.4); white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.vbt-setno{ font-size:clamp(12px,3vw,15px); font-weight:800; letter-spacing:.14em; color:#8fa3c4;
  white-space:nowrap; } .vbt-setno b{ color:#fff; }
.vbt-main{ flex:1 1 auto; min-height:0; display:flex; flex-direction:column; padding:0 16px; gap:12px; }
.vbt-team{ position:relative; flex:1 1 0; min-height:0; display:grid;
  grid-template-columns:12px minmax(0,1fr) auto; align-items:center; gap:16px;
  padding:0 clamp(14px,4vw,26px) 0 0; overflow:hidden; border-radius:16px;
  background:linear-gradient(100deg, rgba(20,28,46,.92), rgba(12,18,32,.82));
  border:1px solid rgba(140,165,205,.16); box-shadow:0 8px 30px rgba(0,0,0,.32); }
.vbt-bar{ align-self:stretch; background:var(--rc,#fff); box-shadow:0 0 22px -4px var(--rc,#fff); }
.vbt-info{ min-width:0; display:flex; flex-direction:column; gap:8px; padding-left:6px; }
.vbt-name{ font-size:clamp(22px,6.4vw,44px); font-weight:850; color:#f2f6fd; letter-spacing:.01em;
  white-space:nowrap; overflow:hidden; text-overflow:ellipsis; text-shadow:0 2px 10px rgba(0,0,0,.4); }
.vbt-sub{ display:flex; align-items:center; gap:12px; }
.vbt-setpips{ display:flex; align-items:center; gap:6px; font-size:13px; font-weight:700; color:#9fb0cc; }
.vbt-setpips i{ width:11px; height:11px; border-radius:50%; background:rgba(160,180,210,.22);
  border:1px solid rgba(160,180,210,.3); } .vbt-setpips i.on{ background:var(--rc,#fff); border-color:transparent;
  box-shadow:0 0 10px -1px var(--rc,#fff); }
.vbt-srv{ display:none; align-items:center; gap:5px; padding:2px 9px; border-radius:999px;
  background:var(--rc,#fff); color:#0a0e16; font-size:12px; font-weight:800; letter-spacing:.08em; }
.vbt-srv::before{ content:"●"; font-size:9px; }
.vbt-team.serving .vbt-srv{ display:inline-flex; }
.vbt-score{ font-size:clamp(60px,20vw,150px); line-height:.92; font-weight:850; color:#f4f8ff;
  font-variant-numeric:tabular-nums; letter-spacing:-.02em; text-shadow:0 3px 16px rgba(0,0,0,.45); }
.vbt-team.serving{ border-color:color-mix(in srgb, var(--rc,#fff) 55%, transparent);
  background:linear-gradient(100deg, color-mix(in srgb, var(--rc,#fff) 22%, rgba(16,24,42,.92)), rgba(12,18,32,.85)); }
.vbt-team.serving .vbt-score{ color:#fff; text-shadow:0 0 26px color-mix(in srgb, var(--rc,#fff) 70%, transparent); }
/* 中央：完了セットの点（放送の公式感）*/
.vbt-mid{ flex:0 0 auto; display:flex; align-items:center; justify-content:center; gap:12px;
  padding:2px 0; }
.vbt-mid.empty{ display:none; }
.vbt-hlabel{ font-size:12px; font-weight:800; letter-spacing:.2em; color:#66799a; }
.vbt-history{ display:flex; align-items:center; gap:14px; flex-wrap:wrap; justify-content:center; }
.vbt-history span{ font-size:clamp(14px,3.8vw,18px); font-weight:800; color:#7f90ac;
  font-variant-numeric:tabular-nums; letter-spacing:.02em; }
.vbt-history b{ color:#aab8d2; } .vbt-history b.w{ color:#eef3fb; }
.vbt-foot{ flex:0 0 auto; text-align:center; padding:12px 20px 0; font-size:13px; font-weight:700;
  letter-spacing:.06em; color:#7286a6; }

@media (max-width:520px){
  .vbo-core{ gap:4px; }
  .ap-flap{ --w:52px; --h:80px; font-size:64px; }
  .vbg{ padding:14px 10px; gap:6px; }
  .vbt-main{ gap:10px; }
  .vbt-team{ gap:10px; }
  .skin-dock{ gap:8px; }
  .sd-minus{ width:48px; }
}

/* ═══ オンライン観戦（観戦モード / 共有UI / PiP）═══ */
/* 観戦HUD：スキン盤面は topbar を消すため、固定オーバーレイで LIVE表示と小窓/全画面を常時出す */
.viewer-hud{ position:fixed; top:calc(10px + env(safe-area-inset-top)); left:12px; right:12px; z-index:70;
  display:flex; align-items:center; justify-content:space-between; gap:8px; pointer-events:none; }
.viewer-hud > *{ pointer-events:auto; }
.viewer-hud-actions{ display:flex; gap:6px; }
/* LIVE バッジ：接続状態を色で（青パルス=接続中／緑=ライブ／橙=再接続中）。文字は確定色で薄くしない */
.live-badge{ display:inline-flex; align-items:center; padding:7px 12px; border-radius:999px; font-size:13px; font-weight:800;
  letter-spacing:.06em; color:var(--led-green); border:1px solid rgba(55,226,124,.4); background:rgba(6,10,14,.72); white-space:nowrap;
  backdrop-filter:blur(4px); }
body[data-live="connecting"] .live-badge{ color:#7db8ff; border-color:rgba(79,163,255,.45); background:rgba(79,163,255,.12); animation:livePulse 1.1s ease-in-out infinite; }
body[data-live="reconnect"]  .live-badge{ color:var(--led-amber); border-color:rgba(255,168,40,.5); background:rgba(255,168,40,.12); animation:livePulse 1.1s ease-in-out infinite; }
@keyframes livePulse{ 50%{ opacity:.55; } }
@media (prefers-reduced-motion:reduce){ .live-badge{ animation:none !important; } }

/* 観戦(読み取り専用)モード：操作系を隠し、盤面をタップ無効に。誤操作の余地を残さない
   見せるのは「盤面＋LIVEバッジ＋PiP／全画面」だけ。競技切替・見た目切替・メニューは観戦者に不要 */
body.viewer #sportBtn, body.viewer #menuBtn, body.viewer #wakeBtn, body.viewer .toolbar,
body.viewer .clock-controls, body.viewer .side-dock, body.viewer .skin-dock,
body.viewer .skin-switch, body.viewer .skin-imm-cluster, body.viewer #dartbar{ display:none !important; }
body.viewer .side, body.viewer #skinStage, body.viewer [data-tap],
body.viewer .side-name{ pointer-events:none !important; }

/* 共有中インジケータ（host側・控えめ）*/
body.sharing #menuBtn{ box-shadow:0 0 0 2px rgba(55,226,124,.5); }

/* オンライン共有：設定＆共有シート */
.menu-btn.accent{ color:var(--led-green); border-color:rgba(55,226,124,.45); background:rgba(55,226,124,.12); }
.menu-adv{ margin-top:6px; }
.menu-adv summary{ font-size:12px; color:var(--muted); cursor:pointer; padding:4px 0; list-style:revert; }
.menu-input{ width:100%; margin:8px 0 4px; padding:11px 12px; border-radius:10px; font-size:14px;
  color:var(--ink); background:#10141b; border:1px solid var(--line); }
.menu-input::placeholder{ color:#6b7688; }
.live-box{ padding:6px 20px 22px; display:flex; flex-direction:column; gap:12px; }
.live-url{ width:100%; padding:13px 14px; border-radius:12px; font-size:15px; font-weight:600;
  color:var(--ink); background:#10141b; border:1px solid var(--line); text-align:center; }
.live-actions{ display:grid; grid-template-columns:2fr 1fr; gap:10px; }
.live-actions .menu-btn{ text-align:center; padding:14px 12px; font-size:15px; }
#liveStop{ align-self:center; }
