/* Portrait poker: one table, one action dock, exact coin amounts. */
body.op-page{margin:0;background:#101519;color:#eef2ef;font-family:Arial,"Hiragino Kaku Gothic ProN",Meiryo,sans-serif;color-scheme:dark}
.op-page *{box-sizing:border-box}
.op-page [hidden]{display:none!important}
.op-page button,.op-page a,.op-page summary,.op-page input,.op-page select{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
.op-page button,.op-page summary{cursor:pointer}
.op-page button:disabled{opacity:.38;cursor:default}
.op-page button:focus-visible,.op-page a:focus-visible,.op-page summary:focus-visible,.op-page input:focus-visible,.op-page select:focus-visible{outline:2px solid #f2d58f;outline-offset:3px}
.op-page .op-app{width:100%;max-width:480px;height:auto;min-height:100svh;margin:auto;padding:env(safe-area-inset-top) 0 0;display:grid;grid-template-rows:auto minmax(400px,1fr) auto;position:relative;isolation:isolate;background:radial-gradient(ellipse at 50% 35%,#24362f 0%,#172420 35%,#121a1c 70%)}
.op-header{height:44px;padding:0 10px;display:flex;align-items:center;gap:8px;background:#11191ee8;border-bottom:1px solid #ffffff09}
.op-icon-button{width:44px;height:44px;min-height:44px;min-width:44px;display:flex;align-items:center;justify-content:center;color:#d8dedb;border:0;border-radius:12px;background:transparent;text-decoration:none;list-style:none}
.op-icon-button svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.7}
.op-title{flex:1;min-width:0;line-height:1}
.op-title h1{font-size:18px;letter-spacing:3px;font-weight:800;margin:0;color:#f4f0e5}
.op-header-coins{flex:none;font-size:13px;font-weight:700;line-height:20px;color:#e7d4a4;white-space:nowrap;font-variant-numeric:tabular-nums}
.op-unit-toggle{height:28px;min-height:28px;min-width:36px;border:0;border-radius:5px;padding:0 8px;background:transparent;color:#b1c3b5;font-size:10px;font-weight:700}
.op-unit-toggle[aria-pressed="true"]{color:#15251d;background:#dec488;border-color:#e3cb95}
.op-tablebar{height:28px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 16px;font-size:10px;color:#b1c3b5;font-variant-numeric:tabular-nums;background:#11191e80}
.op-stage{position:relative;min-height:0;overflow:hidden}
#opBoard{width:100%;height:100%;min-height:400px}
.op-table{width:100%;height:100%;position:relative;isolation:isolate}
.op-felt{position:absolute;z-index:-1;left:12%;right:12%;top:8%;bottom:8%;border:9px solid #38403a;border-radius:48% / 33%;background:radial-gradient(ellipse at 48% 35%,#246445,#194b38 55%,#12382d);box-shadow:0 0 0 1px #978b6080,0 0 0 5px #101818,inset 0 0 0 2px #71846d44,inset 0 0 36px #051c18a8,0 12px 30px #0007}
.op-felt::after{content:"";position:absolute;inset:8px;border:1px solid #a9c6a012;border-radius:inherit}
.op-table-brand{position:absolute;top:31%;left:25%;width:50%;text-align:center;font-weight:800;font-size:11px;letter-spacing:2px;color:#b7d3b626;pointer-events:none}
.op-seat{position:absolute;width:96px;height:94px;transform:translateX(-50%);text-align:center;min-width:0;z-index:2;border:0;padding:0;background:transparent}
.op-seat-3{left:50%;top:max(16px,2%)}
.op-seat-2{left:14%;top:21%}
.op-seat-4{left:86%;top:21%}
.op-seat-1{left:14%;top:59%}
.op-seat-5{left:86%;top:59%}
.op-seat-0{left:50%;bottom:1%;width:142px;height:118px}
.op-avatar{position:absolute;left:50%;top:3px;transform:translateX(-50%);width:38px;height:38px;border:2px solid #92a59d;border-radius:50%;display:flex;align-items:center;justify-content:center;overflow:hidden;background:radial-gradient(circle at 35% 25%,#466b65,#1f3437);color:#c7d9d4;font-size:14px;font-weight:800;box-shadow:0 2px 8px #0008;z-index:2}
.op-seat-1 .op-avatar{background:linear-gradient(145deg,#806e5c,#36332c)}
.op-seat-2 .op-avatar{background:linear-gradient(145deg,#61617f,#2b293e)}
.op-seat-3 .op-avatar{background:linear-gradient(145deg,#718570,#293b30)}
.op-seat-4 .op-avatar{background:linear-gradient(145deg,#97715e,#48372d)}
.op-seat-5 .op-avatar{background:linear-gradient(145deg,#5a7890,#293846)}
.op-avatar svg{width:100%;height:100%}
.op-player-info{position:absolute;top:42px;left:1px;right:1px;min-height:34px;padding:2px;border:1px solid #4d5b53;border-radius:7px;background:linear-gradient(#24332d,#14231f);box-shadow:0 3px 7px #0005;z-index:2}
.op-seat-name{height:13px;line-height:13px;font-size:10px;color:#b3c6b9;white-space:nowrap}
.op-stack{font-size:clamp(9px,2.9vw,12px);line-height:17px;color:#f6f3df;font-weight:700;white-space:nowrap;font-variant-numeric:tabular-nums;letter-spacing:-.1px}
.op-position{display:inline-block;font-size:8px;font-weight:800;line-height:12px;padding:0 2px;border-radius:3px;margin-left:3px;background:#d2b777;color:#1b261d;vertical-align:1px}
.op-badge{position:absolute;top:25px;left:0;right:0;min-height:15px;font-size:9px;font-weight:700;line-height:15px;color:#f7e2af;z-index:3;pointer-events:none;text-shadow:0 1px 3px #000}
.op-badge:empty{display:none}
.op-seat .op-card-row{position:absolute;top:3px;right:0;display:flex;gap:1px;margin:0;min-height:0;transform:rotate(9deg);z-index:0}
.op-seat .op-card{width:23px;height:31px;border-radius:3px;font-size:12px}
.op-seat .op-card b{font-size:11px}
.op-seat .op-card i{font-size:13px}
.op-seat .op-card.back{font-size:0}
.op-streetbet{position:absolute;top:81px;left:-5px;right:-5px;font-size:10px;line-height:13px;font-weight:700;color:#eedaaa;text-shadow:0 1px 3px #000;white-space:nowrap;font-variant-numeric:tabular-nums}
.op-streetbet:empty,.op-streetbet.is-empty{display:none}
.op-seat.is-folded .op-player-info,.op-seat.is-folded .op-avatar{opacity:.48}
.op-seat.is-folded .op-card-row{opacity:.65}
.op-seat.is-turn .op-player-info{border-color:#e3c483;box-shadow:0 0 0 2px #e3c4832e,0 4px 16px #0007}
.op-seat.is-turn .op-avatar{border-color:#f2d58f;box-shadow:0 0 0 3px #e9c9842b,0 0 18px #e9c98438}
.op-seat.is-turn .op-seat-name{color:#ffe5a5}
.op-seat:not(.op-seat-0).has-visible-cards .op-avatar{display:none}
.op-seat:not(.op-seat-0).has-visible-cards .op-card-row{left:0;right:0;justify-content:center;gap:3px;transform:none}
.op-seat:not(.op-seat-0).has-visible-cards .op-card{width:28px;height:39px}
.op-seat:not(.op-seat-0).has-visible-cards .op-card b{font-size:15px}
.op-seat:not(.op-seat-0).has-visible-cards .op-card i{font-size:19px}
.op-seat:not(.op-seat-0).has-visible-cards .op-badge{top:-13px}
.op-seat-0 .op-avatar{display:none}
.op-seat-0 .op-card-row{top:0;left:0;right:0;justify-content:center;gap:4px;transform:none}
.op-seat-0 .op-card{width:47px;height:65px;border-radius:6px;box-shadow:0 4px 10px #0005}
.op-seat-0 .op-card:first-child{transform:rotate(-5deg) translateY(1px)}
.op-seat-0 .op-card:last-child{transform:rotate(5deg) translateY(1px)}
.op-seat-0 .op-card b{font-size:23px}
.op-seat-0 .op-card i{font-size:27px}
.op-seat-0 .op-player-info{top:63px;left:13px;right:13px;min-height:36px;border-color:#ad996c;background:linear-gradient(#33493a,#1d3027)}
.op-seat-0 .op-stack{font-size:13px;line-height:18px}
.op-seat-0 .op-seat-name{height:12px;line-height:12px;font-size:10px;color:#e0d9c5}
.op-seat-0 .op-badge{top:100px;font-size:10px}
.op-seat-0 .op-streetbet{top:-16px;font-size:11px}
.op-community{position:absolute;left:50%;top:42%;transform:translate(-50%,-12%);width:100%;text-align:center;z-index:1;pointer-events:none}
.op-pot{display:inline-flex;align-items:baseline;gap:7px;margin:0 0 7px;padding:3px 10px;border-radius:20px;background:#0e2b23ba;font-size:10px;line-height:16px;color:#b3c8ba;font-variant-numeric:tabular-nums}
.op-pot strong{font-size:17px;color:#f5e4b8;letter-spacing:.2px}
.op-card-row{display:flex;justify-content:center;gap:4px;margin:0}
.op-card{width:38px;height:53px;flex:none;display:flex;flex-direction:column;align-items:center;justify-content:center;border:1px solid #e2e1d6;border-radius:5px;background:linear-gradient(#fffef6,#e9ece6);color:#18222b;font-family:Georgia,"Times New Roman",serif;box-shadow:0 2px 5px #0003}
.op-card b{font-size:20px;line-height:1;font-weight:800}
.op-card i{font-size:24px;line-height:1.05;font-style:normal}
.op-card.red,.op-card.suit-hearts{color:#b72e43}
.op-card.suit-diamonds{color:#226caf}
.op-card.suit-clubs{color:#207046}
.op-card.back{background:repeating-linear-gradient(45deg,#233d37,#233d37 4px,#334d42 4px,#334d42 5px);border:1px solid #b4bda1;color:#d6c58e}
.op-card.empty{background:#143c2d4d;border:1px solid #b1c4a82a;box-shadow:none}
.op-street{font-size:9px;line-height:14px;margin-top:4px;color:#a4b9a6;letter-spacing:.3px}
.op-table[data-seats="3"] .op-seat-1{left:22%;top:16%}
.op-table[data-seats="3"] .op-seat-2{left:78%;top:16%}
.op-table[data-seats="3"] .op-community{top:45%}
#opResult{display:flex;align-items:center;justify-content:center;gap:8px;min-height:50px;margin:0 0 10px;padding:7px 12px;border:1px solid #b8a16a55;border-radius:9px;background:#14251df2;text-align:center}
#opResult:empty{display:none}
#opResult strong{flex:none;font-size:29px;line-height:34px;color:#f3d78f;font-variant-numeric:tabular-nums}
#opResult .op-result-coin{font-size:18px;line-height:22px;color:#e2c782}
#opResult[data-net="negative"] strong{color:#f2ada0}
#opResult[data-net="zero"] strong{color:#d3ded3}
.op-dock{z-index:5;padding:8px 12px max(10px,env(safe-area-inset-bottom));border-top:1px solid #81957b3b;border-radius:18px 18px 0 0;background:linear-gradient(#1b2928,#111b1d);box-shadow:0 -8px 26px #07110f66}
.op-turnbar{display:flex;align-items:center;justify-content:space-between;min-height:22px;gap:8px;margin-bottom:2px;font-size:12px}
.op-turnbar:has(#opTurn:empty):has(#opHeld:empty){display:none}
#opTurn{color:#f1d9a4;font-size:12px}
#opHeld{font-size:10px;color:#b5c2b6;text-align:right;font-variant-numeric:tabular-nums}
#opStatus{font-size:11px;line-height:1.45;margin:0 0 5px;color:#c4cfc4;overflow-wrap:anywhere}
#opStatus:empty{display:none}
.op-page .button{min-height:48px;margin:0;border-radius:9px;border:1px solid #58645a;font-size:13px;font-weight:700;box-shadow:none;letter-spacing:0;text-transform:none}
.op-page .op-primary,.op-page .op-connect{color:#15231b;border-color:#c9b27b;background:linear-gradient(#e4cc94,#c4a665)}
.op-page .op-resume{width:100%;margin:6px 0}
.op-join-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:6px}
.op-join-fields label{display:block;min-width:0;font-size:11px;line-height:18px;color:#c5cfc1}
.op-join-fields label small{color:#97ab9a;font-size:9px;margin-left:4px}
.op-page input,.op-page select{font:inherit;color:#f3f4e7;background:#0e1d1c;border:1px solid #57665b;border-radius:8px;min-width:0;max-width:100%;font-variant-numeric:tabular-nums}
.op-join-fields input,.op-join-fields select{display:block;min-height:44px;width:100%;padding:7px 10px;font-size:17px}
#opBuyinHelp{font-size:10px;line-height:15px;color:#a7b9a8;margin:6px 0}
.op-join-actions{display:flex;gap:8px;margin-top:10px}
.op-join-actions .button{flex:1;min-width:0}
.op-betline{display:flex;align-items:center;gap:7px;margin-top:6px}
.op-betline>label{flex:none;font-size:11px;color:#c2cfbd;line-height:15px}
.op-betline>label small{display:block;font-size:8px;font-weight:400;color:#9cae9c}
.op-stepper{display:flex;align-items:center;flex:1;min-width:0;height:44px;border:1px solid #5c6c5d;border-radius:8px;overflow:hidden;background:#101e1c}
.op-stepper button{height:44px;min-height:44px;width:40px;flex:none;border:0;background:#25362e;color:#dce4d1;font-size:20px}
.op-stepper input{flex:1;width:100%;height:42px;min-width:0;padding:4px 2px;border:0;border-radius:0;background:transparent;font-size:16px;font-weight:700;text-align:center;appearance:textfield}
.op-stepper input::-webkit-inner-spin-button,.op-stepper input::-webkit-outer-spin-button{appearance:none;margin:0}
.op-allin{height:44px;min-height:44px;min-width:96px;padding:2px 5px;border:1px solid #77664c;border-radius:8px;background:#362e25;color:#e8d3aa;font-size:10px;line-height:14px;font-weight:700;white-space:pre-line}
.op-raise-readout{display:flex;justify-content:space-between;align-items:baseline;gap:6px;min-height:18px;padding-top:3px;font-size:9px;line-height:13px;color:#aebfad}
#opRaiseAmount{font-weight:700;white-space:nowrap;color:#dbd9bd}
#opRaiseHelp{text-align:right;overflow-wrap:anywhere}
.op-page .op-bet-slider{display:block;width:100%;height:32px;min-height:32px;margin:0;padding:0;border:0;appearance:none;-webkit-appearance:none;background:transparent;accent-color:#ddc083;cursor:pointer;touch-action:pan-x}
.op-bet-slider::-webkit-slider-runnable-track{height:5px;border-radius:5px;background:#536453}
.op-bet-slider::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;margin-top:-9px;border:2px solid #f0ddb1;border-radius:50%;background:#c7a66b;box-shadow:0 1px 5px #0008}
.op-bet-slider::-moz-range-track{height:5px;border-radius:5px;background:#536453}
.op-bet-slider::-moz-range-thumb{width:22px;height:22px;border:2px solid #f0ddb1;border-radius:50%;background:#c7a66b}
.op-presets{display:flex;gap:6px;margin:0 0 7px}
.op-presets .button{flex:1;min-width:0;min-height:44px;padding:4px 2px;border-color:#4d5f50;border-radius:7px;background:#283a2f;color:#dce5cf;font-size:11px;line-height:14px}
.op-presets small{display:block;font-size:9px;color:#b5c4ac;font-weight:400}
.op-main-actions{display:grid;grid-template-columns:1fr 1fr 1fr;gap:7px;margin:0}
.op-main-actions .button{height:56px;min-width:0;padding:5px 3px;font-size:12px;line-height:17px;white-space:pre-line;overflow-wrap:anywhere}
.op-page .op-fold{background:linear-gradient(#364349,#263139);border-color:#5e6b70;color:#e4e9e9}
.op-page .op-call{background:linear-gradient(#37604b,#244835);border-color:#6d9070;color:#eef4e6}
.op-page .op-raise-button{background:linear-gradient(#bd6658,#9f483e);border-color:#d39079;color:#fff3e9}
.op-page .op-retry{width:100%;margin:4px 0 8px;background:#443625;color:#ffdfa1;border-color:#ad8650}
.op-page .op-refresh{width:100%;margin:4px 0 8px;background:#27382e;color:#e3e8d9;border-color:#65785e}
#opTableInfo{font-size:11px;line-height:17px;color:#bccbb8;margin:5px 0 8px}
.op-boundary-actions{display:flex;gap:8px}
.op-boundary-actions .button{flex:1;min-width:0}
.op-page .op-rebuy{background:#314133;color:#d7e2ce}
.op-leave{display:block;width:100%;min-height:44px;margin-top:5px;border:0;background:transparent;color:#b5c3b1;font-size:11px}
@media(min-height:780px){.op-page .op-app{grid-template-rows:auto minmax(430px,1fr) auto}#opBoard{min-height:430px}.op-seat{width:102px}.op-seat-0{width:152px;height:128px}.op-seat-0 .op-card{width:51px;height:72px}.op-seat-0 .op-player-info{top:70px}.op-seat-0 .op-badge{top:108px}.op-card{width:42px;height:58px}.op-community{top:43%}.op-dock{padding-top:10px;padding-bottom:max(14px,env(safe-area-inset-bottom))}}
@media(max-width:350px){.op-header{padding-left:5px;padding-right:5px;gap:5px}.op-title h1{font-size:17px}.op-tablebar{padding:0 10px;font-size:9px}.op-seat{width:86px}.op-seat-0{width:132px}.op-seat-name{font-size:9px}.op-position{font-size:7px;margin-left:1px;padding:0 1px}.op-card{width:34px;height:48px}.op-card b{font-size:18px}.op-card i{font-size:22px}.op-dock{padding-left:8px;padding-right:8px}.op-betline{gap:5px}.op-stepper button{width:32px}.op-stepper input{font-size:13px}.op-allin{min-width:90px;font-size:9px}.op-main-actions{gap:5px}.op-main-actions .button{font-size:11px}.op-raise-readout{font-size:8px}.op-presets{gap:4px}#opHeld{font-size:9px}.op-felt{border-width:7px}}
@media(max-height:700px){.op-page .op-app{grid-template-rows:auto minmax(310px,1fr) auto}#opBoard{min-height:310px}.op-header{height:44px;padding-top:0;padding-bottom:0}.op-title h1{font-size:16px;margin-top:0}.op-tablebar{height:28px}.op-seat{height:84px}.op-avatar{height:30px;width:30px;top:0;font-size:12px}.op-player-info{top:31px;min-height:34px;padding:1px 2px}.op-badge{top:17px;font-size:8px}.op-seat .op-card-row{top:0}.op-seat .op-card{width:20px;height:27px}.op-streetbet{top:68px;font-size:9px}.op-seat:not(.op-seat-0).has-visible-cards .op-card{width:25px;height:34px}.op-seat:not(.op-seat-0).has-visible-cards .op-card b{font-size:13px}.op-seat:not(.op-seat-0).has-visible-cards .op-card i{font-size:16px}.op-seat:not(.op-seat-0).has-visible-cards .op-player-info{top:35px}.op-seat:not(.op-seat-0).has-visible-cards .op-streetbet{top:72px}.op-seat-0{height:98px;bottom:0}.op-seat-0 .op-card{width:39px;height:55px}.op-seat-0 .op-card b{font-size:20px}.op-seat-0 .op-card i{font-size:24px}.op-seat-0 .op-player-info{top:53px;min-height:34px}.op-seat-0 .op-badge{top:88px}.op-seat-0 .op-streetbet{top:-14px}.op-seat-1,.op-seat-5{top:60%}.op-seat-2,.op-seat-4{top:18%}.op-table-brand{top:29%;font-size:8px}.op-community,.op-table[data-seats="3"] .op-community{top:40%}.op-card{width:31px;height:43px}.op-card b{font-size:16px}.op-card i{font-size:20px}.op-pot{font-size:9px;line-height:13px;margin-bottom:5px;padding:1px 8px}.op-pot strong{font-size:14px}.op-street{font-size:8px;line-height:11px;margin-top:2px}.op-dock{padding-top:5px}.op-turnbar{min-height:18px}#opTurn{font-size:11px}#opStatus{font-size:10px;margin-bottom:3px}.op-betline{margin-top:3px}.op-raise-readout{min-height:15px;padding-top:2px}.op-page .op-bet-slider{height:28px;min-height:28px}.op-presets{margin-bottom:5px}.op-main-actions .button{height:50px;min-height:50px;font-size:11px;line-height:15px}#opResult{min-height:46px;padding:5px 8px}#opResult strong{font-size:27px;line-height:32px}}
@media(prefers-reduced-motion:reduce){.op-page *{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
