*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden;background:#b7dbc0}body{font-family:ui-monospace,SFMono-Regular,Consolas,monospace}#viewport{position:relative;width:100%;height:100%;height:100dvh;overflow:hidden;isolation:isolate;touch-action:none;outline:none;background:#b7dbc0}#sky{position:absolute;inset:0;pointer-events:none;width:100%;height:100%;z-index:0}#scene{position:absolute;transform-origin:0 0;isolation:isolate;pointer-events:none;z-index:1;will-change:transform}#scene canvas{position:absolute;image-rendering:pixelated;pointer-events:none}#ambient-light,#local-lights{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}#ambient-light{z-index:10;mix-blend-mode:multiply}#local-lights{z-index:11;mix-blend-mode:screen}#load-status{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);color:#49683f;font-size:12px;line-height:1.7;margin:0;z-index:100;text-align:center}#load-status[hidden]{display:none}
.tree-motion{transform-origin:50% 98%;animation:tree-sway var(--sway-duration,12s) ease-in-out var(--motion-delay,0s) infinite}
.pavilion{transform-origin:50% 100%;animation:pavilion-breathe var(--pavilion-duration,10s) ease-in-out var(--motion-delay,0s) infinite}
@keyframes tree-sway{0%,100%{transform:rotate(calc(var(--sway-angle,.32deg) * -1))}50%{transform:rotate(var(--sway-angle,.32deg))}}
@keyframes pavilion-breathe{0%,100%{transform:scaleY(1)}50%{transform:scaleY(1.002)}}
.smoke-puff{animation:chimney-drift var(--smoke-duration,7s) linear var(--smoke-delay,0s) infinite}
@keyframes chimney-drift{0%{transform:translate(0,0) scale(.2);opacity:0}20%{opacity:.32}60%{opacity:.19}100%{transform:translate(var(--smoke-drift,25px),var(--smoke-rise,-85px)) scale(.85);opacity:0}}
.motion-paused .tree-motion,.motion-paused .pavilion,.motion-paused .smoke-puff{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.tree-motion,.pavilion,.smoke-puff{animation:none}.smoke-puff{opacity:0}.smoke-puff:nth-child(3){opacity:.15;transform:translate(10px,-20px) scale(.6)}}
.grass-motion{transform-origin:50% 100%;animation:grass-sway 5.5s ease-in-out var(--grass-delay,0s) infinite}
@keyframes grass-sway{0%,100%{transform:skewX(calc(var(--grass-angle,2deg) * -1)) scaleY(.98)}50%{transform:skewX(var(--grass-angle,2deg)) scaleY(1)}}
.doorway{position:absolute;pointer-events:none;border-radius:25% 25% 0 0;overflow:hidden;perspective:300px;outline:none;cursor:default}
.door-leaf{position:absolute;top:0;width:50%;height:100%;backface-visibility:hidden;transition:transform var(--door-duration,.65s) cubic-bezier(.22,.65,.3,1),filter var(--door-duration,.65s) ease;transform:rotateY(0)}
.door-leaf-left{left:0;transform-origin:0 50%}
.door-leaf-right{right:0;transform-origin:100% 50%}
.doorway[data-door-state="open"] .door-leaf-left{transform:rotateY(var(--door-angle,82deg));filter:brightness(.68)}
.doorway[data-door-state="open"] .door-leaf-right{transform:rotateY(calc(var(--door-angle,82deg) * -1));filter:brightness(.68)}
.motion-paused .grass-motion{animation-play-state:paused}
@media(prefers-reduced-motion:reduce){.grass-motion{animation:none}.door-leaf{transition:none}}

#mountains{position:absolute;inset:0;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;z-index:0}
#admin-button{position:fixed;right:max(20px,env(safe-area-inset-right));bottom:max(20px,env(safe-area-inset-bottom));z-index:50;background:#b73932;border:2px solid #692c29;border-top-color:#e37b62;color:#fff6e7;padding:13px 23px;box-shadow:0 4px 0 #632c29,0 7px 18px #34271b30;font-family:inherit;font-weight:700;font-size:16px;cursor:pointer;border-radius:5px}
#admin-button:hover{background:#c8463d}#admin-button:active{transform:translateY(2px);box-shadow:0 2px 0 #632c29}
#admin-button[hidden],#coordinates[hidden]{display:none}
#coordinates{position:fixed;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));z-index:45;background:#302923dd;color:#ffe4ae;padding:9px 12px;border:1px solid #be9a65;border-radius:4px;font-size:13px;font-variant-numeric:tabular-nums;pointer-events:none}
#admin-panel{width:min(380px,calc(100vw - 32px));max-height:calc(100dvh - 40px);overflow:auto;padding:23px;background:#fbf0d9;color:#493a30;border:2px solid #a77549;border-radius:9px;box-shadow:0 20px 80px #21160e40}
#admin-panel::backdrop{background:#25201d55;backdrop-filter:blur(2px)}
#admin-panel header{display:flex;align-items:center;justify-content:space-between;margin-bottom:4px}#admin-panel h1{font-size:23px;margin:0}#admin-close{font-size:28px!important;width:36px;height:36px;line-height:24px;padding:0!important;border:0!important;background:transparent!important;color:#735a49}
#admin-panel button,#admin-panel select{font:inherit;cursor:pointer;border:1px solid #b99972;border-radius:4px;padding:10px 12px;background:#fffaee;color:#493a30}#admin-panel select{display:block;width:100%;margin-top:9px}
#admin-panel label{font-size:14px;line-height:1.5}#admin-panel .admin-note{font-size:11px;color:#8d6652;margin:3px 0 25px}#admin-panel .admin-hint{font-size:11px;line-height:1.6;color:#8b7763;margin:10px 0 24px}
.admin-check{display:flex;align-items:center;gap:9px}.admin-check input{width:18px;height:18px;accent-color:#ae4335;flex:none}.flow-label{display:flex;justify-content:space-between;margin-top:24px}#admin-flow{width:100%;accent-color:#ae4335;margin:12px 0 23px}#admin-reset{width:100%}
button:focus-visible,select:focus-visible,input:focus-visible{outline:3px solid #4b8997;outline-offset:3px}
.ghost-motion{transform-origin:25% 100%;animation:ghost-sway 5s ease-in-out var(--motion-delay,0s) infinite}
@keyframes ghost-sway{0%,100%{transform:rotate(-1deg)}50%{transform:rotate(1deg)}}
@media(prefers-reduced-motion:reduce){.ghost-motion{animation:none}}

.building-hit{position:absolute;border:0;background:transparent;padding:0;cursor:pointer;pointer-events:auto;clip-path:polygon(50% 0,72% 17%,100% 47%,100% 100%,0 100%,0 47%,28% 17%)}
.building-hit:focus-visible{outline:0;background:linear-gradient(transparent 82%,#fff3c42b)}
#interior{position:absolute;inset:0;z-index:1;overflow:hidden;pointer-events:none;background:#946340;isolation:isolate}
#interior[hidden]{display:none}#interior canvas{position:absolute;pointer-events:none;image-rendering:pixelated}
.in-interior #scene,.in-interior #sky,.in-interior #mountains{display:none}
#room-transition{position:absolute;inset:0;z-index:30;background:#332a26;opacity:0;pointer-events:none;transition:opacity .32s ease}.visible#room-transition{opacity:1}
.interior-exit{position:absolute;border:0;padding:0;background:transparent;pointer-events:auto;cursor:pointer;z-index:9}
.interior-exit:focus-visible{outline:2px dashed #f7d496;outline-offset:-4px}

.interior-exit{z-index:1001}
.motion-paused .ghost-motion{animation-play-state:paused}

#coordinates{bottom:max(86px,calc(env(safe-area-inset-bottom) + 70px))}
#world-button{position:fixed;left:max(20px,env(safe-area-inset-left));bottom:max(20px,env(safe-area-inset-bottom));z-index:50;display:flex;gap:9px;align-items:center;background:#fbefd7;color:#4c3a29;border:2px solid #a77948;border-top-color:#ead4a7;border-radius:5px;padding:13px 15px;font:700 14px ui-monospace,monospace;cursor:pointer;box-shadow:0 4px 0 #795135,0 7px 18px #34271b30}
#world-button:hover{background:#fff8e9}.world-dot{display:inline-block;width:11px;height:11px;border-radius:50%;flex-shrink:0;border:2px solid #ffffff6b;background:#858a88;box-shadow:0 0 0 1px #46372438}
.world-dot[data-status="green"]{background:#459862}.world-dot[data-status="yellow"]{background:#d5a02c}.world-dot[data-status="red"]{background:#c4483f}
#world-panel{width:min(420px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:22px;overflow:auto;background:#fbf0d9;color:#493a30;border:2px solid #a77549;border-radius:9px;box-shadow:0 20px 80px #21160e40}
#world-panel::backdrop{background:#25201d55}#world-panel header{display:flex;align-items:center;justify-content:space-between}#world-title{margin:0;font-size:23px}#world-close{border:0;background:none;color:inherit;font-size:28px;cursor:pointer;padding:0 6px}
#world-identity{font-size:12px;color:#846b52;margin:10px 0 20px}#world-list{display:grid;gap:8px;max-height:50dvh;overflow:auto}
.world-row{display:grid;grid-template-columns:12px 1fr auto auto;gap:11px;align-items:center;width:100%;padding:14px 12px;border:1px solid #c8af87;border-radius:4px;background:#fff9eb;color:inherit;font:inherit;font-size:13px;cursor:pointer;text-align:left}
.world-row:disabled{cursor:default}.world-row[data-current="true"]{background:#e9e5cb;border-color:#aaa67c}.world-count{font-variant-numeric:tabular-nums}.world-action{font-size:11px;color:#8b7159;width:56px;text-align:right}
#world-message{font-size:12px;line-height:1.6;margin:12px 0;color:#975142}#world-message:empty{display:none}
#test-window{margin-top:20px;width:100%;border:1px solid #b99972;border-radius:4px;padding:11px;background:#fffaee;color:#493a30;font:inherit;font-size:12px;cursor:pointer}#test-window[hidden]{display:none}
.remote-player{position:absolute;image-rendering:pixelated;pointer-events:none}
@media(max-width:420px){#world-button{left:12px;font-size:12px;padding:14px 10px;gap:6px}#admin-button{right:12px;padding:13px 16px}.world-row{gap:8px;padding:12px 8px}}

/* Dark circus surfaces; occupancy colors and the red Admin control remain distinct. */
html,body,#viewport{background:#151724}
#world-button{background:#292630;color:#ded0b0;border-color:#715b49;border-top-color:#9b7e57;box-shadow:0 4px 0 #15141b,0 7px 18px #0005}
#world-button:hover{background:#36303b}
#admin-button{background:#762b37;border-color:#3d1e29;border-top-color:#a74c50;box-shadow:0 4px 0 #301922,0 7px 18px #0005}#admin-button:hover{background:#8d3543}
#world-panel,#admin-panel{background:#25222c;color:#ddcfb3;border-color:#715a46;box-shadow:0 20px 80px #0009}
#world-panel::backdrop,#admin-panel::backdrop{background:#10111b9c;backdrop-filter:none}
#world-identity,#admin-panel .admin-note,#admin-panel .admin-hint{color:#a79a8c}
.world-row,#test-window,#admin-panel button,#admin-panel select{background:#302b35;border-color:#685341;color:#ddd0b9}
.world-row[data-current="true"]{background:#343637;border-color:#697465}.world-action{color:#b4a590}#world-message{color:#eaa190}
#interior{background:#302631}#coordinates{background:#1d1c29e8;border-color:#735f4b;color:#d9c8a8}

#test-window{display:block;text-align:center;text-decoration:none}
.world-object-hit{position:absolute;pointer-events:auto;border:0;padding:0;background:transparent;cursor:pointer}
.world-object-hit:focus-visible{outline:2px dashed #c09d64;outline-offset:3px}
.balloon-motion{transform-origin:50% 100%;animation:balloon-sway var(--balloon-duration,6s) ease-in-out var(--motion-delay,0s) infinite}
@keyframes balloon-sway{0%,100%{transform:rotate(calc(-1 * var(--balloon-angle,3deg)))}50%{transform:rotate(var(--balloon-angle,3deg))}}
.motion-paused .balloon-motion{animation-play-state:paused}
.player-nametag{position:absolute;pointer-events:none;image-rendering:pixelated;z-index:18}
/* Focus must not scroll the game surface independently from the camera. */
html,body,#viewport{overflow:clip}
@media(prefers-reduced-motion:reduce){.balloon-motion{animation:none}}

/* Chat UI and independent rectangular speech panels with a separate tail. */
.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
#chat-panel{position:fixed;left:max(20px,env(safe-area-inset-left));bottom:86px;width:min(350px,calc(100vw - 40px));z-index:42;color:#e5d5bb;background:#211e29ed;border:1px solid #786147;border-radius:5px;box-shadow:0 4px 16px #0004;font-size:12px}
#chat-toggle{display:flex;justify-content:space-between;width:100%;padding:10px 12px;border:0;border-bottom:1px solid #63513e;background:#332a35;color:inherit;font:700 12px inherit;text-align:left;cursor:pointer}
#chat-messages{height:120px;overflow:auto;overscroll-behavior:contain;padding:5px 12px;scrollbar-width:thin;scrollbar-color:#75604a #24212b}
#chat-messages p{line-height:1.5;margin:6px 0;overflow-wrap:anywhere;white-space:pre-wrap}#chat-messages strong{color:#d1ac77}
#chat-form{display:grid;grid-template-columns:1fr auto;gap:7px;padding:9px;border-top:1px solid #574535;align-items:center}
#chat-input{width:100%;min-width:0;resize:none;border:1px solid #6c5848;border-radius:3px;background:#16151e;color:#f2e4cb;font:12px/1.4 inherit;padding:8px;outline-offset:1px;max-height:100px}
#chat-input::placeholder{color:#ab9b8c}#chat-input[aria-invalid="true"]{background:#3b1721;border:2px solid #e3656b;color:#ffccd0}
#chat-send{background:#61404b;border:1px solid #92705b;color:#f4dfbf;padding:9px 7px;font:inherit;cursor:pointer;border-radius:3px}#chat-send:disabled{opacity:.45;cursor:default}
#chat-hint{grid-column:1/-1;font-size:11px;line-height:1.5;margin:0;color:#e7c394}#chat-hint:empty{display:none}#chat-hint.error{color:#ff9aa1}
#chat-panel.collapsed #chat-body{display:none}#chat-panel.collapsed #chat-toggle{border-bottom:0}
.speech-bubble{position:absolute;z-index:19;transform:translate(-50%,-100%);width:var(--bubble-width,220px);height:var(--bubble-height,92px);padding:9px 11px;background:#f0dfbc;color:#32262d;border:2px solid #765b46;border-radius:7px;box-shadow:0 3px 0 #20172270;pointer-events:none;font-size:12px;line-height:1.45;display:flex;flex-direction:column}
.speech-bubble::after{content:"";position:absolute;left:calc(50% - 7px);bottom:-8px;width:12px;height:12px;background:#f0dfbc;border-right:2px solid #765b46;border-bottom:2px solid #765b46;transform:rotate(45deg)}
.speech-text{overflow:hidden;overflow-wrap:anywhere;white-space:pre-wrap;flex:1;min-height:0}.typing-only{width:56px;height:32px;padding:2px 10px}.typing-only .speech-text{display:none}
.typing-dots{font:bold 21px/20px monospace;letter-spacing:3px;height:20px;flex:none}.typing-dots span:nth-child(2){animation:typing-second var(--typing-duration,1.2s) step-end infinite}.typing-dots span:nth-child(3){animation:typing-third var(--typing-duration,1.2s) step-end infinite}
@keyframes typing-second{0%,100%{visibility:hidden}33%{visibility:visible}}@keyframes typing-third{0%,100%{visibility:hidden}66%{visibility:visible}}
.speech-bubble[hidden],.typing-dots[hidden]{display:none}
#coordinates{top:16px;bottom:auto}
#admin-logs{margin-top:12px;width:100%}
#logs-panel{width:min(900px,calc(100vw - 28px));max-height:calc(100dvh - 30px);padding:20px;border:2px solid #796147;border-radius:7px;background:#25212c;color:#e6d6bb;overflow:auto;font-size:13px}
#logs-panel::backdrop{background:#111019b0}#logs-panel header{display:flex;justify-content:space-between;align-items:center}#logs-title{margin:0 0 16px;font-size:22px}#logs-close{font-size:24px!important}
#logs-filters{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end}#logs-filters label{display:grid;gap:6px;font-size:12px}
#logs-panel input,#logs-panel select,#logs-panel button{font:inherit;border:1px solid #796147;border-radius:3px;background:#362e39;color:inherit;padding:9px;min-width:0}#logs-panel button{cursor:pointer}
#logs-status{font-size:12px;color:#c0ac92}.log-record{padding:12px 0;border-top:1px solid #594637}.log-record>div{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap}.log-record time{font-size:11px;color:#ad9b88}.log-record p{white-space:pre-wrap;overflow-wrap:anywhere;margin:8px 0;font-size:13px;line-height:1.5}.log-record[data-category="technical"] strong{color:#f0a0a1}.log-record[data-category="chat"] strong{color:#b4ccb9}.log-record pre{white-space:pre-wrap;overflow-wrap:anywhere;font:11px/1.5 monospace;background:#19171f;padding:10px}.log-record summary{cursor:pointer;font-size:11px;color:#baaa93}#logs-more{width:100%}#logs-more[hidden]{display:none}
@media(max-width:600px){#chat-panel{left:12px;width:min(320px,calc(100vw - 24px));bottom:84px}#chat-messages{height:90px}#logs-filters{grid-template-columns:1fr 1fr}#logs-panel{padding:14px}.speech-bubble{max-width:calc(100vw - 24px)}}
@media(prefers-reduced-motion:reduce){.typing-dots span{animation:none!important}}
#chat-toggle{font-family:inherit;font-size:12px;font-weight:700}#chat-input{font-family:inherit;font-size:12px;line-height:1.4}.speech-text{display:-webkit-box;-webkit-line-clamp:4;-webkit-box-orient:vertical}

/* Personal quest journal: compact, separate from the game camera and lighting. */
#quest-panel{position:fixed;top:max(18px,env(safe-area-inset-top));right:max(20px,env(safe-area-inset-right));width:min(298px,calc(100vw - 24px));z-index:42;background:#211e29f5;color:#e6d6bb;border:1px solid #786147;border-top:2px solid #b39360;border-radius:4px;box-shadow:0 5px 18px #0005;font-size:12px}
#quest-toggle{display:flex;justify-content:space-between;align-items:center;width:100%;padding:11px 14px;border:0;background:#332a35;color:#e9d4b0;font:700 13px ui-monospace,monospace;text-align:left;cursor:pointer}
#quest-total{margin-left:9px;color:#a99984;font-size:11px;font-weight:400}.quest-chevron{font-size:18px;line-height:16px;color:#b89b72}
#quest-list{padding:3px 12px 10px;max-height:min(300px,calc(100dvh - 190px));overflow:auto;overscroll-behavior:contain;scrollbar-width:thin}
#quest-list h2{margin:12px 2px 5px;color:#ac967b;font-size:10px;text-transform:uppercase;letter-spacing:1.5px;font-weight:400}
.quest-row{display:flex;align-items:flex-start;gap:9px;width:100%;padding:9px 3px;border:0;background:transparent;color:#eadfc9;font:12px/1.55 ui-monospace,monospace;text-align:left;cursor:pointer;border-radius:2px}
.quest-row:hover{background:#45374680}.quest-mark{color:#c7a26a;flex:none;font-size:15px;line-height:19px}.quest-row[data-complete="true"] .quest-mark{color:#a4b79a}.quest-row[data-complete="true"] .quest-label{color:#aeb6a2}
#quest-panel.collapsed #quest-list{display:none}
.quest-dialog{width:min(440px,calc(100vw - 28px));max-height:calc(100dvh - 32px);padding:24px;border:1px solid #89704e;border-top:3px solid #b39360;border-radius:5px;background:#25212c;color:#e6d6bb;box-shadow:0 22px 90px #0009;overflow:auto;font-size:13px;line-height:1.65}
.quest-dialog::backdrop{background:#101019ad}.quest-dialog header{display:flex;align-items:center;justify-content:space-between;gap:16px}.quest-dialog h1{font-size:20px;line-height:1.4;margin:12px 0 18px;font-weight:600}.quest-dialog button,.quest-dialog select{font:inherit;border:1px solid #796147;border-radius:3px;background:#362e39;color:inherit;padding:9px 12px;cursor:pointer}.quest-dialog button:disabled{opacity:.45;cursor:default}
.quest-dialog .quest-close{font-size:26px;line-height:28px;padding:0 6px;border:0;background:none;color:#bfa78b}.quest-dialog .quest-close:hover{color:#fff1d6}
#quest-kind{font-size:11px;letter-spacing:1px;color:#baa17b;margin:0}#quest-description{margin:0 0 22px;line-height:1.85;color:#d3c6b2}#quest-progress{padding:12px 0 0;border-top:1px solid #5f4d3e;color:#d7b47e;margin-bottom:0}#quest-progress[data-complete="true"]{color:#b8cba9}#quest-daily-note{font-size:10px;color:#9f9185;margin:12px 0 0}#quest-daily-note:empty{display:none}
#admin-quests{margin-top:12px;width:100%}#quest-admin-title{font-size:19px;margin:0 0 12px}#quest-player{display:block;width:100%;margin-top:10px;min-height:42px}#quest-admin-status{font-size:12px;color:#c1b09a;min-height:40px;margin:15px 0}.quest-admin-actions{display:flex;gap:10px;flex-wrap:wrap}.quest-admin-actions button{flex:1}#quest-reset-player{background:#68313e;border-color:#976055}
@media(max-width:600px){#quest-panel{top:max(12px,env(safe-area-inset-top));right:12px;width:264px}.quest-dialog{padding:20px}#coordinates{top:auto;bottom:62px;font-size:11px}#quest-toggle{padding:9px 12px}#quest-list h2{margin-top:9px}.quest-row{padding:7px 2px}}

.casino-sign{position:absolute;pointer-events:none;isolation:isolate;color:#e8d3a6;font:bold var(--casino-sign-font,20px)/1.05 "Courier New",monospace;text-align:center;white-space:nowrap}
.casino-sign::before{content:'';position:absolute;inset:23% 5% 12%;z-index:-1;background:#171117;box-shadow:0 2px 4px #09070bc9,0 0 9px #d6a75830}
.casino-sign-frame{position:absolute;inset:0;display:block;width:100%;height:100%;image-rendering:pixelated;pointer-events:none;user-select:none}
.casino-sign-copy{position:absolute;inset:29% 13% 22%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;text-shadow:0 2px #1e1110,0 0 4px #d5ad5b26}
.casino-sign-copy>span:first-child{font-size:.6em;letter-spacing:.22em;color:#baa27b}
.casino-sign-copy>span:last-child{letter-spacing:.055em}
.casino-entrance-glow{position:absolute;pointer-events:none;border-radius:45% 45% 20% 20%;background:radial-gradient(ellipse,#ffcf7138 0%,#ff9d4120 42%,transparent 72%);animation:casino-glow var(--casino-glow,4s) ease-in-out infinite}
@keyframes casino-glow{0%,100%{opacity:.5}50%{opacity:1}}
.casino-wheel-disc{animation:casino-wheel-turn var(--wheel-period,80s) linear infinite;transform-origin:50% 50%}@keyframes casino-wheel-turn{to{transform:rotate(360deg)}}
.casino-slot-hit{position:absolute;pointer-events:auto;cursor:pointer;background:transparent;border:0;padding:0;image-rendering:pixelated;border-radius:12px}.casino-slot-hit:hover{box-shadow:0 0 24px #ffb45f32}.casino-slot-screen{position:absolute;left:31%;top:25%;width:35%;height:10%;display:flex;align-items:center;justify-content:center;color:#ffd58a;font:700 8px/1.2 ui-monospace,monospace;white-space:pre-line;text-shadow:0 0 5px #ffae56}
.casino-slot-id{position:absolute;bottom:-17px;left:50%;transform:translateX(-50%);background:#171622e8;border:1px solid #a08552;padding:2px 5px;color:#ffe4ac;font:10px monospace;white-space:nowrap;display:none}.casino-interior[data-show-slot-ids="true"] .casino-slot-id{display:block}
.casino-slot-hit[data-view="left"] .casino-slot-screen{left:46%;top:57%;width:39%;height:11%;transform:skewY(-16deg);font-size:7px;color:#f5dda5}
.casino-slot-hit[data-view="right"] .casino-slot-screen{left:14%;top:56%;width:40%;height:12%;transform:skewY(17deg);font-size:7px;color:#f5dda5}
@media(max-width:600px){.casino-slot-hit[data-view] .casino-slot-screen{font-size:5px}}
.casino-wheel-title{position:absolute;z-index:1000;text-align:center;pointer-events:none;font:700 10px/1.4 ui-monospace,monospace;letter-spacing:2px;color:#caac72}
#casino-room-balance{position:absolute;left:50%;bottom:14px;transform:translateX(-50%);z-index:1100;pointer-events:none;background:#191721e8;border:1px solid #806442;color:#f4d9a1;font:12px ui-monospace,monospace;padding:7px 14px;white-space:nowrap}
.casino-dialog{width:min(570px,calc(100vw - 24px));max-height:calc(100dvh - 24px);overflow:auto;background:#211e29;color:#e9dcc1;border:1px solid #967341;border-top:3px solid #cca662;border-radius:6px;padding:24px;font:13px/1.6 ui-monospace,monospace;box-shadow:0 24px 100px #000b}.casino-dialog::backdrop{background:#0d0d16b8}.casino-dialog header{display:flex;justify-content:space-between;gap:14px;align-items:center}.casino-dialog h1{font-size:22px;line-height:1.3;margin:0 0 14px}.casino-eyebrow{font-size:10px;letter-spacing:2px;color:#b39970;margin:0 0 7px}.casino-dialog .casino-close{border:0;background:none;font-size:28px;padding:0 5px;color:#c4b191;align-self:flex-start}
.casino-dialog button,.casino-dialog input,.casino-dialog select{font:inherit;color:inherit;border:1px solid #806644;border-radius:3px;padding:9px 12px;background:#312936;min-width:0}.casino-dialog button{cursor:pointer}.casino-dialog button:disabled{opacity:.45;cursor:default}.casino-dialog input{background:#15141e;width:100%}.casino-dialog label{display:block;margin:14px 0 7px}.casino-dialog select{width:100%}.casino-form-row{display:flex;gap:10px;align-items:center}.casino-form-row input{flex:1}.casino-form-row button{flex:none}.casino-wallet{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;border-top:1px solid #574334;padding:14px 0;color:#b6a792}.casino-wallet strong{color:#e8cf9b}.casino-bank-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.casino-bank-grid>div{border:1px solid #775b3b;background:#302431;padding:15px}.casino-bank-grid small{display:block;color:#bca785;font-size:11px}.casino-bank-grid strong{display:block;font-size:26px;font-weight:500;color:#ffdfa1;margin-top:5px}.casino-round-line{display:flex;flex-wrap:wrap;gap:6px;justify-content:space-between;font-size:11px;padding:12px 0;color:#c7ae84}
#casino-participants{padding:0;margin:0 0 16px;list-style:none;max-height:140px;overflow:auto}#casino-participants li{display:flex;flex-wrap:wrap;justify-content:space-between;gap:4px;padding:9px 0;border-bottom:1px solid #48383a}#casino-participants small{width:100%;color:#9e9283;font-size:10px;overflow-wrap:anywhere}.casino-dialog #casino-bet,.casino-dialog #casino-grant-button{background:#713745;border-color:#ac7959;color:#ffe6bc}.casino-muted,#casino-bet-preview{font-size:11px;color:#a99985;line-height:1.7}.casino-demo-note{font-size:11px;color:#cfaf80;border-left:2px solid #957044;padding:8px 12px;background:#34282c;margin:16px 0 0}.casino-rules{border-top:1px solid #554133;padding:12px 0;font-size:12px}.casino-rules summary{cursor:pointer;color:#cdb690}.casino-rules p{color:#bfb09a}.casino-dialog [role="status"]{color:#e1bd91;font-size:12px;overflow-wrap:anywhere}.casino-dialog [role="status"]:empty{display:none}
.casino-id-control{margin-top:20px}#admin-casino,#admin-analytics{width:100%;margin-top:12px}#casino-grant-form{padding-bottom:20px;border-bottom:1px solid #624a38}#casino-grant-form button{margin-top:10px}#casino-player-refresh{font-size:11px}#casino-analytics{width:min(1120px,calc(100vw - 24px))}.casino-table-wrap{overflow:auto;max-height:50dvh}.casino-table-wrap table{border-collapse:collapse;width:100%;font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap}.casino-table-wrap th{position:sticky;top:0;background:#3a2e39;text-align:right;color:#d2b47f;font-size:11px}.casino-table-wrap td,.casino-table-wrap th{padding:10px;border-bottom:1px solid #514035}.casino-table-wrap td{text-align:right}.casino-table-wrap tr:nth-child(even){background:#30273155}
@media(max-width:600px){.casino-dialog{padding:18px}.casino-dialog h1{font-size:19px}.casino-form-row{flex-wrap:wrap}.casino-form-row button{flex:1}.casino-form-row input{min-width:120px}.casino-slot-screen{font-size:6px}.casino-wheel-title{font-size:7px;letter-spacing:.5px}#casino-room-balance{font-size:10px;bottom:8px}.casino-bank-grid strong{font-size:22px}}
@media(prefers-reduced-motion:reduce){.casino-wheel-disc,.casino-entrance-glow{animation:none}}

/* The bank is a brass mechanical cabinet: velvet, carved rails and separate portraits. */
#casino-game{width:min(980px,calc(100vw - 24px));padding:18px 28px 12px;border:1px solid #a17a48;border-top:3px solid #dfbd7f;border-radius:3px;background:radial-gradient(ellipse at 50% 0,#58303c55,transparent 65%),#191820;box-shadow:0 0 0 4px #15121bd9,0 0 0 5px #5c4534,0 25px 110px #000d}
#casino-game>header{position:relative;padding:0 0 12px;border-bottom:1px solid #715039;margin-bottom:12px}
#casino-game>header:after{content:'◆';position:absolute;bottom:-10px;left:50%;background:#241c26;padding:0 14px;color:#c9a56c;font-size:12px}
#casino-game h1{font-size:25px;letter-spacing:2px;text-transform:uppercase;margin:0;color:#f4dcad;text-shadow:0 2px #000}
#casino-game .casino-eyebrow{margin-bottom:4px;color:#ad8d63;font-size:9px}
.bank-stage{background:radial-gradient(ellipse at 50% 30%,#722e3b30,transparent 75%);padding:2px 0 6px}
.bank-metrics{display:grid;grid-template-columns:1fr 1.2fr 1fr;align-items:center;text-align:center;gap:12px;margin-bottom:29px}
.bank-metrics>div{display:flex;flex-direction:column;gap:3px;min-width:0}.bank-metrics small{color:#b5a28b;font-size:10px;letter-spacing:1px;text-transform:uppercase}.bank-metrics strong{font:600 30px/1.2 ui-monospace,monospace;color:#f4d9a4;overflow-wrap:anywhere}.bank-metrics span{font-size:9px;color:#a58c72}.bank-countdown{position:relative;border-left:1px solid #6d4b3e;border-right:1px solid #6d4b3e}.bank-countdown strong{font-size:36px;font-variant-numeric:tabular-nums;letter-spacing:4px;color:#fff0ca}.bank-countdown small{color:#d9a575}
.bank-reel-shell{position:relative;padding:13px 0;border:1px solid #957044;border-top:4px solid #c29c62;border-bottom:4px solid #967143;background:linear-gradient(90deg,#301d24,#0c0e17 30%,#0c0e17 70%,#301d24);box-shadow:inset 0 0 0 3px #2e2022,0 5px 20px #0006;margin:0 5px;--tap:0}
#casino-reel{height:126px;position:relative;overflow:hidden;isolation:isolate}
#casino-reel:after{content:'';position:absolute;z-index:3;inset:0;background:linear-gradient(90deg,#160f1c 0,transparent 15%,transparent 85%,#160f1c);pointer-events:none}
#casino-reel-track{display:flex;gap:8px;position:absolute;left:0;top:0;height:126px;will-change:transform}
.reel-card{flex:0 0 96px;position:relative;background:#291d26;border:1px solid #866244;box-sizing:border-box;height:126px;padding:3px;box-shadow:inset 0 0 0 1px #17131b;overflow:hidden}
.reel-card img{display:block;width:88px;height:88px;object-fit:cover;image-rendering:pixelated;border-bottom:1px solid #bc8d57}.reel-card span{display:block;font-size:9px;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;padding:8px 2px;color:#dfc393}
.is-empty .reel-card{opacity:.24;filter:saturate(.4)}.reel-center{position:absolute;z-index:2;width:96px;left:50%;height:100%;transform:translateX(-50%);border:1px solid #efc67b55;box-shadow:0 0 30px #e7af4230,inset 0 0 20px #e7af4214;pointer-events:none}
[data-phase="settled"] .reel-center{border-color:#ffe4a3;box-shadow:0 0 32px #ebb75750}
.reel-pointer{position:absolute;z-index:5;left:calc(50% - 22px);width:44px;height:36px;filter:drop-shadow(0 2px 2px #000);pointer-events:none;transform-origin:50% 0;transform:translateX(calc(var(--tap)*-3px)) rotate(calc(var(--tap)*15deg))}.reel-pointer.top{top:-22px}.reel-pointer.bottom{bottom:-22px;transform-origin:50% 100%;transform:translateX(calc(var(--tap)*-3px)) rotate(calc(var(--tap)*-15deg))}
.reel-pointer:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#805932,#ffe3a1 46%,#ad7c3d 53%,#e6bd75);clip-path:polygon(0 0,32% 0,50% 8%,68% 0,100% 0,100% 24%,82% 24%,82% 38%,66% 38%,66% 65%,50% 100%,34% 65%,34% 38%,18% 38%,18% 24%,0 24%)}
.reel-pointer.bottom:before{transform:rotate(180deg)}.reel-pointer i{position:absolute;left:18px;top:6px;width:8px;height:8px;transform:rotate(45deg);background:#8c304b;border:1px solid #ffdc8e;box-shadow:inset 2px 2px #d27571}.reel-pointer.bottom i{top:auto;bottom:6px}
.reel-rivet{position:absolute;width:8px;height:8px;top:50%;background:#d1a164;box-shadow:inset -2px -2px #765034;z-index:4;transform:translateY(-50%) rotate(45deg)}.reel-rivet.left{left:-5px}.reel-rivet.right{right:-5px}
.bank-reel-hint{text-align:center;color:#a89076;font-size:10px;padding:20px 6px 10px;min-height:45px}.bank-reel-hint[hidden],.bank-result[hidden]{display:none}
.bank-result{display:flex;align-items:center;gap:12px;margin:23px 4px 12px;padding:12px 16px;background:linear-gradient(100deg,#4b302b,#26202a);border:1px solid #ae834d;box-shadow:inset 0 0 0 3px #211922}.bank-result>img{width:52px;height:52px;border:1px solid #d5aa65;image-rendering:pixelated}.bank-result>div{display:flex;flex-direction:column}.bank-result small{color:#bda282;font-size:9px}.bank-result strong{color:#ffe2a2;font-size:17px}.bank-result span{font-size:9px;color:#a99479}.bank-received{margin-left:auto;text-align:right}.bank-received strong{font-size:23px}
.bank-bottom{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:22px;border-top:1px solid #554035;padding-top:14px}.bank-section-title{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.bank-section-title h2{font-size:12px;color:#c7ae88;font-weight:500;margin:0}.bank-section-title>span{font-size:10px;background:#332831;border:1px solid #674b39;min-width:23px;text-align:center;color:#c9ab7a}
#casino-shares{display:flex;gap:3px;height:4px;background:#30232a;margin-bottom:8px;overflow:hidden}#casino-shares i{min-width:1px}
#casino-game #casino-participants{max-height:157px;min-height:105px;margin:0}#casino-game #casino-participants li{display:flex;flex-wrap:nowrap;align-items:center;gap:10px;padding:8px 4px;border-bottom:1px solid #433038}#casino-participants li>img{width:40px;height:40px;image-rendering:pixelated;border:1px solid #8c6443;flex:none}#casino-participants li>div{min-width:0;flex:1;display:flex;flex-direction:column}#casino-participants strong{font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}#casino-participants li>span{font-size:10px;color:#e0c398;white-space:nowrap}#casino-participants .is-self{background:#8a55301b}#casino-participants small{font-size:9px;color:#9f8b78}#casino-participants .bank-empty{color:#8e7d70;font-size:11px;line-height:1.8;padding-top:20px}
.bank-stake{border-left:1px solid #5c4234;padding-left:22px}.bank-stake .casino-wallet{border:0;padding:0;flex-wrap:nowrap;justify-content:flex-start;align-items:center;font-size:10px}.casino-wallet img{width:36px;height:36px;image-rendering:pixelated;border:1px solid #bc935b}.casino-wallet>div{display:flex;flex-direction:column}.casino-wallet strong{font-size:12px}.bank-stake label{font-size:10px;color:#b8a084;margin:12px 0 6px}.bank-stake .casino-form-row{flex-wrap:wrap;gap:7px}.bank-stake input{width:100%;flex:auto;height:38px;font-size:15px;font-variant-numeric:tabular-nums}.bank-stake #casino-bet{width:100%;padding:9px;background:linear-gradient(#985145,#69333e);border-color:#c39861;color:#ffe4ae;box-shadow:inset 0 1px #e0b37255,0 3px #0e1018;font-size:12px}.bank-stake #casino-bet:hover:enabled{background:linear-gradient(#af6351,#803d48)}.bank-stake #casino-bet-preview{font-size:9px;line-height:1.6;margin:8px 0 0}
.bank-stake .casino-form-row{flex-wrap:nowrap}.bank-stake .casino-form-row input{flex:0 0 90px;width:90px;min-width:0}.bank-stake #casino-bet{flex:1;width:auto;font-size:11px;min-height:38px;padding:8px 5px}
#casino-game .casino-rules{font-size:10px;padding:10px 0}#casino-game .casino-demo-note{font-size:9px;padding:6px 10px;margin-top:6px;background:transparent;border-left-color:#6e5139;color:#a28b70}
@media(max-width:700px){#casino-game{padding:18px 14px 12px}#casino-game h1{font-size:20px;letter-spacing:1px}.bank-bottom{grid-template-columns:1fr;gap:12px}.bank-stake{border-left:0;border-top:1px solid #5c4234;padding:12px 0 0}.bank-metrics{gap:6px}.bank-metrics strong{font-size:23px}.bank-countdown strong{font-size:27px;letter-spacing:2px}.bank-metrics small{font-size:8px;letter-spacing:0}.bank-metrics span{font-size:8px}.bank-stake .casino-form-row{flex-wrap:nowrap}.bank-stake input{min-width:80px;width:100px}.bank-stake #casino-bet{width:auto;flex:1}.bank-result{padding:10px;gap:8px}.bank-result strong{font-size:13px}.bank-received strong{font-size:18px}.bank-result>img{width:40px;height:40px}#casino-game #casino-participants{min-height:60px;max-height:130px}}

#interior > *{translate:calc(-1 * var(--interior-camera-x,0px)) calc(-1 * var(--interior-camera-y,0px))}
#interior > #casino-room-balance{translate:none}
@media(max-width:600px){#interior > #casino-room-balance{bottom:calc(88px + env(safe-area-inset-bottom))}}
.department-game-hit{background:transparent;border:0;padding:0;cursor:pointer;touch-action:manipulation;pointer-events:auto;}
.department-game-hit:focus-visible{outline:2px solid #d0b080;outline-offset:4px;border-radius:8px;}
