:root{color-scheme:dark;--ink:#fffaf1;--muted:#dbd9d1;--panel:rgba(18,28,34,.65);--line:rgba(255,255,255,.20);--accent:#e4c99b;font-family:ui-sans-serif,-apple-system,BlinkMacSystemFont,"Apple SD Gothic Neo","Noto Sans KR",sans-serif}*{box-sizing:border-box}html,body{margin:0;width:100%;height:100%;overflow:hidden}body{background:#4c6d83;color:var(--ink)}button{font:inherit;color:inherit;cursor:pointer;border:0;-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,canvas:focus-visible{outline:2px solid var(--accent);outline-offset:4px}button{transition:background .18s,color .18s,transform .18s}button:hover{background:rgba(255,255,255,.15)}button:active{transform:translateY(1px)}#experience,#scene{width:100%;height:100%;position:absolute;inset:0}#scene{display:block;touch-action:none;outline-offset:-5px}#experience:after{content:"";pointer-events:none;position:absolute;inset:0;background:linear-gradient(180deg,rgba(7,24,38,.30),transparent 25%,transparent 68%,rgba(10,20,24,.45));z-index:1}.topbar{position:absolute;top:32px;left:40px;right:40px;display:flex;justify-content:space-between;align-items:flex-start;z-index:3;pointer-events:none}.identity{text-shadow:0 2px 20px #14233055}.eyebrow{font-size:10px;letter-spacing:.24em;color:#f0e4cf}.identity h1{font-size:30px;font-weight:550;letter-spacing:-.05em;margin:8px 0 7px}.identity p{font-size:12px;color:#fff7e6e6;margin:0;letter-spacing:.02em}.top-actions{display:flex;align-items:center;gap:10px;pointer-events:auto}.altitude{display:flex;align-items:baseline;gap:5px;font-size:11px;letter-spacing:.03em;margin-right:8px;text-shadow:0 1px 6px #0008}.altitude b{font-size:22px;font-weight:450;font-variant-numeric:tabular-nums}.dot{display:inline-block;width:5px;height:5px;border-radius:50%;background:#d9eccf;margin-right:5px;align-self:center}.icon-button{background:var(--panel);border:1px solid var(--line);border-radius:50%;width:36px;height:36px;font-size:18px;backdrop-filter:blur(14px)}.views{position:absolute;top:34px;left:50%;transform:translateX(-50%);display:flex;align-items:center;padding:5px;background:var(--panel);border:1px solid var(--line);border-radius:8px;z-index:3;backdrop-filter:blur(18px);white-space:nowrap}.views button{padding:10px 17px;background:transparent;border-radius:4px;font-size:12px;letter-spacing:.01em;color:#eee8dccc}.views button.active{background:#f1e6d7;color:#293333}.divider{height:18px;width:1px;background:var(--line);margin:0 4px}.location{position:absolute;left:40px;bottom:118px;z-index:2;pointer-events:none;text-shadow:0 2px 15px #0007}.location-label{font-size:10px;letter-spacing:.23em;color:var(--accent)}.location h2{font-size:26px;letter-spacing:-.04em;font-weight:450;margin:9px 0}.location p{font-size:12px;color:#fff6e9cc;line-height:1.7;margin:0}.bottom-bar{position:absolute;left:40px;right:40px;bottom:33px;z-index:4;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.walk-modes,.flight-controls{display:flex;align-items:center;gap:4px;background:var(--panel);border:1px solid var(--line);padding:5px;border-radius:8px;backdrop-filter:blur(18px);pointer-events:auto}.walk-modes button,.flight-controls button{border-radius:4px;padding:11px 15px;background:transparent;font-size:12px;white-space:nowrap}.walk-modes button span{margin-right:7px;font-size:14px}.walk-modes button[aria-pressed=true],#cruise[aria-pressed=true]{background:#f1e6d7;color:#293333}#cruise-symbol{font-size:18px;margin-right:9px;vertical-align:-1px}#home{font-size:21px;padding:5px 14px;border-left:1px solid var(--line);border-radius:0}.navigation{position:absolute;right:42px;bottom:115px;display:flex;flex-direction:column;align-items:center;gap:4px;z-index:4;user-select:none;touch-action:none}.navigation div{display:flex;gap:4px;align-items:center}.navigation button{background:rgba(18,28,34,.5);border:1px solid var(--line);border-radius:5px;backdrop-filter:blur(10px);width:37px;height:32px;font-size:16px;touch-action:none}.navigation #step{width:54px;font-size:10px}.hint{position:absolute;z-index:3;left:50%;bottom:50px;transform:translateX(-50%);font-size:10px;color:#ffffffb3;letter-spacing:.04em;pointer-events:none}.hint span{padding:0 10px;color:#fff6}.help-panel{position:absolute;right:40px;top:90px;z-index:6;width:320px;background:rgba(20,31,38,.96);border:1px solid var(--line);border-radius:10px;padding:24px;box-shadow:0 15px 60px #0003}.help-panel h2{font-size:17px;font-weight:500;margin:0 0 16px}.help-panel p{font-size:12px;line-height:1.8;color:#deded8}.help-panel dl{font-size:11px}.help-panel dl div{display:flex;justify-content:space-between;padding:10px 0;border-bottom:1px solid #fff1}.help-panel dd{margin:0;color:var(--accent)}.help-panel button,#error button{padding:10px 18px;background:#e6d0ae;color:#26333b;border-radius:4px;margin-top:10px}.help-panel[hidden],#error[hidden],#loading[hidden]{display:none}#loading{position:absolute;inset:0;z-index:10;background:#192b36;display:flex;flex-direction:column;justify-content:center;align-items:center}.loading-mark{font-family:Georgia,serif;font-size:46px;letter-spacing:.24em;font-weight:400;color:#e8d3b0}.loading-line{margin-top:20px;width:135px;height:1px;background:linear-gradient(90deg,transparent,#e8d3b0,transparent);animation:breathe 1.8s ease-in-out infinite}#loading p{font-size:12px;color:#c4cbd0;margin-top:18px}#error{position:absolute;inset:0;display:grid;place-content:center;background:#1a2b35e8;text-align:center;z-index:12;padding:30px}#error h2{font-size:22px}#error p{font-size:13px;max-width:500px;line-height:1.7;color:#ddd}#error button{justify-self:center}@keyframes breathe{50%{opacity:.25;transform:scaleX(.65)}}@media(max-width:900px){.topbar{top:23px;left:25px;right:25px}.identity h1{font-size:25px}.identity p{display:none}.views{top:105px}.location{left:25px;bottom:125px}.bottom-bar{left:25px;right:25px;bottom:25px}.hint{display:none}.navigation{right:27px;bottom:115px}.location h2{font-size:23px}.help-panel{right:25px;top:150px}}@media(max-width:580px){.topbar{left:19px;right:19px;top:20px}.eyebrow{font-size:8px}.identity h1{font-size:24px}.altitude{margin-right:0;font-size:9px}.altitude b{font-size:18px}.icon-button{width:30px;height:30px;font-size:15px}.top-actions{gap:6px}.views{top:98px;width:calc(100% - 36px);justify-content:center}.views button{padding:10px 11px;font-size:11px}.location{left:20px;bottom:177px;max-width:70%}.location h2{font-size:21px}.location p{font-size:10px;max-width:200px}.bottom-bar{left:18px;right:18px;bottom:max(20px,env(safe-area-inset-bottom));gap:10px;align-items:flex-end;flex-wrap:wrap}.walk-modes{width:100%;justify-content:center}.walk-modes button{flex:1;padding:12px 10px}.flight-controls{order:-1;margin-left:auto}.flight-controls button{font-size:10px;padding:7px 12px}.navigation{right:20px;bottom:166px}.navigation button{width:33px;height:30px}.navigation #step{width:47px}.help-panel{right:18px;top:154px;width:calc(100% - 36px);max-width:340px}.location-label{font-size:8px}}

.dance{position:absolute;left:50%;bottom:33px;transform:translateX(-50%);z-index:4;display:flex;align-items:center;gap:12px;width:min(420px,calc(100% - 640px));min-width:300px;padding:7px 14px 7px 7px;background:var(--panel);border:1px solid var(--line);border-radius:8px;backdrop-filter:blur(18px)}
.dance[hidden]{display:none}
#dance-play{flex:none;width:44px;height:44px;border-radius:6px;background:#f1e6d7;color:#293333;font-size:16px}
#dance-play:hover{background:#fff4e4}
#dance-play[aria-pressed=true]{background:var(--accent)}
.dance-body{flex:1;min-width:0}
.dance-head{display:flex;align-items:baseline;gap:8px;font-size:12px;margin-bottom:5px;white-space:nowrap;overflow:hidden}
.dance-head b{font-weight:600;letter-spacing:.02em}
.dance-head span{font-size:11px;color:#eee8dcb3;overflow:hidden;text-overflow:ellipsis}
.dance-track{display:flex;align-items:center;gap:8px;font-size:10px;color:#eee8dccc;font-variant-numeric:tabular-nums}
#dance-seek{flex:1;min-width:0;accent-color:var(--accent);height:16px;margin:0}
#watch[aria-pressed=true]{background:#f1e6d7;color:#293333}
.hint{bottom:96px}
@media(max-width:1100px){.dance{bottom:96px;width:min(420px,calc(100% - 50px))}.hint{display:none}}
@media(max-width:900px){.dance{bottom:88px}.location{bottom:190px}.navigation{bottom:180px}}
@media(max-width:580px){.dance{bottom:132px;width:calc(100% - 36px);min-width:0;gap:10px;padding:6px 12px 6px 6px}#dance-play{width:40px;height:40px}.location{bottom:236px}.navigation{bottom:226px}.walk-modes button{padding:12px 6px;font-size:11px}.walk-modes button span{margin-right:4px}}

.presence{position:absolute;top:134px;left:40px;z-index:3;max-width:calc(100% - 80px);padding:7px 11px;border:1px solid var(--line);border-radius:5px;background:var(--panel);color:var(--muted);font-size:11px;backdrop-filter:blur(12px);pointer-events:none}
.presence[data-online=true]{color:#d9eccf}
@media(max-width:900px){.presence{top:165px;left:25px}}
@media(max-width:580px){.presence{top:155px;left:19px;max-width:calc(100% - 38px);font-size:10px}}

.chat-form{flex:none;padding:12px;border-top:1px solid #ffffff20;background:#101b2528}
.chat-row{display:flex;gap:6px}.chat-row input{min-width:0;flex:1;background:#ffffff12;color:#fffaf1;border:1px solid #ffffff24;border-radius:4px;padding:10px;font:inherit;font-size:13px}.chat-row button{background:var(--accent);color:#26333b;padding:8px 12px;border-radius:4px;font-size:12px}.chat-row button:disabled{opacity:.45;cursor:default}
#chat-feedback{font-size:10px;color:var(--muted);line-height:1.5;margin:6px 2px 0}
#speech-layer{position:absolute;inset:0;z-index:3;pointer-events:none;overflow:hidden}
.speech-bubble{position:absolute;width:max-content;max-width:min(240px,70vw);padding:10px 14px;border-radius:15px;background:#fffdf6;color:#293333;box-shadow:0 3px 16px #14233035;font-size:14px;line-height:1.5;overflow-wrap:anywhere;white-space:pre-wrap;transform:translate(-50%,-100%);border:1px solid #d2c4ad}
.speech-bubble:after{content:"";position:absolute;bottom:-9px;left:calc(50% - 8px);border-width:9px 8px 0;border-style:solid;border-color:#fffdf6 transparent transparent}
.speech-bubble[hidden]{display:none}.speech-bubble.self{background:#f9e8c8}.speech-bubble.self:after{border-top-color:#f9e8c8}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}

@media(max-width:580px){.chat-row input{font-size:16px}.speech-bubble{font-size:13px}}
.chat-toggle{position:absolute;right:40px;top:96px;z-index:8;width:43px;height:43px;display:grid;place-items:center;border:1px solid #ffffff45;border-radius:9px;background:#14232e66;backdrop-filter:blur(8px)}
.chat-toggle svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.5;stroke-linecap:round;stroke-linejoin:round}.chat-toggle[aria-expanded=true]{color:var(--accent);background:#14232eb3}
#chat-unread{position:absolute;top:-5px;right:-5px;min-width:18px;padding:2px 4px;border-radius:10px;background:#e4c99b;color:#26333b;font-size:10px}#chat-unread[hidden]{display:none}
.chat-panel{position:absolute;right:40px;top:150px;bottom:110px;max-height:460px;width:330px;max-width:calc(100% - 38px);z-index:7;display:flex;flex-direction:column;overflow:hidden;border:1px solid #ffffff30;border-radius:9px;background:rgba(13,24,32,.48);backdrop-filter:blur(7px);box-shadow:0 12px 40px #10202b20}.chat-panel[hidden]{display:none}
.chat-header{display:flex;align-items:center;justify-content:space-between;flex:none;padding:10px 12px;border-bottom:1px solid #ffffff20;background:#14232e20}.chat-header>div{display:flex;align-items:center;gap:8px}.chat-header b{font-size:12px;font-weight:550}#chat-count{font-size:10px;color:#e9decd99}.chat-live{width:5px;height:5px;border-radius:50%;background:#c4dfb6}.chat-header button{background:none;font-size:23px;line-height:1;width:28px;height:28px;border-radius:4px}
.chat-messages{flex:1;min-height:0;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:#ffffff40 transparent;padding:14px 12px;font-size:12px;line-height:1.6;text-shadow:0 1px 3px #0008}.chat-messages p{margin:0 0 12px;overflow-wrap:anywhere}.chat-messages .chat-sender{color:#b5d8e5;font-weight:550;margin-right:8px}.chat-messages .own .chat-sender{color:var(--accent)}.chat-messages time{color:#ffffff65;font-size:9px;float:right;margin-left:8px}#chat-empty{color:#ffffff80;font-size:11px}.chat-row input::placeholder{color:#ffffff70}
.join-screen{position:absolute;inset:0;z-index:15;display:grid;place-items:center;padding:24px;background:radial-gradient(ellipse at 30% 15%,#526e7e,#152b38 75%);overflow:auto}.join-screen[hidden]{display:none}.join-card{width:min(420px,100%);padding:32px;border:1px solid #ffffff25;border-radius:14px;background:#15263170;box-shadow:0 20px 80px #0002}.join-card h2{font-size:25px;letter-spacing:-.04em;font-weight:500;margin:16px 0 10px}.join-card>p{font-size:12px;color:#d9dedf;line-height:1.6}.join-name{display:flex;flex-direction:column;gap:9px;font-size:12px;margin:26px 0 22px}.join-name input{font:inherit;font-size:16px;padding:12px;border:1px solid #ffffff30;border-radius:6px;background:#ffffff0b;color:#fff}.character-choices{border:0;padding:0;margin:0 0 24px;display:flex;gap:10px}.character-choices legend{font-size:12px;margin-bottom:10px}.character-choices label{flex:1;cursor:pointer}.character-choices input{position:absolute;opacity:0}.character-choices span{display:flex;flex-direction:column;gap:7px;padding:20px 13px;border:1px solid #ffffff28;border-radius:7px;background:#ffffff05}.character-choices input:checked+span{border-color:var(--accent);background:#e4c99b15}.character-choices input:focus-visible+span{outline:2px solid white;outline-offset:3px}.character-choices b{font-size:20px;font-weight:500}.character-choices small{font-size:10px;color:#d9dedf}.join-submit{display:flex;justify-content:space-between;width:100%;padding:14px;background:var(--accent);color:#26333b;border-radius:6px;font-size:14px}.join-card .join-note{font-size:10px;color:#ffffff70;margin:13px 0 0}
@media(max-width:900px){.chat-toggle{right:25px;top:156px}.chat-panel{right:25px;top:208px;bottom:170px}}
@media(max-width:580px){.chat-toggle{right:19px;top:151px;width:36px;height:36px}.chat-panel{right:19px;top:196px;bottom:194px;width:330px;max-height:none}.join-card{padding:25px}.join-card h2{font-size:23px}}
@media(max-height:550px){.chat-toggle{top:85px}.chat-panel{top:130px;bottom:15px}.join-screen{place-items:start center}.join-card{padding:22px}.join-name{margin:14px 0}.character-choices{margin-bottom:14px}.character-choices span{padding:12px}}

.avatar-actions{position:absolute;left:40px;top:178px;z-index:4;width:275px;max-width:calc(100% - 80px);padding:12px;background:rgba(18,28,34,.5);border:1px solid var(--line);border-radius:7px;backdrop-filter:blur(9px)}.avatar-actions[hidden]{display:none}.avatar-actions h2{font-size:10px;letter-spacing:.08em;font-weight:500;margin:0 0 9px;color:#fff8}.action-buttons{display:flex;gap:5px}.action-buttons button{flex:1;padding:9px 7px;border:1px solid #ffffff20;background:#ffffff08;border-radius:4px;font-size:12px}.action-buttons button[aria-pressed=true]{background:var(--accent);border-color:var(--accent);color:#26333b}.avatar-actions p{font-size:10px;line-height:1.5;color:#fff9;margin:9px 0 0}
@media(max-width:900px){.avatar-actions{left:25px;top:204px}}
@media(max-width:580px){.avatar-actions{left:19px;top:196px;width:252px;max-width:calc(100% - 38px);padding:10px}.action-buttons button{padding:9px 5px;font-size:11px}}
@media(max-height:550px){.avatar-actions{top:140px;width:235px;padding:8px}.avatar-actions p{display:none}}

/* Shared stage controls directly below the left chat icon. */
.chat-toggle{left:40px;right:auto;top:134px}
.presence{left:96px;top:140px;max-width:calc(100% - 200px)}
.dance{left:40px;right:auto;top:185px;bottom:auto;transform:none;flex-direction:column;align-items:stretch;gap:8px;width:190px;min-width:0;padding:10px}
#dance-play{width:100%;height:41px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:13px;white-space:nowrap}#dance-play:disabled{opacity:.5;cursor:default}#dance-play-symbol{font-size:15px}
.dance-body{width:100%;flex:none}.dance-head{margin:0 0 6px;line-height:1.5}.dance-head span{font-size:10px}.dance-track{gap:5px;font-size:9px}#dance-seek{height:22px}
#stage-sound{padding:8px 6px;background:#fff1;border:1px solid #e4c99b70;border-radius:4px;color:var(--accent);font-size:11px}#stage-sound[hidden]{display:none}
.avatar-actions{left:auto;right:40px;top:178px}
@media(max-width:900px){.chat-toggle{left:25px;top:156px}.presence{left:81px;top:162px}.dance{left:25px;top:207px;width:180px}.avatar-actions{left:auto;right:25px;top:208px}}
@media(max-width:580px){.chat-toggle{left:19px;top:151px}.presence{left:65px;top:155px;max-width:calc(100% - 84px)}.dance{left:19px;top:196px;width:124px;padding:8px}.dance-head span{font-size:9px}#dance-play{font-size:11px;gap:5px;padding:0 3px}.avatar-actions{left:auto;right:19px;top:196px;width:210px;max-width:calc(100% - 180px)}.action-buttons{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.chat-open #dance,.chat-open .avatar-actions{visibility:hidden}}
@media(max-height:550px){.chat-toggle{top:90px}.presence{top:96px}.dance{top:141px}.avatar-actions{top:140px}}

.stage-message{padding:10px;border-left:2px solid var(--accent);border-radius:3px;background:#e4c99b10;color:#f2dfba}.stage-message>span{display:block;clear:both}.stage-message time{float:none;display:block;text-align:right}.stage-view{display:block;margin-top:6px;padding:4px 8px;border:1px solid #e4c99b55;border-radius:4px;background:#ffffff08;color:var(--accent);font-size:11px}
.stage-notice{position:absolute;top:95px;left:50%;transform:translateX(-50%);z-index:9;display:flex;align-items:center;gap:10px;max-width:calc(100% - 80px);width:max-content;padding:12px 38px 12px 16px;border:1px solid #e4c99b55;border-radius:8px;background:#14232ed9;backdrop-filter:blur(10px);box-shadow:0 8px 30px #0002}.stage-notice[hidden]{display:none}.stage-notice p{margin:0;font-size:12px;line-height:1.6;max-width:330px}.stage-notice button{flex:none;padding:7px 10px;border:1px solid #ffffff30;border-radius:4px;background:#ffffff10;color:var(--accent);font-size:11px}#stage-notice-close{position:absolute;right:6px;top:6px;font-size:20px;padding:0 4px;border:0;background:none;color:#fff9}
@media(max-width:900px){.stage-notice{top:auto;bottom:175px;max-width:calc(100% - 38px)}}
@media(max-width:580px){.stage-notice{bottom:200px;gap:8px;padding:10px 28px 10px 12px;width:calc(100% - 38px)}.stage-notice p{font-size:11px}.stage-notice button{padding:6px;font-size:10px}}
@media(max-width:580px){.chat-open .stage-notice{display:none}}

/* Three playable characters; keep each choice readable on narrow screens. */
.character-choices{flex-wrap:wrap}.character-choices label{flex:1 1 96px}.character-choices span{height:100%}.join-card{width:min(520px,100%)}
