:root{color-scheme:dark;--ink:#f6ecd3;--muted:#b9c3dc;--gold:#ffcf6d;--navy:#071327;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}
html{background:#020916}
body{margin:0;min-width:320px;min-height:100vh;background:#020916;color:var(--ink)}
button{font:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}
button:focus-visible,summary:focus-visible{outline:3px solid #fff2b7;outline-offset:4px}
.game{position:relative;isolation:isolate;width:min(100%,620px);min-height:100svh;margin:auto;padding:calc(env(safe-area-inset-top) + 18px) 16px calc(env(safe-area-inset-bottom) + 22px);overflow:hidden;background:#071327;box-shadow:0 0 70px #000}
.backdrop,.vignette{position:absolute;inset:0;z-index:-2;pointer-events:none}
.backdrop{background:url('./assets/hall.jpg') center top/100% 100% no-repeat}
.vignette{z-index:-1;background:linear-gradient(180deg,rgba(1,8,26,.34) 0%,rgba(1,8,26,.42) 26%,rgba(1,8,26,.34) 47%,rgba(1,8,26,.16) 75%,rgba(1,8,26,.73) 100%),radial-gradient(ellipse at center,transparent 30%,rgba(0,2,13,.28) 100%)}
.torch{position:absolute;top:35%;width:15px;height:20px;pointer-events:none;opacity:.85;filter:drop-shadow(0 0 9px #ffaf4a)}
.torch-left{left:5%}.torch-right{right:5%}
.flame{display:block;width:12px;height:21px;border-radius:70% 10% 65% 35%;background:linear-gradient(30deg,#fff1a1,#ffc13d 45%,#fc6d19 75%,transparent);transform:rotate(20deg);transform-origin:50% 100%;animation:flicker 1.45s ease-in-out infinite alternate;box-shadow:0 0 16px #f68a32,0 0 35px #df6b1d}
.torch-right .flame{animation-delay:-.8s}
@keyframes flicker{0%{transform:rotate(14deg) scale(.82,1.05);opacity:.74}50%{transform:rotate(-2deg) scale(1.08,.92);opacity:1}100%{transform:rotate(20deg) scale(.9,1.12);opacity:.83}}
.masthead{text-align:center;position:relative;z-index:1}
h1{font-family:Georgia,"Times New Roman",serif;text-transform:uppercase;font-size:clamp(32px,9vw,53px);font-weight:700;letter-spacing:.035em;line-height:1.05;margin:0;color:#ffe29a;text-shadow:0 2px 0 #794719,0 5px 8px #050817,0 0 22px #f29b46}
.title-rule{display:flex;justify-content:center;align-items:center;height:14px;color:#ffd67c;font-size:16px;text-shadow:0 0 12px #ffc46a}
.title-rule:before,.title-rule:after{content:"";width:66px;height:1px;background:linear-gradient(90deg,transparent,#e8b960)}.title-rule:after{transform:scaleX(-1)}
.title-rule span{margin:0 7px}
.round-label{font-family:Georgia,serif;font-weight:700;font-size:18px;margin-top:4px;text-shadow:0 2px 5px #000}
.round-dots{display:flex;justify-content:center;gap:10px;margin:9px auto 14px}
.round-dots span{width:10px;height:10px;border:1px solid #9caacf;background:#07122a;border-radius:50%;box-shadow:0 1px 3px #000}
.round-dots span.done{background:#c5943e;border-color:#f8d67d}.round-dots span.current{background:#ffe8a0;border-color:white;box-shadow:0 0 0 3px #8e6718,0 0 13px #ffd76e}
.scoreboard{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;padding:9px 5px 10px;border-top:1px solid #f5cb8545;border-bottom:1px solid #f5cb8545;background:linear-gradient(90deg,rgba(2,10,29,.76),rgba(5,19,45,.9),rgba(2,10,29,.76));box-shadow:0 7px 18px #0105166b}
.player{text-align:center;min-width:0;position:relative;border-radius:12px;padding:1px 1px 3px;transition:transform .3s}
.player.leader{background:linear-gradient(#ffdb7440,transparent)}
.avatar{width:clamp(47px,14vw,75px);height:clamp(47px,14vw,75px);margin:auto;border:2px solid #d6aa62;border-radius:50%;background-image:url('./assets/portraits.jpg');background-repeat:no-repeat;background-size:400% 100%;box-shadow:0 0 0 2px #1b2545,0 3px 9px #000,0 0 12px #c4895344}
.player:nth-child(2) .avatar{background-position:33.333% center}.player:nth-child(3) .avatar{background-position:66.666% center}.player:nth-child(4) .avatar{background-position:100% center}
.player-name{display:block;font-family:Georgia,serif;font-size:clamp(12px,3.5vw,16px);margin-top:4px;white-space:nowrap;text-shadow:0 1px 4px #000}
.score{display:flex;align-items:center;justify-content:center;gap:3px;margin-top:1px;color:#ffdf8f;font-family:Georgia,serif;font-size:clamp(18px,5vw,24px);font-weight:700;font-variant-numeric:tabular-nums;text-shadow:0 2px 4px #000}
.coin-icon{display:inline-block;flex:none;width:16px;height:16px;border-radius:50%;border:2px solid #ffe695;background:radial-gradient(circle at 38% 30%,#fff5a7 0%,#ffc23e 42%,#a65910 100%);box-shadow:inset 0 0 0 2px #b86b16,0 0 6px #fbbf52a8}
.score .coin-icon{width:15px;height:15px}
.secret-mark{position:absolute;right:4px;top:45%;width:19px;height:19px;border:1px solid #bfc8df;border-radius:50%;background:#172445;color:#f6e7c5;font-weight:700;font-size:12px;display:grid;place-items:center;box-shadow:0 2px 5px #000}
.player-choice{display:block;min-height:14px;font-size:10px;color:#d9e2f7;margin-top:1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.play-area{position:relative;z-index:1}
.prompt{text-align:center;min-height:92px;padding-top:18px}
.prompt h2{font-family:Georgia,serif;font-size:clamp(23px,6vw,34px);line-height:1.08;margin:0 0 5px;text-shadow:0 3px 10px #000}
.prompt p{margin:0;color:#e0e5f6;font-size:clamp(12px,3.5vw,15px);text-shadow:0 2px 5px #000}
.doors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:clamp(5px,2vw,12px);align-items:end}
.door-choice{position:relative;display:flex;flex-direction:column;align-items:center;gap:8px;border:0;background:none;color:var(--ink);min-width:0;padding:7px 0 4px;border-radius:13px;touch-action:manipulation;transition:transform .2s,filter .2s}
.door-choice:hover:not(:disabled){transform:translateY(-4px)}.door-choice.selected{transform:translateY(-6px);filter:brightness(1.18)}.door-choice:disabled{cursor:default}
.door-frame{position:relative;display:block;width:100%;max-width:156px;height:clamp(155px,44vw,231px);padding:9px 9px 5px;border:5px ridge var(--trim);border-radius:55% 55% 7px 7px / 23% 23% 7px 7px;background:linear-gradient(110deg,var(--trim-dark),var(--trim-light) 18%,var(--trim-dark) 29%,var(--trim) 68%,var(--trim-dark));box-shadow:inset 0 0 0 2px var(--trim-light),0 6px 8px #000b,0 0 18px var(--glow);perspective:500px;overflow:hidden}
.door-frame:before{content:"";position:absolute;inset:2px 2px auto;height:43px;border-top:2px solid var(--trim-light);border-radius:55% 55% 0 0 / 80% 80% 0 0;opacity:.8;pointer-events:none;z-index:2}
.door-shadow{position:absolute;inset:8px 7px 3px;background:radial-gradient(ellipse at center,#102346,#020812 76%);border-radius:55% 55% 3px 3px / 23% 23% 3px 3px;box-shadow:inset 0 0 20px #000;z-index:0}
.door-leaf{position:relative;z-index:1;display:block;width:100%;height:100%;border:2px solid var(--trim-light);border-radius:53% 53% 2px 2px / 23% 23% 2px 2px;background:radial-gradient(circle at 40% 37%,var(--leaf-light),transparent 53%),repeating-linear-gradient(90deg,transparent 0 8px,#ffffff0e 9px 10px,transparent 11px 18px),linear-gradient(90deg,var(--leaf-dark),var(--leaf),var(--leaf-dark));box-shadow:inset 0 0 0 4px #0003,inset 0 0 14px #000b,3px 0 8px #0008;transform-origin:left center;transition:transform .62s cubic-bezier(.2,.8,.2,1),filter .5s}
.door-leaf:before{content:"";position:absolute;inset:10px 8px;border:1px solid var(--trim-light);border-radius:51% 51% 2px 2px / 21% 21% 2px 2px;opacity:.7;pointer-events:none}
.door-crest{position:absolute;top:29%;left:50%;transform:translateX(-50%);font-family:Georgia,serif;font-size:clamp(27px,9vw,55px);color:var(--trim-light);text-shadow:0 0 9px var(--glow),0 2px 3px #000}
.door-knocker{position:absolute;top:57%;right:12%;width:13px;height:15px;border:3px solid var(--trim-light);border-radius:50%;box-shadow:0 2px 4px #000}
.door-label{position:absolute;bottom:14%;left:0;right:0;text-align:center;text-transform:uppercase;font-family:Georgia,serif;font-weight:700;font-size:clamp(12px,3.3vw,17px);letter-spacing:.02em;color:#fff2ca;text-shadow:0 2px 5px #000,0 0 8px #000}
.gold{--trim:#a76618;--trim-dark:#543309;--trim-light:#ffdf7f;--leaf:#b87918;--leaf-light:#f6be43;--leaf-dark:#63360a;--glow:#fbb73970}
.silver{--trim:#8190b2;--trim-dark:#3e4d69;--trim-light:#e4edff;--leaf:#657397;--leaf-light:#b9c7e2;--leaf-dark:#364364;--glow:#c6deff70}
.blue{--trim:#426cc0;--trim-dark:#1c366b;--trim-light:#9bbfff;--leaf:#1451b5;--leaf-light:#478cf3;--leaf-dark:#102d76;--glow:#4f92ff7a}
.door-choice.selected .door-frame{box-shadow:inset 0 0 0 2px var(--trim-light),0 7px 12px #000c,0 0 0 3px #fff1bc,0 0 24px var(--glow)}
.doors.revealed .door-leaf{transform:rotateY(-68deg);filter:brightness(.82)}
.door-rule{display:grid;grid-template-columns:18px auto;grid-template-rows:auto auto;column-gap:3px;justify-content:center;align-items:center;min-height:42px;text-align:center;text-shadow:0 2px 5px #000;width:100%}
.door-rule .coin-icon{grid-row:1}.door-rule strong{font-family:Georgia,serif;font-size:22px;line-height:1}.door-rule small{grid-column:1/3;font-size:clamp(10px,2.9vw,13px);line-height:1.1;color:#f5ebd8;margin-top:4px;white-space:nowrap}
.door-result{position:absolute;top:29%;left:4%;right:4%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;min-height:75px;color:#fff4d8;font-weight:700;text-shadow:0 2px 5px #000,0 0 7px #000;opacity:0;transform:scale(.75);transition:opacity .35s .28s,transform .35s .28s;pointer-events:none}
.doors.revealed .door-result{opacity:1;transform:scale(1)}
.door-result .result-names{font-size:clamp(10px,2.8vw,13px);line-height:1.15;max-width:100%;overflow-wrap:anywhere}
.door-result .result-coins{font-family:Georgia,serif;color:#ffe387;font-size:clamp(15px,4vw,20px)}
.door-result .result-note{font-size:clamp(9px,2.5vw,11px);line-height:1.1;max-width:100%;overflow-wrap:anywhere}
.actions{text-align:center;min-height:136px;padding:10px 4px 0}
.primary-button{display:block;width:min(100%,360px);min-height:58px;margin:0 auto;border:2px solid #fff2ae;border-radius:999px;background:linear-gradient(180deg,#fff3aa 0%,#efb945 47%,#a96319 100%);color:#352009;font-family:Georgia,serif;font-size:clamp(19px,5.3vw,24px);font-weight:700;text-shadow:0 1px #fff2c2;box-shadow:inset 0 2px 2px #fff9ce,0 6px 0 #673b14,0 10px 19px #000b,0 0 18px #f7b83c6b;transition:transform .18s,filter .18s}
.primary-button:hover:not(:disabled){filter:brightness(1.09);transform:translateY(-2px)}.primary-button:active:not(:disabled){transform:translateY(3px);box-shadow:inset 0 1px 2px #fff9ce,0 2px 0 #673b14,0 5px 10px #000b}.primary-button:disabled{opacity:.6;filter:saturate(.5);cursor:default}
.text-button{display:block;min-height:42px;margin:12px auto 0;border:0;border-bottom:1px solid #c5cce2;background:transparent;color:#dbe2f5;padding:6px 8px 2px;font-size:15px;text-shadow:0 2px 5px #000}
.text-button:hover{color:white}
.announce-panel{margin:9px auto 0;padding:10px;max-width:380px;background:#07142de6;border:1px solid #bda66a80;border-radius:13px;box-shadow:0 5px 15px #0009}
.announce-panel p{margin:0 0 8px;font-size:12px;color:#e1e4ee}
.announce-options{display:flex;gap:6px}.announce-options button{flex:1;min-height:41px;padding:4px;border-radius:8px;border:1px solid #a7b7d4;background:#1a2d55;color:#fff;font-size:12px;font-weight:700}.announce-options button.active{background:#76531e;border-color:#ffd579}
.announcements{min-height:25px;display:flex;flex-wrap:wrap;justify-content:center;gap:4px 9px;margin-top:9px;color:#eef0fb;font-size:11px;text-shadow:0 2px 4px #000}
.announcements span{background:#06142cc7;border:1px solid #a0add550;border-radius:999px;padding:3px 8px}
.next-button{margin-top:5px}
.history{position:relative;z-index:1;max-width:500px;margin:14px auto 0;background:#061329d9;border:1px solid #bea86f75;border-radius:12px;box-shadow:0 4px 15px #0008}
.history summary{display:flex;justify-content:space-between;min-height:38px;align-items:center;padding:0 15px;cursor:pointer;font-family:Georgia,serif;font-size:13px;color:#d8dff2}.history summary span{font-family:ui-sans-serif,sans-serif;font-size:12px;color:#c6d4eb}
.history details[open] summary{border-bottom:1px solid #ffffff28}
.history-empty{margin:0;padding:11px 15px;color:#b9c6dc;font-size:11px}.history #history-preview .history-row{background:#e6b65b15}
.history-row{display:grid;grid-template-columns:24px repeat(4,1fr);gap:3px;align-items:center;padding:7px 9px;border-bottom:1px solid #ffffff19;font-size:11px;text-align:center}.history-row:last-child{border-bottom:0}.history-round{color:#e4cb8e;font-weight:700}.history-cell{min-width:0;color:#dbe5fa}.history-cell b{display:block;color:#ffdc84;font-size:11px}.history-cell small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px}
.install-hint{position:relative;z-index:1;text-align:center;color:#d2d8e8a8;font-size:11px;margin:15px 0 0;text-shadow:0 2px 5px #000}
.suspense{position:absolute;inset:0;z-index:10;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#020815d9;backdrop-filter:blur(5px);color:#fff1ca;font-family:Georgia,serif;font-size:26px;text-shadow:0 0 15px #ffc45d;text-align:center}
.suspense-star{font-size:49px;animation:pulse .65s ease-in-out infinite alternate}@keyframes pulse{from{transform:scale(.7);opacity:.55}to{transform:scale(1.2);opacity:1}}
.final-overlay{position:absolute;inset:0;z-index:12;display:flex;align-items:center;justify-content:center;padding:22px;background:#020715d9;backdrop-filter:blur(8px)}
.final-card{width:min(100%,440px);padding:26px 18px 30px;text-align:center;border:2px solid #c99a42;border-radius:24px;background:radial-gradient(circle at 50% 0%,#294471,#0d1c3d 50%,#071328);box-shadow:inset 0 0 0 5px #f2c86e22,0 18px 45px #000,0 0 30px #e8af4966}
.final-star{font-size:46px;color:#ffe494;text-shadow:0 0 20px #ffbd5b}.eyebrow{text-transform:uppercase;letter-spacing:.16em;color:#c9d5ef;font-size:11px;margin:5px 0 7px}.final-card h2{font-family:Georgia,serif;color:#ffe39b;font-size:clamp(29px,8vw,42px);margin:0;text-shadow:0 3px 8px #000}.final-card p#final-copy{margin:9px 0 17px;font-size:14px;color:#e0e6f3}.final-score-row{display:flex;justify-content:space-between;align-items:center;max-width:250px;margin:5px auto;padding:7px 12px;background:#ffffff12;border-radius:7px;font-size:14px}.final-score-row.winner{background:#d2a04435;color:#ffdf8b;font-weight:700}.final-card .primary-button{margin-top:20px}
.coin-flight{position:fixed;z-index:20;width:22px;height:22px;border-radius:50%;border:2px solid #fff3b7;background:radial-gradient(circle at 35% 30%,#fff9c0,#ffd453 40%,#ab6516 80%);box-shadow:inset 0 0 0 2px #bb791c,0 0 16px #ffd76d;pointer-events:none}
[hidden]{display:none!important}
@media(max-height:740px){.game{padding-top:calc(env(safe-area-inset-top) + 8px)}.round-dots{margin-bottom:7px}.prompt{min-height:76px;padding-top:11px}.door-frame{height:clamp(140px,37vw,195px)}.actions{padding-top:4px}.history{margin-top:6px}}
@media(max-height:600px){.game{padding-top:calc(env(safe-area-inset-top) + 5px)}.round-dots{margin:5px auto 6px}.scoreboard{padding:6px 5px}.avatar{width:clamp(43px,13vw,62px);height:clamp(43px,13vw,62px)}.prompt{min-height:67px;padding-top:9px}.door-frame{height:clamp(132px,36vw,175px)}.door-choice{gap:3px}.door-rule{min-height:36px}.primary-button{min-height:52px}.actions{padding-top:3px}}
@media(min-width:720px){.game{min-height:100vh}.backdrop{background-size:100% 100%}.prompt{padding-top:23px;min-height:103px}.door-frame{height:242px}.doors{gap:15px}.actions{padding-top:15px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}}
.final-score-row{display:grid;grid-template-columns:24px 31px 1fr auto;gap:8px;align-items:center;max-width:280px;padding:6px 10px;text-align:left}
.rank-place{display:grid;place-items:center;width:24px;height:24px;border-radius:50%;border:1px solid #d4b875;color:#ffe6a7;font-family:Georgia,serif;font-size:13px}
.final-avatar{display:block;width:30px;height:30px;border:1px solid #d6aa62;border-radius:50%;background-image:url('./assets/portraits.jpg');background-repeat:no-repeat;background-size:400% 100%;box-shadow:0 1px 5px #000}
.final-avatar.portrait-1{background-position:33.333% center}.final-avatar.portrait-2{background-position:66.666% center}.final-avatar.portrait-3{background-position:100% center}
.rank-score{display:flex;align-items:center;gap:4px;color:#ffdf8b;font-family:Georgia,serif;font-size:17px;font-variant-numeric:tabular-nums}.rank-score .coin-icon{width:14px;height:14px}
.avatar-wrap{position:relative;width:clamp(44px,14vw,75px);height:clamp(44px,14vw,75px);margin:auto}
.avatar-wrap .avatar{width:100%;height:100%}
.intent-badge{position:absolute;right:-5px;bottom:-4px;z-index:2;display:grid;place-items:center;width:clamp(20px,5.5vw,25px);height:clamp(20px,5.5vw,25px);border:2px solid #dae4fb;border-radius:50%;background:#142348;color:#fff8db;font-family:Georgia,serif;font-size:14px;font-weight:700;line-height:1;box-shadow:0 2px 5px #000,0 0 0 2px #0d1932;pointer-events:none}
.intent-badge.intent-gold{border-color:#fff1a8;background:radial-gradient(circle at 35% 25%,#fbedad,#cb8b28 55%,#77410e);color:#603609;box-shadow:0 2px 5px #000,0 0 8px #ffcf6f}
.intent-badge.intent-silver{border-color:#f7faff;background:radial-gradient(circle at 35% 25%,#fff,#a5b8db 55%,#536685);color:#283d67;box-shadow:0 2px 5px #000,0 0 8px #dce9ff}
.intent-badge.intent-blue{border-color:#b9d6ff;background:radial-gradient(circle at 35% 25%,#9dc9ff,#296bd4 55%,#122c6b);color:#f4faff;box-shadow:0 2px 5px #000,0 0 8px #62a4ff}
.intent-badge.plink{animation:badge-plink .44s cubic-bezier(.18,.8,.26,1)}
@keyframes badge-plink{0%{transform:scale(.35);opacity:.3}52%{transform:scale(1.34);opacity:1}100%{transform:scale(1)}}
.actions{min-height:80px}
:root{--viewport-height:100vh}
@supports(height:100svh){:root{--viewport-height:100svh}}
body{min-height:var(--viewport-height)}
.game{min-height:var(--viewport-height)}
.history-open{position:absolute;right:0;top:51px;z-index:3;display:flex;align-items:center;justify-content:center;gap:4px;min-width:55px;min-height:40px;padding:3px 6px;border:1px solid #cbb07287;border-radius:999px;background:#071632bd;color:#f9e5b6;font-size:11px;font-weight:700;box-shadow:0 2px 7px #0009}
.history-open span{display:grid;place-items:center;min-width:17px;height:17px;border-radius:50%;background:#d4a847;color:#24180b;font-size:10px}
.history-dialog{position:absolute;inset:0;z-index:11;display:flex;align-items:center;justify-content:center;padding:14px;background:#020816e8;backdrop-filter:blur(7px)}
.history-card{position:relative;width:min(100%,450px);max-height:calc(var(--viewport-height) - 28px);overflow:auto;padding:20px 14px;border:2px solid #c99a42;border-radius:20px;background:linear-gradient(145deg,#233b66,#091833 65%);box-shadow:0 14px 35px #000c}
.history-card h2{margin:0 34px 14px 4px;font-family:Georgia,serif;font-size:23px;color:#ffe3a2}
.history-close{position:absolute;right:11px;top:10px;width:42px;height:42px;border:1px solid #c6b4828c;border-radius:50%;background:#102348;color:#fff6d7;font-size:27px;line-height:1}
.history-dialog .history-row{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 10px;margin-top:7px;padding:8px;border:1px solid #ffffff26;border-radius:10px;background:#ffffff0c;text-align:left}
.history-dialog .history-round{grid-column:1/-1;font-family:Georgia,serif;font-size:13px}
.history-dialog .history-cell{display:flex;justify-content:space-between;gap:3px;align-items:center;font-size:11px}
.history-dialog .history-cell small{font-size:11px}.history-dialog .history-cell b{flex:none;font-size:12px}
.install-hint{position:absolute;left:0;right:0;bottom:calc(env(safe-area-inset-bottom) + 7px);margin:0}
@media(max-height:740px){.install-hint{display:none}}
@media(max-height:700px){
  .game{padding-bottom:calc(env(safe-area-inset-bottom) + 5px)}
  .prompt{min-height:60px;padding-top:7px}
  .door-frame{height:clamp(115px,min(40vw,calc(var(--viewport-height) - 500px)),160px)}
  .door-choice{gap:2px;padding-top:3px;padding-bottom:1px}
  .door-rule{min-height:31px}
  .actions{padding-top:2px}
  .text-button{min-height:37px;margin-top:5px}
  .actions{position:relative;display:flex;align-items:center;gap:7px;min-height:0;padding-top:5px}
  .actions .primary-button{flex:1;width:auto;min-width:0;margin:0;font-size:clamp(16px,4.5vw,21px)}
  .actions .text-button{flex:0 0 104px;min-height:52px;margin:0;padding:4px 5px;border:1px solid #c3b0739c;border-radius:12px;background:#0b1a37d9;font-size:12px;line-height:1.1;text-decoration:none}
  .actions .announce-panel{position:absolute;z-index:6;left:0;right:0;bottom:calc(100% + 8px);max-width:none;margin:0}
}
@media(min-width:720px){.game{min-height:min(var(--viewport-height),900px)}.door-frame{height:min(210px,26svh)}.history-open{right:14px}}

/* Private rooms share the same palace, doors, portraits and compact game layout. */
.online-game{display:flex;flex-direction:column;max-height:none;overflow-y:auto}
.online-head{flex:none}.online-head .round-dots{min-height:5px}
.online-panel{position:relative;z-index:2;width:min(100%,390px);margin:auto;padding:18px 16px;text-align:center;border:1px solid #d7aa6080;border-radius:20px;background:linear-gradient(160deg,#102c54ed,#061630f2);box-shadow:0 16px 40px #000a,inset 0 0 0 4px #e3bb6720}
.online-panel h2{margin:1px 0 9px;color:#ffe29b;font:normal clamp(24px,7vw,31px) Georgia,serif}
.online-panel p{margin:5px 0 12px;color:#e0e8f5;font-size:13px;line-height:1.3}
.online-panel .primary-button{width:100%;min-height:50px;margin:7px 0 0;font-size:18px}
.online-panel .text-button{display:block;margin:9px auto 0}
.online-secondary{background:linear-gradient(#244b77,#102b4b)!important;border-color:#98bddb!important;color:#fff8e6;text-shadow:0 1px 3px #061426;box-shadow:inset 0 2px 2px #ffffff30,0 6px 0 #08182d,0 10px 19px #000b,0 0 18px #548dcc55}
.online-secondary:active:not(:disabled){box-shadow:inset 0 1px 2px #ffffff30,0 2px 0 #08182d,0 5px 10px #000b}
.online-label{display:block;text-align:left;font-size:12px;color:#f6d795;margin:8px 0 5px!important}
.online-input{width:100%;height:43px;border:1px solid #dbbd7e;border-radius:10px;padding:0 12px;background:#08182d;color:#fff;font-size:16px}
.avatar-picker{display:flex;justify-content:center;gap:12px;margin:9px 0 12px}
.avatar-option{width:56px;height:56px;border:2px solid #a88a5c;border-radius:50%;background-image:url('./assets/portraits.jpg');background-repeat:no-repeat;background-size:400% 100%;box-shadow:0 2px 8px #000;cursor:pointer}
.avatar-option.selected{border-color:#ffe896;box-shadow:0 0 0 3px #fff4,0 0 18px #f7bd54}
.online-error{color:#ffb4a8!important;font-size:12px!important;margin:8px 0 0!important}
.online-muted{color:#cbd8ea!important;font-size:12px!important}
.room-link{padding:8px 7px;border:1px solid #afbcce6e;border-radius:8px;background:#07162c;color:#fce4a4;font-size:11px;overflow-wrap:anywhere}
.online-row{display:flex;gap:8px;margin-top:7px}.small-button{flex:1;min-height:36px;border:1px solid #bc9d60;border-radius:8px;background:#18365b;color:#ffe9af;font-size:13px}
.lobby-players{display:grid;gap:5px;margin:10px 0 7px}.lobby-player{display:flex;align-items:center;gap:9px;padding:4px 7px;border:1px solid #b6c9dd3c;border-radius:9px;background:#ffffff0d;text-align:left;min-height:41px}
.lobby-player .avatar{flex:none;width:33px;height:33px;margin:0;border-width:1px}.lobby-player-name{flex:1;min-width:0;font-size:14px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lobby-badge{font-size:11px;color:#cddded;white-space:nowrap}.lobby-badge.ready{color:#a9efba}.lobby-badge.offline{color:#ffbbb2}
.lobby-player button{border:0;background:none;color:#ffb9ae;font-size:11px;text-decoration:underline}
.online-lobby{padding:13px 14px}.online-lobby h2{margin-bottom:3px}.online-lobby .primary-button{min-height:44px;margin-top:2px}
.online-connection{position:relative;z-index:2;text-align:center;color:#f4c36d;font-size:11px;min-height:17px;margin:4px 0 0}
.online-connection:empty{display:none}
#online-match{position:relative;z-index:1;flex:1}.online-exit{position:absolute;z-index:4;top:-30px;left:0;border:0;background:none;color:#dbe7f8;font-size:12px}
#online-match .history-open{top:-31px;right:0}
.online-game .player .avatar{background-position:var(--avatar-position) center!important}
.online-game .player.offline{opacity:.6}.online-game .player.me .player-name{color:#ffe69b}
.online-actions{min-height:74px}.online-match-status{position:relative;z-index:2;text-align:center;font-size:11px;color:#dce8f9;margin:0 4px;min-height:18px}
.online-match-status button{border:0;background:none;color:#ffdf9a;text-decoration:underline;font-size:11px}
.online-game .final-overlay{position:fixed;inset:0}.online-game .final-card .text-button{display:block;margin:11px auto 0}
.online-game .final-avatar{background-position:var(--avatar-position) center!important}
.mode-switch{position:absolute;left:0;top:0;z-index:4;border:0;background:none;color:#dbe7f8;font-size:11px}
@media(max-height:700px){.online-panel{padding:10px 12px}.online-panel h2{font-size:24px}.online-panel p{margin:3px 0 7px}.online-lobby .lobby-players{gap:3px;margin:6px 0}.lobby-player{min-height:37px;padding:2px 6px}.online-game .round-dots{margin-bottom:4px}.online-actions{min-height:0}}
@media(max-height:600px){.online-lobby{padding:8px 10px}.online-lobby .lobby-player{min-height:29px;padding:1px 4px}.online-lobby .lobby-player .avatar{width:25px;height:25px}.online-lobby .lobby-players{gap:2px;margin:4px 0}.online-lobby .room-link{padding:5px}.online-lobby .small-button{min-height:31px}.online-lobby .primary-button{min-height:40px}}
@media(max-height:600px){.online-game.lobby-view .online-head .title-rule,.online-game.lobby-view .online-head .round-label,.online-game.lobby-view .online-head .round-dots{display:none}.online-game.lobby-view .online-head h1{font-size:27px;margin:0 0 3px}.online-lobby{padding:6px 8px}.online-lobby .lobby-player{min-height:27px}.online-lobby .lobby-player .avatar{width:23px;height:23px}.online-lobby .small-button{min-height:28px}.online-lobby .primary-button{min-height:36px}.online-lobby .online-muted{margin:2px 0 4px}}
