*{box-sizing:border-box}
:root{--bg:#08111f;--card:#111c2d;--card2:#16243a;--line:#2a3a52;--text:#f8fafc;--muted:#94a3b8;--blue:#2563eb;--green:#16a34a;--red:#dc2626;--amber:#d97706;--input:#f8fafc;--inputText:#0f172a}
body{margin:0;background:linear-gradient(180deg,#07101d,#0f172a);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft JhengHei",sans-serif;min-height:100vh}
.container{width:min(820px,calc(100% - 24px));margin:0 auto;padding:24px 0 48px}
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:18px}
h1{margin:0 0 6px;font-size:clamp(26px,5vw,40px)} h2{margin:0}
.topbar p,.section-note{margin:4px 0 0;color:var(--muted)}
.card{background:rgba(17,28,45,.96);border:1px solid var(--line);border-radius:18px;padding:20px;margin-bottom:16px;box-shadow:0 18px 50px rgba(0,0,0,.2)}
.login-card{max-width:460px;margin:60px auto}
label{display:block;font-weight:800;margin:14px 0}
input,select,textarea{display:block;width:100%;margin-top:8px;padding:14px;border:2px solid transparent;border-radius:12px;background:var(--input);color:var(--inputText);font-size:18px;font-family:inherit}
textarea{min-height:88px;resize:vertical}
input:focus,select:focus,textarea:focus{outline:none;border-color:#60a5fa}
button{border:0;border-radius:12px;padding:13px 16px;color:#fff;font-size:16px;font-weight:900;cursor:pointer}
button:disabled{opacity:.45;cursor:not-allowed}
.primary{background:var(--blue);width:100%}.secondary{background:#475569}.warning{background:var(--amber)}.success{background:var(--green)}.large{font-size:21px;padding:16px}.compact{padding:9px 12px;font-size:14px}.hidden{display:none!important}
.status-card{display:grid;grid-template-columns:1.2fr .8fr 1fr;gap:12px}
.status-card>div{background:var(--card2);border-radius:13px;padding:14px}
.eyebrow{display:block;color:var(--muted);font-size:13px;margin-bottom:8px}.status-card strong{font-size:20px}.status{font-size:16px!important}.status.ok{color:#86efac}.status.pending{color:#fcd34d}.status.error{color:#fca5a5}
.section-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:12px}
.badge{background:#334155;color:#e2e8f0;padding:6px 10px;border-radius:999px;font-size:13px;font-weight:800}
.point-grid,.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.details-toggle{width:100%;margin:8px 0 14px;background:#24344c;text-align:left}
.details-panel{border:1px solid var(--line);background:#0c1728;border-radius:14px;padding:14px;margin-bottom:14px}
.helper-row{display:flex;gap:10px;flex-wrap:wrap}.hint{color:var(--muted);font-size:13px;margin:12px 0 0}
.action-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:14px}
.message{min-height:22px;margin:12px 0 0;text-align:center;font-weight:800}.message.success{color:#86efac}.message.error{color:#fca5a5}
.recent-list{display:grid;gap:9px}.game-row{background:var(--card2);padding:12px;border-radius:12px}.game-main{display:grid;grid-template-columns:70px 1fr 1fr 70px;gap:10px;align-items:center}.game-main span{color:var(--muted)}
.winner{display:inline-flex;justify-content:center;padding:5px 9px;border-radius:999px;color:#fff!important;font-weight:900}.winner.banker{background:var(--red)}.winner.player{background:var(--blue)}.winner.tie{background:var(--green)}
.game-extra{margin-top:8px;color:#cbd5e1;font-size:13px;line-height:1.6}.empty{text-align:center;color:var(--muted)}
@media(max-width:620px){.topbar{align-items:flex-start;flex-direction:column}.status-card{grid-template-columns:1fr 1fr}.status-card>div:last-child{grid-column:1/-1}.action-grid,.detail-grid{grid-template-columns:1fr}.game-main{grid-template-columns:58px 1fr 1fr 54px;font-size:14px}}

/* v14 */
.mode-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:14px 0}.mode-button{padding:13px;border-radius:12px;border:1px solid var(--border);background:transparent;font-weight:800}.mode-button.active{background:var(--primary);color:#fff;border-color:transparent}.game-number-label{display:block;margin-bottom:16px}.game-number-label input{max-width:180px}.toggle-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin:14px 0}.check-toggle,.count-toggle{padding:12px;border-radius:12px;border:1px solid var(--border);background:transparent;font-weight:700}.check-toggle.selected,.count-toggle.selected{background:rgba(34,197,94,.16);border-color:#22c55e}.card-count-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:14px 0}.card-count-grid>div{display:grid;gap:8px}.winner-only-panel{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin:18px 0}.winner-button{min-height:92px;border:0;border-radius:16px;font-size:30px;font-weight:900;color:white}.winner-button.banker{background:#d33}.winner-button.player{background:#2563eb}.winner-button.tie{background:#16a34a}@media(max-width:600px){.toggle-grid,.card-count-grid{grid-template-columns:1fr}.winner-only-panel{gap:8px}.winner-button{min-height:78px;font-size:26px}}


/* v14.1 儲存結果提示 */
.save-toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom));z-index:9999;max-width:calc(100% - 32px);padding:13px 18px;border-radius:999px;color:#fff;font-weight:900;box-shadow:0 12px 36px rgba(0,0,0,.35);opacity:0;transform:translate(-50%,18px);pointer-events:none;transition:opacity .18s ease,transform .18s ease;white-space:nowrap}
.save-toast.show{opacity:1;transform:translate(-50%,0)}
.save-toast.success{background:#15803d}
.save-toast.error{background:#b91c1c}


/* v14.2 場館分類 */
.status-card{grid-template-columns:repeat(4,1fr)}
.modal{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:18px}
.modal-backdrop{position:absolute;inset:0;background:rgba(2,6,23,.78);backdrop-filter:blur(4px)}
.modal-card{position:relative;width:min(520px,100%);max-height:calc(100vh - 36px);overflow:auto;background:var(--card);border:1px solid var(--line);border-radius:20px;padding:20px;box-shadow:0 24px 80px rgba(0,0,0,.55)}
.icon-button{width:42px;height:42px;padding:0;border-radius:50%;background:#334155;font-size:28px;line-height:1}
.venue-input-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:end}
.venue-input-row select{margin-top:8px}
.default-venue-row{display:flex;align-items:center;gap:10px;margin:16px 0;font-weight:800}
.default-venue-row input{display:inline-block;width:22px;height:22px;margin:0;accent-color:#16a34a}
.modal-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:10px}
@media(max-width:620px){.status-card{grid-template-columns:1fr 1fr}.status-card>div:last-child{grid-column:auto}.venue-input-row{grid-template-columns:1fr}.venue-input-row .secondary{width:100%}}

/* v14.3 牌靴管理 */
.manager-card{width:min(860px,100%)}
.manager-filters{display:grid;grid-template-columns:1fr 180px;gap:10px;margin-bottom:8px}
.manager-filters input,.manager-filters select{margin-top:0}
.shoe-manager-list{display:grid;gap:10px}
.shoe-manager-row{display:grid;grid-template-columns:minmax(120px,.8fr) minmax(130px,1fr) 80px 100px auto;gap:12px;align-items:center;background:var(--card2);border:1px solid var(--line);padding:13px;border-radius:14px}
.shoe-manager-main strong{display:block;font-size:17px}.shoe-manager-main small,.shoe-manager-meta{color:var(--muted);line-height:1.5}
.shoe-actions{display:flex;gap:7px;justify-content:flex-end;flex-wrap:wrap}.shoe-actions button{padding:8px 10px;font-size:13px}
.danger{background:var(--red)}.archive{background:#7c3aed}.restore{background:#0f766e}
.archived-row{opacity:.72}.active-shoe-marker{display:inline-block;margin-left:7px;padding:2px 7px;border-radius:999px;background:#166534;color:#dcfce7;font-size:11px}
.detail-game-row{background:var(--card2);padding:12px;border-radius:12px;border:1px solid var(--line)}
@media(max-width:760px){.manager-filters{grid-template-columns:1fr}.shoe-manager-row{grid-template-columns:1fr 1fr}.shoe-actions{grid-column:1/-1;justify-content:stretch}.shoe-actions button{flex:1}.shoe-manager-meta{text-align:right}}

/* v15.0 智慧記錄 */
.record-head-row{display:grid;grid-template-columns:minmax(160px,220px) 1fr;gap:14px;align-items:end;margin-bottom:16px}
.record-head-row .game-number-label{margin:0}.record-state{min-height:54px;display:flex;align-items:center;justify-content:center;border-radius:14px;font-weight:900;border:1px solid var(--line)}
.record-state.incomplete{background:#273449;color:#e2e8f0}.record-state.valid{background:rgba(22,163,74,.18);border-color:#22c55e;color:#86efac}
.card-steps{display:grid;gap:12px}.card-step{border:1px solid var(--line);background:#0c1728;border-radius:16px;padding:14px}.card-step.locked{opacity:.5}.card-step.complete{border-color:#166534}.card-step-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.card-step-title{font-size:18px;font-weight:900}.card-value{min-width:58px;padding:8px 12px;text-align:center;border-radius:10px;background:#334155;font-weight:900}.card-value.selected{background:#15803d;color:#fff}
.rank-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:8px;margin-top:12px}.rank-button{min-height:48px;padding:8px 4px;background:#24344c;border:1px solid #3b4d68;font-size:17px}.rank-button.selected{background:#15803d;border-color:#4ade80}.rank-button:active{transform:none}
.complete-summary{margin:14px 0;padding:14px;border:1px solid #166534;background:rgba(22,163,74,.1);border-radius:14px;line-height:1.7;font-weight:800}.winner-options{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0 0 16px}.winner-button.selected{outline:4px solid #f8fafc;outline-offset:2px}.check-toggle{color:var(--text)}
@media(max-width:620px){.record-head-row{grid-template-columns:1fr}.rank-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.winner-options{grid-template-columns:1fr}.card-step{padding:12px}}

/* v16.1.0 多人登入與角色顯示 */
.user-area{display:flex;align-items:center;gap:12px}.user-meta{display:flex;align-items:flex-end;flex-direction:column;gap:4px}.user-meta strong{font-size:14px}.role-badge{display:inline-flex;align-items:center;border-radius:999px;padding:4px 9px;font-size:12px;font-weight:800;background:var(--surface-2,#18263a);border:1px solid rgba(255,255,255,.12)}.role-badge.admin{color:#ffd86b}.role-badge.recorder{color:#8fc7ff}.login-note{margin:12px 0 0;color:var(--muted,#8ea0b8);font-size:13px}.recorder-note{margin-top:10px;padding:10px 12px;border-radius:10px;background:rgba(81,150,255,.1);color:#acd0ff;font-size:13px}@media(max-width:640px){.topbar{align-items:flex-start}.user-area{align-items:flex-end;flex-direction:column}.user-meta{align-items:flex-end}}


/* v16.1.1 人員管理 */
.user-area{flex-wrap:wrap}.user-create-grid{display:grid;grid-template-columns:1fr 1.4fr 1fr auto;gap:10px;align-items:end;padding:14px;background:var(--card2);border:1px solid var(--line);border-radius:14px}.user-create-grid label{margin:0}.user-create-grid button{min-height:52px}.user-list-head{margin-top:20px}.user-list-head h3{margin:0}.user-manager-list{display:grid;gap:10px}.user-manager-row{display:grid;grid-template-columns:minmax(220px,1.5fr) 100px 80px minmax(220px,1fr);gap:12px;align-items:center;background:var(--card2);border:1px solid var(--line);padding:13px;border-radius:14px}.user-manager-row strong,.user-manager-row small{display:block}.user-manager-row small{margin-top:5px;color:var(--muted);word-break:break-all}.account-state{font-weight:900}.account-state.active{color:#86efac}.account-state.disabled{color:#fca5a5}.user-actions{display:flex;justify-content:flex-end;align-items:center;gap:8px;flex-wrap:wrap}.user-actions button{padding:8px 10px;font-size:13px}.self-label{color:var(--muted);font-size:12px}
@media(max-width:900px){.user-create-grid{grid-template-columns:1fr 1fr}.user-create-grid button{width:100%}.user-manager-row{grid-template-columns:1fr auto auto}.user-actions{grid-column:1/-1;justify-content:stretch}.user-actions button{flex:1}}
@media(max-width:620px){.user-create-grid{grid-template-columns:1fr}.user-manager-row{grid-template-columns:1fr auto}.user-actions{grid-column:1/-1}.account-state{text-align:right}}


/* v16.1.2 多人牌靴鎖定 */
.status-card{grid-template-columns:repeat(5,1fr)}
@media(max-width:760px){.status-card{grid-template-columns:1fr 1fr}.status-card>div:last-child{grid-column:1/-1}}


/* v16.2 Dashboard 管理總覽 */
.dashboard-card{width:min(1120px,100%)}.dashboard-heading{align-items:flex-start}.dashboard-head-actions{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.dashboard-updated{font-size:12px;color:var(--muted)}
.dashboard-stats{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:10px;margin:10px 0 18px}.dashboard-stat{min-width:0;padding:16px 14px;border-radius:16px;background:linear-gradient(145deg,var(--card2),#101c30);border:1px solid var(--line)}.dashboard-stat span,.dashboard-stat small{display:block;color:var(--muted)}.dashboard-stat strong{display:block;font-size:30px;line-height:1.15;margin:7px 0 3px}.dashboard-stat small{font-size:12px}
.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.dashboard-panel{background:#0c1728;border:1px solid var(--line);border-radius:16px;padding:14px}.dashboard-panel h3{margin:0}.dashboard-list{display:grid;gap:8px}.mini-badge{padding:5px 9px;border-radius:999px;background:#24344c;color:#cbd5e1;font-size:12px;font-weight:800}.dashboard-row{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;padding:11px;border-radius:12px;background:var(--card2)}.dashboard-row.shoe{grid-template-columns:1fr auto auto}.dashboard-row-main strong,.dashboard-row-main small{display:block}.dashboard-row-main small{margin-top:4px;color:var(--muted);font-size:12px}.presence-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:8px;vertical-align:1px;background:#64748b;box-shadow:0 0 0 3px rgba(100,116,139,.13)}.presence-dot.online{background:#22c55e;box-shadow:0 0 0 3px rgba(34,197,94,.16)}.presence-dot.offline{background:#64748b}.dashboard-state{padding:5px 8px;border-radius:999px;font-size:12px;font-weight:900}.dashboard-state.working{color:#fde68a;background:rgba(245,158,11,.14)}.dashboard-state.ready{color:#86efac;background:rgba(34,197,94,.13)}.dashboard-state.offline{color:#cbd5e1;background:rgba(100,116,139,.16)}.dashboard-shoe-count{text-align:center}.dashboard-shoe-count strong,.dashboard-shoe-count small{display:block}.dashboard-shoe-count strong{font-size:20px}.dashboard-shoe-count small,.dashboard-time{color:var(--muted);font-size:12px}.dashboard-activity-panel{margin-top:14px}.activity-row{display:grid;grid-template-columns:34px 1fr;gap:10px;align-items:center;padding:10px;background:var(--card2);border-radius:12px}.activity-row strong,.activity-row small{display:block}.activity-row small{margin-top:3px;color:var(--muted);font-size:12px}.activity-icon{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-weight:900}.activity-icon.create{background:rgba(37,99,235,.2);color:#93c5fd}.activity-icon.finish{background:rgba(22,163,74,.2);color:#86efac}
@media(max-width:980px){.dashboard-stats{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.dashboard-grid{grid-template-columns:1fr}.dashboard-head-actions{justify-content:flex-start}.dashboard-stats{grid-template-columns:repeat(2,1fr)}.dashboard-row.shoe{grid-template-columns:1fr auto}.dashboard-time{grid-column:1/-1}.dashboard-stat strong{font-size:26px}}

/* v16.2 精簡 Dashboard */
.dashboard-search{display:grid;grid-template-columns:1fr auto;gap:10px;margin:10px 0}.dashboard-search input{width:100%}.dashboard-search-results{display:grid;gap:8px;margin:0 0 14px;padding:10px;border:1px solid var(--line);border-radius:14px;background:#0c1728}.dashboard-search-row{display:grid;grid-template-columns:minmax(140px,.8fr) 1fr;gap:12px;align-items:center;text-align:left;width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card2);color:inherit}.dashboard-search-row:hover,.dashboard-open-shoe:hover{border-color:#4b6b98;transform:translateY(-1px)}.dashboard-search-row span{color:var(--muted);font-size:12px}.dashboard-stats-five{grid-template-columns:repeat(5,minmax(0,1fr))}.dashboard-open-shoe{width:100%;text-align:left;color:inherit;border:1px solid transparent;cursor:pointer;transition:.15s}.dashboard-open-shoe .dashboard-time{text-align:right}@media(max-width:980px){.dashboard-stats-five{grid-template-columns:repeat(3,1fr)}}@media(max-width:700px){.dashboard-search{grid-template-columns:1fr}.dashboard-stats-five{grid-template-columns:repeat(2,1fr)}.dashboard-search-row{grid-template-columns:1fr}.dashboard-open-shoe .dashboard-time{text-align:left}}

/* v16.2.2：合併起手牌輸入與百家樂桌面排列 */
.baccarat-table-layout{display:grid;grid-template-columns:1fr 1px 1fr;gap:18px;align-items:stretch;padding:18px;border:1px solid var(--line);border-radius:18px;background:linear-gradient(180deg,rgba(15,118,110,.16),rgba(15,23,42,.35))}
.table-divider{width:1px;background:var(--line)}
.table-hand{min-width:0;text-align:center}.table-hand-head{display:flex;justify-content:center;align-items:center;gap:10px;margin-bottom:12px;font-size:22px}.table-hand.player .table-hand-head strong{color:#60a5fa}.table-hand.banker .table-hand-head strong{color:#f87171}
.initial-points{display:inline-flex;align-items:center;justify-content:center;min-width:42px;padding:3px 8px;border-radius:999px;background:#15803d;color:white;font-size:15px;font-weight:900}
.initial-cards{display:flex;justify-content:center;gap:8px}.table-card{width:48px;min-height:52px;padding:6px;border-radius:10px;border:1px solid #475569;background:#f8fafc;color:#0f172a;font-size:21px;font-weight:950}.table-card.empty{opacity:.25}.third-card-row{min-height:58px;display:flex;justify-content:center;align-items:flex-start;margin-top:8px}.third-card-placeholder{display:block;width:48px;height:52px}
.combined-card-input{margin-top:14px;padding:14px;border:1px solid var(--line);border-radius:16px;background:#0c1728}.combined-input-title{text-align:center;font-size:22px;font-weight:950;margin-bottom:10px}
.complete-summary{border-width:3px;background:rgba(15,23,42,.78);text-align:center}.complete-summary.result-player{border-color:#3b82f6;box-shadow:0 0 0 1px rgba(59,130,246,.2) inset}.complete-summary.result-banker{border-color:#ef4444;box-shadow:0 0 0 1px rgba(239,68,68,.2) inset}.complete-summary.result-tie{border-color:#22c55e;box-shadow:0 0 0 1px rgba(34,197,94,.2) inset}.result-title{font-size:24px;font-weight:950;margin-bottom:4px}.result-player .result-title{color:#60a5fa}.result-banker .result-title{color:#f87171}.result-tie .result-title{color:#4ade80}.result-tags{font-size:14px;opacity:.82;margin-top:3px}
@media(max-width:620px){.baccarat-table-layout{gap:10px;padding:14px 10px}.table-card{width:43px;min-height:49px}.table-hand-head{font-size:20px}.initial-points{font-size:14px}.combined-card-input{padding:12px 10px}}


/* v16.3 管理者牌靴與人員記錄 */
.dashboard-people-entry{margin-top:14px}.dashboard-people-entry .section-head{align-items:center}.admin-detail-card{width:min(980px,100%);max-height:92vh;overflow:auto}.admin-filter-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;margin:10px 0 14px}.admin-record-list,.personnel-stats-list{display:grid;gap:10px}.admin-record-card,.personnel-card{width:100%;text-align:left;color:inherit;background:var(--card2);border:1px solid var(--line);border-radius:15px;padding:14px;cursor:pointer;transition:.15s}.admin-record-card:hover,.personnel-card:hover{border-color:#4b6b98;transform:translateY(-1px)}.admin-record-title,.personnel-card-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.admin-record-title strong,.personnel-card-head strong{font-size:17px}.admin-record-title span,.personnel-card-head>span{padding:5px 9px;border-radius:999px;background:#24344c;color:#cbd5e1;font-size:12px;font-weight:800;white-space:nowrap}.admin-record-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:12px}.admin-record-grid>div{min-width:0;padding:10px;border-radius:11px;background:#0c1728}.admin-record-grid small,.admin-record-grid b{display:block}.admin-record-grid small{color:var(--muted);font-size:11px;margin-bottom:4px}.admin-record-grid b{font-size:13px;overflow-wrap:anywhere}.personnel-card-head small{display:block;color:var(--muted);font-size:12px;margin-top:4px}.personnel-count-grid,.personnel-summary{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin-top:12px}.personnel-count-grid>div,.personnel-summary>div{text-align:center;padding:11px;border-radius:12px;background:#0c1728}.personnel-count-grid b,.personnel-summary b{display:block;font-size:24px}.personnel-count-grid small,.personnel-summary small{display:block;color:var(--muted);font-size:11px;margin-top:3px}.personnel-last{color:var(--muted);font-size:12px;margin-top:10px}.personnel-summary{margin:10px 0 14px}
@media(max-width:700px){.admin-detail-card{max-height:96vh}.admin-filter-row{grid-template-columns:1fr}.admin-record-grid{grid-template-columns:1fr 1fr}.dashboard-people-entry .section-head{align-items:flex-start}.dashboard-people-entry .section-head>button{width:100%}}
@media(max-width:430px){.admin-record-grid{grid-template-columns:1fr}.personnel-count-grid,.personnel-summary{grid-template-columns:repeat(3,1fr)}.personnel-count-grid b,.personnel-summary b{font-size:20px}}

/* v16.3 detail click fix: keep shoe detail above admin list modals */
#shoeDetailModal{z-index:10030}
.admin-record-card::after{content:"查看各局細項 ›";display:block;margin-top:10px;color:#93c5fd;font-size:12px;font-weight:800;text-align:right}
.detail-game-head{display:flex;align-items:center;justify-content:space-between;gap:10px}
.detail-card-grid{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}
.detail-card-grid>div{padding:8px 10px;border-radius:10px;background:#0c1728}
.detail-card-grid small,.detail-card-grid b{display:block}
.detail-card-grid small{color:var(--muted);font-size:11px;margin-bottom:3px}
@media(max-width:560px){.detail-card-grid{grid-template-columns:1fr}}

/* v16.3.1：管理首頁直接展開人員統計、記錄者唯讀歷史牌靴 */
.dashboard-personnel-inline{margin-top:14px}
.dashboard-personnel-inline .admin-filter-row{margin-bottom:12px}
.dashboard-personnel-inline .personnel-stats-list{grid-template-columns:repeat(2,minmax(0,1fr))}
.recorder-history-grid{grid-template-columns:repeat(4,minmax(0,1fr))}
.recorder-history-card::after{content:"唯讀查看各局細項 ›"}
#myRecentShoesButton{grid-column:1/-1}
@media(max-width:760px){
  .dashboard-personnel-inline .personnel-stats-list{grid-template-columns:1fr}
  .recorder-history-grid{grid-template-columns:1fr 1fr}
}
@media(max-width:430px){.recorder-history-grid{grid-template-columns:1fr}}

/* v16.4 AI assisted capture */
.capture-method-row{display:flex;justify-content:space-between;align-items:center;gap:12px;margin:12px 0 14px;padding:10px 12px;border:1px solid var(--line);border-radius:14px;background:var(--card2)}
.capture-method-row>span{font-weight:900}.capture-method-buttons{display:flex;gap:8px}.method-button{padding:9px 14px;border-radius:999px;border:1px solid var(--line);background:transparent;font-weight:900}.method-button.active{background:var(--primary);color:#fff;border-color:transparent}
.ai-capture-controls{display:grid;gap:8px;margin:10px 0 14px}.camera-input{position:absolute;left:-9999px;width:1px;height:1px;opacity:0}.camera-button{min-height:58px;font-size:18px}.ai-capture-note{margin:0;color:var(--muted);font-size:12px;text-align:center}
.ai-table .table-card{cursor:pointer}.editable-slot.empty{border-style:dashed;opacity:.8}.capture-preview-wrap{margin-top:12px;border:1px solid var(--line);border-radius:16px;overflow:hidden;background:#020617}.capture-preview{display:block;width:100%;max-height:330px;object-fit:contain}.ai-rank-editor{border-color:#38bdf8}.clear-rank{grid-column:span 2;background:rgba(239,68,68,.12)!important;border-color:#ef4444!important;color:#fecaca!important}
.record-state.warning{background:rgba(249,115,22,.16);border-color:#f97316;color:#fdba74}.record-state.pending{background:rgba(59,130,246,.14);border-color:#3b82f6;color:#93c5fd}
.ai-permission{display:flex;align-items:center;gap:8px;font-weight:800;white-space:nowrap}.permission-light{display:inline-block;width:14px;height:14px;border-radius:50%;box-shadow:0 0 0 3px rgba(255,255,255,.05)}.permission-light.on{background:#22c55e;box-shadow:0 0 10px rgba(34,197,94,.8)}.permission-light.off{background:#ef4444;box-shadow:0 0 10px rgba(239,68,68,.65)}
.user-manager-row{grid-template-columns:minmax(180px,1.5fr) 90px 72px 105px minmax(220px,1fr)}
@media(max-width:900px){.user-manager-row{grid-template-columns:1fr auto auto}.ai-permission{grid-column:1/-1}.capture-method-row{align-items:flex-start;flex-direction:column}.capture-method-buttons{width:100%}.method-button{flex:1}.capture-preview{max-height:260px}}

/* v16.4.2：手機優先的記錄方式切換位置 */
.recording-title-block{min-width:0;flex:1}
.recording-title-row{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.recording-title-row h2{margin:0;white-space:nowrap}
.recording-title-row .capture-method-row{display:flex;align-items:center;gap:7px;margin:0;padding:0;border:0;background:transparent}
.recording-title-row .method-button{min-height:38px;padding:7px 13px;white-space:nowrap}
.recording-section-head{align-items:flex-start}
@media(max-width:620px){
  .recording-section-head{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:start}
  .recording-title-row{gap:8px;flex-wrap:nowrap}
  .recording-title-row h2{font-size:22px}
  .recording-title-row .capture-method-row{width:auto;flex-direction:row;align-items:center;gap:6px}
  .recording-title-row .method-button{flex:0 0 auto;min-height:36px;padding:7px 10px;font-size:14px}
  .recording-title-block .section-note{margin-top:6px;line-height:1.45}
  .recording-section-head>.badge{margin-top:1px}
  .ai-capture-controls{margin-top:8px}
  .camera-button{width:100%;min-height:56px}
  .baccarat-table-layout.ai-table{grid-template-columns:minmax(0,1fr) 1px minmax(0,1fr);gap:8px;padding:12px 8px}
  .baccarat-table-layout.ai-table .table-card{width:44px;min-height:50px;padding:5px;font-size:20px}
  .baccarat-table-layout.ai-table .third-card-placeholder{width:44px;height:50px}
  .capture-preview{max-height:42vh}
}
@media(max-width:390px){
  .recording-section-head{grid-template-columns:1fr}
  .recording-section-head>.badge{justify-self:start}
  .recording-title-row{justify-content:space-between}
  .recording-title-row h2{font-size:21px}
  .recording-title-row .method-button{padding:6px 9px;font-size:13px}
  .baccarat-table-layout.ai-table .table-card{width:40px;min-height:47px;font-size:18px}
  .baccarat-table-layout.ai-table .third-card-placeholder{width:40px;height:47px}
}


/* v16.4.3：精簡 AI 拍照流程與人工核對標記 */
.camera-button{min-height:46px;font-size:17px;padding:10px 16px}
.table-card.ai-recognized{
  background:rgba(34,197,94,.18);
  border-color:#22c55e;
  box-shadow:0 0 0 2px rgba(34,197,94,.08),0 0 14px rgba(34,197,94,.16);
}
.table-card.ai-recognized:hover{background:rgba(34,197,94,.24)}
@media(max-width:620px){
  .camera-button{min-height:48px;font-size:16px}
}

/* v16.4.6：網頁內建相機與固定開牌框 */
.camera-capture-modal{position:fixed;inset:0;z-index:10000;background:#000}
.camera-capture-modal.hidden{display:none}
.camera-stage{position:relative;width:100%;height:100%;overflow:hidden;background:#000}
.camera-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;background:#000}
.camera-guide{position:absolute;left:4%;top:16%;width:92%;aspect-ratio:1.65/1;border:3px solid #22c55e;border-radius:14px;box-shadow:0 0 0 9999px rgba(0,0,0,.48),0 0 20px rgba(34,197,94,.55);pointer-events:none}
.camera-guide::before,.camera-guide::after{content:"";position:absolute;inset:10%;border-top:1px dashed rgba(255,255,255,.5);border-bottom:1px dashed rgba(255,255,255,.5)}
.camera-guide-label{position:absolute;left:50%;top:-42px;transform:translateX(-50%);padding:7px 12px;border-radius:999px;background:rgba(2,6,23,.82);color:#fff;font-weight:800;font-size:14px;white-space:nowrap}
.camera-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);padding:12px 16px;border-radius:12px;background:rgba(2,6,23,.86);color:#fff;font-weight:800;text-align:center}
.camera-status.hidden{display:none}
.camera-actions{position:absolute;left:0;right:0;bottom:max(22px,env(safe-area-inset-bottom));display:grid;grid-template-columns:1fr 92px 1fr;align-items:center;gap:18px;padding:14px 22px}
.camera-action{justify-self:start;min-width:78px;background:rgba(15,23,42,.82)!important;color:#fff!important;border-color:rgba(255,255,255,.35)!important}
.camera-action-spacer{width:78px;justify-self:end}
.camera-shutter{width:76px;height:76px;border-radius:50%;border:6px solid #fff;background:#fff;box-shadow:0 0 0 4px rgba(255,255,255,.35);justify-self:center;padding:0}
.camera-shutter::after{content:"";display:block;width:54px;height:54px;margin:auto;border-radius:50%;background:#e5e7eb;border:2px solid #111827}
.camera-shutter:disabled{opacity:.45}
@media(max-width:430px){
  .camera-guide{left:3%;width:94%;top:18%;border-width:2px;border-radius:11px}
  .camera-guide-label{top:-38px;font-size:13px}
  .camera-actions{grid-template-columns:1fr 82px 1fr;padding-inline:16px}
  .camera-shutter{width:70px;height:70px}.camera-shutter::after{width:50px;height:50px}
}


/* v16.5.2：AI 預填後六格人工確認 */
.table-card.ai-unconfirmed{
  background:rgba(249,115,22,.18)!important;
  border-color:#f97316!important;
  box-shadow:0 0 0 2px rgba(249,115,22,.10),0 0 14px rgba(249,115,22,.18)!important;
}
.table-card.ai-confirmed{
  background:rgba(34,197,94,.20)!important;
  border-color:#22c55e!important;
  box-shadow:0 0 0 2px rgba(34,197,94,.10),0 0 14px rgba(34,197,94,.18)!important;
}
.rank-button.current-rank{outline:3px solid #22c55e;outline-offset:2px}


/* v16.5.4：自動通過正常局、異常局人工確認、成功提示 3 秒 */
.camera-guide{left:7%;width:86%;top:18%;aspect-ratio:1.78/1}
.camera-previous-result{position:absolute;z-index:3;left:50%;top:max(18px,env(safe-area-inset-top));transform:translateX(-50%);width:min(92%,760px);padding:10px 14px;border-radius:12px;background:rgba(22,101,52,.92);border:1px solid rgba(134,239,172,.8);color:#fff;font-size:14px;font-weight:900;text-align:center;box-shadow:0 8px 24px rgba(0,0,0,.35)}
.camera-previous-result.hidden{display:none}
@media(max-width:430px){.camera-guide{left:5%;width:90%;top:20%;aspect-ratio:1.72/1}.camera-previous-result{top:max(10px,env(safe-area-inset-top));font-size:13px;padding:9px 11px}}


/* v16.6：六格取景輔助。畫面框與 AI ROI 使用同一組百分比座標。 */
.camera-guide{
  left:5%;
  width:90%;
  top:18%;
  aspect-ratio:1.72/1;
  overflow:visible;
  border-color:#22c55e;
  background:rgba(2,6,23,.05);
}
.camera-guide::before,.camera-guide::after{display:none}
.camera-side-label{
  position:absolute;
  top:3.5%;
  transform:translateX(-50%);
  padding:3px 8px;
  border-radius:999px;
  background:rgba(2,6,23,.72);
  color:#fff;
  font-weight:900;
  font-size:clamp(11px,3vw,15px);
  line-height:1;
  text-shadow:0 1px 2px rgba(0,0,0,.6);
}
.camera-side-player{left:28%}
.camera-side-vs{left:50%;color:#fde047}
.camera-side-banker{left:72%}
.camera-card-guide{
  position:absolute;
  border:2px solid rgba(134,239,172,.92);
  border-radius:8px;
  background:rgba(34,197,94,.06);
  box-shadow:0 0 0 1px rgba(0,0,0,.22),inset 0 0 18px rgba(34,197,94,.08);
}
.camera-card-guide span{
  position:absolute;
  left:50%;top:50%;
  transform:translate(-50%,-50%);
  color:rgba(255,255,255,.78);
  font-weight:900;
  font-size:clamp(10px,2.6vw,14px);
  text-shadow:0 1px 3px #000;
}
/* 與 buildRoiSheet() 裁切比例一致，並略縮小顯示框，讓實際裁切保留容錯邊界。 */
.camera-card-guide.p1{left:10%;top:27%;width:19%;height:32%}
.camera-card-guide.p2{left:29%;top:27%;width:19%;height:32%}
.camera-card-guide.b1{left:52%;top:27%;width:19%;height:32%}
.camera-card-guide.b2{left:71%;top:27%;width:19%;height:32%}
.camera-card-guide.p3{left:17%;top:61%;width:28%;height:24%}
.camera-card-guide.b3{left:55%;top:61%;width:28%;height:24%}
.camera-card-guide.horizontal{border-style:dashed;background:rgba(56,189,248,.06);border-color:rgba(125,211,252,.95)}
.camera-guide-label{top:-40px}
@media(max-width:430px){
  .camera-guide{left:4%;width:92%;top:19%;aspect-ratio:1.72/1}
  .camera-guide-label{top:-36px;font-size:12px}
  .camera-card-guide{border-width:1.5px;border-radius:6px}
  .camera-side-label{font-size:11px;padding:3px 7px}
}


/* v16.7：真正六格取景框。使用高權重選擇器，避免舊版快取/規則覆蓋。 */
#cameraCaptureModal #cameraGuide.camera-guide{
  position:absolute;
  left:4%!important;
  top:19%!important;
  width:92%!important;
  height:auto!important;
  aspect-ratio:1.72/1!important;
  border:2px solid rgba(34,197,94,.92)!important;
  border-radius:14px!important;
  background:rgba(2,6,23,.03)!important;
  box-shadow:0 0 0 9999px rgba(0,0,0,.42),0 0 20px rgba(34,197,94,.35)!important;
  overflow:visible!important;
  pointer-events:none!important;
}
#cameraCaptureModal #cameraGuide .camera-card-guide{
  display:block!important;
  position:absolute!important;
  box-sizing:border-box!important;
  border:2px solid rgba(255,255,255,.92)!important;
  border-radius:9px!important;
  background:rgba(15,23,42,.12)!important;
  box-shadow:0 0 0 1px rgba(0,0,0,.45), inset 0 0 18px rgba(255,255,255,.05)!important;
  color:#fff!important;
}
#cameraCaptureModal #cameraGuide .camera-card-guide.horizontal{
  border-style:dashed!important;
  border-color:rgba(125,211,252,.98)!important;
  background:rgba(14,165,233,.10)!important;
}
#cameraCaptureModal #cameraGuide .camera-card-guide span{
  display:block!important;
  position:absolute!important;
  left:50%!important;
  top:50%!important;
  transform:translate(-50%,-50%)!important;
  padding:2px 5px!important;
  border-radius:5px!important;
  background:rgba(2,6,23,.66)!important;
  color:#fff!important;
  font-size:12px!important;
  font-weight:900!important;
  line-height:1!important;
}
#cameraCaptureModal #cameraGuide .camera-card-guide.p1{left:9%!important;top:24%!important;width:18%!important;height:34%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.p2{left:29%!important;top:24%!important;width:18%!important;height:34%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.b1{left:53%!important;top:24%!important;width:18%!important;height:34%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.b2{left:73%!important;top:24%!important;width:18%!important;height:34%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.p3{left:14%!important;top:63%!important;width:31%!important;height:23%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.b3{left:55%!important;top:63%!important;width:31%!important;height:23%!important}
#cameraCaptureModal #cameraGuide .camera-side-label{
  display:block!important;
  position:absolute!important;
  top:4%!important;
  transform:translateX(-50%)!important;
  padding:4px 9px!important;
  border-radius:999px!important;
  background:rgba(2,6,23,.78)!important;
  color:#fff!important;
  font-size:13px!important;
  font-weight:900!important;
  line-height:1!important;
}
#cameraCaptureModal #cameraGuide .camera-side-player{left:28%!important;color:#60a5fa!important}
#cameraCaptureModal #cameraGuide .camera-side-vs{left:50%!important;color:#fde047!important}
#cameraCaptureModal #cameraGuide .camera-side-banker{left:72%!important;color:#f87171!important}
#cameraCaptureModal #cameraGuide .camera-guide-label{
  position:absolute!important;
  left:50%!important;
  top:-42px!important;
  transform:translateX(-50%)!important;
  z-index:2!important;
}
@media(max-width:430px){
  #cameraCaptureModal #cameraGuide.camera-guide{left:3%!important;width:94%!important;top:20%!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide{border-width:1.5px!important;border-radius:7px!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide span{font-size:10px!important;padding:2px 4px!important}
  #cameraCaptureModal #cameraGuide .camera-side-label{font-size:11px!important;padding:3px 7px!important}
}


/* v16.7.1：縮小可見六格，保留原本 AI 裁切邏輯與外層牌區框。 */
#cameraCaptureModal #cameraGuide .camera-card-guide.p1{left:13%!important;top:28%!important;width:13%!important;height:27%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.p2{left:31%!important;top:28%!important;width:13%!important;height:27%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.b1{left:56%!important;top:28%!important;width:13%!important;height:27%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.b2{left:74%!important;top:28%!important;width:13%!important;height:27%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.p3{left:18%!important;top:61%!important;width:22%!important;height:17%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide.b3{left:60%!important;top:61%!important;width:22%!important;height:17%!important}
#cameraCaptureModal #cameraGuide .camera-card-guide span{font-size:10px!important;padding:2px 4px!important}
@media(max-width:430px){
  #cameraCaptureModal #cameraGuide .camera-card-guide.p1{left:12%!important;top:29%!important;width:13%!important;height:26%!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide.p2{left:31%!important;top:29%!important;width:13%!important;height:26%!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide.b1{left:56%!important;top:29%!important;width:13%!important;height:26%!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide.b2{left:75%!important;top:29%!important;width:13%!important;height:26%!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide.p3{left:17%!important;top:61%!important;width:22%!important;height:16%!important}
  #cameraCaptureModal #cameraGuide .camera-card-guide.b3{left:61%!important;top:61%!important;width:22%!important;height:16%!important}
}


/* v16.7.2：AI 模式將「下一局」移至拍照辨識按鈕正下方，移除說明文字。 */
#nextRoundHome:empty{display:none}
.ai-capture-controls .ai-next-round{
  width:100%;
  min-height:54px;
  margin:2px 0 0;
  font-size:20px;
}
.ai-capture-controls{gap:10px}
@media (max-width:600px){
  .ai-capture-controls .camera-button,
  .ai-capture-controls .ai-next-round{min-height:52px}
}


/* v16.8 管理中心 */
.dashboard-stats-four{grid-template-columns:repeat(4,minmax(0,1fr))}
.dashboard-stat-button{width:100%;text-align:left;cursor:pointer;color:inherit;font:inherit}
.dashboard-stat-button:hover{transform:translateY(-2px);border-color:#38bdf8;box-shadow:0 10px 24px rgba(14,165,233,.18)}
.shoe-detail-summary{margin:10px 0 14px}
.shoe-summary-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.shoe-summary-grid>div,.management-hand-grid>div{padding:12px;border:1px solid var(--line);border-radius:12px;background:rgba(15,23,42,.42)}
.shoe-summary-grid small,.management-hand-grid small{display:block;color:var(--muted);margin-bottom:5px}
.shoe-summary-grid b,.management-hand-grid b{display:block;overflow-wrap:anywhere}
.shoe-games-button{width:100%;margin-bottom:14px}
.management-game-card{padding:14px;border:1px solid var(--line);border-radius:14px;background:rgba(15,23,42,.48);margin-bottom:10px}
.management-game-time{font-size:13px;color:var(--muted);margin:5px 0 10px}
.management-hand-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.management-game-tags{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}
.management-game-tags span{padding:5px 8px;border-radius:999px;background:rgba(56,189,248,.12);border:1px solid rgba(56,189,248,.25);font-size:12px}
.winner-only-note{padding:10px;border-radius:10px;background:rgba(245,158,11,.11);color:#fbbf24}
.management-shoe-card{width:100%;text-align:left}
@media(max-width:720px){.dashboard-stats-four{grid-template-columns:repeat(2,minmax(0,1fr))}.shoe-summary-grid,.management-hand-grid{grid-template-columns:1fr}}
