/* Presentation-only workspace layer. Remove workspace-modern to restore classic UI.
   Brand palette and semantic processing colors are intentionally independent. */
body.workspace-modern,body.editor-modern {
  --ui-radius: 8px;
  --ui-surface: color-mix(in srgb, var(--ws-surface) 90%, transparent);
  --ui-line: color-mix(in srgb, var(--ws-border) 48%, transparent);
  --ui-shadow: 0 2px 8px rgb(20 20 30 / 5%);
  --ui-success-bg: #baff70;
  --ui-success-ink: #18320b;
  --ui-failure-bg: #d91032;
  --ui-failure-ink: #fff;
}
/* Editor chrome shares workspace tokens. Canvas markers are deliberately excluded:
   their transforms, hit areas, colors and positioning belong to the panorama. */
body.editor-modern:not(.visitor) :is(header,.toolbar,.message,.filmstrip) {background:var(--ui-surface);border-color:var(--ui-line);box-shadow:none;backdrop-filter:none;}
body.editor-modern:not(.visitor) header {padding:10px 16px;border-bottom:1px solid var(--ui-line);}
body.editor-modern header #title {font-size:15px;font-weight:700;}
body.editor-modern header #sceneLabel {font-size:12px;color:var(--ws-muted);max-width:35%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
body.editor-modern:not(.visitor) #back {background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);border-radius:6px;box-shadow:none;padding:8px 12px;font-weight:600;font-size:13px;transform:none;}
body.editor-modern .toolbar {padding:8px 16px;gap:6px;}
body.editor-modern .message {padding:6px 16px;color:var(--ws-muted);font-size:12px;}
body.editor-modern:not(.visitor) :is(.toolbar,.filmstrip,dialog,#arrowStylePanel,#arrowDestinationPanel,#poiPanel) button:not(.close-icon-button):not([data-palette]):not(.colorChoices button):not(.headerColors button) {background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);border-radius:6px;box-shadow:none;transition:background .15s,border-color .15s;}
body.editor-modern:not(.visitor) :is(.toolbar,.filmstrip,dialog,#arrowStylePanel,#arrowDestinationPanel,#poiPanel) button:hover:not(:disabled):not(.close-icon-button):not([data-palette]):not(.colorChoices button):not(.headerColors button) {background:var(--ws-soft);border-color:var(--ws-action);box-shadow:none;transform:none;}
body.editor-modern:not(.visitor) .toolbar button {padding:8px 11px;font-size:12px;font-weight:550;min-height:34px;}
body.editor-modern:not(.visitor) .toolbar :is(#add,#addPoi,#save) {background:var(--ws-action);color:var(--ws-on-action);border-color:var(--ws-action);font-weight:650;}
body.editor-modern:not(.visitor) .toolbar button:disabled {background:var(--ws-soft);color:var(--ws-muted);opacity:.6;box-shadow:none;}
body.editor-modern:not(.visitor) .filmstrip {border-top:1px solid var(--ui-line);padding:6px;}
body.editor-modern:not(.visitor) #scenes button {background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);border-radius:7px;box-shadow:none;font-weight:500;}
body.editor-modern:not(.visitor) #scenes button[aria-current=true] {outline:2px solid var(--ws-action);outline-offset:1px;background:var(--ws-selected);color:var(--ws-text);}
body.editor-modern:not(.visitor) :is(dialog,#arrowStylePanel,#arrowDestinationPanel,#poiPanel) {background:var(--ui-surface);color:var(--ws-text);border:1px solid var(--ui-line);border-radius:var(--ui-radius);box-shadow:0 8px 28px #0002;}
body.editor-modern:not(.visitor) #arrowDestinationPanel {background:color-mix(in srgb,var(--ws-surface) 78%,transparent);}
body.editor-modern:not(.visitor) :is(dialog,#poiPanel,#arrowStylePanel) :is(input,select,textarea) {background:var(--ws-surface);border-color:var(--ui-line);border-radius:6px;}
body.editor-modern:not(.visitor) #destinationScenes button {background:var(--ws-surface);color:var(--ws-text);font-weight:500;}
body.editor-modern:not(.visitor) #destinationScenes button[aria-pressed=true] {background:#e1eee7;color:#183e30;border-color:#356b50;outline:2px solid #356b50;}
body.editor-modern:not(.visitor) #destinationScenes button:disabled {background:var(--ws-soft);color:var(--ws-muted);}
body.editor-modern:not(.visitor) .iconChoices button[aria-pressed=true],body.editor-modern:not(.visitor) #uniformArrowColor[aria-checked=true] {background:var(--ws-selected);color:var(--ws-text);border-color:var(--ws-action);}
body.editor-modern .mediaCard {background:var(--ws-surface);border-color:var(--ui-line);border-radius:8px;}
@media(max-width:600px){body.editor-modern .toolbar{padding:6px;gap:5px;}body.editor-modern:not(.visitor) .toolbar button{padding:7px 8px;}body.editor-modern header #sceneLabel{display:none;}}
body.workspace-modern::before { opacity:.30; }
body.workspace-modern::after { background:color-mix(in srgb,var(--paper) 62%,transparent); }
body.workspace-modern:not(.visitor) :is(.panel,.stats article,.authbox,dialog,.uploadPanel,.empty,.assetcard,.assetgrid .job,#assetPicker,#assetDetails,#tourDialog,#mediaLibrary,#publicationDialog) {
  background:var(--ui-surface);border-color:var(--ui-line);border-radius:var(--ui-radius);box-shadow:var(--ui-shadow);backdrop-filter:none;-webkit-backdrop-filter:none;
}
body.workspace-modern:not(.visitor) #shell main>#mediaLibrary {background:var(--ui-surface);border-color:var(--ui-line);}
body.workspace-modern:not(.visitor) :is(button,.button):not([data-palette]):not(.close-icon-button) {
  border-radius:var(--ui-radius);box-shadow:none;background:var(--ws-action);border-color:transparent;transition:background .15s,border-color .15s;color:var(--ws-on-action);
}
body.workspace-modern:not(.visitor) :is(button,.button):hover:not(:disabled):not([data-palette]):not(.close-icon-button) {transform:none;box-shadow:none;background:var(--ws-hover);}
body.workspace-modern:not(.visitor) :is(button,.button):active:not([data-palette]):not(.close-icon-button) {transform:none;box-shadow:none;}
body.workspace-modern:not(.visitor) :is(button,.button):disabled:not([data-palette]) {background:var(--ws-soft);color:var(--ws-muted);border-color:var(--ui-line);box-shadow:none;cursor:not-allowed;}
body.workspace-modern:not(.visitor) :is(input,select,textarea) {border-radius:6px;border-color:var(--ui-line);background:var(--ws-surface);}
body.workspace-modern :is(button,a,input,select,summary):focus-visible {outline:2px solid var(--ws-action);outline-offset:3px;}
body.workspace-modern:not(.visitor) #shell>aside {background:color-mix(in srgb,var(--ws-surface) 95%,transparent);border-right:1px solid var(--ui-line);color:var(--ws-text);box-shadow:none;backdrop-filter:none;}
body.workspace-modern:not(.visitor) #shell>aside :is(.brand,.asideSub,.asideBottom,.asideBottom span) {color:var(--ws-text);}
body.workspace-modern:not(.visitor) #shell>aside .brand span {color:var(--ws-action);}
body.workspace-modern:not(.visitor) #shell>aside :is(nav button,#sidebarProjects button,#sidebarNewProject,#adminNav,#logout) {color:var(--ws-text);background:transparent;border:1px solid transparent;box-shadow:none;}
body.workspace-modern:not(.visitor) #shell>aside :is(nav button,#sidebarProjects button,#sidebarNewProject,#adminNav,#logout):hover {background:var(--ws-soft);}
body.workspace-modern:not(.visitor) #shell>aside nav button:is(#assetsNav,#projectNav).active,
body.workspace-modern:not(.visitor) #shell #sidebarProjects button[aria-current=page] {background:color-mix(in srgb,var(--ws-action) 10%,var(--ws-surface));color:var(--ws-action);border-color:transparent;box-shadow:inset 3px 0 var(--ws-action);}
body.workspace-modern #shell>aside .asideBottom {border-color:var(--ui-line);}
body.workspace-modern:not(.visitor) #shell .userSettings>summary {background:var(--ws-soft);color:var(--ws-text);border-color:var(--ui-line);border-radius:6px;}
body.workspace-modern .appearanceOption {display:flex;align-items:center;gap:8px;font-size:12px;color:var(--ws-on-action);}
body.workspace-modern .appearanceOption input {width:auto;accent-color:var(--ws-action);}
body.workspace-modern:not(.visitor) #shell .headerAssetSwitch button {background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:var(--ui-radius);color:var(--ws-text);box-shadow:none;padding:12px 16px;}
body.workspace-modern:not(.visitor) #shell .headerAssetSwitch button[aria-pressed=true] {border-color:var(--ws-action);box-shadow:inset 0 -2px var(--ws-action);background:color-mix(in srgb,var(--ws-action) 7%,var(--ws-surface));}
body.workspace-modern #shell .headerAssetSwitch button:hover {background:var(--ws-soft);}
body.workspace-modern #shell h1 {font-size:28px;letter-spacing:-.025em;}
body.workspace-modern #shell h2 {font-size:19px;}
body.workspace-modern #shell .eyebrow {font-size:10px;letter-spacing:.16em;margin-bottom:6px;}
body.workspace-modern #shell .stats article {padding:18px;}
body.workspace-modern #shell .stats strong {font-size:26px;}
body.workspace-modern #shell .uploadPanel {padding:20px;margin:20px 0;}
body.workspace-modern #shell .banner {font-size:12px;padding:11px 14px;}
body.workspace-modern #shell .assetgrid {gap:14px;}
body.workspace-modern #shell .jobActions {padding-bottom:10px;}
body.workspace-modern:not(.visitor) #shell :is(.jobActions,.sceneActions) button,
body.workspace-modern:not(.visitor) #shell #scenes .sceneActions button {background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);box-shadow:none;border-radius:6px;padding:6px 10px;font-size:12px;min-height:32px;}
body.workspace-modern:not(.visitor) #shell :is(.jobActions,.sceneActions) button:hover {background:var(--ws-soft);border-color:var(--ws-border);}
body.workspace-modern:not(.visitor) #shell .jobActions button:disabled {color:var(--ws-muted);background:var(--ws-soft);}
body.workspace-modern:not(.visitor) #shell .sceneActions{border-top:1px solid var(--ui-line);padding-top:10px;margin-top:8px;gap:8px}
body.workspace-modern:not(.visitor) #shell .sceneActions button{background:var(--ws-surface);border-color:var(--ws-border);font-weight:650}
body.workspace-modern:not(.visitor) #shell .sceneActions button:hover{background:var(--ws-selected);border-color:var(--ws-action)}
body.workspace-modern:not(.visitor) #shell .jobActions{border-top:1px solid var(--ui-line);padding-top:10px;margin-top:8px}
body.workspace-modern #shell .mediaCard {background:var(--ui-surface);border-color:var(--ui-line);border-radius:var(--ui-radius);}
body.workspace-modern #shell .mediaCard.is-selected{border-color:var(--ws-action);background:color-mix(in srgb,var(--ws-selected) 72%,var(--ui-surface));box-shadow:0 0 0 3px color-mix(in srgb,var(--ws-action) 42%,transparent)}
body.workspace-modern #shell .metadataPills {gap:5px;}
body.workspace-modern #shell .metaPill {border-radius:6px;font-size:11px;}
/* Status remains strong and constant in every brand palette. */
body.workspace-modern:not(.visitor) .processingStatus {display:inline-flex;align-items:center;gap:4px;font-weight:750;padding:4px 8px;white-space:nowrap;}
body.workspace-modern:not(.visitor) .processingStatus.tone-neon {background:var(--ui-success-bg);color:var(--ui-success-ink);border-color:#70b936;box-shadow:none;}
body.workspace-modern:not(.visitor) .processingStatus.tone-orange {background:#ffe0ad;color:#7d4b0b;border-color:#e2a043;box-shadow:none;}
body.workspace-modern:not(.visitor) .processingStatus.tone-failed {background:var(--ui-failure-bg);color:var(--ui-failure-ink);border-color:#b90827;box-shadow:none;}
body.workspace-modern:not(.visitor) .processingStatus.tone-deleted {background:#eee8e8;color:#65545b;border-color:#bdb0b4;box-shadow:none;}
.processingStatus svg {width:15px;height:15px;fill:none;stroke:currentColor;stroke-width:1.8;vertical-align:middle;flex:none;}
.appearanceOption {display:flex;align-items:center;gap:8px;font-size:12px;}
#railSettings {display:none;}
/* Main destinations are headings; projects form a quieter, indented child list. */
body.workspace-modern:not(.visitor) #shell>aside nav :is(#assetsNav,#projectNav) {font-size:14px;font-weight:750;letter-spacing:.01em;}
body.workspace-modern:not(.visitor) #shell>aside nav button:is(#assetsNav,#projectNav).active {background:var(--ws-action);color:var(--ws-on-action);box-shadow:none;}
body.workspace-modern #sidebarProjects {margin-left:14px;padding-left:10px;border-left:1px solid var(--ui-line);}
body.workspace-modern:not(.visitor) #shell #sidebarProjects button {font-size:12px;font-weight:450;color:var(--ws-muted);padding:8px;}
body.workspace-modern:not(.visitor) #shell #sidebarProjects button[aria-current=page] {font-weight:650;color:var(--ws-action);box-shadow:none;border-color:var(--ui-line);background:color-mix(in srgb,var(--ws-action) 9%,var(--ws-surface));}
body.workspace-modern:not(.visitor) #shell>aside #sidebarNewProject {padding-left:24px;color:var(--ws-muted);font-weight:450;}
.projectOverviewHeader{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:8px 0 16px;padding:22px 24px;border:1px solid var(--ui-line);border-radius:var(--ui-radius);background:var(--ws-surface)}
.projectOverviewHeader h2{font-size:26px!important;margin:0}.projectOverviewHeader h2 span{font-size:14px;font-weight:500;color:var(--ws-muted);margin-left:8px}.projectOverviewHeader p{margin-bottom:0}.projectOverviewTools{display:flex;gap:10px;margin-bottom:16px}.projectOverviewTools input{width:min(360px,100%)}
.projectQuota{display:flex;align-items:center;gap:16px;margin-top:14px}.projectQuotaCopy{display:grid;gap:3px}.projectQuotaCopy strong{font-size:13px;color:var(--ws-text)}.projectQuotaCopy span{font-size:15px;font-weight:700;color:var(--ws-text)}.projectQuotaCopy small{font-size:12px;color:var(--ws-muted)}.projectQuotaSphere{--quota:0%;position:relative;display:grid;place-items:center;flex:none;width:72px;aspect-ratio:1;border-radius:50%;overflow:hidden;border:1px solid color-mix(in srgb,var(--ws-action) 30%,var(--ui-line));background:conic-gradient(from 180deg,var(--ui-success,#b4ff59) 0 var(--quota),color-mix(in srgb,var(--ws-soft) 84%,#8ba7c1) var(--quota) 100%);box-shadow:inset -7px -5px 12px #20334726,inset 5px 5px 12px #ffffff9c,0 3px 8px #20334718}.projectQuotaSphere::before{content:"";position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 32% 22%,#ffffffd9 0 4%,#ffffff70 15%,transparent 38%),radial-gradient(ellipse at 70% 82%,#142b3b35,transparent 55%);pointer-events:none}.projectQuotaSphere span{position:relative;font-size:16px;font-weight:800;color:var(--ws-text);text-shadow:0 1px 3px #fff}
body.workspace-modern #tours.tourgrid{grid-template-columns:repeat(auto-fill,minmax(260px,1fr));gap:16px}
.projectCard{min-width:0;overflow:hidden;border:1px solid var(--ui-line);border-radius:var(--ui-radius);background:var(--ws-surface)}
body.workspace-modern:not(.visitor) #shell .projectCover{position:relative;display:block;width:100%;height:auto;aspect-ratio:2/1;padding:0;border:0;border-radius:0;background:var(--ws-soft);overflow:hidden}
body.workspace-modern:not(.visitor) #shell .projectCover:hover{background:var(--ws-soft)}.projectCover img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .2s ease}.projectCover:hover img{transform:scale(1.02)}
.emptyProjectCover{position:relative;display:grid;place-items:center;width:100%;height:100%;overflow:hidden;background:color-mix(in srgb,var(--ws-soft) 82%,white)}.emptyProjectCover>img{position:absolute!important;inset:2%;width:96%!important;height:96%!important;object-fit:contain!important;opacity:.78;transition:transform .2s ease}.emptyProjectCover>strong{position:relative;z-index:1;font-size:clamp(34px,5vw,58px);font-weight:800;letter-spacing:.03em;color:var(--ws-muted);-webkit-text-stroke:2px var(--ws-surface);paint-order:stroke fill;text-shadow:0 1px 0 #fff8}.projectCover:hover .emptyProjectCover>img{transform:scale(1.02)}
.projectStatus{position:absolute;top:10px;right:10px;padding:4px 9px;border-radius:999px;font-size:11px;font-weight:750;border:1px solid}.projectStatus.isPublished{background:var(--ui-success-bg);color:var(--ui-success-ink);border-color:#70b936}.projectStatus.isDraft{background:color-mix(in srgb,var(--ws-surface) 92%,transparent);color:var(--ws-muted);border-color:var(--ui-line)}
.projectCardBody{padding:16px}.projectCardBody h3{margin:2px 0 12px;font-size:17px;line-height:1.35;min-height:2.7em;overflow-wrap:anywhere}.projectApplication{font-size:11px;font-weight:700;color:var(--ws-action);margin:0}.projectCardBody dl{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:0 0 15px}.projectCardBody dl div{min-width:0}.projectCardBody dt{font-size:10px;color:var(--ws-muted)}.projectCardBody dd{margin:1px 0 0;font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.projectCardActions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.projectCardActions button{padding:7px 5px;font-size:12px}.projectCardActions button span{display:block;font-size:10px;opacity:.8}.projectCardActions button[aria-disabled=true]{background:var(--ws-soft)!important;color:var(--ws-muted)!important;border:1px solid var(--ui-line)!important}.projectCardActions .danger{background:var(--ws-surface)!important;color:#9d3040!important;border:1px solid color-mix(in srgb,#9d3040 35%,var(--ui-line))!important}.projectEmptyState{grid-column:1/-1}.projectEmptyState strong{display:block;font-size:18px;color:var(--ws-text)}

/* Project cards: compact metadata and four evenly sized actions. */
.projectCard{display:flex;flex-direction:column}
.projectCardBody{display:flex;flex:1;flex-direction:column;padding:14px}
.projectCardBody h3{margin:2px 0 7px;min-height:2.5em;line-height:1.25}
.projectApplication{margin-bottom:1px}
.projectCardBody dl{border-top:1px solid var(--ui-line);padding-top:9px;margin:0 0 12px;gap:6px}
.projectCardActions{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:auto}
.projectCardActions button{min-width:0;min-height:48px;padding:6px 3px;font-size:11px;line-height:1.15;white-space:nowrap}
.projectCardActions button span{font-size:10px;margin-top:3px}
.projectCardActions button:disabled{cursor:not-allowed;opacity:.48}
.projectCardActions button[aria-disabled=true]{cursor:not-allowed}
@media(max-width:650px){.projectOverviewHeader{align-items:flex-start;flex-direction:column;padding:18px}.projectOverviewHeader button{width:100%}.projectOverviewTools{display:grid;grid-template-columns:1fr}.projectOverviewTools input{width:100%}body.workspace-modern #tours.tourgrid{grid-template-columns:1fr}.projectQuota{gap:12px}.projectQuotaSphere{width:62px}}
/* Picker cards share semantic status pills with queue and scene management. */
#pickerGrid .pick {grid-template-rows:auto 1.8em auto;}
#pickerGrid .pickerMetadata {display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:5px 10px 10px;text-align:left;}
#pickerGrid .pickerMetadata .metaPill {font-size:11px;border-radius:999px;line-height:1.4;padding:3px 7px;}
#pickerGrid .pickerCategory {background:var(--ws-soft);color:var(--ws-muted);border:1px solid var(--ws-border);font-weight:450;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#pickerGrid .pickerUsage {background:var(--ws-selected);color:var(--ws-text);border:1px solid var(--ws-border);font-weight:600;}
body.workspace-modern:not(.visitor) #assetPicker #pickerGrid .pick {background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);box-shadow:none;border-radius:8px;transform:none;}
body.workspace-modern:not(.visitor) #assetPicker #pickerGrid .pick:hover:not(:disabled) {background:var(--ws-surface);border-color:var(--ws-action);}
body.workspace-modern:not(.visitor) #assetPicker #pickerGrid .pick.selected {background:color-mix(in srgb,var(--ws-action) 6%,var(--ws-surface));border-color:var(--ws-action);box-shadow:inset 0 0 0 1px var(--ws-action);}
body.workspace-modern:not(.visitor) #assetPicker #pickerGrid .pick:disabled {background:var(--ws-surface);color:var(--ws-text);opacity:1;cursor:not-allowed;}
body.workspace-modern #pickerGrid .pickName {font-size:13px;font-weight:600;line-height:1.6;padding-top:4px;}
body.workspace-modern:not(.visitor) #assetPicker .pickerRetry {border:1px solid var(--ui-line);border-radius:6px;color:var(--ws-action);background:var(--ws-surface);font-size:12px;font-weight:600;padding:6px 8px;box-shadow:none;}
body.workspace-modern:not(.visitor) #assetPicker .pickerRetry:hover {background:var(--ws-soft);}
body:not(.visitor) #shell #sidebarToggle {flex:none;width:36px;height:36px;padding:0;margin-right:12px;background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ws-border);border-radius:6px;box-shadow:none;transform:none;}
@media(min-width:0px) {
 body.sidebar-compact:not(.visitor) #shell>aside {width:72px;padding:20px 8px;}
 body.sidebar-compact #shell main {margin-left:72px;}
 body.sidebar-compact #shell>aside :is(.brand,.asideSub,.projectNavigation,.asideBottom) {display:none;}
 body.sidebar-compact #shell>aside nav {margin:0;}
 body.sidebar-compact:not(.visitor) #shell>aside nav :is(#assetsNav,#projectNav) {font-size:0;padding:12px 4px;text-align:center;min-height:44px;width:100%;}
 body.sidebar-compact #assetsNav::before {content:'素材管理';font-size:11px;font-weight:700;}
 body.sidebar-compact #projectNav::before {content:'Project';font-size:11px;font-weight:700;}
 body.sidebar-compact #projectNav>span {display:none;}
 body.sidebar-compact:not(.visitor) #shell>aside #railSettings {display:block;margin-top:auto;min-height:44px;background:transparent;color:inherit;border:1px solid var(--ui-line,var(--ws-border));box-shadow:none;}
}
@media(max-width:760px) {
 body.sidebar-compact #shell>aside {display:none;}
 body.sidebar-compact #shell main {margin-left:0;}
 body.workspace-modern #shell>aside {position:static;width:100%;height:auto;max-height:none;}
 body.workspace-modern #shell main {margin-left:0;padding:18px 14px;}
 body.workspace-modern #shell .projectNavigation {max-height:180px;min-height:60px;}
 body.workspace-modern #shell .asideBottom {display:flex;flex-wrap:wrap;gap:8px;}
 body.workspace-modern #shell .headerAssetSwitch {margin:0;max-width:none;width:100%;flex-basis:100%;}
 body.workspace-modern #shell main>header {flex-wrap:wrap;}
 body.workspace-modern #shell .stats {grid-template-columns:1fr;}
 body.workspace-modern #shell #userSettingsPanel {bottom:auto;top:100%;background:var(--ws-dark);}
}

/* Arrival framing guides remain transparent to panorama dragging. */
.arrivalMode #centerGuide{display:none;}
#arrivalGuides{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;fill:none;}
#arrivalGuides path,#arrivalGuides rect{vector-effect:non-scaling-stroke;}
#arrivalGuides .arrivalGrid{display:none;}
#arrivalGuides .arrivalDiagonals,#arrivalGuides .arrivalCenter{stroke:#e92f4a;stroke-width:1.5;stroke-dasharray:8 6;opacity:.58;}

#arrivalGuides .arrivalFocus{stroke:#f02e49;stroke-width:2;filter:drop-shadow(0 0 1px white);}
#arrivalOverlay .arrivalBar{top:min(var(--arrival-bar-top,calc(50% + 74px)),calc(100% - 160px));bottom:auto;min-width:240px;display:grid;grid-template-columns:repeat(2,minmax(44px,1fr));justify-items:center;justify-content:center;gap:12px;padding:16px 22px;border-radius:24px;background:rgba(255,245,248,.48);border:1px solid rgba(255,255,255,.65);backdrop-filter:blur(5px);box-shadow:0 4px 16px #0002;}
#arrivalOverlay .arrivalInstruction{grid-column:1/-1;white-space:normal;text-align:center;line-height:1.5;font-size:13px;font-weight:600;color:#412630;text-shadow:0 1px 2px #fff9;}
#arrivalOverlay .arrivalDragHint{display:none;}
#arrivalOverlay #arrivalError{grid-column:1/-1;}
body:not(.visitor) #arrivalOverlay .arrivalBar button{width:44px;height:40px;min-width:44px;border-radius:12px;border:1px solid var(--ws-border);background:var(--ws-surface);color:var(--ws-text);box-shadow:none;transform:none;font-size:23px;}
body:not(.visitor) #arrivalOverlay .arrivalBar #arrivalConfirm{background:#b4ff5c;color:#203415;border-color:#82b745;}
body:not(.visitor) #arrivalOverlay .arrivalBar button:hover{filter:brightness(.95);box-shadow:none;transform:none;}
body:not(.visitor) #arrivalOverlay .arrivalBar button:disabled{opacity:.5;cursor:wait;}

body.workspace-modern:not(.visitor) #assetActionDialog{border-radius:8px;box-shadow:0 8px 28px #0002;}
body.workspace-modern:not(.visitor) #assetActionDialog button{background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);border-radius:6px;box-shadow:none;transform:none;padding:9px 14px;}
body.workspace-modern:not(.visitor) #assetActionDialog #assetActionConfirm{background:var(--ws-action);color:var(--ws-on-action);}
body.workspace-modern:not(.visitor) #assetActionDialog[data-impact-level="high"]{border:2px solid #d84b62;box-shadow:0 10px 32px rgb(126 16 37 / 22%);}
body.workspace-modern:not(.visitor) #assetActionDialog[data-impact-level="high"] #assetActionTitle{color:#b4233b;}
body.workspace-modern:not(.visitor) #assetActionDialog[data-impact-level="high"] #assetActionConfirm{background:#c93650;color:#fff;border-color:#a91e38;}
body.workspace-modern:not(.visitor) #assetActionDialog[data-impact-level="low"]{border:1px solid #d8c58e;}
body.workspace-modern:not(.visitor) #assetActionDialog[data-impact-level="low"] #assetActionTitle{color:#765d27;}

/* Compact Project overview: one action row, secondary help on demand. */
body.workspace-modern #editor{padding:20px;}
.projectInfoHeading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:14px;}
.projectEyebrow{font-size:11px;font-weight:700;letter-spacing:.1em;color:var(--ws-muted);}
.projectInfoHeading h2{font-size:20px;margin:4px 0 0;}
.projectActionBar{display:flex;align-items:center;flex-wrap:wrap;gap:10px;padding-bottom:16px;border-bottom:1px solid var(--ui-line);}
.projectActionBar #projectSettings{display:flex;align-items:center;gap:8px;margin:0;}
.projectImportActions{display:flex;gap:8px;margin-left:auto;flex-wrap:wrap;}
body.workspace-modern:not(.visitor) #openTourBuilder{display:inline-flex;align-items:center;min-height:44px;padding:10px 16px;background:var(--ui-success-bg);color:var(--ui-success-ink);border:1px solid #8fb94f;font-size:15px;font-weight:750;box-shadow:none;}
body.workspace-modern:not(.visitor) #openTourBuilder.hidden{display:none;}
body.workspace-modern:not(.visitor) .projectActionBar :is(button,label.button){background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);font-size:13px;padding:9px 12px;box-shadow:none;}
body.workspace-modern:not(.visitor) #projectHelp{width:30px;height:30px;padding:0;border-radius:50%;background:var(--ws-surface);color:var(--ws-muted);border:1px solid var(--ui-line);font-weight:700;}
.thumbnailHeading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:14px 0 10px;}
.thumbnailHeading h3{margin:0;font-size:14px;font-weight:700;}.thumbnailHeading h3 span{font-size:12px;color:var(--ws-muted);font-weight:450;margin-left:8px;}
#projectHelpDialog{width:min(520px,90vw);}#projectHelpDialog h2{font-size:18px;}#projectHelpDialog p{font-size:14px;line-height:1.7;}
@media(max-width:760px){body.workspace-modern #editor{padding:14px;}.projectInfoHeading h2{font-size:17px;}.projectImportActions{margin-left:0;}.projectActionBar{gap:8px;}.projectActionBar #projectSettings{flex-wrap:wrap;}}

.sidebarBrandRow{display:flex;align-items:center;justify-content:space-between;gap:6px;}
#shell .sidebarBrandRow .brand{font-size:clamp(20px,1.7vw,28px);min-width:0;letter-spacing:-1px;}
body:not(.visitor) #shell .sidebarBrandRow #sidebarToggle{margin:0;width:28px;height:32px;flex:0 0 28px;font-size:24px;}
body.sidebar-compact .sidebarBrandRow{justify-content:center;margin-bottom:16px;}
body.sidebar-compact:not(.visitor) #shell>aside nav :is(#assetsNav,#projectNav){white-space:nowrap;border-radius:6px;}
@media(max-width:760px){
 body.sidebar-compact:not(.visitor) #shell>aside{display:flex;position:fixed;top:0;left:0;width:72px;height:100dvh;padding:14px 8px;z-index:10;}
 body.sidebar-compact #shell main{margin-left:72px;min-width:0;}
 body.sidebar-compact #shell>aside :is(.brand,.asideSub,.projectNavigation,.asideBottom){display:none;}
}
/* Compact asset workspace: shared capacity, distinct panorama/media actions. */
body.workspace-modern #shell .headerAssetSwitch button{display:flex;align-items:center;gap:12px;padding:10px 16px;min-height:66px;}
.headerAssetSwitch svg{width:30px;height:30px;fill:none;stroke:currentColor;stroke-width:1.6;flex:none;}
body.workspace-modern #shell #panoramaWorkspace{background:#b7ff62;color:#21330f;border-color:#83b843;box-shadow:none;}
body.workspace-modern #shell #mediaLibraryButton{background:#ffb45c;color:#452709;border-color:#d9903d;box-shadow:none;}
body.workspace-modern #shell .headerAssetSwitch button[aria-pressed=true]{outline:2px solid currentColor;outline-offset:2px;}
body.workspace-modern #shell .headerAssetSwitch strong{font-size:18px;}
body.workspace-modern #shell .headerAssetSwitch small{font-size:12px;color:inherit;opacity:.8;}
.assetStorage{display:flex;align-items:center;gap:24px;padding:12px 16px;border:1px solid var(--ui-line);border-radius:8px;background:var(--ui-surface);margin-bottom:12px;}
.assetStorage>.storageCopy{display:flex;align-items:baseline;gap:14px;flex-wrap:wrap;}
.assetStorage strong{font-size:19px;}.assetStorage small{font-size:12px;color:var(--muted);}
.assetStorage>.meter{flex:1;min-width:100px;max-width:340px;margin:0;height:8px;}
.assetStorage .meter>div{background:#9dde48;}
.assetUploadRow{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;background:var(--ui-surface);border:1px solid var(--ui-line);border-radius:8px;margin-bottom:16px;}
.assetUploadRow h2{font-size:18px;display:flex;align-items:center;gap:8px;margin-bottom:6px;}
.assetUploadRow .chips{gap:5px;}.assetUploadRow .chips span{font-size:11px;padding:2px 7px;border-radius:20px;}
.queueSummary{display:flex;gap:14px;align-items:center;font-size:12px;margin-top:6px;color:var(--muted);}
body.workspace-modern #shell #panoramaUploadLabel{background:#b7ff62;color:#21330f;border:1px solid #83b843;font-weight:650;white-space:nowrap;box-shadow:none;}
body.workspace-modern #shell #mediaLibrary .mediaTools label{background:#ffb45c;color:#452709;border:1px solid #d9903d;padding:8px 12px;border-radius:6px;cursor:pointer;}
body.workspace-modern #shell #mediaLibrary .mediaTools button.active{background:#ffb45c;color:#452709;border-color:#d9903d;}
.mediaStorage{padding:10px 12px;border:1px solid var(--ui-line);border-radius:8px;margin:8px 0;}.mediaStorage p{margin:0;font-size:14px;}.mediaStorage .meter{height:7px;margin:7px 0;}.mediaStorage .meter>div{background:#ffb45c;}.mediaStorage small{font-size:12px;}
body.workspace-modern #shell #assetsTab .sectionTitle{margin:12px 0 8px;}#assetsTab .sectionTitle p{font-size:12px;max-width:850px;}#assetsTab .metaPill{padding:2px 7px;font-size:12px;}
@media(max-width:760px){.assetStorage{align-items:stretch;flex-direction:column;gap:8px;}.assetStorage>.meter{flex:none;max-width:none;}.assetUploadRow{flex-wrap:wrap;}.queueSummary{flex-wrap:wrap;}.headerAssetSwitch svg{width:24px;height:24px;}}

/* Shared storage and clearly scoped queue activity. */
.assetStorage{gap:16px;}.assetStorage>.storageCopy{flex:1;gap:6px 14px;}.storageCopy>span{font-weight:650;}.storageCopy small{flex-basis:100%;}
.queueSummary{flex-wrap:wrap;gap:6px 16px;}.queueHeading{display:inline-flex;align-items:center;gap:7px;}.queueHeading svg{width:18px;height:18px;fill:none;stroke:#537d26;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}.queueHeading>b{font-size:11px;padding:2px 7px;border-radius:20px;background:#edf6e1;color:#36531c;}
#queueSpinner.is-active{animation:queueRotate 2s linear infinite;}@keyframes queueRotate{to{transform:rotate(360deg)}}
@media(prefers-reduced-motion:reduce){#queueSpinner.is-active{animation:none;}}
@media(max-width:760px){.assetStorage{flex-direction:row;align-items:center;flex-wrap:wrap;}.assetStorage>.meter{flex-basis:100%;}.queueSummary>span:not(.queueHeading){flex-basis:100%;}}

.assetStorage>#storageRemaining{position:relative;height:26px;min-width:150px;border-radius:20px;overflow:hidden;}
.assetStorage>#storageRemaining>#usageBar{height:100%;background:#d8efb7;}
#usagePercent{position:absolute;inset:0;display:grid;place-items:center;font-size:12px;font-weight:650;color:#243719;line-height:1;}

.sceneSortControls{display:flex;gap:6px;flex-wrap:wrap;}body .sceneSortControls button{padding:6px 10px;font-size:12px;min-height:32px;background:var(--ui-surface);color:var(--text);border:1px solid var(--ui-line);box-shadow:none;}body .sceneSortControls button[aria-pressed="true"]{background:#b7ff62;color:#21330f;border-color:#88b64e;font-weight:650;}#scenes [draggable="true"]{cursor:grab;}@media(max-width:760px){.thumbnailHeading{flex-wrap:wrap;gap:10px;}}

/* Extend the actual panorama underneath the editing chrome. */
body.editor-modern:not(.visitor){position:relative;overflow:hidden;isolation:isolate;}
body.editor-modern:not(.visitor)>.viewer{position:absolute;inset:0;min-height:0;flex:none;}
body.editor-modern:not(.visitor)>header,body.editor-modern:not(.visitor)>.toolbar,body.editor-modern:not(.visitor)>.filmstrip{position:relative;z-index:5;flex-shrink:0;background:rgba(210,255,157,.65);backdrop-filter:blur(5px);-webkit-backdrop-filter:blur(5px);color:#203117;border-color:rgba(112,157,57,.3);}
body.editor-modern:not(.visitor)>.filmstrip{margin-top:auto;}
body.editor-modern.floorplanMode>.viewer{bottom:var(--floorplan-rail-height,157px)!important}
body.editor-modern.floorplanMode>#currentSceneBar,body.editor-modern.floorplanMode>#sceneFilmstrip{z-index:20}
body.editor-modern:not(.visitor)>.message{position:relative;z-index:5;min-height:0;background:rgba(234,255,214,.85);pointer-events:none;}
body.editor-modern:not(.visitor)>.message:not(:has(#status:not(:empty))){display:none;}
body.editor-modern #help{display:none!important;}
body.editor-modern.arrivalMode>header,body.editor-modern.arrivalMode>.toolbar,body.editor-modern.arrivalMode>.filmstrip,body.editor-modern.arrivalMode>.message{visibility:hidden;pointer-events:none;}

.applicationFallback{align-items:center;flex-wrap:wrap;}.applicationFallback .customInline{display:flex;flex:1;min-width:180px;margin:0;}.applicationFallback .customInline.hidden{display:none;}.applicationFallback .customInline input{width:100%;margin:0;padding:9px 12px;}.customInline .sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0;}

/* Compact naming form: labels, values, and selection have distinct roles. */
.workspace-modern #assetDetails{width:min(760px,94vw);max-width:760px;padding:24px;}
#assetDetailsForm h2{margin:0 0 16px;font-size:22px;}
#assetDetails .namingSummary{display:flex;align-items:center;gap:18px;margin-bottom:16px;}
#assetDetails .detailThumb{width:160px;flex:none;border-radius:8px;}
#assetDetails .namingProjectMeta{display:flex;flex-wrap:wrap;gap:12px 24px;min-width:0;}
#assetDetails .namingProjectMeta p{display:flex;flex-direction:column;gap:4px;margin:0;padding:0;background:none;}
#assetDetails .namingLabel,#assetDetails #sceneNameLabel{font-size:13px;font-weight:700;color:var(--text);}
#assetDetails .namingValue{font-size:14px;font-weight:400;overflow-wrap:anywhere;}
#assetDetails .namingFilename{display:flex;align-items:baseline;gap:12px;margin:0 0 10px;}
#assetDetails #sceneNameToggle{background:rgba(255,255,255,.55);color:var(--text);border:1px solid var(--line);box-shadow:none;font-size:14px;font-weight:400;padding:9px 12px;margin:5px 0 10px;min-height:38px;}
#assetDetails #sceneNamePanel{padding:10px;margin-bottom:8px;background:rgba(255,255,255,.18);}
#assetDetails #sceneNamePanel .applicationGrid{gap:6px;}
#assetDetails #sceneNamePanel button{background:rgba(255,255,255,.5);color:var(--text);border:1px solid var(--line);box-shadow:none;min-height:36px;padding:7px 10px;font-size:13px;font-weight:400;}
#assetDetails #sceneNamePanel button[aria-pressed=true]{background:#b5ff64;color:#19310c;border-color:#75ac3b;font-weight:700;box-shadow:inset 0 0 0 1px #75ac3b;}
#assetDetails #sceneNamePanel button[aria-pressed=true]::before{content:'✓ ';}
#assetDetails .applicationFallback{gap:8px;margin-top:8px;padding-top:8px;}
#assetDetails #customName{min-height:36px;padding:7px 10px;font-size:13px;}
#assetDetails #propertyHint{font-size:12px;margin:8px 0;}
#assetDetails #propertyStatus{font-size:13px;margin:6px 0;}
#assetDetails #propertyStatus:empty{display:none;}
#assetDetailsForm>.inline{margin-top:12px;}
@media(max-width:540px){
 .workspace-modern #assetDetails{padding:16px;}
 #assetDetails .namingSummary{gap:12px;align-items:flex-start;}
 #assetDetails .detailThumb{width:100px;}
 #assetDetails .namingProjectMeta{gap:8px;}
 #assetDetails .namingFilename{flex-wrap:wrap;gap:4px 10px;}
 #assetDetails .namingValue{font-size:13px;}
}

#assetDetails .namingProjectMeta{gap:14px 28px;flex:1;}
#assetDetails .namingProjectMeta p{flex:1;min-width:140px;gap:7px;}
#assetDetails .namingProjectMeta .namingValue{display:block;padding:8px 10px;border:1px solid var(--line);border-radius:6px;background:rgba(255,255,255,.4);}
#assetDetails .namingMetaHeading{display:flex;align-items:center;justify-content:space-between;gap:10px;}
#assetDetails #editSceneApplication{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;min-height:0;padding:3px;background:transparent;color:var(--text);border:1px solid var(--line);box-shadow:none;}
#editSceneApplication svg{width:16px;height:16px;}
@media(max-width:540px){#assetDetails .namingProjectMeta{gap:10px;}#assetDetails .namingProjectMeta p{min-width:120px;}}

#assetDetails .namingProjectMeta{align-items:start;}
#assetDetails .applicationField{position:relative;flex:1;min-width:160px;margin:0;}
#assetDetails #applicationLabel{font-size:13px;font-weight:700;}
#assetDetails #applicationToggle{background:rgba(255,255,255,.4);color:var(--text);border:1px solid var(--line);border-radius:6px;box-shadow:none;padding:8px 10px;font-size:14px;font-weight:400;min-height:38px;margin:7px 0 0;}
#assetDetails #applicationScope{display:block;font-size:11px;margin-top:4px;color:var(--muted);}
#assetDetails #applicationPanel{position:absolute;top:100%;left:0;right:0;z-index:30;max-height:min(260px,40vh);overflow-y:auto;overscroll-behavior:contain;scrollbar-gutter:stable;padding:6px;margin-top:6px;background:var(--ui-surface,#fff);box-shadow:0 8px 24px #0002;}
#assetDetails #applicationPanel .applicationGrid{grid-template-columns:minmax(0,1fr);gap:2px;}
#assetDetails #applicationPanel button{width:100%;min-height:36px;padding:8px 10px;text-align:left;font-size:13px;border-radius:4px;background:transparent;color:var(--text);box-shadow:none;}
#assetDetails #applicationPanel button[aria-pressed=true]{background:#b5ff64;color:#19310c;border-color:#75ac3b;}
#assetDetails #propertyStatus{color:#247043;font-weight:600;}

#assetDetails #applicationPanel .applicationFallback{display:flex;flex-direction:column;gap:2px;margin-top:4px;padding-top:4px;}
#assetDetails #applicationPanel .customInline{flex:auto;width:100%;min-width:0;}

/* Both fields drive one explicitly labelled choice area. */
#assetDetails .namingFieldRow{display:grid;grid-template-columns:2fr 1fr;gap:16px;align-items:start;}
#assetDetails .namingFieldRow>div{min-width:0;}
#assetDetails #namingChoices{border:1px solid var(--line);border-radius:10px;padding:10px;max-height:340px;overflow-y:auto;overscroll-behavior:contain;}
#assetDetails #namingChoicesTitle{font-size:13px;font-weight:700;margin:0 0 8px;}
#assetDetails #applicationPanel,#assetDetails #sceneNamePanel{position:static;max-height:none;overflow:visible;margin:0;padding:0;border:0;background:none;box-shadow:none;}
#assetDetails #applicationPanel .applicationGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;}
#assetDetails #applicationPanel .applicationFallback{flex-direction:row;}
#assetDetails #applicationPanel button{width:auto;text-align:center;}
#assetDetails #applicationToggle[aria-expanded=true],#assetDetails #sceneNameToggle[aria-expanded=true]{border-color:#75ac3b;box-shadow:inset 0 0 0 1px #75ac3b;}
#assetDetails #applicationToggle[aria-expanded=true]>span:last-child{transform:rotate(180deg);}
@media(max-width:540px){#assetDetails .namingFieldRow{grid-template-columns:1fr;gap:8px;}#assetDetails #applicationPanel .applicationGrid{grid-template-columns:repeat(2,minmax(0,1fr));}}

/* Stable choice canvas and identical option surfaces. */
#assetDetails .detailThumb{width:240px;}
#assetDetails .namingProjectMeta{display:flex;flex-direction:column;gap:12px;min-width:0;}
#assetDetails .namingProjectMeta p{display:flex;flex-direction:row;align-items:baseline;gap:10px;min-width:0;width:100%;}
#assetDetails .namingProjectMeta .namingLabel{flex:none;}
#assetDetails .namingProjectMeta .namingValue{padding:0;border:0;background:none;min-width:0;}
#assetDetails #namingChoices{height:310px;max-height:310px;box-sizing:border-box;}
#assetDetails #applicationPanel .applicationGrid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;}
#assetDetails #applicationPanel button,#assetDetails #sceneNamePanel button{background:rgba(255,255,255,.5);color:var(--text);border:1px solid var(--line);border-radius:6px;box-shadow:none;min-height:36px;padding:7px 10px;font-size:13px;font-weight:400;text-align:center;}
#assetDetails #applicationPanel button[aria-pressed=true],#assetDetails #sceneNamePanel button[aria-pressed=true]{background:#b5ff64;color:#19310c;border-color:#75ac3b;font-weight:700;box-shadow:inset 0 0 0 1px #75ac3b;}
#assetDetails #applicationPanel button[aria-pressed=true]::before{content:'✓ ';}
#assetDetails #applicationPanel>.applicationFallback{display:none;}
#assetDetails #sceneNamePanel.customCategory [data-scene-name=""]{display:none;}
#assetDetails #sceneNamePanel.customCategory .applicationFallback{border:0;margin:0;padding:0;}
@media(max-width:540px){#assetDetails .detailThumb{width:150px;}#assetDetails .namingProjectMeta p{flex-wrap:wrap;gap:4px;}#assetDetails #applicationPanel button{padding:7px 3px;font-size:12px;}#assetDetails #namingChoices{height:310px;}}

#assetDetails .namingProjectMeta .namingValue{padding:7px 10px;border:1px solid var(--ui-line,#c9c4bf);border-radius:6px;background:rgba(255,255,255,.45);flex:1;}
#assetDetails #namingChoices{border:1px solid var(--ui-line,#c9c4bf);}
#assetDetails .inlineNameEditor{display:flex;align-items:center;gap:5px;border:1px solid var(--ui-line,#c9c4bf);border-radius:6px;background:rgba(255,255,255,.5);padding:4px;margin:5px 0 10px;}
#assetDetails .inlineNameEditor:focus-within{outline:2px solid #75ac3b;outline-offset:1px;}
#assetDetails .inlineNameEditor #sceneNameToggle{flex:1;min-width:0;width:auto;margin:0;border:0;box-shadow:none;background:none;padding:5px 7px;}
#assetDetails .inlineNameEditor #customNameWrap{flex:1;min-width:0;}
#assetDetails .inlineNameEditor #customName{width:100%;min-width:0;border:0;background:none;padding:5px 7px;box-shadow:none;}
#assetDetails .inlineNameEditor>button[data-scene-name]{flex:none;padding:5px 7px;font-size:12px;min-height:30px;background:transparent;color:var(--text);border:1px solid var(--ui-line,#c9c4bf);box-shadow:none;}
#assetDetails .inlineNameEditor>button[aria-pressed=true]{background:#b5ff64;color:#19310c;border-color:#75ac3b;}

/* Project settings share the naming dialog's fields and choice surfaces. */
#tourDialog .projectFields{display:grid;grid-template-columns:1fr;gap:16px;align-items:start;}
#tourDialog .projectFields>*,#tourDialog .projectFields input{min-width:0;width:100%;box-sizing:border-box;}
#tourDialog .projectFields label,#tourDialog .projectFieldLabel{font-size:13px;font-weight:700;}
#tourDialog #newTitle{display:flex;align-items:center;justify-content:space-between;width:100%;margin:6px 0;padding:10px 12px;min-height:42px;border:1px solid var(--ui-line,#c9c4bf);border-radius:6px;background:rgba(255,255,255,.5);color:var(--text);font-size:14px;font-weight:400;box-shadow:none;}
#tourDialog small{font-size:12px;color:var(--muted);}
#tourDialog #projectApplicationPanel{height:310px;overflow-y:auto;overscroll-behavior:contain;box-sizing:border-box;margin-top:12px;padding:10px;border:1px solid var(--ui-line,#c9c4bf);border-radius:10px;}
#tourDialog #projectApplicationPanel h3{font-size:13px;font-weight:700;margin:0 0 8px;}
#tourDialog #projectApplicationGrid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;}
#tourDialog #projectApplicationGrid button{background:rgba(255,255,255,.5);color:var(--text);border:1px solid var(--ui-line,#c9c4bf);border-radius:6px;box-shadow:none;min-height:36px;padding:7px 10px;font-size:13px;font-weight:400;text-align:center;}
#tourDialog #projectApplicationGrid button[aria-pressed=true]{background:#b5ff64;color:#19310c;border-color:#75ac3b;font-weight:700;box-shadow:inset 0 0 0 1px #75ac3b;}
#tourDialog #projectApplicationGrid button[aria-pressed=true]::before{content:'✓ ';}
#tourDialog #projectStatus{color:#247043;font-weight:600;}
#tourDialog .inline{justify-content:flex-end;}
#tourDialog .inline button{box-shadow:none;background-image:none;}
@media(max-width:540px){#tourDialog .projectFields{grid-template-columns:1fr;gap:8px;}#tourDialog #projectApplicationGrid button{padding:7px 3px;font-size:12px;}}
#tourDialog #projectSubmit{background:#b5ff64;color:#19310c;border:1px solid #75ac3b;font-weight:700;}

#tourDialog .projectTitleInput{display:flex;align-items:center;gap:6px;flex-wrap:wrap;}
#tourDialog .projectTitleInput #newTitle{flex:1;min-width:min(100%,340px);width:auto;}
#tourDialog .projectTitleInput button{padding:7px 8px;min-height:34px;font-size:12px;white-space:nowrap;background:rgba(255,255,255,.5);color:var(--text);border:1px solid var(--ui-line,#c9c4bf);box-shadow:none;}
#tourDialog .projectTitleInput button[aria-pressed=true]{background:#b5ff64;color:#19310c;border-color:#75ac3b;box-shadow:0 0 0 2px rgba(117,172,59,.4);}
#tourDialog #projectTitlePreview{overflow-wrap:anywhere;}

.tilingJob{padding:12px 0;border-top:1px solid var(--ui-line,#c9c4bf)}.tilingJob p{margin:5px 0;font-size:13px}

/* Keep scene count separate from the project name. */
.projectTitleRow{display:flex;align-items:center;flex-wrap:wrap;gap:10px;margin-top:4px;}
.projectInfoHeading .projectTitleRow h2{margin:0;min-width:0;overflow-wrap:anywhere;}
.projectSceneCount{display:inline-flex;align-items:center;padding:4px 10px;border:1px solid var(--ui-line,var(--line));border-radius:999px;background:rgba(181,255,100,.2);color:var(--text);font-size:13px;font-weight:600;line-height:1.4;white-space:nowrap;}
#scenes .photo .number{font-variant-numeric:tabular-nums;min-width:32px;}

#tourDialog .projectApplicationNote{display:block;margin-top:12px;color:var(--muted,#65777a);font-size:12px;}
#tourDialog .projectApplicationModeNote{margin:0 0 8px;color:var(--ws-muted,#65777a);font-size:11px}
#tourDialog .projectCustomApplication{display:grid;gap:5px;margin-top:10px;padding:10px;border:1px solid var(--ws-action,#75ac3b);border-radius:8px;background:color-mix(in srgb,var(--ws-action) 8%,transparent);font-size:12px;font-weight:700}
#tourDialog .projectCustomApplication.hidden{display:none}
#tourDialog .projectCustomApplication input{width:100%;box-sizing:border-box;margin:0;padding:8px 10px;border:1px solid var(--ui-line,#c9c4bf);border-radius:6px;background:var(--ws-surface,#fff);font:inherit;font-weight:400}
#tourDialog #projectSubmit:disabled{opacity:.45;filter:grayscale(.8);cursor:not-allowed}
#tourDialog #projectApplicationGrid button[data-project-application="未分類"]{background:#fff1cf;color:#76521d;border-color:#d9af59;font-weight:750}
#tourDialog #projectApplicationGrid button[data-project-application="未分類"][aria-pressed="true"]{background:#b5ff64;color:#19310c;border-color:#75ac3b;box-shadow:inset 0 0 0 1px #75ac3b}

#tourDialog .projectNameTools{display:inline-flex;align-items:center;gap:6px;flex-shrink:0;}

#scenes .sceneEmptyCard{gap:0}#scenes .sceneEmptyArtwork{aspect-ratio:2/1;display:grid;place-items:center;background:#b3ff5f}#scenes .sceneEmptyArtwork img{width:62%;height:auto;max-height:90%;object-fit:contain}#scenes .sceneEmptyCard p{margin:0;padding:20px 18px;color:var(--ws-text);text-align:center}

body.workspace-modern #projectConfigured{display:inline-flex;align-items:center;background:#b3ff5f;color:#25351c;border:1px solid #85ad52;border-radius:999px;padding:3px 10px;font-size:12px;font-weight:700;white-space:nowrap}
body.workspace-modern .projectImportActions>.button,body.workspace-modern .projectImportActions>button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:64px;padding:12px 18px;font-size:16px;font-weight:700;background:#b3ff5f;color:#25351c;border:1px solid #85ad52}
.projectImportActions img{width:42px;height:36px;object-fit:contain}.projectImportActions small{display:block;font-size:11px;font-weight:400}
body.workspace-modern .projectImportActions .aiImportPlaceholder{background:#edf5e4;opacity:1;cursor:default;color:#65725b}
#scenes.scenesEmpty{grid-template-columns:repeat(3,minmax(0,1fr));max-width:900px}
body.workspace-modern #scenes .sceneEmptyCard{padding:0;text-align:center;gap:0;color:var(--ws-text);background:var(--ws-surface);border:1px solid var(--ui-line);border-radius:10px;overflow:hidden;box-shadow:none}
#scenes .sceneEmptyArtwork{width:100%}#scenes .sceneEmptyArtwork img{width:48%;height:78%;object-fit:contain}#scenes .emptyCardCopy{display:grid;gap:5px;padding:18px 12px}#scenes .emptyCardCopy small{font-size:12px;color:var(--muted)}#scenes .sceneEmptyCard:disabled{opacity:1;cursor:default}#scenes .sceneEmptyCard:disabled .sceneEmptyArtwork{background:#e2efcf}
@media(max-width:650px){#scenes.scenesEmpty{grid-template-columns:1fr}.projectImportActions{width:100%}.projectImportActions>.button,.projectImportActions>button{flex:1}}
body.workspace-modern #editor .projectImportActions>#tourUploadLabel,body.workspace-modern #editor .projectImportActions>#chooseAssets{background:#b3ff5f!important;color:#25351c!important;border-color:#85ad52!important;font-size:16px!important}

/* Project flow: choose/import media, then enter the Tour editor. */
.projectIdentity{flex:1;min-width:0}.projectIdentityRow{display:flex;align-items:center;justify-content:space-between;gap:16px 24px;flex-wrap:wrap}.projectIdentityRow .projectTitleRow{margin:0;min-width:0}.projectIdentityRow #projectSettings{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:0}.projectInfoHeading{align-items:flex-start}.projectHeaderTools{padding-top:18px}
.projectActionBar.projectWorkflow{display:grid;grid-template-columns:minmax(0,2.4fr) 38px minmax(190px,1fr) 38px minmax(190px,1fr);align-items:stretch;gap:12px;margin-top:20px;padding-bottom:20px}.projectWorkflow>section{min-width:0;border:1px solid var(--ui-line);border-radius:14px;padding:16px;background:var(--ws-surface)}.projectWorkflow h3{font-size:17px;margin:0 0 12px;line-height:1.4}.projectWorkflow h3>span{font-size:12px;color:var(--ws-muted);font-weight:450;margin-left:8px}.projectWorkflow .projectImportActions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch;margin:0;gap:10px;width:100%}.projectWorkflow .projectImportActions>:is(button,.button){display:flex;align-items:center;justify-content:center;box-sizing:border-box;width:100%;height:100%;min-width:0;min-height:100px!important;flex-direction:column;gap:8px!important;padding:12px 8px!important;text-align:center;line-height:1.4}.projectWorkflow .projectImportActions img{width:48px;height:42px}.projectWorkflow .projectImportActions>*>span{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:40px}.workflowArrow{display:flex;align-items:center;justify-content:center;padding-top:32px;color:var(--ws-muted)}.workflowArrow svg{width:38px;fill:none;stroke:currentColor;stroke-width:3;stroke-linecap:round;stroke-linejoin:round}body.workspace-modern:not(.visitor) .projectWorkflow :is(#openTourBuilder,#openTourExport){display:flex;align-items:center;justify-content:center;box-sizing:border-box;flex-direction:column;gap:8px;width:100%;min-height:100px;padding:16px;font-size:16px;font-weight:750;line-height:1.4}.projectWorkflow :is(#openTourBuilder,#openTourExport) img{width:48px;height:42px;flex-shrink:0}.projectWorkflow #openTourBuilder{background:#b3ff5f!important;color:#25351c!important;border-color:#85ad52!important}.projectWorkflow #openTourExport{background:#efffdc!important;color:#25351c!important;border-color:#85ad52!important}.projectWorkflow #openTourBuilder small{display:block;font-size:12px;font-weight:450;margin-top:3px}.projectWorkflow #openTourBuilder[aria-disabled=true]{opacity:.5;cursor:default}#editorPrerequisite{font-size:12px;color:var(--ws-muted);margin-top:8px}
@media(max-width:1150px){.projectActionBar.projectWorkflow{grid-template-columns:minmax(0,1.7fr) 24px minmax(160px,1fr) 24px minmax(160px,1fr);gap:8px}.workflowArrow svg{width:24px}.projectWorkflow>section{padding:12px}body.workspace-modern:not(.visitor) .projectWorkflow :is(#openTourBuilder,#openTourExport){gap:8px;font-size:14px}}
@media(max-width:760px){.projectIdentityRow{gap:12px}.projectHeaderTools{padding-top:0}.projectActionBar.projectWorkflow{grid-template-columns:1fr;gap:8px}.workflowArrow{padding:0;height:28px}.workflowArrow svg{transform:rotate(90deg);width:28px}.projectWorkflow .projectImportActions>:is(button,.button){font-size:13px!important;min-height:105px!important}.projectWorkflow .projectImportActions img{width:42px;height:36px}body.workspace-modern:not(.visitor) .projectWorkflow :is(#openTourBuilder,#openTourExport){flex-direction:row;min-height:86px}.projectWorkflow :is(#openTourBuilder,#openTourExport) img{width:48px;height:48px}}
body.workspace-modern:not(.visitor) .projectWorkflow #openTourBuilder{flex-direction:column;gap:8px;font-size:16px}.projectWorkflow #openTourBuilder img{width:48px;height:42px}@media(max-width:760px){body.workspace-modern:not(.visitor) .projectWorkflow #openTourBuilder{flex-direction:row}.projectWorkflow #openTourBuilder img{width:52px;height:52px}}

#shell .sidebarBrandRow .brand.studioBrand{font-size:20px;line-height:1.2;letter-spacing:-.4px;white-space:normal;overflow-wrap:normal}.authbox .brand.studioBrand{font-size:30px;line-height:1.2;letter-spacing:-.5px}

/* Brand hierarchy and consistent primary navigation. */
#shell .sidebarBrandRow{position:relative;align-items:flex-start;padding-top:0;padding-right:0}
#shell .sidebarBrandRow .brand.studioBrand{width:100%;padding-right:0}
#shell .sidebarBrandRow .studioBrand strong{display:block;font-size:clamp(30px,3vw,44px);font-weight:800;line-height:1.05;letter-spacing:-1.4px}
#shell .sidebarBrandRow .studioBrand small{display:block;font-size:14px;font-weight:350;line-height:1.5;letter-spacing:-.3px;margin-top:7px;padding-right:30px}
body:not(.visitor) #shell .sidebarBrandRow #sidebarToggle{position:absolute;right:0;bottom:0}
body:not(.visitor) #shell>aside nav #assetsNav{border:1px solid var(--ui-line,#c6c6bc);border-radius:10px}
body:not(.visitor) #shell>aside nav #projectNav{display:flex;align-items:center;justify-content:space-between;gap:8px}
#projectNav>span{margin-left:auto;line-height:1;display:inline-flex;align-items:center}
body.workspace-modern:not(.visitor) .projectWorkflow #openTourBuilder{font-size:16px;font-weight:750}

body.workspace-modern:not(.visitor) .projectWorkflow :is(#tourUploadLabel,#chooseAssets,#openTourBuilder){font-weight:750!important}

body.workspace-modern:not(.visitor) #shell>aside nav #assetsNav{border:1px solid var(--ui-line,#c6c6bc)!important;background:var(--ws-surface)!important}
#shell .sidebarBrandRow{padding:0 0 20px;margin-bottom:18px;border-bottom:1px solid var(--ui-line,#ccc)}
body:not(.visitor) #shell .sidebarBrandRow #sidebarToggle{position:absolute;right:-15px;top:-19px;bottom:auto;width:30px;height:30px;display:grid;place-items:center;padding:6px;border-radius:8px;background:var(--ws-surface);border:1px solid var(--ui-line)}
#sidebarToggle svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
#sidebarResize{position:absolute;right:-4px;top:0;bottom:0;width:8px;cursor:col-resize;touch-action:none;z-index:12;outline-offset:1px}
#sidebarResize:hover,#sidebarResize:focus-visible{background:#b3ff5f66}
body.sidebar-compact #sidebarResize{display:none}
@media(min-width:761px){body:not(.sidebar-compact) #shell>aside{width:var(--sidebar-width,280px)}body:not(.sidebar-compact) #shell>main{margin-left:var(--sidebar-width,280px)}body.sidebar-compact #shell .sidebarBrandRow{padding:0;margin-bottom:24px;border:0}body.sidebar-compact #shell .sidebarBrandRow #sidebarToggle{position:static}body.resizing-sidebar{cursor:col-resize;user-select:none}}
@media(max-width:760px){#sidebarResize{display:none}}

/* One compact editor row; panels never extend behind navigation or thumbnails. */
body.editor-modern:not(.visitor)>header{display:flex;align-items:center;flex-wrap:wrap;gap:8px;padding:8px 14px;background:rgba(210,255,157,.65)!important;}
body.editor-modern:not(.visitor)>header>.toolbar{display:flex;align-items:center;flex:1;gap:7px;padding:0;background:transparent!important;border:0;box-shadow:none;backdrop-filter:none;}
body.editor-modern:not(.visitor)>header>#back{flex:none;font-size:12px;padding:8px 11px;min-height:34px;background:rgba(255,255,255,.72);}
body.editor-modern:not(.visitor) .toolbar #add{background:#b4ff5c!important;color:#203415!important;border-color:#82b745!important;font-weight:700;}
body.editor-modern:not(.visitor) .toolbar #addPoi{background:#ffe56a!important;color:#42380b!important;border-color:#c7ab36!important;font-weight:700;}
body.editor-modern:not(.visitor) .toolbar :is(#add,#addPoi):disabled{opacity:.45;}
body.editor-modern:not(.visitor) :is(#poiPanel,#arrowStylePanel,#arrowDestinationPanel){max-height:calc(100% - var(--editor-panel-top,70px) - var(--editor-panel-bottom,120px));overflow:auto;overscroll-behavior:contain;}
body.editor-modern:not(.visitor) #poiPanel{top:var(--editor-panel-top,70px);bottom:var(--editor-panel-bottom,120px);width:min(440px,calc(100% - 24px));padding:12px;border-radius:16px;}
body.editor-modern:not(.visitor) #poiPanel>.poiHeading{top:-12px;padding:8px 0;background:var(--ui-surface);}
body.editor-modern:not(.visitor) #poiPanel .richBody .tiptap{min-height:100px;max-height:220px;}
.markerSettings.markerLock{left:50%;top:-30px;transform:translateX(-50%);}
.markerSettings.markerLock:hover:not(:disabled),.markerSettings.markerLock:active:not(:disabled){transform:translateX(-50%)!important;box-shadow:0 2px 7px #0005!important;}

/* Compact editor chrome: one row for navigation, tools, and save status. */
body.editor-modern:not(.visitor)>header{display:grid!important;grid-template-columns:max-content minmax(520px,1fr) minmax(120px,220px);align-items:center;gap:18px;padding:8px 14px!important;}
body.editor-modern:not(.visitor)>header>.toolbar{justify-self:center;justify-content:center;min-width:0;width:auto;}
body.editor-modern:not(.visitor)>header>.message{display:block!important;min-width:0;margin:0!important;padding:0!important;border:0!important;background:transparent!important;overflow:hidden;}
body.editor-modern:not(.visitor)>header #status{display:block;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:#536057;font-size:12px;font-weight:700;line-height:34px;text-align:right;}
body.editor-modern:not(.visitor)>header #status.isOverflowing{animation:editorStatusMarquee 8s linear infinite;text-overflow:clip;}
@keyframes editorStatusMarquee{0%,12%{text-indent:0}88%,100%{text-indent:-45%}}

/* POI type choices replace the tall native select with one compact row. */
#poiPanel .poiKindNative{position:absolute!important;width:1px!important;height:1px!important;overflow:hidden!important;clip-path:inset(50%)!important;}
#poiPanel .poiKindField{display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:8px;margin:8px 0;}
#poiPanel .poiKindLabel{font-size:12px;font-weight:800;color:#5f6762;}
#poiPanel .poiKindChoices{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:5px;min-width:0;}
#poiPanel .poiKindChoices button{display:flex;align-items:center;justify-content:center;gap:4px;min-width:0;min-height:34px;margin:0;padding:4px 5px;border:1px solid #cbd3ca;border-radius:9px;background:#ffffffa8;color:#36423a;box-shadow:none;font-size:11px;font-weight:750;white-space:nowrap;}
#poiPanel .poiKindChoices button img{width:23px;height:23px;flex:none;border-radius:6px;}
#poiPanel .poiKindChoices button[aria-checked=true]{border-color:#7bab45;background:#eaffd2;box-shadow:0 0 0 2px #a8ed5d55;}
#poiPanel .poiKindChoices button.isAlternative{opacity:.42;filter:grayscale(.72);}
#poiPanel .poiKindChoices button.isAlternative:hover,#poiPanel .poiKindChoices button.isAlternative:focus-visible{opacity:.82;filter:grayscale(.2);border-color:#8eaa7b;background:#f5faef;}

/* Type-specific content remains compact until the editor is needed. */
#poiPanel .poiDescription{margin-top:12px;border:1px solid #cbd8cf;border-radius:11px;background:#ffffff96;overflow:hidden;}
#poiPanel .poiDescription>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;cursor:pointer;font-weight:750;list-style:none;}
#poiPanel .poiDescription>summary::-webkit-details-marker{display:none;}
#poiPanel .poiDescription>summary::before{content:'›';font-size:20px;line-height:1;transition:transform .18s;}
#poiPanel .poiDescription[open]>summary::before{transform:rotate(90deg);}
#poiDescriptionLabel{margin-right:auto;}
#poiDescriptionState{color:#6c7b72;font-size:11px;font-weight:600;white-space:nowrap;}
#poiPanel .poiDescriptionBody{padding:0 10px 10px;}
#poiPanel .youtubeMetadataCard{display:grid;grid-template-columns:minmax(92px,36%) minmax(0,1fr);gap:10px;align-items:start;margin-top:10px;padding:9px;border:1px solid #d3ddd5;border-radius:12px;background:#f8fbf7;}
#poiPanel .youtubeMetadataCard>img{width:100%;aspect-ratio:16/9;max-height:none;object-fit:cover;}
#poiPanel .youtubeMetadataCard>div{display:flex;flex-direction:column;align-items:flex-start;gap:5px;min-width:0;}
#poiPanel .youtubeMetadataCard strong,#poiPanel .youtubeMetadataCard span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
#poiPanel .youtubeMetadataCard span{font-size:11px;color:#687870;}
#poiPanel .youtubeMetadataCard p{margin:0;font-size:11px;line-height:1.45;}
#poiPanel .youtubeMetadataCard button{padding:6px 8px;font-size:11px;}

#poiKindDialog{width:min(520px,calc(100vw - 28px));border:1px solid #c9d7cd;border-radius:20px;padding:22px;color:#283f36;background:#fbfcfa;box-shadow:0 24px 70px #10251d55;}
#poiKindDialog::backdrop{background:#10251d66;backdrop-filter:blur(5px);}
#poiKindDialog h2{margin:0 0 10px;font-size:20px;}
#poiKindDialog p,#poiKindDialog li{line-height:1.6;}
#poiKindDialogDetails{padding-left:1.35em;margin:12px 0;}
#poiKindDialog .poiKindDialogNote{padding:9px 11px;border-radius:9px;background:#eff8e5;color:#486331;font-size:12px;}
.poiKindDialogActions{display:flex;justify-content:flex-end;gap:8px;margin-top:18px;}
#poiKindConfirm{background:#a8ff45;border-color:#79b936;color:#203b12;font-weight:800;}

/* Small purpose-built picker when a POI only needs a cover or attachment. */
#mediaLibrary.poiPicker{width:min(760px,90vw);max-height:min(680px,86vh);}
#mediaLibrary.poiPicker .mediaTools:first-of-type{grid-template-columns:auto auto minmax(180px,1fr) minmax(120px,.55fr);}
#mediaLibrary.poiPicker #mediaQuota{display:none;}
#mediaLibrary.poiPicker #mediaHint{margin:4px 0 8px;font-size:12px;}
#mediaLibrary.poiPicker #mediaGrid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;}
#mediaLibrary.poiPicker .mediaCard{padding:8px;}
#mediaLibrary.poiPicker .mediaCard input,#mediaLibrary.poiPicker .mediaCard small,#mediaLibrary.poiPicker .mediaCard button:last-child{display:none;}
#mediaLibrary.poiPicker .mediaCard>img{aspect-ratio:2/1;object-fit:cover;border-radius:8px;}
#mediaLibrary.poiPicker .mediaCard button:not(:last-child){width:100%;margin-top:6px;}

/* Information pop-out: same frosted surface for every POI media type. */
body.editor-modern:not(.visitor) #poiViewer{width:min(760px,92vw);max-height:min(780px,88vh);padding:22px;border:1px solid #ffffffc9;border-radius:24px;background:linear-gradient(145deg,#fffffff0,#f4f0e8d9)!important;color:#2d302d;box-shadow:0 28px 80px #18231d66,inset 0 1px 0 #fff;backdrop-filter:blur(24px) saturate(1.25);}
body.editor-modern:not(.visitor) #poiViewer::backdrop{background:#16231d73;backdrop-filter:blur(8px);}
body.editor-modern:not(.visitor) #poiViewer::before{content:'INFORMATION · POI';display:block;margin:0 0 4px;color:#62813e;font-size:10px;font-weight:850;letter-spacing:.16em;}
body.editor-modern:not(.visitor) #poiViewer .poiHeading{padding-bottom:12px;border-bottom:1px solid #9fad9f73;}
body.editor-modern:not(.visitor) #poiViewer .poiHeading h2{font-size:24px;}
body.editor-modern:not(.visitor) #poiViewer #poiMediaView{border-radius:16px;overflow:hidden;background:#eef1eb99;}
body.editor-modern:not(.visitor) #poiViewer #poiMediaView img{max-width:100%;border-radius:14px;}
body.editor-modern:not(.visitor) #poiViewer #poiViewLink{display:inline-flex;margin-top:14px;padding:10px 14px;border:1px solid #78a745;border-radius:11px;background:#b5ff64;color:#203312;font-weight:800;text-decoration:none;}

@media(max-width:1050px){body.editor-modern:not(.visitor)>header{grid-template-columns:max-content 1fr minmax(90px,150px);gap:8px}body.editor-modern:not(.visitor)>header>.toolbar button{padding-inline:9px;font-size:12px}}
@media(max-width:600px){body.editor-modern:not(.visitor)>header{padding:6px;gap:6px;}body.editor-modern:not(.visitor)>header>.toolbar{gap:5px;}body.editor-modern:not(.visitor) #poiPanel{right:6px;width:calc(100% - 12px);}}
.manualNavLink{display:block;padding:12px 16px;margin-top:8px;border:1px solid #9caf8b;border-radius:12px;color:inherit;text-decoration:none;font-weight:700;background:#ffffff30}.manualNavLink:hover{background:#b4ff59;color:#25351c}

/* Keep the light asset navigation surface paired with dark text. */
body.workspace-modern:not(.visitor) #shell>aside nav #assetsNav,
body.workspace-modern:not(.visitor) #shell>aside nav #assetsNav.active{color:var(--ws-text);}
/* Upload help is a compact circular control, not a primary action. */
body:not(.visitor) #shell #tilingHelp{display:inline-grid;place-items:center;vertical-align:middle;width:26px;height:26px;min-width:26px;min-height:26px;padding:0;margin-left:6px;border:1px solid var(--ui-line,#c6c6bc);border-radius:50%;background:var(--ws-surface,#fff);color:var(--ws-text,#263238);font-size:16px;font-weight:700;line-height:1;box-shadow:none;transform:none;}
body:not(.visitor) #shell #tilingHelp:hover{background:var(--ws-soft,#eef3e8);}

#shell #scenes.scenesEmpty{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:12px;}
#scenes .scenePlaceholder{border:1px dashed var(--ui-line,#bac4b7);border-radius:12px;overflow:hidden;background:var(--ws-surface,#fff);color:var(--ws-muted,#647067);}
.scenePlaceholderPhoto{aspect-ratio:2/1;display:grid;place-items:center;background:var(--ws-soft,#edf1eb);}
.scenePlaceholderPhoto span{font-size:20px;opacity:.55;}
.scenePlaceholder small{display:block;text-align:center;padding:12px 4px;font-size:12px;}
@media(max-width:1000px){#shell #scenes.scenesEmpty{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:600px){#shell #scenes.scenesEmpty{grid-template-columns:repeat(2,minmax(0,1fr));}}
body:not(.visitor) #shell #projectHelp{display:inline-grid;place-items:center;width:30px;height:30px;min-width:30px;padding:6px;border-radius:50%;border:1px solid var(--ui-line,#c6c6bc);background:var(--ws-surface,#fff);color:#a63838;box-shadow:none;}
#projectHelp svg{width:16px;height:16px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
body:not(.visitor) #shell #projectHelp:hover{background:#fff0f0;border-color:#a63838;}

body:not(.visitor) #shell>aside nav #dashboardNav{border:1px solid var(--ui-line,#c6c6bc);border-radius:10px;background:var(--ws-surface,#fff);color:var(--ws-text,#263238);}
body:not(.visitor) #shell>aside nav #dashboardNav.active{background:var(--ws-action,#4e5b6b);color:var(--ws-on-action,#fff);}
.dashboardIntro{padding:24px 26px;border:1px solid var(--ui-line,#c6c6bc);border-radius:16px;background:linear-gradient(135deg,var(--ws-surface,#fff),var(--ws-soft,#eef3e8));}
.dashboardIntro h2{margin:4px 0 6px;font-size:30px;}
.dashboardIntro p:last-child{margin:0;color:var(--ws-muted,#647067);}
.dashboardStats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:18px 0;}
.dashboardStats article{padding:18px;border:1px solid var(--ui-line,#c6c6bc);border-radius:14px;background:var(--ws-surface,#fff);}
.dashboardStats span,.dashboardStats small{display:block;color:var(--ws-muted,#647067);}
.dashboardStats strong{display:block;margin:8px 0 4px;font-size:30px;line-height:1;}
.dashboardColumns{display:grid;grid-template-columns:minmax(260px,.8fr) minmax(420px,1.2fr);gap:18px;}
.dashboardColumns>.panel{margin:0;}
.accountDetails{margin:0;}
.accountDetails>div{display:grid;grid-template-columns:92px 1fr;gap:12px;padding:12px 0;border-bottom:1px solid var(--ui-line,#d9ddd5);}
.accountDetails>div:last-child{border-bottom:0;}
.accountDetails dt{color:var(--ws-muted,#647067);}
.accountDetails dd{margin:0;font-weight:700;overflow-wrap:anywhere;}
.trashItem{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:14px 0;border-bottom:1px solid var(--ui-line,#d9ddd5);}
.trashItem:last-child{border-bottom:0;}
.trashItem p{margin:5px 0 0;color:var(--ws-muted,#647067);font-size:13px;}
.trashActions{display:flex;gap:8px;flex-shrink:0;}
.trashActions .danger{border-color:#a63838;color:#a63838;background:#fff4f4;}
@media(max-width:900px){.dashboardStats{grid-template-columns:repeat(2,minmax(0,1fr));}.dashboardColumns{grid-template-columns:1fr;}}
@media(max-width:560px){.dashboardStats{grid-template-columns:1fr 1fr;}.dashboardStats article{padding:14px}.trashItem{align-items:flex-start;flex-direction:column}.trashActions{width:100%}.trashActions button{flex:1}}

/* Navigation contrast stays readable across every selectable palette. */
body.workspace-modern:not(.visitor) #shell>aside nav :is(#dashboardNav,#assetsNav,#projectNav):hover:not(.active){background:color-mix(in srgb,var(--ws-action) 16%,var(--ws-surface));color:var(--ws-text);border-color:color-mix(in srgb,var(--ws-action) 58%,var(--ws-border));}
body.workspace-modern:not(.visitor) #shell>aside nav :is(#dashboardNav,#assetsNav,#projectNav).active{background:color-mix(in srgb,var(--ws-action) 28%,var(--ws-surface));color:var(--ws-text);border-color:var(--ws-action);box-shadow:inset 4px 0 var(--ws-action);}
body.workspace-modern:not(.visitor) #shell #sidebarProjects button:hover{background:color-mix(in srgb,var(--ws-action) 14%,var(--ws-surface));color:var(--ws-text);border-color:color-mix(in srgb,var(--ws-action) 42%,transparent);}

/* Account and administrator destinations are separate, compact groups. */
body.workspace-modern #shell>aside .asideBottom{gap:10px;padding-top:12px;}
.sidebarAccountCard,.sidebarAdminCard{display:grid;gap:5px;padding:11px;border:1px solid var(--ui-line);border-radius:10px;background:color-mix(in srgb,var(--ws-surface) 82%,transparent);}
.sidebarGroupLabel{font-size:10px!important;font-weight:800;letter-spacing:.12em;color:var(--ws-muted)!important;text-transform:uppercase;}
.sidebarAccountCard>#accountName{font-size:14px;}
.sidebarAccountCard>#accountEmail,.sidebarAccountCard>#membershipDates{font-size:11px;color:var(--ws-muted)!important;}
body.workspace-modern:not(.visitor) #shell .sidebarAccountCard .userSettings>summary{width:100%;justify-content:space-between;margin-top:4px;background:var(--ws-soft);}
body.workspace-modern:not(.visitor) #shell .sidebarAdminCard #adminNav{width:100%;margin:0;padding:8px 10px;text-align:left;border:1px solid var(--ui-line);background:var(--ws-surface);font-weight:700;}
body.workspace-modern:not(.visitor) #shell .sidebarAdminCard #adminNav:hover{background:color-mix(in srgb,var(--ws-action) 14%,var(--ws-surface));border-color:var(--ws-action);}
body.workspace-modern:not(.visitor) #shell .asideBottom>#logout{margin:0;background:transparent;color:var(--ws-muted);border:1px solid transparent;}

/* Existing Better Auth providers use one visual language without replacing their flows. */
.authProviders{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:18px 0 8px;}
.authProviders button{min-height:46px;font-weight:750;}
#googleLogin{background:#fff!important;color:#263238!important;border-color:#c8cfcb!important;}
#lineLogin{background:#06c755!important;color:#102b1c!important;border-color:#04a946!important;}
@media(max-width:560px){.authProviders{grid-template-columns:1fr}.sidebarAccountCard,.sidebarAdminCard{width:100%}}
.sidebarAccountCard #dashboardNav{width:100%;margin:0 0 5px;padding:11px 12px;text-align:left;border:1px solid var(--ui-line);border-radius:8px;background:var(--ws-surface);color:var(--ws-text);font-weight:750;}
.sidebarAccountCard #dashboardNav:hover,.sidebarAccountCard #dashboardNav.active{background:color-mix(in srgb,var(--ws-action) 24%,var(--ws-surface));border-color:var(--ws-action);color:var(--ws-text);}
.accountSettingsGrid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px;margin:18px 0;}
.accountSettingsGrid .panel{min-width:0;}
.accountSettingsGrid form{display:grid;gap:12px;margin-top:12px;}
.accountSettingsGrid form button{justify-self:start;}
.accountSettingsGrid #profileMessage,.accountSettingsGrid #passwordMessage{min-height:1.4em;}
.accountSettingsGrid .userSettings>summary{display:none!important;}
.accountSettingsGrid .userSettingsPanel,body.workspace-modern #shell .accountSettingsGrid #userSettingsPanel{position:static;min-width:0;box-shadow:none;background:var(--ws-soft);color:var(--ws-text);}
@media(max-width:800px){.accountSettingsGrid{grid-template-columns:1fr;}}
.memberPasswordReset{display:inline-block;margin:6px 0 0;color:var(--ws-text,#263238);font-size:13px;text-decoration:underline;text-underline-offset:3px}

/* Shared asset-folder controls: one row on desktop, wrapped controls on phones. */
.folderToolbar{display:flex;align-items:center;flex-wrap:wrap;gap:8px;margin:10px 0 14px;padding:10px;border:1px solid var(--ui-line,#c6c6bc);border-radius:12px;background:var(--ws-surface,#fff)}
.folderToolbar select{max-width:210px;min-height:36px}
.folderToolbar button{min-height:36px;padding:6px 11px}
.folderSelectedCount{font-weight:700;color:var(--ws-text,#263238)}
.folderToolbar button:disabled{opacity:.48;cursor:not-allowed}
.folderPick{display:inline-flex;align-items:center;gap:5px;min-width:max-content;font-size:12px;font-weight:700;color:var(--ws-text,#263238)}
.folderPick input{width:18px;height:18px;accent-color:#82b52c}
#jobs .job>.folderPick{align-self:start;margin:6px}
.mediaCard>.folderPick{margin:0 0 6px}
@media(max-width:600px){.folderToolbar select{max-width:100%;flex:1 1 140px}.folderToolbar button{flex:1 1 auto}}

/* r37: visual folders and one account workspace. */
.folderCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));gap:12px;margin:20px 0 12px;align-items:stretch}
.folderCards[hidden],.folderToolbar[hidden]{display:none!important}
.folderCard{position:relative;min-width:0;border:2px solid var(--ui-line,#ccd2c9);border-radius:14px;background:var(--ws-surface,#fff);transition:border-color .15s,background .15s}
.folderCard:hover{border-color:var(--ws-action,#52624d)}
.folderCard.is-selected{border-color:#658c30;background:#efffdc;box-shadow:0 0 0 2px #b3ff5f66}
#mediaLibrary .folderCard.is-selected{border-color:#a65b11;background:#fff1dc;box-shadow:0 0 0 2px #ffb45c55}
body:not(.visitor) #shell .folderCard .folderCardOpen{display:flex;flex-direction:column;align-items:flex-start;gap:4px;background:transparent;color:var(--ws-text,#263238);border:0;border-radius:12px;padding:14px;width:100%;text-align:left;min-height:153px;box-shadow:none}
body:not(.visitor) #shell .folderCard.is-selected .folderCardOpen{color:#28371a}
.folderCardOpen strong{font-size:15px;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.folderCardOpen small{font-size:12px;opacity:.8}
.folderCardArt{position:relative;width:80px;height:64px;display:block;margin-bottom:5px}
.folderCardArt svg{width:80px;height:60px;fill:#dcedb7;stroke:#729647;stroke-width:2}
#mediaLibrary .folderCardArt svg{fill:#ffe0a7;stroke:#bf822d}
.folderCardArt img{position:absolute;left:14px;top:26px;width:52px;height:29px;border-radius:3px;object-fit:cover;border:2px solid #fff}
.folderCardMenu{position:absolute;right:7px;top:7px;z-index:2}
.folderCardMenu summary{list-style:none;cursor:pointer;font-size:23px;width:30px;height:30px;line-height:25px;text-align:center;border-radius:6px;color:var(--ws-text);background:var(--ws-surface)}
.folderCardMenu summary::-webkit-details-marker{display:none}
body:not(.visitor) #shell .folderCardMenu button{display:block;min-width:110px;font-size:13px;padding:8px 10px;background:var(--ws-surface);color:var(--ws-text);border:1px solid var(--ui-line);margin-top:3px}
body:not(.visitor) #shell .folderCards>.folderAddCard{background:transparent;color:var(--ws-text);border:2px dashed var(--ui-line);border-radius:14px;min-height:153px;font-size:15px}
body:not(.visitor) #shell .folderCards>.folderAddCard:hover{background:var(--ws-soft);border-color:var(--ws-action)}
#shell .folderToolbar{background:transparent;border:0;padding:0;min-height:36px}
#shell .folderToolbar [hidden]{display:none!important}
body.workspace-modern:not(.visitor) #shell #scenes .photo:not([role="link"]){display:grid;place-items:center}
body.workspace-modern:not(.visitor) #shell #scenes .photo:not([role="link"]):not(:has(img)){color:var(--ws-muted);font-weight:650}
body.workspace-modern:not(.visitor) #shell #jobs .folderPick,body.workspace-modern:not(.visitor) #shell #mediaGrid .folderPick{display:flex;align-items:center;gap:10px;width:calc(100% + 20px);min-height:52px;margin:-10px -10px 4px;padding:12px 14px;background:var(--ws-surface);border-bottom:1px solid var(--ui-line);cursor:pointer}
body.workspace-modern:not(.visitor) #shell #jobs .folderPick:hover,body.workspace-modern:not(.visitor) #shell #mediaGrid .folderPick:hover{background:var(--ws-selected)}
body.workspace-modern:not(.visitor) #shell #jobs .folderPick input,body.workspace-modern:not(.visitor) #shell #mediaGrid .folderPick input{width:22px;height:22px;accent-color:var(--ws-action);cursor:pointer}
body.workspace-modern:not(.visitor) #shell #mediaGrid .mediaCard{overflow:visible}
body.workspace-modern:not(.visitor) #shell .folderCards{grid-template-columns:minmax(230px,1.7fr) repeat(auto-fit,minmax(145px,1fr));}
body.workspace-modern:not(.visitor) #shell .folderCard:first-child{grid-row:span 1}
body.workspace-modern:not(.visitor) #shell .folderCard:first-child .folderCardArt{width:110px;height:78px}
body.workspace-modern:not(.visitor) #shell .folderCard:first-child .folderCardArt svg{width:110px;height:78px}
body.workspace-modern:not(.visitor) #shell .folderCard:first-child .folderCardOpen{min-height:178px;padding:18px}
body.workspace-modern:not(.visitor) #shell .folderCard:not(:first-child) .folderCardOpen{min-height:132px;padding:11px}
#shell .mediaQuotaNote{font-size:12px;color:var(--ws-muted);margin:8px 0 18px}
.sidebarAdminCard:has(#adminNav.hidden){display:none}
@media(max-width:600px){.folderCards{grid-template-columns:repeat(2,minmax(0,1fr));gap:9px}.folderCardOpen strong{font-size:14px}.folderCardMenu{right:4px}.folderToolbar select{width:100%;min-width:0}.accountSettingsGrid input{width:100%;min-width:0}}
@media(prefers-reduced-motion:reduce){.folderCard{transition:none}}
/* Explicit sidebar state contrast across all workspace themes. */
body.workspace-modern:not(.visitor) #shell>aside nav button:is(#assetsNav,#projectNav).active{background:var(--ws-action,#4e5b6b)!important;color:var(--ws-on-action,#fff)!important;border-color:var(--ws-action)!important;}
body.workspace-modern:not(.visitor) #shell>aside nav button:is(#assetsNav,#projectNav):hover:not(.active){color:var(--ws-text,#263238)!important;}
/* r38 account overview and accessible square palette cards */
#dashboardTab .dashboardColumns{grid-template-columns:repeat(2,minmax(0,1fr));align-items:stretch;margin-top:18px}
#dashboardTab .dashboardColumns .panel{min-width:0}
body:not(.visitor) #accountAppearance .palettePicker{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;gap:12px;padding:8px 0;background:none;border:0;border-radius:0;box-shadow:none}
body:not(.visitor) #accountAppearance .palettePicker button{width:100%;height:auto;aspect-ratio:1;min-height:60px;padding:6px;border-radius:10px;box-shadow:none;border:2px solid transparent;outline:none;transform:none;color:#fff;font-size:13px;font-weight:700;position:relative}
body:not(.visitor) #accountAppearance .palettePicker button[data-palette=ivory]{color:#342d20}
body:not(.visitor) #accountAppearance .palettePicker button[data-palette=graphite]{background:#505b68;color:#fff}
body:not(.visitor) #accountAppearance .palettePicker button[aria-pressed=true]{outline:3px solid #82aa3f;outline-offset:3px;border-color:#fff}
body:not(.visitor) #accountAppearance .palettePicker button[aria-pressed=true]::after{content:'✓';position:absolute;right:6px;top:3px;font-size:17px}
#accountAppearance .appearanceOption[hidden]{display:none!important}
body.workspace-modern:not(.visitor) #shell>aside .asideBottom>#logout{border:1px solid #fff;border-radius:9px;background:var(--ws-action);color:var(--ws-on-action);margin-top:12px;min-height:44px;box-shadow:0 0 0 1px var(--ui-line)}
body.workspace-modern:not(.visitor) #shell>aside .asideBottom>#logout:hover{filter:brightness(1.12);background:var(--ws-action)}
.trafficPanel{margin:18px 0}.trafficPanel .sectionTitle{flex-wrap:wrap;gap:12px}.trafficPanel h2{margin:0}.trafficStats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.trafficStats article{padding:16px;border:1px solid var(--ui-line);border-radius:10px;background:var(--ws-soft)}.trafficStats strong{display:block;font-size:30px;margin-top:8px}.trafficChart{display:block;width:100%;max-height:280px;margin-top:20px;overflow:visible}.trafficChart text{fill:var(--ws-muted);font-size:12px}.trafficChart polyline{fill:none;stroke:var(--ws-action);stroke-width:3}.trafficChart circle{fill:var(--ws-action)}.trafficAxis{fill:none;stroke:var(--ui-line);stroke-width:1}.trafficTable{overflow:auto}.trafficTable table{border-collapse:collapse;width:100%;text-align:left}.trafficTable th,.trafficTable td{padding:12px;border-bottom:1px solid var(--ui-line)}.trafficPanel .small{line-height:1.7}
@media(max-width:800px){#dashboardTab .dashboardColumns{grid-template-columns:1fr}.trafficStats{grid-template-columns:1fr}.trafficTable th,.trafficTable td{padding:8px;font-size:12px}body:not(.visitor) #accountAppearance .palettePicker{grid-template-columns:repeat(2,minmax(0,1fr))}}
/* r39 compact account identity and disclosure panels */
.dashboardIntro{display:flex;align-items:center;justify-content:space-between;gap:24px}.accountIdentity{display:flex;align-items:center;gap:12px;font-size:14px;overflow-wrap:anywhere}.accountIdentity small{display:block;margin-top:5px;color:var(--ws-muted)}.accountAvatar{flex:none;width:46px;height:46px;border-radius:50%;object-fit:cover;background:var(--ws-soft);border:1px solid var(--ui-line);align-items:center;justify-content:center;font-size:22px}.accountAvatar:not([hidden]){display:flex}.accountAvatar[hidden]{display:none!important}.accountDisclosure>summary{cursor:pointer;font-size:19px;font-weight:750;padding:4px 0;list-style-position:inside}.accountDisclosure>summary small{font-size:12px;font-weight:400;color:var(--ws-muted);margin-left:12px}.accountDisclosure[open]>summary{margin-bottom:18px}.accountDisclosure .dashboardStats{margin-bottom:0}.trafficRangeButtons{display:flex;gap:6px}.trafficRangeButtons button{min-width:64px}body.workspace-modern #shell .trafficRangeButtons button[aria-pressed=true]{background:#b4ff5c;color:#243216;border-color:#718f38;box-shadow:inset 0 0 0 1px #718f38}.trafficNote{padding:8px 0;margin:10px 0;color:var(--ws-muted);font-size:13px;line-height:1.5}.trafficChart[hidden]{display:none}.accountDisclosure:not([open]){padding-top:18px;padding-bottom:18px}
@media(max-width:650px){.dashboardIntro{align-items:flex-start;flex-direction:column;gap:14px}.accountIdentity{font-size:12px}.accountDisclosure>summary small{display:block;margin:8px 0 0}.trafficRangeButtons button{min-width:52px;padding:8px}.trafficPanel .sectionTitle{justify-content:space-between}}
/* r40: workspace roles and member administration */
.workspaceManagement{margin-block:20px}.workspaceManagement form{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin-block:16px}.workspaceManagement label{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.workspaceManagement input[type=email],.workspaceManagement input[name=name],.workspaceManagement select{max-width:100%;min-width:180px}.workspaceManagement input[type=number]{width:85px}.workspaceMemberList{display:grid;gap:12px;margin-block:16px}.workspaceMemberList article{border:1px solid var(--border,#b8bbbe);border-radius:14px;padding:16px;display:flex;align-items:center;gap:12px;flex-wrap:wrap}.workspaceGrantList{width:100%;display:grid;gap:8px}.workspaceGrantList>div{display:flex;gap:12px;flex-wrap:wrap;align-items:center;padding:8px;border-top:1px solid #aaa5}.workspaceGrantList>div>span{flex:1;min-width:150px}.workspaceNote{font-size:14px;opacity:.8}.workspaceManagement input[type=checkbox]{width:20px;height:20px;accent-color:#9be739}.workspaceManagement [hidden]{display:none!important}
html[data-workspace-role=editor] #newTour,html[data-workspace-role=editor] #sidebarNewProject,html[data-workspace-role=editor] [data-delete-asset],html[data-workspace-role=editor] [data-retry],html[data-workspace-upload=false] #panoramaUploadLabel,html[data-workspace-upload=false] #tourUploadLabel,html[data-workspace-upload=false] #mediaUpload{display:none!important}

/* Compact upload history: completed batches collapse; failed details stay visible. */
.uploadBatch{margin:8px 0;padding:0;border:0;background:transparent;font-size:13px}
.uploadBatch>summary{cursor:pointer;padding:8px 0;color:var(--text);overflow-wrap:anywhere}
.uploadBatch .uploaditem{display:flex;align-items:center;gap:12px;background:transparent!important;border:0!important;border-radius:0!important;padding:5px 0!important;margin:0!important;box-shadow:none!important}
.uploadBatch .uploaditem-heading{flex:1;min-width:0;margin:0}.uploadBatch progress{width:80px;height:4px;flex:none}
@media(max-width:650px){.uploadBatch .uploaditem-heading{flex-wrap:wrap}.uploadBatch .uploaditem-status{white-space:normal}.uploadBatch progress{width:45px}}
/* r43: focused operations console, status remains visible across tabs. */
#adminTab [hidden]{display:none!important}
#adminTab .adminConsoleHead{margin-bottom:22px;padding:24px;border:1px solid var(--ui-line);border-radius:20px;background:var(--ws-surface,#fff)}
.adminHealthBanner{display:flex;align-items:center;gap:12px;padding:14px 18px;border:1px solid #b4ff5c80;border-radius:12px;background:#b4ff5c1f;color:#294019;font-weight:750;margin:10px 0 22px}
.adminHealthBanner[data-health="attention"]{background:#fff0ee;color:#a32e2c}
.adminHealthBanner[data-health="maintenance"]{background:#fff7df;color:#7b5a08}
.healthDot{display:inline-block;flex:none;width:10px;height:10px;border:1px solid #78ad3e;border-radius:50%;background:#b4ff5c;box-shadow:0 0 0 4px #b4ff5c35,0 0 10px #b4ff5c80;margin-right:8px;vertical-align:middle}
[data-health="attention"]>.healthDot,[data-health="attention"] .sidebarGroupLabel .healthDot{background:#dc423d;box-shadow:0 0 0 4px #dc423d20}
[data-health="maintenance"]>.healthDot,[data-health="maintenance"] .sidebarGroupLabel .healthDot{background:#e0a51b;box-shadow:0 0 0 4px #e0a51b20}
.tilingWatchdog.maintenance{color:#7b5a08;background:#fff7df;border:1px solid #e6ca7a;border-radius:10px;padding:12px 14px}
.tilingAdvice{font-weight:700}
.tilingSignalGuide{margin:0 0 16px;border:1px solid var(--ui-line);border-radius:12px;background:var(--ws-soft,#f7f7f4)}
.tilingSignalGuide summary{display:flex;align-items:center;gap:12px;padding:10px 14px;cursor:pointer;list-style:none;font-weight:700}
.tilingSignalGuide summary::-webkit-details-marker{display:none}
.tilingSignalGuide summary:after{content:'＋';margin-left:auto;font-weight:400}
.tilingSignalGuide[open] summary:after{content:'−'}
.tilingSignalGuide summary small{font-weight:400;color:var(--ws-muted,#6b7075)}
.tilingSignalSummary{display:flex;gap:6px}
.tilingSignalSummary .signal{padding:2px 7px;border-radius:999px;font-size:11px;font-weight:700}
.tilingSignalSummary .signal-ok{background:#b4ff5c;color:#294019}.tilingSignalSummary .signal-maintenance{background:#fff0c5;color:#7b5a08}.tilingSignalSummary .signal-attention{background:#ffe0dd;color:#a32e2c}
.tilingSignalRows{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;padding:0 14px 14px}
.tilingSignalRows p{display:flex;align-items:flex-start;gap:9px;margin:0;padding:10px;background:var(--ws-surface,#fff);border-radius:9px}
.tilingSignalRows .healthDot{margin-top:5px;margin-right:0}.healthDot.signal-maintenance{background:#e0a51b;box-shadow:0 0 0 4px #e0a51b20}.healthDot.signal-attention{background:#dc423d;box-shadow:0 0 0 4px #dc423d20}
.tilingSignalRows span{display:grid;gap:3px}.tilingSignalRows small{line-height:1.5;color:var(--ws-muted,#656a70)}
#adminTab .adminTabs{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:10px}
#adminTab .adminTabs button{display:flex;flex-direction:column;align-items:flex-start;gap:8px;padding:16px;border:1px solid var(--ui-line);border-radius:12px;background:var(--ws-surface,#fff);color:var(--ws-text,#283038);box-shadow:none;text-align:left}
#adminTab .adminTabs button small{font-size:11px;opacity:.65;letter-spacing:.12em}
#adminTab .adminTabs button[aria-selected="true"]{background:#b8ff59;color:#22301b;border-color:#709635;box-shadow:inset 0 0 0 1px #709635}
#adminTab .adminTabs button:hover{border-color:var(--ws-action,#675d42)}
#adminTab .adminTabs button:focus-visible{outline:3px solid var(--ws-action,#675d42);outline-offset:3px}
#adminTab .panel{margin-top:0;padding:26px;border-radius:18px}
#adminTab .adminNote{font-size:13px;color:var(--ws-muted,#676b70)}
#adminTab .adminEventList{max-height:65vh;overflow:auto}
#adminTab .event{padding:12px 4px;border-bottom:1px solid var(--ui-line)}
#adminTab .event summary{cursor:pointer;display:grid;grid-template-columns:minmax(160px,1fr) auto;gap:6px 14px}
#adminTab .event summary:before{content:'＋';float:left;display:none}
#adminTab .event summary strong:before{content:'＋ ';font-weight:400}
#adminTab .event[open] summary strong:before{content:'− '}
#adminTab .event summary span{grid-column:1/-1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:13px;opacity:.7}
#adminTab .event time{font-size:12px;opacity:.65}
#adminTab .event pre{white-space:pre-wrap;overflow-wrap:anywhere;font:13px/1.7 ui-monospace,monospace;max-height:300px;overflow:auto;background:var(--ws-soft,#f3f4f5);padding:14px;border-radius:8px}
@media(max-width:650px){#adminTab .adminTabs{display:flex;overflow-x:auto;padding-bottom:5px}#adminTab .adminTabs button{min-width:112px}#adminTab .adminConsoleHead,#adminTab .panel{padding:16px}#adminTab .event summary{grid-template-columns:1fr}}
@media(max-width:800px){.tilingSignalRows{grid-template-columns:1fr}.tilingSignalGuide summary small{display:none}}

/* r46: make platform roles, formal organizations and personal workspaces distinct. */
.platformOrgHeader,.platformSectionHead{display:flex;align-items:flex-start;justify-content:space-between;gap:18px}
.platformOrgHeader{padding-bottom:20px;border-bottom:1px solid var(--ui-line)}
.platformOrgHeader h2,.platformSectionHead h3{margin:4px 0 7px}
.platformOrgHeader p,.platformSectionHead p{margin:0;max-width:760px}
.platformRootBadge,.platformOperatorBadge{flex:none;padding:7px 11px;border-radius:999px;background:#e7f5d8;color:#315a20;border:1px solid #8eb36f;font-size:12px;font-weight:800}
.platformOperatorBadge{background:#eef1f5;color:#3f4b58;border-color:#aab2bd}
.platformRoleSection,.platformOrgSection{margin-top:22px;padding:20px;border:1px solid var(--ui-line);border-radius:14px;background:var(--ws-soft)}
.platformRoleForm,.organizationCreateForm{display:grid!important;grid-template-columns:minmax(220px,1fr) minmax(190px,.6fr) auto;align-items:end!important;margin:16px 0!important}
.organizationCreateForm{grid-template-columns:minmax(180px,1fr) minmax(220px,1fr) 110px auto}
.platformRoleForm label,.organizationCreateForm label{display:grid!important;gap:6px!important;font-size:12px;font-weight:750}
.platformRoleForm input,.platformRoleForm select,.organizationCreateForm input{width:100%;min-width:0!important}
.platformRoleCards,.platformWorkspaceCards{display:grid;grid-template-columns:repeat(auto-fit,minmax(245px,1fr));gap:10px}
.platformRoleCards article,.platformWorkspaceCards article,.platformWorkspaceCards form{display:grid!important;grid-template-columns:auto minmax(0,1fr) auto;align-items:center!important;gap:12px!important;margin:0!important;padding:14px!important;border:1px solid var(--ui-line);border-radius:11px;background:var(--ws-surface)}
.platformRoleCards article>div,.platformWorkspaceCards article>div,.platformWorkspaceCards form>div{display:grid;gap:3px;min-width:0}
.platformRoleCards small,.platformWorkspaceCards small{overflow:hidden;text-overflow:ellipsis;color:var(--ws-muted)}
.platformRoleCards article>b{font-size:12px;color:var(--ws-muted)}
.platformRoleCards article.is-pending{border-style:dashed;background:transparent}.platformRoleCards article.is-pending .platformRoleIcon{background:#d8dde3;color:#47515b}.platformRoleCards article.is-pending>b{color:#8a6410}
.platformRoleIcon{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--ws-action);color:var(--ws-on-action);font-weight:800}
.platformWorkspaceCards form{grid-template-columns:minmax(210px,1.25fr) minmax(110px,.5fr) minmax(150px,.8fr) 110px auto auto}
.platformWorkspaceCards form>span,.platformWorkspaceCards article>span{font-size:12px;color:var(--ws-muted)}
.platformWorkspaceCards form label{display:flex!important;flex-wrap:nowrap!important;font-size:12px;font-weight:700}
.platformWorkspaceCards form label:not(.organizationStatus){display:grid!important;gap:5px!important}
.platformWorkspaceCards form label input[name=name]{min-width:140px;width:100%}
.organizationStatus{align-self:end;padding-bottom:9px}
.platformWorkspaceCards form input[type=number]{width:72px}
.workspaceEmpty{margin:0;padding:18px;border:1px dashed var(--ui-line);border-radius:10px;color:var(--ws-muted)}
.personalWorkspaceDisclosure{margin-top:16px;border-top:1px solid var(--ui-line);padding-top:14px}
.personalWorkspaceDisclosure summary{cursor:pointer;font-weight:750}.personalWorkspaceDisclosure summary span{margin-left:7px;color:var(--ws-muted);font-weight:400}
.personalWorkspaceDisclosure .platformWorkspaceCards{margin-top:12px}.platformWorkspaceCards.is-personal article{grid-template-columns:minmax(0,1fr) auto;background:transparent}
@media(max-width:980px){.platformWorkspaceCards form{grid-template-columns:1fr 1fr auto}.platformWorkspaceCards form>div{grid-column:1/-1}}
@media(max-width:760px){.platformOrgHeader,.platformSectionHead{display:grid}.platformRootBadge,.platformOperatorBadge{justify-self:start}.platformRoleForm,.organizationCreateForm{grid-template-columns:1fr!important}.platformWorkspaceCards form{grid-template-columns:1fr auto}.platformWorkspaceCards form>div{grid-column:1/-1}.organizationStatus{padding-bottom:0}}
/* AI analysis is a reviewable middle step between import and manual editing. */
.projectActionBar.projectWorkflow{grid-template-columns:minmax(0,2.4fr) 92px minmax(190px,1fr) 38px minmax(190px,1fr)}
.workflowAiStep{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:7px}.workflowAiStep button{width:78px;height:78px;border-radius:50%!important;border:2px solid var(--ws-action)!important;background:var(--ws-surface)!important;color:var(--ws-text)!important;display:flex;flex-direction:column;align-items:center;justify-content:center;line-height:1;box-shadow:0 5px 16px #0002}.workflowAiStep button:hover{background:#b3ff5f!important;color:#25351c!important}.workflowAiStep button span{font-size:20px;font-weight:850}.workflowAiStep button small{font-size:12px;margin-top:4px}.workflowAiStep em{font-size:10px;color:var(--ws-muted);font-style:normal;text-align:center}.workflowAiStep[data-status="review"] button,.workflowAiStep[data-status="completed"] button{background:#b3ff5f!important;color:#25351c!important}.workflowAiStep[data-status="queued"] button,.workflowAiStep[data-status="running"] button{border-color:#f0a53a!important;background:#fff2dd!important}
.aiAnalysisDialog{width:min(920px,calc(100% - 30px));max-height:calc(100vh - 30px);box-sizing:border-box;padding:24px;border:1px solid var(--ui-line);border-radius:18px;background:var(--ws-surface);color:var(--ws-text)}.aiAnalysisDialog::backdrop{background:#1b201bbd;backdrop-filter:blur(5px)}.aiAnalysisDialog header h2{margin:2px 0 8px}.aiAnalysisDialog header p{color:var(--ws-muted)}.dialogCloseRow{float:right}.dialogCloseRow button{width:34px;height:34px;border-radius:50%;padding:0;font-size:22px}.aiAnalysisRules{display:flex;gap:8px;flex-wrap:wrap;margin:14px 0}.aiAnalysisRules span{border:1px solid var(--ui-line);border-radius:999px;padding:6px 10px;font-size:12px}.aiScenePlan{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;max-height:46vh;overflow:auto;padding:2px}.aiScenePlan article{display:grid;grid-template-columns:34px minmax(0,1fr) 120px;align-items:center;gap:8px;border:1px solid var(--ui-line);border-radius:10px;padding:8px}.aiScenePlan strong{font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.aiScenePlan select{min-width:0}.aiAnalysisBudget{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:14px 0;padding:10px;border-radius:10px;background:var(--ws-soft)}.aiAnalysisBudget label{font-size:12px;font-weight:700}.aiAnalysisBudget input{width:90px;margin-left:8px}.aiAnalysisBudget p{margin:0;font-size:11px;color:var(--ws-muted)}.aiAnalysisDialog footer{display:flex;justify-content:flex-end;gap:8px}.aiAnalysisDialog #skipAiAnalysis{margin-right:auto}.aiPreflight{display:grid;gap:8px;margin:14px 0;padding:14px;border:1px solid var(--ui-line);border-radius:14px;background:var(--ws-soft)}.aiPreflight h3{margin:0 0 3px;font-size:15px}.aiPreflight>div p{margin:0;color:var(--ws-muted);font-size:11px}.aiPreflight label{display:flex;align-items:flex-start;gap:9px;padding:8px 10px;border:1px solid color-mix(in srgb,var(--ui-line) 78%,transparent);border-radius:10px;background:var(--ws-surface);font-size:12px;line-height:1.45}.aiPreflight input{flex:0 0 auto;width:17px;height:17px;margin-top:1px;accent-color:#75ad35}.aiPreflight .aiConsent{border-color:#86af57;background:#efffdd;font-weight:800}.aiPreflight .aiConsent:has(input:disabled){opacity:.62}.aiCostNotice{margin:2px 0 0;padding:9px 11px;border-left:4px solid #e4a33e;border-radius:8px;background:#fff3df;color:#624717;font-size:11px;line-height:1.5}

@media(max-width:1150px) and (min-width:761px){.projectActionBar.projectWorkflow{grid-template-columns:minmax(0,1.7fr) 78px minmax(160px,1fr) 24px minmax(160px,1fr)}.workflowAiStep button{width:68px;height:68px}}
@media(max-width:760px){.workflowAiStep{min-height:88px}.workflowAiStep button{width:66px;height:66px}.aiScenePlan{grid-template-columns:1fr}.aiAnalysisBudget{align-items:stretch;flex-direction:column}}

/* r53: choose one analysis scope before AI-assisted linking. */
.aiDialogLead{max-width:720px;margin:0;font-size:12px;line-height:1.55}
.aiGroupingQuestion{display:grid;grid-template-columns:minmax(210px,.8fr) minmax(0,1.4fr);align-items:center;gap:18px;margin-top:16px;padding:15px;border:1px solid var(--ui-line);border-radius:14px;background:var(--ws-soft)}
.aiGroupingQuestion h3,.aiGroupingEditor h3{margin:0 0 5px;font-size:15px}.aiGroupingQuestion p,.aiGroupingEditor p{margin:0;color:var(--ws-muted);font-size:11px;line-height:1.5}
.aiGroupingChoices{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}
.aiGroupingChoices label{display:flex;align-items:center;gap:10px;padding:12px;border:1px solid var(--ui-line);border-radius:11px;background:var(--ws-surface);cursor:pointer;transition:border-color .16s,background .16s,transform .16s}
.aiGroupingChoices label:hover{border-color:var(--ws-action);transform:translateY(-1px)}.aiGroupingChoices label:has(input:checked){border-color:#6f9c3c;background:#efffdd;box-shadow:inset 0 0 0 1px #6f9c3c}
.aiGroupingChoices input{width:18px;height:18px;accent-color:#75ad35}.aiGroupingChoices span{display:grid;gap:3px}.aiGroupingChoices small{color:var(--ws-muted);font-size:10px}
.aiGroupingEditor{margin-top:10px;padding:14px;border:1px solid var(--ui-line);border-radius:14px}.aiGroupingEditor[hidden]{display:none}.aiGroupingIntro{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:10px}.aiGroupingSummary{font-size:11px}
.aiScenePlan article{grid-template-columns:28px minmax(100px,1fr) minmax(130px,170px) auto}.aiScenePlan article>label:not(.aiTransitionLabel){display:grid;gap:3px;font-size:10px;color:var(--ws-muted)}.aiScenePlan .aiGroupName{width:100%;min-width:0;padding:7px 8px}.aiTransitionLabel{display:flex;align-items:center;gap:5px;font-size:11px;white-space:nowrap}.aiTransitionLabel input{width:16px;height:16px;accent-color:#75ad35}
.aiPreflight ul{margin:0;padding:0 0 0 18px;columns:2;column-gap:28px;color:var(--ws-muted);font-size:11px;line-height:1.55}.aiPreflight li{break-inside:avoid;margin-bottom:3px}
.aiPreflight .aiConsent{align-items:center;padding:11px 12px;border-color:#86af57;background:#efffdd;font-weight:800;cursor:pointer}.aiPreflight .aiConsent:has(input:checked){background:#b4ff5c;color:#26351b}.aiPreflight .aiConsent input{margin-top:0}
@media(max-width:760px){.aiGroupingQuestion{grid-template-columns:1fr}.aiGroupingChoices{grid-template-columns:1fr}.aiScenePlan article{grid-template-columns:28px minmax(0,1fr) auto}.aiScenePlan article>label:not(.aiTransitionLabel){grid-column:2/-1}.aiPreflight ul{columns:1}.aiAnalysisDialog footer{flex-wrap:wrap}.aiAnalysisDialog #skipAiAnalysis{margin-right:0}.aiAnalysisDialog footer button{flex:1 1 120px}}

/* r54: grouping is an optional advanced control, not a required workflow stop. */
.aiGroupingOption{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-top:14px;padding:10px 12px;border:1px solid var(--ui-line);border-radius:11px;background:var(--ws-soft)}
.aiGroupingOption h3{margin:0 0 2px;font-size:13px}.aiGroupingOption p{margin:0;color:var(--ws-muted);font-size:10px}.aiGroupingOption button{flex:none;padding:8px 11px;background:var(--ws-surface);color:var(--ws-text);font-size:11px}.aiGroupingOption button[aria-expanded="true"]{border-color:var(--ws-action);background:#efffdd;color:#30451f}
@media(max-width:760px){.aiGroupingOption{align-items:stretch;flex-direction:column}.aiGroupingOption button{width:100%}}

/* r55: read-only AI progress, quality baseline and history. */
.aiAnalysisProgress,.aiAnalysisReport,.aiAnalysisHistory{margin-top:10px;border:1px solid var(--ui-line);border-radius:12px;background:var(--ws-soft)}.aiAnalysisProgress{padding:11px 13px}.aiProgressHead{display:flex;justify-content:space-between;gap:12px;font-size:11px}.aiProgressHead span{color:var(--ws-muted)}.aiAnalysisProgress ol{display:grid;grid-template-columns:repeat(4,1fr);margin:10px 0 0;padding:0;list-style:none}.aiAnalysisProgress li{position:relative;display:grid;justify-items:center;gap:5px;color:var(--ws-muted);font-size:10px}.aiAnalysisProgress li:before{content:'';position:absolute;top:5px;left:-50%;width:100%;height:2px;background:var(--ui-line)}.aiAnalysisProgress li:first-child:before{display:none}.aiAnalysisProgress i{z-index:1;width:12px;height:12px;border:2px solid var(--ui-line);border-radius:50%;background:var(--ws-surface)}.aiAnalysisProgress .done i,.aiAnalysisProgress .current i{border-color:#6f9c3c;background:#b4ff5c}.aiAnalysisProgress .done:before,.aiAnalysisProgress .current:before{background:#8cc44e}.aiAnalysisReport{padding:12px}.aiAnalysisReport>strong{font-size:12px}.aiAnalysisReport>div{display:grid;grid-template-columns:repeat(5,1fr);gap:7px;margin:8px 0}.aiAnalysisReport span{display:grid;padding:8px;border-radius:8px;background:var(--ws-surface);color:var(--ws-muted);font-size:9px}.aiAnalysisReport b{color:var(--ws-text);font-size:18px}.aiAnalysisReport small{color:var(--ws-muted);font-size:10px}.aiAnalysisHistory summary{padding:10px 12px;cursor:pointer;font-size:11px;font-weight:750}.aiAnalysisHistory>div{display:grid;gap:6px;padding:0 10px 10px}.aiAnalysisHistory article{display:flex;justify-content:space-between;gap:12px;padding:8px;border-radius:8px;background:var(--ws-surface);font-size:10px}.aiAnalysisHistory article div{display:grid}.aiAnalysisHistory article small{color:var(--ws-muted)}
@media(max-width:760px){.aiAnalysisReport>div{grid-template-columns:repeat(2,1fr)}.aiAnalysisHistory article{display:grid}}
.emptyProjectCover{display:grid;width:100%;height:100%;place-items:center;font-size:32px;font-weight:750;color:var(--ws-muted);background:linear-gradient(135deg,var(--ws-soft),var(--ws-surface))}
body.workspace-modern #closeEditor{display:inline-block}

/* R57: project quick navigation and stable scene naming */
.projectNavGroup{display:grid;grid-template-columns:minmax(0,1fr) 38px;gap:6px;align-items:stretch}.projectNavGroup #projectNav{min-width:0}.projectNavGroup #projectQuickToggle{padding:0;min-height:42px;font-size:18px;background:var(--ui-surface);color:var(--text);border:1px solid var(--ui-line);box-shadow:none}.projectNavGroup #projectQuickToggle[aria-expanded="true"]{background:#b7ff62;color:#21330f;border-color:#88b64e}.projectNavigation::before{content:'快速專案瀏覽';display:block;padding:2px 10px 6px;color:var(--ws-muted);font-size:11px;font-weight:700;letter-spacing:.08em}.projectNavigation #sidebarProjects{overflow:auto;scrollbar-gutter:stable;max-height:190px}.projectNavigation #sidebarProjects button{width:100%}
.sceneNameComposer{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:12px;margin:0 0 16px;padding:12px;border:1px solid var(--ui-line,#c9c4bf);border-radius:10px;background:rgba(255,255,255,.28)}.scenePrefixField>span,.sceneNamePreview>span{display:block;margin-bottom:7px;color:var(--muted);font-size:11px;font-weight:700;letter-spacing:.04em}.scenePrefixOptions{display:flex;gap:6px;flex-wrap:wrap}.scenePrefixOptions button{min-height:34px;padding:6px 10px;background:rgba(255,255,255,.55);color:var(--text);border:1px solid var(--ui-line,#c9c4bf);box-shadow:none;font-size:12px}.scenePrefixOptions button[aria-pressed="true"]{background:#b5ff64;color:#19310c;border-color:#75ac3b;font-weight:700}.sceneNamePreview strong{display:flex;align-items:center;min-height:34px;padding:6px 10px;border-radius:6px;background:#fff;color:var(--text);font-size:13px;overflow-wrap:anywhere}.sceneSortControls #renumberScenes{border-style:dashed}@media(max-width:600px){.sceneNameComposer{grid-template-columns:1fr}.projectNavGroup{grid-template-columns:minmax(0,1fr) 36px}}

/* R62: guided FOV controls with a centered HUD and preserved legacy views. */
body.editor-modern:not(.visitor)>header>.toolbar{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(184px,224px) minmax(0,1fr);align-items:center;width:100%;gap:12px}
.toolbarPrimary,.toolbarSecondary{display:flex;align-items:center;gap:7px;min-width:0}.toolbarPrimary{justify-content:flex-end}.toolbarSecondary{justify-content:flex-start}
body.editor-modern:not(.visitor) .toolbar #aiLinks{background:#e8dcff;color:#43266d;border-color:#a88bd5;font-weight:700}
.fovHud{--fov-accent:#b4ff5c;display:grid;grid-template-columns:38px minmax(92px,1fr) 38px;align-items:center;gap:5px;min-width:184px;padding:4px 6px;border:1px solid color-mix(in srgb,var(--fov-accent) 65%,#fff);border-radius:12px;background:rgba(27,35,29,.72);color:#fff;box-shadow:0 5px 16px rgba(0,0,0,.2),inset 0 0 0 1px rgba(255,255,255,.08);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);transition:border-color .18s,background .18s,box-shadow .18s}
.fovHud>div{display:grid;grid-template-columns:auto auto;align-items:baseline;justify-content:center;gap:2px 7px;min-width:0;text-align:center}.fovHud>div>span{font-size:9px;letter-spacing:.18em;opacity:.68}.fovHud strong{font-size:22px;line-height:1;font-variant-numeric:tabular-nums}.fovHud small{grid-column:1/-1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--fov-accent);font-size:9px;font-weight:800;letter-spacing:.06em}
body.editor-modern:not(.visitor) .toolbar .fovHud button,body:not(.visitor) #arrivalOverlay .fovHud button{width:34px;height:34px;min-width:34px;min-height:34px;padding:0;border-color:rgba(255,255,255,.22);border-radius:8px;background:rgba(255,255,255,.13);color:#fff;font-size:20px;font-weight:400}.fovHud button:hover:not(:disabled){background:rgba(255,255,255,.25)!important;border-color:var(--fov-accent)!important}.fovHud[data-state="recommended"]{--fov-accent:#b4ff5c;background:rgba(36,61,26,.82);box-shadow:0 0 0 1px rgba(180,255,92,.2),0 5px 16px rgba(0,0,0,.2)}.fovHud[data-state="comfortable"]{--fov-accent:#92d76a}.fovHud[data-state="warning"]{--fov-accent:#ffc956;background:rgba(73,53,21,.82)}.fovHud[data-state="limit"]{--fov-accent:#ff665e;background:rgba(91,31,27,.84)}.fovHud[data-state="legacy"]{--fov-accent:#d6d9dc;background:rgba(50,54,58,.78)}
.fovHud.snapped{animation:fovSnapPulse .42s ease}@keyframes fovSnapPulse{50%{transform:scale(1.035);box-shadow:0 0 0 5px color-mix(in srgb,var(--fov-accent) 30%,transparent),0 5px 16px rgba(0,0,0,.2)}}
.currentSceneActions{width:494px;min-width:494px}.currentSceneActions>button:not(#toggleFilmstrip){flex:0 0 140px;width:140px;min-width:140px}.currentSceneActions #travelArrival{background:#f8dce7;color:#71334c;border-color:#e7adc3}
#arrivalOverlay .arrivalBar .fovHud{grid-column:1/-1;min-width:210px;width:100%;box-sizing:border-box}#arrivalOverlay .arrivalBar .fovHud>div{grid-template-columns:auto auto}#arrivalOverlay .arrivalBar .fovHud button{justify-self:center}
@media(max-width:1180px){body.editor-modern:not(.visitor)>header>.toolbar{grid-template-columns:minmax(0,1fr) 184px minmax(0,1fr);gap:7px}.toolbarPrimary,.toolbarSecondary{gap:4px}body.editor-modern:not(.visitor)>header>.toolbar button{padding-inline:7px}.currentSceneActions{width:392px;min-width:392px}.currentSceneActions>button:not(#toggleFilmstrip){flex-basis:108px;width:108px;min-width:108px;font-size:11px}}
@media(max-width:760px){body.editor-modern:not(.visitor)>header>.toolbar{grid-template-columns:1fr 184px 1fr;overflow-x:auto;padding-bottom:2px}.toolbarPrimary{justify-content:flex-start}.toolbarPrimary button{white-space:nowrap}.toolbarSecondary{justify-content:flex-end}.currentSceneActions{width:300px;min-width:300px;overflow-x:auto}.currentSceneActions>button:not(#toggleFilmstrip){flex-basis:96px;width:96px;min-width:96px}.currentSceneIdentity>strong{max-width:20vw}}
@media(max-width:560px){body.editor-modern:not(.visitor)>header>.toolbar{grid-template-columns:max-content 174px max-content}.fovHud{min-width:174px;grid-template-columns:34px minmax(88px,1fr) 34px}.fovHud strong{font-size:20px}.currentSceneActions{width:250px;min-width:250px}}

/* R63: lighter FOV HUD, compact controls and an explicit AI/FOV cluster. */
body.editor-modern:not(.visitor)>header>.toolbar{grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr)}
.fovCluster{display:flex;align-items:center;justify-content:center;gap:7px;min-width:0}.fovCluster #aiLinks{white-space:nowrap}
.fovHud{grid-template-columns:27px minmax(78px,1fr) 27px;gap:3px;min-width:144px;padding:3px 5px;border-color:color-mix(in srgb,var(--fov-accent) 45%,transparent);background:rgba(27,35,29,.30);box-shadow:0 3px 10px rgba(0,0,0,.12);backdrop-filter:blur(7px);-webkit-backdrop-filter:blur(7px)}
.fovHud>div{grid-template-columns:auto auto;grid-template-rows:auto auto;gap:0 5px;line-height:1}.fovHud small{grid-column:1/-1;grid-row:1;margin-bottom:1px;font-size:8px}.fovHud>div>span{grid-column:1;grid-row:2;align-self:center;font-size:8px}.fovHud strong{grid-column:2;grid-row:2;font-size:18px}
body.editor-modern:not(.visitor) .toolbar .fovHud button,body:not(.visitor) #arrivalOverlay .fovHud button{width:25px;height:25px;min-width:25px;min-height:25px;padding:0;border-radius:6px;background:rgba(255,255,255,.12);font-size:15px}
.fovHud[data-state="recommended"]{background:rgba(36,61,26,.30);box-shadow:0 0 0 1px rgba(180,255,92,.12),0 3px 10px rgba(0,0,0,.12)}.fovHud[data-state="comfortable"]{background:rgba(27,35,29,.30)}.fovHud[data-state="warning"]{background:rgba(73,53,21,.34)}.fovHud[data-state="limit"]{background:rgba(91,31,27,.34)}.fovHud[data-state="legacy"]{background:rgba(50,54,58,.30)}
.currentSceneActions #travelArrival:disabled{background:#e3e5e4!important;color:#949a97!important;border-color:#c9cecb!important;opacity:.72!important;filter:grayscale(1);box-shadow:none!important}
#arrivalOverlay .arrivalBar .fovHud{min-width:170px}
@media(max-width:1180px){body.editor-modern:not(.visitor)>header>.toolbar{grid-template-columns:minmax(0,1fr) max-content minmax(0,1fr)}.fovCluster{gap:4px}}
@media(max-width:760px){body.editor-modern:not(.visitor)>header>.toolbar{grid-template-columns:max-content max-content max-content}.fovCluster #aiLinks{padding-inline:7px}}

/* R64: the editor toolbar always exposes exactly five primary tools. */
.toolbarAddIcon{display:inline-block;margin-right:4px;font-size:18px;font-weight:900;line-height:.65;vertical-align:-1px}
body.editor-modern:not(.visitor) .toolbar #addPoi{background:#ffe56a!important;color:#42380b!important;border-color:#c7ab36!important;font-weight:700}
body.editor-modern:not(.visitor) .toolbar :is(#add,#addPoi):disabled{opacity:.45}
.toolbarSecondary{gap:7px}

/* R65: shared hover treatment for toolbar actions; FOV remains its own HUD. */
.toolbarFeatureIcon{display:inline-grid;place-items:center;margin-right:3px;font-size:20px;font-weight:850;line-height:.7;vertical-align:-2px}
body.editor-modern:not(.visitor) .toolbar :is(#add,#aiLinks,#addPoi,#floorPlan):not(:disabled){transition:background .16s ease,border-color .16s ease,color .16s ease,box-shadow .16s ease,transform .16s ease}
body.editor-modern:not(.visitor) .toolbar :is(#add,#aiLinks,#addPoi,#floorPlan):hover:not(:disabled){background:color-mix(in srgb,var(--ws-action) 18%,var(--ws-surface))!important;border-color:var(--ws-action)!important;color:var(--ws-text)!important;box-shadow:0 3px 10px color-mix(in srgb,var(--ws-action) 22%,transparent)!important;transform:none!important}
body.editor-modern:not(.visitor) .toolbar #aiLinks:hover:not(:disabled){background:color-mix(in srgb,#a88bd5 26%,var(--ws-surface))!important;border-color:#8f6ac2!important;color:#43266d!important}
/* Project sharing is available only after a publication exists. */
body:not(.visitor) #shell #projectShare{width:42px;height:42px;min-width:42px;padding:8px;border-radius:50%;display:inline-grid;place-items:center;border:1px solid #b9b2a4;background:#fffaf0;color:#715a37;box-shadow:0 2px 6px #0002}
body:not(.visitor) #shell #projectShare svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
body:not(.visitor) #shell #projectShare:not(:disabled):hover{background:#f0ffd8;border-color:#83aa4a;color:#38551b}
body:not(.visitor) #shell #projectShare:disabled{opacity:.45;cursor:not-allowed;filter:grayscale(.25)}
@media(max-width:600px){body:not(.visitor) #shell #projectShare{width:36px;height:36px;min-width:36px;padding:6px}}
/* R88: one folder layout: 70px tracks, with the all-assets tile spanning two. */
body.workspace-modern:not(.visitor) #shell .folderCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(155px,1fr));grid-auto-rows:70px;grid-auto-flow:row dense;gap:10px;align-items:start;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard{box-sizing:border-box;height:70px;min-height:0;aspect-ratio:auto;align-self:start;overflow:hidden;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child{grid-row:span 2;height:150px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard .folderCardOpen{box-sizing:border-box;display:flex;flex-direction:row;align-items:center;gap:7px;width:100%;height:100%;min-height:0;padding:9px 10px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:has(.folderDeleteButton) .folderCardOpen{padding-right:10px;align-items:center;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCardArt{flex:none;width:14px;height:14px;margin:0;color:var(--ws-text);}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCardArt svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCardText{display:flex;flex:1;min-width:0;flex-direction:column;gap:2px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCardText strong{display:block;min-width:0;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px;line-height:1.2;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCardText small{font-size:10px;line-height:1.2;white-space:nowrap;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardOpen{flex-direction:column;align-items:flex-start;padding:12px 14px;gap:3px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardArt{width:112px;max-width:100%;height:80px;margin-bottom:2px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardArt svg{width:100%;height:80px;fill:#dcedb7;stroke:#729647;stroke-width:1.8;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardArt img{left:22%;top:31px;width:60%;height:auto;aspect-ratio:2/1;object-fit:cover;box-sizing:border-box;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText{display:contents;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child strong{font-size:14px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child small{font-size:11px;}
body.workspace-modern:not(.visitor) #shell .folderCards>.folderAddCard{box-sizing:border-box;height:70px;min-height:0;aspect-ratio:auto;font-size:12px;}
body.workspace-modern:not(.visitor) #shell .folderDeleteButton{position:absolute;left:3px;right:auto;top:auto;bottom:3px;transform:none;width:28px;min-width:28px;height:28px;padding:6px;background:transparent;color:var(--ws-muted);border:1px solid transparent;border-radius:6px;box-shadow:none;}
body.workspace-modern:not(.visitor) #shell .folderDeleteButton:hover{background:var(--ws-soft);color:#9d3040;border-color:var(--ui-line);}
.folderDeleteButton svg{width:14px;height:14px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;}
@media(max-width:600px){body.workspace-modern:not(.visitor) #shell .folderCards{grid-template-columns:repeat(2,minmax(0,1fr));}}

body.workspace-modern:not(.visitor) #shell .folderCards .folderCardText time{font-size:9px;line-height:1.2;color:var(--ws-muted);white-space:nowrap;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:has(.folderDeleteButton) .folderCardArt{margin-top:1px;}
body.workspace-modern:not(.visitor) #shell .folderDeleteButton:focus-visible{outline:2px solid var(--ws-action);outline-offset:-2px;}

/* R90: balanced folder proportions, scoped palette and brand-aligned toggle. */
body.workspace-modern:not(.visitor) #shell #mediaLibrary .folderCards .folderCard:first-child .folderCardArt svg{fill:#ffe0a7;stroke:#bf822d;}
body.workspace-modern:not(.visitor) #shell #mediaLibrary .folderCards .folderCard:not(:first-child) .folderCardArt{color:#bf822d;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:has(.folderDeleteButton) .folderCardArt{align-self:flex-start;margin-top:1px;}
body:not(.visitor):not(.sidebar-compact) #shell .sidebarBrandRow #sidebarToggle{top:7px;right:-11px;bottom:auto;width:30px;height:30px;}

/* R91: four consistent icon destinations in the collapsed rail. */
.compactRailIcon{display:none;}
body.sidebar-compact:not(.visitor) #shell .compactRailIcon{display:inline-flex;width:24px;height:24px;align-items:center;justify-content:center;}
.compactRailIcon svg{width:24px;height:24px;fill:none;stroke:currentColor;stroke-width:1.8;}
body.sidebar-compact:not(.visitor) #shell .railLabel{display:none;}
body.sidebar-compact #assetsNav::before,body.sidebar-compact #projectNav::before{content:none;}
body.sidebar-compact #shell .projectNavGroup{display:block;}
body.sidebar-compact #shell #projectQuickToggle{display:none;}
body.sidebar-compact:not(.visitor) #shell :is(#assetsNav,#projectNav,#railSettings,.manualNavLink){display:flex;align-items:center;justify-content:center;width:44px;height:44px;min-height:44px;margin:8px auto;padding:0;border:1px solid transparent;border-radius:9px;color:var(--ws-text);background:transparent;box-shadow:none;}
body.sidebar-compact:not(.visitor) #shell :is(#assetsNav,#projectNav,#railSettings,.manualNavLink):hover{background:var(--ws-soft);border-color:var(--ws-action);}
body.sidebar-compact:not(.visitor) #shell #railSettings{margin-top:8px;}
body.sidebar-compact:not(.visitor) #shell .manualNavLink{margin-top:auto;}
body.sidebar-compact:not(.visitor) #shell #railSettings.active{background:color-mix(in srgb,var(--ws-action) 28%,var(--ws-surface));border-color:var(--ws-action);}

/* R92: override legacy right-alignment on project label/icon spans. */
body.sidebar-compact:not(.visitor) #shell #projectNav{justify-content:center;}
body.sidebar-compact #shell #projectNav>.compactRailIcon{margin:0;}
.workspaceManualFrame{display:block;width:100%;height:calc(100dvh - 180px);min-height:480px;border:1px solid var(--ui-line);border-radius:12px;background:var(--ws-surface);}

/* R93: preserve collapsed navigation; guide near projects, settings at rail bottom. */
body.sidebar-compact:not(.visitor) #shell nav .manualNavLink{margin:8px auto;}
body.sidebar-compact:not(.visitor) #shell #railSettings{margin-top:auto;margin-bottom:8px;}
body.sidebar-compact:not(.visitor) #shell #railSettings .compactRailIcon,body.sidebar-compact:not(.visitor) #shell #railSettings .compactRailIcon svg{width:28px;height:28px;}
body.workspace-modern #dashboardTab .accountAvatar{width:64px;height:64px;flex:none;font-size:28px;object-fit:cover;border-radius:50%;}

/* R94: shared navigation states, with distinct expanded and compact placement. */
body.workspace-modern:not(.visitor) #shell #workspaceSidebar :is(#assetsNav,#projectNav,#dashboardNav,#adminNav,#sidebarNewProject,#projectQuickToggle,#sidebarToggle,#railSettings,.manualNavLink){box-sizing:border-box;border:1px solid var(--ui-line);border-radius:9px;background:var(--ws-surface)!important;color:var(--ws-text)!important;box-shadow:none!important;transform:none!important;text-decoration:none;transition:background .16s ease,border-color .16s ease,color .16s ease;}
body.workspace-modern:not(.visitor) #shell #workspaceSidebar :is(#assetsNav,#projectNav,#dashboardNav,#adminNav,#sidebarNewProject,#projectQuickToggle,#sidebarToggle,#railSettings,.manualNavLink):hover{background:color-mix(in srgb,var(--ws-action) 14%,var(--ws-surface))!important;border-color:var(--ws-action)!important;color:var(--ws-text)!important;box-shadow:none!important;transform:none!important;}
body.workspace-modern:not(.visitor) #shell #workspaceSidebar :is(#assetsNav,#projectNav,#dashboardNav,#adminNav,#railSettings,.manualNavLink).active{background:color-mix(in srgb,var(--ws-action) 24%,var(--ws-surface))!important;border-color:var(--ws-action)!important;color:var(--ws-text)!important;box-shadow:inset 3px 0 var(--ws-action)!important;}
body.workspace-modern:not(.visitor) #shell #workspaceSidebar :is(button,a):focus-visible{outline:2px solid var(--ws-action);outline-offset:2px;}
body:not(.sidebar-compact) #shell #workspaceSidebar .compactRailIcon{display:none!important;}
body:not(.sidebar-compact) #shell #workspaceSidebar #projectNav>.railLabel{margin-left:0;}
body:not(.sidebar-compact) #shell #workspaceSidebar :is(#assetsNav,#projectNav,.manualNavLink){min-height:44px;padding:11px 12px;font-size:14px;font-weight:750;line-height:1.4;text-align:left;}
body:not(.sidebar-compact) #shell #workspaceSidebar>.manualNavLink{margin-top:auto;margin-bottom:12px;width:100%;}
body:not(.sidebar-compact) #shell #workspaceSidebar .asideBottom{margin-top:0;}
body.sidebar-compact:not(.visitor) #shell #workspaceSidebar :is(#assetsNav,#projectNav,#railSettings,.manualNavLink){display:flex;justify-content:center;align-items:center;width:44px;height:44px;min-height:44px;padding:0;margin:8px auto;}
body.sidebar-compact #shell #workspaceSidebar .compactRailIcon{display:flex;align-items:center;justify-content:center;width:24px;height:24px;margin:0!important;}
body.sidebar-compact #shell #workspaceSidebar #railSettings .compactRailIcon{width:28px;height:28px;}
body.sidebar-compact #shell #workspaceSidebar #railSettings{margin-top:auto!important;}
body.sidebar-compact #shell #workspaceSidebar .railLabel{display:none;}
@media(prefers-reduced-motion:reduce){#shell #workspaceSidebar :is(button,a){transition:none!important;}}

/* R97: balanced project header controls share the return-button height. */
body.workspace-modern:not(.visitor) #shell .projectHeaderTools{display:flex;align-items:center;gap:8px;padding-top:0;}
body.workspace-modern:not(.visitor) #shell .projectHeaderTools :is(#projectShare,#openProjectSettings,#projectHelp){box-sizing:border-box;width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;padding:10px!important;border-radius:50%!important;display:inline-flex;align-items:center;justify-content:center;}
body.workspace-modern:not(.visitor) #shell .projectHeaderTools :is(#projectShare,#openProjectSettings,#projectHelp) svg{width:24px;height:24px;flex:none;}
body.workspace-modern:not(.visitor) #shell #closeEditor{box-sizing:border-box;height:44px;min-height:44px;padding:10px 14px;display:inline-flex;align-items:center;justify-content:center;}
body.workspace-modern:not(.visitor) #shell .projectInfoHeading>.inline{align-items:center;}

/* R98: reference-shaped open folder, artwork only for all-assets tiles. */
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardArt{width:100px;height:90px;max-width:100%;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardArt svg.allAssetsFolderIcon{width:100%;height:90px;fill:none;stroke:none;}
.allAssetsFolderIcon .folderBack{fill:#8bbd35;}.allAssetsFolderIcon .folderFront{fill:#b4ff5c;}
#mediaLibrary .allAssetsFolderIcon .folderBack{fill:#de912e;}#mediaLibrary .allAssetsFolderIcon .folderFront{fill:#ffb65b;}
/* R100: all-assets title overlays the folder front without changing artwork size. */
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText{display:flex;flex:none;position:relative;z-index:1;margin-top:-31px;gap:3px;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText strong{line-height:1.3;text-shadow:0 1px 2px #fff8;}
/* R101: all-assets count sits beside its title; compact folder labels stay unchanged. */
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText{flex-direction:row;align-items:baseline;gap:7px;flex-wrap:wrap;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText strong,body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText small{line-height:1.4;margin:0;}

/* R102: shared media workspace structure, separate from editor picker. */
body.workspace-modern:not(.visitor) #shell main>section#mediaLibrary,body:not(.visitor) #shell main>section#mediaLibrary{width:100%;max-height:none;padding:0;border:0;background:transparent;overflow:visible}
#shell #mediaLibrary .mediaUploadPanel{display:flex;align-items:center;justify-content:space-between;gap:20px;background:var(--ws-surface);border:1px solid var(--ui-line);border-radius:12px;padding:18px;margin-bottom:18px}
#shell #mediaLibrary .mediaUploadPanel h2{margin:0 0 10px;font-size:20px}
#shell #mediaLibrary .mediaUploadPanel p{font-size:12px;color:var(--ws-muted);margin:6px 0}
body:not(.visitor) #shell #mediaLibrary .mediaUploadButton{position:relative;flex:none;background:#ffb45a;color:#492e12;border:1px solid #cf943f;padding:12px 18px;cursor:pointer;font-weight:650}
#shell #mediaLibrary .mediaUploadButton:hover{background:#ffc579}
#shell #mediaLibrary .mediaUploadButton:focus-within{outline:2px solid #a56c25;outline-offset:3px}
#shell #mediaLibrary .mediaUploadButton:has(input:disabled){opacity:.55;cursor:wait}
#shell #mediaLibrary .mediaUploadButton input[type=file]{position:absolute;inset:0;width:100%;height:100%;opacity:0;cursor:inherit}
#shell #mediaLibrary .mediaTools [hidden],#shell #mediaLibrary #mediaHint{display:none!important}
#shell #mediaLibrary .mediaDetails{font-size:12px;color:var(--ws-muted)}
#shell #mediaLibrary .mediaDetails input{width:100%;margin-top:6px}
#shell #mediaLibrary #mediaStatus:empty{display:none}
@media(max-width:600px){#shell #mediaLibrary .mediaUploadPanel{flex-wrap:wrap}}

/* R103: center the all-assets artwork and its existing title/count composition. */
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardOpen{align-items:center;justify-content:center;}
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText{width:100%;justify-content:center;text-align:center;}

/* R104: title and count occupy separate centered lines on all-assets cards. */
body.workspace-modern:not(.visitor) #shell .folderCards .folderCard:first-child .folderCardText{flex-direction:column;align-items:center;flex-wrap:nowrap;gap:3px;}

/* R105: checkbox labels share centered alignment; asset selection bars stay compact. */
body input[type=checkbox]{margin:0;padding:0;flex:none;vertical-align:middle;}
body label:has(>input[type=checkbox]){display:flex;align-items:center;gap:8px;}
body.workspace-modern:not(.visitor) #shell :is(#jobs,#mediaGrid) .folderPick{box-sizing:border-box;justify-content:flex-start;align-items:center;min-height:38px;height:38px;padding:7px 12px;margin:-10px -10px 0;line-height:22px;}
body.workspace-modern:not(.visitor) #shell :is(#jobs,#mediaGrid) .folderPick input[type=checkbox]{box-sizing:border-box;width:22px;height:22px;min-width:22px;min-height:22px;margin:0;padding:0;align-self:center;}
body.workspace-modern:not(.visitor) #shell :is(#jobs,#mediaGrid) .folderPick span{line-height:22px;}
body.workspace-modern:not(.visitor) #shell #jobs .folderPick{width:100%;margin:0 0 -8px;}
body.workspace-modern:not(.visitor) #shell #mediaGrid .folderPick{margin-bottom:-7px;}

/* R106: one sequential upload progress bar inside the panorama upload panel. */
#shell #assetsTab .assetUploadRow{flex-wrap:wrap;}
#shell #assetsTab .assetUploadRow .liveUpload{flex:0 0 100%;grid-column:1/-1;min-width:0;display:flex;flex-direction:column;gap:6px;margin-top:4px;}
#shell .liveUploadText{font-size:12px;color:var(--ws-muted);overflow-wrap:anywhere;}
#shell .liveUpload progress{display:block;width:100%;height:6px;border:0;border-radius:4px;overflow:hidden;accent-color:#8bbd35;}
#shell .liveUpload progress::-webkit-progress-bar{background:#e3ecd6;border-radius:4px;}
#shell .liveUpload progress::-webkit-progress-value{background:#8bbd35;border-radius:4px;}
#shell .liveUpload.is-error .liveUploadText{color:#aa3346;}

#scenePreviewDialog{width:min(1100px,94vw);height:min(700px,85dvh);max-width:94vw;max-height:85dvh;padding:0;border:1px solid #63716e;border-radius:12px;overflow:hidden;background:#101b1b;}
#scenePreviewDialog::backdrop{background:#0009;}
#scenePreviewDialog iframe{display:block;width:100%;height:100%;border:0;}
#scenePreviewDialog>button{position:absolute;right:10px;top:10px;z-index:2;width:40px;height:40px;padding:0;border-radius:50%;background:#fffffff0;color:#243735;font-size:25px;}

/* R109: filename gets the flexible space; transition grouping needs no typing. */
#aiScenePlan article{grid-template-columns:24px minmax(0,1fr) 56px auto;gap:7px;}
#aiScenePlan article>label:not(.aiTransitionLabel){grid-column:auto;}
#aiScenePlan .aiGroupName{padding:6px 4px;font-size:11px;}
#aiScenePlan .aiGroupName[readonly]{background:var(--ws-soft);}
#aiScenePlan .aiSceneFilename{min-width:0;text-overflow:clip;}
.aiSceneFilename>span{display:inline-block;white-space:nowrap;}
.aiSceneFilename.is-overflowing>span{animation:aiFilenameScroll var(--ai-name-duration,8s) ease-in-out infinite alternate;}
@keyframes aiFilenameScroll{0%,15%{transform:translateX(0)}85%,100%{transform:translateX(var(--ai-name-offset,0px))}}
@media(prefers-reduced-motion:reduce){.aiSceneFilename.is-overflowing>span{animation:none}.aiSceneFilename{overflow:auto!important}}

#aiExecutionAudit{padding:10px 12px;border:1px solid #d8a54d;border-radius:9px;background:#fff3dc;color:#71470a;font-size:12px;overflow-wrap:anywhere;}
.workflowAiStep button.ai-running{animation:aiActualRunPulse 1.5s ease-in-out infinite;}
.workflowAiStep button.ai-stalled{border-color:#bd4949!important;background:#ffefed!important;}
@keyframes aiActualRunPulse{50%{box-shadow:0 0 0 7px #91c94733}}
@media(prefers-reduced-motion:reduce){.workflowAiStep button.ai-running{animation:none}}
/* AI verification uses a compact action strip, separate from the two-step arrival layout. */
body.aiReviewMode #arrivalOverlay .arrivalBar{display:flex;grid-template-columns:none;min-width:0;width:max-content;max-width:calc(100% - 24px);justify-content:center;align-items:center;gap:10px;padding:10px 14px;border-radius:16px;background:rgba(255,255,255,.94);flex-wrap:wrap;}
body.aiReviewMode #arrivalInstruction{display:none;}
body.aiReviewMode #arrivalStep{background:#b4ff59;color:#203119;}
body.aiReviewMode #arrivalOverlay .arrivalBar button{width:auto;min-width:0;height:36px;padding:7px 12px;font-size:13px;line-height:1.3;white-space:nowrap;}
body.aiReviewMode #aiReviewTools{display:flex;gap:8px;align-items:center;}
body.aiReviewMode #aiReviewTools details{position:relative;background:transparent;padding:0;}
body.aiReviewMode #aiReviewTools summary{display:block;list-style:none;border:1px solid var(--ws-border);border-radius:10px;background:var(--ws-surface);padding:7px 12px;font-size:16px;line-height:20px;}
body.aiReviewMode #aiReviewTools details[open] button{position:absolute;right:0;bottom:48px;min-width:150px;background:#fff;box-shadow:0 4px 16px #0002;}
body.aiReviewMode #aiReviewTools details[open] #aiReviewCancel{bottom:88px;}
/* Compact AI planning: full panorama cards remain in Project Info. */
#aiScenePlan{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;max-height:560px;overflow:auto;padding:4px;}
#aiScenePlan article{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:4px;padding:7px;min-width:0;align-content:start;}
#aiScenePlan article>img{grid-column:1/-1;width:100%;height:54px;object-fit:cover;border-radius:5px;}
#aiScenePlan article>.aiSceneFilename{grid-column:1/-1;font-size:12px;line-height:18px;overflow:hidden;white-space:nowrap;}
#aiScenePlan article>.aiPickLabel{grid-column:1/-1;display:flex;align-items:center;gap:6px;font-size:11px;}
#aiScenePlan article>.aiGroupField{display:flex;align-items:center;gap:3px;font-size:10px;}
#aiScenePlan .aiGroupName{width:100%;padding:3px;min-width:0;height:26px;}
#aiScenePlan input[type=checkbox],.sceneTransition input{width:16px;height:16px;margin:0;flex:none;}
.aiBatchTools{display:flex;gap:6px;align-items:center;flex-wrap:wrap;margin-bottom:8px;}
.aiBatchTools input{width:100px;}.aiBatchTools button{padding:6px 10px;}
.sceneTransition{display:flex;align-items:center;gap:6px;font-size:13px;margin:8px 0;}
@media(max-width:900px){#aiScenePlan{grid-template-columns:repeat(3,minmax(0,1fr));}}
@media(max-width:560px){#aiScenePlan{grid-template-columns:repeat(2,minmax(0,1fr));}}
#aiAnalysisDialog{width:min(1160px,calc(100% - 24px));padding:18px;}
#aiGroupingEditor{padding:12px;}.aiBatchTools{position:sticky;top:0;background:var(--ws-surface);z-index:1;padding:5px 0;}
#aiScenePlan .aiSceneFilename:focus-visible{white-space:normal;outline:2px solid #75ad35;}

#aiScenePlan .aiGroupField>span{white-space:nowrap;flex:none;}
/* Compact group assignment and distinct report completion. */
.aiScenePlan article.aiAssigned{background:#edf0f2;border-color:#9da8b0}
.aiScenePlan article.aiAssigned img{opacity:.55}
.aiScenePlan article.aiCurrentGroup{outline:2px solid #8eba38}
.aiScenePlan article.aiCurrentGroup img{opacity:1}
.aiScenePlan article[hidden]{display:none}
.aiScenePlan img[role=button]{cursor:pointer}
.aiScenePlan img[role=button]:focus-visible{outline:3px solid #2563a5}
.aiAnalysisDialog[data-status=completed] #aiAnalysisStatus,.aiAnalysisDialog[data-status=completed] .aiAnalysisReport{background:#efffd8;border:2px solid #8eba38;border-radius:12px;padding:14px}
.aiAnalysisDialog[data-status=failed] #aiAnalysisStatus{color:#9b2737;background:#fff0f0;padding:14px}
#startAiAnalysis:disabled{opacity:.55;cursor:default}
body.aiReviewMode #arrivalOverlay .arrivalBar{display:flex;flex-wrap:wrap;gap:8px;padding:12px;min-width:0;background:rgba(246,255,237,.94)}
body.aiReviewMode #arrivalOverlay .arrivalBar #arrivalConfirm{width:auto;height:auto;min-height:40px;font-size:14px;padding:8px 14px;background:#b4ff59;color:#203119}
body.aiReviewFinish #arrivalOverlay .arrivalBar #arrivalConfirm{background:#fff;color:#334155}
body.aiReviewMode #arrivalOverlay #arrivalFovHud{display:flex}
body.aiReviewFinish #arrivalOverlay #arrivalFovHud{display:none}
/* R124: whole-card grouping; embedded controls retain independent hit targets. */
#aiGroupTabs{display:flex;gap:8px;flex-wrap:wrap}
#aiBatchTools{flex-wrap:wrap}
#aiGroupCreate[hidden]{display:none}
#aiGroupCreate{display:inline-flex;gap:6px;align-items:center}
#aiGroupTabs button[aria-pressed=true],.aiGroupingOption button[aria-pressed=true]{background:#b4ff59;color:#203119;border-color:#749e2c}
.aiScenePlan article{cursor:pointer;transition:background-color .15s,border-color .15s}
.aiScenePlan article:focus-visible{outline:3px solid #2563a5;outline-offset:2px}
.aiScenePlan article.aiCurrentGroup{background:#efffd5!important;border-color:#78a732!important;box-shadow:inset 0 0 0 2px #78a732;outline:0}
.aiScenePlan .aiGroupBadge{font-size:12px;border-radius:8px;padding:3px 8px;background:#e9edf0}
.aiScenePlan .aiMoveGroup{font-size:11px;min-height:26px;padding:3px 6px}
.aiScenePlan .aiMoveGroup[hidden]{display:none}
#aiScenePlan article .aiSceneFilename{cursor:inherit}
/* R125: compact report and visible continuation */
.aiGroupingOption>div{display:flex;gap:12px;align-items:center}
.aiGroupingOption button{min-width:80px;border-radius:10px}
#aiAnalysisReport>div{grid-template-columns:repeat(7,minmax(0,1fr));gap:0;overflow-x:auto;border-radius:10px;background:var(--ws-surface)}
#aiAnalysisReport span{border-radius:0;border-right:1px solid var(--ui-line);padding:12px 10px;font-size:13px;white-space:nowrap;text-align:center}
#aiAnalysisReport b{font-size:26px}
#aiAnalysisReport .aiMetricPrimary{background:#b4ff59;color:#243817}
#aiAnalysisReport small{display:block;font-size:12px;margin:8px 0}
#aiNextStep{display:grid;grid-template-columns:48px 1fr;align-items:center;column-gap:12px;margin-left:auto;padding:14px 22px;border:2px solid #7da936;border-radius:14px;background:#b4ff59;color:#203119;text-decoration:none;min-width:290px}
#aiNextStep i{grid-row:span 2;font-size:38px;font-style:normal}
#aiNextStep strong{font-size:19px}#aiNextStep small{font-size:13px}
#aiNextStep:hover{background:#caff88;box-shadow:0 0 0 3px #b4ff5944}
#aiNextStep[hidden]{display:none}
#aiExecutionAudit.ai-working:after{content:'';display:block;height:5px;margin:10px 0 3px;border-radius:6px;background:linear-gradient(100deg,transparent 20%,#8abb36 42%,#e5ffb9 50%,#8abb36 58%,transparent 80%);background-size:240% 100%;animation:aiWorkShine 2s linear infinite}
@keyframes aiWorkShine{from{background-position:150% 0}to{background-position:-150% 0}}
@media(prefers-reduced-motion:reduce){#aiExecutionAudit.ai-working:after{animation:none;background:#9acd48}}
@media(max-width:760px){#aiAnalysisReport>div{grid-template-columns:repeat(7,minmax(94px,1fr))}#aiNextStep{min-width:0;width:100%;box-sizing:border-box}}
#aiReanalysisDialog{max-width:580px;border:1px solid var(--ui-line);border-radius:16px;padding:24px;background:var(--ws-surface);color:var(--ws-text)}
#aiReanalysisDialog::backdrop{background:#0008}
#aiReanalysisDialog p{line-height:1.7}#aiReanalysisDialog label{display:flex;align-items:center;gap:10px}
#aiReanalysisDialog .inline{display:flex;gap:12px;margin-top:20px}
#aiReanalysisDialog input{width:20px;height:20px;flex:none}
#newAiPlan{margin-right:auto;align-self:center}
.aiPreflight[hidden],#aiStepHint[hidden]{display:none!important}
#aiStepHint{margin:14px 0;color:var(--ws-muted);font-size:13px}
/* Full panorama framing and compact shared heading. */
#aiScenePlan .aiCardHeading{grid-column:1/-1;display:flex;align-items:center;gap:8px;min-width:0}
#aiScenePlan .aiCardHeading .aiPickLabel{display:flex;align-items:center;gap:5px;flex:none;font-size:11px;margin:0}
#aiScenePlan .aiCardHeading .aiSceneFilename{min-width:0;flex:1;font-size:12px;line-height:20px;overflow:hidden;white-space:nowrap}
#aiScenePlan article>img{height:auto;aspect-ratio:2/1;object-fit:contain;background:#e6e9e1}
#aiBackgroundNotice{position:sticky;top:0;z-index:3;display:flex;align-items:center;gap:14px;margin:14px 0;padding:14px 16px;border:1px solid #95b858;border-radius:14px;background:#f0ffdd;box-shadow:0 5px 18px #20311920;color:#253719}
#aiBackgroundNotice[hidden]{display:none}
#aiBackgroundNotice p{margin:5px 0 0;line-height:1.5;font-size:13px}
#aiBackgroundNotice strong{font-size:16px}
#aiBackgroundNotice button{flex:none;background:#b4ff59;color:#203119}
.aiReturnIcon{display:grid;place-content:center;flex:none;width:48px;height:48px;border:2px solid #80a637;border-radius:50%;text-align:center;font-weight:800;line-height:18px}
@media(max-width:620px){#aiBackgroundNotice{flex-wrap:wrap}#aiBackgroundNotice>div{flex:1}#aiBackgroundNotice button{margin-left:auto}}

/* R130: compact centered AI review controls. */
#aiAimHint{display:none;position:absolute;top:60%;left:50%;transform:translateX(-50%);padding:6px 12px;border-radius:18px;background:#203119de;color:#eaffd1;font-size:14px;white-space:nowrap;pointer-events:none}
body.aiReviewMode #aiAimHint{display:block}
body.aiReviewMode #arrivalOverlay .arrivalBar{width:max-content;max-width:calc(100% - 24px);display:grid;grid-template-columns:auto auto;justify-items:center;justify-content:center}
body.aiReviewMode #arrivalStep{grid-column:1/-1;background:transparent;color:#52614c;padding:0;min-height:0;font-size:11px}
body.aiReviewMode #arrivalOverlay .arrivalBar #arrivalFovHud{grid-column:1/-1;width:max-content;min-width:0;justify-self:center;justify-content:center;margin:0}
body.aiReviewMode #arrivalError{grid-column:1/-1}
body.aiReviewFinish #arrivalOverlay .arrivalBar{display:flex}
body.aiReviewFinish #aiAimLabel,body.aiReviewFinish #aiAimHint,body.aiReviewFinish #arrivalStep,body.aiReviewFinish #aiReviewTools{display:none!important}
body.aiReviewFinish #arrivalOverlay .arrivalBar #arrivalConfirm{background:#b4ff59;color:#203119}
body.aiReviewFinish #arrivalOverlay .arrivalBar #arrivalFovHud{display:none}

/* R131: stable central review action and high-contrast FOV. */
body.aiReviewMode #arrivalOverlay .arrivalBar{top:calc(60% + 48px)!important;bottom:auto!important;width:340px;grid-template-columns:1fr;grid-template-rows:16px 52px 42px;padding:12px;gap:8px;overflow:visible}
body.aiReviewMode #arrivalOverlay .arrivalBar #arrivalConfirm{grid-column:1;grid-row:3;width:144px;height:42px;justify-self:center}
body.aiReviewMode #arrivalOverlay .arrivalBar #arrivalFovHud{grid-row:2;background:#203b2a;color:#fff;opacity:1;border:1px solid #7f9c68;box-shadow:none}
body.aiReviewMode #arrivalFovHud strong,body.aiReviewMode #arrivalFovHud span{color:#fff}
body.aiReviewMode #arrivalFovHud small{color:#b4ff59}
body.aiReviewMode #arrivalOverlay .arrivalBar #arrivalFovHud button{background:#36583f;color:#fff;border:1px solid #9bb98b;opacity:1}
body.aiReviewMode #aiReviewTools:not([hidden]){position:absolute;left:calc(100% + 8px);bottom:12px;display:flex}
body.aiReviewMode #arrivalError{position:absolute;top:100%;left:0;width:100%;background:#fff5ee}
@media(max-width:650px){body.aiReviewMode #arrivalOverlay .arrivalBar{width:210px}body.aiReviewMode #aiReviewTools:not([hidden]){left:auto;right:4px;bottom:-48px}}
@media(max-height:540px){body.aiReviewMode #arrivalOverlay .arrivalBar{top:auto!important;bottom:8px!important}}

/* R132: glass surfaces and contained overflow control. */
body.aiReviewMode #arrivalOverlay .arrivalBar{background:rgba(246,255,237,.58);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border:1px solid #ffffffa6;box-shadow:0 8px 28px #10201826}
body.aiReviewMode #arrivalOverlay .arrivalBar #arrivalFovHud{background:rgba(24,57,37,.8);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
body.aiReviewMode #aiReviewTools:not([hidden]){left:auto;right:8px;top:8px;bottom:auto}
body.aiReviewMode #aiReviewMenu{position:relative}
body.aiReviewMode #aiReviewMenu summary{list-style:none;padding:4px 8px;border:1px solid #ffffffaa;border-radius:9px;background:#ffffff66}
body.aiReviewMode #aiReviewMenu[open]{position:relative;padding:0;background:transparent}
body.aiReviewMode #aiReviewMenu[open]>button{display:block;position:relative;left:calc(100% + 8px);width:170px;margin:0;background:#f4f9ef;color:#203119;border-radius:0}
body.aiReviewMode #aiReviewMenu[open]>button[hidden]{display:none}
body.aiReviewMode #aiReviewMenu.openLeft[open]>button{left:-178px}
body.aiReviewMode #aiReviewMenu[open]{width:34px}
#aiPairComplete{position:absolute;left:50%;top:60%;transform:translate(-50%,-50%);z-index:80;padding:14px 24px;border-radius:14px;background:#b4ff59;color:#203119;font-weight:800;box-shadow:0 6px 24px #0003;pointer-events:none}
#aiPairComplete[hidden]{display:none}

/* R133: flat translucent marker controls. */
body.editor-modern .markerAnchor>.markerSettings{display:grid;place-items:center;width:28px;height:28px;min-width:28px;padding:0;border-radius:50%;background:rgba(48,64,70,.8)!important;color:#fff!important;border:1.5px solid rgba(255,255,255,.65)!important;box-shadow:none!important;opacity:1;backdrop-filter:blur(6px);transition:border-color .15s,background-color .15s}
body.editor-modern .markerAnchor>.markerSettings svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;opacity:1;pointer-events:none}
body.editor-modern .markerAnchor>.markerSettings.gearLeft svg{width:22px}
body.editor-modern .markerAnchor>.markerSettings:hover:not(:disabled),body.editor-modern .markerAnchor>.markerSettings:focus-visible{border-color:#b4ff59!important;background:rgba(48,64,70,.9)!important;outline:2px solid #b4ff5966;outline-offset:2px;box-shadow:none!important}
body.editor-modern .markerAnchor>.markerSettings.markerDelete:hover:not(:disabled){border-color:#ff8a8a!important}
body.editor-modern .markerAnchor.is-locked>.markerSettings:not(.markerLock){display:none}

/* R134: symmetric controls, 7px clearance from the 54px central marker. */
body.editor-modern:not(.visitor) .markerAnchor>.markerSettings{left:calc(50% + var(--control-x));top:calc(50% + var(--control-y));transform:translate(-50%,-50%)!important;box-sizing:border-box;background:rgba(48,64,70,.55)!important;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px)}
body.editor-modern:not(.visitor) .markerAnchor>.gearLeft{--control-x:-38px;--control-y:-30px}
body.editor-modern:not(.visitor) .markerAnchor>.gearRight{--control-x:38px;--control-y:-30px}
body.editor-modern:not(.visitor) .markerAnchor>.markerArrival{--control-x:0px;--control-y:-48px}
body.editor-modern:not(.visitor) .markerAnchor>.markerLock{--control-x:-38px;--control-y:30px}
body.editor-modern:not(.visitor) .markerAnchor>.markerDelete{--control-x:38px;--control-y:30px}
body.editor-modern:not(.visitor) .markerAnchor>.markerSettings:is(:hover,:focus-visible,:active){transform:translate(-50%,-50%)!important;background:rgba(48,64,70,.7)!important;box-shadow:none!important}
body.editor-modern:not(.visitor) .markerAnchor>:is(.markerLock,.markerDelete):is(:hover,:focus-visible){border-color:#ff8a8a!important;outline-color:#ff8a8a99!important}
body.editor-modern:not(.visitor) .markerAnchor>.marker{border-radius:50%!important}
body.editor-modern:not(.visitor) .markerAnchor:has(>.markerSettings)>.marker span{top:74px}

/* R135: AI badge shares the lower control baseline; name remains below. */
body.editor-modern:not(.visitor) .aiUnverified>.marker:after{top:57px;transform:translate(-50%,-50%);z-index:2}
#aiPairProgress{border-radius:999px;padding:4px 9px;min-height:28px;font-size:13px;font-weight:700;background:#fff0cb;color:#704d11;border:1px solid #ba944d}
#aiPairProgress[data-state=complete]{background:#b4ff59;color:#203119;border-color:#80ae39}
#aiPairProgress[data-state=warning]{background:#ffe3e3;color:#922b35;border-color:#ca6872}

/* R136: one AI report button, with a small explained count. */
body.editor-modern #aiLinks{display:inline-flex!important;align-items:center;justify-content:center;gap:6px;padding:5px 8px!important;min-height:38px}
body.editor-modern #aiLinks .toolbarFeatureIcon{font-size:18px}
body.editor-modern #aiLinks #aiPairProgress{display:flex;flex-direction:column;gap:1px;border:0;border-left:1px solid #806a9a55;border-radius:0;padding:0 0 0 6px;min-height:0;background:transparent!important;line-height:1.15;font-size:12px;color:#493267}
#aiPairProgress small{font-size:9px;font-weight:500;color:#665b70}#aiPairProgress i{font-style:normal;color:#77717d;font-weight:500}#aiPairProgress b{color:#513671}
#aiPairProgress[data-state=complete] b{color:#306d24}#aiPairProgress[data-state=warning] b{color:#ad3040}

.aiPublishWarning{max-width:420px;padding:24px;border:1px solid #c6b9a1;border-radius:16px;background:#fffaf0;color:#34372e}.aiPublishWarning::backdrop{background:#14251c66}.aiPublishWarning div{display:flex;gap:8px;flex-wrap:wrap}.aiPublishWarning [data-review]{background:#b4ff59;color:#203119}

body.editor-modern #aiLinks{width:112px;height:38px;gap:3px;padding:4px!important;font-size:12px;white-space:nowrap}body.editor-modern #aiLinks .toolbarFeatureIcon{font-size:14px;margin-right:0}body.editor-modern #aiLinks #aiPairProgress{font-size:11px;padding-left:4px}

/* R137: stationary hit targets avoid hover enter/leave oscillation. */
body.editor-modern:not(.visitor) .toolbar #aiLinks,body.editor-modern:not(.visitor) .toolbar #aiLinks:is(:hover,:focus,:active){transform:none!important;translate:none!important;scale:none!important;transition:background-color .15s,border-color .15s,color .15s!important}
#aiLinks *{pointer-events:none;cursor:inherit}

/* R138: consistent fixed-height action buttons, stationary in every state. */
body.editor-modern:not(.visitor) .toolbar :is(#add,#aiLinks,#addPoi,#floorPlan){display:inline-flex!important;align-items:center;justify-content:center;box-sizing:border-box;height:38px!important;min-height:38px!important;max-height:38px!important;margin-block:0;padding:0 10px!important;border-width:1px!important;border-style:solid;border-radius:8px!important;font-size:13px;font-weight:700;line-height:1;vertical-align:middle;transform:none!important;translate:none!important;scale:none!important;box-shadow:none!important}
body.editor-modern:not(.visitor) .toolbar :is(#add,#aiLinks){background:#b4ff5c!important;color:#203415!important;border-color:#82b745!important}
body.editor-modern:not(.visitor) .toolbar :is(#addPoi,#floorPlan){background:#ffc477!important;color:#51330e!important;border-color:#cc9344!important}
body.editor-modern:not(.visitor) .toolbar :is(#add,#aiLinks):hover:not(:disabled){background:#c8ff88!important;color:#203415!important;border-color:#65932e!important;box-shadow:none!important;transform:none!important}
body.editor-modern:not(.visitor) .toolbar :is(#addPoi,#floorPlan):hover:not(:disabled){background:#ffd59d!important;color:#51330e!important;border-color:#b5792c!important;box-shadow:none!important;transform:none!important}
body.editor-modern:not(.visitor) .toolbar #aiLinks{width:auto;min-width:112px;font-size:12px;gap:4px}
body.editor-modern #aiLinks #aiPairProgress{color:#254320;border-left-color:#52773855}body.editor-modern #aiLinks #aiPairProgress b{color:#254320}body.editor-modern #aiLinks #aiPairProgress small,body.editor-modern #aiLinks #aiPairProgress i{color:#546449}body.editor-modern #aiLinks #aiPairProgress[data-state=warning] b{color:#ad3040}

/* R139: two sibling actions in a single stationary control. */
#aiSplitButton{display:inline-flex;align-items:stretch;height:38px;border:1px solid #82b745;border-radius:8px;background:#b4ff5c;overflow:hidden}
body.editor-modern:not(.visitor) .toolbar #aiSplitButton #aiLinks{min-width:0;width:auto;height:36px!important;min-height:36px!important;max-height:36px!important;border:0!important;border-radius:0!important;padding:0 7px!important}
body.editor-modern:not(.visitor) .toolbar #aiSplitButton #aiPairProgress{display:flex;flex-direction:column;justify-content:center;gap:1px;padding:0 7px!important;margin:0;height:36px;min-height:36px;border:0;border-left:1px solid #82b745;border-radius:0;background:transparent;color:#254320;line-height:1.1;font-size:11px;transform:none!important;transition:background-color .15s}
#aiSplitButton #aiPairProgress:hover{background:#d3ffa5!important}#aiSplitButton #aiPairProgress *{pointer-events:none}#aiSplitButton #aiPairProgress b{color:#254320}#aiSplitButton #aiPairProgress[data-state=warning] b{color:#ad3040}
#aiCheckpoints{width:min(620px,90vw);max-height:80vh;overflow:auto;padding:20px;border:1px solid #a5ba94;border-radius:16px;color:#263724;background:#f9fcf4}#aiCheckpoints::backdrop{background:#10282088}#aiCheckpoints header,#aiCheckpoints article{display:flex;align-items:center;justify-content:space-between;gap:14px}#aiCheckpoints h2{font-size:20px;margin:0}#aiCheckpoints article{margin:8px 0;padding:12px;border-radius:10px;border:1px solid #cfdbbf}#aiCheckpoints .pending{background:#edffcf;border-left:5px solid #8fcd30}#aiCheckpoints small{display:block;margin-top:5px;color:#647256}#aiCheckpoints details{margin-top:18px}#aiCheckpoints summary{cursor:pointer;padding:10px}.checkpointHeading{color:#4a701e}#aiLocateGuide{position:absolute;z-index:5;top:12px;left:50%;transform:translateX(-50%);display:flex;align-items:center;gap:8px;padding:10px;border-radius:10px;background:#efffdce8;max-width:95%;color:#263724}.arrivalMode #aiLocateGuide{display:none}

#sceneRemovalDialog{max-width:520px;width:90vw;max-height:85vh;overflow:auto;padding:24px;border:1px solid #d8b8a0;border-radius:16px;color:#34382e;background:#fffdf8}#sceneRemovalDialog::backdrop{background:#18291e88}#sceneRemovalDialog h2{font-size:20px}#sceneRemovalDialog li{padding:5px 0}#sceneRemovalDialog p{line-height:1.6}#sceneRemovalDialog .removalWarning{background:#fff0db;border-left:3px solid #d39440;padding:8px 12px}#sceneRemovalDialog footer{display:flex;justify-content:flex-end;gap:10px}#sceneRemovalDialog [data-confirm]{background:#a63840;color:white}#sceneRemovalDialog [data-confirm]:disabled{opacity:.45}

/* R142: short solid guides with 20px dashed extensions, relative to panorama. */
#viewer #centerGuide{width:56px;height:56px;opacity:1;z-index:1;filter:drop-shadow(0 0 1px #142617)}
#viewer #centerGuide::before,#viewer #centerGuide::after{content:none}
#centerGuide svg,#compositionGuides svg{overflow:visible;pointer-events:none;fill:none;stroke:#b4ff59;stroke-width:1}
#centerGuide .guideDash,#compositionGuides .guideDash{stroke-dasharray:3 3}
#compositionGuides{position:absolute;inset:20%;pointer-events:none;z-index:1;opacity:.6;filter:drop-shadow(0 0 1px #142617)}
#compositionGuides svg{position:absolute}
#compositionGuides .guideCorner:nth-child(1){top:0;left:0}
#compositionGuides .guideCorner:nth-child(2){top:0;right:0;transform:scaleX(-1)}
#compositionGuides .guideCorner:nth-child(3){bottom:0;left:0;transform:scaleY(-1)}
#compositionGuides .guideCorner:nth-child(4){bottom:0;right:0;transform:scale(-1)}
#compositionGuides .guideMid:nth-child(5){top:0;left:50%;transform:translateX(-50%)}
#compositionGuides .guideMid:nth-child(6){bottom:0;left:50%;transform:translateX(-50%) rotate(180deg)}
#compositionGuides .guideMid:nth-child(7){top:50%;left:0;transform-origin:0 0;transform:translateY(22px) rotate(-90deg)}
#compositionGuides .guideMid:nth-child(8){top:50%;right:0;transform-origin:100% 0;transform:translateY(22px) rotate(90deg)}
.arrivalMode #compositionGuides,.floorplanMode #compositionGuides{display:none}

#horizonSnap[aria-pressed="true"]{background:#dfffad;color:#254320;border-color:#8dbb55}#horizonSnap[aria-pressed="false"]{background:#f5f6f2;color:#666}#viewer #centerGuide.isSnapped{filter:drop-shadow(0 0 3px #b4ff59)}#viewer #centerGuide.isSnapped::after{content:'已對齊水平';position:absolute;inset:auto;border:0;top:64px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:12px;background:#183925db;color:#b4ff59;padding:4px 8px;border-radius:8px}

/* R144: reserve the right edge for collapse; let identity yield to tools. */
body.editor-modern:not(.visitor)>#currentSceneBar{grid-template-columns:minmax(0,1fr) auto;gap:12px}
#currentSceneBar .currentSceneIdentity{display:flex;align-items:center;gap:8px;width:auto;min-width:0}
#currentSceneBar .currentSceneIdentity>span{flex:none;margin:0}
#currentSceneBar .currentSceneIdentity>strong{min-width:0;max-width:240px;text-align:left}
#currentSceneBar .currentSceneActions{display:flex;justify-content:flex-end;width:auto;min-width:0;gap:7px;overflow:visible}
#currentSceneBar .currentSceneActions>button:not(#toggleFilmstrip){flex:0 0 auto;width:auto;min-width:0;padding-inline:10px;font-size:12px}
#currentSceneBar #toggleFilmstrip{flex:0 0 32px;width:32px;min-width:32px;margin-left:0;transform:none}
@media(max-width:900px){#currentSceneBar .currentSceneIdentity>span{display:none}#currentSceneBar .currentSceneActions{gap:5px}#currentSceneBar .currentSceneActions>button:not(#toggleFilmstrip){font-size:11px;padding-inline:7px}}
@media(max-width:650px){body.editor-modern:not(.visitor)>#currentSceneBar{grid-template-columns:minmax(0,1fr);gap:5px}#currentSceneBar .currentSceneActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr)) 32px;gap:5px}#currentSceneBar #toggleFilmstrip{grid-column:3;grid-row:1 / span 2;align-self:center}#currentSceneBar .currentSceneIdentity>strong{max-width:100%}}

/* R145: center the scene identity within the space left by the right-hand tools. */
#currentSceneBar .currentSceneIdentity{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,auto) minmax(0,1fr);align-items:center;gap:8px;overflow:hidden}
#currentSceneBar .currentSceneIdentity>span{grid-column:1;justify-self:end;max-width:100%;overflow:hidden;white-space:nowrap}
#currentSceneBar .currentSceneIdentity>strong{grid-column:2;justify-self:center;max-width:100%;text-align:center}

#currentSceneBar #horizonSnap{display:inline-flex;align-items:center;justify-content:center;gap:6px}#horizonSnap .horizonStateIcon{width:18px;height:18px;flex:none;fill:none;stroke:#387d25;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;pointer-events:none}#horizonSnap[aria-pressed="false"] .horizonStateIcon{stroke:#c43740}

/* Shared import feedback: local previews do not wait for the tiling worker. */
.uploadBatch{border:1px solid var(--border,#c9d4b9);border-radius:12px;overflow:hidden;background:rgba(245,250,237,.8);margin:12px 0}
.uploadBatch>summary{position:relative;min-height:48px;padding:14px 18px;font-size:15px;font-weight:700;line-height:1.6;background:rgba(180,255,85,.15)}
.uploadBatch>summary:focus-visible{outline:2px solid #537d28;outline-offset:-3px}
.uploadBatch.is-active>summary:after{content:"";position:absolute;bottom:0;left:0;width:35%;height:3px;background:linear-gradient(90deg,transparent,#8ecb3e,transparent);animation:uploadActivity 2s linear infinite;pointer-events:none}
.uploadBatch>div{padding:8px 14px}
.uploadPreview{width:112px;height:56px;object-fit:contain;flex:none;border-radius:6px;background:rgba(45,65,40,.1);font-size:11px}
.uploadBatch .uploaditem{padding:8px 0!important;min-height:72px}
.uploadBatch .uploaditem-heading{display:flex;flex-direction:column;align-items:flex-start;gap:4px}
.uploadBatch .uploaditem-name{overflow-wrap:anywhere}
.uploadBatch .is-processing{border-left:3px solid #83bc36!important;padding-left:8px!important;background:rgba(180,255,85,.12)!important}
.uploadBatch .is-error .uploaditem-status{color:#a52d26}
@keyframes uploadActivity{from{transform:translateX(-100%)}to{transform:translateX(390%)}}
@media(prefers-reduced-motion:reduce){.uploadBatch.is-active>summary:after{animation:none;left:0;width:100%;opacity:.6}}
@media(max-width:650px){.uploadPreview{width:80px;height:40px}.uploadBatch .uploaditem{gap:8px}.uploadBatch>summary{font-size:14px}.uploadBatch progress{width:36px}}
.quickThumb{position:relative;width:100%;aspect-ratio:2/1;display:grid;place-items:center;background:#edf3f6;overflow:hidden;color:#536879;font-size:14px;text-align:center}
.quickThumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:contain;opacity:0}
.quickThumb.is-ready img{opacity:1}.quickThumb.is-ready>span{visibility:hidden}
.photo>.quickThumb{height:100%}
/* Shared centered tiling status, above the panorama preview. */
.quickThumb .thumbnailStatus{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;gap:4px;width:max-content;max-width:90%;padding:10px 18px;border-radius:16px;border:1px solid rgba(154,119,44,.5);background:rgba(245,227,174,.8);color:#4b3c1e;backdrop-filter:blur(9px);pointer-events:none;box-shadow:0 2px 8px #0002}
.thumbnailStatus strong{font-size:16px;line-height:1.3}.thumbnailStatus small{font-size:12px;line-height:1.4}
.quickThumb .thumbnailStatus.is-cutting{background:rgba(22,46,35,.8);border-color:rgba(178,255,88,.7);color:#f5ffe8;animation:thumbnailWorking 2s ease-in-out infinite}
@keyframes thumbnailWorking{50%{box-shadow:0 0 0 4px rgba(178,255,88,.18),0 2px 12px #0003;border-color:#b2ff58}}
.quickThumb:has(.thumbnailStatus)>.thumbnailPending{align-self:end;padding:4px;font-size:11px}
.jobNote.jobNote-details.is-active{background:transparent;color:inherit;border:0;box-shadow:none;padding:8px 0}.jobNote-details .cuttingTrack{display:none}
@media(prefers-reduced-motion:reduce){.quickThumb .thumbnailStatus.is-cutting{animation:none}}
#uploadWorkNotice{position:fixed;right:22px;bottom:24px;z-index:1200;width:min(390px,calc(100vw - 32px));padding:18px 42px 18px 22px;border:1px solid #a8cb7a;border-radius:16px;background:rgba(248,255,239,.94);color:#263c27;backdrop-filter:blur(14px);box-shadow:0 10px 32px #12251d33}
#uploadWorkNotice[hidden]{display:none}#uploadWorkNotice>button{position:absolute;right:8px;top:8px;padding:2px 8px;border:0;background:transparent;font-size:23px}#uploadWorkNotice strong{font-size:15px}.workNoticeText{white-space:pre-line;font-size:14px;line-height:1.7;margin-top:6px}
#uploadWorkNotice.is-working:before{content:'✦';position:absolute;left:6px;top:17px;color:#65962b;animation:thumbnailWorking 2s ease-in-out infinite}
.assetgrid .job>.quickThumb{padding:0!important}.quickThumb .thumbnailStatus{margin:0!important;box-sizing:border-box}
.uploadBatch{display:none}
@media(prefers-reduced-motion:reduce){#uploadWorkNotice.is-working:before{animation:none}}
#uploadWorkNotice{overflow:hidden;isolation:isolate;background:linear-gradient(105deg,rgba(255,247,210,.97),rgba(239,207,130,.94) 48%,rgba(255,244,196,.97));border-color:rgba(179,133,45,.72);color:#302514}
#uploadWorkNotice.is-working:after{content:"";position:absolute;z-index:-1;inset:-80% -20%;background:linear-gradient(110deg,transparent 38%,rgba(255,255,255,.58) 49%,transparent 60%);animation:workNoticeFlow 4.8s ease-in-out infinite;pointer-events:none}
@keyframes workNoticeFlow{0%,26%{transform:translateX(-62%)}70%,100%{transform:translateX(62%)}}
@media(prefers-reduced-motion:reduce){#uploadWorkNotice.is-working:after{animation:none}}
/* R153: compact badges and a horizontal notice, isolated from sidebar rules. */
.quickThumb .thumbnailStatus{display:inline-flex;flex-direction:row;gap:0;padding:3px 9px;min-height:0;border-radius:8px;background:rgba(245,227,174,.62);backdrop-filter:blur(6px);box-shadow:none;max-width:calc(100% - 20px)}
.quickThumb .thumbnailStatus strong{font-size:12px;line-height:18px;font-weight:700;white-space:nowrap}
.quickThumb .thumbnailStatus.is-cutting{background:rgba(22,46,35,.62);box-shadow:none;animation:compactStatusPulse 2.4s ease-in-out infinite}
@keyframes compactStatusPulse{50%{border-color:rgba(178,255,88,.95);background:rgba(22,46,35,.76)}}
body #uploadWorkNotice{position:fixed;inset:76px 24px auto 24px;width:auto;height:auto;min-height:0;max-height:112px;max-width:1100px;margin:0 auto;padding:12px 48px 12px 36px;border:1px solid #8e794a;border-radius:12px;background:linear-gradient(105deg,rgba(24,23,19,.95),rgba(57,43,29,.93),rgba(24,23,19,.95));color:#fff4d8;display:block;box-shadow:0 6px 20px #0002;overflow:auto}
body #uploadWorkNotice[hidden]{display:none}body #uploadWorkNotice strong{font-size:12px;color:#e6d29a}body #uploadWorkNotice .workNoticeText{font-size:13px;line-height:1.5;margin-top:3px}body #uploadWorkNotice>button{color:#f5e5be;background:transparent;width:28px;height:28px;line-height:24px;padding:0;top:10px;right:10px}
body #uploadWorkNotice.is-working:before{left:13px;top:15px;color:#dbc483}
@media(max-width:650px){body #uploadWorkNotice{inset:64px 12px auto 12px}}
@media(prefers-reduced-motion:reduce){.quickThumb .thumbnailStatus.is-cutting{animation:none}}
/* R154: in-flow work status between project tools and thumbnails. */
body #uploadWorkNotice{position:relative;inset:auto;transform:none;width:100%;max-width:none;height:auto;min-height:0;max-height:140px;box-sizing:border-box;margin:14px 0;padding:12px 48px 12px 36px;background:rgba(10,14,10,.94);border:1px solid rgba(178,255,88,.45);color:#b2ff58;box-shadow:none}
body #uploadWorkNotice strong,body #uploadWorkNotice .workNoticeText,body #uploadWorkNotice>button{color:#b2ff58}
body #uploadWorkNotice.is-working:before{color:#b2ff58}
body #uploadWorkNotice.is-working:after{background:linear-gradient(110deg,transparent 38%,rgba(178,255,88,.12) 49%,transparent 60%)}
/* R155: pulse the compact working badge outline without changing its footprint. */
.quickThumb .thumbnailStatus.is-cutting{animation:cuttingOutlinePulse 2s ease-in-out infinite;background:rgba(22,46,35,.62)}
@keyframes cuttingOutlinePulse{0%,100%{border-color:rgba(178,255,88,.3);box-shadow:0 0 0 0 rgba(178,255,88,0)}50%{border-color:#b2ff58;box-shadow:0 0 0 2px rgba(178,255,88,.2),0 0 7px rgba(178,255,88,.22)}}
@media(prefers-reduced-motion:reduce){.quickThumb .thumbnailStatus.is-cutting{animation:none;border-color:#b2ff58}}
/* R156: distinct slow light sweep; sparkle has no rectangular box shadow. */
body #uploadWorkNotice{overflow:hidden}
body #uploadWorkNotice>strong,body #uploadWorkNotice .workNoticeText{position:relative;z-index:1}
body #uploadWorkNotice>button{z-index:2}
body #uploadWorkNotice.is-working:after{z-index:0;inset:-60% -30%;background:linear-gradient(110deg,transparent 32%,rgba(178,255,88,.08) 40%,rgba(178,255,88,.32) 49%,rgba(225,255,190,.2) 53%,transparent 65%);animation:noticeSlowSweep 8s ease-in-out infinite}
body #uploadWorkNotice.is-working:before{z-index:1;border:0;outline:0;box-shadow:none;background:transparent;animation:noticeSparkBreath 4s ease-in-out infinite}
body #uploadWorkNotice.is-working .workNoticeText{animation:noticeTextBreath 4s ease-in-out infinite}
@keyframes noticeSlowSweep{0%,18%{transform:translateX(-65%);opacity:0}27%{opacity:1}58%,70%{transform:translateX(8%);opacity:1}90%,100%{transform:translateX(65%);opacity:0}}
@keyframes noticeSparkBreath{0%,100%{opacity:.65;filter:drop-shadow(0 0 1px rgba(178,255,88,.25))}50%{opacity:1;filter:drop-shadow(0 0 5px rgba(178,255,88,.7))}}
@keyframes noticeTextBreath{0%,100%{opacity:.78}50%{opacity:1}}
@media(prefers-reduced-motion:reduce){body #uploadWorkNotice.is-working:after{animation:none;opacity:0}body #uploadWorkNotice.is-working:before,body #uploadWorkNotice.is-working .workNoticeText{animation:none;opacity:1;filter:none}}

/* R157: concise in-flow upload controls and a three-line status notice. */
body #uploadWorkNotice{max-height:none;overflow:clip}
body #uploadWorkNotice .workNoticeText{white-space:normal;min-width:0}
body #uploadWorkNotice .workNoticeText>div{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#panoramaUploadLabel{display:inline-flex;align-items:center;gap:10px}
#panoramaUploadLabel img{width:36px;height:36px;flex:none}
@keyframes noticeTextBreath{0%,100%{opacity:.42}50%{opacity:1}}

/* R155 asset UI regression: keep the 360 upload action compact and aligned. */
body.workspace-modern:not(.visitor) #shell #assetsTab .assetUploadRow > #panoramaUploadLabel{display:inline-flex;flex:0 0 auto;align-items:center;justify-content:center;align-self:center;gap:10px;width:auto;max-width:100%;min-height:56px;padding:9px 16px;white-space:nowrap;line-height:1.25}
body.workspace-modern:not(.visitor) #shell #assetsTab .assetUploadRow > #panoramaUploadLabel img{display:block;flex:0 0 36px;width:36px;height:36px;max-width:36px;object-fit:contain}
body.workspace-modern:not(.visitor) #shell #assetsTab .assetUploadRow > #panoramaUploadLabel span{display:block;flex:0 0 auto}
@media(max-width:600px){body.workspace-modern:not(.visitor) #shell #assetsTab .assetUploadRow > #panoramaUploadLabel{min-height:48px;padding:7px 12px;gap:8px;font-size:14px}body.workspace-modern:not(.visitor) #shell #assetsTab .assetUploadRow > #panoramaUploadLabel img{flex-basis:30px;width:30px;height:30px;max-width:30px}}

/* R164: responsive editor toolbar and a shared button treatment for preview/publish. */
body.editor-modern:not(.visitor)>header{grid-template-columns:max-content minmax(0,1fr) max-content;gap:clamp(6px,1vw,14px)}
body.editor-modern:not(.visitor)>header>.toolbar{display:flex!important;grid-column:2;grid-row:1;justify-self:stretch;justify-content:flex-start;align-content:center;align-items:center;flex-wrap:wrap;gap:6px;width:100%;min-width:0;padding:4px 0;overflow:visible}
body.editor-modern:not(.visitor)>header>.toolbar .toolbarPrimary,
body.editor-modern:not(.visitor)>header>.toolbar .toolbarSecondary{display:flex;flex:0 1 auto;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:5px;min-width:0}
body.editor-modern:not(.visitor)>header>.toolbar .fovCluster{display:flex;flex:0 1 auto;flex-wrap:wrap;align-items:center;justify-content:flex-start;gap:5px;min-width:0}
body.editor-modern:not(.visitor)>header>.toolbar button:not(.fovHud button){min-width:0;padding-inline:clamp(6px,.65vw,11px);white-space:nowrap}
body.editor-modern:not(.visitor)>header>.editorHeaderActions{grid-column:3;grid-row:1;justify-self:end;display:flex;flex-wrap:wrap;align-items:center;justify-content:flex-end;min-width:0;gap:6px}
body.editor-modern:not(.visitor)>header>.editorHeaderActions .headerActionButton{display:inline-flex;flex:0 1 auto;align-items:center;justify-content:center;min-width:0;width:auto;height:38px;min-height:38px;max-height:38px;padding:0 clamp(8px,.8vw,12px);border:1px solid #8da1a0;border-radius:8px;font-size:13px;font-weight:700;line-height:1;white-space:nowrap;box-shadow:none;transition:background-color .16s,border-color .16s,color .16s}
body.editor-modern:not(.visitor)>header>.editorHeaderActions .previewAction{background:#e6f0f6;color:#23485d;border-color:#a5bdca}
body.editor-modern:not(.visitor)>header>.editorHeaderActions .publishAction{background:#b4ff5c;color:#203415;border-color:#82b745}
body.editor-modern:not(.visitor)>header>.editorHeaderActions .previewAction:hover{background:#d5e7f0;border-color:#789cac}
body.editor-modern:not(.visitor)>header>.editorHeaderActions .publishAction:hover{background:#c8ff88;border-color:#65932e}
@media(max-width:760px){
  body.editor-modern:not(.visitor)>header{grid-template-columns:minmax(0,1fr) max-content;grid-template-rows:auto auto;align-items:center;gap:6px}
  body.editor-modern:not(.visitor)>header>#back{grid-column:1;grid-row:1;justify-self:start}
  body.editor-modern:not(.visitor)>header>.editorHeaderActions{grid-column:2;grid-row:1;justify-self:end}
  body.editor-modern:not(.visitor)>header>.toolbar{grid-column:1/-1;grid-row:2;justify-self:stretch;flex-wrap:wrap;overflow:visible;max-width:100%;padding:2px 0}
  body.editor-modern:not(.visitor)>header>.toolbar .toolbarPrimary,
  body.editor-modern:not(.visitor)>header>.toolbar .toolbarSecondary{flex-wrap:wrap}
}
@media(max-width:480px){
  body.editor-modern:not(.visitor)>header{grid-template-columns:minmax(0,1fr) max-content;padding-inline:7px!important}
  body.editor-modern:not(.visitor)>header>.editorHeaderActions{gap:4px}
  body.editor-modern:not(.visitor)>header>.editorHeaderActions .headerActionButton{height:32px;min-height:32px;max-height:32px;padding:0 7px;font-size:11px}
  body.editor-modern:not(.visitor)>header>.toolbar{column-gap:4px;row-gap:5px}
  body.editor-modern:not(.visitor)>header>.toolbar button:not(.fovHud button){padding:6px 7px;font-size:11px}
}

/* The site theme targets #publishButton by ID; keep its action color in this shared toolbar style. */
body.editor-modern:not(.visitor)>header>.editorHeaderActions>#localPreviewButton{background:#e6f0f6;color:#23485d;border-color:#a5bdca}
body.editor-modern:not(.visitor)>header>.editorHeaderActions>#publishButton{background:#b4ff5c;color:#203415;border-color:#82b745}
body.editor-modern:not(.visitor)>header>.editorHeaderActions>#localPreviewButton:hover{background:#d5e7f0;border-color:#789cac}
body.editor-modern:not(.visitor)>header>.editorHeaderActions>#publishButton:hover{background:#c8ff88;border-color:#65932e}

/* R166: editor action buttons should only change color on hover, without the global lift/shadow. */
body.editor-modern:not(.visitor)>header>.editorHeaderActions>#localPreviewButton:hover:not(:disabled),
body.editor-modern:not(.visitor)>header>.editorHeaderActions>#publishButton:hover:not(:disabled){box-shadow:none!important;transform:none!important;transition:background-color .16s,border-color .16s,color .16s!important}

/* Project workflow responds to the available panel width, including an expanded sidebar. */
#editor{container-type:inline-size;container-name:project-info}
body.workspace-modern:not(.visitor) #editor .projectActionBar.projectWorkflow{grid-template-columns:minmax(0,3fr) 80px minmax(0,1.2fr) 22px minmax(0,1.2fr);gap:12px;align-items:stretch;padding-bottom:20px}
body.workspace-modern:not(.visitor) #editor .projectWorkflow>section{padding:16px;border-radius:14px;display:flex;flex-direction:column;gap:12px}
body.workspace-modern:not(.visitor) #editor .projectWorkflow h3{display:flex;flex-wrap:wrap;align-items:baseline;gap:4px 8px;margin:0;font-size:17px;line-height:1.3}
body.workspace-modern:not(.visitor) #editor .projectWorkflow h3>span{margin:0;font-size:12px}
body.workspace-modern:not(.visitor) #editor .projectWorkflow .projectImportActions{gap:8px;flex:1;align-items:start}
body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport){box-sizing:border-box;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px!important;width:100%;height:104px!important;min-height:104px!important;max-height:104px;padding:12px 8px!important;border-radius:10px!important;font-size:13px!important;line-height:1.3;box-shadow:none!important;text-align:center}
body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport) img{display:block;width:40px!important;height:40px!important;object-fit:contain;flex:none}
body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport)>span{display:block;min-height:0;white-space:nowrap;line-height:1.3}
body.workspace-modern:not(.visitor) #editor .projectWorkflow .aiImportPlaceholder small{display:block;font-size:10px;line-height:1.2;margin-top:2px}
body.workspace-modern:not(.visitor) #editor .workflowAiStep{min-height:0;justify-content:center;gap:6px}
body.workspace-modern:not(.visitor) #editor .workflowAiStep button{width:72px;height:72px;min-height:72px;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor .workflowArrow{padding-top:26px;align-self:center;height:auto}
body.workspace-modern:not(.visitor) #editor .workflowArrow svg{width:22px;transform:none}
@container project-info (min-width:760px) and (max-width:979px){
 body.workspace-modern:not(.visitor) #editor .projectWorkflow>section{padding:12px}
 body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport){height:88px!important;min-height:88px!important;max-height:88px}
 body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport)>span{display:none}
}
@container project-info (max-width:759px){
 body.workspace-modern:not(.visitor) #editor .projectActionBar.projectWorkflow{grid-template-columns:80px minmax(0,1fr) minmax(0,1fr);gap:12px}
 body.workspace-modern:not(.visitor) #editor .importModule{grid-column:1/-1;grid-row:1}
 body.workspace-modern:not(.visitor) #editor .workflowAiStep{grid-column:1;grid-row:2}
 body.workspace-modern:not(.visitor) #editor .editModule{grid-column:2;grid-row:2}
 body.workspace-modern:not(.visitor) #editor .exportModule{grid-column:3;grid-row:2}
 body.workspace-modern:not(.visitor) #editor .workflowArrow{display:none}
 body.workspace-modern:not(.visitor) #editor .projectWorkflow>section{padding:12px}
}
@container project-info (max-width:479px){
 body.workspace-modern:not(.visitor) #editor .projectActionBar.projectWorkflow{grid-template-columns:minmax(0,1fr)}
 body.workspace-modern:not(.visitor) #editor .workflowAiStep{grid-column:1;grid-row:2}
 body.workspace-modern:not(.visitor) #editor .editModule{grid-column:1;grid-row:3}
 body.workspace-modern:not(.visitor) #editor .exportModule{grid-column:1;grid-row:4}
 body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#openTourBuilder,#openTourExport){flex-direction:row;height:80px!important;min-height:80px!important;max-height:80px;gap:12px!important}
 body.workspace-modern:not(.visitor) #editor .projectImportActions>:is(button,.button){font-size:12px!important;padding-inline:4px!important}
}
body.workspace-modern:not(.visitor) #editor .workflowAiStep{padding-top:26px}
@container project-info (max-width:479px){body.workspace-modern:not(.visitor) #editor .workflowAiStep{padding-top:0}}
@container project-info (min-width:760px) and (max-width:979px){
 body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport){position:relative}
 body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,.aiImportPlaceholder,#openTourBuilder,#openTourExport):focus-visible::after{content:attr(title);position:absolute;top:calc(100% + 5px);left:50%;transform:translateX(-50%);z-index:5;white-space:nowrap;padding:5px 8px;background:#263a2c;color:white;border-radius:5px;font-size:11px;pointer-events:none}
}

/* R170: one flat icon and surface family for project actions. */
body.workspace-modern:not(.visitor) #editor{--project-soft:#edf6df;--project-edge:#a6b895;--project-ink:#203126;--project-bright:#b2ff59}
body.workspace-modern:not(.visitor) #editor .projectWorkflow :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport),
body.workspace-modern:not(.visitor) #shell #editor .projectHeaderTools :is(#projectShare,#openProjectSettings){background:var(--project-soft)!important;color:var(--project-ink)!important;border:1px solid var(--project-edge)!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor .configuredBadge{background:var(--project-soft)!important;color:var(--project-ink)!important;border:1px solid var(--project-edge)!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor .projectWorkflow .aiImportPlaceholder{background:#edf1f4!important;border:1px solid #bcc8ce!important;color:#68767f!important}
body.workspace-modern:not(.visitor) #editor .projectWorkflow .aiImportPlaceholder img{opacity:.5}
body.workspace-modern:not(.visitor) #shell #editor .projectHeaderTools #projectHelp{background:#fff0f1!important;border:1px solid #c9a0a5!important;color:#a03540!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor .projectHeaderTools svg{fill:none;stroke:currentColor;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
body.workspace-modern:not(.visitor) #editor .workflowAiStep #openAiAnalysis{background:var(--project-bright)!important;border:1px solid #8ab74f!important;color:var(--project-ink)!important;gap:2px;padding:7px!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor .workflowAiStep #openAiAnalysis img{width:36px;height:36px;display:block;flex:none}
body.workspace-modern:not(.visitor) #editor .workflowAiStep #openAiAnalysis small{font-size:10px;margin:0;line-height:1.2}
body.workspace-modern:not(.visitor) #editor .workflowAiStep #openAiAnalysis.ai-stalled{border-color:#bd4949!important}
body.workspace-modern:not(.visitor) #editor :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport,#projectShare,#openProjectSettings,#projectHelp,#openAiAnalysis){transform:none!important;box-shadow:none!important;transition:background-color .16s,border-color .16s!important}
body.workspace-modern:not(.visitor) #editor :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport,#projectShare,#openProjectSettings):hover:not(:disabled){background:#e0edce!important;border-color:#819b68!important;transform:none!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor #projectHelp:hover{background:#ffe0e4!important;border-color:#b46f79!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor #openAiAnalysis:hover{background:#c2ff7d!important;box-shadow:none!important}
body.workspace-modern:not(.visitor) #editor :is(#projectShare,#openProjectSettings,#projectHelp,#openAiAnalysis):focus-visible{outline:2px solid #327098;outline-offset:3px}
@container project-info (max-width:759px){
 body.workspace-modern:not(.visitor) #editor .projectInfoHeading{flex-wrap:wrap;gap:12px}
 body.workspace-modern:not(.visitor) #editor .projectInfoHeading>.projectIdentity{flex:1 1 100%;width:100%}
 body.workspace-modern:not(.visitor) #editor .projectInfoHeading>.inline{width:100%;justify-content:space-between;flex-wrap:wrap;gap:8px}
 body.workspace-modern:not(.visitor) #editor .projectTitleRow{flex-wrap:wrap}
}
/* Reference-approved trash outline uses the same 2-unit stroke as the redrawn family. */
body.workspace-modern:not(.visitor) #editor .projectHeaderTools #projectHelp svg{stroke-width:2}
/* FOV is canvas chrome: independent of toolbar width, always centered. */
body.editor-modern:not(.visitor)>#fovHud{position:fixed;z-index:9;top:var(--hud-top,64px);left:50%;transform:translateX(-50%);box-sizing:border-box;width:184px;min-width:184px;max-width:calc(100vw - 24px);margin:0;box-shadow:none;flex:none}
body.editor-modern:not(.visitor)>#fovHud button{width:34px;height:34px;min-width:34px;min-height:34px;padding:0;border:1px solid rgba(255,255,255,.22);border-radius:8px;background:rgba(255,255,255,.13);color:white;font-size:20px;box-shadow:none}
body.editor-modern.arrivalMode>#fovHud{visibility:hidden;pointer-events:none}
body.editor-modern:not(.visitor)>header>.toolbar{justify-content:center}
body.editor-modern:not(.visitor)>#infoBar #status{white-space:normal;overflow-wrap:anywhere;max-height:none}
@media(max-width:1050px){
 body.editor-modern:not(.visitor)>header>.toolbar .toolbarLabel{display:none}
 body.editor-modern:not(.visitor)>header>.toolbar :is(#add,#aiLinks,#addPoi,#floorPlan){display:inline-flex;align-items:center;justify-content:center;width:40px;min-width:40px;height:38px;padding:0;gap:0}
 body.editor-modern:not(.visitor)>header>.toolbar .toolbarFeatureIcon,body.editor-modern:not(.visitor)>header>.toolbar .toolbarAddIcon{margin:0;font-size:22px}
}
/* Approved SVG tools use one square footprint and a shared flat surface. */
body.editor-modern:not(.visitor)>header :is(#add,#aiLinks,#addPoi,#floorPlan,#localPreviewButton,#publishButton){display:inline-flex!important;align-items:center;justify-content:center;box-sizing:border-box;flex:none!important;width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;max-height:44px!important;padding:9px!important;gap:0!important;border-radius:9px!important;border:1px solid #a6b895!important;background:#edf6df!important;color:#203126!important;box-shadow:none!important;transform:none!important}
body.editor-modern:not(.visitor)>header .editorToolIcon{width:24px;height:24px;display:block;flex:none;pointer-events:none}
body.editor-modern:not(.visitor)>header .buttonCaption{position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip-path:inset(50%);white-space:nowrap}
body.editor-modern:not(.visitor)>header #aiLinks{background:#b2ff59!important;border-color:#8ab74f!important}
body.editor-modern:not(.visitor)>header :is(#add,#addPoi,#floorPlan,#localPreviewButton,#publishButton):hover:not(:disabled){background:#e0edce!important;border-color:#819b68!important;box-shadow:none!important}
body.editor-modern:not(.visitor)>header #aiLinks:hover:not(:disabled){background:#c2ff7d!important}
body.editor-modern:not(.visitor)>header #publishButton[data-published="true"]{background:#b2ff59!important;border-color:#8ab74f!important}
body.editor-modern:not(.visitor)>header :is(#add,#aiLinks,#addPoi,#floorPlan,#localPreviewButton,#publishButton):focus-visible{outline:2px solid #327098;outline-offset:3px}
body.editor-modern:not(.visitor)>header>.toolbar :is(#add,#aiLinks,#addPoi,#floorPlan){width:44px!important;height:44px!important;min-height:44px!important;max-height:44px!important;background:#edf6df!important;color:#203126!important;border:1px solid #a6b895!important}
body.editor-modern:not(.visitor)>header>.toolbar #aiLinks{background:#b2ff59!important;border-color:#8ab74f!important}
body.editor-modern:not(.visitor)>header>.toolbar :is(#add,#addPoi,#floorPlan):hover:not(:disabled){background:#e0edce!important}
body.editor-modern:not(.visitor)>header>.toolbar #aiLinks:hover:not(:disabled){background:#c2ff7d!important}
body.editor-modern:not(.visitor)>header>.toolbar #aiSplitButton{height:44px;box-sizing:border-box;border:0;background:transparent;overflow:visible;gap:4px}
body.editor-modern:not(.visitor)>header>.toolbar #aiSplitButton #aiLinks{height:44px!important;min-height:44px!important;max-height:44px!important;width:44px!important;min-width:44px!important;padding:9px!important;border:1px solid #8ab74f!important;border-radius:9px!important;background:#b2ff59!important}
body.editor-modern:not(.visitor)>header>.toolbar #aiSplitButton #aiPairProgress{height:44px;min-height:44px;border:1px solid #a6b895;border-radius:9px;background:#edf6df}
/* Text is the default; only insufficient header space enables square icons. */
body.editor-modern:not(.visitor)>header:not(.compactTools) :is(#add,#aiLinks,#addPoi,#floorPlan,#localPreviewButton,#publishButton),
body.editor-modern:not(.visitor)>header:not(.compactTools)>.toolbar #aiSplitButton #aiLinks{width:auto!important;min-width:0!important;padding:0 10px!important;gap:7px!important}
body.editor-modern:not(.visitor)>header .buttonCaption{font-size:13px;line-height:1.2}
body.editor-modern:not(.visitor)>header:not(.compactTools) .buttonCaption{position:static;width:auto;height:auto;overflow:visible;clip-path:none}
body.editor-modern:not(.visitor)>#fovHud{left:var(--hud-left,50%)}
body.editor-modern:not(.visitor)>header:not(.compactTools)>.toolbar #add{background:#b2ff59!important;border-color:#8ab74f!important}
body.editor-modern:not(.visitor)>header:not(.compactTools)>.toolbar :is(#addPoi,#floorPlan){background:#ffd18a!important;border-color:#d3a463!important}
body.editor-modern:not(.visitor)>header:not(.compactTools) #localPreviewButton{background:#e6f0f6!important;border-color:#a5bdca!important;color:#23485d!important}
body.editor-modern:not(.visitor)>header:not(.compactTools) #publishButton{background:#b2ff59!important;border-color:#8ab74f!important}
/* R174: navigation first, account details in a top-layer drawer. */
body.workspace-modern:not(.visitor) #shell>#workspaceSidebar{display:flex!important;flex-direction:column;gap:0;box-sizing:border-box;height:100dvh;max-height:100dvh;top:0;padding:12px 14px!important;overflow:hidden;min-height:0}
body.workspace-modern:not(.sidebar-compact) #shell>#workspaceSidebar .sidebarBrandRow{flex:none;padding:0 30px 10px 0;margin:0 0 10px}
body.workspace-modern:not(.sidebar-compact) #shell .sidebarBrandRow .studioBrand strong{font-size:30px;line-height:1.05}
body.workspace-modern:not(.sidebar-compact) #shell .sidebarBrandRow .studioBrand small{font-size:11px;margin-top:4px;padding:0}
body.workspace-modern:not(.sidebar-compact) #shell #workspaceSidebar #sidebarToggle{top:2px;right:0}
body.workspace-modern #shell #workspaceSidebar>nav{flex:none;display:grid;gap:6px;margin:0 0 10px}
body.workspace-modern:not(.sidebar-compact) #shell #workspaceSidebar :is(#assetsNav,#projectNav,#projectQuickToggle){height:40px;min-height:40px;padding:8px 10px;font-size:13px;line-height:1.3;margin:0}
body.workspace-modern #shell #workspaceSidebar .projectNavGroup{grid-template-columns:minmax(0,1fr) 40px;gap:6px}
body.workspace-modern #shell #workspaceSidebar #projectQuickToggle{font-size:24px;padding:0}
body.workspace-modern #shell #workspaceSidebar #projectNav{display:flex;align-items:center;gap:6px}
.projectListChevron{margin-left:auto;font-size:12px;flex:none}.projectListChevron:empty{display:none}
#projectNav[aria-expanded="false"] .projectListChevron{transform:rotate(180deg)}
body.workspace-modern #shell #workspaceSidebar>.projectNavigation{display:flex;flex-direction:column;flex:1 1 0;min-height:72px;max-height:none!important;margin:0;padding:0;overflow:hidden}
body.workspace-modern #shell #workspaceSidebar>.projectNavigation.hidden{display:none!important}
body.workspace-modern #shell #workspaceSidebar #sidebarProjects{flex:1 1 0;min-height:0;max-height:none!important;overflow-y:auto;overscroll-behavior:contain;margin:0;padding:0 4px 0 8px;scrollbar-gutter:stable}
body.workspace-modern #shell #workspaceSidebar #sidebarProjects button{display:flex;align-items:center;gap:8px;height:36px;min-height:36px;padding:6px 8px;font-size:12px;line-height:1.3;margin:0 0 3px;flex:none}
#sidebarProjects button>span{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#sidebarProjects button>small{margin-left:auto;flex:none}
#workspaceSidebar #sidebarNewProject{display:none!important}
body.workspace-modern:not(.visitor) #shell #workspaceSidebar>#railSettings{display:flex!important;align-items:center;gap:8px;flex:none;width:100%;min-height:40px;height:40px;margin:10px 0 0!important;padding:8px 10px;font-size:13px;border:1px solid var(--ui-line);border-radius:9px;background:var(--ws-surface)}
#sidebarAccountDrawer{position:fixed;inset:12px auto 12px calc(var(--sidebar-width,280px) + 10px);box-sizing:border-box;width:320px;min-width:0;max-width:calc(100vw - 24px);height:max-content;max-height:calc(100dvh - 24px);margin:0;padding:14px;border:1px solid var(--ui-line);border-radius:12px;background:var(--ws-surface,#fff);color:var(--ws-text);overflow-y:auto}
#sidebarAccountDrawer::backdrop{background:#14231c33}
.sidebarDrawerHeading{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.sidebarDrawerHeading button{width:32px;height:32px;min-height:32px;padding:0;font-size:22px}
body.workspace-modern #shell #workspaceSidebar #sidebarAccountDrawer .asideBottom{display:flex!important;flex-direction:column;flex-wrap:nowrap;gap:10px;padding:0;margin:0;border:0}
#sidebarAccountDrawer .sidebarAccountCard,#sidebarAccountDrawer .sidebarAdminCard{width:100%;box-sizing:border-box}
#sidebarAccountDrawer .sidebarAdminCard:has(#adminNav.hidden){display:none}
body.workspace-modern #shell #workspaceSidebar #sidebarAccountDrawer .manualNavLink{display:block!important;width:100%;height:auto;margin:0;padding:10px;box-sizing:border-box}
#sidebarAccountDrawer .manualNavLink .compactRailIcon{display:none!important}#sidebarAccountDrawer .manualNavLink .railLabel{display:inline!important}
body.sidebar-compact #shell #workspaceSidebar>.projectNavigation{display:none!important}
body.sidebar-compact #shell #workspaceSidebar .projectNavGroup{grid-template-columns:1fr}
body.sidebar-compact #shell #workspaceSidebar #projectQuickToggle,body.sidebar-compact .projectListChevron{display:none}
body.sidebar-compact #shell #workspaceSidebar>#railSettings{justify-content:center;margin-top:auto!important;padding:0;width:44px}
body.sidebar-compact #sidebarAccountDrawer{left:82px}
@media(max-height:720px){body.workspace-modern:not(.sidebar-compact) #shell .sidebarBrandRow .studioBrand small{display:none}}
@media(max-height:380px){body.workspace-modern #shell>#workspaceSidebar{overflow-y:auto}body.workspace-modern #shell #workspaceSidebar>.projectNavigation{flex:none;min-height:108px}}
@media(max-width:760px){#sidebarAccountDrawer,body.sidebar-compact #sidebarAccountDrawer{inset:12px;width:calc(100vw - 24px)}body.workspace-modern:not(.sidebar-compact) #shell>#workspaceSidebar{height:100dvh;max-height:100dvh}}
body.workspace-modern:not(.sidebar-compact) #shell #workspaceSidebar:has(>.projectNavigation.hidden)>#railSettings{margin-top:auto!important}
#aiQueueHud{position:fixed;z-index:15;top:var(--hud-top,64px);right:calc(100vw - var(--hud-left,50%) + 106px);width:300px;max-width:calc(100vw - 24px);box-sizing:border-box;padding:12px;border:1px solid #a6b895;border-radius:12px;background:rgba(247,251,240,.94);color:#203126;backdrop-filter:blur(12px);box-shadow:0 3px 12px #10201018;font-size:12px}
#aiQueueHud[hidden]{display:none!important}
#aiQueueHud>header{display:flex;align-items:center;justify-content:space-between;padding:0;background:transparent!important;border:0;gap:8px}
#aiQueueHud>header button{width:28px;height:28px;padding:0;font-size:20px}
#aiQueueHud p{margin:6px 0;line-height:1.45}.aiQueueCurrent{display:block;overflow-wrap:anywhere}.aiQueueStep{color:#536147}
.aiQueueActions{display:flex;gap:4px;flex-wrap:wrap}.aiQueueActions button{padding:6px 7px;font-size:12px;min-height:32px}
.aiQueueList{max-height:144px;overflow:auto;overscroll-behavior:contain;margin-top:8px;display:grid;gap:4px}
.aiQueueList button{width:100%;text-align:left;padding:7px;font-size:12px;background:#fff;border:1px solid #c4d0b9;border-radius:6px;overflow-wrap:anywhere}
.aiQueueList button[aria-current=true]{background:#e0edce;border-color:#819b68}
body.editor-modern.aiReviewMode #aiQueueHud{visibility:visible;pointer-events:auto}
@media(max-width:1000px){#aiQueueHud{right:12px;top:calc(var(--hud-top,64px) + 58px);max-height:calc(100dvh - var(--hud-top,64px) - 180px);overflow:auto}body.aiQueueOpen>#infoBar{top:calc(var(--hud-top,64px) + 66px + var(--ai-queue-height,260px))}}
body.editor-modern #aiQueueHud button{box-sizing:border-box;background:#edf6df!important;color:#203126!important;border:1px solid #a6b895!important;border-radius:6px!important;box-shadow:none!important;transform:none!important;transition:background-color .15s!important;font-weight:600}
body.editor-modern #aiQueueHud button:hover:not(:disabled){background:#dfeccd!important;border-color:#819b68!important;color:#203126!important;box-shadow:none!important;transform:none!important}
body.editor-modern #aiQueueHud .aiQueueList button[aria-current=true]{background:#dceac7!important;color:#203126!important;border-color:#819b68!important}
body.editor-modern #aiQueueHud button:disabled{opacity:.5}
body.editor-modern #aiQueueHud button:focus-visible{outline:2px solid #327098;outline-offset:2px}

/* R177: persistent AI entry prompt and browse-first queue. */
body.editor-modern #autoSaveIntro[data-mode=ai] .autoSaveIntroCard{background:#fff9e9f5;border:1px solid #c9a950;color:#634b16;box-shadow:0 8px 30px #0002;border-radius:16px;pointer-events:auto;cursor:default;padding:30px}
body.editor-modern #autoSaveIntro[data-mode=ai] .autoSaveIntroCard>strong{font-size:clamp(22px,3vw,30px);letter-spacing:0;line-height:1.4}
body.editor-modern #autoSaveIntro[data-mode=ai] .autoSaveIntroCard>strong span{background:none;box-shadow:none;color:#a57912;border-radius:0;font-size:1em;width:auto}
body.editor-modern #autoSaveIntro[data-mode=ai] .autoSaveIntroCard p{font-size:16px;font-weight:500;margin:18px 0;color:#695b39}
body.editor-modern #autoSaveIntro[data-mode=ai] .autoSaveIntroCard small{font-size:13px;margin-top:16px;color:#776b52}
body.editor-modern #launchAiPending{background:var(--ws-action,#286aa5)!important;color:var(--ws-on-action,#fff)!important;border:1px solid var(--ws-action,#286aa5)!important;border-radius:8px;box-shadow:none!important;transform:none!important;padding:12px 24px;font-size:16px;font-weight:700}
body.editor-modern #aiQueueHud .aiQueueActions{display:grid;grid-template-columns:40px minmax(0,1fr) 40px;gap:0;margin-top:10px}
body.editor-modern #aiQueueHud .aiQueueActions button{border-radius:0!important;min-height:38px}
body.editor-modern #aiQueueHud .aiQueueActions button:first-child{border-radius:7px 0 0 7px!important}
body.editor-modern #aiQueueHud .aiQueueActions button:last-child{border-radius:0 7px 7px 0!important}

/* R178: direction first; secondary settings stay collapsed. */
#arrowChoices .arrowDirectionHint{margin:4px 0 8px;color:var(--ws-text,#344850);font-size:13px;font-weight:700;text-align:center}
#arrowChoices .needsDirection button[aria-pressed=true]{animation:arrowDirectionBreathe 2s ease-in-out infinite;outline:2px solid #9cae74;outline-offset:2px}
#arrowChoices .needsDirection button:focus-visible{outline:3px solid var(--ws-action,#286aa5);outline-offset:3px}
#arrowChoices .arrowExtra .transitionSwitch{margin:10px 0}
@keyframes arrowDirectionBreathe{0%,100%{box-shadow:0 0 0 2px #b5cf8720}50%{box-shadow:0 0 0 6px #b5cf8760}}
@media(prefers-reduced-motion:reduce){#arrowChoices .needsDirection button[aria-pressed=true]{animation:none;outline:2px solid #9cae74}}

/* R179: shared glass finish, compact route queue, symmetric FOV controls. */
body.editor-modern #autoSaveIntro[data-mode=ai] .autoSaveIntroCard{background:rgba(255,248,225,.68);backdrop-filter:blur(12px) saturate(115%);-webkit-backdrop-filter:blur(12px) saturate(115%);border-color:rgba(201,169,80,.65);box-shadow:0 6px 24px #0002}
body.editor-modern #aiQueueHud{left:16px;right:auto;top:var(--hud-top,64px);width:260px;max-width:calc(100vw - 32px);padding:10px 12px;background:rgba(242,248,231,.68);border:1px solid rgba(150,171,132,.6);backdrop-filter:blur(12px) saturate(115%);-webkit-backdrop-filter:blur(12px) saturate(115%);box-shadow:0 4px 18px #10201018}
body.editor-modern #aiQueueHud>header{gap:6px;align-items:center}body.editor-modern #aiQueueHud>header strong{line-height:1.4;font-size:13px}
body.editor-modern #aiQueueHud>header button{display:grid;place-items:center;flex:none;width:28px;height:28px;min-height:28px;padding:0;line-height:1;font-size:20px}
body.editor-modern #aiQueueHud .aiQueueCurrent{display:grid;grid-template-columns:18px minmax(0,1fr);gap:2px 4px;font-size:12px;line-height:1.5;margin:8px 0}
body.editor-modern #aiQueueHud .aiQueueCurrent>span:first-child{grid-column:2}.aiQueueBetween{grid-column:1;grid-row:1/3;align-self:center;text-align:center}body.editor-modern #aiQueueHud .aiQueueCurrent>span:last-child{grid-column:2}
body.editor-modern #aiQueueHud button{background:rgba(245,250,237,.64)!important}
body.editor-modern #aiQueueHud .aiQueueActions{grid-template-columns:34px minmax(0,1fr) 34px}
body.editor-modern #aiQueueHud .aiQueueActions button{display:grid;place-items:center;padding:0 6px;line-height:1;min-width:0}
body.editor-modern #aiQueueHud .aiQueueActions svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;display:block}
body.editor-modern #aiQueueHud .aiQueueList{position:relative;max-height:144px;gap:4px}
body.editor-modern #aiQueueHud .aiQueueList button{text-align:center;min-height:32px;padding:5px 8px;font-variant-numeric:tabular-nums;line-height:1.3}
body.editor-modern:not(.visitor)>#fovHud{grid-template-columns:34px minmax(0,1fr) 34px;gap:6px;padding:5px 6px;align-items:center}
body.editor-modern:not(.visitor)>#fovHud button{box-sizing:border-box;display:grid;place-items:center;justify-self:center;margin:0;line-height:1;flex:none;transform:none!important}
@media(max-width:600px){body.editor-modern #aiQueueHud{left:12px;right:auto;top:calc(var(--hud-top,64px) + 58px);width:240px;max-width:calc(100vw - 24px);max-height:calc(100dvh - var(--hud-top,64px) - 200px);overflow:auto}}

/* R180: reduce the route HUD to 75% of its approved width. */
body.editor-modern #aiQueueHud{width:195px}
@media(max-width:600px){body.editor-modern #aiQueueHud{width:180px}}

/* R181: fixed report chrome; the candidate list is the sole scrolling region. */
body.editor-modern #aiLinkDialog[open]{display:flex;flex-direction:column;height:min(880px,calc(100dvh - 32px));max-height:calc(100dvh - 32px);overflow:hidden;box-sizing:border-box}
body.editor-modern #aiLinkDialog>.aiLinkHeader,body.editor-modern #aiLinkDialog>.aiLinkSummary,body.editor-modern #aiLinkDialog>.aiLinkMetricBar,body.editor-modern #aiLinkDialog>.aiLinkSelection,body.editor-modern #aiLinkDialog>.aiLinkActions,body.editor-modern #aiOverviewProgress{flex:none}
body.editor-modern #aiLinkDialog .aiLinkHeader{padding:14px 20px;align-items:center}body.editor-modern #aiLinkDialog .aiLinkHeader h2{font-size:24px;margin:3px 0}body.editor-modern #aiLinkDialog .aiLinkHeader p{font-size:12px}
body.editor-modern #aiLinkDialog .aiLinkSummary{margin:8px 18px 0;padding:8px 10px;font-size:12px}
body.editor-modern #aiLinkDialog .aiLinkMetricBar{margin:8px 18px}.aiLinkMetricBar .aiLinkMetrics>span{min-height:54px!important}
body.editor-modern #aiLinkDialog #aiLinkCandidates{flex:1 1 0;min-height:0;max-height:none;overflow-y:auto;overflow-x:hidden;overscroll-behavior:contain;scrollbar-gutter:stable;padding:8px 18px;align-content:start}
body.editor-modern #aiOverviewProgress{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:4px 18px;font-size:13px;font-weight:700}
body.editor-modern #aiOverviewProgress button{padding:7px 12px;white-space:nowrap}
body.editor-modern #aiLinkDialog .aiLinkSelection{margin:4px 18px;padding:4px 0;gap:8px;flex-wrap:wrap;font-size:12px}
body.editor-modern #aiLinkDialog .aiLinkActions{justify-content:flex-start;padding:8px 18px;gap:8px;font-size:12px}
.aiOverviewMore{width:100%}.aiOverviewMore summary{cursor:pointer;font-weight:700;padding:5px}.aiOverviewMoreActions{display:flex;flex-wrap:wrap;gap:6px;padding:6px 0}.aiOverviewMoreActions button{padding:7px 10px;font-size:12px}
body.editor-modern #aiLinkDialog .aiLinkCandidate{grid-template-columns:auto minmax(0,1fr) auto;gap:6px;padding:10px}
body.editor-modern #aiLinkDialog .aiLinkCandidate>span{grid-column:2;grid-row:1/5}body.editor-modern #aiLinkDialog .aiLinkCandidate>button{grid-column:3;white-space:nowrap}body.editor-modern #aiLinkDialog .aiLinkCandidate>input{grid-column:1}
body.editor-modern #aiLinkDialog [hidden]{display:none!important}
@media(max-height:700px){body.editor-modern #aiLinkDialog .aiLinkHeader{padding:8px 16px}body.editor-modern #aiLinkDialog .aiLinkHeader>div>span,body.editor-modern #aiLinkDialog .aiLinkHeader p{display:none}body.editor-modern #aiLinkDialog .aiLinkMetrics b{font-size:20px}body.editor-modern #aiLinkDialog .aiLinkMetricBar{margin:4px 18px}}
@media(max-width:600px){body.editor-modern #aiLinkDialog{width:calc(100vw - 16px)}body.editor-modern #aiOverviewProgress{align-items:flex-start;font-size:12px}body.editor-modern #aiLinkDialog .aiLinkCandidate{grid-template-columns:minmax(0,1fr) auto}body.editor-modern #aiLinkDialog .aiLinkCandidate>span{grid-column:1;grid-row:auto}body.editor-modern #aiLinkDialog .aiLinkCandidate>button{grid-column:2}body.editor-modern #aiLinkDialog .aiLinkCandidate>input{grid-column:2}body.editor-modern #aiLinkDialog .aiLinkCandidate strong{white-space:normal;overflow-wrap:anywhere}}
@media(max-width:600px){body.editor-modern #aiLinkDialog .aiLinkMetricBar{min-width:0}body.editor-modern #aiLinkDialog .aiLinkMetrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));width:100%;min-width:0;gap:3px}body.editor-modern #aiLinkDialog .aiLinkMetrics>span{min-width:0!important;width:auto!important;padding:6px 2px;font-size:10px}body.editor-modern #aiLinkDialog .aiLinkMetrics b{font-size:20px}body.editor-modern #aiLinkDialog .aiLinkCandidate{display:flex!important;flex-wrap:wrap;align-items:center}body.editor-modern #aiLinkDialog .aiLinkCandidate>span{flex:1 0 100%;width:100%;min-width:0}body.editor-modern #aiLinkDialog .aiLinkCandidate>button{flex:1 1 auto;padding:7px 6px;font-size:11px}body.editor-modern #aiLinkDialog .aiLinkCandidate>input{flex:none}body.editor-modern #aiLinkDialog .aiLinkCandidate>span strong{white-space:normal;overflow-wrap:anywhere}}

/* R186: fixed naming controls, one scrolling content area. */
body.naming-dialog-open{overflow:hidden!important}
body #assetDetails[open]{display:flex;flex-direction:column;overflow:hidden!important;padding:0!important;max-height:calc(100dvh - 32px);width:min(960px,calc(100vw - 32px));box-sizing:border-box}
#assetDetails #assetDetailsForm{display:flex;flex-direction:column;min-height:0;width:100%;max-height:calc(100dvh - 34px);overflow:hidden;margin:0}
#assetDetails .namingDialogHeader{display:flex;align-items:center;justify-content:space-between;gap:16px;flex:none;padding:16px 22px;border-bottom:1px solid var(--ws-line,var(--line));background:var(--ws-surface,#fff)}
#assetDetails .namingDialogHeader h2{margin:0;font-size:22px}
#assetDetails #dismissDetails{display:flex;align-items:center;justify-content:center;width:36px;min-width:36px;height:36px;min-height:36px;padding:0;font-size:26px;line-height:1;border:1px solid var(--line);border-radius:8px;background:var(--ws-surface,#fff);color:var(--ws-text);box-shadow:none!important}
#assetDetails .namingDialogBody{flex:1 1 auto;min-height:0;overflow-y:auto;overscroll-behavior:contain;padding:18px 22px;scrollbar-gutter:stable}
#assetDetails .namingDialogFooter{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:none;padding:12px 22px;border-top:1px solid var(--ws-line,var(--line));background:var(--ws-surface,#fff)}
#assetDetails .namingDialogFooter .inline{margin:0 0 0 auto;flex:none}
#assetDetails .namingDialogFooter #propertyStatus{min-width:0;overflow-wrap:anywhere}
#assetDetails #namingChoices,#assetDetails #sceneNamePanel,#assetDetails #applicationPanel,#assetDetails .applicationGrid{height:auto;max-height:none;overflow:visible}
@media(max-width:540px){#assetDetails .namingDialogHeader,#assetDetails .namingDialogBody,#assetDetails .namingDialogFooter{padding:12px}#assetDetails .namingDialogFooter{flex-wrap:wrap}}

#assetDetails .namingDialogFooter:has(#namingDiscardPrompt:not([hidden])){flex-wrap:wrap}#namingDiscardPrompt{width:100%;padding:10px;background:var(--ws-soft,#fff2da);border:1px solid #bba46c;border-radius:8px;font-size:14px}#namingDiscardPrompt .inline{margin-top:8px!important}#namingDiscardPrompt[hidden]{display:none!important}

/* R188: project detail starts at its own information card. */
body.project-detail #shell>main>header,body.project-detail #projectOverviewTools{display:none!important}
body.project-detail #shell>main{padding-top:20px!important}
body.project-detail #editor{margin-top:0!important}
@media(max-width:760px){body.project-detail #shell>main{padding-top:14px!important}}

/* R190: direct settings beside each project name. */
.projectCardTitleRow{display:flex;align-items:flex-start;gap:10px;margin-bottom:10px;min-height:44px}
.projectCardTitleRow h3{flex:1;min-width:0;margin:2px 0!important;overflow-wrap:anywhere}
body.workspace-modern #tours .projectCardSettings{display:flex;align-items:center;justify-content:center;flex:none;width:36px;height:36px;min-height:36px;padding:7px;border:1px solid var(--ui-line,#cbd4d6);border-radius:50%;background:var(--ws-surface,#fff)!important;color:var(--ws-text);box-shadow:none!important;transform:none!important}
body.workspace-modern #tours .projectCardSettings:hover{background:var(--ws-soft,#eef3f6)!important;border-color:var(--ws-action)}
.projectCardSettings img{display:block;width:22px;height:22px;object-fit:contain}

/* R192: compact overview, quota bar and inline sort controls. */
body.project-overview #shell>main>header{display:none!important}
body.project-overview #shell>main{padding-top:20px!important}
body.workspace-modern #tourListHeading.compactOverview{display:grid;grid-template-columns:minmax(130px,1fr) minmax(150px,210px) auto auto;align-items:center;gap:14px;padding:14px 16px;margin:0 0 18px;border-radius:12px}
#tourListHeading .overviewIdentity h2{margin:0!important;font-size:22px!important;line-height:1.3}
#tourListHeading .overviewIdentity small{display:block;font-size:11px;color:var(--ws-muted);margin-top:5px}
.projectQuotaCompact{min-width:0}.quotaNumbers{display:flex;align-items:baseline;justify-content:space-between;gap:10px;font-size:13px;margin-bottom:7px}.quotaNumbers>span{font-size:11px;color:var(--ws-muted)}
#projectQuotaSphere.projectQuotaMeter{width:100%;height:6px;min-height:6px;margin:0;border:0;border-radius:999px;overflow:hidden;background:var(--ws-soft,#e5eaf0);box-shadow:none!important;transform:none!important}
#projectQuotaFill{display:block;height:100%;width:0;background:var(--ws-action,#286aa5);border-radius:inherit;transition:width .2s}
#projectQuotaSphere[data-level="near"] #projectQuotaFill{background:#ac7b20}#projectQuotaSphere[data-level="full"] #projectQuotaFill{background:#a4434c}
body #projectOverviewTools.projectOverviewTools{display:flex;align-items:center;justify-content:flex-end;gap:3px;margin:0;padding:3px;border:1px solid var(--ui-line,#ccd4d8);border-radius:8px;background:var(--ws-surface,#fff)}
body.workspace-modern #projectOverviewTools button{width:auto;min-height:30px;height:30px;margin:0;padding:4px 9px;font-size:12px;white-space:nowrap;border:1px solid transparent;border-radius:5px;box-shadow:none!important;transform:none!important;background:transparent!important;color:var(--ws-text)!important}
body.workspace-modern #projectOverviewTools button[aria-pressed="true"]{background:var(--ws-soft,#eef2f5)!important;border-color:var(--ws-action)!important;color:var(--ws-action)!important}
body.workspace-modern #tourListHeading #newTour{width:auto;min-height:38px;height:38px;padding:8px 14px;margin:0;font-size:13px;white-space:nowrap;box-shadow:none!important;transform:none!important}
body #shell #newTour:disabled,body #shell #projectQuickToggle:disabled{opacity:.5;cursor:not-allowed}
@media(max-width:1200px) and (min-width:761px){body.workspace-modern #tourListHeading.compactOverview{grid-template-columns:minmax(140px,1fr) minmax(150px,230px) auto;gap:10px 14px}#tourListHeading #projectOverviewTools{grid-row:2;grid-column:1/-1;justify-self:end}#tourListHeading #newTour{grid-column:3;grid-row:1}}
@media(max-width:760px){body.project-overview #shell>main{padding-top:14px!important}body.workspace-modern #tourListHeading.compactOverview{grid-template-columns:minmax(0,1fr) auto;padding:12px;gap:12px;margin-bottom:14px}#tourListHeading .overviewIdentity h2{font-size:20px!important}#tourListHeading #newTour{grid-column:2;grid-row:1}#tourListHeading .projectQuotaCompact{grid-column:1/-1;grid-row:2}#tourListHeading #projectOverviewTools{grid-column:1/-1;grid-row:3;justify-self:stretch;justify-content:space-between}body.workspace-modern #projectOverviewTools button{flex:1;padding:4px 6px;font-size:11px}}

/* R194: matching asset workspaces; project usage is separate from folder classification. */
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace{--library-accent:var(--ws-action);--library-tint:color-mix(in srgb,var(--ws-action) 8%,var(--ws-surface));}
body.workspace-modern:not(.visitor) #shell #mediaLibrary.assetLibraryWorkspace{--library-accent:#ac6a23;--library-tint:color-mix(in srgb,#d99340 9%,var(--ws-surface));}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload{box-sizing:border-box;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:116px;padding:18px 20px;margin:0 0 24px;border:1px solid var(--ui-line);border-radius:14px;background:var(--ws-surface);box-shadow:0 2px 8px #18233304;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload h2{margin:0 0 10px;font-size:19px;line-height:1.4;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload p{font-size:12px;line-height:1.5;margin:4px 0;color:var(--ws-muted);}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload>.button{display:inline-flex;align-items:center;justify-content:center;flex:none;min-height:48px;height:48px;padding:10px 18px;border-radius:10px;font-size:14px;font-weight:700;gap:10px;box-shadow:none!important;transform:none!important;}
body.workspace-modern:not(.visitor) #shell #assetsTab .assetLibraryUpload>#panoramaUploadLabel{min-height:48px;height:48px;padding:10px 18px;}
body.workspace-modern:not(.visitor) #shell #assetsTab .assetLibraryUpload>#panoramaUploadLabel img{width:28px;height:28px;flex-basis:28px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .librarySectionHeading{display:flex;align-items:center;margin:0 0 12px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .librarySectionHeading h2{font-size:17px;line-height:1.4;margin:0;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryTools{display:grid;grid-template-columns:minmax(200px,1fr) minmax(150px,.45fr) minmax(190px,.65fr);align-items:end;gap:12px;margin:0 0 16px;padding:0;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .libraryField{display:flex;flex-direction:column;gap:7px;min-width:0;margin:0;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .libraryField>span{font-size:11px;font-weight:650;letter-spacing:.04em;color:var(--ws-muted);line-height:1.4;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .libraryField :is(input,select){box-sizing:border-box;width:100%;min-width:0;max-width:100%;height:42px;min-height:42px;margin:0;padding:9px 12px;border:1px solid var(--ui-line);border-radius:9px;background:var(--ws-surface);color:var(--ws-text);font-size:13px;box-shadow:none;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .libraryField :is(input,select):focus-visible{outline:2px solid var(--library-accent);outline-offset:2px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));align-items:stretch;gap:10px;margin:0 0 18px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards :is(.folderCard,.folderCard:first-child,.folderAddCard){position:relative;box-sizing:border-box;width:auto;min-width:0;max-width:none;min-height:76px;height:76px;margin:0;border:1px solid var(--ui-line);border-radius:11px;background:var(--ws-surface);box-shadow:none!important;transform:none!important;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard.is-selected{border-color:var(--library-accent);background:var(--library-tint);box-shadow:inset 0 0 0 1px var(--library-accent)!important;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard .folderCardOpen{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:10px;box-sizing:border-box;width:100%;height:100%;padding:12px 16px;border:0;background:transparent!important;box-shadow:none!important;transform:none!important;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard .folderCardArt{display:flex;align-items:center;flex:none;width:24px;height:24px;max-width:24px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard .folderCardArt svg{width:24px;height:24px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard:first-child .folderCardArt svg{height:24px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard .folderCardText{position:static;display:flex;flex:1;flex-direction:column;align-items:flex-start;justify-content:center;gap:2px;width:auto;min-width:0;margin:0;text-align:left;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard .folderCardText strong{display:block;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:13px;line-height:1.4;text-shadow:none;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard .folderCardText :is(small,time){font-size:10px;line-height:1.3;color:var(--ws-muted);}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderAddCard{border-style:dashed;font-size:12px;color:var(--ws-muted);}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderToolbar{display:flex;flex-wrap:wrap;align-items:center;gap:8px;padding:10px 12px;margin:0 0 16px;border-radius:10px;background:var(--library-tint);}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderToolbar:not(:has(>:not([hidden]))){display:none;}
@media(max-width:760px){body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryTools{grid-template-columns:minmax(0,1fr) minmax(0,1fr);}body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .librarySearch{grid-column:1/-1;}body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload{flex-wrap:wrap;padding:16px;gap:12px;}body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards{grid-template-columns:repeat(auto-fill,minmax(135px,1fr));}}
@media(max-width:420px){body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload>.button{width:100%;}body.workspace-modern:not(.visitor) #shell #assetsTab .assetLibraryUpload>#panoramaUploadLabel{width:100%;}body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards{grid-template-columns:repeat(2,minmax(0,1fr));}}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload{min-height:124px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .libraryField{background:transparent!important;border:0!important;padding:0!important;box-shadow:none!important;border-radius:0;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload>.button{min-width:170px;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .librarySectionHeading{padding:0;min-height:0;border:0;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .assetLibraryUpload{margin-bottom:24px!important;}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards{grid-auto-rows:76px;min-height:0;}
@media(max-width:600px){body.workspace-modern:not(.visitor) #shell #assetWorkspaceSwitch button{padding:12px 8px;gap:6px;}body.workspace-modern:not(.visitor) #shell #assetWorkspaceSwitch button strong{font-size:14px;white-space:nowrap;}body.workspace-modern:not(.visitor) #shell #assetWorkspaceSwitch button small{font-size:10px;}body.workspace-modern:not(.visitor) #shell #assetWorkspaceSwitch button svg{width:22px;height:22px;flex:none;}}
body.workspace-modern:not(.visitor) #shell .assetLibraryWorkspace .folderCards .folderCard:first-child{grid-row:auto;grid-column:auto;}

/* R195: successful AI analysis history, independent of publication/review status. */
body.workspace-modern:not(.visitor) #shell .projectCover .projectAiBadge{top:auto;right:auto;left:10px;bottom:10px;display:inline-flex;align-items:center;gap:5px;line-height:1.4;background:#edf3edeb;color:#294c3c;border-color:#a6bfae;backdrop-filter:blur(8px);pointer-events:none;}
body.workspace-modern:not(.visitor) #shell .projectCover .projectAiBadge>img{position:static;display:block;flex:none;width:15px;height:15px;min-height:0;object-fit:contain;border-radius:0;}
/* R198: standalone asset inspection, independent of scene naming. */
#assetInfoDialog{width:min(1120px,calc(100vw - 32px));max-height:calc(100dvh - 40px);padding:0;border:1px solid var(--ui-line);border-radius:18px;background:var(--ws-surface,#fff);color:var(--ws-text,#243445);box-shadow:0 24px 80px #101c3033;overflow:hidden;}
#assetInfoDialog[open]{display:flex;flex-direction:column;}
#assetInfoDialog::backdrop{background:#15233480;backdrop-filter:blur(5px);}
#assetInfoDialog .assetInfoHeader{display:flex;flex:none;align-items:flex-start;justify-content:space-between;gap:20px;padding:22px 26px;border-bottom:1px solid var(--ui-line);margin:0;background:transparent;}
#assetInfoDialog .assetInfoHeader p{font-size:12px;color:var(--ws-muted);margin:0 0 6px;}
#assetInfoDialog h2{font-size:20px;margin:0;line-height:1.4;overflow-wrap:anywhere;}
#assetInfoDialog .assetInfoHeader button{flex:none;width:36px;height:36px;padding:0;font-size:24px;background:transparent;color:inherit;border:1px solid var(--ui-line);border-radius:9px;}
#assetInfoDialog .assetInfoBody{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(260px,1fr);gap:26px;padding:24px 26px;overflow:auto;min-height:0;}
#assetInfoDialog .assetInfoPreview{position:relative;align-self:start;min-width:0;aspect-ratio:4/3;border:1px solid var(--ui-line);border-radius:12px;overflow:hidden;background:#172128;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#e7edf1;}
#assetInfoDialog .assetInfoPreview iframe{position:absolute;inset:0;display:block;width:100%;height:100%;border:0;}
#assetInfoDialog .assetInfoPreview>img{width:100%;object-fit:contain;}
#assetInfoDialog .assetInfoPreview>p{padding:16px;font-size:13px;text-align:center;}
#assetInfoDialog [data-info-fullscreen]{position:absolute;bottom:12px;right:12px;background:#172128c9;color:white;border:1px solid #ffffff50;border-radius:8px;padding:7px 10px;font-size:12px;}
#assetInfoDialog .assetInfoPreview:fullscreen{aspect-ratio:auto;width:100vw;height:100dvh;border:0;border-radius:0;}
#assetInfoDialog h3{font-size:13px;margin:0 0 10px;font-weight:700;}
#assetInfoDialog h3 small{color:var(--ws-muted);font-weight:400;margin-left:6px;}
#assetInfoDialog dl{margin:0 0 24px;}
#assetInfoDialog dl>div{display:grid;grid-template-columns:110px minmax(0,1fr);gap:12px;padding:10px 0;border-bottom:1px solid var(--ui-line);font-size:13px;}
#assetInfoDialog dt{color:var(--ws-muted);}
#assetInfoDialog dd{margin:0;text-align:right;overflow-wrap:anywhere;}
#assetInfoDialog .assetInfoProjects{list-style:none;padding:0;margin:0 0 22px;display:grid;gap:7px;}
#assetInfoDialog .assetInfoProjects li{padding:9px 11px;border:1px solid var(--ui-line);border-radius:8px;font-size:13px;overflow-wrap:anywhere;background:color-mix(in srgb,var(--ws-action) 4%,var(--ws-surface));}
#assetInfoDialog .assetInfoOriginal{margin-top:18px;padding:12px;border:1px solid var(--ui-line);border-radius:10px;font-size:13px;}
#assetInfoDialog summary{cursor:pointer;font-weight:650;}
#assetInfoDialog .assetInfoMuted{color:var(--ws-muted);font-size:12px;line-height:1.7;}
#assetInfoDialog .assetInfoDelete{background:transparent;color:#a73545;border:1px solid #d4aeb5;border-radius:8px;padding:8px 10px;font-size:12px;box-shadow:none;}
#assetInfoDialog .assetInfoError{color:#a73545;font-size:13px;}
#assetInfoDialog .assetInfoFooter{display:flex;flex:none;align-items:center;justify-content:space-between;gap:16px;margin:0;padding:14px 26px;border-top:1px solid var(--ui-line);font-size:11px;color:var(--ws-muted);}
#assetInfoDialog .assetInfoFooter button{padding:9px 18px;border-radius:8px;}
body.workspace-modern:not(.visitor) #shell .assetResolution{background:var(--ws-surface);color:var(--ws-muted);border-color:var(--ui-line);}
@media(max-width:760px){#assetInfoDialog .assetInfoBody{grid-template-columns:minmax(0,1fr);padding:16px;gap:20px;}#assetInfoDialog .assetInfoPreview{aspect-ratio:16/10;}#assetInfoDialog .assetInfoHeader{padding:16px;}#assetInfoDialog .assetInfoFooter{padding:12px 16px;}#assetInfoDialog .assetInfoFooter span{max-width:70%;}}

#assetInfoDialog .assetInfoPreview>p{color:#d4dee6;}

#assetInfoDialog .assetInfoLoading{position:absolute;top:12px;left:12px;padding:7px 10px;border-radius:8px;background:#172128d9;color:#fff;font-size:12px;pointer-events:none;}#assetInfoDialog .assetInfoLoading[hidden]{display:none!important;}

/* R199: one compact sort control, order-derived scene naming. */
.sceneSortLabel{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:var(--muted,#596675)}
.sceneSortLabel select{width:auto;min-width:190px;min-height:40px;padding:8px 34px 8px 12px;border-radius:10px}
#sceneNameComposer{grid-template-columns:1fr}#assetDetails .sceneNamePreview{width:100%}
#assetDetails [hidden]{display:none!important}

/* R200: fixed first grid cell; first real scene remains position 01. */
#scenes .sceneStartGuide{min-width:0;border:1px solid #a5bed4;border-radius:12px;background:linear-gradient(145deg,#ecf4fb,#f8fbfe);color:#29465f;padding:20px;display:flex;flex-direction:column;justify-content:center;box-shadow:0 2px 8px #23435b06;}
.sceneGuideIcon{display:grid;place-items:center;width:40px;height:40px;background:#dbeaf7;border-radius:11px;color:#386e9b;margin-bottom:12px;flex-shrink:0}
.sceneGuideIcon svg{width:23px;height:23px}.sceneStartGuide h3{font-size:19px;margin:0 0 8px;line-height:1.4}.sceneStartGuide p{font-size:14px;line-height:1.7;margin:0 0 17px;color:#506b82}.sceneStartGuide ol{list-style:none;counter-reset:guide;padding:0;margin:0;display:grid;gap:12px}.sceneStartGuide li{counter-increment:guide;position:relative;padding-left:29px;font-size:13px;line-height:1.7}.sceneStartGuide li:before{content:counter(guide);position:absolute;left:0;top:0;width:21px;height:21px;border-radius:50%;display:grid;place-items:center;background:#dce9f5;font-size:12px;font-weight:700;color:#36678f}.sceneStartGuide small{font-size:12px;line-height:1.6;color:#6e8397;margin-top:24px}
#scenes .sceneStartCard{border:2px solid #6999c1;box-shadow:0 0 0 2px #6999c10d}.sceneStartBadge{position:absolute;right:8px;top:8px;display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:4px 8px;border:1px solid #bdd3e5;border-radius:20px;background:#edf5fcf5;color:#2b638e;font-size:12px;line-height:1.4;font-weight:700;pointer-events:none;z-index:1}.sceneStartBadge svg{width:14px;height:14px;flex-shrink:0}

#dashboardSceneTrash{margin-top:20px;padding-top:16px;border-top:1px solid var(--ws-border,#d1dbe1)}#dashboardSceneTrash>p{font-size:13px;color:var(--ws-muted,#607486);line-height:1.6}
#sceneRestoreDialog{width:min(560px,calc(100vw - 28px));max-height:calc(100dvh - 32px);overflow:auto;padding:22px;border:1px solid #cbd6df;border-radius:18px;background:#f7fafc;color:#283e51}#sceneRestoreDialog::backdrop{background:#15293870;backdrop-filter:blur(4px)}#sceneRestoreDialog header{display:flex;justify-content:space-between;gap:12px;align-items:center}#sceneRestoreDialog h2{margin:0;font-size:21px}#sceneRestoreDialog p,#sceneRestoreDialog li{font-size:15px;line-height:1.7}#sceneRestoreDialog footer{display:flex;gap:10px;justify-content:flex-end;border-top:1px solid #d7e1e8;margin-top:18px;padding-top:16px}#sceneRestoreDialog .removalWarning{padding:10px;background:#fff0e3;color:#8b5038;border-radius:8px}#sceneRestoreDialog [data-error]{color:#a13a58}#sceneRestoreDialog button{min-height:42px;padding:8px 14px;border:1px solid #b5c6d3;border-radius:9px;background:#edf4f8;color:#304f67;box-shadow:none!important;transform:none!important}#sceneRestoreDialog [data-restore]{background:#b4ff59;color:#28421e}
/* Independent creative tools are available from the project overview. */
#aiCreationLauncher{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;margin:0 0 16px;border:1px solid var(--ui-line,#cbd4d6);border-radius:12px;background:var(--ws-surface,#fff);color:var(--ws-text,#263b43)}
#aiCreationLauncher[hidden],body.project-detail #aiCreationLauncher{display:none!important}
.aiCreationHeading{display:grid;gap:5px;min-width:0}.aiCreationHeading>span{font-size:9px;letter-spacing:1.8px;color:var(--ws-muted,#667789)}.aiCreationHeading>strong{font-size:16px;font-weight:650}
.aiCreationChoices{display:flex;gap:10px;flex-wrap:wrap}#aiCreationLauncher .aiCreationChoices>a{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:44px;padding:10px 14px;border:1px solid var(--ui-line,#cbd4d6);border-radius:9px;text-decoration:none;font-size:13px;font-weight:600;white-space:nowrap;transition:background .15s,border-color .15s}
#aiCreationLauncher .aiCreationChoices>a>svg{width:22px;height:22px;flex:none}#aiCreationLauncher .aiCreationChoices>a>span:last-child{margin-left:3px;font-size:14px;opacity:.65}#aiCreationLauncher .aiStudioEntry{background:var(--ws-soft,#eef3f5);color:var(--ws-text,#263b43)}#aiCreationLauncher .worldBuilderEntry{background:#11172b;color:#e7efff;border-color:#526c95}#aiCreationLauncher .worldBuilderEntry:hover{background:#1e2944;border-color:#89bed9}#aiCreationLauncher .aiStudioEntry:hover{border-color:var(--ws-action,#286aa5)}#aiCreationLauncher .aiCreationChoices>a:focus-visible{outline:3px solid #8bc8e2;outline-offset:3px}
@media(max-width:760px){#aiCreationLauncher{align-items:start;flex-direction:column;padding:14px;gap:12px}.aiCreationChoices{width:100%;display:grid;grid-template-columns:1fr 1.2fr;gap:8px}#aiCreationLauncher .aiCreationChoices>a{font-size:11px;padding:10px 8px;gap:6px}#aiCreationLauncher .aiCreationChoices>a>svg{width:19px;height:19px}.aiCreationHeading{display:flex;align-items:center;gap:12px}.aiCreationHeading>strong{font-size:15px}}
@media(max-width:400px){.aiCreationChoices{grid-template-columns:1fr}#aiCreationLauncher .aiCreationChoices>a{justify-content:start;padding:10px 14px;font-size:12px}#aiCreationLauncher .aiCreationChoices>a>span:last-child{margin-left:auto}}

/* Independent object-sequence tool follows the Tour navigation group. */
#object360Nav{display:block;box-sizing:border-box;min-height:44px;padding:11px 12px;border:1px solid var(--ui-line,#bac8b3);border-radius:9px;background:var(--ws-surface,#fff);color:var(--ws-text,#263b32);text-decoration:none;font-size:14px;font-weight:750;line-height:1.4}
#object360Nav:hover{background:var(--ws-soft,#eef6e6);border-color:var(--ws-action,#78946d)}
body.sidebar-compact #shell #object360Nav{display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;margin:8px auto}

/* Home entry sits directly below the Tour overview heading. */
.object360Launcher{display:flex;align-items:center;gap:14px;margin:0 0 16px;padding:14px 18px;border:1px solid var(--ui-line,#cbd4d6);border-radius:12px;background:var(--ws-surface,#fff);color:var(--ws-text,#263b43)}
body.project-detail #object360Launcher{display:none!important}
.object360LauncherIcon{display:grid;place-items:center;flex:none;width:44px;height:44px;border-radius:11px;background:var(--ws-soft,#eef3e7);color:var(--ws-action,#557644)}
.object360LauncherIcon svg{width:28px;height:28px}
.object360LauncherCopy{flex:1;min-width:0}
.object360LauncherCopy h3{margin:0 0 3px;font-size:16px;line-height:1.4}
.object360LauncherCopy p{margin:0;color:var(--ws-muted,#66796e);font-size:12px;line-height:1.5}
.object360LauncherAction{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:44px;padding:10px 16px;border:1px solid var(--ui-line,#bac8b3);border-radius:9px;background:var(--ws-soft,#eef3e7);color:var(--ws-text,#263b43);text-decoration:none;font-size:13px;font-weight:700;white-space:nowrap}
.object360LauncherAction:hover{border-color:var(--ws-action,#557644)}
.object360LauncherAction:focus-visible{outline:3px solid var(--ws-action,#557644);outline-offset:3px}
@media(max-width:600px){.object360Launcher{display:grid;grid-template-columns:40px minmax(0,1fr);gap:10px 12px;padding:12px}.object360LauncherIcon{width:40px;height:40px}.object360LauncherAction{grid-column:1/-1;justify-content:space-between;width:100%;box-sizing:border-box}}

/* Changle Demo: three steps remain balanced after removing the AI workflow. */
html body.workspace-modern:not(.sidebar-compact) #shell .sidebarBrandRow .studioBrand strong{font-size:24px;line-height:1.35;font-weight:750;letter-spacing:.02em;white-space:nowrap}
html body.workspace-modern #shell .sidebarBrandRow .studioBrand small{font-size:12px;line-height:1.5;letter-spacing:.05em;margin-top:5px;padding:0}
html .authbox .brand.studioBrand{font-size:27px;letter-spacing:.03em}
html body.workspace-modern:not(.visitor) #editor .projectActionBar.projectWorkflow.changleWorkflow{display:grid;grid-template-columns:minmax(0,1.25fr) repeat(2,minmax(0,1fr));gap:16px;align-items:stretch;padding-bottom:24px}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow>section{display:grid;grid-template-rows:44px minmax(44px,auto) 104px;grid-column:auto;grid-row:auto;min-width:0;padding:20px;gap:14px;border:1px solid var(--ui-line);border-radius:16px;background:var(--ws-surface)}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow .changleStepHeader{display:flex;align-items:center;gap:11px;min-width:0}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow .changleStepNumber{display:flex;align-items:center;justify-content:center;flex:none;width:34px;height:34px;border:1px solid var(--ui-line);border-radius:50%;background:var(--ws-soft);color:var(--ws-muted);font-size:12px;font-weight:750;letter-spacing:.03em}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow h3{display:block;margin:0;font-size:18px;line-height:1.45;white-space:nowrap;letter-spacing:.02em}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow .changleStepEnglish{margin:2px 0 0;font-size:10px;line-height:1.4;font-weight:600;letter-spacing:.15em;color:var(--ws-muted)}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow .changleStepDescription{margin:0;font-size:13px;line-height:1.7;color:var(--ws-muted);overflow-wrap:break-word}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow .projectImportActions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;align-items:stretch;min-width:0;margin:0}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport){display:flex;align-items:center;justify-content:center;flex-direction:column;gap:12px!important;box-sizing:border-box;width:100%;min-width:0;height:104px!important;min-height:104px!important;max-height:104px;padding:14px 8px!important;border:1px solid var(--ui-line)!important;border-radius:12px!important;background:var(--ws-soft)!important;color:var(--ws-text)!important;font-size:14px!important;font-weight:650;line-height:1.4;text-align:center;box-shadow:none!important;transition:background .15s,border-color .15s}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport):hover{border-color:var(--ws-action)!important;background:var(--ws-surface)!important}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport) img{display:block;flex:none;width:32px!important;height:32px!important;object-fit:contain}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow :is(#tourUploadLabel,#chooseAssets,#openTourBuilder,#openTourExport)>span{display:block;min-height:0;white-space:nowrap;line-height:1.4}
@container project-info (max-width:820px){html body.workspace-modern:not(.visitor) #editor .projectActionBar.projectWorkflow.changleWorkflow{grid-template-columns:repeat(2,minmax(0,1fr))}html body.workspace-modern:not(.visitor) #editor .changleWorkflow>.importModule{grid-column:1/-1}}
@container project-info (max-width:480px){html body.workspace-modern:not(.visitor) #editor .projectActionBar.projectWorkflow.changleWorkflow{grid-template-columns:minmax(0,1fr);gap:12px}html body.workspace-modern:not(.visitor) #editor .changleWorkflow>section{padding:16px}}

html body.workspace-modern:not(.visitor) #editor .changleWorkflow #editorPrerequisite{display:block;margin:3px 0 0;font-size:12px;line-height:1.5}
html body.workspace-modern:not(.visitor) #editor .changleWorkflow #editorPrerequisite[hidden]{display:none!important}
