:root{
  --paper:#ece8e1;--panel:#e4dfd6;--ink:#181a1b;--muted:#6f6f6a;--line:#c1baad;--accent:#b65037;--dark:#2a2d31;
  --serif:"Iowan Old Style","Palatino Linotype",Palatino,"Times New Roman",serif;
  --sans:Inter,"Helvetica Neue",Arial,sans-serif;--mono:"SFMono-Regular",Consolas,monospace;
}
*{box-sizing:border-box}html,body{min-height:100%}html{overflow-y:auto;overflow-x:hidden}body{margin:0;min-height:100vh;background:var(--paper);color:var(--ink);font-family:var(--sans);overflow-y:auto;overflow-x:hidden}.app-header{height:86px;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:1px solid var(--line);background:rgba(241,238,231,.98)}.eyebrow,.section-no{font:700 8px/1 var(--mono);letter-spacing:.16em;text-transform:uppercase;color:var(--accent)}.app-header h1{font:400 28px/1 var(--serif);margin:8px 0 0}.header-actions{display:flex;gap:8px}.header-actions button,.mini{border:1px solid var(--line);background:transparent;padding:10px 13px;font:700 9px/1 var(--mono);letter-spacing:.08em;cursor:pointer;color:var(--ink)}.header-actions .primary{background:var(--ink);color:#fff;border-color:var(--ink)}.header-actions .is-active,.mini.is-active{border-color:var(--accent);color:var(--accent)}.app-shell{min-height:calc(100vh - 120px);height:auto;display:grid;grid-template-columns:250px minmax(0,1fr) 340px;align-items:stretch}.panel{overflow:visible;background:var(--panel)}.controls-panel{border-right:1px solid var(--line)}.inspector-panel{border-left:1px solid var(--line)}.panel section{padding:22px 20px 24px;border-bottom:1px solid var(--line)}.panel h2{font:400 24px/1 var(--serif);margin:8px 0 20px}.panel label{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:0 0 12px;font-size:11px;color:var(--muted)}.panel label>span{display:flex;align-items:center;gap:5px}.panel input[type="number"],.panel select{width:78px;border:1px solid var(--line);background:var(--paper);padding:7px 8px;font:600 11px/1 var(--mono);color:var(--ink)}.panel select{width:118px}.file-label{display:block!important;border:1px dashed var(--line);padding:10px!important;cursor:pointer}.file-label input{display:block;margin-top:8px;width:100%;font-size:10px}.hint{font-size:10px;line-height:1.5;color:var(--muted);margin:12px 0 0}.viewport-wrap{position:relative;min-width:0;min-height:calc(100vh - 120px);background:#cfc9c0}.viewport-toolbar{position:absolute;z-index:3;left:14px;right:14px;top:14px;display:flex;justify-content:space-between;align-items:center;pointer-events:none}.viewport-toolbar>*{pointer-events:auto}.viewport-toolbar>span{background:rgba(241,238,231,.92);border:1px solid rgba(24,26,27,.18);padding:9px 11px;font:700 8px/1 var(--mono);letter-spacing:.13em}.viewport-toolbar>div{display:flex;gap:6px}.mini{background:rgba(241,238,231,.92);padding:8px 10px}.viewport{width:100%;height:100%;min-height:calc(100vh - 120px)}.viewport canvas{display:block;width:100%;height:100%}.viewport-note{position:absolute;left:14px;bottom:14px;z-index:2;background:rgba(241,238,231,.9);border:1px solid rgba(24,26,27,.16);padding:8px 10px;font-size:9px;color:var(--muted)}.stats{margin:0}.stats div{display:grid;grid-template-columns:1fr auto;align-items:end;padding:11px 0;border-bottom:1px solid var(--line)}.stats dt{font-size:10px;color:var(--muted)}.stats dd{margin:0;font:400 30px/.8 var(--serif)}.decision{font:400 16px/1.45 var(--serif);color:var(--ink)}.legend{list-style:none;padding:0;margin:0;display:grid;gap:10px;font-size:10px;color:var(--muted)}.legend i{display:inline-block;width:10px;height:10px;margin-right:8px;vertical-align:-1px;border:1px solid rgba(0,0,0,.16)}.wall-dot{background:#d7c5a7}.art-dot{background:#b65037}.object-dot{background:#42474b}.app-footer{height:34px;display:flex;align-items:center;justify-content:space-between;padding:0 18px;background:var(--dark);color:rgba(255,255,255,.7);font:600 8px/1 var(--mono);letter-spacing:.08em}.app-footer #status{color:#fff}@media(max-width:1050px){.app-shell{grid-template-columns:220px minmax(0,1fr)}.inspector-panel{display:none}}@media(max-width:760px){body{overflow:auto}.app-header{height:auto;min-height:94px;align-items:flex-start;gap:16px;padding:16px;flex-direction:column}.header-actions{width:100%;overflow:auto}.app-shell{height:auto;display:block}.controls-panel{border-right:0;display:grid;grid-template-columns:1fr}.viewport-wrap{height:68vh;min-height:480px}.app-footer{position:relative}}

.visitor-hud{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);z-index:5;pointer-events:none;display:grid;gap:8px;text-align:center;background:rgba(10,12,13,.82);color:#fff;border:1px solid rgba(255,255,255,.18);padding:18px 22px;min-width:320px;backdrop-filter:blur(6px)}
.visitor-hud[hidden]{display:none}.visitor-hud strong{font:700 10px/1 var(--mono);letter-spacing:.16em}.visitor-hud span{font-size:11px;color:rgba(255,255,255,.72)}
#visitorBtn.is-active{background:var(--accent);color:#fff;border-color:var(--accent)}

.file-label.is-disabled{opacity:.55; cursor:not-allowed;}
.file-label.is-disabled input{pointer-events:none;}

.edit-hud{background:rgba(22,22,22,.92);border-top:2px solid var(--accent);}
body.is-editing #viewport{cursor:grab;}
body.is-editing #viewport.is-dragging{cursor:grabbing;}
#exhibitionKey{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;text-transform:uppercase;}

.edit-tools{display:flex;justify-content:center;gap:10px;pointer-events:auto}
.edit-tools button{border:1px solid rgba(255,255,255,.18);background:rgba(255,255,255,.08);color:#fff;padding:8px 12px;font:700 10px/1 var(--mono);letter-spacing:.08em;cursor:pointer}
.edit-tools button:hover{border-color:rgba(255,255,255,.45);background:rgba(255,255,255,.14)}
.edit-tools button:disabled{opacity:.38;cursor:not-allowed}

/* v2.7.5 panel reorganization */
.panel input[type="text"],.panel textarea{border:1px solid var(--line);background:var(--paper);padding:8px 9px;font:600 11px/1.35 var(--sans);color:var(--ink);border-radius:0}
.panel textarea{resize:vertical;min-height:82px;font-weight:400}
.panel input[readonly]{opacity:.72;cursor:default}
.panel .field-stack{display:grid;grid-template-columns:1fr;align-items:start;gap:7px}
.panel .field-stack>span{display:block}
.panel .field-stack input,.panel .field-stack textarea{width:100%}
.panel-action{width:100%;border:1px solid var(--ink);background:var(--ink);color:#fff;padding:10px 12px;font:700 9px/1 var(--mono);letter-spacing:.08em;cursor:pointer}
.panel-action:hover{opacity:.88}
@media(max-width:1180px){.app-shell{grid-template-columns:220px minmax(0,1fr) 300px}}


/* v2.7.6 artwork metadata editor + visitor card */
.artwork-meta-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:18px 0 10px;padding-top:14px;border-top:1px solid var(--line);font:700 8px/1 var(--mono);letter-spacing:.12em;color:var(--muted)}
.mini-text-btn{border:0;background:transparent;color:var(--accent);font:700 8px/1 var(--mono);letter-spacing:.08em;cursor:pointer;padding:4px 0}
.artwork-editor-list{display:grid;gap:9px}
.artwork-editor-item{border:1px solid var(--line);background:rgba(255,255,255,.2);padding:9px;display:grid;gap:7px}
.artwork-editor-item.is-active{border-color:var(--accent);box-shadow:inset 2px 0 0 var(--accent)}
.artwork-editor-top{display:grid;grid-template-columns:38px 1fr;gap:9px;align-items:center}
.artwork-editor-thumb{width:38px;height:38px;background:#d6d0c6;border:1px solid rgba(0,0,0,.12);object-fit:cover;display:block}
.artwork-editor-index{font:700 8px/1 var(--mono);letter-spacing:.12em;color:var(--accent);margin-bottom:4px}
.artwork-editor-file{font-size:9px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.artwork-editor-fields{display:grid;gap:6px}
.artwork-editor-fields label{display:grid!important;grid-template-columns:1fr;gap:4px!important;margin:0!important;font-size:9px!important}
.artwork-editor-fields input{width:100%!important;padding:6px 7px!important;font-size:10px!important}

.artwork-info-card{position:absolute;right:20px;bottom:20px;z-index:8;width:min(330px,calc(100% - 40px));background:rgba(239,235,227,.97);color:var(--ink);border:1px solid rgba(24,26,27,.28);box-shadow:0 18px 50px rgba(0,0,0,.28);padding:16px 18px 18px;backdrop-filter:blur(8px)}
.artwork-info-card[hidden]{display:none}
.artwork-info-close{position:absolute;right:9px;top:8px;border:0;background:transparent;font:400 24px/1 var(--serif);cursor:pointer;color:var(--ink)}
.artwork-info-image{height:120px;margin:-16px -18px 14px;background:#d8d2c8 center/contain no-repeat;border-bottom:1px solid var(--line)}
.artwork-info-no{font:700 8px/1 var(--mono);letter-spacing:.14em;color:var(--accent)}
.artwork-info-card h3{font:400 27px/1.05 var(--serif);margin:8px 26px 16px 0}
.artwork-info-card dl{margin:0;display:grid;gap:8px}
.artwork-info-card dl div{display:grid;grid-template-columns:70px 1fr;gap:10px;padding-top:8px;border-top:1px solid var(--line)}
.artwork-info-card dt{font:700 8px/1.4 var(--mono);letter-spacing:.08em;text-transform:uppercase;color:var(--muted)}
.artwork-info-card dd{margin:0;font-size:11px;line-height:1.45}
@media(max-width:760px){.artwork-info-card{position:fixed;left:12px;right:12px;bottom:12px;width:auto}}

/* v2.7.7 compact artwork pool + upload metadata modal */
.artwork-compact-list{display:grid;gap:6px;max-height:260px;overflow:auto;padding-right:2px}
.artwork-compact-item{display:grid;grid-template-columns:34px 1fr auto;gap:8px;align-items:center;border:1px solid var(--line);background:rgba(255,255,255,.18);padding:6px}
.artwork-compact-thumb{width:34px;height:34px;object-fit:cover;background:#d6d0c6;border:1px solid rgba(0,0,0,.1)}
.artwork-compact-main{min-width:0}
.artwork-compact-name{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--ink)}
.artwork-compact-meta{margin-top:3px;font:700 7px/1.2 var(--mono);letter-spacing:.08em;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.artwork-compact-edit{border:0;background:transparent;color:var(--accent);font:700 8px/1 var(--mono);letter-spacing:.08em;cursor:pointer;padding:6px}
.artwork-meta-modal{position:fixed;inset:0;z-index:50;background:rgba(11,13,14,.72);display:grid;place-items:center;padding:24px;backdrop-filter:blur(5px)}
.artwork-meta-modal[hidden]{display:none}
.artwork-meta-dialog{position:relative;width:min(760px,94vw);max-height:90vh;overflow:auto;background:var(--paper);border:1px solid rgba(255,255,255,.1);box-shadow:0 28px 90px rgba(0,0,0,.45);display:grid;grid-template-columns:minmax(240px,42%) 1fr}
.artwork-meta-preview{min-height:420px;background:#d4cec4 center/contain no-repeat;border-right:1px solid var(--line)}
.artwork-meta-content{padding:28px 30px 26px;display:flex;flex-direction:column;gap:16px}
.artwork-meta-step{font:700 8px/1 var(--mono);letter-spacing:.14em;color:var(--accent)}
.artwork-meta-content h3{font:400 32px/1 var(--serif);margin:0 0 4px}
.artwork-meta-content label{display:grid!important;grid-template-columns:1fr;gap:6px!important;margin:0!important;font-size:10px!important;color:var(--muted)}
.artwork-meta-content input{width:100%;border:1px solid var(--line);background:#f4f1eb;padding:10px 11px;font:500 12px/1.25 var(--sans);color:var(--ink)}
.artwork-meta-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:8px;padding-top:16px;border-top:1px solid var(--line)}
.artwork-meta-actions button{border:1px solid var(--line);padding:10px 14px;font:700 9px/1 var(--mono);letter-spacing:.08em;cursor:pointer}
.artwork-meta-actions .ghost{background:transparent;color:var(--ink)}
.artwork-meta-actions .primary{background:var(--ink);color:#fff;border-color:var(--ink)}
.artwork-meta-close{position:absolute;right:10px;top:8px;z-index:2;border:0;background:transparent;font:400 28px/1 var(--serif);cursor:pointer;color:var(--ink)}
@media(max-width:700px){.artwork-meta-dialog{grid-template-columns:1fr}.artwork-meta-preview{min-height:220px;border-right:0;border-bottom:1px solid var(--line)}}

/* v2.9.2: exclusive artwork sizes selected during upload */
.artwork-meta-content select{width:100%;min-height:38px;border:1px solid var(--line);background:#f4f1eb;padding:9px 11px;font:600 12px/1.25 var(--sans);color:var(--ink);border-radius:0}
.artwork-meta-content select:focus{outline:2px solid var(--accent);outline-offset:1px}
.meta-size-note{font:400 10px/1.5 var(--sans);color:var(--muted);margin:0}

/* Roof visibility is automatic in edit/plan/visitor modes. */
#roofBtn:disabled{opacity:.45;cursor:not-allowed}

/* v2.9.4 — curator-controlled wall-title scaling */
.sta-title-scale-field {display:grid!important;grid-template-columns:1fr!important;gap:9px!important}
.sta-title-scale-field strong {color:var(--accent);font-variant-numeric:tabular-nums}
.sta-title-scale-field input[type="range"] {width:100%;accent-color:var(--accent);cursor:pointer}
.edit-tools button:disabled {cursor:not-allowed;opacity:.36}

/* v2.9.5: movable exhibition title along W5 */
.sta-title-position-field {display:grid!important;grid-template-columns:1fr!important;gap:9px!important}
.sta-title-position-field strong {color:var(--accent);font-variant-numeric:tabular-nums}
.sta-title-position-field input[type="range"] {width:100%;accent-color:var(--accent);cursor:pointer}

/* STA Visitor runtime — port of AES Virtual Exhibition v1.3.23 control behavior. */
.viewport-wrap:has(.sta-visitor-nav:not([hidden])) .viewport-note{display:none}
.sta-visitor-nav[hidden],.sta-visitor-entry[hidden],.sta-visitor-joystick[hidden],.sta-visitor-help[hidden],.sta-visitor-toast[hidden]{display:none!important}
.viewport-wrap.is-visitor .visitor-hud{top:auto;bottom:68px;left:50%;transform:translateX(-50%);padding:9px 13px;min-width:260px;max-width:calc(100% - 35px);background:rgba(12,17,21,.67);border:1px solid rgba(255,255,255,.19);pointer-events:none;display:flex;gap:12px;align-items:center;justify-content:center;flex-wrap:wrap}
.viewport-wrap.is-visitor .visitor-hud strong{white-space:nowrap}.viewport-wrap.is-visitor .visitor-hud span{font-size:10px}
.sta-visitor-nav{position:absolute;z-index:8;bottom:12px;left:50%;transform:translateX(-50%);display:flex;gap:5px;align-items:center;justify-content:center;max-width:calc(100% - 20px);padding:7px 9px;background:rgba(15,22,30,.87);border:1px solid rgba(255,255,255,.20);border-radius:8px;backdrop-filter:blur(10px)}
.sta-visitor-nav button{cursor:pointer;color:#ecede9;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.14);font:700 13px/1 var(--mono);padding:9px 10px;border-radius:4px;white-space:nowrap}
.sta-visitor-nav button span{font-size:9px;margin-left:5px;letter-spacing:.02em}.sta-visitor-nav button:hover,.sta-visitor-nav button.is-active{background:rgba(198,158,94,.28);border-color:rgba(208,177,126,.75)}
.sta-visitor-nav button:focus-visible,.sta-visitor-entry button:focus-visible{outline:2px solid #d8ba83;outline-offset:2px}
.sta-visitor-entry,.sta-visitor-help{position:absolute;inset:0;z-index:12;display:grid;place-items:center;background:rgba(6,10,14,.71);padding:16px;backdrop-filter:blur(6px)}
.sta-visitor-entry-panel,.sta-visitor-help-card{width:min(430px,100%);padding:34px;background:#111a22;color:#f7f6f1;border:1px solid rgba(227,211,183,.45);box-shadow:0 20px 55px rgba(0,0,0,.35)}
.sta-visitor-eyebrow{font:700 9px var(--mono);letter-spacing:.19em;color:#c7a676}.sta-visitor-entry h2,.sta-visitor-help-card h2{font:400 27px/1.18 var(--serif);margin:17px 0 12px}.sta-visitor-entry p,.sta-visitor-help-card p{font:12px/1.65 var(--sans);color:#d8d8d4}
.sta-visitor-entry button,.sta-visitor-help-card #visitorHelpDone{padding:12px 21px;color:#111914;border:0;background:#e2bc83;font:700 10px var(--mono);cursor:pointer;margin-top:10px}
.sta-visitor-help-card{position:relative}.sta-visitor-help-close{position:absolute;top:12px;right:12px;border:0;background:transparent;color:#fff;font-size:26px;cursor:pointer}
.sta-visitor-toast{position:absolute;top:58px;left:50%;transform:translateX(-50%);z-index:11;padding:10px 14px;color:white;font:12px/1.35 var(--sans);background:rgba(19,26,34,.90);border-radius:4px;text-align:center;max-width:90%}
.sta-visitor-joystick{position:absolute;z-index:9;left:14px;bottom:90px;width:112px;height:112px;border-radius:100%;background:rgba(26,35,44,.62);border:1px solid rgba(255,255,255,.38);touch-action:none;user-select:none;display:none;place-items:center}
.sta-visitor-joystick-knob{width:47px;height:47px;border-radius:100%;background:rgba(222,193,147,.80);border:2px solid #e9dbbf;box-shadow:0 2px 10px #0008;pointer-events:none}
.viewport-wrap.is-visitor canvas{touch-action:none;cursor:grab}.viewport-wrap.is-visitor canvas:active{cursor:grabbing}
.viewport-wrap.is-visitor .artwork-info-card{z-index:10}
@media (pointer:coarse), (max-width:760px){.sta-visitor-joystick:not([hidden]){display:grid}.sta-visitor-nav{bottom:9px;gap:3px;padding:5px}.sta-visitor-nav button{padding:10px 8px;font-size:14px}.sta-visitor-nav button span{display:none}.viewport-wrap.is-visitor .visitor-hud{bottom:131px;max-width:50%;right:12px;left:auto;transform:none;min-width:0}.viewport-wrap.is-visitor .visitor-hud strong{font-size:8px}.viewport-wrap.is-visitor .visitor-hud span{display:none}}
@media(max-width:520px){.sta-visitor-nav{width:calc(100% - 15px);justify-content:space-evenly}.sta-visitor-entry-panel{padding:25px}.sta-visitor-help-card{padding:25px}.sta-visitor-joystick{left:12px}}

.viewport-wrap:fullscreen{width:100vw;height:100vh;min-height:100vh}.viewport-wrap:fullscreen .viewport{height:100%;min-height:100%}

/* v2.9.15: dedicated website visitor page (no curator panels). */
body.site-visitor,body.site-visitor html{margin:0;overflow:hidden;background:#0b1014;color:#eee}
body.site-visitor .app-header,body.site-visitor .controls-panel,body.site-visitor .inspector-panel,body.site-visitor .app-footer,body.site-visitor .viewport-toolbar,body.site-visitor .viewport-note{display:none!important}
body.site-visitor .app-shell{display:block;height:100vh;height:100dvh;min-height:0;width:100vw}
body.site-visitor .viewport-wrap{height:100vh;height:100dvh;min-height:0;width:100vw;margin:0;display:block}
body.site-visitor #viewport{height:100%;min-height:0;width:100%}
body.site-visitor .sta-site-brand{position:fixed;z-index:9;top:20px;left:22px;display:flex;gap:12px;align-items:center;pointer-events:none;color:#faf6ed;text-shadow:0 2px 9px #000b}
.sta-site-brand{display:none}
body.site-visitor .sta-site-brand{display:flex}
.sta-site-logo{font:700 27px/1 var(--sans);letter-spacing:-.07em;color:#fff}
.sta-site-brand-label{font:700 9px/1.35 var(--mono);letter-spacing:.12em;border-left:1px solid #ffffff80;padding-left:12px}
.sta-site-brand-label small{display:block;font:600 8px/1.3 var(--mono);letter-spacing:.11em;color:#e4c79a;margin-top:3px}
body.site-visitor .sta-visitor-entry{position:absolute;inset:0;z-index:12}
body.site-visitor .viewport-wrap.is-visitor .visitor-hud{bottom:78px}
body.site-visitor .artwork-info-card{right:24px;bottom:92px}
@media(max-width:760px){body.site-visitor .sta-site-brand{top:14px;left:14px}body.site-visitor .sta-site-logo{font-size:23px}body.site-visitor .viewport-wrap.is-visitor .visitor-hud{display:none}}
@media(min-width:1300px){.header-actions{gap:6px}.header-actions button{padding:10px 8px;font-size:8px}}

/* WordPress administrative editor */
body.sta-wp-editor #publishWordPressBtn{display:inline-flex!important;align-items:center;justify-content:center;background:#237a54;color:#fff;border-color:#237a54;}
body.sta-wp-editor .app-footer{padding-bottom:12px;}

/* Imported artwork catalogue fields in visitor and editor info cards. */
.artwork-info-card{max-height:min(78vh,760px);overflow-y:auto}
.artwork-info-card .sta-extra-row[hidden]{display:none}
.artwork-info-card .sta-extra-row dd{white-space:pre-line;overflow-wrap:anywhere}

.artwork-meta-content textarea{box-sizing:border-box;min-height:54px;width:100%;border:1px solid var(--line);background:#f4f1eb;padding:10px 11px;font:500 12px/1.4 var(--sans);color:var(--ink);resize:vertical}
.sta-artwork-advanced{border:1px solid var(--line);padding:10px;display:grid;gap:12px}
.sta-artwork-advanced summary{font:700 11px/1.4 var(--sans);cursor:pointer}
.sta-artwork-advanced[open] label{margin:12px 0!important}

/* v0.2.8 — Independent dimensions and type sizes for the entrance title board. */
.sta-board-controls{padding:12px;border:1px solid var(--line);background:rgba(245,241,235,.45);margin:12px 0}
.sta-board-controls-title{margin:0 0 12px;font:700 10px/1.35 var(--sans);letter-spacing:.035em;text-transform:uppercase}
.sta-board-controls-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px 10px}
.sta-board-controls-grid .field-stack{min-width:0;margin:0}
.sta-board-controls-grid .field-stack>span{font-size:10px;line-height:1.35}
.sta-board-controls-grid input[type=number]{width:100%;min-width:0;box-sizing:border-box;font-variant-numeric:tabular-nums}
@media(max-width:420px){.sta-board-controls-grid{grid-template-columns:1fr}}
