@font-face{font-family:Vazirmatn;src:url('./assets/Vazirmatn-Latin.woff2') format('woff2');font-weight:100 900;font-display:swap}
@font-face{font-family:Vazirmatn;src:url('./assets/Vazirmatn-Variable.woff2') format('woff2');font-weight:100 900;font-display:swap;unicode-range:U+0600-06FF,U+0750-077F,U+08A0-08FF,U+200C-200F,U+FB50-FDFF,U+FE70-FEFF}
:root{color-scheme:dark;--ink:#f1eef8;--muted:#b4aec4;--violet:#bc98ff;--lime:#d8ff7d;--panel:rgba(15,13,27,.91);--edge:rgba(188,152,255,.27);font-family:Vazirmatn,system-ui,sans-serif;background:#080811;color:var(--ink)}
*{box-sizing:border-box}
body{margin:0;min-width:280px;overflow:hidden}
button,a,input{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}
button{cursor:pointer;color:var(--ink);border:1px solid var(--edge);border-radius:12px;background:rgba(22,18,37,.8);padding:.7rem 1rem;min-height:44px}
button:hover,a.primary:hover{background:#34274b;border-color:var(--violet)}
button:disabled{opacity:.5;cursor:default}
a{color:var(--violet);text-underline-offset:4px}
button:focus-visible,a:focus-visible,summary:focus-visible,[tabindex]:focus-visible{outline:3px solid var(--lime);outline-offset:4px}
[hidden]{display:none!important}
.home{min-height:100svh}
.stage{position:fixed;inset:0;overflow:hidden;isolation:isolate;background:#090a15}
.stage canvas{position:absolute;inset:0;width:100%;height:100%;display:block;touch-action:none}
.fallback{width:100%;height:100%;object-fit:cover;opacity:.35;filter:saturate(.7)}
.stage::after{position:absolute;inset:0;pointer-events:none;content:'';background:linear-gradient(180deg,rgba(6,7,15,.48),transparent 27%,transparent 72%,rgba(6,7,15,.55));z-index:1}
.header{position:fixed;inset-block-start:max(16px,env(safe-area-inset-top));inset-inline:24px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:18px;pointer-events:none}
.header>*{pointer-events:auto}
.brand{display:flex;align-items:center;gap:9px;text-decoration:none;color:var(--ink);font-size:20px;font-weight:750;text-shadow:0 2px 12px #000;white-space:nowrap}
.brand img{object-fit:contain;filter:drop-shadow(0 0 10px rgba(139,72,251,.38))}
.brand small{display:block;font-size:9px;font-weight:500;letter-spacing:.13em;line-height:1.2;color:#c4bbd8}
.header-tools{display:flex;gap:7px;align-items:center}
.header-tools button,.header-tools a{font-size:13px;box-shadow:0 6px 24px rgba(0,0,0,.12);backdrop-filter:blur(10px)}
.welcome{position:fixed;inset:0;z-index:4;display:grid;align-items:center;padding:100px 6vw 110px;background:linear-gradient(90deg,rgba(6,7,17,.8),rgba(6,7,17,.33) 48%,transparent 76%);pointer-events:none}
[dir=rtl] .welcome{background:linear-gradient(-90deg,rgba(6,7,17,.8),rgba(6,7,17,.33) 48%,transparent 76%)}
.welcome-card{max-width:570px;padding:28px 0;pointer-events:auto}
.eyebrow{display:block;color:var(--lime);font-size:11px;font-weight:650;letter-spacing:.13em;line-height:1.6}
[dir=rtl] .eyebrow{letter-spacing:0}
.welcome h1{font-size:clamp(35px,5.3vw,70px);line-height:1.12;letter-spacing:-.04em;max-width:10em;margin:16px 0 20px;text-wrap:balance}
[dir=rtl] .welcome h1{letter-spacing:0;line-height:1.45;max-width:11em}
.welcome p{font-size:clamp(16px,1.7vw,19px);max-width:33em;line-height:1.85;color:#d1cadf;margin:0}
.welcome-actions{display:flex;flex-wrap:wrap;gap:10px;margin:28px 0 16px}
.primary{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:.8rem 1.3rem;border:1px solid var(--lime);border-radius:12px;background:var(--lime);color:#151a08;font-weight:750;text-decoration:none}
.primary:hover,a.primary:hover{background:#e3ffa6;color:#151a08;border-color:#e3ffa6}
.welcome small{display:block;max-width:36em;line-height:1.65;font-size:11px;color:var(--muted)}
.hud{position:fixed;inset-block-end:max(25px,env(safe-area-inset-bottom));inset-inline:25px;z-index:3;display:flex;align-items:end;justify-content:space-between;gap:20px;pointer-events:none}
.hud button{pointer-events:auto;backdrop-filter:blur(12px)}
.room-caption{display:flex;flex-direction:column;gap:3px;text-shadow:0 2px 10px #000;max-width:55%;line-height:1.5}
#room-name{font-size:18px;font-weight:650}
#status{font-size:11px;color:#c4bdd1}
.reticle{position:fixed;inset:50% auto auto 50%;width:5px;height:5px;border-radius:50%;background:rgba(242,240,249,.82);box-shadow:0 0 0 3px rgba(13,13,25,.38);transform:translate(-50%,-50%);z-index:2;pointer-events:none;display:none}
.controls-hint{position:fixed;inset-block-end:max(28px,env(safe-area-inset-bottom));inset-inline-start:50%;transform:translateX(-50%);margin:0;font-size:11px;color:#cdc6da;z-index:3;text-align:center;text-shadow:0 2px 8px #000;pointer-events:none;max-width:45%;line-height:1.7}
[dir=rtl] .controls-hint{transform:translateX(50%)}
.joystick{position:fixed;left:max(24px,env(safe-area-inset-left));bottom:max(100px,calc(env(safe-area-inset-bottom) + 75px));width:108px;height:108px;border:1px solid rgba(220,205,255,.4);border-radius:50%;background:rgba(25,18,43,.27);box-shadow:inset 0 0 25px rgba(162,106,255,.1);z-index:3;touch-action:none;display:none;user-select:none;-webkit-user-select:none}
.stick{position:absolute;top:calc(50% - 23px);left:calc(50% - 23px);width:46px;height:46px;border-radius:50%;border:1px solid rgba(228,213,255,.65);background:rgba(193,162,255,.27);box-shadow:0 0 25px rgba(130,72,231,.14);pointer-events:none}
.interact{position:fixed;inset-inline-start:50%;inset-block-end:95px;transform:translateX(-50%);z-index:3;max-width:min(85vw,420px);line-height:1.4;box-shadow:0 5px 24px rgba(0,0,0,.35)}
[dir=rtl] .interact{transform:translateX(50%)}
.entered .welcome{display:none}
.walking .reticle{display:block}
body:not(.entered) .hud,body:not(.entered) .controls-hint,body:not(.entered) .joystick,body:not(.entered) .interact{visibility:hidden}
.read-view{position:relative;z-index:4;max-width:1180px;margin:100px auto 0;padding:40px 36px 60px;display:none;background:rgba(11,10,20,.97);border:1px solid var(--edge);border-radius:24px 24px 0 0;scroll-margin-top:130px}
.read-view:focus-visible{outline-offset:-5px}
.read-heading{max-width:700px;margin:0 auto 32px;text-align:center}
.read-heading h1{font-size:clamp(30px,4vw,48px);line-height:1.35;margin:14px 0}
.read-heading p{color:var(--muted);line-height:1.9;margin:0 0 24px}
.read-nav{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:0 auto 32px}
.read-nav a{padding:9px 14px;background:#1b172a;border:1px solid var(--edge);border-radius:10px;text-decoration:none;color:#dad3e9;font-size:13px}
.read-rooms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}
.read-room{background:#14121f;border:1px solid rgba(188,152,255,.17);border-radius:18px;padding:26px;scroll-margin-top:130px}
.read-room h2{font-size:25px;line-height:1.45;margin:10px 0 15px}
.read-room>p{color:#bdb5cc;font-size:15px;line-height:1.9}
.read-room img{display:block;width:100%;height:220px;object-fit:contain;border-radius:10px;background:#0b0913;margin-bottom:22px}
.read-room .portrait{height:260px;object-position:center bottom}
.read-room details{border-top:1px solid rgba(188,152,255,.17);padding:14px 0;font-size:14px}
.read-room summary{cursor:pointer;color:#dbd1ee}
.read-room details p{line-height:1.8;color:var(--muted)}
.read-room .room-link{display:inline-block;margin-top:14px;font-weight:650}
.read-footer{display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;color:var(--muted);font-size:12px;line-height:1.9;margin-top:36px;padding-top:24px;border-top:1px solid var(--edge)}
.read-mode,.graphics-failed,.no-js body{overflow:auto}
.read-mode .read-view,.graphics-failed .read-view,.no-js .read-view{display:block}
.read-mode .welcome,.read-mode .hud,.read-mode .controls-hint,.read-mode .joystick,.read-mode .interact,.read-mode .reticle,.graphics-failed .welcome,.graphics-failed .hud,.graphics-failed .controls-hint,.graphics-failed .joystick,.graphics-failed .interact,.graphics-failed .reticle,.no-js .welcome,.no-js .hud,.no-js .controls-hint,.no-js .joystick,.no-js .interact{display:none!important}
.read-mode .stage,.graphics-failed .stage,.no-js .stage{opacity:.3;pointer-events:none}
.read-mode .header,.graphics-failed .header,.no-js .header{padding:10px 12px;border:1px solid var(--edge);border-radius:16px;background:#121018;box-shadow:0 8px 28px rgba(0,0,0,.22)}
.no-js .header button,.no-js #return-house,.graphics-failed #return-house{display:none}
.language-link{display:inline-block;padding:10px 14px;border:1px solid var(--edge);border-radius:12px;text-decoration:none;background:rgba(22,18,37,.8)}
dialog{position:fixed;z-index:10;max-width:min(680px,calc(100vw - 40px));max-height:calc(100svh - 50px);width:100%;margin:auto;padding:28px;border:1px solid rgba(188,152,255,.34);border-radius:22px;background:var(--panel);color:var(--ink);box-shadow:0 25px 100px rgba(0,0,0,.6);backdrop-filter:blur(24px);overscroll-behavior:contain}
dialog::backdrop{background:rgba(6,5,14,.64);backdrop-filter:blur(5px)}
.dialog-bar{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:16px}
.dialog-bar .eyebrow{max-width:75%;color:var(--violet)}
.close-button{min-width:60px;white-space:nowrap;font-size:12px;padding:8px 12px;flex-shrink:0}
dialog h2{font-size:clamp(26px,4vw,38px);line-height:1.45;margin:0 0 20px}
dialog p,.help-copy{color:#c5bcd4;font-size:15px;line-height:1.9}
.dialog-image{display:block;width:100%;object-fit:contain;border-radius:12px;background:#080811;margin-bottom:20px}
.dialog-notes{margin:18px 0 24px;line-height:1.8;color:var(--muted);font-size:14px}
.dialog-notes p{font-size:14px}
.dialog-notes ul,.help-copy ul{padding-inline-start:22px}
.dialog-notes li,.help-copy li{margin:8px 0}
.rooms-list{display:grid;gap:12px}
.rooms-list>section,.rooms-list>.room-group{background:rgba(38,29,57,.42);border:1px solid rgba(188,152,255,.16);border-radius:14px;padding:15px}
.rooms-list h3{margin:0 0 10px;font-size:16px}
.rooms-list button{display:inline-flex;align-items:center;justify-content:center;margin:4px 5px 4px 0;font-size:13px;min-height:44px;padding:9px 13px}
[dir=rtl] .rooms-list button{margin:4px 0 4px 5px}
.rooms-list .room-actions{display:flex;flex-wrap:wrap;gap:7px}
.help-copy kbd{font:inherit;font-size:12px;border:1px solid var(--edge);border-radius:5px;background:#2a203d;padding:2px 6px;color:#ede5f8;white-space:nowrap}
.skip{position:fixed;z-index:20;top:10px;left:15px;transform:translateY(-200%);background:var(--lime);color:#131908;padding:10px 16px;border-radius:8px;text-decoration:none}
.skip:focus{transform:none}
.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}
@media(pointer:coarse){.entered:not(.read-mode):not(.graphics-failed) .joystick{display:block}.controls-hint{inset-block-end:max(28px,env(safe-area-inset-bottom));font-size:10px;max-width:46%}.interact{inset-inline-start:auto;left:auto;right:max(22px,env(safe-area-inset-right));bottom:max(127px,calc(env(safe-area-inset-bottom) + 100px));transform:none!important;max-width:44%;font-size:13px;padding:12px 15px}}
@media(max-width:800px){.header{inset-inline:16px;gap:10px}.brand{font-size:17px}.brand small{font-size:8px}.header-tools button{padding:9px 12px;font-size:12px}.welcome{padding-inline:6vw}.welcome-card{max-width:480px}.welcome h1{font-size:48px}.read-view{margin-top:95px;padding:30px 24px}.read-rooms{gap:14px}.read-room{padding:20px}.hud{inset-inline:20px}.controls-hint{max-width:38%}.read-room img{height:170px}}
@media(max-width:560px){.header{inset-inline:12px;inset-block-start:max(12px,env(safe-area-inset-top));flex-wrap:wrap;gap:8px}.brand{font-size:16px;gap:7px}.brand img{width:30px;height:30px}.brand small{display:none}.header-tools{gap:5px;margin-inline-start:auto;flex-wrap:wrap;justify-content:flex-end}.header-tools button{font-size:11px;padding:8px 10px;min-height:40px;border-radius:10px}.header-tools .help-button{padding-inline:9px}.welcome{padding:100px 24px 105px;align-items:center;background:linear-gradient(180deg,rgba(6,7,17,.2),rgba(6,7,17,.68) 38%,rgba(6,7,17,.9))}[dir=rtl] .welcome{background:linear-gradient(180deg,rgba(6,7,17,.2),rgba(6,7,17,.68) 38%,rgba(6,7,17,.9))}.welcome-card{padding:20px 0;align-self:end}.welcome h1{font-size:41px;max-width:10em;margin:12px 0 16px}.welcome p{font-size:15px;line-height:1.8}.welcome .eyebrow{font-size:10px}.welcome-actions{margin:22px 0 14px}.welcome small{font-size:10px}.hud{inset-inline:16px;inset-block-end:max(17px,env(safe-area-inset-bottom));gap:12px}.hud button{padding:9px 12px;font-size:11px;min-height:40px}.room-caption{max-width:48%}#room-name{font-size:14px}#status{font-size:9px}.controls-hint{inset-block-end:66px;max-width:80%;font-size:10px;width:80%}.joystick{left:max(18px,env(safe-area-inset-left));bottom:max(95px,calc(env(safe-area-inset-bottom) + 70px));width:94px;height:94px}.interact{right:max(18px,env(safe-area-inset-right));bottom:max(116px,calc(env(safe-area-inset-bottom) + 92px))}.read-view{margin-top:128px;padding:28px 18px;border-radius:20px 20px 0 0}.read-rooms{grid-template-columns:1fr}.read-heading h1{font-size:31px}.read-heading p{font-size:14px}.read-room img{height:210px}.read-footer{font-size:11px}.read-nav{gap:6px}.read-nav a{font-size:12px;padding:8px 10px}dialog{max-width:calc(100vw - 24px);padding:20px;max-height:calc(100svh - 28px);border-radius:18px}dialog h2{font-size:27px;margin-bottom:16px}.dialog-bar{gap:10px}.dialog-bar .eyebrow{font-size:10px;max-width:68%}dialog p,.help-copy{font-size:14px}.dialog-image img{max-height:200px}}
@media(max-width:380px){.header-tools{flex-basis:100%;justify-content:flex-start}.header-tools button{flex:1;padding-inline:7px}.welcome{padding:108px 20px 65px}.welcome h1{font-size:35px}.welcome p{font-size:14px}.welcome-actions button{flex:1;font-size:13px;padding-inline:10px}.welcome small{font-size:9px}.hud{inset-inline:13px}.joystick{width:86px;height:86px}.interact{font-size:12px;max-width:48%}.read-view{margin-top:128px}.room-caption{max-width:50%}}
@media(max-height:590px) and (orientation:landscape){.header{inset-block-start:10px}.brand small{display:none}.welcome{padding:72px 5vw 24px}.welcome-card{padding:0;max-width:480px;align-self:center}.welcome h1{font-size:34px;margin:8px 0 12px}.welcome p{font-size:13px;line-height:1.65}.welcome-actions{margin:16px 0 10px}.welcome small{font-size:9px}.hud{inset-block-end:12px}.controls-hint{inset-block-end:15px}.joystick{bottom:72px;width:78px;height:78px}.interact{bottom:87px}.read-view{margin-top:78px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important}}
.stage.ready .fallback{display:none}.dialog-image:empty{display:none}.dialog-image img{display:block;width:100%;max-height:260px;object-fit:contain}.dialog-image.portrait{max-width:240px;margin-inline:auto}.dialog-image.portrait img{max-height:320px;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;pointer-events:none}.note{padding:12px 15px;border:1px solid var(--edge);border-radius:10px;margin:10px 0;background:#201a30;font-size:13px;line-height:1.8}.object-choice{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:8px;padding-top:8px;border-top:1px solid var(--edge)}.object-choice>span{flex:1;min-width:110px;font-size:13px}.room-choice>.room-link{font-weight:700;background:#302446}.stick{left:50%;top:50%;transform:translate(-50%,-50%)}
@media(max-width:700px){.entered:not(.read-mode):not(.graphics-failed) .joystick{display:block}.interact{inset-inline-start:auto;left:auto;right:18px;transform:none!important;max-width:44%;font-size:12px;padding:12px 15px}.dialog-image img{max-height:220px}.dialog-image.portrait img{max-height:290px}}
.read-room .portrait{-webkit-touch-callout:none;user-select:none;-webkit-user-select:none;pointer-events:none}
/* Quiet controls sit over the home rather than competing with the room. */
.header-tools button{background:rgba(20,24,29,.78);border-color:rgba(255,255,255,.2)}
.stage::after{background:linear-gradient(180deg,rgba(8,10,15,.35),transparent 22%,transparent 72%,rgba(8,10,15,.4))}
.controls-hint{inset-block-end:78px}
.room-caption{flex:1}
.light-toggle{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-width:44px}
.lamp-icon{position:relative;width:22px;height:22px;display:block;pointer-events:none}
.lamp-icon>svg{width:100%;height:100%;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round}
.lamp-motion{position:absolute;inset:0;display:none}
.lamp-icon.playing .lamp-motion{display:block}
.lamp-icon.playing>svg{visibility:hidden}
.light-toggle[aria-pressed=false] .lamp-icon{color:#ada9a0}
.light-toggle[aria-pressed=true] .lamp-icon{color:#eeefb8}
.memorial-dialog{max-width:560px;background:rgba(22,25,28,.97);border-color:rgba(222,214,200,.32);text-align:center;padding:32px}
.memorial-dialog .dialog-bar{text-align:start}.memorial-dialog h2{margin-top:26px}
.memorial-dialog #dialog-copy{font-size:18px;line-height:2;color:#ded8cd;margin-bottom:32px}
.dialog-media{display:grid;gap:12px;margin-top:20px}.dialog-media video{display:block;width:100%;max-height:55svh;background:#050606;border-radius:12px}
@media(max-width:560px){#light-label{display:none}.light-toggle{padding:10px}.hud{gap:9px}.room-caption{max-width:none;min-width:0}.controls-hint{inset-block-end:70px}.memorial-dialog{padding:23px}.memorial-dialog #dialog-copy{font-size:16px}}
@media(prefers-reduced-motion:reduce){.lamp-motion{display:none!important}.lamp-icon.playing>svg{visibility:visible}}
/* Keep both the interaction focus ring and the control hint readable. */
@media(min-width:701px) and (pointer:fine){.controls-hint{inset-block-end:64px}}
.dialog-bar{position:sticky;top:-1px;z-index:2;background:rgba(15,13,27,.98);padding-block:6px;margin-block-start:-6px;border-radius:8px}

/* Paired touch controls use physical left/right thumb placement in either language. */
.look-control,.touch-action{display:none}
.thumb-label{position:absolute;top:calc(100% + 7px);left:50%;transform:translateX(-50%);font-size:9px;font-weight:650;letter-spacing:1.3px;color:#ece7f8;text-shadow:0 1px 6px #000;white-space:nowrap;pointer-events:none}
.look-stick:after{content:'';position:absolute;inset:12px;border:1px solid rgba(237,224,255,.75);border-radius:50%}
.touch-action{position:fixed;z-index:4;right:max(26px,env(safe-area-inset-right));bottom:max(228px,calc(env(safe-area-inset-bottom) + 215px));align-items:center;gap:7px;border-radius:999px;padding:10px 13px;min-height:48px;min-width:76px;touch-action:manipulation}
.touch-action-symbol{font-size:22px;line-height:1}
.touch-action:disabled{opacity:.42;cursor:default}
.touch-action:not(:disabled){background:#d8ff7d;color:#202511;border-color:#d8ff7d}
.read-mode .look-control,.read-mode .touch-action,.graphics-failed .look-control,.graphics-failed .touch-action,body:not(.entered) .look-control,body:not(.entered) .touch-action{display:none!important}
.experience-choice .look-control,.experience-loading .look-control,.experience-failed .look-control,.experience-choice .touch-action,.experience-loading .touch-action,.experience-failed .touch-action{display:none!important}
@media(pointer:coarse),(max-width:700px){
  .entered.experience-ready:not(.read-mode):not(.graphics-failed) .look-control{display:block;left:auto;right:max(20px,env(safe-area-inset-right))}
  .entered.experience-ready:not(.read-mode):not(.graphics-failed) .touch-action:not([hidden]){display:flex}
  .joystick{width:104px;height:104px;bottom:max(110px,calc(env(safe-area-inset-bottom) + 96px));left:max(20px,env(safe-area-inset-left));background:rgba(16,15,24,.32);border-color:rgba(223,215,248,.34);box-shadow:inset 0 0 20px #ae83ff12,0 5px 24px #0002;backdrop-filter:blur(9px)}
  .stick{top:50%;left:50%;transform:translate(-50%,-50%);width:44px;height:44px;background:radial-gradient(circle at 35% 25%,#ded3f66b,#9575cd55);border-color:#e0d2fc8a}
  .interact{left:50%!important;right:auto!important;bottom:max(282px,calc(env(safe-area-inset-bottom) + 269px));transform:translateX(-50%)!important;max-width:calc(100vw - 48px);padding:8px 13px;min-height:38px;font-size:11px;pointer-events:none;background:#15151de0;color:#f5f2ff;border-color:#d8c9f84d}
  [dir=rtl] .interact{transform:translateX(-50%)!important}
  .controls-hint{bottom:max(65px,calc(env(safe-area-inset-bottom) + 55px));max-width:85%;font-size:9px}
}
@media(pointer:coarse) and (orientation:landscape),(max-width:700px) and (orientation:landscape){
  .header{inset-inline:max(14px,env(safe-area-inset-left));inset-block-start:max(10px,env(safe-area-inset-top));flex-wrap:nowrap;gap:8px}
  .brand{font-size:14px;gap:6px}.brand img{width:27px;height:27px}.brand small{display:none}
  .header-tools{gap:5px;flex-wrap:nowrap}.header-tools button{font-size:10px;min-height:44px;padding:6px 9px}
  .world-dock{inset-block-start:max(53px,calc(env(safe-area-inset-top) + 45px));inset-inline-end:max(14px,env(safe-area-inset-right));padding:3px;max-width:240px}
  .world-dock button{min-height:29px;font-size:9px;padding:3px 7px}.world-time-button time{font-size:12px}
  .joystick{width:90px;height:90px;bottom:max(32px,calc(env(safe-area-inset-bottom) + 23px));left:max(25px,env(safe-area-inset-left))}
  .entered.experience-ready:not(.read-mode):not(.graphics-failed) .look-control{right:max(25px,env(safe-area-inset-right))}
  .stick{width:40px;height:40px}.thumb-label{top:calc(100% + 4px);font-size:8px}
  .touch-action{right:max(45px,env(safe-area-inset-right));bottom:max(140px,calc(env(safe-area-inset-bottom) + 125px));padding:8px 11px;min-height:44px;min-width:72px;font-size:11px}
  .hud{inset-inline:145px;inset-block-end:max(14px,env(safe-area-inset-bottom));gap:8px}#room-name{font-size:12px}#status{display:none}.hud button{padding:7px 9px;font-size:10px;min-height:44px}
  .controls-hint{bottom:max(59px,calc(env(safe-area-inset-bottom) + 49px));max-width:50%;font-size:8px}
  .interact{bottom:max(87px,calc(env(safe-area-inset-bottom) + 73px));max-width:42%;font-size:10px}
  .world-time-button small{max-width:90px;font-size:7px}
}
.memorial-dialog .dialog-bar{background:rgba(22,25,28,.98)}

/* Compact game HUD: analog movement and a direct-swipe look area. */
@media(pointer:coarse),(max-width:700px){
  .joystick{width:92px;height:92px;background:rgba(13,16,20,.18);border:1px solid #edf3ff38;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;-webkit-touch-callout:none;isolation:isolate}
  #joystick::before{content:'';position:absolute;inset:10px;border:1px solid #edf3ff18;border-radius:50%;pointer-events:none}
  #joystick::after{content:'';position:absolute;inset:5px;background:linear-gradient(#edf3ff50,#edf3ff50) center top/1px 5px no-repeat,linear-gradient(#edf3ff50,#edf3ff50) center bottom/1px 5px no-repeat,linear-gradient(#edf3ff50,#edf3ff50) left center/5px 1px no-repeat,linear-gradient(#edf3ff50,#edf3ff50) right center/5px 1px no-repeat;pointer-events:none}
  .joystick .stick{width:34px;height:34px;border:1px solid #eff5ff83;background:linear-gradient(150deg,#46505cc4,#202731bd);box-shadow:0 2px 6px #0003;transition:transform 90ms ease-out;will-change:transform}
  #joystick .stick::after{content:'';position:absolute;inset:12px;border:1px solid #f0f5ffc4;border-radius:50%}
  .joystick.is-active{border-color:#d8ff7d8a;background:#18221a22}
  .joystick.is-active .stick{transition:none;border-color:#d8ff7de0}
  .thumb-label{font-size:8px;letter-spacing:.09em;color:#f1f4f8c7;text-shadow:0 1px 4px #000}
  .entered.experience-ready:not(.read-mode):not(.graphics-failed) .look-control{background:none;border-color:transparent;box-shadow:none}
  .look-control::before{content:'';position:absolute;inset:13px;border:1px solid #eef3ff35;border-radius:50%;pointer-events:none}
  .look-aim{position:absolute;inset:0;pointer-events:none;opacity:.8}
  .look-aim::before{content:'';position:absolute;inset:calc(50% - 10px);border:1px solid #eff6ff85;border-radius:50%}
  .look-aim::after{content:'';position:absolute;inset:calc(50% - 16px);background:linear-gradient(#eff6ffb3,#eff6ffb3) center top/1px 5px no-repeat,linear-gradient(#eff6ffb3,#eff6ffb3) center bottom/1px 5px no-repeat,linear-gradient(#eff6ffb3,#eff6ffb3) left center/5px 1px no-repeat,linear-gradient(#eff6ffb3,#eff6ffb3) right center/5px 1px no-repeat}
  .look-control .look-stick{width:12px;height:12px;background:#d8ff7d;border-color:#efffc4;box-shadow:0 0 0 4px #d8ff7d20;opacity:0}
  .look-stick::after{display:none}
  .look-control.is-active .look-stick{opacity:1}
  .look-control.is-active::before{border-color:#d8ff7d8a}
  .look-control.is-active .look-aim{opacity:.3}
  .entered:not(.walking) .joystick{opacity:.4}
  .look-control[hidden]{display:none!important}
}
@media(pointer:coarse) and (orientation:landscape),(max-width:700px) and (orientation:landscape){.joystick{width:80px;height:80px}.joystick .stick{width:32px;height:32px}.look-control .look-stick{width:12px;height:12px}}
@media(max-width:380px) and (orientation:portrait){.joystick{width:84px;height:84px}.joystick .stick{width:32px;height:32px}.look-control .look-stick{width:12px;height:12px}}
@media(prefers-reduced-motion:reduce){.joystick .stick{transition:none}}

/* A visit starts with a data-conscious choice, before loading the 3D scene. */
.experience-panel{position:fixed;inset:0;z-index:6;overflow:auto;overscroll-behavior:contain;background:radial-gradient(ellipse at 20% 25%,#20212a 0,transparent 50%),#0c0d10;padding:104px max(24px,6vw) 40px}
.experience-choice,.experience-loading,.experience-failed{overflow:hidden}
.experience-choice .header,.experience-loading .header,.experience-failed .header{z-index:8}
.experience-choice #room-menu,.experience-choice #read-toggle,.experience-choice #help,.experience-loading #room-menu,.experience-loading #read-toggle,.experience-loading #help,.experience-failed #room-menu,.experience-failed #read-toggle,.experience-failed #help{display:none!important}
.experience-choice .stage,.experience-loading .stage,.experience-failed .stage{visibility:hidden;pointer-events:none}
.experience-choice .welcome,.experience-loading .welcome,.experience-failed .welcome,.experience-choice .hud,.experience-loading .hud,.experience-failed .hud,.experience-choice .controls-hint,.experience-loading .controls-hint,.experience-failed .controls-hint,.experience-choice .joystick,.experience-loading .joystick,.experience-failed .joystick,.experience-choice .interact,.experience-loading .interact,.experience-failed .interact{display:none!important}
.entry-layout{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,7vw,120px);align-items:center;max-width:1180px;min-height:calc(100svh - 160px);margin:auto}
.entry-intro h1{font-size:clamp(42px,5.5vw,78px);line-height:1.1;letter-spacing:-.055em;text-wrap:balance;max-width:9em;margin:18px 0 24px;color:#f4f5f7}
.entry-intro>p{font-size:17px;line-height:1.85;max-width:29em;color:#b9bac4;margin:0}
[dir=rtl] .entry-intro h1{letter-spacing:0;line-height:1.5;font-size:clamp(35px,4.5vw,60px)}
.entry-art{margin-top:35px;max-width:340px;position:relative}
.villa-line-art{display:block;width:100%;height:auto;overflow:visible;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.villa-outline{stroke:#737783}.villa-accent{stroke:#d8ff7d;stroke-width:2}.villa-detail{stroke:#b5b8c1;stroke-opacity:.7}
.entry-signature{display:block;font-size:9px;letter-spacing:.16em;color:#838796;margin-top:10px}
.entry-options{display:grid;gap:14px;align-content:center}
.experience-option{padding:26px 28px;border:1px solid #393c46;border-radius:22px;background:rgba(22,24,29,.96)}
.immersive-option{border-color:#767f61;background:linear-gradient(135deg,#202527,#17191e)}
.option-kicker{font-size:10px;color:#b7c799;letter-spacing:.1em}.standard-option .option-kicker{color:#aaaeba}
.experience-option h2{font-size:24px;line-height:1.5;letter-spacing:-.025em;margin:10px 0;color:#f2f3f6}
.experience-option p{font-size:14px;line-height:1.85;margin:0 0 16px;color:#b8bbc5}
.download-estimate{font-size:12px;line-height:1.9;color:#d5d8e0;min-height:23px;margin:0 0 15px}
.experience-option button{width:100%;font-size:14px;border-radius:11px;min-height:49px}
.standard-option button{background:#24272e;border-color:#535866}
.choice-note{margin:3px 6px;font-size:11px;line-height:1.9;color:#9498a5}
.loader-panel{display:grid;place-items:center}
.loader-card{width:min(100%,560px);text-align:center;padding:20px 0}
.loader-art{max-width:220px;margin:25px auto 28px}.loader-art .villa-accent{animation:welcome-glow 2.8s ease-in-out infinite}
.loader-card h1{font-size:clamp(27px,3vw,38px);line-height:1.5;letter-spacing:-.03em;margin:0 0 15px}
[dir=rtl] .loader-card h1{letter-spacing:0}
/* The loader title receives announcement focus; buttons retain visible rings. */
#loader-title:focus-visible{outline:none}
.loader-intro{font-size:14px;color:#b9bdc7;line-height:1.9;margin:0 0 33px}
.progress-heading{display:flex;align-items:center;justify-content:space-between;gap:15px;text-align:start;font-size:13px;color:#d7dbe2;margin-bottom:11px}
#load-percent{font-variant-numeric:tabular-nums;font-size:15px;color:#d8ff7d;white-space:nowrap}
#load-progress{display:block;width:100%;height:6px;border:0;border-radius:8px;overflow:hidden;appearance:none;background:#30333c;direction:ltr}
#load-progress::-webkit-progress-bar{background:#30333c;border-radius:8px}
#load-progress::-webkit-progress-value{background:#d8ff7d;border-radius:8px;transition:width .18s linear}
#load-progress::-moz-progress-bar{background:#d8ff7d;border-radius:8px}
#load-progress:indeterminate{background:linear-gradient(90deg,#30333c 15%,#d8ff7d 50%,#30333c 85%);background-size:220% 100%;animation:finish-house 1.6s ease-in-out infinite}
#load-progress:indeterminate::-webkit-progress-bar{background:transparent}
#load-progress:indeterminate::-moz-progress-bar{background:transparent}
@keyframes finish-house{from{background-position:160% 0}to{background-position:-60% 0}}
@media(prefers-reduced-motion:reduce){#load-progress:indeterminate{animation:none;background-position:50% 0}}
.load-detail{font-size:12px;line-height:1.9;color:#959ca9;min-height:24px;margin:12px 0 28px}
.loader-actions{display:flex;justify-content:center;gap:10px;flex-wrap:wrap}.loader-actions button{font-size:12px}
.loader-note{font-size:10px;color:#858b98;line-height:1.9;margin:17px auto 0;max-width:38em}
.experience-standard .header{background:#121018}.no-js .experience-panel{display:none!important}
.no-js .read-room img[data-read-src]{display:none}
@keyframes welcome-glow{0%,100%{opacity:.55}50%{opacity:1}}
@media(max-width:760px){.experience-panel{padding:97px 22px 32px}.entry-layout{grid-template-columns:1fr;gap:28px;min-height:auto;max-width:500px}.entry-intro h1{font-size:43px;line-height:1.18;max-width:11em;margin:10px 0 16px}.entry-intro>p{font-size:14px}.entry-art{display:none}.experience-option{padding:22px}.experience-option h2{font-size:22px}.experience-option p{font-size:13px}.loader-art{max-width:170px}.loader-intro{font-size:13px;margin-bottom:25px}.loader-card{padding:0}.loader-panel{padding-top:80px}.choice-note{font-size:10px}.download-estimate{font-size:11px}[dir=rtl] .entry-intro h1{font-size:35px}.experience-panel .eyebrow{font-size:10px}}
@media(max-width:380px){.experience-panel{padding-inline:16px}.entry-intro h1{font-size:36px}.experience-option{padding:19px 18px}.experience-option h2{font-size:20px}.entry-options{gap:12px}.loader-art{max-width:145px}.loader-card h1{font-size:25px}[dir=rtl] .entry-intro h1{font-size:30px}}
@media(max-height:590px) and (orientation:landscape){.experience-panel{padding:78px 25px 25px}.entry-layout{grid-template-columns:1fr 1.2fr;max-width:1000px;gap:25px}.entry-intro h1{font-size:32px}.entry-intro>p{font-size:12px}.experience-option{padding:17px}.experience-option h2{font-size:19px}.experience-option p{font-size:12px}.choice-note{font-size:9px}.loader-art{max-width:125px;margin:8px auto 12px}.loader-card h1{font-size:25px}.loader-intro{margin-bottom:18px}}
@media(prefers-reduced-motion:reduce){.loader-art .villa-accent{animation:none}#load-progress::-webkit-progress-value{transition:none}}
/* Keep both data choices within a typical phone's first screen. */
@media(max-width:760px){.choice-panel{padding-top:86px;padding-bottom:22px}.choice-panel .entry-layout{gap:18px}.choice-panel .entry-intro>p{display:none}.choice-panel .entry-intro h1{font-size:35px;margin:8px 0 0;line-height:1.17}.choice-panel .entry-intro .eyebrow{font-size:9px}[dir=rtl] .choice-panel .entry-intro h1{font-size:28px;line-height:1.5}.choice-panel .experience-option{padding:18px 20px}.choice-panel .option-kicker{display:none}.choice-panel .experience-option h2{font-size:19px;line-height:1.4;margin:0 0 8px}.choice-panel .experience-option p{font-size:12px;line-height:1.7;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;margin-bottom:10px}.choice-panel .experience-option button{min-height:44px;font-size:13px;padding-block:10px}.choice-panel .download-estimate{font-size:10px;line-height:1.8;margin-bottom:12px}.choice-panel .choice-note{font-size:9px;line-height:1.8}.choice-panel .entry-options{gap:12px}}
@media(max-width:380px){.choice-panel{padding-top:85px;padding-inline:16px}.choice-panel .experience-option{padding:16px}.choice-panel .entry-intro h1{font-size:32px}[dir=rtl] .choice-panel .entry-intro h1{font-size:26px}.choice-panel .entry-layout{gap:16px}}
@media(max-height:590px) and (orientation:landscape){.choice-panel{padding-top:72px;padding-bottom:20px}.choice-panel .entry-layout{grid-template-columns:1fr;gap:15px;max-width:1050px}.choice-panel .entry-intro .eyebrow,.choice-panel .entry-intro>p{display:none}.choice-panel .entry-intro h1{font-size:27px;line-height:1.4;max-width:none;margin:0}[dir=rtl] .choice-panel .entry-intro h1{font-size:26px;line-height:1.4}.choice-panel .entry-options{grid-template-columns:1fr 1fr;gap:12px}.choice-panel .choice-note{grid-column:1/-1;font-size:9px;margin:0}.choice-panel .experience-option{padding:15px}.choice-panel .option-kicker,.choice-panel .experience-option p{display:none}.choice-panel .experience-option h2{font-size:18px;margin:0 0 10px}.choice-panel .download-estimate{font-size:10px;line-height:1.7;margin-bottom:10px}.choice-panel .experience-option button{min-height:42px;font-size:12px;padding:9px}}

/* Short landscape screens keep the progress and exit action beside the artwork. */
@media(max-height:590px) and (orientation:landscape){
 .loader-panel{padding:72px 30px 15px}
 .loader-card{display:grid;grid-template-columns:140px minmax(0,1fr);column-gap:28px;width:min(100%,740px);padding:0;text-align:start}
 .loader-card>.eyebrow{grid-column:1;grid-row:1;font-size:9px;align-self:center}
 .loader-card>.loader-art{grid-column:1;grid-row:2/8;width:135px;max-width:100%;margin:20px 0 0;align-self:start}
 .loader-card>h1{grid-column:2;grid-row:1;font-size:25px;line-height:1.4;margin:0 0 8px}
 .loader-card>.loader-intro{grid-column:2;grid-row:2;font-size:12px;line-height:1.6;margin:0 0 15px}
 .loader-card>.progress-heading{grid-column:2;grid-row:3;font-size:12px;line-height:1.5;margin-bottom:8px}
 .loader-card>#load-progress{grid-column:2;grid-row:4}
 .loader-card>.load-detail{grid-column:2;grid-row:5;font-size:11px;line-height:1.6;min-height:18px;margin:8px 0 12px}
 .loader-card>.loader-actions{grid-column:2;grid-row:6;justify-content:flex-start}
 .loader-card>.loader-actions button{min-height:40px;font-size:11px;padding:8px 12px}
 .loader-card>.loader-note{grid-column:2;grid-row:7;font-size:9px;line-height:1.6;margin:10px 0 0;max-width:none}
}

/* Landscape uses its height for the two choices and their download estimates. */
@media(max-height:590px) and (orientation:landscape){.choice-panel .entry-art{display:none}}

/* The private room keeps only its relevant actions within reach. */
.in-private-room #light-toggle{display:none}
.hud #walk-toggle,.hud #vault-toggle,.hud #leave-private{min-height:44px;min-width:44px}
.private-lock-hud{position:fixed;z-index:8;inset-inline-start:50%;transform:translateX(-50%);bottom:max(180px,calc(env(safe-area-inset-bottom) + 164px));min-height:44px;max-width:calc(100vw - 44px);padding:10px 18px;border:1px solid #ff708466;border-radius:14px;background:#281822e8;color:#ffd5dc;box-shadow:0 8px 32px #0003;backdrop-filter:blur(12px);font-family:inherit;font-size:12px;font-weight:500;line-height:1.5;font-variant-numeric:tabular-nums;white-space:nowrap;cursor:pointer;touch-action:manipulation}
.private-lock-hud{display:flex;align-items:center;justify-content:center;gap:9px}.private-lock-time{font-size:14px;font-weight:600}.private-lock-hud[hidden]{display:none}.private-lock-hud:focus-visible{outline:2px solid #ff91a3;outline-offset:4px}[dir=rtl] .private-lock-hud{transform:translateX(50%)}
.experience-ready[data-world-light=day] .private-lock-hud{background:#f4e9e9eb;color:#88283a;border-color:#bd7d8999}
@media(max-width:700px) and (orientation:portrait),(pointer:coarse) and (orientation:portrait){.private-lock-hud{inset-inline-start:auto;left:max(20px,env(safe-area-inset-left));transform:none;bottom:max(228px,calc(env(safe-area-inset-bottom) + 215px));display:grid;gap:0;min-height:48px;max-width:calc(50vw - 36px);padding:6px 12px;font-size:10px;line-height:1.4}[dir=rtl] .private-lock-hud{transform:none}.private-lock-time{font-size:14px;line-height:1.4}}
@media(max-height:590px) and (orientation:landscape){.private-lock-hud{left:auto;right:auto;inset-inline-start:max(20px,env(safe-area-inset-left));transform:none;bottom:auto;top:max(83px,calc(env(safe-area-inset-top) + 78px));display:grid;gap:0;font-size:10px;padding:6px 12px;min-height:44px;max-width:calc(50vw - 36px)}[dir=rtl] .private-lock-hud{transform:none;inset-inline-start:max(20px,env(safe-area-inset-right))}}
@media(pointer:coarse),(max-width:700px){.in-private-room .hud{flex-wrap:wrap;gap:6px}.in-private-room .hud #room-name{flex-basis:100%}.in-private-room #vault-toggle,.in-private-room #leave-private{font-size:.72rem;padding:0 10px}.in-private-room #walk-toggle{min-width:44px;padding:0 10px}}

/* Keep controls legible against both the pale ceramic floor and night scene. */
.room-caption{padding:8px 12px;border-radius:12px;background:rgba(10,12,20,.58);backdrop-filter:blur(8px)}
.controls-hint{padding:5px 10px;border-radius:8px;background:rgba(10,12,20,.58);color:#f1f1f5}
@media(max-width:700px) and (orientation:portrait),(pointer:coarse) and (orientation:portrait){.controls-hint{display:none}}

/* Visitor graphics and walking preferences: scoped native controls. */
.visit-settings,.visit-settings-choice{min-inline-size:0;max-inline-size:100%;text-align:start}
.visit-settings-choice{margin-block:0 16px}
.visit-settings-choice .visit-settings-field{display:grid;grid-template-columns:minmax(0,1fr) minmax(110px,150px);align-items:center;gap:10px}
.visit-settings-choice-note{display:block;margin-block-start:7px;color:#b9bfca;font-size:12px;line-height:1.65;overflow-wrap:anywhere}
.visit-settings{margin-block:22px 18px;padding:18px;border:1px solid #b9c2d52e;border-radius:16px;background:#141820}
.visit-settings-title{margin:0 0 15px;font-size:17px;line-height:1.5;color:#eef1f6}
.visit-settings-label{display:block;margin-block-end:6px;font-size:13px;line-height:1.5;color:#e3e8f0;overflow-wrap:anywhere}
.visit-settings-choice .visit-settings-label{margin:0}
.visit-settings-actions{display:flex;align-items:flex-end;flex-wrap:wrap;gap:9px;min-inline-size:0}
.visit-settings-actions .visit-settings-field{flex:1 1 180px;min-inline-size:0;max-inline-size:100%}
.visit-settings .visit-settings-field{min-inline-size:0;max-inline-size:100%}
.visit-settings-select{display:block;inline-size:100%;min-inline-size:0;max-inline-size:100%;min-block-size:46px;padding:9px 10px;font:inherit;font-size:16px;line-height:1.5;color:#eef2f8;border:1px solid #a7b5cf5c;border-radius:10px;background:#1d2430;color-scheme:dark}
.visit-settings-apply{flex:0 1 auto;min-block-size:46px;max-inline-size:100%;padding:10px 14px;font-size:14px;line-height:1.5;border-color:#c4d0aa63;background:#283523;color:#e6f5d1;overflow-wrap:anywhere}
.visit-settings-apply:hover:enabled{background:#35462d;border-color:#d8ff7d}
.visit-settings-select:focus-visible,.visit-settings-apply:focus-visible{outline:3px solid #d8ff7d;outline-offset:3px}
.visit-settings-select:disabled{opacity:.6;cursor:default}
.visit-settings .visit-settings-summary{margin:10px 0 0;color:#d9e6c6;font-size:12px;line-height:1.7;overflow-wrap:anywhere}
.visit-settings .visit-settings-note{margin:7px 0 16px;color:#b6bfcd;font-size:12px;line-height:1.8;overflow-wrap:anywhere}
[data-world-light=day] #visit-settings{background:#f0f2f5;border-color:#a5b0c6;color:#202b38}
[data-world-light=day] #visit-settings .visit-settings-title,[data-world-light=day] #visit-settings .visit-settings-label{color:#253143}
[data-world-light=day] #visit-settings .visit-settings-select{background:#fff;color:#202c3b;border-color:#8995a8;color-scheme:light}
[data-world-light=day] #visit-settings .visit-settings-summary{color:#445e38}
[data-world-light=day] #visit-settings .visit-settings-note{color:#515e70}
[data-world-light=day] #visit-settings .visit-settings-select:focus-visible,[data-world-light=day] #visit-settings .visit-settings-apply:focus-visible{outline-color:#5552a6}
@media(max-width:380px){.visit-settings{padding:14px}.visit-settings-actions .visit-settings-field{flex-basis:100%}.visit-settings-apply{inline-size:100%}.visit-settings-choice .visit-settings-field{grid-template-columns:minmax(0,1fr) minmax(110px,140px)}}


/* Tactile paired thumb controls. CSS only: existing input and pointer capture stay unchanged. */
@media(pointer:coarse),(max-width:700px){
  .joystick{width:100px;height:100px;--thumb-accent:#ba9df4;border:1px solid #d8ddec60;background:radial-gradient(ellipse at 38% 6%,#a6b4d22a,transparent 55%),linear-gradient(160deg,#202837d9,#0c131fea);box-shadow:0 6px 16px #0004,inset 0 1px 0 #ffffff18,inset 0 -1px 0 #080d17aa;backdrop-filter:none;-webkit-backdrop-filter:none;overflow:visible}
  .entered.experience-ready:not(.read-mode):not(.graphics-failed) .look-control{background:radial-gradient(ellipse at 38% 6%,#b6a4db28,transparent 55%),linear-gradient(160deg,#252438d9,#111320ea);border-color:#d8ddec60;box-shadow:0 6px 16px #0004,inset 0 1px 0 #ffffff18,inset 0 -1px 0 #080d17aa}
  #joystick::before,.look-control::before{content:'';position:absolute;inset:5px;border:1px solid #c8d1e42b;border-radius:50%;background:radial-gradient(circle,transparent 59%,#0509142e 60%,#0509142e 63%,transparent 64%);box-shadow:inset 0 1px 0 #ffffff0c;pointer-events:none}
  #joystick::after,.look-control::after{content:'';position:absolute;inset:11px;border-radius:50%;background:linear-gradient(#d2dbee99,#d2dbee99) center top/2px 6px no-repeat,linear-gradient(#d2dbee70,#d2dbee70) center bottom/2px 6px no-repeat,linear-gradient(#d2dbee70,#d2dbee70) left center/6px 2px no-repeat,linear-gradient(#d2dbee70,#d2dbee70) right center/6px 2px no-repeat;pointer-events:none}
  .joystick .stick,.look-control .look-stick{width:42px;height:42px;opacity:1;border:1px solid #d4dcecbb;background:radial-gradient(ellipse at 35% 8%,#f0f3ff66,transparent 62%),linear-gradient(155deg,#748297,#424e62 48%,#273244);box-shadow:0 4px 7px #0006,inset 0 1px 0 #ffffff55,inset 0 -2px 0 #070b1855;transition:transform 90ms ease-out,border-color 120ms ease,box-shadow 120ms ease;pointer-events:none}
  .joystick .stick::before{content:'';position:absolute;inset:4px;border:1px solid #e9edff26;border-radius:50%;background:linear-gradient(155deg,#6b7890a6,#343f5466);box-shadow:inset 0 1px 2px #151d3266;pointer-events:none}
  #joystick .stick::after{content:'';position:absolute;inset:16px;border:1px solid #e4edffb3;border-radius:2px;background:#c2cde033;box-shadow:0 1px 1px #10172866;transform:rotate(45deg);pointer-events:none}
  .look-control .look-stick{background:radial-gradient(ellipse at 35% 8%,#eee6ff66,transparent 62%),linear-gradient(155deg,#80769b,#514a68 48%,#322d46);opacity:.86}
  .look-control .look-stick::before{border-color:#ede4ff29;background:linear-gradient(155deg,#8b7bac70,#463a5d55)}
  .look-control .look-stick::after{display:block;content:'';position:absolute;inset:11px;border:1px solid #eadfffba;border-radius:50%;background:radial-gradient(circle,#efe6ffb8 0 1px,transparent 2px);box-shadow:0 1px 1px #15102380;pointer-events:none}
  .look-control .look-aim{opacity:0}
  .joystick.is-active,.entered.experience-ready:not(.read-mode):not(.graphics-failed) .look-control.is-active{border-color:#d8ff7dc9;box-shadow:0 6px 16px #0004,inset 0 0 0 1px #d8ff7d24,inset 0 1px 0 #f0ffce26}
  .joystick.is-active::before,.look-control.is-active::before{border-color:#d8ff7d61}
  .joystick.is-active .stick,.look-control.is-active .look-stick{border-color:#e4ffb8;opacity:1;box-shadow:0 4px 7px #0006,0 0 0 2px #d8ff7d24,inset 0 1px 0 #ffffff55;transition:none}
  #joystick.is-active .stick::after{background:#d8ff7d;color:#d8ff7d;border-color:#eaffc2}
  .look-control.is-active .look-stick::after{border-color:#e8ffc2;background:radial-gradient(circle,#d8ff7d 0 1px,transparent 2px)}
  .joystick .thumb-label{top:calc(100% + 7px);padding:3px 8px;border:1px solid #d8ddec1f;border-radius:999px;background:#0b111dcc;color:#edf1fa;font-size:9px;font-weight:650;line-height:1.2;letter-spacing:.1em;text-shadow:none;pointer-events:none}
  [dir=rtl] .joystick .thumb-label{letter-spacing:0}
}
@media(pointer:coarse) and (orientation:landscape),(max-width:700px) and (orientation:landscape){
  .joystick{width:92px;height:92px}
  .joystick .stick,.look-control .look-stick{width:42px;height:42px}
  .joystick .thumb-label{top:calc(100% + 5px);font-size:8px;padding:2px 7px}
}
@media(max-width:380px) and (orientation:portrait){.joystick{width:92px;height:92px}.joystick .stick,.look-control .look-stick{width:42px;height:42px}}
@media(prefers-reduced-motion:reduce){.joystick .stick,.look-control .look-stick{transition:none}}

/* Native return controls keep the camera where a visitor left it. */
.header-tools>a,.welcome-actions>a,.loader-actions>a{display:inline-flex;align-items:center;justify-content:center;min-height:44px;padding:.7rem 1rem;border:1px solid var(--edge);border-radius:12px;background:rgba(22,18,37,.8);color:var(--ink);text-decoration:none}.visit-button{color:var(--ink);text-decoration:none}.close-button.house-return{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;min-width:138px;border-color:rgba(188,152,255,.65);background:#30223e;font-size:14px;font-weight:650}.close-button.house-return::before{content:"\2190";font-size:18px}[dir=rtl] .close-button.house-return::before{content:"\2192"}.content-dialog .dialog-bar,.rooms-dialog .dialog-bar{align-items:center;gap:12px}.content-dialog .dialog-bar .eyebrow,.rooms-dialog .dialog-bar .eyebrow{min-width:0;max-width:calc(100% - 154px);overflow-wrap:anywhere}@media(max-width:560px){.close-button.house-return{min-width:130px;font-size:12px;padding-inline:10px}.content-dialog .dialog-bar .eyebrow,.rooms-dialog .dialog-bar .eyebrow{max-width:calc(100% - 142px)}.header-tools>a{font-size:12px;padding:.55rem .65rem}}
