:root{font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#f4f6fa;background:#080d16;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-height:100svh;overflow:hidden}#viewport{position:fixed;inset:0}canvas{display:block}button{font:inherit;color:inherit;cursor:pointer;border:1px solid rgba(255,255,255,.19);background:rgba(17,23,34,.7);border-radius:10px;padding:10px 14px;backdrop-filter:blur(20px)}button:hover:not(:disabled){background:rgba(255,255,255,.13);border-color:rgba(255,255,255,.38)}button:disabled{opacity:.42;cursor:default}.topbar{position:fixed;inset:0 0 auto;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:20px clamp(18px,3vw,44px);pointer-events:none}.topbar>*{pointer-events:auto}.wordmark{font-weight:850;font-size:22px;letter-spacing:-.055em;white-space:nowrap}.wordmark>span{color:#99a8bf}.wordmark small{font-weight:500;color:#9aaabd;letter-spacing:0;font-size:11px;margin-left:14px}.topbar nav{display:flex;gap:8px}.topbar nav button{font-size:12px}.statusbar{position:fixed;left:clamp(18px,3vw,44px);top:78px;font-size:11px;letter-spacing:.03em;color:#b6c5d6;display:flex;align-items:center;gap:9px}.signal{width:7px;height:7px;border-radius:50%;background:#e6b56e;box-shadow:0 0 12px #e6b56e}.signal.online{background:#73d5a5;box-shadow:0 0 12px #73d5a5}.sep{opacity:.4}.instructions{position:fixed;bottom:78px;left:50%;transform:translateX(-50%);white-space:nowrap;font-size:11px;color:#c3cddd;text-shadow:0 2px 12px #000}.controls{position:fixed;bottom:21px;left:50%;transform:translateX(-50%);display:flex;gap:6px}.controls button{padding:9px 13px;font-size:12px;white-space:nowrap}.controls button.selected,.primary{background:#e5eefa!important;color:#111d2e!important;border-color:#e5eefa!important;font-weight:650}.backdrop{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:18px;background:rgba(6,10,17,.59);backdrop-filter:blur(12px)}.backdrop[hidden]{display:none}.overlay{background:linear-gradient(145deg,#1b2535,#0f1724);border:1px solid #334156;border-radius:18px;width:min(560px,100%);box-shadow:0 25px 120px #000a;padding:26px;max-height:min(78svh,700px);display:flex;flex-direction:column}.overlay-head{display:flex;justify-content:space-between;gap:20px;align-items:flex-start}.overlay-head h1,.overlay-head h2{font-size:24px;letter-spacing:-.035em;line-height:1.1;margin:9px 0 22px}.eyebrow{font-size:10px;letter-spacing:.22em;color:#8fa9c6;font-weight:700}.overlay-head>button{padding:8px 12px}.log-scroll{overflow:auto;min-height:120px;max-height:48svh}.release{border-top:1px solid #324052;padding:18px 0}.release:first-child{border-top:none}.release-head{display:flex;justify-content:space-between;align-items:baseline;gap:20px}.release-head strong{font-size:16px}.release time{font-size:11px;color:#9cabbe}.release ul{margin:8px 0 0;padding-left:17px;color:#c5cfde;font-size:13px;line-height:1.7}.overlay-foot{border-top:1px solid #304055;padding-top:17px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;color:#9cabbe;font-size:11px}.overlay-foot button{font-size:12px}.callpanel p{font-size:13px;color:#abbad0;line-height:1.65}.call-actions{display:flex;gap:8px;flex-wrap:wrap}.call-actions button{font-size:12px}.call-status{font-size:12px;color:#adbed4;margin:14px 0}#localVideo{width:100%;max-height:230px;border-radius:12px;margin-top:12px;background:#080b0f}.toast{position:fixed;top:106px;left:50%;transform:translateX(-50%);background:#152339;padding:12px 18px;border:1px solid #38516a;border-radius:10px;font-size:12px;max-width:90vw}@media(max-width:740px){.topbar{padding:15px;align-items:flex-start}.wordmark{font-size:19px}.topbar nav button{padding:8px;font-size:11px}.statusbar{top:72px;left:15px}.instructions{bottom:76px;white-space:normal;text-align:center;width:min(95vw,410px);line-height:1.5}.controls{max-width:98vw;gap:3px}.controls button{font-size:11px;padding:9px 7px}.overlay{padding:18px}}

/* The immersive-mode affordance is always visible; compatibility is explained on click. */
#xrButton{border-color:#6abfe7;background:rgba(20,70,91,.72);font-weight:700}
#xrButton:hover{background:rgba(33,105,130,.84)}
@media(max-width:620px){.topbar{padding:13px 12px}.topbar nav{gap:4px}.topbar nav button{padding:8px 6px;font-size:11px}.wordmark{font-size:18px}.wordmark small{margin-left:5px}.instructions{font-size:10px;white-space:normal;width:min(100% - 24px,430px);text-align:center;bottom:82px}}
/* SOLVI v0.2.0 compact editor + chat */
[hidden]{display:none!important}.topbar{z-index:9}.topbar nav{flex-wrap:wrap;justify-content:flex-end}.topbar nav button{padding:8px 10px}.statusbar{z-index:4}.controls{z-index:3}.instructions{z-index:2;bottom:75px}.backdrop{z-index:30}.profile-backdrop{z-index:40}.chat-panel,.scene-panel,.add-menu{position:fixed;z-index:12;background:rgba(12,21,33,.94);border:1px solid #35465c;border-radius:14px;box-shadow:0 16px 70px #0008;backdrop-filter:blur(28px)}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:12px 13px;border-bottom:1px solid #35465c}.panel-title strong{font-size:13px}.panel-title small{display:block;font-size:10px;color:#9cb0c5;margin-top:4px}.panel-title button{padding:5px 8px}.chat-panel{right:20px;top:80px;bottom:80px;width:min(390px,calc(100vw - 24px));display:flex;flex-direction:column;overflow:hidden}.chat-feed{flex:1;min-height:100px;overflow-y:auto;padding:12px 11px;display:flex;flex-direction:column;gap:11px;overscroll-behavior:contain}.chat-row{display:flex;max-width:98%;gap:6px;align-items:flex-end}.chat-row.assistant{flex-direction:row-reverse;align-self:flex-end}.chat-avatar{display:grid;place-items:center;border-radius:50%;width:25px;height:25px;min-width:25px;background:#38566c;font-size:9px;font-weight:700}.chat-row.assistant .chat-avatar{background:#4c4679}.chat-bubble{background:#20364d;border-radius:13px 13px 13px 4px;padding:8px 10px;max-width:100%;min-width:70px}.chat-row.assistant .chat-bubble{background:#353554;border-radius:13px 13px 4px 13px}.chat-meta{display:flex;justify-content:space-between;gap:10px;font-size:9px;color:#b4cbdd;margin-bottom:5px}.chat-meta strong{font-size:10px;color:#dbe8fb}.chat-body{white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;line-height:1.45}.chat-attachment img,.chat-attachment video,.chat-attachment audio{max-width:100%;max-height:200px;object-fit:contain;border-radius:8px}.chat-composer{padding:10px;border-top:1px solid #35465c}.composer-line{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px;gap:8px;color:#aac1d4;font-size:10px}.composer-line select{font-size:11px;max-width:230px;min-width:100px}.chat-composer textarea{resize:vertical;min-height:54px;max-height:150px;width:100%;padding:9px;border-radius:9px;border:1px solid #3d4d63;background:#0d1929;color:#fff;font:12px system-ui}.composer-actions{display:flex;gap:5px;align-items:center;flex-wrap:wrap;margin-top:8px}.composer-actions button,.icon-btn{display:inline-flex;align-items:center;justify-content:center;font-size:10px;padding:7px 9px;border:1px solid #43526a;border-radius:7px;cursor:pointer;color:#e1edf9;background:#233249}.composer-actions #sendChat{margin-left:auto}.chat-composer>small{display:block;margin-top:7px;font-size:10px;color:#a8bbcf}.pending-media{display:flex;flex-wrap:wrap;gap:5px}.pending-media button{padding:5px;font-size:10px;margin-bottom:6px}.scene-panel{width:min(320px,calc(100vw - 24px));top:80px;left:20px;bottom:95px;overflow-y:auto;display:flex;flex-direction:column}.scene-items{max-height:170px;overflow:auto;padding:9px;display:grid;gap:3px}.scene-items button{text-align:left;font-size:11px;padding:6px 8px}.scene-items button.selected{background:#355a77}.scene-panel #objectInspector{padding:8px 12px;overflow:auto}.scene-panel #objectInspector .panel-title{padding:3px 0 9px}.transform-modes,.texture-grid{display:flex;gap:5px;flex-wrap:wrap;padding:9px 0}.transform-modes button,.texture-grid button{padding:6px 8px;font-size:10px}.property-grid{display:grid;grid-template-columns:65px repeat(3,minmax(0,1fr));gap:5px;align-items:center}.property-grid label,.field-label{color:#b2c2d5;font-size:11px}.property-grid input{width:100%;font-size:10px;padding:6px 2px;text-align:center}.field-label{display:block;margin:12px 0 5px}.field-label>input:not([type="color"]),.field-label>textarea{display:block;margin:5px 0 0;padding:10px;width:100%}.field-label input[type="color"]{width:42px;height:25px;vertical-align:middle}.panel-footer{display:flex;align-items:center;justify-content:flex-end;gap:8px;border-top:1px solid #344256;margin-top:auto;padding:10px 0 0}.scene-panel>.panel-footer{padding:10px 12px}.add-menu{top:69px;right:220px;width:255px;padding:10px;max-height:60vh;overflow-y:auto;display:grid;grid-template-columns:1fr 1fr;gap:10px}.add-group strong{color:#8faac0;font-size:10px;display:block;margin:4px 0}.add-group button{padding:5px 7px;text-align:left;width:100%;font-size:11px;border:0;background:none}.profile-modal{width:min(520px,96vw);max-height:89vh;overflow-y:auto}.profile-modal .field-label{width:100%}.profile-modal input,.profile-modal textarea,.admin-modal input,.property-grid input,.composer-line select{background:#111c2c;color:#f4f6fa;border:1px solid #3a4b63;border-radius:7px}.profile-media{display:flex;flex-wrap:wrap;gap:7px;margin-top:10px}.profile-media button,.profile-media .icon-btn{padding:8px}.small-note{font-size:11px;color:#9cb1c8;overflow-wrap:anywhere}.admin-modal{width:min(450px,96vw)}.admin-modal input{padding:10px;width:100%}.admin-stats{max-height:230px;overflow:auto;background:#08111e;border-radius:8px;padding:12px;font-size:12px}.chat-row.assistant .chat-bubble::after{content:'';position:relative;float:right;right:-14px;bottom:-4px;border-left:8px solid #353554;border-top:6px solid transparent}.chat-row.user .chat-bubble::after{content:'';position:relative;float:left;left:-14px;bottom:-4px;border-right:8px solid #20364d;border-top:6px solid transparent}
@media(max-width:750px){.topbar{padding:11px 8px}.wordmark{font-size:15px}.wordmark small{font-size:9px;margin-left:5px}.topbar nav{gap:3px}.topbar nav button{font-size:10px;padding:6px}.statusbar{left:10px;top:68px}.chat-panel{inset:95px 8px 69px auto;width:min(390px,calc(100vw - 16px))}.scene-panel{inset:95px auto 69px 8px}.controls{bottom:8px}.instructions{display:none}.add-menu{top:78px;right:8px}.profile-modal{padding:15px}.overlay-head h1{font-size:20px}}

.chat-profile-image{width:25px;height:25px;object-fit:cover;border-radius:50%}

/* SOLVI v0.2.2 — open canvas + translucent chat layer */
.instructions,.controls{display:none!important}
#viewport{position:fixed;inset:0}
.topbar{z-index:15;padding:12px 20px;flex-wrap:wrap}
.topbar nav{align-items:center;gap:6px}
#roomSelect{height:33px;border-radius:9px;border:1px solid #52637b;background:#111f31;color:#e8f5ff;font:12px system-ui;max-width:155px}
.chat-panel{position:fixed;inset:54px 0 0 0!important;width:100%!important;height:auto!important;max-height:calc(100svh - 54px)!important;border:0;background:transparent!important;box-shadow:none!important;backdrop-filter:none!important;border-radius:0!important;pointer-events:none;z-index:8;display:flex;flex-direction:column;}
.chat-panel>.panel-title{display:none}
.chat-feed{flex:1;min-height:0;padding:30px clamp(14px,5vw,78px) 18px!important;max-height:calc(100svh - 228px);overflow-y:auto;overscroll-behavior:contain;gap:15px;mask-image:linear-gradient(to bottom,transparent,#000 19%,#000 100%);pointer-events:auto;align-items:stretch;scrollbar-width:thin;}
.chat-row{pointer-events:auto;display:flex;gap:9px;width:fit-content;max-width:min(72vw,610px);align-self:flex-start;flex-direction:row;}
.chat-row.mine{align-self:flex-end;flex-direction:row-reverse;}
.chat-row.theirs{align-self:flex-start;flex-direction:row;}
.chat-avatar{width:30px;height:30px;min-width:30px;font-size:10px;box-shadow:0 3px 12px #0007}
.chat-bubble{background:rgba(16,31,51,.91)!important;border:1px solid #49617a;max-width:100%;border-radius:16px!important;padding:10px 14px;box-shadow:0 9px 30px #02091477;backdrop-filter:blur(17px)}
.chat-row.mine .chat-bubble{background:rgba(38,78,117,.94)!important;border-color:#5c97c5;border-radius:16px 16px 4px 16px!important}
.chat-row.theirs .chat-bubble{border-radius:16px 16px 16px 4px!important}
.chat-bubble:after{display:none!important}
.chat-body{font-size:13px;line-height:1.5}
.chat-meta{font-size:10px;gap:18px}
.chat-composer{position:relative;bottom:0;align-self:center;width:min(760px,calc(100vw - 24px));margin:auto auto 20px;padding:10px 12px 9px;background:rgba(12,23,38,.88);border:1px solid #526a82;border-radius:17px;backdrop-filter:blur(25px);pointer-events:auto;box-shadow:0 15px 50px #0008}
.chat-composer textarea{width:100%;min-height:42px;resize:none;background:transparent!important;border:0!important;outline:none;font-size:14px;}
.chat-composer .composer-actions{justify-content:flex-end}.chat-composer .composer-actions #sendChat{margin-left:6px}
.scene-panel,.add-menu{z-index:18;border:1px solid #485c73;background:rgba(15,24,37,.95)!important;backdrop-filter:blur(20px)}
.scene-panel{width:280px;top:70px;left:16px;bottom:auto;max-height:70svh;overflow-y:auto}
.scene-panel .panel-title.drag-handle,.add-drag{cursor:move;touch-action:none;user-select:none;font-size:12px;}
.scene-items{max-height:38svh}
.properties-panel{left:312px;top:91px;width:300px;max-height:72svh;bottom:auto;right:auto}
.properties-panel #objectInspector{padding:10px 13px}
.properties-panel .panel-title{margin-bottom:5px}
.add-menu{right:18px;top:65px;left:auto;max-height:60svh;max-width:calc(100vw - 16px);width:270px;display:flex;flex-direction:column;gap:5px}
.add-search{width:100%;padding:9px 10px;border-radius:9px;background:#0d1b2c;color:#f3f7ff;border:1px solid #3e5671;outline:none}
.add-group{display:grid;grid-template-columns:repeat(2,1fr);gap:4px}
.add-group strong{grid-column:1/-1;margin:8px 0 3px}
.add-group button{min-height:29px;border-radius:7px}
.add-group button:hover{background:#31516b}
#facePreview{position:fixed;bottom:20px;right:17px;width:124px;max-height:96px;object-fit:cover;transform:scaleX(-1);border:1px solid #65869d;border-radius:13px;z-index:20;pointer-events:none}
@media(max-width:750px){.topbar{padding:10px;gap:7px}.wordmark{font-size:16px}.topbar nav{max-width:100%;overflow-x:auto;flex-wrap:nowrap;justify-content:flex-start}.topbar nav button{flex-shrink:0}.topbar nav #roomSelect{min-width:90px}.statusbar{top:112px;font-size:10px}.chat-panel{top:90px!important}.chat-feed{padding:30px 12px 15px!important;max-height:calc(100svh - 280px)}.chat-row{max-width:90vw}.chat-composer{margin-bottom:9px;width:calc(100vw - 14px)}.properties-panel{left:8px;top:145px}.scene-panel{top:140px}.add-menu{top:140px;right:8px}}

.chat-feed{pointer-events:none}.chat-row{pointer-events:auto;touch-action:pan-y}

/* v0.2.3: action confirmation and mic captions */
#robotControls{margin-top:10px;padding:11px 4px;border-top:1px solid #344256;font-size:11px;color:#b8d8f1}
#robotControls small{display:block;line-height:1.4;color:#99adbf}
#confirmProperties{min-width:74px;min-height:32px}
#captionStatus{display:block;white-space:nowrap;text-overflow:ellipsis;overflow:hidden;color:#a3d8ee;max-width:100%}
#captionsButton:focus-visible,#voiceWavesButton:focus-visible{outline:2px solid #6edac8}
#poseButton{max-width:160px}


/* v0.2.4 — compact transparent world-first chat, mobile navigation and hidden scrollbars */
body { overflow:hidden; }
button,.overlay,.backdrop,.chat-panel,.chat-bubble,.scene-panel,.add-menu,.chat-composer {backdrop-filter:none !important;-webkit-backdrop-filter:none !important;}
.backdrop{background:rgba(5,9,17,.24);}
.dev-backdrop{background:transparent;pointer-events:none;align-items:flex-start;justify-content:center;padding-top:8vh;}
.dev-backdrop .overlay{pointer-events:auto;max-height:64svh;box-shadow:0 14px 60px #0009;}
.log-scroll,.chat-feed,.scene-items,.scene-panel,.add-menu,.overlay,.chat-composer,.chat-panel{scrollbar-width:none!important;-ms-overflow-style:none!important;}
.log-scroll::-webkit-scrollbar,.chat-feed::-webkit-scrollbar,.scene-items::-webkit-scrollbar,.scene-panel::-webkit-scrollbar,.add-menu::-webkit-scrollbar,.overlay::-webkit-scrollbar{display:none!important;}
#mobileMenuButton{display:none}
#messagesToggleButton{font-weight:600}
.chat-panel{inset:53px 0 0!important;pointer-events:none;}
.chat-feed{display:flex;min-height:0;max-height:none!important;flex:1;gap:8px!important;padding:12px 10px 7px!important;mask-image:linear-gradient(to bottom,transparent,#000 9%,#000 100%);-webkit-mask-image:linear-gradient(to bottom,transparent,#000 9%,#000 100%);}
.chat-feed::before{content:'';flex:1 0 0px;}
.chat-row{max-width:min(42vw,510px);margin:0;gap:6px!important;}
.chat-row.mine{margin-right:0;align-self:flex-end;}
.chat-row.theirs{margin-left:0;align-self:flex-start;}
.chat-avatar{width:23px;min-width:23px;height:23px;font-size:9px;}
.chat-bubble{padding:6px 10px!important;background:rgba(16,31,51,.72)!important;border-color:#6379918a!important;border-radius:12px!important;box-shadow:0 5px 14px #07152833!important;}
.chat-row.mine .chat-bubble{background:rgba(31,76,111,.8)!important;}
.chat-meta{font-size:9px;margin-bottom:2px;gap:10px;}
.chat-meta strong{font-size:10px;}
.chat-body{font-size:12px;line-height:1.3;}
.chat-composer{width:min(660px,calc(100vw - 20px));margin:0 auto max(6px,env(safe-area-inset-bottom));padding:6px 9px;background:rgba(12,23,38,.69)!important;border:1px solid #536e8980!important;box-shadow:0 5px 16px #0005!important;border-radius:13px;}
.composer-line{margin-bottom:1px;line-height:1.2;}
.composer-line select{max-width:175px;font-size:10px;padding:2px;}
.chat-composer textarea{min-height:30px;height:32px;padding:6px 5px;max-height:118px;font-size:13px;line-height:1.4;overflow-y:auto;}
.composer-actions{margin-top:3px!important;gap:3px!important;flex-wrap:nowrap;}
.composer-actions button,.composer-actions .icon-btn{font-size:10px;padding:5px 7px;border-radius:7px;white-space:nowrap;}
#composerToolsButton{display:none}
#sendChat{margin-left:auto!important}
.chat-composer>small{display:none!important;}
body.chat-muted .chat-feed{visibility:hidden;pointer-events:none;}
.chat-panel.windowed{inset:auto!important;position:fixed;top:var(--chat-top,70px)!important;left:var(--chat-left,calc(100vw - 410px))!important;right:auto!important;bottom:auto!important;width:min(390px,90vw)!important;height:min(66svh,600px)!important;max-height:min(66svh,600px)!important;overflow:hidden;border:1px solid #59718a!important;border-radius:14px!important;background:rgba(10,22,36,.91)!important;box-shadow:0 12px 45px #0008!important;pointer-events:auto;}
.chat-panel.windowed>.panel-title{display:flex!important;cursor:move;touch-action:none;padding:8px 10px;}
.chat-panel.windowed .chat-feed{max-height:none!important;padding:7px!important;}
.chat-panel.windowed .chat-row{max-width:92%!important;}
.chat-panel.windowed .chat-composer{width:calc(100% - 10px);margin:5px;padding:5px;}
.chat-panel.windowed .composer-actions{flex-wrap:wrap;}
@media(max-width:750px){
 .topbar{display:flex;align-items:center;flex-direction:column;gap:2px!important;padding:max(6px,env(safe-area-inset-top)) 8px 4px!important;}
 .wordmark{font-size:15px;align-self:flex-start;line-height:24px;}
 .topbar nav{display:flex;align-self:stretch;overflow:visible;flex-wrap:wrap;gap:4px;justify-content:flex-start;max-width:100%;}
 #mobileMenuButton{display:inline-flex;order:3!important;}
 #chatButton{order:0}
 #roomSelect{order:1;max-width:125px;min-width:98px;font-size:11px;height:29px}
 #messagesToggleButton{order:2}
 .topbar nav>:not(#realmGalleryButton):not(#devLogNavButton):not(#webcamButton):not(#minimapButton):not(#chatButton):not(#roomSelect):not(#messagesToggleButton):not(#mobileMenuButton){display:none;}
 .topbar nav.nav-expanded>:not(#chatButton):not(#roomSelect):not(#messagesToggleButton):not(#webcamButton):not(#mobileMenuButton){display:inline-flex;}
 .topbar nav button{font-size:10px;padding:5px 7px;height:29px;}
 .statusbar{top:77px;left:9px;font-size:9px;gap:6px;}
 .chat-panel{top:98px!important;}
 .chat-feed{padding:12px 5px 5px!important;gap:6px!important;}
 .chat-row{max-width:91vw!important;}
 .chat-body{font-size:12px;}
 .chat-avatar{min-width:21px;width:21px;height:21px;}
 .chat-bubble{padding:6px 8px!important;}
 .chat-composer{width:calc(100vw - 10px)!important;margin-bottom:max(5px,env(safe-area-inset-bottom))!important;padding:5px 7px!important;}
 .composer-line{font-size:9px;}
 .composer-line select{max-width:135px;min-width:70px;}
 .chat-composer textarea{font-size:13px;min-height:30px;}
 .composer-actions{flex-wrap:wrap!important;}
 #composerToolsButton{display:inline-flex;order:0;}
 .composer-actions .media-tool{display:none;}
 .chat-composer.tools-open .composer-actions .media-tool{display:inline-flex;}
 .composer-actions #sendChat{order:1;}
 .chat-composer.tools-open .composer-actions .media-tool{order:2;}
 .scene-panel{max-height:61svh;top:116px;}
 .properties-panel{left:7px;top:116px;}
 .add-menu{top:117px;}
 .chat-panel.windowed{top:var(--chat-top,100px)!important;left:var(--chat-left,5px)!important;right:auto!important;width:calc(100vw - 10px)!important;max-height:64svh!important;}
 .dev-backdrop{padding-top:8vh;}
 .dev-backdrop .overlay{max-width:calc(100vw - 14px);}
}
@media(hover:none){button{min-height:28px} .composer-actions button{min-height:28px}}
/* v0.2.5 — consistent world-first compositor, edge messaging, profile/settings drawers */
:root{--solvi-accent:#79cde5;--bubble-alpha:.78}
:root[data-chat-bg="false"] .chat-bubble,:root[data-chat-bg="false"] .chat-row.mine .chat-bubble{background:transparent!important;box-shadow:none!important}
:root[data-chat-border="false"] .chat-bubble,:root[data-chat-border="false"] .chat-row.mine .chat-bubble{border-color:transparent!important}
.chat-panel:not(.windowed){inset:54px 0 0!important;display:flex;flex-direction:column;overflow:hidden!important}
.chat-panel:not(.windowed) .chat-feed{width:100%;max-width:none!important;overflow-y:auto!important;overflow-x:hidden;display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;min-height:0;gap:5px!important;flex:1 1 auto;padding:8px 6px 4px!important;-webkit-mask-image:none!important;mask-image:none!important}
.chat-feed::before{content:'';display:block;flex:0 0 auto!important;margin-top:auto;min-height:0}
.chat-row{flex:0 0 auto;position:relative;display:flex!important;align-items:flex-end;gap:5px!important;max-width:min(46vw,660px);width:max-content!important;min-width:0}
.chat-row.mine{align-self:flex-end!important;margin-left:auto;margin-right:0!important;flex-direction:row!important}
.chat-row.theirs{align-self:flex-start!important;margin-right:auto;margin-left:0!important;flex-direction:row-reverse!important}
.chat-row.mine .chat-avatar{order:0}
.chat-row.mine .chat-bubble{order:1}
.chat-row.theirs .chat-avatar{order:2}
.chat-row.theirs .chat-bubble{order:1}
.chat-bubble,.chat-row.mine .chat-bubble,.chat-row.theirs .chat-bubble{background:rgba(16,31,51,var(--bubble-alpha))!important;border:1px solid var(--solvi-accent)!important;box-shadow:none!important;backdrop-filter:none!important;min-width:0;max-width:100%}
.chat-row.mine .chat-bubble{background:rgba(26,65,98,var(--bubble-alpha))!important}
.chat-meta time{white-space:nowrap}
.chat-message-item+.chat-message-item{border-top:1px solid #8fb1cc2e;margin-top:4px;padding-top:4px}
.chat-row .chat-bubble:after{display:none!important}
.chat-avatar{border:1px solid var(--solvi-accent)!important;color:#eff7fe}
.chat-composer{flex:0 0 auto;max-height:35svh;box-shadow:none!important}
.chat-panel:not(.windowed) .chat-composer{margin:0 auto max(8px,env(safe-area-inset-bottom))!important}
.chat-panel.windowed{min-width:290px!important;min-height:200px!important;max-width:calc(100vw - 10px)!important;max-height:calc(100svh - 75px)!important;resize:none;display:flex;flex-direction:column}
.chat-panel.windowed .chat-feed{flex:1;min-height:0;overflow-y:auto;mask-image:none!important;-webkit-mask-image:none!important;gap:5px!important}
.chat-panel.windowed .chat-row{max-width:98%!important}
.chat-panel.windowed .chat-composer{flex:0 0 auto}
.chat-resize-grip{display:none;position:absolute;right:0;bottom:0;width:25px;height:25px;z-index:10;cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg,transparent 48%,var(--solvi-accent) 50%,transparent 55%) right bottom/13px 13px no-repeat;opacity:.9}
.chat-panel.windowed .chat-resize-grip{display:block}
#settingsButton,#profileButton{border-radius:50%!important;width:33px;height:33px;min-height:33px;display:inline-flex;align-items:center;justify-content:center;padding:0!important;font-size:15px!important;border:1px solid var(--solvi-accent)}
#profileButton{font-weight:750;overflow:hidden;font-size:11px!important;background:#29405d!important}
.drawer-shell{position:fixed;inset:0;z-index:35;pointer-events:none;background:transparent!important}
.drawer{position:absolute;right:0;top:0;bottom:0;width:min(360px,100vw);padding:max(20px,env(safe-area-inset-top)) 16px 18px;background:#101b2cee;border-left:1px solid var(--solvi-accent);box-shadow:-6px 0 24px #0006;pointer-events:auto;overflow-y:auto;scrollbar-width:none;display:flex;flex-direction:column;gap:14px}
.drawer-head{display:flex;align-items:center;justify-content:space-between;padding-bottom:10px;border-bottom:1px solid #6783a755}
.drawer-head strong{font-size:18px}
.drawer-head button{min-width:30px;padding:4px 9px}
.drawer .field-label{display:flex;justify-content:space-between;gap:12px;align-items:center}
.drawer-label{display:flex;justify-content:space-between;align-items:center}
.toggle-line{display:flex;align-items:center;gap:10px;font-size:13px}
.theme-swatches{display:flex;gap:9px;flex-wrap:wrap}
.theme-swatches button{width:26px;height:26px;border-radius:50%;padding:0;border:2px solid #d8ecfc}
#bubbleOpacity{width:126px}
.profile-backdrop.profile-drawer-mode{pointer-events:none!important;background:transparent!important;padding:0!important;justify-content:flex-end!important}
.profile-backdrop.profile-drawer-mode .profile-modal{position:relative;right:0;top:0;bottom:0;margin:0;width:min(390px,100vw);max-width:100vw;max-height:100svh;height:100svh;overflow-y:auto;border-radius:0!important;border-left:1px solid var(--solvi-accent);box-shadow:-6px 0 28px #0007;pointer-events:auto}
.release-head{display:flex;flex-wrap:wrap;justify-content:space-between;gap:9px;align-items:baseline}
.release-head time{white-space:normal!important;word-break:normal;overflow:visible!important;text-overflow:clip!important;max-width:100%;color:#c0d5ed!important;font-variant-numeric:tabular-nums;font-size:11px;flex:0 1 auto;text-align:right}
.overlay{max-width:min(780px,95vw)}
button.primary,button:not(.theme-swatch),.icon-btn{border-radius:8px}
button:focus-visible{outline:2px solid var(--solvi-accent)}
@media(max-width:750px){
 #settingsButton,#profileButton{display:inline-flex!important;order:4!important;flex:0 0 auto}
 #mobileMenuButton{order:5!important}
 .topbar nav>:not(#realmGalleryButton):not(#devLogNavButton):not(#webcamButton):not(#minimapButton):not(#chatButton):not(#roomSelect):not(#messagesToggleButton):not(#mobileMenuButton):not(#profileButton):not(#settingsButton){display:none}
 .topbar nav.nav-expanded>:not(#chatButton):not(#roomSelect):not(#messagesToggleButton):not(#webcamButton):not(#mobileMenuButton):not(#profileButton):not(#settingsButton){display:inline-flex}
 .chat-panel:not(.windowed){top:90px!important;bottom:0!important}
 .chat-panel:not(.windowed) .chat-feed{padding:3px 3px 3px!important}
 .chat-row{max-width:min(90vw,460px)!important}
 .chat-composer{max-height:30svh}
 .chat-panel.windowed{max-width:calc(100vw - 6px)!important;width:var(--chat-width,calc(100vw - 10px))!important;height:var(--chat-height,min(60svh,530px))!important}
}
.chat-panel.windowed{width:var(--chat-width,min(390px,90vw))!important;height:var(--chat-height,min(66svh,600px))!important}
@media(max-width:750px){.chat-panel.windowed{width:var(--chat-width,calc(100vw - 10px))!important;height:var(--chat-height,min(60svh,530px))!important}}

@media(max-width:750px){#mobileMenuButton{order:3!important}#settingsButton{order:4!important}#profileButton{order:5!important}}
/* Theme toggles must override every earlier bubble styling rule. */
html[data-chat-bg="false"] .chat-row .chat-bubble{background:transparent!important;box-shadow:none!important}
html[data-chat-border="false"] .chat-row .chat-bubble{border:0!important}

/* 0.2.6 — opt-in transcription state without obscuring 3D */
#captionPreview{display:flex;gap:6px;align-items:center;max-width:100%;padding:5px 9px;background:rgba(9,20,33,.64);border-radius:10px;font-size:11px;color:#daefff;min-height:24px}
#captionPreview[hidden]{display:none}
#captionDraft{font-weight:400;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;flex:1}
#captionDot{color:#62d8a9;animation:solviPulse 1.25s ease-in-out infinite}
#captionPreview[data-state="transcribing"] #captionDot{color:#e6b178}
#captionPreview[data-state="error"] #captionDot{color:#ff7777;animation:none}
@keyframes solviPulse{50%{opacity:.25}}
#ccEngine,#ccLanguage,#robotAvatar{width:100%;background:#142639;color:#e8f5ff;border:1px solid #506278;padding:7px;border-radius:7px}

/* v0.2.7 — compact floating properties, no wasted vertical rows */
.properties-panel{width:min(264px,calc(100vw - 12px))!important;max-height:min(70svh,570px)!important;overflow-y:auto!important;background:rgba(13,22,35,.95)!important;border-radius:10px!important;box-shadow:0 7px 26px #0008!important;backdrop-filter:none!important;}
.properties-panel>.panel-title{padding:6px 9px!important;min-height:31px!important;margin:0!important;border-bottom:1px solid #334256}
.properties-panel>.panel-title strong{font-size:11px!important}
.properties-panel #objectInspector{padding:4px 9px 7px!important;overflow:visible!important}
.properties-panel #objectInspector>.panel-title{padding:2px 0 5px!important;min-height:26px!important;margin:0!important;border-bottom:0!important}
.properties-panel .panel-title strong{font-size:11px!important}
.properties-panel button{padding:4px 6px!important;font-size:10px!important;min-height:25px!important;line-height:1.1!important;border-radius:6px!important}
.properties-panel .transform-modes{padding:4px 0!important;gap:3px!important;flex-wrap:nowrap!important}
.properties-panel .property-grid{grid-template-columns:55px repeat(3,minmax(0,1fr))!important;gap:3px 4px!important}
.properties-panel .property-grid label{font-size:10px!important}
.properties-panel .property-grid input{min-width:0!important;width:100%!important;height:26px!important;font-size:10px!important;padding:2px!important;border-radius:5px!important}
.properties-panel .field-label{margin:4px 0!important;font-size:10px!important}
.properties-panel .field-label:has(>input[type="color"]){display:flex!important;gap:9px!important;align-items:center!important}
.properties-panel input[type="color"]{height:23px!important;width:34px!important}
.properties-panel .texture-grid{gap:3px!important;padding:2px 0!important;flex-wrap:nowrap!important;overflow-x:auto!important;scrollbar-width:none}
.properties-panel .texture-grid::-webkit-scrollbar{display:none}
.properties-panel input[type="file"]{font-size:9px!important;max-width:178px!important}
.properties-panel #robotControls{margin:3px 0 0!important}
.properties-panel #robotControls strong{font-size:11px!important}
.properties-panel #robotControls small{font-size:9px!important;line-height:1.3!important;display:block!important;margin-top:3px}
.properties-panel #robotAvatar{font-size:11px!important;width:100%!important;max-width:100%!important;padding:5px 3px!important;background:#142436!important;color:#eef6ff!important;border:1px solid #40566b;border-radius:6px}
.properties-panel .panel-footer{padding:6px 0 0!important;margin:4px 0 0!important}
.properties-panel #confirmProperties{min-width:49px!important;min-height:26px!important;padding:4px 9px!important}
@media(max-width:750px){.properties-panel{left:6px!important;top:100px!important;max-height:calc(100svh - 160px)!important}}

/* v0.2.7: one predictable control scale throughout desktop and mobile */
:root{--ui-bg:#101b2e;--ui-panel:#17243a;--ui-fg:#f4f8ff;--ui-button:#20344e;--ui-button-text:#f4f8ff;--ui-accent-text:#000000;--ui-control-size:30px;}
button,select,input[type="button"],input[type="submit"],.icon-btn{font-family:inherit!important;font-size:12px!important;font-weight:550!important;line-height:1.25!important;letter-spacing:0!important;min-height:var(--ui-control-size)!important;border-radius:7px!important;}
button,.icon-btn{background:var(--ui-button)!important;color:var(--ui-button-text)!important;border:1px solid color-mix(in srgb,var(--ui-fg) 30%,transparent)!important;padding:6px 10px!important;}
button.primary,.primary,#confirmProperties,#sendChat{background:var(--solvi-accent)!important;color:var(--ui-accent-text)!important;border-color:var(--solvi-accent)!important;}
button:hover:not(:disabled){filter:brightness(1.13)!important;}
.overlay,.drawer,.properties-panel,.scene-panel,.add-menu,.chat-panel.windowed,.chat-composer,.avatar-gallery{background:var(--ui-panel)!important;color:var(--ui-fg)!important;border-color:color-mix(in srgb,var(--ui-fg) 27%,transparent)!important;}
.drawer input:not([type=checkbox]):not([type=range]):not([type=color]),.drawer select,.properties-panel select{background:var(--ui-bg)!important;color:var(--ui-fg)!important;border:1px solid color-mix(in srgb,var(--ui-fg) 27%,transparent)!important;}
.drawer .field-label,.drawer .small-note,.properties-panel .field-label{color:var(--ui-fg)!important;}
.properties-panel button{font-size:12px!important;min-height:29px!important;padding:5px 6px!important;}
.properties-panel .texture-grid button{font-size:11px!important;padding:3px 5px!important;min-height:25px!important;}
.avatar-gallery-backdrop{z-index:130!important;background:#050a13aa!important;}
.avatar-gallery{width:min(800px,96vw)!important;max-height:85svh!important;display:flex;flex-direction:column;overflow:hidden;padding:14px!important;}
.avatar-gallery-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;overflow-y:auto;scrollbar-width:none;padding:6px 3px;}
.avatar-gallery-grid::-webkit-scrollbar{display:none}
.avatar-gallery .avatar-card{display:flex;flex-direction:column;gap:5px;text-align:left;padding:7px!important;min-width:0;min-height:190px!important;}
.avatar-card .avatar-preview{width:100%;aspect-ratio:176/142;border-radius:6px;background:color-mix(in srgb,var(--ui-bg) 88%,#999);display:flex;align-items:center;justify-content:center;overflow:hidden;font-size:11px;color:var(--ui-fg);}
.avatar-card .avatar-preview canvas,.avatar-card .avatar-preview img{width:100%;height:100%;object-fit:contain;}
.avatar-card strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%;}
.avatar-card small{font-size:10px;opacity:.8}
.avatar-gallery-upload{display:flex;align-items:center;gap:10px;padding-top:9px;flex-wrap:wrap;}
.avatar-gallery-upload small{font-size:11px;}
.properties-panel #openAvatarGallery{margin-left:5px;}
@media(max-width:750px){.avatar-gallery{max-height:85svh!important}.avatar-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.2.8: independent floating world toolbox, pointer-anchored add menu, compact inspector. */
[hidden]{display:none!important}
#toolNav{display:flex;align-items:center;gap:5px;flex-wrap:wrap;justify-content:flex-end}
#toolNav #mobileMenuButton{display:inline-flex!important}
#toolNav>:not(#toolsToggleButton):not(#realmGalleryButton):not(#devLogNavButton):not(#webcamButton):not(#minimapButton):not(#mobileMenuButton):not(#messagesToggleButton):not(#roomSelect):not(#createRoom):not(#settingsButton):not(#profileButton):not(#xrButton){display:none!important}
#toolNav.nav-expanded>:not(#webcamButton):not(#mobileMenuButton):not(#messagesToggleButton):not(#roomSelect):not(#createRoom):not(#settingsButton):not(#profileButton):not(#xrButton){display:inline-flex!important}
#toolNav #mobileMenuButton{font-size:12px!important}
.editor-toolbox{position:fixed;left:18px;top:92px;z-index:19;width:116px;padding:6px;border:1px solid #43586d;border-radius:11px;background:var(--ui-panel);color:var(--ui-fg);box-shadow:0 8px 26px #0005}
.toolbox-title{display:flex;align-items:center;justify-content:space-between;gap:4px;cursor:grab;padding:2px 2px 6px;font-size:11px;user-select:none}
.toolbox-title button{padding:2px 5px!important;min-height:22px!important;font-size:12px!important}
.toolbox-actions{display:grid;gap:4px}
.toolbox-actions button{display:block!important;width:100%;text-align:left;padding:6px!important;min-height:29px!important}
.editor-toolbox.minimized{width:102px}.editor-toolbox.minimized .toolbox-actions{display:none}
.add-menu{width:min(275px,calc(100vw - 16px))!important;max-height:min(69svh,500px)!important;overflow-y:auto!important;display:grid!important;grid-template-columns:1fr 1fr!important;gap:5px!important;padding:9px!important;box-shadow:0 16px 42px #0009}
.add-menu>.drag-handle,.add-menu>.add-search{grid-column:1/-1}
.add-menu .add-group{display:flex;flex-direction:column;gap:3px}
.add-menu .add-group strong{padding:4px 0 1px;font-size:10px}
.add-menu .add-group button{min-height:27px!important;text-align:left!important;padding:4px 6px!important;font-size:11px!important}
.add-menu .add-group button:hover{filter:brightness(1.2)}
.properties-panel{width:min(256px,calc(100vw - 16px))!important;min-width:0!important;top:92px;left:145px;max-height:75svh!important;padding:0!important;overflow-y:auto!important}
.properties-panel>.panel-title{min-height:33px!important;padding:4px 9px!important;border-bottom:1px solid #435569}
.properties-panel>.panel-title strong{font-size:12px!important;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
.properties-panel #objectInspector{padding:6px 8px!important}
.properties-panel .object-actions{display:flex;justify-content:flex-end;padding:0 0 4px}
.properties-panel .object-actions button{color:var(--ui-fg)!important}
.properties-panel .transform-modes{padding:4px 0!important;gap:3px!important}
.properties-panel .transform-modes button{flex:1;min-width:0;padding:5px 3px!important;font-size:10px!important}
.properties-panel .property-grid{grid-template-columns:50px repeat(3,minmax(0,1fr))!important;gap:4px!important}
.properties-panel .property-grid label{font-size:10px!important}
.properties-panel .property-grid input{height:25px!important;min-width:0!important;width:100%!important;font-size:10px!important;padding:3px 1px!important}
.object-appearance{display:flex;align-items:center;gap:5px;margin-top:8px}
.object-appearance #objectColor{flex:none;width:33px!important;height:27px!important;padding:1px;border:1px solid #698096;border-radius:5px}
.object-appearance #texturePreset{min-width:0;flex:1;height:27px;font-size:11px!important}
.object-appearance #textureUploadButton{width:auto;white-space:nowrap;padding:4px 6px!important;font-size:10px!important}
.light-controls{display:grid;grid-template-columns:1fr 1fr;gap:5px 7px;padding-top:8px}
.light-controls label{display:flex;align-items:center;flex-direction:column;gap:2px;font-size:10px;color:var(--ui-fg)}
.light-controls label:first-child{grid-column:1/-1;flex-direction:row;justify-content:space-between}
.light-controls input,.light-controls select{width:100%;max-width:100%;height:26px;background:var(--ui-bg);color:var(--ui-fg);border:1px solid #4b6380;border-radius:5px;padding:2px;font-size:11px!important}
.light-controls label:first-child select{width:68%}
.light-controls input[type=color]{padding:1px}
.robot-speed{display:flex;align-items:center;gap:5px;margin:6px 0;color:var(--ui-fg);font-size:10px}
.robot-speed input{flex:1;width:70px;min-width:0}
.robot-speed output{min-width:34px;text-align:right}
.profile-photo-badge{width:56px!important;height:56px!important;border-radius:50%!important;font-size:16px!important;font-weight:700!important;display:grid!important;place-items:center;overflow:hidden;background:#355c77!important;cursor:pointer}
.profile-photo-badge img{width:100%;height:100%;object-fit:cover}
.xr-stage-button{position:fixed;top:45%;left:50%;transform:translate(-50%,-50%);z-index:15;background:#24b560!important;color:#061b10!important;border:2px solid #95ffd0!important;box-shadow:0 4px 35px #19d27755;min-height:56px!important;padding:14px 29px!important;border-radius:16px!important;font-size:18px!important;font-weight:780!important}
#xrButton:not([hidden]){background:#24b560!important;color:#061b10!important}
@media(max-width:750px){.editor-toolbox{top:116px!important;left:7px!important;width:95px}.properties-panel{top:115px!important;left:107px!important;max-height:calc(100svh - 160px)!important}.add-menu{max-height:60svh!important}#toolNav.nav-expanded{max-height:54svh;overflow-y:auto}#toolNav #mobileMenuButton{display:inline-flex!important}}

#scenePanel{width:225px!important;top:273px;left:13px;bottom:auto!important;max-height:55svh;overflow:hidden}
#scenePanel.minimized{width:145px!important;height:auto!important;max-height:none!important}
#scenePanel.minimized .scene-items,#scenePanel.minimized .panel-footer{display:none!important}
#scenePanel.minimized>.panel-title{min-height:29px;padding:4px 6px}
#scenePanel .panel-title{gap:4px}
#minimizeScenePanel{margin-left:auto;padding:2px 5px!important;min-height:22px!important}
.camera-speed{display:flex;flex-direction:column;gap:3px;font-size:10px;padding:2px 1px 4px}
.camera-speed input{width:100%;accent-color:var(--solvi-accent)}
#editorToolbox{touch-action:none}
@media(max-width:750px){#scenePanel{left:6px;top:295px;max-height:40svh!important}.editor-toolbox .camera-speed{display:none}}

body:has(#xrButton:not([hidden])) .xr-stage-button{display:block}

/* v0.2.9: full-image gallery tiles with readable lower-left metadata */
.avatar-gallery .avatar-card{position:relative;display:block!important;overflow:hidden;padding:0!important;min-height:210px!important;aspect-ratio:3/4;border-radius:11px!important;text-align:left;isolation:isolate}
.avatar-card .avatar-preview{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto;border-radius:0;z-index:-1;background:var(--ui-bg)}
.avatar-card .avatar-preview img,.avatar-card .avatar-preview canvas{display:block;width:100%;height:100%;object-fit:cover}
.avatar-gallery .avatar-card::after{content:"";position:absolute;inset:38% 0 0;z-index:-1;pointer-events:none;background:linear-gradient(transparent,rgba(0,0,0,.82))}
.avatar-gallery .avatar-card strong,.avatar-gallery .avatar-card small{position:absolute;left:10px;right:10px;color:#fff!important;text-shadow:0 1px 3px #000;white-space:normal;max-width:none;line-height:1.22}
.avatar-gallery .avatar-card strong{bottom:28px;font-size:13px!important;font-weight:700!important}
.avatar-gallery .avatar-card small{bottom:9px;font-size:10px!important;opacity:.95}
.avatar-gallery .avatar-card:focus-visible{outline:3px solid #79ddff;outline-offset:3px}
#scenePanel>.panel-title.drag-handle{cursor:grab;touch-action:none;user-select:none}
#scenePanel>.panel-title.drag-handle:active{cursor:grabbing}

/* v0.2.11 — unified interaction controls, shared design tokens. */
:root{--solvi-control-h:30px;--solvi-control-r:8px;--solvi-control-font:12px;--solvi-control-stroke:color-mix(in srgb,var(--ui-fg) 30%,transparent)}
:where(button,.icon-btn,select,input[type=button],input[type=submit]){
  font-family:inherit!important;font-weight:600!important;font-size:var(--solvi-control-font)!important;
  line-height:1.25!important;letter-spacing:0!important;border-radius:var(--solvi-control-r)!important;
  min-height:var(--solvi-control-h)!important;
}
:where(button,.icon-btn){border:1px solid var(--solvi-control-stroke)!important;transition:background-color .12s ease,border-color .12s ease,filter .12s ease}
:where(button,.icon-btn):focus-visible{outline:2px solid var(--solvi-accent)!important;outline-offset:2px}
/* Identical square controls across logs, editor panels, chat, dialogs and drawers. */
:is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize){
  box-sizing:border-box!important;width:30px!important;height:30px!important;min-width:30px!important;
  min-height:30px!important;max-width:30px!important;max-height:30px!important;
  display:inline-grid!important;place-items:center!important;flex:none!important;
  margin:0!important;padding:0!important;border-radius:var(--solvi-control-r)!important;
  font:600 16px/1 system-ui,sans-serif!important;color:var(--ui-fg)!important;
  background:var(--ui-button)!important;border:1px solid var(--solvi-control-stroke)!important;
  cursor:pointer;
}
:is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize):hover{filter:brightness(1.15)!important}
/* Preserve all hidden states; display:inline-grid must never expose hidden controls. */
:is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize)[hidden]{display:none!important}
@media(prefers-reduced-motion:reduce){:where(button,.icon-btn){transition:none!important}}

/* Override legacy per-panel button typography (except media cards, round profile image and immersive VR CTA). */
body button:not(.profile-photo-badge):not(.xr-stage-button):not(.avatar-card):not(.theme-swatch),body .icon-btn{
  font-family:inherit!important;font-size:12px!important;font-weight:600!important;
  line-height:1.25!important;letter-spacing:0!important;border-radius:8px!important;min-height:30px!important;
}
body .profile-photo-badge{font-size:16px!important}
body .xr-stage-button{font-size:18px!important}

/* v0.2.13: fixed navigation hierarchy and consistent layout. */
#chatModeButton.bottom-chat-mode{position:fixed;left:12px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:19;min-height:30px}
#messagesToggleButton{order:91}
#settingsButton{order:92}
#profileButton{order:93}
#toolNav{align-items:center}
#sceneItems .scene-item-row{display:flex;align-items:center;gap:5px;width:100%;margin:3px 0}
#sceneItems .scene-item-row>button:first-child{flex:1;min-width:0;text-overflow:ellipsis;overflow:hidden;text-align:left;white-space:nowrap}
#sceneItems .scene-item-delete{flex:none;width:30px;min-width:30px;height:30px;padding:0!important;font-size:18px!important}
.object-rename{padding:0 0 6px}
#objectNameInput{width:100%;padding:5px 8px;border-radius:7px;background:var(--ui-input,#14283e);color:var(--ui-fg,#fff);border:1px solid var(--ui-border,#526479);font:inherit;font-size:12px}
#robotActionSelect{width:100%;padding:5px;margin:5px 0}
#avatarGalleryGrid{display:grid!important;grid-template-columns:repeat(auto-fill,minmax(165px,1fr))!important;align-items:stretch!important;gap:12px!important}
#avatarGalleryGrid .avatar-card{height:auto!important;min-width:0!important;aspect-ratio:3/4!important;grid-column:auto!important;grid-row:auto!important;contain:layout paint}
#avatarGalleryGrid .avatar-preview{position:absolute!important;inset:0!important}
#avatarGalleryGrid .avatar-preview img{width:100%;height:100%;object-fit:cover}
@media(max-width:750px){#chatModeButton.bottom-chat-mode{left:8px;bottom:calc(65px + env(safe-area-inset-bottom));font-size:11px!important}#avatarGalleryGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:8px!important}}

/* v0.2.16 · import is a first-class action; full-stage drag guidance */
.scene-drop-overlay{position:fixed;inset:0;z-index:210;display:flex;align-items:center;justify-content:center;pointer-events:none;background:rgba(8,17,30,.42);border:4px dashed #8de0fa;color:#fff;text-align:center}
.scene-drop-overlay[hidden]{display:none!important}
.scene-drop-overlay>div{padding:24px 32px;border-radius:12px;background:#081929ed}
.scene-drop-overlay strong{display:block;font-size:20px}.scene-drop-overlay small{display:block;margin-top:8px;font-size:12px;color:#c8eeff}
#toolboxActions #importModelButton{font-weight:750;color:var(--solvi-text,#fff);border:1px solid var(--solvi-accent,#7ed8f9)}
.physics-object-controls{padding:8px 10px;display:grid;grid-template-columns:1fr;gap:5px}
.physics-object-controls[hidden]{display:none}.physics-object-controls label{display:flex;align-items:center;justify-content:space-between;gap:6px;font-size:11px}
.physics-object-controls :is(select,input){font-size:11px;max-width:138px;width:60%;min-width:0}

.quick-model-import{position:fixed;left:16px;bottom:67px;z-index:16;font-size:12px!important;font-weight:750!important;padding:8px 12px!important;border:1px solid var(--solvi-accent,#7ed8f9)!important;background:var(--ui-panel,#152338)!important;color:var(--ui-fg,#fff)!important;}
@media(max-width:750px){.quick-model-import{left:6px;bottom:75px}}

/* v0.2.18 — persistent bottom follow-mode control, separate from the free-camera fly tool. */
#cameraFollowButton.bottom-camera-mode{position:fixed;left:130px;bottom:calc(12px + env(safe-area-inset-bottom));z-index:19;max-width:min(220px,calc(100vw - 150px));min-height:30px;padding:5px 10px!important;border:1px solid var(--ui-border,#647b90)!important;background:var(--ui-panel,#152338)!important;color:var(--ui-fg,#fff)!important;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#cameraFollowButton[data-mode="chase"],#cameraFollowButton[data-mode="orbit"]{border-color:var(--solvi-accent,#8bdfff)!important}
#cameraFollowButton:focus-visible{outline:2px solid var(--solvi-accent,#8bdfff);outline-offset:2px}
@media(max-width:750px){#cameraFollowButton.bottom-camera-mode{left:118px;bottom:calc(65px + env(safe-area-inset-bottom));max-width:calc(100vw - 126px);font-size:11px!important;padding:4px 7px!important}}

/* v0.2.19 — Chase distance is adjustable without replacing camera mode. */
#chaseDistanceControl.chase-distance-control{position:fixed;z-index:19;left:355px;bottom:calc(12px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:6px;width:205px;min-height:30px;padding:4px 7px;border:1px solid var(--ui-border,#647b90);border-radius:8px;background:var(--ui-panel,#152338);color:var(--ui-fg,#fff);font:600 11px/1.1 system-ui,sans-serif;box-shadow:0 3px 12px #0003}
#chaseDistanceControl[hidden]{display:none!important}
#chaseDistanceControl input{min-width:0;flex:1;width:75px;height:17px;accent-color:var(--solvi-accent,#8bdfff);cursor:ew-resize}
#chaseDistanceControl output{min-width:36px;text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;font-size:10px}
@media(max-width:750px){#chaseDistanceControl.chase-distance-control{left:118px;bottom:calc(102px + env(safe-area-inset-bottom));width:min(205px,calc(100vw - 126px));padding:4px 7px}}

/* 0.2.20: independently controlled robot brains and diagnostics windows. */
.solvi-floating-window{position:fixed;z-index:120;top:100px;left:max(12px,calc(50vw - 250px));width:min(490px,calc(100vw - 24px));max-height:min(78vh,790px);overflow:hidden;background:var(--panel-bg, #182438);color:var(--text, #e8eff8);border:1px solid var(--border, #50647d);border-radius:12px;box-shadow:0 14px 46px #0008;display:flex;flex-direction:column}
.solvi-floating-window[hidden]{display:none!important}
.solvi-floating-window .panel-title{cursor:grab;flex-shrink:0}
.solvi-floating-window .brains-scroll{overflow:auto;padding:12px;display:grid;gap:10px}
.solvi-floating-window .field-label{display:flex;flex-direction:column;gap:5px}
.solvi-floating-window textarea,.solvi-floating-window input{max-width:100%;width:100%;box-sizing:border-box}
.solvi-floating-window .brains-eye-stage{position:relative;width:fit-content;max-width:100%;margin:0 auto;background:#090f1a;border:1px solid #6d8294;border-radius:8px;overflow:hidden}
.solvi-floating-window .brains-eye-stage[hidden]{display:none}
.solvi-floating-window #brainsEyeImage{display:block;width:auto;max-width:100%;max-height:300px;height:auto}
.solvi-floating-window #brainsEyeImage[hidden]{display:none}
.solvi-floating-window #brainsEyeOverlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.solvi-floating-window .brain-results{max-height:190px;min-height:45px;overflow:auto;white-space:pre-wrap;overflow-wrap:anywhere;font-size:12px;padding:10px;background:#0a1322;color:#d5eaf6;border-radius:8px}
.solvi-floating-window .brain-actions{display:flex;gap:10px;flex-wrap:wrap}
.solvi-floating-window .drawer-label{font-weight:700;margin-top:8px}
.diagnostics-window{left:auto;right:20px;max-height:75vh;padding:0 12px 12px}
.diagnostics-window .panel-title{margin:0 -12px 8px}
.diagnostics-window .brain-results{max-height:52vh;min-height:180px}
@media(max-width:650px){.solvi-floating-window{top:70px;left:8px;right:8px;width:auto;max-height:75vh}.diagnostics-window{left:8px;right:8px}}

/* v0.2.24 Brains: legible, collapsible and inspectable. */
#robotBrainsPanel{width:min(900px,calc(100vw - 28px));left:max(10px,calc(50vw - 450px));max-height:88vh;top:5vh;resize:both;min-width:min(380px,95vw);min-height:340px}
#robotBrainsPanel .brains-scroll{display:flex;flex-direction:column;align-items:stretch;gap:13px;padding:18px 22px}
.brains-section{border:1px solid #4b627c;border-radius:9px;padding:10px 13px;background:rgba(3,14,27,.28)}
.brains-section summary{cursor:pointer;padding:8px 4px;font-weight:750;font-size:15px}
.brains-section-body{display:grid;gap:12px;padding:12px 2px 3px}
#robotBrainsPanel textarea{font-family:system-ui,sans-serif;font-size:14px;line-height:1.45;min-height:72px;padding:9px 11px}
#robotBrainsPanel input{font-family:system-ui,sans-serif;font-size:14px;padding:9px}
#robotBrainsPanel .brain-results{font-size:13px;line-height:1.55;white-space:pre-wrap;overflow-x:auto;word-break:break-word;max-height:340px;min-height:85px;padding:14px}
#robotBrainsPanel .brain-vision-output{min-height:145px;max-height:55vh}
#robotBrainsPanel .brain-task-trace{min-height:140px;max-height:38vh}
#robotBrainsPanel .brains-eye-stage{width:100%;max-width:750px;min-height:230px;display:flex;justify-content:center;align-items:center}
#robotBrainsPanel .brains-eye-stage[hidden]{display:none}
#robotBrainsPanel #brainsEyeImage{max-height:min(55vh,600px);width:100%;max-width:650px;object-fit:contain}
#robotBrainsPanel #brainsEyeOverlay{object-fit:contain}
#brainsEyeMeta{overflow-wrap:anywhere}
.robot-debug-toggle{display:flex;align-items:center;gap:7px;font-size:12px;color:#a9d9f7;margin:4px 0;cursor:pointer}
.robot-debug-toggle input{accent-color:#81d6b6}
.chat-row.brain-trace .chat-bubble{border:1px dashed #74bbad;background:#132b33}
.chat-row.brain-trace .chat-body{white-space:pre-wrap;font:12px/1.6 ui-monospace,SFMono-Regular,Menlo,monospace;overflow-wrap:anywhere}
@media(max-width:650px){#robotBrainsPanel{top:2vh;left:7px;right:7px;width:calc(100vw - 14px);max-height:95vh;min-width:0;resize:none}#robotBrainsPanel .brains-scroll{padding:12px}#robotBrainsPanel .brain-results{font-size:12px}}

#robotBrainsPanel .brains-eye-stage{width:min(100%,min(650px,55vh));aspect-ratio:1;min-height:0;max-height:650px;display:block;margin:0 auto}
#robotBrainsPanel #brainsEyeImage{display:block;width:100%;height:100%;max-height:none;object-fit:fill}
#robotBrainsPanel #brainsEyeOverlay{width:100%;height:100%;inset:0}

#robotBrainsPanel .brains-frame-gallery{display:flex;flex-wrap:nowrap;gap:9px;overflow-x:auto;padding:9px 1px;max-width:100%}
#robotBrainsPanel .brains-frame-card{flex:0 0 145px;text-align:left;display:flex;flex-direction:column;gap:5px;padding:7px;cursor:pointer;background:#0b182b;color:#d3eeed;border:1px solid #405d74;border-radius:8px;font:11px/1.4 system-ui}
#robotBrainsPanel .brains-frame-card img{width:100%;aspect-ratio:1;object-fit:cover;border-radius:5px}
#robotBrainsPanel .brains-frame-card span{overflow-wrap:anywhere}
#robotBrainsPanel .brains-frame-card:hover,#robotBrainsPanel .brains-frame-card:focus-visible{outline:2px solid #86d5c1}

/* v0.2.24: the camera is the FIRST and guaranteed-sized element in Brains.
   Size the IMG in normal document flow; no percentage-height cycles or zero-height canvas. */
#robotBrainsPanel{width:min(850px,calc(100vw - 24px));max-height:94svh;top:2svh;min-height:420px}
#robotBrainsPanel .brains-scroll{min-height:0;overflow-y:auto;overflow-x:hidden;padding:12px 22px 22px;display:flex;flex-direction:column;gap:15px}
#robotBrainsPanel .brain-observation{display:flex;flex-direction:column;gap:13px;align-items:stretch;min-width:0;order:0}
#robotBrainsPanel .brain-eye-header{display:flex;justify-content:space-between;align-items:center;gap:15px}
#robotBrainsPanel .brain-eye-header h2{font-size:18px;margin:0 0 4px;line-height:1.25}
#robotBrainsPanel .brain-eye-header p{margin:0}
#robotBrainsPanel #brainsEyeStage.brains-eye-stage{display:block;position:relative;overflow:hidden;flex:0 0 auto;width:min(100%,600px);height:auto;min-height:0;max-height:none;max-width:100%;aspect-ratio:auto;margin:0 auto;background:#07111c;border:2px solid #678aa3;border-radius:12px;line-height:0}
#robotBrainsPanel #brainsEyeStage.brains-eye-stage[hidden]{display:none!important}
#robotBrainsPanel #brainsEyeImage{display:block;width:100%;height:auto;min-height:0;max-height:none;max-width:100%;aspect-ratio:1/1;object-fit:contain;position:relative;z-index:0}
#robotBrainsPanel #brainsEyeImage[hidden]{display:none!important}
#robotBrainsPanel #brainsEyeOverlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1}
#robotBrainsPanel .brains-eye-placeholder{min-height:230px;border:1px dashed #678aa3;background:#091728;display:flex;justify-content:center;align-items:center;text-align:center;padding:22px;border-radius:12px;color:#c7dce9;font-size:15px;line-height:1.6}
#robotBrainsPanel .brains-eye-placeholder[hidden]{display:none!important}
#robotBrainsPanel .brain-primary-actions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}
#robotBrainsPanel .brains-frame-gallery{display:flex;max-width:100%;min-height:0;overflow-x:auto;padding:4px 0 10px;gap:10px}
#robotBrainsPanel .brains-frame-gallery:empty{display:none}
#robotBrainsPanel .brains-frame-card{flex:0 0 126px;min-width:126px}
#robotBrainsPanel .brains-section{order:1}
#robotBrainsPanel .brain-observation .brain-results{max-height:360px;min-height:100px}
#robotBrainsPanel .brains-section summary{list-style:auto;cursor:pointer}
#robotBrainsPanel .brains-section[open]>.brains-section-body{padding-top:12px}
.brains-eye-lightbox{position:fixed;inset:0;z-index:600;background:rgba(2,7,15,.96);color:#f4f7fc;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:20px;overflow:auto}
.brains-eye-lightbox[hidden]{display:none!important}
.brains-lightbox-head{width:min(95vw,900px);display:flex;align-items:center;justify-content:space-between;gap:15px}
#brainsEyeLarge{object-fit:contain;display:block;width:min(90vmin,900px);height:min(75vmin,75vh);background:#040d1a;border:1px solid #8da8bf;border-radius:8px}
#brainsLightboxCaption{width:min(90vw,900px);text-align:center;line-height:1.5;overflow-wrap:anywhere;font-size:13px;color:#ccdce9}
#chatPanel .chat-row.brain-trace{max-width:min(82vw,760px)!important}
#chatPanel .chat-row.brain-trace .chat-bubble{border:1px solid #77d7c0!important;background:rgba(12,42,50,.94)!important;padding:10px 13px!important}
#chatPanel .chat-row.brain-trace .chat-body{font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace;white-space:pre-wrap;overflow-wrap:anywhere;user-select:text}
@media(max-width:650px){#robotBrainsPanel .brains-scroll{padding:11px}#robotBrainsPanel .brain-eye-header{flex-wrap:wrap}#robotBrainsPanel #brainsEyeStage.brains-eye-stage{width:100%}#chatPanel .chat-row.brain-trace{max-width:95vw!important}}

/* The explicit Show debug in chat action docks two actually visible windows. */
body.solvi-brain-chat-side-by-side #chatPanel.windowed{z-index:180!important}
@media(min-width:1101px){body.solvi-brain-chat-side-by-side #robotBrainsPanel{left:12px!important;right:auto!important;width:calc(100vw - 466px)!important;max-width:calc(100vw - 466px)!important}}

#brainsEyeLarge{width:min(82vmin,90vw,850px);height:auto;max-height:80vh;aspect-ratio:1/1}

/* v0.2.25 — accessibility, mobile icon controls and legible settings. */
:root{--ui-scale:1;--ui-font-stack:system-ui,-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;--ui-icon-filter:brightness(0) invert(1);--ui-primary-icon-filter:brightness(0)}
html,body,button,input,select,textarea,label{font-family:var(--ui-font-stack)!important}
body{font-size:calc(14px * var(--ui-scale))!important}
button:not(.theme-swatch):not(.theme-preset),.icon-btn,select,input[type=button],input[type=submit]{font-size:calc(12px * var(--ui-scale))!important;min-height:max(36px,calc(34px * var(--ui-scale)))!important;line-height:1.4!important;max-width:100%;overflow-wrap:anywhere}
:is(.drawer,.scene-panel,.properties-panel,.editor-toolbox,.overlay,.solvi-floating-window,.chat-composer) :is(p,small,label,summary,.small-note,.field-label,.drawer-label,.settings-subhead){font-size:calc(12px * var(--ui-scale))!important;line-height:1.5!important}
:is(.drawer,.scene-panel,.properties-panel,.editor-toolbox,.overlay,.solvi-floating-window) :is(h2,h3){font-size:calc(17px * var(--ui-scale))!important;line-height:1.3!important}
:is(.drawer,.scene-panel,.properties-panel,.editor-toolbox,.overlay,.solvi-floating-window) :is(input,select,textarea){font-size:calc(13px * var(--ui-scale))!important;min-height:max(34px,calc(35px * var(--ui-scale)))!important;max-width:100%}
:is(.drawer,.overlay,.scene-panel,.properties-panel,.solvi-floating-window){max-width:100vw;overflow-wrap:anywhere}
.chat-body{font-size:calc(12px * var(--ui-scale))!important;line-height:1.55!important}
.chat-meta,.chat-meta strong,.composer-line,.statusbar{font-size:calc(10px * var(--ui-scale))!important}
.chat-composer textarea{font-size:calc(13px * var(--ui-scale))!important}
.topbar .wordmark{font-size:calc(20px * var(--ui-scale))!important}
button[data-ui-icon]::before,label.icon-btn[data-ui-icon]::before{content:"";display:inline-block;flex:0 0 auto;width:calc(17px * var(--ui-scale));height:calc(17px * var(--ui-scale));background-image:var(--ui-button-icon);background-size:contain;background-position:center;background-repeat:no-repeat;filter:var(--ui-icon-filter);vertical-align:middle;pointer-events:none}
button.primary[data-ui-icon]::before{filter:var(--ui-primary-icon-filter)}
html[data-button-labels='text'] button[data-ui-icon]::before,html[data-button-labels='text'] label.icon-btn[data-ui-icon]::before{display:none}
html[data-button-labels='icon'] button[data-ui-icon],html[data-button-labels='icon'] label.icon-btn[data-ui-icon]{font-size:0!important;letter-spacing:0!important;min-width:max(44px,calc(38px * var(--ui-scale)))!important;min-height:max(44px,calc(38px * var(--ui-scale)))!important;padding:8px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:0!important;flex:0 0 auto;text-align:center!important}
html[data-button-labels='icon'] button[data-ui-icon]::before,html[data-button-labels='icon'] label.icon-btn[data-ui-icon]::before{width:calc(22px * var(--ui-scale));height:calc(22px * var(--ui-scale))}
/* Named theme cards use real filled colour samples, not generic button styling. */
.settings-section{border-top:1px solid color-mix(in srgb,var(--ui-fg) 24%,transparent);padding-top:16px;margin:4px 0 10px;min-width:0}
.settings-section>h2{font-size:calc(17px * var(--ui-scale));font-weight:750;margin:0 0 9px;color:var(--ui-fg)}
.settings-section .small-note{margin:4px 0 11px;color:var(--ui-fg);opacity:.86}
.settings-subhead{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px;font-weight:750;margin:14px 0 8px}
.settings-mode-choices{display:flex;flex-wrap:wrap;gap:8px;border:1px solid color-mix(in srgb,var(--ui-fg) 27%,transparent);border-radius:10px;padding:12px 10px}
.settings-mode-choices legend{font-weight:750;padding:0 6px}
.settings-mode-choices label{display:flex;gap:5px;align-items:center;padding:7px 4px;min-height:36px}
.settings-mode-choices input{width:18px;height:18px;accent-color:var(--solvi-accent)}
.theme-preset-gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:9px;margin:12px 0}
.theme-preset-gallery .theme-preset{display:flex;align-items:center;flex-direction:column;gap:7px;min-width:0;padding:9px 5px!important;min-height:69px!important;font-size:calc(12px * var(--ui-scale))!important;background:var(--ui-button)!important;color:var(--ui-button-text)!important;border:2px solid transparent!important;border-radius:9px}
.theme-preset-gallery .theme-preset.active{border-color:var(--solvi-accent)!important;outline:1px solid var(--ui-fg)}
.theme-preview-strip{display:flex;width:94%;height:22px;overflow:hidden;border:1px solid #8c99ad;border-radius:5px}
.theme-preview-strip span{flex:1;min-width:0}
.theme-swatches button.theme-swatch{background:var(--swatch-color)!important;min-width:38px!important;width:38px!important;height:38px!important;min-height:38px!important;border:2px solid color-mix(in srgb,var(--ui-fg) 75%,transparent)!important;border-radius:12px!important;padding:0!important;box-shadow:inset 0 0 0 1px #0002}
.theme-swatches .theme-swatch[aria-pressed='true']{outline:3px solid var(--solvi-accent);outline-offset:2px}
#uiScale{display:block;width:100%;min-height:26px!important;accent-color:var(--solvi-accent)}
#uiScaleOutput{font-weight:700;font-variant-numeric:tabular-nums;margin-left:8px}
#uiCustomFontLabel[hidden]{display:none!important}
#resetUiPreferences{width:100%}
.drawer{width:min(calc(390px * min(var(--ui-scale),1.25)),100vw)!important;gap:7px!important;scrollbar-width:thin!important}
.drawer .field-label{display:block;min-width:0;margin:10px 0!important}
.drawer .field-label :is(input:not([type=checkbox]):not([type=radio]),select,textarea){width:100%;margin-top:6px;box-sizing:border-box}
:where(button,a,input,textarea,select,summary,[tabindex]):focus-visible{outline:3px solid var(--solvi-accent)!important;outline-offset:3px!important}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto!important}*{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Phone: world visible first, compact main controls, expanded tools via explicit More action. */
#mobileMenuButton{display:none!important}
@media(max-width:750px){
 #mobileMenuButton{display:inline-flex!important}
 #toolNav{width:100%;display:flex!important;justify-content:flex-end!important;flex-wrap:nowrap!important;max-width:100%;overflow-x:auto!important;scrollbar-width:thin}
 #toolNav>:not(#toolsToggleButton):not(#realmGalleryButton):not(#devLogNavButton):not(#webcamButton):not(#minimapButton):not(#chatButton):not(#roomSelect):not(#messagesToggleButton):not(#mobileMenuButton):not(#profileButton):not(#settingsButton){display:none!important}
 #toolNav.nav-expanded{flex-wrap:wrap!important;overflow-y:auto!important;max-height:48svh!important;background:var(--ui-panel);border-radius:9px;padding:6px}
 #toolNav.nav-expanded>:not(#webcamButton):not(#mobileMenuButton){display:inline-flex!important}
 #toolNav #roomSelect{flex:1 1 70px;min-width:65px!important;max-width:160px}
 .topbar{flex-direction:column!important;gap:3px!important;padding:5px 7px!important}
 .topbar .wordmark{align-self:flex-start;font-size:calc(14px * var(--ui-scale))!important;line-height:1.1!important}
 .topbar nav button{min-width:44px!important;min-height:44px!important}
 .statusbar{display:none!important}
 .editor-toolbox{top:108px!important;left:7px!important;width:auto!important;max-width:150px}
 .editor-toolbox.minimized{width:auto!important}
 .editor-toolbox .toolbox-title strong{font-size:calc(11px * var(--ui-scale))!important}
 .editor-toolbox .toolbox-actions{max-height:42svh;overflow:auto;min-width:110px}
 .scene-panel,.properties-panel{max-width:calc(100vw - 14px)!important}
 #scenePanel{top:170px;}
 .chat-composer{max-width:calc(100vw - 12px)!important;min-width:0}
 .composer-actions{flex-wrap:wrap!important}
 #composerToolsButton{display:inline-flex!important}
 .composer-actions .media-tool{display:none!important}
 .chat-composer.tools-open .composer-actions .media-tool{display:inline-flex!important}
 .composer-actions #captionsButton{display:inline-flex!important;order:1!important}
 .composer-actions #sendChat{order:2!important;margin-left:auto!important}
 .chat-composer.tools-open .composer-actions .media-tool{order:3!important}
 .drawer{width:100vw!important;max-height:100svh;padding:12px 14px max(16px,env(safe-area-inset-bottom))!important}
 .drawer .theme-preset-gallery{grid-template-columns:repeat(2,minmax(0,1fr))}
 button:not(.theme-swatch):not(.theme-preset){min-height:44px!important}
}
@media(max-width:420px){
 .topbar .wordmark small{font-size:9px!important}
 #toolNav{gap:3px!important}
 .chat-composer{padding:5px!important}
 #chatPanel .chat-feed{padding-top:8px!important}
 .settings-mode-choices{flex-direction:column}
}

/* Unique scene object names must remain distinguishable in icon-only mode. */
html[data-button-labels="icon"] #sceneItems .scene-item-row button:not(.scene-item-delete){font-size:calc(12px * var(--ui-scale))!important;min-width:0!important;justify-content:flex-start!important;text-align:left!important;flex:1 1 auto!important;overflow-wrap:anywhere}
html[data-button-labels="icon"] #sceneItems .scene-item-row button:not(.scene-item-delete)::before{display:none}
/* Counteract legacy body-button specificity without rewriting historic controls. */
body button:not(.profile-photo-badge):not(.xr-stage-button):not(.avatar-card):not(.theme-swatch){font-size:calc(12px * var(--ui-scale))!important;min-height:max(36px,calc(34px * var(--ui-scale)))!important}
html[data-button-labels='icon'] body button[data-ui-icon]:not(.profile-photo-badge):not(.xr-stage-button):not(.avatar-card):not(.theme-swatch){font-size:0!important;min-height:max(44px,calc(38px * var(--ui-scale)))!important;min-width:max(44px,calc(38px * var(--ui-scale)))!important;padding:8px!important;display:inline-flex!important;justify-content:center!important;align-items:center!important}
@media(max-width:750px){body button:not(.profile-photo-badge):not(.xr-stage-button):not(.avatar-card):not(.theme-swatch){min-height:44px!important}}
html[data-button-labels='icon'] #toolNav #mobileMenuButton{font-size:0!important;width:44px!important;max-width:44px!important;min-width:44px!important;min-height:44px!important;overflow:hidden!important}
body button.theme-preset:not(.profile-photo-badge):not(.xr-stage-button):not(.avatar-card):not(.theme-swatch){min-height:max(68px,calc(68px * var(--ui-scale)))!important;font-size:calc(12px * var(--ui-scale))!important}
@media(max-width:750px){.theme-swatches button.theme-swatch{height:44px!important;min-height:44px!important;width:44px!important;min-width:44px!important}}

/* v0.2.26 semantic icon system: no doubled glyphs, balanced text/icon spacing. */
button[data-ui-icon],label.icon-btn[data-ui-icon]{
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 column-gap:calc(9px * var(--ui-scale))!important;row-gap:calc(6px * var(--ui-scale))!important;
}
button[data-ui-icon]::before,label.icon-btn[data-ui-icon]::before{
 flex:0 0 calc(19px * var(--ui-scale));width:calc(19px * var(--ui-scale));height:calc(19px * var(--ui-scale));
 margin:0!important;vertical-align:middle!important;align-self:center;
}
/* Header utility buttons have exactly one SVG, not another X from HTML. */
button.ui-icon-utility[data-ui-icon]{
 flex:0 0 auto!important;width:max(44px,calc(38px * var(--ui-scale)))!important;
 min-width:max(44px,calc(38px * var(--ui-scale)))!important;
 height:max(44px,calc(38px * var(--ui-scale)))!important;
 min-height:max(44px,calc(38px * var(--ui-scale)))!important;
 padding:8px!important;gap:0!important;overflow:hidden!important;
}
button.ui-icon-utility[data-ui-icon]::before{width:calc(22px * var(--ui-scale));height:calc(22px * var(--ui-scale));flex-basis:calc(22px * var(--ui-scale))}
/* Object rows: the object type uses its own geometry SVG, names are always readable. */
#sceneItems .scene-item-row{gap:10px!important;min-height:44px;margin:6px 0!important;align-items:center!important}
#sceneItems .scene-item-row>button:first-child{
 flex:1 1 0!important;min-width:0!important;max-width:100%;
 display:inline-flex!important;align-items:center!important;justify-content:flex-start!important;
 column-gap:calc(10px * var(--ui-scale))!important;text-align:left!important;
 font-size:calc(12px * var(--ui-scale))!important;
 padding:8px 12px!important;white-space:normal!important;line-height:1.4!important;
}
#sceneItems .scene-item-delete{
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 width:44px!important;min-width:44px!important;height:44px!important;min-height:44px!important;
 margin:0!important;padding:9px!important;line-height:1!important;gap:0!important;
}
#sceneItems .scene-item-delete::before{width:22px!important;height:22px!important;flex-basis:22px!important}
/* Icon-only global preference must not make individual object names disappear. */
html[data-button-labels='icon'] #sceneItems .scene-item-row>button:first-child[data-ui-icon]{
 font-size:calc(12px * var(--ui-scale))!important;
 min-width:0!important;min-height:44px!important;padding:8px 12px!important;
 justify-content:flex-start!important;gap:calc(10px * var(--ui-scale))!important;
}
html[data-button-labels='icon'] #sceneItems .scene-item-row>button:first-child[data-ui-icon]::before{
 display:inline-block!important;width:calc(20px * var(--ui-scale))!important;
 height:calc(20px * var(--ui-scale))!important;flex:0 0 calc(20px * var(--ui-scale))!important;
}
html[data-button-labels='icon'] #sceneItems .scene-item-delete{
 min-width:44px!important;width:44px!important;min-height:44px!important;height:44px!important;
}
/* The legacy 30px header rule is ID-specific; override it for accessible single icons. */
:is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize).ui-icon-utility[data-ui-icon]{
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 flex:0 0 44px!important;width:44px!important;min-width:44px!important;max-width:44px!important;
 height:44px!important;min-height:44px!important;max-height:44px!important;
 padding:9px!important;
}
/* Text-only preference must never make single-purpose delete/close controls blank. */
html[data-button-labels='text'] button.ui-icon-utility[data-ui-icon]::before{display:inline-block!important}

/* v0.2.27 compact Settings; display editing stays fixed-size even at 50–200% app scale. */
#addMenu[hidden], .add-menu[hidden] {display:none!important;visibility:hidden!important;pointer-events:none!important}
#settingsDrawer[hidden], #settingsDrawer [hidden]{display:none!important}
#settingsDrawer .drawer{width:min(390px,100vw)!important;max-width:100vw!important;gap:4px!important;padding:12px 14px max(14px,env(safe-area-inset-bottom))!important;font-size:14px!important;}
#settingsDrawer .drawer-head{min-height:44px;padding:0 0 8px;margin-bottom:3px}
#settingsDrawer .drawer-head strong{font-size:17px!important}
#settingsDrawer .settings-section{display:block;border:1px solid color-mix(in srgb,var(--ui-fg) 24%,transparent);border-radius:10px;margin:3px 0!important;padding:0!important;min-width:0}
#settingsDrawer .settings-section>summary{display:list-item;cursor:pointer;font-size:15px!important;font-weight:700!important;padding:11px 12px;line-height:1.45;list-style-position:inside;outline-offset:2px}
#settingsDrawer .settings-section[open]>summary{border-bottom:1px solid color-mix(in srgb,var(--ui-fg) 20%,transparent);margin-bottom:7px}
#settingsDrawer .settings-section[open]>:not(summary){margin-left:10px!important;margin-right:10px!important}
#settingsDrawer .settings-section .small-note{font-size:12px!important;margin:4px 0 7px!important}
#settingsDrawer .settings-section .field-label{margin-top:6px!important;margin-bottom:8px!important;font-size:13px!important}
#settingsDrawer :is(button,input,select,legend,label,summary,output){font-size:14px!important;line-height:1.35!important}
#settingsDrawer .settings-mode-choices{display:flex;flex-wrap:wrap!important;gap:5px 11px!important;margin-top:6px!important;margin-bottom:9px!important;padding:5px 8px!important;border-radius:8px!important;align-items:center}
#settingsDrawer .settings-mode-choices legend{font-size:13px!important;padding:0 4px}
#settingsDrawer .settings-mode-choices label{display:inline-flex!important;align-items:center!important;gap:5px!important;padding:4px 0!important;margin:0!important;white-space:nowrap}
#settingsDrawer .settings-mode-choices input{height:18px!important;width:18px!important;margin:0 2px 0 0!important}
#settingsDrawer .theme-choices{margin:4px 0 8px!important;padding:0!important}
#settingsDrawer .theme-choices summary{font-size:13px!important;cursor:pointer;padding:4px 0}
#settingsDrawer .theme-preset-gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:5px!important;margin:4px 0 8px!important}
#settingsDrawer .theme-preset-gallery .theme-preset{min-height:60px!important;padding:4px!important;font-size:12px!important}
#settingsDrawer .theme-swatches{display:flex;flex-wrap:wrap;gap:8px;margin:5px 0 10px}
#settingsDrawer .settings-subhead{margin:8px 0 2px!important;display:flex!important;align-items:center;justify-content:space-between;gap:8px;font-size:13px!important}
#settingsDrawer .toggle-line{display:flex;align-items:center;gap:9px;margin:0 0 3px!important;padding:6px 4px!important;line-height:1.35}
#settingsDrawer .toggle-line input{flex:0 0 19px;width:19px;height:19px}
#settingsDrawer .settings-scale{margin:6px 0 10px!important}
#settingsDrawer .settings-scale>label{display:flex;align-items:center;gap:9px;font-weight:600;padding:2px 0 5px}
#settingsDrawer .settings-scale-controls{display:flex;align-items:center;gap:7px;min-width:0}
#settingsDrawer .settings-scale-controls input[type=range]{flex:1 1 90px;min-width:72px;max-width:100%;width:auto!important;min-height:32px!important;margin:0!important}
#settingsDrawer .settings-scale-controls input[type=number]{flex:0 0 57px;width:57px!important;min-width:0!important;height:38px!important;min-height:38px!important;text-align:center;padding:4px!important;margin:0!important}
#settingsDrawer .settings-scale-controls>button{flex:0 0 auto;padding:6px 10px!important;min-height:38px!important;margin:0!important}
#settingsDrawer .settings-font-actions{display:flex;flex-wrap:wrap;gap:6px!important;margin:7px 0!important}
#settingsDrawer .settings-font-actions>button{flex:1 1 110px;min-width:0;min-height:38px!important;padding:5px 8px!important}
#settingsDrawer #resetUiPreferences{display:inline-flex!important;width:auto!important;max-width:100%;min-height:38px!important;margin:7px 0 10px!important;padding:7px 12px!important;font-size:13px!important;gap:8px!important}
#settingsDrawer #resetUiPreferences::before{width:17px!important;height:17px!important;flex-basis:17px!important}
#settingsDrawer #localFontList{width:100%!important;margin:5px 0 8px!important}
#settingsDrawer :is(#saveMetaKey,#clearMetaKey,#refreshMetaUsage){display:inline-flex;max-width:100%;width:auto;min-height:38px!important;margin:5px 4px 5px 0;padding:7px 10px!important;gap:8px!important}
#settingsDrawer #metaKeyStatus{display:block;clear:both;line-height:1.35!important;margin-top:3px!important}
/* Keep reset and setup controls legible in icon-only mode, regardless of global button preference. */
html[data-button-labels=icon] #settingsDrawer :is(#applyUiScale,#resetUiPreferences,#useSystemFont,#browseLocalFonts){font-size:13px!important;gap:8px!important;min-width:0!important;white-space:normal!important;padding:7px 9px!important}
@media(max-width:420px){#settingsDrawer .settings-mode-choices{flex-direction:row!important;gap:3px 9px!important}#settingsDrawer .settings-scale-controls{gap:4px}}
/* Inspector: numeric precision + finger-friendly paired ranges; reset is deliberately icon only. */
.properties-panel #propertyGrid.property-grid{display:flex!important;flex-direction:column!important;gap:8px!important;grid-template-columns:none!important;overflow:visible!important}
.properties-panel .transform-group{min-width:0;border:1px solid color-mix(in srgb,var(--ui-fg) 25%,transparent);border-radius:8px;padding:5px 7px 8px;margin:0}
.properties-panel .transform-group legend{font-weight:650;font-size:13px!important;padding:0 5px}
.properties-panel .transform-value{display:grid;grid-template-columns:16px minmax(56px,72px) minmax(38px,1fr) 36px;align-items:center;gap:6px;margin:3px 0}
.properties-panel .transform-value label{font-size:12px!important;font-weight:700}
.properties-panel .property-grid .transform-value input[type=number]{box-sizing:border-box;width:100%!important;height:38px!important;min-height:38px!important;padding:4px 5px!important;font-size:13px!important;min-width:0!important}
.properties-panel .property-grid .transform-value input[type=range]{box-sizing:border-box;width:100%!important;height:36px!important;min-height:36px!important;accent-color:var(--solvi-accent);min-width:0}
.properties-panel .transform-reset[data-ui-icon]{display:inline-flex!important;min-width:36px!important;width:36px!important;min-height:36px!important;height:36px!important;max-height:36px!important;padding:7px!important;justify-content:center!important;align-items:center!important;gap:0!important;font-size:0!important}
.properties-panel .transform-reset::before{display:inline-block!important;content:'';width:20px!important;height:20px!important;flex:0 0 20px!important;background:url('./assets/ui-icons/reset.svg') center/contain no-repeat!important;filter:var(--ui-icon-filter)}
.properties-panel .property-companion-range{width:100%;min-height:34px;accent-color:var(--solvi-accent);margin:4px 0}
.properties-panel .physics-object-controls label{display:block;margin:4px 0 7px}
@media(max-width:750px){.properties-panel .transform-value{grid-template-columns:14px minmax(56px,68px) minmax(42px,1fr) 40px;gap:5px}.properties-panel .transform-reset[data-ui-icon]{min-width:40px!important;width:40px!important;min-height:40px!important;height:40px!important}}

/* v0.2.29: restrained window controls and readable two-line labels.
   Previous global scale rules inflated every button at 200%; typography may scale,
   but window chrome and navigation retain usable bounds on narrow screens. */
#xrButton[hidden],#xrStageButton[hidden]{display:none!important;visibility:hidden!important;pointer-events:none!important}
.topbar #toolNav{gap:5px!important;align-items:center!important}
.topbar #toolNav>button:not(#settingsButton):not(#profileButton){
  flex:0 1 auto!important;min-width:0!important;min-height:34px!important;
  max-height:46px!important;padding:5px 9px!important;
  font-size:clamp(11px,calc(12px * var(--ui-scale)),15px)!important;
  line-height:1.2!important;border-radius:8px!important;
}
button[data-ui-icon]>.ui-button-label{
  min-width:0;min-height:0;max-width:100%;line-height:1.25;
  overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;
  line-clamp:2;overflow-wrap:normal;word-break:normal;hyphens:none;
  text-overflow:ellipsis;text-align:center;
}
button[data-ui-icon]::before{flex-shrink:0!important}
html[data-button-labels='icon'] button[data-ui-icon]>.ui-button-label{display:none!important}
html[data-button-labels='text'] button[data-ui-icon]>.ui-button-label{display:-webkit-box!important}
.topbar #toolNav>button[data-ui-icon]:not(#settingsButton):not(#profileButton){gap:7px!important;white-space:normal!important;}
/* Settings is one cog; profile is its own initials/photo, never a second profile pictogram. */
.topbar #settingsButton,.topbar #profileButton{
  position:relative;display:inline-flex!important;align-items:center!important;justify-content:center!important;
  flex:0 0 34px!important;width:34px!important;height:34px!important;
  min-width:34px!important;min-height:34px!important;max-width:34px!important;max-height:34px!important;
  font-size:12px!important;padding:0!important;gap:0!important;overflow:hidden!important;
  border-radius:50%!important;
}
.topbar #settingsButton::before{width:17px!important;height:17px!important;flex:0 0 17px!important}
.topbar #profileButton::before{display:none!important}
/* Restrained 34px desktop header controls; minimum 40px on a touchscreen. */
:is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize).ui-icon-utility[data-ui-icon]{
  width:34px!important;min-width:34px!important;max-width:34px!important;
  height:34px!important;min-height:34px!important;max-height:34px!important;
  flex:0 0 34px!important;padding:7px!important;gap:0!important;border-radius:8px!important;
}
:is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize).ui-icon-utility[data-ui-icon]::before{
  width:17px!important;height:17px!important;flex:0 0 17px!important;
}
#scenePanel{width:min(282px,calc(100vw - 12px))!important;max-height:min(60svh,540px)!important}
#scenePanel.minimized{width:145px!important}
#scenePanel .panel-title{min-height:42px!important;padding:4px 9px!important;gap:6px!important}
#scenePanel .panel-title strong{font-size:clamp(13px,calc(13px * var(--ui-scale)),17px)!important}
#scenePanel .scene-items{padding:6px 7px!important;overflow-y:auto;min-height:0;max-height:calc(min(60svh,540px) - 96px)}
#sceneItems .scene-item-row{gap:5px!important;min-height:0!important;margin:3px 0!important;align-items:center!important}
#sceneItems .scene-item-row>button:first-child,
html[data-button-labels='icon'] #sceneItems .scene-item-row>button:first-child[data-ui-icon]{
  padding:6px 8px!important;min-height:36px!important;max-height:54px!important;
  font-size:clamp(11px,calc(12px * var(--ui-scale)),15px)!important;
  line-height:1.23!important;gap:7px!important;overflow:hidden!important;
}
#sceneItems .scene-item-row>button:first-child>.ui-button-label{
  display:-webkit-box!important;-webkit-line-clamp:2!important;line-clamp:2!important;
  text-align:left!important;overflow-wrap:anywhere!important;min-width:0!important;
}
#sceneItems .scene-item-row>button:first-child::before{
  width:17px!important;height:17px!important;flex:0 0 17px!important;
}
#sceneItems .scene-item-delete,
html[data-button-labels='icon'] #sceneItems .scene-item-delete{
  flex:0 0 36px!important;width:36px!important;min-width:36px!important;
  height:36px!important;min-height:36px!important;max-height:36px!important;
  padding:8px!important;border-radius:8px!important;
}
#sceneItems .scene-item-delete::before{width:18px!important;height:18px!important;flex:0 0 18px!important}
#scenePanel .panel-footer{gap:6px!important;padding:7px!important}
#scenePanel .panel-footer button{flex:1 1 0!important;width:50%!important;min-width:0!important;
 min-height:34px!important;max-height:45px!important;padding:5px 8px!important;
 font-size:clamp(11px,calc(12px * var(--ui-scale)),15px)!important;gap:6px!important}
#scenePanel .panel-footer button::before{width:16px!important;height:16px!important;flex-basis:16px!important}
/* Inspector: three short numeric rows per group; ONE range appears below active row. */
.properties-panel{width:min(274px,calc(100vw - 12px))!important;max-height:72svh!important}
.properties-panel #propertyGrid.property-grid{gap:5px!important}
.properties-panel .transform-group{padding:3px 7px 5px!important}
.properties-panel .transform-value{display:grid!important;grid-template-columns:14px minmax(65px,1fr) 32px!important;gap:6px!important;margin:2px 0!important}
.properties-panel .property-grid .transform-value input[type=number]{height:30px!important;min-height:30px!important;padding:3px 6px!important}
.properties-panel .transform-reset[data-ui-icon]{width:32px!important;min-width:32px!important;height:32px!important;min-height:32px!important;max-height:32px!important;padding:6px!important}
.properties-panel .transform-reset::before{width:16px!important;height:16px!important;flex:0 0 16px!important}
.properties-panel #inspectorValueSlider.inspector-value-slider{margin:5px 0!important;padding:7px 9px!important;border:1px solid color-mix(in srgb,var(--ui-fg) 25%,transparent);border-radius:7px;background:color-mix(in srgb,var(--ui-bg) 75%,transparent)}
.properties-panel #inspectorValueSlider[hidden]{display:none!important}
.properties-panel .inspector-slider-head{display:flex;align-items:center;justify-content:space-between;gap:9px;font-size:12px!important;margin:0 0 4px}
.properties-panel #inspectorSliderValue{font-variant-numeric:tabular-nums}
.properties-panel #inspectorActiveRange{display:block;box-sizing:border-box;width:100%!important;min-height:25px!important;height:25px!important;margin:0!important;accent-color:var(--solvi-accent)}
@media(max-width:750px){
 .topbar #toolNav>button:not(#settingsButton):not(#profileButton){min-height:40px!important;max-height:44px!important;padding:5px 7px!important}
 .topbar #settingsButton,.topbar #profileButton{flex-basis:40px!important;width:40px!important;height:40px!important;min-width:40px!important;min-height:40px!important;max-width:40px!important;max-height:40px!important}
 :is(#closeLog,#closeCall,#closeScenePanel,#minimizeScenePanel,#closeProperties,#closeChat,#closeRoom,#closeProfile,#closeSettings,#closeAvatarGallery,#closeAdmin,#toolboxMinimize).ui-icon-utility[data-ui-icon]{width:40px!important;min-width:40px!important;max-width:40px!important;height:40px!important;min-height:40px!important;max-height:40px!important;flex-basis:40px!important}
 #sceneItems .scene-item-delete,html[data-button-labels='icon'] #sceneItems .scene-item-delete{width:40px!important;min-width:40px!important;height:40px!important;min-height:40px!important;flex-basis:40px!important}
 #scenePanel{max-height:52svh!important}
 .properties-panel{left:7px!important;top:114px!important;max-width:calc(100vw - 14px)!important}
}
/* Inspector is an editor, not a presentation: UI scaling must not inflate each
   field into oversized cards or split short action labels mid-word. */
.properties-panel #objectInspector :is(button:not(.transform-reset),select,input:not([type=range]),textarea){
  font-size:clamp(11px,calc(12px * var(--ui-scale)),14px)!important;
  line-height:1.25!important;max-width:100%;
}
.properties-panel #objectNameInput{font-size:clamp(12px,calc(12px * var(--ui-scale)),15px)!important;height:32px!important;min-height:32px!important;padding:4px 8px!important}
.properties-panel #objectInspector .object-actions button{font-size:12px!important;min-height:32px!important;padding:5px 8px!important}
.properties-panel #objectInspector .transform-modes button{
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
  font-size:12px!important;min-height:34px!important;height:34px!important;
  padding:4px 5px!important;gap:5px!important;overflow:hidden!important;
}
.properties-panel #objectInspector .transform-modes button::before{width:16px!important;height:16px!important;flex:0 0 16px!important}
.properties-panel #objectInspector .transform-modes button>.ui-button-label{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}

/* v0.2.30 — chat surface anchored to the viewport bottom, no cropped last bubble. */
#chatPanel:not(.windowed){bottom:0!important;top:53px!important;min-height:0!important;height:auto!important;max-height:none!important;overflow:visible!important;display:flex!important;flex-direction:column!important}
#chatPanel:not(.windowed)>.panel-title{flex:0 0 auto}
#chatPanel .chat-feed{min-height:0!important;flex:1 1 auto!important;overflow-y:auto!important;overflow-x:hidden!important;scroll-padding-bottom:12px!important;padding-bottom:12px!important;overscroll-behavior:contain;mask-image:none!important;-webkit-mask-image:none!important}
#chatPanel:not(.windowed) .chat-feed{pointer-events:none!important}
#chatPanel .chat-row:last-child{margin-bottom:2px!important}
#chatPanel .chat-composer{flex:0 0 auto!important;max-height:min(48svh,390px)!important}
#chatPanel:not(.windowed) .chat-composer:not(.composer-floating){margin:0 auto max(5px,env(safe-area-inset-bottom))!important}
#chatPanel.windowed .chat-composer{max-height:60%!important}
#chatPanel .composer-window-head{display:flex;align-items:center;justify-content:flex-end;gap:4px;min-height:24px;margin-bottom:3px}
#chatPanel .composer-window-head button{min-width:26px!important;min-height:24px!important;height:24px!important;max-height:24px!important;padding:2px 7px!important;line-height:1.1!important;font-size:12px!important}
#chatPanel #composerMove{margin-right:auto;cursor:grab;text-align:left;color:var(--ui-fg);opacity:.88;touch-action:none;background:transparent;border:0}
#chatPanel #composerMove:active{cursor:grabbing}
#chatPanel .chat-composer.composer-floating{position:fixed!important;z-index:160!important;left:var(--composer-x,10px);top:var(--composer-y,auto);bottom:auto!important;width:min(440px,calc(100vw - 12px))!important;margin:0!important;border:1px solid var(--solvi-accent)!important;pointer-events:auto!important;box-shadow:0 10px 40px #000b!important;overflow:visible!important}
#chatPanel .chat-composer.composer-minimized{height:34px!important;min-height:34px!important;max-height:34px!important;width:min(260px,calc(100vw - 20px))!important;overflow:hidden!important;padding:3px 7px!important}
#chatPanel .chat-composer.composer-minimized>:not(.composer-window-head){display:none!important}
#chatPanel .chat-composer.composer-minimized .composer-window-head{margin:0!important}
#chatPanel .composer-actions{position:relative;flex-wrap:nowrap!important;min-height:36px!important;align-items:center!important}
#chatPanel .composer-actions .media-tool,#chatPanel .composer-actions #composerToolsButton{display:none!important}
#chatPanel .composer-actions #attachmentButton{display:inline-flex!important;flex:0 0 auto;min-width:38px!important;padding:5px 9px!important}
#chatPanel .attachment-menu[hidden]{display:none!important}
#chatPanel .attachment-menu{position:absolute;bottom:calc(100% + 8px);left:0;display:flex;flex-direction:column;gap:3px;min-width:160px;padding:6px;border:1px solid #6c89a5;border-radius:9px;background:var(--ui-panel,#152a3c);box-shadow:0 8px 35px #000a;z-index:220;pointer-events:auto}
#chatPanel .attachment-menu button{display:flex!important;justify-content:flex-start!important;min-width:100%!important;min-height:36px!important;line-height:1.2!important;text-align:left!important;font-size:12px!important;padding:6px 10px!important}
#chatPanel #captionsButton[data-cc-state="listening"]{border-color:#62d8a9!important;color:#d2fff2!important;background:#245849!important}
#chatPanel #captionsButton[data-cc-state="error"]{border-color:#ff7676!important;color:#ffeaea!important}
#chatPanel #captionPreview{max-width:min(100%,550px);overflow:hidden}
#chatPanel #captionPhase{white-space:nowrap;min-width:0;text-overflow:ellipsis;overflow:hidden}
#chatPanel #captionDraft{white-space:nowrap;text-overflow:ellipsis}

/* Object list: owned-object bulk operations, search, type filter, single-line rows. */
#scenePanel:not(.minimized){width:min(330px,calc(100vw - 12px))!important;max-height:min(70svh,610px)!important}
#scenePanel.minimized .scene-list-tools{display:none!important}
#scenePanel .scene-list-tools{display:grid;gap:6px;padding:7px 9px 5px;border-bottom:1px solid #51677d;flex:0 0 auto}
#scenePanel .scene-filter-row{display:flex;gap:5px;min-width:0}
#scenePanel .scene-filter-row input{min-width:0;flex:1 1 65%;width:65%;font-size:12px!important;min-height:32px!important;padding:4px 7px}
#scenePanel .scene-filter-row select{flex:0 1 34%;min-width:76px;max-width:34%;font-size:12px!important;min-height:32px!important;padding:3px}
#scenePanel .scene-bulk-row{display:flex;flex-wrap:wrap;gap:5px;align-items:center}
#scenePanel .scene-bulk-row label{font-size:11px!important;display:inline-flex;align-items:center;gap:4px;margin-right:auto}
#scenePanel .scene-bulk-row input{width:17px;height:17px;accent-color:var(--solvi-accent)}
#scenePanel .scene-bulk-row button{min-height:30px!important;max-height:34px!important;padding:4px 7px!important;font-size:11px!important;flex:0 0 auto}
#scenePanel .scene-bulk-row button:disabled{opacity:.45}
#scenePanel .scene-items{min-height:0!important;max-height:none!important;flex:1 1 auto!important;padding:4px 7px!important;overflow-y:auto!important}
#sceneItems .scene-item-row{display:flex!important;gap:5px!important;align-items:center!important;margin:2px 0!important;min-height:36px!important}
#sceneItems .scene-row-check{flex:0 0 16px;min-width:16px;width:16px;height:16px;cursor:pointer;accent-color:var(--solvi-accent);margin:0}
#sceneItems .scene-item-row>button:not(.scene-item-delete),html[data-button-labels='icon'] #sceneItems .scene-item-row>button:not(.scene-item-delete)[data-ui-icon]{min-width:0!important;flex:1 1 auto!important;max-height:42px!important;min-height:36px!important;padding:5px 7px!important;justify-content:flex-start!important;font-size:clamp(11px,calc(12px * var(--ui-scale)),14px)!important;text-align:left!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important}
#sceneItems .scene-item-row>button:not(.scene-item-delete) .ui-button-label{display:block!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;line-clamp:unset!important;-webkit-line-clamp:unset!important}
#sceneItems .scene-item-row>button:not(.scene-item-delete)::before{flex-basis:16px!important;width:16px!important;height:16px!important}
#sceneItems .scene-item-delete{flex:0 0 34px!important;min-width:34px!important;width:34px!important;min-height:36px!important;height:36px!important}

/* Dedicated live webcam viewer, with independent track toggles. */
#webcamPanel[hidden]{display:none!important}
#webcamPanel.webcam-panel{position:fixed;right:10px;bottom:max(12px,env(safe-area-inset-bottom));width:min(300px,calc(100vw - 18px));display:flex;flex-direction:column;gap:5px;z-index:30;border:1px solid #6a879a;background:var(--ui-panel,#11283c);color:var(--ui-fg,#fff);padding:8px;border-radius:10px;box-shadow:0 8px 30px #0009}
#webcamPanel .webcam-head{display:flex;align-items:center;justify-content:space-between;gap:8px}
#webcamPanel .webcam-head button{width:30px!important;min-width:30px!important;height:30px!important;min-height:30px!important;padding:2px!important}
#webcamPanel #facePreview{position:static!important;display:block;width:100%!important;max-width:100%!important;height:auto!important;max-height:230px!important;aspect-ratio:4/3;object-fit:cover;transform:scaleX(-1);border-radius:7px;z-index:auto;pointer-events:auto}
#webcamPanel .webcam-actions{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
#webcamPanel .webcam-actions button{min-width:0!important;min-height:38px!important;padding:4px!important;font-size:11px!important;white-space:nowrap!important}
#webcamPanel [aria-pressed="true"]{background:#256e5f!important;color:#fff!important;border:2px solid #7ce0b5!important}
#webcamPanel #webcamStatus{font-size:10px!important;color:var(--ui-fg);opacity:.82}
#toolboxActions #webcamButton[aria-pressed="true"]{background:#256e5f!important;border:2px solid #7ce0b5!important;color:#fff!important}
@media(max-width:750px){#chatPanel:not(.windowed){top:90px!important;bottom:0!important}#chatPanel .chat-composer{max-width:calc(100vw - 10px)!important}#chatPanel .chat-composer.composer-floating{max-width:calc(100vw - 10px)!important}#scenePanel:not(.minimized){max-height:min(62svh,540px)!important}}
/* Never resurrect hidden controls through the icon system's display!important rules. */
#chatPanel[hidden],#scenePanel[hidden],#propertiesPanel[hidden],#addMenu[hidden],#webcamPanel[hidden],
#toolboxActions #faceButton[hidden],#toolboxActions #poseButton[hidden],#chatPanel .composer-actions .media-tool[hidden]{display:none!important}
/* The overlay chat mode switch must not overlap the mobile composer. */
@media(max-width:750px){#chatModeButton.bottom-chat-mode{bottom:calc(205px + env(safe-area-inset-bottom))!important;left:8px!important;max-height:36px!important;min-height:34px!important}}
/* Compact, single-line World tools labels. No fixed 116px bottleneck. */
#editorToolbox.editor-toolbox:not(.minimized){width:176px!important;max-width:min(176px,calc(100vw - 16px))!important;padding:6px!important}
#editorToolbox.editor-toolbox.minimized{width:102px!important;max-width:102px!important}
#editorToolbox .toolbox-actions{min-width:0!important;gap:4px!important}
#editorToolbox .toolbox-actions>button{min-width:0!important;width:100%!important;min-height:34px!important;max-height:40px!important;padding:5px 7px!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;overflow-wrap:normal!important;justify-content:flex-start!important}
#editorToolbox .toolbox-actions>button .ui-button-label{min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;display:block!important}
@media(max-width:750px){#editorToolbox.editor-toolbox:not(.minimized){width:176px!important;max-width:min(176px,calc(100vw - 16px))!important}#editorToolbox.editor-toolbox.minimized{width:102px!important;max-width:102px!important}}

/* v0.2.32: compact functional chrome, not scaled cards. */
#scenePanel>.panel-title,#editorToolbox>.toolbox-title{display:flex!important;align-items:center!important;gap:5px!important;padding:5px 8px!important;min-height:42px!important}
#scenePanel>.panel-title>strong,#editorToolbox>.toolbox-title>strong{white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;word-break:keep-all!important;overflow-wrap:normal!important;min-width:0!important;flex:1 1 auto;font-size:14px!important;line-height:1.2!important}
#scenePanel #minimizeScenePanel{margin-left:auto!important}
#scenePanel #minimizeScenePanel,#scenePanel #closeScenePanel{flex:0 0 30px!important;width:30px!important;min-width:30px!important;max-width:30px!important;height:30px!important;min-height:30px!important;max-height:30px!important;padding:6px!important}
#scenePanel.minimized{width:174px!important;min-width:174px!important;max-width:174px!important}
#editorToolbox.editor-toolbox.minimized{width:178px!important;min-width:178px!important;max-width:178px!important}
#editorToolbox.editor-toolbox.minimized .toolbox-title{min-width:0!important}
#editorToolbox .toolbox-title #toolboxMinimize{margin-left:auto!important;flex:0 0 30px!important;width:30px!important;height:30px!important;min-width:30px!important;min-height:30px!important;max-width:30px!important;max-height:30px!important;padding:6px!important}
#scenePanel .scene-filter-row{display:flex!important;align-items:center!important;gap:5px!important;flex-wrap:nowrap!important}
#scenePanel #sceneBulkToggle{flex:0 0 44px!important;min-width:44px!important;max-width:44px!important;min-height:30px!important;height:30px!important;padding:3px!important;font-size:11px!important}
#scenePanel.bulk-mode #sceneBulkToggle{background:var(--solvi-accent)!important;color:#101e2b!important}
#scenePanel #sceneObjectSearch{flex:1 1 auto!important;width:0!important;min-width:0!important}
#scenePanel #sceneObjectFilter{flex:0 0 70px!important;width:70px!important;min-width:70px!important;max-width:70px!important}
#scenePanel #sceneBulkRow[hidden]{display:none!important}
#scenePanel #sceneBulkRow{display:flex!important;flex-wrap:nowrap!important;align-items:center!important;gap:4px!important;min-width:0!important;padding:0!important}
#scenePanel #sceneBulkRow label{flex:1 1 auto!important;min-width:0!important;margin:0!important;white-space:nowrap!important;font-size:10px!important}
#scenePanel #sceneBulkRow button{flex:0 0 auto!important;font-size:10px!important;min-height:29px!important;padding:3px 5px!important;white-space:nowrap!important}
#sceneItems .scene-item-row{gap:4px!important}
#sceneItems .scene-row-check{margin:0 3px 0 0!important}
/* Inspector XYZ: one shared reset per vector, one contextual range. */
.properties-panel{width:min(372px,calc(100vw - 12px))!important;max-height:78svh!important}
.properties-panel #propertyGrid.property-grid{gap:5px!important}
.properties-panel .transform-group{margin:2px 0!important;padding:5px 7px 7px!important;min-width:0!important}
.properties-panel .transform-axis-row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr)) 29px!important;gap:5px!important;align-items:end!important;min-width:0!important}
.properties-panel .axis-value{display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:2px!important;min-width:0!important;margin:0!important;font-size:11px!important;line-height:1.1!important}
.properties-panel .axis-value input[type=number]{box-sizing:border-box!important;width:100%!important;min-width:0!important;height:31px!important;min-height:31px!important;max-height:31px!important;font-size:12px!important;text-align:center!important;padding:3px!important;font-variant-numeric:tabular-nums}
.properties-panel .transform-axis-row .transform-reset{width:29px!important;min-width:29px!important;max-width:29px!important;height:31px!important;min-height:31px!important;max-height:31px!important;padding:6px!important;align-self:end!important}
.properties-panel .transform-axis-row .transform-reset::before{width:15px!important;height:15px!important;flex-basis:15px!important}
.properties-panel #objectInspector .transform-modes{gap:4px!important}
.properties-panel #objectInspector .transform-modes button{min-height:32px!important;max-height:34px!important;padding:5px!important}
.properties-panel #objectInspector .object-actions{margin:2px 0!important}
.properties-panel #objectInspector .object-rename input{min-height:32px!important;height:32px!important}
#robotControls .robot-speed-legacy[hidden]{display:none!important}
#robotControls .robot-speed-single{display:flex!important;align-items:center!important;gap:5px!important;flex-wrap:nowrap!important;max-width:100%!important;margin:5px 0!important}
#robotControls #robotSpeedKind{width:74px!important;min-width:74px!important;max-width:74px!important;flex:0 0 74px!important;height:31px!important;min-height:31px!important;font-size:11px!important;padding:3px!important}
#robotControls #robotSpeedActive{flex:1 1 auto!important;min-width:40px!important;width:0!important}
#robotControls #robotSpeedActiveValue{min-width:43px!important;flex:0 0 43px!important;font-size:11px!important;text-align:right!important}
/* Shared visually-consistent sliders, native range remains fully interactive. */
:is(#robotSpeedActive,#inspectorActiveRange,#cameraSpeed,#chaseDistanceSlider,#uiSizeRange,input[type=range]){accent-color:var(--solvi-accent);height:24px!important;min-height:24px!important;cursor:pointer}
:is(#robotSpeedActive,#inspectorActiveRange,#cameraSpeed,#chaseDistanceSlider,#uiSizeRange,input[type=range])::-webkit-slider-runnable-track{height:5px;border-radius:2px;background:color-mix(in srgb,var(--ui-fg) 28%,var(--ui-bg))}
:is(#robotSpeedActive,#inspectorActiveRange,#cameraSpeed,#chaseDistanceSlider,#uiSizeRange,input[type=range])::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;margin-top:-6px;border:2px solid var(--ui-panel);border-radius:3px;width:16px;height:17px;background:var(--solvi-accent)}
:is(#robotSpeedActive,#inspectorActiveRange,#cameraSpeed,#chaseDistanceSlider,#uiSizeRange,input[type=range])::-moz-range-track{height:5px;border-radius:2px;background:color-mix(in srgb,var(--ui-fg) 28%,var(--ui-bg))}
:is(#robotSpeedActive,#inspectorActiveRange,#cameraSpeed,#chaseDistanceSlider,#uiSizeRange,input[type=range])::-moz-range-thumb{border:2px solid var(--ui-panel);border-radius:3px;width:16px;height:17px;background:var(--solvi-accent)}
#chatPanel #composerMove{flex:1 1 auto!important;min-width:0!important;text-align:left!important;cursor:grab!important;touch-action:none!important;user-select:none!important}
#chatPanel #composerMove:active{cursor:grabbing!important}
#chatPanel #composerMinimize,#chatPanel #composerFloat{flex:0 0 28px!important;width:28px!important;min-width:28px!important;max-width:28px!important;height:26px!important;min-height:26px!important;max-height:26px!important;padding:5px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important}
#chatPanel .chat-composer.composer-floating{z-index:550!important;will-change:left,top}
#chatPanel .chat-composer .composer-window-head button::before{width:15px!important;height:15px!important;flex:0 0 15px!important}
#chatPanel #attachmentButton::before{width:17px!important;height:17px!important}
@media(max-width:750px){.properties-panel{width:min(354px,calc(100vw - 12px))!important}#scenePanel.minimized{width:164px!important;min-width:164px!important;max-width:164px!important}#editorToolbox.editor-toolbox.minimized{width:166px!important;min-width:166px!important;max-width:166px!important}}

/* v0.2.33 — profile camera and draggable top-down minimap */
#quickModelImport{display:none!important}
#minimapButton{order:91!important;position:relative;flex-shrink:0}
.topbar #toolNav #minimapButton{min-height:34px!important;max-height:40px!important;white-space:nowrap!important}
@media(max-width:750px){
 #toolNav>#minimapButton,#toolNav.nav-expanded>#minimapButton{display:inline-flex!important;order:3!important}
 #toolNav #mobileMenuButton{order:2!important}
 #toolNav #settingsButton{order:4!important}
 #toolNav #profileButton{order:5!important}
}
.minimap-panel{position:fixed;z-index:22;top:76px;right:16px;width:252px;max-width:calc(100vw - 24px);background:var(--ui-panel,#102536);color:var(--ui-fg,#e8f4ff);border:1px solid #5b7888;border-radius:12px;box-shadow:0 12px 40px #0009;overflow:hidden;pointer-events:auto}
.minimap-panel[hidden],.minimap-body[hidden]{display:none!important}
.minimap-header{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:37px;padding:4px 7px 4px 12px;user-select:none;cursor:grab;touch-action:none;border-bottom:1px solid #456078}
.minimap-header:active{cursor:grabbing}
.minimap-header strong{font-size:13px;letter-spacing:.01em}
.minimap-header-actions{display:flex;gap:5px}
.minimap-header-actions button{display:grid;place-items:center;min-width:32px!important;width:32px!important;height:32px!important;max-height:32px!important;padding:0!important;border:1px solid #567187;border-radius:7px;font:20px system-ui;background:#18364b;color:#f4f7ff}
.minimap-body{padding:7px}
#minimapCanvas{width:100%;height:auto;aspect-ratio:1;display:block;border:1px solid #3e637a;border-radius:5px;background:#101e2d;cursor:grab;touch-action:none}
.minimap-foot{display:flex;align-items:center;justify-content:space-between;gap:7px;margin:5px 1px 0;font-size:10px;color:var(--ui-muted,#aabed2)}
#minimapReset{min-height:29px!important;padding:3px 8px!important;font-size:11px!important}
.profile-modal .profile-title{gap:8px}
.profile-identity-row{display:flex;align-items:center;gap:12px;min-width:0}
.profile-identity-row strong{display:block;font-size:18px!important;line-height:1.25;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:250px}
.profile-identity-row small{font-size:11px;color:var(--ui-muted,#9eb3ca)}
.profile-identity-row #profilePhotoBadge{width:52px!important;height:52px!important;min-width:52px!important;min-height:52px!important;max-width:52px!important;padding:0!important;border-radius:50%!important;overflow:hidden!important;font-weight:700;display:grid;place-items:center}
#profilePhotoBadge img{width:100%;height:100%;object-fit:cover;display:block;border-radius:50%}
.profile-capture-actions{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0 8px}
.profile-capture-actions button{padding:7px 11px!important;font-size:12px!important;min-height:36px!important;white-space:nowrap}
#profileCameraPreview{display:block;width:100%;max-height:250px;aspect-ratio:4/3;object-fit:cover;background:#0b1423;border-radius:9px;border:1px solid #526c81}
#profileCameraPreview[hidden]{display:none!important}
.profile-camera-controls{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:5px 0;font-size:12px}
.profile-camera-controls[hidden]{display:none!important}
.profile-camera-controls button{font-size:11px!important;padding:5px 9px!important;min-height:32px!important}
#introPreview{display:block;max-height:160px!important;max-width:100%!important;border:1px solid #526b80}
#introPreview[hidden]{display:none!important}
#profileLogout{margin-right:auto;color:#ffe2e2;border-color:#8e4b5c}
.profile-modal .panel-footer{flex-wrap:wrap;row-gap:7px}
@media(max-width:420px){.minimap-panel{width:min(252px,calc(100vw - 20px))}.profile-identity-row strong{font-size:16px!important;max-width:180px}}
/* Keep the minimap launcher present in the compact navigation, outside More. */
html body .topbar #toolNav > button#minimapButton{display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;width:auto!important;max-width:80px!important;}
@media(max-width:750px){html body .topbar #toolNav > button#minimapButton{width:40px!important;max-width:40px!important;min-width:40px!important;padding:0!important;}}
#minimapButton::before{content:'';display:inline-block;flex:0 0 18px;width:18px;height:18px;background:url('./assets/ui-icons/map.svg') center/contain no-repeat}
@media(max-width:750px){html body .topbar #toolNav #minimapButton{font-size:0!important;gap:0!important}}

/* v0.2.34 — restore scene pointer navigation; remove orphaned corner controls. */
#chatPanel:not(.windowed),#chatPanel:not(.windowed) .chat-feed{pointer-events:none!important}
#chatPanel:not(.windowed) .chat-row,#chatPanel:not(.windowed) .chat-row *,
#chatPanel:not(.windowed) .chat-composer,#chatPanel:not(.windowed) .chat-composer *,
#chatPanel:not(.windowed) > .panel-title,#chatPanel:not(.windowed) > .panel-title *{pointer-events:auto!important}
#editorToolbox[hidden],#scenePanel[hidden],#editorToolbox.minimized,#scenePanel.minimized{display:none!important}
#toolNav #toolsToggleButton{display:inline-flex!important;align-items:center!important;justify-content:center!important;white-space:nowrap!important;min-width:38px!important;height:38px!important;max-height:40px!important;padding:5px 9px!important}
#toolNav #toolsToggleButton[aria-expanded="true"]{border-color:var(--solvi-accent)!important;background:color-mix(in srgb,var(--solvi-accent) 20%,var(--ui-panel))!important}
@media(max-width:750px){
 html body .topbar #toolNav>button#toolsToggleButton{display:inline-flex!important;order:3!important;flex:0 0 40px!important;min-width:40px!important;width:40px!important;padding:0!important;font-size:0!important;gap:0!important}
 html body .topbar #toolNav>button#minimapButton{order:4!important}
 html body .topbar #toolNav>button#settingsButton{order:5!important}
 html body .topbar #toolNav>button#profileButton{order:6!important}
}
/* Beat the legacy #toolNav>:not(...) responsive visibility lists. */
html body .topbar #toolNav > button#toolsToggleButton{display:inline-flex!important;align-items:center!important;justify-content:center!important}

/* 0.2.35: Webcam is a first-class navigation control, including on phones. */
@media(max-width:750px){
 #toolNav>#webcamButton{display:inline-flex!important;order:3!important;min-width:40px!important;min-height:40px!important;max-height:44px!important;flex:none!important;}
 #toolNav>#webcamButton .ui-button-label{white-space:nowrap!important;}
 #toolNav>#mobileMenuButton{order:4!important}
 #toolNav>#settingsButton{order:5!important}
 #toolNav>#profileButton{order:6!important}
}
#webcamButton[aria-pressed="true"]{box-shadow:inset 0 0 0 2px var(--solvi-accent)!important}
#saveRobotChatPortrait,#captureAvatarHeadshot{white-space:nowrap;max-width:100%;}

/* Discoverable camera entry on all screen widths; earlier nav exclusion rules are overridden. */
#toolNav>#webcamButton{display:inline-flex!important;align-items:center!important;gap:6px!important;white-space:nowrap!important;}
.chat-avatar[role="button"]{cursor:pointer;}
.chat-avatar[role="button"]:focus-visible{outline:3px solid var(--solvi-accent);outline-offset:3px;}

/* v0.2.36 — one accessible webcam control, at the trailing end of the draggable Message header. */
#chatPanel .composer-window-head #webcamButton{display:inline-flex!important;justify-content:center!important;align-items:center!important;flex:0 0 28px!important;width:28px!important;min-width:28px!important;max-width:28px!important;height:28px!important;min-height:28px!important;max-height:28px!important;padding:4px!important;border-radius:7px!important;line-height:1!important;font-size:0!important;white-space:nowrap!important;gap:0!important}
#chatPanel .composer-window-head #webcamButton::before{display:block!important;flex:0 0 17px!important;width:17px!important;height:17px!important}
#chatPanel .composer-window-head #webcamButton[aria-pressed="true"]{border-color:#64dbb0!important;background:color-mix(in srgb,#64dbb0 22%,var(--ui-panel,#152a3c))!important}
#chatPanel .composer-window-head #webcamButton:focus-visible{outline:2px solid var(--solvi-accent)!important;outline-offset:2px!important}
@media(max-width:750px){#chatPanel .composer-window-head #webcamButton{flex-basis:36px!important;width:36px!important;min-width:36px!important;max-width:36px!important;height:36px!important;min-height:36px!important;max-height:36px!important}}

/* v0.2.38 — always-visible push-to-toggle speech captions, placed just before Send.
   Do not inherit the hidden .media-tool/More-menu rules. */
#chatPanel .composer-actions #captionsButton.cc-direct-toggle{
 display:inline-flex!important;order:8!important;align-items:center!important;
 justify-content:center!important;flex:0 0 auto!important;
 gap:7px!important;white-space:nowrap!important;
 min-height:34px!important;height:34px!important;max-height:38px!important;
 min-width:72px!important;width:auto!important;
 padding:4px 9px!important;margin:0 5px 0 auto!important;
 font-size:12px!important;line-height:1.1!important;
 border:1px solid var(--ui-border,#667e90)!important;border-radius:7px!important;
}
#chatPanel .composer-actions #sendChat{
 order:9!important;flex:0 0 auto!important;margin-left:0!important;
 min-height:34px!important;height:34px!important;white-space:nowrap!important;
}
#chatPanel .composer-actions #captionsButton[data-cc-state="listening"],
#chatPanel .composer-actions #captionsButton[data-cc-state="sending"],
#chatPanel .composer-actions #captionsButton[data-cc-state="transcribing"]{
 border-color:#67e0b3!important;background:#235a46!important;color:#fff!important;
}
#chatPanel .composer-actions #captionsButton[data-cc-state="error"]{
 border-color:#fa8585!important;background:#592d39!important;color:#fff!important;
}
#chatPanel .composer-actions #captionsButton:focus-visible{
 outline:3px solid #d8f1ff!important;outline-offset:2px!important;
}
#chatPanel .composer-actions #captionsButton::before{
 width:16px!important;height:16px!important;flex:0 0 16px!important;
}
@media(max-width:750px){
 #chatPanel .composer-actions #captionsButton.cc-direct-toggle{
   min-width:72px!important;min-height:44px!important;height:44px!important;
   padding:6px 9px!important;font-size:12px!important;margin-right:4px!important;
 }
 #chatPanel .composer-actions #sendChat{min-height:44px!important;height:44px!important;}
}

/* Keep the CC on/off label visible even when the global phone button mode is icons-only. */
html[data-button-labels='icon'] #chatPanel #captionsButton .ui-button-label{
 display:inline-block!important;white-space:nowrap!important;
}

/* v0.2.39: small, accessible robot voice controls; use native select widgets. */
.brain-voice-config{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px 0;align-items:end}
.brain-voice-config .field-label{min-width:0;margin:0}
.brain-voice-config select,.brain-voice-config input{max-width:100%;min-width:0}
.brain-voice-config .brain-voice-values{display:flex;gap:8px;align-items:center}
.brain-voice-values label{display:flex;align-items:center;gap:5px;min-width:0}
.brain-voice-values input{width:65px}
#robotVoiceStatus{overflow-wrap:anywhere}
@media(max-width:520px){.brain-voice-config{grid-template-columns:minmax(0,1fr)}}
/* Group head-camera scan frames as an inspectable, compact filmstrip. */
.chat-media-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:4px;max-width:min(420px,100%);margin-top:7px}
.chat-media-grid .chat-attachment{min-width:0;aspect-ratio:1;overflow:hidden;border-radius:6px;background:rgba(0,0,0,.2)}
.chat-media-grid .chat-attachment img{width:100%;height:100%;max-height:none;object-fit:cover;cursor:zoom-in}
@media(max-width:600px){.chat-media-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.2.43 — voice assignment belongs to the selected robot's Properties, not Brains. */
#robotControls .robot-voice-properties{margin:9px 0 10px;border:1px solid color-mix(in srgb,var(--ui-fg) 25%,transparent);border-radius:9px;padding:7px 9px;min-width:0}
#robotControls #robotVoiceDetails summary{cursor:pointer;font-size:calc(12px * var(--ui-scale));font-weight:550;line-height:1.45}
#robotControls .robot-voice-help{margin:6px 0!important;line-height:1.35!important}
#robotControls .brain-voice-config{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;min-width:0;padding:8px 0 0}
#robotControls .brain-voice-config .field-label{min-width:0;margin:0!important;display:flex;flex-direction:column;gap:3px}
#robotControls .brain-voice-config :is(#robotLocalVoicesRow,#robotCloudVoicesRow,#robotVoiceIdRow,#loadElevenVoices,#robotVoiceStatus,.robot-voice-actions){grid-column:1/-1}
#robotControls .brain-voice-config :is(select,input){width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;min-height:32px!important}
#robotControls .robot-voice-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
#robotControls .robot-voice-actions button{flex:1;min-width:100px}
#robotControls #robotVoiceStatus{display:block;line-height:1.4;white-space:normal;font-size:11px!important}
#robotControls #robotLocalVoicesRow[hidden],#robotControls #robotCloudVoicesRow[hidden],#robotControls #robotVoiceIdRow[hidden],#robotControls #loadElevenVoices[hidden]{display:none!important}
@media(max-width:420px){#robotControls .brain-voice-config{grid-template-columns:minmax(0,1fr)}}


/* v0.2.44 compact scene editor: minimum space, reliable XYZ grid, full-width slider. */
#propertiesPanel.properties-panel{width:min(342px,calc(100vw - 12px))!important;max-height:74svh!important;overflow-x:hidden!important}
#propertiesPanel .panel-title{min-height:35px!important;padding:5px 7px!important}
#propertiesPanel #objectInspector{box-sizing:border-box!important;padding:5px 7px 7px!important;min-width:0!important;overflow-x:hidden!important}
#propertiesPanel #objectInspector>*{min-width:0!important;max-width:100%!important;box-sizing:border-box!important}
#propertiesPanel #objectInspector .object-rename{margin:0 0 3px!important}
#propertiesPanel #objectInspector .object-rename input{height:29px!important;min-height:29px!important}
#propertiesPanel #objectInspector .object-actions{margin:0!important;display:flex!important;justify-content:flex-end!important}
#propertiesPanel #objectInspector .object-actions #deleteObject{height:27px!important;min-height:27px!important;min-width:34px!important;padding:3px 5px!important}
#propertiesPanel .transform-modes{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:3px!important;margin:3px 0!important}
#propertiesPanel #objectInspector .transform-modes button[data-ui-icon]{min-width:0!important;max-width:none!important;flex:1 1 0!important;height:30px!important;min-height:30px!important;max-height:30px!important;padding:3px 4px!important;box-sizing:border-box!important}
html[data-button-labels='icon'] #propertiesPanel #objectInspector .transform-modes button[data-ui-icon]{font-size:0!important;min-width:0!important;width:100%!important;min-height:30px!important;height:30px!important;max-height:30px!important;padding:4px!important}
html[data-button-labels='icon'] #propertiesPanel #objectInspector .transform-modes button[data-ui-icon]>.ui-button-label{display:none!important}
html[data-button-labels='icon'] #propertiesPanel #objectInspector .transform-modes button[data-ui-icon]::before{display:inline-block!important;width:19px!important;height:19px!important;flex:0 0 19px!important}
#propertiesPanel #robotTransformDetails{border:0!important;min-width:0!important;padding:0!important;margin:3px 0!important}
#propertiesPanel #robotTransformDetails>summary{padding:4px 3px!important;cursor:pointer!important;font-weight:700!important;font-size:12px!important;line-height:1.2!important}
#propertiesPanel #robotTransformDetails>.inspector-fold-body{display:block!important;min-width:0!important;padding:0!important}
#propertiesPanel #propertyGrid.property-grid{display:flex!important;flex-direction:column!important;gap:2px!important;margin:0!important;min-width:0!important}
#propertiesPanel #propertyGrid .transform-group{margin:0!important;border:0!important;border-top:1px solid color-mix(in srgb,var(--ui-fg) 20%,transparent)!important;border-radius:0!important;padding:2px 0 3px!important;min-width:0!important}
#propertiesPanel #propertyGrid .transform-group legend{padding:0 3px!important;font-size:11px!important;line-height:1.2!important}
#propertiesPanel #propertyGrid .transform-axis-row{box-sizing:border-box!important;display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr)) 28px!important;column-gap:4px!important;align-items:end!important;width:100%!important;min-width:0!important}
#propertiesPanel #propertyGrid .axis-value{min-width:0!important;gap:0!important;line-height:1!important}
#propertiesPanel #propertyGrid .axis-value input[type=number]{width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;min-height:28px!important;height:28px!important;max-height:28px!important;padding:2px 3px!important;font-size:12px!important;text-align:center!important;appearance:textfield!important;-moz-appearance:textfield!important}
#propertiesPanel #propertyGrid .axis-value input[type=number]::-webkit-outer-spin-button,#propertiesPanel #propertyGrid .axis-value input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none!important;margin:0!important}
#propertiesPanel #propertyGrid button.transform-reset[data-ui-icon],html[data-button-labels='icon'] #propertiesPanel #propertyGrid button.transform-reset[data-ui-icon]{display:inline-flex!important;min-width:28px!important;width:28px!important;max-width:28px!important;flex:0 0 28px!important;min-height:28px!important;height:28px!important;max-height:28px!important;padding:4px!important;box-sizing:border-box!important}
#propertiesPanel #propertyGrid button.transform-reset::before{width:16px!important;height:16px!important;flex:0 0 16px!important}
#propertiesPanel #inspectorValueSlider.inspector-value-slider{display:block;box-sizing:border-box!important;width:100%!important;max-width:100%!important;min-width:0!important;padding:2px 0 5px!important;margin:2px 0 0!important;background:none!important;border:0!important;border-radius:0!important}
#propertiesPanel #inspectorValueSlider[hidden]{display:none!important}
#propertiesPanel #inspectorValueSlider #inspectorActiveRange{display:block!important;box-sizing:border-box!important;width:100%!important;min-width:0!important;max-width:100%!important;margin:0!important}
#propertiesPanel #inspectorValueSlider .inspector-slider-head{font-size:11px!important;margin:0!important}
#propertiesPanel #robotControls{min-width:0!important}
#propertiesPanel #robotControls>strong{display:block!important;font-size:12px!important;margin:3px 0 0!important}
#propertiesPanel #robotControls .robot-speed-single{margin:2px 0!important}
#propertiesPanel #robotControls .robot-voice-properties{margin:3px 0!important;border:0!important;border-top:1px solid color-mix(in srgb,var(--ui-fg) 20%,transparent)!important;border-radius:0!important;padding:2px 0!important}
#propertiesPanel #robotControls .brain-voice-config{padding:2px 0!important;gap:4px!important}
#propertiesPanel #robotControls .robot-voice-actions button{min-height:30px!important;height:30px!important;padding:3px 5px!important}
#propertiesPanel #robotControls .robot-voice-properties summary,#propertiesPanel #robotEyesDetails summary{font-size:12px!important;cursor:pointer!important;line-height:1.2!important;padding:5px 2px!important}
#propertiesPanel #robotEyesDetails{border-top:1px solid color-mix(in srgb,var(--ui-fg) 20%,transparent)!important;padding:0!important;margin:2px 0!important}
#propertiesPanel #robotEyesDetails .inspector-eye-buttons{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:4px!important;margin:2px 0 4px!important}
#propertiesPanel #robotEyesDetails button{min-width:0!important;min-height:30px!important;height:30px!important;padding:3px!important}
#propertiesPanel #robotControls #openRobotBrains{width:34px!important;min-width:34px!important;max-width:34px!important;height:31px!important;min-height:31px!important;padding:5px!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;font-size:0!important}
#propertiesPanel #robotControls #openRobotBrains .ui-button-label{display:none!important}
#propertiesPanel #robotControls #openRobotBrains::before{content:''!important;display:block!important;width:19px!important;height:19px!important;background:var(--ui-button-icon) center/contain no-repeat!important;filter:var(--ui-icon-filter)}
#propertiesPanel #robotControls>.field-label{margin:2px 0!important;gap:2px!important}
#propertiesPanel #robotControls :is(#robotAvatar,#robotActionSelect){width:100%!important;min-height:27px!important;height:27px!important;box-sizing:border-box!important;margin:1px 0!important}
#propertiesPanel #robotControls #openAvatarGallery{min-height:29px!important;height:29px!important;padding:4px!important}
/* Compact actual settings checkbox rows. Override the long-standing global label spacing. */
#settingsDrawer .settings-section label.toggle-line{box-sizing:border-box!important;display:flex!important;align-items:center!important;gap:7px!important;padding:2px 3px!important;margin:0!important;min-height:25px!important;max-height:none!important;line-height:1.15!important;font-size:13px!important}
#settingsDrawer .settings-section label.toggle-line input[type=checkbox]{box-sizing:border-box!important;width:16px!important;height:16px!important;min-width:16px!important;min-height:16px!important;max-height:16px!important;margin:0!important;flex:0 0 16px!important}
#settingsDrawer .settings-section[open]>summary{padding:6px 9px!important;margin-bottom:3px!important}
#settingsDrawer .settings-section[open]>:not(summary){margin-top:2px!important;margin-bottom:3px!important}

/* Real stitched head-camera panoramas retain their wide, intrinsic aspect ratio. */
#robotBrainsPanel #brainsEyeStage.panorama #brainsEyeImage{aspect-ratio:auto!important;object-fit:contain!important}
#robotBrainsPanel .brains-frame-card.panorama-frame-card{flex-basis:220px;min-width:220px}
#robotBrainsPanel .brains-frame-card.panorama-frame-card img{aspect-ratio:3/1;object-fit:contain}
#brainsEyeLightbox #brainsEyeLarge{aspect-ratio:auto;max-width:94vw}

/* Compact, responsive shared environment controls. */
#worldSettingsDrawer .drawer{width:min(460px,100vw)!important;gap:6px!important}
#worldSettingsDrawer .world-environment-folder{border:1px solid color-mix(in srgb,var(--ui-fg) 24%,transparent);border-radius:9px;padding:5px 9px;min-width:0}
#worldSettingsDrawer .world-environment-folder>summary{cursor:pointer;font-weight:700;padding:5px 0}
#worldSettingsDrawer .world-env-toggles{display:flex;gap:18px;padding:4px 0}
#worldSettingsDrawer .world-env-toggles label{display:flex;align-items:center;gap:5px}
#worldSettingsDrawer .world-env-toggles input{width:17px;height:17px;margin:0}
#worldSettingsDrawer .world-env-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 12px}
#worldSettingsDrawer .world-env-fields label{min-width:0;display:flex;flex-direction:column;gap:3px;font-size:12px;line-height:1.25}
#worldSettingsDrawer .world-env-fields input:not([type=color]),#worldSettingsDrawer .world-env-fields select{box-sizing:border-box;min-width:0;max-width:100%;width:100%;margin:0;min-height:29px!important;padding:4px 5px}
#worldSettingsDrawer .world-env-fields input[type=color]{box-sizing:border-box;display:block;width:100%;height:31px;min-height:31px;padding:1px 2px}
#worldSettingsDrawer .world-env-fields input[type=range]{padding:0;accent-color:var(--solvi-accent)}
#worldSettingsDrawer .world-environment-actions{display:flex;gap:7px;justify-content:flex-end;margin-top:8px}
@media(max-width:440px){#worldSettingsDrawer .drawer{width:100vw!important;padding:10px 12px!important}}

/* v0.2.49: compact per-object transform lock immediately before the trash button. */
#sceneItems .scene-item-row>button.scene-item-name,
html[data-button-labels='icon'] #sceneItems .scene-item-row>button.scene-item-name[data-ui-icon]{flex:1 1 0!important;min-width:0!important;width:0!important;max-width:none!important;overflow:hidden!important;text-overflow:ellipsis!important;justify-content:flex-start!important}
#sceneItems .scene-item-row>button.scene-item-lock,
html[data-button-labels='icon'] #sceneItems .scene-item-row>button.scene-item-lock[data-ui-icon]{display:inline-flex!important;flex:0 0 34px!important;width:34px!important;min-width:34px!important;max-width:34px!important;height:36px!important;min-height:36px!important;max-height:36px!important;padding:7px!important;align-items:center!important;justify-content:center!important;gap:0!important;font-size:0!important;border-radius:7px!important}
#sceneItems .scene-item-row>button.scene-item-lock::before,
html[data-button-labels='icon'] #sceneItems .scene-item-row>button.scene-item-lock::before,
html[data-button-labels='text'] #sceneItems .scene-item-row>button.scene-item-lock::before{display:inline-block!important;width:19px!important;height:19px!important;flex:0 0 19px!important}
#sceneItems .scene-item-row>button.scene-item-lock[data-locked='true']{box-shadow:inset 0 0 0 2px var(--solvi-accent,#6bdbe6)!important;background:color-mix(in srgb,var(--solvi-accent,#6bdbe6) 28%,#102b3b)!important}
#sceneItems .scene-item-row>button.scene-item-lock:disabled{opacity:.45;cursor:not-allowed}
#sceneItems .scene-item-row{min-width:0!important;gap:4px!important}

/* v0.2.51 — shared 3D asset library and per-object replacement. */
#assetGalleryBackdrop{z-index:140!important}
#assetGalleryBackdrop .asset-gallery{width:min(810px,96vw)!important;max-height:85svh!important;min-width:0}
#assetGalleryBackdrop .asset-gallery-actions{display:flex;gap:6px;align-items:center;margin:4px 0 7px}
#assetGalleryBackdrop #assetGallerySearch{min-width:0;flex:1;padding:7px;border-radius:7px;background:var(--ui-bg,#0f1929);color:var(--ui-fg,#fff);border:1px solid #4a6477}
#assetGalleryBackdrop .avatar-gallery-grid{min-height:95px;grid-template-columns:repeat(auto-fill,minmax(130px,1fr))}
#assetGalleryBackdrop .asset-card{position:relative;display:flex!important;flex-direction:column!important;min-width:0!important;overflow:hidden;border-radius:9px;padding:4px!important;min-height:0!important;text-align:left;gap:4px}
#assetGalleryBackdrop .asset-card .asset-preview{aspect-ratio:1.35;display:flex;justify-content:center;align-items:center;border-radius:6px;background:#091523;overflow:hidden;width:100%;color:#94aabf;font-size:11px}
#assetGalleryBackdrop .asset-card .asset-preview :is(canvas,img){width:100%;height:100%;display:block;object-fit:contain}
#assetGalleryBackdrop .asset-card strong{font-size:12px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
#assetGalleryBackdrop .asset-card small{font-size:10px;opacity:.75}
#propertiesPanel #objectInspector .object-actions{display:flex!important;gap:4px!important;flex-wrap:wrap;justify-content:flex-end!important}
#propertiesPanel #objectInspector .object-actions :is(#replaceModelFile,#replaceModelGallery){height:27px!important;min-height:27px!important;padding:3px 5px!important;font-size:11px!important;width:auto!important;min-width:37px!important}
@media(max-width:480px){#assetGalleryBackdrop .avatar-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.2.52: keep autosave state visible even when world appearance has many controls. */
#worldSettingsDrawer #worldSettingsStatus{position:sticky;top:0;z-index:1;display:block;min-height:21px;padding:3px 5px;margin:0;background:var(--ui-panel);color:var(--ui-fg);border-bottom:1px solid color-mix(in srgb,var(--ui-fg) 16%,transparent)}

/* v0.2.53 — compact inspector, safe uploads, consistent header/actions */
#propertiesPanel #propertyGrid .transform-axis-row{
 display:grid!important;grid-template-columns:repeat(3,minmax(0,70px)) 28px!important;
 column-gap:5px!important;justify-content:start!important;align-items:end!important;
}
#propertiesPanel #propertyGrid .axis-value{max-width:70px!important;font-size:10px!important}
#propertiesPanel #propertyGrid .axis-value input[type=number]{
 width:70px!important;min-width:0!important;max-width:70px!important;
 padding:2px 4px!important;letter-spacing:0!important;font-variant-numeric:tabular-nums!important;
}
#propertiesPanel #propertyGrid .transform-group{padding:2px 0!important}
#propertiesPanel #inspectorValueSlider.inspector-value-slider{
 width:100%!important;max-width:none!important;min-width:0!important;
 grid-column:1/-1!important;flex:1 1 100%!important;box-sizing:border-box!important;
}
#propertiesPanel #inspectorValueSlider #inspectorActiveRange{width:100%!important;max-width:100%!important;display:block!important}
@media(max-width:330px){#propertiesPanel #propertyGrid .transform-axis-row{grid-template-columns:repeat(3,minmax(0,1fr)) 28px!important}}

/* Drag-drop must be cancelable even when the OS abandons a file drag. */
#sceneDropOverlay>div{pointer-events:auto!important;display:flex;flex-direction:column;align-items:center;gap:9px;padding:16px!important}
#sceneDropOverlay #cancelModelDrop{pointer-events:auto!important;padding:7px 14px!important;min-height:32px!important;cursor:pointer}
#sceneDropOverlay small{margin:0!important}

/* A genuine realm gallery replaces the selector. */
#toolNav #roomSelect,#toolNav #mobileMenuButton,#toolNav #createRoom,#toolNav #devLogButton{display:none!important}
html body .topbar #toolNav>#realmGalleryButton{display:inline-flex!important;order:2!important;min-width:36px!important;max-width:148px!important;white-space:nowrap!important;padding:5px 9px!important}
html body .topbar #toolNav>#devLogNavButton{display:inline-flex!important;order:5!important;align-items:center!important;justify-content:center!important;min-width:34px!important;padding:5px 8px!important}
html body .topbar #toolNav>#minimapButton{order:4!important}
html body .topbar #toolNav>#settingsButton{order:6!important}
html body .topbar #toolNav>#profileButton{order:7!important}
html body .topbar #toolNav>#toolsToggleButton{order:3!important}
#toolNav #minimapButton,#toolNav #settingsButton,#toolNav #profileButton{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:5px!important;white-space:nowrap!important}
/* In icon-and-text mode, the three utilities need visible names too. */
html[data-button-labels='both'] #toolNav #minimapButton::after{content:'Map';font-size:12px!important}
html[data-button-labels='both'] #toolNav #settingsButton::after{content:'Settings';font-size:12px!important}
html[data-button-labels='both'] #toolNav #profileButton::after{content:'Profile';font-size:12px!important}
html[data-button-labels='text'] #toolNav #minimapButton::after{content:'Map';font-size:12px!important}
html[data-button-labels='text'] #toolNav #settingsButton::after{content:'Settings';font-size:12px!important}
html[data-button-labels='text'] #toolNav #profileButton::after{content:'Profile';font-size:12px!important}
html[data-button-labels='text'] #toolNav #minimapButton::before,html[data-button-labels='text'] #toolNav #settingsButton::before{display:none!important}
html[data-button-labels='icon'] #toolNav #realmGalleryButton .ui-button-label,
html[data-button-labels='icon'] #toolNav #devLogNavButton .ui-button-label{display:none!important}
html[data-button-labels='icon'] #toolNav #realmGalleryButton,
html[data-button-labels='icon'] #toolNav #devLogNavButton{width:36px!important;min-width:36px!important;max-width:36px!important;min-height:36px!important;padding:5px!important}
html[data-button-labels='both'] #toolNav #profileButton{width:auto!important;min-width:70px!important;max-width:130px!important;padding:5px 8px!important}
html[data-button-labels='text'] #toolNav #profileButton{width:auto!important;min-width:70px!important}
@media(max-width:750px){
 html body .topbar #toolNav>#realmGalleryButton{display:inline-flex!important;order:2!important;flex:0 0 38px!important;width:38px!important;min-width:38px!important;max-width:38px!important;font-size:0!important;padding:5px!important}
 html body .topbar #toolNav>#realmGalleryButton .ui-button-label{display:none!important}
 html body .topbar #toolNav>#devLogNavButton{order:5!important;flex:0 0 38px!important;width:38px!important;min-width:38px!important;max-width:38px!important;font-size:0!important;padding:5px!important}
 html body .topbar #toolNav>#devLogNavButton .ui-button-label{display:none!important}
 html body .topbar #toolNav>#minimapButton{order:4!important;max-width:38px!important;min-width:38px!important;width:38px!important;font-size:0!important}
 html body .topbar #toolNav>#settingsButton{order:6!important;max-width:38px!important;min-width:38px!important;width:38px!important;font-size:0!important}
 html body .topbar #toolNav>#profileButton{order:7!important;max-width:38px!important;min-width:38px!important;width:38px!important;padding:3px!important;font-size:12px!important}
 #toolNav #minimapButton::after,#toolNav #settingsButton::after,#toolNav #profileButton::after{display:none!important}
}
.realm-gallery-dialog{width:min(740px,calc(100vw - 16px))!important;max-height:min(85svh,850px)!important;overflow:auto!important}
.realm-gallery-actions{display:flex;justify-content:flex-end;margin:8px 0!important}
.realm-card-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px!important;padding:8px 0 12px}
.realm-card{min-width:0!important;display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:5px!important;padding:7px!important;min-height:160px!important;text-align:left!important;border:1px solid #526c85!important;border-radius:10px!important;background:var(--ui-panel)!important;color:var(--ui-fg)!important}
.realm-card[aria-pressed='true']{outline:2px solid var(--solvi-accent)!important}
.realm-card-image{display:flex;align-items:center;justify-content:center;aspect-ratio:16/9;width:100%;overflow:hidden;border-radius:6px;background:linear-gradient(145deg,#152e47,#080d20)!important;color:#b8ccde}
.realm-card-image img{width:100%;height:100%;display:block;object-fit:cover}
.realm-card strong{font-size:13px!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.realm-card span{font-size:10px!important;color:#b8cfe0}
@media(max-width:420px){.realm-card-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px!important}.realm-card{min-height:120px!important}}

/* Composer move strip is an accessible blank drag surface, not another chat button. */
#chatPanel .composer-window-head #composerMove{
 background:transparent!important;border:0!important;box-shadow:none!important;
 color:transparent!important;font-size:0!important;min-width:24px!important;min-height:25px!important;
 padding:0!important;flex:1 1 auto!important;
}
#chatPanel .composer-window-head #composerMove::before,#chatPanel .composer-window-head #composerMove::after{display:none!important;content:none!important}
#chatPanel .composer-line #modelSelect[hidden]{display:none!important}
#chatPanel .composer-line:has(#modelSelect[hidden]){min-height:0!important;margin:0!important}
#chatPanel .composer-line:has(#modelSelect[hidden]) #composerName{display:none!important}

/* One accessible close-control size and finish across drawers, modal dialogs and floating windows. */
:is(.panel-title,.drawer-head,.overlay-head,.webcam-head,.minimap-header) > button:is([id^='close'],[id^='minimize'],[id='minimapClose']),
:is(.panel-title,.drawer-head,.overlay-head,.webcam-head,.minimap-header) :is(.minimap-header-actions)>button[id='minimapClose']{
 width:34px!important;min-width:34px!important;max-width:34px!important;height:34px!important;min-height:34px!important;max-height:34px!important;
 flex:0 0 34px!important;border-radius:8px!important;padding:6px!important;
 border:1px solid #5c7890!important;background:var(--ui-button)!important;
 align-items:center!important;justify-content:center!important;
}
#webcamButton[data-ui-icon='webcam']::before{background-image:url('./assets/ui-icons/webcam.svg')!important}

/* Diagnostics controls should not add height to the chat composer. */
#chatPanel .robot-debug-toggle{display:none!important}
#robotControls .robot-properties-debug{display:inline-flex!important;font-size:11px!important;margin:4px 0!important;line-height:1.1!important}
#robotControls .robot-properties-debug input{height:15px!important;min-height:15px!important;width:15px!important}

/* Label-bearing utility buttons must grow in icon + text mode. */
@media(min-width:751px){
 html[data-button-labels='both'] body .topbar #toolNav #settingsButton{
   width:auto!important;min-width:98px!important;max-width:130px!important;padding:6px 10px!important;font-size:0!important;
 }
 html[data-button-labels='both'] body .topbar #toolNav #profileButton{
   width:auto!important;min-width:92px!important;max-width:155px!important;padding:6px 9px!important;
 }
 html[data-button-labels='both'] body .topbar #toolNav #minimapButton{
   width:auto!important;min-width:72px!important;max-width:100px!important;padding:6px 9px!important;
 }
 html[data-button-labels='text'] body .topbar #toolNav #settingsButton{
   width:auto!important;min-width:78px!important;max-width:105px!important;padding:6px 9px!important;font-size:0!important;
 }
 html[data-button-labels='text'] body .topbar #toolNav #minimapButton{min-width:60px!important;width:auto!important;max-width:90px!important}
}
/* Uniform close affordance across nested chat heads, lightboxes and model galleries. */
html body :is(#closeLog,#closeCall,#closeScenePanel,#closeProperties,#closeChat,#closeRealmGallery,#closeRoom,#closeWebcam,#closeProfile,#closeSettings,#closeWorldSettings,#closeAssetGallery,#closeAvatarGallery,#closeRobotBrains,#closeBrainsEyeLightbox,#closeDiagnostics,#closeAdmin,#minimapClose)[data-ui-icon]{
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 width:34px!important;min-width:34px!important;max-width:34px!important;
 height:34px!important;min-height:34px!important;max-height:34px!important;
 flex:0 0 34px!important;padding:6px!important;border-radius:8px!important;
 border:1px solid #5c7890!important;background:var(--ui-button)!important;
 font-size:0!important;line-height:1!important;
}

/* v0.2.54 — one-cycle chat, image-first realms and low-cost interface options */
#chatPanel[hidden],#chatPanel.chat-mode-hidden{display:none!important;pointer-events:none!important}
#chatModeButton.bottom-chat-mode{display:inline-flex!important;align-items:center!important;justify-content:center!important;min-height:36px!important;white-space:nowrap!important;z-index:60!important;pointer-events:auto!important}
#chatPanel .panel-title #closeChat,#messagesToggleButton{display:none!important}
#modelSelect[hidden],#sceneModelControls{display:none!important}
/* The round profile/cog controls remain round; their text sits on an unframed surface beside them. */
@media(min-width:751px){
 html[data-button-labels='both'] body .topbar #toolNav #profileButton,
 html[data-button-labels='both'] body .topbar #toolNav #settingsButton,
 html[data-button-labels='text'] body .topbar #toolNav #profileButton,
 html[data-button-labels='text'] body .topbar #toolNav #settingsButton{
   border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;
   height:40px!important;min-height:40px!important;max-height:40px!important;
   padding:2px 5px!important;gap:8px!important;overflow:visible!important;
 }
 html[data-button-labels='both'] #settingsButton::before,html[data-button-labels='text'] #settingsButton::before{
   border:1px solid var(--ui-fg)!important;background-color:var(--ui-button)!important;
   box-sizing:content-box!important;border-radius:50%!important;background-size:18px!important;
   padding:8px!important;width:18px!important;height:18px!important;flex:0 0 18px!important;
 }
 html[data-button-labels='both'] #profileButton .ui-profile-avatar,
 html[data-button-labels='text'] #profileButton .ui-profile-avatar{border-radius:50%!important}
}
.topbar #toolNav>button[data-ui-icon]>.ui-button-label{display:block;overflow:hidden;white-space:nowrap!important;text-overflow:ellipsis!important;-webkit-line-clamp:1!important;line-clamp:1!important;word-break:normal!important}
.topbar #toolNav>button{white-space:nowrap!important;flex-shrink:0!important}
#settingsDrawer .settings-font-actions>button{white-space:nowrap!important;font-size:clamp(10px,calc(11px * var(--ui-scale)),13px)!important}
#settingsDrawer .settings-font-actions{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:5px!important}
#settingsDrawer #resetUiPreferences{margin:4px 0!important}
@media(max-width:450px){#settingsDrawer .settings-font-actions{grid-template-columns:1fr!important}}
/* Gallery artwork is the entire card; text is overlaid with a high-contrast edge fade. */
.realm-gallery-dialog{width:min(1000px,calc(100vw - 16px))!important;max-height:89svh!important}
.realm-gallery-dialog>.panel-title{justify-content:flex-end!important;gap:10px!important;min-height:52px!important}
.realm-gallery-dialog>.panel-title>strong{font-size:clamp(21px,calc(23px * var(--ui-scale)),33px)!important;margin-inline:auto!important;text-align:center!important}
.realm-card-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(min(215px,100%),1fr))!important;gap:10px!important;align-items:stretch!important}
.realm-card-tile{position:relative;min-width:0;min-height:190px;display:flex;flex-direction:column;gap:0}
.realm-card-grid .realm-card{position:relative;flex:1!important;width:100%!important;min-height:190px!important;margin:0!important;padding:0!important;border-radius:10px!important;overflow:hidden!important;background:var(--ui-panel)!important;border:1px solid #59758e!important;gap:0!important}
.realm-card-grid .realm-card-image{position:absolute;inset:0;width:100%;height:100%;aspect-ratio:auto!important;border-radius:0!important;background:linear-gradient(138deg,#243e5b,#0b182a)!important;display:block!important}
.realm-card-grid .realm-card-image img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.realm-card-grid .realm-card-image::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#07101bcc 0%,transparent 38%,transparent 60%,#07101be8 100%);pointer-events:none}
.realm-card-grid .realm-card-title{position:absolute;z-index:1;top:11px;left:9px;right:9px;font-size:clamp(19px,calc(20px * var(--ui-scale)),25px)!important;font-weight:750;line-height:1.15;text-align:center;color:#fff!important;overflow-wrap:anywhere;white-space:normal!important;text-shadow:0 1px 5px #000b}
.realm-card-grid .realm-card-people{position:absolute;z-index:1;bottom:15px;left:9px;right:9px;display:flex;justify-content:center;align-items:center;gap:3px!important;color:#fff}
.realm-card-grid .realm-card-count{font-size:12px!important;font-weight:650;color:#fff!important;margin-right:4px}
.realm-card-grid .realm-card-avatar{width:26px;height:26px;flex:0 0 26px;background:#36647c;border:1px solid #ddd;border-radius:50%;display:grid;place-items:center;overflow:hidden;font-size:13px!important;color:#fff!important}
.realm-card-grid .realm-card-avatar img{position:static;width:100%;height:100%;object-fit:cover}
.realm-card-grid .realm-card-controls{display:flex;gap:4px;position:absolute;z-index:4;right:5px;bottom:5px;transform:translateY(calc(100% + 2px));pointer-events:auto}
.realm-card-grid .realm-card-managed{margin-bottom:27px!important;min-height:164px!important}
.realm-card-grid .realm-card-action{font-size:11px!important;padding:4px 8px!important;min-height:26px!important;height:26px!important;white-space:nowrap!important}
.realm-card-grid .realm-card-tile:has(.realm-card-controls){margin-bottom:26px}
.realm-card-grid .realm-card[aria-pressed='true']{outline:2px solid var(--solvi-accent)!important;outline-offset:-3px!important}
@media(max-width:550px){.realm-card-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:7px!important}.realm-card-tile,.realm-card-grid .realm-card{min-height:155px!important}.realm-card-grid .realm-card-title{font-size:15px!important}.realm-card-grid .realm-card-people{bottom:9px}}
.solvi-key-form{display:none!important}
/* Entirely local, reversible interface performance options. */
html[data-flat-buttons='true'] body :is(button,.icon-btn,.panel-title,.drawer,.overlay,.scene-panel,.properties-panel,.chat-composer,.minimap-panel,.settings-section,.realm-card){border:0!important;outline-offset:1px!important}
html[data-no-shadows='true'] body *,html[data-no-shadows='true'] body *::before,html[data-no-shadows='true'] body *::after{box-shadow:none!important;text-shadow:none!important}
html[data-no-blur='true'] body *,html[data-no-blur='true'] body *::before,html[data-no-blur='true'] body *::after{backdrop-filter:none!important;-webkit-backdrop-filter:none!important}

/* One line of text for action buttons, never a line-wrapped or ellipsized two-line pill. */
button[data-ui-icon]>.ui-button-label{display:block!important;white-space:nowrap!important;line-clamp:1!important;-webkit-line-clamp:1!important;overflow:hidden!important;text-overflow:ellipsis!important}
html[data-button-labels='icon'] button[data-ui-icon]>.ui-button-label{display:none!important}
#sceneItems .scene-item-name>.ui-button-label{white-space:normal!important;display:-webkit-box!important;-webkit-line-clamp:2!important;line-clamp:2!important}

/* v0.2.55: do not apply inverted-image filter to the cog's entire painted circle.
   The inverted element background made the settings roundel a featureless white disc. */
@media(min-width:751px){
 html[data-button-labels='both'] body .topbar #toolNav #settingsButton::before,
 html[data-button-labels='text'] body .topbar #toolNav #settingsButton::before{
   filter:none!important;
   background-image:url('./assets/ui-icons/config-light.svg')!important;
   background-color:var(--ui-button)!important;
   background-position:center!important;background-repeat:no-repeat!important;
   background-size:18px 18px!important;
   border:1px solid #5c7890!important;
 }
}
/* The portrait render is now taller and sharper: never stretch a low-res landscape image into a portrait tile. */
#avatarGalleryGrid .avatar-preview img{object-fit:cover!important;image-rendering:auto!important;}
#avatarGalleryGrid .avatar-preview{background:linear-gradient(145deg,#1c3043,#0f1d31)!important;}
/* Consistent cog artwork for mobile/icon-only too; never invert a white-on-dark roundel. */
#toolNav #settingsButton[data-ui-icon='config']::before{
 filter:none!important;
 background-image:url('./assets/ui-icons/config-light.svg')!important;
 background-position:center!important;
 background-repeat:no-repeat!important;
 background-size:18px 18px!important;
}

/* v0.2.56 — compact editing, scene/robot controls, stable orbit, @mention and window focus */
#controlSwitcher.control-switcher{position:fixed;z-index:65;bottom:calc(56px + env(safe-area-inset-bottom));left:10px;display:flex;align-items:center;gap:4px;max-width:min(360px,calc(100vw - 20px));pointer-events:auto}
#controlSwitcher #controlModeButton{min-height:30px!important;height:30px!important;max-height:30px!important;padding:3px 8px!important;white-space:nowrap!important;background:var(--ui-panel,#102536)!important;color:var(--ui-fg,#fff)!important;border:1px solid var(--ui-border,#607789)!important;border-radius:7px!important;font-size:11px!important}
#controlSwitcher #controlModeButton[aria-pressed='true']{border-color:var(--solvi-accent)!important;background:color-mix(in srgb,var(--solvi-accent) 18%,var(--ui-panel))!important}
#controlSwitcher #controlledRobotSelect{min-width:0!important;width:150px!important;max-width:calc(100vw - 140px)!important;min-height:30px!important;height:30px!important;font-size:11px!important;border:1px solid var(--ui-border)!important;background:var(--ui-panel)!important;color:var(--ui-fg)!important;padding:2px!important;border-radius:7px!important}
/* A one-line transform vector per property: label + three numbers + reset. */
#propertiesPanel #propertyGrid.property-grid{display:flex!important;flex-direction:column!important;gap:4px!important;max-width:100%!important}
#propertiesPanel #propertyGrid .transform-group{display:grid!important;grid-template-columns:69px minmax(0,1fr)!important;align-items:center!important;gap:4px!important;margin:0!important;padding:2px 0!important;border:0!important;min-width:0!important}
#propertiesPanel #propertyGrid .transform-label{font:700 11px/1.2 system-ui,sans-serif!important;white-space:nowrap!important;color:var(--ui-fg)!important}
#propertiesPanel #propertyGrid .transform-axis-row{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr)) 27px!important;gap:3px!important;align-items:center!important;min-width:0!important;width:100%!important}
#propertiesPanel #propertyGrid .axis-value{display:block!important;font-size:0!important;min-width:0!important;margin:0!important}
#propertiesPanel #propertyGrid .axis-value input[type=number]{min-height:28px!important;height:28px!important;max-height:28px!important;min-width:0!important;width:100%!important;padding:2px!important;font-size:12px!important;text-align:center!important;border-radius:6px!important}
#propertiesPanel #propertyGrid .transform-reset{height:28px!important;width:27px!important;min-width:27px!important;max-width:27px!important;min-height:28px!important;max-height:28px!important;padding:4px!important}
#propertiesPanel #robotTransformDetails>summary{font-size:11px!important;padding:3px 0!important}
#propertiesPanel #robotTransformDetails .scale-link{display:flex!important;align-items:center!important;gap:5px!important;justify-content:flex-end!important;margin:1px 2px!important;font-size:11px!important;font-weight:600!important}
#propertiesPanel #robotTransformDetails .scale-link input{width:14px!important;height:14px!important;min-height:14px!important;margin:0!important}
/* Physics and collider share one line, surface values share a selector + range. */
#propertiesPanel #physicsObjectControls{display:flex!important;flex-direction:column!important;gap:4px!important;max-width:100%!important;margin:5px 0!important}
#propertiesPanel #physicsObjectControls[hidden]{display:none!important}
#propertiesPanel #physicsObjectControls .physics-top-row{display:grid!important;grid-template-columns:1fr 1fr!important;gap:4px!important;min-width:0!important}
#propertiesPanel #physicsObjectControls .physics-top-row label{min-width:0!important;font-size:11px!important;margin:0!important;display:flex!important;align-items:center!important;gap:4px!important}
#propertiesPanel #physicsObjectControls .physics-top-row select{min-width:0!important;width:100%!important;flex:1 1 auto!important;height:29px!important;min-height:29px!important;padding:2px 5px!important;font-size:11px!important}
#propertiesPanel #physicsObjectControls .physics-adjust-row{display:grid!important;grid-template-columns:minmax(0,1fr) 66px!important;gap:5px!important;min-width:0!important}
#propertiesPanel #physicsObjectControls .physics-adjust-row select,#propertiesPanel #physicsObjectControls #objectSurfaceValue{box-sizing:border-box!important;min-width:0!important;width:100%!important;height:29px!important;min-height:29px!important;padding:3px 6px!important;border:1px solid var(--ui-border,#54677a)!important;border-radius:6px!important;background:var(--ui-bg,#0d1929)!important;color:var(--ui-fg,#f3f7ff)!important;font-size:11px!important}
#propertiesPanel #physicsObjectControls #objectSurfaceRange{width:100%!important;min-width:0!important;margin:0!important}
#propertiesPanel #physicsObjectControls input[hidden]{display:none!important}
/* The Add palette has a fixed search, one compact vertical stack and left-aligned actions. */
#addMenu.add-menu{display:flex!important;flex-direction:column!important;gap:0!important;padding:4px!important;max-height:min(72svh,580px)!important;overflow:hidden!important;width:min(285px,calc(100vw - 14px))!important}
#addMenu.add-menu[hidden]{display:none!important}
#addMenu .add-fixed-head{position:relative;z-index:2;flex:0 0 auto;display:flex;flex-direction:column;gap:2px;padding:4px;background:var(--ui-panel,#0e2233)}
#addMenu .add-fixed-head .add-drag{min-height:23px!important;padding:3px 5px!important}
#addMenu .add-fixed-head .add-search{height:34px!important;min-height:34px!important;margin:0!important;padding:4px 7px!important}
#addMenu .add-scroll-content{flex:1 1 auto;min-height:0;overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:2px 3px}
#addMenu .add-scroll-content .add-group{display:flex!important;flex-direction:column!important;gap:1px!important;margin:0!important}
#addMenu .add-scroll-content .add-group strong{font-size:10px!important;padding:5px 5px 1px!important;margin:0!important}
#addMenu .add-scroll-content .add-group button{box-sizing:border-box!important;display:flex!important;align-items:center!important;justify-content:flex-start!important;text-align:left!important;min-height:29px!important;height:29px!important;max-height:29px!important;margin:0!important;padding:3px 7px!important;gap:8px!important;font-size:11px!important;white-space:nowrap!important}
#addMenu .add-scroll-content .add-group button[hidden]{display:none!important}
#addMenu .add-scroll-content .add-group button::before{flex:0 0 17px!important;width:17px!important;height:17px!important}
/* Bring the focused draggable surface in front; preserve modal backdrops. */
:is(#scenePanel,#propertiesPanel,#addMenu,#editorToolbox,#robotBrainsPanel,#diagnosticsPanel){z-index:var(--solvi-window-z,28)!important}
#chatPanel.windowed{z-index:var(--solvi-window-z,220)!important}
#chatPanel:not(.windowed){z-index:12!important}
/* Name completion near the composer, never a generic dropdown in scene controls. */
#chatComposer{position:relative!important}
#chatMentions.chat-mentions{position:absolute;z-index:1000;left:8px;right:8px;bottom:calc(100% - 47px);max-height:190px;overflow:auto;padding:4px;display:flex;flex-direction:column;gap:2px;border:1px solid var(--ui-border,#617589);background:var(--ui-panel,#102536);border-radius:7px;box-shadow:0 8px 20px #0008;pointer-events:auto}
#chatMentions.chat-mentions[hidden]{display:none!important}
#chatMentions .chat-mention-option{text-align:left!important;justify-content:flex-start!important;padding:5px 8px!important;min-height:29px!important;font-size:12px!important;border:0!important;background:transparent!important;color:var(--ui-fg,#fff)!important}
#chatMentions .chat-mention-option.active,#chatMentions .chat-mention-option:hover{background:color-mix(in srgb,var(--solvi-accent) 25%,transparent)!important}
#chatMentions .chat-mention-option[data-kind='robot']::after{content:'Robot';font-size:10px;margin-left:auto;opacity:.7}
@media(max-width:500px){#controlSwitcher{bottom:calc(52px + env(safe-area-inset-bottom));left:6px}#propertiesPanel #propertyGrid .transform-group{grid-template-columns:58px minmax(0,1fr)!important}}
/* Narrow-screen polishing: never split Physics/Collider or overlap bottom controls. */
#propertiesPanel #physicsObjectControls .physics-top-row label{white-space:nowrap!important;overflow:hidden!important}
#propertiesPanel #physicsObjectControls .physics-top-row select{flex:1 1 0!important;width:0!important;min-width:0!important;text-overflow:ellipsis!important}
#controlSwitcher.control-switcher{bottom:calc(95px + env(safe-area-inset-bottom))!important}
/* Modal layers remain above every moveable editor window. */
.drawer-shell{z-index:680!important}
:is(#realmGalleryBackdrop,#avatarGalleryBackdrop,#assetGalleryBackdrop,#profileBackdrop,#adminBackdrop,#settingsBackdrop,#worldSettingsBackdrop){z-index:690!important}

/* v0.2.57: compact controls, linked scale inline, voice controls and author-color chat */
#propertiesPanel #propertyGrid .scale-title{display:inline-flex!important;align-items:center!important;gap:5px!important;white-space:nowrap!important;min-width:0!important}
#propertiesPanel #propertyGrid .scale-title .scale-link{display:inline-flex!important;justify-content:flex-start!important;margin:0!important;padding:0!important;cursor:pointer}
#propertiesPanel #propertyGrid .scale-title .scale-link input{width:15px!important;height:15px!important;min-width:15px!important;margin:0!important}
#propertiesPanel #robotControls{margin:3px 0!important}
#propertiesPanel #robotControls>strong{font-size:11px!important;line-height:1.1!important}
#propertiesPanel #robotControls .robot-speed-single{margin:1px 0!important;gap:5px!important}
#propertiesPanel #robotControls .robot-speed-single select{width:86px!important;min-width:65px!important;max-width:86px!important;min-height:28px!important;height:28px!important;font-size:11px!important}
#propertiesPanel #robotControls .robot-speed-single input[type=range]{flex:1!important;width:100%!important;min-width:20px!important}
#propertiesPanel #robotControls .robot-speed-single output{width:44px!important;text-align:right!important;font-size:11px!important}
#propertiesPanel #robotVoiceProperties{margin:4px 0!important;padding:0!important}
#propertiesPanel .brain-voice-config{gap:4px!important;margin:2px 0!important;padding:3px 0!important}
#propertiesPanel .brain-voice-config label{margin:0!important;gap:2px!important;font-size:11px!important}
#propertiesPanel .brain-voice-config input[type=number]{box-sizing:border-box!important;background:var(--ui-bg,#0d1929)!important;color:var(--ui-fg,#eef8ff)!important;border:1px solid var(--ui-border,#526779)!important;border-radius:6px!important;width:100%!important;min-width:0!important;min-height:28px!important;height:28px!important;padding:2px 5px!important}
#propertiesPanel #debugSelectedRobot{margin:0 2px 0 0!important}
#propertiesPanel .robot-debug-row,#propertiesPanel label:has(#debugSelectedRobot){display:inline-flex!important;align-items:center!important;gap:2px!important;margin:2px 0!important}
.chat-row.mine{align-self:flex-start!important;margin-right:auto!important;margin-left:0!important;flex-direction:row!important}
.chat-row.theirs{align-self:flex-end!important;margin-right:0!important;margin-left:auto!important;flex-direction:row-reverse!important}
.chat-row.theirs .chat-bubble{border-color:var(--speaker-accent,var(--solvi-accent))!important;background:color-mix(in srgb,var(--speaker-accent,#3f7591) 18%,#132436)!important}
.chat-row.mine .chat-bubble{border-color:var(--speaker-accent,var(--solvi-accent))!important;background:color-mix(in srgb,var(--speaker-accent,#3b7da7) 17%,#102536)!important}
.chat-row.theirs .chat-meta{text-align:right!important;flex-direction:row-reverse!important}
.chat-row.theirs .chat-body{text-align:left!important}
.profile-color-row{display:flex!important;align-items:center!important;justify-content:space-between!important;gap:8px!important;margin:6px 0!important;font-size:12px!important}
.profile-color-row input{width:44px!important;height:28px!important;min-height:28px!important;padding:1px!important;cursor:pointer}
.profile-photo-badge{position:relative!important;overflow:hidden!important}
.profile-photo-badge .profile-avatar-live{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;object-fit:cover!important;border-radius:50%!important;pointer-events:none!important}
.robot-speech-wave{position:fixed;z-index:7;width:20px;height:20px;margin:-10px;pointer-events:none;border:2px solid #76dce9;border-radius:50%;filter:drop-shadow(0 0 3px #5ae4e9);animation:solvi-speaking-ring .8s ease-out infinite}
.robot-speech-wave::after{content:'';position:absolute;inset:-8px;border:2px solid #69c7fa;border-radius:50%;animation:solvi-speaking-ring 1.12s ease-out infinite}
@keyframes solvi-speaking-ring{0%{transform:scale(.35);opacity:.85}100%{transform:scale(2.0);opacity:0}}
@media(prefers-reduced-motion:reduce){.robot-speech-wave,.robot-speech-wave::after{animation:none!important}}

#propertiesPanel #robotVoiceProperties .brain-voice-config .voice-tuning-row{display:flex!important;align-items:center!important;gap:5px!important;margin:0!important}
#propertiesPanel #robotVoiceProperties .brain-voice-config>small{display:none!important}
#propertiesPanel #robotControls #robotVoiceDetails>summary{padding:3px 0!important;line-height:1.1!important}
#propertiesPanel .robot-voice-properties select{min-height:30px!important;height:30px!important;font-size:11px!important;max-width:100%!important;padding:3px 7px!important}
#propertiesPanel .robot-voice-properties button{min-height:31px!important;height:31px!important;white-space:nowrap!important;padding:3px 7px!important}

#propertiesPanel .robot-brain-row{display:flex!important;align-items:center!important;justify-content:flex-start!important;gap:3px!important;flex-wrap:nowrap!important;margin:3px 0!important}
#propertiesPanel .robot-brain-row .robot-debug-toggle{display:inline-flex!important;align-items:center!important;gap:3px!important;margin:0!important;padding:0!important;font-size:11px!important;white-space:nowrap!important}
#propertiesPanel .robot-brain-row #openRobotBrains{margin:0!important;min-width:31px!important;min-height:31px!important;max-height:31px!important;padding:4px 7px!important}
#profilePhotoBadge::before{display:none!important;content:none!important}
#profilePhotoBadge img,#profilePhotoBadge video{display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;border-radius:50%!important}

/* v0.2.58 — conventional chat sides: self on right, all peers/robots on left. */
#chatFeed .chat-row.mine{align-self:flex-end!important;margin-left:auto!important;margin-right:0!important;flex-direction:row!important;justify-content:flex-end!important}
#chatFeed .chat-row.theirs{align-self:flex-start!important;margin-left:0!important;margin-right:auto!important;flex-direction:row!important;justify-content:flex-start!important}
#chatFeed .chat-row.mine .chat-avatar{order:2!important}
#chatFeed .chat-row.mine .chat-bubble{order:1!important;border-radius:16px 16px 4px 16px!important}
#chatFeed .chat-row.theirs .chat-avatar{order:1!important}
#chatFeed .chat-row.theirs .chat-bubble{order:2!important;border-radius:16px 16px 16px 4px!important}
#chatFeed .chat-row.mine .chat-meta{flex-direction:row!important;text-align:left!important}
#chatFeed .chat-row.theirs .chat-meta{flex-direction:row-reverse!important;text-align:right!important}
#chatFeed .chat-row .chat-bubble{position:relative!important;min-width:0;overflow:visible}
#chatFeed .chat-row .chat-bubble::before{content:'';display:block;position:absolute;bottom:5px;width:9px;height:12px;background:inherit;pointer-events:none}
#chatFeed .chat-row.mine .chat-bubble::before{right:-7px;clip-path:polygon(0 0,0 100%,100% 100%)}
#chatFeed .chat-row.theirs .chat-bubble::before{left:-7px;clip-path:polygon(100% 0,100% 100%,0 100%)}
#chatFeed .chat-row .chat-bubble::after{display:none!important}

/* Robot commands reference: compact and keyboard accessible. */
#robotCommandsCard{flex:0 1 auto;overflow:auto;max-height:37svh;padding:12px 15px;background:var(--ui-bg,#102638);border-bottom:1px solid var(--ui-border,#536b83);font-size:12px;line-height:1.5}
#robotCommandsCard h3{font-size:13px;margin:0 0 7px}
#robotCommandsCard p{margin:5px 0}
#robotCommandsCard pre{white-space:pre-wrap;overflow-wrap:anywhere;font-size:11px;line-height:1.6;margin:9px 0}
#robotCommandsButton{margin-right:4px}

/* v0.2.60 — rich authenticated media attachments with legible image/PDF previews. */
#chatFeed .chat-media-grid{display:flex;flex-wrap:wrap;gap:8px!important}
#chatFeed .chat-attachment{box-sizing:border-box!important;min-width:0!important;max-width:100%;aspect-ratio:auto!important;overflow:visible!important;border-radius:8px;padding:5px;display:flex;flex-direction:column;gap:5px;background:rgba(3,13,23,.16)}
#chatFeed .chat-attachment img{width:100%;max-width:100%;height:auto;max-height:300px;object-fit:contain;display:block;border-radius:6px}
#chatFeed .chat-attachment audio{width:min(300px,100%);height:48px;max-height:none}
#chatFeed .chat-attachment video{width:min(340px,100%);height:auto;max-height:320px;object-fit:contain}
#chatFeed .chat-attachment-title{font-size:11px;overflow-wrap:anywhere;opacity:.85}
#chatFeed .chat-attachment-save{font-size:11px;align-self:flex-start;text-decoration:underline;color:inherit}
#chatFeed .chat-image-open{appearance:none;border:0;background:transparent;margin:0;padding:0;cursor:zoom-in;max-width:100%}
#chatFeed .chat-attachment-text pre{white-space:pre-wrap;overflow-wrap:anywhere;max-height:260px;overflow-y:auto;font-size:12px;text-align:left}
#chatFeed .chat-read-file{min-height:32px;align-self:flex-start}
.chat-media-viewer[hidden]{display:none!important}
.chat-media-viewer{position:fixed;inset:0;z-index:1800;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:rgba(3,8,15,.94);padding:12px;color:white}
.chat-media-viewer-bar{display:flex;justify-content:space-between;align-items:center;gap:12px;width:100%;max-width:1100px;min-height:36px}
.chat-media-viewer-heading{font-size:14px;overflow-wrap:anywhere}
.chat-media-viewer-close{background:#24506a;color:white;border:1px solid #85a6bd;border-radius:7px;padding:8px 14px}
.chat-media-viewer-content{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;width:100%;max-width:1100px;min-height:0;height:calc(100dvh - 88px);overflow:auto}
.chat-media-viewer-content img{display:block;max-width:100%;max-height:100%;object-fit:contain;cursor:zoom-in}
.chat-media-viewer-content iframe{display:block;width:100%;height:100%;border:0;background:white;border-radius:6px}
.chat-media-viewer-content a{color:#b5e8ff}

/* v0.2.61: compact chat thumbnails; mixed media keeps its own controls. */
#chatFeed .chat-media-grid{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px!important;width:min(320px,100%);max-width:100%;align-items:start}
#chatFeed .chat-media-grid .chat-attachment-image{min-width:0;max-width:none;width:100%;padding:2px;gap:2px;overflow:hidden!important}
#chatFeed .chat-media-grid .chat-image-open{display:block;width:100%;aspect-ratio:1;overflow:hidden;border-radius:5px}
#chatFeed .chat-media-grid .chat-image-open img{height:100%;width:100%;max-height:none;object-fit:cover}
#chatFeed .chat-bubble > .chat-attachment-image{width:min(190px,100%)}
#chatFeed .chat-bubble > .chat-attachment-image .chat-image-open{max-width:100%;max-height:150px;overflow:hidden}
#chatFeed .chat-bubble > .chat-attachment-image .chat-image-open img{max-height:150px;object-fit:cover}
#chatFeed .chat-media-grid .chat-attachment-title{overflow:hidden;white-space:nowrap;text-overflow:ellipsis;max-width:100%;font-size:10px}
#chatFeed .chat-media-grid .chat-attachment-save{font-size:10px}
#chatFeed .chat-media-grid .chat-attachment:not(.chat-attachment-image){grid-column:1/-1}
#chatFeed .chat-media-grid .chat-attachment:not(.chat-attachment-image) :is(audio,video){width:min(300px,100%)}
@media(max-width:420px){#chatFeed .chat-media-grid{grid-template-columns:repeat(2,minmax(0,1fr));width:min(270px,100%)}}

.media-object-controls{display:grid;gap:8px;margin:.55rem 0}.media-object-actions{display:flex;gap:8px}.media-object-controls label{display:grid;gap:4px;font-size:.92rem}
.chat-composer.drag-attach{outline:2px dashed var(--ui-accent,#79cde5);outline-offset:4px}

/* v0.2.64: in-app, keyboard-accessible drag/drop decision (not browser prompt). */
.media-drop-backdrop{position:fixed;inset:0;z-index:2200;display:grid;place-items:center;padding:16px;background:rgba(4,11,20,.76);backdrop-filter:blur(9px);pointer-events:auto;color:#ebf4ff}
.media-drop-backdrop[hidden]{display:none!important}
.media-drop-card{width:min(670px,100%);max-height:min(90dvh,760px);overflow-y:auto;border-radius:19px;background:linear-gradient(155deg,#1b3445,#0b1b2a 72%);border:1px solid #50708a;box-shadow:0 24px 100px rgba(0,0,0,.7);padding:22px;display:grid;gap:16px}
.media-drop-heading{display:flex;justify-content:space-between;align-items:start;gap:12px}
.media-drop-heading h2{font-size:clamp(18px,3.5vw,23px);font-weight:750;line-height:1.24;margin:5px 0 7px;letter-spacing:-.02em}
.media-drop-heading p{font-size:12px;color:#bbcede;margin:0}
.media-drop-eyebrow{font-size:10px;letter-spacing:.14em;font-weight:750;color:#79d8ed}
#mediaDropCancel{border-radius:50%;min-width:36px;height:36px;padding:0;background:#29465b;flex:none;font-size:18px}
.media-drop-body{display:grid;grid-template-columns:minmax(0,.95fr) minmax(0,1.05fr);align-items:stretch;gap:18px}
.media-drop-file{min-width:0;display:flex;flex-direction:column;gap:6px;font-size:12px}
.media-drop-file strong{overflow-wrap:anywhere;line-height:1.4;max-height:3.8em;overflow:hidden}
.media-drop-file small{color:#a4bdd2}
.media-drop-preview{height:205px;background:#081421;border-radius:12px;border:1px solid #35536a;display:grid;place-items:center;overflow:hidden}
.media-drop-preview img,.media-drop-preview video{max-width:100%;width:100%;height:100%;object-fit:contain}
.media-drop-placeholder{font-size:30px;font-weight:750;opacity:.45}
.media-drop-choices{display:flex;flex-direction:column;gap:12px}
.media-drop-choice{width:100%;min-height:86px;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:6px;text-align:left;border-radius:12px;padding:14px 16px;background:#173348;border:1px solid #4a6b82;color:#e9f7ff;box-shadow:none;backdrop-filter:none}
.media-drop-choice strong{font-size:15px;font-weight:750}
.media-drop-choice span{font-size:11px;line-height:1.4;color:#bdd3e1}
.media-drop-choice:hover:not(:disabled),.media-drop-choice:focus-visible{background:#234b60;border-color:#92d9ef;outline:2px solid #91d7e9;outline-offset:2px}
.media-drop-choice-primary{background:#16485c;border-color:#5fa9be}
.media-drop-scene-options{display:grid;gap:8px}
.media-drop-scene-options label{font-size:12px;color:#cbdce8}
.media-drop-scene-options select{background:#101e2c;color:#eff8ff;border:1px solid #688ba5;border-radius:9px;padding:10px;font:inherit;font-size:12px;width:100%}
.media-drop-footer{border-top:1px solid #38566b;padding-top:12px;display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:11px;color:#a9bdca}
#mediaDropDismiss{padding:7px 14px;border:1px solid #698aa0;background:#20384b;border-radius:9px;white-space:nowrap}
@media(max-width:560px){.media-drop-card{padding:16px;gap:14px}.media-drop-body{grid-template-columns:1fr;gap:12px}.media-drop-file{display:grid;grid-template-columns:95px 1fr;grid-template-rows:auto 1fr;align-content:start}.media-drop-preview{height:95px;grid-row:1/3}.media-drop-file strong{align-self:end}.media-drop-choice{min-height:65px;padding:12px}.media-drop-footer{font-size:10px}}

.chat-attachment{position:relative}.chat-attachment-more{position:absolute;top:6px;right:6px;z-index:2;border:1px solid rgba(255,255,255,.22);background:rgba(8,18,28,.86);color:#fff;border-radius:8px;min-width:28px;height:28px;line-height:1;padding:0 6px}.chat-attachment-menu{position:absolute;top:38px;right:6px;display:grid;gap:4px;padding:6px;background:rgba(6,16,26,.96);border:1px solid rgba(150,220,255,.25);border-radius:10px;z-index:3;min-width:132px}.chat-attachment-menu-item{text-align:left;background:transparent;color:#fff;border:0;padding:7px 9px;border-radius:8px;text-decoration:none}.chat-attachment-menu-item:hover{background:rgba(255,255,255,.08)}

.robot-path-debug-status:not([hidden]){display:block;margin:4px 0 10px;padding:6px 8px;border-left:2px solid #6af1a3;font-size:11px;line-height:1.45;opacity:.9}

/* v0.2.69: real technical console, not a full-width identity form. */
#robotBrainsPanel{width:min(540px,calc(100vw - 20px));min-width:min(320px,calc(100vw - 20px));max-width:calc(100vw - 16px);max-height:85svh;top:6svh;left:max(8px,calc(50vw - 270px));min-height:250px}
#robotBrainsPanel .brains-scroll{gap:6px;padding:8px 10px 12px;line-height:1.25}
#robotBrainsPanel .brain-observation{gap:5px}
#robotBrainsPanel :is(.brain-actions,.brain-primary-actions,.brain-eye-header){gap:5px;margin:0}
#robotBrainsPanel :is(button,select){font-size:12px;min-height:27px;padding:4px 7px}
#robotBrainsPanel :is(.small-note,.field-label){font-size:11px;line-height:1.3;margin:0}
#robotBrainsPanel .brain-eye-header h2{font-size:13px;margin:0}
#robotBrainsPanel #brainsEyeStage.brains-eye-stage{width:min(100%,260px);max-height:260px;border-width:1px;border-radius:6px;margin:0 auto}
#robotBrainsPanel #brainsEyeImage{max-height:258px}
#robotBrainsPanel .brains-eye-placeholder{min-height:55px;padding:8px;font-size:11px;line-height:1.3}
#robotBrainsPanel .brains-frame-gallery{gap:4px;padding:2px 0;max-height:92px}
#robotBrainsPanel .brains-frame-card{min-width:80px;flex-basis:80px;padding:3px;gap:2px;font-size:10px}
#robotBrainsPanel textarea{min-height:36px;padding:4px 6px;line-height:1.3;font-size:12px}
#robotBrainsPanel input{padding:4px 6px;font-size:12px}
#robotBrainsPanel .brains-section[open]>.brains-section-body{padding-top:5px}
#robotBrainsPanel .brain-results{padding:6px;min-height:36px;max-height:125px;font:11px/1.35 ui-monospace,SFMono-Regular,Menlo,monospace}
#robotBrainsPanel .brain-task-trace{min-height:115px;max-height:32vh;overflow:auto;white-space:pre-wrap;user-select:text}
#robotBrainsPanel #brainsTraceDetails{order:-2}
#robotBrainsPanel .brains-audit-toolbar{display:flex;align-items:center;flex-wrap:wrap;gap:5px;margin:5px 0}
#robotBrainsPanel .brains-audit-toolbar .small-note{flex:1 1 100%;opacity:.75}
#robotBrainsPanel #brainsObservation{order:0}
#robotBrainsPanel .brains-section{margin:0;padding:2px 0}
@media(max-width:650px){#robotBrainsPanel{left:6px;right:6px;width:calc(100vw - 12px);max-height:92svh}#robotBrainsPanel .brains-scroll{padding:6px 8px}}

@media(min-width:1101px){body.solvi-brain-chat-side-by-side #robotBrainsPanel{width:min(540px,calc(100vw - 466px))!important;max-width:min(540px,calc(100vw - 466px))!important;left:8px!important}}

/* v0.2.71: scrollable conversation with a localized overlay hit target. */
#chatPanel .chat-feed-shell{position:relative;display:flex;flex:1 1 auto;min-height:0;min-width:0;pointer-events:none;}
#chatPanel .chat-feed-shell>.chat-feed{width:100%;height:100%;min-height:0!important;flex:1 1 auto!important;overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:contain;scrollbar-width:thin!important;scrollbar-color:rgba(139,190,208,.38) transparent!important;}
#chatPanel.windowed .chat-feed-shell,#chatPanel.windowed .chat-feed-shell>.chat-feed{pointer-events:auto!important;}
#chatPanel.windowed .chat-feed-shell>.chat-feed{touch-action:pan-y!important;}
#chatPanel .chat-feed-shell>.chat-feed:focus-visible{outline:2px solid #58d5e8;outline-offset:-2px;}
#chatPanel .chat-page-down{position:absolute;bottom:10px;right:12px;z-index:6;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;padding:0!important;display:grid!important;place-items:center!important;border-radius:50%!important;background:#163b4c!important;border:1px solid #71c4d9!important;color:#f2fdff!important;font-size:23px!important;line-height:1!important;box-shadow:0 4px 16px #0007!important;pointer-events:auto!important;cursor:pointer;}
#chatPanel .chat-page-down[hidden]{display:none!important;}
#chatPanel .chat-page-down:hover{background:#285b6d!important;}
#chatPanel .chat-system-line{align-self:center;flex:0 0 auto;max-width:85%;margin:1px auto;padding:3px 10px;font-size:10px;line-height:1.4;font-weight:400;color:rgba(185,206,220,.82);text-align:center;letter-spacing:.02em;pointer-events:none;user-select:text;}
#chatPanel .chat-system-day{margin:9px auto 1px;color:rgba(221,235,248,.83);font-weight:600;}
#chatPanel .chat-system-hour{opacity:.68;font-size:9px;}
#chatPanel .chat-system-activity{font-style:italic;opacity:.9;}

/* v0.2.73 — Unified compact settings folders and controls */
#settingsDrawer .settings-section{background:color-mix(in srgb,var(--ui-panel) 92%,var(--ui-fg) 8%)!important;border-radius:11px!important;overflow:hidden;box-sizing:border-box}
#settingsDrawer .settings-section[open]{background:color-mix(in srgb,var(--ui-panel) 84%,var(--ui-accent,#79cde5) 16%)!important;border-color:color-mix(in srgb,var(--solvi-accent) 38%,var(--ui-panel))!important}
#settingsDrawer .settings-section>summary{background:color-mix(in srgb,var(--ui-button) 77%,var(--ui-panel));min-height:42px;display:list-item!important;box-sizing:border-box}
#settingsDrawer .settings-section[open]>summary{background:color-mix(in srgb,var(--ui-button) 70%,var(--ui-panel))!important;border-bottom-color:color-mix(in srgb,var(--solvi-accent) 19%,transparent)!important}
#settingsDrawer .settings-section :is(input:not([type=range]):not([type=checkbox]):not([type=radio]),select,button,.icon-btn){box-sizing:border-box;min-height:36px!important;max-height:none;padding:6px 10px!important;border-radius:9px!important;font-size:13px!important;line-height:1.25}
#settingsDrawer .settings-section :is(input[type=checkbox],input[type=radio]){width:17px;height:17px;min-width:17px;vertical-align:middle}
#settingsDrawer .settings-section :is(.field-label,.toggle-line){line-height:1.3!important}
#settingsDrawer .settings-section .settings-action-row{display:flex;flex-wrap:wrap;gap:6px!important;align-items:stretch;margin:7px 10px!important}
#settingsDrawer .settings-section .settings-action-row>:is(button,.icon-btn){flex:1 1 100px;min-width:0;text-align:center}
#settingsDrawer .settings-section .settings-action-row>input{flex:2 1 150px;width:auto;min-width:90px}
#settingsDrawer .settings-section .settings-font-actions{grid-template-columns:repeat(2,minmax(0,1fr))!important}
#settingsDrawer .settings-section .settings-font-actions>button{min-height:36px!important}
#settingsDrawer .settings-section label.icon-btn{display:inline-flex;align-items:center;justify-content:center}
@media(max-width:470px){#settingsDrawer .settings-section .settings-action-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr)}#settingsDrawer .settings-section .settings-action-row>input{grid-column:1/-1}}

.camera-bookmark-panel{position:fixed;z-index:580;left:min(14px,2vw);top:8vh;width:min(440px,94vw);max-height:82vh;display:flex;flex-direction:column;background:var(--ui-panel);border:1px solid color-mix(in srgb,var(--ui-fg) 24%,transparent);border-radius:14px;padding:10px;gap:8px;box-sizing:border-box}
.camera-bookmark-panel[hidden]{display:none!important}.bookmark-toolbar,.bookmark-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.bookmark-toolbar label{flex:1;display:grid;gap:3px}.camera-bookmark-list{overflow:auto;min-height:70px;max-height:65vh;display:grid;gap:7px;overscroll-behavior:contain}.camera-bookmark-card{border:1px solid color-mix(in srgb,var(--ui-fg) 24%,transparent);background:color-mix(in srgb,var(--ui-panel) 85%,var(--ui-fg) 15%);padding:7px;border-radius:10px;display:grid;gap:4px}.camera-bookmark-card img{width:100%;height:135px;object-fit:cover;border-radius:7px}.camera-bookmark-card strong{font-size:13px}.camera-bookmark-card small{opacity:.72}.camera-bookmark-card button,.bookmark-toolbar button,.bookmark-actions button,.bookmark-actions .icon-btn{min-height:32px;padding:5px 8px;font-size:12px}.chat-bookmark-teleport{display:inline-flex;padding:3px 8px;border-radius:8px;font-size:12px}
.composer-recorder-panel{border:1px solid color-mix(in srgb,var(--solvi-accent) 40%,transparent);border-radius:10px;padding:7px;margin:5px 0;background:color-mix(in srgb,var(--ui-panel) 80%,var(--ui-button));display:grid;gap:6px}
.composer-recorder-panel[hidden],.composer-recorder-panel [hidden]{display:none!important}.composer-recorder-head{display:flex;gap:8px;align-items:center;font-size:12px}.composer-recorder-head>output{font-variant-numeric:tabular-nums}.composer-recorder-head>meter{flex:1;min-width:40px;height:9px}.composer-recorder-controls{display:flex;flex-wrap:wrap;gap:5px}.composer-recorder-controls>button{min-height:29px;font-size:12px;padding:4px 8px}.composer-recorder-panel audio,.composer-recorder-panel video{display:block;width:100%;max-width:100%;margin:3px 0}.composer-recorder-panel #composerRecorderPreview{display:grid;gap:5px}
.robot-routine-panel{position:fixed;z-index:580;right:12px;top:8vh;width:min(370px,94vw);max-height:82vh;background:var(--ui-panel);border:1px solid color-mix(in srgb,var(--ui-fg) 22%,transparent);border-radius:14px;padding:10px;overflow-y:auto;display:grid;gap:8px}.robot-routine-panel[hidden]{display:none!important}.robot-routine-controls{display:grid;gap:7px}.robot-routine-controls>label{display:grid;gap:3px;font-size:12px}.robot-routine-controls :is(input,select){min-height:36px}.robot-routine-controls small{font-size:11px;opacity:.78}

.bookmark-top-button{display:inline-flex;align-items:center;justify-content:center;min-width:32px;width:34px;height:34px;padding:6px;border-radius:9px}.bookmark-top-button img{width:19px;height:19px;filter:invert(1);opacity:.95}

.primitive-properties-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px 8px;padding:7px}.primitive-properties-fields label{display:flex;flex-direction:column;gap:3px;font-size:.77rem;opacity:.9}.primitive-properties-fields input{width:100%;min-height:29px;padding:4px 6px}.primitive-properties[hidden]{display:none}

.realm-gallery-actions{display:flex;flex-wrap:wrap;gap:6px;align-items:center}.realm-gallery-actions>*{min-height:32px}.realm-gallery-actions #realmArchiveStatus{flex-basis:100%;opacity:.78}.realm-selection{display:flex;align-items:center;gap:7px;padding:4px 10px;font-size:.78rem}.realm-selection input{width:16px;height:16px}

/* Media cards: keep their photographs clean; actions live *below* the image. */
#chatFeed .chat-attachment .chat-image-open::before,
#chatFeed .chat-attachment .chat-attachment-more::before{display:none!important;content:none!important}
#chatFeed .chat-attachment .chat-image-open{font-size:0!important;line-height:0!important;min-width:0!important;min-height:0!important;padding:0!important;box-shadow:none!important;border:0!important}
#chatFeed .chat-attachment .chat-attachment-more{position:static!important;display:inline-flex!important;align-self:flex-start;min-width:0!important;width:auto!important;height:auto!important;min-height:0!important;line-height:1.2;padding:2px 5px!important;margin:0!important;font-size:10px!important;color:#bcd3df!important;background:transparent!important;border:0!important;border-radius:4px;z-index:auto}
#chatFeed .chat-attachment .chat-attachment-menu{top:auto;bottom:20px;right:4px;z-index:6}
#chatFeed .chat-media-grid .chat-attachment{align-content:start}

#chatFeed .chat-panorama-attachment>.chat-attachment-image:first-child{grid-column:1/-1;width:100%;max-width:320px}
#chatFeed .chat-panorama-attachment>.chat-attachment-image:first-child .chat-image-open{aspect-ratio:auto;max-height:170px}
#chatFeed .chat-panorama-attachment>.chat-attachment-image:first-child .chat-image-open img{width:100%;max-height:170px;object-fit:contain}
#chatFeed .chat-camera-source-frames{grid-column:1/-1;min-width:0;padding:3px 0}
#chatFeed .chat-camera-source-frames>summary{font-size:11px;color:#adc7d6;cursor:pointer;padding:3px 5px}
#chatFeed .chat-camera-source-frames>.chat-media-grid{margin-top:5px}

.wall-panel{position:fixed;left:clamp(14px,5vw,80px);top:clamp(55px,10vh,130px);width:min(350px,calc(100vw - 28px));max-height:80vh;overflow:auto;z-index:1300;background:#102d3d;box-shadow:0 12px 35px #0008;border:1px solid #789cad;border-radius:15px;color:#ebf6ff}
.wall-panel-content{display:grid;gap:9px;padding:12px}.wall-panel-content label{display:grid;gap:5px;font-size:.84rem}.wall-panel-content input[type=range]{width:100%;accent-color:#6cdbed}.wall-panel-content select,.wall-panel-content input[type=color]{width:100%;min-height:32px}.wall-row{display:grid;grid-template-columns:1fr 1fr;gap:10px}.wall-panel-content label:has(input[type=checkbox]){display:flex;align-items:center;gap:7px}.wall-actions{display:flex;gap:6px;flex-wrap:wrap}.wall-actions button{font-size:.8rem;padding:7px 10px}.wall-panel[hidden]{display:none!important}
/* Office wall builder: compact, draggable, touch-friendly, one active range control. */
#wallPanel.wall-panel{position:fixed;top:72px;left:20px;right:auto;bottom:auto;width:min(324px,calc(100vw - 20px));max-height:min(84dvh,720px);overflow:hidden;display:flex;flex-direction:column;z-index:1300;background:var(--ui-panel,#102d3d);color:var(--ui-fg,#e9f6ff);border:1px solid color-mix(in srgb,var(--ui-fg,#ccefff) 22%,transparent);border-radius:12px}
#wallPanel>.panel-title{flex-shrink:0;min-height:36px;padding:6px 9px;font-size:12px;cursor:grab;touch-action:none;user-select:none}
#wallPanel>.panel-title strong{font-size:12px}
#wallPanel .wall-panel-content{display:grid;gap:7px;padding:9px;min-height:0;overflow-y:auto;overscroll-behavior:contain}
#wallPanel .wall-panel-content label{display:grid;gap:3px;font-size:11px;min-width:0;color:var(--ui-fg,#ebf6ff)}
#wallPanel .wall-panel-content :is(select,input[type=number]){font-size:12px;line-height:1.2;min-height:29px;max-height:33px;width:100%;padding:4px 6px;border-radius:6px;background:var(--ui-button,#193b4b);color:var(--ui-fg,#fff);border:1px solid color-mix(in srgb,var(--ui-fg,#fff) 22%,transparent)}
#wallPanel .wall-panel-content select{padding-right:18px}
#wallPanel .wall-compact-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;align-items:end}
#wallPanel .wall-material{grid-template-columns:minmax(0,1.3fr) minmax(0,.8fr) minmax(0,1fr)}
#wallPanel .wall-material input[type=color]{height:29px;min-height:29px;padding:2px;width:100%;cursor:pointer}
#wallPanel .wall-material button{align-self:end;min-height:29px;font-size:11px;padding:4px 5px}
#wallPanel .wall-snapping .wall-check,#wallPanel .wall-smoothing .wall-check{align-self:end;display:flex;align-items:center;gap:4px;min-height:29px;white-space:nowrap}
#wallPanel .wall-check input[type=checkbox]{width:15px;height:15px;flex-shrink:0}
#wallPanel .wall-smoothing button{font-size:11px;min-height:29px;padding:4px 5px}
#wallPanel .wall-active-slider{display:grid;gap:2px;grid-template-columns:1fr;align-items:center}
#wallPanel .wall-active-slider span{font-size:10px;opacity:.75}
#wallPanel .wall-active-slider input{width:100%;height:18px;accent-color:var(--solvi-accent,#68dbe6);margin:0}
#wallPanel .wall-actions{display:flex;flex-wrap:nowrap;gap:4px;padding-top:2px}
#wallPanel .wall-actions button{font-size:11px;white-space:nowrap;flex:1 1 auto;min-height:32px;padding:5px 7px}
#wallPanel .wall-actions #wallConfirm{flex:1.5 0 auto}
#wallPanel #wallStatus{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:10px;min-height:14px;opacity:.7}
@media(max-width:480px){#wallPanel.wall-panel{left:7px;top:55px;width:min(308px,calc(100vw - 14px));max-height:68dvh}#wallPanel .wall-panel-content{gap:5px;padding:7px}#wallPanel .wall-panel-content :is(select,input[type=number]){font-size:11px}#wallPanel .wall-compact-fields{gap:4px}}

/* v0.2.82: keep native pickers visible and all fields scrollable; no clipping by nested grid. */
#wallPanel.wall-panel{max-height:calc(100dvh - 20px);width:min(350px,calc(100vw - 16px));overflow:auto;min-height:0}
#wallPanel .wall-panel-content{overflow:visible;min-height:auto;flex:0 0 auto}
#wallPanel .wall-compact-fields>*{min-width:0;max-width:100%}
#wallPanel .wall-compact-fields :is(input,select,button){min-width:0;box-sizing:border-box}
#wallPanel .wall-compact-fields{grid-template-columns:repeat(3,minmax(0,1fr));gap:5px}
#wallPanel .wall-actions{display:flex;flex-wrap:wrap}
#wallPanel .wall-actions button{flex:1 1 28%;min-width:0}
#wallPanel .wall-actions #wallConfirm{flex:1 1 39%}
#wallPanel #wallStairOptions{display:grid;gap:6px}
#wallPanel #wallStairOptions[hidden],#wallPanel #wallMaterialOptions[hidden],#wallPanel #wallSmoothingOptions[hidden],#wallPanel #wallPreviewModeRow[hidden]{display:none!important}
#wallPanel .wall-guide-note{font-size:10px;align-self:center;opacity:.8}
@media(max-width:480px){#wallPanel.wall-panel{max-height:calc(100dvh - 12px);top:6px;left:6px;width:calc(100vw - 12px)}#wallPanel .wall-compact-fields{grid-template-columns:repeat(3,minmax(0,1fr))}}

/* Compact game-action settings reuse inspector dimensions and input styling. */
.robot-combat-list{display:grid;gap:6px;margin:8px 0}
.robot-combat-row{display:grid;grid-template-columns:minmax(60px,1fr) minmax(80px,1.1fr) minmax(66px,.8fr);align-items:center;gap:6px}
.robot-combat-row label{font-size:.83rem}
.robot-combat-row select,.robot-combat-row input{box-sizing:border-box;width:100%;min-width:0;max-width:100%;padding:6px;border-radius:6px}
#robotCombatDetails small{display:block;margin:6px 0;color:var(--muted,#9eb4c6);font-size:.72rem}

/* Inspector: explain the distinction between static scenery and dynamic targets. */
#propertiesPanel .combat-physics-row{display:flex;align-items:center;gap:6px;justify-content:space-between;min-width:0}
#propertiesPanel .combat-physics-row small{flex:1;min-width:0;font-size:10px!important;line-height:1.3!important}
#propertiesPanel #makeObjectPushable{flex:none;white-space:nowrap;padding:5px 7px;font-size:10px}
/* Library management · 0.2.90: same portrait card layout in Avatar and Asset libraries. */
.avatar-gallery .asset-gallery-actions{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:6px 0 9px;min-width:0}
.avatar-gallery .asset-gallery-actions input[type=search]{min-width:120px;flex:1 1 210px;max-width:none}
.avatar-gallery .library-bulk{display:flex;flex-wrap:wrap;align-items:center;gap:7px;margin:0 0 10px;padding:7px 0;border-bottom:1px solid var(--ui-border,#486071)}
.avatar-gallery .library-bulk[hidden]{display:none!important}
.avatar-gallery .library-bulk span{font-size:12px;margin-right:auto}
.avatar-gallery .library-item{position:relative;min-width:0;aspect-ratio:3/4;border-radius:11px;overflow:hidden}
.avatar-gallery .library-item.selected{outline:2px solid #6cdbeb;outline-offset:-2px}
.avatar-gallery .library-item>.avatar-card,.avatar-gallery .library-item>.asset-card{width:100%!important;height:100%!important;min-height:0!important;position:relative!important;aspect-ratio:auto!important;display:block!important;padding:0!important;border-radius:11px!important;overflow:hidden!important}
#assetGalleryBackdrop .library-item>.asset-card .asset-preview{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;aspect-ratio:auto!important;border-radius:0!important;background:#182c40;display:flex;align-items:center;justify-content:center}
#assetGalleryBackdrop .library-item>.asset-card .asset-preview :is(img,canvas){width:100%!important;height:100%!important;object-fit:contain!important}
#assetGalleryBackdrop .library-item>.asset-card::after{content:"";position:absolute;inset:48% 0 0;pointer-events:none;background:linear-gradient(transparent,rgba(0,0,0,.88))}
#assetGalleryBackdrop .library-item>.asset-card strong,#assetGalleryBackdrop .library-item>.asset-card small{position:absolute;left:10px;right:10px;z-index:1;color:white!important;text-align:left;text-shadow:0 1px 3px #000;white-space:normal!important;max-width:none;font-weight:650}
#assetGalleryBackdrop .library-item>.asset-card strong{bottom:28px;font-size:13px!important;line-height:1.15;max-height:40px;overflow:hidden}
#assetGalleryBackdrop .library-item>.asset-card small{bottom:9px;font-size:10px!important;opacity:.9;font-weight:400}
.avatar-gallery .library-item>.library-check{position:absolute;top:9px;right:9px;z-index:4;appearance:auto!important;accent-color:#64d6e8;cursor:pointer;width:24px!important;height:24px!important;box-shadow:0 1px 5px #000;background:#122b3c;border:1px solid white;border-radius:5px}
.avatar-gallery .library-item>.library-check[hidden]{display:none!important}
#avatarGalleryGrid .library-item>.avatar-card .library-card-meta{font-size:10px;line-height:1.15;bottom:8px;max-height:24px;overflow:hidden}
#avatarGalleryGrid .library-item>.avatar-card strong{bottom:34px;max-height:36px;overflow:hidden}
#assetGalleryBackdrop .avatar-gallery-grid{grid-template-columns:repeat(auto-fill,minmax(142px,1fr));gap:10px}
@media(max-width:600px){.avatar-gallery .library-bulk button{flex:1 1 auto}.avatar-gallery .library-item{aspect-ratio:3/4}.avatar-gallery .asset-gallery-actions input[type=search]{width:100%}}

/* Override the historical ID-specific gallery sizing so both libraries use consistent portrait cards. */
#avatarGalleryGrid .library-item>.avatar-card,#assetGalleryGrid .library-item>.asset-card{height:100%!important;min-height:0!important;aspect-ratio:auto!important;display:block!important}
#assetGalleryBackdrop #assetGalleryGrid .library-item>.asset-card .asset-preview{position:absolute!important;inset:0!important;height:100%!important;aspect-ratio:auto!important}


/* 0.2.91 · Asset library: bounded paginated grid, no inherited button sizing.
   Isolated rows avoid collision between long filenames, thumbnails and controls. */
#assetGalleryBackdrop .asset-gallery{width:min(960px,96vw)!important;max-height:min(90dvh,950px)!important;min-width:0!important;overflow:hidden!important;display:flex!important;flex-direction:column!important}
#assetGalleryBackdrop #assetGalleryGrid{display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr))!important;grid-auto-flow:row!important;grid-auto-rows:226px!important;align-content:start!important;align-items:start!important;gap:12px!important;min-height:0!important;max-height:none!important;flex:1 1 auto!important;overflow-y:auto!important;overflow-x:hidden!important;padding:8px!important;box-sizing:border-box!important}
#assetGalleryBackdrop #assetGalleryGrid .library-item{display:block!important;position:relative!important;width:100%!important;min-width:0!important;max-width:100%!important;height:226px!important;min-height:226px!important;max-height:226px!important;aspect-ratio:auto!important;box-sizing:border-box!important;overflow:hidden!important;isolation:isolate!important}
#assetGalleryBackdrop #assetGalleryGrid .library-item>.asset-card{position:relative!important;inset:auto!important;display:block!important;width:100%!important;height:100%!important;min-width:0!important;max-width:100%!important;min-height:0!important;max-height:100%!important;padding:0!important;margin:0!important;aspect-ratio:auto!important;box-sizing:border-box!important;overflow:hidden!important;border-radius:11px!important;line-height:normal!important;font-size:12px!important;contain:layout paint!important}
#assetGalleryBackdrop #assetGalleryGrid .asset-card .asset-preview{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-height:none!important;min-height:0!important;border-radius:0!important;overflow:hidden!important}
#assetGalleryBackdrop #assetGalleryGrid .asset-card .asset-preview :is(img,canvas){display:block!important;width:100%!important;height:100%!important;object-fit:contain!important;max-width:100%!important;max-height:100%!important}
#assetGalleryBackdrop #assetGalleryGrid .asset-card strong{position:absolute!important;left:8px!important;right:8px!important;bottom:27px!important;top:auto!important;max-width:calc(100% - 16px)!important;max-height:36px!important;overflow:hidden!important;display:-webkit-box!important;-webkit-line-clamp:2;-webkit-box-orient:vertical;white-space:normal!important;overflow-wrap:anywhere!important;font-size:12px!important;line-height:17px!important;margin:0!important;padding:0!important;z-index:2!important}
#assetGalleryBackdrop #assetGalleryGrid .asset-card small{position:absolute!important;left:8px!important;right:8px!important;bottom:7px!important;top:auto!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;max-height:17px!important;z-index:2!important}
#assetGalleryBackdrop .library-pagination{display:flex;align-items:center;justify-content:center;gap:12px;flex:0 0 auto;min-height:42px;border-top:1px solid var(--ui-border,#475666);padding-top:7px;margin-top:6px}
#assetGalleryBackdrop .library-pagination button{font-size:12px!important;min-height:32px!important;padding:5px 12px!important}
#assetGalleryBackdrop .library-pagination span{font-size:12px;white-space:nowrap;min-width:90px;text-align:center}
@media(max-width:760px){#assetGalleryBackdrop #assetGalleryGrid{grid-template-columns:repeat(3,minmax(0,1fr))!important;grid-auto-rows:194px!important;gap:8px!important}#assetGalleryBackdrop #assetGalleryGrid .library-item{height:194px!important;min-height:194px!important;max-height:194px!important}}
@media(max-width:520px){#assetGalleryBackdrop #assetGalleryGrid{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-rows:194px!important}#assetGalleryBackdrop .asset-gallery{max-height:95dvh!important}}

/* v0.2.92 — one action toolbar for the selected realm; no repeating actions below tiles. */
.realm-card-grid .realm-card-tile{min-height:0!important;margin:0!important;display:flex;flex-direction:column;gap:5px}
.realm-card-grid .realm-card{flex:0 0 auto!important;height:auto!important;min-height:0!important;aspect-ratio:16/9!important;margin:0!important}
.realm-card-grid .realm-selection{position:static;min-height:28px;display:flex;align-items:center;gap:7px;margin:0;padding:1px 5px;font-size:12px}
.realm-card-grid .realm-selection input{flex:0 0 auto}
.realm-card-grid .realm-card-controls{display:none!important}
.realm-gallery-actions{display:flex;flex-wrap:wrap;align-items:center;gap:6px}
.realm-gallery-actions button,.realm-gallery-actions select{min-height:34px;max-width:100%}
.realm-gallery-actions #realmArchiveStatus{flex:1 0 100%;min-height:17px;overflow-wrap:anywhere}
@media(max-width:620px){.realm-gallery-actions button{flex:1 1 auto}.realm-gallery-actions select{width:100%;flex:1 1 100%}}

/* v0.2.92 — avatar deletion must never fail silently or hide feedback below the grid. */
.library-management-notice{padding:9px 12px;border:1px solid var(--border,#597b8a);border-radius:9px;background:#193746;color:#e7faff;font-size:13px;line-height:1.4;overflow-wrap:anywhere;flex:0 0 auto}
.library-management-notice.error{border-color:#bd6775;background:#47262d;color:#fff0ed}
.library-admin-inline{display:flex;flex-wrap:wrap;gap:7px;align-items:center;padding:8px;border:1px solid #56717c;border-radius:10px;background:#122d39;font-size:13px}
.library-admin-inline label{flex:1 1 100%;font-size:12px}
.library-admin-inline input{flex:1 1 160px;min-width:0;max-width:330px;min-height:34px}
.library-admin-inline button{min-height:34px}
.library-admin-inline span{flex:1 1 100%;overflow-wrap:anywhere}
#avatarGalleryBackdrop .avatar-gallery{overflow-y:auto;max-height:min(92vh,1000px)}
#avatarGalleryBackdrop .library-management-notice,#avatarGalleryBackdrop .library-admin-inline{position:relative;z-index:1}

/* v0.2.95: single application-wide administrator login lives in Profile. */
.profile-admin-section{border:1px solid var(--solvi-border,#40536b);border-radius:10px;margin:14px 0 8px;padding:11px;display:grid;gap:8px;background:rgba(54,91,116,.12)}
.profile-admin-heading{display:flex;align-items:center;justify-content:space-between;gap:8px;flex-wrap:wrap}
.profile-admin-heading strong{font-size:12px}
.profile-admin-badge{font-size:10px;color:var(--solvi-muted,#a6b6c8)}
.profile-admin-badge.active{color:#70dcb6;font-weight:700}
.profile-admin-login-row,.profile-admin-actions{display:flex;align-items:center;gap:7px;flex-wrap:wrap;min-width:0}
.profile-admin-login-row input{flex:1 1 165px;min-width:0;max-width:100%;font-size:12px;padding:8px 10px;border-radius:7px}
.profile-admin-login-row button,.profile-admin-actions button{flex:0 0 auto;padding:8px 11px}
.profile-admin-section small{font-size:10px;color:var(--solvi-muted,#b4c4d6);line-height:1.4}
@media(max-width:410px){.profile-admin-login-row input{flex-basis:100%}}

/* v0.2.96: World Tools always leaves a draggable mini toolbar. */
#editorToolbox[hidden]{display:none!important}
#editorToolbox.editor-toolbox.minimized{display:block!important;visibility:visible!important;width:164px!important;min-width:164px!important;max-width:164px!important;height:44px!important;min-height:44px!important;overflow:hidden!important;left:12px;top:108px}
#editorToolbox.minimized #toolboxActions{display:none!important}
#editorToolbox.minimized .toolbox-title{display:flex!important;cursor:grab}
#editorToolbox.minimized .toolbox-title>strong{font-size:13px!important}
#editorToolbox.minimized #toolboxMinimize{display:inline-flex!important}
.chase-smart-angle-control{position:fixed;bottom:114px;left:190px;z-index:38;background:var(--ui-panel,#142c39);color:white;border-radius:10px;padding:6px 10px;display:flex;gap:8px;align-items:center;font-size:12px}
.chase-smart-angle-control[hidden]{display:none!important}
.chase-smart-angle-control input{width:110px}
@media(max-width:750px){.chase-smart-angle-control{left:8px;bottom:145px}}

.admin-chat-controls{display:flex;align-items:center;gap:7px;flex-wrap:wrap;padding:5px 12px;background:var(--ui-panel,#102b3d);font-size:12px}
.admin-chat-controls[hidden]{display:none!important}
.admin-chat-controls>button{font-size:12px;min-height:28px;padding:4px 8px}
.admin-chat-controls>span{color:var(--ui-muted,#acc3cf)}

/* v0.2.97: robot routines use the same moveable-window affordance as Brains. */
#robotRoutinePanel.robot-routine-panel{right:auto;left:min(40vw,480px);top:90px;display:flex;flex-direction:column;overflow:hidden;padding:0;max-height:min(82vh,760px);width:min(420px,calc(100vw - 24px));z-index:var(--solvi-window-z,580)}
#robotRoutinePanel .panel-title.drag-handle{display:flex;align-items:center;justify-content:space-between;cursor:grab;touch-action:none;user-select:none;padding:10px 12px;flex-shrink:0}
#robotRoutinePanel .robot-routine-controls{overflow-y:auto;min-height:0;display:grid;gap:8px;padding:12px}
#robotRoutinePanel .robot-routine-controls>label{min-width:0}
@media(max-width:650px){#robotRoutinePanel.robot-routine-panel{max-width:calc(100vw - 16px);width:calc(100vw - 16px);left:8px;top:70px}}
/* Confirmation and exact-name deletion dialogs are app UI, not suppressible browser alerts. */
.solvi-action-dialog{position:fixed;z-index:10000;margin:auto;inset:0;color:var(--ui-fg,#edf6ff);background:var(--ui-panel,#122c3a);border:1px solid color-mix(in srgb,currentColor 27%,transparent);box-shadow:0 14px 64px #0009;border-radius:14px;padding:0;max-width:min(480px,calc(100vw - 24px));width:100%}
.solvi-action-dialog::backdrop{background:rgba(0,0,0,.68)}
.solvi-action-card{display:grid;gap:14px;padding:20px}
.solvi-action-card h2{font-size:18px;margin:0}
.solvi-action-card p{font-size:14px;white-space:pre-wrap;margin:0;line-height:1.5}
.solvi-action-card input{min-width:0;width:100%;min-height:40px;box-sizing:border-box;background:var(--ui-bg,#0d1d2d);color:inherit;border:1px solid #617b90;border-radius:7px;padding:8px 10px}
.solvi-action-buttons{display:flex;justify-content:flex-end;gap:9px;flex-wrap:wrap}
.solvi-action-buttons button{min-height:38px;white-space:normal}
.solvi-danger-button:not(:disabled){background:#b94141;color:white}
.solvi-primary-button:not(:disabled){background:#6bd4e6;color:#101b26}
.solvi-action-buttons button:disabled{opacity:.4;cursor:not-allowed}

/* v0.2.98: shared gallery card sizing and compact geometry controls. */
.library-view-switch{display:inline-flex;gap:2px;flex:0 0 auto;background:#102333;border:1px solid #41586a;border-radius:8px;padding:3px}
.library-view-switch button{min-width:32px!important;min-height:31px!important;padding:4px 7px!important;font-weight:700!important}
.library-view-switch button[aria-pressed="true"]{background:#6bcfe2!important;color:#071623!important}
#avatarGalleryGrid[data-card-size="s"],#assetGalleryBackdrop #assetGalleryGrid[data-card-size="s"]{grid-template-columns:repeat(auto-fill,minmax(104px,1fr))!important;grid-auto-rows:154px!important}
#avatarGalleryGrid[data-card-size="m"],#assetGalleryBackdrop #assetGalleryGrid[data-card-size="m"]{grid-template-columns:repeat(auto-fill,minmax(140px,1fr))!important;grid-auto-rows:194px!important}
#avatarGalleryGrid[data-card-size="l"],#assetGalleryBackdrop #assetGalleryGrid[data-card-size="l"]{grid-template-columns:repeat(auto-fill,minmax(165px,1fr))!important;grid-auto-rows:226px!important}
#avatarGalleryGrid[data-card-size] .library-item,#assetGalleryBackdrop #assetGalleryGrid[data-card-size] .library-item{width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;aspect-ratio:auto!important}
#avatarGalleryGrid[data-card-size] .library-item>.avatar-card,#assetGalleryBackdrop #assetGalleryGrid[data-card-size] .library-item>.asset-card{height:100%!important;contain:layout paint!important}
@media(max-width:540px){#avatarGalleryGrid[data-card-size="l"],#assetGalleryBackdrop #assetGalleryGrid[data-card-size="l"]{grid-template-columns:repeat(2,minmax(0,1fr))!important}#avatarGalleryGrid[data-card-size="m"],#assetGalleryBackdrop #assetGalleryGrid[data-card-size="m"]{grid-template-columns:repeat(3,minmax(0,1fr))!important}#avatarGalleryGrid[data-card-size="s"],#assetGalleryBackdrop #assetGalleryGrid[data-card-size="s"]{grid-template-columns:repeat(4,minmax(0,1fr))!important}}
.primitive-properties-fields{display:grid!important;grid-template-columns:minmax(0,1fr) minmax(65px,85px)!important;align-items:center;gap:5px!important}
.primitive-properties-fields :is(select,input[type=number]){width:100%;min-width:0;box-sizing:border-box;background:#112338;color:#eaf5ff;border:1px solid #426078;border-radius:6px;min-height:34px}
.primitive-properties-fields input[type=range]{grid-column:1 / -1;width:100%;min-width:0}
#smartChaseAngleControl{position:static!important;display:flex;gap:8px;align-items:center;max-width:100%;margin-top:8px;background:transparent!important;border:0!important;transform:none!important}
#smartChaseAngleControl[hidden]{display:none!important}
#smartChaseAngleControl input{min-width:65px;flex:1}

/* v0.2.100: single active Objects highlight, surface sketches and 3D curve editor. */
#sceneItems .scene-item-row.is-active{border-left:3px solid #75e8fa;border-radius:8px;background:#cdf6ff!important;box-shadow:inset 0 0 0 1px #8eeaff}
#sceneItems .scene-item-row.is-active .scene-item-name,#sceneItems .scene-item-row.is-active button.scene-item-name.selected{color:#092b40!important;background:#dbfaff!important;font-weight:800!important;text-shadow:none!important}
#sceneItems .scene-item-row.is-active .scene-item-lock,#sceneItems .scene-item-row.is-active .scene-item-delete{filter:brightness(.8)}
#curveProperties .spatial-param-row{display:flex;gap:5px;align-items:center;margin:8px 0}
#curveProperties .spatial-param-row select{flex:1;min-width:0}
#curveProperties .spatial-param-row input{width:85px;min-width:70px}
#curveProperties #curvePropertyRange{width:100%}
#curveProperties .spatial-check{display:flex;align-items:center;gap:7px;font-size:12px;margin:8px 0}
#curveProperties .spatial-check input{accent-color:#7ce9f8}
.spatial-tool-window{position:fixed;z-index:120;top:115px;left:24px;width:min(335px,calc(100vw - 24px));max-height:80vh;overflow:auto;padding:12px;background:#112b39;border:1px solid #4b7b93;border-radius:12px;box-shadow:0 10px 40px #0008;color:#e5f5fc}
.spatial-tool-body{display:grid;gap:8px}.spatial-tool-body label{display:flex;align-items:center;justify-content:space-between;gap:5px;font-size:12px}
.spatial-tool-body input{min-width:65px;width:110px;max-width:50%;padding:7px;background:#112135;color:#f4faff;border:1px solid #517087;border-radius:6px}
.spatial-actions{display:flex;align-items:center;gap:7px;justify-content:space-between;flex-wrap:wrap;margin-top:8px}
.spatial-actions button{border-radius:7px;padding:7px 10px;background:#275267;color:white;border:1px solid #5486a2}
#surfaceDrawPanel p{margin:8px 0;font-size:12px}
.chat-media-picker{max-height:86vh;width:min(820px,95vw);display:flex;flex-direction:column;gap:10px}
#chatMediaSearch{width:100%;padding:11px;background:#101d30;color:#edf9ff;border:1px solid #4e6c85;border-radius:8px}
.chat-media-results{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:9px;overflow:auto;min-height:50px}
.chat-media-card{display:flex;flex-direction:column;align-items:stretch;gap:6px;min-width:0;padding:7px;background:#1b3448;color:#e9faff;border:1px solid #33576c;border-radius:9px;text-align:left}
.chat-media-thumb{width:100%;height:115px;border-radius:5px;overflow:hidden;display:grid;place-items:center;background:#071524;font-size:12px}
.chat-media-thumb img{max-width:100%;max-height:100%;object-fit:contain}
.chat-media-name{font-size:11px;overflow-wrap:anywhere;max-height:44px;overflow:hidden}
@media(max-width:600px){.spatial-tool-window{top:65px;left:8px}.chat-media-results{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.2.101 — drag-first surface workflow. The hit layer is in front of HUDs
   but behind the small non-interactive status; it receives one whole gesture. */
#spatialDrawShield:not([hidden]){position:fixed!important;inset:0!important;display:block!important;z-index:119!important;pointer-events:auto!important;touch-action:none!important;cursor:crosshair!important;background:transparent!important;user-select:none!important;-webkit-user-select:none!important}
#spatialDrawShield[hidden]{display:none!important}
#surfaceDrawPanel.spatial-tool-status:not([hidden]){position:fixed!important;z-index:121!important;left:50%!important;bottom:max(22px,env(safe-area-inset-bottom))!important;top:auto!important;transform:translateX(-50%)!important;display:flex!important;align-items:center!important;flex-wrap:wrap!important;gap:7px 12px!important;width:max-content!important;max-width:calc(100vw - 24px)!important;min-height:0!important;max-height:none!important;padding:9px 14px!important;border:1px solid #557d8d!important;border-radius:10px!important;background:rgba(12,35,48,.92)!important;box-shadow:0 4px 18px #0005!important;font-size:12px!important;color:#eaf6fc!important;pointer-events:none!important;user-select:none!important}
#surfaceDrawPanel.spatial-tool-status strong{white-space:nowrap;font-size:12px}
#surfaceDrawPanel.spatial-tool-status span{color:#c6dfe9;font-size:12px}
@media(max-width:650px){#surfaceDrawPanel.spatial-tool-status:not([hidden]){left:8px!important;right:8px!important;transform:none!important;width:auto!important;bottom:12px!important}}

/* v0.2.102 — compact text geometry inspector */
.text-geometry-settings{display:grid;grid-template-columns:1fr 1fr;gap:8px;padding:8px 0}
.text-geometry-settings label{min-width:0;display:flex;flex-direction:column;gap:3px;font-size:11px;color:#c8dce7}
.text-geometry-settings label:first-child{grid-column:1/-1}
.text-geometry-settings input,.text-geometry-settings select{width:100%;min-width:0;padding:6px 8px;border:1px solid #547084;border-radius:6px;background:#12253a;color:#f5fbff}
/* v0.2.103: subtle animation for *new* robot utterances only. */
@keyframes solviRobotCloudPop{0%{opacity:0;transform:translateY(5px) scale(.96)}65%{opacity:1;transform:translateY(-1px) scale(1.015)}100%{opacity:1;transform:none}}
#chatFeed .robot-bubble-enter .chat-bubble{animation:solviRobotCloudPop .25s cubic-bezier(.2,.7,.25,1) both}
#chatFeed .robot-typing::after{content:'▏';opacity:.6;animation:solviCursor 1s step-end infinite}
@keyframes solviCursor{50%{opacity:0}}
@media(prefers-reduced-motion:reduce){#chatFeed .robot-bubble-enter .chat-bubble,#chatFeed .robot-typing::after{animation:none!important}}
.surface-source-tabs{display:flex;gap:6px;flex-wrap:wrap;margin:0 0 10px}
.surface-source-tabs button{font-size:12px;flex:1;min-width:90px;padding:8px;background:#1c2c3c;border:1px solid #49647c;border-radius:8px;color:#dce9f2}
.surface-source-tabs button[aria-pressed="true"]{background:#385a79;border-color:#8abddd;color:#fff}
#surfaceOtherSources{margin-top:12px}
#surfaceSourceStatus{display:block;min-height:24px;margin:6px 0 12px;color:#c4d9e8}
.surface-upload-label{display:block;border:1px dashed #637b90;border-radius:9px;padding:10px;margin:9px 0;color:#e7f4fa}
.surface-upload-label input{display:block;max-width:100%;margin-top:7px}
.surface-camera-actions{display:flex;flex-wrap:wrap;gap:8px;margin:9px 0}
.surface-camera-actions button{padding:9px 11px}
#surfaceCameraPreview{display:block;width:min(100%,630px);max-height:46vh;object-fit:contain;border-radius:8px;background:#060a12}
/* Compact inline audio rather than the browser's oversized native bar. */
#chatFeed .chat-attachment-audio{max-width:100%;min-width:0}
#chatFeed .chat-audio-compact{display:flex;align-items:center;gap:7px;max-width:100%;width:min(265px,100%);padding:4px 2px}
#chatFeed .chat-audio-compact audio{display:none}
#chatFeed .chat-audio-compact button{flex-shrink:0;display:grid;place-items:center;background:#294e65;border:1px solid #557d92;color:#edf7ff;border-radius:50%;width:29px;height:29px;padding:0;cursor:pointer;font-size:12px}
#chatFeed .chat-audio-compact input[type=range]{min-width:36px;flex:1;accent-color:#8bd8ef;height:4px;padding:0}
#chatFeed .chat-audio-compact time{white-space:nowrap;font-size:10px;font-variant-numeric:tabular-nums;color:#bcd7e7}
#chatFeed .chat-audio-compact button:last-child{background:transparent;border:none;font-size:14px;width:24px;height:24px}
#composerRecorderLivePreview{width:100%;max-height:180px;object-fit:contain;background:#050b13;border-radius:9px;margin:8px 0}
#composerRecorderPlayer video{max-width:100%;max-height:185px;object-fit:contain}

/* v0.2.104 compact robot portrait picker and chat controls */
#controlSwitcher{position:relative!important;display:flex;align-items:center;gap:6px;}
#controlSwitcher .robot-face-options{position:absolute;bottom:calc(100% + 8px);left:0;display:flex;gap:6px;padding:6px;border-radius:12px;border:1px solid var(--ui-border,#71809b);background:var(--ui-panel,#122739);max-width:min(400px,calc(100vw - 18px));overflow-x:auto;box-shadow:0 5px 18px #0009;z-index:28;}
#controlSwitcher .robot-face-options[hidden]{display:none!important;}
#controlSwitcher .robot-face-choice{display:flex;flex-direction:column;align-items:center;gap:3px;min-width:60px;max-width:80px;background:transparent;color:var(--ui-fg,#fff);border:1px solid transparent;border-radius:9px;padding:4px;cursor:pointer;}
#controlSwitcher .robot-face-choice[aria-pressed=true]{border-color:var(--solvi-accent);background:color-mix(in srgb,var(--solvi-accent) 20%,transparent);}
.robot-face-avatar{width:47px;height:47px;min-width:47px;border-radius:50%;display:grid;place-items:center;overflow:hidden;background:#39546b;color:white;font-size:15px;font-weight:650;}
.robot-face-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;}
.robot-face-choice small{max-width:75px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:10px;}
#chatPanel .chat-page-down{right:auto!important;left:50%!important;transform:translateX(-50%)!important;font-size:23px!important;}
#chatFeed .chat-avatar{width:calc(30px * 1.5)!important;height:calc(30px * 1.5)!important;min-width:45px!important;min-height:45px!important;font-size:13px!important;flex:none!important;}
#chatFeed .chat-avatar img{width:100%;height:100%;object-fit:cover;border-radius:50%;}
#webcamPanel .webcam-record-actions{display:flex;flex-wrap:wrap;gap:5px;}
#webcamPanel .webcam-record-actions button{min-height:29px;font-size:11px;padding:3px 6px;}
#webcamPanel .webcam-record-actions #webcamXRRecord{flex:1 1 100%;}

/* v0.2.105: compact, custom streamed-media chrome without filenames or native controls */
#chatFeed .chat-attachment-video,#chatFeed .chat-attachment-audio{width:min(380px,100%);max-width:100%;padding:0!important;gap:2px!important;background:none!important;position:relative}
#chatFeed .chat-attachment :is(.chat-attachment-title,.chat-attachment-save){display:none!important}
#chatFeed .chat-attachment :is(.chat-attachment-actions,.chat-attachment-actions .chat-attachment-save){display:flex!important}
#chatFeed .chat-attachment-actions{position:absolute;right:4px;top:4px;z-index:4;gap:3px;align-items:center}
#chatFeed .chat-attachment-actions a,#chatFeed .chat-attachment-actions button{display:grid!important;place-items:center;width:23px;height:23px;min-width:0;border-radius:5px;border:1px solid #426077;background:rgba(11,28,41,.87);color:#ebf7ff;text-decoration:none;font-size:15px;padding:0;margin:0;cursor:pointer}
#chatFeed .chat-attachment :is(.chat-attachment-more){position:absolute!important;top:4px!important;left:4px!important;right:auto!important;width:23px!important;height:23px!important;display:grid!important;place-items:center!important;border-radius:5px!important;background:rgba(11,28,41,.87)!important;border:1px solid #426077!important;color:#eaf6ff!important;font-size:16px!important;padding:0!important}
#chatFeed .chat-attachment-menu{top:31px!important;left:4px;right:auto;bottom:auto!important}
#chatFeed .chat-player{display:flex;flex-direction:column;gap:0;width:100%;min-width:0;overflow:hidden;border-radius:8px;background:rgba(3,11,20,.78)}
#chatFeed .chat-player-video video{display:block!important;width:100%!important;max-height:245px!important;aspect-ratio:16/9;object-fit:contain;background:#02070d;border-radius:0;cursor:pointer;margin:0!important}
#chatFeed .chat-player-audio audio{display:none!important}
#chatFeed .chat-player-controls{display:flex;align-items:center;gap:5px;padding:3px 5px;min-height:31px}
#chatFeed .chat-player button{background:transparent;color:#dfedf6;flex:0 0 auto;border:0;padding:0;width:24px;height:25px;font-size:13px;line-height:1;cursor:pointer}
#chatFeed .chat-player .chat-player-progress{flex:1;min-width:30px;width:100%;height:4px;margin:0;padding:0;accent-color:#9ce4f6}
#chatFeed .chat-player-time{white-space:nowrap;color:#c4d8e8;font-size:10px;font-variant-numeric:tabular-nums}
#chatFeed .chat-player-status{padding:0 8px 3px;font-size:10px;color:#b3d7e7}
#chatFeed .chat-attachment-audio .chat-player{width:min(275px,100%)}
#chatFeed .chat-bubble{padding:7px 9px!important}
#composerRecorderPanel{padding:6px!important;gap:4px}
.composer-recorder-controls{gap:3px!important}
.composer-recorder-controls>button{min-height:25px!important;padding:3px 6px!important;font-size:11px!important}
#composerRecorderPlayer .chat-player{width:min(310px,100%);background:#061423;border-radius:6px;overflow:hidden}
#composerRecorderPlayer .chat-player video{display:block;width:100%;max-height:155px;object-fit:contain}
#composerRecorderPlayer .chat-player audio{display:none}
#composerRecorderPlayer .chat-player-controls{display:flex;align-items:center;gap:5px;padding:4px}
#composerRecorderPlayer .chat-player-controls button{background:transparent;color:white;border:0;padding:4px}
#composerRecorderPlayer .chat-player-progress{flex:1;min-width:35px;accent-color:#9ce4f6}
#composerRecorderPlayer .chat-player-time{font-size:10px}
.webcam-record-actions{gap:4px!important}.webcam-record-actions button{padding:4px 6px!important;min-height:27px;font-size:11px}
@media(max-width:500px){#chatFeed .chat-player-video video{max-height:200px!important}}

/* v0.2.105: robot portrait selector stays visible above cameraFollowButton. */
#controlSwitcher.control-switcher{position:fixed!important;left:130px!important;bottom:calc(50px + env(safe-area-inset-bottom))!important;z-index:70!important;display:flex!important;flex-direction:column!important;align-items:flex-start!important;gap:4px!important;width:max-content!important;max-width:calc(100vw - 145px)!important;background:none!important;pointer-events:none!important}
#controlSwitcher .robot-face-options{position:static!important;left:auto!important;bottom:auto!important;display:flex!important;gap:4px!important;max-width:100%!important;overflow:auto!important;background:rgba(15,30,43,.9)!important;padding:4px!important;border-radius:10px!important;box-shadow:0 2px 10px #0005!important;pointer-events:auto!important}
#controlSwitcher .robot-face-options[hidden]{display:none!important}
#controlSwitcher .robot-face-choice{flex:0 0 auto!important;min-width:47px!important;width:55px!important;max-width:55px!important;padding:2px!important;gap:2px!important}
#controlSwitcher .robot-face-avatar{width:40px!important;height:40px!important;min-width:40px!important}
#controlSwitcher .robot-face-choice small{max-width:50px!important;font-size:9px!important}
#controlSwitcher #controlModeButton{pointer-events:auto!important;max-width:100%!important;font-size:11px!important}
@media(max-width:750px){#controlSwitcher.control-switcher{left:118px!important;bottom:calc(102px + env(safe-area-inset-bottom))!important;max-width:calc(100vw - 130px)!important}}

/* Advanced stairs use compact, independent collapsible groups. */
#wallPanel #stairAdvancedFolds{display:grid;gap:4px}
#wallPanel #stairAdvancedFolds[hidden],#wallPanel .stair-fold[hidden]{display:none!important}
#wallPanel .stair-fold{border:1px solid color-mix(in srgb,var(--ui-fg,#fff) 15%,transparent);border-radius:7px;overflow:hidden}
#wallPanel .stair-fold>summary{cursor:pointer;font-size:11px;padding:7px 9px;font-weight:650;user-select:none}
#wallPanel .stair-fold-body{display:grid;gap:6px;padding:2px 8px 8px}
#wallPanel .stair-fold .wall-check{display:flex;align-items:center;gap:5px}
#wallPanel .stair-fold input[type=color]{height:28px;width:100%;min-width:0;padding:2px}
#wallPanel .stair-fold button{font-size:11px;min-height:28px;padding:4px 6px}

/* Portal inspector: one aperture size, one contextual slider, no decorative swatch placeholders. */
.portal-settings{display:grid;gap:7px;padding:7px 4px 4px;min-width:0}
.portal-meta{display:flex;align-items:center;justify-content:space-between;gap:8px;font-size:11px;font-weight:650}
.portal-meta span{font-weight:500;opacity:.75}
.portal-select-grid,.portal-parameters{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 8px;min-width:0}
.portal-select-grid label,.portal-parameters label{display:grid;gap:3px;min-width:0;font-size:11px}
.portal-select-grid label span{opacity:.85}
.portal-settings :is(select,input[type=number]){box-sizing:border-box;width:100%;min-width:0;min-height:30px;padding:4px 7px;border:1px solid var(--ui-border,#426078);border-radius:7px;background:var(--ui-panel,#112338);color:var(--ui-fg,#eaf5ff);font:inherit}
.portal-parameters input[type=number]{text-align:right}
.portal-parameters .portal-colour-field input[type=color]{display:block;box-sizing:border-box;width:100%;height:30px;min-height:30px;padding:2px;border:1px solid var(--ui-border,#426078);border-radius:7px;background:var(--ui-panel,#112338);cursor:pointer}
.portal-range-row{display:grid;grid-template-columns:54px minmax(0,1fr);gap:8px;align-items:center;font-size:11px;min-width:0}
.portal-range-row>span{opacity:.84}
.portal-range-row input[type=range]{display:block;width:100%;min-width:0;margin:0;accent-color:var(--solvi-accent,#c875e8)}
.portal-check{display:flex!important;align-items:center;gap:6px;font-size:11px}
.portal-check input{margin:0}

/* v0.2.111: draggable compact control window; selected robot is visible. */
#controlSwitcher.control-switcher{left:130px;bottom:calc(50px + env(safe-area-inset-bottom));pointer-events:auto!important;background:rgba(14,27,40,.90)!important;border:1px solid var(--ui-border,#71809b);border-radius:12px;padding:5px!important;box-shadow:0 5px 16px #0006;max-width:calc(100vw - 20px)!important;width:max-content!important;}
#controlSwitcher .robot-face-options{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;}
#controlSwitcher .robot-face-choice{width:68px!important;max-width:68px!important;min-width:60px!important;padding:3px!important;}
#controlSwitcher .robot-face-avatar{width:50px!important;height:50px!important;min-width:50px!important;}
#controlSwitcher .robot-face-choice small{max-width:61px!important;font-size:10px!important;}
#controlSwitcher .robot-face-choice[aria-pressed=true]{border:2px solid var(--solvi-accent,#c875e8)!important;background:color-mix(in srgb,var(--solvi-accent,#c875e8) 20%,transparent)!important;box-shadow:0 0 0 2px color-mix(in srgb,var(--solvi-accent,#c875e8) 30%,transparent)!important;}
#controlSwitcher .control-switcher-action-row{display:flex;gap:4px;align-items:center;pointer-events:auto;}
#controlSwitcher #controlSwitcherDrag{touch-action:none;cursor:grab;font-size:17px;line-height:1;min-width:29px;width:29px;height:30px;border:1px solid var(--ui-border,#71809b);background:var(--ui-panel,#102536);border-radius:7px;color:var(--ui-fg,#fff);padding:0;}
#controlSwitcher #controlSwitcherDrag:active{cursor:grabbing;}
#controlSwitcher #controlModeButton{flex:1;}

/* v0.2.130: Exploration defaults to an uncluttered, non-editing world. */
html:not(.solvi-edit-mode) #propertiesPanel,
html:not(.solvi-edit-mode) #scenePanel,
html:not(.solvi-edit-mode) #wallPanel,
html:not(.solvi-edit-mode) #editorToolbox,
html:not(.solvi-edit-mode) #addMenu,
html:not(.solvi-edit-mode) #toolsToggleButton,
html:not(.solvi-edit-mode) #addObjectButton,
html:not(.solvi-edit-mode) #objectsButton,
html:not(.solvi-edit-mode) #avatarsButton,
html:not(.solvi-edit-mode) #assetsButton {display:none!important;}
.profile-edit-mode-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;margin:7px 0;border:1px solid var(--ui-border,#62778b);border-radius:12px;cursor:pointer;}
.profile-edit-mode-info{display:flex;flex-direction:column;gap:3px;min-width:0;}
.profile-edit-mode-info small{font-size:11px;opacity:.72;line-height:1.4;}
.profile-edit-mode-row input{position:absolute;opacity:0;width:1px;height:1px;}
.profile-edit-mode-track{flex:none;width:48px;height:28px;background:#646b78;border-radius:20px;position:relative;transition:background .15s;}
.profile-edit-mode-track::after{content:'';position:absolute;top:3px;left:3px;width:22px;height:22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px #0006;transition:transform .15s;}
.profile-edit-mode-row input:checked+.profile-edit-mode-track{background:var(--solvi-accent,#66badc);}
.profile-edit-mode-row input:checked+.profile-edit-mode-track::after{transform:translateX(20px);}
.profile-edit-mode-row input:focus-visible+.profile-edit-mode-track{outline:2px solid var(--solvi-accent,#66badc);outline-offset:3px;}
#controlSwitcher #controlSwitcherDrag{display:none!important;}
#controlSwitcher.control-switcher{touch-action:none;cursor:grab;}
#controlSwitcher.control-switcher:active{cursor:grabbing;}
#controlSwitcher button,#controlSwitcher select{cursor:pointer;touch-action:manipulation;}
#controlSwitcher .robot-face-avatar{width:var(--robot-face-size,50px)!important;height:var(--robot-face-size,50px)!important;min-width:var(--robot-face-size,50px)!important;}
#controlSwitcher .robot-face-choice{width:calc(var(--robot-face-size,50px) + 16px)!important;max-width:calc(var(--robot-face-size,50px) + 16px)!important;min-width:calc(var(--robot-face-size,50px) + 16px)!important;}
#controlSwitcher .robot-face-choice small{max-width:calc(var(--robot-face-size,50px) + 12px)!important;}
#controlSwitcher .robot-face-size-actions{display:flex;gap:2px;align-items:center;}
#controlSwitcher .robot-face-size-actions button{min-width:21px;width:21px;height:23px;min-height:23px;font-size:14px;padding:0;border-radius:6px;line-height:1;}
.brain-voice-config .brain-voice-values label{white-space:nowrap!important;word-break:keep-all!important;overflow-wrap:normal!important;flex-shrink:0!important;}
.brain-voice-config .brain-voice-values{flex-wrap:wrap;gap:6px 10px;}
.brain-voice-config .brain-voice-values input{width:60px;min-width:52px;}

/* Compact Profile control and user-supplied, literal portrait +/- glyphs. */
.profile-edit-mode-row{padding:3px 6px!important;margin:2px 0!important;min-height:29px!important;border:0!important;border-radius:5px!important;gap:8px!important;}
.profile-edit-mode-info{display:block!important;line-height:1!important;}
.profile-edit-mode-info strong{font-size:12px!important;font-weight:600!important;white-space:nowrap!important;}
.profile-edit-mode-info small{display:none!important;}
.profile-edit-mode-track{width:38px!important;height:22px!important;}
.profile-edit-mode-track::after{width:16px!important;height:16px!important;}
.profile-edit-mode-row input:checked+.profile-edit-mode-track::after{transform:translateX(16px)!important;}
#controlSwitcher .robot-face-size-actions button{display:flex!important;align-items:center!important;justify-content:center!important;min-width:24px!important;width:24px!important;height:25px!important;padding:2px!important;background:transparent!important;}
#controlSwitcher .robot-face-size-actions button::before,#controlSwitcher .robot-face-size-actions button::after{content:none!important;display:none!important;}
#controlSwitcher .robot-face-size-actions button img{width:16px!important;height:16px!important;display:block!important;border-radius:2px!important;pointer-events:none!important;}
#ladderProperties .ladder-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;padding:6px 3px;}
#ladderProperties .ladder-fields label{font-size:11px;display:flex;flex-direction:column;gap:3px;white-space:nowrap;min-width:0;}
#ladderProperties .ladder-fields input,#ladderProperties .ladder-fields select{min-width:0;width:100%;}

/* Compact opt-in collision-surface climbing; no separate inspector card. */
.climbable-toggle{display:inline-flex;align-items:center;gap:6px;font-size:12px;min-height:20px;white-space:nowrap}
.climbable-toggle[hidden]{display:none}

/* Borderless portrait controls: roundels only, with a small name overlay. */
#controlSwitcher.control-switcher{background:transparent!important;border:0!important;box-shadow:none!important;padding:0!important;gap:2px!important;}
#controlSwitcher .robot-face-options{background:transparent!important;border:0!important;box-shadow:none!important;gap:3px!important;}
#controlSwitcher .robot-face-choice,#controlSwitcher .robot-face-choice[aria-pressed=true]{position:relative!important;width:var(--robot-face-size,50px)!important;min-width:var(--robot-face-size,50px)!important;max-width:var(--robot-face-size,50px)!important;height:var(--robot-face-size,50px)!important;min-height:var(--robot-face-size,50px)!important;padding:0!important;border:0!important;border-radius:50%!important;background:transparent!important;box-shadow:none!important;overflow:hidden!important;}
#controlSwitcher .robot-face-avatar{width:100%!important;height:100%!important;min-width:100%!important;border-radius:50%!important;background:transparent!important;}
#controlSwitcher .robot-face-avatar img{width:100%!important;height:100%!important;object-fit:cover!important;object-position:center!important;border-radius:50%!important;}
#controlSwitcher .robot-face-choice small{position:absolute!important;top:2px!important;left:0!important;right:0!important;margin:0!important;padding:1px 2px!important;max-width:100%!important;text-align:center!important;font-size:10px!important;font-weight:650!important;text-shadow:0 1px 3px #000,0 0 3px #000!important;color:white!important;z-index:1!important;pointer-events:none!important;}
#controlSwitcher .robot-face-choice[aria-pressed=true] .robot-face-avatar{outline:2px solid var(--solvi-accent,#be8be5)!important;outline-offset:-2px!important;}
#controlSwitcher .robot-face-size-actions{gap:0!important;}
#controlSwitcher .robot-face-size-actions button{width:15px!important;min-width:15px!important;height:17px!important;min-height:17px!important;padding:0!important;border:0!important;background:none!important;box-shadow:none!important;}
#controlSwitcher .robot-face-size-actions button img{width:11px!important;height:11px!important;filter:brightness(0) invert(1)!important;border:0!important;}
#controlSwitcher .robot-face-size-actions button:disabled{opacity:.3!important;}

#controlSwitcher .robot-face-avatar img{transform:scale(1.3)!important;object-position:50% 34%!important;}

/* v0.2.140: true transparent +/- assets and accessible selected-robot highlight. */
#controlSwitcher .robot-face-size-actions button,
#controlSwitcher .robot-face-size-actions button:hover,
#controlSwitcher .robot-face-size-actions button:focus,
#controlSwitcher .robot-face-size-actions button:active{appearance:none!important;-webkit-appearance:none!important;background:transparent!important;background-color:transparent!important;background-image:none!important;border:0!important;outline:0!important;box-shadow:none!important;min-width:14px!important;width:14px!important;height:16px!important;min-height:16px!important;padding:0!important;}
#controlSwitcher .robot-face-size-actions button img{filter:none!important;width:10px!important;height:10px!important;background:transparent!important;}
#controlSwitcher .robot-face-choice[aria-pressed="true"]{box-shadow:inset 0 0 0 3px var(--solvi-accent,#d69aff),0 0 0 2px var(--solvi-accent,#d69aff)!important;}
#controlSwitcher .robot-face-choice[aria-pressed="true"] small{color:#ffd6ff!important;font-weight:800!important;}
#wallArrayOptions[hidden]{display:none!important;}
#wallArrayOptions .wall-compact-fields{gap:5px;}


/* v0.2.141: Active portrait outline above its image (no clipping or hidden inset glow). */
#controlSwitcher .robot-face-options{overflow-x:auto!important;padding:5px!important;gap:5px!important;}
#controlSwitcher .robot-face-choice[aria-pressed="true"]{overflow:visible!important;box-shadow:none!important;}
#controlSwitcher .robot-face-choice[aria-pressed="true"]::after{content:"";display:block!important;position:absolute;inset:0;border:3px solid var(--solvi-accent,#cf90eb);border-radius:50%;pointer-events:none;z-index:5;box-sizing:border-box;}
#controlSwitcher .robot-face-choice .robot-face-avatar{overflow:hidden!important;}
#controlSwitcher .robot-face-choice[aria-pressed="true"] small{color:#f7ccff!important;}

/* Unified Transform-scale density: all procedural properties are rows, not towering stacks. */
#ladderProperties .ladder-fields,#furnitureProperties .furniture-properties-fields{display:grid!important;grid-template-columns:minmax(0,1fr)!important;gap:3px!important;padding:3px 1px!important;}
#ladderProperties .ladder-fields>label,#furnitureProperties .furniture-param{display:flex!important;flex-direction:row!important;justify-content:space-between!important;align-items:center!important;gap:6px!important;min-height:27px!important;margin:0!important;padding:1px 2px!important;font-size:11px!important;white-space:nowrap!important;}
#ladderProperties .ladder-fields :is(input[type=number],select),#furnitureProperties .furniture-param :is(input[type=number],select){box-sizing:border-box!important;flex:0 0 116px!important;width:116px!important;min-width:0!important;max-width:54%!important;height:27px!important;min-height:27px!important;padding:3px 6px!important;font-size:12px!important;border-radius:6px!important;}
#furnitureProperties .furniture-param input[type=color],#ladderProperties .ladder-fields input[type=color]{width:41px!important;flex:0 0 41px!important;height:24px!important;min-height:24px!important;padding:1px!important;}
#furnitureProperties .furniture-param input[type=checkbox]{width:15px!important;height:15px!important;margin:0 5px!important;}
#portalProperties .portal-parameters{gap:3px 6px!important;}
#portalProperties .portal-parameters>label{font-size:11px!important;gap:2px!important;}
#portalProperties .portal-parameters :is(input,select){min-height:27px!important;height:27px!important;font-size:12px!important;padding:2px 5px!important;}
#wallPanel .wall-panel-content{gap:3px!important;padding:6px!important;}
#wallPanel .stair-fold-body{padding:4px!important;gap:3px!important;}
#wallPanel .wall-compact-fields{gap:3px 5px!important;}
#wallPanel .wall-compact-fields>label{font-size:10px!important;line-height:1.15!important;gap:2px!important;margin:0!important;}
#wallPanel .wall-compact-fields :is(input[type=number],select,button){height:26px!important;min-height:26px!important;font-size:11px!important;padding:2px 4px!important;}
#wallPanel .stair-fold>summary{padding:4px 6px!important;min-height:23px!important;}
#primitiveProperties .primitive-properties-fields{padding:3px!important;gap:3px 5px!important;}
#primitiveProperties .primitive-properties-fields :is(input[type=number],select){min-height:27px!important;height:27px!important;font-size:12px!important;}
#primitiveProperties .primitive-properties-fields input[type=range]{height:16px!important;}

/* Compact per-avatar hand action calibration; a temporary test sphere does not enter the saved realm. */
#propertiesPanel #robotThrowSettings{margin:3px 0!important;padding:2px 0!important;border:0!important;border-top:1px solid color-mix(in srgb,var(--ui-fg) 20%,transparent)!important}
#propertiesPanel #robotThrowSettings>summary{padding:4px 2px!important;font-size:11px!important;font-weight:600!important;cursor:pointer}
#propertiesPanel #robotThrowSettings .stair-fold-body{display:grid!important;gap:4px!important;padding:3px 0!important}
#propertiesPanel #robotThrowSettings .wall-compact-fields{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:4px 6px!important;align-items:end!important}
#propertiesPanel #robotThrowSettings .wall-compact-fields>label{display:flex!important;flex-direction:column!important;gap:2px!important;min-width:0!important;font-size:10px!important;line-height:1.2!important}
#propertiesPanel #robotThrowSettings input[type=number],#propertiesPanel #robotTestThrowSphere{width:100%!important;min-width:0!important;max-width:100%!important;box-sizing:border-box!important;height:27px!important;min-height:27px!important;padding:2px 5px!important;font-size:11px!important}

/* Compact, opt-in throw preview control, no extra inspector window. */
#propertiesPanel #robotThrowSettings .throw-guide-toggle{flex-direction:row!important;align-items:center!important;gap:6px!important;white-space:nowrap;}
#propertiesPanel #robotThrowTrajectory{width:14px!important;height:14px!important;margin:0!important;accent-color:#c68adc;}

/* v0.2.151: compact physics options, robust against the older inspector label/input width rules. */
#propertiesPanel #physicsObjectControls #objectPhysicsToggles{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:3px 10px!important;margin:3px 0!important;padding:2px 0!important;width:100%!important}
#propertiesPanel #physicsObjectControls #objectPhysicsToggles .climbable-toggle{display:inline-flex!important;align-items:center!important;justify-content:flex-start!important;gap:6px!important;min-width:0!important;width:100%!important;margin:0!important;padding:2px 0!important;line-height:1.25!important;min-height:22px!important;font-size:11px!important;white-space:normal!important;cursor:pointer}
#propertiesPanel #physicsObjectControls #objectPhysicsToggles .climbable-toggle[hidden]{display:none!important}
#propertiesPanel #physicsObjectControls #objectPhysicsToggles input[type=checkbox]{appearance:auto!important;display:block!important;position:static!important;width:15px!important;min-width:15px!important;max-width:15px!important;height:15px!important;min-height:15px!important;max-height:15px!important;flex:0 0 15px!important;transform:none!important;vertical-align:middle!important;margin:0!important;padding:0!important;accent-color:var(--solvi-accent,#b77fd1)!important}
#propertiesPanel #physicsObjectControls #objectPhysicsToggles .climbable-toggle span{display:inline!important;min-width:0!important;text-align:left!important;overflow-wrap:break-word!important;flex:1!important}
@media(min-width:680px){#propertiesPanel #physicsObjectControls #objectPhysicsToggles{grid-template-columns:repeat(3,minmax(0,1fr))!important}}
.object-preset-save{display:flex;justify-content:flex-start;margin:3px 0 5px}
#saveObjectPreset{font-size:11px!important;min-height:26px!important;padding:3px 9px!important}
#objectPresetsBackdrop .object-presets-gallery{width:min(1030px,94vw)!important;max-width:1030px!important;max-height:90vh!important;padding:16px!important;display:flex;flex-direction:column;gap:12px;overflow:hidden}
#objectPresetsBackdrop[hidden]{display:none!important}
.object-presets-intro{font-size:12px;opacity:.75;margin:0}
#objectPresetsSearch{width:100%;box-sizing:border-box;min-height:37px;border-radius:8px;padding:7px 12px}
.object-presets-categories{display:flex;align-items:center;gap:6px;overflow-x:auto;padding:1px 2px 8px;border-bottom:1px solid var(--ui-border,#526779);flex-shrink:0;scrollbar-width:thin}
.object-presets-categories button{font-size:12px;white-space:nowrap;flex:0 0 auto;border:0;background:transparent;border-radius:7px;padding:8px 12px}
.object-presets-categories button[aria-selected=true]{color:var(--ui-fg,#fff);border-bottom:2px solid var(--solvi-accent,#b77fd1);border-radius:0;font-weight:700}
.object-presets-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(145px,1fr));gap:13px;min-height:120px;overflow-y:auto;padding:5px 2px 16px;align-content:start}
.object-preset-card{display:flex;flex-direction:column;min-width:0;gap:5px}
.object-preset-image{width:100%;border:1px solid var(--ui-border,#526779);border-radius:8px;overflow:hidden;background:linear-gradient(130deg,#25394a,#101722);aspect-ratio:1.35;display:flex;align-items:center;justify-content:center;cursor:pointer;padding:0}
.object-preset-image img{width:100%;height:100%;object-fit:contain}
.object-preset-image .object-preset-placeholder{font-size:38px;opacity:.7}
.object-preset-card strong{font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.object-preset-card small{font-size:10px;opacity:.72}
.object-preset-actions{display:flex;gap:5px;align-items:center}
.object-preset-actions button{flex:1;min-width:0;font-size:11px;padding:5px 6px}
#objectPresetsStatus{min-height:17px;opacity:.75}
@media(max-width:570px){.object-presets-grid{grid-template-columns:repeat(2,minmax(0,1fr))}#objectPresetsBackdrop .object-presets-gallery{padding:10px!important}}
#addMenu .add-presets-shortcut{width:100%;text-align:left;margin:4px 0;padding:6px 10px;font-size:11px}

/* v0.2.152 — one compact inspector input system for Transform and furniture. */
#propertiesPanel #objectInspector :is(input[type="number"],select){
 background:var(--ui-bg,#102538)!important;color:var(--ui-fg,#f3f8ff)!important;
 border:1px solid #3e5972!important;border-radius:7px!important;
 font:inherit!important;font-size:12px!important;line-height:1.25!important;
 min-height:27px!important;height:27px!important;padding:3px 7px!important;
 box-shadow:none!important;outline-offset:1px!important;
}
#propertiesPanel #objectInspector input[type="number"]:focus-visible{border-color:var(--solvi-accent,#b77dda)!important;outline:1px solid var(--solvi-accent,#b77dda)!important}
#propertiesPanel #furnitureProperties .furniture-param{justify-content:initial!important;display:grid!important;grid-template-columns:minmax(0,1fr) minmax(0,116px)!important;gap:7px!important}
#propertiesPanel #furnitureProperties .furniture-param>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#propertiesPanel #furnitureProperties .furniture-param input[type="number"]{width:100%!important;max-width:100%!important;min-width:0!important;text-align:right!important;font-variant-numeric:tabular-nums!important}
#propertiesPanel #furnitureProperties .furniture-param input[type="checkbox"]{justify-self:start;width:15px!important;height:15px!important;min-height:15px!important;margin:0!important}
#propertiesPanel #furnitureProperties .furniture-param :is(select,input[type="color"]){max-width:100%!important;min-width:0!important}
#webcamPanel.webcam-panel{z-index:var(--solvi-window-z,350);max-width:calc(100vw - 20px);width:min(335px,calc(100vw - 20px));max-height:min(85vh,850px);overflow-y:auto;touch-action:auto}
#webcamPanel .webcam-head.drag-handle{cursor:grab;touch-action:none;user-select:none;padding:3px 2px}
#webcamPanel .webcam-head.drag-handle:active{cursor:grabbing}
#webcamPanel #facePreview[hidden],#webcamPanel #composerRecorderLivePreview[hidden]{display:none!important}
#webcamPanel .webcam-recording-host:empty{display:none}
#webcamPanel .composer-recorder-panel{background:none;border:0;padding:4px 0!important;margin:0}
#webcamPanel #composerRecorderLivePreview{max-height:220px;aspect-ratio:4/3;object-fit:contain}
#webcamPanel #composerRecorderPlayer video{max-height:230px}
#webcamPanel .webcam-record-actions button:disabled{opacity:.5}

/* v0.2.153 — truly compact three-across furniture inspector, identical native field skin. */
#propertiesPanel #furnitureProperties #furniturePropertiesFields.furniture-properties-fields{
 display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;
 gap:5px 6px!important;padding:3px 0!important;align-items:start!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param{
 display:flex!important;flex-direction:column!important;align-items:stretch!important;justify-content:flex-start!important;
 min-width:0!important;width:auto!important;gap:2px!important;min-height:0!important;padding:0!important;margin:0!important;
 font-size:10px!important;line-height:1.15!important;white-space:normal!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param>span{
 display:block!important;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param:is(.furniture-field-select,.furniture-field-color){grid-column:span 1;}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-field-full{grid-column:1/-1!important;display:grid!important;grid-template-columns:54px minmax(0,1fr)!important;align-items:center!important;}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param :is(input[type=number],select){
 box-sizing:border-box!important;display:block!important;flex:none!important;width:100%!important;max-width:100%!important;min-width:0!important;
 height:27px!important;min-height:27px!important;padding:3px 5px!important;border-radius:6px!important;
 background:var(--ui-bg,#102538)!important;color:var(--ui-fg,#f3f8ff)!important;border:1px solid #3e5972!important;
 font-size:12px!important;font-variant-numeric:tabular-nums!important;text-align:left!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param input[type=checkbox]{align-self:flex-start!important;margin:5px 0!important;height:15px!important;width:15px!important;flex:none!important}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param input[type=color]{align-self:flex-start!important;height:27px!important;width:100%!important;max-width:70px!important;padding:2px!important}
@media(max-width:440px){#propertiesPanel #furnitureProperties #furniturePropertiesFields.furniture-properties-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}}
/* One stable webcam canvas below the title, with its controls overlaid. */
#webcamPanel.webcam-panel{width:min(370px,calc(100vw - 20px))!important;max-height:90vh!important;gap:4px!important;padding:8px!important;overflow-y:auto!important;}
#webcamPanel .webcam-head{order:0}
#webcamPanel .webcam-stage{order:1;position:relative;aspect-ratio:4/3;min-height:0;width:100%;overflow:hidden;background:#08131e;border-radius:9px;isolation:isolate;}
#webcamPanel .webcam-stage>video,#webcamPanel .webcam-stage>#composerRecorderPlayer{
 position:absolute!important;inset:0!important;width:100%!important;height:100%!important;max-height:none!important;
 aspect-ratio:4/3!important;object-fit:cover!important;border-radius:8px!important;margin:0!important;
}
#webcamPanel .webcam-stage>video[hidden],#webcamPanel .webcam-stage>#composerRecorderPlayer[hidden]{display:none!important}
#webcamPanel .webcam-stage>#composerRecorderPlayer .chat-player{width:100%!important;height:100%;position:relative;background:#08131e;}
#webcamPanel .webcam-stage>#composerRecorderPlayer video{display:block;width:100%;height:100%;max-height:none!important;object-fit:contain;background:#08131e;}
#webcamPanel .webcam-stage>#composerRecorderPlayer .chat-player-controls{position:absolute;bottom:0;left:0;right:0;background:linear-gradient(transparent,#08131edd);z-index:4;}
#webcamPanel .webcam-stage>.webcam-actions{position:absolute;top:4px;left:4px;right:4px;z-index:5;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:4px;}
#webcamPanel .webcam-stage>.webcam-actions button{min-height:24px!important;height:25px!important;font-size:10px!important;padding:2px 3px!important;background:#0b152aca!important;backdrop-filter:blur(4px);border-radius:5px;}
#webcamPanel .webcam-stage>.webcam-record-actions{position:absolute;bottom:5px;left:5px;right:5px;z-index:5;display:grid!important;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px!important;}
#webcamPanel .webcam-stage>.webcam-record-actions button{display:flex;align-items:center;justify-content:center;gap:4px;white-space:nowrap;min-width:0!important;min-height:25px!important;height:26px!important;font-size:10px!important;padding:3px 2px!important;background:#0b152ae6!important;}
#webcamPanel .webcam-stage>.webcam-record-actions #webcamXRRecord{flex:none!important;min-width:0!important;}
#webcamPanel .webcam-stage>.webcam-record-actions button::before{content:'';width:13px;height:13px;background-size:contain;background-position:center;background-repeat:no-repeat;flex:0 0 13px}
#webcamPanel #webcamRecord::before{background-image:url('./assets/icons/record.svg')}
#webcamPanel #webcamPause::before{background-image:url('./assets/icons/pause.svg')}
#webcamPanel #webcamStop::before{background-image:url('./assets/icons/stop.svg')}
#webcamPanel #webcamXRRecord::before{background-image:url('./assets/icons/record.svg')}
#webcamPanel .webcam-stage.is-playback>.webcam-record-actions{display:none!important}
#webcamPanel .webcam-recording-host{order:2;min-width:0}
#webcamPanel #webcamStatus{order:3}
#webcamPanel #composerRecorderPanel{padding:2px 0!important;gap:3px!important}
#webcamPanel .composer-recorder-head{display:flex;align-items:center;gap:5px;min-height:19px;font-size:10px}
#webcamPanel #composerRecorderPreview{margin:0!important;padding:0!important;}
#webcamPanel #composerRecorderDuration{font-size:10px;display:block;margin:2px 0}
#webcamPanel .composer-recorder-controls{display:flex;flex-wrap:nowrap;gap:3px!important;min-width:0;}
#webcamPanel .composer-recorder-controls button{flex:1 1 0;min-width:0!important;padding:3px 3px!important;font-size:10px!important;min-height:26px!important;white-space:nowrap;}
#webcamPanel #composerRecorderPlayer{max-height:none!important}
#webcamPanel .chat-player .solvi-player-icon{width:16px;height:16px}
/* Compact, semantic SVG transport buttons in chat and local recording preview. */
.chat-player .solvi-player-icon{display:block!important;width:16px!important;height:16px!important;object-fit:contain;margin:auto;pointer-events:none}
.chat-player button:focus-visible{outline:2px solid var(--solvi-accent,#b77dda);outline-offset:1px}
#chatFeed .chat-player-video video{background:#0a1624!important}
#chatFeed .chat-player-video video[poster]{object-fit:contain!important}

/* Override older highly specific webcam video rules while maintaining fixed stage. */
#webcamPanel #webcamStage > #facePreview,#webcamPanel #webcamStage > #composerRecorderLivePreview{
 position:absolute!important;inset:0!important;width:100%!important;max-width:none!important;
 height:100%!important;max-height:none!important;aspect-ratio:4/3!important;object-fit:cover!important;
}
#webcamPanel #webcamStage > #facePreview[hidden],#webcamPanel #webcamStage > #composerRecorderLivePreview[hidden]{display:none!important}
#webcamPanel #webcamStage > #composerRecorderPlayer{position:absolute!important;inset:0!important;width:100%!important;height:100%!important;}
#webcamPanel #webcamStage > #composerRecorderPlayer[hidden]{display:none!important}
#webcamPanel #webcamStage #composerRecorderPlayer video{max-height:none!important;height:100%!important;object-fit:contain!important;}

/* No duplicate Pause/Stop row below the image: keep only Cancel while capturing. */
#webcamPanel #composerRecorderPanel{position:relative;padding-right:60px!important}
#webcamPanel #composerRecorderPanel>.composer-recorder-controls{position:absolute;top:0;right:0;width:58px;display:flex!important;justify-content:flex-end}
#webcamPanel #composerRecorderPanel>.composer-recorder-controls button:not(#composerRecorderCancel){display:none!important}
#webcamPanel #composerRecorderPanel>.composer-recorder-controls #composerRecorderCancel{font-size:10px!important;min-height:23px!important;padding:2px 4px!important;width:100%;}
#webcamPanel #composerRecorderPanel:has(#composerRecorderPreview:not([hidden])){padding-right:0!important}
#webcamPanel #composerRecorderPanel:has(#composerRecorderPreview:not([hidden]))>.composer-recorder-controls{display:none!important}

/* Pending video attachment is a real thumbnail, not a WebM filename. */
#pendingMedia .pending-attachment:has(img),#pendingMedia .pending-attachment:has(.pending-video-placeholder){display:inline-flex;align-items:center;gap:5px;padding:3px 5px;max-width:120px;font-size:10px}
#pendingMedia .pending-attachment img,#pendingMedia .pending-video-placeholder{width:43px;height:30px;object-fit:cover;border-radius:4px;background:#071b29;color:#d9ebf4;display:grid;place-items:center;font-size:9px}

/* v0.2.154 compact scene inventory */
.object-inventory-options{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;margin:6px 0}
.object-inventory-options[hidden]{display:none}
.object-inventory-options label{min-width:0;display:flex;flex-direction:column;gap:3px;color:#a9c3d9;font-size:11px}
.object-inventory-options select{max-width:100%;min-width:0;background:#15283b;color:#f0f5fa;border:1px solid #496279;border-radius:7px;height:29px}
.object-inventory-options .inventory-consumable{grid-column:1/-1;flex-direction:row;align-items:center}
.object-inventory-options input[type=checkbox]{width:15px;height:15px;margin:0}
.inventory-toolbar{display:flex;align-items:center;gap:9px;flex-wrap:wrap}.inventory-toolbar button{padding:5px 10px}
.inventory-toolbar small{flex-basis:100%}
.robot-inventory-panel{position:fixed;top:20%;right:18px;width:min(390px,92vw);max-height:72vh;overflow:auto;z-index:1100;border:1px solid #607c91;border-radius:15px;background:#1b222d;box-shadow:0 12px 40px #0009;padding:12px;color:#e6eff8}
.robot-inventory-panel[hidden]{display:none}
.robot-inventory-panel header{display:flex;justify-content:space-between;align-items:center;margin-bottom:9px}
.robot-inventory-panel nav{display:flex;gap:6px;margin:9px 0}.robot-inventory-panel nav button{flex:1;min-width:0;font-size:12px;padding:8px 4px;border:0;border-radius:7px;background:#2a3443;color:#c6d6e7}.robot-inventory-panel nav button.active{background:#305975;color:#fff}
.robot-inventory-item{display:flex;gap:6px;align-items:center;padding:7px 1px;border-bottom:1px solid #3f4a59}.robot-inventory-item div{flex:1;min-width:0;display:grid;gap:3px}.robot-inventory-item small{color:#a7b6c5}.robot-inventory-item button{font-size:11px;padding:6px 7px}

/* v0.2.155 compact three-across object capabilities and full-width selects */
#propertiesPanel #physicsObjectControls #objectPhysicsToggles{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:5px!important}
#propertiesPanel #physicsObjectControls #objectPhysicsToggles .climbable-toggle{gap:4px!important;font-size:10.5px!important}
#objectInventoryOptions{grid-template-columns:repeat(2,minmax(0,1fr));gap:7px}
#objectInventoryOptions select{height:30px!important;width:100%!important;min-width:0!important;padding:2px 22px 2px 7px!important;font-size:11px!important;white-space:nowrap;text-overflow:ellipsis;color:#f0f6ff!important;background:#15283b!important}
@media(max-width:420px){#propertiesPanel #physicsObjectControls #objectPhysicsToggles{grid-template-columns:repeat(2,minmax(0,1fr))!important}}

/* v0.2.157: compact wearable calibration and smart media playlists. */
#propertiesPanel .wearable-attachment-details{margin:5px 0;border:1px solid #33485f;border-radius:7px;padding:4px 6px}
#propertiesPanel .wearable-attachment-details[hidden]{display:none!important}
#propertiesPanel .wearable-attachment-details summary{font-size:11px;cursor:pointer;color:var(--ui-fg)}
#propertiesPanel .wearable-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px;padding-top:5px}
#propertiesPanel .wearable-fields label{min-width:0;display:flex;flex-direction:column;gap:2px;font-size:10px}
#propertiesPanel .wearable-fields .wearable-wide{grid-column:1/-1}
#propertiesPanel .wearable-fields :is(select,input[type=number]){min-width:0;width:100%;height:27px;box-sizing:border-box;background:#122236;color:#eef5ff;border:1px solid #48617b;border-radius:5px;padding:2px 5px;font-size:11px}
#propertiesPanel .wearable-fields input[type=checkbox]{width:15px;height:15px}
.smart-channel-controls,.smart-channel-frame{grid-column:1/-1;width:100%;box-sizing:border-box;border:1px solid #33495e;padding:6px;border-radius:7px}
.smart-channel-controls>summary{font-size:11px;padding:3px;cursor:pointer}
.smart-channel-controls>input{display:block!important;width:100%!important;max-width:100%!important;min-width:0!important;height:28px!important;box-sizing:border-box;background:#15293b!important;color:#fff!important;border:1px solid #48617b;border-radius:5px;margin:3px 0;padding:4px;font-size:11px!important}
.smart-channel-list{display:grid;gap:3px;max-height:110px;overflow-y:auto}
.smart-channel-row{display:flex;gap:4px;align-items:center;font-size:10px}
.smart-channel-row>span{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.smart-channel-row button{flex:0 0 24px;min-height:24px;padding:2px 5px}
.smart-channel-actions{display:flex;gap:5px}
.smart-channel-actions button{font-size:11px;min-height:26px;padding:3px 7px}

/* v0.2.157 — self-contained shortcuts help and smaller preset gallery cards */
.robot-shortcuts-backdrop{position:fixed;inset:0;background:#050c14bc;z-index:99999;display:flex;justify-content:center;align-items:center;padding:20px}
.robot-shortcuts-backdrop[hidden]{display:none}
.robot-shortcuts-dialog{max-width:620px;width:min(100%,620px);max-height:85vh;overflow:auto;background:#1c222b;color:#eff5ff;border:1px solid #556c80;border-radius:14px;box-shadow:0 18px 70px #0009;padding:18px}
.robot-shortcuts-head{position:sticky;top:-18px;background:#1c222b;display:flex;justify-content:space-between;align-items:center;padding-bottom:12px;border-bottom:1px solid #405062;font-size:18px}
.robot-shortcuts-head button{border:1px solid #5f778e;border-radius:8px;background:#293542;color:#fff;font-size:25px;line-height:28px;width:35px;height:35px;cursor:pointer}
.robot-shortcuts-table{width:100%;border-collapse:collapse;font-size:13px}.robot-shortcuts-table td{padding:6px 9px;border-bottom:1px solid #ffffff13}
.robot-shortcuts-table td:first-child{width:36%;white-space:nowrap}.robot-shortcuts-section th{text-align:left;color:#9cbad3;font-size:11px;text-transform:uppercase;letter-spacing:.07em;padding:14px 8px 4px}
.robot-shortcuts-table kbd{font:600 12px system-ui;padding:3px 8px;border-radius:6px;background:#304154;border:1px solid #657b94}
.object-preset-image{aspect-ratio:1.4;border-radius:10px}.object-preset-image img{object-fit:contain;object-position:center}
.object-preset-card{background:#202b36;padding:8px;border-radius:10px;gap:7px}
.object-preset-actions{justify-content:end}.object-preset-actions button{flex:0 0 auto;min-width:80px}
/* v0.2.158 — compact smart-screen playback, audio and IPTV configuration */
.smart-channel-row>span{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.smart-channel-settings{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:5px 8px;margin:8px 0;padding:7px;border-radius:7px;background:#101c2c}
.smart-channel-settings label{display:flex;align-items:center;gap:5px;min-width:0;white-space:normal;font-size:10px;color:#cfdfed}
.smart-channel-settings label input[type=checkbox]{appearance:auto!important;width:15px!important;height:15px!important;min-width:15px!important;margin:0!important;accent-color:#bd84d9}
.smart-channel-settings label:has(select){grid-column:span 2;align-items:center;justify-content:space-between}
.smart-channel-settings select{min-width:0;max-width:75%;height:27px!important;padding:2px 5px!important;color:#fff!important;background:#0d1826!important;border:1px solid #4a647c!important;border-radius:5px!important;font-size:11px!important}
.smart-iptv-picker{margin-top:8px;border-top:1px solid #31495f;padding-top:6px}
.smart-iptv-picker>summary{cursor:pointer;color:#a8cadf;font-size:11px;padding:3px 0}
.smart-iptv-picker>input{display:block!important;width:100%!important;height:28px!important;box-sizing:border-box;margin:4px 0;padding:4px!important;background:#13283a!important;border:1px solid #48617b!important;border-radius:5px!important;color:#fff!important;font-size:11px!important}
.smart-iptv-picker>button{padding:5px 8px;font-size:11px}
.smart-iptv-status{display:block;padding:4px 0;color:#a8c1d5;font-size:10px;line-height:1.4}
.smart-iptv-results{max-height:180px;overflow-y:auto;display:grid;gap:3px}
.smart-iptv-result{display:flex;align-items:center;gap:4px;padding:4px;background:#15273a;border-radius:4px}
.smart-iptv-result span{min-width:0;flex:1;font-size:10px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.smart-iptv-result button{flex:0 0 auto;font-size:10px;padding:3px 7px}
@media(max-width:510px){.smart-channel-settings{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* v0.2.160: one-image preset tiles; thumbnail click inserts and closes the gallery. */
#objectPresetsBackdrop .object-presets-grid{grid-template-columns:repeat(auto-fill,minmax(175px,1fr));gap:13px;align-content:start}
#objectPresetsBackdrop .object-preset-card{position:relative;min-width:0;overflow:hidden;border-radius:12px;padding:0;gap:0;background:#202f3e;border:1px solid #405368;box-shadow:0 2px 8px #050b1429}
#objectPresetsBackdrop .object-preset-image{display:block;position:relative;border:0;width:100%;aspect-ratio:3 / 2;border-radius:0;background:#354759;padding:0;overflow:hidden}
#objectPresetsBackdrop .object-preset-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center center;transition:transform .15s ease}
#objectPresetsBackdrop .object-preset-image:hover img,#objectPresetsBackdrop .object-preset-image:focus-visible img{transform:scale(1.025)}
#objectPresetsBackdrop .object-preset-image:focus-visible{outline:2px solid var(--solvi-accent,#bb85dd);outline-offset:-2px}
#objectPresetsBackdrop .object-preset-caption{display:flex;flex-direction:column;gap:2px;min-width:0;padding:9px 11px 10px}
#objectPresetsBackdrop .object-preset-caption strong{font-size:12px;line-height:1.3;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#objectPresetsBackdrop .object-preset-caption small{font-size:10px;opacity:.76;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#objectPresetsBackdrop .object-preset-actions{position:absolute;right:7px;top:7px;width:auto;height:auto;z-index:2;display:block}
#objectPresetsBackdrop .object-preset-delete{display:grid;place-items:center;min-width:0;width:29px;height:29px;padding:4px;border-radius:8px;background:rgba(13,23,35,.83);border:1px solid rgba(218,230,242,.38);color:#fff;cursor:pointer}
#objectPresetsBackdrop .object-preset-delete:hover,#objectPresetsBackdrop .object-preset-delete:focus-visible{background:#8b304b;color:#fff}
@media(max-width:570px){#objectPresetsBackdrop .object-presets-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}

/* v0.2.161 — image-first preset tiles, no decorative Add icon from auto-decorated buttons. */
#objectPresetsBackdrop .object-presets-grid{grid-template-columns:repeat(auto-fill,minmax(190px,1fr));gap:12px}
#objectPresetsBackdrop .object-preset-card{isolation:isolate;position:relative;aspect-ratio:4 / 3;min-height:0;background:#304355;border-radius:12px;overflow:hidden}
#objectPresetsBackdrop .object-preset-image{position:absolute;inset:0;display:block;width:100%;height:100%;aspect-ratio:auto;border:0;border-radius:0;cursor:pointer;outline-offset:-3px}
#objectPresetsBackdrop .object-preset-image::before,#objectPresetsBackdrop .object-preset-image::after{content:none!important;display:none!important}
#objectPresetsBackdrop .object-preset-image img{display:block;width:100%;height:100%;object-fit:cover;object-position:center}
#objectPresetsBackdrop .object-preset-caption{position:absolute;bottom:0;left:0;right:0;z-index:1;padding:22px 11px 10px;pointer-events:none;background:linear-gradient(transparent,#091522ef);color:#fff}
#objectPresetsBackdrop .object-preset-caption strong{font-size:13px}
#objectPresetsBackdrop .object-preset-caption small{font-size:11px;opacity:.86}
#objectPresetsBackdrop .object-preset-delete{width:29px;height:29px}
#objectPresetsSearch{background:#16283b!important;color:#f0f6ff!important;border:1px solid #4c6882!important}
@media(max-width:570px){#objectPresetsBackdrop .object-presets-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}}

/* Inventory is a draggable SOLVI tool window, matching other object galleries. */
#robotInventoryPanel{width:min(560px,94vw);max-height:min(78vh,720px);overflow:hidden;display:flex;flex-direction:column;padding:0;background:#1c252f;border:1px solid #4b657e;border-radius:13px;color:#eff6ff;box-shadow:0 20px 54px #0009}
#robotInventoryPanel[hidden]{display:none}
#robotInventoryPanel .inventory-window-head{display:flex;align-items:center;gap:10px;flex:0 0 auto;margin:0;padding:11px 13px;border-bottom:1px solid #415467;cursor:grab;touch-action:none;user-select:none}
#robotInventoryPanel .inventory-window-head:active{cursor:grabbing}
#robotInventoryPanel .inventory-robot-portrait{display:flex;justify-content:center;align-items:center;flex:0 0 43px;width:43px;height:43px;border-radius:50%;overflow:hidden;background:#0d1724;border:1px solid #6988a4;font-size:17px;font-weight:700}
#robotInventoryPanel .inventory-robot-portrait img{width:100%;height:100%;object-fit:cover}
#robotInventoryPanel .inventory-window-heading{display:flex;flex-direction:column;flex:1;min-width:0;gap:3px}
#robotInventoryPanel .inventory-window-heading strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
#robotInventoryPanel .inventory-window-heading small{font-size:10px;color:#a5b9cb}
#robotInventoryPanel [data-inventory-close]{flex:0 0 32px;width:32px;height:32px;border-radius:8px;padding:6px;background:#293646;border:1px solid #56718a;color:#fff}
#robotInventoryPanel nav{display:flex;gap:5px;margin:0;padding:9px 12px;border-bottom:1px solid #34495b}
#robotInventoryPanel nav button{min-height:32px;font-size:12px;font-weight:600;padding:5px 10px;background:#293747;border:1px solid #344d60;border-radius:7px;color:#c8d8e8}
#robotInventoryPanel nav button.active{background:#244763;border-color:#8baec9;color:#fff}
#robotInventoryPanel .robot-inventory-items{display:grid;grid-template-columns:repeat(auto-fill,minmax(156px,1fr));gap:9px;padding:12px;overflow-y:auto;align-content:start;min-height:92px}
#robotInventoryPanel .robot-inventory-item{display:flex;flex-direction:column;align-items:stretch;min-width:0;gap:5px;padding:0;background:#213345;border:1px solid #40566b;border-radius:9px;overflow:hidden}
#robotInventoryPanel .inventory-item-thumb{display:grid;place-items:center;overflow:hidden;aspect-ratio:3/2;background:#354759;color:#d6e8f8;font-size:29px;font-weight:600}
#robotInventoryPanel .inventory-item-thumb img{width:100%;height:100%;object-fit:cover}
#robotInventoryPanel .inventory-item-info{display:grid;gap:2px;padding:2px 9px;min-width:0}
#robotInventoryPanel .inventory-item-info strong{font-size:12px;white-space:nowrap;text-overflow:ellipsis;overflow:hidden}
#robotInventoryPanel .inventory-item-info small{font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
#robotInventoryPanel .inventory-item-actions{display:flex;gap:4px;flex-wrap:wrap;align-items:center;padding:4px 7px 8px}
#robotInventoryPanel .inventory-item-actions button{font-size:10px;min-height:25px;padding:4px 7px;background:#2d4053;border:1px solid #445d72;border-radius:6px;color:#edf4fd;flex:1 1 auto;cursor:pointer}
#robotInventoryPanel .inventory-item-actions button:disabled{opacity:.48;cursor:default}
#robotInventoryPanel .small-note{grid-column:1/-1;color:#a7bdd2;font-size:12px}

/* v0.2.163: centre supplied SVG icons inside each icon-only control. */
button[data-ui-icon="delete"],button[data-ui-icon="play"],button[data-ui-icon="pause"],
button[data-ui-icon="stop"],button[data-ui-icon="record"]{
  display:inline-flex!important;align-items:center!important;justify-content:center!important;
}
button[data-ui-icon="delete"]::before,button[data-ui-icon="play"]::before,
button[data-ui-icon="pause"]::before,button[data-ui-icon="stop"]::before,
button[data-ui-icon="record"]::before{
  display:block!important;align-self:center!important;flex-shrink:0!important;
  margin:0!important;background-position:center!important;background-repeat:no-repeat!important;
  background-size:contain!important;
}

/* v0.2.163: absolute-centre the existing icon (never display a second delete glyph). */
#objectPresetsBackdrop .object-preset-delete{position:relative!important;display:grid!important;place-items:center!important;padding:0!important;gap:0!important;text-align:center!important;line-height:1!important}
#objectPresetsBackdrop .object-preset-delete::before,#objectPresetsBackdrop .object-preset-delete::after{content:none!important;display:none!important}
#objectPresetsBackdrop .object-preset-delete svg{display:block!important;width:19px!important;height:19px!important;position:absolute!important;inset:50% auto auto 50%!important;transform:translate(-50%,-50%)!important;margin:0!important;fill:none!important}
#objectPresetsBackdrop .object-preset-delete .ui-button-label{display:none!important}

/* v0.2.168 — contextual range floats BELOW the active inspector row. Its
   position never participates in the three-column grid's layout. */
body>#inspectorValueSlider.inspector-value-slider{
 position:fixed!important;z-index:25!important;display:block!important;
 margin:0!important;padding:7px 12px!important;box-sizing:border-box!important;
 max-width:calc(100vw - 16px)!important;
 border:1px solid color-mix(in srgb,var(--ui-fg) 33%,transparent)!important;
 border-radius:9px!important;background:var(--ui-panel,#1c2532)!important;
 box-shadow:0 9px 24px rgba(0,0,0,.48)!important;
 pointer-events:auto!important;
}
body>#inspectorValueSlider[hidden]{display:none!important}
body>#inspectorValueSlider .inspector-slider-head{display:flex;gap:8px;justify-content:space-between;align-items:center;font-size:11px;margin:0!important}
body>#inspectorValueSlider #inspectorActiveRange{display:block;width:100%!important;height:27px!important;min-height:27px!important;margin:0!important;accent-color:var(--solvi-accent)}

/* v0.2.171 — ONE full-width shared slider below the active row, for BOTH
   furniture/vegetation fields and Transform XYZ. The three-column grid is
   unchanged: the range is positioned over the scene rather than in the grid. */
body>#inspectorValueSlider.inspector-value-slider{
 z-index:6200!important;
 min-width:0!important;
 box-sizing:border-box!important;
 border-radius:9px!important;
 padding:8px 12px!important;
}
body>#inspectorValueSlider #inspectorActiveRange{
 display:block!important;width:100%!important;
 min-height:27px!important;height:27px!important;
 margin:0!important;touch-action:pan-x!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .furniture-param.furniture-field-number{
 min-height:0!important;
}

/* v0.2.173 line/path drawing. Matches SOLVI compact dark panels. */
.infra-draw-panel{position:fixed;z-index:10090;top:72px;right:18px;width:min(345px,calc(100vw - 30px));background:#1e252f;color:#edf3fa;border:1px solid #5f819a;border-radius:15px;padding:12px 14px;box-shadow:0 12px 40px #0008;font-family:inherit;font-size:13px;font-weight:500;line-height:1.45}
.infra-draw-panel[hidden]{display:none!important}
.infra-draw-title{display:flex;align-items:center;justify-content:space-between;font-weight:750;font-size:14px;margin-bottom:12px}
.infra-draw-title button{border:1px solid #536679;border-radius:8px;background:#2c3541;color:#f4f7fc;display:grid;place-items:center;min-width:32px;height:32px;font-size:22px;line-height:1}
.infra-draw-field{display:grid;gap:4px;margin:8px 0}.infra-draw-field select{width:100%;background:#101821;border:1px solid #4f7289;color:#fafafa;border-radius:8px;padding:8px 9px;font:inherit}
.infra-draw-inline{grid-template-columns:1fr 1fr}.infra-draw-inline label{display:flex;align-items:center;gap:7px}
.infra-draw-status{font-size:12px;color:#b6c5d7;margin:10px 0}.infra-draw-actions{display:flex;gap:8px}.infra-draw-actions button{background:#2b3542;color:#f5f8fb;padding:8px 11px;border-radius:8px;border:1px solid #4c6277;flex:1;font:inherit}.infra-draw-actions button:disabled{opacity:.4}

/* v0.2.174: one native draggable Properties window for line infrastructure. */
#infraDrawPanel{display:none!important}
#propertiesPanel #furniturePropertiesFields .infra-inspector-actions.furniture-field-full{
 grid-column:1/-1!important;display:flex!important;align-items:center!important;gap:5px!important;
 padding:3px 0!important;min-height:32px!important;
}
#propertiesPanel #furniturePropertiesFields .infra-inspector-actions button{
 flex:1 1 auto!important;min-width:0!important;padding:6px 7px!important;
 background:var(--ui-control,#2a313d)!important;color:var(--ui-fg,#f6f8ff)!important;
 border:1px solid #4b6279!important;border-radius:7px!important;font-size:11px!important;
 cursor:pointer!important;
}
#propertiesPanel #furniturePropertiesFields .infra-inspector-status{
 grid-column:1/-1!important;display:block!important;color:var(--ui-fg,#dae4ef)!important;
 font-size:11px!important;padding:3px 0!important;opacity:.85!important;
}

/* v0.2.176 — native one-row construction controls; no 54px field collision. */
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-drawing-mode{
 grid-column:1/-1!important;width:100%!important;min-width:0!important;
 display:flex!important;flex-direction:row!important;align-items:center!important;gap:10px!important;
 min-height:30px!important;white-space:nowrap!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-drawing-mode>span{
 flex:0 0 84px!important;width:84px!important;max-width:84px!important;
 overflow:visible!important;text-overflow:clip!important;white-space:nowrap!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-drawing-mode select{
 flex:1 1 auto!important;min-width:0!important;width:100%!important;max-width:none!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-status{
 grid-column:1/-1!important;grid-row:auto!important;
 width:100%!important;min-width:0!important;max-width:none!important;
 display:flex!important;align-items:center!important;min-height:22px!important;
 margin:0!important;padding:1px 3px!important;
 white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
 font-size:11px!important;line-height:18px!important;opacity:.85!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions{
 grid-column:1/-1!important;grid-row:auto!important;
 width:100%!important;min-width:0!important;max-width:none!important;
 display:flex!important;align-items:stretch!important;gap:6px!important;
 margin:0!important;padding:2px 0 6px!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions button{
 display:inline-flex!important;align-items:center!important;justify-content:center!important;
 flex:1 1 0!important;width:0!important;min-width:0!important;min-height:32px!important;
 padding:6px 7px!important;margin:0!important;
 border:1px solid var(--ui-border,#51657e)!important;border-radius:8px!important;
 background:var(--ui-control,#2a313d)!important;color:var(--ui-fg,#f6f8ff)!important;
 font-size:11px!important;font-weight:650!important;line-height:1.2!important;
 white-space:nowrap!important;text-align:center!important;overflow:hidden!important;text-overflow:ellipsis!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions .infra-drawing-save.primary{
 flex:1.4 1 0!important;background:var(--solvi-accent,#b784d3)!important;
 color:var(--ui-accent-text,#10121a)!important;border-color:var(--solvi-accent,#b784d3)!important;
}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions button:disabled{opacity:.42!important;cursor:default!important}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions button .ui-button-label{
 display:block!important;min-width:0!important;white-space:nowrap!important;overflow:hidden!important;text-overflow:ellipsis!important;
}
@media(max-width:440px){
 #propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-drawing-mode>span{flex-basis:82px!important;width:82px!important;max-width:82px!important}
 #propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions button{font-size:10px!important;padding:5px 4px!important}
}

/* v0.2.177: OrbitControls receives right/middle drags and zoom while drawing;
   left scene clicks are consumed by the infrastructure pointer handler. */
#spatialDrawShield.solvi-infra-pass-through:not([hidden]){pointer-events:none!important;touch-action:auto!important}
#propertiesPanel #furnitureProperties #furniturePropertiesFields .infra-inspector-actions button{font-size:10.5px!important;gap:2px!important;padding:5px 3px!important}

/* v0.2.177 — robot speech / thought overlays, non-interactive and bounded. */
#solviComicBubbles{position:fixed;inset:0;pointer-events:none;z-index:113;overflow:hidden;contain:layout style;}
.solvi-comic-balloon{position:absolute;max-width:min(270px,62vw);width:max-content;min-width:75px;
 transform:translate(-50%,-100%);box-sizing:border-box;padding:9px 13px 11px;
 background:#fff;color:#111;border:2.5px solid #111;border-radius:48% / 35%;
 box-shadow:1px 3px 0 #151515,0 6px 14px #0005;text-align:center;
 font-family:'ACME Secret Agent','Comic Sans MS','Trebuchet MS',system-ui,sans-serif;
 font-weight:800;font-size:13px;line-height:1.27;letter-spacing:.01em;
 overflow-wrap:anywhere;white-space:normal;}
.solvi-comic-text{position:relative;z-index:1;display:block;}
.solvi-comic-speech::after{content:'';position:absolute;left:27%;bottom:-22px;width:34px;height:32px;
 background:#111;mask:url('/assets/ui-icons/speech-bubble-1.svg') center / contain no-repeat;
 -webkit-mask:url('/assets/ui-icons/speech-bubble-1.svg') center / contain no-repeat;
 transform:rotate(-18deg);z-index:-1;}
.solvi-comic-thought{border-radius:48% 52% 45% 55%;font-style:italic;}
.solvi-comic-thought::after{content:'';position:absolute;left:34%;bottom:-22px;
 width:13px;height:13px;background:#fff;border:2px solid #111;border-radius:50%;box-shadow:-11px 12px 0 -3px white,-11px 12px 0 -1px #111;}
@media(max-width:600px){.solvi-comic-balloon{font-size:11px;max-width:190px;padding:7px 10px}}

/* v0.2.178: camera controls share the same draggable robot switcher window. */
#controlSwitcher .camera-position-controls{display:flex;align-items:center;flex-wrap:wrap;gap:4px;padding:4px;background:rgba(13,24,38,.9);border:1px solid var(--ui-border,#71809b);border-radius:9px;max-width:380px;cursor:default;}
#controlSwitcher .camera-follow-inline{display:flex;align-items:center;gap:4px;flex-wrap:wrap;flex:1 1 100%;}
#controlSwitcher #cameraFollowButton.bottom-camera-mode,#controlSwitcher #chaseDistanceControl.chase-distance-control{position:static!important;left:auto!important;bottom:auto!important;z-index:auto!important;width:auto!important;max-width:none!important;box-shadow:none!important;margin:0!important;}
#controlSwitcher #cameraFollowButton{flex:0 1 auto!important;min-height:25px!important;}
#controlSwitcher #chaseDistanceControl.chase-distance-control:not([hidden]){display:flex!important;flex:1 1 130px;}
#controlSwitcher #chaseDistanceControl[hidden]{display:none!important;}
#controlSwitcher #cameraStartMode{flex:1 1 154px;min-width:150px;max-width:260px;min-height:28px;background:var(--ui-panel,#172235);color:var(--ui-fg,#fff);border:1px solid var(--ui-border,#71809b);border-radius:7px;padding:2px 4px;font-size:11px;}
#controlSwitcher #saveCameraPosition{display:inline-flex!important;gap:4px;align-items:center;justify-content:center;white-space:nowrap;min-height:28px;padding:3px 8px!important;border:1px solid var(--ui-border,#71809b);border-radius:7px;background:var(--ui-panel,#172235);color:var(--ui-fg,#fff);font-size:11px;}
#controlSwitcher #saveCameraPosition img{width:15px;height:15px;object-fit:contain;}

/* v0.2.178: individual robot comic configuration. No downloaded or bundled proprietary fonts. */
.solvi-comic-balloon.comic-shape-rounded{border-radius:20px 20px 18px 18px;}
.solvi-comic-balloon.comic-shape-oval{border-radius:50% / 44%;}
.solvi-comic-balloon.comic-shape-cloud{border-radius:39% 43% 37% 42% / 42% 40% 50% 38%;}
.solvi-comic-balloon.comic-font-digital{font-family:'Digital Strip','DigiStrip','Comic Sans MS',system-ui,sans-serif;letter-spacing:.015em;}
.solvi-comic-balloon.comic-font-comic{font-family:'Comic Sans MS','Segoe Print',cursive;font-weight:700;}
.solvi-comic-balloon.comic-font-sans{font-family:'Arial Rounded MT Bold','Trebuchet MS',system-ui,sans-serif;font-weight:850;}
#robotComicConfig .wall-compact-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;}
#robotComicConfig .wall-compact-fields label{min-width:0;display:grid;gap:4px;}
#robotComicConfig .wall-compact-fields select{max-width:100%;min-width:0;}


/* v0.2.179: native single-line Control Switcher. No permanent Start dropdown. */
#controlSwitcher.control-switcher{width:max-content!important;max-width:calc(100vw - 18px)!important;overflow:visible!important;bottom:calc(76px + env(safe-area-inset-bottom))!important;}
#controlSwitcher .control-switcher-action-row{display:flex!important;flex-flow:row nowrap!important;align-items:center!important;gap:4px!important;width:max-content!important;max-width:calc(100vw - 24px)!important;min-width:0!important;padding:4px!important;background:rgba(14,27,40,.94)!important;border:1px solid var(--ui-border,#71809b)!important;border-radius:10px!important;box-shadow:0 3px 12px #0006!important;}
#controlSwitcher #controlModeButton,#controlSwitcher #cameraFollowButton.bottom-camera-mode,#controlSwitcher #saveCameraPosition{position:static!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;flex:0 0 auto!important;min-width:0!important;max-width:132px!important;width:auto!important;height:30px!important;min-height:30px!important;max-height:30px!important;padding:3px 7px!important;margin:0!important;gap:5px!important;white-space:nowrap!important;overflow:hidden!important;color:var(--ui-fg,#fff)!important;background:var(--ui-panel,#172235)!important;border:1px solid var(--ui-border,#71809b)!important;border-radius:7px!important;box-shadow:none!important;font:650 12px/1.15 system-ui,sans-serif!important;}
#controlSwitcher #controlModeButton{max-width:116px!important;}
#controlSwitcher #cameraFollowButton{max-width:92px!important;}
#controlSwitcher .solvi-switcher-label{display:block!important;min-width:0!important;overflow:hidden!important;text-overflow:ellipsis!important;white-space:nowrap!important;}
#controlSwitcher .solvi-switcher-icon,#controlSwitcher #saveCameraPosition .solvi-save-position-icon{display:block!important;flex:0 0 18px!important;width:18px!important;height:18px!important;min-width:18px!important;max-width:18px!important;object-fit:contain!important;filter:brightness(0) invert(1)!important;pointer-events:none!important;}
#controlSwitcher :is(#controlModeButton,#cameraFollowButton,#saveCameraPosition)[data-ui-icon]::before{display:none!important;content:none!important;}
#controlSwitcher #saveCameraPosition{width:32px!important;min-width:32px!important;max-width:32px!important;padding:5px!important;}
#controlSwitcher #chaseDistanceControl.chase-distance-control{position:static!important;left:auto!important;bottom:auto!important;display:flex!important;flex:0 0 auto!important;width:126px!important;min-width:0!important;max-width:126px!important;height:30px!important;min-height:30px!important;gap:4px!important;margin:0!important;padding:2px 5px!important;box-shadow:none!important;font-size:10px!important;}
#controlSwitcher #chaseDistanceControl[hidden]{display:none!important;}
#controlSwitcher #chaseDistanceControl>span{display:none!important;}
#controlSwitcher #chaseDistanceSlider{width:76px!important;min-width:20px!important;flex:1 1 auto!important;}
#controlSwitcher #chaseDistanceOutput{white-space:nowrap!important;flex:0 0 auto!important;font-size:10px!important;}
#controlSwitcher .robot-face-size-actions{display:inline-flex!important;flex:0 0 auto!important;}
#controlSwitcher #cameraStartChoices.camera-start-choices{position:absolute!important;top:calc(100% + 5px)!important;right:0!important;z-index:99!important;display:flex!important;align-items:center!important;gap:4px!important;padding:5px!important;border:1px solid var(--ui-border,#71809b)!important;border-radius:9px!important;background:rgba(14,27,40,.98)!important;box-shadow:0 4px 18px #0008!important;cursor:default!important;}
#controlSwitcher #cameraStartChoices[hidden]{display:none!important;}
#controlSwitcher #cameraStartChoices button{display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:4px!important;min-height:31px!important;padding:4px 7px!important;white-space:nowrap!important;border-radius:6px!important;font-size:11px!important;color:var(--ui-fg,#fff)!important;background:var(--ui-panel,#172235)!important;border:1px solid var(--ui-border,#71809b)!important;}
#controlSwitcher #cameraStartChoices button[aria-pressed=true]{border-color:var(--solvi-accent,#c875e8)!important;}
#controlSwitcher #cameraStartChoices button img{display:block!important;width:17px!important;height:17px!important;filter:brightness(0) invert(1)!important;}
@media(max-width:600px){#controlSwitcher.control-switcher{left:8px!important;bottom:calc(80px + env(safe-area-inset-bottom))!important;max-width:calc(100vw - 16px)!important;}#controlSwitcher .control-switcher-action-row{max-width:calc(100vw - 22px)!important;}#controlSwitcher #controlModeButton{max-width:80px!important;}#controlSwitcher #cameraFollowButton{max-width:67px!important;}#controlSwitcher #chaseDistanceControl.chase-distance-control{width:97px!important;max-width:97px!important;}#controlSwitcher #chaseDistanceOutput{font-size:9px!important;}}

/* v0.2.181 — release notes and transparent diagnostics for every user. */
.dev-log-tabs{display:flex;gap:6px;flex-wrap:nowrap;margin:-8px 0 10px}
.dev-log-tabs button{flex:1;min-width:0;padding:7px 9px;font-size:12px}
.dev-log-tabs button.selected{background:#324a66;border-color:#83adcf}
.dev-diagnostics{min-height:180px;max-height:48svh;display:flex;flex-direction:column;gap:6px;overflow:hidden}
.dev-diagnostics[hidden],.dev-diagnostics button[hidden]{display:none!important}
.dev-diagnostic-heading{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;color:#c5d9e9}
.dev-diagnostic-heading>div{display:flex;gap:5px;flex-shrink:0}
.dev-diagnostic-heading button{padding:6px 8px;font-size:11px}
.dev-diagnostics p{font-size:11px;color:#9fb1c6;margin:2px 0;line-height:1.4}
.dev-diagnostic-entries{flex:1;min-height:120px;margin:0;overflow:auto;border:1px solid #3c5065;border-radius:8px;padding:10px;background:#0b1420;color:#d9e9fa;font-size:11px;line-height:1.65;white-space:pre-wrap;overflow-wrap:anywhere;user-select:text}
@media(max-width:500px){.dev-diagnostic-heading{align-items:flex-start;flex-direction:column}.dev-diagnostics{max-height:55svh}}
/* v0.2.182 — opt-in agent work orders in the existing draggable robot panel. */
.autonomy-work-order{margin-top:12px;border-top:1px solid rgba(160,190,215,.25);padding-top:11px;min-width:0}
.autonomy-work-order summary{cursor:pointer;font-weight:650;padding:5px 0;line-height:1.5}
.autonomy-work-order .robot-routine-controls{max-height:min(60vh,650px);overflow:auto;padding:4px 2px 9px}
.autonomy-work-order .robot-routine-controls label{min-width:0;max-width:100%}
.autonomy-work-order select,.autonomy-work-order textarea,.autonomy-work-order input[type=number]{width:100%;min-width:0;box-sizing:border-box}
.autonomy-work-order .autonomy-check{display:flex;align-items:flex-start;gap:8px;line-height:1.35}
.autonomy-work-order .autonomy-check input[type=checkbox]{width:16px;min-width:16px;height:16px;margin:2px 0 0;flex:none}
.autonomy-work-order small{display:block;line-height:1.45;overflow-wrap:anywhere}
.autonomy-work-order .bookmark-actions{display:flex;flex-wrap:wrap;gap:6px}
.autonomy-work-order .bookmark-actions button{flex:1 0 auto;min-width:max-content}

/* v0.2.183 — independently resizable Routines, larger work-order goal and real tab pages. */
#robotRoutinePanel.robot-routine-panel{
 width:min(660px,calc(100vw - 24px));min-width:min(385px,calc(100vw - 24px));
 height:min(750px,calc(100vh - 110px));min-height:300px;max-height:calc(100vh - 40px);
 resize:both;overflow:hidden;display:flex;flex-direction:column;
}
#robotRoutinePanel .routine-page{min-height:0;min-width:0;overflow-y:auto;flex:1 1 auto;padding:8px 13px 13px}
#robotRoutinePanel .routine-page[hidden],#robotBrainsPanel [data-brain-page][hidden]{display:none!important}
#robotRoutinePanel .robot-routine-controls{overflow:visible;min-height:0;padding:6px 2px;gap:10px}
#robotRoutinePanel .autonomy-work-order{margin:0;padding:0;border:0}
#robotRoutinePanel .autonomy-work-order>summary{display:none}
#robotRoutinePanel .autonomy-work-order>.robot-routine-controls{max-height:none!important;overflow:visible!important;padding:6px 2px 10px}
#robotRoutinePanel #autonomyGoal{box-sizing:border-box;display:block;width:100%;min-height:190px!important;resize:vertical;line-height:1.52;padding:11px 12px;font-size:14px!important}
#robotRoutinePanel :is(.routines-tabs,.routine-log-controls),#robotBrainsPanel .brains-tabs{display:flex;gap:5px;align-items:center;flex-wrap:wrap;padding:7px 12px;border-bottom:1px solid rgba(155,185,210,.25);flex:0 0 auto}
#robotRoutinePanel .routines-tabs button,#robotBrainsPanel .brains-tabs button{min-width:0;white-space:nowrap;padding:7px 11px;border-radius:7px;font-size:12px}
#robotRoutinePanel .routines-tabs button[aria-selected=true],#robotBrainsPanel .brains-tabs button[aria-selected=true]{background:var(--solvi-accent,#76cae7);color:#072133;font-weight:750}
#robotRoutinePanel .routine-failure{white-space:pre-wrap;overflow-wrap:anywhere;padding:10px 12px;line-height:1.55;border:1px solid rgba(155,185,210,.3);border-radius:8px;color:var(--ui-fg);background:rgba(19,33,46,.7);font-size:12px;max-height:260px;overflow:auto}
#robotRoutinePanel #autonomyLog{min-height:190px;max-height:none;max-width:100%;overflow:auto;white-space:pre-wrap;font:12px/1.55 ui-monospace,SFMono-Regular,Menlo,monospace}
#robotRoutinePanel #autonomyApiGuide{max-height:none;white-space:pre-wrap;line-height:1.5}
#robotBrainsPanel{display:flex;flex-direction:column;overflow:hidden;max-height:94vh}
#robotBrainsPanel[hidden]{display:none!important}
#robotBrainsPanel .brains-tabs{gap:4px;flex-wrap:nowrap;overflow-x:auto;scrollbar-width:thin}
#robotBrainsPanel .brains-tabs button{flex:0 0 auto}
#robotBrainsPanel #brainsCopyTop{margin-left:auto}
#robotBrainsPanel .brains-scroll{flex:1 1 auto;overflow:auto;min-height:0;max-height:none}
#robotBrainsPanel .brains-scroll>details.brains-section>summary{display:none}
#robotBrainsPanel .brains-scroll>details.brains-section[open]>.brains-section-body{padding:6px 0}
#robotBrainsPanel #brainsManualVisionDetails[open]>.brains-section-body{padding:8px 2px}
#robotBrainsPanel [data-brain-page="log"]{display:flex;flex-direction:column;min-height:300px}
#robotBrainsPanel #brainsTaskTrace{max-height:none;min-height:280px;flex:1 1 auto}
#robotBrainsPanel [data-brain-page="memory"] #brainsMemory{max-height:65vh}
@media(max-width:650px){#robotRoutinePanel.robot-routine-panel{resize:none;min-width:0;max-height:calc(100vh - 85px);height:75vh;left:8px;top:70px;width:calc(100vw - 16px)}#robotBrainsPanel .brains-tabs{padding:6px 8px}#robotBrainsPanel .brains-tabs button{padding:6px 8px}#robotRoutinePanel #autonomyGoal{min-height:140px!important}}

/* v0.2.192: expose only inputs used by the selected autonomous work tool. */
#robotRoutinePanel [data-autonomy-field][hidden],#robotRoutinePanel #autonomyStart[hidden]{display:none!important}
#robotRoutinePanel #autonomyModeHelp{display:block;margin:0 0 5px;font-size:12px;line-height:1.5;opacity:.9}
#robotRoutinePanel .autonomy-help{font-size:12px;line-height:1.5;opacity:.85}
#robotRoutinePanel .autonomy-help summary{cursor:pointer}
#robotRoutinePanel [data-autonomy-field="goal"] textarea{min-height:145px!important}

/* v0.2.192 — Isolated, intermittent vertical rainbow on the .help wordmark only.
   The original grey label remains underneath; SOLVI and the version are untouched.
   Two identical color cycles (0–50%, 50–100%) make the vertical scroll seamless. */
.wordmark > span.wordmark-rainbow {
  position: relative;
  isolation: isolate;
}
.wordmark > span.wordmark-rainbow::after {
  content: attr(data-text);
  position: absolute;
  inset: 0;
  color: transparent;
  pointer-events: none;
  background-image: linear-gradient(to bottom,
    #ff4767 0%, #ffad4c 7%, #fce96b 14%, #5be79b 21%,
    #52d9ed 28%, #5e88ff 35%, #a67bff 42%, #f16cce 47%,
    #ff4767 50%, #ffad4c 57%, #fce96b 64%, #5be79b 71%,
    #52d9ed 78%, #5e88ff 85%, #a67bff 92%, #f16cce 97%,
    #ff4767 100%);
  background-size: 100% 200%;
  background-position: 0 0;
  -webkit-background-clip: text;
  background-clip: text;
  -webkit-text-fill-color: transparent;
  opacity: 0;
  animation:
    solvi-help-rainbow-blink 9s ease-in-out infinite,
    solvi-help-rainbow-vertical 6s linear infinite;
}
@keyframes solvi-help-rainbow-blink {
  0%, 15%, 46%, 100% { opacity: 0; }
  19%, 40% { opacity: 1; }
}
@keyframes solvi-help-rainbow-vertical {
  from { background-position: 0 0; }
  to   { background-position: 0 100%; }
}
@media (prefers-reduced-motion: reduce) {
  .wordmark > span.wordmark-rainbow::after {
    animation: none;
    opacity: 0;
  }
}


/* v0.2.195 — In-app About tab (project overview, separate from release notes). */
.dev-about{min-height:120px;max-height:48svh;overflow:auto;color:var(--ui-fg,#d8e3ef);font-size:13px;line-height:1.65}
.dev-about[hidden],.log-scroll[hidden]{display:none!important}
.dev-about h2{font-size:20px;line-height:1.25;margin:8px 0 12px}
.dev-about h3{font-size:14px;margin:16px 0 5px}
.dev-about p{margin:8px 0 12px}
.dev-about-links{display:flex;gap:12px;flex-wrap:wrap}
.dev-about-links a{color:#9bd4ff;text-decoration:underline;text-underline-offset:3px}
.dev-about-links a:focus-visible{outline:2px solid #a9dcff;outline-offset:3px}

/* v0.2.200 — Persistent hand-held equipment actions. */
#robotInventoryPanel .inventory-quick-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:4px 0 9px}
#robotInventoryPanel .inventory-quick-actions button{border:1px solid #557b93;background:#23445b;color:#eef7ff;border-radius:7px;padding:7px 10px;font-size:12px}
#robotInventoryPanel .inventory-quick-actions small{font-size:10px;color:#adc1d3}
#robotInventoryPanel .robot-inventory-item{flex-wrap:wrap}
#robotInventoryPanel .inventory-item-actions{display:flex;gap:4px;flex:1 1 100%;justify-content:flex-start;flex-wrap:wrap}
