﻿        * { margin:0; padding:0; box-sizing:border-box; -webkit-tap-highlight-color:transparent; }
        :root {
            --ct-blue-dark:#003d79; --ct-blue:#0051a5; --ct-red:#dc0000;
            --ct-gold:#ffd700; --ct-white:#ffffff; --ct-gray:#f5f5f5;
            --ct-green:#10b981; --ct-green-light:#86efac; --ct-yellow:#fbbf24;
            --ct-orange:#f97316; --ct-purple:#7c3aed;
        }
        body {
            font-family:"Noto Sans TC","Microsoft JhengHei","Segoe UI",Arial,sans-serif;
            background:#0d1f3c;
            display:flex; min-height:100vh; overflow-x:hidden;
            -webkit-overflow-scrolling:touch;
            overscroll-behavior-y:contain;
        }
        input,select,textarea { font-size:16px !important; -webkit-appearance:none; appearance:none; }
        input[type="checkbox"] { -webkit-appearance:auto !important; appearance:auto !important; width:auto; height:auto; font-size:inherit !important; }

        /* ===== SIDEBAR ===== */
        .sidebar {
            width:300px; background:linear-gradient(180deg,#091629 0%,#0d1f3c 100%);
            color:white; padding:14px; padding-top:max(14px, env(safe-area-inset-top));
            overflow-y:auto; position:fixed;
            height:100vh; left:0; top:0; transition:transform 0.3s ease;
            z-index:1001; box-shadow:4px 0 20px rgba(220,0,0,0.15);
            border-right:3px solid var(--ct-red); display:flex; flex-direction:column;
            -webkit-overflow-scrolling:touch; overscroll-behavior:contain;
            will-change:transform;
        }
        .sidebar.collapsed { transform:translateX(-300px); }
        .sidebar-header { margin-bottom:12px; padding-bottom:10px; border-bottom:2px solid var(--ct-gold); text-align:center; }
        .sidebar-header h2 { font-size:18px; color:var(--ct-gold); font-weight:900; letter-spacing:2px; font-family:'Oswald','Noto Sans TC',sans-serif; }

        /* ===== TEAM MANAGEMENT ===== */
        .team-management { margin-bottom:12px; flex-shrink:0; }
        .add-team-form { display:flex; flex-direction:column; gap:6px; margin-bottom:8px; }
        .add-team-form input, .add-team-form select {
            padding:9px; border:none; border-radius:6px; font-size:16px;
            background:rgba(255,255,255,0.95); color:#222;
        }
        .team-form-row { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
        .team-form-row3 { display:grid; grid-template-columns:1fr 1fr; gap:6px; }
        .add-team-form button {
            padding:9px 12px; border:none; border-radius:6px; background:var(--ct-red);
            color:white; font-weight:700; cursor:pointer; font-size:15px;
            transition:all 0.2s; box-shadow:0 2px 8px rgba(220,0,0,0.3);
        }
        .add-team-form button:active { transform:scale(0.95); }

        /* Taiwan flag auto-suggest */
        .team-flag-hint { font-size:22px; margin-left:6px; vertical-align:middle; }

        .add-pitcher-btn {
            width:100%; padding:9px; border:none; border-radius:6px;
            background:var(--ct-gold); color:var(--ct-blue-dark); font-weight:900;
            cursor:pointer; margin-bottom:6px; transition:all 0.2s;
            box-shadow:0 2px 8px rgba(255,215,0,0.4); font-size:14px; letter-spacing:0.5px;
        }
        .add-pitcher-btn:active { transform:scale(0.98); }
        .add-pitcher-btn.secondary {
            background:rgba(255,255,255,0.15); color:white;
            border:1px solid rgba(255,215,0,0.5); box-shadow:none; font-size:13px; margin-bottom:10px;
        }
        .team-list { flex:1; overflow-y:auto; -webkit-overflow-scrolling:touch; min-height:0; }

        /* ===== TEAM ITEMS ===== */
        .team-item {
            background:rgba(255,255,255,0.1); padding:9px; margin:6px 0;
            border-radius:8px; transition:all 0.2s; border-left:3px solid transparent;
        }
        .team-item.expanded { background:rgba(255,255,255,0.15); border-left-color:var(--ct-gold); }
        .team-item.live-scouting { border-left-color:#ff4444; background:rgba(255,68,68,0.15); }
        .team-header { display:flex; justify-content:space-between; align-items:center; cursor:pointer; -webkit-user-select:none; user-select:none; }
        .team-header-left { display:flex; align-items:center; gap:6px; flex:1; min-width:0; }
        .team-toggle-icon { font-size:12px; transition:transform 0.2s; color:var(--ct-gold); flex-shrink:0; }
        .team-item.expanded .team-toggle-icon { transform:rotate(90deg); }
        .team-name { font-weight:700; font-size:14px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
        .live-badge { background:#ff4444; color:white; font-size:10px; font-weight:900; padding:2px 5px; border-radius:3px; letter-spacing:1px; animation:livePulse 1.2s ease-in-out infinite; flex-shrink:0; }
        @keyframes livePulse { 0%,100%{opacity:1;} 50%{opacity:0.6;} }
        .fatigue-alert { display:inline-block; background:#dc0000; color:white; font-size:12px; font-weight:900; padding:3px 8px; border-radius:4px; letter-spacing:1px; animation:fatigueFlash 0.8s ease-in-out infinite; margin-top:4px; }
        @keyframes fatigueFlash { 0%,100%{opacity:1;background:#dc0000;} 50%{opacity:0.7;background:#ff4444;} }
        .team-detail { display:none; margin-top:8px; padding-top:8px; border-top:1px dashed rgba(255,215,0,0.3); }
        .team-item.expanded .team-detail { display:block; }
        .team-meta { font-size:11px; color:rgba(255,255,255,0.85); margin-bottom:6px; line-height:1.6; }
        .pitcher-tags { display:flex; flex-wrap:wrap; gap:5px; }
        .pitcher-tag {
            background:rgba(0,61,121,0.85); color:white; padding:5px 8px; border-radius:5px;
            font-size:11px; cursor:pointer; transition:all 0.2s; border:1px solid var(--ct-gold);
            -webkit-user-select:none; user-select:none; display:inline-flex; align-items:center; gap:5px;
            touch-action:manipulation; -webkit-tap-highlight-color:rgba(255,215,0,0.3);
            font-family:inherit; line-height:1.4; text-align:left; -webkit-appearance:none; appearance:none;
        }
        .pitcher-tag:active { transform:scale(0.95); }
        .pitcher-tag.active { background:var(--ct-red); color:white; border-color:var(--ct-gold); box-shadow:0 2px 8px rgba(220,0,0,0.4); }
        .pitcher-tag.pitching { background:linear-gradient(135deg,#1a5c1a,#0d3d0d); border-color:#4ade80; box-shadow:0 0 10px rgba(74,222,128,0.5); }
        .pitcher-pitching-chip { display:inline-flex; align-items:center; background:rgba(74,222,128,0.25); color:#4ade80; font-size:9px; font-weight:900; padding:1px 5px; border-radius:3px; border:1px solid rgba(74,222,128,0.5); white-space:nowrap; flex-shrink:0; letter-spacing:0.3px; }
        .pitcher-tag-delete { background:rgba(255,255,255,0.25); border:none; color:white; width:16px; height:16px; border-radius:50%; font-size:11px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; }
        .pitcher-tag-delete:active { background:var(--ct-red); }
        .pitcher-tag-edit { background:rgba(255,215,0,0.22); border:none; color:var(--ct-gold); width:16px; height:16px; border-radius:50%; font-size:9px; line-height:1; cursor:pointer; display:flex; align-items:center; justify-content:center; padding:0; flex-shrink:0; }
        .pitcher-tag-edit:active { background:var(--ct-gold); color:#003d79; }
        .edit-team-btn { background:rgba(255,215,0,0.25); border:1px solid rgba(255,215,0,0.5); color:#ffd700; padding:3px 7px; border-radius:4px; cursor:pointer; font-size:12px; transition:all 0.2s; flex-shrink:0; }
        .edit-team-btn:active { transform:scale(0.95); }
        .delete-team-btn { background:rgba(220,0,0,0.8); border:none; color:white; padding:3px 8px; border-radius:4px; cursor:pointer; font-size:10px; transition:all 0.2s; font-weight:700; flex-shrink:0; }
        .delete-team-btn:active { transform:scale(0.95); }

        /* ===== TOGGLE SIDEBAR BUTTON ===== */
        .toggle-sidebar {
            position:fixed; left:310px; top:env(safe-area-inset-top, 20px); background:var(--ct-gold);
            color:var(--ct-blue-dark); border:3px solid var(--ct-blue-dark);
            padding:0; border-radius:50%; cursor:pointer; z-index:1002;
            transition:all 0.3s; box-shadow:0 3px 14px rgba(0,0,0,0.35);
            font-weight:900; font-size:22px; width:52px; height:52px;
            display:flex; align-items:center; justify-content:center;
            text-shadow:none; line-height:1;
        }
        .toggle-sidebar:active { transform:scale(0.92); }
        .toggle-sidebar.moved { left:14px; }

        /* ===== MAIN CONTENT ===== */
        .main-content { margin-left:300px; padding:10px 12px; flex:1; transition:margin-left 0.3s; width:100%; position:relative; z-index:1; -webkit-overflow-scrolling:touch; overflow-x:hidden; }
        .main-content.expanded { margin-left:0; }
        .container { background:white; border-radius:12px; padding:12px 16px; margin-bottom:10px; box-shadow:0 2px 12px rgba(0,0,0,0.06); max-width:1280px; margin-left:auto; margin-right:auto; border-top:4px solid var(--ct-red); border-left:1px solid var(--ct-gold); }

        h1 {
            text-align:center; background:linear-gradient(135deg,#091629 0%,#0d1f3c 100%);
            color:white; padding:14px; border-radius:12px; margin:0 auto 8px;
            font-size:32px; box-shadow:0 4px 16px rgba(0,61,121,0.2);
            border-bottom:5px solid var(--ct-red); border-top:3px solid var(--ct-gold);
            font-weight:700; letter-spacing:4px; position:relative; overflow:hidden;
            font-family:'Bebas Neue','Oswald','Noto Sans TC',sans-serif;
            display:flex; align-items:center; justify-content:center; gap:16px; max-width:1280px;
        }
        h1 .h1-baseball { font-size:28px; opacity:0.35; }
        h1 .h1-text { text-shadow:2px 2px 4px rgba(0,0,0,0.3); }
        h1 .h1-sub { display:block; font-size:16px; color:var(--ct-gold); letter-spacing:5px; margin-top:4px; font-weight:500; }
        h2 { color:var(--ct-blue-dark); margin:0 0 8px 0; font-size:18px; border-bottom:2px solid var(--ct-red); padding-bottom:5px; font-weight:700; font-family:'Oswald','Noto Sans TC',sans-serif; letter-spacing:1px; }
        h3 { color:var(--ct-blue); margin:6px 0 5px 0; font-size:14px; font-weight:700; }
        p { margin:0 0 4px 0; }

        /* ===== DUAL PITCHER CARD ===== */
        .dual-pitcher-section {
            background:linear-gradient(135deg,#091629 0%,#0d1f3c 100%);
            color:white; padding:12px 16px; border-radius:12px; margin:0 auto 8px;
            box-shadow:0 4px 16px rgba(0,61,121,0.15); border:4px solid var(--ct-red);
            border-top:5px solid var(--ct-gold); max-width:1280px;
        }
        .dual-pitcher-section h2 { color:white; border-bottom:2px solid var(--ct-gold); margin-bottom:8px; }
        .dual-pitcher-cards { display:grid; grid-template-columns:1fr 1fr; gap:12px; }
        .pitcher-slot {
            border-radius:12px; padding:16px 18px; cursor:pointer; transition:all 0.2s;
            position:relative; display:flex; flex-direction:column; justify-content:space-between;
            min-height:110px; border:2px solid transparent; text-align:center;
        }
        .pitcher-slot-a {
            background:#001f3f; border-color:#c0c8d0;
        }
        .pitcher-slot-b {
            background:#2b2b2b; border-color:#555;
        }
        .pitcher-slot.active-slot.pitcher-slot-a { border-color:var(--ct-gold); box-shadow:0 0 0 3px rgba(255,215,0,0.25); }
        .pitcher-slot.active-slot.pitcher-slot-b { border-color:#aaa; box-shadow:0 0 0 3px rgba(200,200,200,0.2); }
        @keyframes autoSwitchPulse {
            0%   { box-shadow:0 0 0 3px rgba(255,215,0,0.6), 0 0 12px rgba(255,215,0,0.4); }
            50%  { box-shadow:0 0 0 6px rgba(255,215,0,0.9), 0 0 24px rgba(255,215,0,0.7); }
            100% { box-shadow:0 0 0 3px rgba(255,215,0,0.6), 0 0 12px rgba(255,215,0,0.4); }
        }
        .pitcher-slot.auto-switch-highlight {
            animation: autoSwitchPulse 0.6s ease-in-out 3;
            border-color: var(--ct-gold) !important;
        }
        .pitcher-slot-label { display:none; }
        .pitcher-slot-team {
            font-size:16px; font-weight:700; letter-spacing:1px;
            margin-bottom:6px; opacity:0.85;
        }
        .pitcher-slot-a .pitcher-slot-team { color:#c0c8d0; }
        .pitcher-slot-b .pitcher-slot-team { color:#aaa; }
        .pitcher-slot-name {
            font-size:34px; font-weight:900; line-height:1.1;
            font-family:'Oswald','Noto Sans TC',sans-serif; letter-spacing:1px;
        }
        .pitcher-slot-a .pitcher-slot-name { color:#ffffff; }
        .pitcher-slot-b .pitcher-slot-name { color:#e0e0e0; }
        .pitcher-slot-meta {
            display:flex; align-items:center; justify-content:center; gap:6px; flex-wrap:wrap; margin-top:8px;
        }
        .pitcher-slot-badge {
            font-size:13px; font-weight:700; padding:3px 10px; border-radius:4px;
            background:rgba(0,0,0,0.35); color:rgba(255,255,255,0.85);
        }
        .pitcher-slot-type {
            font-size:13px; font-weight:700; padding:3px 10px; border-radius:4px;
            background:rgba(255,215,0,0.18); color:var(--ct-gold); border:1px solid rgba(255,215,0,0.3);
        }
        .pitcher-slot-count { font-size:12px; color:rgba(255,255,255,0.4); margin-top:4px; }
        .pitcher-slot-empty { color:rgba(255,255,255,0.3); font-style:italic; font-size:13px; }
        .active-indicator { position:absolute; top:8px; right:8px; background:var(--ct-red); color:white; font-size:11px; font-weight:900; letter-spacing:1.5px; padding:3px 10px; border-radius:20px; white-space:nowrap; animation:livePulse 1.2s ease-in-out infinite; cursor:pointer; user-select:none; }
        .active-indicator:hover { background:#ff2222; }

        /* ===== SCOREBOARD ===== */
        .scoreboard-batter-row { display:grid; grid-template-columns:65fr 35fr; gap:10px; align-items:stretch; margin-bottom:12px; }
        .scoreboard {
            background:linear-gradient(135deg,#0d1b2a 0%,#1b263b 100%);
            color:white; padding:12px; border-radius:12px;
            border:3px solid var(--ct-gold); box-shadow:0 4px 16px rgba(0,0,0,0.3);
        }
        .scoreboard h3 { color:var(--ct-gold); margin:0 0 10px 0; font-family:'Oswald','Noto Sans TC',sans-serif; font-size:14px; letter-spacing:2px; text-align:center; border-bottom:1px solid rgba(255,215,0,0.3); padding-bottom:7px; }
        .score-row { display:grid; grid-template-columns:1fr auto 1fr; gap:6px; align-items:center; }
        .score-team { text-align:center; }
        .score-team-label { font-size:11px; color:var(--ct-gold); font-weight:700; text-transform:uppercase; margin-bottom:3px; letter-spacing:1px; }
        .score-value { background:#000; color:var(--ct-yellow); font-size:30px; font-weight:700; font-family:'Bebas Neue','Oswald',monospace; padding:4px 0; border-radius:6px; border:1px solid rgba(255,215,0,0.3); text-shadow:0 0 10px rgba(255,215,0,0.5); line-height:1; }
        .score-controls { display:flex; justify-content:center; gap:3px; margin-top:4px; }
        .score-btn { background:var(--ct-blue-dark); color:white; border:1px solid var(--ct-gold); width:26px; height:26px; border-radius:4px; font-weight:700; cursor:pointer; font-size:15px; line-height:1; }
        .score-btn:active { transform:scale(0.92); }
        .inning-display { text-align:center; }
        .inning-number { background:#000; color:var(--ct-yellow); font-size:26px; font-weight:700; font-family:'Bebas Neue','Oswald',monospace; padding:4px 8px; border-radius:6px; border:1px solid rgba(255,215,0,0.3); line-height:1; display:block; }
        .half-display { font-size:13px; color:var(--ct-gold); font-weight:700; margin-top:3px; }
        .inning-control { display:flex; justify-content:center; gap:4px; margin-top:4px; }
        .inning-control button { background:rgba(255,255,255,0.1); color:white; border:1px solid var(--ct-gold); padding:3px 7px; border-radius:4px; font-size:12px; font-weight:700; cursor:pointer; }
        .half-btn { background:rgba(255,255,255,0.1); color:white; border:1px solid var(--ct-gold); padding:3px 8px; border-radius:4px; font-size:12px; font-weight:700; cursor:pointer; margin-top:3px; }
        .half-btn:active { background:var(--ct-gold); color:var(--ct-blue-dark); }
        .score-meta { text-align:center; font-size:11px; color:rgba(255,255,255,0.7); margin-top:8px; border-top:1px solid rgba(255,255,255,0.1); padding-top:6px; }

        /* Count & Bases display */
        .count-bases-row { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin-top:8px; }
        .count-display { background:rgba(0,0,0,0.3); border-radius:8px; padding:8px; border:1px solid rgba(255,215,0,0.2); }
        .count-title { font-size:15px; color:var(--ct-gold); font-weight:700; text-align:center; margin-bottom:7px; letter-spacing:1px; }
        .count-lights { display:flex; justify-content:center; gap:7px; }
        .count-light { width:28px; height:28px; border-radius:50%; border:2px solid rgba(255,255,255,0.3); background:rgba(255,255,255,0.1); flex-shrink:0; }
        .count-light.strike-on { background:#f97316; border-color:#f97316; box-shadow:0 0 6px rgba(249,115,22,0.6); }
        .count-light.ball-on { background:#22c55e; border-color:#22c55e; box-shadow:0 0 6px rgba(34,197,94,0.6); }
        .count-light.out-on { background:#ef4444; border-color:#ef4444; box-shadow:0 0 6px rgba(239,68,68,0.6); }
        .bases-display { background:rgba(0,0,0,0.3); border-radius:8px; padding:8px; border:1px solid rgba(255,215,0,0.2); }
        .bases-title { font-size:15px; color:var(--ct-gold); font-weight:700; text-align:center; margin-bottom:8px; letter-spacing:1px; }
        .bases-diamond { position:relative; width:96px; height:96px; flex-shrink:0; }
        .base-indicator { position:absolute; width:30px; height:30px; transform:rotate(45deg); background:rgba(255,255,255,0.15); border:2px solid rgba(255,255,255,0.3); transition:all 0.2s; }
        .base-indicator.on { background:var(--ct-yellow); border-color:var(--ct-yellow); box-shadow:0 0 8px rgba(251,191,36,0.7); }
        .base-1b { top:33px; right:2px; }
        .base-2b { top:2px; left:33px; }
        .base-3b { top:33px; left:2px; }
        .base-home { bottom:2px; left:33px; background:rgba(255,255,255,0.4); border-color:rgba(255,255,255,0.6); }

        /* ===== BATTER INFO (compact) ===== */
        .batter-info {
            background:linear-gradient(135deg,#fff8dc 0%,#fffacd 100%);
            padding:12px; border-radius:10px;
            border-left:4px solid var(--ct-red); border-top:2px solid var(--ct-gold);
        }
        .batter-info h3 { margin:0 0 8px 0; font-size:13px; }
        .batter-details { display:grid; grid-template-columns:1fr 1fr 1fr; gap:6px; margin-bottom:8px; }
        .batter-input-group { display:flex; flex-direction:column; gap:4px; }
        .batter-input-group label { font-size:11px; font-weight:700; color:var(--ct-blue-dark); }
        .batter-input-group input, .batter-input-group select { padding:8px; border:2px solid var(--ct-blue); border-radius:6px; font-size:16px; width:100%; }
        .batter-input-group input:focus, .batter-input-group select:focus { outline:none; border-color:var(--ct-red); box-shadow:0 0 0 3px rgba(220,0,0,0.1); }
        .batter-hand-selector { display:flex; gap:6px; }
        .hand-btn { flex:1; padding:10px; border:2px solid var(--ct-blue); border-radius:8px; background:white; cursor:pointer; font-weight:700; font-size:14px; transition:all 0.2s; color:var(--ct-blue-dark); -webkit-user-select:none; user-select:none; }
        .hand-btn:active { transform:scale(0.98); }
        .hand-btn.active { background:var(--ct-red); color:white; border-color:var(--ct-gold); box-shadow:0 4px 12px rgba(220,0,0,0.3); }

        /* ===== BUTTONS ===== */
        .btn { padding:10px 16px; border:none; border-radius:8px; cursor:pointer; font-size:15px; font-weight:700; transition:all 0.2s; -webkit-user-select:none; user-select:none; }
        .btn:active { transform:scale(0.98); }
        .btn-primary { background:var(--ct-blue-dark); color:white; box-shadow:0 2px 8px rgba(0,61,121,0.2); }
        .btn-success { background:#10b981; color:white; box-shadow:0 2px 8px rgba(16,185,129,0.2); }
        .btn-danger { background:var(--ct-red); color:white; box-shadow:0 2px 8px rgba(220,0,0,0.2); }
        .btn-warning { background:var(--ct-gold); color:var(--ct-blue-dark); box-shadow:0 2px 8px rgba(255,215,0,0.3); }
        .record-controls { display:flex; gap:8px; flex-wrap:nowrap; margin-bottom:10px; }
        .record-controls .btn { flex:1 1 0; min-width:0; white-space:nowrap; padding:10px 8px; }
        .btn-lock { background:var(--ct-blue); color:#fff; box-shadow:0 2px 8px rgba(0,81,165,0.25); }
        .btn-lock.locked { background:var(--ct-red); color:#fff; box-shadow:0 0 0 3px rgba(255,215,0,0.4); }
        /* 鎖定時把「確認紀錄」操作條釘在畫面最底，避免凍結捲動後點不到（脫離排版後上方內容會往下補，更多東西塞得進可視範圍） */
        body.scroll-locked #recordActionBar {
            position:fixed !important; margin:0 !important;
            left:0; right:0; bottom:0; z-index:60;
            padding:8px 12px; background:#fff;
            box-shadow:0 -3px 12px rgba(0,0,0,0.18);
        }

        /* ===== PITCH RECORD SECTION LAYOUT ===== */
        /* Zone + results side by side layout */
        .pitch-input-layout { display:grid; grid-template-columns:auto 1fr; gap:16px; align-items:start; }
        .pitch-zone-col { display:flex; flex-direction:column; align-items:center; gap:8px; }
        .pitch-options-col { display:flex; flex-direction:column; gap:10px; }

        /* ===== PITCH TYPES ===== */
        .pitch-types { display:grid; grid-template-columns:repeat(auto-fit,minmax(90px,1fr)); gap:8px; }
        .pitch-btn { padding:12px 8px; border:2px solid var(--ct-blue); border-radius:8px; background:white; cursor:pointer; font-weight:700; transition:all 0.2s; color:var(--ct-blue-dark); -webkit-user-select:none; user-select:none; font-size:15px; }
        .pitch-btn:active { transform:scale(0.98); }
        .pitch-btn.active { background:var(--ct-blue-dark); color:white; border-color:var(--ct-gold); box-shadow:0 0 0 3px rgba(255,215,0,0.3); }

        /* ===== SPEED ===== */
        /* 左側輸入框 + 右側按鈕 grid 並排，兩者等高 */
        .speed-input { display:flex; align-items:stretch; gap:8px; margin:6px 0; }
        .speed-left { display:flex; flex-direction:column; align-items:stretch; justify-content:space-between; gap:4px; flex-shrink:0; width:90px; border:2px solid var(--ct-blue); border-radius:8px; padding:6px; background:#f0f5ff; }
        .speed-top-row { display:flex; align-items:baseline; justify-content:space-between; gap:4px; }
        .speed-label { font-size:12px; font-weight:700; color:var(--ct-blue-dark); }
        .speed-display { display:flex; align-items:baseline; gap:2px; }
        .speed-unit { font-size:11px; color:#9ca3af; }
        .speed-input input { flex:1; padding:0 4px; border:2px solid var(--ct-blue); border-radius:6px; font-size:22px; width:100%; font-weight:700; text-align:center; box-sizing:border-box; min-height:44px; }
        #currentSpeed { color:var(--ct-red); font-size:14px; font-weight:900; }
        /* 固定 2 排，按鈕平均填滿整個寬度 */
        .speed-grid { flex:1; display:grid; grid-template-columns:repeat(16, 1fr); grid-template-rows:repeat(2, 1fr); gap:4px; }
        .speed-btn { padding:0; border:2px solid var(--ct-blue); border-radius:6px; background:white; cursor:pointer; font-weight:700; transition:background-color 0.15s, color 0.15s, border-color 0.15s; color:var(--ct-blue-dark); font-size:12px; -webkit-user-select:none; user-select:none; width:100%; height:100%; }
        .speed-btn:active { transform:scale(0.95); }
        .speed-btn.active { background:var(--ct-blue-dark); color:white; border-color:var(--ct-gold); }

        /* ===== STRIKE ZONE (5x5 grid) ===== */
        .strike-zone-extended {
            display:grid; grid-template-columns:repeat(5,64px); grid-template-rows:repeat(5,64px);
            gap:3px; background:var(--ct-blue-dark); padding:3px; border-radius:10px;
            box-shadow:0 4px 16px rgba(0,0,0,0.1); touch-action:manipulation; border:3px solid var(--ct-gold);
            max-width:100%; flex-shrink:0;
        }
        .zone-cell {
            background:#fff; border:2px solid #cbd5e1; cursor:pointer;
            display:flex; align-items:center; justify-content:center;
            font-size:16px; font-weight:700; transition:all 0.2s; position:relative;
            border-radius:6px; color:var(--ct-blue-dark); -webkit-user-select:none; user-select:none;
            touch-action:manipulation;
        }
        .zone-cell.strike-zone { background:#fff0e6; border-color:#f97316; }
        .zone-cell.ball-zone { background:#d1fae5; border-color:var(--ct-green-light); opacity:0.85; font-size:12px; }
        .zone-cell:active { transform:scale(1.05); }
        .zone-cell.selected.strike-zone { background:#f97316 !important; color:var(--ct-blue-dark); border-color:var(--ct-red); box-shadow:0 0 0 3px rgba(220,0,0,0.45); transform:scale(1.05); }
        .zone-cell.selected.ball-zone { background:var(--ct-green) !important; color:white; border-color:var(--ct-red); box-shadow:0 0 0 3px rgba(220,0,0,0.45); transform:scale(1.05); }
        .zone-label { position:absolute; top:3px; left:4px; font-size:10px; color:#9ca3af; font-weight:700; }
        .zone-cell.selected .zone-label { color:rgba(0,0,0,0.65); }
        /* 打者視角：鏡像翻轉格子，文字反向還原保持可讀 */
        #strikeZone.batter-view { transform:scaleX(-1); }
        #strikeZone.batter-view .zone-cell { transform:scaleX(-1); }

        /* Count display below zone */
        .zone-count-display { background:#0d1b2a; border-radius:8px; padding:8px 12px; border:2px solid var(--ct-gold); text-align:center; width:100%; }
        .zone-count-label { font-size:10px; color:var(--ct-gold); font-weight:700; margin-bottom:4px; letter-spacing:1px; }
        .zone-count-value { font-size:22px; font-weight:900; color:white; font-family:'Bebas Neue','Oswald',sans-serif; letter-spacing:2px; }

        /* ===== PITCH RESULT BUTTONS - right side of zone ===== */
        .pitch-result-col { display:flex; flex-direction:column; gap:6px; }
        .pitch-zone-result-row { display:flex; gap:10px; align-items:flex-start; }

        /* Left side: pitch result + batting result */
        .pitch-result-side { display:flex; flex-direction:column; gap:6px; min-width:0; flex:1; }
        /* Right side of zone: foul, swing, wild, passball */
        .zone-right-btns { display:flex; flex-direction:column; gap:5px; }
        .zone-right-btn { padding:8px 6px; border:2px solid; border-radius:8px; background:white; cursor:pointer; font-weight:700; font-size:12px; transition:all 0.2s; -webkit-user-select:none; user-select:none; text-align:center; white-space:nowrap; }
        .zone-right-btn:active { transform:scale(0.98); }
        .foul-btn { border-color:#9333ea; color:#7c3aed; }
        .foul-btn.active { background:#9333ea; color:white; }
        .swing-btn { border-color:var(--ct-blue); color:var(--ct-blue-dark); }
        .swing-btn.active { background:var(--ct-blue-dark); color:white; border-color:var(--ct-gold); }
        .wild-btn { border-color:#f97316; color:#c2410c; }
        .wild-btn.active { background:#f97316; color:white; box-shadow:0 0 0 3px rgba(249,115,22,0.3); }
        .passball-btn { border-color:#0891b2; color:#0e7490; }
        .passball-btn.active { background:#0891b2; color:white; box-shadow:0 0 0 3px rgba(8,145,178,0.3); }

        /* ===== PITCH RESULT (strike/ball - auto from zone) ===== */
        .pitch-result-display { background:#f9fafb; border-radius:8px; padding:10px; border:2px solid var(--ct-gold); text-align:center; }
        .pitch-result-display-label { font-size:11px; color:#6b7280; font-weight:700; margin-bottom:4px; }
        .pitch-result-display-value { font-size:18px; font-weight:900; }
        .pitch-result-display-value.strike-result { color:#c2410c; }
        .pitch-result-display-value.ball-result { color:#065f46; }
        .pitch-result-display-value.none-result { color:#9ca3af; font-style:italic; font-size:14px; }

        /* ===== AT BAT RESULT ===== */
        .at-bat-result { display:grid; grid-template-columns:repeat(auto-fit,minmax(0,1fr)); gap:5px; margin:5px 0; }
        .outcome-btn { height:53px; border-radius:8px; border:2px solid var(--ct-blue); background:white; cursor:pointer; transition:all 0.2s; color:var(--ct-blue-dark); -webkit-user-select:none; user-select:none; font-size:13px; font-weight:700; display:flex; align-items:center; justify-content:center; text-align:center; padding:0 2px; line-height:1.2; width:auto; }
        .outcome-btn:active { transform:scale(0.95); }
        .outcome-btn.selected { background:var(--ct-red); color:white; border-color:var(--ct-gold); box-shadow:0 4px 12px rgba(220,0,0,0.3); }
        .outcome-btn[data-outcome="違規打擊"] { border-color:#f97316; color:#c2410c; }
        .outcome-btn[data-outcome="違規打擊"].selected { background:#f97316; color:white; }
        /* Multi-select modifier */
        .outcome-btn.modifier { border-style:dashed; border-color:#7c3aed; color:#7c3aed; font-size:12px; }
        .outcome-btn.modifier.selected { background:#7c3aed; color:white; border-style:solid; }

        /* ===== CONFIRM RECORD ===== */
        .confirm-record-btn { width:100%; padding:16px; font-size:18px; font-weight:900; border:3px solid #10b981; border-radius:10px; background:#10b981; color:white; cursor:pointer; transition:all 0.15s; letter-spacing:2px; box-shadow:0 4px 12px rgba(16,185,129,0.3); font-family:'Oswald','Noto Sans TC',sans-serif; }
        .confirm-record-btn:active, .confirm-record-btn.pressed { background:white; color:#10b981; border-color:#10b981; box-shadow:inset 0 0 0 2px #10b981,0 0 0 4px rgba(16,185,129,0.25); transform:scale(0.98); }

        /* ===== PITCH LOG ===== */
        .pitch-log { max-height:320px; overflow-y:auto; border:2px solid var(--ct-gold); border-radius:8px; padding:10px; -webkit-overflow-scrolling:touch; overscroll-behavior:contain; }
        .pitch-record { padding:10px; margin:6px 0; background:#f9fafb; border-left:4px solid var(--ct-red); border-radius:6px; transition:all 0.2s; }
        .pitch-record:active { background:#f3f4f6; }
        .pitch-record-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:4px; flex-wrap:wrap; gap:4px; }
        .pitch-record-details { font-size:12px; color:#6b7280; margin-top:4px; }
        .pitch-record-actions { display:flex; gap:6px; }
        .delete-btn { background:var(--ct-red); color:white; border:none; padding:5px 10px; border-radius:5px; cursor:pointer; font-size:11px; transition:all 0.2s; font-weight:700; }
        .delete-btn:active { transform:scale(0.95); }
        .edit-btn { background:var(--ct-blue); color:white; border:none; padding:5px 10px; border-radius:5px; cursor:pointer; font-size:11px; transition:all 0.2s; font-weight:700; }
        .edit-btn:active { transform:scale(0.95); }

        /* 打擊結果按鈕分類色系 */
        .outcome-btn.out-btn  { border-color:#dc2626; color:#b91c1c; }
        .outcome-btn.out-btn.selected  { background:#dc2626; color:white; border-color:#dc2626; box-shadow:0 4px 12px rgba(220,38,38,0.35); }
        .outcome-btn.hit-btn  { border-color:#16a34a; color:#15803d; }
        .outcome-btn.hit-btn.selected  { background:#16a34a; color:white; border-color:#16a34a; box-shadow:0 4px 12px rgba(22,163,74,0.35); }
        .outcome-btn.reach-btn { border-color:#2563eb; color:#1d4ed8; }
        .outcome-btn.reach-btn.selected { background:#2563eb; color:white; border-color:#2563eb; box-shadow:0 4px 12px rgba(37,99,235,0.35); }
        .hit-type-btn { padding:7px 14px; border-radius:7px; border:1.5px solid #86efac; background:white; cursor:pointer; font-size:13px; font-weight:700; color:#15803d; transition:all 0.15s; -webkit-user-select:none; user-select:none; touch-action:manipulation; }
        .hit-type-btn:active { transform:scale(0.95); }
        .hit-type-btn.selected { background:#15803d; color:white; border-color:#15803d; box-shadow:0 3px 8px rgba(21,128,61,0.35); }
        .outcome-group-label { font-size:10px; font-weight:900; letter-spacing:1px; padding:2px 6px; border-radius:4px; color:white; display:inline-block; margin-bottom:4px; }
        .outcome-group-label.out   { background:#dc2626; }
        .outcome-group-label.hit   { background:#16a34a; }
        .outcome-group-label.reach { background:#2563eb; }
        .outcome-group-label.tag   { background:#7c3aed; }
        /* 棒次快速按鈕 */
        .order-adj-btn { padding:8px 10px; border:2px solid var(--ct-blue); border-radius:6px; background:white; color:var(--ct-blue-dark); font-weight:900; font-size:16px; cursor:pointer; flex-shrink:0; }
        .order-adj-btn:active { background:var(--ct-blue-dark); color:white; transform:scale(0.95); }
        /* PA 分隔線 */
        .pa-divider { border:none; border-top:2px dashed var(--ct-gold); margin:6px 0; opacity:0.5; }

        /* ===== STATS ===== */
        .stats-grid { display:grid; grid-template-columns:repeat(7,1fr); gap:8px; }
        .stat-card { background:linear-gradient(135deg,var(--ct-blue-dark) 0%,var(--ct-blue) 100%); color:white; padding:8px 6px; border-radius:10px; text-align:center; border-bottom:4px solid var(--ct-red); border-top:2px solid var(--ct-gold); box-shadow:0 4px 12px rgba(0,61,121,0.15); }
        .stat-value { font-size:22px; font-weight:700; margin:2px 0; color:var(--ct-gold); font-family:'Bebas Neue','Oswald',sans-serif; letter-spacing:1px; }
        .stat-label { font-size:11px; opacity:0.95; font-weight:500; }

        /* ===== HEATMAP - Unified ===== */
        .unified-heatmap-section { margin-top:6px; }
        .unified-heatmap-wrapper { display:flex; gap:12px; flex-wrap:wrap; justify-content:center; align-items:flex-start; }
        .heatmap-col { display:flex; flex-direction:column; align-items:center; gap:8px; }
        .heatmap-col-title { font-size:13px; font-weight:700; color:var(--ct-blue-dark); }

        /* Strike zone heatmap (3x3) */
        .heatmap { display:grid; grid-template-columns:repeat(3,min(72px,calc((100vw - 80px)/3))); grid-template-rows:repeat(3,min(72px,calc((100vw - 80px)/3))); gap:4px; background:var(--ct-blue-dark); padding:4px; border-radius:8px; border:3px solid var(--ct-gold); margin:0 auto; }
        .heat-cell { background:#fff; display:flex; align-items:center; justify-content:center; font-size:16px; font-weight:700; position:relative; border-radius:4px; border:2px solid #e5e7eb; }

        /* Ball zone heatmap (6x5 extended) */
        .ball-heatmap-grid { display:grid; grid-template-columns:repeat(6,min(42px,calc((100vw - 50px)/6))); grid-template-rows:repeat(5,min(42px,calc((100vw - 50px)/6))); gap:3px; background:var(--ct-blue-dark); padding:3px; border-radius:8px; border:3px solid var(--ct-green); margin:0 auto; }
        .ball-heat-cell { background:#d1fae5; display:flex; align-items:center; justify-content:center; font-size:11px; font-weight:700; position:relative; border-radius:4px; border:1px solid #86efac; color:#065f46; }
        .ball-heat-cell.inner { background:#fff0e6; border-color:#f97316; color:#c2410c; }

        /* Common pitch position / ball drop - right side labels */
        .heatmap-side-info { font-size:11px; color:#6b7280; background:#f9fafb; border-radius:6px; padding:8px; border:1px solid var(--ct-gold); max-width:120px; }
        .heatmap-side-info h4 { font-size:11px; color:var(--ct-blue-dark); font-weight:700; margin-bottom:4px; }
        .heatmap-side-row { display:flex; justify-content:space-between; padding:2px 0; font-size:11px; border-bottom:1px solid #f3f4f6; }

        /* Pitch tendency */
        .tendency-pair { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-top:6px; }
        .tendency-item { text-align:center; background:#f9fafb; padding:8px; border-radius:10px; border:2px solid var(--ct-gold); }
        .tendency-item h4 { margin-bottom:8px; font-size:13px; color:var(--ct-blue-dark); font-weight:700; }
        .tendency-heatmap { display:grid; grid-template-columns:repeat(3,60px); grid-template-rows:repeat(3,60px); gap:3px; background:var(--ct-blue-dark); padding:3px; border-radius:8px; margin:0 auto; border:2px solid var(--ct-gold); }
        .tendency-heatmap.sm { grid-template-columns:repeat(3,44px); grid-template-rows:repeat(3,44px); }
        .tendency-heatmap .heat-cell { font-size:14px; }
        /* Ball tendency B-zone */
        .ball-tendency-heatmap { display:grid; grid-template-columns:repeat(5,36px); grid-template-rows:repeat(5,36px); gap:2px; background:var(--ct-blue-dark); padding:3px; border-radius:8px; margin:0 auto; border:2px solid var(--ct-green); }
        .ball-tendency-heatmap.sm { grid-template-columns:repeat(5,28px); grid-template-rows:repeat(5,28px); }
        .ball-tendency-heatmap .ball-heat-cell { font-size:10px; }
        .pitch-type-label { font-size:10px; color:#7c3aed; font-weight:700; position:absolute; bottom:2px; right:2px; }

        /* ===== ANALYSIS ===== */
        .pattern-analysis { padding:4px 0; margin-top:0; display:flex; flex-direction:column; justify-content:space-evenly; height:100%; }
        .pattern-item { padding:6px 2px; margin:0; display:flex; gap:6px; align-items:center; justify-content:space-between; }
        .count-analysis { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-top:6px; }
        .count-card { padding:8px 10px; border-radius:8px; border:2px solid; }
        .count-card.ahead { background:linear-gradient(135deg,#fef3c7,#fde68a); border-color:var(--ct-yellow); }
        .count-card.behind { background:linear-gradient(135deg,#d1fae5,#a7f3d0); border-color:var(--ct-green); }
        .count-card h4 { margin-bottom:5px; font-size:14px; font-weight:900; letter-spacing:1px; }
        .count-card.ahead h4 { color:#92400e; }
        .count-card.behind h4 { color:#065f46; }
        .count-pitch-row { display:flex; justify-content:space-between; align-items:center; background:rgba(255,255,255,0.7); padding:5px 8px; border-radius:6px; margin:3px 0; font-size:13px; }
        .count-pitch-name { font-weight:900; font-size:15px; font-family:'Oswald','Noto Sans TC',sans-serif; letter-spacing:1px; }
        .batter-stats { display:grid; grid-template-columns:repeat(2,1fr); gap:12px; margin-top:8px; }
        .batter-stat-card { background:linear-gradient(135deg,var(--ct-blue-dark) 0%,var(--ct-blue) 100%); color:white; padding:12px 14px; border-radius:12px; border-bottom:4px solid var(--ct-red); border-top:3px solid var(--ct-gold); box-shadow:0 4px 12px rgba(0,61,121,0.15); }
        .batter-stat-card h3 { color:white; margin-bottom:8px; border-bottom:2px solid var(--ct-gold); }
        .batter-stat-item { background:rgba(255,255,255,0.15); padding:6px 8px; margin:3px 0; border-radius:6px; display:flex; justify-content:space-between; }
        .pitch-effect-card { background:linear-gradient(135deg,#ffffff 0%,#f9fafb 100%); padding:10px; margin:5px 0; border-radius:10px; border:2px solid var(--ct-gold); border-left:5px solid var(--ct-blue-dark); box-shadow:0 2px 8px rgba(0,0,0,0.05); }
        .pitch-effect-header { display:flex; justify-content:space-between; align-items:baseline; border-bottom:2px solid var(--ct-gold); padding-bottom:5px; margin-bottom:5px; }
        .pitch-effect-name { font-size:22px; font-weight:900; color:var(--ct-blue-dark); font-family:'Oswald','Noto Sans TC',sans-serif; letter-spacing:2px; }
        .pitch-effect-count { color:#6b7280; font-size:13px; }
        .pitch-effect-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(90px,1fr)); gap:8px; }
        .pitch-effect-stat { background:white; border-radius:6px; padding:7px 8px; border-left:3px solid var(--ct-blue); text-align:center; }
        .pitch-effect-stat-label { font-size:10px; color:#6b7280; margin-bottom:3px; }
        .pitch-effect-stat-value { font-size:16px; font-weight:700; color:var(--ct-blue-dark); }

        /* ===== 熱區排名列表 ===== */
        .heatmap-rank-item { display:flex; justify-content:space-between; align-items:center; padding:6px 4px; border-bottom:1px solid #f3f4f6; }
        .heatmap-rank-zone { font-size:17px; font-weight:900; font-family:'Oswald','Noto Sans TC',sans-serif; }
        .heatmap-rank-count { font-size:22px; font-weight:900; color:var(--ct-red); font-family:'Oswald','Noto Sans TC',sans-serif; }

        /* ===== 球種效果分析儀表板 ===== */
        .analysis-dashboard-container { display:flex; gap:12px; align-items:stretch; justify-content:flex-start; }
        .pitch-type-table-wrap { flex:0 0 68%; min-width:0; overflow-x:hidden; }
        .chart-box { flex:0 0 28%; min-width:160px; min-height:220px; position:relative; display:flex; flex-direction:column; align-items:stretch; }
        .chart-box canvas { width:100% !important; height:100% !important; }
        .pitch-detail-table { width:100%; border-collapse:collapse; font-size:12px; table-layout:fixed; }
        .pitch-detail-table col.col-type  { width:20%; }
        .pitch-detail-table col.col-pct   { width:10%; }
        .pitch-detail-table col.col-str   { width:10%; }
        .pitch-detail-table col.col-ball  { width:10%; }
        .pitch-detail-table col.col-swing { width:10%; }
        .pitch-detail-table col.col-avg   { width:10%; }
        .pitch-detail-table col.col-max   { width:10%; }
        .pitch-detail-table col.col-k     { width:10%; }
        .pitch-detail-table col.col-ba    { width:10%; }
        .pitch-detail-table thead tr { background:var(--ct-blue-dark); }
        .pitch-detail-table th { color:#fff; padding:7px 3px; text-align:center; font-weight:700; font-size:11px; white-space:nowrap; border:1px solid rgba(255,255,255,0.15); overflow:hidden; }
        .pitch-detail-table th:first-child { text-align:left; padding-left:8px; }
        .pitch-detail-table td { padding:9px 3px; text-align:center; border-bottom:1px solid #e5e7eb; font-size:12px; overflow:hidden; white-space:nowrap; }
        .pitch-detail-table td:first-child { text-align:left; padding-left:8px; font-weight:700; font-size:12px; }
        .pitch-detail-table tbody tr:hover td { background:#eef3ff; }
        .pitch-detail-table tbody tr:last-child td { border-bottom:none; }
        .pitch-detail-summary { margin-top:8px; background:linear-gradient(135deg,#f0f5ff,#e8f0fe); border:2px solid var(--ct-blue-dark); border-radius:8px; padding:8px 12px; display:flex; gap:14px; align-items:center; flex-wrap:wrap; }
        .pitch-detail-summary .sum-item { text-align:center; }
        .pitch-detail-summary .sum-label { font-size:10px; color:#6b7280; margin-bottom:2px; }
        .pitch-detail-summary .sum-val { font-size:20px; font-weight:900; color:var(--ct-blue-dark); font-family:'Oswald','Noto Sans TC',sans-serif; }
        .pitch-detail-summary .sum-title { font-size:13px; font-weight:700; color:var(--ct-blue-dark); margin-right:auto; }
        .chart-box-title { font-size:12px; font-weight:700; color:var(--ct-blue-dark); text-align:center; margin-bottom:6px; }
        @media (max-width:600px) {
            .analysis-dashboard-container { flex-wrap:wrap; }
            .pitch-type-table-wrap { flex:1 1 100%; }
            .chart-box { flex:1 1 100%; max-width:280px; margin:0 auto; }
        }

        /* ===== 對比頁雙欄卡片格線 ===== */
        .compare-cards-grid { display:grid; grid-template-columns:1fr 1fr; gap:12px; align-items:stretch; }
        @media (max-width:600px) {
            .compare-cards-grid { grid-template-columns:1fr; }
        }

        /* ===== 球種/配球模式 行版型 ===== */
        .pattern-block { display:flex; flex-direction:column; gap:10px; }
        .pattern-row { display:flex; gap:16px; align-items:center; justify-content:center; }
        .pattern-section-label { align-self:center; font-family:'Noto Sans TC',sans-serif; font-size:15px; font-weight:900; color:#fff; border-radius:8px; padding:6px 18px; white-space:nowrap; letter-spacing:1px; }
        .pattern-label-type { background:#003d79; }
        .pattern-label-seq { background:#0f766e; }
        .pattern-chart-canvas { flex:0 0 auto; width:210px; height:255px; position:relative; }
        @media (max-width:760px) {
            .pattern-row { flex-wrap:wrap; }
            .pattern-chart-canvas { width:min(210px, 85vw); height:min(255px, 85vw); margin:0 auto; }
        }

        /* ===== TABS ===== */
        .tabs { display:flex; gap:6px; margin-bottom:8px; flex-wrap:wrap; }
        .tab-btn { padding:10px 20px; border:2px solid var(--ct-blue); background:white; cursor:pointer; border-radius:8px 8px 0 0; font-weight:700; color:var(--ct-blue-dark); transition:all 0.2s; -webkit-user-select:none; user-select:none; font-size:15px; }
        .tab-btn:active { transform:scale(0.98); }
        .tab-btn.active { background:var(--ct-blue-dark); color:white; border-bottom-color:var(--ct-blue-dark); box-shadow:0 -2px 8px rgba(0,61,121,0.2); }
        .tab-content { display:none; }
        .tab-content.active { display:block; }

        /* ===== MODAL ===== */
        .modal { display:none; position:fixed; z-index:2000; left:0; top:0; width:100%; height:100%; background-color:rgba(0,61,121,0.5); backdrop-filter:blur(4px); overflow-y:auto; -webkit-overflow-scrolling:touch; overscroll-behavior:contain; }
        .modal-content { background-color:white; margin:5% auto; padding:22px; border-radius:12px; width:90%; max-width:540px; max-height:85vh; overflow-y:auto; border-top:4px solid var(--ct-red); border-left:3px solid var(--ct-gold); box-shadow:0 8px 32px rgba(0,61,121,0.3); -webkit-overflow-scrolling:touch; position:relative; }
        .modal-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:16px; padding-bottom:10px; border-bottom:2px solid var(--ct-gold); }
        .modal-header h2 { color:var(--ct-blue-dark); margin:0; }
        .close { font-size:28px; font-weight:bold; cursor:pointer; color:var(--ct-red); transition:all 0.2s; line-height:1; -webkit-user-select:none; user-select:none; }
        .close:active { transform:scale(0.9); }
        .input-group { margin:12px 0; }
        .input-group label { display:block; margin-bottom:5px; font-weight:700; color:var(--ct-blue-dark); font-size:13px; }
        .input-group input, .input-group select { width:100%; padding:10px; border:2px solid var(--ct-blue); border-radius:8px; font-size:16px; transition:all 0.2s; }
        .input-group input:focus, .input-group select:focus { outline:none; border-color:var(--ct-red); box-shadow:0 0 0 3px rgba(220,0,0,0.1); }
        .input-group-row { display:grid; grid-template-columns:1fr 1fr; gap:10px; }

        /* ===== DATA MANAGEMENT ===== */
        .auto-save-toggle { display:flex; align-items:center; gap:10px; padding:10px; background:#f9fafb; border-radius:8px; margin-top:8px; border-left:4px solid var(--ct-gold); }
        .switch { position:relative; display:inline-block; width:50px; height:26px; }
        .switch input { opacity:0; width:0; height:0; }
        .slider { position:absolute; cursor:pointer; top:0; left:0; right:0; bottom:0; background-color:#ccc; transition:.3s; border-radius:26px; }
        .slider:before { position:absolute; content:""; height:20px; width:20px; left:3px; bottom:3px; background-color:white; transition:.3s; border-radius:50%; }
        input:checked + .slider { background-color:var(--ct-blue-dark); }
        input:checked + .slider:before { transform:translateX(24px); }

        /* ===== ZONE LEGEND ===== */
        .zone-legend { padding:10px; background:#f9fafb; border-radius:8px; font-size:12px; border:2px solid var(--ct-gold); }
        .legend-item { display:flex; align-items:center; margin:4px 0; gap:7px; }
        .legend-box { width:18px; height:18px; border-radius:4px; border:2px solid; flex-shrink:0; }
        .legend-box.strike { background:#f97316; border-color:var(--ct-red); }
        .legend-box.ball { background:var(--ct-green); border-color:var(--ct-red); }

        /* ===== SIDEBAR OVERLAY ===== */
        .sidebar-overlay { display:none; position:fixed; top:0; left:0; width:100%; height:100%; background:rgba(0,0,0,0.5); z-index:1000; }

        /* ===== GAME GROUPING ===== */
        .game-group { margin-bottom:16px; }
        .game-group-header { background:linear-gradient(135deg,#091629,#0d1f3c); color:white; padding:10px 14px; border-radius:8px 8px 0 0; font-weight:700; font-size:14px; border-bottom:2px solid var(--ct-gold); }
        .game-group-body { border:2px solid var(--ct-gold); border-top:none; border-radius:0 0 8px 8px; padding:10px; }

        /* ===== PRINT ===== */
        @media print {
            .sidebar,.toggle-sidebar,.sidebar-overlay { display:none; }
            .main-content { margin-left:0; }
            .container { box-shadow:none; page-break-inside:avoid; }
        }
        .sidebar-quick-save { flex-shrink:0; padding:8px 0 4px; border-top:1px solid rgba(255,215,0,0.2); margin-top:6px; }
        .sidebar-quick-save button { width:100%; padding:8px; border:none; border-radius:6px; font-size:12px; font-weight:700; cursor:pointer; margin-bottom:4px; touch-action:manipulation; }
        .ls-warning { background:#7c2d12; color:#fef3c7; font-size:11px; padding:6px 8px; border-radius:6px; margin-top:4px; display:none; line-height:1.4; }
        .bottom-action-btn { transition:filter 0.1s, transform 0.1s !important; }
        .bottom-action-btn:active { filter:brightness(2.2) !important; transform:scale(0.95) !important; }
        /* 分析頁左右分欄 */
        .analysis-split-row { grid-template-columns:1fr 1fr; }
        .analysis-split-row > * { min-width:0; overflow:hidden; }
        @media (max-width:768px) { .analysis-split-row { grid-template-columns:1fr; } }
        .analysis-two-col { grid-template-columns:1fr 1fr; }
        @media (max-width:600px) { .analysis-two-col { grid-template-columns:1fr; } }
        .heatmap-scale-wrap { width:100%; display:flex; justify-content:center; overflow:hidden; }
        /* 右欄壘上分析放大 */
        .base-state-lg { font-size:15px; }
        .base-state-lg > div { padding:14px !important; margin-bottom:12px !important; }
        .base-state-lg > div > div:first-child { font-size:15px !important; margin-bottom:10px !important; }
        .base-state-lg > div .base-row-text { font-size:14px !important; }
        .base-state-lg > div > div[style*="font-size:12px"] { font-size:14px !important; }
        .base-state-lg > div > div[style*="font-size:11px"] { font-size:13px !important; }
        /* 對戰歷史 Modal */
        #historyModal { display:none; position:fixed; z-index:3000; inset:0; background:rgba(0,61,121,0.55); backdrop-filter:blur(4px); overflow-y:auto; -webkit-overflow-scrolling:touch; }
        #historyModal .hm-box { background:white; margin:5% auto; padding:0; border-radius:14px; width:92%; max-width:600px; max-height:88vh; overflow-y:auto; border-top:4px solid var(--ct-red); border-left:3px solid var(--ct-gold); box-shadow:0 8px 32px rgba(0,61,121,0.3); }
        #historyModal .hm-header { display:flex; justify-content:space-between; align-items:center; padding:16px 20px; border-bottom:2px solid var(--ct-gold); position:sticky; top:0; background:white; z-index:1; }
        #historyModal .hm-body { padding:16px 20px; }
        #historyModal .hm-close { font-size:26px; cursor:pointer; color:var(--ct-red); line-height:1; }

        /* ===== RESPONSIVE ===== */
        @media (max-width:1024px) {
            .sidebar { width:280px; }
            .main-content { margin-left:280px; }
            .toggle-sidebar { left:290px; }
        }
        @media (max-width:768px) {
            .sidebar { transform:translateX(-300px); width:280px; }
            .sidebar.show { transform:translateX(0); }
            .sidebar-overlay.show { display:block; }
            .main-content { margin-left:0; padding:10px 8px; }
            .toggle-sidebar { left:14px; top:max(14px, env(safe-area-inset-top)); }
            h1 { font-size:20px; padding:14px; letter-spacing:2px; }
            h1 .h1-sub { font-size:12px; letter-spacing:3px; }
            .batter-stats { grid-template-columns:1fr; }
            .count-analysis { grid-template-columns:1fr; }
            .score-value { font-size:26px; }
            .dual-pitcher-cards { grid-template-columns:1fr 1fr; gap:8px; }
            /* 記分板 + 打者資訊：手機堆疊 */
            .scoreboard-batter-row { grid-template-columns:1fr; }
            /* 九宮格 + 結果區：手機堆疊 */
            .pitch-zone-result-row { flex-direction:column; }
            /* 球速按鈕：高度由 grid 決定，不固定 */
            .speed-btn { font-size:12px; font-weight:900; }
            /* 投球結果按鈕：縮小讓版面更緊湊 */
            .zone-right-btn { padding:12px 6px; font-size:13px; font-weight:900; border-radius:10px; }
            /* 打擊記錄大按鈕 */
            .pitch-btn { padding:14px 8px; font-size:16px; font-weight:900; border-radius:10px; }
            .zone-cell { font-size:18px; font-weight:900; }
            .zone-cell.ball-zone { font-size:12px; }
            .outcome-btn { height:50px; font-size:13px; }
            .confirm-record-btn { padding:20px; font-size:19px; border-radius:12px; }
            .hand-btn { padding:14px; font-size:15px; }
            .heatmap { grid-template-columns:repeat(3,58px); grid-template-rows:repeat(3,58px); }
            .tendency-heatmap { grid-template-columns:repeat(3,50px); grid-template-rows:repeat(3,50px); }
            /* 九宮格手機版 */
            .strike-zone-extended { grid-template-columns:repeat(5,min(60px,calc((100vw - 72px)/5))); grid-template-rows:repeat(5,min(60px,calc((100vw - 72px)/5))); gap:3px; }
            /* 球速按鈕：手機改為橫向滑動 */
            .speed-grid { display:flex; flex-wrap:nowrap; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; gap:4px; padding-bottom:2px; }
            .speed-grid::-webkit-scrollbar { display:none; }
            .speed-btn { flex-shrink:0; width:44px; height:38px; font-size:12px; font-weight:900; }
        }
        @media (max-width:480px) {
            h1 { font-size:16px; padding:12px; letter-spacing:1px; gap:6px; }
            h1 .h1-baseball { font-size:18px; }
            .zone-label { font-size:9px; }
            .heatmap { grid-template-columns:repeat(3,min(52px,calc((100vw - 60px)/3))); grid-template-rows:repeat(3,min(52px,calc((100vw - 60px)/3))); }
            .pitch-types { grid-template-columns:repeat(4,1fr); gap:5px; }
            .pitch-btn { padding:11px 4px; font-size:13px; }
            .at-bat-result { gap:4px; }
            /* 投球結果按鈕改橫排，省高度 */
            .zone-right-btns { flex-direction:row; flex-wrap:wrap; gap:4px; }
            .zone-right-btn { flex:1; min-width:0; padding:10px 2px; font-size:12px; font-weight:900; }
            /* 球速：小手機改為堆疊（左側→上方橫排，按鈕→橫向滑動） */
            .speed-input { flex-direction:column; gap:4px; }
            .speed-left { flex-direction:row; width:auto; justify-content:flex-start; align-items:center; gap:8px; padding:6px 10px; }
            .stats-grid { grid-template-columns:repeat(4,1fr); }
            .stat-card { padding:8px 4px; }
            .stat-value { font-size:18px; }
            .batter-details { grid-template-columns:1fr 1fr; }
            .dual-pitcher-cards { grid-template-columns:1fr; }
            /* 小手機九宮格 */
            .strike-zone-extended { grid-template-columns:repeat(5,min(50px,calc((100vw - 64px)/5))); grid-template-rows:repeat(5,min(50px,calc((100vw - 64px)/5))); gap:2px; }
            .zone-cell { font-size:16px; }
            .zone-cell.ball-zone { font-size:10px; }
            .outcome-btn { height:46px; font-size:12px; }
            .confirm-record-btn { padding:18px; font-size:17px; }

            /* ── 壘包區盜壘按鈕：小手機允許縮小，防止截斷 ── */
            #stealBtnsCol { flex-shrink:1 !important; min-width:0; }
            #stealBtnsCol button { font-size:11px !important; padding:3px 5px !important; white-space:normal !important; line-height:1.3; text-align:center; }

            /* ── 記分板：切換上下局按鈕縮小 ── */
            .half-btn { font-size:10px; padding:2px 5px; white-space:normal; line-height:1.3; }
            .inning-control button { padding:2px 5px; font-size:11px; }
            .score-row { gap:3px; }

            /* ── 投手槽位卡片：文字換行不截斷 ── */
            .pitcher-slot-name { font-size:26px; word-break:break-all; }
            .pitcher-slot-team { font-size:13px; }
            .pitcher-slot-badge { font-size:10px; padding:2px 6px; }

            /* ── 投球記錄項目：確保不超出邊界 ── */
            .pitch-record { font-size:12px; }
            .pitch-record-header { flex-wrap:wrap; gap:4px; }

            /* ── container 側邊 padding 收緊 ── */
            .container { padding:10px 10px; }
            .main-content { padding:8px 6px; }
        }

        /* ── 手機（768px 以下）共用：壘包按鈕在較窄欄時也允許縮 ── */
        @media (max-width:768px) {
            #stealBtnsCol button { font-size:13px !important; padding:4px 6px !important; }
        }
        /* ===== SYNC STATUS ===== */
        #syncDot { position:fixed; top:max(8px,env(safe-area-inset-top)); right:12px; z-index:1003; display:flex; align-items:center; gap:5px; background:rgba(0,0,0,0.35); border-radius:20px; padding:4px 10px; }
        #syncDot .dot { width:8px; height:8px; border-radius:50%; background:#fbbf24; transition:background 0.4s; }
        #syncDot .dot.online { background:#10b981; }
        #syncDot .dot.offline { background:#fbbf24; animation:livePulse 1.2s infinite; }
        #syncDot span { font-size:10px; color:white; font-weight:700; }
        #loginScreen {
            position:fixed; inset:0; z-index:9999;
            background:linear-gradient(135deg,#091629 0%,#0d1f3c 100%);
            display:flex; align-items:center; justify-content:center; padding:20px;
            -webkit-overflow-scrolling:touch; overflow-y:auto;
        }
        .login-box {
            background:rgba(255,255,255,0.06); border:2px solid rgba(255,215,0,0.3);
            border-radius:20px; padding:36px 28px; width:100%; max-width:380px;
            backdrop-filter:blur(12px); text-align:center;
        }
        .login-logo { font-size:56px; margin-bottom:8px; }
        .login-title { color:#ffd700; font-size:22px; font-weight:900; letter-spacing:3px; font-family:'Oswald','Noto Sans TC',sans-serif; margin-bottom:4px; }
        .login-sub { color:rgba(255,255,255,0.55); font-size:12px; margin-bottom:28px; }
        .login-role-btns { display:grid; grid-template-columns:1fr 1fr; gap:10px; margin-bottom:20px; }
        .login-role-btn {
            padding:14px; border-radius:10px; border:2px solid rgba(255,255,255,0.2);
            background:rgba(255,255,255,0.07); color:white; font-size:14px; font-weight:700;
            cursor:pointer; transition:all 0.2s; touch-action:manipulation;
        }
        .login-role-btn.selected { border-color:var(--ct-gold); background:rgba(255,215,0,0.15); color:var(--ct-gold); }
        .login-role-btn:active { transform:scale(0.97); }
        .login-pw-group { margin-bottom:16px; text-align:left; }
        .login-pw-group label { font-size:12px; color:rgba(255,255,255,0.6); font-weight:700; display:block; margin-bottom:6px; }
        .login-pw-group input {
            width:100%; padding:12px 14px; border-radius:8px; border:2px solid rgba(255,255,255,0.2);
            background:rgba(255,255,255,0.1); color:white; font-size:16px; outline:none;
            transition:border-color 0.2s;
        }
        .login-pw-group input:focus { border-color:var(--ct-gold); }
        .login-pw-group input::placeholder { color:rgba(255,255,255,0.3); }
        .login-enter-btn {
            width:100%; padding:14px; border-radius:10px; border:none;
            background:linear-gradient(135deg,var(--ct-gold),#f59e0b);
            color:var(--ct-blue-dark); font-size:16px; font-weight:900; cursor:pointer;
            letter-spacing:2px; transition:all 0.2s; touch-action:manipulation;
            box-shadow:0 4px 16px rgba(255,215,0,0.3);
        }
        .login-enter-btn:active { transform:scale(0.97); }
        .login-error { color:#f87171; font-size:13px; margin-top:10px; min-height:18px; font-weight:700; }
        .login-hint { color:rgba(255,255,255,0.35); font-size:11px; margin-top:14px; line-height:1.6; }
        /* 模式選擇頁 */
        #modeSelectScreen { display:none; position:fixed; inset:0; z-index:10000; background:linear-gradient(135deg,#091629 0%,#0d1f3c 100%); flex-direction:column; align-items:center; justify-content:center; overflow-y:auto; -webkit-overflow-scrolling:touch; }
        .mode-card { background:rgba(255,255,255,0.07); border:2px solid rgba(255,215,0,0.3); border-radius:16px; padding:28px 32px; width:220px; text-align:center; cursor:pointer; transition:all 0.2s; touch-action:manipulation; margin:10px; font-family:inherit; -webkit-appearance:none; appearance:none; }
        .mode-card:active { transform:scale(0.97); }
        .mode-card:hover { background:rgba(255,215,0,0.12); border-color:var(--ct-gold); }
        .mode-card-icon { font-size:48px; margin-bottom:12px; }
        .mode-card-title { font-size:20px; font-weight:900; color:white; font-family:'Oswald','Noto Sans TC',sans-serif; letter-spacing:2px; }
        .mode-card-sub { font-size:12px; color:rgba(255,255,255,0.5); margin-top:6px; }
        .mode-card.disabled { opacity:0.4; cursor:not-allowed; pointer-events:none; }
        /* 更新提示 Modal */
        #updateModal { display:none; position:fixed; inset:0; z-index:9999; background:rgba(0,0,0,0.6); align-items:center; justify-content:center; }
        #updateModal .um-box { background:white; border-radius:16px; padding:24px 20px 32px; width:90%; max-width:400px; border-top:4px solid var(--ct-blue); text-align:center; box-shadow:0 20px 60px rgba(0,0,0,0.3); }
        /* ===== PDF FILTER MODAL ===== */
        #pdfFilterModal { display:none; position:fixed; inset:0; z-index:3000; background:rgba(0,61,121,0.55); backdrop-filter:blur(4px); overflow-y:auto; align-items:flex-start; justify-content:center; padding:20px 16px; box-sizing:border-box; }
        #pdfFilterModal .pf-box { background:white; margin:0 auto; padding:0; border-radius:14px; width:100%; max-width:520px; border-top:4px solid var(--ct-red); box-shadow:0 8px 32px rgba(0,0,0,0.22); }
        #pdfFilterModal .pf-header { display:flex; justify-content:space-between; align-items:center; padding:14px 20px; border-bottom:2px solid #e5e7eb; }
        #pdfFilterModal .pf-body { padding:18px 20px 22px; display:flex; flex-direction:column; gap:4px; }
        .pf-section { margin-bottom:14px; }
        /* Step label */
        .pf-step-label { display:flex; align-items:center; gap:8px; font-size:13px; font-weight:700; color:var(--ct-blue-dark); margin-bottom:10px; }
        .pf-step-num { display:inline-flex; align-items:center; justify-content:center; width:22px; height:22px; border-radius:50%; background:var(--ct-blue-dark); color:white; font-size:12px; font-weight:900; flex-shrink:0; }
        /* Select */
        .pf-select { width:100%; padding:10px 12px; border:2px solid #d1d5db; border-radius:10px; font-size:14px; font-weight:600; color:var(--ct-blue-dark); background:white; cursor:pointer; outline:none; transition:border-color 0.2s; appearance:none; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%23003d79' stroke-width='2' fill='none' stroke-linecap='round'/%3E%3C/svg%3E"); background-repeat:no-repeat; background-position:right 12px center; padding-right:32px; }
        .pf-select:focus { border-color:var(--ct-blue); }
        /* Radio cards */
        .pf-radio-item { display:block; cursor:pointer; margin-bottom:8px; }
        .pf-radio-item input[type="radio"] { display:none; }
        .pf-radio-card { display:flex; align-items:center; gap:12px; padding:11px 14px; border:2px solid #e5e7eb; border-radius:10px; transition:all 0.2s; background:white; }
        .pf-radio-item input:checked + .pf-radio-card { border-color:var(--ct-blue); background:#eff6ff; box-shadow:0 0 0 3px rgba(0,81,165,0.12); }
        .pf-radio-icon { font-size:22px; flex-shrink:0; }
        .pf-radio-title { font-size:14px; font-weight:700; color:var(--ct-blue-dark); }
        .pf-radio-sub { font-size:11px; color:#6b7280; margin-top:2px; }
        /* Fade-in animation */
        .pf-fade-in { animation:pfFade 0.2s ease; }
        @keyframes pfFade { from{opacity:0;transform:translateY(-6px)} to{opacity:1;transform:translateY(0)} }
        /* Member checklist (PDF filter) */
        .pf-member-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:8px; }
        .pf-member-header > span { font-size:12px; font-weight:700; color:var(--ct-blue-dark); }
        .pf-select-all-label { display:flex; align-items:center; gap:5px; font-size:12px; color:#374151; cursor:pointer; font-weight:600; padding:4px 10px; background:#f0f4ff; border:1px solid #c7d7f0; border-radius:20px; transition:background 0.15s; }
        .pf-select-all-label:hover { background:#dbeafe; }
        .pf-select-all-label input[type=checkbox] { width:14px; height:14px; cursor:pointer; accent-color:var(--ct-blue); }
        .pf-checklist { display:flex; flex-direction:column; gap:5px; max-height:200px; overflow-y:auto; }
        .pf-check-item { display:flex; align-items:center; gap:10px; padding:7px 11px; border-radius:8px; border:1.5px solid #e5e7eb; cursor:pointer; font-size:13px; background:white; transition:all 0.15s; }
        .pf-check-item:hover { background:#f0f4ff; border-color:#93c5fd; }
        .pf-check-item input[type=checkbox] { width:16px; height:16px; cursor:pointer; flex-shrink:0; accent-color:var(--ct-blue); }
        .pf-check-item input[type=checkbox]:checked + span { color:var(--ct-blue-dark); font-weight:700; }
        /* View-only overlay */
        #viewOnlyBanner { display:none; position:fixed; top:0; left:0; right:0; z-index:500; background:linear-gradient(90deg,#b45309,#d97706); color:white; text-align:center; padding:8px; font-size:13px; font-weight:700; letter-spacing:1px; }
        #demoModeBanner { display:none; position:fixed; top:0; left:0; right:0; z-index:500; background:linear-gradient(90deg,#6d28d9,#7c3aed); color:white; text-align:center; padding:8px; font-size:13px; font-weight:700; letter-spacing:1px; }

        /* ===== 打者情蒐 ===== */
        /* 來源切換按鈕 */
        .batter-src-btn {
            padding:8px 16px; border:2px solid #d1d5db; border-radius:8px;
            background:white; color:#6b7280; font-size:13px; font-weight:700;
            cursor:pointer; font-family:inherit; transition:all 0.15s;
        }
        .batter-src-btn.active {
            background:var(--ct-blue-dark); color:white; border-color:var(--ct-blue-dark);
        }
        /* 打者列表 */
        .batter-list-item {
            display:flex; align-items:center; justify-content:space-between;
            background:white; border-radius:10px; padding:12px 14px;
            margin-bottom:8px; cursor:pointer; border:1px solid #e5e7eb;
            transition:box-shadow 0.15s, transform 0.1s;
        }
        .batter-list-item:active { transform:scale(0.98); }
        .batter-list-item:hover { box-shadow:0 2px 12px rgba(0,0,0,0.08); }
        .bli-left { flex:1; min-width:0; }
        .bli-name { font-size:15px; font-weight:900; color:#111827; }
        .bli-meta { font-size:12px; color:#6b7280; margin-top:2px; }
        .bli-arrow { font-size:20px; color:#9ca3af; flex-shrink:0; margin-left:8px; }
        /* 基礎數據格 */
        .batter-stats-grid {
            display:grid; grid-template-columns:repeat(4,1fr); gap:8px;
        }
        .bsc {
            background:white; border-radius:8px; padding:10px 6px;
            text-align:center; border:1px solid #e5e7eb;
        }
        .bsc-v { font-size:18px; font-weight:900; color:var(--ct-blue-dark); font-family:'Oswald',sans-serif; }
        .bsc-l { font-size:10px; color:#6b7280; margin-top:2px; }
        /* 分析卡片 */
        .bac {
            background:white; border-radius:10px; padding:14px;
            margin-bottom:10px; border:1px solid #e5e7eb;
        }
        .bac-title { font-size:13px; font-weight:900; color:#003d79; margin-bottom:10px; }
        .bac-row { display:flex; gap:8px; }
        .bac-stat { flex:1; text-align:center; }
        .bac-v { font-size:20px; font-weight:900; color:#111827; font-family:'Oswald',sans-serif; }
        .bac-l { font-size:11px; color:#6b7280; margin-top:2px; line-height:1.3; }
        .bac-table { width:100%; border-collapse:collapse; font-size:12px; }
        .bac-table th { background:#f3f4f6; padding:5px 8px; text-align:left; font-weight:700; color:#374151; }
        .bac-table td { padding:5px 8px; border-bottom:1px solid #f3f4f6; color:#374151; }
        /* 打席結果按鈕（在記錄打席 Modal 中） */
        .atbat-outcome-btn {
            padding:9px 4px; border:2px solid #d1d5db; border-radius:7px;
            background:white; color:#374151; font-size:13px; font-weight:700;
            cursor:pointer; font-family:inherit; transition:all 0.12s;
        }
        .atbat-outcome-btn.selected {
            background:var(--ct-blue-dark); color:white; border-color:var(--ct-blue-dark);
        }
        .atbat-outcome-btn:active { transform:scale(0.95); }
        /* 打者 Modal 顯示控制（flex overlay） */
        #hitLocationModal, #addBatterModal, #recordAtBatModal { display:none; }
        #hitLocationModal.show, #addBatterModal.show, #recordAtBatModal.show { display:flex; }
        /* 讓 hitLocConfirmBtn disabled 時透明 */
        #hitLocConfirmBtn:not([disabled]) { opacity:1 !important; }
        #hitLocConfirmBtn[disabled] { opacity:0.4; cursor:not-allowed; }
        /* 手機版數據格改 2 欄 */
        @media (max-width:480px) {
            .batter-stats-grid { grid-template-columns:repeat(2,1fr); }
            .bac-v { font-size:17px; }
        }

/* ════ 打者情蒐模式 ════ */
.bm-card {
    background: white;
    border: 1px solid #e5e7eb;
    border-radius: 10px;
    padding: 12px 14px;
}
.bm-mode-toggle {
    display: flex;
    border: 1px solid #d1d5db;
    border-radius: 10px;
    overflow: hidden;
    margin-top: 10px;
}
.bm-mode-btn {
    flex: 1;
    padding: 10px;
    border: none;
    background: white;
    color: #6b7280;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
    transition: background 0.15s, color 0.15s;
}
.bm-mode-btn.bm-on {
    background: #003d79;
    color: white;
}
.bm-team-btn {
    flex: 1;
    padding: 8px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: white;
    color: #374151;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
}
.bm-team-btn.bm-on {
    background: #003d79;
    color: white;
    border-color: #003d79;
}
.bm-toggle-btn {
    padding: 6px 12px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    background: white;
    color: #374151;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
}
.bm-toggle-btn.bm-on {
    background: #003d79;
    color: white;
    border-color: #003d79;
}
.bm-out-dot {
    width: 28px;
    height: 28px;
    border-radius: 50%;
    border: 2px solid #d1d5db;
    background: white;
    font-size: 14px;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    transition: background 0.1s;
}
.bm-out-dot.bm-on {
    background: #dc0000;
    border-color: #dc0000;
    color: white;
}
.bm-base-btn {
    padding: 5px 10px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    background: white;
    color: #374151;
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
}
.bm-base-btn.bm-on {
    background: #f59e0b;
    border-color: #d97706;
    color: white;
    font-weight: 700;
}
.bm-batter-card {
    background: linear-gradient(135deg, #f0f7ff, #e8f4fd);
    border-color: #bfdbfe;
}
.bm-nav-btn {
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid #d1d5db;
    background: white;
    font-size: 16px;
    cursor: pointer;
    touch-action: manipulation;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.bm-ph-btn {
    padding: 5px 10px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    background: white;
    color: #374151;
    font-size: 12px;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
}
.bm-ph-btn.bm-on {
    background: #0051a5;
    border-color: #0051a5;
    color: white;
    font-weight: 700;
}
.bm-outcome-btn {
    padding: 7px 11px;
    border: 1px solid #d1d5db;
    border-radius: 7px;
    background: white;
    color: #374151;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
    transition: background 0.1s, color 0.1s;
    min-height: 36px;
}
.bm-outcome-btn.bm-on {
    background: #003d79;
    color: white;
    border-color: #003d79;
}
.bm-outcome-btn.bm-hit    { border-color: #16a34a; color: #15803d; }
.bm-outcome-btn.bm-hit.bm-on { background: #16a34a; color: white; border-color: #16a34a; }
.bm-outcome-btn.bm-out    { border-color: #dc2626; color: #dc2626; }
.bm-outcome-btn.bm-out.bm-on { background: #dc2626; color: white; border-color: #dc2626; }
.bm-outcome-btn.bm-bb       { border-color: #9333ea; color: #7e22ce; }
.bm-outcome-btn.bm-bb.bm-on  { background: #9333ea; color: white; border-color: #9333ea; }
/* 戰術標籤（多選） */
.bm-outcome-btn.bm-modifier { border-color: #7c3aed; color: #7c3aed; border-style: dashed; font-size: 11px; }
.bm-outcome-btn.bm-modifier.bm-on { background: #7c3aed; color: white; border-style: solid; }
.bm-action-btn {
    padding: 7px 12px;
    border: 1px solid;
    border-radius: 7px;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
}
.bm-lineup-row {
    display: grid;
    grid-template-columns: 28px 2fr 2fr 3fr 4fr;
    align-items: center;
    gap: 4px;
    padding: 5px 0;
    border-bottom: 1px solid #f3f4f6;
}
.bm-lineup-pos {
    padding: 5px 2px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 12px;
    font-family: inherit;
    width: 100%;
    box-sizing: border-box;
    text-align: center;
    cursor: pointer;
    background: white;
    min-width: 0;
}
.bm-lineup-order {
    width: 26px;
    height: 26px;
    border-radius: 50%;
    background: #003d79;
    color: #ffd700;
    font-size: 13px;
    font-weight: 900;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Oswald', sans-serif;
    flex-shrink: 0;
}
.bm-lineup-num {
    padding: 5px 4px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 12px;
    font-family: inherit;
    width: 100%;
    box-sizing: border-box;
    text-align: center;
    min-width: 0;
}
.bm-lineup-name {
    padding: 5px 6px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 12px;
    font-family: inherit;
    width: 100%;
    box-sizing: border-box;
    min-width: 0;
}
.bm-lineup-hand {
    padding: 5px 4px;
    border: 1px solid #d1d5db;
    border-radius: 6px;
    font-size: 12px;
    font-family: inherit;
    background: white;
    cursor: pointer;
    touch-action: manipulation;
    width: 100%;
    text-align: center;
    box-sizing: border-box;
}
.bm-lineup-hand.bm-on {
    background: #003d79;
    color: white;
    border-color: #003d79;
}
/* 獨立模式 */
.sp-type-btn {
    padding: 7px 11px;
    border: 1px solid #d1d5db;
    border-radius: 7px;
    background: white;
    color: #374151;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
    min-height: 36px;
}
.sp-type-btn.sp-on {
    background: #0051a5;
    color: white;
    border-color: #0051a5;
}
.sp-react-btn {
    padding: 8px 12px;
    border: 1px solid #d1d5db;
    border-radius: 8px;
    background: white;
    color: #374151;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    font-family: inherit;
    touch-action: manipulation;
    min-height: 40px;
}
.sp-react-btn.sp-on {
    background: #1e3a5f;
    color: white;
    border-color: #1e3a5f;
}
/* 打者模式統計 */
.bm-stats-table { width: 100%; border-collapse: collapse; font-size: 13px; margin-top: 8px; }
.bm-stats-table th { background: #003d79; color: white; padding: 8px 6px; text-align: center; font-size: 12px; }
.bm-stats-table td { padding: 7px 6px; text-align: center; border-bottom: 1px solid #f3f4f6; }
.bm-stats-table tr:hover td { background: #f0f7ff; }
.bm-stats-table td:first-child { text-align: left; font-weight: 700; }
.bm-stats-highlight { color: #dc0000; font-weight: 900; }

/* 統計頁單隊成績表：窄螢幕壓縮欄距讓所有欄位盡量一次排下，不用橫滑 */
@media (max-width: 768px) {
  .bm-stats-table th, .bm-stats-table td { padding: 6px 3px; font-size: 11px; }
  .bm-stats-table th { min-width: 0 !important; }
  .bm-detail-hint { display: none; }
}
@media (max-width: 480px) {
  .bm-stats-table th, .bm-stats-table td { padding: 5px 2px; font-size: 10px; }
}
/* 打者Tab active狀態 — 同投手模式反白效果 */
.tab-btn.bm-tab.bm-tab-active { background: #003d79 !important; color: white !important; border-color: #003d79; box-shadow: 0 -2px 8px rgba(0,61,121,0.2); }
/* 打席結果分組標題 */
.bm-outcome-group-label { display:block; font-size:10px; font-weight:800; letter-spacing:0.4px; margin-top:5px; margin-bottom:2px; }
/* 模式切換（小型，Tab列右側） */
#bmModeToggleCompact { display:flex; border:2px solid #d1d5db; border-radius:10px; overflow:hidden; flex-shrink:0; align-self:flex-end; margin-bottom:4px; }
#bmModeToggleCompact .bm-mode-btn { padding:9px 20px; font-size:14px; font-weight:700; border:none; border-left:2px solid #d1d5db; line-height:1.3; cursor:pointer; font-family:inherit; transition:background 0.15s,color 0.15s; }
#bmModeToggleCompact .bm-mode-btn:first-child { border-left:none; }
#bmModeToggleCompact .bm-mode-btn.bm-on { background:#003d79; color:white; }
/* 打席結果分組容器 */
.bm-outcome-group { margin-bottom:2px; }
/* ── 雙欄對稱佈局（對應投手模式對戰組合）── */
.bm-dual-match { display:grid; grid-template-columns:1fr 1fr; gap:10px; }
.bm-match-col { display:flex; flex-direction:column; gap:6px; border-radius:10px; border:2px solid transparent; padding:6px; transition:border-color 0.2s, box-shadow 0.2s; }
.bm-match-col.bm-col-active { border-color:var(--ct-gold); box-shadow:0 0 0 3px rgba(255,215,0,0.22); }
/* 卡片內左右分欄 */
.bm-card-inner { display:flex; gap:10px; width:100%; }
.bm-card-batter { flex:1; min-width:0; text-align:center; }
.bm-card-batter .pitcher-slot-team { font-size:18px; }
.bm-card-batter .pitcher-slot-name { font-size:44px; }
.bm-card-batter .pitcher-slot-badge { font-size:15px; padding:5px 14px; }
.bm-card-vs { width:82px; flex-shrink:0; display:flex; flex-direction:column; align-items:center; gap:3px; padding-left:10px; border-left:1px solid rgba(255,255,255,0.18); }
.bm-vs-hdr { font-size:9px; font-weight:700; color:rgba(255,215,0,0.85); letter-spacing:0.5px; white-space:nowrap; }
.bm-vs-num { font-size:15px; font-weight:900; color:white; font-family:'Oswald',sans-serif; line-height:1.2; }
.bm-vs-name { font-size:11px; font-weight:700; color:rgba(255,255,255,0.85); text-align:center; width:80px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.bm-vs-btns { display:flex; gap:3px; margin-top:2px; }
.bm-vs-ph-btn { padding:4px 6px; border-radius:5px; font-size:10px; font-weight:700; cursor:pointer; font-family:inherit; touch-action:manipulation; border:1px solid rgba(255,255,255,0.25); background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.55); }
.bm-vs-ph-btn.bm-on { background:rgba(220,0,0,0.75); border-color:#dc0000; color:white; }
.bm-vs-link-btn { margin-top:3px; padding:3px 6px; border:1px solid rgba(255,215,0,0.35); background:rgba(255,215,0,0.08); color:rgba(255,215,0,0.8); border-radius:4px; font-size:9px; font-weight:700; cursor:pointer; font-family:inherit; touch-action:manipulation; white-space:nowrap; }
.bm-vs-link-btn:active { background:rgba(255,215,0,0.2); }
/* ── A/B 打線模組（可收合，位於各欄底部）── */
.bm-lineup-module { background:rgba(0,0,0,0.25); border-radius:8px; overflow:hidden; border:1px solid rgba(255,255,255,0.12); }
.bm-lineup-module-hdr { display:flex; align-items:center; justify-content:space-between; padding:6px 8px; cursor:pointer; gap:4px; background:rgba(0,0,0,0.18); user-select:none; }
.bm-lineup-module-title { font-size:11px; font-weight:700; color:rgba(255,215,0,0.85); flex:1; min-width:0; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.bm-lineup-module-btns { display:flex; gap:3px; flex-shrink:0; align-items:center; }
.bm-lm-btn { font-size:13px; padding:6px 12px; border-radius:6px; border:1px solid rgba(255,255,255,0.2); background:rgba(255,255,255,0.1); color:rgba(255,255,255,0.7); cursor:pointer; font-family:inherit; touch-action:manipulation; }
.bm-lm-btn.bm-lm-save { background:rgba(22,163,74,0.2); border-color:rgba(22,163,74,0.4); color:#86efac; }
.bm-lm-btn.bm-lm-clear { background:rgba(220,0,0,0.15); border-color:rgba(220,0,0,0.3); color:#fca5a5; }
.bm-lineup-arrow { font-size:9px; color:rgba(255,255,255,0.4); flex-shrink:0; }
/* 打線 row 精簡版（在模組內） */
.bm-lineup-module .bm-lineup-row { padding:2px 6px; gap:3px; }
.bm-lineup-module .bm-lineup-order { width:20px; height:20px; font-size:11px; }
.bm-lineup-module .bm-lineup-num { font-size:10px; padding:3px 3px; }
.bm-lineup-module .bm-lineup-pos { font-size:10px; padding:3px 2px; }
.bm-lineup-module .bm-lineup-name { font-size:11px; padding:3px 4px; }
.bm-lineup-module .bm-lineup-hand { font-size:18px; padding:5px 4px; }
/* 落點圖＋打席結果 55/45 格線 */
.bm-field-result-grid {
    display: grid;
    grid-template-columns: 55fr 45fr;
    gap: 12px;
    margin-top: 10px;
    align-items: stretch;
}
.bm-field-result-grid .bm-outcomes-card {
    display: flex;
    flex-direction: column;
}
@media (max-width: 768px) {
    .bm-field-result-grid { grid-template-columns: 1fr; }
    .bm-dual-match { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
    .bm-dual-match { grid-template-columns: 1fr; }

    /* ── 手機直立：打者記錄列換行成兩排 ── */
    .bm-record-bar {
        flex-wrap: wrap;
        gap: 6px 4px;
    }
    /* 第一排：局數+上下半（左）+ 壘包出局（右）─ 同一行 */
    .bm-record-bar > div:first-child {
        /* 局數+上下半：壓縮字體 */
        gap: 3px !important;
    }
    .bm-record-bar > div:first-child button {
        padding: 5px 7px !important;
        font-size: 12px !important;
    }
    /* 壘包出局區：移到第一排右側 */
    .bm-bases-row {
        margin-left: auto;
        gap: 3px !important;
    }
    .bm-bases-row button {
        padding: 5px 6px !important;
        font-size: 12px !important;
    }
    /* 第二排：打者資訊 + 代打按鈕 ─ 佔滿寬度 */
    .bm-record-bar > div:nth-child(2) {
        width: 100%;
        order: 3;
    }
}

/* ─── 打者情蒐槽位（仿 dual-pitcher-section）─── */
.bm-current-section {
    background: linear-gradient(135deg, #091629 0%, #0d1f3c 100%);
    color: white; padding: 12px 16px; border-radius: 12px; margin: 0 auto 8px;
    box-shadow: 0 4px 16px rgba(0,61,121,0.15);
    border: 4px solid #dc0000; border-top: 5px solid #ffd700; max-width: 1280px;
}
.bm-current-section h2 { color: white; border-bottom: 2px solid #ffd700; margin-bottom: 8px; }
.bm-batter-slot {
    background: #001f3f; border: 2px solid #ffd700;
    border-radius: 12px; padding: 14px 16px;
    box-shadow: 0 0 0 3px rgba(255,215,0,0.2);
}
.bm-slot-nav {
    background: rgba(255,255,255,0.12); border: 1px solid rgba(255,255,255,0.25);
    color: white; border-radius: 8px; cursor: pointer; font-size: 17px;
    width: 40px; height: 40px; padding: 0; flex-shrink: 0;
    touch-action: manipulation; font-family: inherit;
}
.bm-slot-nav:hover, .bm-slot-nav:active { background: rgba(255,255,255,0.22); }
.bm-slot-input {
    flex: 1; min-width: 80px; padding: 7px 10px;
    border: 1px solid rgba(255,255,255,0.25); border-radius: 8px;
    font-size: 13px; font-family: inherit;
    background: rgba(255,255,255,0.1); color: white;
}
.bm-slot-input::placeholder { color: rgba(255,255,255,0.9); }
.bm-slot-input-trait { border-color: rgba(196,181,253,0.4); background: rgba(196,181,253,0.12); color: #131015; }
.bm-slot-input-trait::placeholder { color: rgba(196,181,253,0.5); }
.bm-slot-ph-btn {
    padding: 7px 13px; border-radius: 6px; font-size: 12px; font-weight: 700;
    cursor: pointer; font-family: inherit; touch-action: manipulation;
    background: rgba(255,255,255,0.1); border: 1px solid rgba(255,255,255,0.25);
    color: rgba(255,255,255,0.7); transition: all 0.15s;
}
.bm-slot-ph-btn.bm-on { background: #003d79; border-color: #ffd700; color: #ffd700; }
/* 打席結果按鈕加大（仿投手模式） */
.bm-outcome-btn { padding: 10px 13px; font-size: 13px; min-height: 44px; }

/* 獨立模式球格 */
.sp-zone-grid { display: grid; grid-template-columns: repeat(5,1fr); gap: 3px; }
.sp-zone-cell {
    aspect-ratio: 1;
    border: 1px solid #d1d5db;
    border-radius: 4px;
    background: white;
    font-size: 11px;
    cursor: pointer;
    touch-action: manipulation;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Oswald', sans-serif;
    font-weight: 700;
    color: #374151;
    min-height: 40px;
}
.sp-zone-cell.sp-strike { background: #dbeafe; border-color: #3b82f6; }
.sp-zone-cell.sp-on     { background: #003d79 !important; color: white !important; border-color: #003d79 !important; }

/* 最近記錄條目 */
.bm-log-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 9px 12px;
    border-radius: 9px;
    margin-bottom: 6px;
    font-size: 16px;
    background: #f9fafb;
    border: 1px solid #f3f4f6;
}
.bm-log-outcome { font-weight: 700; font-size: 16px; }
.bm-log-hit { color: #16a34a; }
.bm-log-out { color: #dc2626; }
.bm-log-bb  { color: #9333ea; }

/* 側欄打線管理 - 緊湊版 */
#bmSidebarContent .bm-lineup-row {
    padding: 4px 0;
    gap: 4px;
}
#bmSidebarContent .bm-lineup-order {
    background: rgba(0,61,121,0.9);
    color: #ffd700;
    width: 26px;
    height: 26px;
    font-size: 15px;
}
#bmSidebarContent .bm-lineup-num {
    padding: 4px 4px;
    font-size: 15px;
    background: rgba(255,255,255,0.1);
    border-color: rgba(255,255,255,0.2);
    color: white;
}
#bmSidebarContent .bm-lineup-num::placeholder { color: rgba(255,255,255,0.35); }
#bmSidebarContent .bm-lineup-pos {
    padding: 4px 2px;
    font-size: 13px;
    background: rgba(255,255,255,0.1);
    border-color: rgba(255,255,255,0.2);
    color: white;
}
#bmSidebarContent .bm-lineup-name {
    padding: 4px 5px;
    font-size: 15px;
    background: rgba(255,255,255,0.1);
    border-color: rgba(255,255,255,0.2);
    color: white;
}
#bmSidebarContent .bm-lineup-name::placeholder { color: rgba(255,255,255,0.35); }
#bmSidebarContent .bm-lineup-hand {
    padding: 6px 6px;
    font-size: 18px;
    background: rgba(255,255,255,0.08);
    border-color: rgba(255,255,255,0.2);
    color: rgba(255,255,255,0.7);
}
#bmSidebarContent .bm-lineup-hand.bm-on {
    background: #003d79;
    color: white;
    border-color: rgba(255,215,0,0.5);
}
.bm-sidebar-team {
    background: rgba(255,255,255,0.08) !important;
    border-color: rgba(255,255,255,0.2) !important;
    color: rgba(255,255,255,0.7) !important;
    font-size: 12px;
    padding: 6px 8px;
}
.bm-sidebar-team.bm-on {
    background: rgba(0,81,165,0.7) !important;
    border-color: rgba(255,215,0,0.5) !important;
    color: white !important;
}
.bm-analysis-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 12px;
    align-items: start;
    margin-top: 12px;
}
@media (max-width: 640px) {
    .bm-analysis-grid { grid-template-columns: 1fr; }
}

/* v562：②球種攻略抽出全寬後，①③④ 改一排三欄；窄螢幕直排一欄 */
.bm-analysis-grid.bm-quad3 { grid-template-columns: repeat(3, 1fr); }
@media (max-width: 900px) {
    .bm-analysis-grid.bm-quad3 { grid-template-columns: 1fr; }
}

/* v562：②球種攻略內部卡片格（每球種一張，桌面兩欄、手機一欄） */
.bm-atk-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 10px;
}
@media (max-width: 640px) {
    .bm-atk-grid { grid-template-columns: 1fr; }
}

/* 打者落點圖區塊：落點圖 : 統計 : 情蒐備註（寬版＝桌面/PDF 維持三欄） */
.bm-loc-grid {
    display: grid;
    grid-template-columns: 55% 1fr 1fr;
    gap: 16px;
    align-items: stretch;
}
/* 中等寬度：情蒐備註收到下方整列，上方落點圖+統計兩欄，避免右側被擠扁變不對稱 */
@media (max-width: 1024px) {
    .bm-loc-grid { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); }
    .bm-loc-grid > :nth-child(3) { grid-column: 1 / -1; }
}
/* 窄螢幕：全部單欄上下排 */
@media (max-width: 640px) {
    .bm-loc-grid { grid-template-columns: 1fr; }
    .bm-loc-grid > :nth-child(3) { grid-column: auto; }
}

/* 無落點資料時：落點圖 : 情蒐備註（兩欄） */
.bm-loc-grid-empty {
    display: grid;
    grid-template-columns: 55% 1fr;
    gap: 16px;
    align-items: stretch;
}
@media (max-width: 768px) {
    .bm-loc-grid-empty { grid-template-columns: 1fr; }
}

/* ====== 觀看者模式（唯讀）======
   權限的真正防線在 Firebase Security Rules（伺服器端強制）；
   這裡只負責介面呈現：讓觀看者看得到資料，但看不到任何會改資料的控制項。
   ★ 集中在單一 class 管理 —— 日後新增按鈕只要補進這份清單，
     不要再回到 JS 裡逐一列舉選擇器（那正是 v566 之前唯讀 UI 失效的原因）。 */
body.viewer-mode .gh-actions,
body.viewer-mode .edit-team-btn,
body.viewer-mode .delete-team-btn,
body.viewer-mode .pitcher-tag-edit,
body.viewer-mode .pitcher-tag-delete,
body.viewer-mode .team-management,
body.viewer-mode #createTeamBtn,
body.viewer-mode #adminPanel {
    display: none !important;
}
