@import url('https://fonts.googleapis.com/css2?family=Noto+Sans+KR:wght@400;500;600;700&family=Manrope:wght@400;500;600;700&display=swap');
:root{--ink:#f4eee2;--muted:#a9b8ae;--gold:#d6b57b;--green:#173d36;--line:rgba(235,223,191,.15);--panel:rgba(15,35,32,.91);font-family:Manrope,"Noto Sans KR",sans-serif;color:var(--ink);font-size:14px;color-scheme:dark}*{box-sizing:border-box}body{margin:0;background:#102c2a}button,input,select{font:inherit}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button{cursor:pointer;color:inherit}button:disabled{cursor:wait;opacity:.6}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid var(--gold);outline-offset:4px}input:focus,select:focus{outline:1px solid var(--gold);border-color:var(--gold)}button{border:0}button,select,input{border-radius:8px}button{transition:background .18s,border-color .18s,transform .18s}button:hover{filter:brightness(1.12)}button:active{transform:translateY(1px)}[hidden]{display:none!important}#app{height:100dvh;min-height:620px;position:relative;overflow:hidden}#scene{position:absolute;inset:0;touch-action:none}#scene canvas{display:block;width:100%;height:100%}.vignette{pointer-events:none;position:absolute;inset:0;background:linear-gradient(90deg,rgba(6,21,19,.58),transparent 45%),linear-gradient(0deg,rgba(6,21,19,.6),transparent 26%,transparent 78%,rgba(6,21,19,.55))}.topbar{position:absolute;top:0;left:0;right:0;padding:25px 32px;display:flex;align-items:center;justify-content:space-between;gap:15px;pointer-events:none}.topbar>*{pointer-events:auto}.brand{display:flex;gap:10px;align-items:center;color:var(--ink);text-decoration:none;font-size:25px;letter-spacing:5px;font-weight:500}.brand-mark{font-size:48px;line-height:1;color:var(--gold);font-weight:400}.brand small{display:block;font-size:7px;letter-spacing:2px;margin-top:3px;color:var(--gold)}.room-pill{display:flex;align-items:center;gap:11px;background:rgba(17,38,33,.72);backdrop-filter:blur(18px);border:1px solid var(--line);border-radius:30px;padding:12px 19px;font-size:11px;position:absolute;left:50%;transform:translateX(-50%);white-space:nowrap}.status-dot{width:6px;height:6px;background:#af9a6f;border-radius:50%}.status-dot.connected{background:#8dc9ac;box-shadow:0 0 8px #8dc9ac66}.pill-divider{height:12px;width:1px;background:var(--line)}#onlineCount{color:var(--muted)}.top-actions{display:flex;gap:10px}.icon-button{background:rgba(22,43,36,.7);border:1px solid var(--line);width:34px;height:34px;border-radius:50%;font-size:17px;display:grid;place-items:center}.welcome-copy{position:absolute;top:119px;left:34px;pointer-events:none}.eyebrow{font-size:9px;letter-spacing:2.3px;color:var(--gold);margin:0 0 9px;font-weight:600}.welcome-copy h1{font-size:35px;line-height:1.55;font-weight:400;letter-spacing:-1.5px;margin:0 0 9px}.welcome-copy>p:last-child{font-size:11px;color:#d2d8cc;letter-spacing:.3px}.glass{background:var(--panel);border:1px solid var(--line);box-shadow:0 15px 40px #0002;backdrop-filter:blur(20px)}.custom-panel{position:absolute;left:32px;top:328px;width:300px;max-height:calc(100% - 434px);overflow:auto;padding:21px;border-radius:14px;scrollbar-width:thin;scrollbar-color:#507061 transparent}.panel-heading{display:flex;align-items:center;justify-content:space-between;margin-bottom:21px;gap:8px}h2{font-size:17px;letter-spacing:-.5px;font-weight:500;margin:0}.panel-heading .eyebrow,.qibla-heading .eyebrow{font-size:8px;letter-spacing:1.8px;margin-bottom:6px}.tiny-tag{color:#b6bfae;border:1px solid var(--line);border-radius:4px;font-size:8px;padding:4px 6px;white-space:nowrap}.name-label{display:block;font-size:10px;color:var(--muted);margin-bottom:8px}input,select{border:1px solid var(--line);background:#f0e4c809;color:var(--ink);padding:10px 11px;width:100%;min-width:0}input{font-size:12px}select{font-size:11px}select option{background:#163b34}.tabs{display:flex;gap:2px;margin:21px 0 20px;border-bottom:1px solid var(--line)}.tabs button{width:33.33%;background:none;border-radius:0;padding:10px 0 12px;font-size:11px;color:var(--muted);border-bottom:2px solid transparent}.tabs [aria-selected=true]{color:var(--gold);border-bottom-color:var(--gold)}fieldset{border:0;padding:0;margin:0 0 19px}legend{font-size:10px;color:#bac7bd;margin:0 0 11px;padding:0}.swatches{display:flex;gap:11px;flex-wrap:wrap}.swatch{width:27px;height:27px;border:3px solid #193a32;outline:1px solid transparent;border-radius:50%;position:relative}.swatch[aria-pressed=true]{outline-color:var(--gold)}.swatch[aria-pressed=true]:after{content:'✓';position:absolute;inset:0;display:grid;place-items:center;font-size:10px;color:#fff;text-shadow:0 1px 4px #000}.choices{display:flex;gap:7px}.choices button{flex:1;border:1px solid var(--line);background:#e2d2ad06;font-size:10px;padding:10px 3px;color:#c5cdc3}.choices button[aria-pressed=true],.rug-choices button[aria-pressed=true]{border-color:#d6b57b99;background:#d6b57b16;color:var(--gold)}.field-note{font-size:10px;color:var(--muted);line-height:1.85;margin:10px 0 0}.rug-choices{display:flex;gap:9px}.rug-choices button{flex:1;display:flex;flex-direction:column;align-items:center;gap:9px;background:#d6b57b05;border:1px solid var(--line);padding:11px 4px;font-size:10px}.rug-icon{display:block;width:34px;height:50px;border:3px double #c4a565;background:#345c4f;position:relative}.rug-icon:after{content:'';position:absolute;inset:6px;border:1px solid #c4a565}.mihrab:after{border-radius:50% 50% 0 0}.geometry:after{transform:rotate(45deg);inset:13px 6px}.garden{background:radial-gradient(ellipse,#d6b57b99 1px,transparent 2px) 0 0/8px 9px,#345c4f}.saved-line{border-top:1px solid var(--line);padding-top:14px;display:flex;align-items:center;flex-wrap:wrap;gap:6px;color:var(--muted);font-size:8px}.saved-line>span:first-child{color:var(--gold)}.text-button{color:var(--gold);background:none;padding:5px 0;font-size:9px;margin-left:auto}.qibla-card{position:absolute;right:30px;bottom:118px;width:280px;border-radius:14px;padding:22px;max-height:calc(100% - 220px);overflow:auto;scrollbar-width:thin}.qibla-heading{display:flex;justify-content:space-between;align-items:center}.kaaba-icon{color:var(--gold);font-size:32px;font-weight:400}.compass-row{display:flex;align-items:center;gap:22px;margin:24px 0 14px}.compass{position:relative;width:104px;height:104px;border:1px solid #b89d654d;border-radius:50%;flex-shrink:0;background:repeating-conic-gradient(from -1deg,#d6b57b77 0deg 1deg,transparent 1deg 30deg);box-shadow:inset 0 0 0 9px #173831}.compass:before{content:'';position:absolute;inset:16px;background:#183b32;border-radius:50%;border:1px solid #b89d6528}.compass>span:not(.compass-center){position:absolute;font-size:7px;line-height:1;color:#adb59f}.north{top:-12px;left:48px;color:var(--gold)!important}.east{right:-10px;top:47px}.south{bottom:-12px;left:48px}.west{left:-12px;top:47px}.compass-arrow{position:absolute;inset:19px 42px;transform:rotate(0deg);transition:transform .15s linear;opacity:.3}.compass-arrow:before{content:'';position:absolute;inset:0;clip-path:polygon(50% 0,100% 100%,50% 75%,0 100%);background:linear-gradient(90deg,#94713c,var(--gold),#fae3a9)}.compass-center{position:absolute;width:5px;height:5px;top:49px;left:49px;background:#183b32;border-radius:50%}.bearing-info strong{font-weight:500;font-size:32px;letter-spacing:-1px}.bearing-info strong span{font-size:16px;color:var(--gold)}.bearing-info p{font-size:10px;margin:3px 0 6px;color:#ced5c9}.bearing-info small{font-size:8px;color:var(--muted)}.button-pair{display:flex;gap:7px;margin-top:15px}.small-primary,.small-secondary{font-size:10px;padding:11px 12px;border:1px solid var(--line)}.small-primary{background:var(--gold);color:#17372f;font-weight:600;border-color:var(--gold)}.small-secondary{background:transparent;color:#d9dfd3}.button-pair>*{flex:1;padding:10px 4px}.manual-location{margin-top:14px;font-size:9px;color:var(--muted)}summary{cursor:pointer;padding:5px 0}.manual-location>label{display:block;margin:12px 0 6px}.coordinate-inputs{display:flex;gap:8px;margin:10px 0}.coordinate-inputs label{flex:1;font-size:9px}.coordinate-inputs input{margin-top:5px;font-size:10px;padding:8px}.privacy-note{font-size:8px;color:#849e8d;text-align:center;margin:15px 0 0}.full-width{width:100%}.scene-caption{position:absolute;right:34px;top:132px;text-align:right;pointer-events:none}.scene-caption span{font-size:8px;letter-spacing:2px;color:#ead8b2}.scene-caption p{font-size:12px;color:#eee9d9;font-weight:400}.scene-label{position:absolute;top:38%;left:54%;font-size:9px;color:#eee2bd;letter-spacing:.7px;padding:7px 11px;background:#1e352555;border:1px solid #e4d0a133;border-radius:20px;pointer-events:none;transition:opacity .4s}.actionbar{position:absolute;bottom:29px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:14px;border-radius:18px;padding:11px 15px;white-space:nowrap;max-width:calc(100% - 30px)}.action-secondary{background:transparent;color:#cdd4c9;padding:9px 10px;font-size:11px;display:flex;align-items:center;gap:7px}.action-secondary>span:first-child{font-size:18px;color:var(--gold)}.preview-tag{border:1px solid var(--line);border-radius:3px;font-size:7px;color:#b2baa8;padding:3px}.action-divider{height:24px;width:1px;background:var(--line)}.prayer-button{background:var(--gold);color:#16372f;display:flex;align-items:center;justify-content:center;gap:11px;padding:14px 27px;font-size:12px;font-weight:600;min-width:150px}.prayer-button>span:first-child{font-size:20px;line-height:1}.joystick{position:absolute;bottom:30px;left:30px;display:grid;grid-template-columns:repeat(3,36px);grid-template-rows:repeat(2,34px);gap:4px}.joystick button{background:#14372b99;border:1px solid var(--line);font-size:16px;touch-action:none;user-select:none}.joystick button[data-direction=up]{grid-column:2}.joystick button[data-direction=left]{grid-row:2;grid-column:1}.joystick button[data-direction=down]{grid-row:2;grid-column:2}.joystick button[data-direction=right]{grid-row:2;grid-column:3}.toast{position:absolute;left:50%;bottom:120px;transform:translate(-50%,10px);background:#f3ead6;color:#193c31;font-size:11px;line-height:1.8;padding:12px 20px;border-radius:10px;max-width:calc(100% - 36px);width:max-content;text-align:center;opacity:0;pointer-events:none;transition:.2s;box-shadow:0 10px 30px #0002;z-index:30}.toast.visible{opacity:1;transform:translate(-50%,0)}.loading{position:absolute;inset:0;background:#102e28;display:flex;align-items:center;justify-content:center;flex-direction:column;z-index:50}.loader-mark{font-size:70px;color:var(--gold);animation:breathe 2s ease-in-out infinite}.loading p{font-size:14px;color:#e4dcc9;letter-spacing:1px}.loading small{font-size:10px;color:#9aae9c}.fatal{position:absolute;inset:0;background:#102e28;z-index:60;display:flex;justify-content:center;align-items:center;flex-direction:column;text-align:center;padding:30px}.fatal p{max-width:430px;line-height:1.8;font-size:13px;color:var(--muted)}.fatal button{background:var(--gold);color:#16372f;padding:12px 25px}dialog{background:#15392f;color:var(--ink);border:1px solid #d6b57b55;border-radius:20px;padding:35px;max-width:440px;width:calc(100% - 32px);max-height:85dvh;box-shadow:0 30px 100px #0008}dialog::backdrop{background:#071c18b3;backdrop-filter:blur(8px)}dialog h2{font-size:25px;margin:15px 0 20px}dialog>p:not(.eyebrow){font-size:12px;line-height:1.9;color:#b6c6b6}.dialog-close{position:absolute;right:18px;top:14px;background:none;color:var(--muted);font-size:24px}dl{font-size:11px;line-height:1.9}dt{color:var(--gold);margin-top:15px}dd{margin:4px 0;color:#c0ccbb}.setting-label{font-size:11px;display:block;margin:25px 0 9px}#reconnectButton{margin-top:24px}.fence-preview{height:100px;border:1px solid #c7a86c55;margin:25px 0;display:flex;align-items:center;justify-content:space-around;border-radius:50%;background:radial-gradient(ellipse,#d6b57b11,transparent)}.fence-preview span{height:65px;width:7px;border-radius:5px;background:linear-gradient(90deg,#87602f,#ead29a,#9f783e);position:relative}.fence-preview span:before{content:'◇';position:absolute;top:-15px;left:-5px;color:#d6b57b;font-size:20px}.fence-preview:after{content:'';position:absolute;width:66%;height:25px;border-top:2px solid var(--gold);border-bottom:2px solid var(--gold)}.mobile-only{display:none}@keyframes breathe{50%{opacity:.35;transform:scale(.92)}}@media(min-width:1400px){.welcome-copy{top:140px;left:44px}.welcome-copy h1{font-size:41px}.custom-panel{left:42px;top:372px;max-height:calc(100% - 478px);width:310px}.qibla-card{right:40px;bottom:130px;width:292px}.topbar{padding:30px 42px}}@media(max-height:820px) and (min-width:901px){.welcome-copy{top:106px}.welcome-copy h1{font-size:27px;line-height:1.4}.welcome-copy>p:last-child{display:none}.custom-panel{top:240px;max-height:calc(100% - 343px)}.panel-heading{margin-bottom:14px}.custom-panel{padding:17px}.tabs{margin:12px 0}fieldset{margin-bottom:14px}.qibla-card{padding:18px}}@media(max-width:1100px){.custom-panel{width:264px;left:22px}.qibla-card{width:250px;right:22px}.compass-row{gap:19px}.compass{width:94px;height:94px}.compass-arrow{inset:17px 37px}.compass-center{left:44px;top:44px}.north,.south{left:43px}.east,.west{top:42px}.actionbar{gap:5px}.action-secondary{padding:9px 6px}.prayer-button{padding:14px 20px;min-width:125px}.joystick{left:20px}.scene-caption{right:24px}}@media(max-width:900px){#app{min-height:520px}.topbar{padding:19px 20px}.brand{font-size:21px;letter-spacing:4px}.brand-mark{font-size:39px}.brand small{font-size:6px;letter-spacing:1.3px}.room-pill{position:static;transform:none;margin-left:auto;padding:10px 13px;font-size:10px}.room-pill .pill-divider,.room-pill #onlineCount{display:none}.top-actions{gap:6px}.icon-button{width:31px;height:31px}.welcome-copy{top:99px;left:23px}.welcome-copy h1{font-size:28px}.welcome-copy .eyebrow{font-size:7px}.welcome-copy>p:last-child{font-size:10px}.scene-caption{display:none}.custom-panel{display:none;z-index:20;top:auto;bottom:109px;left:14px;width:300px;max-height:calc(100% - 205px);padding:20px}.custom-panel.open{display:block}.mobile-only{display:grid}.desktop-only{display:none}.qibla-card{right:17px;bottom:121px;width:228px;padding:17px;max-height:calc(100% - 225px)}.qibla-card h2{font-size:15px}.qibla-heading .eyebrow{font-size:7px}.qibla-card .compass-row{gap:20px;margin:19px 0 12px}.qibla-card .compass{transform:scale(.85);margin:-5px}.bearing-info strong{font-size:27px}.qibla-card .field-note{font-size:9px}.qibla-card .manual-location{font-size:8px}.actionbar{bottom:23px;padding:9px 10px;gap:4px;border-radius:14px}.action-secondary{font-size:10px;padding:9px 6px}.preview-tag{display:none}.prayer-button{font-size:11px;padding:12px 16px;min-width:113px}.joystick{left:18px;bottom:125px;grid-template-columns:repeat(3,33px);grid-template-rows:repeat(2,33px)}.scene-label{left:49%;top:37%;font-size:8px}.toast{bottom:101px}.privacy-note{font-size:7px}.vignette{background:linear-gradient(0deg,#071c1bc4,transparent 40%,transparent 74%,#071c1b88)}}@media(max-width:480px){.topbar{padding:17px 15px;gap:8px}.brand{font-size:19px;gap:6px}.brand-mark{font-size:34px}.room-pill{font-size:9px;padding:9px 10px;gap:6px}.top-actions .icon-button{width:28px;height:28px;font-size:15px}.welcome-copy{left:19px;top:94px}.welcome-copy h1{font-size:24px}.welcome-copy>p:last-child{max-width:145px;line-height:1.8}.welcome-copy .eyebrow{max-width:145px;line-height:1.9}.qibla-card{right:13px;width:205px;bottom:115px;padding:16px}.qibla-heading .eyebrow{font-size:6px;letter-spacing:1px}.kaaba-icon{font-size:26px}.qibla-card .compass-row{gap:9px;margin:16px 0 9px}.qibla-card .compass{transform:scale(.75);margin:-10px}.bearing-info strong{font-size:24px}.bearing-info p{font-size:9px}.bearing-info small{font-size:7px}.qibla-card .field-note{font-size:8px}.button-pair{gap:5px;margin-top:10px}.button-pair button{font-size:8px;padding:9px 3px}.privacy-note{margin-top:10px}.manual-location{margin-top:9px}.joystick{left:13px;grid-template-columns:repeat(3,30px);grid-template-rows:repeat(2,32px);gap:3px;bottom:118px}.actionbar{gap:2px;bottom:24px}.action-secondary{font-size:9px;padding:9px 6px;gap:4px}.action-secondary>span:first-child{font-size:15px}.prayer-button{padding:12px 13px;min-width:108px;gap:6px}.action-divider{margin:0 2px}.scene-label{display:none}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
.utilitybar{position:absolute;right:32px;top:94px;display:flex;gap:7px}.utilitybar button{background:#17372dcc;border:1px solid var(--line);padding:8px 12px;font-size:10px;color:#dfdbc7;backdrop-filter:blur(12px)}.scene-caption{top:149px}.wide-dialog{max-width:680px}.section-label{font-size:12px;font-weight:500;margin:24px 0 12px;color:var(--gold)}.section-label small{font-size:9px;color:var(--muted);font-weight:400;margin-left:12px}.map-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:25px}.map-card{padding:0;background:#183c33;border:1px solid var(--line);text-align:left;overflow:hidden}.map-card[aria-pressed=true]{border-color:var(--gold)}.map-art{height:120px;display:block;position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 0,#f1de9d,transparent 60%),linear-gradient(#d2c6ac,#687c6b)}.map-art:before{content:'';position:absolute;inset:23px 26px -30px;border:10px double #e6d9b3;border-radius:50% 50% 0 0;box-shadow:0 0 0 3px #c7a96b,0 0 40px #dcd2b4;background:linear-gradient(#284c4433,#162f24)}.map-art:after{content:'✧';position:absolute;top:40px;left:calc(50% - 15px);font-size:34px;color:#e7c77f}.map-art.blue{background:radial-gradient(ellipse at 50% 0,#c5dce8,transparent 60%),linear-gradient(#346e9a,#325876)}.map-art.blue:before{border-color:#a6c7da;background:repeating-linear-gradient(45deg,#477c91 0 2px,#2c5574 2px 13px)}.map-art.nabawi{background:linear-gradient(#ebdeba,#9a9d7c)}.map-art.nabawi:before{border-color:#efe2b3;background:linear-gradient(#f5ebd1aa,#477157)}.map-card strong{display:block;font-size:11px;font-weight:500;padding:14px 12px 4px}.map-card small{display:block;color:var(--muted);font-size:8px;padding:0 12px 10px}.map-card p{font-size:9px;color:#a8baa9;line-height:1.7;margin:0;padding:0 12px 13px}.server-choices{display:flex;gap:9px}.server-choices button{border:1px solid var(--line);background:#d4b27408;flex:1;padding:12px 8px;font-size:11px}.server-choices [aria-pressed=true]{border-color:var(--gold);color:var(--gold)}.server-choices small{display:block;font-size:9px;color:var(--muted);margin-top:6px}#enterRoomButton{margin-top:20px}.board-toolbar{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-top:24px}#boardTabs{flex:1;max-width:290px}.post-list{min-height:200px;margin-top:16px;border-top:1px solid var(--line)}.post-row{display:block;width:100%;text-align:left;padding:17px 3px;border-radius:0;background:transparent;border-bottom:1px solid var(--line)}.post-row strong{display:block;font-size:12px;font-weight:500;word-break:break-word}.post-row small{display:block;font-size:9px;color:var(--muted);margin-top:8px}.empty-list{padding:25px 0;color:var(--muted);font-size:11px;line-height:1.9}.page-controls{display:flex;align-items:center;justify-content:center;gap:16px;margin-top:20px;font-size:11px}textarea{width:100%;resize:vertical;background:#f0e4c809;border:1px solid var(--line);border-radius:8px;color:var(--ink);padding:12px;font:inherit;font-size:12px;line-height:1.8}textarea:focus{outline:1px solid var(--gold)}#submitPostButton{margin-top:20px}.post-detail-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:13px;line-height:2;color:#deded1;min-height:120px;margin:25px 0 30px}.friend-code{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#d6b57b08;border:1px solid var(--line);padding:12px;border-radius:9px;margin:10px 0}.friend-code strong{font-size:17px;letter-spacing:1.8px;color:var(--gold);font-weight:500}.inline-form{display:flex;gap:8px;margin-top:20px}.inline-form>input{flex:1}.inline-form>button{flex-shrink:0}.friend-row{display:flex;align-items:center;justify-content:space-between;gap:10px;border-bottom:1px solid var(--line);padding:11px 0;font-size:11px}.friend-row small{color:var(--muted);font-size:8px;display:block;margin-top:5px}.friend-row button{font-size:9px;padding:8px;margin-left:5px}.chat-messages{height:280px;overflow:auto;background:#09261e66;border:1px solid var(--line);border-radius:10px;padding:15px;margin-top:18px;scrollbar-width:thin}.chat-message{font-size:11px;line-height:1.8;overflow-wrap:anywhere;margin-bottom:13px}.chat-message strong{display:block;font-size:9px;font-weight:500;color:var(--gold)}.chat-message small{color:#829e8d;font-size:8px;margin-left:8px}.chat-message p{margin:3px 0;color:#dde0d1}.toggle-row{display:flex;align-items:center;justify-content:space-between;font-size:12px;margin:24px 0 10px}.toggle-row input{width:18px;height:18px;accent-color:var(--gold)}input[type=range]{accent-color:var(--gold);padding:0;cursor:pointer}input[type=file]{font-size:10px}.audio-credit{font-size:9px!important}.audio-credit a{color:var(--muted)}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.room-pill{color:var(--ink)}@media(max-width:900px){.utilitybar{right:18px;top:85px;display:grid;grid-template-columns:repeat(2,auto);gap:6px}.utilitybar button{font-size:9px;padding:8px 11px}.room-pill{max-width:175px;overflow:hidden}.room-pill #currentMapName{max-width:130px;text-overflow:ellipsis;overflow:hidden}.map-choices{gap:8px}.map-art{height:92px}.map-card strong{font-size:10px;padding:11px 8px 4px}.map-card small{font-size:7px;padding:0 8px 9px}.map-card p{display:none}}@media(max-width:480px){dialog{padding:29px 22px}.room-pill{max-width:139px}.room-pill #currentMapName{max-width:92px}.utilitybar{right:15px;top:85px}.map-choices{grid-template-columns:1fr;gap:9px}.map-card{display:grid;grid-template-columns:80px 1fr;grid-template-rows:1fr 1fr}.map-art{grid-row:1/3;height:80px}.map-art:before{inset:16px 13px -30px;border-width:6px}.map-art:after{top:28px;font-size:24px;left:calc(50% - 10px)}.map-card strong{align-self:end;padding:8px 12px 4px}.map-card small{padding:0 12px 8px}.chat-messages{height:230px}.friend-code strong{font-size:14px;letter-spacing:1px}.scene-caption{display:none}}

html[dir=rtl]{font-family:"Noto Sans Arabic","Noto Sans",Arial,sans-serif}html[dir=rtl] .brand{direction:ltr}html[dir=rtl] .custom-panel{left:auto;right:32px}html[dir=rtl] .qibla-card{right:auto;left:30px}html[dir=rtl] .welcome-copy{left:auto;right:34px}html[dir=rtl] .scene-caption{right:auto;left:34px;text-align:left}html[dir=rtl] .utilitybar{right:auto;left:32px}html[dir=rtl] .text-button{margin-left:0;margin-right:auto}html[dir=rtl] .joystick{left:auto;right:30px;direction:ltr}html[dir=rtl] .map-card,html[dir=rtl] .post-row{text-align:right}.compass,.bearing-info strong,.friend-code strong{direction:ltr}.friend-code strong{unicode-bidi:isolate}.room-pill{max-width:46vw}.room-pill #currentMapName{overflow:hidden;text-overflow:ellipsis;max-width:250px}.topbar .top-actions{flex-shrink:0}html:not([lang=ko]) .welcome-copy h1{font-size:31px;letter-spacing:-.5px;max-width:340px}html:not([lang=ko]) .welcome-copy>p:last-child{max-width:285px;line-height:1.8}html:not([lang=ko]) .choices button{font-size:9px}html:not([lang=ko]) .actionbar{gap:7px}html:not([lang=ko]) .prayer-button{min-width:130px;padding:14px 19px}html[dir=rtl] .eyebrow{letter-spacing:.2px}html[dir=rtl] .welcome-copy h1{letter-spacing:0;line-height:1.8}@media(min-width:1400px){html[dir=rtl] .custom-panel{right:42px}html[dir=rtl] .qibla-card{left:40px}html[dir=rtl] .welcome-copy{right:44px}}@media(max-width:1100px){html[dir=rtl] .custom-panel{right:22px}html[dir=rtl] .qibla-card{left:22px}html[dir=rtl] .joystick{right:20px}}@media(max-width:900px){html[dir=rtl] .custom-panel{right:14px}html[dir=rtl] .qibla-card{left:17px}html[dir=rtl] .welcome-copy{right:23px}html[dir=rtl] .utilitybar{left:18px}html[dir=rtl] .joystick{right:18px}.room-pill{max-width:34vw}.room-pill #currentMapName{max-width:120px}html:not([lang=ko]) .welcome-copy h1{font-size:25px;max-width:230px}html:not([lang=ko]) .welcome-copy>p:last-child{max-width:180px}.actionbar{gap:2px!important}html:not([lang=ko]) .action-secondary{font-size:9px;padding:8px 5px}html:not([lang=ko]) .prayer-button{font-size:10px;min-width:100px;padding:12px 10px}}@media(max-width:480px){html[dir=rtl] .qibla-card{left:13px}html[dir=rtl] .welcome-copy{right:19px}html[dir=rtl] .utilitybar{left:15px}html[dir=rtl] .joystick{right:13px}.room-pill{max-width:120px}.topbar{gap:5px}.brand{letter-spacing:2px}.room-pill #currentMapName{max-width:75px}.top-actions{gap:4px}html:not([lang=ko]) .welcome-copy h1{font-size:23px;max-width:190px}html:not([lang=ko]) .welcome-copy>p:last-child{max-width:160px}html[lang=ar] .welcome-copy h1,html[lang=fa] .welcome-copy h1,html[lang=ur] .welcome-copy h1{font-size:24px}html:not([lang=ko]) .actionbar{max-width:calc(100% - 18px);gap:0!important;padding:8px 7px}html:not([lang=ko]) .action-secondary{font-size:8px}html:not([lang=ko]) .prayer-button{min-width:89px;font-size:9px;padding:12px 8px}html[dir=rtl] .section-label small{margin-left:0;margin-right:10px}}

html[dir=rtl] .dialog-close{right:auto;left:18px}

/* Compact directional widget: expand only when more location detail is needed. */
.qibla-card{width:212px;padding:14px;bottom:118px;max-height:calc(100% - 215px)}
.qibla-heading{gap:8px}.qibla-heading h2{font-size:13px}.qibla-heading .eyebrow{font-size:6.5px;letter-spacing:1px;margin-bottom:4px}
.qibla-expand{background:transparent;border:1px solid var(--line);border-radius:50%;width:25px;height:25px;padding:0;flex-shrink:0;font-size:16px;color:var(--gold)}
.qibla-card .compass-row{gap:17px;margin:16px 0 14px}.qibla-card .compass{width:70px;height:70px;transform:none;margin:0;box-shadow:inset 0 0 0 6px #173831}
.qibla-card .compass:before{inset:11px}.qibla-card .compass-arrow{inset:11px 29px}
.qibla-card .compass-center{top:calc(50% - 2.5px);left:calc(50% - 2.5px)}
.qibla-card .north,.qibla-card .south{left:50%;transform:translateX(-50%);font-size:6px}
.qibla-card .north{top:-9px}.qibla-card .south{bottom:-9px}.qibla-card .east,.qibla-card .west{top:50%;transform:translateY(-50%);font-size:6px}
.qibla-card .east{right:-8px}.qibla-card .west{left:-8px}
.kaaba-marker{position:absolute;z-index:3;width:22px;height:22px;translate:-50% -50%;filter:drop-shadow(0 1px 3px #0009);transition:left .2s,top .2s;pointer-events:none}
.kaaba-marker img{display:block;width:100%;height:100%}
.qibla-card .bearing-info strong{font-size:25px}.qibla-card .bearing-info strong span{font-size:12px}
.qibla-card .bearing-info p{font-size:8px;margin:2px 0 4px}.qibla-card .bearing-info small{font-size:6.5px}
.qibla-card .button-pair{margin-top:8px;gap:6px}.qibla-card .button-pair button{font-size:8px;padding:8px 3px;min-height:31px}
#qiblaDetails .field-note{font-size:8px;margin-top:12px}#qiblaDetails .manual-location{font-size:8px}#qiblaDetails .privacy-note{font-size:7px}
.entry-language{display:flex;align-items:center;justify-content:space-between;gap:18px;margin:16px 0 25px;padding:13px 14px;border:1px solid #d6b57b66;background:#d6b57b0b;border-radius:10px}
.entry-language label{font-size:11px;line-height:1.6;color:var(--gold)}.entry-language label>span:first-child{font-size:20px;vertical-align:middle;margin-inline-end:5px}
.entry-language small{display:block;font-size:8px;color:var(--muted)}.entry-language select{max-width:190px;font-size:12px;min-height:40px}
.joystick{width:108px;height:108px;display:block;grid-template-columns:none;grid-template-rows:none;bottom:118px;left:28px;touch-action:none;user-select:none;-webkit-user-select:none;cursor:grab;z-index:5}
.joystick-base{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle,#2b574a77,#11362cb8);border:1px solid #d6b57b44;box-shadow:inset 0 3px 12px #0003,0 7px 20px #0002;backdrop-filter:blur(8px);pointer-events:none}
.joystick-base:before{content:'';position:absolute;inset:13px;border:1px dashed #d6b57b44;border-radius:50%}
.joystick-cross{position:absolute;inset:0;background:linear-gradient(90deg,transparent calc(50% - .5px),#d6b57b25 50%,transparent calc(50% + .5px)),linear-gradient(transparent calc(50% - .5px),#d6b57b25 50%,transparent calc(50% + .5px));border-radius:50%}
.joystick .joystick-thumb{position:absolute;left:50%;top:50%;width:44px;height:44px;display:grid;place-items:center;border:1px solid #e7d9aa88;border-radius:50%;background:radial-gradient(circle at 35% 25%,#94a894,#3b6656 65%,#254c3b);box-shadow:0 4px 10px #0005,inset 0 1px 3px #fff3;color:#f6e6b9;font-size:23px;transform:translate(calc(-50% + var(--stick-x,0px)),calc(-50% + var(--stick-y,0px)));transition:transform .15s}
.joystick.dragging{cursor:grabbing}.joystick.dragging .joystick-thumb{transition:none}.joystick .joystick-thumb[aria-disabled=true]{opacity:.45}
html[dir=rtl] .joystick{left:auto;right:28px}html[dir=rtl] .qibla-card{right:auto;left:30px}
@media(max-width:900px){.qibla-card{width:178px;right:15px;bottom:112px;padding:12px}.qibla-card .compass{width:64px;height:64px}.qibla-card .compass-arrow{inset:10px 27px}.qibla-card .compass-row{gap:12px;margin:14px 0 12px}.qibla-card .bearing-info strong{font-size:23px}.qibla-heading h2{font-size:11px}.qibla-card .qibla-heading .eyebrow{font-size:5.5px}.qibla-card .qibla-expand{width:23px;height:23px}.qibla-card .button-pair button{font-size:7px;padding:7px 2px}.qibla-card .bearing-info small{font-size:6px}.qibla-card .bearing-info p{font-size:7px}.kaaba-marker{width:20px;height:20px}.joystick{width:100px;height:100px;left:18px;bottom:117px}.joystick .joystick-thumb{width:42px;height:42px}html[dir=rtl] .joystick{right:18px}html[dir=rtl] .qibla-card{left:15px}.entry-language{gap:10px;padding:10px 12px}.entry-language select{max-width:160px}}
@media(max-width:480px){.qibla-card{width:170px;right:13px;bottom:110px;padding:12px}.qibla-card .compass{width:60px;height:60px}.qibla-card .compass-arrow{inset:9px 25px}.qibla-card .compass-row{gap:11px}.qibla-card .bearing-info strong{font-size:22px}.qibla-card .bearing-info strong span{font-size:10px}.qibla-card .button-pair{gap:5px}.qibla-card .button-pair button{font-size:7px;min-height:29px}.qibla-card .qibla-heading h2{font-size:10px}.qibla-card .qibla-heading .eyebrow{font-size:5px;letter-spacing:.5px}.joystick{width:96px;height:96px;left:16px;bottom:115px}.joystick .joystick-thumb{width:40px;height:40px;font-size:21px}.kaaba-marker{width:19px;height:19px}html[dir=rtl] .joystick{right:16px}html[dir=rtl] .qibla-card{left:13px}.entry-language{margin:12px 0 21px}.entry-language select{max-width:155px}.entry-language label{font-size:10px}}

/* Keep the compact Qibla widget in the upper-left corner in every language. */
.qibla-card,html[dir=rtl] .qibla-card{left:32px;right:auto;top:108px;bottom:auto;max-height:calc(100% - 225px)}
@media(min-width:1400px){.qibla-card,html[dir=rtl] .qibla-card{left:42px;right:auto;top:116px}}
@media(max-width:1100px){.qibla-card,html[dir=rtl] .qibla-card{left:22px;right:auto;top:105px}}
@media(max-width:900px){.qibla-card,html[dir=rtl] .qibla-card{left:18px;right:auto;top:91px;bottom:auto;max-height:calc(100% - 215px)}}
@media(max-width:480px){.qibla-card,html[dir=rtl] .qibla-card{left:15px;right:auto;top:85px;bottom:auto}}

.entry-progress{display:flex;gap:12px;justify-content:space-between;border-bottom:1px solid var(--line);padding:12px 0 18px;margin-bottom:20px}
.entry-progress>span{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:10px}.entry-progress b{display:grid;place-items:center;width:22px;height:22px;border:1px solid var(--line);border-radius:50%;font-weight:400}.entry-progress .active{color:var(--gold)}.entry-progress .active b{background:var(--gold);color:#17372f;border-color:var(--gold)}
.entry-navigation{display:flex;justify-content:flex-end;gap:10px;border-top:1px solid var(--line);padding-top:17px;margin-top:20px}.entry-navigation button{min-width:100px}
.entry-avatar-preview{height:230px;position:relative;border:1px solid var(--line);border-radius:12px;overflow:hidden;background:#173e33;margin:20px 0 0}
.entry-avatar-preview #scene{position:relative;inset:auto;width:100%;height:100%}
#entryCharacterHost .custom-panel{position:static;display:block;width:100%;max-height:none;overflow:visible;background:transparent;border:0;box-shadow:none;backdrop-filter:none;padding:22px 0 0}
#entryCharacterHost .custom-panel .panel-heading{display:none}#entryCharacterHost #closeCustomize{display:none}#entryCharacterHost .saved-line{margin-top:10px}
#entryCharacterHost fieldset{margin-bottom:20px}#entryCharacterHost .swatch{width:31px;height:31px}
@media(min-width:700px){.entry-dialog.character-step{max-width:760px}#entryStepCharacter{display:grid;grid-template-columns:1fr 1fr;gap:0 25px}#entryStepCharacter>h2{grid-column:1/3}.entry-avatar-preview{height:390px}#entryCharacterHost .custom-panel{padding-top:20px}}
@media(max-width:480px){.entry-progress{gap:6px}.entry-progress>span{font-size:9px;gap:5px}.entry-avatar-preview{height:185px}.entry-navigation button{min-width:90px}.entry-dialog .entry-language{margin-top:24px}}

/* Play HUD: keep the avatar's central viewing area clear. */
#app{min-height:320px}
.brand,.scene-caption,.scene-label{display:none}
.topbar{padding:10px 12px 0 158px;gap:8px;align-items:flex-start;z-index:6;direction:ltr}
.room-pill{position:static;transform:none;margin:0;max-width:min(48vw,360px);padding:9px 12px;min-height:38px;gap:7px;font-size:10px}
.top-actions{margin-left:auto;gap:5px}.top-actions .icon-button{width:38px;height:38px}
.utilitybar,html[dir=rtl] .utilitybar{left:auto;right:12px;top:54px;display:flex;gap:5px;z-index:6}
.utilitybar button{min-height:36px;padding:7px 10px;font-size:10px}
.qibla-card,html[dir=rtl] .qibla-card{left:12px;right:auto;top:10px;bottom:auto;width:132px;padding:12px;z-index:7;max-height:calc(100dvh - 210px);border-radius:12px}
.qibla-card .qibla-heading{position:absolute;right:5px;top:4px}.qibla-heading>div{display:none}
.qibla-card .compass-row{margin:7px 0 2px;gap:13px;flex-direction:column;align-items:center}
.qibla-card .compass{width:58px;height:58px}.qibla-card .compass-arrow{inset:9px 24px}
.qibla-card .bearing-info{display:flex;align-items:baseline;gap:5px;max-width:100%}.qibla-card .bearing-info strong{font-size:18px}
.qibla-card .bearing-info p,.qibla-card .bearing-info small,.qibla-card .button-pair{display:none}
.qibla-card:has(#qiblaDetails:not([hidden])){width:228px;overflow:auto}
.qibla-card:has(#qiblaDetails:not([hidden])) .compass-row{flex-direction:row;justify-content:center;margin:12px 0 18px}
.qibla-card:has(#qiblaDetails:not([hidden])) .button-pair{display:flex}
.qibla-card:has(#qiblaDetails:not([hidden])) .bearing-info{display:block}
.qibla-card:has(#qiblaDetails:not([hidden])) .bearing-info p,.qibla-card:has(#qiblaDetails:not([hidden])) .bearing-info small{display:block}
.qibla-card .qibla-expand{width:26px;height:26px;background:#17382c}
.custom-panel,html[dir=rtl] .custom-panel{display:none;top:94px;bottom:76px;left:12px;right:auto;max-height:calc(100dvh - 170px);width:300px;z-index:15}
.custom-panel.open,html[dir=rtl] .custom-panel.open{display:block}.custom-panel .mobile-only{display:grid}.custom-panel .desktop-only{display:none}
.actionbar,html:not([lang=ko]) .actionbar{bottom:calc(10px + env(safe-area-inset-bottom));padding:5px 7px;gap:4px!important;max-width:calc(100% - 20px);border-radius:13px;z-index:6;white-space:nowrap}
.actionbar .action-secondary,html:not([lang=ko]) .action-secondary{font-size:11px;padding:10px 8px;min-height:38px}
.actionbar .prayer-button,html:not([lang=ko]) .prayer-button{font-size:11px;padding:10px 14px;min-width:110px;min-height:40px}
.actionbar .preview-tag{display:none}.actionbar .action-secondary>span:first-child{font-size:18px}
.joystick,html[dir=rtl] .joystick{left:14px;right:auto;bottom:calc(78px + env(safe-area-inset-bottom));width:100px;height:100px;z-index:6}
.chat-dock{position:absolute;right:14px;bottom:calc(76px + env(safe-area-inset-bottom));width:320px;border-radius:11px;z-index:8;overflow:hidden;background:#102b25e0}
.chat-toolbar{display:flex;align-items:center;gap:2px;padding:3px 5px;border-bottom:1px solid var(--line)}
.chat-toolbar [role=tablist]{display:flex;flex:1;min-width:0;gap:3px}.chat-toolbar button{min-height:34px;background:transparent;color:var(--muted);font-size:11px;padding:5px 9px}
.chat-toolbar [aria-selected=true]{color:var(--gold);background:#d6b57b16}.chat-toolbar>button{font-size:20px;width:35px;flex-shrink:0;padding:0}
.chat-dock .chat-mode{font-size:9px;line-height:1.4;margin:5px 9px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-dock .chat-messages{height:68px;border:0;border-radius:0;padding:2px 9px;margin:0;background:transparent;scrollbar-width:thin}
.chat-dock .chat-message{font-size:11px;line-height:1.6;margin-bottom:3px;overflow-wrap:anywhere}
.chat-author{font-size:10px;font-weight:600;color:var(--gold);background:none;padding:0;margin-inline-end:7px;max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:bottom}
.chat-dock .inline-form{margin:3px 5px 5px;gap:4px}.chat-dock input{padding:6px 8px;height:34px;font-size:12px;background:#09231caa}
.chat-dock .inline-form button{padding:4px 10px;min-width:36px;height:34px}
#whisperTargetRow{margin:4px 8px}#whisperTarget{padding:4px 7px;font-size:10px;min-height:28px}
#whisperUnread{color:#f1d39a}#peopleDialog .friend-row{gap:8px}#peopleDialog .friend-row>div:first-child{overflow-wrap:anywhere;min-width:0}#peopleDialog .friend-row small{display:none}
#peopleDialog .toggle-row{gap:16px;margin:16px 0}#peopleDialog .friend-row button{min-height:36px}
.toast{bottom:calc(250px + env(safe-area-inset-bottom));max-width:calc(100% - 30px);z-index:25;pointer-events:none}
@media(max-width:600px){
 .topbar{padding:8px 8px 0 120px;gap:4px}.top-actions{gap:3px}.top-actions .icon-button{width:34px;height:34px}
 .room-pill{font-size:9px;padding:6px 8px;gap:5px;max-width:calc(100vw - 240px);min-height:34px;flex:1}.room-pill #currentMapName{max-width:none}.room-pill #onlineCount,.room-pill .pill-divider{display:none}
 .utilitybar,html[dir=rtl] .utilitybar{right:8px;top:47px;gap:3px}.utilitybar button{font-size:9px;padding:5px 9px;min-height:34px}
 .qibla-card,html[dir=rtl] .qibla-card{left:8px;top:8px;width:104px;padding:12px 10px 7px}.qibla-card .compass-row{gap:10px;margin:6px 0 0}.qibla-card .compass{width:48px;height:48px}.qibla-card .compass-arrow{inset:7px 20px}.qibla-card .bearing-info strong{font-size:16px}.qibla-card .qibla-expand{width:24px;height:24px;font-size:14px;transform:translate(3px,-3px)}
 .qibla-card:has(#qiblaDetails:not([hidden])){width:215px}.qibla-card:has(#qiblaDetails:not([hidden])) .compass-row{gap:20px}
 .chat-dock{right:8px;bottom:calc(70px + env(safe-area-inset-bottom));width:calc(100% - 122px);max-width:320px}.chat-dock .chat-mode{font-size:8px}.chat-toolbar{padding:2px 3px}.chat-toolbar button{font-size:10px;padding:4px 7px}.chat-toolbar>button{font-size:19px;width:30px}.chat-dock .chat-messages{height:55px}.chat-dock .chat-message{font-size:10px}
 .joystick,html[dir=rtl] .joystick{left:10px;bottom:calc(74px + env(safe-area-inset-bottom));width:96px;height:96px}
 .actionbar .action-secondary,html:not([lang=ko]) .action-secondary{font-size:9px;padding:8px 5px}.actionbar .prayer-button,html:not([lang=ko]) .prayer-button{font-size:10px;min-width:91px;padding:9px 10px}.actionbar .action-divider{margin:0 1px}
}
@media(max-height:500px){.chat-dock .chat-messages{height:36px}.chat-dock .chat-mode{display:none}.qibla-card,html[dir=rtl] .qibla-card{max-height:calc(100dvh - 150px)}.custom-panel,html[dir=rtl] .custom-panel{top:8px;bottom:68px;max-height:calc(100dvh - 76px)}}

.portrait-choices,.wardrobe-choices{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.portrait-choices button,.wardrobe-choices button{padding:5px;border:1px solid var(--line);background:#e4d4ad09;font-size:9px;color:var(--muted);text-align:center}
.portrait-choices [aria-pressed=true],.wardrobe-choices [aria-pressed=true]{border-color:var(--gold);color:var(--gold);background:#d6b57b20}
.portrait-thumb{display:block;height:83px;background-size:cover;background-position:center;border-radius:5px;margin-bottom:5px}
.wardrobe-thumb{display:block;height:112px;background-image:url(/reference-assets/wardrobe.webp);background-size:500% 300%;background-repeat:no-repeat;margin-bottom:5px}
#entryCharacterHost fieldset{margin-bottom:15px}#entryCharacterHost .portrait-choices,#entryCharacterHost .wardrobe-choices{grid-template-columns:repeat(3,1fr)}

.utilitybar a{display:flex;align-items:center;justify-content:center;gap:5px;text-decoration:none;color:var(--ink);background:#17372dcc;border:1px solid var(--line);border-radius:8px;min-height:36px;padding:7px 10px;font-size:10px}
.utilitybar .utility-icon{display:none}.utilitybar button{position:relative}
.prayer-times-list{display:grid;gap:5px;margin:18px 0}.prayer-time-row{display:flex;align-items:center;justify-content:space-between;border:1px solid var(--line);border-radius:9px;padding:12px 14px;font-size:13px}.prayer-time-row time{font-size:18px;direction:ltr;font-variant-numeric:tabular-nums}.prayer-time-row.next{border-color:var(--gold);background:#d6b57b15;color:var(--gold)}.prayer-countdown{color:var(--gold);font-size:13px;text-align:center}.prayer-options{margin:20px 0;font-size:12px}.prayer-options summary{cursor:pointer;color:var(--gold)}#prayerLocationButton{margin-top:18px}
.map-art.mecca{background:linear-gradient(#80b6d4,#e6e3d0)}.map-art.mecca:before{inset:25px 34px 9px;border:0;border-radius:0;background:linear-gradient(#161d1a 0 28%,#b99e55 28% 35%,#101a17 35%);box-shadow:7px 8px 0 #35413b;transform:skewY(-5deg)}.map-art.mecca:after{content:''}.map-art.taj{background:linear-gradient(#93c6d9,#e5ecd7)}.map-art.taj:before{inset:40px 23px 0;border:0;border-radius:3px;background:#f4f0df;box-shadow:-16px -8px 0 -7px #e4dfce,16px -8px 0 -7px #e4dfce}.map-art.taj:after{content:'';left:calc(50% - 21px);top:12px;width:42px;height:44px;background:#f7f2df;border-radius:48% 48% 20% 20%}
@media(max-width:600px){.utilitybar,html[dir=rtl] .utilitybar{display:grid;grid-template-columns:repeat(3,36px);gap:3px;top:47px}.utilitybar button,.utilitybar a{width:36px;height:34px;min-height:34px;padding:0;display:grid;place-items:center}.utilitybar .utility-label{display:none}.utilitybar .utility-icon{display:block;font-size:21px;line-height:1;color:var(--gold)}#friendBadge{position:absolute;right:1px;top:1px;font-size:8px;color:var(--gold)}.map-art.mecca:before{inset:20px 20px 10px}.map-art.taj:before{inset:36px 14px 0}.map-art.taj:after{top:10px}}

.map-choices{grid-template-columns:repeat(2,1fr)}@media(max-width:480px){.map-choices{grid-template-columns:1fr}}

/* Player names remain native-resolution HTML even when 3D resolution is reduced. */
.scene-labels{position:absolute;inset:0;pointer-events:none;z-index:2;overflow:hidden}
.avatar-name{max-width:150px;padding:3px 9px;border:1px solid #d6b57b66;border-radius:20px;background:#102c26e8;color:#fff8e8;font:600 12px/18px Manrope,"Noto Sans KR",sans-serif;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;text-align:center;box-shadow:0 2px 5px #0003;unicode-bidi:isolate;pointer-events:none}
/* Compact panels retain readable text on a narrow phone. */
.chat-dock{background:#102d27f5}.chat-dock .chat-mode{font-size:11px;color:#c4d0c7}
.chat-toolbar button{font-size:12px}.chat-toolbar>button{font-size:20px}
.chat-dock .chat-message{font-size:12px}.chat-author{font-size:12px}
@media(max-width:600px){.room-pill{font-size:11px}.chat-dock .chat-mode{font-size:11px}.chat-toolbar button{font-size:12px}.chat-toolbar>button{font-size:19px}.chat-dock .chat-message{font-size:12px}.actionbar .action-secondary,html:not([lang=ko]) .action-secondary{font-size:11px}.actionbar .prayer-button,html:not([lang=ko]) .prayer-button{font-size:11px}}

.model-thumb{display:block;height:120px;background-size:contain;background-position:center;background-repeat:no-repeat;border-radius:6px;background-color:#dfd9c9;margin-bottom:5px}

/* Calm prayer mode and compact, reachable controls. */
.topbar,html[dir=rtl] .topbar{padding-left:12px}
.actionbar{gap:5px;flex-wrap:wrap;justify-content:center;white-space:normal}
.actionbar .action-secondary{min-height:36px;text-align:center}
.prayer-quran{color:var(--gold);text-decoration:none;border:1px solid #d6b57b66;border-radius:8px;font-weight:600}
.prayer-mode #customizeButton,.prayer-mode .action-divider,.prayer-mode #chatDock,.prayer-mode #joystick,.prayer-mode #boardButton,.prayer-mode #friendsButton{display:none}
.prayer-mode #poseButton{max-width:125px;white-space:normal;font-size:11px}
.prayer-mode .actionbar{max-width:calc(100% - 16px);width:max-content}
.prayer-mode .prayer-quran{flex-basis:100%;justify-content:center}
.avatar-greeting{padding:7px 12px;border:1px solid #d6b57b99;border-radius:12px;background:#143e34f5;color:#f7dfac;font:500 20px/1.45 sans-serif;white-space:nowrap;pointer-events:none}
#settingsLanguageButton{margin-top:8px}
.map-art.mecca{background:linear-gradient(#84bddb,#e4e7db)}
.map-art.mecca:before{inset:48px 15px 3px;background:#eee8d6;box-shadow:none;transform:none;border:0;border-radius:4px}
.map-art.mecca:after{content:'';width:60px;height:40px;left:calc(50% - 30px);top:18px;background:#216d6c;border:2px solid #c5a76e;border-radius:55% 55% 10% 10%;box-shadow:-48px 18px 0 -8px #e9e2ce,48px 18px 0 -8px #e9e2ce}
/* Keep the ordinary three actions on one row, below chat rather than under it. */
.actionbar,html:not([lang=ko]) .actionbar{width:max-content;flex-wrap:nowrap;white-space:nowrap}
.prayer-mode .actionbar,html:not([lang=ko]) .prayer-mode .actionbar{flex-wrap:wrap;white-space:normal}
.topbar .room-pill{min-width:0;max-width:calc(100vw - 140px);flex:1}
.topbar #currentMapName{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* Avatar actions are outside the 3D canvas and remain readable at every render scale. */
.player-menu{position:fixed;z-index:40;min-width:160px;max-width:calc(100vw - 16px);padding:6px;border-radius:12px;color:var(--ink);background:#102f28fa}
.player-menu-title{padding:7px 9px 9px;border-bottom:1px solid var(--line);margin-bottom:3px;font-size:12px;max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.player-menu button{display:block;width:100%;min-height:42px;text-align:start;padding:9px 12px;font-size:13px;background:transparent}
.player-menu button:hover,.player-menu button:focus-visible{background:#d6b57b22;color:var(--gold)}
.player-menu button:disabled{opacity:.4;cursor:default}

/* Four compact bottom actions leave the middle of the 3D view open. */
.actionbar,html:not([lang=ko]) .actionbar{width:max-content;max-width:calc(100% - 16px)}
.actionbar .action-secondary,html:not([lang=ko]) .actionbar .action-secondary{min-width:0;max-height:42px;min-height:38px;padding:5px 6px;white-space:normal;line-height:14px}
.donate-button{color:var(--gold)}.donate-button>span:last-child{max-width:86px;overflow-wrap:anywhere}.donate-button>span:first-child{font-size:16px!important}
.donation-dialog{text-align:center}.donation-link{display:block;text-decoration:none;margin:20px 0 16px}.donation-dialog img{display:block;max-width:100%;height:auto;width:296px;margin:0 auto;border-radius:8px;background:#fff}.donation-url{font-size:12px!important;color:var(--gold)!important;direction:ltr}
#partyBadge{font-size:10px;color:var(--gold)}.utilitybar #partyButton{position:relative}
.party-dialog{max-width:480px}.party-actions{display:flex;gap:7px;flex-wrap:wrap;margin:12px 0}.party-member{display:flex;align-items:center;gap:8px;flex-wrap:wrap;padding:10px 0;border-bottom:1px solid var(--line)}.party-member>span{flex:1;min-width:80px;overflow-wrap:anywhere;font-size:13px}.party-member>small{font-size:10px;color:var(--muted);max-width:130px}.party-member>button{font-size:10px;padding:8px}.party-invite-form{display:grid;grid-template-columns:auto 1fr auto;gap:8px;align-items:center;margin-top:16px}.party-invite-form label{font-size:12px}.party-voice-panel{border-top:1px solid var(--line);margin-top:18px;padding-top:10px}.party-voice-panel p{font-size:12px;color:var(--muted)}.party-voice-panel .setting-label{margin:15px 0 8px}
@media(max-width:600px){#partyBadge{position:absolute;right:1px;top:1px;font-size:9px}.actionbar .prayer-button{min-width:88px;padding:9px}.actionbar .action-secondary{font-size:10px!important}.actionbar{padding:4px!important;gap:2px!important}.actionbar .action-divider{margin:0}}

/* Text-only, screen-facing bubbles follow the head without intercepting game input. */
.avatar-speech{position:relative;max-width:min(240px,65vw);min-width:36px;padding:9px 13px;border:1px solid #c7cfc6;border-radius:15px;background:#fffdf3f5;color:#18352e;font:500 14px/1.5 Manrope,"Noto Sans KR",sans-serif;text-align:start;white-space:pre-wrap;overflow-wrap:anywhere;unicode-bidi:plaintext;box-shadow:0 3px 12px #0003;pointer-events:none}
.avatar-speech:after{content:"";position:absolute;bottom:-7px;left:calc(50% - 6px);width:12px;height:12px;background:#fffdf3;transform:rotate(45deg);border-right:1px solid #c7cfc6;border-bottom:1px solid #c7cfc6}
.donation-message{font-size:14px!important;line-height:1.8!important;color:var(--ink)!important;white-space:pre-line;margin:16px 0}

.location-purpose{margin:16px 0;padding:12px 14px;border:1px solid var(--line);border-radius:10px;background:#d6b57b0b;color:var(--ink);font-size:13px;line-height:1.7;text-align:start}

/* Controls fit their contents; the 3D scene remains the main surface. */
.topbar,html[dir=rtl] .topbar{padding:6px 8px;gap:6px;align-items:center}
.topbar .room-pill{flex:0 1 auto;width:max-content;max-width:min(70vw,360px);min-height:26px;padding:4px 7px;gap:5px;border-radius:8px;font-size:11px}
.top-actions{gap:3px}.top-actions .icon-button{width:28px;height:28px;min-height:28px;font-size:15px}
.utilitybar,html[dir=rtl] .utilitybar{top:40px;right:8px;left:auto;gap:3px}
.utilitybar button,.utilitybar a{min-height:26px;height:26px;padding:3px 6px;gap:4px;font-size:10px;border-radius:6px}
.utilitybar .utility-icon{font-size:16px}
.actionbar,html:not([lang=ko]) .actionbar{bottom:calc(6px + env(safe-area-inset-bottom));padding:3px!important;gap:2px!important;border-radius:9px;max-width:calc(100% - 12px)}
.actionbar .action-secondary,html:not([lang=ko]) .actionbar .action-secondary{min-width:0;min-height:28px;max-height:30px;padding:3px 5px;line-height:14px;font-size:11px}
.actionbar .prayer-button,html:not([lang=ko]) .actionbar .prayer-button{min-width:0;min-height:30px;height:30px;padding:4px 7px;font-size:11px;gap:4px}
.actionbar button>span[aria-hidden],.actionbar a>span[aria-hidden]{font-size:15px!important}
.actionbar .action-divider{height:15px;margin:0 1px}
.prayer-mode .actionbar .prayer-quran{min-height:24px;padding:3px 5px;font-size:10px}
.joystick,html[dir=rtl] .joystick{width:66px;height:66px;left:8px;right:auto;bottom:calc(52px + env(safe-area-inset-bottom))}
.joystick .joystick-thumb{width:30px;height:30px;font-size:17px}
.joystick-base:before{inset:8px}
.chat-dock{right:8px;bottom:calc(52px + env(safe-area-inset-bottom));width:270px;max-width:calc(100% - 88px);border-radius:8px}
.chat-toolbar{padding:1px 3px;gap:2px}.chat-toolbar button{min-height:24px;height:24px;padding:2px 5px;font-size:12px}
.chat-toolbar>button{width:24px;font-size:16px}
.chat-dock .chat-mode{display:none}.chat-dock #chatDisabledStatus:not([hidden]){display:block;margin:4px 6px;font-size:11px}
.chat-dock .chat-messages{height:42px;padding:1px 6px}.chat-dock .chat-message,.chat-author{font-size:12px;line-height:1.45}
.chat-dock .inline-form{margin:2px 3px 3px;gap:3px}.chat-dock input{height:28px;padding:4px 6px;font-size:12px}
.chat-dock .inline-form button{height:28px;min-width:28px;padding:3px 6px}
#whisperTargetRow{padding:2px 4px}#whisperTarget{padding:4px 6px;font-size:11px}
.custom-panel,html[dir=rtl] .custom-panel{top:76px;bottom:auto;left:8px;width:252px;max-width:calc(100vw - 16px);max-height:calc(100dvh - 128px);padding:12px;border-radius:10px}
.custom-panel .panel-heading{margin-bottom:10px}.custom-panel h2{font-size:15px}.custom-panel .icon-button{width:26px;height:26px;font-size:15px}
.custom-panel input{padding:6px 8px}.custom-panel .tabs{margin:12px 0}.custom-panel .tabs button{padding:7px 0;font-size:11px}
.custom-panel fieldset,#entryCharacterHost fieldset{margin-bottom:12px}.custom-panel legend{margin-bottom:7px;font-size:11px}
.custom-panel .choices button{padding:6px 3px;font-size:11px}.custom-panel .swatches{gap:7px}
.custom-panel .model-thumb{height:78px;margin-bottom:3px}.custom-panel .portrait-choices,.custom-panel .wardrobe-choices{gap:5px}
.custom-panel .saved-line{padding-top:8px;font-size:9px}
dialog{width:fit-content;min-width:min(240px,calc(100vw - 24px));max-width:min(320px,calc(100vw - 24px));padding:16px;border-radius:12px;max-height:calc(100dvh - 24px)}
dialog h2{font-size:18px;margin:5px 24px 12px 0}dialog>p:not(.eyebrow){font-size:12px;line-height:1.6}
dialog .eyebrow{margin-bottom:5px;font-size:8px;letter-spacing:1.4px}
dialog .dialog-close{top:8px;right:8px;width:26px;height:26px;font-size:20px}
dialog .setting-label{margin:11px 0 6px;font-size:11px}dialog select,dialog input:not([type=range],[type=checkbox]){padding:7px 8px;font-size:12px}
dialog .small-primary,dialog .small-secondary{min-height:28px;padding:6px 9px;font-size:11px}
dialog .section-label{margin:13px 0 7px}dialog .field-note{font-size:11px;line-height:1.55;margin-top:7px}
.wide-dialog{width:min(500px,calc(100vw - 32px));max-width:500px}.party-dialog{max-width:400px}
.entry-dialog.character-step{max-width:620px}.entry-progress{margin:10px 0;gap:8px}.entry-progress>span{font-size:10px}
.entry-avatar-preview{height:210px;margin:10px 0 0;border-radius:8px}
#entryCharacterHost .custom-panel{padding-top:10px}#entryCharacterHost .swatch{width:25px;height:25px}
.entry-navigation{gap:6px;padding-top:9px;margin-top:12px}.entry-navigation button{min-width:0;padding:6px 12px}
.map-choices{gap:7px;margin-top:12px}.map-art{height:70px}.map-card strong{padding:8px 9px 3px;font-size:11px}.map-card small{padding:0 9px 8px;font-size:9px}
.server-choices{gap:5px}.server-choices button{padding:7px;font-size:11px}
.location-purpose{margin:10px 0;padding:8px 9px;font-size:11px;line-height:1.55;border-radius:7px}
.prayer-times-list{gap:4px;margin:10px 0}.prayer-time-row{padding:7px 9px;font-size:12px;border-radius:6px}.prayer-time-row time{font-size:15px}
.prayer-options{margin:12px 0}.donation-dialog img{width:200px}.donation-message{font-size:13px!important;line-height:1.6!important;margin:10px 0}
.player-menu{min-width:0;width:max-content;padding:4px;border-radius:8px}.player-menu-title{padding:5px 7px;font-size:11px}.player-menu button{width:100%;min-height:30px;padding:6px 9px;font-size:12px}

/* Always-visible text, with an outline rather than a window over the scene. */
.prayer-quest{position:absolute;top:78px;right:9px;width:186px;z-index:5;padding:0;background:none;border:0;box-shadow:none;backdrop-filter:none;pointer-events:none;color:#fff9ed;font-size:11px;line-height:1.4;text-shadow:0 1px 2px #001811,1px 0 1px #001811,-1px 0 1px #001811,0 -1px 1px #001811}
.prayer-quest-heading{display:flex;align-items:center;justify-content:space-between;height:20px;color:#ffe0a0;font-size:12px;font-weight:700}
.prayer-quest-settings{pointer-events:auto;display:grid;place-items:center;width:22px;height:20px;min-height:0;padding:0;border:0;background:none;color:#fff9ed;font-size:14px;text-shadow:inherit}
.prayer-quest-meta{display:flex;align-items:center;justify-content:space-between;gap:6px;margin:0 0 4px;font-size:10px}
.prayer-quest-location{min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.prayer-quest-meta time{direction:ltr;font-variant-numeric:tabular-nums;white-space:nowrap}
.prayer-quest-empty{margin:2px 0 5px;font-size:10px;color:#fff9ed}
.prayer-quest-columns,.prayer-quest-row{display:grid;grid-template-columns:minmax(0,1fr) 32px 58px;align-items:center;gap:5px;padding:0;border:0;background:none}
.prayer-quest-columns{font-size:8px;margin-bottom:3px;color:#f0e9d9}.prayer-quest-columns>span:not(:first-child){text-align:end}
.prayer-quest-row{min-height:20px;margin:1px 0;font-size:11px}.prayer-quest-name{min-width:0;overflow-wrap:anywhere}
.prayer-quest-name small{display:inline;margin-inline-start:4px;font-size:8px;color:#f3dfbd}
.prayer-quest-row time,.prayer-quest-row output{direction:ltr;white-space:nowrap;font-variant-numeric:tabular-nums;text-align:end;font-size:11px;color:inherit}
.prayer-quest-row output{font-weight:600}.prayer-quest-row.next{color:#ffe0a0;font-weight:700}
@media(max-width:600px){
 .utilitybar,html[dir=rtl] .utilitybar{display:flex;flex-wrap:nowrap;gap:3px;top:40px}
 .utilitybar button,.utilitybar a{width:26px;height:26px;min-height:26px;padding:0}.utilitybar .utility-icon{display:block;font-size:16px}.utilitybar .utility-label{display:none}
 .prayer-quest{top:76px;right:8px;width:180px}.prayer-quest-row{min-height:18px;font-size:10px}.prayer-quest-row time,.prayer-quest-row output{font-size:10px}
 .chat-dock{width:232px}.chat-dock .chat-messages{height:36px}
 .entry-avatar-preview{height:150px}.entry-dialog.character-step{max-width:480px}.map-card{grid-template-columns:64px 1fr}.map-art{height:64px}
 .custom-panel .model-thumb{height:72px}
}
@media(max-height:600px) and (min-width:601px){.prayer-quest{top:76px}.prayer-quest-heading{height:18px;font-size:11px}.prayer-quest-row{min-height:17px}.chat-dock .chat-messages{height:30px}}

.custom-panel .panel-heading .eyebrow{display:none}.custom-panel .tabs button{font-size:10px;white-space:nowrap}.custom-panel .portrait-choices,.custom-panel .wardrobe-choices,#entryCharacterHost .portrait-choices,#entryCharacterHost .wardrobe-choices{grid-template-columns:repeat(auto-fit,minmax(48px,1fr))}.custom-panel .model-thumb{height:58px}.custom-panel .portrait-choices button,.custom-panel .wardrobe-choices button{font-size:10px;line-height:13px;padding:4px}
.actionbar .action-secondary{gap:3px;white-space:nowrap}.donate-button>span:last-child{white-space:nowrap;overflow-wrap:normal;max-width:none}
@media(max-width:360px){.actionbar .action-secondary{font-size:10px!important;padding:3px 4px}.actionbar .prayer-button{font-size:10px!important;padding:4px 5px}.actionbar button>span[aria-hidden]{font-size:13px!important}}

#app{min-height:320px}.avatar-name{padding:2px 6px;font-size:12px;line-height:15px;border-radius:8px;max-width:120px}.avatar-speech{padding:5px 8px;font-size:13px;line-height:1.4;max-width:min(200px,65vw)}.toast{padding:6px 9px;font-size:11px;bottom:calc(168px + env(safe-area-inset-bottom))}
.room-pill #onlineCount{display:inline-flex;flex-shrink:0;font-size:10px;color:#e1eddf;direction:ltr;font-variant-numeric:tabular-nums}.room-pill #currentMapName{min-width:0;overflow:hidden;text-overflow:ellipsis}.topbar .room-pill{max-width:calc(100vw - 112px)}.map-population{display:block;padding:0 9px 8px;color:var(--gold);font-size:10px}.map-art.makkah{background:linear-gradient(0deg,#e9e6d7 0 28%,transparent 28%),repeating-linear-gradient(90deg,#d7d4c8 0 9%,#69736c 9% 13%,#e9e7dc 13% 18%);position:relative}.map-art.makkah:after{content:'';position:absolute;width:38%;height:56%;left:31%;bottom:20%;border-radius:1px;background:linear-gradient(#151b1b 0 20%,#c7a75f 20% 26%,#151b1b 26% 100%);box-shadow:5px 5px 0 #20302c55}
.congregation-notice{position:absolute;left:8px;top:76px;width:min(174px,calc(100vw - 204px));z-index:6;border-radius:8px;padding:8px;font-size:11px;line-height:1.4}.congregation-notice strong{display:block;padding-inline-end:14px;color:var(--gold)}.congregation-notice p{margin:6px 0}.congregation-notice>button:not(.congregation-dismiss){display:block;width:100%;padding:5px 3px;min-height:26px;font-size:10px;margin-top:5px;line-height:1.35}.congregation-dismiss{position:absolute;top:2px;right:2px;padding:1px 4px;background:none;color:var(--muted);font-size:16px}.prayer-quest-heading>span{flex:1}.prayer-quest-heading .prayer-quest-settings{flex:0 0 22px}#congregationDialog>p{line-height:1.5}#congregationDialog .toggle-row{margin:12px 0;font-size:12px}#congregationDialog .full-width{margin-top:8px}
.dua-compose-actions,.dua-list-heading,.dua-meta,.dua-actions{display:flex;align-items:center;justify-content:space-between;gap:8px}.dua-compose-actions{margin-top:6px}.dua-compose-actions small,.dua-meta{color:var(--muted);font-size:10px}#duaForm label{display:block;font-size:12px;margin:10px 0 5px}#duaBody{display:block;width:100%;min-height:76px;resize:vertical;font-size:13px;line-height:1.5}.dua-list-heading{margin:12px 0 8px;min-height:28px}.dua-list-heading .field-note{margin:0;flex:1}.dua-list{display:grid;gap:8px}.dua-card{padding:10px;border:1px solid var(--line);border-radius:8px;background:#0d2b24}.dua-meta{flex-wrap:wrap}.dua-text{white-space:pre-wrap;overflow-wrap:anywhere;line-height:1.6;font-size:13px;margin:9px 0}.dua-amin[aria-pressed=true]{color:var(--gold);border-color:var(--gold)}.dua-amin:disabled{opacity:.8}.dua-remove{color:var(--muted)}.dua-confirm{display:flex;gap:6px;align-items:center;flex-wrap:wrap;border-top:1px solid var(--line);margin-top:8px;padding-top:8px;font-size:11px}#boardTabs{flex-wrap:wrap}#boardTabs button{font-size:11px;padding:6px 8px}#boardDialog .board-toolbar{flex-wrap:wrap;gap:8px}#duaWall .page-controls{margin-top:12px}
#tasbihPanel{display:none;position:absolute;left:8px;bottom:170px;width:min(142px,calc(100vw - 204px));padding:7px;border:1px solid var(--line);border-radius:9px;background:#102c2aeb;z-index:7;font-size:11px}.prayer-mode #tasbihPanel{display:block}#tasbihToggle{width:100%;padding:3px;font-size:11px;background:none;color:var(--gold)}#tasbihPhrase{display:block;text-align:center;font-size:12px;margin-top:4px}#tasbihTap{display:block;position:relative;width:94px;height:94px;margin:3px auto;padding:0;background:none;touch-action:manipulation}#tasbihTap svg{width:100%;height:100%}#tasbihBeads{transform-origin:50px 50px;transition:transform .22s ease-out}#tasbihBeads circle{fill:#526d60;stroke:#bba772;stroke-width:.5}#tasbihBeads .counted{fill:#f4d28b}.tasbih-pointer{fill:#f4d28b}#tasbihCount{position:absolute;inset:38px 0 auto;text-align:center;font-size:13px;color:#f4d28b;pointer-events:none}#tasbihComplete{display:block;text-align:center;font-size:9px;line-height:1.3}.tasbih-options{display:flex;gap:3px;margin-top:6px}.tasbih-options select{font-size:9px;padding:3px;min-width:0}#tasbihPhraseSelect{flex:1}#tasbihTarget{width:38px}#tasbihReset{display:block;width:100%;font-size:10px;padding:4px;margin-top:5px}.bead-pulse svg{animation:bead-drop .22s ease-out}@keyframes bead-drop{50%{transform:translateY(3px)}}@media(prefers-reduced-motion:reduce){#tasbihBeads{transition:none}.bead-pulse svg{animation:none}}.reminder-actions{display:flex;flex-wrap:wrap;gap:6px}.reminder-actions button{font-size:11px;padding:7px}#reminderControls{border-top:1px solid var(--line);margin-top:14px;padding-top:10px}#reminderControls h3{font-size:14px;margin:0}
@media(max-height:700px) and (max-width:600px){.prayer-quest{line-height:1.2}.prayer-quest-heading{height:17px;font-size:11px}.prayer-quest-meta{font-size:9px;margin-bottom:2px}.prayer-quest-columns{font-size:7px;margin-bottom:1px}.prayer-quest-row{min-height:15px;margin:0;font-size:10px}}
