:root{color-scheme:light;--bg:#f3f6fb;--surface:#fff;--text:#152239;--muted:#637187;--accent:#2864ed;--line:#d6deeb;--soft:#e9f0ff}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.5 system-ui,-apple-system,"Noto Sans JP",sans-serif}main{max-width:920px;margin:auto;padding:25px 22px 40px}header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:19px}.eyebrow{margin:0;color:var(--muted);font-size:11px;letter-spacing:.18em}h1{font-size:32px;line-height:1.15;margin:6px 0 4px;font-weight:850;letter-spacing:-.045em}h1 span{font-weight:450}.title-sub{margin:0;color:var(--accent);font-size:12px;font-weight:750;letter-spacing:.34em}.header-tools{display:flex;gap:8px}button,input,select{font:inherit}button{cursor:pointer;min-height:44px;border:1px solid var(--line);border-radius:9px;background:#fff;color:var(--text);padding:10px 16px;font-weight:650;touch-action:manipulation}button:hover{border-color:#8caeea;background:#f7faff}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid #76a0ff;outline-offset:3px}button:disabled{opacity:.45;cursor:default}.subtle{background:transparent;font-size:14px}.primary{background:var(--accent);color:white;border-color:var(--accent)}.primary:hover{background:#1b51cf;color:white}.session-bar{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px 12px;color:var(--muted);font-size:14px;margin:0 3px 11px}.table{background:linear-gradient(160deg,#fafdff,#e9f0fa);border:1px solid #ccd8eb;border-radius:24px;min-height:500px;padding:20px 24px;display:grid;gap:7px;box-shadow:0 9px 30px #203c6b0b}.seat{text-align:center;padding:7px;border:1px solid transparent;border-radius:11px;transition:border-color .2s;background:transparent}.seat.active-seat{border-color:#9fbcf0;background:#ffffff9c}.seat-heading{display:flex;align-items:center;justify-content:center;gap:9px;min-height:27px}.seat-name{font-size:14px;font-weight:850;letter-spacing:.08em}.muted{color:var(--muted);font-size:14px}.stack{font-weight:750;font-variant-numeric:tabular-nums}.stack small{font-size:13px;color:var(--muted);font-weight:450;margin-left:5px}.position-badge{display:inline-block;background:#172841;color:#fff;border-radius:5px;padding:2px 9px;font-size:12px;font-weight:800;letter-spacing:.025em}.cards{display:flex;align-items:center;justify-content:center;gap:7px;min-height:83px}.card{width:57px;height:79px;flex:none;border-radius:7px;background:#fff;color:#152239;border:1px solid #d1dbea;display:flex;flex-direction:column;justify-content:center;align-items:center;font-size:24px;font-weight:750;line-height:1.05;box-shadow:0 3px 8px #223d6920;position:relative}.card .suit{font-size:27px}.card.red{color:#d73553}.card.black,.card.club{color:#152239}.card.diamond{color:#2864ed}.card.back{background:repeating-linear-gradient(45deg,#203659,#203659 4px,#2e4770 4px,#2e4770 6px);border:3px solid #fff;color:transparent;box-shadow:0 2px 5px #15305922}.card.empty{background:#e1e9f580;border:1px dashed #bccce4;box-shadow:none}.card.used{outline:3px solid var(--accent);outline-offset:1px}.small .card{width:40px;height:55px;font-size:17px}.small .card .suit{font-size:20px}.small{min-height:60px}.put{height:22px;color:#425c88;font-size:13px}.board-zone{text-align:center}.board{margin:4px 0}.pot-label{color:#5b6e8c;font-size:11px;font-weight:700;letter-spacing:.15em}.pot-label strong{font-size:24px;color:#152239;letter-spacing:-.02em;margin-left:9px;font-variant-numeric:tabular-nums}.street{font-size:11px;color:#637187;letter-spacing:.14em}.opponent-action{width:min(430px,100%);min-height:66px;margin:0 auto;padding:9px 13px;text-align:center;background:#172841;border:1px solid #172841;border-radius:10px;box-shadow:0 5px 14px #15305912}.opponent-action strong{display:block;color:#fff;font-size:21px;font-weight:750;letter-spacing:.025em;line-height:1.25}.opponent-action span{display:block;color:#cad9ef;font-size:12px;margin-top:4px}.thinking{display:block;color:#b6cefa;font-size:12px;font-style:normal;margin-top:3px}.action-panel{margin-top:14px;padding:16px;background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:0 3px 10px #15223904}.status{font-size:16px;font-weight:700;min-height:25px;margin-bottom:12px}.buttons{display:grid;grid-template-columns:1fr 1.35fr;gap:9px}.buttons button{font-size:20px;line-height:1.2;letter-spacing:.02em}.buttons button span{display:block;font-size:12px;margin-top:5px;letter-spacing:0;font-weight:500}.buttons .fold{background:#f2f5fa;color:#526078}.raise-controls{margin-top:12px;border-top:1px solid var(--line);padding-top:13px}.raise-row{display:grid;grid-template-columns:auto minmax(95px,1fr) auto;gap:12px;align-items:center}.raise-row label{font-size:14px;font-weight:750}.raise-row label small{display:block;font-size:12px;color:var(--muted);font-weight:400}.raise-row input[type=number]{width:100%;min-width:0;min-height:46px;border:1px solid #a7bada;border-radius:8px;color:var(--text);background:#f9fbff;padding:8px 12px;font-weight:750}.raise-controls input[type=range]{width:100%;margin:12px 0 5px;accent-color:var(--accent)}.presets{display:flex;gap:7px}.presets button{font-size:13px;padding:7px 12px;min-height:36px;flex:1;background:#f4f7fc}.range-info{font-size:12px;color:var(--muted);margin:5px 0}#raise-cost{color:#315b9a}.rule-note{text-align:center;font-size:12px;color:var(--muted);margin:12px 0 0}.result{line-height:1.65}.result strong{color:var(--accent)}.result .next{width:100%;margin-top:10px}.result p{margin:5px 0;font-size:14px}.bottom-grid{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:start;margin-top:14px}.history-panel>button{width:100%;text-align:left;background:#fff;font-size:14px}.history-panel ol{list-style:none;padding:8px 13px;margin:0;border:1px solid var(--line);border-radius:10px;font-size:13px;max-height:270px;overflow:auto;background:#fff}.history-panel li{padding:5px 0;border-bottom:1px solid #e6edf6}.history-panel li:last-child{border:none}.timer-panel{text-align:right;color:var(--muted);font-size:13px;padding-top:9px}.timer-panel button{display:block;margin-top:5px}.disclaimer,.sources{font-size:12px;color:var(--muted);margin-top:17px;line-height:1.75}.sources summary{cursor:pointer}.sources p{margin:8px 0}a{color:#285dbe}.notice{font-size:13px;background:#edf3ff;border:1px solid #c9d9f6;padding:10px 14px;border-radius:8px;margin-top:10px}.warning{color:#a84635}.records-panel{margin-top:16px;border:1px solid var(--line);border-radius:12px;padding:15px;background:#fff}.records-heading{display:flex;justify-content:space-between;align-items:center;gap:10px}.records-heading h2{font-size:16px}.records-heading p{margin:4px 0 0}.record-note{font-size:12px;color:var(--muted);margin:9px 0 0}dialog{border:1px solid var(--line);border-radius:15px;background:#fff;color:var(--text);width:min(480px,calc(100% - 28px));padding:23px;max-height:calc(100dvh - 32px);overflow-y:auto;box-shadow:0 22px 80px #102a5544}dialog::backdrop{background:#0f203c70}.dialog-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}h2{font-size:20px;margin:0}dialog label{display:block;margin:15px 0 7px}dialog select,#starting-stack{width:100%;padding:12px;background:#f6f9fe;color:var(--text);border:1px solid var(--line);border-radius:8px}.check-label{display:flex;gap:10px;align-items:center;font-size:14px}.check-label input{width:18px;height:18px;accent-color:var(--accent)}#reset,#apply-next{width:100%}#apply-next{font-size:14px}#preset-detail{font-size:14px;color:#315b9a}.sound-settings{border:1px solid var(--line);border-radius:9px;margin:18px 0;padding:5px 12px 10px}.sound-settings legend{padding:0 7px;font-size:14px;color:var(--accent)}.sound-settings input[type=range]{width:100%;accent-color:var(--accent);min-height:30px}.sound-settings .check-label{align-items:start}#records-dialog{width:min(620px,calc(100% - 24px))}.saved-hand{border-bottom:1px solid var(--line);padding:12px 0}.saved-hand summary{display:flex;justify-content:space-between;gap:8px;cursor:pointer;font-size:12px}.saved-hand summary strong{font-size:14px;color:var(--accent)}.saved-hand p,.saved-hand li{font-size:12px}.saved-hand ol{max-height:230px;overflow:auto;padding-left:20px}.records-tools{display:flex;gap:8px;margin:15px 0;flex-wrap:wrap}.danger{background:#fff2ef;color:#a84635;border-color:#e3b8af}#clear-confirm{border:1px solid #e3b8af;padding:12px;border-radius:10px;font-size:14px}#clear-confirm button{margin:3px;font-size:13px}[hidden]{display:none!important}@media(min-width:750px){.card{width:65px;height:90px;font-size:27px}.card .suit{font-size:31px}.cards{min-height:94px}.small{min-height:60px}.action-panel{max-width:670px;margin-left:auto;margin-right:auto}.table{padding:22px 28px}}@media(max-width:430px){main{padding:15px 12px 28px}h1{font-size:23px}.title-sub{font-size:11px}.eyebrow{font-size:9px;letter-spacing:.12em}header{margin-bottom:14px}.header-tools{gap:4px}.header-tools button{padding:8px 10px;font-size:12px}.session-bar{font-size:12px}.table{min-height:439px;border-radius:18px;padding:11px 8px;gap:4px}.seat{padding:4px}.position-badge{font-size:11px;padding:2px 6px}.opponent-action{min-height:57px;padding:6px 8px;border-radius:8px}.opponent-action strong{font-size:18px}.opponent-action span,.thinking{font-size:11px}.cards{gap:5px;min-height:70px}.card{height:65px;width:46px;font-size:20px}.card .suit{font-size:23px}.small .card{width:30px;height:42px;font-size:15px}.small .card .suit{font-size:16px}.small{min-height:46px}.stack{font-size:15px}.stack small{font-size:12px}.seat-heading{gap:7px}.action-panel{padding:12px;margin-top:10px}.status{font-size:14px}.buttons button{font-size:18px}.raise-row{gap:8px}.raise-row label{font-size:13px}.raise-row button{padding:9px 12px}.bottom-grid{grid-template-columns:1fr}.timer-panel{text-align:left;display:flex;gap:12px;align-items:center;padding-top:0}.timer-panel button{margin:0}.records-heading p{font-size:12px}.records-heading>button{font-size:12px;padding:9px}.saved-hand summary{flex-wrap:wrap}}@media(max-width:350px){.card{width:42px;height:62px}.cards{gap:4px}.raise-row{grid-template-columns:1fr 1fr}.raise-row label{grid-column:1/-1}.presets button{padding:6px}}@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.draw-board-label{display:flex;flex-direction:column;align-items:center;gap:5px;padding:14px 0;color:var(--muted)}.draw-board-label strong{font-size:20px;color:var(--text);letter-spacing:.08em}.draw-board-label span{font-size:12px}.draw-choice{padding:0!important;min-height:0;background:transparent!important;border:none!important;display:flex;flex-direction:column;gap:5px;align-items:center}.draw-choice small{font-size:11px;color:var(--muted)}.draw-choice.selected .card{outline:3px solid var(--accent);transform:translateY(-6px)}.draw-choice.selected small{color:var(--accent);font-weight:750}.draw-submit{width:100%;margin-top:5px}

.table-settings{border:1px solid var(--line);border-radius:9px;padding:10px 13px;margin:14px 0}.table-settings legend{font-size:14px;color:var(--accent)}.table-settings input{width:100%;padding:10px;border:1px solid var(--line);border-radius:7px;background:#f6f9fe}.stud-cards .card{width:45px;height:66px;font-size:21px}.stud-cards .card .suit{font-size:23px}@media(max-width:430px){.stud-cards .card{width:32px;height:52px;font-size:16px}.stud-cards .card .suit{font-size:18px}.stud-cards{gap:4px}}

.stud-card-wrap{display:flex;flex-direction:column;align-items:center;gap:4px}.stud-card-wrap small{font-size:10px;font-weight:650;letter-spacing:.05em;color:var(--muted)}

/* Keep the active ruleset visible while scrolling the table and records. */
.current-game-banner{position:sticky;top:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:14px;margin:0 0 14px;padding:12px 16px;background:#fff;border:1px solid var(--line);border-left:4px solid var(--accent);border-radius:11px;box-shadow:0 4px 14px #1522390c}.current-game-caption{display:block;font-size:10px;font-weight:750;letter-spacing:.13em;color:var(--muted)}.current-game-banner h2{font-size:clamp(22px,4.5vw,32px);line-height:1.15;margin:4px 0 0;letter-spacing:-.025em;font-weight:850;overflow-wrap:anywhere}.game-limit{flex:none;font-size:10px;font-weight:750;letter-spacing:.04em;color:var(--accent);border-radius:5px;background:var(--soft);padding:5px 8px}.sound-previews{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin:10px 0}.sound-previews button{font-size:13px;padding:9px 5px;background:#f4f7fc}.sound-status{font-size:13px;color:#315b9a;line-height:1.7}.sound-settings{scroll-margin-top:12px}@media(max-width:430px){.current-game-banner{gap:7px;padding:10px 11px;margin-bottom:10px;border-radius:9px}.current-game-caption{font-size:9px}.current-game-banner h2{font-size:23px}.game-limit{max-width:73px;text-align:center;font-size:9px;padding:5px;line-height:1.3}}

.mode-switch{display:flex;gap:8px;margin:-5px 0 12px;font-size:13px;align-items:center}.mode-switch a,.mode-switch span{display:inline-flex;align-items:center;min-height:40px;padding:7px 14px;border:1px solid var(--line);border-radius:8px;text-decoration:none}.mode-switch span{background:#172841;color:white;border-color:#172841}.invite-display{font-size:clamp(20px,5vw,30px);font-weight:800;letter-spacing:.06em;user-select:all;overflow-wrap:anywhere}#invite-code{display:block;width:100%;max-width:340px;font:inherit;padding:12px;border:1px solid var(--line);border-radius:9px;margin:10px 0;text-transform:uppercase}.records-panel hr{margin:20px 0;border:0;border-top:1px solid var(--line)}#copy-invitation{display:flex;gap:8px;flex-wrap:wrap}#online-raise-to{width:100%;padding:10px;border:1px solid var(--line);border-radius:8px}

#join-nickname{display:block;width:100%;max-width:340px;font:inherit;padding:12px;border:1px solid var(--line);border-radius:9px;margin:10px 0}.join-request{padding:12px;border:1px solid var(--line);border-radius:10px;margin:10px 0}.join-request button{margin:3px}.join-request p{margin:4px 0 8px}

/* The mobile table and primary actions share the dynamic visible viewport. */
.mobile-only{display:none}
@media(max-width:600px){
 html:has(#practice-main),body:has(#practice-main),html:has(.online-active),body.online-active{height:100%;overflow:hidden;overscroll-behavior:none}
 #practice-main,.online-active #online-main{width:100%;max-width:none;height:100dvh;min-height:0;padding:max(4px,env(safe-area-inset-top)) 8px max(4px,env(safe-area-inset-bottom));display:grid;grid-template-rows:44px 34px 18px minmax(0,1fr) auto;gap:3px;overflow:hidden}
 .mobile-only{display:inline-flex;align-items:center;justify-content:center}
 #practice-main>header,.online-active #online-main>header{margin:0;gap:6px;min-width:0}
 #practice-main header .eyebrow,#practice-main header .title-sub,.online-active header .eyebrow,.online-active header .title-sub{display:none}
 #practice-main h1,.online-active h1{font-size:18px;line-height:1.1;margin:0;letter-spacing:-.045em;white-space:nowrap}
 #practice-main .header-tools,.online-active .header-tools{gap:3px;flex-shrink:0}
 #practice-main .header-tools button,.online-active .header-tools button{min-height:44px;min-width:44px;padding:6px 8px;font-size:13px}
 #practice-main>nav.mode-switch,.online-active #online-main>nav.mode-switch{display:none}
 #practice-main>.current-game-banner,.online-active #online-main>.current-game-banner{position:static;min-height:0;margin:0;padding:3px 8px;border-radius:7px;gap:5px;box-shadow:none;overflow:hidden}
 .current-game-caption{display:none}
 #practice-main .current-game-banner h2,.online-active .current-game-banner h2{font-size:18px;line-height:1.12;margin:0;letter-spacing:-.02em}
 #practice-main .game-limit,.online-active .game-limit{font-size:10px;padding:2px 4px;max-width:70px}
 #practice-main>.session-bar{margin:0;gap:3px;font-size:12px;line-height:18px;white-space:nowrap;overflow:hidden}
 #practice-main>.session-bar #round-label{display:none}
 #practice-main>.table,.online-active .table{height:100%;min-height:0;padding:4px 5px;gap:2px;border-radius:12px;display:grid;grid-template-rows:auto auto auto auto;align-content:space-evenly;box-shadow:none;overflow:visible}
 #practice-main .seat,.online-active .seat{min-height:0;padding:2px;border-radius:8px}
 #practice-main .opponent,.online-active .opponent{display:grid;grid-template-columns:1fr auto;align-items:center;column-gap:5px}
 #practice-main .opponent .seat-heading,.online-active .opponent .seat-heading{justify-content:flex-start;min-height:20px;gap:6px}
 #practice-main .opponent>.stack,.online-active .opponent>.stack{text-align:right}
 #practice-main .opponent>.cards,.online-active .opponent>.cards{grid-column:1/-1}
 #practice-main .seat-heading,.online-active .seat-heading{min-height:22px;gap:6px}
 #practice-main .seat-name,.online-active .seat-name{font-size:12px}
 #practice-main .opponent .muted,.online-active .opponent .muted{display:none}
 #practice-main .stack,.online-active .stack{font-size:14px;line-height:20px}
 #practice-main .stack small,.online-active .stack small{font-size:12px;margin-left:4px}
 #practice-main .position-badge,.online-active .position-badge{font-size:12px;padding:1px 6px}
 #practice-main .put,.online-active .put{display:none}
 #practice-main .cards,.online-active .cards{min-height:54px;gap:4px;flex-wrap:nowrap}
 #practice-main .card,.online-active .card{width:38px;height:52px;font-size:21px;border-radius:5px;box-shadow:0 1px 4px #223d691c}
 #practice-main .card .suit,.online-active .card .suit{font-size:23px}
 #practice-main .small,.online-active .small{min-height:38px}
 #practice-main .small .card,.online-active .small .card{width:26px;height:36px;font-size:16px}
 #practice-main .small .card .suit,.online-active .small .card .suit{font-size:17px}
 #practice-main .stud-cards,.online-active .stud-cards{gap:4px;min-height:59px}
 #practice-main .stud-cards .card{width:32px;height:43px;font-size:18px}
 #practice-main .stud-cards .card .suit{font-size:19px}
 #practice-main .stud-card-wrap{gap:1px}
 #practice-main .stud-card-wrap small{font-size:11px;line-height:13px}
 #practice-main .opponent-action,.online-active .opponent-action{width:100%;min-height:42px;padding:3px 7px;border-radius:8px;line-height:1.15}
 #practice-main .opponent-action strong,.online-active .opponent-action strong{font-size:16px;line-height:20px}
 #practice-main .opponent-action span,.online-active .opponent-action span,#practice-main .thinking{font-size:12px;line-height:14px;margin-top:1px}
 #practice-main .opponent-action:has(.thinking) span{display:none}
 #practice-main .board-zone,.online-active .board-zone{display:grid;grid-template-columns:1fr auto;align-items:center;gap:0 5px;min-height:0}
 #practice-main .pot-label,.online-active .pot-label{text-align:left;font-size:11px;line-height:22px}
 #practice-main .pot-label strong,.online-active .pot-label strong{font-size:20px;margin-left:5px}
 #practice-main .street,.online-active .street{grid-column:2;grid-row:1;font-size:11px;letter-spacing:.06em;line-height:22px;text-align:right}
 #practice-main .board,.online-active .board{grid-column:1/-1;grid-row:2;margin:0}
 #practice-main .draw-board-label{padding:3px 0;gap:0}
 #practice-main .draw-board-label strong{font-size:17px;line-height:23px}
 #practice-main .draw-board-label span{font-size:12px;line-height:17px}
 #practice-main>.action-panel,.online-active .action-panel{margin:0;max-width:none;width:100%;padding:5px 7px;border-radius:9px;box-shadow:none;min-height:0}
 #practice-main .status,.online-active .status{font-size:14px;line-height:18px;min-height:18px;margin-bottom:4px}
 #practice-main .buttons,.online-active .buttons{gap:5px}
 #practice-main .buttons button,.online-active .buttons button{min-height:44px;padding:5px 8px;font-size:16px;line-height:18px;border-radius:7px}
 #practice-main .buttons button span{font-size:12px;line-height:13px;margin-top:1px}
 #practice-main .raise-controls,.online-active .raise-controls{margin-top:4px;padding-top:4px;display:grid;grid-template-columns:minmax(80px,1fr) auto;gap:0 6px}
 #practice-main .raise-row,.online-active .raise-row{grid-column:1/-1;grid-template-columns:80px minmax(80px,1fr) auto;gap:5px;min-height:44px}
 #practice-main .raise-row label,.online-active .raise-row label{font-size:13px;line-height:16px}
 #practice-main .raise-row label small,.online-active .raise-row label small{font-size:12px;line-height:14px}
 #practice-main .raise-row input[type=number],.online-active .raise-row input[type=number]{min-height:44px;height:44px;font-size:16px;padding:6px 8px}
 #practice-main .raise-row button,.online-active .raise-row button{min-height:44px;min-width:58px;padding:5px 8px;font-size:14px}
 #practice-main .raise-controls>input[type=range]{grid-column:1;grid-row:2;width:100%;margin:0;min-height:44px;height:44px}
 #practice-main .presets,.online-active .presets{gap:3px;align-items:center;grid-column:2;grid-row:2;min-width:0;display:none}
 #practice-main .presets:has(button:not([hidden])),.online-active .presets:has(button:not([hidden])){display:flex}
 #practice-main .presets button,.online-active .presets button{min-height:44px;min-width:44px;flex:1;padding:4px 5px;font-size:12px;line-height:15px}
 #practice-main .range-info,.online-active .range-info{grid-column:1/-1;font-size:12px;line-height:14px;margin:0}
 #practice-main .range-info:not(#raise-cost){display:none}
 #practice-main .rule-note,.online-active .rule-note{display:none}
 #practice-main #raise-big{min-height:44px;width:100%;margin-top:3px;font-size:14px;padding:6px}
 #practice-main .draw-choice{min-width:44px;min-height:64px!important}
 #practice-main .draw-choice small{font-size:12px;line-height:14px}
 #practice-main .draw-submit{min-height:44px;font-size:16px;padding:8px;margin:0}
 #practice-main .result p,.online-active .result p{font-size:13px;line-height:18px;margin:3px 0}
 #practice-main .result .muted,.online-active .result .muted{display:none}
 #practice-main .result .next,.online-active .result .next{min-height:44px;padding:8px;margin-top:4px}
 #mobile-details,#online-details{width:calc(100% - 16px);max-height:calc(100dvh - 16px);padding:16px;border-radius:14px}
 #mobile-details .mode-switch{display:flex;margin:0 0 12px}
 #mobile-details .bottom-grid{display:block;margin-top:10px}
 #mobile-details .timer-panel{margin-top:12px}
 #mobile-details .records-panel{margin-top:12px}
 .online-active #online-main{grid-template-rows:44px 34px minmax(0,1fr)}
 .online-active #online-main>.mode-switch,.online-active #online-main>#online-intro,.online-active #online-main>#online-login,.online-active #online-main>#online-sound,.online-active #online-main>#connection-status{display:none}
 .online-active #online-main>header a{font-size:12px;min-height:44px;display:flex;align-items:center}
 .online-active #online-play{min-height:0;height:100%;display:grid;grid-template-rows:18px minmax(0,1fr) auto;gap:3px}
 .online-active #online-play>.session-bar{margin:0;font-size:12px;line-height:18px}
 .online-active #online-error:not([hidden]),.online-active #retry-online:not([hidden]){position:fixed;z-index:25;left:8px;right:8px;bottom:max(6px,env(safe-area-inset-bottom));margin:0}
 .online-active #retry-online:not([hidden]){left:auto;bottom:max(47px,calc(env(safe-area-inset-bottom) + 44px));min-height:44px}
 .online-active .presets{grid-column:1/-1;grid-row:auto;justify-content:flex-end}
 .online-active .presets button{flex:0 1 auto;min-width:64px}
 .online-active #online-paid{margin:2px 0;line-height:14px}
}
@media(max-width:380px){#practice-main h1,.online-active h1{font-size:16px}#practice-main .header-tools button{padding-left:5px;padding-right:5px}#practice-main .current-game-banner h2{font-size:17px}}
@media(max-width:600px) and (max-height:620px){
 #practice-main,.online-active #online-main{gap:2px;padding-top:max(2px,env(safe-area-inset-top));padding-bottom:max(2px,env(safe-area-inset-bottom))}
 #practice-main>.table,.online-active .table{padding-top:2px;padding-bottom:2px;gap:1px}
 #practice-main .card,.online-active .card{height:46px;width:35px;font-size:20px}
 #practice-main .card .suit,.online-active .card .suit{font-size:21px}
 #practice-main .cards,.online-active .cards{min-height:48px}
 #practice-main .small .card,.online-active .small .card{height:32px;width:25px;font-size:15px}
 #practice-main .small,.online-active .small{min-height:34px}
 #practice-main .stud-cards .card{height:40px;width:31px;font-size:17px}
 #practice-main .stud-cards{min-height:54px}
 #practice-main .opponent-action,.online-active .opponent-action{min-height:40px;padding-top:2px;padding-bottom:2px}
 #practice-main .raise-controls,.online-active .raise-controls{padding-top:2px;margin-top:2px}
}

@media(max-width:600px){.online-page:not(.online-active) #online-info-open{display:none}}

@media(max-width:600px){.online-active #online-error,.online-active #retry-online{display:none!important}.online-active #retry-inline{width:100%;min-height:44px}}

@media(max-width:600px){.mobile-optional{display:none}.online-active .raise-controls>input[type=range]{grid-column:1;grid-row:2;min-height:44px;height:44px;width:100%;margin:0}.online-active .presets{grid-column:2;grid-row:2}.online-active #online-paid{grid-row:3}#practice-main .presets,.online-active .presets{display:flex}#practice-main .presets:not(:has(button:not([hidden]))),.online-active .presets:not(:has(button:not([hidden]))){display:none}}

/* Keep every game's primary controls above the Sites owner controls as well
   as the device safe area. This space is inside the dynamic viewport. */
@media(max-width:600px){
 #practice-main,.online-active #online-main{padding-bottom:max(64px,env(safe-area-inset-bottom))}
 .online-waiting #online-main{padding:6px 10px max(72px,env(safe-area-inset-bottom))}
 .online-waiting #online-main>header{margin:0 0 5px;min-height:44px;gap:5px}
 .online-waiting header .eyebrow,.online-waiting header .title-sub,.online-waiting #online-main>.mode-switch,.online-waiting #online-intro,.online-waiting #online-sound{display:none}
 .online-waiting h1{font-size:20px;margin:0;white-space:nowrap}
 .online-waiting header a{font-size:12px;min-height:44px;display:flex;align-items:center}
 .online-waiting .current-game-banner{position:static;margin:0 0 5px;padding:4px 8px;min-height:34px;box-shadow:none}
 .online-waiting .current-game-banner h2{font-size:18px;margin:0}
 .online-waiting #connection-status,.online-waiting #online-error{font-size:14px;line-height:20px;padding:6px 8px;margin:5px 0}
 .online-waiting #room-info{margin:5px 0 0;padding:10px 12px}
 .online-waiting #room-title{font-size:18px;line-height:24px;margin:0}
 .online-waiting .invite-display{font-size:36px;line-height:44px;letter-spacing:.14em;margin:3px 0 7px}
 .online-waiting #copy-invitation{display:grid;grid-template-columns:1fr 1fr;gap:5px}
 .online-waiting #copy-invitation button{min-height:44px;padding:5px 7px;font-size:13px;line-height:17px}
 .online-waiting #invite-expiry,.online-waiting #invite-help,.online-waiting #copy-status,.online-waiting #join-requests>p{font-size:13px;line-height:19px;margin:6px 0}
 .online-waiting #invitation-code:empty,.online-waiting #copy-status:empty,.online-waiting #invite-expiry:empty{display:none}
 .online-waiting .join-request{padding:8px;margin:6px 0}
 .online-waiting .join-request p{font-size:13px;margin:2px 0 5px}
 .online-waiting .join-request button{min-height:44px;font-size:14px;padding:6px 8px;margin:2px}
 .online-waiting #leave-room{min-height:44px;margin-top:4px}
 .online-waiting #online-disclaimer{margin-top:10px}
}
/* Accepted action feedback: identity and amounts remain readable on both seats. */
.hero-action{border-left-color:#526f9c;background:#f1f5fa}
.action-history{margin:8px 0;font-size:12px}.action-history ol{max-height:180px;overflow:auto;padding-left:22px}.action-history small{display:block;color:#58677f}
.structure-preview{max-height:230px;overflow:auto;margin:12px 0;border:1px solid #d9e2ef;border-radius:10px}.structure-preview table{width:100%;border-collapse:collapse;font-size:12px;white-space:nowrap}.structure-preview th,.structure-preview td{padding:8px;text-align:right;border-bottom:1px solid #e7edf5}.structure-preview th:first-child,.structure-preview td:first-child{text-align:left}.structure-preview thead{position:sticky;top:0;background:#f1f5fa}.settings-summary{line-height:1.6}.duration-warning{color:#8e4b09}.stack-controls{display:grid;grid-template-columns:48px 1fr 48px;gap:8px;align-items:center}.stack-controls button{padding:10px 0}.stack-controls input{min-width:0;width:100%;box-sizing:border-box}#starting-stack::-webkit-inner-spin-button,#starting-stack::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}#starting-stack{appearance:textfield;-moz-appearance:textfield}
@media(max-width:600px){.hero-action{font-size:11px;padding:6px 10px;min-height:0}.hero-action strong{font-size:13px}.hero-action span{font-size:10px}.structure-preview th,.structure-preview td{padding:7px 5px}}
.seat-action{min-height:20px;font-size:12px;line-height:18px;color:#24426d;font-variant-numeric:tabular-nums}.seat-action strong{margin-right:8px}.seat-action span{font-size:11px;color:#536984}
.buttons{grid-template-columns:repeat(3,minmax(0,1fr))}.buttons button,.buttons .fold,.buttons .primary{min-height:48px;background:#f3f6fb;color:#152239;border:1px solid #adbed7;font-size:17px;font-weight:700}.buttons button:hover{background:#e5edfa}.raise-row{grid-template-columns:100px minmax(0,1fr)}
@media(max-width:600px){#practice-main .raise-row,.online-active .raise-row{grid-template-columns:80px minmax(0,1fr)}#practice-main .seat-action,.online-active .seat-action{min-height:18px;line-height:16px;font-size:11px}#practice-main .seat-action span,.online-active .seat-action span{font-size:10px}.online-active #online-main>#online-sound{display:block;position:fixed;top:4px;right:110px;z-index:8;min-height:44px;padding:4px 8px;font-size:11px}.online-active .action-history{margin:0;font-size:11px}.online-active .action-history[open]{position:fixed;inset:70px 8px calc(var(--owner-overlay-height,64px) + 12px);z-index:20;padding:12px;background:#fff;border:1px solid #c3d1e5;border-radius:12px}.online-active .action-history[open] ol{max-height:75%;overflow:auto}}
/* Explicit denomination steppers avoid native number-input residual-grid mismatch. */
.raise-row{grid-template-columns:100px 44px minmax(0,1fr) 44px}.raise-row input[inputmode=numeric]{width:100%;min-width:0;min-height:44px;border:1px solid #a7bada;border-radius:8px;color:var(--text);background:#f9fbff;padding:8px;font-weight:750;text-align:center}.raise-row>button{width:44px;min-width:44px;padding:0;font-size:20px}.raise-row:has(#raise-to[readonly]){grid-template-columns:100px 1fr}
@media(max-width:600px){#practice-main .raise-row,.online-active .raise-row{grid-template-columns:62px 44px minmax(0,1fr) 44px}#practice-main .raise-row:has(#raise-to[readonly]){grid-template-columns:80px 1fr}#practice-main .raise-row>button,.online-active .raise-row>button{min-width:44px;padding:0;font-size:20px}}
/* Requested restrained chrome; palette retained. Table/character artwork is separate. */
.current-game-banner{background:transparent!important;border:0!important;border-radius:0!important;box-shadow:none!important;border-left:0!important}.current-game-banner h2,.title-sub{color:var(--text)!important}.current-game-caption{color:var(--muted)}.action-panel{border:0;border-radius:0;background:transparent;box-shadow:none}.opponent-action{background:transparent;border:0;border-radius:0;box-shadow:none}.opponent-action strong{color:var(--text)}.opponent-action span,.thinking{color:var(--muted)}.seat{position:relative}.stack-bar{position:absolute;left:6px;top:50%;transform:translateY(-50%);height:70px;width:17px;background:#dbe3ef;border:1px solid #a2b4cb;border-radius:3px;overflow:hidden}.stack-bar i{position:absolute;left:0;right:0;bottom:0;background:linear-gradient(90deg,#324f79,#6e8fbb);transition:height .2s}.hero .stack-bar{left:auto;right:6px}.board-zone{position:relative}.pot-chips{height:28px;width:68px;position:relative;margin:auto}.pot-chip{display:block;position:absolute;left:calc(var(--chip-column)*21px);bottom:calc(var(--chip-row)*3px);width:23px;height:9px;border-radius:50%;background:repeating-conic-gradient(#254f91 0deg 45deg,#cbd9ed 45deg 65deg,#254f91 65deg 90deg);border:1px solid #183964;box-shadow:0 2px 0 #7188a8}
@media(max-width:600px){#practice-main>.action-panel,.online-active .action-panel{border:0;border-radius:0;background:transparent}#practice-main .opponent-action strong,.online-active .opponent-action strong{color:var(--text)}#practice-main .stack-bar,.online-active .stack-bar{height:52px;width:13px;left:0}#practice-main .hero .stack-bar,.online-active .hero .stack-bar{left:auto;right:0}#practice-main .pot-chips,.online-active .pot-chips{position:absolute;right:0;top:0;height:22px;width:65px;transform:scale(.7);transform-origin:right top}#practice-main .street,.online-active .street{padding-right:48px}}
.moving-chip{position:absolute;left:24px;top:5px;width:19px;height:10px;border:2px dashed #d6e2f5;border-radius:50%;background:#315789;pointer-events:none;z-index:6}.folded-seat .cards{opacity:.35;filter:grayscale(.7)}.seat.active-seat{border-color:#658cbf;background:#ffffff75;box-shadow:inset 0 0 0 1px #aec4df}.seat-action span{display:inline}
/* P128 original rail/felt geometry and styling, reused; only placement adapts to this live table. */
.table{position:relative;background:transparent;border:0;border-radius:0;box-shadow:none}.poker-rail{position:absolute;inset:80px 32px 65px;border:1px solid #777d9c;border-radius:50% / 40%;padding:11px;background:#b9bbd0;box-shadow:0 6px 13px rgb(39 48 92 / 10%);pointer-events:none}.poker-felt{width:100%;height:100%;border:1px solid #a6abc4;border-radius:inherit;background:radial-gradient(ellipse at center,#eeedf7 35%,#e1e2ef 100%);box-shadow:inset 0 1px 4px rgb(39 48 92 / 8%)}.table>.seat,.table>.board-zone,.table>.opponent-action{z-index:1}.seat .stack-bar{z-index:3}.hero .cards{position:relative;z-index:3}.pot-effects{position:absolute;left:50%;top:0;width:0;height:0;z-index:8;pointer-events:none}
@media(max-width:600px){#practice-main>.table,.online-active .table{border:0;border-radius:0}#practice-main>.session-bar{font-size:10px;overflow:visible;white-space:normal;gap:0 5px}#practice-main>.session-bar #round-label{display:inline}#practice-main>.session-bar #hand-label{display:none}#practice-main .poker-rail,.online-active .poker-rail{inset:45px 6px 32px;padding:8px}#practice-main .opponent-action,.online-active .opponent-action{min-height:30px;padding:0;font-size:11px}#practice-main .opponent-action strong,.online-active .opponent-action strong{font-size:14px;line-height:17px}#practice-main .opponent-action span,.online-active .opponent-action span{font-size:10px;line-height:12px}#practice-main .seat-action,.online-active .seat-action{font-size:10px;line-height:14px;min-height:14px}#practice-main .seat-action span,.online-active .seat-action span{display:none}}
/* Four-suit cards; green belongs to clubs only, never the felt. */
.card.black{color:#152239}.card.red{color:#c82343}.card.diamond{color:#087fa3;text-shadow:0 0 .25px #075470}.card.club{color:#17794b}#rank-summary{font-size:11px;color:#425774}
/* User-approved UI palette. Card faces/suits retain their independent four-color system. */
:root{color-scheme:dark;--bg:#161513;--surface:#26231F;--text:#F3EFE8;--muted:#A3988C;--accent:#B9925A;--line:#3A352F;--soft:#3A352F}
body{background:#161513;color:#F3EFE8}dialog{background:#26231F!important;color:#F3EFE8!important;border-color:#A3988C!important;box-shadow:0 22px 80px #161513cc}dialog::backdrop{background:#161513bb}
button,.subtle,.primary,.danger,.buttons button,.buttons .fold,.buttons .primary,.presets button,#practice-main .buttons button,.online-active .buttons button{background:#26231F!important;color:#F3EFE8!important;border-color:#A3988C!important;box-shadow:none!important}button:hover,.primary:hover,.presets button:hover{background:#3A352F!important;border-color:#B9925A!important;color:#F3EFE8!important}button:focus-visible,input:focus-visible,select:focus-visible,summary:focus-visible{outline-color:#B9925A}
input:not([type=checkbox]):not([type=range]),select,dialog select,#starting-stack,.raise-row input[inputmode=numeric]{background:#26231F!important;color:#F3EFE8!important;border-color:#A3988C!important}input[type=range],input[type=checkbox]{accent-color:#B9925A!important}
.poker-rail{background:#3A352F!important;border-color:#B9925A!important;box-shadow:0 6px 13px #16151366!important}.poker-felt{background:radial-gradient(ellipse at center,#3A352F 35%,#26231F 100%)!important;border-color:#A3988C!important;box-shadow:inset 0 1px 4px #16151388!important}.table{background:transparent!important}
.seat.active-seat{border-color:#B9925A!important;background:#B9925A14!important;box-shadow:inset 0 0 0 1px #B9925A66!important}.position-badge,.game-limit{background:#3A352F!important;color:#F3EFE8!important;border-color:#A3988C!important}.stack,.pot-label strong,.opponent-action strong,.status,.seat-action,.current-game-banner h2{color:#F3EFE8!important}.stack small,.put,.street,.pot-label,.muted,.opponent-action span,.seat-action span,.range-info,#raise-cost,#online-paid,#rank-summary,#preset-detail,.thinking,.sound-status,.current-game-caption,.rule-note{color:#D4CBBF!important}
.stack-bar{background:#3A352F!important;border-color:#A3988C!important}.stack-bar i{background:linear-gradient(90deg,#6E4B32,#B9925A)!important}.pot-chip,.moving-chip{background:repeating-conic-gradient(#B9925A 0deg 45deg,#D4CBBF 45deg 65deg,#B9925A 65deg 90deg)!important;border-color:#6E4B32!important;box-shadow:0 2px 0 #6E4B32!important}
.notice,.records-panel,.history-panel>button,.history-panel ol,.saved-hand,.sound-settings,.table-settings,.structure-preview,.action-history[open],#clear-confirm{background:#26231F!important;border-color:#3A352F!important;color:#F3EFE8!important}.history-panel li,.structure-preview td,.structure-preview th{border-color:#3A352F!important}.structure-preview thead{background:#3A352F!important}.warning,.duration-warning,.danger{color:#D4CBBF!important}.result strong,a,.sound-settings legend,.saved-hand summary strong{color:#D4CBBF!important}.card.used{outline-color:#B9925A}.draw-choice.selected{border-color:#B9925A!important;background:#3A352F!important}
.mode-switch span,.mode-switch a{background:#26231F!important;color:#F3EFE8!important;border-color:#A3988C!important}.mode-switch span{border-color:#B9925A!important}

/* Time-bank candidate: compact additions only; existing table and palette retained. */
.time-bank{font-size:11px;font-weight:700;font-variant-numeric:tabular-nums;color:var(--text);white-space:nowrap;letter-spacing:0;line-height:1.2}
.time-bank-settings{border:1px solid var(--line);border-radius:9px;margin:18px 0;padding:10px 12px}.time-bank-settings legend{font-size:14px}.time-bank-settings label{display:block;font-size:13px;margin:10px 0 4px}.time-bank-settings input,.time-bank-settings select{width:100%;min-height:44px;padding:8px;color:var(--text);background:var(--surface);border:1px solid var(--line);border-radius:7px}
@media(max-width:600px){#practice-main .seat-heading,.online-active .seat-heading{flex-wrap:wrap;column-gap:5px;row-gap:0}#practice-main .time-bank,.online-active .time-bank{font-size:10px}.hero .time-bank{flex-basis:100%}}

#resume-time-settings{width:100%;margin-top:10px}

/* Reference-grounded settings feedback; existing palette, native controls and table are unchanged. */
.time-selection-status{display:inline-block;margin:8px 0 0;padding:4px 8px;border:1px solid var(--muted);border-radius:5px;color:var(--text);font-size:13px;font-weight:700;line-height:1.4}
.time-pause-status{padding:10px 12px;border:1px solid var(--muted);border-radius:7px;font-size:13px;white-space:normal;line-height:1.5}
.time-resume-summary{margin:12px 0;padding:10px 12px;border-left:3px solid var(--muted);background:var(--surface)}
.time-resume-summary p{margin:0;line-height:1.6}.time-resume-summary #time-change-preview{font-weight:700;font-size:14px}.time-resume-summary #time-resume-state{margin-top:6px;white-space:pre-line;font-size:12px}

/* Optional field entry; never a wagering action. Keep 44px touch targets and readable input. */
.amount-input-tools{display:flex;flex-wrap:wrap;gap:8px;grid-column:1/-1;margin-top:6px}
.amount-input-tools button{flex:1;min-width:96px;min-height:44px;padding:8px 12px;font-size:14px}
.amount-entry-assist{grid-column:1/-1;min-width:0}
.amount-input-feedback,.amount-input-policy,.amount-unit-note{grid-column:1/-1;margin:5px 0 0;font-size:12px;line-height:1.5;color:var(--muted);overflow-wrap:anywhere}
.amount-input-feedback:empty{display:none}
.amount-input-tools button[aria-pressed=true]{outline:2px solid var(--accent);outline-offset:1px}

@media(max-width:600px){.amount-entry-assist{max-height:128px;overflow-y:auto;overscroll-behavior-y:contain;padding:6px;scroll-padding-block:6px}.amount-entry-assist button{scroll-margin-block:6px}.amount-entry-assist .amount-input-tools{margin-top:0}}

/* v13 Mac QA: content-sized mobile tracks and restored amount-field placement. */
@media(max-width:600px){
 #practice-main{grid-template-rows:44px 34px auto minmax(min-content,1fr) auto;overflow-y:auto;overscroll-behavior-y:contain;scroll-padding-block-start:6px;scroll-padding-block-end:max(64px,env(safe-area-inset-bottom))}
 #practice-main>.table{height:auto;grid-template-rows:repeat(4,minmax(min-content,auto))}
 #practice-main .raise-row>label,.online-active .raise-row>label{grid-column:auto}
}

/* v14 Mac QA: keep the narrow desktop game heading in normal flow. */
@media(width < 750px){#practice-main>.current-game-banner{position:static}}

/* v10 Mac QA: narrow-phone header fit and focus visibility only. */
@media(max-width:350px){
 #practice-main>header>div:first-child{min-width:0;flex:1 1 0}
 #practice-main>header h1 span{display:block}
 #practice-main .header-tools{flex:0 0 auto}
 #practice-main .header-tools button{min-width:44px;min-height:44px}
 #settings{scroll-padding-block-start:12px;scroll-padding-block-end:max(12px,env(safe-area-inset-bottom));padding-bottom:max(23px,calc(env(safe-area-inset-bottom) + 12px))}
 #settings :is(button,input,select){scroll-margin-block:12px}
 #settings :is(button,input,select):focus-visible{outline-offset:-3px}
}
