/* Game shell: one-screen tables, touch controls, locally served pixel type. */
:root{font-family:Pixel,monospace;font-size:11px;--bg:#101224;--panel:#20223b;--line:#414267;--dim:#b0b3cf;--ink:#fff6de;--green:#d6f584;--amber:#ffd18a;--red:#ffa3aa;line-height:1.8}
body{background:radial-gradient(ellipse at 50% 0,#303050 0,transparent 65%),#101224}
button,input,select,code{font-family:inherit;font-size:10px;line-height:1.6}
button{border:2px solid #53547a;box-shadow:0 3px 0 #0b0d1c,inset 0 2px 0 #ffffff0c;min-height:46px;padding:11px 14px;transition:background .12s,transform .12s,box-shadow .12s}
button:hover:not(:disabled){background:#363957;border-color:#9496c1}
button:active:not(:disabled){transform:translateY(3px);box-shadow:0 0 0 #0b0d1c}
button:disabled{opacity:.45}input,select{border:2px solid #525576;background:#101428;font-size:11px;padding:12px;min-height:48px}
select{padding-right:20px}input:focus{border-color:var(--green)}label{font-size:9px;line-height:1.8}p{line-height:2}h1{font-size:34px;line-height:1.7;letter-spacing:-1px}h2{font-size:16px}h3{font-size:12px}
.primary{background:var(--green);border-color:#efffc2;box-shadow:0 4px 0 #6c8b39,inset 0 -3px 0 #adc761;color:#182525}
.primary:hover:not(:disabled){background:#e4ffa1;border-color:white}.secondary{background:#293d40;border-color:#628c6a;color:var(--green)}
.small{font-size:8px}.section-label{font-size:9px;letter-spacing:1px;margin-bottom:16px}.icon-btn{font-size:8px;padding:9px 10px;background:#1b1e35}
.topbar{height:76px;border-bottom:3px solid #424261;background:#15172cd9;padding:0 4%;gap:12px}.brand{font-size:17px;letter-spacing:0;gap:14px}.brand-icon{font-size:22px;padding:4px 7px;background:var(--green);box-shadow:3px 3px 0 #6c8b39}.brand-sub{font-size:7px}.edition{font-size:7px;letter-spacing:0}.header-right{gap:8px}
.lobby{max-width:1160px;padding:48px 24px}.lobby-main{gap:65px;align-items:center}.intro{position:relative}.intro .section-label:before{content:'';display:inline-block;width:7px;height:7px;background:var(--green);margin-right:12px;box-shadow:0 0 14px #d6f58466}.intro h1{font-size:clamp(24px,3vw,36px);text-shadow:4px 4px #070b18}.intro p{font-size:10px;max-width:420px}.tiny-line{font-size:8px;line-height:2.4}.club-mark{gap:18px;margin:28px 0}.suit-tile{background:#f7f0d9;color:#23382f;width:67px;height:83px;border:3px solid #fff7e3;box-shadow:5px 5px 0 #080d20;font-size:40px;transform:rotate(-8deg)}.suit-tile:nth-child(2n){color:#c65467;transform:translateY(10px) rotate(8deg)}
.entry-panel{padding:26px;background:#252740;border:3px solid #777393;box-shadow:6px 6px #090c20,inset 0 0 0 3px #343653}.entry-panel h2{font-size:15px;margin-bottom:20px}.entry-panel .section-label{font-size:8px}.avatar-pick{justify-content:space-between;gap:7px;margin:14px 0 20px}.avatar-pick button{min-width:44px;min-height:48px;padding:8px;background:#17192c}.avatar-pick button[aria-pressed=true]{border-color:var(--green);background:#3d4b39;box-shadow:0 3px #718c44}.avatar-pick .avatar{width:30px;height:30px}.entry-row{gap:12px;margin:0 0 16px}.entry-row select{font-size:9px;padding:11px 7px}.room-settings{font-size:9px;margin:0 0 14px}.room-settings summary{padding:8px 0;min-height:40px}.room-settings .entry-row{margin:10px 0}.divider{font-size:8px;margin:24px 0 14px;letter-spacing:1px}.join-row{gap:8px}.join-row input{letter-spacing:2px;font-size:11px}.join-row button{font-size:9px;white-space:nowrap}.room-list{margin-top:42px}.section-heading h2{font-size:12px}.section-heading{border-bottom:2px solid var(--line)}.room-door{border:2px solid var(--line);background:#1c1f36;padding:18px;gap:12px}.room-door .section-label{font-size:7px;margin:0}.room-door .code{font-size:17px}.room-door p,.empty-rooms{font-size:9px;line-height:2}.room-door button{font-size:9px}.invite-banner{background:#324e42;border:2px solid #83a26a;padding:14px;font-size:10px;color:var(--green);margin-bottom:18px}.entry-panel.invited #join-form{margin-bottom:20px}.entry-panel.invited #create{background:#252b40;color:var(--ink);border-color:#636581;box-shadow:0 3px #080d20}
.room-page{max-width:1510px;padding:20px 28px 0}.room-header{margin-bottom:18px;align-items:center}.room-header .section-label{font-size:7px;letter-spacing:1px;margin-bottom:7px}.room-header h1{font-size:17px;letter-spacing:1px}.connection{font-size:7px;letter-spacing:0;display:inline-flex;align-items:center;gap:6px;margin-left:10px}.connection:before{content:'';width:6px;height:6px;background:var(--green)}.connection.offline:before{background:var(--amber)}.room-controls{gap:8px;flex-wrap:nowrap}#talk-toggle{display:none}
.game-layout{grid-template-columns:minmax(0,1fr) 270px;gap:24px}.game-main{min-width:0}.arena{height:575px;isolation:isolate;border:2px solid #434664;background:radial-gradient(ellipse at 50% 50%,#254b42 0,#191e30 65%);box-shadow:inset 0 0 0 4px #11172a;overflow:hidden}.arena:before{content:'';position:absolute;inset:10px;pointer-events:none;background:linear-gradient(90deg,#a29767 10px,transparent 10px) top left/12px 3px no-repeat,linear-gradient(90deg,#a29767 10px,transparent 10px) bottom right/12px 3px no-repeat}
.felt{left:7%;right:7%;top:17%;height:auto;bottom:19%;background:repeating-linear-gradient(0deg,#1b5446 0 2px,#1c5749 2px 4px);border:8px solid #8a7656;outline:none;box-shadow:inset 0 0 0 4px #d0af75,inset 0 0 0 7px #173e36}.felt:after{font-size:12px;letter-spacing:5px;color:#478a6b;bottom:25px}
.table-caption{top:31%;font-size:7px;letter-spacing:1px;color:#a6c7a4}.board-area{top:37%;width:340px}.stage{font-size:8px;letter-spacing:1px;margin-bottom:9px}.pot{font-size:21px;color:#fff3c8;margin-bottom:14px;text-shadow:2px 2px #17382e}.pot span{font-size:8px;color:#cae1ba}.cards{gap:7px}.card{width:52px;height:73px;font-size:18px;padding:6px;line-height:1.2;box-shadow:3px 4px #0b2c25;animation:none}.card .suit{font-size:28px;line-height:1;margin-top:4px}.card.back{background:repeating-conic-gradient(#6066a8 0 25%,#35395d 0 50%) 0 0/8px 8px;border:2px solid #9ba1d1}.card.blank{border-color:#6a9e79;background:#19493b;opacity:.65}.deal-new .board-area .card:not(.blank){animation:deal .22s steps(4) both}
.seat{width:145px}.position-0{left:50%;top:auto;bottom:10px}.position-3{left:50%;top:12px}.position-2,.position-4{top:15%}.position-1,.position-5{top:61%}.position-1,.position-2{left:12%}.position-4,.position-5{left:88%}.seat-box{padding:9px;background:#252942;border:2px solid #74778e;box-shadow:3px 4px #101426}.seat-head{gap:8px}.seat .avatar{width:28px;height:28px}.seat-name{font-size:9px;max-width:88px;line-height:1.8}.seat-tag{font-size:6px;margin-top:2px;letter-spacing:0;white-space:nowrap}.seat-stack{font-size:11px;margin-top:8px;line-height:1.4}.seat-status{font-size:7px;min-height:13px;margin-top:5px;text-shadow:1px 1px #10222c}.seat .cards{margin-top:5px;gap:4px}.seat .card{width:24px;height:32px;font-size:9px;padding:2px}.seat .card .suit{font-size:13px;line-height:1.1;margin-top:0}.seat .card.back{width:19px;height:24px}.position-0 .cards{bottom:calc(100% + 5px);margin-top:0}.position-0 .card{width:55px;height:75px;font-size:21px;padding:6px}.position-0 .card .suit{font-size:29px;margin-top:4px}.dealer{padding:2px 3px;font-size:6px;margin-left:4px}.empty-seat{min-height:61px;border:2px dashed #6c7e85;color:#bdc8cf;background:#1a2c35df;font-size:8px;line-height:2;padding:7px;width:100%;box-shadow:none}.bot-toggle{font-size:7px;min-height:32px;padding:5px 8px;margin-top:5px;background:#20283c}.seat.active .seat-box{border-color:#ffdf8b;background:#393b42;box-shadow:0 0 0 2px #a78542,3px 5px #0d1826}.seat.active:before{content:'▼';position:absolute;left:-19px;top:13px;color:var(--amber);font-size:17px;transform:rotate(-90deg)}.seat.winner .seat-box{border-color:var(--green);background:#37543f;box-shadow:0 0 0 2px #728d42}.seat.folded{opacity:.55}.seat .reaction{font-size:8px;z-index:4;line-height:1.8;bottom:100%;width:auto;min-width:100%;padding:8px;background:#fff1c4}
.controls{margin-top:12px;background:#23273e;border:2px solid #5c607d;box-shadow:0 4px #0a1021;padding:16px;min-height:112px}.controls.your-turn{border-color:var(--green);box-shadow:0 4px #526b35}.controls.hand-over{border-color:#ad996b}.turn-line{font-size:9px;margin-bottom:12px;gap:10px;line-height:1.7}.turn-line>span{font-size:8px;white-space:nowrap}.turn-line strong{font-weight:normal}.time-track{width:65px;height:6px;margin-left:8px}.time-fill{transition:width .25s linear}.action-row{gap:10px;align-items:end;flex-wrap:nowrap}.action-row>button{min-width:85px;min-height:49px;font-size:10px}.raise-group{gap:8px;flex-basis:auto;flex:1.7;align-items:end}.raise-group label{flex:1;min-width:0}.raise-group input{width:100%;height:49px;min-height:49px;font-size:12px}.raise-group button{min-height:49px}.bet-label{font-size:6px;margin:0 0 4px}.fold{background:#452e42;border-color:#8e5467;color:#ffc0c2}.raise-presets{display:flex;gap:7px;margin-top:10px;justify-content:flex-end}.raise-presets button{font-size:8px;min-height:34px;padding:6px 12px;background:#181e32}.result-banner{font-size:9px;line-height:1.8;max-width:100%;margin:0 0 10px;background:#344a3b;border-left:3px solid var(--green);padding:9px 12px;color:#e6ffb4}.spectator-note{font-size:9px;line-height:1.9}.controls p.small{font-size:8px}.under-table{font-size:7px;padding:12px 0;gap:8px;line-height:1.8}.under-table button{font-size:7px;box-shadow:none;min-height:24px}.sidebar{padding:18px;border:2px solid #4d5070;background:#1e2339;display:block}.sidebar h2{font-size:11px}.room-note{font-size:8px;line-height:2.2;margin-bottom:16px;padding-bottom:16px}.room-note code{font-size:13px}.sidebar .section-label{font-size:7px}.log{font-size:8px;line-height:2;height:220px}.log div{padding:8px 0}.sidebar details{font-size:9px;margin-top:15px}.history{font-size:8px;line-height:2}.history p{line-height:2}.reactions{gap:7px;margin-top:15px}.reactions button{font-size:8px;min-height:44px;padding:8px}.panel-close{float:right;font-size:9px;min-height:44px;margin:0 0 12px 12px}.panel-inner{padding:20px}.panel-inner .sidebar{padding:0;border:0;clear:both}.panel-inner .room-note{font-size:9px}.panel-inner .log{height:180px}.panel-inner .sidebar h2{font-size:12px}
footer{font-size:7px;line-height:2.1;padding:20px 28px;margin-top:24px;letter-spacing:0}footer span:first-child{letter-spacing:0}dialog{max-width:610px;background:#20243c;border:3px solid #91869c}dialog p,dialog li{font-size:10px;line-height:2.2}.dialog-inner{padding:26px}.toggle{font-size:9px}.connecting h2{font-size:15px}.connecting p{font-size:9px}#toast{font-size:9px;line-height:1.9;max-width:calc(100vw - 32px);padding:13px 16px;z-index:50}
@media(min-width:821px) and (max-width:1150px){.game-layout{grid-template-columns:minmax(0,1fr) 220px;gap:16px}.seat{width:118px}.seat-name{font-size:8px;max-width:70px}.seat .avatar{width:23px;height:23px}.seat-head{gap:5px}.position-1,.position-2{left:13%}.position-4,.position-5{left:87%}.room-controls .icon-btn{font-size:7px}.action-row{flex-wrap:wrap}.raise-group{flex-basis:100%}.brand-sub,.edition{display:none}}
@media(max-width:820px){
 .topbar{height:62px;padding:0 16px}.brand{font-size:13px;gap:9px}.brand-icon{font-size:19px}.brand-sub,.edition{display:none}.header-right{gap:6px}.header-right .icon-btn{font-size:7px;padding:8px;min-height:40px}
 .lobby{padding:24px 18px;max-width:550px}.lobby-main{display:block}.intro{padding:0;margin-bottom:24px}.intro .section-label{font-size:7px;margin-bottom:10px}.intro h1{font-size:24px;margin:0 0 12px;line-height:1.5}.intro h1 br{display:none}.intro p,.club-mark{display:none}.tiny-line{font-size:7px;line-height:2}.entry-panel{padding:20px}.entry-panel h2{font-size:13px;margin-bottom:16px}.entry-panel .section-label{margin-bottom:9px}.room-list{margin-top:30px}.section-heading h2{font-size:10px}.section-heading h2 span{display:none}.room-grid{grid-template-columns:1fr}.empty-rooms{padding:18px;font-size:8px}.entry-row{grid-template-columns:1fr 1fr}.avatar-pick{margin:12px 0 14px}.avatar-pick .avatar{width:27px;height:27px}.avatar-pick button{padding:7px;min-width:40px}.divider{margin:20px 0 12px}footer{padding:16px 18px;font-size:6px}
 body.in-room{height:100dvh;min-height:580px;display:flex;flex-direction:column;overflow:hidden}
 .in-room .topbar{height:56px;flex-shrink:0;padding-top:env(safe-area-inset-top)}.in-room #app{flex:1;min-height:0}.in-room footer{display:none}
 .room-page{height:100%;padding:6px 10px max(4px,env(safe-area-inset-bottom));display:grid;grid-template-rows:66px minmax(0,1fr)}
 .room-header{display:flex;flex-wrap:nowrap;align-items:center;gap:6px;margin:0}.room-header .section-label{font-size:6px;letter-spacing:0;margin-bottom:5px}.room-header h1{font-size:11px;letter-spacing:0;line-height:1.5}.connection{font-size:0;margin-left:5px;gap:0;vertical-align:middle}.connection:before{width:6px;height:6px}.room-controls{gap:5px;flex-wrap:nowrap}.room-controls .icon-btn{padding:7px;font-size:7px;min-height:44px}#lock,#leave{display:none}#talk-toggle{display:block}
 .game-layout{display:block;min-height:0;height:100%}.game-main{height:100%;display:grid;grid-template-rows:minmax(0,1fr) auto 25px;gap:0}.game-layout>.sidebar{display:none}
 .arena{height:auto;min-height:310px;margin:0;border:2px solid #484c67;background:radial-gradient(ellipse at 50% 50%,#255444 0,#1c2235 75%)}
 .felt{left:2%;right:2%;top:14%;bottom:16%;height:auto;border-width:6px}.felt:after{font-size:9px;bottom:15%;letter-spacing:3px}
 .seat{width:96px}.seat-box{padding:6px 5px}.seat-head{gap:5px}.seat .avatar{width:21px;height:21px}.seat-name{font-size:7px;max-width:61px;line-height:1.8}.seat-tag{font-size:5px;margin-top:2px}.seat-stack{font-size:10px;margin-top:5px}.seat-stack .small{font-size:7px}.seat-status{font-size:6px;min-height:10px;margin-top:3px;line-height:1.5}.dealer{font-size:5px;margin-left:2px;padding:1px 2px}
 .position-0{top:auto;bottom:5px;left:50%}.position-3{top:6px;left:50%}.position-2,.position-4{top:17%}.position-1,.position-5{top:64%}.position-1,.position-2{left:15%}.position-4,.position-5{left:85%}
 .seat .cards{margin-top:3px;gap:3px}.seat .card{width:20px;height:28px;font-size:8px;padding:2px}.seat .card .suit{font-size:12px;margin:0}.seat .card.back{width:14px;height:17px}.position-0 .cards{bottom:calc(100% + 3px);margin:0;gap:5px}.position-0 .card{width:49px;height:65px;font-size:17px;padding:5px}.position-0 .card .suit{font-size:25px;margin-top:3px}.seat.active:before{font-size:12px;left:-13px;top:11px}.seat .reaction{font-size:7px;padding:6px}
 .empty-seat{min-height:55px;font-size:7px;padding:6px;line-height:2}.bot-toggle{min-height:32px;font-size:6px;padding:4px 7px;margin-top:4px}
 .table-caption{top:34%;font-size:5px;letter-spacing:0}.board-area{top:39%;width:268px}.stage{font-size:7px;margin-bottom:7px;letter-spacing:1px}.pot{font-size:17px;margin-bottom:10px}.pot span{font-size:7px;margin-right:8px}.cards{gap:5px}.card{width:44px;height:60px;padding:5px;font-size:15px}.card .suit{font-size:24px;margin-top:2px}
 .controls{margin-top:8px;padding:12px;min-height:91px}.turn-line{font-size:8px;margin-bottom:9px;line-height:1.8}.turn-line>span{font-size:6px}.time-track{width:42px;margin-left:5px;height:5px}.action-row{gap:8px;flex-wrap:wrap}.action-row>button{min-height:46px;font-size:9px;min-width:80px;padding:10px 8px}.raise-group{flex-basis:100%;gap:8px;align-items:center}.raise-group label{position:relative;flex:1}.raise-group input{height:46px;min-height:46px;padding:19px 10px 4px;font-size:11px}.bet-label{position:absolute;left:11px;top:5px;font-size:5px;pointer-events:none}.raise-group button{flex:1;min-height:46px;font-size:9px;padding:9px}
 .raise-presets{margin-top:8px;gap:6px;display:grid;grid-template-columns:repeat(3,1fr)}.raise-presets button{min-height:38px;font-size:7px;padding:6px}.spectator-note{font-size:8px;line-height:1.8}.result-banner{font-size:8px;line-height:1.9;padding:7px 9px;margin-bottom:9px}.under-table{padding:4px 0;font-size:5px;align-items:center}.under-table button{font-size:5px;min-height:24px}.under-table>span{line-height:1.6}.controls p.small{font-size:7px;margin:8px 0 0!important}
 #table-panel{position:fixed;inset:auto 8px max(8px,env(safe-area-inset-bottom));margin:0;width:calc(100% - 16px);max-width:none;max-height:85dvh;box-shadow:0 -8px 0 #0a0e2366}#table-panel .room-controls{display:flex;margin:18px 0 0;gap:10px}#table-panel .room-controls button{display:block;font-size:8px;flex:1}#toast{bottom:auto;top:64px;width:max-content;max-width:calc(100% - 24px);font-size:8px}.dialog-inner{padding:20px}dialog p,dialog li{font-size:9px}
}
@media(max-width:380px){.topbar{padding-left:10px;padding-right:10px}.brand{font-size:11px}.header-right .icon-btn{font-size:6px;padding:6px}.lobby{padding:18px 12px}.entry-panel{padding:16px}.avatar-pick{gap:5px}.avatar-pick button{min-width:38px;padding:6px}.avatar-pick .avatar{width:24px;height:24px}.seat{width:88px}.seat-name{font-size:6px;max-width:54px}.seat-stack{font-size:9px}.seat .avatar{width:18px;height:18px}.room-header h1{font-size:10px}.room-controls .icon-btn{font-size:6px;padding:6px}.board-area{width:245px}.card{width:40px;height:55px;font-size:14px}.card .suit{font-size:21px}.position-0 .card{width:43px;height:59px}.position-0 .card .suit{font-size:23px}}
@media(max-width:820px) and (max-height:740px){.in-room .topbar{height:49px}.room-page{grid-template-rows:57px minmax(0,1fr)}.arena{min-height:290px}.seat-box{padding:4px}.seat-stack{margin-top:3px;font-size:9px}.seat .avatar{width:18px;height:18px}.seat-name{font-size:6px}.seat-tag{font-size:5px}.seat-status{font-size:5px;min-height:8px}.position-1,.position-5{top:64%}.position-2,.position-4{top:16%}.position-0{bottom:3px}.board-area{top:37%}.table-caption{top:31%}.stage{font-size:6px;margin-bottom:4px}.pot{font-size:14px;margin-bottom:5px}.card{width:37px;height:49px;font-size:13px;padding:4px}.card .suit{font-size:20px}.position-0 .card{width:41px;height:53px;font-size:15px;padding:4px}.position-0 .card .suit{font-size:22px;margin-top:1px}.controls{padding:9px;margin-top:6px;min-height:83px}.turn-line{font-size:7px;margin-bottom:7px}.action-row>button,.raise-group input,.raise-group button{min-height:44px;height:44px}.raise-presets{margin-top:6px}.raise-presets button{min-height:34px;font-size:6px}.result-banner{font-size:7px;padding:6px;margin-bottom:7px}}
@media(max-width:820px) and (orientation:landscape){body.in-room{min-height:740px;height:auto;overflow:auto}.in-room #app{flex:auto}.room-page{height:670px}.arena{min-height:350px}}
/* Keep table geometry steady when turns switch between players. */
.raise-presets button[aria-pressed=true]{border-color:var(--green);color:var(--green);background:#344d3e}
#table-panel button{width:auto}
@media(max-width:820px){.intro h1 br{display:block}.lobby:has(.entry-panel.invited) .intro{display:none}}
/* 16px inputs avoid automatic focus zoom on iOS without disabling user zoom. */
@media(max-width:820px){input,.join-row input,.entry-row select,.raise-group input{font-size:16px}.entry-row select{letter-spacing:-1px}.join-row input{letter-spacing:0}.controls .raise-group input{padding-top:17px}}
@media(max-width:820px){.controls{height:218px;min-height:218px;overflow:auto;display:flex;flex-direction:column;justify-content:center}.controls .action-row,.controls .raise-presets{flex-shrink:0}.controls .result-banner{flex-shrink:0}.controls .turn-line{flex-shrink:0}}
@media(max-width:820px) and (max-height:740px){.controls{height:196px;min-height:196px}.board-area{top:32%}.board-area .stage{position:absolute;top:-16px;left:0;width:100%;margin:0}.table-caption{display:none}.position-3 .card.back{display:none}.felt:after{display:none}}
@media(prefers-reduced-motion:reduce){.time-fill{transition:none}.deal-new .board-area .card:not(.blank){animation:none}}
/* Very short browser windows retain scrolling instead of clipping controls. */
@media(max-width:820px) and (max-height:639px){body.in-room{height:auto;min-height:100dvh;overflow:auto}.in-room #app{flex:auto}.room-page{height:610px}.arena{min-height:290px}}
