*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#061d44;color:white;font-family:"Microsoft YaHei",system-ui,sans-serif}body{min-height:100svh;display:flex;flex-direction:column;justify-content:center}button,a,select{-webkit-tap-highlight-color:transparent}button{cursor:pointer;font:inherit;color:inherit;border:0}button:disabled{cursor:wait}button:focus-visible,a:focus-visible,select:focus-visible{outline:3px solid #fff9a1;outline-offset:4px}#hall{position:relative;width:100%;aspect-ratio:1626/720;overflow:hidden;background:url('assets/lobby-yxdt_bj.png') center/100% 100% no-repeat;isolation:isolate}header{position:absolute;inset:4% 3% auto;display:flex;align-items:center;justify-content:space-between;z-index:4;pointer-events:none}header>*{pointer-events:auto}.round{width:clamp(44px,4.7vw,76px);height:clamp(44px,4.7vw,76px);border-radius:50%;background:radial-gradient(circle at 30% 25%,#55ecff,#0088c9 65%,#074b9b);box-shadow:0 3px 2px #023c7f,0 0 0 3px #84dcff80;font-size:clamp(27px,3vw,48px)}.back{background:none;box-shadow:none}.back img{width:100%;height:100%}.demo{position:absolute;top:-12px;left:50%;transform:translateX(-50%);font-size:12px;background:#003f6770;padding:4px 14px;border-radius:0 0 12px 12px;color:#d9ffff;white-space:nowrap}#rooms{position:absolute;inset:0 2% 12%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:.4%}.room{position:relative;min-width:0;transition:filter .2s}.room:hover{filter:brightness(1.08)}.jackpot{position:absolute;top:8%;left:7%;width:86%;height:22%;background:url('assets/lobby-jackpot2.png') center/contain no-repeat}.jackpot span{position:absolute;left:12%;right:12%;bottom:13%;text-align:center;color:#ffed71;font-weight:800;font-size:clamp(12px,1.25vw,22px);text-shadow:0 2px 1px #163500}.actor{position:absolute;left:-8%;width:116%;top:29%;height:59%;background:none;padding:0}.actor canvas{display:block;width:100%;height:100%;object-fit:contain;pointer-events:none}.actor:active{transform:scale(.96)}.title{position:absolute;top:72%;left:10%;width:80%;height:12%;object-fit:contain;pointer-events:none}.manual{position:absolute;top:37%;right:-2%;width:25%;aspect-ratio:1;border:0;background:none;padding:0;z-index:3}.manual img{width:100%}.cost{position:absolute;top:83%;width:100%;margin:0;text-align:center;font-size:clamp(12px,1.45vw,24px);font-weight:900;color:#ffdc42;text-shadow:1px 2px 1px #284700,-1px -1px #695414;pointer-events:none}.minimum{position:absolute;top:89%;width:100%;margin:0;text-align:center;color:#ffe659;font-weight:800;font-size:clamp(13px,1.55vw,25px);text-shadow:1px 2px 1px #585029;pointer-events:none}.minimum img{width:1.4em;height:1.4em;object-fit:contain;vertical-align:middle}.room.locked .minimum{color:#ffcf8d}.vip{position:absolute;top:69%;left:23%;width:54%;height:5%;background:#693745c0;border:1px solid #fbd76a;border-radius:20px;color:#ffe974;text-align:center;font-size:clamp(9px,.9vw,15px);pointer-events:none}.fish-icons{position:absolute;top:97%;left:0;right:0;display:flex;justify-content:center;gap:3%;height:9%}.fish-icons img{width:17%;object-fit:contain;border:1px solid #178bca;border-radius:6px;background:#08427d99}footer{position:absolute;bottom:0;left:0;right:0;height:12%;display:flex;align-items:center;padding:0 3%;gap:3%;background:linear-gradient(0deg,#0749a7,#127bd280,#58caff35);border-top:2px solid #59dcff80;box-shadow:0 -3px 12px #57bcff40}.profile{position:relative;min-width:9%;display:flex;align-items:center;gap:8px}.avatar{font-size:36px;color:#d6faff;text-shadow:0 0 8px #148cff}.profile small{font-size:clamp(10px,1.1vw,17px)}.wallet,.ticket{border:1px solid #53bbff;border-radius:25px;background:#002b6560;display:flex;align-items:center;height:52%;min-width:23%;gap:10px;color:#ffe66d;font-size:clamp(15px,1.6vw,25px)}.wallet img{height:135%;margin-left:-10px}.ticket{min-width:15%}.ticket span{color:#b8ff66;font-size:32px}.ticket small{font-size:11px;opacity:.75}#quick{position:absolute;right:6%;bottom:8%;width:21%;height:145%;background:none;padding:0}#quick img{width:100%;height:100%;object-fit:contain}#status{position:absolute;bottom:12%;left:50%;transform:translateX(-50%);max-width:85%;padding:5px 18px;margin:0;border-radius:16px;background:#06284bcb;font-size:clamp(11px,1vw,16px);text-align:center;z-index:6}#status:empty{display:none}.orientation{margin:8px;text-align:center;font-size:12px;color:#80afcd}#loading{position:absolute;inset:0;z-index:10;background:#072a4def;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:18px}#loading[hidden]{display:none}progress{width:35%;accent-color:#ffe462}#retry,#enter{padding:12px 30px;background:linear-gradient(#ffdb72,#d1881c);color:#5d2d00;border-radius:10px;font-weight:800}dialog{width:min(92vw,430px);border:2px solid #62d8ff;border-radius:22px;background:linear-gradient(#095b8b,#072856);color:#f0faff;padding:28px;box-shadow:0 0 60px #03c5fb45}dialog::backdrop{background:#001529b8}.close{float:right;background:none;font-size:28px}.note{font-size:12px;color:#a6cce0;line-height:1.7}select{padding:8px;background:#052c52;color:white;border:1px solid #69cefa;border-radius:6px}#enter{display:block;width:100%;margin-top:20px}h2{color:#ffe99b}@media(orientation:portrait){body{justify-content:flex-start;padding-top:12svh}#hall{aspect-ratio:auto;height:65svh;overflow-x:auto;background-size:auto 100%}#rooms{width:1100px;inset:0 20px 90px;gap:8px}header{position:sticky;top:15px;left:15px;width:calc(100vw - 30px)}.demo{top:-25px}.round{width:44px;height:44px}.actor{top:28%;height:60%}.cost{font-size:20px}.minimum{font-size:21px}.jackpot span{font-size:17px}.vip{font-size:12px}footer{width:1140px;height:66px}.wallet{font-size:24px}.orientation{margin-top:16px}#status{position:fixed;bottom:10%;left:50%;width:90vw}#quick{width:210px;right:35px}.profile small{font-size:14px}}
/* Keep the room artwork, limits and fish previews above the fixed wallet strip. */
.jackpot{isolation:isolate;background:none;pointer-events:none}.jackpot::after{content:"";position:absolute;inset:0;background:url('assets/lobby-jackpot2.png') center/contain no-repeat;z-index:1;pointer-events:none}.jackpot-chips{position:absolute;left:0;top:-35%;width:100%;height:70%;pointer-events:none;z-index:0}.jackpot span{z-index:3}
.actor{top:23%;height:59%}.title{top:64%}.vip{top:61%}.cost{top:75%}.minimum{top:81%}.fish-icons{top:89%;height:7%}
.tournament{position:absolute;top:29%;left:23%;width:54%;border-radius:18px;background:linear-gradient(#60eaff,#0584bf);border:2px solid #96ecff;box-shadow:0 0 12px #51efff;color:#eaff40;text-align:center;font-weight:800;font-size:clamp(10px,1vw,17px);padding:4px;z-index:2}
@media(orientation:portrait){.actor{top:23%;height:59%}}
#loading.original-loading{position:fixed!important;inset:0!important;width:100vw!important;height:100svh!important;z-index:1000!important;background:#064668 url('assets/loading-loading.png') center/100% 100% no-repeat!important;display:block!important;overflow:hidden;touch-action:auto}
#loading.original-loading[hidden]{display:none!important}.original-loading>h1,.original-loading>strong,.original-loading>progress{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%)}
.original-loading .source-load-bar{position:absolute;left:18.5%;width:65%;bottom:7%;height:8.5%;background:rgba(0,30,40,.6);border-radius:999px}
.source-load-fill{position:absolute;left:.767544%;right:1.096491%;top:23.913043%;height:57.971014%;clip-path:inset(0 calc(100% - var(--load-value,0%)) 0 0)}
/* Original Fill is a static horizontal Filled Image, not a looping UV effect. */
.source-load-water{position:absolute;inset:0;background:url('assets/loading-shuibowen_00001.png') center/100% 100% no-repeat}
.source-load-border{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.source-load-fish{position:absolute;width:15%;aspect-ratio:1;top:46.376812%;left:2.741228%;transform:translate(-50%,-50%);pointer-events:none}
.source-load-fish canvas{width:100%;height:100%;display:block}.source-load-coins{position:absolute;inset:0;pointer-events:none}
.source-load-coins img{position:absolute;top:calc(50% - 3.5 * var(--load-unit));width:calc(36 * var(--load-unit));height:calc(38 * var(--load-unit));object-fit:contain;transform:translate(-50%,-50%)}
.source-load-border{z-index:0}.source-load-coins{z-index:1}.source-load-fill{z-index:2}.source-load-fish{z-index:3}
.original-loading .source-load-tip{position:absolute;left:3%;right:3%;bottom:1.4%;margin:0;text-align:center;color:white;font:700 clamp(11px,1.45vw,30px) 'Microsoft YaHei',sans-serif;text-shadow:0 2px 2px #002e42,-1px -1px #123e49;line-height:1.4}
.original-loading .source-load-status{position:absolute;bottom:17%;left:0;right:0;text-align:center;font-size:clamp(11px,1vw,18px);color:#d4f9ff;text-shadow:0 2px #06394a}
.original-loading:not(.load-failed) .source-load-status{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%)}
.original-loading .source-load-retry{position:absolute;left:50%;top:45%;transform:translateX(-50%);padding:12px 25px;border-radius:12px;background:#096887;border:2px solid #ffe89b;color:white;font-weight:700}
@media(orientation:portrait){.original-loading .source-load-bar{left:8%;width:84%;height:5%;bottom:12%}.original-loading .source-load-fish{width:22%}.original-loading .source-load-tip{bottom:3%;font-size:14px;padding:0 8%}.original-loading .source-load-status{bottom:20%}}
.room-operation{position:absolute;z-index:4;left:6%;right:6%;bottom:15%;padding:5px 7px;text-align:center;border:1px solid #ffe394;border-radius:10px;background:#142541e8;color:#ffe8ab;font-size:clamp(11px,1vw,17px);pointer-events:none}.room-operation[hidden]{display:none}

/* Recovery controls must sit above the absolutely positioned arena cards. */
.recovery-action{position:absolute;z-index:8;bottom:23%;left:50%;transform:translateX(-50%);max-width:90%;padding:12px 28px;border:2px solid #fff2a0;border-radius:14px;background:linear-gradient(#ffe783,#e19520);box-shadow:0 4px 18px #001b46b0;color:#5d2d00;font-weight:800;font-size:clamp(14px,1.4vw,22px);white-space:nowrap}
.recovery-action:disabled{opacity:.7}
.original-loading.load-reconnecting .source-load-status{width:auto;height:auto;overflow:visible;clip-path:none;padding:0 5%}

/* Mobile landscape host: parent owns presentation, child owns all game state. */
html[data-landscape-shell],html[data-landscape-shell] body{width:100%;height:100%;min-height:0;margin:0;padding:0;overflow:hidden;background:#03131e}
html[data-landscape-shell] body{display:block}
#fishing-landscape-host{position:fixed;inset:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px);overflow:hidden;touch-action:none}
#fishing-landscape-frame{position:absolute;left:50%;top:50%;border:0;max-width:none;max-height:none;transform-origin:center;display:block;background:#03131e}
html[data-landscape-game],html[data-landscape-game] body{margin:0;padding:0;overscroll-behavior:none}
html[data-landscape-game] body{min-height:100dvh}
html[data-landscape-game] #hall{width:min(100%,calc(100dvh * 1626 / 720));margin:auto;flex:none}
html[data-landscape-game] .orientation{display:none}
html[data-landscape-game] dialog{max-height:90dvh;overflow:auto}

/* Keep loading stages readable on phones, including while artwork downloads. */
.original-loading:not(.load-failed) .source-load-status{width:auto;height:auto;overflow:visible;clip-path:none;left:8%;right:8%;padding:5px 12px;border-radius:8px;background:#06284bd9;z-index:5}
#loading.load-failed .source-load-status{left:8%;right:8%;padding:8px 12px;background:#06284be8;border-radius:8px;overflow-wrap:anywhere;z-index:5}
