:root{font-family:Inter,"Segoe UI",Arial,sans-serif;color:#eef1ee;background:#1e1510;font-synthesis:none}
*{box-sizing:border-box}
@media (pointer:coarse){
  .app,.app *{-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent}
}
html{min-height:100%}
body{margin:0;min-width:320px;min-height:100vh;background:radial-gradient(ellipse 70% 58% at 50% 36%,#53392750,transparent 78%),repeating-linear-gradient(90deg,#ffffff06 0 2px,transparent 3px 107px,#08050460 108px 110px,transparent 112px 220px),linear-gradient(120deg,#291b13,#1e1510 58%,#120d09)}
body:before{content:"";position:fixed;inset:0;pointer-events:none;background:repeating-linear-gradient(0deg,transparent 0 4px,#c79c6910 5px,transparent 6px 13px);opacity:.55}
button,input{font:inherit}button{cursor:pointer}button:disabled{opacity:.4;cursor:not-allowed}
button:focus-visible,input:focus-visible,#spinPad:focus-visible{outline:2px solid #e7d7b7;outline-offset:3px}
.app{position:relative;max-width:1600px;margin:auto;padding:26px clamp(14px,2.8vw,44px) 38px}
.topbar{min-height:65px;display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:25px;padding-bottom:17px;border-bottom:1px solid #5c686530}
.brand{display:flex;align-items:center;gap:15px}
.brand-ball{display:grid;place-items:center;width:48px;height:48px;flex:none;border:2px solid #e7e7df;border-radius:50%;background:radial-gradient(circle at 34% 24%,#444c4d,#0c1012 62%);color:#f5f3e9;font-size:21px;font-weight:900;box-shadow:inset -4px -6px 9px #0009,0 0 0 5px #293539}
.brand strong{display:block;font-size:20px;letter-spacing:.18em;line-height:1.1;font-weight:800;color:#f4f1e9}
.brand small{display:block;margin-top:6px;color:#9da9a7;font-size:11px;letter-spacing:.12em;text-transform:uppercase}
.top-actions{display:flex;gap:10px}
.ghost,.secondary{border:1px solid #4b595a;background:linear-gradient(#263135,#1b2528);color:#e8eeeb;border-radius:9px;padding:10px 15px;transition:background .18s,border-color .18s,transform .18s}
.ghost:hover,.secondary:hover{background:#344348;border-color:#80908e;transform:translateY(-1px)}
.text-button{border:0;background:transparent;color:#d2d9d3;padding:4px;font-size:12px;white-space:nowrap}
.text-button:hover{color:#fff;text-decoration:underline}
.game-layout{display:grid;grid-template-columns:minmax(0,1fr) 318px;align-items:start;gap:28px}
.board-column{min-width:0}
.scorebar{display:grid;grid-template-columns:minmax(0,1fr) minmax(156px,.8fr) minmax(0,1fr);align-items:center;gap:12px;margin-bottom:17px}
.player{display:flex;align-items:center;gap:11px;min-width:0;min-height:63px;padding:9px 14px;border:1px solid #394649;border-radius:11px;background:linear-gradient(135deg,#1f2a2d,#151e21);opacity:.64;box-shadow:inset 0 1px #ffffff0b}
.player.active{opacity:1;border-color:#b9c4bd;box-shadow:0 0 0 1px #a9b4a733,inset 0 1px #ffffff16}
.player:last-child{flex-direction:row-reverse;text-align:right}
.avatar{display:grid;place-items:center;width:38px;height:38px;flex:none;border:2px solid #aebbb7;border-radius:50%;background:radial-gradient(circle at 35% 30%,#6e7a7a,#212b2f 65%);color:#fff;font-weight:800;box-shadow:inset -2px -3px 5px #0006}
.player strong,.player small{display:block;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.player strong{font-size:15px}.player small{margin-top:2px;font-size:11px;color:#a9b5b2}
.turn-dot{width:7px;height:7px;margin-left:auto;border-radius:50%;background:#d2dbc9;box-shadow:0 0 9px #d5e2c1;opacity:0;flex:none}
.player:last-child .turn-dot{margin:0 auto 0 0}.player.active .turn-dot{opacity:1}
.score-centre{text-align:center;min-width:0}
.score-centre span{display:block;color:#b7a888;font-size:10px;font-weight:800;letter-spacing:.24em}
.score-centre strong{display:block;margin-top:5px;color:#e8eeeb;font-size:15px;line-height:1.28}
.table-wrap{position:relative;width:100%;padding:9px;border:1px solid #435054;border-radius:25px;background:linear-gradient(145deg,#303b3d,#0c1316 42%,#242f31);box-shadow:0 8px 0 #05090b,0 22px 45px #0009,inset 0 1px #adb9b849;touch-action:none}
.table-wrap:after{content:"";position:absolute;inset:8px;border-radius:17px;box-shadow:inset 0 0 0 1px #f6f8ed19;pointer-events:none}
.table-wrap canvas{display:block;width:100%;height:auto;border-radius:17px;cursor:crosshair;touch-action:none}
.table-stage{position:relative;width:100%}
#vfxLayer{position:absolute;inset:0;overflow:hidden;pointer-events:none;border-radius:inherit}
#vfxLayer canvas{display:block;width:100%!important;height:100%!important;pointer-events:none;cursor:inherit}
.mobile-dock{display:none}
.table-footer{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:20px 4px 10px;color:#c4cfca;font-size:12px}
.table-footer #hint{display:flex;align-items:center;gap:10px}.table-footer #hint:before{content:"";width:6px;height:6px;flex:none;border-radius:50%;background:#dac196;box-shadow:0 0 10px #dcbf87}
.table-footer #ballsLeft{color:#9caeaa;white-space:nowrap}
.aim-legend{display:flex;flex-wrap:wrap;gap:8px 16px;margin:5px 0 0;padding:11px 14px;border:1px solid #374347;border-radius:9px;color:#b8c6c2;background:#111b1e;font-size:11px}
.aim-legend .legend-object{color:#ebcf86}
.controls{position:relative;overflow:hidden;padding:21px;border:1px solid #596568;border-radius:17px;background:linear-gradient(160deg,#253135 0,#1a2428 44%,#141d20 100%);box-shadow:0 18px 38px #0006,inset 0 1px #dce7e122}
.controls:before{content:"";position:absolute;inset:0 0 auto;height:4px;background:linear-gradient(90deg,#7d8984,#d4d7c7 48%,#7d8984)}
.control-heading,.spin-heading,.aim-heading{display:flex;justify-content:space-between;align-items:center;gap:8px}
.control-heading{padding-bottom:17px;margin-bottom:22px;border-bottom:1px solid #78868238}
.control-heading span{color:#f3f1e9;font-size:15px;font-weight:800;letter-spacing:.16em}
.aim-heading{margin:0 0 10px;color:#c8d2ce;font-size:10px;font-weight:800;letter-spacing:.16em}
.aim-heading .text-button{letter-spacing:0;font-weight:500}
.aim-buttons{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.aim-buttons .secondary{margin:0;padding:12px 5px;font-size:12px;font-weight:700;color:#ecf1ea}
.aim-tip{min-height:30px;margin:9px 0 25px;color:#a1b1ad;font-size:11px;line-height:1.4}
.control-label{display:flex;justify-content:space-between;align-items:baseline;margin:0 0 13px;color:#e6ede7;font-size:14px;font-weight:600}
.control-label strong{color:#eed4a3;font-size:19px;font-variant-numeric:tabular-nums}
input[type=range]{appearance:none;width:100%;height:8px;margin:0;border:1px solid #7b8580;border-radius:99px;background:linear-gradient(90deg,#d6d7bf,#98b2ae 55%,#526267);cursor:pointer}
input[type=range]::-webkit-slider-thumb{appearance:none;width:21px;height:21px;border:4px solid #e9e9df;border-radius:50%;background:#314145;box-shadow:0 2px 8px #0009}
input[type=range]::-moz-range-thumb{width:14px;height:14px;border:4px solid #e9e9df;border-radius:50%;background:#314145;box-shadow:0 2px 8px #0009}
.range-ends{display:flex;justify-content:space-between;margin-top:10px;color:#9caeaa;font-size:10px}
.spin-heading{margin:29px 0 14px;padding-top:24px;border-top:1px solid #78868238;color:#e6ede7;font-size:14px;font-weight:600}
.spin-row{display:flex;align-items:center;gap:19px}
.spin-pad{position:relative;width:126px;height:126px;flex:none;border:4px solid #edf0e9;border-radius:50%;background:radial-gradient(circle at 34% 26%,#fff 2%,#f0f3f1 38%,#c2cccb 76%,#8f9b9c 100%);box-shadow:inset -9px -10px 14px #6b797840,inset 5px 4px 7px #fff,0 7px 17px #0008;cursor:crosshair;touch-action:none}
.spin-pad:after{content:"";position:absolute;inset:6px;border:1px solid #ffffff96;border-radius:50%;pointer-events:none}
.spin-cross{position:absolute;background:#788c8d99}.spin-cross-x{left:14%;top:50%;width:72%;height:1px}.spin-cross-y{left:50%;top:14%;height:72%;width:1px}
#spinDot{position:absolute;left:50%;top:50%;width:13px;height:13px;border:2px solid white;border-radius:50%;background:#dd3038;box-shadow:0 0 0 1px #941e27,0 2px 5px #0005;transform:translate(-50%,-50%)}
.spin-notes{display:grid;gap:8px;color:#b5c4bd;font-size:11px}
.spin-value{margin-top:10px;color:#d8eee7;font-size:12px;font-weight:700}
.primary,.secondary{width:100%;margin-top:11px}
.primary{border:1px solid #f2efdf;border-radius:9px;padding:15px 14px;background:linear-gradient(180deg,#f0ead6,#bfc9bf);box-shadow:inset 0 1px #fff,0 9px 18px #0005;color:#182123;font-weight:900;letter-spacing:.08em;transition:filter .18s,transform .18s}
.primary:hover{filter:brightness(1.08);transform:translateY(-1px)}
#shootBtn{margin-top:27px;font-size:16px}
#restartBtn{background:transparent;color:#ccd6d0}
.control-tip{margin:21px 0 0;padding-top:16px;border-top:1px solid #78868238;color:#9bacaa;font-size:11px;line-height:1.55}
.overlay{position:fixed;inset:0;z-index:10;display:grid;place-items:center;padding:18px;background:#080d0ee8;backdrop-filter:blur(12px)}.overlay.hidden{display:none}
.modal{position:relative;width:min(670px,100%);padding:clamp(25px,4vw,43px);border:1px solid #7c8985;border-radius:18px;background:linear-gradient(150deg,#2a373a,#192326 60%,#11191b);box-shadow:0 30px 95px #000d,inset 0 1px #eaf1e535}
.modal:before{content:"";position:absolute;top:0;left:28px;right:28px;height:2px;background:linear-gradient(90deg,transparent,#e1dbc7,transparent)}
.modal-kicker{color:#c6b592;font-size:11px;font-weight:800;letter-spacing:.22em}
.modal h1,.modal h2{margin:9px 0 13px;line-height:1.08;color:#f3f2e9}.modal h1{font-size:clamp(31px,5vw,44px)}.modal h2{font-size:31px}
.modal p,.modal li{color:#b9c8c2;line-height:1.55}
.mode-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:11px;margin-top:27px}
.mode-card{min-height:162px;padding:18px 15px;border:1px solid #52615e;border-radius:11px;background:linear-gradient(145deg,#29383a,#1c292c);color:#f4f3ec;text-align:left;transition:border-color .18s,transform .18s,background .18s}
.mode-card:hover,.mode-card:focus-visible{border-color:#e0d2b6;background:#334447;transform:translateY(-3px)}
.mode-icon{display:block;margin-bottom:14px;color:#dcc9a7;font-size:28px}.mode-card strong,.mode-card small{display:block}.mode-card strong{font-size:15px}.mode-card small{margin-top:7px;color:#abbbb4;font-size:11px;line-height:1.4}
.resume{width:100%;margin-top:17px}.disclosure{margin:18px 0 0!important;font-size:11px}
.help ol{padding-left:24px}.help li{margin:10px 0}.help .primary{max-width:190px}
.close{position:absolute;right:20px;top:14px;border:0;background:none;color:#fff;font-size:30px}.result .primary,.result .secondary{max-width:220px;margin-right:9px}
.rematch-status{margin:16px 0 10px;color:#f3d58f;font-weight:700;font-variant-numeric:tabular-nums}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){
  #resultOverlay{padding:6px}
  .result{box-sizing:border-box;max-height:calc(100dvh - 12px);overflow-y:auto;padding:13px 18px}
  .result h2{font-size:22px;margin:5px 0}
  .result p{margin:5px 0;font-size:12px}
  .result .victory-reward{min-height:0;margin:6px 0;padding:8px;gap:3px}
  .result .victory-reward strong{font-size:14px}
  .result .victory-reward .secondary{padding:6px 9px;font-size:11px}
  .result .rematch-status{margin:7px 0;font-size:12px}
  .result .primary,.result>.secondary{padding:8px 12px;font-size:12px}
}
@media(max-width:1120px){.game-layout{grid-template-columns:minmax(0,1fr) 292px;gap:18px}.controls{padding:17px}.scorebar{gap:7px}.player{padding:8px}}
@media(max-width:970px){.game-layout{grid-template-columns:1fr}.controls{max-width:620px;width:100%;margin:0 auto}.table-wrap{max-width:100%}}
@media(max-width:640px){.app{padding:14px 9px 25px}.topbar{margin-bottom:17px;padding-bottom:12px}.brand{gap:10px}.brand-ball{width:36px;height:36px;font-size:16px;box-shadow:0 0 0 3px #293539}.brand strong{font-size:14px}.brand small{font-size:9px;letter-spacing:.04em}.top-actions{gap:5px}.top-actions button{padding:8px;font-size:10px}.scorebar{grid-template-columns:1fr 1fr;gap:7px}.score-centre{grid-column:1/-1;grid-row:1;padding:0 0 5px}.score-centre span{font-size:9px}.score-centre strong{font-size:13px}.player{min-height:46px;padding:5px 8px;gap:7px}.avatar{width:28px;height:28px;font-size:11px}.player strong{font-size:11px}.player small{font-size:9px}.table-wrap{padding:4px;border-radius:13px}.table-wrap canvas{border-radius:9px}.table-footer{padding:13px 2px 6px;font-size:10px}.aim-legend{font-size:10px;padding:9px}.controls{display:block;padding:17px}.control-heading,.control-tip{display:flex}.mode-grid{grid-template-columns:1fr;gap:8px}.mode-card{min-height:74px;padding:11px 14px}.mode-icon{display:inline;margin:0 8px 0 0;font-size:19px}.mode-card strong{display:inline}.mode-card small{margin:4px 0 0}}
@media(max-width:970px){
  .app{padding-bottom:168px}
  .mobile-dock{display:block;position:fixed;z-index:8;left:0;right:0;bottom:0;padding:9px max(10px,env(safe-area-inset-right)) calc(10px + env(safe-area-inset-bottom)) max(10px,env(safe-area-inset-left));background:linear-gradient(180deg,#263438f5,#10191dfb);border-top:1px solid #a5b5af85;box-shadow:0 -10px 28px #000a;touch-action:manipulation}
  .mobile-dock-top{display:flex;align-items:center;justify-content:space-between;gap:8px;color:#cbd8d2;font-size:12px;font-weight:700;margin-bottom:7px}
  .mobile-dock-top button{border:0;background:transparent;color:#9eeaf0;font-size:12px;font-weight:700;padding:3px 5px}
  .mobile-dock-actions{display:grid;grid-template-columns:48px 48px minmax(0,1fr) 76px;gap:8px;align-items:end}
  .mobile-dock-actions>button{height:48px;border:1px solid #758b8b;border-radius:10px;background:#263b40;color:#fff;font-size:24px;touch-action:manipulation}
  .mobile-dock-actions #mobileShoot{background:#e1e4d4;color:#14272a;font-size:15px;font-weight:900;border-color:#e5ebdc}
  .mobile-dock-actions button:disabled{opacity:.45}
  .mobile-power{align-self:center;min-width:0}
  .mobile-power label{display:flex;justify-content:space-between;color:#eef2e9;font-size:12px;margin-bottom:12px}
  .mobile-power strong{color:#f4d89a}
  #mobilePower{height:14px;touch-action:none}
  #mobilePower::-webkit-slider-thumb{width:30px;height:30px}
  .controls{margin-top:12px}
  .control-tip{display:none}
}
@media(max-width:420px){.mobile-dock-actions{grid-template-columns:42px 42px minmax(0,1fr) 68px;gap:5px}.mobile-dock-actions>button{height:44px}.mobile-dock-actions #mobileShoot{font-size:13px}.mobile-dock-top{font-size:11px}}
@media(max-width:970px) and (max-height:500px) and (orientation:landscape){
  .app{padding:5px 8px 128px}
  .topbar,.scorebar .player,.table-footer,.aim-legend{display:none}
  .scorebar{display:block;margin:0 0 4px}
  .score-centre{display:flex;justify-content:center;align-items:center;gap:10px;min-height:19px}
  .score-centre span,.score-centre strong{margin:0;font-size:11px}
  .table-wrap{width:min(100%,calc((100dvh - 150px)*1.85185));margin-inline:auto;padding:3px;border-radius:12px}
  .table-wrap canvas{border-radius:9px}
  .controls{margin-top:18px}
}
@media(prefers-reduced-motion:reduce){.ghost,.secondary,.primary,.mode-card{transition:none}}
.rotate-gate{display:none}
@media (pointer:coarse) and (orientation:portrait) and (max-width:1000px){
  .rotate-gate{position:fixed;z-index:30;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:30px;text-align:center;color:#f4f2e9;background:radial-gradient(circle at center,#334449,#101b1f 75%)}
  .rotate-icon{display:grid;place-items:center;width:90px;height:90px;margin-bottom:18px;border:3px solid #cad8d3;border-radius:24px;color:#cfe9e9;font-size:68px;line-height:1;transform:rotate(-35deg)}
  .rotate-gate h2{margin:0 0 10px;font-size:clamp(24px,7vw,36px)}
  .rotate-gate p{max-width:340px;color:#bfd0cd;font-size:16px;line-height:1.5}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  html,body{width:100%;height:100%;overflow:hidden}
  .app{height:100dvh;max-width:none;padding:3px max(6px,env(safe-area-inset-right)) 0 max(6px,env(safe-area-inset-left));overflow:hidden}
  .topbar{height:31px;min-height:0;margin:0;padding:0;border:0}
  .brand{gap:7px}.brand-ball{width:25px;height:25px;font-size:12px;box-shadow:none}.brand strong{font-size:12px;letter-spacing:.1em}.brand small{display:none}
  .top-actions button{padding:3px 8px;font-size:11px}
  .game-layout{display:block;height:calc(100dvh - 34px)}
  .board-column{height:100%;display:flex;flex-direction:column;align-items:center}
  .scorebar{display:grid;grid-template-columns:1fr minmax(120px,1fr) 1fr;gap:5px;width:min(620px,calc(100vw - 190px));height:35px;margin:0 auto 3px}
  .scorebar .player{display:flex;min-height:31px;height:31px;padding:2px 7px;border-radius:7px}
  .scorebar .avatar{width:22px;height:22px;font-size:10px}.scorebar .player strong{font-size:11px}.scorebar .player small{display:none}
  .score-centre{grid-column:auto;grid-row:auto;display:block;padding:0}.score-centre span{font-size:8px}.score-centre strong{font-size:11px;margin-top:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
  .table-wrap{width:min(calc((100dvh - 79px)*1.85185),calc(100vw - 180px));max-width:none;margin:auto;padding:3px;border-radius:11px;box-shadow:0 4px 15px #000a;flex:none}
  .table-wrap canvas{width:100%;border-radius:8px}
  .table-footer,.aim-legend{display:none}
  .mobile-dock{display:block;position:fixed;inset:0;z-index:8;padding:0;background:none;border:0;box-shadow:none;pointer-events:none}
  .mobile-dock-top{display:block;margin:0}.mobile-dock-top span{display:none}
  .mobile-dock-top #mobileSpin{position:absolute;right:calc(8px + env(safe-area-inset-right));top:39px;width:74px;height:34px;padding:3px;border:1px solid #9ab6b3;border-radius:8px;background:#23373bdc;color:#e9f5ed;font-size:11px;pointer-events:auto}
  .mobile-dock-actions{display:contents}
  .mobile-power{position:absolute;left:calc(8px + env(safe-area-inset-left));top:56px;bottom:12px;display:flex;flex-direction:column;align-items:center;width:55px;pointer-events:auto}
  .mobile-power label{display:flex;flex-direction:column;align-items:center;gap:0;margin:0;font-size:10px}.mobile-power strong{font-size:12px}
  #mobilePower{writing-mode:vertical-lr;direction:rtl;appearance:slider-vertical;width:27px;height:100%;min-height:100px;margin:5px 0;touch-action:none}
  .mobile-dock-actions #mobileShoot{position:absolute;right:calc(8px + env(safe-area-inset-right));top:43%;width:74px;height:55px;font-size:17px;pointer-events:auto}
  .mobile-dock-actions #mobileAimLeft,.mobile-dock-actions #mobileAimRight{position:absolute;bottom:14px;width:35px;height:35px;padding:0;font-size:21px;pointer-events:auto}
  #mobileAimLeft{right:calc(49px + env(safe-area-inset-right))}#mobileAimRight{right:calc(8px + env(safe-area-inset-right))}
  .controls{display:none}
  .controls.mobile-spin-open{display:block;position:fixed;z-index:9;right:calc(90px + env(safe-area-inset-right));top:50%;transform:translateY(-50%);width:195px;max-height:calc(100dvh - 12px);overflow:auto;margin:0;padding:12px;background:#152225f2}
  .controls.mobile-spin-open .control-heading,.controls.mobile-spin-open .aim-heading,.controls.mobile-spin-open .aim-buttons,.controls.mobile-spin-open .aim-tip,.controls.mobile-spin-open .control-label,.controls.mobile-spin-open #power,.controls.mobile-spin-open .range-ends,.controls.mobile-spin-open #shootBtn,.controls.mobile-spin-open #placeBtn,.controls.mobile-spin-open #restartBtn{display:none}
  .controls.mobile-spin-open .spin-heading{margin:0 0 8px;padding:0;border:0;font-size:11px}.controls.mobile-spin-open .spin-row{gap:8px}.controls.mobile-spin-open .spin-pad{width:105px;height:105px}.controls.mobile-spin-open .spin-notes{font-size:9px;gap:5px}
  .overlay{z-index:15;overflow:auto;padding:5px}.modal{max-height:calc(100dvh - 10px);overflow:auto;padding:14px}.modal h1{font-size:22px}.modal p{margin:5px 0;font-size:11px}.mode-grid{grid-template-columns:repeat(3,1fr);gap:5px;margin-top:8px}.mode-card{min-height:75px;padding:7px}.mode-icon{display:none}.mode-card strong{font-size:12px}.mode-card small{font-size:10px}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .topbar{display:none}
  .game-layout{height:100dvh}
  .scorebar{height:30px;margin-bottom:1px}
  .table-wrap{width:min(calc((100dvh - 40px)*1.85185),calc(100vw - 180px))}
  .mobile-dock-top #mobileSpin{right:calc(20px + env(safe-area-inset-right));top:40px;display:grid;place-items:center;width:52px;height:52px;padding:4px;border:2px solid #a6b8b5;border-radius:50%;background:#1a2c30e8;box-shadow:0 3px 12px #0008}
  .mobile-dock-top .mobile-cue-ball{position:relative;display:block;width:39px;height:39px;border:2px solid #f8fbf8;border-radius:50%;background:radial-gradient(circle at 30% 22%,#fff 4%,#f6f9f8 42%,#b5c4c6 100%);box-shadow:inset -3px -4px 5px #7c969455,0 1px 5px #0008}
  .mobile-dock-top #mobileSpinDot{position:absolute;display:block;left:50%;top:50%;width:9px;height:9px;border:2px solid #fff;border-radius:50%;background:#e43341;box-shadow:0 0 0 1px #a91d2a;transform:translate(-50%,-50%)}
  .controls.mobile-spin-open{right:calc(82px + env(safe-area-inset-right));width:290px;padding:15px}
  .controls.mobile-spin-open .spin-pad{width:126px;height:126px}
  .controls.mobile-spin-open .spin-heading{font-size:12px}
  .controls.mobile-spin-open .spin-notes{font-size:10px}
  .mobile-dock-actions #mobileShoot{display:none}
  .mobile-power{position:fixed;top:56px;bottom:12px;align-self:auto}
  .mobile-power-track{position:relative;display:block;flex:1;width:12px!important;height:auto!important;min-height:95px;margin:10px auto 15px;border:1px solid #b7c8c4;border-radius:99px;background:#52646a;touch-action:none;cursor:ns-resize}
  .mobile-power-fill{position:absolute;left:0;top:0;width:100%;height:var(--pull,0%);border-radius:99px;background:#32b7ed;pointer-events:none}
  .mobile-power-thumb{position:absolute;left:50%;top:var(--pull,0%);width:31px;height:31px;border:2px solid #dbe5e2;border-radius:50%;background:#fff;box-shadow:0 2px 8px #000a;transform:translate(-50%,-50%);pointer-events:none}
  .mobile-power-track[aria-disabled="true"]{opacity:.5}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .mobile-power{top:62px;bottom:14px;width:62px;padding:0 5px;border:1px solid #7d98995c;border-radius:15px;background:linear-gradient(180deg,#1d2e33e8,#142125ba);box-shadow:inset 0 1px #ffffff22,0 5px 16px #0007}
  .mobile-power label{display:flex;flex-direction:column;align-items:center;justify-content:center;width:100%;min-height:41px;padding:3px 0;border-bottom:1px solid #9badac45;color:#cbd8d5;font-size:9px;line-height:1.05;text-transform:uppercase;letter-spacing:.06em}
  .mobile-power strong{display:block;margin-top:3px;color:#f5f2e7;font-size:16px;font-variant-numeric:tabular-nums;letter-spacing:0}
  #mobilePower.mobile-power-track{width:18px!important;min-height:80px;margin:46px auto 17px;border:1px solid #91adaf;border-radius:99px;background:repeating-linear-gradient(180deg,#ffffff1c 0 1px,transparent 1px 22px),linear-gradient(90deg,#344c52,#647b7e 50%,#2a424a);box-shadow:inset 0 0 0 2px #11262d,0 0 0 3px #7d999a30}
  .mobile-power-fill{background:linear-gradient(180deg,#a9f2ef,#30bddf 60%,#1470c7);box-shadow:0 0 8px #1cc9ec9c}
  .mobile-power-thumb{width:25px;height:25px;border:2px solid #fff;background:radial-gradient(circle at 32% 28%,#fff,#dce8e5 68%,#a4b5b5);box-shadow:0 2px 7px #000b,0 0 0 3px #82c8ce55}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .app{padding:0 max(2px,env(safe-area-inset-right)) 0 max(2px,env(safe-area-inset-left))}
  .scorebar{width:min(680px,calc(100vw - 95px));height:17px;gap:2px;margin:0}
  .scorebar .player{height:17px;min-height:17px;padding:0 4px;border:0;border-radius:0;background:transparent;box-shadow:none;opacity:.8}
  .scorebar .player.active{opacity:1;border:0;box-shadow:none}
  .scorebar .avatar{width:15px;height:15px;border-width:1px;font-size:8px;box-shadow:none}
  .scorebar .player strong{font-size:10px}.scorebar .turn-dot{width:5px;height:5px}
  .score-centre span{font-size:7px;letter-spacing:.08em}.score-centre strong{font-size:10px}
  .table-wrap{width:min(calc((100dvh - 19px)*1.85185),calc(100vw - 12px));padding:2px;border-radius:9px;margin:0 auto;box-shadow:0 3px 10px #0008}
  .table-wrap canvas{border-radius:7px}
  .mobile-power{left:calc(2px + env(safe-area-inset-left));top:44px;bottom:10px;width:31px;padding:0 2px;border:0;border-radius:10px;background:#162b303b;box-shadow:none;backdrop-filter:blur(3px)}
  .mobile-power label{min-height:36px;border:0;color:#fff;font-size:8px;text-shadow:0 1px 3px #000}
  .mobile-power strong{font-size:12px}
  #mobilePower.mobile-power-track{width:13px!important;margin:28px auto 12px;border-color:#c2d5d2a6;box-shadow:inset 0 0 0 1px #102329,0 0 0 2px #28464b55}
  .mobile-power-thumb{width:22px;height:22px}
  .mobile-dock-top #mobileSpin{right:calc(5px + env(safe-area-inset-right));top:20px;width:30px;height:30px;padding:2px;border-width:1px;box-shadow:0 2px 5px #0005}
  .mobile-dock-top .mobile-cue-ball{width:24px;height:24px;border-width:1px}
  .mobile-dock-top #mobileSpinDot{width:7px;height:7px;border-width:1px}
  .mobile-dock-actions #mobileAimLeft,.mobile-dock-actions #mobileAimRight{bottom:5px;width:28px;height:28px;border-radius:7px;font-size:17px;opacity:.78}
  .mobile-dock-actions #mobileAimLeft:disabled,.mobile-dock-actions #mobileAimRight:disabled{opacity:.25}
  #mobileAimLeft{right:calc(36px + env(safe-area-inset-right))}#mobileAimRight{right:calc(5px + env(safe-area-inset-right))}
  .controls.mobile-spin-open{right:calc(40px + env(safe-area-inset-right))}
}
/* Silver room visual system */
:root{color-scheme:dark;color:#ecf5f0;background:#111a1d}
body{background:radial-gradient(ellipse 52% 42% at 50% 31%,#c0a87819,transparent 80%),radial-gradient(ellipse 70% 68% at 52% 60%,#49656b35,transparent 75%),repeating-linear-gradient(90deg,#ffffff04 0 1px,transparent 2px 158px,#05080966 159px 161px,transparent 162px 320px),linear-gradient(120deg,#182326,#11191d 55%,#0b1115)}
body:before{background:repeating-linear-gradient(0deg,transparent 0 6px,#b7d0c508 7px,transparent 8px 17px);opacity:.55}
.topbar{min-height:70px;padding:12px 18px;margin-bottom:22px;border:1px solid #a7bcb047;border-radius:17px;background:linear-gradient(110deg,#243338e8,#172429db 60%,#213037dc);box-shadow:inset 0 1px #ffffff2d,0 14px 35px #0005}
.brand-ball{border-color:#f3f4ea;box-shadow:inset -4px -6px 9px #0009,0 0 0 3px #d3b97988,0 0 18px #d9bc7545}
.brand strong{color:#f9f3dd;letter-spacing:.2em;text-shadow:0 1px 9px #d6b97835}
.brand small{color:#bbcbc6}
.ghost,.secondary{border-color:#a5bbb057;background:linear-gradient(180deg,#304247eb,#1d2b30f0);box-shadow:inset 0 1px #ffffff21,0 5px 12px #0003}
.ghost:hover,.secondary:hover{border-color:#d9c68b;background:#34494c}
.scorebar{margin-bottom:14px}
.player{border-color:#78908a78;background:linear-gradient(135deg,#2f4346d9,#18282dcc);box-shadow:inset 0 1px #ffffff29,0 8px 22px #0004}
.player.active{border-color:#d7c58dbb;box-shadow:inset 0 1px #ffffff3b,0 0 0 1px #d7c58b33,0 9px 25px #0006}
.avatar{border-color:#dbe8dc;background:radial-gradient(circle at 30% 24%,#718e8d,#25373b 72%);box-shadow:inset -2px -3px 5px #0006,0 0 0 2px #dbc68b5e}
.turn-dot{background:#f1d697;box-shadow:0 0 11px #ffe3a8}
.score-centre span{color:#e0c88e}
.score-centre strong{color:#fbf9ee;text-shadow:0 2px 8px #0008}
.table-wrap{border-color:#a5bbb470;background:linear-gradient(145deg,#829794,#1a292d 34%,#0d171b 70%,#6b817f);box-shadow:0 7px 0 #050c0f,0 26px 56px #000a,0 0 38px #b7d0c11f,inset 0 1px #f1faf273}
.table-wrap:after{box-shadow:inset 0 0 0 1px #e8f3eb30}
.aim-legend{border-color:#849a905c;background:#18282dcc;color:#d6e4da}
.controls{border-color:#a0b4a08c;background:linear-gradient(150deg,#2b3d40 0,#1b2b30 48%,#101b20 100%);box-shadow:0 23px 48px #0009,inset 0 1px #ffffff3d}
.controls:before{height:3px;background:linear-gradient(90deg,transparent,#d7c18b 42%,#f4eed7 52%,#d7c18b 62%,transparent)}
.control-heading span{color:#f8f4e7}
.control-label strong,.mobile-power strong{color:#f2d49a}
input[type=range]{background:linear-gradient(90deg,#d8c38e,#90c4be 55%,#3f6669)}
.spin-pad{background:radial-gradient(circle at 32% 23%,#fff 2%,#f5faf7 39%,#c4d2d1 78%,#8ca4a5 100%);box-shadow:inset -10px -10px 15px #6b818044,inset 5px 4px 8px #fff,0 9px 23px #0009,0 0 0 2px #d6bf83a6}
.primary{border-color:#ffe8ae;background:linear-gradient(180deg,#fff5d8,#e1c889 55%,#b69656);box-shadow:inset 0 1px #fff,0 8px 20px #0007;color:#18272a}
.modal{border-color:#aabfb2;background:linear-gradient(145deg,#304549,#1d2e32 52%,#111d21);box-shadow:0 35px 100px #000e,inset 0 1px #e6f2e43f}
.mode-card{border-color:#81998e;background:linear-gradient(135deg,#334a4c,#1c3034);box-shadow:inset 0 1px #ffffff24,0 8px 20px #0004}
.mode-card:hover,.mode-card:focus-visible{border-color:#f0d69a;background:#385558}
.player.active .turn-dot{animation:turnGlow 2.4s ease-in-out infinite}
@keyframes turnGlow{0%,100%{box-shadow:0 0 6px #ffe3a8;opacity:.75}50%{box-shadow:0 0 17px #ffe3a8,0 0 24px #d5b87888;opacity:1}}
@media (min-width:971px){.app{max-width:1680px;padding:22px clamp(18px,2.5vw,46px) 42px}.game-layout{grid-template-columns:minmax(0,1fr) 310px;gap:25px}.table-wrap{padding:9px}}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .scorebar{margin-bottom:0}
  .scorebar .player,.scorebar .player.active{border:0;background:transparent;box-shadow:none}
  .table-wrap{padding:2px;border-color:#bed3c783;box-shadow:0 2px 12px #0009,0 0 18px #c5dfd02e}
  .mobile-power strong{color:#fff}
  .controls.mobile-spin-open{box-shadow:0 15px 40px #000d,inset 0 1px #f1f8ed42}
}
@media(prefers-reduced-motion:reduce){.player.active .turn-dot{animation:none}}
/* Keep the entire table inside Safari's visible landscape viewport, including
   when its browser bars appear or a prior portrait scroll position is restored. */
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  html,body{height:100%;overflow:hidden}
  .app{position:fixed;inset:0 auto auto 0;width:100%;height:var(--play-height,100svh);padding:0 max(2px,env(safe-area-inset-right)) 0 max(2px,env(safe-area-inset-left));overflow:hidden}
  .game-layout,.board-column{height:100%}
  .scorebar{flex:none;height:17px;min-height:17px}
  .table-wrap{width:min(calc((var(--play-height,100svh) - 24px)*1.85185),calc(100vw - 12px));max-height:calc(var(--play-height,100svh) - 19px);margin:0 auto;flex:none}
  .mobile-dock-top #mobileSound{position:absolute;right:calc(6px + env(safe-area-inset-right));top:1px;display:grid;place-items:center;width:26px;height:17px;padding:0;border:0;border-radius:5px;background:#23363bd9;color:#fff;font-size:12px;line-height:1;pointer-events:auto}
  .mobile-dock-top #mobileSound[aria-pressed="false"]{opacity:.6}
}

/* Tournament room: dark oak under warm overhead light, with the table as the
   only bright surface. The gradients are fixed and cheap on mobile Safari. */
:root{background:#130f0d;color:#f3eee3}
body{
  background:
    radial-gradient(ellipse 48% 62% at 50% 42%,#d5bd8050 0%,#a68b5421 46%,transparent 83%),
    radial-gradient(ellipse 92% 90% at 50% 45%,transparent 32%,#050809bd 100%),
    repeating-linear-gradient(90deg,transparent 0 116px,#070a0b9c 117px 120px,#92704b21 121px 122px,transparent 123px 238px),
    linear-gradient(112deg,#251b16 0%,#3c2b1f 26%,#201b18 49%,#392b20 72%,#181615 100%);
}
body:before{background:repeating-linear-gradient(0deg,transparent 0 7px,#e4c69a09 8px,transparent 9px 21px,#05070818 22px,transparent 24px 36px);opacity:.75}
body:after{content:"";position:fixed;inset:0;pointer-events:none;background:linear-gradient(90deg,#03070782,transparent 16% 84%,#03070782),radial-gradient(ellipse 42% 50% at 50% 26%,#f3e2ae0b,transparent 82%)}
.app{z-index:1}
.topbar{border-color:#947d5a73;background:linear-gradient(105deg,#332820ed,#182023ef 54%,#332820ed);box-shadow:inset 0 1px #f3d6a63d,0 12px 30px #0009}
.brand strong{color:#fff5dd}.brand small{color:#d0baa0}
.ghost,.secondary{border-color:#9b876a7d;background:linear-gradient(#323335,#1b2427);color:#f0ebdf}
.scorebar .player{border-color:#8d765888;background:linear-gradient(135deg,#372c25e8,#172124df);box-shadow:inset 0 1px #ffedd530,0 9px 20px #0006}
.scorebar .player.active{border-color:#d8bc7cab;box-shadow:inset 0 1px #fff2cf75,0 0 0 1px #cdb27526,0 8px 25px #0009}
.score-centre span{color:#e8c988}.score-centre strong{color:#fff9e9}
.table-wrap{border-color:#b191654d;background:linear-gradient(145deg,#715338,#241a15 22%,#13191a 72%,#79593c);box-shadow:0 8px 0 #090908,0 30px 66px #000c,0 0 80px #e7cb8b26,inset 0 1px #f3dfad7a}
.table-wrap:after{box-shadow:inset 0 0 0 1px #efdcaf38}
.aim-legend{border-color:#8e76575c;background:#1d201eed;color:#d8d9cc}
.controls{border-color:#a3896291;background:linear-gradient(155deg,#37312a,#1b2527 53%,#171b1c);box-shadow:0 22px 50px #000a,inset 0 1px #fff0d04b}
.controls:before{background:linear-gradient(90deg,transparent,#a7834c 28%,#f6dfaa 50%,#a7834c 72%,transparent)}
.modal{border-color:#bda57d;background:linear-gradient(145deg,#3c352c,#222a29 52%,#14191a)}
.mode-card{border-color:#957b597e;background:linear-gradient(135deg,#403a30,#202d2c)}
.mode-card:hover,.mode-card:focus-visible{border-color:#e4c988;background:#4d4838}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .table-wrap{border-color:#c5a5749c;box-shadow:0 3px 0 #080b0a,0 14px 36px #000b,0 0 58px #d9bd7c28}
  .mobile-power{background:#271f1a63}
  .mobile-dock-actions #mobileAimLeft,.mobile-dock-actions #mobileAimRight{border-color:#c6ad80a3;background:#2b2b2ad9;color:#fff2d7}
  .mobile-dock-top #mobileSpin{border-color:#ceb889;background:#2b2824ed}
  .scorebar .player,.scorebar .player.active{background:transparent;border:0;box-shadow:none}
}

/* Warm timber and restrained tournament lighting behind the real cloth texture. */
body{background:#17100c url('assets/arena-floor.webp') center center/cover no-repeat fixed}
body:before{background:radial-gradient(ellipse 60% 58% at 50% 44%,#edcf8730 0%,transparent 77%),linear-gradient(90deg,#0507079e,transparent 22% 78%,#0507079e);opacity:1}
body:after{background:radial-gradient(ellipse 80% 90% at 50% 48%,transparent 48%,#030405aa 100%)}
.table-wrap{border-color:#a49072a8;background:#151311;box-shadow:0 5px 0 #080808,0 22px 48px #000c,0 0 50px #e1bb7133,inset 0 1px #fff5d6a6}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  body{background-attachment:scroll}
  .table-wrap{box-shadow:0 2px 0 #080808,0 10px 26px #000c,0 0 26px #d6b77c40}
}

/* Full table layout: floating tools leave the playing surface centred. */
body:before{background:radial-gradient(ellipse 68% 62% at 50% 47%,#f1d39a36 0%,#b3834930 36%,transparent 78%);opacity:1}
body:after{background:radial-gradient(ellipse 73% 76% at 50% 48%,transparent 30%,#030303b8 100%)}
.app{max-width:none;padding:8px 2vw 10px}
.topbar{width:min(92vw,calc((100dvh - 98px)*1.85185));min-height:40px;height:40px;margin:0 auto 2px;padding:0 4px;border:0;background:transparent;box-shadow:none}
.brand-ball{width:30px;height:30px;font-size:14px;box-shadow:none}.brand{gap:9px}.brand strong{font-size:13px;letter-spacing:.12em}.brand small{display:none}
.top-actions{gap:6px}.hud-icon{display:grid;place-items:center;width:34px;height:34px;padding:0;border:1px solid #ffffff41;border-radius:50%;background:#ffffff14;color:#f5f4e9;backdrop-filter:blur(8px);box-shadow:inset 0 1px #ffffff30,0 3px 12px #0005;font-size:18px;line-height:1}
.hud-icon:hover{background:#ffffff29}
.game-layout{display:block;width:100%}.board-column{position:relative;width:100%;display:flex;flex-direction:column;align-items:center}
.scorebar{width:min(92vw,calc((100dvh - 98px)*1.85185));height:31px;margin:0 0 3px;gap:8px}
.scorebar .player{min-height:27px;height:27px;padding:2px 9px;border-color:#ffffff30;border-radius:14px;background:#ffffff12;backdrop-filter:blur(8px);box-shadow:inset 0 1px #ffffff1c}
.scorebar .avatar{width:21px;height:21px;font-size:10px}.scorebar .player strong{font-size:11px}.scorebar .player small{font-size:9px}.score-centre span{font-size:8px}.score-centre strong{margin:0;font-size:11px}
.table-wrap{width:min(92vw,calc((100dvh - 98px)*1.85185));max-width:none;margin:auto;padding:4px;border-radius:18px;box-shadow:0 9px 0 #060607,0 22px 28px #000b,0 35px 76px 22px #000a,0 0 38px #e1bb7130,inset 0 1px #fff5d6a6}
.table-wrap:before{content:"";position:absolute;z-index:-1;inset:7px 3px -15px;border-radius:25px;box-shadow:0 25px 30px 10px #000a;filter:blur(24px);pointer-events:none}
.table-footer,.aim-legend{display:none}
.shot-gauge{position:fixed;z-index:5;left:clamp(6px,1vw,18px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;gap:7px;color:#f4ead8;font-size:9px;font-weight:800;letter-spacing:.08em;text-shadow:0 1px 4px #000;pointer-events:none}
.shot-gauge-track{position:relative;width:8px;height:clamp(90px,30vh,220px);border:1px solid #ffffff6c;border-radius:99px;background:#ffffff21;backdrop-filter:blur(8px);overflow:hidden}
.shot-gauge-track i{position:absolute;bottom:0;left:0;right:0;height:0;background:linear-gradient(0deg,#2bcbd6,#efe4bd);box-shadow:0 0 10px #4ed9e8}
.shot-gauge strong{font-size:10px;letter-spacing:0}
.spin-trigger{position:fixed;z-index:7;right:clamp(8px,1.3vw,24px);bottom:clamp(9px,2vh,24px);display:grid;place-items:center;width:36px;height:36px;padding:2px;border:1px solid #ffffff81;border-radius:50%;background:#ffffff18;backdrop-filter:blur(8px);box-shadow:0 3px 12px #0009}
.spin-trigger .mobile-cue-ball{position:relative;display:block;width:27px;height:27px;border:1px solid #fff;border-radius:50%;background:radial-gradient(circle at 30% 22%,#fff,#e7efef 65%,#9fb0b3);box-shadow:inset -2px -2px 4px #51606566}
.spin-trigger #mobileSpinDot{position:absolute;left:50%;top:50%;width:8px;height:8px;border:1px solid #fff;border-radius:50%;background:#dd3038;transform:translate(-50%,-50%)}
.spin-popover{position:fixed;z-index:8;right:clamp(8px,2vw,30px);bottom:clamp(52px,8vh,90px);width:260px;padding:16px;border:1px solid #ffffff57;border-radius:16px;background:#17272bdc;backdrop-filter:blur(12px);box-shadow:0 14px 36px #000b}
.spin-popover[hidden]{display:none}.spin-popover .spin-heading{margin:0 0 12px;padding:0;border:0;font-size:12px}.spin-popover .spin-row{gap:11px}.spin-popover .spin-notes{font-size:10px}
.place-cue{position:fixed;z-index:6;right:56px;bottom:12px;padding:8px 11px;border:1px solid #ffffff7c;border-radius:20px;background:#1c3132d9;color:#fff}.place-cue[hidden]{display:none}
.mobile-dock{display:none}
.touch-power{display:none}
.aim-wheel{display:none}
.mobile-tools-panel{display:none}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .app{position:fixed;inset:0;width:100%;height:var(--play-height,100svh);padding:0 2px;overflow:hidden}
  .topbar{display:flex;position:fixed;z-index:6;top:1px;left:auto;right:5px;transform:none;width:auto;height:26px;min-height:26px;margin:0}.brand{display:none}.top-actions{gap:3px}.top-actions #helpBtn{display:none}.hud-icon{width:25px;height:25px;font-size:13px}
  .game-layout,.board-column{height:100%}.board-column{justify-content:center}
  .scorebar{position:absolute;z-index:4;top:1px;left:50%;transform:translateX(-50%);width:min(53vw,590px);height:20px;margin:0;pointer-events:none}.scorebar .player,.scorebar .player.active{height:19px;min-height:19px;background:#151e2077;border:0;border-radius:10px}.scorebar .player small{display:none}.score-centre strong{font-size:9px}
  .table-wrap{width:min(calc((var(--play-height,100svh) - 24px)*1.85185),calc(100vw - 76px));max-height:calc(var(--play-height,100svh) - 16px);margin:auto;padding:2px;border-radius:10px;box-shadow:0 5px 0 #060607,0 15px 23px #000c,0 25px 36px 13px #0009}
  .shot-gauge{display:none}
  .spin-trigger{right:5px;bottom:5px;width:36px;height:36px}
  .spin-popover{right:45px;bottom:6px;width:220px;max-height:calc(100svh - 15px);overflow:auto;padding:11px}.spin-popover .spin-pad{width:105px;height:105px}
  .mobile-dock{display:block;position:fixed;inset:0;z-index:5;pointer-events:none;background:none;border:0;box-shadow:none}.mobile-dock-top{display:none}.mobile-dock-actions{display:contents}
  .touch-power{position:fixed;top:51%;left:8px;transform:translateY(-50%);display:flex;flex-direction:column;align-items:center;width:53px;padding:6px 2px 8px;border:1px solid #d8e8e95e;border-radius:18px;background:#11272ab8;backdrop-filter:blur(8px);box-shadow:0 8px 22px #0008,inset 0 1px #ffffff35;color:#fff;pointer-events:none;text-align:center}
  .touch-power-label{display:flex;flex-direction:column;align-items:center;gap:2px;font-size:9px;font-weight:800;letter-spacing:.08em;text-shadow:0 1px 3px #000}
  .touch-power-label strong{font-size:15px;letter-spacing:0;font-variant-numeric:tabular-nums;color:#b9f8ff}
  .touch-power-track{position:relative;display:block;width:44px;height:clamp(125px,35svh,235px);margin:21px 0 20px;touch-action:none;pointer-events:auto;cursor:ns-resize}
  .touch-power-line,.touch-power-fill{position:absolute;left:50%;top:0;width:11px;height:100%;border:1px solid #bed2d2aa;border-radius:99px;transform:translateX(-50%);background:linear-gradient(90deg,#31474d,#6d8788 50%,#253c42);box-shadow:inset 0 0 0 2px #14282c}
  .touch-power-fill{height:var(--pull,0%);border:0;background:linear-gradient(180deg,#c2fff8,#39d4e4 65%,#138abc);box-shadow:0 0 10px #26d3e6b0}
  .touch-power-thumb{position:absolute;left:50%;top:var(--pull,0%);width:36px;height:36px;border:2px solid #fff;border-radius:50%;transform:translate(-50%,-50%);background:radial-gradient(circle at 34% 25%,#fff 5%,#e8f5f4 56%,#9eb9bd);box-shadow:0 2px 9px #000b,0 0 0 3px #5edbe555;pointer-events:none}
  .touch-power small{color:#e5f0ec;font-size:8px;font-weight:700;line-height:1.25;text-shadow:0 1px 3px #000}
  .touch-power-track[aria-disabled="true"]{opacity:.48;pointer-events:none}
  .aim-wheel{position:fixed;right:7px;top:49%;transform:translateY(-50%);display:flex;align-items:center;justify-content:center;width:50px;height:126px;border:1px solid #d4eef278;border-radius:28px;background:linear-gradient(90deg,#102528dd,#26383bd9 50%,#102528dd);box-shadow:0 8px 22px #0009,inset 0 1px #ffffff50;backdrop-filter:blur(8px);touch-action:none;pointer-events:auto;cursor:ns-resize}
  .aim-wheel-dial{width:37px;height:78px;border:1px solid #b8d7db9c;border-radius:20px;background:repeating-linear-gradient(0deg,#e3f4f1 0 2px,#264348 2px 8px);box-shadow:inset 3px 0 6px #fff4,inset -4px 0 7px #0008,0 0 12px #54d5e650}
  .aim-wheel[aria-disabled="true"]{opacity:.45;pointer-events:none}
  #mobileSpin{width:44px;height:44px;padding:2px;border:0;background:transparent;backdrop-filter:none;box-shadow:none;pointer-events:auto}
  #mobileSpin .mobile-cue-ball{width:40px;height:40px;border:2px solid #fff;box-shadow:inset -3px -4px 6px #51606566,0 3px 9px #0009}
  #mobileSpin #mobileSpinDot{width:11px;height:11px;background:#df2433;box-shadow:0 0 0 1px #a41825}
}

/* A real room around the table gives the game a sense of place. The canvas
   and all play coordinates remain unchanged; only its CSS footprint shrinks. */
body{background:#120b0b url('assets/vip-room.webp') center center/cover no-repeat fixed}
body:before{background:linear-gradient(90deg,#0803058c,transparent 18% 82%,#0803058c);opacity:.55}
body:after{background:radial-gradient(ellipse 75% 75% at 50% 51%,transparent 52%,#05030470 100%)}
@media (pointer:fine) and (min-width:900px) and (min-height:600px){
  .app{box-sizing:border-box;min-height:100dvh;display:flex;flex-direction:column;justify-content:center;padding:24px 4vw 32px}
  .topbar,.scorebar,.table-wrap{width:min(78vw,calc((100dvh - 220px)*1.85185))}
  .topbar{margin:0 auto 9px}
  .table-wrap{box-shadow:0 8px 0 #08090a,0 28px 38px #000c,0 56px 90px 20px #0009,inset 0 1px #fff5d6a6}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  body{background-attachment:scroll;background-position:center 42%}
}

/* Warm graphite cloth and aged bronze belong to the walnut room. */
.table-wrap{border-color:#9d7652;background:linear-gradient(145deg,#7b5840,#211917 28%,#100f10 72%,#75543d);box-shadow:0 8px 0 #090706,0 29px 54px #000c,0 0 38px #b26f4830,inset 0 1px #f3d2a079}
.table-wrap:after{box-shadow:inset 0 0 0 1px #edc89636}
.hud-icon{border-color:#cda97b6e;background:#1e1718bf;color:#f5e6d0}
.scorebar .player,.scorebar .player.active{background:#201719b8;border-color:#c49b6c56;box-shadow:inset 0 1px #f4d5ab24}
.score-centre span{color:#dbbc92}.score-centre strong{color:#fff5e8}
@media (pointer:fine) and (min-width:900px) and (min-height:600px){
  .app{--room-table-width:min(78vw,calc((100dvh - clamp(200px,20dvh,340px))*1.85185))}
  .topbar,.scorebar,.table-wrap{box-sizing:border-box;width:var(--room-table-width)}
  .topbar{height:48px;min-height:48px;margin:0 auto 8px;padding:6px 11px;border:1px solid #c49b6c52;border-radius:14px;background:linear-gradient(90deg,#1c1415d9,#2c1d1fbd 52%,#1c1415d9);box-shadow:0 10px 24px #0008,inset 0 1px #f4d5ab28}
  .brand strong{font-size:14px}.brand-ball{width:29px;height:29px;font-size:13px}
  .scorebar{height:36px;margin-bottom:7px}.scorebar .player{height:34px;min-height:34px;padding:4px 11px}.scorebar .avatar{width:24px;height:24px}.scorebar .player strong{font-size:12px}.score-centre strong{font-size:13px}
  .table-wrap{box-shadow:0 9px 0 #090706,0 32px 45px #000c,0 55px 95px 14px #0009,0 0 42px #b26f4830,inset 0 1px #f3d2a079}
  .shot-gauge{left:max(9px,calc((100vw - var(--room-table-width))/2 - 42px))}
  .spin-trigger{right:max(9px,calc((100vw - var(--room-table-width))/2 - 45px));bottom:10vh}
}

/* Ambient light remains in the room, while the felt stays the visual focus. */
body{background:#120b0b}
body:before{z-index:0;background:url('assets/vip-room.webp') center center/cover no-repeat;filter:brightness(1.2) saturate(1.04);opacity:1}
body:after{z-index:0;background:radial-gradient(ellipse 78% 82% at 50% 54%,transparent 60%,#09040540 100%)}
.push-out-btn{position:fixed;z-index:8;left:50%;bottom:50px;transform:translateX(-50%);padding:7px 12px;border:1px solid #c8af80a3;border-radius:999px;background:#15282cdd;color:#f4e7cb;font-weight:700;cursor:pointer}
.push-out-btn[hidden]{display:none}.push-out-btn[aria-pressed="true"]{background:#b8a06a;color:#102026}
@media(max-width:700px){.push-out-btn{bottom:40px;font-size:10px}}

/* Cue shop and local wallet */
.coin-hud{display:flex;align-items:center;gap:5px;height:34px;padding:0 10px;border:1px solid #d6b76e80;border-radius:18px;background:#211b16d9;color:#ffe5a5;backdrop-filter:blur(8px);font-size:12px;cursor:pointer}
.coin-hud span,.shop-wallet span{display:inline-grid;place-items:center;width:18px;height:18px;border:1px solid #ffdf82;border-radius:50%;background:radial-gradient(circle at 30% 25%,#fff2a7,#e6a322 62%,#895416);box-shadow:0 0 9px #ffbd4a70;color:#a97012;font-size:8px}
.coin-hud strong,.shop-wallet strong{font-variant-numeric:tabular-nums}
.shop-modal{width:min(960px,100%);max-height:calc(100dvh - 28px);overflow:auto;background:linear-gradient(145deg,#233034ed,#111d21f2);backdrop-filter:blur(16px)}
.shop-heading{display:flex;justify-content:space-between;align-items:center;gap:15px;padding-right:38px}.shop-heading h2{margin-bottom:4px}.shop-heading p{margin:0;font-size:12px}
.shop-wallet{display:flex;align-items:center;gap:5px;flex:none;padding:8px 11px;border:1px solid #d6b76e65;border-radius:20px;background:#241c15;color:#ffe2a1;font-size:13px;font-weight:800}
.shop-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(165px,1fr));gap:11px;margin-top:19px}
@media(min-width:900px){.shop-grid{grid-template-columns:repeat(5,minmax(0,1fr))}}
.shop-card{min-width:0;padding:12px;border:1px solid color-mix(in srgb,var(--cue-color) 48%,#485b60);border-radius:14px;background:radial-gradient(ellipse at 50% 0%,color-mix(in srgb,var(--cue-color) 17%,transparent),transparent 67%),linear-gradient(155deg,#ffffff13,#ffffff06 55%,#040d1040);box-shadow:inset 0 1px #ffffff24,0 8px 22px #0005}
.shop-card.equipped{border-color:#5be1c1a8;box-shadow:inset 0 1px #ffffff24,0 0 20px #39dcb41f}
.shop-cue-preview{position:relative;display:grid;place-items:center;height:86px;margin-bottom:9px;overflow:hidden;border:1px solid color-mix(in srgb,var(--cue-color) 42%,#16282b);border-radius:10px;background:radial-gradient(ellipse at 50% 48%,color-mix(in srgb,var(--cue-color) 25%,#1b242a) 0%,#10191e 70%)}
.shop-cue-preview:before{content:"";position:absolute;inset:-60% 35%;transform:rotate(22deg);background:linear-gradient(90deg,transparent,#fff3,transparent);opacity:0;pointer-events:none}
.shop-card.tier-7 .shop-cue-preview:before,.shop-card.tier-8 .shop-cue-preview:before,.shop-card.tier-9 .shop-cue-preview:before,.shop-card.tier-10 .shop-cue-preview:before{opacity:.45;animation:cueShimmer 4.8s ease-in-out infinite}
@keyframes cueShimmer{0%,45%,100%{translate:-100% 0}70%{translate:150% 0}}
.cue-illustration{display:block;width:112%;height:100%;overflow:visible;transform:rotate(-8deg);filter:drop-shadow(0 4px 4px #000b)}
.shop-card.tier-6 .cue-illustration,.shop-card.tier-7 .cue-illustration,.shop-card.tier-8 .cue-illustration,.shop-card.tier-9 .cue-illustration,.shop-card.tier-10 .cue-illustration{filter:drop-shadow(0 0 5px var(--cue-color)) drop-shadow(0 4px 4px #000b)}
.shop-cue-tag{position:absolute;top:5px;right:6px;padding:2px 5px;border:1px solid color-mix(in srgb,var(--cue-color) 67%,#fff);border-radius:4px;background:#071216b8;color:#f8f5ec;font-size:8px;font-weight:900;letter-spacing:.1em;text-shadow:0 1px 3px #000}
.shop-card.tier-8,.shop-card.tier-9,.shop-card.tier-10{box-shadow:inset 0 1px #ffffff40,0 0 18px color-mix(in srgb,var(--cue-color) 20%,transparent),0 8px 22px #0007}
.shop-card h3{margin:0 0 10px;color:#f6f3e9;font-size:14px}.shop-stat{display:grid;grid-template-columns:40px 1fr 19px;align-items:center;gap:6px;margin:5px 0;color:#c5d4d0;font-size:10px}
.shop-stat meter{width:100%;height:8px;accent-color:#d2ad69}.shop-stat b{text-align:right;color:#f2dfad}
.shop-action{width:100%;min-height:33px;margin-top:12px;border:1px solid #dabf8299;border-radius:8px;background:linear-gradient(#e5c777,#b88635);color:#201810;font-size:11px;font-weight:900;cursor:pointer}
.shop-action:disabled{border-color:#6a747370;background:#4f5a59;color:#b9c4bf;cursor:default}
.shop-card.equipped .shop-action{border-color:#56d9ba;background:#2caa88;color:#fff}
.shop-message{min-height:18px;margin:10px 0 0!important;color:#ffe5a5!important;font-size:12px!important}
.victory-reward{position:relative;display:flex;flex-direction:column;align-items:flex-start;gap:6px;min-height:93px;margin:13px 0;padding:13px;border:1px solid #e7ba5e91;border-radius:12px;background:linear-gradient(110deg,#59411d77,#1e2925);color:#ffe19b;overflow:hidden}
.victory-reward[hidden]{display:none}.victory-reward strong{position:relative;z-index:1;font-size:18px}.victory-reward .secondary{position:relative;z-index:1;max-width:250px;margin:2px 0 0}.victory-reward small{position:relative;z-index:1;color:#d8c8a8}
.coin-burst{position:absolute;inset:0;pointer-events:none}.coin-burst i{position:absolute;left:50%;top:53%;width:10px;height:10px;border:1px solid #fff1a5;border-radius:50%;background:linear-gradient(130deg,#fff0a1,#e9ad27);box-shadow:0 0 10px #f6bf43;animation:coinFly .85s ease-out both;animation-delay:var(--delay)}
@keyframes coinFly{from{opacity:1;transform:translate(-50%,-50%) scale(.5)}to{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.15)}}
@media(max-width:700px){.shop-modal{max-height:calc(100dvh - 10px);padding:12px}.shop-heading h2{font-size:19px}.shop-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.shop-card{padding:8px}.shop-cue-preview{height:59px}.shop-stat{margin:2px 0;font-size:9px}.coin-hud{height:25px;padding:0 6px;font-size:10px}.coin-hud span{width:14px;height:14px}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){.shop-modal{width:min(100%,900px);padding:12px}.shop-heading h2{font-size:19px}.shop-heading p{display:none}.shop-grid{display:flex;gap:8px;margin-top:9px;overflow-x:auto;scroll-snap-type:x mandatory;padding-bottom:6px}.shop-card{flex:0 0 165px;padding:8px;scroll-snap-align:start}.shop-cue-preview{height:57px}.shop-stat{margin:3px 0}.shop-action{margin-top:8px}.shop-message{margin-top:4px!important}}
@media(prefers-reduced-motion:reduce){.shop-cue-preview:before{animation:none!important}}

/* Mode lobby */
.lobby-modal{box-sizing:border-box;width:min(920px,100%);max-height:calc(100dvh - 28px);overflow-y:auto;padding:28px;border:1px solid #ffffff30;border-radius:20px;background:rgba(15,17,23,.85);box-shadow:0 20px 50px #000c,inset 0 1px #ffffff18;backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
.lobby-modal:before{left:18%;right:18%;height:1px;background:linear-gradient(90deg,transparent,#e7c479a6,transparent)}
.lobby-heading{display:flex;align-items:center;gap:14px;min-height:58px;margin:0 48px 20px 0}
.lobby-heading-ball{display:grid;place-items:center;flex:none;width:52px;height:52px;border:3px solid #ece8df;border-radius:50%;background:radial-gradient(circle at 35% 25%,#5c636a,#13171b 50%,#030405 80%);box-shadow:inset -4px -6px 8px #000b,0 0 0 1px #dcb66b9c,0 0 22px #e9bb5d3d;color:#fff;font-size:24px;font-weight:900}
.lobby-heading-nine{background:radial-gradient(circle at center,#fffdf1 0 31%,transparent 33%),linear-gradient(180deg,#fffef5 0 19%,#f4cb3b 27%,#e5aa0b 72%,#f9f7eb 82%);color:#342a1a;box-shadow:inset -4px -6px 8px #8a580c87,0 0 0 1px #dcb66b9c,0 0 22px #e9bb5d3d}
.lobby-eyebrow{color:#dfb861;font-size:10px;font-weight:900;letter-spacing:.2em}
.lobby-modal h1{margin:4px 0 0;color:#fff5dc;font-size:clamp(24px,3.1vw,33px);font-weight:950;letter-spacing:.045em;text-shadow:0 0 22px #e3af4750}
.lobby-close{top:21px;right:21px;display:grid;place-items:center;width:36px;height:36px;border:1px solid #ffffff39;border-radius:50%;background:#ffffff12;color:#f8f4eb;font-size:27px;line-height:1;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}
.lobby-close:hover,.lobby-close:focus-visible{border-color:#ecc778;background:#eac16f25;transform:rotate(90deg)}
.lobby-modal .mode-grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:11px;margin:0}
.lobby-modal .mode-card{position:relative;display:flex;align-items:center;gap:14px;grid-column:span 2;min-width:0;min-height:112px;padding:15px;border:1px solid #ffffff26;border-radius:15px;background:linear-gradient(135deg,#ffffff12,#ffffff06 56%,#d1a24d08);box-shadow:inset 0 1px #ffffff1e,0 8px 20px #0005;color:#fff;text-align:left;cursor:pointer;overflow:hidden;transition:transform .18s,border-color .18s,box-shadow .18s,background .18s}
.lobby-modal .mode-card:nth-child(n+4){grid-column:span 3}
.lobby-modal .mode-card:hover,.lobby-modal .mode-card:focus-visible{border-color:#ecc676;background:linear-gradient(135deg,#d9a55225,#ffffff0c);box-shadow:inset 0 1px #fff5db53,0 0 0 1px #d7a65350,0 0 26px #e3ac4d35;transform:translateY(-3px)}
.lobby-art{position:relative;display:grid;place-items:center;flex:none;width:57px;height:57px}
.lobby-target{border:2px solid #adcbd0;border-radius:50%;background:radial-gradient(circle at 35% 25%,#fff,#c3d2d2 70%,#7e9799);box-shadow:inset -4px -5px 8px #63777c99,0 3px 10px #0008}
.lobby-target:before,.lobby-target:after{content:"";position:absolute;background:#6c939988}.lobby-target:before{width:1px;height:70%}.lobby-target:after{width:70%;height:1px}.lobby-target i{z-index:1;width:12px;height:12px;border:3px solid #fff;border-radius:50%;background:#dc3940;box-shadow:0 0 0 1px #a11f2b,0 1px 4px #0007}
.lobby-ball{width:56px;height:56px;border:2px solid #dce4e5;border-radius:50%;font-size:25px;font-weight:950;box-shadow:inset -6px -8px 9px #0009,inset 3px 3px 7px #fff8,0 4px 10px #0008}
.lobby-eight{background:radial-gradient(circle at 35% 24%,#647078,#13191d 47%,#030405 82%);color:#111}.lobby-eight:before,.lobby-nine:before,.lobby-ten:before{content:"";position:absolute;z-index:0;width:29px;height:29px;border-radius:50%;background:#f5f3eb;box-shadow:0 1px 3px #0008}.lobby-eight,.lobby-nine,.lobby-ten{isolation:isolate}.lobby-eight:before,.lobby-nine:before,.lobby-ten:before{z-index:-1}
.lobby-nine{background:radial-gradient(circle at 30% 18%,#fffef5 0 14%,transparent 34%),linear-gradient(180deg,#fffef6 0 20%,#f4cb3b 27%,#e5aa0b 69%,#f9f7eb 81% 100%);color:#332b1d;font-size:19px}
.lobby-ten{background:radial-gradient(circle at 32% 24%,#e9eff5 0 20%,#3674c5 47%,#0b2c63 82%);color:#142744;font-size:17px}
.lobby-cues:before,.lobby-cues:after{content:"";position:absolute;width:6px;height:62px;border-radius:4px 4px 1px 1px;background:linear-gradient(#2a7bb9 0 5%,#e7e3d6 5% 13%,#d9ae72 13% 70%,#322c28 70%);box-shadow:0 2px 5px #0009}.lobby-cues:before{transform:rotate(43deg)}.lobby-cues:after{transform:rotate(-43deg)}
.lobby-rack{width:60px;height:60px;background:radial-gradient(circle at 50% 13%,#faf5e8 0 6px,transparent 7px),radial-gradient(circle at 37% 35%,#2979c9 0 6px,transparent 7px),radial-gradient(circle at 63% 35%,#c43238 0 6px,transparent 7px),radial-gradient(circle at 25% 60%,#e9b824 0 6px,transparent 7px),radial-gradient(circle at 50% 60%,#f6eddf 0 7px,transparent 8px),radial-gradient(circle at 75% 60%,#269456 0 6px,transparent 7px);filter:drop-shadow(0 3px 3px #000a)}.lobby-rack i{position:absolute;top:28px;left:25px;color:#1e2430;font-size:10px;font-style:normal;font-weight:900}
.lobby-modal .mode-copy{display:flex;flex-direction:column;gap:7px;min-width:0}.lobby-modal .mode-copy strong{display:block;color:#f8f5ed;font-size:14px;font-weight:900;line-height:1.2;letter-spacing:.015em}.lobby-modal .mode-copy small{display:inline-flex;align-items:center;gap:5px;width:max-content;max-width:100%;margin:0;padding:5px 8px;border:1px solid #90c6ce40;border-radius:99px;background:#61bad819;color:#b7e5eb;font-size:10px;font-weight:750;line-height:1}.lobby-modal .mode-copy b{color:#f1d48d;font-size:9px}.mode-arrow{position:absolute;right:12px;top:9px;color:#c3a35c9c;font-size:18px;transition:transform .18s}.mode-card:hover .mode-arrow{transform:translate(2px,-2px)}
.lobby-modal .resume{display:block;width:100%;min-height:36px;margin:10px 0 0;border:1px solid #ffffff30;border-radius:10px;background:#ffffff0c;color:#d9e4e4;font-size:12px;font-weight:800}.lobby-modal .resume[hidden]{display:none}
.lobby-shop{display:flex;justify-content:center;align-items:center;gap:10px;width:100%;min-height:47px;margin-top:14px;border:1px solid #f6d175;border-radius:12px;background:linear-gradient(135deg,#f9ba36,#d97706);box-shadow:inset 0 1px #fff4b7c9,0 7px 24px #dc8b264a;color:#19130a;font-size:15px;font-weight:950;letter-spacing:.07em;cursor:pointer;transition:filter .18s,transform .18s}.lobby-shop:hover,.lobby-shop:focus-visible{filter:brightness(1.13);transform:translateY(-2px)}.lobby-shop>span:first-child{font-size:22px;line-height:1}.lobby-shop-coin{color:#ffeb8b;font-size:15px;text-shadow:0 0 7px #fff1ae,0 0 13px #fff1ae}
@media(max-width:700px){.lobby-modal{padding:16px}.lobby-heading{gap:10px;margin-bottom:14px}.lobby-heading-ball{width:42px;height:42px;font-size:19px}.lobby-modal h1{font-size:22px}.lobby-modal .mode-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.lobby-modal .mode-card,.lobby-modal .mode-card:nth-child(n+4){grid-column:span 1;min-height:96px;padding:10px;gap:8px}.lobby-art{transform:scale(.78);margin:-5px}.lobby-modal .mode-copy strong{font-size:11px}.lobby-modal .mode-copy small{font-size:9px}.lobby-shop{min-height:40px;font-size:12px}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){#menuOverlay{padding:6px}.lobby-modal{width:min(800px,100%);max-height:calc(100dvh - 12px);padding:10px 16px}.lobby-heading{min-height:32px;margin-bottom:8px}.lobby-heading-ball{width:32px;height:32px;font-size:15px}.lobby-eyebrow{font-size:8px}.lobby-modal h1{font-size:18px;margin-top:1px}.lobby-close{top:8px;right:10px;width:28px;height:28px;font-size:22px}.lobby-modal .mode-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.lobby-modal .mode-card{grid-column:span 2;min-height:75px;padding:7px 9px;gap:6px}.lobby-modal .mode-card:nth-child(n+4){grid-column:span 3}.lobby-art{transform:scale(.66);margin:-10px}.lobby-modal .mode-copy strong{font-size:10px}.lobby-modal .mode-copy small{padding:3px 6px;font-size:8px}.mode-arrow{font-size:13px}.lobby-shop{min-height:34px;margin-top:8px;font-size:11px}.lobby-modal .resume{min-height:26px;margin-top:5px;font-size:10px}}

@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){.push-out-btn{bottom:66px}}

/* Online search and versus reveal */
.lobby-modal .mode-card:nth-child(n+4){grid-column:span 2}
.match-modal,.vs-modal{box-sizing:border-box;width:min(440px,100%);padding:30px;text-align:center;border:1px solid #d8bd7b62;border-radius:20px;background:#10141de8;box-shadow:0 25px 60px #000c;backdrop-filter:blur(16px)}
.match-modal:before,.vs-modal:before{display:none}.match-modal h2,.vs-modal h2{margin:10px 0;color:#fff3dc;font-size:25px}
.match-modal p,.vs-modal p{color:#bccbd0}.match-radar{position:relative;width:112px;height:112px;margin:0 auto 18px;border:1px solid #63dae182;border-radius:50%;background:repeating-radial-gradient(circle,#54d6dc18 0 1px,transparent 2px 27px),#0c33344d;box-shadow:0 0 28px #18e6eb32,inset 0 0 25px #18e6eb23;overflow:hidden}.match-radar:before,.match-radar:after{content:"";position:absolute;left:50%;top:50%;width:1px;height:100%;background:#78e7e461;transform:translate(-50%,-50%)}.match-radar:after{transform:translate(-50%,-50%) rotate(90deg)}.match-radar span{position:absolute;inset:0;border-radius:50%;background:conic-gradient(from 0deg,#69fbeb94,transparent 70deg 360deg);animation:radarSweep 1.9s linear infinite}@keyframes radarSweep{to{transform:rotate(360deg)}}
#matchTimer{display:block;margin:10px 0;color:#e8c270;font-size:25px;font-variant-numeric:tabular-nums}.match-note{font-size:12px}.match-modal .ghost{width:100%;margin-top:15px;padding:11px;border:1px solid #a8b9ba6b;border-radius:10px;background:#ffffff0d;color:#f3f5f3;font-weight:800;cursor:pointer}
.vs-row{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:13px;margin:20px 0}.vs-row>div{display:flex;flex-direction:column;align-items:center;gap:8px;min-width:0}.vs-row>div strong{max-width:100%;overflow:hidden;text-overflow:ellipsis;color:#fff;white-space:nowrap}.vs-row>b{color:#efc475;font-size:27px;font-style:italic}.vs-avatar{display:grid;place-items:center;width:64px;height:64px;border:2px solid #d7bb78;border-radius:50%;background:radial-gradient(circle at 36% 27%,#d9e5e5,#334d5b 64%,#0a1118);box-shadow:0 0 20px #e3af564a;color:white;font-size:24px}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){.match-modal,.vs-modal{max-height:calc(100dvh - 10px);padding:12px 22px}.match-radar{width:68px;height:68px;margin-bottom:7px}.match-modal h2,.vs-modal h2{font-size:18px;margin:5px}.match-note{margin:3px!important;font-size:10px!important}#matchTimer{margin:3px;font-size:18px}.match-modal .ghost{margin-top:5px;padding:7px}.vs-row{margin:5px 0}.vs-avatar{width:40px;height:40px}}
@media(prefers-reduced-motion:reduce){.match-radar span{animation:none}}

/* Broadcast room: keep every canvas and physics coordinate untouched. */
body:before{filter:brightness(1.08) saturate(.82)}
body:after{background:radial-gradient(ellipse 72% 72% at 50% 55%,transparent 58%,#09060770 100%)}
.topbar{border:0;background:linear-gradient(90deg,#120e0ece,#241a17bb 52%,#120e0ece);box-shadow:0 10px 28px #0503036b,inset 0 -1px #d9b98043}
.brand strong{font-size:14px;letter-spacing:.17em;color:#fff3d9}
.brand-ball{border-color:#f3e4c1;box-shadow:inset -3px -4px 5px #0009,0 0 0 1px #caa970aa}
.coin-hud,.hud-icon{background:#1b1718ce;border-color:#c7ad835c;box-shadow:inset 0 1px #fff7dc26,0 4px 12px #0008}
.hud-icon:hover,.hud-icon:focus-visible{border-color:#ffe3aa;background:#55412bde;outline:none}
.scorebar{grid-template-columns:minmax(0,1fr) minmax(220px,.85fr) minmax(0,1fr);gap:10px}
.scorebar .player,.scorebar .player.active{border:1px solid #c9aa785c;border-radius:9px;background:linear-gradient(105deg,#241b1bed,#1a1b1dcc);backdrop-filter:blur(10px);box-shadow:inset 0 1px #ffe8b62a,0 7px 18px #0008}
.scorebar .player{opacity:.66}.scorebar .player.active{opacity:1;border-color:#eacb8ca8;box-shadow:inset 0 1px #fff4cf55,0 0 0 1px #eacb8c20,0 8px 19px #0009}
.scorebar .player strong{color:#fff8eb}.scorebar .player small{color:#c7bbb0}
.score-centre{align-self:stretch;display:flex;flex-direction:column;align-items:center;justify-content:center;min-width:0;padding:1px 12px;border-top:1px solid #c9a86a70;border-bottom:1px solid #c9a86a70;background:linear-gradient(90deg,transparent,#130e0fd9 22% 78%,transparent)}
.score-centre span{color:#efc779;font-size:9px;letter-spacing:.18em}
.score-centre strong{display:block;max-width:100%;margin:2px 0 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff6e5;font-size:12px;text-shadow:0 1px 3px #000}
.table-wrap{isolation:isolate;border:1px solid #c4a47b80;background:linear-gradient(145deg,#a37b58,#171413 22%,#171717 76%,#8a6749);box-shadow:0 5px 0 #0a0707,0 20px 36px #000b,0 37px 70px #0009,inset 0 1px #fff1cf97}
.table-wrap:after{box-shadow:inset 0 0 0 1px #f9e7c03d}
.shot-gauge{color:#fff0d7;font-size:10px}.shot-gauge-track{width:9px;border-color:#e6d8bb7f;background:#160f14aa}.shot-gauge strong{font-size:11px}
.spin-trigger{border-color:#edddbb92;background:#20191ab9;box-shadow:inset 0 1px #fff9e83d,0 5px 16px #000a}
.place-cue{border-color:#e1c598af;background:#211917ea;box-shadow:0 5px 16px #0009;color:#fff5df;font-size:11px;font-weight:800;cursor:pointer}
@media (pointer:fine) and (min-width:900px) and (min-height:600px){
  .app{--room-table-width:min(80vw,calc((100dvh - clamp(205px,20dvh,340px))*1.85185))}
  .topbar{height:43px;min-height:43px;margin-bottom:9px;padding:4px 12px}
  .scorebar{height:43px;margin-bottom:7px}.scorebar .player{height:40px;min-height:40px;padding:5px 10px}.scorebar .avatar{width:27px;height:27px}.scorebar .player strong{font-size:13px}
  .table-wrap:before{content:"";position:absolute;z-index:-1;inset:auto 2% -12px;height:13px;border:1px solid #9d714d;border-top:0;border-radius:0 0 10px 10px;background:linear-gradient(180deg,#65432e,#201716 56%,#0d0b0c);box-shadow:inset 0 1px #e8b87655,0 12px 21px #000b;filter:none;clip-path:polygon(0 0,100% 0,99% 100%,1% 100%)}
  .table-wrap{margin-bottom:13px}
}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .topbar{background:none;box-shadow:none}
  .top-actions #shopBtn{display:none}
  .scorebar{top:0;width:min(55vw,580px);height:35px;gap:4px;grid-template-columns:minmax(0,1fr) minmax(190px,.9fr) minmax(0,1fr)}
  .scorebar .player,.scorebar .player.active{height:33px;min-height:33px;padding:1px 5px;border:1px solid #c9aa7847;border-radius:7px;background:#1d191bdf}
  .scorebar .avatar{width:18px;height:18px;font-size:9px}.scorebar .player strong{font-size:10px}
  .score-centre{padding:0 4px;border-color:#b6966061;background:#191416d9}.score-centre span{flex:none;font-size:7px;line-height:8px}.score-centre strong{display:-webkit-box;flex:none;-webkit-box-orient:vertical;-webkit-line-clamp:2;max-height:20px;overflow:hidden;white-space:normal;font-size:9px;line-height:10px}
  .table-wrap{width:min(calc((var(--play-height,100svh) - 44px)*1.85185),calc(100vw - 110px));max-height:calc(var(--play-height,100svh) - 34px);margin:32px auto 0;padding:2px;border-radius:10px;box-shadow:0 4px 0 #0b0808,0 16px 26px #000b,0 26px 37px #0008}
  .table-wrap:before{display:none}
  .place-cue{right:5px;bottom:14px;width:62px;min-height:34px;padding:4px 3px;border-radius:10px;font-size:0;line-height:1.1;text-align:center}
  .place-cue:after{content:"PLACE BALL";font-size:10px}
  .touch-power{background:#171315c9;border-color:#cfb98c6a}.touch-power-label strong{color:#f4d79d}
}
@media (pointer:coarse) and (orientation:landscape) and (max-width:700px){
  .scorebar{grid-template-columns:minmax(0,1fr) minmax(140px,.9fr) minmax(0,1fr)}
  .table-wrap{width:min(calc((var(--play-height,100svh) - 44px)*1.85185),calc(100vw - 128px))}
}

/* Arena progression and room lighting. The game canvas keeps its dimensions. */
body:after{background:radial-gradient(ellipse 55% 48% at 50% 53%,color-mix(in srgb,var(--arena-ambient,#b4814d) 18%,transparent),transparent 80%),radial-gradient(ellipse 72% 72% at 50% 55%,transparent 58%,#09060770 100%)}
.table-wrap{border-color:color-mix(in srgb,var(--arena-accent,#e8c58c) 62%,#352820)}
.level-hud{display:flex;align-items:center;gap:3px;height:27px;padding:3px 7px;border:1px solid #d8bd7b73;border-radius:20px;background:#1b1718ce;color:#f5dbad;font-size:10px;font-weight:900;cursor:pointer}
.level-hud strong{font-size:12px}.level-hud i{display:block;width:35px;height:4px;margin-left:3px;border-radius:5px;background:#ffffff2b;overflow:hidden}.level-hud b{display:block;height:100%;width:0;background:linear-gradient(90deg,#e0ac5a,#ffe8af)}
.lobby-progress{display:flex;justify-content:space-between;gap:8px;margin:11px 0 6px;color:#c7c4b8;font-size:11px}.lobby-progress strong{color:#f8d48d}
.lobby-arena{display:flex;align-items:center;justify-content:center;gap:9px;width:100%;min-height:43px;margin-top:10px;border:1px solid #85d2c688;border-radius:12px;background:linear-gradient(110deg,#17332fae,#204a49a8,#17332fae);box-shadow:inset 0 1px #c6ffed32,0 5px 17px #0006;color:#e8fff5;font-size:13px;font-weight:900;letter-spacing:.08em;cursor:pointer}
.lobby-arena:hover,.lobby-arena:focus-visible{border-color:#c9fff0;box-shadow:0 0 20px #8de9d142;outline:none}
.arena-modal{box-sizing:border-box;width:min(1030px,100%);max-height:calc(100dvh - 24px);overflow:auto;padding:26px;border:1px solid #ead7a96b;border-radius:20px;background:linear-gradient(145deg,#182322f2,#11171cf5);backdrop-filter:blur(16px);box-shadow:0 28px 70px #000d}
.arena-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;padding-right:35px}.arena-heading h2{margin:3px 0 1px;font-size:29px}.arena-heading p{margin:0;color:#b9c7c2;font-size:12px}.arena-wallet{flex:none;padding:7px 13px;border:1px solid #e4be786b;border-radius:20px;background:#e0a84a1d;color:#f6db9c;font-size:13px;font-weight:800}
.arena-meta{display:flex;justify-content:space-between;gap:8px;margin:18px 0 11px;color:#d1dbc9;font-size:11px;font-weight:700}
.arena-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:13px}.arena-card{min-width:0;padding:11px;border:1px solid color-mix(in srgb,var(--arena-accent) 33%,#ffffff16);border-radius:14px;background:linear-gradient(155deg,#ffffff12,#ffffff04);box-shadow:inset 0 1px #ffffff16,0 8px 18px #0005}.arena-card.selected{border-color:var(--arena-accent);box-shadow:0 0 20px color-mix(in srgb,var(--arena-accent) 22%,transparent),inset 0 1px #ffffff3b}.arena-card h3{margin:10px 0 2px;color:#fff7e8;font-size:15px}.arena-card p{min-height:18px;margin:0;color:#c0d1cb;font-size:11px}.arena-card small{display:block;margin-top:7px;color:#f2d7a1;font-size:10px}
.arena-preview{position:relative;aspect-ratio:1.85/1;border:9px ridge color-mix(in srgb,var(--arena-accent) 45%,#241f22);border-radius:10px;background:radial-gradient(ellipse at 48% 43%,color-mix(in srgb,var(--arena-felt) 76%,white),var(--arena-felt) 72%,color-mix(in srgb,var(--arena-felt) 66%,black));box-shadow:inset 0 0 0 6px #101719,inset 0 0 22px #030607ad,0 5px 9px #0008}.arena-preview i{position:absolute;width:10%;aspect-ratio:1;border:2px solid #9ea4a47a;border-radius:50%;background:#03080b;box-shadow:inset 0 2px 5px #000}.arena-preview i:nth-child(1){left:-4%;top:-8%}.arena-preview i:nth-child(2){left:45%;top:-8%}.arena-preview i:nth-child(3){right:-4%;top:-8%}.arena-preview i:nth-child(4){left:-4%;bottom:-8%}.arena-preview i:nth-child(5){left:45%;bottom:-8%}.arena-preview i:nth-child(6){right:-4%;bottom:-8%}
.arena-action{width:100%;min-height:34px;margin-top:10px;border:1px solid var(--arena-accent);border-radius:8px;background:color-mix(in srgb,var(--arena-accent) 27%,#102020);color:#fffaf0;font-size:11px;font-weight:900;cursor:pointer}.arena-action:disabled{opacity:.52;cursor:default}.arena-card.selected .arena-action{opacity:1;background:color-mix(in srgb,var(--arena-accent) 50%,#13342c)}
@media(max-width:700px){.arena-modal{padding:13px}.arena-heading h2{font-size:20px}.arena-heading p{display:none}.arena-wallet{padding:5px 8px;font-size:10px}.arena-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}.arena-card{padding:7px}.arena-card h3{font-size:12px}.arena-card p,.arena-card small{font-size:9px}.arena-preview{border-width:6px}.level-hud i{display:none}.lobby-progress{font-size:9px}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){.arena-modal{max-height:calc(100dvh - 10px);padding:11px}.arena-heading h2{font-size:18px}.arena-meta{margin:7px 0}.arena-grid{display:flex;gap:8px;overflow-x:auto;padding:3px 0 7px;scroll-snap-type:x mandatory}.arena-card{flex:0 0 155px;scroll-snap-align:start}.arena-preview{aspect-ratio:1.85/1}.arena-card h3{margin-top:5px}.arena-action{min-height:26px;margin-top:5px;font-size:9px}.lobby-progress{margin:6px 0 3px}.lobby-arena{min-height:29px;margin-top:5px;font-size:10px}}
@media (pointer:coarse) and (orientation:landscape) and (max-height:600px){
  .top-actions{height:26px;align-items:center}
  .top-actions button{box-sizing:border-box;padding:0}
  .top-actions #arenaBtn{display:none}
}

/* Entry lobby: a clear primary match with three quick alternatives. */
.lobby-modal{width:min(1030px,100%);padding:28px 30px 24px;border-color:#d7be8b6e;background:radial-gradient(ellipse 70% 80% at 15% 38%,#24444255,transparent 75%),linear-gradient(145deg,#151c20f7,#0b1015f7 70%);box-shadow:0 28px 80px #000e,inset 0 1px #fff2ca31}
.lobby-heading{margin:0 48px 20px 0}.lobby-heading p{margin:4px 0 0;color:#b9c9c6;font-size:13px}.lobby-modal h1{font-size:clamp(25px,3vw,34px);letter-spacing:.025em}
.lobby-modal .mode-grid{grid-template-columns:minmax(0,1.18fr) minmax(0,.82fr);grid-template-rows:repeat(3,minmax(82px,1fr));gap:10px}
.lobby-modal .mode-card,.lobby-modal .mode-card:nth-child(n+4){grid-column:2;min-height:0;padding:14px 18px;border-color:#c0d1cf35;border-radius:15px;background:linear-gradient(115deg,#27353b99,#131b20d9);box-shadow:inset 0 1px #fff3d527,0 9px 20px #0005}
.lobby-modal .mode-card:hover,.lobby-modal .mode-card:focus-visible{border-color:#efc678;box-shadow:0 0 0 1px #f3d2895c,0 9px 28px #d5a65026;outline:none}
.lobby-modal .mode-card.mode-feature{grid-column:1;grid-row:1/4;display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end;gap:11px;min-height:286px;padding:24px 26px;border:1px solid #f0c7798e;background:radial-gradient(circle at 63% 26%,#e9b85f45,transparent 32%),radial-gradient(circle at 62% 22%,#405959b3,transparent 57%),linear-gradient(145deg,#1b3432,#12201f 63%,#221a17);box-shadow:inset 0 1px #fff1bf82,0 14px 35px #0009,0 0 35px #ddae4a21;overflow:hidden}
.mode-feature:before{content:"";position:absolute;left:26px;right:26px;top:23%;height:1px;background:linear-gradient(90deg,transparent,#ebd6a170,transparent);transform:rotate(-20deg)}
.mode-feature:after{content:"";position:absolute;right:-40px;top:-40px;width:260px;height:260px;border:1px solid #f8d69625;border-radius:50%;box-shadow:0 0 0 34px #f8d6960a,0 0 0 70px #f8d69608;pointer-events:none}
.lobby-modal .mode-feature .lobby-nine{position:absolute;top:20%;left:calc(50% - 56px);width:112px;height:112px;border-width:4px;font-size:42px;box-shadow:inset -12px -17px 18px #8a580cb0,inset 7px 8px 16px #fff8,0 13px 24px #000b,0 0 40px #f7dd9a4f;transform:rotate(-10deg)}
.lobby-modal .mode-feature .lobby-nine:before{width:55px;height:55px}
.feature-kicker{position:absolute;top:19px;left:24px;color:#f5d68d;font-size:11px;font-weight:900;letter-spacing:.13em}.feature-kicker span{margin-left:8px;padding:4px 7px;border-radius:20px;background:#50d3ad25;color:#9de9c8;font-size:10px;letter-spacing:.05em}
.lobby-modal .mode-feature .mode-copy{position:relative;gap:4px}.lobby-modal .mode-feature .mode-copy strong{font-size:32px;letter-spacing:.04em}.lobby-modal .mode-feature .mode-copy small{padding:0;border:0;background:none;color:#c7d9d2;font-size:13px;font-weight:650}
.feature-cta{position:relative;display:flex;align-items:center;justify-content:space-between;width:100%;padding:11px 15px;border-radius:9px;background:linear-gradient(100deg,#ffe49a,#dca84f);box-shadow:inset 0 1px #fff9df,0 7px 22px #dca84f4a;color:#1c1a13;font-size:13px;font-weight:950;letter-spacing:.11em}.feature-cta span{font-size:20px;line-height:12px}
.lobby-modal .mode-card:not(.mode-feature) .lobby-art{width:54px;height:54px}.lobby-modal .mode-card:not(.mode-feature) .mode-copy strong{font-size:15px}.lobby-modal .mode-card:not(.mode-feature) .mode-copy small{padding:0;border:0;background:none;color:#abc3c4;font-size:11px}.lobby-modal .mode-card:not(.mode-feature) .mode-arrow{top:calc(50% - 11px);right:17px;color:#d9c28f;font-size:21px}
.lobby-progress{align-items:center;margin:15px 0 9px;color:#adbbb9}.lobby-progress>span:first-child{padding:5px 10px;border:1px solid #d1ac6666;border-radius:99px;background:#e9be6812;color:#f2d99f;font-size:11px;font-weight:900;letter-spacing:.08em}.lobby-progress>span:last-child{font-size:11px}
.lobby-extras{display:grid;grid-template-columns:1fr 1fr;gap:10px}.lobby-extras .lobby-arena,.lobby-extras .lobby-shop{box-sizing:border-box;width:100%;min-height:45px;margin:0;font-size:12px;letter-spacing:.07em}.lobby-extras .lobby-shop{border-color:#e6bc728c;background:linear-gradient(110deg,#4e3420,#754d27);color:#ffe2a5;box-shadow:inset 0 1px #fff2c650,0 5px 17px #0007}.lobby-extras .lobby-shop:hover{filter:brightness(1.2)}
@media(max-width:700px){.lobby-modal{padding:15px}.lobby-heading{margin-bottom:12px}.lobby-heading p{font-size:11px}.lobby-modal h1{font-size:21px}.lobby-modal .mode-grid{grid-template-columns:1fr 1fr;grid-template-rows:repeat(3,minmax(62px,1fr));gap:7px}.lobby-modal .mode-card,.lobby-modal .mode-card:nth-child(n+4){grid-column:2;min-height:0;padding:7px 9px;gap:6px}.lobby-modal .mode-card.mode-feature{grid-column:1;grid-row:1/4;min-height:200px;padding:12px}.lobby-modal .mode-feature .lobby-nine{top:23%;left:calc(50% - 37px);width:74px;height:74px;font-size:32px}.lobby-modal .mode-feature .lobby-nine:before{width:37px;height:37px}.feature-kicker{top:12px;left:12px;font-size:8px}.feature-kicker span{margin-left:3px;font-size:8px}.lobby-modal .mode-feature .mode-copy strong{font-size:20px}.lobby-modal .mode-feature .mode-copy small{font-size:10px}.feature-cta{padding:7px 9px;font-size:9px}.lobby-modal .mode-card:not(.mode-feature) .lobby-art{transform:scale(.65);margin:-9px}.lobby-modal .mode-card:not(.mode-feature) .mode-copy strong{font-size:10px}.lobby-modal .mode-card:not(.mode-feature) .mode-copy small{font-size:9px}.lobby-modal .mode-card:not(.mode-feature) .mode-arrow{right:7px;font-size:15px}.lobby-progress{margin:9px 0 6px}.lobby-progress>span:last-child{font-size:9px}.lobby-extras{gap:7px}.lobby-extras .lobby-arena,.lobby-extras .lobby-shop{min-height:35px;font-size:9px}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){.lobby-modal{width:min(810px,100%);padding:10px 14px}.lobby-heading{margin-bottom:6px}.lobby-heading p{display:none}.lobby-modal h1{font-size:18px}.lobby-modal .mode-grid{grid-template-rows:repeat(3,58px);gap:5px}.lobby-modal .mode-card.mode-feature{min-height:184px;padding:10px}.lobby-modal .mode-feature .lobby-nine{top:17%;width:68px;height:68px;left:calc(50% - 34px)}.lobby-modal .mode-feature .lobby-nine:before{width:35px;height:35px}.lobby-modal .mode-feature .mode-copy strong{font-size:19px}.lobby-progress{margin:5px 0 4px}.lobby-extras .lobby-arena,.lobby-extras .lobby-shop{min-height:30px;font-size:9px}}

/* Illustrated secondary destinations in the lobby. */
.lobby-extras .lobby-arena,.lobby-extras .lobby-shop{position:relative;justify-content:flex-start;gap:15px;min-height:72px;padding:10px 18px;margin:0;text-align:left;letter-spacing:normal;overflow:hidden;transition:transform .18s,border-color .18s,box-shadow .18s}
.lobby-extras .lobby-arena{border-color:#87c5bc75;background:radial-gradient(circle at 14% 50%,#358b8160,transparent 32%),linear-gradient(120deg,#18302f,#172024);box-shadow:inset 0 1px #c4eee75c,0 8px 23px #0007}
.lobby-extras .lobby-shop{border-color:#dcb66f8c;background:radial-gradient(circle at 18% 50%,#b985405c,transparent 35%),linear-gradient(120deg,#34271e,#221d1d);box-shadow:inset 0 1px #ffe5ad54,0 8px 23px #0007;color:#fff3dc}
.lobby-extras .lobby-arena:hover,.lobby-extras .lobby-arena:focus-visible,.lobby-extras .lobby-shop:hover,.lobby-extras .lobby-shop:focus-visible{transform:translateY(-2px);border-color:#ffdc9a;box-shadow:inset 0 1px #fff5d59e,0 8px 25px #0009,0 0 22px #efbd6c26;outline:none}
.extra-art{position:relative;display:block;flex:none;width:83px;height:43px;pointer-events:none}
.extra-table{box-sizing:border-box;width:78px;height:43px;border:5px solid #b79568;border-radius:10px;background:radial-gradient(ellipse at 45% 40%,#657c79,#21433e 70%);box-shadow:inset 0 0 0 3px #132222,inset 0 0 12px #05110fc4,0 5px 9px #000a;transform:perspective(90px) rotateX(16deg)}
.extra-table:before{content:"";position:absolute;inset:-6px;border:1px solid #ffedc084;border-radius:10px;pointer-events:none}
.extra-table:after{content:"";position:absolute;inset:-3px;border-radius:9px;background:radial-gradient(circle at 3px 3px,#06090a 0 4px,transparent 5px),radial-gradient(circle at calc(50% + 0px) 3px,#06090a 0 4px,transparent 5px),radial-gradient(circle at calc(100% - 3px) 3px,#06090a 0 4px,transparent 5px),radial-gradient(circle at 3px calc(100% - 3px),#06090a 0 4px,transparent 5px),radial-gradient(circle at 50% calc(100% - 3px),#06090a 0 4px,transparent 5px),radial-gradient(circle at calc(100% - 3px) calc(100% - 3px),#06090a 0 4px,transparent 5px);pointer-events:none}
.extra-table i{position:absolute;left:33px;top:16px;width:8px;height:8px;border-radius:50%;background:#f6f3de;box-shadow:12px -4px 0 -1px #e4b33d,17px 3px 0 -1px #2474ad}
.extra-cue{filter:drop-shadow(0 5px 6px #0009)}.extra-cue:before{content:"";position:absolute;left:1px;top:20px;width:80px;height:8px;border-radius:8px;background:linear-gradient(90deg,#121c24 0 19%,#d8ad69 19% 22%,#132a37 22% 39%,#e1b765 39% 45%,#151e2c 45% 65%,#e8c780 65% 69%,#e8dac3 69% 92%,#bfd8da 92% 96%,#32b9d2 96%);box-shadow:inset 0 1px #fff5ca9e,0 0 12px #e7bd6b9c;transform:rotate(-18deg)}.extra-cue:after{content:"";position:absolute;left:14px;top:3px;width:52px;height:40px;background:radial-gradient(ellipse,#e6ad5060,transparent 72%);z-index:-1}
.extra-copy{display:flex;flex-direction:column;align-items:flex-start;gap:4px;min-width:0}.extra-copy small{color:#b6cfca;font-size:9px;font-weight:900;letter-spacing:.16em;white-space:nowrap}.lobby-shop .extra-copy small{color:#dfbd85}.extra-copy strong{color:#f5f8f2;font-size:17px;font-weight:900;white-space:nowrap}.lobby-shop .extra-copy strong{color:#fff3d9}.extra-arrow{margin-left:auto;color:#cfecdc;font-size:25px;font-weight:400;line-height:1;transition:transform .18s}.lobby-shop .extra-arrow{color:#f0ce90}.lobby-extras button:hover .extra-arrow{transform:translateX(4px)}
@media(max-width:700px){.lobby-extras .lobby-arena,.lobby-extras .lobby-shop{gap:7px;min-height:51px;padding:5px 8px}.extra-art{transform:scale(.7);transform-origin:left center;margin-right:-22px}.extra-copy{gap:2px}.extra-copy small{font-size:7px;letter-spacing:.08em}.extra-copy strong{font-size:11px}.extra-arrow{font-size:16px}}
@media(pointer:coarse) and (orientation:landscape) and (max-height:600px){.lobby-extras .lobby-arena,.lobby-extras .lobby-shop{min-height:43px;padding:3px 9px}.extra-art{transform:scale(.68);margin-right:-23px}.extra-copy strong{font-size:11px}.extra-copy small{font-size:7px}}

.lobby-modal .lobby-progress{justify-content:flex-start}

