:root{--ink:#28342e;--accent:#345847;--paper:#f7f6f1;--muted:#788078}*{box-sizing:border-box}html,body{height:100%}body{margin:0;overflow:hidden;color:var(--ink);font-family:'Noto Sans KR',sans-serif;background:#dedbd2}button,input,select,textarea{font:inherit}button{color:inherit;cursor:pointer;border:0;background:none}button:focus-visible,input:focus-visible{outline:2px solid #79a094;outline-offset:2px}#view{position:fixed;inset:0;touch-action:none}#view canvas{display:block;width:100%;height:100%}.mainHeader{position:fixed;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;padding:24px 30px;pointer-events:none;background:none}.mainHeader>*{pointer-events:auto}.brand{font-size:20px;font-weight:700;letter-spacing:1.8px}.brand b{color:#668775;font-weight:600}.brand small{display:block;font-weight:400;font-size:8px;letter-spacing:2px;color:#777;margin-top:5px}.headerRight{display:flex;align-items:center;gap:8px}.headerRight span{background:#f9f8f4d9;padding:10px 12px;border-radius:6px;font-size:11px}.primary{background:var(--accent);color:#fff;border-radius:6px;padding:11px 15px;font-size:12px}.secondary{border:1px solid #bbc3bc;background:#f8f7f1ee;color:#35483b;border-radius:6px;padding:10px 14px;font-size:12px}.intro{position:fixed;top:140px;left:35px;pointer-events:none;transition:opacity .7s}.intro h1{font-size:44px;letter-spacing:-2px;font-weight:500;margin:10px 0}.intro p{font-size:12px;color:#58665d}.eyebrow{font-size:9px;letter-spacing:2px;color:#63786c}.tag{display:inline-block;font-size:10px;margin-top:17px;background:#f7f5eeb8;padding:9px 12px;border-radius:5px}body.moved .intro{opacity:0}#hint{position:fixed;bottom:103px;left:50%;transform:translateX(-50%);background:#f7f6f0dd;border-radius:25px;padding:10px 18px;font-size:11px;white-space:nowrap}#mapPanel{position:fixed;right:24px;top:122px;width:174px;padding:13px;background:#f7f6f0ea;border:1px solid #ffffffa8;border-radius:9px;box-shadow:0 8px 38px #24332d14}.mapTitle{display:flex;justify-content:space-between;align-items:center;font-size:9px;letter-spacing:2px}.mapTitle button{font-size:18px}#map{margin-top:8px;width:100%;max-height:205px;cursor:crosshair}#mapPanel p{margin:3px 0;font-size:9px;text-align:center;color:#869187}footer{position:fixed;bottom:0;left:0;right:0;padding:18px 26px 23px;display:flex;justify-content:space-between;align-items:end;pointer-events:none;background:linear-gradient(transparent,#f0eee7d8)}footer>*{pointer-events:auto}.location span{font-size:9px;color:#717a72;display:block;letter-spacing:1.5px}.location strong{display:block;font-size:15px;font-weight:500;margin-top:7px}.tourControls{position:absolute;left:50%;transform:translateX(-50%);display:flex;background:#f7f6f1;border-radius:8px;padding:5px;box-shadow:0 3px 25px #20332822}.tourControls button{padding:10px 14px;font-size:18px}.tourControls #tour{font-size:12px;min-width:160px;border-inline:1px solid #dde2da}.utilities{display:flex;gap:8px}.utilities button{background:#f7f6f1bb;border-radius:6px;padding:7px 12px;font-size:24px}#walkControls{position:fixed;right:30px;bottom:113px;text-align:center}#walkControls button{background:#f7f6f1c7;border:1px solid #fff8;border-radius:5px;width:34px;height:32px;margin:1px;touch-action:none}#toast{position:fixed;left:50%;bottom:166px;transform:translateX(-50%);background:#253d32e8;color:#fff;font-size:12px;padding:11px 18px;border-radius:7px;opacity:0;pointer-events:none;transition:opacity .3s;z-index:70;max-width:90vw;text-align:center}#workHint{position:fixed;bottom:160px;left:50%;transform:translateX(-50%)}#workHint button{border-radius:30px;background:#f4f4ed;padding:9px 17px;font-size:12px}#loading{position:fixed;inset:0;background:#eae8e1;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:90;transition:opacity .4s}#loading strong{font-size:28px;letter-spacing:3px}#loading strong span{color:#628171}#loading p{font-size:12px;color:#777}
#editorShade{display:none;position:fixed;inset:0;background:#0c1c1880;z-index:35}#editor{position:fixed;top:0;right:0;bottom:0;width:370px;max-width:100%;background:#fafaf7;transform:translateX(103%);transition:transform .25s;z-index:40;box-shadow:-10px 0 55px #14211926;display:flex;flex-direction:column}body.editing #editor{transform:translateX(0)}body.editing #editorShade{display:none}body.editing #mapPanel{right:398px}body.editing footer{right:370px}body.editing .mainHeader{right:370px}body.editing #walkControls{right:391px}body.editing .intro{opacity:0}.editorHead{padding:22px 21px 18px;display:flex;align-items:center;justify-content:space-between;background:#244537;color:#f5f8f3}.editorHead strong{font-size:17px;letter-spacing:1px}.editorHead small{display:block;font-size:9px;color:#a7c1b1;letter-spacing:1.7px;margin-top:4px}.editorHead button{font-size:29px;color:#fff}.editorTabs{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));border-bottom:1px solid #e2e6e0}.editorTabs button{padding:14px 2px;font-size:11px;color:#718278}.editorTabs button.active{color:#244c37;border-bottom:3px solid #365c43;font-weight:700}.editorBody{flex:1;overflow-y:auto;padding:20px}.tabPane{display:none}.tabPane.active{display:block}.tabPane h2{font-size:15px;font-weight:700;margin:8px 0}.tabPane h2 small{color:#7e8c80;font-size:9px;margin-left:6px}.guide{font-size:11px;line-height:1.7;color:#758078;margin:10px 0 15px}.presetCards{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:14px 0 28px}.layoutCard{border:1px solid #e0e5df;background:#fff;border-radius:9px;padding:9px;display:flex;flex-direction:column;gap:5px;align-items:start;text-align:left}.layoutCard svg{width:100%;height:73px;background:#eeefe9;border-radius:5px}.layoutCard b{font-size:12px;font-weight:600}.layoutCard small{font-size:10px;color:#809084}.layoutCard.active,.themeCard.active{border-color:#3a6c50;box-shadow:0 0 0 1px #3a6c50}.themeCards{display:grid;grid-template-columns:repeat(5,1fr);gap:5px;margin:17px 0 22px}.themeCard{border:1px solid #e3e6df;border-radius:7px;background:#fff;padding:5px;display:flex;align-items:center;flex-direction:column;gap:6px}.themeCard .swatch{width:100%;height:35px;border-radius:4px;border:1px solid #0001}.themeCard small{font-size:9px;color:#68766e;white-space:nowrap}.editorLabel{display:block;font-size:11px;font-weight:500;margin:17px 0}.editorLabel output{float:right}.editorLabel input[type=text],.editorLabel input[type=number],.fields input,.fields textarea,.fields select{display:block;width:100%;margin-top:7px;padding:11px;border:1px solid #dde1d8;border-radius:6px;background:#fff;font-size:12px}.editorLabel input[type=range]{display:block;width:100%;margin-top:10px;accent-color:var(--accent)}.subtle{background:#ecefe8;color:#39513d;border-radius:6px;padding:11px 13px;font-size:11px}.full{width:100%;margin-top:13px}.danger{background:#a9433e;color:#fff;border-radius:6px;padding:11px 12px;font-size:11px}.tools{display:flex;gap:6px;margin:12px 0}.tools button{border:1px solid #d9dfd8;border-radius:5px;padding:9px 8px;font-size:11px;background:#fff}.tools button.active{background:#355a45;color:#fff}#editMap{width:100%;height:290px;background:#ebeee9;border-radius:7px;touch-action:none;cursor:crosshair;display:block}#editMap .e-wall{cursor:pointer}#editMap .e-wall:hover{stroke:#b57d36!important}.fields{display:grid;gap:12px;margin:15px 0}.fields label{font-size:11px;color:#5d6a60}.fields input,.fields textarea,.fields select{color:#25382a}.fields input[type=file]{font-size:10px;padding:8px}.fields textarea{resize:vertical}.actionLine{display:flex;gap:10px}.actionLine button{flex:1}.tabPane h3{font-size:12px}.workList{display:grid;gap:6px}.workList button{text-align:left;border:1px solid #e5e8e2;border-radius:6px;background:#fff;padding:10px;font-size:11px}.workList button.active{background:#e6efe7;border-color:#669778}.workList .index{color:#879c89;font-size:9px;margin-right:8px}.smallNote{font-size:10px;line-height:1.8;color:#79867d}.statGrid{display:flex;justify-content:space-between;background:#eaf0e9;padding:16px 12px;border-radius:7px;font-size:11px;margin:16px 0}.statGrid b{display:block;font-size:16px;color:#31523b;margin-top:6px}.fileDrop{display:block;background:#eff1e9;border:1px dashed #9ca99e;padding:14px;border-radius:6px;text-align:center;font-size:12px;margin-top:15px;cursor:pointer}
dialog{border:0;border-radius:10px;max-width:90vw;max-height:88dvh;background:#f8f7f2;padding:0;box-shadow:0 20px 90px #09150f8c;overflow:auto;color:#28342e}dialog::backdrop{background:#091b18b7}#artDialog{width:830px}.close{position:absolute;top:12px;right:12px;width:36px;height:36px;background:#f3f2e8e8;border-radius:50%;font-size:26px;z-index:2}#media{min-height:220px;background:#18211a;display:flex;align-items:center;justify-content:center}#media img,#media video{max-width:100%;max-height:55dvh;object-fit:contain}#media canvas{max-width:100%}.detail{padding:25px}.detail h2{font-weight:500;font-size:25px}.detail p{font-size:12px;line-height:1.8;color:#667467}.detailActions{display:flex;gap:12px}#helpDialog{width:460px;padding:30px}#helpDialog p{line-height:1.9;font-size:12px}
@media(max-width:870px){.mainHeader{padding:16px;align-items:start}.brand{font-size:14px}.brand small{font-size:7px}.headerRight{gap:5px}.headerRight span{display:none}.headerRight button{font-size:10px;padding:8px}.intro{top:123px;left:19px}.intro h1{font-size:28px}#mapPanel{top:120px;right:12px;width:126px;padding:8px}#map{max-height:160px}footer{padding:13px}.location{position:fixed;left:15px;bottom:92px}.tourControls{position:static;transform:none;margin-right:4px}.tourControls button{padding:9px}.tourControls #tour{min-width:96px;font-size:9px}.utilities button{font-size:18px;padding:8px}.location strong{font-size:11px}#walkControls{right:10px;bottom:99px}#walkControls button{width:30px;height:26px}#hint{bottom:148px;font-size:9px;padding:8px}body.editing #editorShade{display:block}body.editing #mapPanel{right:12px}body.editing footer{right:0}body.editing .mainHeader{right:0}body.editing #walkControls{right:10px}#editor{width:min(370px,94vw)}}
@media(prefers-reduced-motion:reduce){*{transition:none!important}}

/* Studio v0.3 architectural editor */
.studioSelect{display:block;width:100%;padding:12px;background:#fff;border:1px solid #dce2db;border-radius:7px;margin-top:7px;font-size:11px;color:#314439}.interiorToggles{display:grid;gap:7px;margin:10px 0 23px}.interiorToggles label{display:flex;gap:10px;align-items:center;border:1px solid #e1e6dc;background:#fff;border-radius:7px;padding:11px;cursor:pointer}.interiorToggles label input{width:16px;height:16px;accent-color:#3c6650;flex:none}.interiorToggles b{display:block;font-size:11px}.interiorToggles small{display:block;font-size:9px;color:#839086;margin-top:4px;line-height:1.4}

/* v0.4: keep the architecture visible behind compact controls. */
.mainHeader{background:none}footer{background:none}.location{background:#f7f6f1de;padding:10px 14px;border-radius:8px}.tourControls,#mapPanel{background:#f7f6f1ed}body.moved #hint{opacity:.75}

/* SPACEGO ENTRANCE LOBBY — v0.6.0 */
.editorTabs{grid-template-columns:repeat(5,minmax(0,1fr))}.editorTabs button{font-size:10px}
#lobbyArrival{position:fixed;left:30px;top:30%;width:min(330px,calc(100vw - 210px));padding:23px 23px 18px;background:#f7f6f1ef;border:1px solid #fff9;border-radius:12px;box-shadow:0 12px 54px #1d302527;z-index:9;pointer-events:auto;opacity:0;transform:translateY(9px);transition:opacity .35s,transform .35s;pointer-events:none}
#lobbyArrival.visible{opacity:1;transform:none;pointer-events:auto}
#lobbyArrival[hidden],#lobbyAccess[hidden]{display:none!important}
.lobbyEyebrow{display:block;letter-spacing:2px;font-size:9px;color:#6b826f}
#lobbyArrival h2{font-size:30px;letter-spacing:-1.3px;font-weight:550;margin:16px 0 7px}
#lobbyArrival p{font-size:12px;line-height:1.6;color:#728072;margin:0 0 12px}
#lobbyArrival small{color:#778475;font-size:10px}.lobbyActions{display:flex;flex-wrap:wrap;gap:6px;margin-top:18px}
.lobbyActions button{font-size:10px;padding:9px 12px}
#lobbyAccess{position:fixed;left:24px;bottom:113px;z-index:11}#lobbyAccess button{background:#f7f6f0e9;border:1px solid #ffffff90;border-radius:7px;padding:11px 14px;font-size:11px;box-shadow:0 5px 20px #24332d18}
.lobbyChecks{display:grid;gap:9px;margin:12px 0 19px}.lobbyChecks label{display:flex;align-items:center;gap:9px;font-size:11px;background:#eef1eb;border-radius:7px;padding:10px}.lobbyChecks input{accent-color:#365c43}
.lobbyDimensions{display:grid;grid-template-columns:1fr 1fr;gap:12px}.lobbyUploads{display:grid;gap:11px;margin:16px 0}.lobbyUploads label{display:grid;gap:7px;font-size:11px;padding:12px;background:#f0f2ed;border-radius:7px}.lobbyUploads input{font-size:10px;max-width:100%}.lobbyUploads small{font-size:10px;color:#627366;overflow:hidden;text-overflow:ellipsis}
#lobbyDialog{width:min(1000px,92vw)}.lobbyDialogGrid{display:grid;grid-template-columns:minmax(225px,42%) 1fr;min-height:430px}.lobbyDialogVisual{background:#e8e3da;display:flex;align-items:center;justify-content:center;min-height:400px}.lobbyDialogVisual img,.lobbyDialogVisual video{max-width:100%;max-height:76dvh;object-fit:contain}.lobbyDialogCopy{padding:55px 32px 35px;display:flex;flex-direction:column;justify-content:center}.lobbyDialogCopy h2{font-size:30px;font-weight:550;margin:16px 0 4px}.lobbyDialogCopy h3{font-size:15px;font-weight:400;color:#788777}.lobbyDialogCopy p{font-size:12px;line-height:1.85;color:#5c6f60}.lobbyGuide{border-top:1px solid #dbe2d8;padding:16px 0}.lobbyGuide strong{font-size:11px}.lobbyDialogCopy .primary{align-self:flex-start}
@media(max-width:870px){#lobbyArrival{left:12px;top:auto;bottom:155px;width:min(265px,calc(100vw - 160px));padding:16px}#lobbyArrival h2{font-size:23px}#lobbyAccess{left:12px;bottom:113px}.lobbyActions button{padding:8px}.lobbyDialogGrid{grid-template-columns:1fr}.lobbyDialogVisual{min-height:150px;max-height:32dvh}.lobbyDialogVisual img,.lobbyDialogVisual video{max-height:32dvh}.lobbyDialogCopy{padding:22px}.lobbyDialogCopy h2{font-size:22px}}
@media(max-width:550px){#lobbyArrival{bottom:142px;width:calc(100vw - 150px)}#lobbyArrival .secondary:last-child{display:none}.editorTabs button{font-size:9px;padding:12px 1px}}

.lobbyDialogLinks{display:flex;align-items:center;gap:9px;flex-wrap:wrap;margin-bottom:15px}.lobbyDialogLinks button{font-size:11px}.lobbyDialogLinks #lobbyQR canvas{width:85px;height:85px;display:block;border:1px solid #d7e0d5;border-radius:4px}.lobbyDialogCopy #lobbyDialogSections{white-space:pre-line}

/* v0.6.5: explicit preview and feedback for artwork image replacement */
#workMediaPreview{min-height:110px;max-height:190px;display:flex;align-items:center;justify-content:center;background:#f0f1eb;border:1px solid #dfe5dc;border-radius:8px;overflow:hidden}
#workMediaPreview img{display:block;max-height:185px;max-width:100%;object-fit:contain}
#workMediaPreview span{font-size:12px;color:#66796b}
#workUploadStatus{margin:0;color:#395e49;font-weight:500;overflow-wrap:anywhere}
#workUpload:disabled{opacity:.55;cursor:wait}

/* v0.6.7: frame ratio controls; matches existing editor styling */
#workMatchAspect{display:block;width:100%;text-align:center;margin-top:-2px}
#workAspectInfo{margin:0 0 4px;min-height:24px;color:#476151}
#workMatchAspect:disabled{opacity:.48;cursor:default}

/* v0.6.8 — 3D direct editing; the existing studio remains available. */
#directEditHud[hidden]{display:none!important}
#directEditHud{position:fixed;top:106px;left:20px;width:304px;max-width:calc(100vw - 32px);z-index:42;background:#fafbf7f2;border:1px solid #dce4db;border-radius:11px;padding:15px;box-shadow:0 15px 50px #1421192d;color:#283b2f}
.directHeader{display:flex;align-items:center;gap:9px;justify-content:space-between;margin-bottom:14px}.directHeader b{font-size:12px;letter-spacing:.8px}.directHeader span{font-size:10px;color:#738477}
#directTitle{font-size:14px;display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#directMessage{font-size:11px;color:#426450;line-height:1.55;min-height:31px}
.directControlRow{display:flex;gap:7px;margin:10px 0}.directControlRow button{flex:1;font-size:10px;padding:10px 5px}.directControlRow button.active{background:#355a45;color:#fff}
.directFields{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:11px}.directFields label{font-size:10px;color:#67796c}.directFields input{width:100%;margin-top:6px;border:1px solid #d1ddd3;border-radius:6px;padding:9px;background:#fff;font-size:13px}
.directNote{font-size:10px;color:#788779;line-height:1.55;margin:7px 0}
body.direct-editing #editor{transform:translateX(103%)!important;pointer-events:none}
body.direct-editing #editorShade{display:none!important}
body.direct-editing .mainHeader,body.direct-editing footer{right:0!important}
body.direct-editing #mapPanel{right:24px!important}
body.direct-editing #walkControls{right:30px!important}
body.direct-editing #lobbyArrival{display:none!important}
body.direct-editing #view canvas{cursor:grab;touch-action:none}
body.direct-editing #hint{display:none}
@media(max-width:870px){#directEditHud{left:10px;top:88px;width:265px;padding:11px}body.direct-editing #mapPanel{right:12px!important}body.direct-editing #walkControls{right:10px!important}}
@media(max-width:550px){#directEditHud{top:auto;bottom:80px;left:8px;width:min(290px,calc(100vw - 16px));padding:10px}.directHeader{margin-bottom:7px}.directNote:last-child{display:none}body.direct-editing footer{display:none}body.direct-editing #mapPanel{top:104px}}

.directInfo{width:100%;padding:8px;margin:2px 0 6px;font-size:11px}

/* v0.7.0 — create framed artworks directly on a visible 3D wall */
#directAddWall[aria-pressed="true"]{background:#315e47;color:#fff;outline:2px solid #a6cbb2;outline-offset:2px}
.directName{display:block;font-size:10px;color:#68796d;margin:10px 0 8px}
.directName input{display:block;width:100%;margin-top:5px;padding:9px 10px;background:#fff;border:1px solid #d1ddd3;border-radius:6px;color:#29382e;font-size:12px}
body.direct-adding #view canvas{cursor:crosshair!important}
@media(max-width:700px){#directEditHud{top:74px;left:8px;width:min(290px,calc(100vw - 16px));padding:11px}.directHeader{margin-bottom:8px}.directControlRow{margin:7px 0}.directFields{margin-top:7px}#directMessage{min-height:24px}}

/* v0.7.1 NAS publish panel */
.nasPublishPanel{margin:12px 0 19px;padding:15px;background:#f0f5ee;border:1px solid #bed1c0;border-radius:10px}
.nasPublishPanel h3{font-size:13px;color:#254735;margin:0 0 8px}
.nasPublishPanel #nasStatus{min-height:34px;color:#254735;overflow-wrap:anywhere}
.nasPublishPanel input[type=password]{width:100%;margin-top:8px;padding:11px;border:1px solid #bfcec0;border-radius:6px;font-size:12px}
.nasPublishPanel [hidden]{display:none!important}

/* v0.7.2: clearly grouped spotlight settings */
.spotSettings{margin:14px 0;padding:15px 14px;background:#f2f5f0;border:1px solid #d3dfd4;border-radius:13px;}
.spotSettings strong{color:#2a4d3c;font-size:15px;}
.spotSettings .editorLabel{display:block;margin-top:12px;}
.spotSettings input[type=range],#workSpotRow input[type=range]{width:100%;accent-color:#426e52;}
#workSpotRow[hidden]{display:none!important;}

/* v0.7.4 — service by default; authenticated editor is a separate UI mode. */
body:not(.editor-authorized) .adminOnly{display:none!important}
#editorModeToggle{width:34px;height:34px;padding:0;border:1px solid #d1d9d0;border-radius:8px;background:#fbfbf7d9;color:#586d60;font-size:17px;display:inline-flex;align-items:center;justify-content:center;opacity:.72;transition:opacity .2s}
#editorModeToggle:hover,#editorModeToggle:focus-visible{opacity:1}
body.editor-authorized #editorModeToggle{color:#fff;background:#3e674e;border-color:#3e674e;opacity:1}
body.editor-authorized .brand small{color:#456c52}
.editorHeadActions{display:flex;gap:12px;align-items:center}
.editorHeadActions #servicePreview{font-size:11px;background:#ffffff20;color:#fff;padding:8px 10px;border:1px solid #ffffff44;border-radius:5px}
.editorLoginDialog{width:min(380px,calc(100vw - 30px));border:1px solid #dde3d8;border-radius:15px;padding:25px;background:#fafaf6;color:#243b2e;box-shadow:0 24px 95px #0d261c5a}
.editorLoginDialog::backdrop{background:#122a21a6;backdrop-filter:blur(3px)}
.editorLoginTop{display:flex;align-items:center;justify-content:space-between;font-weight:700;font-size:11px;letter-spacing:1.4px;color:#4c7059}
.editorLoginTop button{font-size:25px;color:#637468;line-height:1}
.editorLoginDialog h2{font-size:22px;font-weight:600;margin:23px 0 8px}
.editorLoginDialog p{color:#63756a;font-size:12px;line-height:1.6}
.editorLoginDialog label{display:block;font-weight:600;font-size:11px;margin:21px 0 8px}
.editorLoginDialog input{width:100%;font-size:14px;padding:12px;border:1px solid #bdcfc0;border-radius:8px;background:#fff}
.editorLoginDialog #editorLoginMessage{min-height:18px;color:#9b4d43;overflow-wrap:anywhere}
.editorLoginDialog .editorLoginFoot{text-align:center;font-size:10px;margin-top:19px}
@media(max-width:700px){#editorModeToggle{width:32px;height:32px;font-size:16px}.editorHeadActions #servicePreview{padding:6px;font-size:10px}}
 
/* v0.7.5 — minimal visitor HUD. Admin panels and their settings stay unchanged. */
body:not(.editor-authorized) .headerRight #currentPreset,
body:not(.editor-authorized) .headerRight #currentTheme,
body:not(.editor-authorized) footer .location,
body:not(.editor-authorized) .intro .tag,
body:not(.editor-authorized) #lobbyAccess{display:none!important}
body:not(.editor-authorized) .mainHeader{padding:18px 20px}
body:not(.editor-authorized) .brand{font-size:15px;letter-spacing:.9px;text-shadow:0 1px 7px #fff9}
body:not(.editor-authorized) .brand small{display:none}
body:not(.editor-authorized) .headerRight{gap:6px}
body:not(.editor-authorized) #help,
body:not(.editor-authorized) #editorModeToggle{width:31px;height:31px;min-width:31px;min-height:31px;display:inline-flex;align-items:center;justify-content:center;padding:0;border-radius:50%;font-size:14px;background:#faf9f2dc;border:1px solid #e2e6de;color:#465c4e;box-shadow:0 2px 12px #243a2714;opacity:.78}
body:not(.editor-authorized) #help:hover,body:not(.editor-authorized) #editorModeToggle:hover{opacity:1}
body:not(.editor-authorized) footer.serviceToolbar{position:fixed;left:0;right:0;bottom:0;display:flex;align-items:center;justify-content:flex-end;gap:9px;padding:10px 18px 16px;background:none;pointer-events:none;z-index:20}
body:not(.editor-authorized) footer.serviceToolbar>*{pointer-events:auto}
body:not(.editor-authorized) .tourControls{position:static;left:auto;transform:none;display:flex;align-items:center;gap:0;padding:3px;border-radius:10px;background:#faf9f2df;border:1px solid #ffffffba;box-shadow:0 3px 20px #15271820}
body:not(.editor-authorized) .tourControls #tour{display:none!important}
body:not(.editor-authorized) .tourControls #prev,
body:not(.editor-authorized) .tourControls #next{display:grid;place-items:center;min-width:36px;width:36px;height:34px;padding:0;font-size:19px;border-radius:7px;line-height:1}
body:not(.editor-authorized) .tourControls #prev:hover,
body:not(.editor-authorized) .tourControls #next:hover{background:#e6eee4}
body:not(.editor-authorized) .utilities{display:flex;gap:0;padding:3px;background:#faf9f2df;border:1px solid #ffffffba;border-radius:10px;box-shadow:0 3px 20px #15271820}
body:not(.editor-authorized) .utilities button{min-width:36px;width:36px;height:34px;padding:0;display:grid;place-items:center;border-radius:7px;background:transparent;font-size:19px;line-height:1;color:#435e4b}
body:not(.editor-authorized) .utilities button:hover,body:not(.editor-authorized) .utilities button[aria-expanded="true"]{background:#e6eee4}
body:not(.editor-authorized) .utilities #walkToggle{display:none}
body:not(.editor-authorized):not(.service-map-open) #mapPanel{display:none!important}
body:not(.editor-authorized).service-map-open #mapPanel{display:block;position:fixed;top:auto;bottom:78px;right:18px;width:170px;max-width:calc(100vw - 36px);z-index:19;box-shadow:0 9px 27px #18271c20}
body:not(.editor-authorized):not(.walk-open) #walkControls{display:none!important}
body:not(.editor-authorized).walk-open #walkControls{display:block;bottom:78px;right:20px;z-index:18}
body:not(.editor-authorized) #hint{z-index:12;bottom:83px;max-width:calc(100vw - 22px);text-align:center;white-space:normal;padding:8px 12px;font-size:10px;color:#516555;background:#f7f7f0d9;pointer-events:none;animation:spacegoHintFade 5s both}
@keyframes spacegoHintFade{0%,5%{opacity:0;visibility:visible}12%,63%{opacity:.95;visibility:visible}100%{opacity:0;visibility:hidden}}
body.editor-authorized #hint{display:none}
body:not(.editor-authorized) .intro{top:92px;left:20px}
body:not(.editor-authorized) .intro h1{font-size:clamp(22px,3vw,34px);font-weight:500;letter-spacing:-1px;margin:7px 0}
body:not(.editor-authorized) .intro .eyebrow{font-size:8px}
body:not(.editor-authorized) #workHint{bottom:75px}
body:not(.editor-authorized) #workHint button{font-size:11px;padding:8px 13px;border-radius:20px;background:#f9f8f0ea}
@media(hover:none),(pointer:coarse){body:not(.editor-authorized) .utilities #walkToggle{display:grid}}
@media(max-width:870px){
 body:not(.editor-authorized) .mainHeader{padding:12px 11px}
 body:not(.editor-authorized) .brand{font-size:13px}
 body:not(.editor-authorized) footer.serviceToolbar{padding:7px 9px max(11px,env(safe-area-inset-bottom));gap:6px}
 body:not(.editor-authorized) .tourControls #prev,body:not(.editor-authorized) .tourControls #next,body:not(.editor-authorized) .utilities button{min-width:35px;width:35px;height:34px}
 body:not(.editor-authorized).service-map-open #mapPanel{right:10px;bottom:65px;width:150px}
 body:not(.editor-authorized).walk-open #walkControls{right:11px;bottom:67px}
 body:not(.editor-authorized) #hint{bottom:72px;font-size:9px}
 body:not(.editor-authorized) .intro{top:81px;left:12px}
 body:not(.editor-authorized) .intro h1{font-size:24px}
 body:not(.editor-authorized) #workHint{bottom:66px}
}
@media(prefers-reduced-motion:reduce){body:not(.editor-authorized) #hint{animation:none;display:none}}

/* v0.7.6 interior props – editor only */
#propEditHud{position:fixed;top:92px;left:18px;width:min(345px,calc(100vw - 28px));max-height:calc(100dvh - 130px);overflow:auto;background:#fbfaf4f2;color:#243e30;z-index:28;border:1px solid #ffffffad;border-radius:14px;box-shadow:0 10px 32px #172d2433;padding:16px;backdrop-filter:blur(15px)}
#propEditHud[hidden]{display:none!important}
#propEditHud button,#propEditHud select,#propEditHud input{font:inherit;min-height:38px}
#propEditHud select{background:#fff;border:1px solid #b9cabc;border-radius:7px;padding:4px;max-width:55%;min-width:0}
#propEditHud .directControlRow{display:flex;gap:7px;align-items:center;margin:9px 0}
#propEditHud .directControlRow button{flex:1;min-width:0;font-size:12px}
#propEditHud .directHeader{display:flex;justify-content:space-between;gap:9px;align-items:center}
#propEditHud .directHeader span{font-size:10px;color:#5a7461}
#propEditHud .directFields{display:grid;grid-template-columns:1fr 1fr;gap:8px}
#propEditHud .directFields input{width:100%;box-sizing:border-box}
#propEditHud .directFields label{font-size:11px}
#propEditHud .directNote,#propMessage{font-size:11px;color:#5b6d5b;line-height:1.6}
@media(max-width:750px){#propEditHud{top:65px;left:8px;padding:11px;width:min(295px,calc(100vw - 18px));max-height:calc(100dvh - 95px)}}

/* Keep all six editor tabs on one line without compressing labels. */
.editorTabs{display:flex;grid-template-columns:none;overflow-x:auto;overflow-y:hidden;scrollbar-width:thin;flex-shrink:0}
.editorTabs button{flex:1 0 auto;white-space:nowrap;padding:12px 10px;font-size:10px}
body.prop-editing #editor{transform:translateX(103%)!important;pointer-events:none}
body.prop-editing #editorShade{display:none!important}
body.prop-editing .mainHeader,body.prop-editing footer{right:0!important}
body.prop-editing #mapPanel{right:24px!important}
body.prop-editing #lobbyArrival{display:none!important}
body.prop-editing #view canvas{cursor:grab;touch-action:none}
body.prop-editing #hint{display:none}
@media(max-width:550px){body.prop-editing footer{display:none}body.prop-editing #mapPanel{top:104px;right:10px!important}}

/* v0.7.7: single, compact editor tab bar */
.editorTabs button{font-size:10px;white-space:nowrap;min-width:0;overflow:hidden;text-overflow:clip}
@media(max-width:420px){.editorTabs button{font-size:9px;padding:12px 0}}

/* v0.7.8: image viewer and scalable collection */
#artDialog{width:min(1050px,96vw)}#media{max-height:65dvh;overflow:hidden;touch-action:pan-x pan-y;position:relative}#media img.zoomable{transform-origin:center center;transition:transform .12s ease;user-select:none;max-height:57dvh}#media.mediaZoomed{touch-action:none}#media.mediaZoomed img.zoomable{touch-action:none}#artDialog #media img.zoomable{touch-action:none}#artDialog #media.mediaPanning img.zoomable,#artDialog #media.mediaPinching img.zoomable{transition:none!important;cursor:grabbing!important} .zoomTools{display:flex;align-items:center;justify-content:center;gap:10px;padding:9px;background:#f1f3ed}.zoomTools button{padding:6px 11px;border-radius:7px;background:#fff;border:1px solid #cfd8d0}.zoomTools output{min-width:56px;text-align:center;font-size:12px}.artLinks{display:flex;gap:8px;flex-wrap:wrap;margin:12px 0}.artLinks a{font-size:12px;text-decoration:none;color:#255542;background:#e2ece5;padding:8px 12px;border-radius:6px}#artArtist{font-weight:600;color:#3c6551!important}
#collectionDialog{width:min(920px,95vw);padding:22px}.collectionHead h2{margin:8px 0;font-size:25px}.collectionHead p{font-size:12px;color:#59685c}.collectionFilters{display:grid;grid-template-columns:1fr 150px;gap:8px;margin:12px 28px 16px 0}.collectionFilters input,.collectionFilters select{min-width:0;border:1px solid #d4dfd5;background:white;border-radius:6px;padding:11px;font-size:12px}.collectionItems{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.collectionCard{border:1px solid #e0e7dd;background:#fff;display:flex;flex-direction:column;overflow:hidden;border-radius:8px;text-align:left}.collectionCard img,.collectionCard>span:first-child{height:125px;width:100%;object-fit:cover;background:#dde2da;display:grid;place-items:center;color:#537461}.collectionCard>span:last-child{padding:11px;display:grid;gap:5px}.collectionCard strong{font-size:12px;color:#284331}.collectionCard small{font-size:10px;color:#647665}.collectionPager{display:flex;justify-content:center;align-items:center;gap:20px;margin-top:14px}.collectionPager button{font-size:11px;background:#e8eee9;border-radius:6px;padding:9px 14px}.collectionPager button:disabled{opacity:.4}.lobbyObjCheck{display:flex!important;align-items:center;gap:8px}.lobbyObjCheck input{width:auto!important;margin:0!important}
#lobbyEditHud{position:fixed;right:16px;top:16%;width:min(310px,calc(100vw - 32px));z-index:35;background:#f8f9f3f5;padding:17px;border-radius:12px;box-shadow:0 12px 42px #22332955}#lobbyEditHud[hidden]{display:none}#lobbyEditHud .directHeader{display:grid;gap:3px}body.lobby-editing #editor{transform:translateX(103%)}body.lobby-editing .serviceToolbar{display:none}
@media(max-width:670px){.collectionItems{grid-template-columns:repeat(2,minmax(0,1fr))}.collectionFilters{grid-template-columns:1fr}.collectionCard img,.collectionCard>span:first-child{height:100px}#artDialog{max-width:96vw}}

.editorWorkFilters{display:flex;gap:8px;align-items:center;margin:8px 0 12px}.editorWorkFilters input{flex:1;min-width:0;background:white;border:1px solid #dce4da;border-radius:6px;padding:10px;font-size:12px}.editorWorkFilters span{white-space:nowrap;color:#758679;font-size:11px}

/* v0.7.9: the mobile editor shade must never intercept lobby object drags. */
body.lobby-editing #editorShade{display:none!important;pointer-events:none!important}
body.lobby-editing #editor{transform:translateX(103%)!important;pointer-events:none!important}
body.lobby-editing #view canvas{cursor:grab;touch-action:none}
body.lobby-editing #mapPanel{pointer-events:none}
.frameMountOptions{display:grid;gap:9px;border:1px solid #d7ded7;background:#f2f5f0;padding:11px;border-radius:9px}.frameMountOptions[hidden]{display:none}
.frameMountOptions input[type=color]{width:100%;height:39px;padding:4px;margin-top:6px;border:1px solid #d5ded5;border-radius:6px;background:#fff}

/* v0.7.10 actual artwork scale controls */
.actualSizeFields{margin:12px 0;padding:13px;border:1px solid rgba(112,119,109,.28);border-radius:8px}.actualSizeFields>strong{display:block;margin-bottom:9px}.actualSizeGrid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.actualSizeFields .smallNote{margin-top:8px}.actualSizeDetail{font-size:.94rem;color:#67766a;font-weight:600;margin:5px 0 10px}

/* v0.7.11 NY MASTER SECTION NAVIGATION */
.sectionNav{position:fixed;top:73px;left:50%;transform:translateX(-50%);max-width:calc(100vw - 30px);width:max-content;display:flex;align-items:center;gap:4px;z-index:16;background:rgba(250,249,245,.94);border:1px solid #e0e3dc;box-shadow:0 5px 24px #142a1b26;border-radius:14px;padding:6px;overflow-x:auto;scrollbar-width:thin;backdrop-filter:blur(16px)}
.sectionNav[hidden]{display:none!important}.sectionNavLabel{font-size:11px;font-weight:700;color:#496357;padding:0 10px;white-space:nowrap}.sectionNavItem{border:0;border-radius:9px;padding:9px 12px;white-space:nowrap;font-size:11px;background:transparent;color:#4c5c50;cursor:pointer}.sectionNavItem:hover{background:#e9efea}.sectionNavItem.active{background:#31513d;color:#fff;font-weight:700}
body.editing .sectionNav,body.direct-editing .sectionNav,body.prop-editing .sectionNav{display:none}
/* Immersive artwork detail: larger photograph, lighter textual side panel */
#artDialog[open]{width:min(1420px,97vw);height:min(92dvh,950px);max-height:92dvh;overflow:hidden;display:grid;grid-template-columns:minmax(0,1fr) minmax(270px,320px);grid-template-rows:minmax(0,1fr) auto;background:#fff}
#artDialog #media{grid-column:1;grid-row:1;min-height:0;max-height:none;background:#151916;display:flex;align-items:center;justify-content:center;overflow:hidden}
#artDialog #media img.zoomable,#artDialog #media video{max-height:calc(92dvh - 66px);max-width:100%;width:auto;height:auto;object-fit:contain}
#artDialog #zoomTools{grid-column:1;grid-row:2;position:relative;z-index:2;min-height:48px;background:#f5f6f3}
#artDialog #zoomTools[hidden]{display:none}
#artDialog .detail{grid-column:2;grid-row:1 / span 2;overflow:auto;padding:66px 24px 22px 24px;background:#fafaf8;border-left:1px solid #e5e8e4}
#artDialog .detail h2{font-size:24px;line-height:1.38;margin:12px 0}
#artDialog .detail #artArtist{font-size:13px!important;line-height:1.7;color:#455b4c!important}
#artDialog .detail #artDescription{font-size:13px;line-height:1.8;color:#56675a;margin:17px 0 20px;white-space:pre-line}
#artDialog .detail .detailActions{flex-wrap:wrap;margin-top:16px}
#artDialog .close{top:18px;right:18px;z-index:10}
@media(max-width:900px){.sectionNav{left:12px;right:12px;transform:none;width:auto;top:65px}.sectionNavLabel{display:none}#artDialog[open]{height:min(95dvh,1050px);grid-template-columns:1fr;grid-template-rows:minmax(220px,63%) auto auto;overflow-y:auto}#artDialog #media{grid-column:1;grid-row:1}#artDialog #media img.zoomable,#artDialog #media video{max-height:56dvh}#artDialog #zoomTools{grid-column:1;grid-row:2}#artDialog .detail{grid-column:1;grid-row:3;max-height:none;border-left:0;border-top:1px solid #e6e6e2;padding:23px 20px}}
@media(max-width:520px){.sectionNav{top:61px;padding:4px}.sectionNavItem{font-size:10px;padding:8px}.sectionNavItem.active{min-width:110px}#artDialog[open]{width:98vw;max-width:98vw;height:95dvh;grid-template-rows:minmax(200px,58%) auto auto}}

.nextSectionButton{pointer-events:auto;padding:10px 13px;background:#31513de8;color:#fff;border:1px solid #54715d;border-radius:10px;font-size:11px;white-space:nowrap;box-shadow:0 3px 10px #1b312526}.nextSectionButton[hidden]{display:none!important}.nextSectionButton:hover{background:#254430}@media(max-width:720px){.nextSectionButton{font-size:10px;padding:8px}}

/* v0.7.12: sizing and mounting-height controls stay independent */
#directEditHud .directFields{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}
#directEditHud .directFields input{box-sizing:border-box;min-width:0}
#directEditHud .directFields label{line-height:1.35;overflow-wrap:break-word}

/* v0.7.13 – chapter transition. No WebGL duplication, textures, or external libraries. */
.sectionTransition[hidden]{display:none!important}
.sectionTransition{position:fixed;inset:0;z-index:90;pointer-events:all;display:grid;place-items:center;text-align:center;color:#f7f2e8;background:radial-gradient(ellipse at 50% 47%,#314638f5,#172d25fc 65%,#101d18);opacity:0;visibility:hidden;transform:scale(1.03);transition:opacity .39s ease,visibility .39s ease,transform .8s cubic-bezier(.2,.75,.25,1);}
.sectionTransition.visible{visibility:visible;opacity:1;transform:scale(1)}
.sectionTransition.visible.arriving{opacity:0;transform:scale(.984);transition:opacity .7s ease,transform .8s ease,visibility .7s ease;}
.sectionTransitionContent{width:min(550px,calc(100vw - 56px));padding:26px 8px;transform:translateY(18px);transition:transform .47s ease}
.sectionTransition.visible .sectionTransitionContent{transform:translateY(0)}
.sectionTransitionEyebrow,.sectionTransitionFoot{font-size:11px;letter-spacing:.27em;font-weight:500;color:#dbceb4}
.sectionTransitionRule{width:100px;height:1px;margin:26px auto;background:#d6c49f;opacity:.8}
.sectionTransitionIndex{display:block;font-size:12px;font-weight:500;letter-spacing:.32em;color:#c5b28e}
.sectionTransitionName{font-size:clamp(36px,7vw,68px);letter-spacing:-.06em;margin:20px 0 12px;font-weight:500;line-height:1.13}
.sectionTransitionSub{font-size:15px;color:#d1d8ce;margin:0 0 45px}
.sectionTransitionFoot{font-size:9px;opacity:.7}
body.section-transitioning .sectionNav,body.section-transitioning .serviceToolbar{pointer-events:none}
@media(prefers-reduced-motion:reduce){.sectionTransition,.sectionTransition.visible,.sectionTransition.arriving,.sectionTransitionContent{transition:none!important;transform:none!important}}

/* v0.7.16 · editable lobby objects with accessible direct controls. */
#lobbyEditHud{top:84px;max-height:calc(100dvh - 110px);overflow-y:auto;z-index:52;width:min(330px,calc(100vw - 32px));}
#lobbyEditHud .lobbyHudLabel{display:block;font-size:11px;font-weight:700;margin:10px 0;}
#lobbyHudSelection{width:100%;padding:9px 10px;border:1px solid #afbdad;border-radius:7px;background:#fff;margin-top:5px;font-size:12px;}
#lobbySelectedName{display:block;margin-top:8px;font-size:13px;}
#lobbyEditMessage{font-size:11px;line-height:1.6;}
.lobbyMoveControls{margin:12px 0;padding:9px;border:1px solid #cfdacb;background:#eff2ec;border-radius:9px;}
.lobbyMoveControls[hidden]{display:none!important}
.lobbyMoveControls>span{font-size:10px;display:block;margin-bottom:8px;}
.lobbyMovePad{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;max-width:180px;}
.lobbyMovePad button{background:white;border:1px solid #adc0b0;border-radius:7px;min-height:32px;}
.lobbyMovePad button:first-child{grid-column:2}.lobbyMovePad button:nth-child(2){grid-column:1;grid-row:2}
.lobbyMovePad button:nth-child(3){grid-column:3;grid-row:2}.lobbyMovePad button:nth-child(4){grid-column:2;grid-row:2}
#lobbyEditHud .directFields{display:grid;grid-template-columns:1fr 1fr;gap:7px}
#lobbyEditHud .directFields input{width:100%;padding:8px;border:1px solid #b9c5b9;border-radius:6px}
body.lobby-editing .mainHeader,body.lobby-editing footer{right:0!important;}
body.lobby-editing #mapPanel{right:370px!important;}
body.lobby-editing #lobbyArrival{display:none!important;}
body.lobby-editing #hint{display:none;}
@media(max-width:650px){#lobbyEditHud{top:70px;right:8px;width:min(285px,calc(100vw - 16px));padding:10px}body.lobby-editing #mapPanel{display:none!important}}

/* v0.7.18: visual prop library and user GLB upload */
.propLibraryHead{display:flex;align-items:center;justify-content:space-between;margin:18px 0 7px;color:#294a37;font-size:12px}.propLibraryControls{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:9px 0}.propLibraryControls input,.propLibraryControls select,.propUploadPanel input,.propUploadPanel select{border:1px solid #cedad0;border-radius:7px;padding:10px;min-width:0;width:100%;box-sizing:border-box;background:white;color:#273d2f;font-size:11px}.propAssetGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;max-height:350px;overflow:auto;padding:2px}.propAssetCard{border:1px solid #dae4db;border-radius:10px;background:#fff;padding:6px;min-width:0;text-align:left;display:flex;flex-direction:column;gap:3px}.propAssetCard img{width:100%;height:94px;object-fit:cover;background:#e5ebdf;border-radius:7px}.propAssetCard span{font-size:11px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.propAssetCard small{font-size:10px;color:#769080}.propAssetCard.active{border-color:#386b4c;box-shadow:0 0 0 2px #b9cfbf}.propUploadPanel{margin:12px 0;border:1px dashed #a2bda8;border-radius:9px;padding:11px;background:#edf3ec}.propUploadPanel summary{cursor:pointer;font-weight:650;font-size:12px;color:#315a3e}.propUploadPanel label{display:block;font-size:11px;margin-top:12px}.propUploadPanel input,.propUploadPanel select{margin-top:5px}.workList button:has(.placedPropThumb){display:flex;align-items:center;gap:10px}.placedPropThumb{width:53px;height:44px;object-fit:cover;border-radius:5px;background:#ebeee8}.propAssetCard:focus-visible,.propUploadPanel button:focus-visible{outline:2px solid #36784b;outline-offset:2px}

/* v0.7.19: gallery assets display the rendered 3D model, not a category emoji. */
.propAssetGrid{max-height:480px;gap:10px}
.propAssetCard{padding:7px;gap:5px;transition:border-color .15s,box-shadow .15s}
.propAssetCard img{width:100%;height:auto;aspect-ratio:4/3;object-fit:contain;background:#edf0eb;border-radius:6px}
.propAssetCard span{font-size:12px;white-space:normal;line-height:1.4;min-height:18px}
.propAssetCard small{font-size:10px}
.propAssetCard:hover{border-color:#759a7e}
.propPreviewGuide{font-size:11px;color:#657569;margin:9px 0;line-height:1.5}
.propSelectedPreview{display:flex;align-items:center;gap:12px;margin:13px 0 8px;padding:9px;border-radius:10px;background:#edf1eb;border:1px solid #d7e0d6}
.propSelectedPreview img{width:126px;max-width:48%;height:auto;aspect-ratio:4/3;object-fit:contain;background:#e7eee7;border-radius:8px}
.propSelectedPreview div{min-width:0;display:flex;flex-direction:column;gap:8px}
.propSelectedPreview strong{font-size:13px;color:#2b4736;overflow-wrap:anywhere}
.propSelectedPreview small{font-size:11px;color:#667d6e}
@media(max-width:480px){.propAssetGrid{grid-template-columns:repeat(2,minmax(0,1fr))}.propAssetCard img{height:auto}}


/* v0.7.20: image-based direct-edit prop selection on PC and tablets. */
#propEditHud .propHudPickerRow{align-items:stretch}
#propEditHud .propHudSelectWrap{flex:1;min-width:0;position:relative}
#propEditHud #propAddType{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;clip-path:inset(50%);padding:0!important;border:0!important;}
#propEditHud .propHudPickerToggle{box-sizing:border-box;width:100%;display:flex;align-items:center;gap:9px;padding:5px 8px;text-align:left;min-height:60px;border:1px solid #b1c3b4;border-radius:9px;background:#fff;color:#263e30;cursor:pointer}
#propEditHud .propHudPickerToggle img{width:56px;height:49px;object-fit:contain;background:#e9efe8;border-radius:6px;flex:none}
#propEditHud .propHudPickerText{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px}
#propEditHud .propHudPickerText strong{font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#propEditHud .propHudPickerText small{font-size:10px;color:#657f6a}
#propEditHud .propHudPickerCaret{font-size:14px;color:#57715e}
#propEditHud .propHudPickerRow>#propHudAdd{flex:0 0 104px;line-height:1.2;min-width:0}
#propEditHud .propHudPickerPanel{padding:9px 7px 8px;border:1px solid #cad9ce;background:#f3f7f1;border-radius:10px;box-shadow:0 4px 14px #28482f15}
#propEditHud .propHudPickerPanel[hidden]{display:none!important}
#propEditHud .propHudPickerFilters{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:7px}
#propEditHud .propHudPickerFilters select,#propEditHud .propHudPickerFilters input{box-sizing:border-box;width:100%;min-width:0;max-width:none!important;padding:7px;border:1px solid #c2d0c4;border-radius:7px;background:#fff;color:#304b3b;font-size:11px}
#propEditHud .propHudPickerGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;max-height:min(48dvh,360px);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:2px}
#propEditHud .propHudChoice{min-width:0;display:flex;flex-direction:column;gap:4px;text-align:center;align-items:stretch;border:1px solid #d3ded1;background:white;padding:5px;border-radius:8px;cursor:pointer;min-height:109px}
#propEditHud .propHudChoice img{width:100%;height:80px;object-fit:contain;background:#e9efe9;border-radius:5px}
#propEditHud .propHudChoice span{font-size:10px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#propEditHud .propHudChoice.active{outline:2px solid #387551;border-color:transparent;background:#f2f8f0}
#propEditHud .propHudChoice:focus-visible,#propEditHud .propHudPickerToggle:focus-visible{outline:2px solid #387551;outline-offset:2px}
#propEditHud .propHudPickerHint,#propEditHud .propHudNoResults{font-size:10px;color:#728775;line-height:1.4;margin:8px 2px 2px}
@media(max-width:750px){#propEditHud .propHudPickerRow>#propHudAdd{flex-basis:91px}#propEditHud .propHudPickerToggle{padding:4px;gap:5px}#propEditHud .propHudPickerToggle img{width:48px;height:45px}#propEditHud .propHudPickerGrid{max-height:34dvh}}

/* v0.7.21 — editable exhibition panels, readable on tablets */
.editorTabs{display:flex;overflow-x:auto;overscroll-behavior-inline:contain;scrollbar-width:thin;white-space:nowrap;gap:0}
.editorTabs>button{flex:0 0 auto;padding-left:12px;padding-right:12px}
.panelTemplates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:12px 0}
.panelTemplates button{min-height:49px;border:1px solid #b9c8be;background:#f0f3ed;color:#305642;border-radius:10px;font-weight:650;font-size:12px;padding:8px}
.panelItemList{display:grid;gap:7px;margin:14px 0}
.panelItemList button{width:100%;text-align:left;display:flex;justify-content:space-between;gap:8px;align-items:center;border-radius:9px;border:1px solid #d3dcd3;background:#fff;padding:12px;min-height:44px;color:#264737}
.panelItemList button.active{border-color:#407155;background:#e8f1eb}
.panelItemList small{font-size:10px;color:#647769}
.panelMeta{padding:12px 0;border-top:1px solid #ccd6ca;display:flex;flex-direction:column;gap:3px}
.panelMeta small{color:#68786c}
#panelFields>.fields{display:grid;gap:12px}
#panelFields>.fields>label{display:flex;flex-direction:column;gap:5px;color:#304b3b;font-size:12px}
#panelFields>.fields input,#panelFields>.fields select,#panelFields>.fields textarea{width:100%;min-height:40px;border-radius:8px;border:1px solid #cbd5c8;background:white;padding:8px;font:inherit;box-sizing:border-box}
#panelFields>.fields input[type=color]{height:42px;padding:3px}
#panelFields>.fields input[type=range]{padding:0}
#panelFields .actionLine{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
#panelFields .actionLine button{flex:1 1 40%;min-height:40px}
#panelFields .actionLine button:first-child{flex-basis:100%}

#panelFields label[hidden]{display:none!important}

/* v0.7.22: direct-tap wall placement, no wall IDs in the editor */
[data-panel-wall-internal]{display:none!important}
.panelPlacementGuide{background:#e9f1ea;color:#244b35;border:1px solid #bdcfbe;border-radius:9px;padding:12px;font-size:13px;line-height:1.5}
body.placing-panel #viewport,body.placing-panel canvas{cursor:crosshair!important}
body.placing-panel .panelTemplates button:focus-visible{outline:2px solid #365f49}

/* v0.7.23 — wall typography editor */
#panelFields>.fields label[hidden]{display:none!important}
#panelFields #panelTitleSize,#panelFields #panelBodySize,#panelFields #panelDepth{font-variant-numeric:tabular-nums}
#panelFields [id^="panel"]:focus-visible{outline:2px solid #3b7053;outline-offset:2px}

/* v0.7.24 — single-object wall typography. Only Enter inserts a visual line break. */
#panelFields #panelBody.singleWallText{white-space:pre;overflow-x:auto;min-height:108px;line-height:1.5;resize:vertical;}

/* v0.7.26 - image-only posters, original aspect ratio and accessible size slider */
#panelPosterHelp{line-height:1.55;margin:0 0 4px;color:#426d57}
#panelFields #panelHeight[readonly]{background:#f1f4ef;color:#5b7364;cursor:default}
#panelFields #panelPosterWidthRange{accent-color:#3d7052;min-height:24px;touch-action:pan-y}
#panelPosterWidthRow output{margin-left:8px;font-variant-numeric:tabular-nums;color:#335943;font-weight:700}
#panelAspectInfo{font-size:11px;color:#607367;margin:0}

/* v0.7.28: selected real-profile frame shape preview */
.workFrameStylePreview{display:flex;align-items:center;gap:12px;padding:9px 12px;border:1px solid #d8dcd5;border-radius:12px;background:#f8f7f2;margin:7px 0 10px;min-height:104px}.workFrameStylePreview[hidden]{display:none!important}.workFrameStylePreview img{width:104px;height:94px;object-fit:contain;flex-shrink:0;border-radius:7px;background:#edeae4}.workFrameStylePreview strong{font-size:12px;display:block;margin-bottom:7px;color:#273d30}.workFrameStylePreview small{font-size:11px;color:#64736a;display:block;line-height:1.5}

/* v0.7.32 — project manager & bulk importer */
.projectRoomRows,.bulkPreview{display:grid;gap:12px;margin:12px 0}.projectRoomCard{background:#f7f6f2;border:1px solid #d9ded7;border-radius:12px;padding:12px;display:grid;gap:9px}.projectRoomCard label{display:grid;gap:4px;font-size:12px}.projectRoomCard input:not([type=checkbox]),.projectRoomCard textarea{width:100%;box-sizing:border-box;border:1px solid #ccd5cc;border-radius:7px;background:white;padding:9px;color:#253a32}.projectRoomTop{display:flex;align-items:center;justify-content:space-between;gap:8px}.projectRoomTop label{display:flex;align-items:center;gap:7px;font-size:13px}.projectRoomActions{display:flex;gap:5px}.projectRoomActions button{min-width:33px}.projectAddRow{display:flex;gap:8px;margin:12px 0}.projectAddRow select{min-width:0;flex:1}.bulkBox{background:#f7f8f4;border:1px solid #d2ddd3;border-radius:14px;padding:13px;margin:12px 0}.bulkDrop{border:2px dashed #a3b8aa;padding:18px 8px;text-align:center;border-radius:10px;color:#466656;cursor:pointer;background:#fff;line-height:1.6}.bulkDrop.dragging{background:#e7f3e8;border-color:#548465}.bulkPreview{max-height:480px;overflow-y:auto}.bulkCard{display:flex;gap:10px;background:#fff;border:1px solid #dce0d9;border-radius:9px;padding:9px}.bulkCard img{width:86px;height:105px;object-fit:contain;background:#ecece8;border-radius:6px;flex:none}.bulkCardFields{flex:1;min-width:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px}.bulkCardFields label{font-size:11px;display:grid;gap:2px;color:#58645a}.bulkCardFields label:first-child,.bulkCardFields label:nth-child(2),.bulkCardFields label:nth-child(5){grid-column:span 2}.bulkCardFields input,.bulkCardFields select{width:100%;padding:6px;min-width:0;box-sizing:border-box;border-radius:5px;border:1px solid #cbd3ca;background:white;color:#2d3731}.newProjectDialog{border:0;border-radius:14px;padding:22px;width:min(580px,90vw);max-height:86vh;overflow:auto;color:#24382c;background:#fcfcf8}.newProjectDialog::backdrop{background:#07130ab3}.newProjectDialog form{display:grid;gap:12px}.newProjectDialog label:not(.newProjectPreset){display:grid;gap:5px}.newProjectDialog input,.newProjectDialog textarea{padding:10px;border:1px solid #cbd5ca;border-radius:8px}.newProjectTemplates{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.newProjectPreset{display:flex;gap:8px;align-items:flex-start;padding:10px;border:1px solid #d3dbd0;border-radius:9px;background:#f7f8f3}.newProjectPreset span{display:grid;gap:4px}.newProjectPreset small{font-size:10px;color:#647667}.editorTabs{overflow-x:auto;scrollbar-width:thin}
@media(max-width:480px){.bulkCard img{width:62px}.newProjectTemplates{grid-template-columns:1fr}}

.newProjectPreset{display:grid;gap:8px}.newProjectPreset>label{display:flex;gap:8px;align-items:flex-start}.newProjectPreset input.newPresetName,.newProjectPreset textarea.newPresetDescription{width:100%;box-sizing:border-box;min-width:0}.newProjectPreset textarea{resize:vertical}.newProjectDialog select{width:100%;background:white}

/* v0.7.34 — artwork transfer between rooms */
.transferBox{border:1px solid #b4cdbb;background:#f4f8f3;border-radius:14px;padding:14px;margin:12px 0}.transferBox h3{margin:0 0 7px;font-size:15px}.transferBox small{font-size:10px;color:#637d6e}.transferToolbar{display:flex;align-items:center;flex-wrap:wrap;gap:7px;margin:8px 0}.transferToolbar span{margin-left:auto;font-size:12px;color:#3d634b}.transferChecklist{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));max-height:270px;overflow:auto;gap:6px;padding:5px 0}.transferSelectCard{min-width:0;display:flex;align-items:center;gap:7px;border:1px solid #d5dfd4;background:white;border-radius:8px;padding:6px;font-size:11px;cursor:pointer}.transferSelectCard input{flex:none}.transferSelectCard img{width:32px;height:40px;object-fit:contain;background:#eee;flex:none}.transferSelectCard span{overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;max-height:34px}.transferBox select{width:100%;padding:8px;border-radius:8px;border:1px solid #c9d5c9;background:white;color:#24382b}.transferTray{position:fixed;z-index:190;right:14px;bottom:16px;width:min(350px,calc(100vw - 28px));max-height:min(68vh,650px);overflow:auto;background:#fcfcf9;border:1px solid #9eb9a6;border-radius:15px;box-shadow:0 8px 36px #071b1490;color:#26392f;padding:12px;box-sizing:border-box}.transferTray[hidden]{display:none!important}.transferTray header{display:flex;justify-content:space-between;align-items:center;gap:7px;position:sticky;top:-12px;background:#fcfcf9;z-index:1;padding:7px 0}.transferTray.minimized #transferTrayBody{display:none}.transferTray #transferTrayStatus{font-size:12px;color:#3d6b52;margin:5px 0 10px}.transferQueue{display:grid;gap:7px;max-height:40vh;overflow:auto}.transferQueueRow{display:flex;align-items:center;gap:8px;border:1px solid #dde3dd;border-radius:9px;padding:6px;background:#fff}.transferQueueRow.placing{border-color:#548b6b;background:#eff8ef}.transferQueueRow img{width:38px;height:45px;object-fit:contain;background:#ecece8;border-radius:4px;flex:none}.transferQueueRow div{min-width:0;flex:1;display:grid;gap:3px}.transferQueueRow strong{font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}.transferQueueRow small{font-size:10px;color:#67786a}.transferQueueRow button{font-size:11px;flex:none}.transferTrayActions{display:flex;gap:6px;flex-wrap:wrap;margin:12px 0 6px}.transferTrayActions button{flex:1 1 auto;font-size:11px}.transferTray .smallNote{font-size:10px;line-height:1.5}
@media(max-width:700px){.transferChecklist{grid-template-columns:1fr}.transferTray{right:8px;bottom:8px;width:min(300px,calc(100vw - 16px));max-height:48vh}.transferQueue{max-height:22vh}}

/* v0.7.35: non-destructive artwork cut/paste */
.artworkClipboardTray{position:fixed;right:14px;bottom:17px;z-index:195;width:min(315px,calc(100vw - 28px));max-height:42vh;overflow:auto;border-radius:13px;border:1px solid #b2cbb9;background:#fdfefa;box-shadow:0 12px 42px #10291f59;padding:12px;color:#213c2b;box-sizing:border-box}
.artworkClipboardTray[hidden],.artworkClipboardTray [hidden]{display:none!important}
.artworkClipboardTray .clipboardHead{display:flex;align-items:center;gap:9px;min-width:0}
.artworkClipboardTray .clipboardHead img{width:48px;height:53px;object-fit:contain;border-radius:5px;background:#e7ebe5;flex:none}
.artworkClipboardTray .clipboardHead div{min-width:0;display:grid;gap:4px}
.artworkClipboardTray .clipboardHead strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.artworkClipboardTray .clipboardHead small{font-size:10px;color:#607366;line-height:1.4}
.artworkClipboardTray p{font-size:11px;line-height:1.4;margin:8px 0}
.artworkClipboardTray .clipboardActions{display:flex;gap:6px}
.artworkClipboardTray button{font-size:11px;padding:9px;min-width:0;flex:1}
.artworkClipboardTray #clipboardPaste.active{background:#28533c;color:#fff}
.artworkClipboardTray #clipboardUndo{width:100%}
@media(max-width:700px){.artworkClipboardTray{right:8px;bottom:8px;width:min(286px,calc(100vw - 16px));padding:9px}}

/* v0.7.36 — opt-in equal-gap arrangement */
.gallerySpacingBox{margin:12px 0;padding:13px;border:1px solid #bdcec3;border-radius:12px;background:#f7f9f6}
.gallerySpacingBox h3{font-size:15px;margin:0 0 8px}
.gallerySpacingBox h3 small{font-size:10px;color:#718476}
.gallerySpacingBox input{box-sizing:border-box;width:100%;padding:8px;background:#fff;border:1px solid #b8cdbf;border-radius:7px;color:#263b2d}
.gallerySpacingBox .actionLine{display:flex;gap:8px;flex-wrap:wrap}
.gallerySpacingBox .actionLine button{flex:1 1 auto}

.spacingMode{display:flex;gap:12px;flex-wrap:wrap;margin:10px 0}.spacingMode label{display:flex;align-items:center;gap:5px;cursor:pointer;font-size:13px}.spacingMode input{width:auto}.gallerySpacingBox #galleryWallApply:disabled{opacity:.45;cursor:not-allowed}

/* v0.7.44: all room overview and lobby content immediately below preset chooser */
.spaceLobbyDetails{margin:16px 0 28px;padding:14px 12px;border:1px solid var(--line, #d5d9d7);border-radius:12px;background:rgba(255,255,255,.035)}
.spaceLobbyDetailsHead{display:flex;flex-wrap:wrap;gap:8px;justify-content:space-between;align-items:center;margin-bottom:12px}
.spaceLobbyDetailsHead strong{font-size:14px}
#spaceRoomInfo{font-size:12px;opacity:.75}

/* v0.7.47 */
.bulkScalePanel,.bulkFramePanel{border:1px solid var(--line,#d5d5d5);border-radius:12px;padding:16px;margin:14px 0;background:rgba(130,130,130,.04)}
.bulkScalePanel input[type=range]{width:100%;display:block;accent-color:#527967;margin-top:10px}.bulkScalePanel output{font-weight:700;margin-left:8px}.bulkFramePanel h3,.bulkScalePanel h3{margin:0 0 8px}

/* v0.7.54 artwork multi-select */
.workMultiToolbar,.workMultiActions{display:flex;align-items:center;flex-wrap:wrap;gap:9px;margin:10px 0}
.workMultiToolbar label{display:flex;align-items:center;gap:7px;font-size:13px;font-weight:600}
.workMultiToolbar input,.workMultiCheck{width:19px;height:19px;accent-color:#52735d;flex:none;cursor:pointer}
.workMultiToolbar #workSelectCount{margin-left:auto;font-size:12px;color:#607466}
.workMultiRow{display:flex;align-items:center;gap:8px;min-width:0}
.workMultiRow>button{flex:1;text-align:left;min-width:0}
.workMultiActions>button{flex:1;min-width:150px}

.workRoomSelector{padding:14px;margin:16px 0;background:#edf3ec;border:1px solid #ceddce;border-radius:12px;display:grid;gap:9px}.workRoomSelector>label{font-weight:750;font-size:14px}.workRoomSelector>select{width:100%;padding:12px;border-radius:7px;border:1px solid #b8c9bb;background:#fff;color:#26382e;font-size:14px}.workRoomSelector>strong{color:#345b43;font-size:13px}.workRoomSelector>.smallNote{margin:0}

/* v0.7.59: independent/proportional dimensions in direct 3D placement */
#directEditHud{max-height:calc(100dvh - 122px);overflow-y:auto;overscroll-behavior:contain}
#directEditHud .directAspectSettings{padding:10px;background:#eef3ee;border:1px solid #d9e4d9;border-radius:8px;margin:10px 0}
#directEditHud .directAspectSettings>label{display:block;font-size:11px;font-weight:600;color:#3d5646;line-height:1.6;margin-bottom:4px}
#directAspectMode{display:block;width:100%;max-width:100%;box-sizing:border-box;padding:8px 5px;background:#fff;border:1px solid #b7c8b9;border-radius:6px;color:#264236;font-size:11px}
#directScale{width:100%;accent-color:#557b65;margin:4px 0}
#directScaleText{float:right;font-variant-numeric:tabular-nums}
#directApplyScale{display:block;width:100%;padding:9px 7px;font-size:11px}
#directEditHud .directAspectSettings .directNote{font-size:10px;line-height:1.55;margin:6px 0 10px}
@media(max-width:700px){#directEditHud{max-height:calc(100dvh - 165px)}}

/* v0.7.60: non-destructive photo aspect audit */
.aspectAuditDialog{width:min(780px,94vw);max-height:88vh;border:1px solid #708077;border-radius:15px;padding:22px;background:#f8f7f3;color:#1b2823;box-shadow:0 20px 70px #0008}
.aspectAuditDialog::backdrop{background:#0009}
.aspectAuditDialog h2{margin:0 0 9px;font-size:21px}
.aspectAuditDialog #aspectAuditStatus{font-size:13px;margin:13px 0;color:#33473b}
.aspectAuditRows{max-height:49vh;overflow:auto;display:grid;gap:8px}
.aspectAuditRow{display:flex;align-items:center;gap:12px;padding:9px;border:1px solid #c6ccc6;border-radius:10px;background:#fff;cursor:pointer}
.aspectAuditRow input{flex:0 0 auto;width:17px;height:17px}
.aspectAuditRow img{width:68px;height:60px;object-fit:contain;background:#e9e9e6;border-radius:5px}
.aspectAuditDesc{display:grid;gap:4px;min-width:0}
.aspectAuditDesc strong{font-size:13px;overflow-wrap:anywhere}
.aspectAuditDesc small{font-size:11px;line-height:1.4;color:#57635b}
.aspectAuditActions{display:flex;flex-wrap:wrap;gap:10px;margin-top:15px}
@media(max-width:620px){.aspectAuditDialog{padding:12px}.aspectAuditRow img{width:50px;height:52px}}

/* v0.7.61 single size slider */
.workPhotoSizeBar{padding:12px;margin:8px 0 12px;background:#eef2ec;border:1px solid #bdcec2;border-radius:10px;display:grid;gap:8px}
.workPhotoSizeBar label{display:flex;align-items:center;justify-content:space-between;gap:12px;font-weight:700}
.workPhotoSizeBar input[type=range],.directAspectSettings input[type=range]{width:100%;height:22px;cursor:pointer;accent-color:#50755c;touch-action:pan-y}
.workPhotoSizeBar output,.directAspectSettings output{font-variant-numeric:tabular-nums;font-weight:800;color:#356148}
.aspectAuditCheck{accent-color:#466950;cursor:pointer}

/* v0.7.63 editable text-board prop */
.propTextEditor{margin:14px 0;padding:16px;border:1px solid #c9d3c8;border-radius:13px;background:#edf1eb;}
.propTextEditor[hidden]{display:none!important;}
.propTextEditor h3{margin:0 0 7px;font-size:16px;}
.propTextEditor label{display:block;margin:10px 0;color:#314238;font-size:13px;font-weight:600;}
.propTextEditor input[type=text],.propTextEditor textarea,.propTextEditor select{width:100%;margin-top:6px;padding:10px 12px;border:1px solid #c6cec5;border-radius:8px;background:#fff;color:#27382e;resize:vertical;}
.propTextEditor input[type=range]{display:block;width:100%;margin-top:10px;accent-color:#41634e;}
.propTextEditor output{font-variant-numeric:tabular-nums;float:right;}

/* v0.7.64 — rotation controls for existing wall text, sign props and panels. */
.rotationControl{display:block;width:100%;margin:12px 0;padding:12px;border:1px solid #d4ded3;border-radius:9px;background:#f3f6f0}
.rotationControl[hidden]{display:none!important}
.rotationControl>label{display:flex;justify-content:space-between;align-items:center;font-size:11px;font-weight:650;margin-bottom:9px}
.rotationControl output{font-variant-numeric:tabular-nums;color:#2d5d40;font-weight:700}
.rotationPresets{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:5px;margin-bottom:9px}
.rotationPresets button{border:1px solid #b9cbbb;background:white;border-radius:6px;padding:8px 2px;font-size:11px;min-width:0}
.rotationPresets button:hover,.rotationPresets button:focus-visible{background:#e4ede5;border-color:#507f5d}
.rotationControl input[type=range]{display:block;width:100%;accent-color:#416f51;cursor:pointer}
.rotationControl .smallNote{margin:7px 0 0;font-size:10px;line-height:1.55}

/* v0.7.65 - Standalone title settings, readable subtitle on public view */
.brand{min-width:0;max-width:min(44vw,480px)}
#brandTitleDisplay{display:block;overflow-wrap:anywhere;line-height:1.22}
#brandSubtitleDisplay{display:block;white-space:normal;overflow-wrap:anywhere;line-height:1.3;letter-spacing:.6px}
#brandSubtitleDisplay[hidden]{display:none!important}
body:not(.editor-authorized) .brand small{display:block}
@media(max-width:870px){.brand{max-width:42vw}#brandSubtitleDisplay{font-size:8px;letter-spacing:0}}
@media(max-width:550px){.brand{max-width:39vw}.brand #brandTitleDisplay{font-size:12px}.brand #brandSubtitleDisplay{font-size:7px}}

/* v0.7.66: Text/image gallery branding – logo always keeps its native aspect ratio. */
.brand #brandTitleDisplay[hidden], .brand #brandLogoDisplay[hidden], #brandTextSettings[hidden], #brandImageSettings[hidden], #brandLogoPreview[hidden], #brandLogoEmpty[hidden]{display:none!important}
.brand #brandLogoDisplay{display:block;object-fit:contain;object-position:left center;height:auto;max-width:100%;max-height:92px;min-height:0}
.brandLogoSample{margin:8px 0;padding:14px;min-height:72px;display:flex;align-items:center;justify-content:flex-start;background:#f4f5f2;border:1px dashed #b1bdb4;border-radius:8px}
.brandLogoSample img{display:block;max-width:100%;max-height:120px;width:auto;height:auto;object-fit:contain}
.brandLogoSample span{color:#7a857b;font-size:11px}
#brandImageSettings label{display:block;font-size:11px;color:#5d6a60;margin:10px 0}
#brandLogoWidth{width:100%;margin-top:9px}
#brandLogoWidthValue{font-weight:700;color:#24382e}
@media(max-width:870px){.brand #brandLogoDisplay{max-height:62px;max-width:100%}}
@media(max-width:550px){.brand #brandLogoDisplay{max-height:46px;max-width:100%}}

/* v0.7.67: no drag/save shortcut in visitor lightbox; cannot stop browser network extraction */
#artDialog #media img.zoomable{-webkit-user-drag:none;-webkit-touch-callout:none;user-select:none;-webkit-user-select:none}


/* v0.7.75 — PC and tablet share a compact horizontal gallery bar.
   Only phone-sized layouts collapse to the hamburger menu. */
.sectionNav{top:14px;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 380px);padding:4px 5px;border-radius:11px;gap:2px;box-shadow:0 3px 15px #142a1b20;overscroll-behavior:contain}
.sectionNavItem{padding:7px 9px;font-size:10px}
.sectionNavLabel{padding:0 7px;font-size:10px}
.sectionMenuToggle[hidden]{display:none!important}
.sectionMenuToggle{display:none;position:relative;min-width:35px;min-height:35px;flex:none;font-size:19px;line-height:1;align-items:center;justify-content:center;border-radius:50%;border:1px solid #e2e6de;background:#faf9f2e8;color:#465c4e;box-shadow:0 2px 12px #243a2714}
.sectionMenuToggle[aria-expanded="true"]{background:#31513d;color:white;border-color:#31513d}
body.editing .sectionMenuToggle,body.direct-editing .sectionMenuToggle,body.prop-editing .sectionMenuToggle,body.lobby-editing .sectionMenuToggle{display:none!important}
/* Tablet portrait: preserve the desktop bar, scroll horizontally when rooms do not fit. */
@media (min-width:701px) and (max-width:900px){
  .sectionNav{left:50%;right:auto;transform:translateX(-50%);width:max-content;top:14px}
  .sectionNavLabel{display:none}
}
/* Phones (including landscape phones): collapse the bar into a toggle menu. */
@media (max-width:700px), (max-height:500px) and (pointer:coarse){
  .mainHeader{z-index:22}
  .sectionMenuToggle:not([hidden]){display:inline-flex}
  .sectionNav{position:fixed;top:58px;left:auto;right:12px;transform:none;width:min(300px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:min(66dvh,460px);padding:8px;display:flex;flex-direction:column;align-items:stretch;gap:3px;overflow-y:auto;overflow-x:hidden;border:1px solid #e0e3dc;border-radius:13px;z-index:23;background:rgba(250,249,245,.98);box-shadow:0 10px 36px #142a1b42;overscroll-behavior:contain}
  .sectionNav:not(.is-open){display:none!important}
  .sectionNavLabel{display:block;padding:6px 9px 8px;font-size:11px}
  .sectionNavItem{display:block;text-align:left;padding:12px 13px;font-size:12px;white-space:normal;line-height:1.4;min-height:42px}
  .sectionNavItem.active{min-width:0}
}
@media (max-width:520px){
  .sectionNav{top:52px;right:9px;width:min(290px,calc(100vw - 18px));max-width:calc(100vw - 18px);padding:7px}
  .sectionMenuToggle{min-width:32px;min-height:32px;font-size:18px}
}

/* v0.7.76: editor-selectable section navigation type; no artwork/room changes. */
.navTypeSettings{margin-top:20px;padding:14px;border:1px solid #dee4da;border-radius:12px;background:#f8faf6}
.navTypeSettings h3{margin:0 0 9px}
.navTypeSettings .fields{margin-bottom:10px}
/* Override legacy breakpoint behavior with the persisted choice. */
body.section-nav-compact .mainHeader{z-index:22}
body.section-nav-compact .sectionMenuToggle:not([hidden]){display:inline-flex!important}
body.section-nav-compact .sectionNav{position:fixed;top:58px;left:auto;right:12px;transform:none;width:min(310px,calc(100vw - 24px));max-width:calc(100vw - 24px);max-height:min(66dvh,460px);padding:8px;display:flex;flex-direction:column;align-items:stretch;gap:3px;overflow-y:auto;overflow-x:hidden;border:1px solid #e0e3dc;border-radius:13px;z-index:23;background:rgba(250,249,245,.98);box-shadow:0 10px 36px #142a1b42;overscroll-behavior:contain}
body.section-nav-compact .sectionNav:not(.is-open){display:none!important}
body.section-nav-compact .sectionNavLabel{display:block;padding:6px 9px 8px;font-size:11px}
body.section-nav-compact .sectionNavItem{display:block;text-align:left;padding:12px 13px;font-size:12px;white-space:normal;line-height:1.4;min-height:42px}
body.section-nav-compact .sectionNavItem.active{min-width:0}
body.section-nav-inline .sectionMenuToggle{display:none!important}
body.section-nav-inline .sectionNav{position:fixed;top:14px;left:50%;right:auto;transform:translateX(-50%);width:max-content;max-width:calc(100vw - 380px);max-height:none;display:flex!important;flex-direction:row;align-items:center;gap:2px;padding:4px 5px;overflow-x:auto;overflow-y:hidden;border-radius:11px;box-shadow:0 3px 15px #142a1b20}
body.section-nav-inline .sectionNavLabel{display:block;padding:0 7px;white-space:nowrap}
body.section-nav-inline .sectionNavItem{display:inline-block;text-align:center;min-height:auto;min-width:0;padding:7px 9px;font-size:10px;white-space:nowrap}
body:is(.editing,.direct-editing,.prop-editing,.lobby-editing,.section-transitioning).section-nav-inline .sectionNav,
body:is(.editing,.direct-editing,.prop-editing,.lobby-editing).section-nav-compact .sectionNav,
body:is(.editing,.direct-editing,.prop-editing,.lobby-editing).section-nav-compact .sectionMenuToggle{display:none!important}
body.section-nav-inline .sectionNav[hidden]{display:none!important}
@media(max-width:700px){
 body.section-nav-inline .sectionNav{top:57px;left:10px;right:10px;transform:none;width:auto;max-width:calc(100vw - 20px)}
 body.section-nav-inline .sectionNavLabel{display:none}
 body.section-nav-compact .sectionNav{top:52px;right:9px;max-width:calc(100vw - 18px)}
}

/* v0.7.78 wall-face tour sequence editor, isolated from photo and frame UI */
.tourWallOrderPanel{margin:18px 0;padding:14px;border:1px solid rgba(95,112,102,.25);border-radius:12px;background:rgba(236,239,234,.45)}
.tourWallOrderPanel h3{margin:0 0 8px}.tourWallToggle{display:flex;align-items:center;gap:7px;margin:10px 0;font-size:13px}.tourWallOrderRows{display:grid;gap:7px;max-height:310px;overflow-y:auto}.tourWallRow{display:flex;align-items:center;justify-content:space-between;gap:9px;padding:7px 9px;background:#fff;border-radius:9px;border:1px solid #e1e5df;font-size:13px}.tourWallButtons{display:flex;gap:4px;flex-shrink:0}.tourWallButtons button{min-width:30px;padding:5px 8px}.tourWallButtons button:disabled{opacity:.25;cursor:default}

/* v0.7.79: Common exhibition settings / per-room lobby poster preview. */
.exhibitionPosterSettings{margin-top:20px;padding:14px;border:1px solid #dee4da;border-radius:12px;background:#f8faf6}
.exhibitionPosterSettings h3{margin:0 0 9px}
.exhibitionPosterPreview{min-height:120px;max-height:290px;display:flex;align-items:center;justify-content:center;padding:12px;background:#f0ede5;border:1px solid #e2e0d8;border-radius:9px;margin-top:8px}
.exhibitionPosterPreview img{display:block;max-width:100%;max-height:260px;width:auto;height:auto;object-fit:contain}
.exhibitionPosterPreview img[hidden],.exhibitionPosterPreview p[hidden]{display:none!important}
.exhibitionPosterPreview p{font-size:12px;color:#788078;text-align:center}
.exhibitionPosterSettings .lobbyUploads{margin:11px 0}

/* v0.7.80: panel movement in common 3D editor, independent of artwork HUD */
#directPanelHud{position:fixed;top:92px;left:18px;width:min(320px,calc(100vw - 28px));max-height:calc(100dvh - 125px);overflow:auto;z-index:43;background:#fbfaf4f5;color:#243e30;padding:15px;border:1px solid #dce4db;border-radius:12px;box-shadow:0 12px 38px #172d2433;backdrop-filter:blur(12px)}
#directPanelHud[hidden]{display:none!important}
#directPanelHud strong{display:block;margin:8px 0;font-size:15px}
#directPanelHud .directNote{font-size:11px;line-height:1.5;color:#57705e}
#directPanelHud .directPanelLabel{display:block;font-size:11px;margin:10px 0}
#directPanelHud .directPanelLabel input{box-sizing:border-box;width:100%;padding:9px;margin-top:5px;border:1px solid #becbbf;border-radius:7px;background:#fff;color:#243e30}
#directPanelHud .directControlRow{display:flex;gap:7px}
#directPanelHud button{min-height:36px}
#directPanelHud #directPanelDone{width:100%}
#directPanelHud #directPanelPickWall.active{background:#315a44;color:#fff}
@media(max-width:700px){#directPanelHud{top:74px;left:8px;padding:11px;width:min(285px,calc(100vw - 16px));max-height:calc(100dvh - 95px)}}

/* v0.7.81: unified public publish in the admin header; all other actions are local applies. */
.headerRight #nasSave.exhibitionPublish{display:none;flex:none;min-width:102px;padding:7px 11px;border:1px solid #9e2e37;border-radius:8px;background:#b53b43;color:#fff;box-shadow:0 3px 14px #802a3530;text-align:center;line-height:1.2}
body.editor-authorized .headerRight #nasSave.exhibitionPublish{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;gap:3px}
#nasSave>span{font-size:12px;font-weight:700;letter-spacing:-.02em;white-space:nowrap}
#serverSaveState{font-size:9px;font-weight:400;color:#ffe1e1;letter-spacing:-.02em;white-space:nowrap}
#nasSave.hasDraft{background:#b92e3e;box-shadow:0 0 0 2px #ffffffbd,0 0 0 4px #c64e5c70}
#nasSave:disabled{opacity:.65;cursor:progress}
#nasSave:hover:not(:disabled){background:#972731}
.exhibitionReset{margin:24px 0 6px;border:1px solid #ead4d0;border-radius:10px;padding:12px;background:#fff9f7}
.exhibitionReset summary{cursor:pointer;font-size:12px;font-weight:700;color:#8b3b3a}
.exhibitionReset button{width:100%;text-align:center}
@media(max-width:870px){.headerRight #nasSave.exhibitionPublish{min-width:91px;padding:6px 8px}#nasSave>span{font-size:11px}#serverSaveState{font-size:8px}}
@media(max-width:480px){.headerRight #nasSave.exhibitionPublish{min-width:80px;padding:5px 6px}#nasSave>span{font-size:10px}#serverSaveState{font-size:7px}}

/* Tablet/mobile: save inside the open editor, rather than behind its overlay. */
#editorPublish{display:none!important}
@media(max-width:870px){body.editing .mainHeader #nasSave{visibility:hidden!important}body.editing #editorPublish{display:inline-flex!important;align-items:center;justify-content:center;font-size:11px;font-weight:700;border-radius:7px;background:#b53b43;color:#fff;padding:8px 10px;border:1px solid #99303a}body.editing #editorPublish.hasDraft{box-shadow:0 0 0 2px #f4c6c6}}
@media(max-width:420px){body.editing #editorPublish{font-size:10px;padding:7px}}

/* v0.7.83 — compact header, long-form authoring, publish status clarity */
.headerRight #currentPreset,.headerRight #currentTheme{display:none!important}
.visuallyHidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
.headerRight #nasSave.exhibitionPublish{
  min-width:0;min-height:0;display:none;flex-direction:row;align-items:center;
  justify-content:center;gap:0;border:0;border-radius:6px;
  background:#b53b43;color:#fff;font-size:12px;font-weight:700;
  padding:11px 15px;line-height:normal;text-align:center;box-shadow:none;
}
body.editor-authorized .headerRight #nasSave.exhibitionPublish{display:inline-flex}
.headerRight #nasSave.hasDraft{box-shadow:none;background:#b53b43}
.headerRight #nasSave.isBusy{cursor:progress;opacity:.82}
@media(max-width:870px){.headerRight #nasSave.exhibitionPublish{padding:8px;font-size:10px}}
#editor textarea,.propTextEditor textarea{resize:vertical;min-height:150px;line-height:1.75;white-space:pre-wrap;overflow-wrap:anywhere}
#workDesc,#panelBody,#propTextBody,#lobby_description,#projectDescription{min-height:215px}
.expandTextAction{display:block;margin:5px 0 12px auto;font-size:11px;border:1px solid #b6c8b8;border-radius:6px;background:#f7faf5;color:#365a43;padding:7px 12px}
.expandedTextDialog{width:min(1000px,96vw);height:min(85dvh,850px);max-height:96dvh;max-width:96vw;box-sizing:border-box;padding:18px;border:1px solid #dae2db;border-radius:12px;background:#fff;color:#27372c;box-shadow:0 14px 70px #15281e55}
.expandedTextDialog[open]{display:flex;flex-direction:column;gap:10px}
.expandedTextDialog::backdrop{background:#07150bc2}
.expandedTextHeader,.expandedTextFoot{display:flex;align-items:center;gap:9px;justify-content:space-between}
.expandedTextHeader strong{font-size:17px}
#expandedTextClose{font-size:24px;padding:0 10px;color:#394a3f}
.expandedTextHint{margin:0;color:#687b6b;font-size:12px;line-height:1.5}
#expandedTextInput{flex:1;min-height:130px;width:100%;box-sizing:border-box;resize:none;line-height:1.85;white-space:pre-wrap;overflow-wrap:anywhere;tab-size:4;font-size:15px;padding:17px;background:#fcfdfb;color:#1e3024;border:1px solid #bacaba;border-radius:9px}
.expandedTextFoot{flex-wrap:wrap;justify-content:flex-end}
#expandedTextCount{font-size:12px;color:#66786b;margin-right:auto}
.expandedTextFoot button{padding:10px 14px;font-size:12px}
@media(max-width:650px){.expandedTextDialog{width:100vw;max-width:100vw;height:94dvh;max-height:94dvh;padding:12px;border-radius:12px 12px 0 0;margin:auto 0 0}#expandedTextInput{font-size:14px;padding:12px}}

/* v0.7.84: physical millimeter entry without changing legacy meter/centimeter data. */
.sizeMmIntro{font-size:11px;line-height:1.55;color:#355944;background:#edf2eb;border-radius:7px;padding:9px 11px;margin:12px 0 4px}
#directEditHud #directWidth,#directEditHud #directHeight,#workWidth,#workHeight,#workActualWidth,#workActualHeight{font-variant-numeric:tabular-nums;font-weight:650}

/* v0.7.87 — contextual front-of-artwork floor footprints. */
#artworkFootHint{position:fixed;z-index:25;pointer-events:none;white-space:nowrap;padding:7px 11px;border-radius:6px;background:#274b37e8;color:#fff;font-size:11px;line-height:1.3;box-shadow:0 5px 20px #172e2480;}
#artworkFootHint[hidden]{display:none!important;}

/* v0.7.91 | Simple Studio navigation - 4 main tasks, existing panes intact */
#editor .studioMainNav{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;padding:10px 9px 8px;background:#f7f8f4;border-bottom:1px solid #e0e7df;flex-shrink:0}
#editor .studioMainNav button{min-width:0;min-height:38px;border-radius:8px;padding:7px 3px;font-size:11px;font-weight:700;white-space:nowrap;color:#53675b;background:transparent}
#editor .studioMainNav button.active{background:#315943;color:#fff;box-shadow:0 2px 9px #20362b20}
#editor .studioMainNav button:focus-visible{outline:2px solid #75ad8c;outline-offset:2px}
#editor .editorTabs{display:flex;gap:6px;padding:7px 10px;background:#fbfcf9;min-height:43px;overflow-x:auto;flex-shrink:0}
#editor .editorTabs button{display:none;flex:1 0 auto;white-space:nowrap;min-height:29px;border:1px solid #dee6df;border-radius:7px;background:#fff;padding:6px 10px;font-size:10px}
#editor .editorTabs button.active{color:#214c37;background:#e5f0e8;border-color:#8fb59d;font-weight:700}
#editor[data-studio-group="exhibition"] .editorTabs button[data-tab="branding"],#editor[data-studio-group="exhibition"] .editorTabs button[data-tab="manage"],
#editor[data-studio-group="space"] .editorTabs button[data-tab="space"],#editor[data-studio-group="space"] .editorTabs button[data-tab="wall"],
#editor[data-studio-group="content"] .editorTabs button[data-tab="works"],#editor[data-studio-group="content"] .editorTabs button[data-tab="props"],#editor[data-studio-group="content"] .editorTabs button[data-tab="panels"],
#editor[data-studio-group="manage"] .editorTabs button[data-tab="file"]{display:inline-flex;justify-content:center;align-items:center}
#studioHelp{padding:8px 13px;background:#eef4ef;color:#536958;font-size:10px;line-height:1.55;flex-shrink:0;border-bottom:1px solid #e1e9e0}
#directEditHud .directAdvanced{border:1px solid #e0e6dc;border-radius:8px;background:#f5f8f3;margin:9px 0}
#directEditHud .directAdvanced summary{cursor:pointer;font-size:11px;font-weight:700;padding:11px;color:#3f5e4d}
#directEditHud .directAdvanced[open]{padding-bottom:8px}
#directEditHud .directAdvanced .directAspectSettings{margin:0 8px 8px}
#directEditHud .directAdvanced>button{margin-left:8px;margin-right:8px;width:calc(100% - 16px)}
@media(max-width:420px){#editor .studioMainNav button{font-size:10px;padding:6px 1px}#editor .editorTabs button{font-size:10px;padding:6px 6px}}

/* v0.7.92 | Reference-based compact 3D editor. Single left-side workspace, 4 icon groups. */
#editor{left:12px;right:auto;top:12px;bottom:12px;width:min(464px,calc(100vw - 24px));height:auto;max-width:calc(100vw - 24px);border-radius:15px;overflow:hidden;
  background:#f8f8f5;display:grid;grid-template-columns:83px minmax(0,1fr);grid-template-rows:auto auto auto minmax(0,1fr);transform:translateX(calc(-100% - 16px));
  box-shadow:0 16px 50px #111a1b40}
body.editing #editor{transform:translateX(0)}
#editor .editorHead{grid-column:1/-1;grid-row:1;padding:13px 15px;min-height:60px;background:#222527}
#editor .editorHead strong{font-size:14px;letter-spacing:.5px}#editor .editorHead small{font-size:9px;letter-spacing:0;color:#bcbfbd}
#editor .editorHeadActions{gap:4px}#editor .editorHeadActions button{min-height:31px;font-size:10px!important}
#editor .studioMainNav{grid-column:1;grid-row:2/5;display:flex;flex-direction:column;justify-content:flex-start;gap:6px;background:#202225;padding:15px 7px;border:0;min-width:0}
#editor .studioMainNav button{display:flex;flex-direction:column;gap:6px;align-items:center;justify-content:center;flex:none;height:78px;border-radius:10px;padding:7px 3px;white-space:normal;line-height:1.25;text-align:center;font-size:11px;background:transparent;color:#c5c7c7}
#editor .studioMainNav button.active{color:#fff;background:#3a4d45;box-shadow:none}
#editor .studioMainNav .studioMenuIcon{font-size:23px;line-height:1.1;min-height:25px;color:inherit}
#editor .editorTabs{grid-column:2;grid-row:2;display:flex;gap:5px;flex-wrap:nowrap;overflow-x:auto;align-items:center;padding:11px 10px 7px;background:#f8f8f5;min-height:48px}
#editor .editorTabs button{font-size:10px;min-height:30px;padding:7px 8px;border-radius:8px;border:1px solid #e1e5df;color:#496051}
#editor .editorTabs button.active{background:#385c49;color:#fff;border-color:#385c49}
#editor #studioHelp{grid-column:2;grid-row:3;margin:0;background:#eef3ed;font-size:10px;padding:8px 12px;min-height:36px;line-height:1.6}
#editor .editorBody{grid-column:2;grid-row:4;min-height:0;overflow-y:auto;padding:13px 15px 30px;background:#f9f9f6}
#editor .tabPane h2{font-size:16px;color:#253e30;margin:5px 0 14px}
#editor .tabPane h2 small{display:none}
#editor .tabPane h3{margin:16px 0 9px}
#editor .tabPane .guide{font-size:10px;line-height:1.6;margin:4px 0 10px;color:#77877a}
#editor .studioAdvancedToggle{width:100%;min-height:36px;text-align:left;background:#edf1ec;color:#42604a;border:1px solid #dce7dd;border-radius:8px;padding:8px 11px;margin:0 0 12px;display:flex;align-items:center;gap:7px;font-size:11px;font-weight:650}
#editor .studioAdvancedToggle span:last-child{margin-left:auto}
#editor .tabPane:not(.studioShowAdvanced) .studioOptional{display:none!important}
#editor .fields{gap:9px;margin:10px 0}
#editor .fields input:not([type=checkbox]):not([type=range]),#editor .fields select,#editor .fields textarea{padding:9px 10px}
#editor .presetCards{gap:7px;margin:10px 0 16px}
#editor .themeCards{margin:8px 0 14px}
#editor .bulkBox,#editor .workRoomSelector,#editor .propLibraryHead,#editor .panelTemplates{margin-top:9px}
#editor .panelTemplates button{min-height:44px;font-size:11px}
#editor .studioOptional[hidden]{display:none!important}
#directEditHud,#propEditHud,#directPanelHud,#lobbyEditHud{left:12px;right:auto;top:79px;width:min(345px,calc(100vw - 24px));max-height:calc(100dvh - 100px);overflow-y:auto}
#directEditHud{background:#fafaf8f4}#directEditHud .directHeader span{font-size:10px}
#directEditHud .studioDirectMore{margin:10px 0;border:1px solid #dfe5df;border-radius:8px;background:#f2f5f0;padding:4px 7px}
#directEditHud .studioDirectMore summary{font-size:11px;font-weight:700;color:#466550;cursor:pointer;padding:8px 5px}
#directEditHud .studioDirectMore>.directControlRow{margin:5px 0}
#directEditHud .studioDirectMore>#directReturnStudio{margin:7px 0;width:100%}
body.editing #mapPanel{right:12px!important}body.editing footer,body.editing .mainHeader,body.editing #walkControls{right:0!important}
@media(max-width:700px){#editor{left:4px;right:auto;top:4px;bottom:4px;width:min(430px,calc(100vw - 8px));max-width:calc(100vw - 8px);grid-template-columns:68px minmax(0,1fr)}#editor .studioMainNav{padding:9px 4px}#editor .studioMainNav button{font-size:10px;height:69px;padding:5px 2px}#editor .studioMainNav .studioMenuIcon{font-size:20px}#editor .editorBody{padding:10px}#editor .editorHead{padding:9px 10px}#editor .editorHead strong{font-size:12px}}

/* v0.7.93 | Single edit entry + contextual add. Existing object controllers stay intact. */
#directEditOpen{display:none!important}
#unifiedEditorTools[hidden]{display:none!important}
#unifiedEditorTools{position:fixed;z-index:54;top:66px;left:12px;display:flex;align-items:flex-start;gap:6px;
  width:max-content;max-width:calc(100vw - 24px);font-size:12px;pointer-events:auto}
#unifiedEditorTools button,#unifiedEditorTools summary{border:1px solid #b9c9bc;border-radius:9px;background:#f8faf6;color:#294431;
  padding:10px 12px;min-height:38px;cursor:pointer;box-shadow:0 3px 12px #17271d24;font-size:12px;line-height:1.25}
#unifiedAddMenu{position:relative}
#unifiedAddMenu summary{list-style:none;display:flex;align-items:center;background:#355c48;color:white;border-color:#355c48;font-weight:700}
#unifiedAddMenu summary::-webkit-details-marker{display:none}
#unifiedAddMenu[open] summary{background:#263f32}
#unifiedAddMenu .unifiedAddOptions{position:absolute;top:44px;left:0;display:grid;gap:4px;min-width:188px;padding:8px;
  border-radius:12px;background:#fafbf8;box-shadow:0 10px 34px #101b1690;border:1px solid #cdd9cd;max-height:65vh;overflow-y:auto}
#unifiedAddMenu .unifiedAddOptions button{white-space:nowrap;box-shadow:none;text-align:left;min-height:40px}
#unifiedAddMenu .unifiedAddOptions button:hover{background:#e7f0e9}
#editor .editorBody,#directEditHud,#propEditHud,#directPanelHud,#lobbyEditHud{overscroll-behavior:contain;touch-action:pan-y}
#editor .editorBody{overflow-y:auto;scrollbar-gutter:stable}
/* Keep the contextual object editor below the global insert/settings toolbar. */
#directEditHud,#propEditHud,#directPanelHud,#lobbyEditHud{top:119px;max-height:calc(100dvh - 130px)}
#editor{top:119px;bottom:12px;max-height:calc(100dvh - 131px)}
#editor .studioMainNav{overflow-y:auto}
@media(max-width:550px){#unifiedEditorTools{top:62px;left:7px;gap:4px}#unifiedEditorTools button,#unifiedEditorTools summary{padding:8px;font-size:11px;min-height:34px}
 #directEditHud,#propEditHud,#directPanelHud,#lobbyEditHud,#editor{top:105px;max-height:calc(100dvh - 114px)}
 #editor{bottom:5px}}

/* The editor dock moved to the LEFT in v0.7.92. Legacy positive translate
   wrongly moved its "hidden" panel into the middle of the viewport. */
body.direct-editing #editor,
body.prop-editing #editor,
body.lobby-editing #editor {transform:translateX(calc(-100% - 24px))!important;pointer-events:none!important}
#editor[aria-hidden="true"]{visibility:hidden;pointer-events:none!important}
#editor[aria-hidden="false"]{visibility:visible}

/* Created objects are edited by clicking them in 3D. Bulk inventories are optional. */
#editor .tabPane:not(.studioInventoryOpen) .studioInventoryItem{display:none!important}
#editor .studioInventoryToggle{display:block;width:100%;min-height:37px;text-align:left;padding:10px 12px;margin:10px 0;
  border:1px solid #d2e2d7;border-radius:8px;background:#eaf0ea;color:#2c4a35;font-weight:700;font-size:12px}
#editor .studioInventoryToggle[aria-expanded="true"]{background:#dce9df}

/* v0.7.95 - expanded CAD-style floor plan, independent of the 3D object's editor */
.tabPane[data-pane="wall"] .tools{flex-wrap:wrap}
.mapEditorToolbar{display:flex;align-items:center;gap:5px;flex-wrap:wrap;margin:10px 0}
.mapEditorToolbar button,.spaceDimensions button{padding:8px 9px;background:#f8fbf8;border:1px solid #cedbd0;border-radius:6px;font-size:11px;color:#2b5143}
.mapEditorToolbar #mapExpand{background:#276d60;color:white;border-color:#276d60}
.mapEditorToolbar span{min-width:43px;text-align:center;font-size:11px;font-variant-numeric:tabular-nums}
.spaceDimensions{display:flex;align-items:end;gap:6px;margin:10px 0 12px;flex-wrap:wrap}
.spaceDimensions label{display:flex;flex:1 1 100px;min-width:90px;flex-direction:column;font-size:10px;color:#5c6d64;gap:3px}
.spaceDimensions input{width:100%;padding:8px;border:1px solid #d2dfd8;border-radius:5px;background:#fff;font-size:12px}
#editMap{height:360px;user-select:none;touch-action:none}
#editMap [data-wall-handle],#editMap [data-space-handle]{cursor:move;pointer-events:all}
body.map-editor-expanded #editor{width:min(94vw,1240px);max-width:100vw}
body.map-editor-expanded .tabPane[data-pane="wall"] #editMap{height:min(65vh,850px);min-height:460px}
body.map-editor-expanded .tabPane[data-pane="wall"] .tools{margin-bottom:8px}
body.map-editor-expanded .tabPane[data-pane="wall"] .guide{margin:6px 0}
@media(max-width:680px){body.map-editor-expanded #editor{width:100vw}.spaceDimensions{gap:4px}.mapEditorToolbar button{padding:6px}.mapEditorToolbar{gap:3px}body.map-editor-expanded .tabPane[data-pane="wall"] #editMap{height:54vh;min-height:330px}}

/* v0.7.97 — blank edit entry: common controls only until an object is clicked. */
#directEditHud.no-work-selection #directReplace,
#directEditHud.no-work-selection #directCutWork,
#directEditHud.no-work-selection #directDeleteWork,
#directEditHud.no-work-selection #directTitle,
#directEditHud.no-work-selection .directName,
#directEditHud.no-work-selection #directLocate,
#directEditHud.no-work-selection #directReturnStudio,
#directEditHud.no-work-selection .sizeMmIntro,
#directEditHud.no-work-selection .directFields,
#directEditHud.no-work-selection .directAdvanced,
#directEditHud.no-work-selection #directSizeNote,
#directEditHud.no-work-selection #directUndo { display:none !important; }
#directEditHud.no-work-selection .directControlRow:empty { display:none !important; }

/* v0.7.98: direct architectural wall editor shares the floating editor layout. */
#wall3dHud{position:fixed;left:15px;top:108px;z-index:25;width:min(354px,calc(100vw - 30px));max-height:calc(100dvh - 128px);overflow:auto;padding:15px;background:#f7f8f3f2;color:#293a2e;border:1px solid #d5e4d9;border-radius:12px;box-shadow:0 12px 40px #12251e30;font-size:12px}
#wall3dHud[hidden]{display:none!important}
#wall3dHud .directHeader{margin:0 0 10px}
#wall3dHud #wall3dStatus{font-size:11px;line-height:1.7;color:#496457;background:#eaf2ea;padding:10px;border-radius:7px}
#wall3dSelectedFields{margin:12px 0;padding:11px 0;border-top:1px solid #dce5dc;border-bottom:1px solid #dce5dc}
#wall3dSelectedFields[hidden]{display:none!important}
#wall3dHud .wall3dInputs{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:12px 0}
#wall3dHud label{display:block;font-size:11px;color:#53675c}
#wall3dHud input{box-sizing:border-box;width:100%;padding:9px;margin-top:5px;border:1px solid #cfded2;border-radius:6px;font-size:12px}
#wall3dHud button.active,#unifiedWallEditor.active{background:#147e70!important;color:white!important;border-color:#147e70!important}
#wall3dHud .directControlRow{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0}
#wall3dHud .directControlRow button{flex:1;min-width:62px;font-size:10px;padding:9px 6px}
#wall3dHud .directNote{font-size:10px;line-height:1.6;color:#697e70}
@media(max-width:680px){#wall3dHud{top:auto;bottom:105px;left:8px;width:min(340px,calc(100vw - 16px));max-height:42dvh}}

/* v0.7.100: instant GLB thumbnail preview and regeneration */
.propAutoThumbPreview{display:flex;align-items:center;gap:12px;margin-top:12px;padding:9px;background:#f6f9f4;border:1px solid #d7e3d5;border-radius:10px;}
.propAutoThumbPreview img{width:118px;height:89px;max-width:42%;object-fit:contain;border:1px solid #e2e9df;border-radius:7px;background:#edf0eb;flex-shrink:0;}
.propAutoThumbPreview span{font-size:11px;line-height:1.55;color:#45674d;min-width:0;overflow-wrap:anywhere;}

/* v0.7.105: nested hanging-image controls honor hidden without layout overrides */
#panelHangingFields[hidden],#panelHangingRow[hidden]{display:none!important;}
#panelHangingFields{border:1px solid #d9e2d9;border-radius:10px;padding:12px;background:#f4f7f3;}
#panelHangingFields input[type=checkbox]{width:18px;min-height:18px;accent-color:#315d44;}

/* v0.7.107: Neutral craft gallery palette picker, touch friendly */
#editor .themeCards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin:10px 0 19px}
#editor .themeCard{min-width:0;min-height:102px;padding:8px;align-items:stretch;gap:5px;text-align:left;border-radius:9px}
#editor .themeCard .swatch{height:47px;border-radius:6px;border:1px solid #4e49451c}
#editor .themeCard small{display:block;font-size:10px;font-weight:650;line-height:1.4;white-space:normal;color:#45574b;word-break:keep-all}
#editor .themeCard .themeNote{font-size:9px;font-weight:400;color:#7c817d;line-height:1.3}
#editor .themeCard.active{border-color:#447256;background:#edf3ee;box-shadow:0 0 0 1px #447256}
@media(max-width:480px){#editor .themeCards{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.7.108 | Android/tablet navigation: no browser text-selection or long-press callout.
   Scope to service nav controls: editable panel text and exhibition captions remain selectable. */
#walkControls, #walkControls *,
footer.serviceToolbar button, footer.serviceToolbar button * {
  -webkit-user-select:none!important;
  user-select:none!important;
  -webkit-touch-callout:none!important;
  -webkit-tap-highlight-color:transparent;
}
#walkControls, #walkControls button, #walkControls svg {
  touch-action:none!important;
  -webkit-user-drag:none;
}
#walkControls {overscroll-behavior:contain;}
#walkControls .walkArrow {display:inline-grid;place-items:center;line-height:1;vertical-align:middle;cursor:pointer;}
#walkControls .walkArrow svg {display:block;pointer-events:none;user-select:none;}
#walkControls .walkArrow:active {background:#dbe9df;}
footer.serviceToolbar button {touch-action:manipulation;}

/* v0.7.109: edit the chosen preset; no extra "custom preset" item */
#editor .themeCustomPanel{border:1px solid #d9dcd8;background:#f5f5f2;padding:12px;border-radius:10px;margin:0 0 20px}
#editor .themeCustomPanel h3{margin:0 0 5px;font-size:12px;color:#313e37}
#editor .themeCustomGrid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:9px 0 12px}
#editor .themeCustomGrid label{display:flex;flex-direction:column;gap:5px;min-width:0;font-size:10px;color:#536056}
#editor .themeCustomGrid input[type=color]{width:100%;height:36px;cursor:pointer;border:1px solid #d4d8d4;border-radius:6px;padding:2px;background:white}
#editor .themeCustomGrid select{width:100%;min-width:0;padding:9px 6px;border:1px solid #d4d8d4;border-radius:6px;background:white;font-size:11px}
#editor .wallMaterialOptions{padding:12px 0;border-top:1px solid #e1e5df;margin-top:12px}

/* v0.7.111 Color Studio — native picker replaced, no three-channel sliders */
input.sgc-native{position:absolute!important;width:1px!important;height:1px!important;opacity:0!important;pointer-events:none!important;clip-path:inset(50%)!important;margin:0!important;padding:0!important}
.sgc-input-button{display:flex!important;flex-direction:row!important;align-items:center!important;gap:9px!important;width:100%!important;min-height:40px!important;padding:5px 10px!important;border:1px solid #cad4cc!important;border-radius:9px!important;background:#fff!important;color:#26362e!important;cursor:pointer!important;text-align:left!important;font:inherit!important;box-sizing:border-box!important;touch-action:manipulation}
.sgc-input-swatch{height:25px;width:42px;flex:none;border-radius:6px;border:1px solid #0002;box-shadow:inset 0 1px 2px #0001}
.sgc-input-hex{font:600 12px/1.2 ui-monospace,SFMono-Regular,Consolas,monospace;letter-spacing:.03em}
.sgc-input-caption{font-size:10px;white-space:nowrap;color:#667a6d;margin-left:auto}
.sgc-input-button:focus-visible{outline:2px solid #507768;outline-offset:2px}
#sgColorStudio.sgc-color-legacy{display:none}
#sgColorStudio.sgColorStudio{position:fixed;inset:0;margin:auto;width:min(620px,calc(100vw - 24px));max-width:620px;max-height:min(91dvh,850px);padding:22px;box-sizing:border-box;overflow:auto;overscroll-behavior:contain;border:1px solid #d9dedd;border-radius:18px;background:#f9faf8;color:#24362b;box-shadow:0 20px 70px #0005;font-family:system-ui,-apple-system,'Noto Sans KR',sans-serif;z-index:2147483647}
#sgColorStudio::backdrop{background:rgba(17,22,18,.58);backdrop-filter:blur(3px)}
#sgColorStudio .sgc-top{display:flex;align-items:start;justify-content:space-between;gap:16px;border-bottom:1px solid #e7ebe7;padding-bottom:12px;margin-bottom:14px}
#sgColorStudio .sgc-eyebrow{font-size:10px;font-weight:700;color:#6e8176;letter-spacing:.12em}
#sgColorStudio h2{font-size:20px;font-weight:750;margin:5px 0 3px;color:#283a30}
#sgColorStudio .sgc-top p{font-size:12px;margin:2px 0;color:#6c7d72}
#sgColorStudio .sgc-close{border:0;background:#eaece9;color:#3d5245;border-radius:50%;width:35px;height:35px;flex:none;font-size:23px;cursor:pointer}
#sgColorStudio .sgc-section-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:13px;font-weight:700;color:#2c4234;margin:14px 0 8px}
#sgColorStudio .sgc-section-heading small{font-size:10px;font-weight:500;color:#7e9084}
#sgColorStudio .sgc-palette-group{margin:0 0 11px}
#sgColorStudio .sgc-palette-group h3{font-size:11px;color:#607066;font-weight:650;margin:0 0 6px}
#sgColorStudio .sgc-swatches{display:grid;grid-template-columns:repeat(12,minmax(0,1fr));gap:6px}
#sgColorStudio .sgc-swatch{width:100%;height:31px;min-width:0;border-radius:6px;border:1px solid #0002;box-shadow:inset 0 1px 1px #fff6;cursor:pointer;touch-action:manipulation;padding:0}
#sgColorStudio .sgc-swatch:focus-visible{outline:3px solid #497960;outline-offset:2px}
#sgColorStudio .sgc-custom{background:#fff;border:1px solid #e2e8e2;border-radius:13px;padding:12px}
#sgColorStudio .sgc-custom .sgc-section-heading{margin-top:0}
#sgColorStudio .sgc-pickrow{display:flex;gap:14px;align-items:stretch;width:100%;height:220px}
#sgColorStudio .sgc-square{position:relative;flex:1;min-width:0;border:1px solid #b8bdb8;border-radius:8px;touch-action:none;cursor:crosshair;background:linear-gradient(to top,#000,transparent),linear-gradient(to right,#fff,hsl(var(--sgc-hue,0),100%,50%));overflow:visible}
#sgColorStudio .sgc-square-marker{position:absolute;width:15px;height:15px;border:2px solid white;border-radius:50%;box-sizing:border-box;box-shadow:0 0 0 1px #34343499,0 1px 5px #0006;transform:translate(-50%,-50%);pointer-events:none}
#sgColorStudio .sgc-hue{width:29px;flex:none;position:relative;border-radius:8px;border:1px solid #adb5ad;cursor:ns-resize;touch-action:none;background:linear-gradient(to bottom,#f00 0%,#ff0 16.666%,#0f0 33.333%,#0ff 50%,#00f 66.666%,#f0f 83.333%,#f00 100%)}
#sgColorStudio .sgc-hue-marker{position:absolute;left:-5px;right:-5px;height:5px;background:#fff;border:1px solid #374b41;border-radius:5px;box-shadow:0 1px 3px #0006;transform:translateY(-50%);pointer-events:none}
#sgColorStudio .sgc-valuebar{margin-top:11px;display:flex;align-items:end;gap:12px}
#sgColorStudio .sgc-sample{width:56px;height:42px;border:1px solid #bcc6bf;border-radius:8px;flex:none}
#sgColorStudio .sgc-hex-label{display:flex;flex-direction:column;gap:5px;flex:1;font-size:11px;color:#62766a;font-weight:600}
#sgColorStudio #sgcHex{margin:0;width:100%;height:42px;box-sizing:border-box;background:#fff!important;border:1px solid #bfcfc3!important;border-radius:9px!important;color:#24362b!important;padding:8px 12px!important;font:600 15px ui-monospace,Consolas,monospace!important;letter-spacing:.06em}
#sgColorStudio #sgcHex.sgc-invalid{border-color:#ae524e!important}
#sgColorStudio .sgc-hint{color:#819087;font-size:11px;margin:8px 0 0}
#sgColorStudio .sgc-recent-wrap .sgc-swatches{display:flex;flex-wrap:wrap;gap:6px}
#sgColorStudio .sgc-recent-wrap .sgc-swatch{flex:0 0 35px;height:29px}
#sgColorStudio .sgc-actions{position:sticky;bottom:-22px;margin:15px -22px -22px;padding:13px 22px 17px;background:#f9faf8;display:flex;gap:9px;justify-content:flex-end;border-top:1px solid #e1e7e1}
#sgColorStudio .sgc-actions button{border-radius:9px;min-height:43px;padding:9px 20px;border:1px solid #cbd6ce;font-size:13px;font-weight:700;cursor:pointer}
#sgColorStudio .sgc-cancel{background:#fff;color:#485d50}
#sgColorStudio .sgc-apply{background:#315b46;color:#fff;border-color:#315b46!important}
@media (max-width:650px){#sgColorStudio.sgColorStudio{padding:15px;max-height:94dvh;border-radius:15px}#sgColorStudio .sgc-swatches{grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}#sgColorStudio .sgc-swatch{height:31px}#sgColorStudio .sgc-pickrow{height:190px;gap:12px}#sgColorStudio .sgc-actions{bottom:-15px;margin:14px -15px -15px;padding:11px 15px 15px}}

/* v0.7.114: clipboards and undo tools belong strictly to active edit mode. */
body:not(.editing) #artworkClipboardTray,
body:not(.editor-authorized) #artworkClipboardTray { display:none!important; }

/* v0.7.115 — The content object itself opens its full editing controls.
   Hide the intermediate template/list view only for an EXISTING selected object.
   '＋ 추가 → 콘텐츠' still exposes every content type normally. */
body.panel-design-direct #editor .tabPane[data-pane="panels"] > h2,
body.panel-design-direct #editor .tabPane[data-pane="panels"] > .guide,
body.panel-design-direct #editor .tabPane[data-pane="panels"] > .panelTemplates,
body.panel-design-direct #editor #panelPlacementGuide,
body.panel-design-direct #editor #panelList {display:none!important}
body.panel-design-direct #editor #panelFields {margin-top:0}

/* v0.7.116: camera/object toggle lives in the unified toolbar, not over the content. */

#unifiedViewNavigate:focus-visible{outline:2px solid #91b79b;outline-offset:2px}
/* Avoid clipping the new camera-mode button on narrow tablets/phones. */
@media(max-width:520px){
 #unifiedEditorTools{flex-wrap:wrap;max-width:calc(100vw - 14px);row-gap:3px;}
 #unifiedEditorTools button,#unifiedEditorTools summary{padding:6px 7px;font-size:10.5px;}
 body.editing #editor{top:139px;max-height:calc(100dvh - 149px);}
}

/* v0.7.119 ceiling banner 360-degree yaw controls */
#panelHangRotationPresets{grid-template-columns:repeat(3,minmax(0,1fr));}
#panelHangRotationControl{margin:0;background:#f5f7f3;}
#panelHangRotationControl .angleNumberLabel{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:12px 0 0;font-size:11px;}
#panelHangRotationControl .angleNumberLabel input{max-width:110px;min-height:38px;margin:0;text-align:center;}
#panelHangRotationControl input[type=range]{min-height:32px;touch-action:pan-y;}

/* v0.7.120 — artwork nameplates: accessible touch-friendly switches */
.nameplateSettings,.nameplateRoomToolbar{border:1px solid #e1e5df;border-radius:10px;padding:12px 14px;margin:14px 0;background:#f7f8f5}
.nameplateSettings h3{margin:0 0 10px;font-size:13px;color:#2b4034}
.nameplateToggle{display:flex!important;align-items:center;gap:12px;cursor:pointer;padding:8px 4px;color:#263b30;font-size:12px}
.nameplateToggle input[type=checkbox],.nameplateRoomCheck input[type=checkbox]{width:19px;height:19px;min-width:19px;accent-color:#3c654e;cursor:pointer}
.nameplateToggle span{display:flex;flex-direction:column;gap:4px}
.nameplateToggle b{font-size:12px}.nameplateToggle small{font-size:10px;color:#718078;line-height:1.5}
.nameplateRoomCheck{display:flex;align-items:center;gap:8px;padding:7px 4px;font-size:12px;color:#415a4a}
.nameplateWorkToggle{border:1px solid #dfe5dc;border-radius:8px;background:#f8faf7;padding:10px!important}

/* SPACEGO 0.7.121 - calm in-gallery media editing */
.mediaPanelFields{margin:12px 0;padding:15px;border:1px solid rgba(156,148,132,.27);border-radius:12px;background:rgba(130,130,128,.055);display:grid;gap:12px}
.mediaPanelFields[hidden]{display:none!important}.mediaPanelFields h3{font-size:14px;letter-spacing:.05em;margin:0}
.mediaPanelFields label{display:flex;flex-direction:column;gap:6px;font-size:13px}
.mediaPanelFields label:has(input[type=checkbox]){flex-direction:row;align-items:center;justify-content:space-between}
.mediaPanelFields input[type=range]{width:100%;accent-color:#596d66;touch-action:pan-y}
.mediaScreenDialog{width:min(94vw,1180px);max-height:94vh;border:1px solid #4b514d;background:#141615;color:#f2f3ef;border-radius:14px;padding:0;box-shadow:0 28px 85px #0008}
.mediaScreenDialog::backdrop{background:rgba(0,0,0,.80)}
.mediaScreenDialog header,.mediaScreenDialog footer{display:flex;align-items:center;justify-content:space-between;padding:12px 18px;gap:15px}
.mediaScreenDialog header button{border:0;background:transparent;color:white;font-size:28px;cursor:pointer}
#mediaScreenContent{width:100%;aspect-ratio:16/9;background:#060606;display:grid;place-items:center}
#mediaScreenContent video,#mediaScreenContent iframe{width:100%;height:100%;object-fit:contain;border:0}
.mediaScreenDialog footer input{vertical-align:middle;accent-color:#b9bdb6}

.galleryAudioControl{position:relative;display:inline-flex;align-items:center}.galleryAudioControl #galleryAudioToggle{font-size:18px}.galleryAudioControl label{position:absolute;bottom:calc(100% + 9px);right:0;display:flex;gap:10px;align-items:center;min-width:240px;border:1px solid #aaa9a2;border-radius:9px;padding:12px;background:#f4f4f0;color:#283531;box-shadow:0 6px 22px #0003;font-size:12px;z-index:99}.galleryAudioControl label[hidden]{display:none!important}.galleryAudioControl input[type=range]{min-width:120px;accent-color:#61766c}

/* v0.7.122 Ambient audio */
.bgmSettings{border:1px solid rgba(133,133,133,.25);border-radius:14px;padding:16px;margin:16px 0;background:rgba(145,145,145,.05)}
.bgmSettings h3{margin:0 0 9px}.bgmSettings .fields{display:grid;gap:10px;margin:8px 0}.bgmSettings input[type="file"]{max-width:100%}
.bgmCheck{display:flex;gap:8px;align-items:center;padding:8px 0}.bgmCheck input{width:17px;height:17px}
.galleryBgmControl{display:flex;gap:6px;align-items:center}.galleryBgmControl button{white-space:nowrap}.galleryBgmSlider{display:flex;gap:5px;align-items:center;font-size:11px}.galleryBgmSlider input{width:74px}.galleryBgmSlider small{display:none}
@media(max-width:780px){.galleryBgmSlider{display:none}.bgmSettings{padding:12px}}


/* v0.7.123: one compact sound button. Audio controls are only shown in a popover. */
.gallerySoundControl{position:relative;display:inline-flex;align-items:center;justify-content:center;flex:0 0 auto}
.utilities #gallerySoundToggle{display:grid;place-items:center;width:36px;min-width:36px;height:34px;padding:0;border-radius:7px;touch-action:manipulation}
#gallerySoundToggle svg{display:block;pointer-events:none}
#gallerySoundToggle .gallerySoundOff{display:none}
#gallerySoundToggle[data-muted="true"] .gallerySoundOff{display:block}
#gallerySoundToggle[data-muted="true"] .gallerySoundOn{display:none}
#gallerySoundPanel[hidden]{display:none!important}
#gallerySoundPanel.gallerySoundPanel{position:absolute;right:-8px;bottom:calc(100% + 12px);z-index:105;width:min(286px,calc(100vw - 22px));max-height:min(70dvh,420px);overflow-y:auto;padding:17px 16px 14px;background:rgba(250,250,247,.98);color:#273b31;border:1px solid #d5dfd5;border-radius:14px;box-shadow:0 14px 42px #162a2340;font-size:12px;touch-action:pan-y}
#gallerySoundPanel .gallerySoundPanelHead{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:13px}
#gallerySoundPanel strong{font-size:14px;font-weight:700}
#gallerySoundPanel .gallerySoundField{display:flex;flex-direction:column;gap:8px;padding:12px 0;border-top:1px solid #e2e8e1}
#gallerySoundPanel .gallerySoundFieldTitle{display:flex;justify-content:space-between;font-size:12px;align-items:center;color:#385445}
#gallerySoundPanel output{font-size:11px;font-variant-numeric:tabular-nums;color:#6c7c72}
#gallerySoundPanel .gallerySoundFieldRow{display:flex;gap:9px;align-items:center}
#gallerySoundPanel input[type="range"]{width:100%;min-width:0;height:22px;accent-color:#416955;cursor:pointer;touch-action:pan-x}
#gallerySoundPanel .gallerySoundNote{font-size:10px;color:#839088}
#gallerySoundPanel button.galleryBgmPlay,#gallerySoundPanel button.gallerySoundMute,
body:not(.editor-authorized) #gallerySoundPanel button{display:inline-flex;align-items:center;justify-content:center;width:auto;height:auto;min-width:0;flex-shrink:0;padding:7px 11px;line-height:1.3;font-size:11px;background:#e5eee6;border:1px solid #cfddd0;color:#365844;border-radius:8px;white-space:nowrap}
#gallerySoundPanel button.gallerySoundMute[aria-pressed="true"]{background:#325e49;color:white}
#gallerySoundPanel button.galleryBgmPlay{min-width:64px}
#gallerySoundPanel button:hover{filter:brightness(.97)}
@media(max-width:550px){#gallerySoundPanel.gallerySoundPanel{right:-3px;bottom:calc(100% + 10px);padding:15px}}

/* v0.7.125 — visitor-facing viewing guide; no editor/admin instructions. */
#helpDialog.visitorHelpDialog{width:min(560px,calc(100vw - 24px));padding:0;border-radius:16px;background:#fafaf8;color:#27332f;max-height:min(90dvh,820px);overflow:auto;box-shadow:0 24px 80px rgba(12,27,22,.32)}
#helpDialog.visitorHelpDialog .close{position:sticky;float:right;top:14px;right:14px;margin:14px 14px -52px 0;background:#f0f1ed;color:#40524a;border:1px solid #e4e8e2;z-index:4}
.visitorHelpHeader{padding:34px 34px 20px;background:linear-gradient(135deg,#f1f4ef,#fafaf8);border-bottom:1px solid #e3e7e0}
.visitorHelpEyebrow{display:block;color:#658476;letter-spacing:.17em;font-size:10px;font-weight:700;margin-bottom:8px}
#helpDialog .visitorHelpHeader h2{font-weight:650;font-size:24px;letter-spacing:-.045em;line-height:1.4;margin:0 30px 8px 0;color:#1f3530}
#helpDialog .visitorHelpHeader p{font-size:13px;line-height:1.65;color:#586961;margin:0}
.visitorHelpBody{padding:4px 34px 8px}
.visitorHelpSection{padding:19px 0 17px;border-bottom:1px solid #e9ebe7}
.visitorHelpSection:last-child{border-bottom:0}
.visitorHelpSection h3{font-size:14px;margin:0 0 13px;font-weight:700;color:#314a40}
.visitorHelpGrid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.visitorHelpItem{display:flex;align-items:flex-start;gap:10px;min-width:0}
.visitorHelpIcon{height:33px;min-width:33px;display:inline-flex;align-items:center;justify-content:center;background:#e9efea;border-radius:9px;color:#4f7869;font-size:19px;font-weight:600}
.visitorHelpItem strong{font-size:12px;font-weight:700;display:block;margin:1px 0 2px}
#helpDialog .visitorHelpItem p{font-size:11px;line-height:1.6;color:#647169;margin:0}
.visitorHelpDevice{font-size:11px;color:#5e6b63;line-height:1.65;margin-top:10px;padding-left:2px}
.visitorHelpDevice span{display:inline-block;font-size:10px;font-weight:700;color:#436454;border:1px solid #ccd8cf;background:#f6f9f5;padding:2px 7px;margin-right:6px;border-radius:20px}
.visitorHelpFooter{padding:14px 34px 24px}
.visitorHelpFooter button{min-height:44px;font-size:13px}
@media(max-width:520px){.visitorHelpHeader{padding:28px 20px 18px}.visitorHelpBody{padding:4px 20px}.visitorHelpFooter{padding:14px 20px 20px}.visitorHelpGrid{grid-template-columns:1fr;gap:12px}#helpDialog .visitorHelpHeader h2{font-size:20px}}

/* v0.7.126 — short, non-navigational fade for artwork teleport. */
#artworkJumpFade{position:fixed;inset:0;z-index:88;background:#e9ebe6;opacity:0;pointer-events:auto;}
#artworkJumpFade[hidden]{display:none!important;}
@media(prefers-reduced-motion:reduce){#artworkJumpFade{transition:none!important;}}

/* v0.7.129 — brief atmospheric rush, not a screen-cut or corridor fly-through. */
#artworkRushVeil{position:fixed;inset:0;z-index:87;pointer-events:none;opacity:0;
 background:radial-gradient(ellipse 68% 64% at 50% 50%,rgba(239,242,237,.62),rgba(237,239,235,.96));}
#artworkRushVeil[hidden]{display:none!important;}

/* v0.7.131: room visibility is distinct from destructive room deletion */
.projectRoomActions .projectRoomDelete{background:#fff4f2;color:#9c3d35;border:1px solid #e4c8c3;border-radius:7px;padding:5px 9px;font-size:11px;min-width:47px}
.projectRoomActions .projectRoomDelete:disabled{opacity:.35;cursor:not-allowed}
.projectRoomActions .projectRoomDelete:hover:not(:disabled){background:#f9e3df}
.lobbyIntroColorControls{display:grid;grid-template-columns:1fr 1fr;gap:12px;padding:12px;border:1px solid #d8dfd5;border-radius:10px;background:#f7f8f5;margin:12px 0}
.lobbyIntroColorControls label{font-size:11px;color:#536557;display:flex;gap:8px;flex-direction:column}
.lobbyIntroColorControls input[type=color]{height:42px;width:100%;border:1px solid #c9d3c8;border-radius:8px;background:#fff;cursor:pointer;padding:3px}
.lobbyIntroColorControls p{grid-column:1/-1;margin:0}

/* Destination gallery controls the transition-screen color, independent of gallery artwork. */
.projectRoomCard .roomTransitionSetting{display:flex;flex-direction:row;align-items:center;justify-content:space-between;gap:9px;background:#f0f3ee;border-radius:8px;padding:7px 10px}
.roomTransitionSetting .roomTransitionColor{height:34px!important;width:88px!important;min-width:88px;border:1px solid #c2d2c4;border-radius:8px;padding:2px;cursor:pointer}
.sectionTransitionEyebrow,.sectionTransitionFoot,.sectionTransitionIndex,.sectionTransitionSub{color:var(--section-transition-text,#dbceb4)}

/* Keep guidance readable regardless of the chosen intro/dialog background. */
#lobbyArrival,#lobbyDialog{color:var(--lobby-intro-fg,#253c30)}
#lobbyArrival p,#lobbyArrival small,#lobbyDialog .lobbyDialogCopy p,#lobbyDialog .lobbyDialogCopy h3{color:var(--lobby-intro-muted,#586c5f)}

/* v0.7.135 — slim capsule drag lock; other editing controls remain enabled. */
#unifiedEditorTools .studioDragLockPill{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:999px;white-space:nowrap;padding:8px 13px;min-height:38px;font-weight:700;background:#edf4ef;border:1px solid #98b7a2;color:#274a37;transition:background-color .15s,border-color .15s,color .15s;}
#unifiedEditorTools .studioDragLockPill .studioLockIcon{font-size:16px;line-height:1;}
#unifiedEditorTools .studioDragLockPill[aria-checked="true"]{background:#31483b;color:#fff;border-color:#31483b;}
#unifiedEditorTools .studioDragLockPill:focus-visible{outline:2px solid #74ad8c;outline-offset:2px;}
@media(max-width:520px){#unifiedEditorTools .studioDragLockPill{padding:6px 10px;min-height:34px;font-size:11px;}}
