:root{color-scheme:light;--wood:#412417;--wood-deep:#21140e;--rosewood:#62311f;--gold:#b78838;--champagne:#d7b56d;--cream:#f7f2e8;--paper:#fffdf8;--ink:#3c2519;--muted:#75665b;--line:rgba(78,48,30,.16);font-family:"Segoe UI",Arial,sans-serif}*{box-sizing:border-box}html,body{margin:0;min-height:100%;background:#21150f;color:var(--ink)}body{overflow:hidden}button,input{font:inherit}button{color:inherit}.app-shell{height:100dvh;display:grid;grid-template-rows:68px minmax(0,1fr) 30px;background:#1f140e}.topbar{position:relative;z-index:50;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 24px;background:rgba(255,253,248,.97);border-bottom:1px solid rgba(91,56,30,.14);box-shadow:0 4px 22px rgba(53,31,18,.12)}.brand{display:flex;align-items:center;gap:9px;width:max-content;text-decoration:none;color:#8c6027}.brand-mark{display:grid;place-items:center;width:35px;height:35px;border-radius:50%;background:#f2e2bf;font-size:23px;transform:rotate(-20deg)}.brand>span:last-child{display:grid;line-height:1}.brand b{font:700 19px/1 Cambria,"Times New Roman",serif;letter-spacing:.07em}.brand small{margin-top:5px;font-size:8px;letter-spacing:.24em}.page-title{display:flex;align-items:center;gap:17px;font:600 20px/1 Cambria,"Times New Roman",serif;color:#4b2a18}.page-title i{display:block;width:48px;height:1px;background:linear-gradient(90deg,transparent,#c89b4f)}.page-title i:last-child{transform:scaleX(-1)}.top-actions{justify-self:end;display:flex;align-items:center;gap:9px}.presence{display:flex;align-items:center;gap:9px;padding:9px 13px;border-right:1px solid var(--line);font-size:12px;color:#594b41}.presence i,.connection-pill i{width:8px;height:8px;border-radius:50%;background:#3d8c3b;box-shadow:0 0 0 4px rgba(61,140,59,.11)}.header-button{width:39px;height:39px;border:0;border-radius:50%;background:transparent;font-size:19px;cursor:pointer}.header-button:hover{background:#f1e7d4}.more-toggle{display:none}.experience{min-height:0;display:grid;grid-template-columns:minmax(0,1fr) 292px}.temple{position:relative;min-width:0;min-height:0;overflow:hidden;isolation:isolate;background:#bca687}.hall-image{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 50%;z-index:-5}.hall-wash{position:absolute;inset:0;z-index:-4;background:linear-gradient(180deg,rgba(255,250,234,.03),transparent 52%,rgba(40,24,15,.18)),radial-gradient(ellipse at 50% 35%,rgba(255,245,211,.21),transparent 48%)}.sanctuary{position:absolute;z-index:2;left:13%;right:13%;top:8%;height:47%;pointer-events:none;filter:drop-shadow(0 10px 10px rgba(55,30,13,.23))}.triad-image{width:100%;height:100%;object-fit:contain;object-position:center bottom}.deity-names{position:absolute;left:3%;right:3%;bottom:-3px;display:grid;grid-template-columns:1fr 1.22fr 1fr;align-items:end;text-align:center;gap:10px}.deity-names span,.deity-names strong{justify-self:center;padding:4px 9px;border-radius:99px;background:rgba(50,29,18,.68);border:1px solid rgba(240,211,145,.32);color:#fff8e9;font-size:10px;font-weight:500;box-shadow:0 2px 8px rgba(0,0,0,.18);backdrop-filter:blur(7px)}.deity-names strong{font-size:11px;color:#ffe6a8}.incense-haze{position:absolute;z-index:3;left:50%;top:52%;width:50px;height:90px;transform:translateX(-50%);opacity:.28;pointer-events:none}.incense-haze i{position:absolute;bottom:0;width:14px;height:88px;border-radius:50%;border-left:2px solid rgba(255,255,255,.75);filter:blur(2px);animation:smoke 7s ease-in-out infinite}.incense-haze i:nth-child(2){left:17px;animation-delay:-2.3s}.incense-haze i:nth-child(3){left:32px;animation-delay:-4.6s}.seats{position:absolute;inset:0;z-index:8}.seat{--seat-scale:1;position:absolute;width:92px;height:42px;padding:0;border:0;background:transparent;transform:translate(-50%,-50%) scale(var(--seat-scale));cursor:pointer;transition:filter .18s ease,transform .18s ease}.seat:before{content:"";position:absolute;inset:2px 3px 8px;border-radius:50%;background:radial-gradient(ellipse at 50% 36%,#f4ead6 0 42%,#cbb897 67%,#8d765a 100%);border:1px solid rgba(88,63,41,.52);box-shadow:0 7px 0 #8c755b,0 10px 12px rgba(49,31,18,.3),inset 0 3px 5px rgba(255,255,255,.7)}.seat:after{content:"";position:absolute;inset:7px 12px 14px;border-radius:50%;opacity:.55;background:repeating-linear-gradient(16deg,transparent 0 3px,rgba(102,78,51,.17) 4px 5px)}.seat:hover,.seat:focus-visible{filter:brightness(1.06);transform:translate(-50%,-50%) scale(calc(var(--seat-scale) * 1.06));outline:none}.seat.occupied{cursor:not-allowed}.seat.occupied:before{filter:saturate(.72);opacity:.72}.seat.mine:before{border-color:#9b6928;box-shadow:0 0 0 3px rgba(255,249,226,.86),0 0 0 5px #b68437,0 8px 13px rgba(49,31,18,.34)}.seat.reserved:before{opacity:.42}.avatar{--avatar-scale:1;position:absolute;z-index:10;width:118px;height:124px;transform:translate(-50%,-93%) scale(var(--avatar-scale));transform-origin:center bottom;pointer-events:none}.avatar .person{position:absolute;left:50%;bottom:0;width:105px;height:118px;transform:translateX(-50%);background-image:url('/assets/practitioner-poses.webp');background-repeat:no-repeat;background-size:300% 100%;background-position:0 0;filter:drop-shadow(0 7px 6px rgba(48,27,14,.25));transition:background-position .2s ease}.avatar.action-pray .person{background-position:50% 0}.avatar.action-bow .person{background-position:100% 0}.avatar.action-meditate .person{animation:meditate 4.2s ease-in-out infinite}.avatar .name{position:absolute;left:50%;top:-3px;max-width:120px;transform:translate(-50%,-100%);padding:5px 8px;border-radius:99px;background:rgba(52,31,20,.86);border:1px solid rgba(255,232,179,.38);color:#fffaf0;font-size:10px;line-height:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;box-shadow:0 2px 8px rgba(31,18,10,.2)}.avatar.mine .name{background:#fff0c8;color:#5a351c;border-color:#b88638;font-weight:700}.avatar.mine .name:before{content:"Bạn · ";color:#9c6b28}.room-chip{position:absolute;z-index:18;left:18px;top:18px;display:grid;gap:4px;padding:10px 13px;border-radius:10px;background:rgba(255,253,247,.9);border:1px solid rgba(112,76,43,.18);box-shadow:0 5px 16px rgba(50,29,17,.13);backdrop-filter:blur(10px)}.room-chip span{font-size:8px;letter-spacing:.15em;color:#9b6c2d}.room-chip strong{font:600 17px/1.1 Cambria,"Times New Roman",serif}.connection-pill{position:absolute;right:18px;top:18px;z-index:18;display:flex;align-items:center;gap:8px;padding:8px 11px;border-radius:99px;background:rgba(255,253,247,.9);border:1px solid var(--line);font-size:10px;box-shadow:0 4px 15px rgba(49,30,16,.12)}.connection-pill.offline i{background:#b55145;box-shadow:0 0 0 4px rgba(181,81,69,.1)}.empty-hint{position:absolute;z-index:17;left:50%;bottom:2%;transform:translateX(-50%);padding:8px 13px;border-radius:99px;background:rgba(53,31,19,.78);border:1px solid rgba(255,236,194,.3);color:#fff9ea;font-size:11px;white-space:nowrap;transition:opacity .2s ease}.practice-panel{position:relative;z-index:30;min-width:0;padding:22px 16px 16px;background:linear-gradient(180deg,#fffdf8,#f5eee1);border-left:1px solid var(--line);box-shadow:-8px 0 24px rgba(48,28,15,.09);overflow:auto}.panel-heading{padding:0 4px 16px;border-bottom:1px solid var(--line)}.panel-heading>div>small{font-size:8px;letter-spacing:.2em;color:#a27534}.panel-heading h1{margin:6px 0 2px;font:600 25px/1.1 Cambria,"Times New Roman",serif}.panel-heading p{margin:0;color:var(--muted);font-size:12px}.panel-heading>span{display:inline-block;margin-top:11px;padding:5px 8px;border-radius:6px;background:#eee4d3;color:#775c41;font-size:9px}.action-grid{display:grid;gap:8px;padding:14px 0}.action{display:grid;grid-template-columns:44px 1fr;align-items:center;gap:10px;text-align:left;padding:10px;border:1px solid var(--line);border-radius:12px;background:rgba(255,255,255,.54);cursor:pointer;transition:.18s ease}.action:hover{border-color:#c6a266;transform:translateY(-1px)}.action.active{border-color:#c08b34;background:#fff5dc;box-shadow:inset 3px 0 #b77c25}.action-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:11px;background:#f2e5cb;color:#8f5f21;font:700 21px Cambria,serif}.action>span:last-child{display:grid;gap:3px}.action b{font:600 14px Cambria,"Times New Roman",serif}.action small{font-size:9px;color:#7c6c5f}.tools-drawer{padding-top:13px;border-top:1px solid var(--line)}.drawer-handle,.drawer-title{display:none}.instrument-grid{display:grid;grid-template-columns:1fr 1fr;gap:7px}.instrument-grid button{display:grid;grid-template-columns:28px 1fr;align-items:center;text-align:left;padding:8px;border:1px solid var(--line);border-radius:10px;background:#fffaf0;cursor:pointer}.instrument-grid button>span{grid-row:1/3;width:25px;height:25px;display:grid;place-items:center;color:#98661f}.instrument-grid b{font:600 11px Cambria,serif}.instrument-grid small{font-size:8px;color:#8a796b}.volume-control{display:grid;gap:8px;margin:14px 3px}.volume-control>span{display:flex;justify-content:space-between;font-size:10px}.volume-control output{color:#8e724d}.volume-control input{width:100%;accent-color:#b47e2f}.drawer-toggles{display:grid;grid-template-columns:1fr 1fr;gap:7px}.drawer-toggles button{border:1px solid var(--line);border-radius:9px;background:#fffaf1;padding:9px;font-size:10px;cursor:pointer}.drawer-toggles button[aria-pressed="true"]{border-color:#b8863a;background:#fff1cf}.change-room{width:100%;margin-top:10px;display:grid;grid-template-columns:26px 1fr auto;align-items:center;text-align:left;border:0;border-radius:10px;padding:11px;background:#ead9b8;cursor:pointer}.change-room b{font:600 13px Cambria,serif}.change-room i{font-style:normal}footer{display:flex;align-items:center;justify-content:space-between;padding:0 22px;background:#f7f1e6;color:#7b6e64;border-top:1px solid var(--line);font-size:9px}.asset-loader{position:fixed;inset:0;z-index:200;display:grid;place-content:center;justify-items:center;gap:10px;background:#f7f2e8;color:#5e3a23;transition:opacity .45s ease,visibility .45s ease}.asset-loader.done{opacity:0;visibility:hidden}.asset-loader b{font:600 20px Cambria,serif}.asset-loader span{font-size:11px;color:#8b7767}.loader-lotus{position:relative;width:60px;height:42px}.loader-lotus i{position:absolute;left:20px;bottom:0;width:22px;height:35px;border-radius:80% 10% 80% 10%;background:#c49a4a;transform:rotate(45deg);animation:lotusPulse 1.4s ease-in-out infinite}.loader-lotus i:first-child{left:7px;transform:rotate(14deg);animation-delay:-.3s}.loader-lotus i:last-child{left:33px;transform:rotate(76deg);animation-delay:-.6s}.welcome-dialog{width:min(860px,calc(100vw - 24px));max-height:calc(100dvh - 24px);padding:0;border:1px solid #d6c09b;border-radius:18px;background:#fffdf8;color:var(--ink);box-shadow:0 30px 100px rgba(33,19,11,.45);overflow:hidden}.welcome-dialog::backdrop{background:rgba(34,21,14,.72);backdrop-filter:blur(8px)}.welcome-dialog[open]{display:grid;grid-template-columns:37% 63%}.welcome-art{min-height:540px;display:grid;place-content:center;justify-items:center;gap:35px;text-align:center;background:linear-gradient(rgba(73,43,25,.2),rgba(41,23,14,.5)),url('/assets/main-hall.webp') center/cover;color:#fff7e7}.welcome-symbol{display:grid;place-items:center;width:100px;height:100px;border:1px solid rgba(255,237,192,.7);border-radius:50%;background:rgba(66,38,21,.4);font-size:60px;color:#e8c77e;transform:rotate(-20deg)}.welcome-art p{font:italic 15px/1.8 Cambria,serif;text-shadow:0 2px 10px #2d190e}.welcome-content{padding:36px 42px}.stepper{display:flex;gap:7px;margin-bottom:28px}.stepper i{width:22px;height:3px;border-radius:9px;background:#ded4c3}.stepper i.active{background:#b7873b}.onboard-step{display:none}.onboard-step.active{display:block;animation:fadeUp .3s ease}.onboard-step>small{font-size:9px;letter-spacing:.2em;color:#9d7133}.onboard-step h2{margin:10px 0 13px;font:600 clamp(28px,4vw,41px)/1.08 Cambria,"Times New Roman",serif}.onboard-step>p{max-width:48ch;color:#77695e;font-size:13px;line-height:1.65}.onboard-step ul{list-style:none;padding:0;margin:22px 0}.onboard-step li{display:flex;align-items:center;gap:11px;padding:9px 0;border-bottom:1px solid var(--line);font-size:12px}.onboard-step li span{width:25px;height:25px;display:grid;place-items:center;border-radius:50%;background:#efe1c5;color:#946727}.primary{width:100%;margin-top:15px;padding:13px 17px;border:1px solid #b98230;border-radius:9px;background:linear-gradient(135deg,#d7b66d,#b77b28);color:#2f1b10;font-weight:700;cursor:pointer}.primary b{float:right}.preference-row{display:flex;justify-content:space-between;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}.preference-row span{display:grid;gap:4px}.preference-row b{font:600 14px Cambria,serif}.preference-row small{color:#83756a;font-size:10px}.preference-row button{padding:6px 12px;border:1px solid #c5a56f;border-radius:99px;background:#fff8e9;font-size:10px;cursor:pointer}#joinForm label{position:relative;display:grid;gap:7px;color:#6f6054;font-size:10px}#joinForm input{width:100%;padding:13px 62px 13px 12px;border:1px solid #cfbea4;border-radius:8px;background:#fff;color:#3d281c;outline:none}#joinForm input:focus{border-color:#b58438;box-shadow:0 0 0 3px rgba(181,132,56,.12)}#joinForm label em{position:absolute;right:12px;bottom:14px;color:#9b8d80;font-size:9px;font-style:normal}fieldset{margin:18px 0 0;padding:0;border:0}legend{margin-bottom:8px;font-size:10px;color:#6f6054}.room-choices{display:grid;gap:7px}.room-choice{display:flex;align-items:center;gap:10px;padding:9px;border:1px solid var(--line);border-radius:8px;background:#fffaf1;cursor:pointer}.room-choice input{width:auto!important}.room-choice span{display:grid;font:600 12px Cambria,serif}.room-choice small{margin-top:2px;color:#8c7c6f;font:9px "Segoe UI",sans-serif}.form-error{min-height:17px!important;margin:8px 0 0!important;color:#b94d42!important;font-size:10px!important}.toast{position:fixed;left:50%;bottom:44px;z-index:150;max-width:90%;padding:10px 15px;border-radius:9px;background:#4a2c1c;color:#fff8e9;border:1px solid #c7994c;box-shadow:0 10px 35px rgba(37,20,11,.32);font-size:11px;opacity:0;pointer-events:none;transform:translate(-50%,16px);transition:.22s ease}.toast.show{opacity:1;transform:translate(-50%,0)}body.reduce-motion *,body.reduce-motion *:before,body.reduce-motion *:after{animation:none!important;transition:none!important}
@keyframes smoke{0%{opacity:0;transform:translate(0,10px) rotate(3deg)}35%{opacity:.8}100%{opacity:0;transform:translate(11px,-28px) rotate(-12deg)}}@keyframes meditate{50%{transform:translateX(-50%) translateY(2px)}}@keyframes lotusPulse{50%{filter:brightness(1.2);opacity:.75}}@keyframes fadeUp{from{opacity:0;transform:translateY(7px)}}
@media(max-width:1020px) and (min-width:761px) and (orientation:landscape){.experience{grid-template-columns:minmax(0,1fr) 250px}.topbar{padding:0 15px}.page-title{font-size:18px}.presence span{max-width:100px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.practice-panel{padding:16px 12px}.sanctuary{left:8%;right:8%}.action{padding:8px}.action small{display:none}}
@media(max-width:1200px) and (orientation:portrait){body{overflow:hidden}.app-shell{grid-template-rows:64px minmax(0,1fr)}.topbar{padding:0 20px}.page-title{font-size:18px}.page-title i{width:28px}.desktop-setting{display:none}.more-toggle{display:grid;place-items:center}.experience{display:block}.temple{height:calc(100dvh - 168px)}.practice-panel{position:fixed;left:0;right:0;bottom:0;z-index:60;height:104px;padding:8px 16px max(8px,env(safe-area-inset-bottom));overflow:visible;border:0;border-top:1px solid #d0b992;box-shadow:0 -10px 30px rgba(47,28,16,.15)}.panel-heading{display:none}.action-grid{height:100%;display:grid;grid-template-columns:repeat(3,1fr);gap:9px;padding:0}.action{grid-template-columns:50px 1fr;padding:9px 14px}.action-icon{width:45px;height:45px}.tools-drawer{display:none;position:fixed;left:0;right:0;bottom:104px;z-index:70;padding:12px 22px 20px;background:#fffdf8;border-top:1px solid #d1b88c;border-radius:20px 20px 0 0;box-shadow:0 -18px 55px rgba(40,23,13,.25)}body.tools-open .tools-drawer{display:block}.drawer-handle{display:block;width:45px;height:4px;margin:0 auto 12px;border-radius:9px;background:#d8ccbb}.drawer-title{display:flex;align-items:center;justify-content:space-between;margin-bottom:13px}.drawer-title b{font:600 17px Cambria,serif}.drawer-title button{width:32px;height:32px;border:0;border-radius:50%;background:#eee3d3;font-size:20px}.instrument-grid button{padding:12px}.volume-control{margin:17px 3px}.change-room{margin-top:12px;padding:13px}footer{display:none}.sanctuary{left:8%;right:8%;top:7%;height:45%}.deity-names span,.deity-names strong{font-size:10px}.empty-hint{bottom:2%}}
@media(max-width:760px){.app-shell{grid-template-rows:56px minmax(0,1fr)}.topbar{grid-template-columns:auto 1fr auto;padding:0 10px}.brand-mark{width:30px;height:30px;font-size:19px}.brand b{font-size:15px}.brand small{display:none}.page-title{justify-self:center;font-size:16px}.page-title i{display:none}.presence{padding:6px;border:0}.presence span{font-size:0}.presence span:after{content:"Hiện diện";font-size:9px}.header-button{width:34px;height:34px}.experience{display:block}.temple{height:calc(100dvh - 132px)}.room-chip{left:8px;top:8px;padding:7px 9px}.room-chip span{display:none}.room-chip strong{font-size:14px}.connection-pill{right:8px;top:8px;padding:7px 8px}.connection-pill span{font-size:0}.connection-pill span:after{content:"Kết nối";font-size:9px}.sanctuary{left:1%;right:1%;top:9%;height:43%}.deity-names{left:0;right:0;gap:2px}.deity-names span,.deity-names strong{padding:3px 5px;font-size:8px}.deity-names strong{font-size:9px}.incense-haze{top:48%}.seat{width:67px;height:32px}.avatar{width:90px;height:96px}.avatar .person{width:84px;height:94px}.avatar .name{top:3px;max-width:82px;padding:4px 6px;font-size:8px}.empty-hint{bottom:1%;font-size:9px}.practice-panel{height:76px;padding:5px 6px max(5px,env(safe-area-inset-bottom))}.action-grid{gap:4px}.action{display:grid;grid-template-columns:1fr;place-items:center;gap:1px;padding:3px;text-align:center;border-radius:9px}.action-icon{width:27px;height:27px;border-radius:8px;font-size:16px}.action b{font-size:11px}.action small{display:none}.tools-drawer{bottom:76px;padding:10px 14px 16px}.welcome-dialog[open]{display:block;overflow:auto}.welcome-art{display:none}.welcome-content{padding:25px 20px}.onboard-step h2{font-size:29px}.toast{bottom:90px}}
@media(max-width:390px){.brand>span:last-child{display:none}.page-title{font-size:15px}.presence{gap:6px}.sanctuary{top:11%;height:40%}.deity-names span,.deity-names strong{max-width:94px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.room-chip strong{font-size:13px}}

/* Reference-aligned v3: replace the procedural disc with an independent woven cushion asset. */
.seat{width:108px;height:48px}
.seat:before{inset:-16px -12px -8px;border:0;border-radius:0;background:url('/assets/meditation-cushion.webp') center/contain no-repeat;box-shadow:none;filter:drop-shadow(0 7px 6px rgba(49,31,18,.28))}
.seat:after{inset:5px 7px 7px;border:0;border-radius:50%;background:none;opacity:1;box-shadow:none}
.seat.occupied:before{opacity:.78;filter:saturate(.72) drop-shadow(0 7px 6px rgba(49,31,18,.26))}
.seat.mine:before{border:0;box-shadow:none;filter:drop-shadow(0 0 2px #fff7dd) drop-shadow(0 0 5px #b68437) drop-shadow(0 7px 6px rgba(49,31,18,.28))}
.seat.mine:after{inset:6px 8px 8px;border:2px solid rgba(151,101,33,.9);box-shadow:0 0 0 3px rgba(255,249,226,.75)}
.seat.reserved:before{opacity:.48}

@media(min-width:1201px){.room-chip{top:auto;bottom:18px}}
@media(max-width:760px){.seat{width:78px;height:35px}}

/* v4: one authoritative world plane for seats, people and walking. */
.floor-viewport{position:absolute;z-index:7;left:0;right:0;top:64%;bottom:0;overflow:hidden;touch-action:none;cursor:crosshair}
.hall-image,.hall-wash,.sanctuary,.incense-haze{pointer-events:none}.asset-loader.done{pointer-events:none}
.floor-grid{position:absolute;inset:0;pointer-events:none;opacity:.18;background:linear-gradient(90deg,transparent 0 6%,rgba(255,245,220,.34) 6% 11%,transparent 11% 46%,rgba(255,245,220,.28) 46% 54%,transparent 54% 89%,rgba(255,245,220,.34) 89% 94%,transparent 94%),repeating-linear-gradient(180deg,transparent 0 44px,rgba(91,61,35,.16) 45px 46px)}
.floor-viewport .seats{position:absolute;inset:0;z-index:2}
.floor-viewport .seat{--depth-scale:1;position:absolute;width:92px;height:44px;transform:translate(-50%,-50%) scale(var(--depth-scale));transform-origin:center center}
.floor-viewport .seat:before{inset:-14px -10px -7px}
.floor-viewport .seat:hover,.floor-viewport .seat:focus-visible{transform:translate(-50%,-50%) scale(calc(var(--depth-scale) * 1.06))}
.floor-viewport .avatar{--depth-scale:1;position:absolute;width:100px;height:175px;padding:0;border:0;background:transparent;overflow:visible;transform:translate(-50%,-96%) scale(var(--depth-scale));transform-origin:center bottom;pointer-events:auto;cursor:pointer}
.floor-viewport .avatar .person{position:absolute;left:50%;bottom:0;width:100px;height:175px;transform:translateX(-50%);background-repeat:no-repeat;background-size:600% 200%;filter:drop-shadow(0 5px 4px rgba(48,27,14,.24));animation:none}
.floor-viewport .avatar.female .person{background-image:url('/assets/practitioner-female-v3.webp')}
.floor-viewport .avatar.male .person{background-image:url('/assets/practitioner-male-v3.webp')}
.floor-viewport .avatar.action-meditate .person{background-position:0 0;animation:meditate 4.2s ease-in-out infinite}
.floor-viewport .avatar.action-pray .person{background-position:20% 0}
.floor-viewport .avatar.action-bow .person{background-position:40% 0;animation:bowCycle 4.8s steps(1,end) infinite}
.floor-viewport .avatar.action-incense .person{background-position:100% 0}
.floor-viewport .avatar.action-idle .person{background-position:0 100%}
.floor-viewport .avatar.action-walk-up .person{background-position:20% 100%;animation:walkUp .72s steps(1,end) infinite}
.floor-viewport .avatar.action-walk-down .person{background-position:60% 100%;animation:walkBob .72s ease-in-out infinite}
.floor-viewport .avatar.action-walk-left .person{background-position:80% 100%;animation:walkBob .72s ease-in-out infinite}
.floor-viewport .avatar.action-walk-right .person{background-position:100% 100%;animation:walkBob .72s ease-in-out infinite}
.contact-shadow{position:absolute;left:50%;bottom:1px;width:52px;height:13px;transform:translateX(-50%);border-radius:50%;background:rgba(43,27,17,.3);filter:blur(3px)}
.floor-viewport .avatar .name{top:-2px;pointer-events:none}
.floor-viewport .avatar.mine:after{content:"";position:absolute;left:50%;bottom:-5px;width:58px;height:18px;transform:translateX(-50%);border:2px solid rgba(255,240,190,.9);border-radius:50%;box-shadow:0 0 0 2px rgba(174,117,38,.65)}
@keyframes bowCycle{0%,15%,100%{background-position:20% 0}28%{background-position:40% 0}44%{background-position:60% 0}60%,72%{background-position:80% 0}84%{background-position:40% 0}}
@keyframes walkUp{0%,49%{background-position:20% 100%}50%,100%{background-position:40% 100%}}
@keyframes walkBob{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-3px)}}
.camera-controls{position:absolute;z-index:25;right:308px;bottom:16px;display:flex;gap:5px;padding:5px;border-radius:12px;background:rgba(255,253,247,.9);box-shadow:0 5px 18px rgba(45,27,16,.18);backdrop-filter:blur(8px)}
.camera-controls button{min-width:32px;height:32px;border:1px solid var(--line);border-radius:8px;background:#fffaf0;cursor:pointer;font-size:12px}.camera-controls button:last-child{padding:0 10px}
.action-grid{grid-template-columns:1fr 1fr}.action{min-width:0}.incense-action{grid-column:1/-1}
.audio-mixer{display:grid;gap:10px;margin:13px 3px;padding:12px;border:1px solid var(--line);border-radius:11px;background:rgba(255,255,255,.5)}
.audio-mixer label{display:grid;gap:5px}.audio-mixer label>span{display:flex;justify-content:space-between;font-size:10px}.audio-mixer input{width:100%;accent-color:#b47e2f}.track-toggles{display:grid;grid-template-columns:1fr 1fr;gap:6px}.track-toggles button{padding:8px;border:1px solid var(--line);border-radius:8px;background:#fffaf1;font-size:10px}.track-toggles button[aria-pressed="true"]{border-color:#b8863a;background:#fff1cf}
.avatar-settings{display:flex;align-items:center;justify-content:space-between;margin-top:10px;padding:10px;border:1px solid var(--line);border-radius:9px;font-size:10px}.avatar-settings div{display:flex;gap:5px}.avatar-settings button{padding:6px 10px;border:1px solid #cdb58b;border-radius:7px;background:#fffaf1}
.avatar-choices{display:grid;grid-template-columns:1fr 1fr;gap:8px}.avatar-choices label{position:relative;display:grid;grid-template-columns:48px 1fr;align-items:center;gap:8px;padding:8px;border:1px solid var(--line);border-radius:10px;background:#fffaf1;cursor:pointer}.avatar-choices input{position:absolute;opacity:0}.avatar-choices label:has(input:checked){border-color:#b88638;box-shadow:inset 3px 0 #b88638}.avatar-preview{width:44px;height:77px;background-size:600% 200%;background-position:0 100%;background-repeat:no-repeat}.avatar-preview.female{background-image:url('/assets/practitioner-female-v3.webp')}.avatar-preview.male{background-image:url('/assets/practitioner-male-v3.webp')}
body.reduce-motion .floor-viewport .avatar .person{animation:none!important}body.reduce-motion .floor-viewport .avatar.action-bow .person{background-position:60% 0}

@media(max-width:1200px) and (orientation:portrait){.floor-viewport{top:67%}.camera-controls{right:12px;bottom:116px}.action-grid{grid-template-columns:repeat(4,1fr)}.incense-action{grid-column:auto}.practice-panel{height:104px}}
@media(max-width:760px){.floor-viewport{top:65%}.camera-controls{right:7px;bottom:84px;padding:3px}.camera-controls button{min-width:27px;height:29px}.camera-controls button:last-child{font-size:0;width:31px;padding:0}.camera-controls button:last-child:after{content:"◎";font-size:15px}.practice-panel{height:76px}.action-grid{grid-template-columns:repeat(4,1fr)}.action{padding:2px}.action b{font-size:9px}.action-icon{width:25px;height:25px}.tools-drawer{bottom:76px}.floor-viewport .seat{width:70px;height:33px}.floor-viewport .avatar{width:82px;height:144px}.floor-viewport .avatar .person{width:82px;height:144px}.floor-viewport .avatar:not(.mine) .name{display:none}.floor-viewport .avatar.show-name .name{display:block}.floor-viewport .avatar.mine .name{display:block}.audio-mixer{margin:10px 0;padding:9px}}
.seat:hover,.seat:focus-visible{transform:translate(-50%,-50%) scale(var(--seat-scale));filter:brightness(1.08)}
@media(max-width:760px){.presence span:after{content:attr(data-short)}}
