@import url('/assets/texopeka-object.css?v=20261001-components-1');
@import url('/assets/texopeka-people.css?v=20261001-components-1');
@import url('/assets/texopeka-equipment.css?v=20261001-components-1');
/* Texopeka only. Visual source: ../object-ui/palettes.css + style.css.
   Presentation layout may change; media lifecycle, actions and routes do not.
   Forest is provisional; data-qs-palette=pine|olive is a reversible token choice. */
html.qs-v3 {
  --qs-accent: #45975f;
  --qs-on-accent: #0a0a0a;
  --qs-selected: #233529;
  --v3-bg: #111111;
  --v3-panel: #191919;
  --v3-panel-2: #1e1e1e;
  --v3-line: #383838;
  --v3-line-strong: #666666;
  --v3-text: #f2f2f2;
  --v3-muted: #a0a0a0;
  --v3-live: var(--qs-accent);
  --v3-accent: var(--qs-accent);
  --v3-error: #f07878;
  --qs-warning: #e0b86c;
  --dock-warning: var(--qs-warning);
  --v3-button-bg: #222222;
  --v3-button-bg-hover: #2d2d2d;
  --v3-button-border: #484848;
  --v3-button-text: var(--v3-text);
  --bg: var(--v3-bg);
  --panel: var(--v3-panel);
  --panel-2: var(--v3-panel-2);
  --text: var(--v3-text);
  --muted: var(--v3-muted);
  --accent: var(--qs-accent);
  --accent-soft: var(--qs-selected);
  --danger: var(--v3-error);
  --ok: var(--qs-accent);
  --dock-bg: var(--v3-bg);
  --dock-surface: var(--v3-panel);
  --dock-raised: var(--v3-panel-2);
  --dock-border: var(--v3-line);
  --dock-text: var(--v3-text);
  --dock-muted: var(--v3-muted);
  --dock-input: var(--v3-panel-2);
  --dock-accent: var(--qs-accent);
  --dock-on-accent: var(--qs-on-accent);
  --dock-selected: var(--qs-selected);
  --dock-focus: var(--qs-accent);
  --dock-success: var(--qs-accent);
  --dock-error: var(--v3-error);
}
html.qs-v3.qs-theme-light {
  --qs-accent: #236c3b;
  --qs-on-accent: #ffffff;
  --qs-selected: #e4efe7;
  --v3-bg: #f5f5f5;
  --v3-panel: #ffffff;
  --v3-panel-2: #eeeeee;
  --v3-line: #d0d0d0;
  --v3-line-strong: #929292;
  --v3-text: #171717;
  --v3-muted: #646464;
  --v3-error: #b42318;
  --qs-warning: #805500;
  --v3-button-bg: #ffffff;
  --v3-button-bg-hover: #eeeeee;
  --v3-button-border: #c2c2c2;
}
html.qs-v3[data-qs-palette="pine"] { --qs-accent: #3e9565; }
html.qs-v3.qs-theme-light[data-qs-palette="pine"] { --qs-accent: #206b46; }
html.qs-v3[data-qs-palette="olive"] { --qs-accent: #8c974e; }
html.qs-v3.qs-theme-light[data-qs-palette="olive"] { --qs-accent: #566c2d; }
html.qs-v3 body { font-family: Inter, "Segoe UI", system-ui, sans-serif; font-synthesis: none; }
/* MAIN correction: prototype topbar, image-first cards and quiet toolbars.
   Existing DOM/actions retained; no new status, cropping or media ordering. */
html.qs-v3 body:not(.login-mode) .header {
  min-height:64px; padding:10px 14px; border-radius:0!important;
  background:var(--v3-bg)!important; box-shadow:none!important;
  border-bottom:1px solid var(--v3-line); gap:20px;
}
html.qs-v3 body .header #brandReloadButton { font-size:17px!important; font-weight:550!important; letter-spacing:-.5px; display:flex; align-items:center; gap:10px; }
html.qs-v3 body .header #brandReloadButton::before { content:'↔'; display:grid; place-items:center; width:27px; height:27px; border:1px solid var(--qs-accent); border-radius:8px; color:var(--qs-accent); font-size:19px; flex:none; }
html.qs-v3 body .header :is(#publicMapOpen,#accessModeToggle,#accountMenuButton,#v3ThemeToggle,#installButton.visible) { min-height:40px; padding:8px 12px; background:transparent!important; border-color:transparent!important; box-shadow:none!important; font-size:13px; font-weight:500; }
html.qs-v3 body .header #installButton.visible { border:1px solid var(--v3-line)!important; color:var(--v3-muted)!important; }
html.qs-v3 body .header :is(#publicMapOpen,#accessModeToggle,#accountMenuButton,#v3ThemeToggle):hover { background:var(--qs-selected)!important; color:var(--qs-accent)!important; }
html.qs-v3 body #cameraList .camera-device-title { padding:12px 10px!important; margin-bottom:12px; background:transparent!important; border:0!important; border-bottom:1px solid var(--v3-line)!important; border-radius:0!important; }
html.qs-v3 body #cameraList .camera-device-title-text { font-size:15px!important; font-weight:550; letter-spacing:-.3px; }
html.qs-v3 body #cameraList :is(.camera-object-view-title,.camera-device-subtitle) { background:transparent!important; border:0!important; padding:8px 2px!important; color:var(--v3-muted)!important; font-size:11px!important; letter-spacing:.35px; }
html.qs-v3 body #cameraList .camera-button {
  padding:0!important; border-radius:12px!important; gap:0!important;
  background:transparent!important; border:1px solid transparent!important;
  box-shadow:none!important; isolation:isolate; grid-template-rows:auto!important;
}
/* Keep the source image box and aspect ratio; title overlays its lower edge. */
html.qs-v3 body #cameraList .camera-button .v3-camera-thumb { border-radius:11px!important; grid-row:1!important; }
html.qs-v3 body #cameraList .camera-button .camera-button-title {
  position:absolute!important; left:0; right:0; bottom:0; z-index:3;
  padding:22px 9px 9px!important; margin:0!important; min-height:44px;
  background:linear-gradient(transparent,rgba(0,0,0,.82)); border-radius:0 0 11px 11px;
  pointer-events:none;
}
html.qs-v3 body #cameraList .camera-button .camera-button-title :is(button,a,.camera-button-actions) { pointer-events:auto; }
html.qs-v3 body #cameraList .camera-button .camera-button-label { color:#fff!important; font-size:12px!important; font-weight:550!important; text-shadow:0 1px 3px #000; }
html.qs-v3 body #cameraList .camera-button.active { border:2px solid var(--qs-accent)!important; box-shadow:0 0 0 2px var(--qs-selected)!important; }
html.qs-v3 body #cameraList .camera-button:hover { border-color:var(--v3-line-strong)!important; }
html.qs-v3 body :is(.v3-catalog-toolbar,.v3-catalog-layout-switch) { background:transparent!important; border-color:var(--v3-line)!important; border-radius:9px!important; box-shadow:none!important; }
html.qs-v3 body .archive-panel { background:var(--v3-bg)!important; border-radius:12px!important; }
html.qs-v3 body .archive-panel button { border-radius:8px!important; background:var(--v3-panel-2)!important; border-color:var(--v3-line)!important; box-shadow:none!important; }
@media(max-width:600px) {
 html.qs-v3 body:not(.login-mode) .header { padding:8px!important; gap:8px; flex-wrap:wrap; }
 html.qs-v3 body .header .title-row { flex-wrap:wrap; gap:8px; }
 html.qs-v3 body .header #brandReloadButton { font-size:15px!important; flex:0 0 100%!important; }
 html.qs-v3 body .header .header-right { flex:1 1 100%; justify-content:flex-start; }
 html.qs-v3 body .header .account-controls { flex-wrap:wrap; gap:4px!important; }
 html.qs-v3 body .header :is(#publicMapOpen,#accessModeToggle,#accountMenuButton,#v3ThemeToggle,#installButton.visible) { min-height:44px; padding:8px; font-size:12px; }
}
html.qs-v3 :is(.header,.panel,.archive-panel,.controls) { background-color: var(--v3-panel); border-color: var(--v3-line); }
html.qs-v3 .title { font-weight: 550; letter-spacing: -.5px; }
/* Non-media navigation. Protected player/timeline/preview sizing is untouched. */
html.qs-v3 body :is(.account-controls > button,.v3-theme-toggle,.workspace-tab,.install-button.visible) {
  border-radius: 9px; border-color: var(--v3-line) !important;
  background: var(--v3-panel-2) !important; color: var(--v3-text) !important;
  font-weight: 500;
}
html.qs-v3 body :is(.access-mode-toggle.active,.workspace-tab.active) {
  border-color: var(--qs-accent) !important; background: var(--qs-selected) !important; color: var(--qs-accent) !important;
}
html.qs-v3 .qs-dock {
  --dock-bg: var(--v3-bg); --dock-surface: var(--v3-panel); --dock-raised: var(--v3-panel-2);
  --dock-border: var(--v3-line); --dock-text: var(--v3-text); --dock-muted: var(--v3-muted);
  --dock-input: var(--v3-panel-2); --dock-accent: var(--qs-accent); --dock-on-accent: var(--qs-on-accent);
  --dock-selected: var(--qs-selected); --dock-focus: var(--qs-accent); --dock-success: var(--qs-accent); --dock-error: var(--v3-error);
}
html.qs-v3 body .qs-dock {
  background: var(--v3-panel) !important; color: var(--v3-text);
  border-color: var(--v3-line) !important; border-radius: 14px !important;
  font-size: 13px; line-height: 1.5;
}
html.qs-v3 body .qs-dock .qs-dock-head { background: var(--v3-panel); border-color: var(--v3-line); }
html.qs-v3 body .qs-dock :is(h2,h3,.qs-dock-title) { font-weight: 550; letter-spacing: -.3px; }
html.qs-v3 body .qs-dock :is(button,.account-menu-action) {
  border-radius: 9px !important; border-color: var(--v3-line) !important;
  background: var(--v3-panel-2) !important; color: var(--v3-text) !important;
  font-family: inherit; font-weight: 500;
}
html.qs-v3 body .qs-dock :is(button,.account-menu-action):hover:not(:disabled) {
  border-color: var(--qs-accent) !important; background: var(--qs-selected) !important;
}
html.qs-v3 body .qs-dock :is(button.active,[aria-pressed="true"],.account-session.current) {
  border-color: var(--qs-accent) !important; background: var(--qs-selected) !important;
}
html.qs-v3 body .qs-dock :is(.danger,.account-session-revoke,.camera-access-revoke,.camera-access-revoke-direct,.face-person-group-remove) {
  color: var(--v3-error) !important; border-color: var(--v3-error) !important;
}
html.qs-v3 body .qs-dock button:is(.danger,.account-session-revoke,.camera-access-revoke,.camera-access-revoke-direct,.face-person-group-remove):hover:not(:disabled) {
  color: var(--v3-error) !important; border-color: var(--v3-error) !important;
  background: var(--v3-panel-2) !important;
}
html.qs-v3 body .qs-dock :is(input:not([type="checkbox"]):not([type="radio"]):not([type="range"]),select,textarea) {
  background: var(--dock-input) !important; color: var(--v3-text) !important;
  border-color: var(--v3-line) !important; border-radius: 9px !important; font: inherit;
}
html.qs-v3 body .qs-dock :is(input,select,textarea)[aria-invalid="true"] { border-color: var(--v3-error) !important; }
html.qs-v3 body .qs-dock :is(button,input,select,textarea):focus-visible {
  outline: 2px solid var(--qs-accent); outline-offset: 2px;
}
html.qs-v3 body .qs-dock :is(button,input,select,textarea):disabled { cursor: not-allowed; opacity: .5; }
html.qs-v3 body :is(#accountPanel,#objectSettingsPanel,#deviceAdminPanel,#displayNodesPanel,#cameraAccessPanel,#objectStoragePanel,#accessDirectoryPanel,#apartmentStructurePanel,#faceAccessPanel).qs-dock button[disabled]:disabled {
  color: var(--v3-muted) !important; background: var(--v3-panel-2) !important;
  border-color: var(--v3-line) !important; opacity: .65; cursor: not-allowed;
}
html.qs-v3 body #cameraAccessPanel.qs-dock .camera-access-form button:disabled,
html.qs-v3 body #cameraAccessPanel.qs-dock .camera-access-actions button:disabled {
  color: var(--v3-muted) !important; background: var(--v3-panel-2) !important;
  border-color: var(--v3-line) !important; opacity: .65;
}
html.qs-v3 body .qs-dock :is(.account-session,.camera-access-grant,.v3-access-grant-card) {
  background: var(--v3-panel-2) !important; border-color: var(--v3-line) !important; border-radius: 11px;
}
html.qs-v3 body .qs-dock :is(.account-session strong,#accountMenuCurrent) { color: var(--v3-text) !important; }
html.qs-v3 body .qs-dock :is(small,.account-sessions-status,.account-sessions-empty,.account-session > span) { color: var(--v3-muted) !important; }
html.qs-v3 body .qs-dock .account-sessions { border-color: var(--v3-line); }
html.qs-v3 body .qs-dock .account-session.security-risk { border-color: var(--dock-warning) !important; }
html.qs-v3 body .qs-dock .qs-object-menu { gap: 10px; }
html.qs-v3 body .qs-dock .qs-object-menu button { min-height: 44px; padding: 10px 12px; }
html.qs-v3 body .qs-dock .account-menu-list { gap: 8px; }
html.qs-v3 body .qs-dock .account-menu-list button { min-height: 40px; padding: 9px 12px; }
/* Login: original background selection, autofill and SMS handlers remain intact. */
html.qs-v3 body.login-mode #loginPanel {
  background: var(--v3-panel) !important; color: var(--v3-text);
  border: 1px solid var(--v3-line) !important; border-radius: 20px;
  box-shadow: 0 20px 70px #0005;
}
html.qs-v3 body.login-mode #loginPanel .login-brand { color: var(--qs-accent); font-weight: 600; letter-spacing: -.5px; }
html.qs-v3 body.login-mode #loginPanel label { color: var(--v3-muted); }
html.qs-v3 body.login-mode #loginPanel input {
  background: var(--v3-panel-2); color: var(--v3-text); border-color: var(--v3-line);
  border-radius: 10px; font-family: inherit;
}
html.qs-v3 body.login-mode #loginPanel input:focus { border-color: var(--qs-accent); box-shadow: 0 0 0 3px var(--qs-selected); }
html.qs-v3 body.login-mode #loginPanel input[aria-invalid="true"] { border-color: var(--v3-error); }
html.qs-v3 body.login-mode #loginPanel .login-actions button { background: var(--qs-accent); color: var(--qs-on-accent); border-color: var(--qs-accent); border-radius: 10px; font-weight: 600; }
html.qs-v3 body.login-mode #loginPanel .login-actions button.secondary { background: var(--v3-panel-2); color: var(--v3-text); border-color: var(--v3-line); }
html.qs-v3 body.login-mode #loginPanel .status { color: var(--v3-muted); }
html.qs-v3 body.login-mode #loginPanel .status.bad { color: var(--v3-error); }
html.qs-v3 body.login-mode #loginPanel .status.ok { color: var(--qs-accent); }
html.qs-v3 body.login-mode #loginPanel :is(input,button):focus-visible { outline: 2px solid var(--qs-accent); outline-offset: 3px; }
html.qs-v3 body.login-mode #loginPanel button:disabled { opacity: .55; cursor: not-allowed; }
html.qs-v3 body :is(.camera-list,.camera-button,.object-group,.v3-settings-menu) { border-color: var(--v3-line); }
html.qs-v3 body .camera-button { background-color: var(--v3-panel-2); color: var(--v3-text); }
html.qs-v3 body .camera-button.active { border-color: var(--qs-accent); }
/* Floating native dialogs retain their own geometry and close/save handlers. */
html.qs-v3 body :is(.camera-name-dialog-card,.v3-settings-menu) {
  background: var(--v3-panel) !important; color: var(--v3-text); border-color: var(--v3-line); border-radius: 14px;
}
/* Explicit primary controls: match original ID specificity. */
/* Main-first: prototype surface hierarchy, without relocating media or cards. */
html.qs-v3 body .header {
 background: var(--v3-panel) !important; border-radius: 12px;
 box-shadow: 0 1px 0 var(--v3-line), 0 4px 16px #00000008;
}
html.qs-v3 body .header .title { font-size: 18px; font-weight: 600; letter-spacing: -.6px; }
html.qs-v3 body .header .account-controls { gap: 8px; }
html.qs-v3 body .header :is(.account-controls > button,.install-button.visible) {
 border-radius: 10px; font-weight: 550; box-shadow: 0 1px 2px #00000008;
}
html.qs-v3 body :is(.header button,.camera-list button):focus-visible { outline: 2px solid var(--qs-accent); outline-offset: 2px; }
html.qs-v3 body .camera-list { background: var(--v3-panel) !important; border-radius: 12px; }
html.qs-v3 body .camera-list :is(.camera-object-heading,.camera-device-heading,.camera-object-view-title) {
 background-color: var(--v3-panel-2) !important; color: var(--v3-text) !important;
 border-color: var(--v3-line) !important; border-radius: 9px; font-weight: 550;
}
html.qs-v3 body .camera-list .camera-object-view-name { letter-spacing: .3px; color: var(--v3-muted); }
html.qs-v3 body .camera-list .camera-button {
 border-color: var(--v3-line) !important; border-radius: 12px !important;
 background: var(--v3-panel) !important; color: var(--v3-text) !important;
 box-shadow: 0 2px 6px #0000000a;
}
html.qs-v3 body .camera-list .camera-button:hover { border-color: var(--v3-line-strong) !important; background: var(--v3-panel-2) !important; }
html.qs-v3 body .camera-list .camera-button.active {
 border-color: var(--qs-accent) !important; background: var(--qs-selected) !important;
 box-shadow: inset 3px 0 0 var(--qs-accent), 0 2px 8px #0000000d;
}
html.qs-v3 body .camera-list .camera-button-label { font-weight: 550; letter-spacing: -.15px; }
html.qs-v3 body .camera-list :is(.qs-object-gear,.v3-catalog-toolbar button) { border-radius: 8px; color: var(--v3-muted); background-color: var(--v3-panel-2); border-color: var(--v3-line); }
html.qs-v3 body .camera-list :is(.camera-button-status.offline,.v3-device-count.offline) { color: var(--v3-error) !important; }
html.qs-v3 body .v3-mobile-live-card { border-color: var(--qs-accent); border-radius: 12px; background-color: var(--v3-panel); }
html.qs-v3 body .v3-mobile-live-title { color: var(--v3-text); font-weight: 550; letter-spacing: -.2px; }
@media (max-width: 760px) {
 html.qs-v3 body .header .title { font-size: 13px; letter-spacing: -.25px; }
 html.qs-v3 body .header .account-controls { gap: 5px; }
 html.qs-v3 body .header :is(.account-controls > button,.install-button.visible) { box-shadow: none; }
}
html.qs-v3 body .qs-dock :is(.primary,button[type="submit"],#deviceDiscoveryStart,#deviceCredentialSave,#cameraAccessSubmit):not(:disabled) {
  background: var(--qs-accent) !important; color: var(--qs-on-accent) !important; border-color: var(--qs-accent) !important;
}
html.qs-v3 body #deviceAdminPanel.qs-dock .device-credential-delete,
html.qs-v3 body #deviceAdminPanel.qs-dock .device-credential-delete:hover:not(:disabled) {
  color: var(--v3-error) !important; border-color: var(--v3-error) !important; background: var(--v3-panel-2) !important;
}

/* Exact approved source: http://192.168.88.227:4217/#web/cameras
   No review bar. Texopeka-exclusive stylesheet, loaded last. */
html.qs-main-layout body:not(.login-mode) { padding:0 20px 14px!important; background:var(--v3-bg)!important; }
html.qs-main-layout body:not(.login-mode) .header { height:48px!important; min-height:48px!important; padding:0!important; gap:12px!important; margin:0 0 4px!important; border:0!important; border-radius:0!important; background:var(--v3-bg)!important; box-shadow:none!important; flex-wrap:nowrap!important; }
html.qs-main-layout body .header .title-row { flex:none; gap:12px; }
html.qs-main-layout body .header #brandReloadButton { font-size:13px!important; font-weight:500!important; gap:7px!important; }
html.qs-main-layout body .header #brandReloadButton::before { content:''; width:23px; height:23px; border-radius:7px; background:var(--qs-selected) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%2345975f' stroke-width='1.5'%3E%3Crect x='5' y='6' width='14' height='12' rx='2'/%3E%3Ccircle cx='12' cy='12' r='3'/%3E%3C/svg%3E") center/18px no-repeat; }
html.qs-main-layout .qs-main-nav { display:flex; align-items:center; gap:4px; margin:auto; }
html.qs-main-layout .qs-main-nav button[hidden], html.qs-main-layout .qs-main-object-gear[hidden] { display:none!important; }
html.qs-main-layout .qs-main-nav button { display:inline-flex; align-items:center; gap:7px; border:0!important; background:transparent!important; color:var(--v3-muted)!important; min-height:32px!important; padding:6px 10px!important; font-size:12px!important; border-radius:9px!important; white-space:nowrap; }
html.qs-main-layout .qs-main-nav button.active { color:var(--qs-accent)!important; background:var(--qs-selected)!important; }
html.qs-main-layout .qs-main-nav .icon { width:17px; height:17px; }
html.qs-main-layout .qs-main-objects { display:flex; align-items:center; gap:8px; min-width:0; }
html.qs-main-layout .qs-main-object-select { max-width:210px; min-width:120px; height:32px; border:1px solid var(--v3-line)!important; border-radius:9px!important; background:var(--v3-panel)!important; color:var(--v3-text)!important; font-size:11px; padding:5px 9px; }
html.qs-main-layout .qs-main-object-gear { width:30px; min-width:30px; height:30px; padding:5px; background:transparent!important; border:0!important; }
html.qs-main-layout .qs-main-object-gear span { display:none; }
html.qs-main-layout body .header .header-right { flex:none; gap:5px; }
html.qs-main-layout body .header .account-controls { gap:4px; flex-wrap:nowrap; }
html.qs-main-layout body .header #v3ThemeToggle { width:30px; min-width:30px; padding:4px!important; }
html.qs-main-layout body .header #v3ThemeToggle span { display:none; }
html.qs-main-layout body .header #accessModeToggle { font-size:11px; padding:5px!important; min-height:30px; }
html.qs-main-layout body .header #installButton.visible { min-height:32px!important; padding:6px 9px!important; font-size:11px!important; }
html.qs-main-layout body #appPanel { border:0!important; background:transparent!important; padding:0!important; box-shadow:none!important; border-radius:0!important; }
html.qs-main-layout body .player-grid { gap:0!important; }
html.qs-main-layout .qs-main-other-object { display:none!important; }
html.qs-main-layout body .camera-workspace { background:transparent!important; padding:0!important; border:0!important; box-shadow:none!important; border-radius:0!important; }
html.qs-main-layout body #cameraList .camera-device-title { padding:3px 0!important; margin:0 0 5px!important; border:0!important; min-height:25px; }
html.qs-main-layout body #cameraList .camera-device-title-text { font-size:11px!important; }
html.qs-main-layout body #cameraList :is(.camera-object-view-title,.camera-device-subtitle) { padding:3px 0!important; font-size:10px!important; margin:0!important; }
html.qs-main-layout body #cameraList .camera-button { border-radius:10px!important; }
html.qs-main-layout body #cameraList .camera-button .v3-camera-thumb { aspect-ratio:1.53; border-radius:9px!important; }
html.qs-main-layout body #cameraList .camera-button .camera-button-title { padding:22px 10px 9px!important; }
html.qs-main-layout body #cameraList .camera-button .camera-button-label { font-size:12px!important; font-weight:500!important; }
html.qs-main-layout body .v3-catalog-toolbar { min-height:26px; height:28px; padding:0 2px!important; margin:0 0 5px!important; border:0!important; background:transparent!important; }
html.qs-main-layout body .v3-catalog-layout-switch { height:26px; }
html.qs-main-layout body .v3-catalog-layout-switch button { min-height:24px; height:24px; padding:2px 6px; }
html.qs-main-layout .qs-main-camera-caption { position:absolute; left:16px; right:16px; bottom:14px; z-index:4; pointer-events:none; color:white; text-shadow:0 1px 3px #000; display:flex; flex-direction:column; gap:3px; }
html.qs-main-layout .qs-main-camera-caption strong { font-size:16px; font-weight:500; }
html.qs-main-layout .qs-main-camera-caption small { font-size:10px; color:#d0d0d0; }
html.qs-main-layout body .video-wrapper { border:0!important; border-radius:12px!important; }
html.qs-main-layout body .qs-main-controls { display:flex!important; align-items:center; justify-content:space-between!important; flex-wrap:wrap!important; min-height:40px; padding:7px 0; gap:5px!important; background:transparent!important; }
html.qs-main-layout body .qs-main-controls .v3-command-controls { display:flex!important; flex:1 1 auto!important; justify-content:flex-start!important; flex-wrap:wrap!important; gap:5px; }
html.qs-main-layout body .qs-main-controls :is(button,select) { background:transparent!important; border:0!important; box-shadow:none!important; border-radius:7px!important; min-height:28px; height:28px; padding:3px 6px; color:var(--v3-muted); }
html.qs-main-layout body .qs-main-controls .v3-control-group { flex:none!important; width:auto!important; min-width:0!important; }
html.qs-main-layout body .qs-main-controls input[type=range] { width:62px; }
html.qs-main-layout body .qs-main-controls .v3-zoom-control input[type=range] { width:62px; }
html.qs-main-layout body .qs-main-controls .icon { width:17px; height:17px; }
html.qs-main-layout body #timelineDock { border:0!important; background:transparent!important; border-radius:0!important; overflow:visible!important; }
html.qs-main-layout body #videoOverlay { background:transparent!important; border:0!important; padding:0!important; display:flex; flex-direction:column; gap:5px; overflow:visible!important; }
html.qs-main-layout body .overlay-row.status-line { order:5; flex-wrap:wrap; min-height:22px; font-size:10px; gap:6px; }
html.qs-main-layout body .overlay-row.status-line #liveBadge { margin-left:auto; order:5; background:transparent!important; border:0!important; color:var(--qs-accent); font-size:10px; min-height:22px; padding:2px 0; }
html.qs-main-layout body .overlay-row.status-line :is(#seekLabel,#timelineScaleLabel,#timelineHint) { font-size:10px; color:var(--v3-muted); }
html.qs-main-layout body #timelineDay { height:48px!important; min-height:48px!important; background:transparent!important; border:0!important; border-top:1px solid var(--v3-line)!important; border-radius:0!important; }
html.qs-main-layout body #timelineDayLabels { min-height:18px; font-size:10px; color:var(--v3-muted); }
html.qs-main-layout body .overlay-row.day-row { display:flex!important; align-items:center!important; justify-content:space-between; gap:7px; flex-wrap:wrap; margin:5px 0 0; }
html.qs-main-layout body .day-row #dayPicker { width:auto!important; flex:none; gap:5px; }
html.qs-main-layout body .day-row :is(button,select) { height:29px; min-height:29px; border-radius:8px!important; border-color:var(--v3-line)!important; background:var(--v3-panel)!important; color:var(--v3-muted)!important; font-size:10px; padding:4px 8px; }
html.qs-main-layout body .day-row .v3-speed-control { margin-left:auto; }
html.qs-main-layout body .qs-main-entrances { position:relative; margin:12px 0 0; background:transparent!important; border:0!important; padding:8px 0!important; width:100%; }
html.qs-main-layout body .qs-main-entrances button { min-height:55px; border:1px solid var(--v3-line)!important; border-radius:9px!important; background:var(--v3-panel)!important; color:var(--v3-muted)!important; }
@media(min-width:1251px) {
 html.qs-main-layout body .player-grid.v3-resizable-layout > .v3-player-pane { min-width:340px!important; max-width:none!important; height:100%; align-content:start; overflow:visible; }
 html.qs-main-layout body .player-grid.v3-resizable-layout > .v3-catalog-pane { flex:0 0 var(--v3-catalog-width,30%); min-width:320px!important; max-width:560px!important; width:var(--v3-catalog-width,30%); padding-left:10px!important; }
 html.qs-main-layout body .v3-catalog-splitter { flex-basis:10px!important; width:10px!important; min-width:10px!important; max-width:10px!important; }
 html.qs-main-layout body .v3-catalog-splitter::before { inset:0 4px; opacity:.55; }
 html.qs-main-layout body .v3-catalog-splitter-handle { background:transparent; box-shadow:none; }
 html.qs-main-layout body #singleViewPanel:not(.hidden) { display:flex!important; flex-direction:column; align-items:center; justify-content:flex-start; height:100%; gap:0!important; overflow:visible!important; }
 html.qs-main-layout body #singleViewPanel > :is(.video-wrapper,.qs-main-controls,#timelineDock,#timelineStallMarkerWrap,#streamStatus) { width:min(100%,calc((100dvh - 303px) * 1.77777778))!important; max-width:100%; flex:none; }
 html.qs-main-layout body #singleViewPanel > .video-wrapper { aspect-ratio:16/9!important; height:auto!important; min-height:0!important; max-height:none!important; }
 html.qs-main-layout body #videoPlayer { width:100%!important; height:100%!important; object-fit:contain!important; }
 html.qs-main-layout body #streamStatus { font-size:10px; margin-top:5px; color:var(--v3-muted); }
}
@media(max-width:1250px) and (min-width:761px) {
 html.qs-main-layout body .player-grid { display:grid!important; grid-template-columns:minmax(0,1.22fr) minmax(0,1fr)!important; gap:16px!important; }
 html.qs-main-layout body .v3-player-pane { min-width:0!important; }
 html.qs-main-layout body #singleViewPanel:not(.hidden) { display:flex!important; flex-direction:column; justify-content:flex-start; }
 html.qs-main-layout body .video-wrapper { aspect-ratio:16/9; height:auto!important; }
 html.qs-main-layout .qs-main-object-select { max-width:145px; }
 html.qs-main-layout body .header #installButton span { display:none; }
}
@media(max-width:760px) {
 html.qs-main-layout body:not(.login-mode) { padding:0 15px 75px!important; }
 html.qs-main-layout body:not(.login-mode) .header { min-height:54px!important; height:auto!important; flex-wrap:wrap!important; gap:7px!important; }
 html.qs-main-layout body .header .title-row { gap:5px; }
 html.qs-main-layout body .header #brandReloadButton { font-size:0!important; gap:0!important; flex:none!important; }
 html.qs-main-layout body .header #brandReloadButton::before { width:23px; height:23px; }
 html.qs-main-layout body .header #installButton.visible { width:28px; min-width:28px; padding:4px!important; }
 html.qs-main-layout body .header #installButton span { display:none; }
 html.qs-main-layout .qs-main-objects { margin-left:auto; }
 html.qs-main-layout .qs-main-object-select { width:145px; min-width:0; max-width:145px; }
 html.qs-main-layout .qs-main-object-gear { width:28px; min-width:28px; }
 html.qs-main-layout body .header .header-right { flex:none!important; width:auto; }
 html.qs-main-layout body .header #accessModeToggle { font-size:10px; max-width:85px; padding:4px!important; }
 html.qs-main-layout .qs-main-nav { position:fixed; z-index:50; bottom:0; left:0; right:0; margin:0; justify-content:space-around; background:var(--v3-bg); border-top:1px solid var(--v3-line); padding:8px 8px max(10px,env(safe-area-inset-bottom)); }
 html.qs-main-layout .qs-main-nav button { flex-direction:column; gap:4px; font-size:9px!important; min-height:42px!important; }
 html.qs-main-layout .qs-main-nav .icon { width:20px; height:20px; }
 html.qs-main-layout body .player-grid { display:flex!important; flex-direction:column; gap:12px!important; }
 html.qs-main-layout body #singleViewPanel:not(.hidden) { display:flex!important; flex-direction:column; width:100%; height:auto!important; }
 html.qs-main-layout body .video-wrapper { height:auto!important; min-height:0!important; width:100%; aspect-ratio:16/9!important; }
 html.qs-main-layout body .qs-main-controls { margin:0!important; width:100%; min-height:40px; }
 html.qs-main-layout body .qs-main-controls input[type=range] { width:45px!important; }
 html.qs-main-layout body #timelineDock { width:100%; }
 html.qs-main-layout body .camera-workspace { width:100%!important; }
 html.qs-main-layout body #cameraList .camera-button .v3-camera-thumb { aspect-ratio:1.38; }
 html.qs-main-layout body #cameraList .camera-button .camera-button-label { font-size:11px!important; }
 html.qs-main-layout .qs-main-camera-caption { left:12px; bottom:12px; }
 html.qs-main-layout .qs-main-camera-caption strong { font-size:14px; }
}
/* Width follows the available shell, not legacy 100vw plus body padding. */
html.qs-main-layout body .shell { padding:0!important; }
html.qs-main-layout body #cameraList :is(.camera-device-group,.camera-device-cameras,.camera-object-view-block) { background:transparent!important; border:0!important; box-shadow:none!important; padding:0!important; gap:8px!important; }
html.qs-main-layout body #cameraList .camera-device-toggle { background:transparent!important; border:0!important; min-height:25px!important; padding:2px 4px!important; }
html.qs-main-layout body #cameraList .camera-object-view-title { min-height:20px!important; padding:2px 0!important; margin:0!important; }
html.qs-main-layout body .qs-main-controls .qs-main-archive { display:inline-flex; align-items:center; gap:4px; font-size:11px; background:var(--v3-panel-2)!important; }
html.qs-main-layout body .qs-main-controls #fullscreenButton { order:10; }
html.qs-main-layout body .app { width:100%!important; max-width:none!important; height:calc(100dvh - 14px); gap:4px!important; margin:0 auto; }
@media(max-width:760px) {
 html.qs-main-layout body .app { height:auto!important; min-height:100dvh; }
 html.qs-main-layout body .header .title-row { width:auto!important; flex-wrap:nowrap!important; }
 html.qs-main-layout body .v3-player-pane { display:block!important; position:relative!important; width:100%!important; height:auto!important; min-height:0!important; }
 html.qs-main-layout body #singleViewPanel:not(.hidden) { position:relative!important; display:flex!important; height:auto!important; }
 html.qs-main-layout body #videoOverlay { position:relative!important; inset:auto!important; width:100%!important; }
 html.qs-main-layout body .qs-main-controls { position:relative!important; inset:auto!important; overflow:visible!important; }
 html.qs-main-layout body .mobile-workspace-tabs { display:none!important; }
 html.qs-main-layout body .v3-catalog-toolbar { display:flex!important; }
 
 html.qs-main-layout body:not(.qs-main-camera-focus) .v3-player-pane { display:none!important; }
 html.qs-main-layout body .header #accessModeToggle { max-width:none!important; width:auto!important; overflow:visible!important; }
 html.qs-main-layout body:not(.qs-main-camera-focus) .camera-workspace { margin-top:8px; }
}

/* Editor-only rules from the accepted live reference. */
.theme-editor {
  width: 100%;
  max-width: 560px;
  min-width: 0;
  color: var(--text);
}
.theme-editor button,
.theme-editor input { font: inherit; }
.theme-editor-presets {
  display: flex;
  flex-wrap: wrap;
  gap: 7px;
  margin-bottom: 17px;
}
.theme-editor-presets button {
  display: inline-flex;
  align-items: center;
  gap: 7px;
  min-height: 34px;
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 8px;
  background: var(--panel2);
  color: var(--text);
  font-size: 11px;
  line-height: 1.3;
}
.theme-preset-dot {
  width: 10px;
  height: 10px;
  flex: 0 0 10px;
  border-radius: 50%;
  background: var(--preset-color, var(--accent));
}
.theme-editor-presets button.active { border-color: var(--accent); }
.theme-editor-modes {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 4px;
  margin: 0 0 19px;
  padding: 4px;
  border: 1px solid var(--line);
  border-radius: 10px;
  background: var(--panel2);
}
.theme-editor-modes button {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 34px;
  padding: 6px 10px;
  border: 0;
  border-radius: 7px;
  background: transparent;
  color: var(--muted);
  font-size: 12px;
}
.theme-editor-modes button.active {
  background: var(--panel);
  color: var(--text);
  box-shadow: 0 1px 4px rgba(0, 0, 0, .12);
}
.theme-editor-modes .icon { width: 15px; height: 15px; }
.theme-editing-label { margin: 0 0 11px; font-size: 12px; font-weight: 500; }
.theme-editor-fields { display: grid; gap: 9px; }
.theme-color-row {
  display: grid;
  grid-template-columns: minmax(0, 1fr) 40px minmax(78px, 92px);
  align-items: center;
  gap: 10px;
  min-width: 0;
  padding: 9px 11px;
  border: 1px solid var(--line);
  border-radius: 9px;
  background: var(--panel2);
}
.theme-color-row > label { min-width: 0; font-size: 12px; line-height: 1.4; }
.theme-editor input[type="color"] {
  display: block;
  appearance: none;
  -webkit-appearance: none;
  width: 40px;
  height: 34px;
  min-width: 0;
  min-height: 34px;
  padding: 3px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--panel);
  cursor: pointer;
}
.theme-editor input[type="color"]::-webkit-color-swatch-wrapper { padding: 0; }
.theme-editor input[type="color"]::-webkit-color-swatch { border: 0; border-radius: 4px; }
.theme-editor input[type="color"]::-moz-color-swatch { border: 0; border-radius: 4px; }
.theme-editor input[data-theme-hex] {
  width: 100%;
  min-width: 0;
  height: 34px;
  padding: 5px 7px;
  border: 1px solid var(--line);
  border-radius: 7px;
  background: var(--panel);
  color: var(--text);
  font-family: ui-monospace, SFMono-Regular, Consolas, monospace;
  font-size: 12px;
  line-height: 1.3;
}
.theme-editor input[data-theme-hex][aria-invalid="true"] { border-color: var(--red); }
.theme-editor button:focus-visible,
.theme-editor input:focus-visible { outline: 2px solid var(--accent); outline-offset: 2px; }
.theme-editor-note,
.theme-contrast {
  margin: 12px 0 0;
  color: var(--muted);
  font-size: 11px;
  line-height: 1.6;
}
.theme-contrast[data-pass="false"] { color: var(--red); }
.theme-editor-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 9px; margin-top: 19px; }
.theme-editor-actions .button { min-height: 36px; padding: 9px 12px; font-size: 11px; }
.theme-editor .theme-reset {
  min-height: 36px;
  padding: 8px 3px;
  border: 0;
  background: transparent;
  color: var(--muted);
  font-size: 11px;
  text-decoration: underline;
  text-underline-offset: 3px;
}
.theme-editor button:disabled { opacity: .5; cursor: default; }
.theme-editor-status { min-height: 18px; margin: 11px 0 0; color: var(--muted); font-size: 11px; line-height: 1.6; }
.theme-editor-status[data-error="true"] { color: var(--red); }
@media (max-width: 400px) {
  .theme-color-row { grid-template-columns: minmax(0, 1fr) 36px 80px; gap: 7px; padding: 8px; }
  .theme-editor input[type="color"] { width: 36px; }
  .theme-color-row > label { font-size: 11px; }
  .theme-editor-actions .button { width: 100%; }
  .theme-editor-actions .theme-reset { padding-inline: 0; }
}

.style-generator{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;padding:0 0 17px}.generator-heading h3{font-size:14px;font-weight:550}.generator-heading p{font-size:10px;color:var(--muted);margin-top:4px}.generator-controls{display:flex;align-items:center;gap:5px}.theme-editor .generator-button{width:auto;min-height:32px;padding:7px 10px;font-size:11px;border-radius:8px;background:var(--accent);color:var(--accent-text);box-shadow:0 3px 10px color-mix(in srgb,var(--accent),transparent 85%)}.theme-editor .generator-icon{width:30px;height:32px;border-radius:8px;border:1px solid var(--line);background:var(--panel2);color:var(--muted);font-size:16px;display:grid;place-items:center}.generator-current{display:flex;justify-content:space-between;align-items:center;gap:12px;border-top:1px solid var(--line);padding:12px 0 0;font-size:11px;color:var(--muted)}.generator-swatches{display:flex;gap:4px;flex-shrink:0}.generator-swatches i{display:block;width:14px;height:14px;border-radius:4px;border:1px solid color-mix(in srgb,var(--line),transparent 25%)}.theme-advanced{margin-top:12px;border-top:1px solid var(--line)}.theme-advanced>summary{padding:12px 0;list-style:none;cursor:pointer;display:flex;justify-content:space-between;color:var(--muted);font-size:11px}.theme-advanced>summary::after{content:'+'}.theme-advanced[open]>summary::after{content:'−'}.theme-advanced>summary::-webkit-details-marker{display:none}.theme-advanced>summary:focus-visible{outline:2px solid var(--accent)}

/* Account anatomy from the live 4217 reference; target-only asset. */
html.qs-v3.qs-main-layout body #accountPanel.qs-dock,
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-account-subpage-panel {
 padding:18px!important; gap:0!important; border-radius:13px!important; font-size:14px!important; line-height:1.5; background:var(--v3-panel)!important;
}
html.qs-v3.qs-main-layout body #accountPanel.qs-dock > .qs-dock-head,
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-account-subpage-panel > .qs-dock-head {
 min-height:32px; margin:0 0 20px!important; padding:0!important; border:0!important; background:var(--v3-panel)!important; gap:10px;
}
html.qs-v3.qs-main-layout body #accountPanel.qs-dock > .qs-dock-head strong,
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-account-subpage-panel > .qs-dock-head strong { order:0; font-size:18px; font-weight:600; flex:1; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock > .qs-dock-head small { display:none; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock > .qs-dock-head button,
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-account-subpage-panel > .qs-dock-head button {
 order:2; width:30px; height:30px; min-height:30px; padding:0!important; font-size:0!important; border:0!important; border-radius:8px; background:transparent!important; color:var(--v3-muted)!important;
}
html.qs-v3.qs-main-layout body #accountPanel.qs-dock > .qs-dock-head button::before,
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-account-subpage-panel > .qs-dock-head button::before { content:'←'; font-size:20px; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock #accountMenu { display:block; position:static!important; width:100%!important; min-width:0!important; max-width:none!important; max-height:none!important; padding:0!important; margin:0!important; border:0!important; box-shadow:none!important; background:transparent!important; overflow:visible!important; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock #accountMenu[hidden] { display:none!important; }
html.qs-v3.qs-main-layout body .qs-account-source { position:absolute!important; width:1px; height:1px; padding:0; overflow:hidden; clip-path:inset(50%); white-space:nowrap; }
html.qs-v3.qs-main-layout body .qs-account-identity { display:flex; flex-direction:column; align-items:center; margin:0 0 12px; text-align:center; }
html.qs-v3.qs-main-layout body .qs-account-avatar { width:43px; height:43px; display:grid; place-items:center; border-radius:50%; background:color-mix(in srgb,var(--v3-text),transparent 94.5%); color:var(--qs-accent); margin:0 0 11px; }
html.qs-v3.qs-main-layout body .qs-account-avatar .qs-account-icon { width:21px; height:21px; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-identity h3 { font-size:14px; font-weight:600; margin:0; }
html.qs-v3.qs-main-layout body .qs-account-phone { margin:5px 0 0; color:var(--v3-muted); font-size:11px; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-row {
 display:flex!important; width:100%; align-items:center; gap:12px; min-height:60px; padding:12px 0!important; margin:0!important; border:0!important; border-bottom:1px solid var(--v3-line)!important; border-radius:0!important; background:transparent!important; color:var(--v3-text)!important; text-align:left; box-shadow:none!important; font-size:13px; line-height:1.5;
}
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-row[hidden] { display:none!important; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock button.qs-account-row:hover:not(:disabled) { background:color-mix(in srgb,var(--v3-text),transparent 97%)!important; }
html.qs-v3.qs-main-layout body .qs-account-row-body { display:flex; flex:1; flex-direction:column; gap:3px; min-width:0; }
html.qs-v3.qs-main-layout body .qs-account-row-body strong { font-size:13px; font-weight:400; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-row-body small { font-size:11px; line-height:1.5; color:var(--v3-muted)!important; }
html.qs-v3.qs-main-layout body .qs-account-row-body small:empty { display:none; }
html.qs-v3.qs-main-layout body .qs-account-row-icon { display:grid; place-items:center; width:36px; height:36px; flex:none; border-radius:10px; color:var(--v3-muted); background:color-mix(in srgb,var(--v3-text),transparent 97%); }
html.qs-v3.qs-main-layout body .qs-account-icon { width:18px; height:18px; }
html.qs-v3.qs-main-layout body .qs-account-chevron { color:var(--v3-muted); font-size:22px; font-weight:300; margin-left:auto; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-switch { position:relative; width:38px; min-width:38px; height:22px; min-height:22px; padding:0; border:0!important; border-radius:99px!important; background:var(--v3-line)!important; flex:none; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-switch::before { content:''; position:absolute; left:3px; top:3px; width:16px; height:16px; border-radius:50%; background:var(--v3-text); transition:transform .15s; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-switch[aria-checked="true"] { background:var(--qs-accent)!important; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-switch[aria-checked="true"]::before { transform:translateX(16px); background:var(--qs-on-accent); }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock #accountAddButton::before { display:none; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock #accountLogoutButton { border-bottom:0!important; color:var(--v3-error)!important; }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock #accountLogoutButton .qs-account-row-icon { color:var(--v3-error); }
html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-risk small { color:var(--dock-warning)!important; }
html.qs-v3.qs-main-layout body .qs-account-stored { border-bottom:1px solid var(--v3-line); font-size:11px; color:var(--v3-muted); }
html.qs-v3.qs-main-layout body .qs-account-stored > summary { cursor:pointer; min-height:44px; padding:12px 0; }
html.qs-v3.qs-main-layout body .qs-account-stored #accountMenuList { margin-bottom:12px; }
html.qs-v3.qs-main-layout body .qs-account-subpage { width:100%; padding:0; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-sessions-head { margin:0 0 12px; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-sessions-head > strong { display:none; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-sessions-status { line-height:1.6; margin:0 0 14px; color:var(--v3-muted); }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-sessions-list { display:grid; gap:12px; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-session { padding:12px; border-radius:10px; background:var(--v3-panel-2)!important; align-items:start; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-session strong { font-size:12px; white-space:normal; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-session small { font-size:11px; line-height:1.6; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-session-clients { padding:0; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-session-clients li { border-radius:7px; padding:8px; overflow-wrap:anywhere; }
html.qs-v3.qs-main-layout body .qs-account-subpage .account-session-revoke { grid-column:1/-1; justify-self:start; min-height:34px; border-radius:8px; }
html.qs-v3.qs-main-layout body .qs-account-install-guide { color:var(--v3-muted); line-height:1.7; }
html.qs-v3.qs-main-layout body .qs-account-theme-editor :is(button,input) { font-size:12px; }
html.qs-v3.qs-main-layout.qs-account-appearance body:not(.login-mode) { background-image:var(--ui-bg-image,none)!important; }
html.qs-v3.qs-main-layout.qs-account-appearance body .qs-dock { background-color:var(--ui-panel-fill,var(--v3-panel))!important; background-image:var(--ui-panel-image,none)!important; box-shadow:var(--ui-shadow,none)!important; backdrop-filter:blur(var(--ui-blur,0px)); }
html.qs-v3.qs-main-layout.qs-account-appearance body .theme-editor .generator-button { background:var(--qs-accent)!important; background-image:var(--ui-button-image,none)!important; color:var(--qs-on-accent)!important; }
html.qs-v3.qs-main-layout.qs-account-appearance[data-ui-rounded="true"] body .qs-dock { border-radius:var(--ui-radius)!important; }
@media(min-width:1251px) {
 html.qs-v3.qs-main-layout body.qs-account-view .player-grid.v3-resizable-layout > .v3-catalog-pane { min-width:320px!important; max-width:420px!important; }
}
@media(max-width:760px) {
 html.qs-v3.qs-main-layout body.login-mode > .qs-main-nav { display:none!important; }
 html.qs-v3.qs-main-layout body.qs-account-view .v3-player-pane { display:none!important; }
 html.qs-v3.qs-main-layout body.qs-account-view :is(.v3-catalog-toolbar,#commissioningNodeList,#cameraEntranceControls) { display:none!important; }
 html.qs-v3.qs-main-layout body.qs-account-view .camera-workspace { margin:8px 0 0!important; }
 html.qs-v3.qs-main-layout body #accountPanel.qs-dock,
 html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-account-subpage-panel { padding:20px!important; min-height:0!important; height:calc(100dvh - 165px)!important; max-height:calc(100dvh - 165px)!important; overflow-y:auto; overflow-x:hidden; position:relative!important; top:auto!important; }
 html.qs-v3.qs-main-layout body #accountPanel.qs-dock .qs-account-row { min-height:66px; }
}
@media(prefers-reduced-motion:reduce) { html.qs-v3.qs-main-layout .qs-account-switch::before { transition:none; } }

/* qs-main-multiview-native-v1: preserve native single/grid visibility. */
html.qs-v3.qs-main-layout body #singleViewPanel.hidden,
html.qs-v3.qs-main-layout body #multiViewPanel.hidden {
  display:none!important;
}
/* Same native controls are mounted inside the existing fullscreen overlay. */
html.qs-main-layout body .video-wrapper:fullscreen #videoOverlay,
html.qs-main-layout body .video-wrapper:-webkit-full-screen #videoOverlay {
  position:absolute!important; inset:auto 0 0!important; width:100%!important;
}
html.qs-main-layout body .video-wrapper:fullscreen .qs-main-controls,
html.qs-main-layout body .video-wrapper:-webkit-full-screen .qs-main-controls {
  position:relative!important; width:100%; padding:5px 8px;
}

/* Final reference layer: full-width shell, real-object picker and native guests.
   All player/seek/quality/call form controls retain their original nodes. */
html.qs-main-layout .qs-main-nav { flex:1 1 auto; min-width:0; justify-content:center; overflow-x:auto; scrollbar-width:none; }
html.qs-main-layout .qs-main-nav::-webkit-scrollbar { display:none; }
html.qs-main-layout .qs-main-nav > button { flex-shrink:0; }
html.qs-main-layout .qs-main-nav > button.active { background:color-mix(in srgb,var(--v3-text),transparent 94.5%)!important; }
/* The native account renderer replaces button text; use a CSS icon that survives
   its updates, and keep its authoritative security-warning counter visible. */
html.qs-main-layout .qs-main-nav #accountMenuButton { position:relative; }
html.qs-main-layout .qs-main-nav #accountMenuButton > svg { display:none; }
html.qs-main-layout .qs-main-nav #accountMenuButton::before { content:''; width:17px; height:17px; flex:none; background:currentColor; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6'%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3Cpath d='M5 22v-4a7 7 0 0 1 14 0v4'/%3E%3C/svg%3E") center/contain no-repeat; }
html.qs-main-layout .qs-main-nav #accountMenuButton.security-warning::after { position:absolute; top:1px; right:1px; margin:0; padding:0 3px; font-size:7px; line-height:10px; color:var(--qs-warning); pointer-events:none; }
html.qs-main-layout .qs-main-nav #accountMenuButton.security-warning { border:0!important; box-shadow:none!important; }
html.qs-main-layout body :is(.qs-objects-open,.qs-page-back) { display:inline-flex; align-items:center; justify-content:center; gap:7px; min-height:32px; padding:6px 9px; border:1px solid var(--v3-line)!important; border-radius:9px!important; background:var(--v3-panel)!important; color:var(--v3-muted)!important; font:inherit; font-size:11px; }
html.qs-main-layout .qs-objects-open .icon { width:17px; height:17px; }
html.qs-main-layout .qs-objects-open span { display:none; }
html.qs-main-layout .qs-main-objects { gap:6px; }
html.qs-main-layout body .header #accessModeToggle.active { color:var(--qs-accent)!important; background:var(--qs-selected)!important; }
html.qs-main-layout .qs-objects-page[hidden] { display:none!important; }
html.qs-main-layout body.qs-object-picker-open #appPanel > .player-grid { display:none!important; }
html.qs-main-layout body.qs-object-picker-open #appPanel { display:flex; flex-direction:column; min-height:0; overflow:hidden; }
html.qs-main-layout .qs-objects-page { width:100%; max-width:1100px; margin:0 auto; min-width:0; min-height:0; padding:20px 0; overflow:auto; overscroll-behavior:contain; flex:1; color:var(--v3-text); }
html.qs-main-layout .qs-page-head { display:flex; align-items:center; gap:16px; margin-bottom:10px; }
html.qs-main-layout .qs-page-head h1 { margin:0; font-size:22px; font-weight:600; letter-spacing:-.5px; outline:none; }
html.qs-main-layout .qs-page-back .icon { width:17px; height:17px; }
html.qs-main-layout .qs-page-note { color:var(--v3-muted); font-size:12px; line-height:1.6; margin:8px 0 24px; }
html.qs-main-layout .qs-object-cards { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; }
html.qs-main-layout .qs-object-card { min-width:0; }
html.qs-main-layout body .qs-object-preview { position:relative; display:flex; align-items:center; justify-content:center; width:100%; min-height:130px; aspect-ratio:1.6; padding:0; isolation:isolate; overflow:hidden; border:1px solid var(--v3-line)!important; border-radius:12px!important; background:var(--v3-panel-2)!important; color:var(--v3-text)!important; }
html.qs-main-layout body .qs-object-preview[aria-pressed="true"] { border-color:var(--qs-accent)!important; box-shadow:0 0 0 2px var(--qs-selected); }
html.qs-main-layout .qs-object-preview > img { width:100%; height:100%; object-fit:cover; position:absolute; inset:0; z-index:-1; }
html.qs-main-layout .qs-object-preview > .icon { width:38px; height:38px; color:var(--v3-muted); margin-bottom:28px; }
html.qs-main-layout .qs-object-preview > span { position:absolute; left:0; right:0; bottom:0; padding:32px 14px 14px; text-align:left; color:#fff; background:linear-gradient(transparent,#000c); font-size:14px; font-weight:500; overflow-wrap:anywhere; }
html.qs-main-layout .qs-object-card-foot { display:flex; align-items:center; justify-content:space-between; gap:10px; padding:10px 2px; }
html.qs-main-layout .qs-object-card-foot small { color:var(--v3-muted); font-size:11px; }
html.qs-main-layout body .qs-object-card-foot button { min-height:32px; padding:5px 10px; border:1px solid var(--v3-line)!important; border-radius:8px!important; background:var(--v3-panel)!important; color:var(--v3-muted)!important; font:inherit; font-size:11px; }
html.qs-main-layout body :is(.qs-objects-open,.qs-page-back,.qs-object-card-foot button,.qs-object-preview):hover { border-color:var(--qs-accent)!important; }
html.qs-main-layout body :is(.qs-objects-open,.qs-page-back,.qs-object-preview,.qs-object-card-foot button):focus-visible { outline:2px solid var(--qs-accent); outline-offset:3px; }
html.qs-main-layout .qs-empty-state { padding:24px; color:var(--v3-muted); }
html.qs-main-layout .qs-guest-info { font-size:13px; line-height:1.7; }
html.qs-main-layout .qs-guest-info > .icon { width:36px; height:36px; color:var(--qs-accent); }
html.qs-main-layout .qs-guest-info h2 { font-size:18px; font-weight:600; margin:16px 0 8px; }
html.qs-main-layout .qs-guest-info .qs-page-note { margin:0 0 16px; }
html.qs-main-layout .qs-guest-info > button { display:flex; align-items:center; justify-content:center; gap:8px; width:100%; min-height:40px; margin-top:24px; }
html.qs-main-layout .qs-guest-info > button .icon { width:17px; height:17px; }
/* Real capability-gated settings, expressed as the donor's single row list. */
html.qs-main-layout body .qs-dock .qs-object-menu { display:flex!important; flex-direction:column; gap:0!important; }
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-dock .qs-object-menu > button { min-height:56px; padding:14px 12px; border:0!important; border-bottom:1px solid var(--v3-line)!important; border-radius:0!important; background:transparent!important; color:var(--v3-text)!important; font-size:13px; text-align:left; }
html.qs-v3.qs-main-layout body #objectSettingsPanel.qs-dock .qs-object-menu > button:hover { background:var(--qs-selected)!important; }
@media(min-width:1251px) {
 html.qs-main-layout body .player-grid.v3-resizable-layout > .v3-player-pane { min-width:480px!important; overflow-y:auto; overflow-x:hidden; }
 html.qs-main-layout body .player-grid.v3-resizable-layout > .camera-access-panel { min-width:360px!important; max-width:480px!important; }
 html.qs-main-layout body #singleViewPanel > :is(.video-wrapper,.qs-main-controls,#timelineDock,#timelineStallMarkerWrap,#streamStatus) { width:min(100%,calc((100dvh - 260px) * 1.77777778))!important; }
}
@media(min-width:761px) and (max-width:1100px) {
 html.qs-main-layout .qs-main-nav { justify-content:flex-start; }
 html.qs-main-layout .qs-main-nav button { padding:6px 8px!important; }
 html.qs-main-layout .qs-main-nav button > span { display:none; }
 html.qs-main-layout body .header #installButton { max-width:32px; overflow:hidden; }
}
@media(max-width:760px) {
 html.qs-main-layout body:not(.login-mode) { padding-bottom:calc(90px + env(safe-area-inset-bottom,0px))!important; }
 html.qs-main-layout .qs-main-nav { overflow:visible; justify-content:space-around; padding-left:3px; padding-right:3px; background:var(--v3-panel); }
 html.qs-main-layout .qs-main-nav > button.active { background:transparent!important; }
 html.qs-main-layout .qs-main-nav #accountMenuButton::before { width:20px; height:20px; }
 html.qs-main-layout .qs-main-nav button { padding:6px 7px!important; min-width:44px; }
 html.qs-main-layout body .qs-main-objects { max-width:calc(100% - 40px); }
 html.qs-main-layout .qs-main-object-select { flex:1; width:135px; max-width:145px; }
 html.qs-main-layout body.qs-guests-view :is(.v3-player-pane,.v3-catalog-toolbar,#commissioningNodeList,#cameraEntranceControls) { display:none!important; }
 html.qs-main-layout .qs-objects-page { padding:20px 0; }
 html.qs-main-layout .qs-page-head { gap:12px; align-items:flex-start; }
 html.qs-main-layout .qs-page-head h1 { font-size:20px; }
 html.qs-main-layout .qs-object-cards { grid-template-columns:minmax(0,1fr); gap:18px; }
 html.qs-main-layout .qs-object-preview { aspect-ratio:1.8; }
}

/* Central controls share the main navigation surface; the only right-hand
   header action is theme. Hide the mode presentation, not its native availability. */
html.qs-main-layout.qs-central-controls body .header { overflow:visible; }
html.qs-central-controls body .header #accessModeToggle { display:none!important; }
html.qs-central-controls body .header .header-right :is(.workspace-tabs,.subtitle) { display:none!important; }
html.qs-central-controls .qs-central-header { display:flex; align-items:center; justify-content:center; flex:1 1 auto; min-width:0; gap:12px; }
html.qs-central-controls .qs-central-header > .qs-main-nav { flex:0 1 auto; margin:0; }
/* No object button/selector/settings or separator in the header. Native
   controls stay connected for context and the existing account settings action. */
html.qs-central-controls .qs-central-header > .qs-main-objects { display:none!important; padding:0; border:0; }
html.qs-central-controls body .qs-central-header :is(.qs-objects-open,.qs-main-object-gear,.qs-layout-trigger) { display:inline-flex; align-items:center; justify-content:center; gap:6px; min-height:32px; padding:6px 8px; border:0!important; border-radius:9px!important; background:transparent!important; color:var(--v3-muted)!important; box-shadow:none!important; font:inherit; font-size:12px; }
html.qs-central-controls body .qs-central-header .qs-objects-open span { display:inline; }
html.qs-central-controls body .qs-central-header .qs-objects-open[aria-expanded="true"] { background:var(--qs-selected)!important; color:var(--qs-accent)!important; }
html.qs-central-controls body .qs-central-header .qs-main-object-select { min-width:85px; max-width:160px; height:32px; padding:5px 7px; background:transparent!important; border-color:transparent!important; font-size:12px; }
html.qs-central-controls .qs-central-header .qs-main-object-gear { flex:none; width:30px; }
html.qs-central-controls .qs-header-native-columns { display:none!important; }
html.qs-central-controls body .v3-catalog-toolbar:empty { display:none!important; }
html.qs-central-controls .qs-layout-control { position:relative; flex:none; }
html.qs-central-controls .qs-layout-trigger { white-space:nowrap; }
html.qs-central-controls .qs-layout-trigger > .icon { width:17px; height:17px; }
html.qs-central-controls .qs-layout-chevron { width:12px; height:12px; }
html.qs-central-controls body .qs-central-header :is(.qs-objects-open,.qs-main-object-gear,.qs-layout-trigger):hover:not(:disabled) { background:color-mix(in srgb,var(--v3-text),transparent 94.5%)!important; color:var(--v3-text)!important; }
html.qs-central-controls body .qs-layout-trigger[aria-expanded="true"] { color:var(--qs-accent)!important; background:var(--qs-selected)!important; }
html.qs-central-controls .qs-layout-popup { position:absolute; z-index:90; top:calc(100% + 8px); right:0; width:min(264px,calc(100vw - 32px)); padding:14px; border:1px solid var(--v3-line); border-radius:12px; background:var(--v3-panel); color:var(--v3-text); box-shadow:0 8px 24px #0002; }
html.qs-central-controls .qs-layout-popup[hidden] { display:none!important; }
html.qs-central-controls .qs-layout-popup > strong { display:block; margin-bottom:12px; font-size:12px; font-weight:500; color:var(--v3-muted); }
html.qs-central-controls .qs-layout-choices { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:7px; }
html.qs-central-controls .qs-layout-popup[data-max-columns="2"] { width:180px; }
html.qs-central-controls .qs-layout-popup[data-max-columns="2"] .qs-layout-choices { grid-template-columns:repeat(2,minmax(0,1fr)); }
html.qs-central-controls body .qs-layout-option { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; min-width:0; min-height:55px; padding:5px 3px; border:1px solid var(--v3-line)!important; border-radius:8px!important; background:transparent!important; color:var(--v3-muted)!important; font:inherit; font-size:11px; }
html.qs-central-controls .qs-layout-option svg { width:32px; height:23px; fill:currentColor; }
html.qs-central-controls body .qs-layout-option:hover:not(:disabled) { border-color:var(--qs-accent)!important; color:var(--v3-text)!important; }
html.qs-central-controls body .qs-layout-option[aria-pressed="true"] { border-color:var(--qs-accent)!important; background:var(--qs-selected)!important; color:var(--qs-accent)!important; }
html.qs-central-controls body :is(.qs-layout-trigger,.qs-layout-option,.qs-objects-open):focus-visible { outline:2px solid var(--qs-accent); outline-offset:2px; }
html.qs-central-controls body.qs-object-picker-open .qs-layout-control { display:none; }
@media(min-width:761px) and (max-width:1100px) {
 html.qs-main-layout.qs-central-controls body .header { height:auto!important; min-height:48px!important; }
 html.qs-central-controls .qs-central-header { flex-wrap:wrap; gap:5px 8px; }
 html.qs-central-controls body .qs-central-header .qs-objects-open span { display:none; }
 html.qs-central-controls body .qs-central-header .qs-main-object-select { max-width:125px; }
}
@media(max-width:760px) {
 html.qs-central-controls .qs-central-header { flex-wrap:wrap; gap:4px 5px; }
 html.qs-central-controls .qs-central-header > .qs-main-objects { max-width:100%!important; padding:0; border:0; }
 html.qs-central-controls .qs-central-header > .qs-main-nav { margin:0; }
 html.qs-central-controls body .qs-central-header .qs-objects-open span { display:none; }
 html.qs-central-controls body .qs-central-header .qs-main-object-select { flex:none; width:120px; max-width:130px; min-width:75px; font-size:11px; }
 html.qs-central-controls body .qs-central-header .qs-layout-trigger { min-height:28px; padding:4px 7px; font-size:11px; }
 html.qs-central-controls body:is(.qs-account-view,.qs-guests-view) .qs-layout-control { display:none; }
}
/* Preview-only catalogue: no object/view tabs, toolbar, headings or settings.
   Preserve native cards and their resource-level hidden/disabled states. */
html.qs-v3.qs-central-controls body :is(.v3-catalog-toolbar,#commissioningNodeList) { display:none!important; }
html.qs-v3.qs-central-controls body #cameraList :is(.camera-device-title,.camera-device-subtitle,.camera-object-view-title,.camera-device-commissioning) { display:none!important; }
html.qs-v3.qs-central-controls body #cameraList { display:grid!important; grid-template-columns:repeat(var(--v3-catalog-columns,2),minmax(0,1fr))!important; gap:8px!important; padding:0!important; align-content:start; background:transparent!important; }
html.qs-v3.qs-central-controls body #cameraList > .camera-device-group:not([hidden]):not(.camera-device-commissioning):not(.qs-main-other-object),
html.qs-v3.qs-central-controls body #cameraList .camera-device-cameras:not([hidden]),
html.qs-v3.qs-central-controls body #cameraList .camera-object-view-block:not([hidden]) { display:contents!important; }
@media(max-width:760px) {
 /* Objects is a real navigation tab, not the removed header selector. */
 html.qs-central-controls body .qs-central-header .qs-main-nav #qsObjectsOpen { flex-direction:column; min-height:42px!important; }
 html.qs-central-controls .qs-central-header .qs-main-nav #qsObjectsOpen span { display:inline!important; }
 html.qs-central-controls .qs-central-header .qs-main-nav #qsObjectsOpen .icon { width:20px; height:20px; }
}

/* Header refinements: truly centered nav and a compact native-action cluster. */
html.qs-v3.qs-main-layout.qs-central-controls body .header { display:grid!important; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); gap:10px!important; background:transparent!important; background-image:none!important; box-shadow:none!important; }
html.qs-central-controls body .header > .title-row { grid-column:1; justify-self:start; min-width:0; }
html.qs-central-controls .qs-central-header { grid-column:2; justify-self:center; flex:none; }
html.qs-central-controls body .header > .header-right { grid-column:3; justify-self:end; min-width:0; }
html.qs-central-controls body :is(.qs-central-header,.header-right,.account-controls,.qs-header-actions,.title-row) { background:transparent!important; background-image:none!important; box-shadow:none!important; }
html.qs-central-controls .qs-header-actions { position:relative; display:flex; align-items:center; justify-content:flex-end; gap:6px; }
html.qs-central-controls .qs-header-actions :is(button,#v3ThemeToggle) { display:inline-flex; align-items:center; justify-content:center; width:30px; min-width:30px; height:30px; min-height:30px; padding:5px!important; border:0!important; border-radius:8px!important; background:transparent!important; color:var(--v3-muted)!important; box-shadow:none!important; }
html.qs-central-controls .qs-header-actions button[hidden] { display:none!important; }
html.qs-central-controls .qs-header-actions .icon { width:18px; height:18px; }
html.qs-central-controls .qs-header-actions :is(.qs-layout-label,.qs-layout-chevron,#v3ThemeToggle span) { display:none!important; }
html.qs-central-controls .qs-header-actions button:hover:not(:disabled) { color:var(--v3-text)!important; background:color-mix(in srgb,var(--v3-text),transparent 94.5%)!important; }
html.qs-central-controls .qs-header-actions :is(.active,[aria-expanded="true"]) { color:var(--qs-accent)!important; }
html.qs-central-controls body .qs-header-actions #accountMenuButton { width:30px; height:30px; min-width:30px; padding:0!important; border-radius:50%!important; font-size:0!important; background:var(--v3-panel-2)!important; position:relative; }
html.qs-central-controls .qs-header-actions #accountMenuButton > svg { display:none; }
html.qs-central-controls .qs-header-actions #accountMenuButton::before { content:''; width:17px; height:17px; background:currentColor; mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='1.6'%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3Cpath d='M5 22v-4a7 7 0 0 1 14 0v4'/%3E%3C/svg%3E") center/contain no-repeat; }
html.qs-central-controls .qs-header-actions #accountMenuButton.security-warning::after { position:absolute; right:-2px; top:-3px; margin:0; padding:0 2px; color:var(--qs-warning); font-size:7px; line-height:10px; }
html.qs-central-controls .qs-header-bell { position:relative; }
html.qs-central-controls .qs-header-bell[data-active-call="1"]::after { content:'1'; position:absolute; top:-2px; right:-2px; display:grid; place-items:center; width:12px; height:12px; border-radius:50%; font-size:8px; color:var(--qs-on-accent); background:var(--qs-accent); }
html.qs-central-controls .qs-header-actions :is(.qs-layout-option,.qs-notifications-popup button) { width:auto; height:auto; min-width:0; }
html.qs-central-controls .qs-header-actions .qs-layout-option { min-height:55px; border:1px solid var(--v3-line)!important; }
html.qs-central-controls .qs-notifications-popup { position:absolute; z-index:91; right:0; top:calc(100% + 8px); width:min(300px,calc(100vw - 32px)); padding:18px; border:1px solid var(--v3-line); border-radius:12px; color:var(--v3-text); background:var(--v3-panel); box-shadow:0 8px 24px #0002; }
html.qs-central-controls .qs-notifications-popup[hidden] { display:none!important; }
html.qs-central-controls .qs-notifications-popup strong { font-size:14px; font-weight:550; }
html.qs-central-controls .qs-notifications-popup p { color:var(--v3-muted); font-size:12px; line-height:1.65; }
html.qs-central-controls .qs-header-actions .qs-notifications-popup button { padding:8px 10px!important; border:1px solid var(--v3-line)!important; font-size:12px; }
html.qs-central-controls body .header #installButton.visible { gap:5px; min-height:30px!important; padding:5px 7px!important; border-radius:8px!important; font-size:11px!important; }
html.qs-central-controls body .header #installButton .icon { width:14px; height:14px; }
html.qs-v3.qs-main-layout.qs-central-controls body .header #brandReloadButton::before { width:25px; height:25px; border:0!important; border-radius:6px; background:transparent url('/icon.svg?v=texopeka-logo-r9') center/contain no-repeat!important; }
html.qs-central-controls body .header #brandReloadButton { letter-spacing:-.25px; }
/* Crop only catalogue thumbnails. Main video, archive and identity/photo
   previews retain their native contain behavior. */
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .v3-camera-thumb { overflow:hidden!important; }
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .v3-camera-thumb img { width:100%!important; height:100%!important; object-fit:cover!important; object-position:center!important; }
/* The scroll belongs to the objects screen rather than the preview toolbar. */
html.qs-main-layout .qs-objects-page { scrollbar-width:thin; scrollbar-color:var(--v3-line-strong) transparent; scrollbar-gutter:stable; padding-right:8px; }
html.qs-main-layout .qs-objects-page::-webkit-scrollbar { width:6px; height:6px; }
html.qs-main-layout .qs-objects-page::-webkit-scrollbar-track { background:transparent; }
html.qs-main-layout .qs-objects-page::-webkit-scrollbar-thumb { background:var(--v3-line-strong); border-radius:8px; }
html.qs-main-layout .qs-objects-page::-webkit-scrollbar-thumb:hover { background:var(--qs-accent); }
/* User refinement: objects is a quiet gallery; scrolling stays functional. */
html.qs-main-layout .qs-objects-page { scrollbar-width:none; scrollbar-gutter:auto; padding-top:12px; }
html.qs-main-layout .qs-objects-page::-webkit-scrollbar { display:none; width:0; height:0; }
html.qs-main-layout .qs-objects-page > :is(.qs-page-head,.qs-page-note) { display:none!important; }
/* Same-address map workspace; the main media DOM is retained behind it. */
html.qs-central-controls #qsMapWorkspace[hidden] { display:none!important; }
html.qs-central-controls #qsMapWorkspace { flex:1; min-height:0; height:100%; overflow:hidden; }
html.qs-central-controls #qsMapWorkspace iframe { display:block; width:100%; height:100%; border:0; background:var(--v3-bg); }
html.qs-central-controls body.qs-map-view #appPanel { display:flex; flex-direction:column; overflow:hidden; }
html.qs-central-controls body.qs-map-view #appPanel > .player-grid { display:none!important; }
html.qs-central-controls body.qs-map-view #qsObjectsPage { display:none!important; }
@media(max-width:760px) { html.qs-central-controls #qsMapWorkspace { height:calc(100dvh - 135px); } }
/* Keep native call controls/permissions, just align their existing surface. */
html.qs-central-controls :is(.door-call-dialog,.door-call-permission-help) { color:var(--v3-text); background:var(--v3-panel)!important; border-color:var(--v3-line)!important; border-radius:14px; font-family:inherit; }
html.qs-central-controls .door-call-permission-help :is(h3,p,button) { font-family:inherit; }
@media(min-width:761px) and (max-width:1100px) {
 html.qs-central-controls .qs-main-nav button { padding:6px 6px!important; }
 html.qs-central-controls body .header #installButton span { display:none; }
}
@media(max-width:760px) {
 html.qs-v3.qs-main-layout.qs-central-controls body .header { grid-template-columns:minmax(0,1fr) auto; min-height:54px!important; }
 html.qs-central-controls body .header > .title-row { grid-column:1; }
 html.qs-central-controls body .header > .header-right { grid-column:2; }
 html.qs-central-controls .qs-central-header { display:contents; }
 html.qs-central-controls .qs-header-actions { gap:3px; }
 html.qs-central-controls .qs-header-actions button { width:28px; min-width:28px; height:28px; }
 html.qs-central-controls .qs-objects-page { padding-right:4px; }
 html.qs-central-controls body .qs-layout-control { display:block!important; }
}

/* One scroll owner per workspace, invisible but fully functional scrollbars. */
html.qs-v3.qs-main-layout.qs-central-controls body :is(#cameraList,.v3-catalog-pane,.camera-workspace,.qs-objects-page) { scrollbar-width:none!important; scrollbar-gutter:auto; }
html.qs-v3.qs-main-layout.qs-central-controls body :is(#cameraList,.v3-catalog-pane,.camera-workspace,.qs-objects-page)::-webkit-scrollbar { display:none; width:0; height:0; }
html.qs-central-controls #qsMapWorkspace { border-radius:var(--ui-radius,12px); overflow:hidden; isolation:isolate; }
html.qs-central-controls #qsMapWorkspace iframe { border-radius:inherit; }
html.qs-central-controls #cameraMapCanvas { border-radius:var(--ui-radius,12px); overflow:hidden; }
@media(max-width:760px) {
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) { --qs-mobile-nav:68px; margin:0!important; padding:0 12px!important; height:100dvh; overflow:hidden!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) .app { display:flex!important; flex-direction:column; align-content:start; gap:0!important; height:calc(100dvh - var(--qs-mobile-nav) - env(safe-area-inset-bottom,0px))!important; min-height:0!important; max-height:calc(100dvh - var(--qs-mobile-nav) - env(safe-area-inset-bottom,0px))!important; margin:0!important; padding:0!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) .header { flex:0 0 56px; display:grid!important; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:6px!important; width:100%; height:56px!important; min-height:56px!important; max-height:56px!important; margin:0!important; padding:0!important; }
 html.qs-central-controls body .header .title-row { width:auto!important; min-width:0; gap:6px; }
 html.qs-central-controls body .header #brandReloadButton { font-size:0!important; }
 html.qs-central-controls body .header #brandReloadButton::before { width:28px; height:28px; }
 html.qs-central-controls body .header #installButton.visible { width:34px; min-width:34px; height:36px; min-height:36px!important; padding:6px!important; }
 html.qs-central-controls body .header #installButton span { display:none!important; }
 html.qs-central-controls body .header .header-right { min-width:0; width:auto!important; }
 html.qs-central-controls body .header .qs-header-actions { gap:4px; }
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions > :is(button,#v3ThemeToggle),
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-layout-trigger,
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #accountMenuButton { width:44px!important; min-width:44px!important; max-width:44px; height:44px!important; min-height:44px!important; max-height:44px; padding:10px!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #accountMenuButton { padding:0!important; border-radius:50%!important; background:var(--v3-panel-2)!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #accountMenuButton.active { background:var(--qs-selected)!important; color:var(--qs-accent)!important; }
 html.qs-central-controls body .header .qs-header-actions .icon { width:20px; height:20px; }
 html.qs-central-controls body .header .qs-layout-control { display:block!important; }
 html.qs-central-controls body:is(.qs-object-picker-open,.qs-account-view,.qs-guests-view,.qs-map-view,.qs-dock-open) .header .qs-layout-control { display:none!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body #appPanel { display:flex; flex:1 1 0; flex-direction:column; min-height:0!important; height:auto!important; max-height:none!important; padding:0!important; overflow:hidden!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body .player-grid { flex:1 1 0; min-height:0!important; width:100%; height:100%!important; max-height:none!important; margin:0; gap:10px!important; overflow-y:auto; overflow-x:hidden; overscroll-behavior:contain; scrollbar-width:none; }
 html.qs-v3.qs-main-layout.qs-central-controls body .player-grid::-webkit-scrollbar { display:none; }
 html.qs-v3.qs-main-layout.qs-central-controls body .v3-catalog-pane { flex:none!important; width:100%!important; min-width:0!important; max-width:100%!important; height:auto!important; max-height:none!important; padding:0!important; margin:0!important; overflow:visible!important; }
 html.qs-central-controls body #cameraList { width:100%; min-height:0; overflow:visible!important; margin:0; }
 html.qs-central-controls body .v3-player-pane { flex:none!important; width:100%!important; min-width:0!important; max-width:100%!important; height:auto!important; max-height:none!important; margin:0; padding:0!important; }
 html.qs-central-controls body:not(.qs-main-camera-focus) .v3-player-pane,
 html.qs-central-controls body.qs-dock-open .v3-player-pane { display:none!important; }
 html.qs-central-controls body.qs-dock-open #cameraEntranceControls { display:none!important; }
 html.qs-central-controls body #singleViewPanel:not(.hidden) { height:auto!important; min-height:0!important; }
 html.qs-central-controls body .video-wrapper { width:100%!important; height:auto!important; min-height:0!important; aspect-ratio:16/9!important; }
 html.qs-central-controls body .qs-main-controls { display:flex; flex-wrap:wrap; gap:5px!important; padding:5px 0!important; min-height:44px; }
 html.qs-central-controls body .qs-main-controls button { min-height:36px!important; min-width:32px; padding:6px!important; }
 html.qs-central-controls body .qs-main-controls :is(.v3-player-actions,.v3-command-controls,.v3-media-controls) { flex-wrap:wrap; gap:5px!important; min-width:0; }
 html.qs-central-controls body #timelineDock { min-width:0; width:100%!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body :is(#accountPanel,#objectSettingsPanel,#cameraAccessPanel,#objectStoragePanel,#accessDirectoryPanel,#apartmentStructurePanel,#faceAccessPanel,#deviceAdminPanel,#displayNodesPanel).qs-dock.open { position:relative!important; inset:auto!important; width:100%!important; min-width:0!important; max-width:100%!important; flex:none!important; height:100%!important; min-height:0!important; max-height:none!important; padding:16px!important; overflow-y:auto!important; overflow-x:hidden!important; overscroll-behavior:contain; }
 html.qs-central-controls body .qs-dock-body { min-width:0; }
 html.qs-central-controls body .qs-account-row { min-height:62px; }
 html.qs-central-controls body .qs-account-row-body { min-width:0; }
 html.qs-central-controls body .qs-account-row-body :is(strong,small) { overflow-wrap:anywhere; }
 html.qs-v3.qs-main-layout.qs-central-controls body #qsObjectsPage { flex:1; height:100%!important; min-height:0; padding:8px 0 12px; overflow-y:auto; overflow-x:hidden; }
 html.qs-central-controls body .qs-object-cards { grid-template-columns:minmax(0,1fr); gap:12px; }
 html.qs-central-controls body .qs-object-card { min-width:0; }
 html.qs-v3.qs-main-layout.qs-central-controls body #qsMapWorkspace { flex:1; height:100%!important; min-height:0; margin:0 0 8px; border-radius:12px; }
 html.qs-main-layout .qs-main-nav { position:fixed!important; z-index:60; left:0; right:0; bottom:0; display:flex!important; align-items:center; justify-content:space-around!important; height:calc(var(--qs-mobile-nav,68px) + env(safe-area-inset-bottom,0px)); padding:6px 8px calc(8px + env(safe-area-inset-bottom,0px))!important; gap:0!important; margin:0!important; border-top:1px solid var(--v3-line); background:var(--v3-panel)!important; overflow:visible!important; }
 html.qs-v3.qs-main-layout.qs-central-controls .qs-main-nav > button { display:flex!important; flex:1 1 0; flex-direction:column; align-items:center; justify-content:center; gap:3px!important; width:auto; min-width:0!important; min-height:48px!important; height:48px; padding:4px 2px!important; border:0!important; font-size:10px!important; line-height:1.2; background:transparent!important; white-space:nowrap; }
 html.qs-main-layout.qs-central-controls .qs-main-nav > button[hidden] { display:none!important; }
 html.qs-central-controls .qs-main-nav #qsObjectsOpen span { display:inline!important; }
 html.qs-central-controls .qs-main-nav .icon { width:21px!important; height:21px!important; }
 html.qs-central-controls body .qs-layout-popup,
 html.qs-central-controls body .qs-notifications-popup { position:fixed!important; right:12px!important; left:auto!important; top:60px!important; width:min(300px,calc(100vw - 24px))!important; max-height:calc(100dvh - 152px - env(safe-area-inset-bottom,0px)); padding:16px; overflow-y:auto; z-index:100; }
 html.qs-central-controls body .qs-header-actions .qs-layout-option { width:auto!important; min-width:0!important; height:56px!important; min-height:56px!important; padding:6px!important; }
 html.qs-central-controls body .qs-layout-choices { gap:10px; }
 html.qs-central-controls body .qs-notifications-popup button { min-height:44px!important; }
}

/* Compact desktop frame: one viewport budget and one header/content gap.
   Avoid legacy shell centering and tablet min-height adding extra space. */
@media(min-width:761px) {
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) { padding:8px 16px!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) .shell { height:calc(100dvh - 16px)!important; min-height:0!important; display:grid!important; place-items:stretch!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) .app { height:100%!important; min-height:0!important; grid-template-rows:auto minmax(0,1fr)!important; gap:8px!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) .header { margin:0!important; }
 /* The collapsed native map must not reserve its two invisible borders. */
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) #workspacePanelCameras > #workspacePanelMap.v3-sidebar-widget:not(.v3-catalog-map-open) { border-width:0!important; }
}
/* Hide the real preview-pane scroll owners, including legacy workspace wrappers. */
html.qs-v3.qs-main-layout.qs-central-controls body :is(.player-grid,.v3-catalog-pane,.camera-workspace,#workspacePanelCameras,#cameraList) { scrollbar-width:none!important; scrollbar-gutter:auto!important; }
html.qs-v3.qs-main-layout.qs-central-controls body :is(.player-grid,.v3-catalog-pane,.camera-workspace,#workspacePanelCameras,#cameraList)::-webkit-scrollbar { display:none!important; width:0!important; height:0!important; background:transparent!important; }
/* Preview pulse is not the main/archive timeline. Keep it out of one-column cards. */
html.qs-v3.qs-main-layout body #cameraList[data-preview-columns="1"] :is(.v3-mini-pulse,.v3-pulse-period) { display:none!important; }
html.qs-v3.qs-main-layout body #cameraList[data-preview-columns="1"] .camera-button { grid-template-rows:auto!important; }
/* Operational entrances use original callback-bound buttons and confirmations. */
html.qs-main-layout .qs-entrance-block { width:100%; min-width:0; padding:12px 0 0; }
html.qs-main-layout .qs-entrance-section-head { display:flex; align-items:center; justify-content:space-between; gap:8px; padding:0 2px 12px; }
html.qs-main-layout .qs-entrance-section-head strong { font-size:13px; font-weight:550; color:var(--v3-text); }
html.qs-main-layout .qs-entrance-section-head button { min-width:32px; min-height:32px; border:0!important; background:transparent!important; color:var(--v3-muted); padding:5px; }
html.qs-main-layout .qs-entrance-section-head .icon { width:17px; height:17px; }
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances { position:relative; display:grid; grid-template-columns:repeat(var(--entrance-count,1),minmax(0,1fr)); gap:6px; width:100%; margin:0!important; padding:0!important; border:0!important; background:transparent!important; }
html.qs-main-layout body #cameraEntranceControls[hidden] { display:none!important; }
html.qs-main-layout body #cameraEntranceControls > button[data-entrance] { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; min-height:60px; padding:10px 6px!important; border:1px solid var(--v3-line)!important; border-radius:11px!important; background:var(--v3-panel-2)!important; color:var(--v3-text)!important; font:inherit; font-size:11px; line-height:1.25; text-align:center; }
html.qs-main-layout #cameraEntranceControls > button[data-entrance] .qs-entrance-icon { width:22px; height:22px; color:var(--qs-accent); flex:none; filter:drop-shadow(0 0 5px color-mix(in srgb,var(--qs-accent),transparent 75%)); }
html.qs-main-layout #cameraEntranceControls > button[data-entrance]:hover:not(:disabled) { border-color:var(--qs-accent)!important; background:var(--qs-selected)!important; }
html.qs-main-layout #cameraEntranceControls > button[data-entrance]:disabled { opacity:.45; cursor:not-allowed; }
html.qs-main-layout #cameraEntranceControls > .entrance-confirm { display:flex; align-items:center; justify-content:center; gap:6px; min-height:60px; }
html.qs-main-layout body #cameraEntranceControls .entrance-confirm button { min-height:36px!important; padding:6px 9px!important; font-size:11px; }
html.qs-main-layout #cameraEntranceControls > small { grid-column:1/-1; color:var(--v3-muted); font-size:11px; }
html.qs-main-layout .qs-entrance-page { min-height:0; min-width:0; width:100%; padding:0; color:var(--v3-text); background:transparent; overflow:visible; scrollbar-width:none; }
html.qs-main-layout .qs-entrance-page[hidden] { display:none!important; }
html.qs-main-layout .qs-entrance-page::-webkit-scrollbar { display:none; }
html.qs-main-layout .qs-entrance-page-head { display:flex; align-items:center; justify-content:space-between; gap:10px; margin:0 0 12px; }
html.qs-main-layout .qs-entrance-page-head h1 { margin:0; font-size:18px; font-weight:550; }
html.qs-main-layout .qs-entrance-page-head h1 { flex:1; }
html.qs-main-layout .qs-entrance-page-head .qs-entrance-settings { width:auto;min-width:0;min-height:32px;padding:5px 9px!important;font-size:11px;border:1px solid var(--v3-line)!important;border-radius:8px;background:var(--v3-panel-2)!important;color:var(--v3-text); }
html.qs-main-layout .qs-entrance-page-head button { width:30px; min-width:30px; min-height:30px; padding:0!important; font-size:22px; border:0!important; background:transparent!important; color:var(--v3-muted); }
html.qs-main-layout .qs-entrance-page > p { margin:0 0 16px; font-size:12px; color:var(--v3-muted); }
html.qs-main-layout body.qs-entrances-view #objectSettingsPanel > .qs-dock-head { display:none; }
html.qs-main-layout .qs-entrance-page .qs-entrance-block { padding-top:0; }
html.qs-main-layout body.qs-entrances-view .qs-entrance-page #cameraEntranceControls.qs-main-entrances:not([hidden]) { display:grid!important; }
html.qs-main-layout .qs-entrance-page .qs-entrance-section-head > strong { display:none; }
html.qs-main-layout .qs-entrance-page .qs-entrance-section-head { display:none; }
html.qs-main-layout .qs-entrance-page-empty { padding:12px 0; }
/* Use the native middle dock without replacing player or catalogue owners. */
@media(min-width:1251px) {
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-entrances-view .player-grid.v3-resizable-layout > .v3-player-pane { min-width:480px!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-entrances-view .player-grid.v3-resizable-layout > #objectSettingsPanel.qs-dock.open { min-width:320px!important; max-width:480px!important; height:100%; }
 html.qs-main-layout body.qs-entrances-fallback .player-grid { display:flex!important; flex-direction:row!important; overflow:hidden!important; }
 html.qs-main-layout body.qs-entrances-fallback .player-grid > .qs-entrance-page { flex:0 0 320px; width:320px; min-width:320px; max-width:400px; padding:16px; border:1px solid var(--v3-line); border-radius:var(--ui-radius,12px); overflow-y:auto; }
 html.qs-main-layout body.qs-entrances-fallback .player-grid > .v3-catalog-pane { flex:0 0 320px!important; width:320px!important; min-width:320px!important; }
}
@media(max-width:1250px) {
 html.qs-main-layout body.qs-entrances-fallback .player-grid { display:flex!important; flex-direction:column!important; }
 html.qs-main-layout body.qs-entrances-fallback .player-grid > .v3-catalog-pane { display:flex!important; min-height:110px!important; overflow-y:auto!important; }
 html.qs-main-layout body.qs-entrances-fallback .player-grid > .qs-entrance-page { flex:1; min-height:0; height:100%; padding:16px; overflow-y:auto; }
}
html.qs-main-layout .qs-entrance-native-links { display:grid; gap:6px; margin-top:22px; }
html.qs-main-layout .qs-entrance-native-links button { display:flex; align-items:center; gap:10px; min-height:52px; width:100%; padding:10px 0; border:0!important; border-bottom:1px solid var(--v3-line)!important; background:transparent!important; color:var(--v3-text)!important; text-align:left; font:inherit; font-size:13px; }
html.qs-main-layout .qs-entrance-native-links .icon { width:20px; height:20px; color:var(--v3-muted); }
@media(max-width:760px) {
 html.qs-main-layout body .qs-entrance-page { padding:0; }
 html.qs-main-layout #cameraEntranceControls > button[data-entrance] { min-height:72px!important; font-size:11px; }
 html.qs-main-layout body #cameraEntranceControls.qs-main-entrances { grid-template-columns:repeat(min(2,var(--entrance-count,1)),minmax(0,1fr)); }
 html.qs-main-layout body.qs-entrances-view .header .qs-layout-control { display:none!important; }
}

/* Equal native cards; only real native errors get the quiet failure indicator. */
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances {
  display:grid!important;
  grid-template-columns:repeat(var(--qs-entrance-columns,1),minmax(88px,1fr))!important;
  gap:6px!important;
  width:100%!important;
  min-width:0!important;
  align-items:stretch;
  overflow-x:auto;
  overscroll-behavior-x:contain;
  scrollbar-width:thin;
}
/* The compact preview uses two rows. The separate entrance pane keeps two
   readable columns when its original host is moved into the center panel. */
html.qs-main-layout body #qsEntrancesPage #cameraEntranceControls.qs-main-entrances {
  grid-template-columns:repeat(min(2,var(--entrance-count,1)),minmax(0,1fr))!important;
  overflow-x:visible;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances[hidden],
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[hidden],
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > .entrance-confirm.is-inline[hidden] {
  display:none!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-entrance],
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > .entrance-confirm.is-inline {
  box-sizing:border-box!important;
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  min-height:72px!important;
  margin:0!important;
  flex:none!important;
  justify-self:stretch;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-entrance] {
  position:relative;
  overflow:hidden;
  overflow-wrap:anywhere;
  white-space:normal;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > .entrance-confirm.is-inline {
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  align-items:stretch;
  gap:4px!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > .entrance-confirm.is-inline > button {
  width:100%!important;
  min-width:0!important;
  max-width:100%!important;
  padding:6px 3px!important;
  overflow-wrap:anywhere;
  white-space:normal;
}
/* The source catch message remains the real live status and description. */
html.qs-main-layout body #cameraEntranceControls > .qs-entrance-feedback-status {
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  padding:0!important;
  margin:-1px!important;
  border:0!important;
  overflow:hidden!important;
  white-space:nowrap!important;
  clip:rect(0,0,0,0)!important;
  clip-path:inset(50%)!important;
}
/* Native pulsing starts before apply acknowledgement. Use a neutral pending
   surface throughout its unchanged cooldown instead of a success-green fill. */
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button.is-pulsing:not([data-qs-entrance-feedback]) {
  border-color:var(--v3-line,#657e82)!important;
  background:var(--v3-panel-2,#26343b)!important;
  opacity:1!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button.is-pulsing:not([data-qs-entrance-feedback])::before {
  background:color-mix(in srgb,var(--v3-muted,#a4aeb4),transparent 84%)!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button.is-pulsing .qs-entrance-icon {
  color:var(--v3-muted,#a4aeb4)!important;
  filter:none!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback] {
  border-color:color-mix(in srgb,#ed6a73,var(--v3-line,#657e82) 35%)!important;
  background:color-mix(in srgb,#ed6a73,var(--v3-panel-2,#26343b) 92%)!important;
  color:var(--v3-text,#eef2e9)!important;
  opacity:1!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback]::before {
  background:color-mix(in srgb,#ed6a73,transparent 89%)!important;
  animation:none!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback] .qs-entrance-icon {
  color:#ed6a73!important;
  filter:none!important;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback]::after {
  content:'';
  position:absolute;
  right:7px;
  top:7px;
  width:6px;
  height:6px;
  border-radius:50%;
  background:#ed6a73;
  box-shadow:0 0 0 2px color-mix(in srgb,#ed6a73,transparent 88%);
  animation:qs-entrance-failure-pulse 2s ease-in-out infinite;
  pointer-events:none;
}
/* A status predating the adapter has no trustworthy source-button identity.
   Keep its signal on the group rather than guessing which relay failed. */
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances[data-qs-entrance-feedback-unassigned]::after {
  content:'';
  position:absolute;
  top:7px;
  right:7px;
  width:6px;
  height:6px;
  border-radius:50%;
  background:#ed6a73;
  animation:qs-entrance-failure-pulse 2s ease-in-out infinite;
  pointer-events:none;
}
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback="authorization"]::after,
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback="context"]::after,
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances[data-qs-entrance-feedback-unassigned="authorization"]::after,
html.qs-main-layout body #cameraEntranceControls.qs-main-entrances[data-qs-entrance-feedback-unassigned="context"]::after {
  animation:none;
}
@keyframes qs-entrance-failure-pulse {
  0%,100% { opacity:1; }
  50% { opacity:.38; }
}
@media(max-width:760px) {
  html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > .entrance-confirm.is-inline {
    grid-template-columns:minmax(0,1fr)!important;
  }
}
@media(prefers-reduced-motion:reduce) {
  html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button[data-qs-entrance-feedback]::after,
  html.qs-main-layout body #cameraEntranceControls.qs-main-entrances[data-qs-entrance-feedback-unassigned]::after,
  html.qs-main-layout body #cameraEntranceControls.qs-main-entrances > button.is-pulsing::before {
    animation:none!important;
  }
}

/* Load after mobile/theme/finish. No normal-layout or non-Texopeka selectors. */
html.qs-v3.qs-main-layout.qs-central-controls body #singleViewPanel > .video-wrapper.qs-main-player-fullscreen {
  position:absolute!important; inset:0!important; width:100%!important; height:100%!important;
  min-width:0!important; min-height:0!important; max-width:none!important; max-height:none!important;
  aspect-ratio:auto!important; margin:0!important; border-radius:0!important;
  --qs-player-safe-left:env(safe-area-inset-left,0px);
  --qs-player-safe-right:env(safe-area-inset-right,0px);
  --qs-player-safe-top:env(safe-area-inset-top,0px);
  --qs-player-safe-bottom:env(safe-area-inset-bottom,0px);
}
html.qs-v3.qs-main-layout.qs-central-controls body #singleViewPanel > .video-wrapper.qs-main-player-fullscreen:is(:fullscreen,:-webkit-full-screen) {
  position:fixed!important; width:100vw!important; height:100dvh!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player {
  position:fixed!important; inset:0!important; display:block!important;
  width:100vw!important; height:100dvh!important; min-height:0!important;
  max-width:none!important; max-height:none!important; margin:0!important; padding:0!important;
  flex:none!important; overflow:hidden!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player .player-grid {
  position:absolute!important; inset:0!important; display:block!important;
  width:100%!important; height:100%!important; min-height:0!important; max-height:none!important;
  margin:0!important; padding:0!important; gap:0!important; overflow:hidden!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player .player-grid > .v3-player-pane {
  position:absolute!important; inset:0!important; display:block!important;
  width:100%!important; height:100%!important; min-width:0!important; min-height:0!important;
  max-width:none!important; max-height:none!important; margin:0!important; padding:0!important;
  flex:none!important; overflow:visible!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player #singleViewPanel:not(.hidden) {
  position:absolute!important; inset:0!important; display:block!important;
  width:100%!important; height:100%!important; min-width:0!important; min-height:0!important;
  max-width:none!important; max-height:none!important; margin:0!important; gap:0!important;
  transform:none!important; transform-origin:center;
}
/* Preserve the native orientation fallback: ONLY its explicit force classes rotate.
   Physical orientation/screen.orientation.lock success does not rotate the UI. */
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player.v3-force-landscape #singleViewPanel:not(.hidden),
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player.v3-force-portrait #singleViewPanel:not(.hidden) {
  position:fixed!important; inset:auto!important; top:50%!important; left:50%!important;
  width:100dvh!important; height:100vw!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player.v3-force-landscape #singleViewPanel:not(.hidden) {
  transform:translate(-50%,-50%) rotate(90deg)!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player.v3-force-portrait #singleViewPanel:not(.hidden) {
  transform:translate(-50%,-50%) rotate(-90deg)!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player .camera-workspace {
  display:none!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body .video-wrapper.qs-main-player-fullscreen > #timelineDock {
  position:absolute!important; inset:auto 0 0!important; display:block!important;
  width:100%!important; min-width:0!important; max-width:none!important;
  margin:0!important; padding:8px max(8px,var(--qs-player-safe-right)) max(8px,var(--qs-player-safe-bottom)) max(8px,var(--qs-player-safe-left))!important;
  z-index:5; background:linear-gradient(transparent,rgba(0,0,0,.85) 35%)!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body .video-wrapper.qs-main-player-fullscreen #timelineDock > #videoOverlay.fullscreen {
  position:relative!important; inset:auto!important; width:100%!important; margin:0!important;
  opacity:1!important; transform:none!important; pointer-events:auto!important;
}
/* Map physical cut-outs to player-local edges only during CSS rotation. */
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player.v3-force-landscape #singleViewPanel > .video-wrapper {
  --qs-player-safe-left:env(safe-area-inset-top,0px);
  --qs-player-safe-right:env(safe-area-inset-bottom,0px);
  --qs-player-safe-top:env(safe-area-inset-right,0px);
  --qs-player-safe-bottom:env(safe-area-inset-left,0px);
}
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel:is(:fullscreen,:-webkit-full-screen).v3-fullscreen-player.v3-force-portrait #singleViewPanel > .video-wrapper {
  --qs-player-safe-left:env(safe-area-inset-bottom,0px);
  --qs-player-safe-right:env(safe-area-inset-top,0px);
  --qs-player-safe-top:env(safe-area-inset-left,0px);
  --qs-player-safe-bottom:env(safe-area-inset-right,0px);
}
html.qs-v3.qs-main-layout.qs-central-controls body .video-wrapper.qs-main-player-fullscreen #fullscreenExitButton {
  top:max(8px,var(--qs-player-safe-top)); right:max(8px,var(--qs-player-safe-right));
}
/* Own latch overrides native hover/3s .hidden behavior, for both fullscreen owners. */
html.qs-v3.qs-main-layout.qs-central-controls body .video-wrapper.qs-main-player-fullscreen.qs-main-chrome-hidden > #timelineDock {
  opacity:0!important; pointer-events:none!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body .video-wrapper.qs-main-player-fullscreen.qs-main-chrome-hidden #videoOverlay {
  pointer-events:none!important;
}
/* Keep the native compact geometry, never a 1px seek-line proxy. */
html.qs-v3.qs-main-layout.qs-central-controls body #timelineDay {
  height:48px!important; min-height:48px!important; flex-shrink:0;
}

/* Scoped PTZ presentation addition; load after Texopeka mobile/theme styles.
 * Keep the same native nodes. Never unhide denied controls or unsupported axes.
 * This does not change the shared video/timeline/fullscreen-shell geometry. */
html.qs-v3.qs-main-layout body .qs-main-controls #ptzControlButton:not([hidden]) {
  min-height:44px!important;
  height:44px!important;
  min-width:68px;
  padding:6px 10px!important;
  color:var(--v3-text)!important;
  border:1px solid var(--v3-line)!important;
  background:var(--v3-panel-2)!important;
}
html.qs-v3.qs-main-layout body .qs-main-controls #ptzControlButton.active:not([hidden]):not(:disabled) {
  color:#071018!important;
  border-color:var(--v3-live)!important;
  background:var(--v3-live)!important;
}
html.qs-v3.qs-main-layout body .qs-main-controls #ptzControlButton:focus-visible {
  outline:2px solid var(--v3-live);
  outline-offset:2px;
}
html.qs-v3.qs-main-layout body .qs-main-controls #ptzControlButton:disabled {
  opacity:.55;
  cursor:not-allowed;
}
html.qs-v3 #ptzControlButton[hidden],
html.qs-v3 #ptzMobileControlButton[hidden],
html.qs-v3 #ptzZoomOverlay[hidden],
html.qs-v3 #ptzMobileDock[hidden] {
  display:none!important;
}
/* The native PTZ script places the same popup under videoWrapper when that
 * wrapper OR appPanel is actually fullscreen. Viewport width alone must not
 * strand the popup in a sibling mobile dock outside the fullscreen layer.
 * Do not override inline left/top: native clamping/drag position still owns it. */
html.qs-v3 body :is(
  .video-wrapper:fullscreen,
  .video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) #ptzZoomOverlay {
  position:absolute!important;
  z-index:26;
  right:14px;
  bottom:14px;
  width:clamp(264px,26vw,318px);
  max-width:calc(100% - 28px);
  max-height:calc(100% - 28px);
  overflow-x:hidden;
  overflow-y:auto;
  border-radius:12px;
  box-shadow:0 12px 28px #0008;
}
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) #ptzZoomOverlay.no-lens-axes { width:180px; }
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-panel-header {
  grid-template-columns:22px minmax(0,1fr) 44px;
  min-height:52px;
  padding:4px 6px;
  cursor:grab;
  touch-action:none;
}
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-panel-close { min-width:44px; width:44px; min-height:44px; height:44px; }
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-drag-grip { display:block; }
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-panel-body {
  grid-template-columns:140px minmax(96px,1fr);
  gap:8px;
  padding:8px;
}
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) #ptzZoomOverlay:is(.no-direction-axes,.no-lens-axes) .ptz-panel-body { grid-template-columns:minmax(0,1fr); }
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-direction-pad {
  grid-template-rows:repeat(3,44px);
  width:140px;
  height:140px;
  margin-inline:0;
  gap:4px;
  touch-action:none;
}
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-direction-center i { width:20px; height:20px; }
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-zoom-axis { grid-template-columns:minmax(0,1fr); }
html.qs-v3 body :is(.video-wrapper:fullscreen,.video-wrapper:-webkit-full-screen,
  #appPanel:fullscreen.v3-fullscreen-player .video-wrapper,
  #appPanel:-webkit-full-screen.v3-fullscreen-player .video-wrapper
) .ptz-zoom-button { grid-template-columns:25px minmax(0,1fr); min-height:52px; padding:6px; }

/* Cooperation CRM: shared-map panel and separate admin workspace. */
.qs-coop-operator {
  min-width: 0; width: 100%; display: grid; gap: 12px;
  color: var(--v3-text); font-size: 12px; line-height: 1.5;
}
.qs-coop-operator [hidden] { display: none !important; }
.qs-coop-operator :is(h3,h4,p,dl,dd) { margin: 0; }
.qs-coop-operator :is(h3,h4) { font-weight: 550; }
.qs-coop-operator :is(button,input,select,textarea) { font: inherit; }
.qs-coop-operator :is(button,select) { min-height: 36px; }
.qs-coop-operator button { white-space: normal; }
.qs-coop-op-toolbar,
.qs-coop-op-state,
.qs-coop-op-reply-actions {
  display: flex; align-items: end; flex-wrap: wrap; gap: 8px; min-width: 0;
}
.qs-coop-op-label { display: grid; gap: 5px; min-width: 0; flex: 1 1 150px; }
.qs-coop-op-label > span { color: var(--v3-muted); font-size: 11px; }
.qs-coop-operator :is(input,select,textarea) {
  box-sizing: border-box; width: 100%; min-width: 0; border: 1px solid var(--v3-line);
  border-radius: 9px; background: var(--v3-panel-2); color: var(--v3-text); padding: 8px 10px;
}
.qs-coop-operator textarea { resize: vertical; min-height: 94px; max-height: 300px; }
.qs-coop-op-layout { display: grid; gap: 14px; min-width: 0; }
.qs-coop-op-list { display: grid; align-content: start; gap: 7px; min-width: 0; }
.qs-coop-operator .qs-coop-op-request {
  display: grid; gap: 5px; width: 100%; min-width: 0; padding: 11px 12px !important;
  text-align: left; background: var(--v3-panel-2) !important; color: var(--v3-text) !important;
  border: 1px solid var(--v3-line) !important; border-radius: 10px !important;
}
.qs-coop-operator .qs-coop-op-request[aria-pressed="true"] {
  border-color: var(--qs-accent) !important; background: var(--qs-selected) !important;
}
.qs-coop-op-request-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px 8px; }
.qs-coop-op-request-head strong { flex: 1; font-weight: 550; }
.qs-coop-op-badge {
  font-size: 10px; line-height: 1.4; padding: 3px 7px; border-radius: 6px;
  border: 1px solid var(--v3-line); color: var(--v3-muted); white-space: nowrap;
}
.qs-coop-op-badge[data-status="new"] { color: var(--qs-accent); border-color: var(--qs-accent); }
.qs-coop-op-badge[data-status="waiting_client"] { color: var(--qs-warning); }
.qs-coop-op-address,
.qs-coop-op-request small { overflow-wrap: anywhere; }
.qs-coop-operator :is(.qs-coop-op-list-note,.qs-coop-op-empty,.qs-coop-op-counter) {
  color: var(--v3-muted); font-size: 11px;
}
.qs-coop-op-notice { color: var(--v3-muted); overflow-wrap: anywhere; }
.qs-coop-op-notice:empty { display: none; }
.qs-coop-op-detail {
  display: grid; gap: 11px; min-width: 0; padding-top: 14px; border-top: 1px solid var(--v3-line);
}
.qs-coop-op-fields { display: grid; gap: 8px; }
.qs-coop-op-field { display: grid; gap: 2px; min-width: 0; }
.qs-coop-op-field dt { font-size: 10px; color: var(--v3-muted); }
.qs-coop-op-field dd { white-space: pre-wrap; overflow-wrap: anywhere; }
.qs-coop-op-detail-refresh { justify-self: start; }
.qs-coop-op-conversation {
  display: grid; align-content: start; gap: 8px; max-height: 340px; min-width: 0;
  overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--v3-line) transparent;
}
.qs-coop-op-message {
  max-width: 94%; min-width: 0; padding: 9px 11px; border-radius: 10px;
  border: 1px solid var(--v3-line); background: var(--v3-panel-2);
}
.qs-coop-op-message[data-sender="operator"] {
  justify-self: end; background: var(--qs-selected); border-color: var(--qs-accent);
}
.qs-coop-op-message[data-sender="system"] {
  max-width: 100%; width: 100%; box-sizing: border-box; background: transparent; border-style: dashed;
}
.qs-coop-op-message small { color: var(--v3-muted); font-size: 10px; }
.qs-coop-op-message p { white-space: pre-wrap; overflow-wrap: anywhere; padding-top: 4px; }
.qs-coop-op-reply { display: grid; gap: 7px; min-width: 0; }
.qs-coop-op-reply-actions { align-items: center; justify-content: space-between; }
.qs-coop-operator .qs-coop-op-send {
  color: var(--qs-on-accent) !important; background: var(--qs-accent) !important;
  border-color: var(--qs-accent) !important; padding: 8px 12px !important;
}
.qs-coop-operator :is(button,input,select,textarea):focus-visible {
  outline: 2px solid var(--qs-accent); outline-offset: 2px;
}
@media (min-width: 1500px) {
  .qs-coop-op-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
}
@media (pointer: coarse) {
  .qs-coop-operator :is(button,select) { min-height: 44px; }
}

.qs-coop-operator.qs-coop-crm {
  position: absolute; z-index: 15; inset: 0; width: auto; height: auto; min-height: 0;
  grid-template-rows: 48px minmax(0,1fr); gap: 0; overflow: hidden;
  border: 1px solid var(--v3-line); border-radius: 12px; background: var(--v3-bg);
}
.qs-coop-crm-head {
  display: flex; align-items: center; justify-content: space-between; gap: 12px; min-width: 0;
  height: auto; min-height: 0;
  padding: 8px 12px; border-bottom: 1px solid var(--v3-line); background: var(--v3-panel);
}
.qs-coop-crm-head strong { font-size: 13px; font-weight: 550; }
.qs-coop-operator button {
  padding: 7px 10px; border: 1px solid var(--v3-line); border-radius: 8px;
  background: var(--v3-panel-2); color: var(--v3-text); cursor: pointer;
}
.qs-coop-operator button:disabled { opacity: .55; cursor: default; }
.qs-coop-operator button:hover:not(:disabled) { border-color: var(--qs-accent); }
.qs-coop-crm-layout { display: grid; grid-template-columns: minmax(0,1fr) 400px; min-height: 0; min-width: 0; }
.qs-coop-crm-map-area { position: relative; min-height: 0; min-width: 0; overflow: hidden; }
.qs-coop-crm-map { position: absolute; inset: 0; }
.qs-coop-crm-sidebar {
  display: grid; align-content: start; gap: 12px; min-height: 0; min-width: 0; overflow-y: auto;
  padding: 14px; border-left: 1px solid var(--v3-line); background: var(--v3-panel);
  overscroll-behavior: contain; scrollbar-width: thin; scrollbar-color: var(--v3-line) transparent;
}
.qs-coop-crm-map-notice {
  position: absolute; top: 12px; left: 12px; right: 60px; padding: 8px 10px;
  border: 1px solid var(--v3-line); border-radius: 8px; background: var(--v3-panel); color: var(--v3-text);
  font-size: 11px; pointer-events: none; overflow-wrap: anywhere;
}
.qs-coop-crm-map-notice:empty { display: none; }
.qs-coop-crm-map-note {
  position: absolute; left: 10px; bottom: 26px; padding: 4px 7px; border-radius: 6px;
  background: var(--v3-panel); color: var(--v3-muted); font-size: 10px; pointer-events: none;
}
.qs-coop-crm-map-note:empty { display: none; }
.qs-coop-crm-map-retry { position: absolute; top: 65px; left: 12px; }
.qs-coop-crm-summary { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 7px; }
.qs-coop-crm-summary .qs-coop-crm-count { display: grid; gap: 2px; text-align: left; padding: 9px 10px; }
.qs-coop-crm-count strong { font-size: 18px; font-weight: 550; line-height: 1.2; }
.qs-coop-crm-count span { font-size: 10px; color: var(--v3-muted); }
.qs-coop-operator .qs-coop-op-overdue { color: var(--v3-error) !important; }
.qs-coop-operator .qs-coop-op-unread { color: var(--qs-on-accent); background: var(--qs-accent); border-color: var(--qs-accent); }
.qs-coop-crm .qs-coop-op-list { max-height: 240px; overflow-y: auto; scrollbar-width: thin; overscroll-behavior: contain; }
.qs-coop-crm .qs-coop-op-detail { scroll-margin-top: 12px; }
.qs-coop-crm .qs-coop-op-fields { grid-template-columns: repeat(2,minmax(0,1fr)); }
.qs-coop-op-next-step { display: grid; gap: 8px; padding: 11px; border: 1px solid var(--v3-line); border-radius: 10px; }
.qs-coop-op-next-step textarea { min-height: 64px; }
.qs-coop-op-history { border-top: 1px solid var(--v3-line); padding-top: 10px; }
.qs-coop-op-history summary { cursor: pointer; color: var(--v3-muted); font-size: 11px; }
.qs-coop-op-events { display: grid; gap: 8px; margin: 10px 0 0; padding: 0; list-style: none; }
.qs-coop-op-event { padding-left: 9px; border-left: 2px solid var(--v3-line); min-width: 0; }
.qs-coop-op-event small { font-size: 10px; color: var(--v3-muted); }
.qs-coop-op-event p { overflow-wrap: anywhere; white-space: pre-wrap; padding-top: 3px; }
.qs-coop-operator .qs-coop-crm-marker {
  display: grid; place-items: center; min-width: 30px; min-height: 30px; max-width: 58px; padding: 4px 6px;
  border: 2px solid #ffffff !important; border-radius: 10px; background: #236c3b !important;
  color: #ffffff !important; font-size: 11px; font-weight: 650; box-shadow: 0 2px 7px #0007;
}
.qs-coop-operator .qs-coop-crm-marker[data-status="in_progress"] { background: #246c9a !important; }
.qs-coop-operator .qs-coop-crm-marker[data-status="waiting_client"] { background: #816413 !important; }
.qs-coop-operator .qs-coop-crm-marker[data-status="completed"] { background: #5e656a !important; }
.qs-coop-operator .qs-coop-crm-marker[data-overdue="true"] { background: #aa3434 !important; }
.qs-coop-operator .qs-coop-crm-marker[aria-pressed="true"] { outline: 3px solid #f0cf60; outline-offset: 2px; }
.qs-coop-admin-crm {
  /* Actual admin-v3 palette. Legacy --card/--text remain unrelated. */
  --v3-bg: #050a11; --v3-panel: #0c1723; --v3-panel-2: #101e2d; --v3-line: #31465c;
  --v3-text: #e8f0f8; --v3-muted: #95a8b9; --v3-error: #f07878; --qs-accent: #86c83d;
  --qs-on-accent: #0a0a0a; --qs-selected: #203720; --qs-warning: #f5b942;
  color: var(--v3-text); background: var(--v3-bg); color-scheme: dark;
  font-family: Inter, "Segoe UI", system-ui, sans-serif;
}
html.admin-theme-light .qs-coop-admin-crm {
  --v3-bg: #dfe6eb; --v3-panel: #f5f7f8; --v3-panel-2: #e8edf1; --v3-line: #b7c4cd;
  --v3-text: #17232d; --v3-muted: #536674; --v3-error: #aa2929; --qs-accent: #236c3b;
  --qs-on-accent: #ffffff; --qs-selected: #e0ebdf; --qs-warning: #765900;
  color-scheme: light;
}
.qs-coop-admin-crm :is(h3,h4,strong,b) { color: var(--v3-text); }
.qs-coop-admin-crm :is(input,select,textarea,button) {
  background: var(--v3-panel-2) !important; color: var(--v3-text) !important;
  border-color: var(--v3-line) !important;
}
.qs-coop-admin-crm :is(input,select,textarea)::placeholder { color: var(--v3-muted); opacity: 1; }
.qs-coop-admin-crm .maplibregl-ctrl-group {
  background: var(--v3-panel); border: 1px solid var(--v3-line);
}
.qs-coop-admin-crm .maplibregl-ctrl-icon { filter: invert(1); }
html.admin-theme-light .qs-coop-admin-crm .maplibregl-ctrl-icon { filter: none; }
.qs-coop-admin-crm .maplibregl-ctrl-attrib { background: var(--v3-panel); color: var(--v3-muted); }
.qs-coop-admin-crm .maplibregl-ctrl-attrib a { color: var(--v3-text); }
.qs-coop-operator.qs-coop-admin-crm { position: fixed; z-index: 1100; inset: 12px; }
.qs-coop-standalone-crm {
  --v3-bg: var(--map-bg,#111111); --v3-panel: var(--panel,#191919); --v3-panel-2: var(--raised,#1e1e1e);
  --v3-line: var(--line,#383838); --v3-text: var(--map-text,#f2f2f2); --v3-muted: var(--muted,#a0a0a0);
  --v3-error: #f07878; --qs-accent: var(--accent,#45975f); --qs-on-accent: var(--map-on-accent,#0a0a0a);
  --qs-selected: var(--map-selected,#233529); --qs-warning: #e0b86c;
  font-family: Inter, "Segoe UI", system-ui, sans-serif;
}
html.qs-theme-light .qs-coop-standalone-crm { --v3-error: #aa2929; --qs-warning: #765900; }
.qs-coop-standalone-crm .maplibregl-ctrl-icon { filter: invert(1); }
html.qs-theme-light .qs-coop-standalone-crm .maplibregl-ctrl-icon { filter: none; }
@media (max-width: 1000px) {
  .qs-coop-crm-layout { grid-template-columns: minmax(0,1fr) 360px; }
}
@media (max-width: 760px) {
  .qs-coop-operator.qs-coop-crm { grid-template-rows: 44px minmax(0,1fr); border-radius: 9px; }
  .qs-coop-crm-layout { grid-template-columns: minmax(0,1fr); grid-template-rows: 180px minmax(0,1fr); }
  .qs-coop-crm-sidebar { padding: 11px; border-left: 0; border-top: 1px solid var(--v3-line); }
  .qs-coop-crm-head { padding: 5px 9px; gap: 7px; }
  .qs-coop-crm-head strong { font-size: 12px; }
  .qs-coop-operator.qs-coop-admin-crm { inset: 5px; }
  .qs-coop-crm .qs-coop-op-list { max-height: 210px; }
}

/* The CRM tab occupies the hub panel; the existing public map remains visible. */
.qs-coop-operator.qs-coop-map-crm {
  position: static; z-index: auto; inset: auto; width: 100%; height: auto;
  grid-template-rows: auto; gap: 12px; overflow: visible; border: 0; border-radius: 0; background: transparent;
}
.qs-coop-map-crm .qs-coop-crm-layout { display: block; min-height: 0; }
.qs-coop-map-crm .qs-coop-crm-sidebar { overflow: visible; padding: 0; border: 0; background: transparent; }
.qs-coop-map-crm .qs-coop-op-list { max-height: 230px; }
.qs-coop-map-crm .qs-coop-op-detail { gap: 10px; }
.qs-coop-map-crm .qs-coop-op-label { flex-basis: 120px; }
.qs-coop-map-crm textarea { min-height: 76px; }
.qs-coop-map-crm .qs-coop-op-next-step textarea { min-height: 58px; }
.qs-coop-map-crm .qs-coop-op-conversation { max-height: 260px; }
/* Native markers belong to the public map, outside the CRM panel. */
.qs-coop-crm-marker {
  display: inline-flex; align-items: center; justify-content: center; gap: 4px;
  min-width: 30px; min-height: 30px; padding: 4px 7px; border: 2px solid #fff;
  border-radius: 9px; background: #236c3b; color: #fff; cursor: pointer;
  font: 11px/1.3 Inter,"Segoe UI",system-ui,sans-serif; box-shadow: 0 2px 7px #0007;
}
.qs-coop-crm-marker[data-status="in_progress"] { background: #246c9a; }
.qs-coop-crm-marker[data-status="waiting_client"] { background: #816413; }
.qs-coop-crm-marker[data-status="proposal_ready"] { background: #7750a3; }
.qs-coop-crm-marker[data-status="completed"] { background: #5e656a; }
.qs-coop-crm-marker.is-selected { outline: 3px solid #f0cf60; outline-offset: 2px; }
.qs-coop-crm-marker:focus-visible { outline: 3px solid #f0cf60; outline-offset: 2px; }
.qs-coop-crm-number { font-size: 11px; font-weight: 650; }
.qs-coop-crm-unread { display: none; }
.qs-coop-crm-marker.has-unread .qs-coop-crm-unread {
  display: inline-grid; place-items: center; min-width: 16px; height: 16px; padding: 0 3px;
  border-radius: 5px; background: #fff; color: #8b2b23; font-size: 9px; font-weight: 650;
}
@media (max-width: 760px) {
  .qs-coop-operator.qs-coop-map-crm { grid-template-rows: auto; border-radius: 0; }
  .qs-coop-map-crm .qs-coop-crm-sidebar { padding: 0; border: 0; }
  .qs-coop-map-crm .qs-coop-op-fields { grid-template-columns: 1fr; }
}

/* Queue and selected ticket share the same panel, with one scroll owner each. */
.qs-coop-operator.qs-coop-map-crm {
  display:flex;flex-direction:column;flex:1;min-height:0;height:100%;gap:0;overflow:hidden;
}
.qs-coop-map-crm .qs-coop-crm-layout {display:flex;flex:1;flex-direction:column;min-height:0}
.qs-coop-crm .qs-coop-crm-sidebar {display:flex;flex-direction:column;min-height:0;padding:0;gap:0;overflow:hidden}
.qs-coop-map-crm .qs-coop-crm-sidebar {flex:1}
.qs-coop-op-queue {display:flex;flex:1;flex-direction:column;min-height:0;gap:8px;padding:12px 14px 0}
.qs-coop-crm .qs-coop-op-list {flex:1;min-height:0;max-height:none;overflow-y:auto;padding-bottom:14px;gap:6px}
.qs-coop-crm .qs-coop-crm-summary {flex:none;gap:6px}
.qs-coop-crm .qs-coop-crm-count {display:flex;align-items:center;gap:6px;min-height:32px;padding:6px 8px}
.qs-coop-crm .qs-coop-crm-count strong {font-size:15px}
.qs-coop-crm .qs-coop-crm-count span {font-size:10px}
.qs-coop-op-filters {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px;gap:6px;align-items:end;flex:none}
.qs-coop-op-filters .qs-coop-op-label >span {font-size:10px}
.qs-coop-op-filters .qs-coop-op-refresh {height:40px;min-height:40px;padding:0;font-size:20px}
.qs-coop-op-filters input {height:40px;font-size:12px}
.qs-coop-crm .qs-coop-op-request {gap:3px;padding:9px 10px!important}
.qs-coop-crm .qs-coop-op-request-head strong {font-size:11px}
.qs-coop-crm .qs-coop-op-request small {font-size:10px;color:var(--v3-muted)}
.qs-coop-crm .qs-coop-op-detail {display:flex;flex:1;flex-direction:column;min-height:0;height:100%;padding:0;gap:0;border:0}
.qs-coop-op-detail-head {display:flex;align-items:center;gap:8px;flex:none;min-width:0;padding:8px 12px;border-bottom:1px solid var(--v3-line);background:var(--v3-panel)}
.qs-coop-op-detail-head .qs-coop-op-back {flex:none;min-height:36px;padding:6px 8px;font-size:11px}
.qs-coop-op-ticket {display:flex;flex:1;flex-direction:column;align-items:flex-start;gap:3px;min-width:0}
.qs-coop-op-ticket h3 {max-width:100%;font-size:12px;line-height:1.35;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;outline:none}
.qs-coop-op-ticket .qs-coop-op-badge {font-size:9px;padding:2px 5px;max-width:100%;white-space:normal}
.qs-coop-op-detail-head .qs-coop-op-detail-refresh {flex:none;width:32px;min-height:36px;padding:0;font-size:19px}
.qs-coop-op-detail-body {flex:1;min-height:0;min-width:0;overflow-y:auto;overscroll-behavior:contain;padding:12px 14px;scrollbar-width:thin;scrollbar-color:var(--v3-line) transparent}
.qs-coop-op-detail-body >*+* {margin-top:10px}
.qs-coop-op-overview {display:grid;gap:3px;min-width:0}
.qs-coop-op-overview strong {font-size:12px;font-weight:550;overflow-wrap:anywhere}
.qs-coop-op-overview p {font-size:11px;color:var(--v3-muted);overflow-wrap:anywhere;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.qs-coop-op-detail-body .qs-coop-op-state {display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px;min-width:0}
.qs-coop-op-state .qs-coop-op-label >span {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.qs-coop-op-state :is(.qs-coop-op-take,.qs-coop-op-save-status) {min-height:40px;padding:7px 8px;white-space:nowrap;font-size:11px}
.qs-coop-operator .qs-coop-op-take {background:var(--qs-accent)!important;color:var(--qs-on-accent)!important;border-color:var(--qs-accent)!important}
.qs-coop-op-detail-body .qs-coop-op-reply {gap:7px}
.qs-coop-crm .qs-coop-op-reply textarea {min-height:68px;max-height:180px;font-size:12px}
.qs-coop-op-reply .qs-coop-op-label >span {font-size:11px}
.qs-coop-op-reply .qs-coop-op-send {min-height:38px;font-size:11px}
.qs-coop-op-counter {font-size:9px}
.qs-coop-op-fold {border-top:1px solid var(--v3-line);padding-top:6px}
.qs-coop-op-fold >summary {padding:3px 0;color:var(--v3-muted);font-size:11px;cursor:pointer}
.qs-coop-op-fold >:not(summary) {margin-top:9px}
.qs-coop-op-plan .qs-coop-op-next-step {border:0;padding:0;gap:7px}
.qs-coop-op-plan textarea {min-height:54px}
.qs-coop-crm .qs-coop-op-conversation {max-height:none;overflow:visible;gap:7px}
.qs-coop-op-fold .qs-coop-op-fields {grid-template-columns:repeat(2,minmax(0,1fr))}
@media(max-width:760px) {
 .qs-coop-op-queue {padding:10px 12px 0;gap:7px}
 .qs-coop-crm .qs-coop-op-list {max-height:none;padding-bottom:12px}
 .qs-coop-op-detail-head {padding:7px 10px;gap:6px}
 .qs-coop-op-detail-body {padding:10px 12px}
 .qs-coop-op-filters {grid-template-columns:minmax(0,1fr) minmax(0,1fr) 36px}
 .qs-coop-op-fold .qs-coop-op-fields {grid-template-columns:1fr}
 .qs-coop-op-state :is(.qs-coop-op-take,.qs-coop-op-save-status) {padding:7px 6px}
}


/* Area CRM starts with points on the shared map. Only its tools stay visible. */
.qs-coop-operator.qs-coop-crm-map-toolbar {
  display:flex;flex:1 0 100%;flex-wrap:wrap;align-items:center;gap:6px;
  width:auto;max-width:100%;min-width:0;margin:2px 0 0;padding:7px 0 0;
  border-top:1px solid var(--v3-line);background:transparent;font-size:11px;
}
.qs-coop-crm-map-toolbar[hidden] {display:none!important;}
.qs-coop-crm-map-toolbar .qs-coop-crm-summary {display:flex;flex-wrap:wrap;gap:4px;flex:none;}
.qs-coop-crm-map-toolbar .qs-coop-crm-count {display:flex;align-items:center;gap:5px;min-height:34px;padding:5px 7px;}
.qs-coop-crm-map-toolbar .qs-coop-crm-count strong {font-size:13px;line-height:1.2;}
.qs-coop-crm-map-toolbar .qs-coop-crm-count span {font-size:10px;}
.qs-coop-crm-map-toolbar .qs-coop-op-filters {display:grid;grid-template-columns:minmax(0,1fr) 34px;align-items:center;gap:5px;min-width:140px;flex:1 1 160px;max-width:230px;}
.qs-coop-crm-map-toolbar .qs-coop-op-label {display:block;flex:none;}
.qs-coop-crm-map-toolbar .qs-coop-op-label >span {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
.qs-coop-crm-map-toolbar select {height:34px;min-height:34px;padding:5px 7px;font-size:11px;}
.qs-coop-crm-map-toolbar .qs-coop-op-refresh {height:34px;min-height:34px;padding:0;font-size:19px;}
.qs-coop-crm-map-toolbar .qs-coop-op-notice {flex:1 0 100%;margin:0;font-size:11px;}
.qs-coop-crm-map-toolbar .qs-coop-op-list-note {color:var(--v3-muted);font-size:10px;}
/* Queue objects remain detached on map pages; this card contains detail only. */
.qs-coop-map-crm .qs-coop-op-queue,.qs-coop-map-crm .qs-coop-op-list {display:none!important;}
.qs-coop-map-crm .qs-coop-op-ticket h3 {display:none;}
.qs-coop-map-crm .qs-coop-op-ticket {align-self:center;}
@media(max-width:760px) {
  .qs-coop-crm-map-toolbar .qs-coop-crm-count {min-height:36px;}
  .qs-coop-crm-map-toolbar .qs-coop-op-filters {max-width:none;}
}
@media(min-width:761px) {
  html.qs-public-map main .layers:has(> #qsCooperationCRMToolbar:not([hidden])) {
    max-width:min(620px,calc(100% - 28px));
  }
}
/* One native map control block uses the same palette and 44px targets. */
.qs-coop-crm-map-toolbar {font-size:12px;gap:6px;}
.qs-coop-crm-map-toolbar :is(button,select) {min-height:44px;height:44px;border-radius:8px;font-size:12px;}
.qs-coop-crm-map-toolbar .qs-coop-crm-count {min-height:44px;padding:7px 9px;gap:6px;}
.qs-coop-crm-map-toolbar .qs-coop-crm-count span {font-size:12px;}
.qs-coop-crm-map-toolbar .qs-coop-op-filters {grid-template-columns:minmax(0,1fr) 44px;min-width:150px;max-width:244px;}
.qs-coop-crm-map-toolbar select {height:44px;min-height:44px;padding:7px 9px;font-size:12px;}
.qs-coop-crm-map-toolbar .qs-coop-op-refresh {width:44px;height:44px;min-height:44px;font-size:20px;}
/* The map task header already carries the number and close control. */
.qs-coop-map-crm .qs-coop-op-detail-head {display:none;}
.qs-coop-map-crm .qs-coop-op-note-preview {display:none!important;}
.qs-coop-map-crm .qs-coop-op-detail-body {padding:10px 12px;}
.qs-coop-map-crm .qs-coop-op-detail-body >*+* {margin-top:6px;}
.qs-coop-map-crm .qs-coop-op-overview {gap:2px;}
.qs-coop-map-crm .qs-coop-op-overview p {font-size:11px;line-height:1.35;-webkit-line-clamp:1;}
.qs-coop-map-crm .qs-coop-op-state :is(select,button) {min-height:44px;height:44px;}
.qs-coop-map-crm .qs-coop-op-reply .qs-coop-op-label >span {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
.qs-coop-map-crm .qs-coop-op-reply textarea {min-height:58px;height:58px;max-height:150px;}
.qs-coop-map-crm .qs-coop-op-reply-actions {min-height:44px;gap:6px;}
.qs-coop-map-crm .qs-coop-op-reply .qs-coop-op-send {min-height:44px;height:44px;font-size:12px;}
.qs-coop-map-crm .qs-coop-op-fold:not([open]) {display:inline-block;vertical-align:top;max-width:100%;margin:6px 4px 0 0;padding:0;border:0;}
.qs-coop-map-crm .qs-coop-op-fold:not([open]) >summary {padding:6px 8px;border:1px solid var(--v3-line);border-radius:8px;background:var(--v3-panel-2);font-size:11px;line-height:1.3;}
.qs-coop-map-crm .qs-coop-op-fold[open] {display:block;clear:both;margin-top:8px;}
.qs-coop-map-crm .qs-coop-op-conversation,.qs-coop-map-crm .qs-coop-op-events {max-height:210px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;}
@media(max-width:760px) {
  .qs-coop-crm-map-toolbar .qs-coop-op-filters {max-width:none;}
  .qs-coop-map-crm .qs-coop-op-fold:not([open]) >summary {min-height:36px;padding:8px 7px;}
}
/* One conversation contains the request snapshot, actions and correspondence. */
.qs-coop-crm .qs-coop-op-detail-body {display:flex;flex-direction:column;min-height:0;overflow:hidden;padding:0;}
.qs-coop-crm .qs-coop-op-detail-body >*+* {margin-top:0;}
.qs-coop-op-task-tools {display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:6px;flex:none;padding:8px 12px;border-bottom:1px solid var(--v3-line);background:var(--v3-panel);}
.qs-coop-op-task-tools .qs-coop-op-state {display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px;min-width:0;}
.qs-coop-op-task-tools .qs-coop-op-state :is(button,select),.qs-coop-op-plan-toggle {min-height:44px;height:44px;}
.qs-coop-op-task-tools .qs-coop-op-state button,.qs-coop-op-plan-toggle {padding:6px 7px;white-space:nowrap;font-size:11px;}
.qs-coop-op-plan-editor {grid-column:1 / -1;min-width:0;}
.qs-coop-op-plan-editor .qs-coop-op-next-step {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:6px;border:0;padding:0;}
.qs-coop-op-plan-editor .qs-coop-op-next-step textarea {min-height:44px;height:44px;max-height:100px;}
.qs-coop-op-plan-editor .qs-coop-op-save-plan {min-height:44px;grid-column:2;}
.qs-coop-op-plan-editor .qs-coop-op-notice {font-size:10px;}
.qs-coop-crm .qs-coop-op-timeline {display:flex;flex-direction:column;align-items:flex-start;gap:8px;flex:1;min-height:0;max-height:none;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:10px 12px;}
.qs-coop-op-timeline .qs-coop-op-message {flex:none;max-width:94%;}
.qs-coop-op-timeline .qs-coop-op-message[data-sender="operator"] {align-self:flex-end;}
.qs-coop-op-timeline .qs-coop-op-message[data-sender="system"] {align-self:center;max-width:100%;width:100%;font-size:11px;background:transparent;border-style:dashed;}
.qs-coop-op-timeline .qs-coop-op-message[data-kind="request"] {background:var(--v3-panel-2);border-style:solid;}
.qs-coop-crm .qs-coop-op-detail-body >.qs-coop-op-notice:not(:empty) {flex:none;margin:0;padding:5px 12px;font-size:11px;}
.qs-coop-crm .qs-coop-op-detail-body >.qs-coop-op-reply {flex:none;gap:6px;padding:8px 12px;border-top:1px solid var(--v3-line);background:var(--v3-panel);}
.qs-coop-crm .qs-coop-op-reply textarea {min-height:52px;height:52px;max-height:110px;resize:none;}
.qs-coop-crm .qs-coop-op-reply .qs-coop-op-send {height:44px;min-height:44px;}
@media(max-width:760px) {
  .qs-coop-op-task-tools {padding:6px 10px;gap:4px;}
  .qs-coop-op-task-tools .qs-coop-op-state {gap:4px;}
  .qs-coop-op-task-tools .qs-coop-op-state button,.qs-coop-op-plan-toggle {padding:6px 5px;}
  .qs-coop-crm .qs-coop-op-timeline {padding:8px 10px;}
  .qs-coop-crm .qs-coop-op-detail-body >.qs-coop-op-reply {padding:6px 10px;}
}
/* Compact chat controls keep the original nodes and mutation handlers. */
.qs-coop-map-crm .qs-coop-op-task-tools {padding:4px 8px;gap:4px;}
.qs-coop-map-crm .qs-coop-op-task-tools .qs-coop-op-state {gap:4px;}
.qs-coop-map-crm .qs-coop-op-task-tools .qs-coop-op-state :is(select,button),.qs-coop-map-crm .qs-coop-op-more-toggle {height:32px;min-height:32px;font-size:11px;border-radius:8px;padding:4px 6px;}
.qs-coop-map-crm .qs-coop-op-save-status,.qs-coop-map-crm .qs-coop-op-more-toggle {width:32px;min-width:32px;padding:0;font-size:18px;}
.qs-coop-op-more-menu {grid-column:1 / -1;display:grid;gap:6px;min-width:0;padding:6px;border:1px solid var(--v3-line);border-radius:8px;background:var(--v3-panel-2);}
.qs-coop-op-more-menu .qs-coop-op-plan-toggle {justify-self:start;}
.qs-coop-map-crm .qs-coop-op-detail-body >.qs-coop-op-reply {display:grid;grid-template-columns:minmax(0,1fr) 40px;align-items:end;gap:6px;padding:6px 8px;}
.qs-coop-map-crm .qs-coop-op-reply .qs-coop-op-label {display:block;}
.qs-coop-map-crm .qs-coop-op-reply textarea {min-height:40px;height:40px;max-height:80px;padding:8px 10px;font-size:12px;line-height:1.4;resize:none;}
.qs-coop-map-crm .qs-coop-op-reply-actions {min-height:40px;display:block;}
.qs-coop-map-crm .qs-coop-op-reply .qs-coop-op-counter {display:none!important;}
.qs-coop-map-crm .qs-coop-op-reply .qs-coop-op-send {display:flex;align-items:center;justify-content:center;width:40px;min-width:40px;height:40px;min-height:40px;padding:9px!important;border-radius:50%;}
.qs-coop-map-crm .qs-coop-op-send svg {width:20px;height:20px;flex:none;}
.qs-coop-map-crm .qs-coop-op-timeline {gap:6px;padding:8px;}
.qs-coop-map-crm .qs-coop-op-timeline .qs-coop-op-message {padding:7px 9px;border-radius:11px;}
.qs-coop-map-crm .qs-coop-op-timeline .qs-coop-op-message p {padding:0;font-size:12px;line-height:1.4;}
.qs-coop-map-crm .qs-coop-op-timeline .qs-coop-op-message small {display:block;margin-top:3px;text-align:right;font-size:9px;line-height:1.25;}
.qs-coop-map-crm .qs-coop-op-timeline .qs-coop-op-message[data-sender="operator"],.qs-coop-map-crm .qs-coop-op-timeline .qs-coop-op-message[data-sender="system"] {align-self:flex-start;background:var(--v3-panel-2);border-color:var(--v3-line);}
.qs-coop-map-crm .qs-coop-op-timeline .qs-coop-op-message[data-sender="client"] {align-self:flex-end;background:var(--qs-selected);border-color:var(--qs-accent);}
@media(max-width:760px) {
  .qs-coop-map-crm .qs-coop-op-task-tools .qs-coop-op-save-status,.qs-coop-map-crm .qs-coop-op-more-toggle {width:40px;min-width:40px;height:40px;min-height:40px;}
}
.qs-coop-map-crm .qs-coop-op-task-tools .qs-coop-op-state .qs-coop-op-save-status {width:32px;min-width:32px;height:32px;min-height:32px;padding:0;font-size:18px;}
@media(max-width:760px) {
  .qs-coop-map-crm .qs-coop-op-task-tools .qs-coop-op-state .qs-coop-op-save-status {width:40px;min-width:40px;height:40px;min-height:40px;}
}
#qsCooperationCRM .qs-coop-op-reply textarea {display:block!important;min-height:40px!important;max-height:80px;}
#qsCooperationCRM .qs-coop-op-reply-actions {height:40px;min-height:40px!important;margin:0;display:flex;align-items:flex-end;}

/* Plans and assignments are attachments to the same outgoing chat message. */
.qs-coop-crm .qs-coop-op-task-tools {grid-template-columns:minmax(0,1fr);}
.qs-coop-crm .qs-coop-op-detail-body >.qs-coop-op-reply {position:relative;display:grid;grid-template-columns:40px minmax(0,1fr) 40px;align-items:end;gap:6px;}
.qs-coop-crm .qs-coop-op-reply >.qs-coop-op-label {display:block;}
.qs-coop-crm .qs-coop-op-reply >.qs-coop-op-label >span {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
#qsCooperationCRM .qs-coop-op-reply textarea {height:40px;min-height:40px!important;max-height:80px;padding:8px 10px;font-size:12px;line-height:1.4;resize:none;}
.qs-coop-crm .qs-coop-op-reply .qs-coop-op-send {display:flex;align-items:center;justify-content:center;width:40px;min-width:40px;height:40px;min-height:40px;padding:9px!important;border-radius:50%;}
.qs-coop-crm .qs-coop-op-send svg {width:20px;height:20px;flex:none;}
.qs-coop-crm .qs-coop-op-reply .qs-coop-op-counter {display:none!important;}
.qs-coop-crm .qs-coop-op-more-toggle {display:grid;place-items:center;width:40px;min-width:40px;height:40px;min-height:40px;padding:0;border-radius:50%;}
.qs-coop-crm .qs-coop-op-more-toggle.has-attachment {color:var(--qs-accent);border-color:var(--qs-accent);}
.qs-coop-crm .qs-coop-op-more-menu {position:absolute;z-index:4;bottom:calc(100% + 5px);left:8px;display:grid;grid-template-columns:1fr;gap:3px;min-width:190px;max-width:calc(100% - 16px);padding:4px;box-shadow:0 4px 14px #0003;}
.qs-coop-crm .qs-coop-op-more-menu button {width:100%;height:36px;min-height:36px;padding:6px 9px;text-align:left;border:0;background:transparent;font-size:12px;}
.qs-coop-crm .qs-coop-op-plan-editor {display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);align-content:start;gap:0 6px;flex:0 1 auto;min-height:0;min-width:0;max-height:200px;overflow-y:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:5px 8px 6px;background:var(--v3-panel-2);border-top:1px solid var(--v3-line);border-left:3px solid var(--qs-accent);}
.qs-coop-op-attachment-head {display:flex;align-items:center;justify-content:space-between;gap:6px;min-width:0;margin-bottom:4px;}
.qs-coop-op-attachment-head,.qs-coop-crm .qs-coop-op-plan-editor >.qs-coop-op-label {grid-column:1 / -1;}
.qs-coop-op-attachment-head strong {font-size:11px;color:var(--v3-muted);font-weight:550;}
.qs-coop-crm .qs-coop-op-remove-attachment {width:24px;height:24px;min-height:24px;padding:0;border:0;background:transparent;font-size:20px;line-height:1;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-next-step {display:contents;border:0;padding:0;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-next-step >.qs-coop-op-label:first-child {grid-column:1 / -1;margin-bottom:5px;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-next-step >.qs-coop-op-label:last-child {grid-column:1 / -1;}
.qs-coop-crm .qs-coop-op-plan-editor:has(>.qs-coop-op-assignment:not([hidden])) .qs-coop-op-next-step >.qs-coop-op-label:last-child {grid-column:1;}
.qs-coop-crm .qs-coop-op-plan-editor >.qs-coop-op-assignment {grid-column:1 / -1;}
.qs-coop-crm .qs-coop-op-plan-editor:has(>.qs-coop-op-next-step:not([hidden])) >.qs-coop-op-assignment {grid-column:2;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-label {gap:0;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-label >span {position:absolute;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;}
.qs-coop-crm .qs-coop-op-plan-editor :is(input,select,textarea) {display:block;min-height:36px;height:36px;max-height:60px;padding:7px 8px;font-size:11px;line-height:1.3;resize:none;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-assignment:not([hidden]) {margin-top:0;}
.qs-coop-crm .qs-coop-op-plan-editor .qs-coop-op-assignment:first-child {margin-top:0;}
.qs-coop-op-assignment .qs-coop-op-notice {font-size:10px;margin-top:3px;}
.qs-coop-op-message-attachment {display:grid;gap:3px;margin-top:6px;padding:5px 7px;border-left:2px solid var(--qs-accent);border-radius:4px;background:var(--v3-panel);font-size:11px;line-height:1.35;overflow-wrap:anywhere;}
.qs-coop-op-message-attachment strong {font-weight:550;white-space:pre-wrap;}
.qs-coop-op-message-attachment span {color:var(--v3-muted);}
.qs-coop-crm .qs-coop-op-plan-editor >.qs-coop-op-label:not([hidden]) {margin-bottom:5px;}
.qs-coop-crm .qs-coop-op-message-attachment .qs-coop-op-edit-action {justify-self:start;min-height:26px;height:26px;padding:3px 7px;font-size:10px;background:transparent;border-color:var(--v3-line);}
@media(max-width:760px) {
  .qs-coop-crm .qs-coop-op-detail-body >.qs-coop-op-reply {grid-template-columns:40px minmax(0,1fr) 40px;}
}

/* The action popup uses the same palette and rows as the application menus. */
.qs-coop-crm .qs-coop-op-more-toggle svg {display:block;width:20px;height:20px;pointer-events:none}
.qs-coop-crm .qs-coop-op-more-menu {padding:6px;gap:2px;border:1px solid var(--qs-select-line,var(--v3-line));border-radius:10px;background:var(--qs-menu-bg,var(--v3-panel));color:var(--qs-select-text,var(--v3-text));box-shadow:0 8px 24px #0003}
.qs-coop-crm .qs-coop-op-more-menu button {display:flex;align-items:center;border-radius:7px;color:inherit;line-height:1.4}
.qs-coop-crm .qs-coop-op-more-menu button:hover:not(:disabled),.qs-coop-crm .qs-coop-op-more-menu button:focus-visible {background:var(--qs-select-active,var(--qs-selected));color:var(--qs-select-text,var(--v3-text))}

/* Origin fits beside existing status without increasing the chat footer. */
.qs-coop-origin{display:inline-flex;align-items:center;white-space:nowrap;font-size:12px;line-height:1;color:var(--qs-coop-muted,#8ba2b5);flex:none;gap:3px}
.qs-coop-origin-wrap{display:inline-flex;align-items:center}
.qs-coop-op-client-form{display:grid;gap:8px;padding:10px;margin:0 8px 8px;border:1px solid rgba(135,165,190,.25);border-radius:10px}
.qs-coop-op-client-form[hidden]{display:none}
.qs-coop-op-client-form input:not([type=checkbox]){min-width:0;width:100%;padding:8px;border:1px solid rgba(135,165,190,.3);border-radius:7px;background:transparent;color:inherit;font:inherit}
.qs-coop-op-client-form label{display:flex;align-items:flex-start;gap:8px;font-size:12px}
.qs-coop-op-client-form button{font:inherit;color:inherit;background:transparent;border:1px solid rgba(135,165,190,.3);border-radius:7px;padding:6px}

/* Marketing unread events stay in Map and the map request workspace. */
html.qs-main-layout #publicMapOpen, #publicMapLogin, html.qs-public-map #publicMapOpen {position:relative;}
.qs-cooperation-counter {display:inline-flex;align-items:center;justify-content:center;min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--qs-cooperation-unread,#c93644);color:#fff;font:600 10px/1 Inter,"Segoe UI",sans-serif;}
.qs-cooperation-counter[hidden] {display:none!important;}
html.qs-main-layout #publicMapOpen .qs-cooperation-counter, html.qs-public-map #publicMapOpen .qs-cooperation-counter {position:absolute;top:0;right:0;}
@media(max-width:760px) {
 html.qs-main-layout #publicMapOpen .qs-cooperation-counter,html.qs-public-map #publicMapOpen .qs-cooperation-counter {top:1px;right:calc(50% - 26px);}
}

/* Object permissions add native-sized actions within the existing header. */
html.qs-central-controls .qs-header-actions .qs-capability-shortcuts {
  position:relative; display:flex; flex:none; align-items:center; gap:6px; min-width:0;
}
html.qs-central-controls .qs-capability-shortcuts [hidden],
html.qs-central-controls .qs-capability-shortcuts[hidden] { display:none!important; }
html.qs-central-controls .qs-capability-links { display:flex; align-items:center; gap:6px; min-width:0; }
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-capability-links > button,
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-capability-more {
  flex:none; display:inline-flex; align-items:center; justify-content:center;
  width:30px; min-width:30px; height:30px; min-height:30px; padding:5px!important;
  border:0!important; border-radius:8px!important; background:transparent!important;
  color:var(--v3-muted)!important; box-shadow:none!important;
}
html.qs-central-controls .qs-capability-shortcuts .icon { width:18px; height:18px; flex:none; }
html.qs-central-controls .qs-capability-shortcuts button:disabled { opacity:.55; cursor:default; }
html.qs-central-controls .qs-capability-shortcuts button:focus-visible { outline:2px solid var(--qs-accent); outline-offset:2px; }
html.qs-central-controls .qs-capability-shortcuts button:hover:not(:disabled) { color:var(--v3-text)!important; }
html.qs-central-controls .qs-capability-more[aria-expanded="true"] { color:var(--qs-accent)!important; background:var(--qs-selected)!important; }
html.qs-central-controls .qs-capability-menu {
  position:absolute; z-index:92; right:0; top:calc(100% + 8px); width:min(280px,calc(100vw - 24px));
  max-height:calc(100dvh - 100px); overflow-y:auto; overscroll-behavior:contain;
  padding:12px; border:1px solid var(--v3-line); border-radius:12px;
  background:var(--v3-panel); color:var(--v3-text); box-shadow:0 8px 24px #0002; scrollbar-width:thin;
}
html.qs-central-controls .qs-capability-object { display:block; margin:0 0 8px; font-size:11px; font-weight:500; color:var(--v3-muted); overflow-wrap:anywhere; }
html.qs-central-controls .qs-capability-menu-actions { display:grid; gap:4px; }
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-capability-menu-actions > button {
  display:flex; align-items:center; justify-content:flex-start; gap:10px;
  width:100%; min-width:0; height:auto; min-height:38px; padding:8px 9px!important;
  border:0!important; border-radius:8px!important; color:var(--v3-text)!important;
  font:inherit; font-size:12px; text-align:left; white-space:normal;
}
html.qs-central-controls .qs-capability-status { margin:8px 0 0; color:var(--v3-muted); font-size:11px; line-height:1.5; overflow-wrap:anywhere; }
html.qs-central-controls .qs-capability-status:empty { display:none; }
@media(max-width:760px) {
  html.qs-central-controls .qs-header-actions .qs-capability-shortcuts,
  html.qs-central-controls .qs-capability-links { gap:4px; }
  html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-capability-links > button,
  html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-capability-more {
    width:44px; min-width:44px; height:44px; min-height:44px; padding:10px!important;
  }
  html.qs-central-controls .qs-capability-shortcuts .icon { width:20px; height:20px; }
  html.qs-central-controls .qs-capability-menu {
    position:fixed; right:12px; top:60px;
    max-height:calc(100dvh - 152px - env(safe-area-inset-bottom,0px)); padding:12px;
  }
  html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-capability-menu-actions > button { min-height:44px; }
}

/* One middle-pane Share screen keeps the original native forms and fields. */
html.qs-main-layout .qs-share-panel > .camera-access-head {display:none!important;}
html.qs-main-layout .qs-share-tools {display:flex;align-items:center;gap:6px;padding:0 0 10px;margin-bottom:10px;border-bottom:1px solid var(--v3-line);}
html.qs-main-layout .qs-share-tools >strong {font-size:12px;font-weight:550;color:var(--v3-muted);}
html.qs-main-layout .qs-share-choice {flex:1;min-width:0;min-height:36px;padding:7px 9px;border:1px solid var(--v3-line);border-radius:8px;background:var(--v3-panel-2);color:var(--v3-text);font:inherit;font-size:12px;}
html.qs-main-layout .qs-share-choice[aria-pressed="true"] {background:var(--qs-selected);border-color:var(--qs-accent);color:var(--v3-text);}
html.qs-main-layout .qs-share-empty {display:grid;gap:10px;min-width:0;font-size:12px;}
html.qs-main-layout .qs-share-empty >strong {font-size:14px;font-weight:550;}
html.qs-main-layout .qs-share-empty p {margin:0;color:var(--v3-muted);}
html.qs-main-layout .qs-share-panel .camera-access-form {gap:8px;}
html.qs-main-layout .qs-share-panel .camera-access-permissions label:has(input[type="checkbox"]:disabled):not(:has(input[type="checkbox"]:checked)) {display:none;}
html.qs-main-layout .qs-share-panel .access-directory-summary {gap:5px;}
html.qs-main-layout .qs-share-panel .access-directory-summary >span {padding:6px 7px;}
html.qs-main-layout .qs-share-panel .access-directory-summary b {font-size:14px;}
html.qs-main-layout .qs-share-panel .access-directory-unit-body {gap:9px;padding:10px;}
html.qs-main-layout .qs-share-panel .access-directory-person {padding:6px 0;}
@media(max-width:760px) {
 html.qs-main-layout .qs-share-choice {min-height:40px;padding:8px 6px;font-size:11px;}
 html.qs-main-layout .qs-share-panel .access-directory-inline {gap:5px;}
}

/* Approved Studio reference636b7a7: separate creation and issued-access views. */
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock {container-type:inline-size;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-tabs {display:grid;grid-template-columns:1fr 1fr;gap:4px;padding:3px;margin:4px 0 12px;border:1px solid var(--v3-line);border-radius:10px;background:var(--v3-panel-2);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-tabs button {display:flex;align-items:center;justify-content:center;gap:6px;min-width:0;min-height:42px;padding:8px;border:1px solid transparent;border-radius:7px;background:transparent;color:var(--v3-muted);font-size:12px;white-space:normal;line-height:1.25;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-tabs button[aria-selected=true] {color:var(--v3-text);background:var(--qs-selected);border-color:var(--qs-accent);box-shadow:inset 0 -2px var(--qs-accent);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-tabs b {font-size:11px;min-width:18px;border-radius:20px;background:var(--v3-panel);padding:2px 5px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-new-view {display:grid;gap:12px;min-width:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-form {display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-form >label {min-width:0;font-size:11px;gap:5px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-form input {width:100%;min-width:0;min-height:38px;box-sizing:border-box;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-phone {min-width:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles {margin:0;gap:8px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles:before {content:attr(data-label);grid-column:1/-1;font-size:11px;color:var(--v3-muted);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles button {min-height:52px;flex-direction:row;align-items:center;gap:8px;padding:10px;border-radius:9px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles button[aria-pressed=true] {border-color:var(--qs-accent);background:var(--qs-selected);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles button:after {content:'';width:12px;height:12px;border:1.5px solid currentColor;border-radius:50%;margin-left:auto;flex:none;opacity:.5;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles button[aria-pressed=true]:after {background:var(--qs-accent);border-color:var(--qs-accent);box-shadow:inset 0 0 0 3px var(--v3-panel);opacity:1;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles :is(small,button:disabled) {display:none;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-group-field {margin:0;padding:10px;border:1px solid var(--v3-line);border-radius:10px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-scope-label {display:block;font-size:11px;font-weight:500;margin-bottom:7px;color:var(--v3-muted);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-group-options {display:flex;flex-wrap:wrap;gap:6px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-group-options label {flex:1 1 auto;min-width:0;padding:8px;min-height:36px;border-radius:7px;font-size:12px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-policy-row {margin:0;padding:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock :is(.camera-access-scope-hint,.qs-access-explanation) {display:none!important;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-contact-matches:empty {display:none;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-main {gap:6px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-permissions label {padding:7px 9px;min-height:38px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-extras {margin-top:10px;padding:0 10px;border:1px solid var(--v3-line);border-radius:9px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-extras >summary {padding:11px 0;font-size:12px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-actions {display:block;margin:0;padding:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-actions >span {display:flex;gap:6px;width:100%;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock #cameraAccessSubmit {flex:1;min-height:44px;justify-content:center;border-radius:9px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock :is(#cameraAccessClearPerson,#cameraAccessCancelEdit) {flex:none;width:40px;min-height:44px;padding:8px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-status:empty {display:none;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-current {margin:0;padding:0;border:0;background:transparent;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-grants {margin:0;padding:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-new-view[hidden],html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock [hidden] {display:none!important;}
html.qs-v3 body #cameraAccessPanel.qs-share-panel >.qs-share-tools:has(>strong:only-child) {display:none;}
@container(max-width:400px) {
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-form {grid-template-columns:1fr;gap:8px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-new-view {gap:10px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-roles button {padding:8px;font-size:11px;gap:5px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-main label {flex:1 1 auto;}
}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-scope-label {position:static!important;width:auto;height:auto;clip:auto;overflow:visible;white-space:normal;}

html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-dock-head {background:var(--v3-panel);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-tabs button[aria-selected=true] {background:var(--qs-selected)!important;border-color:var(--qs-accent)!important;}
/* Reuse the persisted view symbol; selectors keep their native checkbox. */
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-group-options label {display:flex;align-items:center;justify-content:center;gap:6px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-group-icon {display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;flex:0 0 18px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-group-icon svg {display:block;width:18px;height:18px;}

/* Studio3d0f011: compact issued-access cards, with separate general/camera views. */
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-grants {display:block;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-tabs {margin:0 0 8px;padding:2px;gap:2px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-tabs button {min-height:32px;padding:5px 8px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-pane {display:grid;gap:6px;min-width:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-card {display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:8px;align-items:center;min-width:0;min-height:64px;margin:0;padding:8px;border:1px solid var(--v3-line);border-radius:10px;background:var(--v3-panel-2);box-shadow:none;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient-avatar {display:grid;place-items:center;width:32px;height:32px;border:1px solid var(--v3-line-strong);border-radius:50%;background:var(--qs-selected);color:var(--v3-text);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient-avatar svg {width:18px;height:18px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-content {display:grid;gap:5px;min-width:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient {display:flex;align-items:baseline;gap:7px;min-width:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient .camera-access-grantee {flex:0 1 auto;flex-wrap:nowrap;overflow:hidden;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient b {font-size:12px;line-height:1.3;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient small {flex:none;white-space:nowrap;color:var(--v3-muted);font-size:10.5px;line-height:1.3;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-facts {display:flex;align-items:center;flex-wrap:wrap;gap:4px 6px;min-width:0;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-facts :is(.camera-access-permission-achievements,.camera-access-scope-achievements) {gap:3px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-scope-achievements {margin-left:auto;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-card .camera-access-achievement {min-width:20px;min-height:22px;padding:2px 4px;gap:3px;border:1px solid var(--v3-line-strong);border-radius:6px;background:var(--v3-panel);color:var(--v3-text);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-card .camera-access-achievement b {font-size:9px;font-weight:500;max-width:130px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-actions {display:flex;flex-flow:row nowrap;align-items:center;gap:1px;padding-left:4px;border-left:1px solid var(--v3-line);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-actions >button {position:static;display:inline-grid;place-items:center;grid-template-columns:1fr;min-width:32px;max-width:32px;width:32px;min-height:32px;height:32px;padding:0;border:0;border-radius:7px;background:transparent!important;color:var(--v3-text);}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-actions >button:hover:not(:disabled) {background:var(--qs-selected)!important;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-actions >button svg {width:20px;height:20px;}
html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-card-actions >:is(.camera-access-revoke,.camera-access-revoke-direct) {color:var(--v3-error);}
@container(max-width:390px) {
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-grant-card {grid-template-columns:26px minmax(0,1fr) auto;gap:6px;padding:7px 6px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient-avatar {width:26px;height:26px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient {gap:5px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .qs-access-recipient small {font-size:10px;}
 html.qs-v3 body #cameraAccessPanel.camera-access-panel.qs-dock .camera-access-scope-achievements {margin-left:0;}
}

/* Views are plain labelled groups inside the existing preview grid. */
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-block:not([hidden]) {display:grid!important;grid-column:1 / -1;grid-template-columns:repeat(var(--v3-catalog-columns,2),minmax(0,1fr));gap:8px;min-width:0;margin:0;padding:0;border:0;background:transparent;border-radius:0;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-title:not([hidden]) {display:flex!important;grid-column:1 / -1;align-items:center;gap:6px;min-width:0;padding:0;margin:2px 0 0;border:0;background:transparent;font-size:11px;font-weight:500;text-transform:none;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-actions {display:none!important;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-toggle {display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;min-width:0;min-height:28px;padding:3px 0!important;border:0!important;border-radius:0;background:transparent!important;color:var(--v3-muted);font:inherit;text-align:left;box-shadow:none;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-toggle >.camera-object-view-name {min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-transform:none;font-size:11px;font-weight:500;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-toggle >svg {flex:none;width:16px;height:16px;transform:rotate(-90deg);transition:transform .12s ease;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-toggle[aria-expanded="true"] >svg {transform:rotate(0);}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-collapsed >:not(.camera-object-view-title) {display:none!important;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-toggle:focus-visible {outline:2px solid var(--qs-accent);outline-offset:2px;}
@media(max-width:760px){html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-preview-view-toggle {min-height:32px;}}
@media(prefers-reduced-motion:reduce){html.qs-main-layout .qs-preview-view-toggle >svg {transition:none!important;}}

/* Compact native middle-pane screens share preview typography and controls. */
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock >.qs-dock-head {min-height:42px;padding:7px 10px;gap:7px;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock >.qs-dock-head strong {font-size:13px;font-weight:550;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock >.qs-dock-head small {font-size:10px;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock >.qs-dock-head >button {min-height:30px;padding:5px 7px;font-size:11px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-dock-body {padding:10px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-object-menu >button {min-height:42px;padding:9px 6px;font-size:12px;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock .qs-dock-nested {margin:0;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock :is(.camera-object-view-editor,.public-view-editor) {display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:6px;min-width:0;margin:6px 0 0;padding:0;border:0;background:transparent;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock .camera-object-view-editor >input {grid-column:1 / -1;min-height:34px;padding:7px 9px;font-size:12px;}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock .camera-object-view-editor >button {min-height:32px;padding:5px 8px;font-size:11px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-row >.camera-object-view-editor {flex:1 0 100%;width:100%;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-views {gap:12px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-views >p {margin:0;color:var(--v3-muted);font-size:11px;line-height:1.4;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-views >p:empty {display:none;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-views >button {justify-self:start;min-height:32px;padding:5px 9px;font-size:11px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-row {gap:6px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-row >.camera-object-view-name {min-width:0;font-size:12px;font-weight:550;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-row >button {min-height:30px;padding:4px 8px;font-size:11px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-tiles {display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;width:100%;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-camera {gap:4px;padding:0;border:0;border-radius:0;background:transparent;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-preview {height:auto;aspect-ratio:16 / 9;padding:0;border:1px solid var(--v3-line);border-radius:8px;overflow:hidden;background:var(--v3-panel-2);}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-preview[aria-pressed="true"] {border-color:var(--qs-accent);outline:1px solid var(--qs-accent);outline-offset:1px;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-preview >img {display:block;width:100%;height:100%;object-fit:cover;}
html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-view-camera-line .qs-view-camera-name {height:30px;min-height:30px;padding:4px 5px;border-radius:6px;font-size:11px;}
@media(max-width:760px){
 html.qs-v3.qs-main-layout.qs-central-controls body #objectSettingsPanel .qs-dock-body {padding:9px;}
 html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock .camera-object-view-editor >button {min-height:36px;}
}
/* Internal routes keep the original catalogue visible. Objects and Map own
   separate workspaces; permission-hidden camera nodes remain native. */
html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) .v3-catalog-pane:not([hidden]) {display:flex!important;flex-direction:column!important;align-items:stretch;}
html.qs-v3.qs-main-layout.qs-central-controls body .v3-catalog-pane >:is(.grid,.qs-entrance-block) {box-sizing:border-box;width:100%;min-width:0;}
html.qs-v3.qs-main-layout.qs-central-controls body .v3-catalog-pane >.qs-entrance-block {flex:0 0 auto;}
html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) #workspacePanelCameras:not([hidden]) {display:block!important;}
html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) #cameraList:not([hidden]) {display:grid!important;}
@media(min-width:1251px){
 html.qs-v3.qs-main-layout.qs-central-controls body .v3-catalog-pane >.grid {flex:1 1 0;min-height:0!important;height:auto!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) .player-grid.v3-resizable-layout {display:flex!important;flex-direction:row!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .player-grid.v3-resizable-layout >.qs-dock.open {position:relative!important;inset:auto!important;min-height:0!important;height:100%!important;max-height:100%!important;overflow-y:auto!important;overflow-x:hidden!important;}
}
@media(max-width:1250px){
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) .player-grid:has(>.qs-dock.open) {display:grid!important;gap:8px!important;min-height:0!important;overflow:hidden!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .player-grid >.v3-catalog-splitter {display:none!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .player-grid:has(>.qs-dock.open) >.v3-player-pane {display:block!important;min-width:0!important;min-height:0!important;width:100%!important;max-width:none!important;height:100%!important;max-height:100%!important;overflow-y:auto!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .player-grid:has(>.qs-dock.open) >.v3-catalog-pane {min-width:0!important;min-height:0!important;width:100%!important;max-width:none!important;height:100%!important;max-height:100%!important;padding:0!important;margin:0!important;overflow-y:auto!important;overflow-x:hidden!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .v3-catalog-pane >.grid,
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) #workspacePanelCameras {height:auto!important;min-height:0!important;overflow:visible!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .player-grid >.qs-dock.open {position:relative!important;inset:auto!important;width:100%!important;min-width:0!important;max-width:none!important;min-height:0!important;height:100%!important;max-height:100%!important;padding:9px!important;overflow-y:auto!important;overflow-x:hidden!important;}
}
@media(min-width:761px) and (max-width:1250px){
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.qs-map-view):not(.qs-object-picker-open) .player-grid:has(>.qs-dock.open) {grid-template-columns:minmax(0,1.2fr) minmax(0,1fr)!important;grid-template-rows:minmax(0,1fr) minmax(140px,36%)!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open .player-grid:has(>.qs-dock.open) >.v3-player-pane {grid-column:1;grid-row:1 / 3;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open .player-grid >.qs-dock.open {grid-column:2;grid-row:1;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open .player-grid:has(>.qs-dock.open) >.v3-catalog-pane {grid-column:2;grid-row:2;}
}
@media(max-width:760px){
 /* A phone has one active workspace. Returning to cameras restores the
    original player/catalogue owners without changing native permissions. */
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) .player-grid:has(>.qs-dock.open) {grid-template-columns:minmax(0,1fr)!important;grid-template-rows:minmax(0,1fr)!important;gap:0!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open:not(.login-mode):not(.qs-map-view):not(.qs-object-picker-open) .player-grid:has(>.qs-dock.open) >:is(.v3-player-pane,.v3-catalog-pane) {display:none!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open .player-grid >.qs-dock.open {grid-column:1;grid-row:1;margin:0!important;align-self:stretch!important;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open .player-grid >.qs-dock.open >.qs-dock-head {position:sticky;top:0;z-index:2;background:var(--v3-panel);min-height:48px;}
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open .qs-dock >.qs-dock-head >button,
 html.qs-v3.qs-main-layout.qs-central-controls body.qs-dock-open #objectSettingsPanel .qs-object-menu >button {min-height:44px;}
}

.qs-coop-push-settings{position:relative;flex:none;font:inherit;color:inherit}
.qs-coop-push-settings[hidden]{display:none!important}
.qs-coop-push-settings>summary{display:flex;align-items:center;justify-content:center;min-height:32px;padding:0 10px;border:1px solid var(--line,#d5dce5);border-radius:8px;font-size:12px;cursor:pointer;list-style:none;background:var(--panel,var(--v3-panel,#fff));color:inherit}
.qs-coop-push-settings>summary::-webkit-details-marker{display:none}
.qs-coop-push-settings[open]>summary{border-color:var(--accent,#47765c)}
.qs-coop-push-panel{position:absolute;right:0;top:calc(100% + 6px);z-index:35;box-sizing:border-box;width:min(290px,calc(100vw - 32px));padding:12px;border:1px solid var(--line,#d5dce5);border-radius:10px;background:var(--panel,var(--v3-panel,#fff));color:inherit;box-shadow:0 8px 26px #0002;font-size:12px;line-height:1.45}
.qs-coop-push-panel p{margin:8px 0 10px;color:inherit}
.qs-coop-push-panel button{min-height:40px;padding:0 12px;border:1px solid var(--line,#d5dce5);border-radius:8px;background:var(--panel,var(--v3-panel,#fff));color:inherit;font:inherit;cursor:pointer}
.qs-coop-push-panel button+button{margin-left:6px}
.qs-coop-push-panel button:disabled{opacity:.55;cursor:default}
.qs-coop-push-panel button[hidden]{display:none!important}
@media(max-width:760px){.qs-coop-push-settings>summary{min-height:40px}.qs-coop-push-panel{position:fixed;top:84px;right:14px;max-height:calc(100dvh - 104px);overflow:auto}}

/* Mobile surfaces follow the same radius; preview tiles have no color fill. */
@media(max-width:760px) {
 html.qs-v3.qs-main-layout.qs-central-controls body {--ui-radius:10px}
 html.qs-v3.qs-main-layout.qs-central-controls body :is(.v3-catalog-pane,.camera-workspace,#cameraList) {background:transparent!important;border-color:transparent!important;box-shadow:none!important;border-radius:0!important}
 html.qs-v3.qs-main-layout.qs-central-controls body:not(.login-mode) .camera-workspace > .grid > #workspacePanelCameras {background:transparent!important}
 html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button,
 html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button:is(.active,.selected,[aria-selected="true"]) {background:transparent!important;background-color:transparent!important;box-shadow:none!important;border-radius:10px!important}
 html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button .v3-camera-thumb {border-radius:9px!important;background:transparent!important}
 html.qs-v3.qs-main-layout.qs-central-controls body :is(.qs-dock,.qs-object-card,#qsMapWorkspace,.video-wrapper) {border-radius:10px!important}
 html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock :is(button,input,select,textarea),
 html.qs-v3.qs-main-layout.qs-central-controls body #cameraEntranceControls > button[data-entrance] {border-radius:8px!important}
 html.qs-v3.qs-main-layout.qs-central-controls body .qs-main-nav {border-radius:0!important}
 html.qs-v3.qs-main-layout.qs-central-controls body :is(.camera-button,.qs-header-actions button) {touch-action:manipulation}
}
@media(max-width:380px) {
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions > :is(button,#v3ThemeToggle),
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-layout-trigger,
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #accountMenuButton {width:40px!important;min-width:40px!important;max-width:40px;height:40px!important;min-height:40px!important;max-height:40px;padding:9px!important}
 html.qs-v3.qs-main-layout.qs-central-controls body .header #installButton.visible {width:28px;min-width:28px;padding:4px!important}
}

/* Modeless install guidance uses the existing application/map palette. */
#installButton[hidden],#qsPwaInstallOpen[hidden],.qs-pwa-guide[hidden] {display:none!important}
.qs-pwa-guide {
  --pwa-bg:var(--panel,var(--v3-panel,#191919));--pwa-line:var(--line,var(--v3-line,#383838));
  --pwa-text:var(--map-text,var(--v3-text,#f2f2f2));--pwa-muted:var(--muted,var(--v3-muted,#a0a0a0));
  --pwa-accent:var(--accent,var(--qs-accent,#45975f));--pwa-on-accent:var(--map-on-accent,var(--qs-on-accent,#fff));
  position:fixed;z-index:110;top:78px;right:20px;box-sizing:border-box;width:350px;max-width:calc(100vw - 28px);
  max-height:calc(100dvh - 106px);overflow:auto;padding:15px 17px;border:1px solid var(--pwa-line);border-radius:12px;
  background:var(--pwa-bg);color:var(--pwa-text);box-shadow:0 12px 36px #0004;font:12px/1.6 Inter,"Segoe UI",system-ui,sans-serif;
}
html.qs-v3:not(.qs-public-map) .qs-pwa-guide {--pwa-bg:var(--v3-panel);--pwa-line:var(--v3-line);--pwa-text:var(--v3-text);--pwa-muted:var(--v3-muted);--pwa-accent:var(--qs-accent);--pwa-on-accent:var(--qs-on-accent);}
.qs-pwa-guide-heading {display:flex;align-items:center;justify-content:space-between;gap:12px}
.qs-pwa-guide-heading strong {font-size:14px;font-weight:600}
.qs-pwa-guide button.qs-pwa-guide-close {display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;min-width:30px;min-height:30px;margin:0;padding:0;border:1px solid var(--pwa-line);border-radius:8px;background:transparent;color:var(--pwa-muted);font:22px/1 system-ui;box-shadow:none}
.qs-pwa-guide-status {margin:10px 0 0;color:var(--pwa-muted)}
.qs-pwa-guide-steps {margin:10px 0 0;padding-left:19px}
.qs-pwa-guide-steps li + li {margin-top:6px}
.qs-pwa-guide-note {margin:12px 0 0;padding-top:10px;border-top:1px solid var(--pwa-line);color:var(--pwa-muted);font-size:11px}
.qs-pwa-guide-help {display:inline-block;margin-top:10px;color:var(--pwa-accent);text-decoration:underline;text-underline-offset:3px}
.qs-pwa-guide button.qs-pwa-guide-retry {display:flex;align-items:center;justify-content:center;width:100%;min-height:42px;margin:12px 0 0;padding:9px 12px;border:1px solid var(--pwa-line);border-radius:9px;background:var(--pwa-accent);color:var(--pwa-on-accent);font:600 12px/1.4 Inter,"Segoe UI",system-ui,sans-serif}
.qs-pwa-guide [hidden] {display:none!important}
.qs-pwa-guide button:focus-visible {outline:2px solid var(--accent,var(--v3-accent,#45975f));outline-offset:2px}
html.qs-public-map .layers .qs-pwa-map-install {display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:32px;padding:6px 9px;border:1px solid var(--line);border-radius:8px;background:transparent;color:var(--map-text);font-size:11px;white-space:nowrap}
.qs-pwa-map-install .icon {width:15px;height:15px;flex:none}
html.qs-public-map #installButton:disabled {opacity:.6;cursor:default}
@media(max-width:600px) {
  .qs-pwa-guide {top:auto;right:14px;left:14px;bottom:calc(18px + env(safe-area-inset-bottom,0px));width:auto;max-width:none;max-height:calc(100dvh - 110px);padding:13px 15px;font-size:12px}
}

/* Shared select and textual menu presentation. Original controls own behavior. */
html.qs-v3.qs-main-layout.qs-central-controls {
 --qs-select-bg:var(--v3-panel-2);--qs-select-text:var(--v3-text);--qs-select-line:var(--v3-line);
 --qs-select-muted:var(--v3-muted);--qs-select-accent:var(--qs-accent);--qs-select-active:var(--qs-selected);
 --qs-select-error:var(--v3-error);--qs-menu-bg:var(--v3-panel);
}
html.qs-public-map {
 --qs-select-bg:var(--raised);--qs-select-text:var(--map-text);--qs-select-line:var(--line);
 --qs-select-muted:var(--muted);--qs-select-accent:var(--accent);--qs-select-active:var(--map-selected);
 --qs-select-error:#e48f88;--qs-menu-bg:var(--panel);
}
html.qs-v3.qs-main-layout.qs-central-controls body select:not([multiple]):is(:not([size]),[size="1"]),
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select:not([multiple]):is(:not([size]),[size="1"]) {
 box-sizing:border-box!important;appearance:none!important;-webkit-appearance:none!important;
 min-width:0;min-height:40px!important;height:auto;
 padding:9px 36px 9px 12px!important;border:1px solid var(--qs-select-line)!important;border-radius:8px!important;
 background-color:var(--qs-select-bg)!important;color:var(--qs-select-text)!important;
 background-image:linear-gradient(45deg,transparent 50%,var(--qs-select-muted) 50%),linear-gradient(135deg,var(--qs-select-muted) 50%,transparent 50%)!important;
 background-position:calc(100% - 16px) 50%,calc(100% - 11px) 50%!important;
 background-size:5px 5px,5px 5px!important;background-repeat:no-repeat!important;
 font-family:inherit!important;font-size:13px!important;font-weight:400!important;line-height:1.4!important;
 text-overflow:ellipsis;box-shadow:none!important;cursor:pointer;vertical-align:middle;
}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-main-controls select:not([multiple]):is(:not([size]),[size="1"]),
html.qs-v3.qs-main-layout.qs-central-controls body .day-row select:not([multiple]):is(:not([size]),[size="1"]),
html.qs-v3.qs-main-layout.qs-central-controls body .qs-main-object-select,
html.qs-public-map body #player select:not([multiple]):is(:not([size]),[size="1"]),
html.qs-public-map body .qs-coop-panel .qs-coop-history-row select {
 min-height:32px!important;height:32px!important;padding:5px 30px 5px 10px!important;font-size:12px!important;
 border-radius:7px!important;background-position:calc(100% - 13px) 50%,calc(100% - 8px) 50%!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-main-controls :is(#speedSelect,.v3-wall-select) {min-width:66px}
html.qs-public-map body #player #speed {width:72px;min-width:72px}
html.qs-v3.qs-main-layout.qs-central-controls body select option,
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select option {
 padding:8px 12px;background:var(--qs-menu-bg);color:var(--qs-select-text);font:inherit;line-height:1.5;
}
html.qs-v3.qs-main-layout.qs-central-controls body select option:checked,
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select option:checked {background:var(--qs-select-active);color:var(--qs-select-text)}
html.qs-v3.qs-main-layout.qs-central-controls body select option:disabled,
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select option:disabled {color:var(--qs-select-muted)}
html.qs-v3.qs-main-layout.qs-central-controls body select:not([multiple]):is(:not([size]),[size="1"]):not(:disabled):hover:not(:focus-visible):not([aria-invalid="true"]),
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select:not([multiple]):is(:not([size]),[size="1"]):not(:disabled):hover:not(:focus-visible):not([aria-invalid="true"]) {border-color:var(--qs-select-muted)!important}
html.qs-v3.qs-main-layout.qs-central-controls body select:not([multiple]):is(:not([size]),[size="1"]):focus-visible,
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select:not([multiple]):is(:not([size]),[size="1"]):focus-visible {
 outline:2px solid var(--qs-select-accent)!important;outline-offset:2px;border-color:var(--qs-select-accent)!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body select:disabled,
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select:disabled {opacity:.55!important;cursor:not-allowed!important}
html.qs-v3.qs-main-layout.qs-central-controls body .qs-dock select:not([multiple]):is(:not([size]),[size="1"])[aria-invalid="true"],
html.qs-v3.qs-main-layout.qs-central-controls body select:not([multiple]):is(:not([size]),[size="1"])[aria-invalid="true"],
html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select:not([multiple]):is(:not([size]),[size="1"])[aria-invalid="true"] {border-color:var(--qs-select-error)!important}

/* Text menus keep their native anchoring, available actions and close logic. */
html.qs-v3.qs-main-layout.qs-central-controls body .v3-settings-menu,
html.qs-v3.qs-main-layout.qs-central-controls body #qsCapabilityMenu {
 box-sizing:border-box;padding:8px!important;border:1px solid var(--qs-select-line)!important;border-radius:10px!important;
 background:var(--qs-menu-bg)!important;color:var(--qs-select-text)!important;
 box-shadow:0 8px 24px #0003!important;max-width:calc(100vw - 24px);scrollbar-width:thin;scrollbar-color:var(--qs-select-line) transparent;
}
html.qs-v3.qs-main-layout.qs-central-controls body .v3-settings-menu > label {
 display:flex;align-items:center;gap:9px;min-height:36px;margin:0;padding:7px 9px;border-radius:7px;font-size:12px;line-height:1.4;
}
html.qs-v3.qs-main-layout.qs-central-controls body .v3-settings-menu > label:hover {background:var(--qs-select-active)}
html.qs-v3.qs-main-layout.qs-central-controls body .v3-settings-menu > label :is(input,select) {min-width:0;max-width:100%}
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #qsCapabilityMenu .qs-capability-menu-actions > button {
 box-sizing:border-box;display:grid!important;grid-template-columns:18px minmax(0,1fr);align-items:center!important;justify-content:stretch!important;
 width:100%!important;max-width:100%!important;min-width:0!important;min-height:38px!important;height:auto!important;padding:9px 10px!important;
 border-radius:7px!important;gap:10px!important;font-size:12px!important;line-height:1.4;white-space:normal;text-align:left;
}
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #qsCapabilityMenu .qs-capability-menu-actions > button > .icon {width:18px!important;height:18px!important;min-width:18px!important}
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #qsCapabilityMenu .qs-capability-menu-actions > button > span {min-width:0;text-align:left;overflow-wrap:break-word}
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #qsCapabilityMenu .qs-capability-menu-actions > button:hover:not(:disabled) {background:var(--qs-select-active)!important}
@media(max-width:760px) {
 html.qs-v3.qs-main-layout.qs-central-controls body select:not([multiple]):is(:not([size]),[size="1"]),
 html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select:not([multiple]):is(:not([size]),[size="1"]) {
  min-height:44px!important;height:auto!important;font-size:16px!important;padding:10px 36px 10px 12px!important;
 }
 html.qs-v3.qs-main-layout.qs-central-controls body .qs-main-controls select:not([multiple]):is(:not([size]),[size="1"]),
 html.qs-v3.qs-main-layout.qs-central-controls body .day-row select:not([multiple]):is(:not([size]),[size="1"]),
 html.qs-public-map body #player select:not([multiple]):is(:not([size]),[size="1"]) {
  min-height:36px!important;height:36px!important;padding:5px 30px 5px 8px!important;font-size:16px!important;
 }
 html.qs-v3.qs-main-layout.qs-central-controls body .v3-settings-menu > label,
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #qsCapabilityMenu .qs-capability-menu-actions > button {min-height:44px!important;padding:10px!important;font-size:14px!important}
}
@media(forced-colors:active) {
 html.qs-v3.qs-main-layout.qs-central-controls body select,
 html.qs-public-map body :where(#player,.qs-coop-panel,.qs-coop-operator) select {appearance:auto!important;-webkit-appearance:auto!important;background-image:none!important;color:CanvasText!important;background-color:Canvas!important}
}

/* Corner indicators preserve every existing button's tap area and handler. */
:is(#qsCooperationHubOpen,#qsCoopHub-mine,#qsCoopHub-crm,#qsCooperationInboxOpen,#qsCoop-tab-thread) {position:relative;overflow:visible;}
.qs-coop-unread-badge {
  position:absolute;top:-4px;right:-4px;display:inline-flex;align-items:center;justify-content:center;
  min-width:17px;height:17px;padding:0 4px;border-radius:10px;
  background:var(--qs-cooperation-unread,#c93644);color:#fff;
  font:600 10px/1 Inter,"Segoe UI",system-ui,sans-serif;white-space:nowrap;pointer-events:none;
}
.qs-coop-unread-badge[hidden] {display:none!important;}
#qsCooperationInboxOpen .qs-coop-unread-badge {top:8px;right:9px;}
@media(max-width:760px) {
  #qsCoopHub-mine .qs-coop-unread-badge,#qsCoopHub-crm .qs-coop-unread-badge {top:0;right:1px;}
}

/* Login uses the existing logo, theme and PWA controls within one auth frame. */
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode {
  --qs-login-inset:24px;
  margin:0!important;padding:0!important;overflow-x:hidden;overflow-y:auto!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode :is(.app,.header,#loginPanel) {box-sizing:border-box!important;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .shell {
  display:grid!important;place-items:center;padding:var(--qs-login-inset)!important;
  min-height:100dvh;height:auto!important;overflow:visible!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .app {
  display:flex!important;flex-direction:column;align-items:center;justify-content:center;
  width:min(420px,100%)!important;max-width:100%!important;
  height:auto!important;min-height:calc(100dvh - var(--qs-login-inset) - var(--qs-login-inset));
  max-height:none!important;gap:0!important;margin:0 auto!important;padding:0!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header {
  display:grid!important;grid-template-columns:minmax(0,1fr) 44px;grid-template-rows:auto;grid-auto-rows:auto;
  align-items:center;align-content:start;column-gap:12px!important;row-gap:12px!important;
  flex:none;width:100%;height:auto!important;min-height:0!important;max-height:none!important;
  margin:0!important;padding:18px 22px 12px!important;
  border:1px solid var(--v3-line)!important;border-bottom:0!important;border-radius:20px 20px 0 0!important;
  background:var(--v3-panel)!important;color:var(--v3-text);box-shadow:none!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header :is(.title-row,.header-right,.qs-header-actions,#accountControls) {
  display:contents!important;
}
/* Only the three existing login controls participate in the header grid. */
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header > :not(.title-row):not(.header-right),
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header .title-row > :not(#brandReloadButton):not(#installButton),
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header .header-right > :not(.qs-header-actions):not(#accountControls):not(#v3ThemeToggle),
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header .qs-header-actions > :not(#v3ThemeToggle),
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #accountControls > :not(#v3ThemeToggle),
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .qs-main-nav {
  display:none!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #brandReloadButton {
  grid-column:1;grid-row:1;justify-self:start;display:inline-flex;align-items:center;justify-content:flex-start;
  flex:none!important;gap:9px!important;min-width:0;min-height:44px;padding:0!important;margin:0;
  border:0!important;border-radius:0;background:transparent!important;color:var(--v3-text)!important;
  font-size:18px!important;font-weight:600!important;line-height:1.3;letter-spacing:-.45px;white-space:nowrap;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #brandReloadButton::before {
  content:'';width:32px;height:32px;flex:none;border:0!important;border-radius:8px;
  background:transparent url('/icon.svg?v=texopeka-logo-r9') center/contain no-repeat!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #v3ThemeToggle {
  grid-column:2;grid-row:1;justify-self:end;align-items:center;justify-content:center;
  flex:none;width:44px!important;min-width:44px!important;max-width:44px;
  height:44px!important;min-height:44px!important;max-height:44px;padding:10px!important;
  border:1px solid var(--v3-line)!important;border-radius:11px!important;
  background:var(--v3-panel-2)!important;color:var(--v3-muted)!important;box-shadow:none!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #v3ThemeToggle:not([hidden]) {display:inline-flex!important;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #v3ThemeToggle svg {width:20px;height:20px;flex:none;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #v3ThemeToggle span {display:none!important;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #installButton.visible:not([hidden]) {
  grid-column:1 / -1;grid-row:2;display:inline-flex!important;align-items:center;justify-content:center;gap:8px;
  width:100%!important;min-width:0!important;max-width:none!important;
  height:auto!important;min-height:42px!important;margin:0;padding:10px 12px!important;
  border:1px solid var(--v3-line)!important;border-radius:10px!important;
  background:var(--v3-panel-2)!important;color:var(--v3-text)!important;box-shadow:none!important;
  font:inherit;font-size:12px!important;font-weight:500;line-height:1.4;white-space:normal;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #installButton:not(.visible),
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #installButton[hidden] {display:none!important;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #installButton span {display:inline!important;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header #installButton .icon {width:17px;height:17px;flex:none;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header :is(#brandReloadButton,#v3ThemeToggle,#installButton):focus-visible {
  outline:2px solid var(--qs-accent);outline-offset:3px;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode .header :is(#v3ThemeToggle,#installButton):hover:not(:disabled) {
  color:var(--qs-accent)!important;background:var(--qs-selected)!important;border-color:var(--qs-accent)!important;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode #loginPanel {
  flex:none;width:100%;max-width:100%;margin:0;
  border-top:0!important;border-radius:0 0 20px 20px;
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode #loginPanel .login-heading {display:none;}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode #loginPanel .phone-prefix {
  border-color:var(--v3-line);border-radius:10px 0 0 10px;
  background:var(--v3-panel-2);color:var(--v3-text);
}
html.qs-v3.qs-main-layout.qs-central-controls body.login-mode #loginPanel .phone-input-wrap input {border-radius:0 10px 10px 0;}
@media(max-width:760px) {
  html.qs-v3.qs-main-layout.qs-central-controls body.login-mode {--qs-login-inset:14px;}
}

/* Original camera / object controls retain their nodes and callbacks. */
html.qs-v3 .camera-button,html.qs-v3 .qs-object-card { position:relative; }
html.qs-v3 .qs-favorite-star { display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;padding:7px;border:0;border-radius:8px;background:rgba(10,18,27,.26);color:#e4edf5;cursor:pointer;touch-action:manipulation;flex:none;box-sizing:border-box; }
html.qs-v3 .camera-button > .qs-favorite-star,html.qs-v3 .qs-object-card > .qs-favorite-star { position:absolute;top:6px;left:6px;z-index:4; }
html.qs-v3 .camera-device-title > .qs-favorite-star { margin-right:6px;align-self:flex-start; }
html.qs-v3 .qs-favorite-star svg,html.qs-v3 .qs-favorite-player svg { width:20px;height:20px;pointer-events:none; }
html.qs-v3 .qs-favorite-active { color:#f5c95d; }
html.qs-v3 .qs-favorite-active svg { fill:currentColor; }
html.qs-v3 .qs-favorite-star:focus-visible,html.qs-v3 .qs-favorite-player:focus-visible { outline:2px solid #69b8ff;outline-offset:2px; }
html.qs-v3 .qs-favorite-star[aria-disabled="true"] { opacity:.45;cursor:default; }
html.qs-theme-light .qs-favorite-star { background:rgba(255,255,255,.38);color:#263a4c; }
html.qs-theme-light .qs-favorite-active { color:#9b6900; }
@media(pointer:coarse) { html.qs-v3 .qs-favorite-star { width:44px;height:44px; } }

/* One native form, attached to its map point. No cloned controls. */
html.qs-v3 #qsEquipmentMapPanel[hidden]{display:none!important}
html.qs-v3 #qsEquipmentMapPanel{position:fixed;z-index:68;box-sizing:border-box;background:var(--v3-panel,#142131);color:var(--v3-text,#e6edf3);border-radius:12px;box-shadow:0 8px 32px #0005;overflow:hidden;isolation:isolate}
html.qs-v3 #qsEquipmentMapPanel>.qs-dock.open{display:block!important;position:relative!important;z-index:1!important;inset:auto!important;width:100%!important;min-width:0!important;max-width:none!important;height:100%!important;max-height:100%!important;margin:0!important;padding:8px!important;border:0!important;border-radius:0!important;box-sizing:border-box;overflow-y:auto!important;overflow-x:hidden!important}
html.qs-v3 #qsEquipmentMapPanel .qs-dock-head{position:sticky;top:-8px;background:var(--v3-panel,#142131);z-index:3;padding-right:34px;min-height:42px;gap:6px}
html.qs-v3 #qsEquipmentMapPanel .qs-dock-head small{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.qs-v3 #qsEquipmentMapPanel .qs-equipment-map-link{position:absolute;right:5px;top:5px;z-index:5;width:34px;height:34px;padding:0;border:0;background:transparent;color:inherit;font-size:24px;border-radius:8px}
html.qs-v3 #qsEquipmentMapPanel input,html.qs-v3 #qsEquipmentMapPanel select{max-width:100%;min-width:0;box-sizing:border-box}
@media(max-width:760px){html.qs-v3 #qsEquipmentMapPanel{border-radius:10px}html.qs-v3 #qsEquipmentMapPanel .device-admin-toolbar,html.qs-v3 #qsEquipmentMapPanel .device-admin-actions{gap:4px;flex-wrap:wrap}html.qs-v3 #qsEquipmentMapPanel .qs-dock-head button{min-height:40px}html.qs-v3 #qsEquipmentMapPanel .device-admin-grid{grid-template-columns:minmax(0,1fr)}}
html.qs-v3 #qsEquipmentMapPanel .qs-equipment-map-link svg{width:20px;height:20px}
html.qs-v3 #qsEquipmentMapPanel .qs-dock-head{padding-right:76px}
html.qs-v3 #qsEquipmentMapPanel[data-window-kind="account"] .qs-dock-head{padding-right:38px}
html.qs-v3 #qsEquipmentMapPanel :is(.qs-map-window-move,.qs-map-window-resize){position:absolute;z-index:6;display:grid;place-items:center;width:34px;min-width:34px;height:34px;min-height:34px;padding:6px!important;border:0!important;background:transparent!important;color:var(--v3-muted)!important;border-radius:8px;touch-action:none}
html.qs-v3 #qsEquipmentMapPanel .qs-map-window-move{top:5px;right:39px;cursor:move}
html.qs-v3 #qsEquipmentMapPanel[data-window-kind="account"] .qs-map-window-move{right:5px}
html.qs-v3 #qsEquipmentMapPanel .qs-map-window-resize{bottom:0;right:0;cursor:nwse-resize;background:var(--v3-panel)!important}
html.qs-v3 #qsEquipmentMapPanel :is(.qs-map-window-move,.qs-map-window-resize) svg{width:20px;height:20px;pointer-events:none}
html.qs-v3 #qsEquipmentMapPanel :is(.qs-map-window-move,.qs-map-window-resize):focus-visible{outline:2px solid var(--qs-accent);outline-offset:-3px}
html.qs-v3 #qsEquipmentMapPanel>.qs-dock.open{padding-bottom:36px!important}
html.qs-v3 #qsEquipmentMapPanel .qs-equipment-map-link[hidden]{display:none!important}
html.qs-v3 #qsEquipmentMapPanel #accountMenu{position:static!important;inset:auto!important;width:100%!important;max-width:none!important;box-shadow:none!important;border:0!important;background:transparent!important;box-sizing:border-box}
/* The retained equipment form uses the popup width, including on desktop. */
html.qs-v3 #qsEquipmentMapPanel .qs-dock{container-type:inline-size;container-name:equipment-pane}
@container equipment-pane (max-width:480px){
 html.qs-v3 #qsEquipmentMapPanel .v3-commissioning-fields{grid-template-columns:repeat(2,minmax(0,1fr))!important}
 html.qs-v3 #qsEquipmentMapPanel .v3-device-result{display:grid!important;grid-template-columns:72px minmax(0,1fr)!important;gap:6px!important;min-width:0!important}
 html.qs-v3 #qsEquipmentMapPanel .v3-device-result.without-preview{grid-template-columns:minmax(0,1fr)!important}
 html.qs-v3 #qsEquipmentMapPanel .v3-device-result>span{min-width:0!important;overflow-wrap:anywhere}
 html.qs-v3 #qsEquipmentMapPanel .v3-device-result-actions{grid-column:1 / -1;display:flex!important;flex-wrap:wrap!important;max-width:100%!important}
 html.qs-v3 #qsEquipmentMapPanel .v3-device-preview{width:72px!important;min-width:0!important;max-width:100%!important}
 html.qs-v3 #qsEquipmentMapPanel :is(.v3-commissioning-section-bar,.v3-device-discovery-actions,.v3-device-edge-summary){flex-wrap:wrap!important;min-width:0!important}
 html.qs-v3 #qsEquipmentMapPanel .v3-commissioning-stack{grid-template-columns:minmax(0,1fr)!important;min-width:0!important}
}
@container equipment-pane (max-width:340px){html.qs-v3 #qsEquipmentMapPanel .v3-commissioning-fields{grid-template-columns:minmax(0,1fr)!important}}

/* Fault counts keep the established internal button geometry. */
.qs-has-equipment-fault{position:relative}.qs-equipment-fault-badge{display:inline-grid;place-items:center;box-sizing:border-box;min-width:17px;height:17px;padding:0 4px;margin-left:6px;border-radius:10px;background:#d93849;color:#fff;font:600 10px/1 system-ui,sans-serif;vertical-align:middle;flex:none}
#qsNotificationsOpen>.qs-equipment-fault-badge{position:absolute;right:0;top:0;margin:0}#qsNotificationsOpen[data-active-call="1"]>.qs-equipment-fault-badge{top:auto;bottom:0}
.qs-equipment-fault-row{position:relative;box-shadow:inset 3px 0 #d93849!important}.qs-equipment-fault-status{display:block;align-self:start;color:var(--v3-danger,#df5261);font-size:11px;line-height:1.3}.qs-equipment-fault-target{outline:2px solid #d93849;outline-offset:-2px}
.qs-equipment-notices{margin-top:10px;padding-top:8px;border-top:1px solid var(--v3-line,#ffffff24)}.qs-equipment-notices[hidden]{display:none}.qs-equipment-notices-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.qs-equipment-notices-read{font-size:11px!important;min-height:26px!important;padding:3px 6px!important;border:0!important;background:transparent!important;color:var(--v3-muted,#909da8)!important}
.qs-equipment-notices-list{display:grid;gap:3px;max-height:min(360px,55dvh);overflow:auto;scrollbar-width:none}.qs-equipment-notices-list::-webkit-scrollbar{display:none}
#qsNotificationsPanel .qs-equipment-notice{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;width:100%;padding:8px 6px;min-height:48px;border:0;border-radius:7px;text-align:left;background:transparent;color:inherit;font:12px/1.35 system-ui,sans-serif}.qs-equipment-notice strong{grid-column:1/-1;font-size:12px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.qs-equipment-notice>span{color:var(--v3-danger,#df5261)}.qs-equipment-notice time{font-size:10px;opacity:.6}.qs-equipment-notice.is-unread{background:#d9384912!important}.qs-equipment-notice.is-resolved>span{color:var(--v3-muted,#909da8)}
@media(max-width:760px){#qsNotificationsPanel{max-width:calc(100vw - 16px)!important}.qs-equipment-notices-list{max-height:50dvh}}

html.qs-v3 #qsNotificationsPanel .qs-equipment-notice{display:grid!important;grid-template-columns:minmax(0,1fr) auto!important;align-items:start!important;justify-content:stretch!important;width:100%!important;min-width:0!important;max-width:none!important;height:auto!important;min-height:54px!important;padding:9px 6px!important;border:0!important;color:var(--v3-text,#e6edf3)!important;white-space:normal!important}
html.qs-v3 #qsNotificationsPanel .qs-equipment-notice.is-unread{background:#d9384912!important}html.qs-v3 #qsNotificationsPanel .qs-equipment-notice strong{min-width:0;font-size:12px!important;text-align:left}html.qs-v3 #qsNotificationsPanel .qs-equipment-notice>span{min-width:0;text-align:left}
html.qs-v3 #qsNotificationsPanel .qs-equipment-notices-read{width:auto!important;min-width:0!important;height:auto!important;min-height:28px!important;padding:3px 6px!important;border:0!important;white-space:nowrap}
.qs-equipment-notices-list{min-width:0}.qs-equipment-notices{min-width:0}
html.qs-v3 .qs-equipment-fault-status{position:absolute;left:6px;right:auto;top:6px;pointer-events:none;display:grid;place-items:center;width:17px;height:17px;border-radius:50%;background:#d93849;color:#fff;font:700 11px/1 system-ui,sans-serif}

html.qs-v3 .qs-equipment-fault-badge{width:max-content!important;min-width:17px!important;max-width:max-content!important;flex:0 0 auto!important;justify-self:end}

/* The existing player and FoV form stay together in one movable map window. */
html.qs-v3 #qsNativeCameraMapPanel[hidden]{display:none!important}
html.qs-v3 #qsNativeCameraMapPanel{position:fixed;left:24px;top:100px;z-index:66;width:380px;box-sizing:border-box;padding:0;border:1px solid var(--v3-border,#436046);border-radius:12px;background:var(--v3-panel,#142131);color:var(--v3-text,#e6edf3);box-shadow:0 8px 32px #0005;overflow:auto;overscroll-behavior:contain;isolation:isolate}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head{position:absolute;left:0;top:0;width:100%;box-sizing:border-box;z-index:5;display:flex;align-items:center;gap:6px;min-height:38px;padding:5px 7px;margin:0;border-radius:12px 12px 0 0;background:linear-gradient(#0009,#0000);color:#fff;cursor:grab;touch-action:none;user-select:none}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head:active{cursor:grabbing}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-title{flex:1;min-width:0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button{flex:none;width:30px;height:30px;padding:4px;border:0;border-radius:8px;background:#0006;color:#fff;cursor:pointer;font-size:22px;line-height:1}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button:hover{background:#0009}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-preview{overflow:hidden;border-radius:12px;background:#080b0e;aspect-ratio:16/9}
html.qs-v3 body.qs-map-view #qsNativeCameraMapPanel .video-wrapper{display:block!important;position:relative!important;inset:auto!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;aspect-ratio:16/9!important;margin:0!important;border:0!important;border-radius:12px!important;background:#080b0e!important;box-shadow:none!important}
html.qs-v3 #qsNativeCameraMapPanel .video-wrapper video{width:100%;height:100%;object-fit:contain}
html.qs-v3 #qsNativeCameraMapPanel .qs-main-camera-caption{display:none!important}


/* Resize the retained player window, never the camera's geographic placement. */
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-resize{position:absolute;right:1px;bottom:1px;z-index:7;display:grid;place-items:center;width:24px;height:24px;padding:2px;border:0;border-radius:6px;background:#0006;color:#fff;cursor:nwse-resize;touch-action:none;user-select:none}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-resize svg{width:20px;height:20px;pointer-events:none}
html.qs-v3 #qsNativeCameraMapPanel[data-resized="true"]{display:flex;flex-direction:column;overflow:hidden}
html.qs-v3 #qsNativeCameraMapPanel[data-resized="true"] .qs-native-camera-map-preview{flex:1 1 auto;min-height:96px;aspect-ratio:auto}
html.qs-v3 body.qs-map-view #qsNativeCameraMapPanel[data-resized="true"] .video-wrapper{aspect-ratio:auto!important}

/* The original timeline is retained below the map video, with compact touch controls. */
html.qs-v3 #qsNativeCameraMapPanel{display:flex;flex-direction:column}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-preview{order:1;flex-shrink:0}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-archive{order:2;flex:none;min-width:0;padding:6px 8px 8px;border-top:1px solid var(--v3-border,#436046);background:var(--v3-panel,#142131)}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-archive[hidden],html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button[hidden]{display:none!important}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-archive-toggle{order:1}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button[aria-label="Закрыть камеру"]{order:3}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-archive-toggle svg{display:block;width:20px;height:20px}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-archive-toggle[aria-expanded="true"]{background:#ffffff38}
html.qs-v3 #qsNativeCameraMapPanel #timelineDock{width:100%!important;min-width:0!important;margin:0!important;padding:0!important}
html.qs-v3 #qsNativeCameraMapPanel #videoOverlay{position:relative!important;inset:auto!important;width:100%!important;box-sizing:border-box;opacity:1!important;visibility:visible!important;gap:2px!important;padding:0!important;transform:none!important}
html.qs-v3 #qsNativeCameraMapPanel #videoOverlay .overlay-row{min-width:0;margin:0!important}
html.qs-v3 #qsNativeCameraMapPanel #timelineDay{height:36px!important;min-height:36px!important;touch-action:none}
html.qs-v3 #qsNativeCameraMapPanel #timelineDayLabels{min-height:12px!important;line-height:12px;font-size:9px}
html.qs-v3 #qsNativeCameraMapPanel #videoOverlay .day-row{flex-wrap:nowrap!important;gap:4px!important;justify-content:flex-start!important}
html.qs-v3 #qsNativeCameraMapPanel #dayPicker{display:flex!important;min-width:0!important;flex:1 1 auto!important;gap:2px!important}
html.qs-v3 #qsNativeCameraMapPanel #dayPicker .day-select{min-width:0;flex:1}
html.qs-v3 #qsNativeCameraMapPanel #videoOverlay .day-row :is(button,select){height:32px!important;min-height:32px!important;padding:3px 5px!important;font-size:11px!important}
html.qs-v3 #qsNativeCameraMapPanel :is(#dayPrevButton,#dayNextButton,#playbackPauseButton){flex:none;width:32px!important;min-width:32px!important}
html.qs-v3 #qsNativeCameraMapPanel #dayButton{width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
html.qs-v3 #qsNativeCameraMapPanel #playbackPauseButton{order:-1}
html.qs-v3 #qsNativeCameraMapPanel .day-row .v3-speed-control{flex:0 0 48px!important;margin:0!important;width:48px!important;min-width:0!important;max-width:48px!important}
html.qs-v3 #qsNativeCameraMapPanel .day-row .v3-speed-control-icon{display:none!important}
html.qs-v3 #qsNativeCameraMapPanel #speedSelect{flex:0 0 48px!important;width:48px!important;min-width:0!important;max-width:48px!important;padding-right:16px!important;background-position:calc(100% - 9px) 50%,calc(100% - 4px) 50%!important}
html.qs-v3 #qsNativeCameraMapPanel #videoOverlay .status-line{min-height:20px!important;flex-wrap:nowrap!important;gap:4px!important}
html.qs-v3 #qsNativeCameraMapPanel #seekLabel{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.qs-v3 #qsNativeCameraMapPanel :is(#timelineScaleLabel,#timelineHint,#timelineEventDescription,.door-call-action-slot){display:none!important}
html.qs-v3 #qsNativeCameraMapPanel #liveBadge{flex:none;min-height:28px!important;padding:3px 4px!important}
html.qs-v3 #qsNativeCameraMapPanel #archiveCalendarPopover{box-sizing:border-box;max-width:calc(100vw - 24px);padding:8px;border-radius:10px;background:var(--v3-panel,#142131)}
html.qs-v3 #qsNativeCameraMapPanel #timelinePreview{max-width:150px}
html.qs-v3 #qsNativeCameraMapPanel[data-resized="true"] .qs-native-camera-map-archive{flex:0 0 auto}
html.qs-v3 #qsNativeCameraMapPanel #videoOverlay #dayButton{min-width:0!important;max-width:100%!important;box-sizing:border-box;font-size:10px!important;padding-inline:3px!important;letter-spacing:0!important}

/* Video overlay icons keep an explicit contrast surface in both page themes. */
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button,
html.qs-v3.qs-theme-light #qsNativeCameraMapPanel .qs-native-camera-map-head button{display:grid;place-items:center;background:rgba(10,17,24,.78)!important;color:#fff!important;-webkit-text-fill-color:#fff;border:1px solid #ffffff4d!important;box-shadow:0 1px 4px #0005!important;opacity:1!important}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button:hover{background:rgba(10,17,24,.95)!important}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button:focus-visible{outline:2px solid #fff;outline-offset:2px}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button svg{stroke:#fff!important;fill:none!important;opacity:1!important}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head{color:#fff!important;text-shadow:0 1px 3px #000a}
/* Direct map handles own editing; the original form remains at home. */
html.qs-v3 body.qs-map-view #cameraMapAdminEditor{display:none!important}

html.qs-v3 #qsNativeCameraMapPanel{scrollbar-width:none}html.qs-v3 #qsNativeCameraMapPanel::-webkit-scrollbar{display:none}

html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-back{order:-1}html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-fullscreen{order:2}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button:is([aria-expanded="true"],[aria-pressed="true"]){background:#287d61!important;border-color:#a2edd0!important}
html.qs-v3 #qsNativeCameraMapPanel:is(:fullscreen,.qs-map-video-expanded){position:fixed!important;inset:0!important;left:0!important;top:0!important;width:100vw!important;height:100dvh!important;max-width:none!important;max-height:none!important;border:0!important;border-radius:0!important;background:#080b0e;z-index:9999}
html.qs-v3 #qsNativeCameraMapPanel:is(:fullscreen,.qs-map-video-expanded) .qs-native-camera-map-preview{flex:1;min-height:0;aspect-ratio:auto}
html.qs-v3 #qsNativeCameraMapPanel:is(:fullscreen,.qs-map-video-expanded) .video-wrapper{aspect-ratio:auto!important;border-radius:0!important}
html.qs-v3 #qsNativeCameraMapPanel:is(:fullscreen,.qs-map-video-expanded) .qs-native-camera-map-resize{display:none}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-head button svg{width:20px;height:20px}

/* The retained native player overlays its exact card in the child gallery. */
html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player{border:0;box-shadow:none;overflow:hidden;max-width:none;min-height:0;touch-action:pan-y}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player .qs-native-camera-map-preview{flex:1 1 auto;min-height:0;aspect-ratio:auto;width:100%}
html.qs-v3 body.qs-map-view #qsNativeCameraMapPanel.qs-map-inline-player .video-wrapper{aspect-ratio:auto!important}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player .qs-native-camera-map-head{cursor:default;touch-action:pan-y}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player .qs-native-camera-map-resize{display:grid!important}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-quality{order:1;font:600 11px/1 system-ui}
html.qs-v3 #qsNativeCameraMapPanel:is(:fullscreen,.qs-map-video-expanded){clip-path:none!important;visibility:visible!important}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player:is(:fullscreen,.qs-map-video-expanded) .qs-native-camera-map-preview{flex:1;aspect-ratio:auto}

html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player .qs-native-camera-map-head{cursor:grab}

html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player .qs-native-camera-map-head{touch-action:none}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-inline-player:is(:fullscreen,.qs-map-video-expanded) .qs-native-camera-map-resize{display:none!important}

html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-gallery-close{order:4}

/* The same native calendar escapes card clipping while retaining viewport positioning. */
html.qs-v3 #archiveCalendarPopover.qs-map-archive-calendar-portal{position:fixed;z-index:80;box-sizing:border-box;max-width:calc(100vw - 24px);padding:8px;border-radius:10px;background:var(--v3-panel,#142131);color:var(--v3-text,#e6edf3)}
html.qs-v3 #archiveCalendarPopover.qs-map-archive-calendar-portal[hidden]{display:none!important}

/* Fullscreen gallery retains the original iframe beside the native decoder.
   The child stage rectangle reserves its own bottom preview carousel. */
html.qs-v3.qs-main-layout.qs-central-controls body #appPanel.qs-map-gallery-expanded-root{position:fixed!important;inset:0!important;width:100vw!important;height:100dvh!important;max-width:none!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;overflow:hidden!important;z-index:9998!important;background:#080b0e!important}
html.qs-v3 #appPanel.qs-map-gallery-expanded-root >.header{display:none!important}
html.qs-v3 #appPanel.qs-map-gallery-expanded-root #qsMapWorkspace{position:fixed!important;inset:0!important;width:100%!important;height:100%!important;max-height:none!important;margin:0!important;padding:0!important;border:0!important;border-radius:0!important;z-index:1!important}
html.qs-v3 #appPanel.qs-map-gallery-expanded-root #qsMapWorkspace iframe{display:block!important;width:100%!important;height:100%!important;min-height:0!important;max-height:none!important;border:0!important;border-radius:0!important}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-gallery-expanded{z-index:66;border-radius:0;clip-path:none!important;overflow:visible;box-shadow:none}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-gallery-expanded .qs-native-camera-map-preview{flex:1 1 auto;min-height:0;aspect-ratio:auto;border-radius:0}
html.qs-v3 body.qs-map-view #qsNativeCameraMapPanel.qs-map-gallery-expanded .video-wrapper{aspect-ratio:auto!important;border-radius:0!important}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-gallery-expanded .qs-native-camera-map-resize{display:none!important}
html.qs-v3 #qsNativeCameraMapPanel.qs-map-gallery-expanded .qs-native-camera-map-head{cursor:default;touch-action:pan-y}

/* Keep an opaque, stable player surface while a gallery decoder switches. */
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-preview{position:relative}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-waiting{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:#080b0e;color:#e6edf3;font-size:13px;pointer-events:none}
html.qs-v3 #qsNativeCameraMapPanel .qs-native-camera-map-waiting[hidden]{display:none!important}

html.qs-central-controls .qs-header-account-shortcuts { display:flex; align-items:center; gap:inherit; flex:none; }
html.qs-central-controls .qs-header-account-shortcuts[hidden] { display:none!important; }
html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #qsHeaderAdminMode[aria-pressed="true"] { color:var(--qs-accent)!important; background:var(--qs-selected)!important; }
html.qs-central-controls .qs-header-account-shortcut:focus-visible { outline:2px solid var(--qs-accent); outline-offset:2px; }
@media(max-width:760px) {
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-account-shortcuts > button { width:40px!important; min-width:40px!important; max-width:40px; height:44px!important; min-height:44px!important; padding:9px!important; }
}
@media(max-width:380px) {
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions > :is(button,#v3ThemeToggle),
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions .qs-layout-trigger,
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-actions #accountMenuButton { width:32px!important; min-width:32px!important; max-width:32px; padding:6px!important; }
 html.qs-v3.qs-main-layout.qs-central-controls body .header .qs-header-account-shortcuts > button { width:32px!important; min-width:32px!important; max-width:32px; padding:6px!important; }
}

/* Uses the existing account dock, including its mobile fullscreen route. */
html.qs-v3 body .qs-account-grants { min-width:0; font-size:12px; }
html.qs-v3 body .qs-account-grants :is(button,input) { font:inherit; }
html.qs-v3 body .qs-account-grants :is(button,input[type=search]) { min-height:36px; border-radius:8px; }
html.qs-v3 body .qs-grants-toolbar { display:flex; align-items:center; justify-content:space-between; gap:10px; margin-bottom:12px; }
html.qs-v3 body .qs-grants-toolbar small { color:var(--v3-muted); line-height:1.5; }
html.qs-v3 body .qs-grants-status { padding:9px 10px; margin:0 0 12px; border:1px solid var(--v3-line); border-radius:8px; color:var(--v3-muted); overflow-wrap:anywhere; }
html.qs-v3 body :is(.qs-grants-status.error,.qs-grants-field-error) { color:var(--v3-error)!important; border-color:var(--v3-error); }
html.qs-v3 body .qs-grants-search { width:100%; margin-bottom:10px; }
html.qs-v3 body .qs-grants-recipient { display:flex; width:100%; align-items:center; gap:10px; text-align:left; padding:13px 0; border:0!important; border-bottom:1px solid var(--v3-line)!important; border-radius:0!important; background:transparent!important; color:var(--v3-text)!important; }
html.qs-v3 body .qs-grants-recipient > span:first-child { display:grid; gap:4px; flex:1; min-width:0; }
html.qs-v3 body .qs-grants-recipient strong { font-size:13px; font-weight:500; }
html.qs-v3 body .qs-grants-recipient small { color:var(--v3-muted); line-height:1.5; overflow-wrap:anywhere; }
html.qs-v3 body .qs-grants-person { display:flex; align-items:flex-start; flex-direction:column; gap:5px; margin:0 0 15px; }
html.qs-v3 body .qs-grants-person h3 { margin:6px 0 0; font-size:15px; font-weight:600; overflow-wrap:anywhere; }
html.qs-v3 body .qs-grants-person small { color:var(--v3-muted); }
html.qs-v3 body .qs-account-grants .qs-grants-back { padding:0; min-height:30px; background:transparent!important; border:0!important; color:var(--qs-accent)!important; }
html.qs-v3 body .qs-grants-person > .qs-grants-revoke { margin-top:7px; }
html.qs-v3 body .qs-grants-scope { border-top:1px solid var(--v3-line); padding:14px 0; min-width:0; }
html.qs-v3 body .qs-grants-scope h4 { margin:0 0 5px; font-size:13px; font-weight:600; overflow-wrap:anywhere; }
html.qs-v3 body .qs-grants-scope-name { display:block; font-size:12px; font-weight:400; overflow-wrap:anywhere; }
html.qs-v3 body .qs-grants-rights { margin:8px 0; color:var(--v3-muted); line-height:1.6; overflow-wrap:anywhere; }
html.qs-v3 body :is(.qs-grants-readonly,.qs-grants-period,.qs-grants-retained) { display:block; color:var(--v3-muted); font-size:11px; line-height:1.5; margin:7px 0; overflow-wrap:anywhere; }
html.qs-v3 body .qs-grants-actions { display:flex; flex-wrap:wrap; gap:8px; margin-top:10px; }
html.qs-v3 body .qs-account-grants .qs-grants-revoke { color:var(--v3-error)!important; }
html.qs-v3 body .qs-grants-editor { padding-top:12px; }
html.qs-v3 body .qs-grants-editor fieldset { display:grid; gap:0; min-width:0; padding:0; margin:0; border:0; }
html.qs-v3 body .qs-grants-editor legend { margin-bottom:8px; font-size:12px; font-weight:500; }
html.qs-v3 body .qs-grants-editor label { display:flex; align-items:center; gap:8px; padding:7px 0; min-height:34px; font-size:12px; line-height:1.4; }
html.qs-v3 body .qs-grants-editor input[type=checkbox] { width:16px; height:16px; flex:none; margin:0; accent-color:var(--qs-accent); }
html.qs-v3 body .qs-grants-field-error { padding:9px 10px; border:1px solid; border-radius:8px; margin-top:8px; line-height:1.5; }
html.qs-v3 body .qs-grants-empty { color:var(--v3-muted); line-height:1.6; }
html.qs-v3 body .qs-account-grants [hidden] { display:none!important; }

/* Group captions stay frameless; existing preview drag handlers retain ownership. */
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-title.qs-view-editable {flex-wrap:wrap;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-editable >.qs-preview-view-toggle {flex:1;width:auto;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-editable .camera-object-view-actions:not([hidden]) {display:flex!important;gap:3px;flex:none;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-editable .camera-object-view-actions >:not(.qs-view-edit-button) {display:none!important;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-order {display:flex;gap:2px;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon {display:inline-flex!important;align-items:center;justify-content:center;flex:none;width:28px;height:28px;min-height:28px;padding:5px!important;border:0!important;border-radius:6px;background:transparent;color:var(--v3-muted);box-shadow:none;font-size:0;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon svg {width:17px;height:17px;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon:is(:hover,:active,[aria-pressed="true"]) {color:var(--v3-text);background:var(--dock-selected,rgba(255,255,255,.12));}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon:disabled {opacity:.3;cursor:default;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon:focus-visible {outline:2px solid var(--qs-accent);outline-offset:1px;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-editable.editing >:is(.qs-preview-view-toggle,.qs-view-order,.camera-object-view-actions) {display:none!important;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-editor {display:flex;align-items:center;gap:3px;width:100%;min-width:0;padding:0;margin:0;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-editor input {flex:1;min-width:0;height:28px;min-height:28px;padding:3px 6px;font-size:11px;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-block.drop-active {outline:1px dashed var(--qs-accent);outline-offset:3px;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button.dragging {opacity:.45;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button.drop-before {box-shadow:0 -3px 0 var(--qs-accent)!important;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button.drop-after {box-shadow:0 3px 0 var(--qs-accent)!important;}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .drop-saving {opacity:.65;}
@media(pointer:coarse){html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon {width:32px;height:32px;}}

html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-icon[aria-invalid="true"] {color:var(--v3-danger,#ff8b86);}
/* Inline title editing has only commit/cancel; deletion stays in the Views screen. */
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-editor [data-qs-view-icon="remove"] {display:none!important;}

/* One touch-safe move handle; disclosure and camera dragging retain separate controls. */
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList [data-qs-view-drag]{cursor:grab;touch-action:none;user-select:none;-webkit-user-select:none}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList [data-qs-view-drag][aria-pressed="true"]{cursor:grabbing}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-group-dragging >:is(.camera-object-view-title,.camera-button){opacity:.5}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList :is(.qs-view-group-before,.qs-view-group-after) >.camera-object-view-title{position:relative}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-group-before >.camera-object-view-title::before,
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-group-after >.camera-object-view-title::after{content:"";position:absolute;left:0;right:0;height:2px;border-radius:2px;background:var(--qs-accent,#68c9a0);pointer-events:none;z-index:3}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-group-before >.camera-object-view-title::before{top:-5px}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-group-after >.camera-object-view-title::after{bottom:-5px}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-saving [data-qs-view-drag]{opacity:.5;cursor:progress}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-drag-status{position:absolute!important;width:1px;height:1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}

/* Hold the name to move a shared group; a short click still discloses it. */
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-title-draggable >.qs-preview-view-toggle {cursor:grab;touch-action:pan-y;user-select:none;-webkit-user-select:none;-webkit-touch-callout:none}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .qs-view-group-dragging >.qs-view-title-draggable >.qs-preview-view-toggle {cursor:grabbing}

html.qs-v3 .qs-edge-lifecycle{min-width:0;padding:8px 0;border:0;border-bottom:1px solid var(--v3-line);background:transparent;color:var(--v3-text)}
html.qs-v3 .qs-edge-head{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px}
html.qs-v3 .qs-edge-head strong{font-size:12px;font-weight:500}
html.qs-v3 .qs-edge-list{display:grid;gap:5px}
html.qs-v3 .qs-edge-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:3px 8px;align-items:center;min-width:0;padding:5px 0}
html.qs-v3 .qs-edge-copy{display:grid;gap:2px;min-width:0}
html.qs-v3 .qs-edge-copy strong{font-size:12px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
html.qs-v3 .qs-edge-copy small,html.qs-v3 .qs-edge-reason{color:var(--v3-muted);font-size:10px;overflow-wrap:anywhere}
html.qs-v3 .qs-edge-reason{grid-column:1 / -1}
html.qs-v3 .qs-edge-history{margin-top:5px}
html.qs-v3 .qs-edge-history>summary{cursor:pointer;color:var(--v3-muted);font-size:11px;padding:5px 0}
html.qs-v3 .qs-edge-confirmation{grid-column:1 / -1;display:flex;align-items:center;gap:6px;flex-wrap:wrap;padding:5px 7px;border-radius:8px;background:var(--qs-selected);font-size:11px}
html.qs-v3 .qs-edge-confirmation>span{flex:1;min-width:120px}
html.qs-v3 .qs-edge-status,html.qs-v3 .qs-edge-empty{font-size:11px;color:var(--v3-muted);margin:5px 0}
html.qs-v3 .qs-edge-status.is-error{color:var(--v3-danger,var(--v3-muted))}
html.qs-v3 .qs-edge-lifecycle[hidden],html.qs-v3 .qs-edge-status[hidden]{display:none!important}
@media(pointer:coarse){html.qs-v3 .qs-edge-lifecycle button{min-width:40px!important;min-height:40px!important}}

/* One preview filter; personal gestures add no permanent edit controls. */
html.qs-v3 .header .qs-layout-control{white-space:nowrap}
html.qs-v3 .header .qs-layout-control > :is(.qs-preview-personal-tools,#qsLayoutOpen){vertical-align:middle}
html.qs-v3 .qs-preview-personal-tools{display:inline-flex;align-items:center;flex:none;margin:0;padding:0;background:transparent}
html.qs-v3 .qs-preview-personal-tools[hidden]{display:none!important}
html.qs-v3 .qs-preview-favorites-filter{width:30px;height:30px;min-height:30px;padding:5px;border:0;border-radius:8px;background:transparent;color:var(--v3-muted);flex:none}
html.qs-v3 .header .qs-header-actions #qsPreviewFavoritesFilter[aria-pressed=true]{color:#fff!important;background:#287d61!important;box-shadow:inset 0 0 0 1px #ffffff30!important}
html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-button.qs-preview-not-favorite,html.qs-v3.qs-main-layout.qs-central-controls body #cameraList .camera-object-view-block.qs-preview-no-favorites{display:none!important}
html.qs-v3 #cameraList .qs-personal-sortable{cursor:grab;user-select:none;-webkit-user-select:none}
html.qs-v3 #cameraList .qs-personal-dragging{opacity:.5;cursor:grabbing}
html.qs-v3 #cameraList .qs-personal-drop-before{box-shadow:0 -2px var(--qs-accent,#68c9a0)!important}
html.qs-v3 #cameraList .qs-personal-drop-after{box-shadow:0 2px var(--qs-accent,#68c9a0)!important}
html.qs-v3 [data-qs-preview-error]{outline:1px solid var(--v3-danger,#ef7272);outline-offset:-1px}
@media(max-width:760px){
 html.qs-v3 .qs-layout-popup > strong{display:flex;align-items:center;justify-content:space-between;gap:8px;white-space:normal}
 html.qs-v3.qs-central-controls body .header .qs-header-actions .qs-preview-favorites-filter{width:36px;min-width:36px;height:36px;min-height:36px}
 html.qs-v3 .header .qs-header-actions #qsLayoutOpen.qs-preview-filter-active{color:var(--qs-accent)!important;background:var(--qs-selected)!important}
}
html.qs-v3 body:is(.qs-map-view,.qs-object-picker-open) .qs-preview-personal-tools{display:none!important}

html.qs-v3 #cameraList.qs-personal-preview-mode :is(.camera-button,.camera-button img,.qs-personal-sortable){-webkit-touch-callout:none}
@media(max-width:760px){html.qs-v3 body:is(.qs-account-view,.qs-guests-view,.qs-map-view,.qs-dock-open,.qs-object-picker-open) .qs-preview-personal-tools{display:none!important}}

/* Shared vector buttons. Existing semantic state, badges and permission visibility win. */
:where(.qs-icon-action){display:inline-grid}
:where(.qs-icon-labelled){display:inline-flex}
.qs-vector-icon{display:inline-block;width:20px;height:20px;flex:none;vertical-align:middle}
html body .qs-icon-action,html body .qs-icon-labelled{--qs-icon-ink:var(--v3-text,var(--text,#e9eeec));--qs-icon-selected:var(--qs-selected,#233529);--qs-icon-accent:var(--qs-accent,#73bc91);--qs-icon-soft:var(--qs-hover,rgba(127,143,134,.11));box-sizing:border-box}
html body .qs-icon-action{place-items:center;align-items:center;justify-content:center;width:32px!important;min-width:32px!important;max-width:32px!important;height:32px!important;min-height:32px!important;padding:0!important;gap:0!important;flex:none;border:0!important;border-radius:9px!important;background:var(--qs-icon-soft)!important;color:var(--qs-icon-ink)!important;box-shadow:none!important;line-height:1!important;text-decoration:none!important;vertical-align:middle}
html body .qs-icon-action::before,html body .qs-icon-labelled::before{content:""!important;display:inline-block;vertical-align:middle;flex:none;width:20px!important;height:20px!important;background:currentColor;-webkit-mask:var(--qs-icon-mask) center/contain no-repeat!important;mask:var(--qs-icon-mask) center/contain no-repeat!important;pointer-events:none}
html body .qs-icon-action>:not(.badge):not(.count):not(.notification-badge):not([data-notification-count]):not([data-coop-badge]):not(.qs-equipment-fault-badge):not(.qs-coop-unread-badge){display:none!important}
html body .qs-icon-labelled{align-items:center;gap:8px}
html body .qs-icon-labelled>:is(svg,.icon,.qs-account-row-icon,.qs-account-chevron){display:none!important}
html body .qs-icon-labelled:has(>.qs-account-chevron)::after{content:"";width:16px;height:16px;flex:none;margin-left:auto;background:currentColor;-webkit-mask:var(--qs-chevron-mask) center/contain no-repeat;mask:var(--qs-chevron-mask) center/contain no-repeat;opacity:.5}
html body .qs-icon-action[data-qs-icon-surface=plain]{background:transparent!important}
html body .qs-icon-action[data-qs-icon-surface=overlay]{background:rgba(10,18,23,.58)!important;color:#fff!important;}
html body .qs-icon-action:hover:not(:disabled){background:var(--qs-icon-selected)!important}
html body .qs-icon-action[data-qs-icon-surface=overlay]:hover:not(:disabled){background:rgba(10,18,23,.82)!important}
html body .qs-icon-action:is([aria-expanded=true]),html body .qs-icon-action.primary{background:var(--qs-icon-selected)!important;color:var(--qs-icon-accent)!important}
/* Claude 2026-11-02: a switched-on toggle lights its icon, not its background. */
html body .qs-icon-action:is([aria-pressed=true],.active,.enabled):not(.primary){color:var(--qs-icon-accent)!important}
html body .qs-icon-action[data-qs-icon-surface=overlay]:is([aria-expanded=true]){background:color-mix(in srgb,var(--qs-icon-accent) 55%,#101714)!important;color:#fff!important;box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--qs-icon-accent) 45%,transparent)!important}
html body .qs-icon-action[data-qs-icon-surface=overlay]:is([aria-pressed=true],.active,.enabled){background:rgba(10,18,23,.58)!important;color:#f5c542!important;box-shadow:none!important}
/* Claude 2026-11-02: a call bell keeps its state colour on every brand: on (push) green, only in the open app yellow, off red. */
html body .qs-icon-action.qs-icon-action[data-qs-icon=bell]:is(.enabled,.enabled[aria-pressed]){color:#7bf0b6!important}
html body .qs-icon-action.qs-icon-action[data-qs-icon=bell]:is(.foreground-only,.foreground-only[aria-pressed]){color:#ffd166!important}
html body .qs-icon-action.qs-icon-action[data-qs-icon=bell]:is(.disabled,.disabled[aria-pressed]):not(:disabled){color:#ff9b9b!important}
html body .qs-icon-action:active:not(:disabled){filter:brightness(.88)}
html body .qs-icon-action:focus-visible,html body .qs-icon-labelled:focus-visible{outline:2px solid var(--qs-icon-accent)!important;outline-offset:2px}
html body .qs-icon-action:disabled,html body .qs-icon-action[aria-disabled=true]{opacity:.4;cursor:default;filter:none}
html body .qs-icon-action[hidden],html body .qs-icon-labelled[hidden]{display:none!important}
html body .qs-icon-action[data-qs-icon=trash],html body .qs-icon-action[data-qs-icon=keyOff]{color:var(--v3-error,#dc6b68)!important}
@media(pointer:coarse){html body .qs-icon-action{height:36px!important;min-height:36px!important;width:36px!important;min-width:36px!important;max-width:36px!important}}
@media(max-width:380px){html body .header .qs-icon-action{width:30px!important;min-width:30px!important;max-width:30px!important;height:40px!important;min-height:40px!important}}
@media(prefers-reduced-motion:no-preference){html body .qs-icon-action{transition:background-color .12s,color .12s,opacity .12s}}

html body .camera-access-edit.qs-icon-labelled>i[aria-hidden=true]{display:none!important}
html body .qs-icon-labelled.qs-icon-trailing::before{order:2;margin-left:auto;width:16px;height:16px}
html body .qs-favorite-star.qs-icon-action:not([aria-pressed=true]){background:rgba(10,18,23,.24)!important}

html.qs-v3 .header #installButton.qs-icon-action{border:0!important;background:transparent!important;box-shadow:none!important}

/* Image controls use one surface even where older native ID rules drew borders. */
html body :is(#qsNativeCameraMapPanel,#player,.qs-native-camera-list) .qs-icon-action[data-qs-icon-surface=overlay]{border:0!important;border-radius:9px!important;box-shadow:none!important}
html body :is(#qsNativeCameraMapPanel,#player,.qs-native-camera-list) .qs-icon-action[data-qs-icon-surface=overlay]:not([aria-pressed=true]):not([aria-expanded=true]):not(.active){background:rgba(10,18,23,.58)!important;color:#fff!important}
html body :is(#qsNativeCameraMapPanel,#player,.qs-native-camera-list) .qs-icon-action[data-qs-icon-surface=overlay]:is([aria-pressed=true],[aria-expanded=true],.active){background:color-mix(in srgb,var(--qs-icon-accent) 55%,#101714)!important;color:#fff!important}
html.qs-v3 #qsNativeCameraMapPanel:not(:fullscreen):not(.qs-map-video-expanded) #liveBadge.qs-icon-action{margin-right:34px!important}
#qsCooperationPushSettings>summary.qs-icon-action{list-style:none}
#qsCooperationPushSettings>summary.qs-icon-action::-webkit-details-marker{display:none}
#qsCooperationPushSettings[open]>summary.qs-icon-action{background:var(--qs-icon-selected)!important;color:var(--qs-icon-accent)!important}

html body #liveBadge.qs-icon-action:not(.archive-active){background:var(--qs-icon-selected)!important;color:var(--qs-icon-accent)!important}

/* Public Map owns separate theme tokens; never fall back to white ink in its light theme. */
html.qs-public-map body :is(.qs-icon-action,.qs-icon-labelled){--qs-icon-ink:var(--map-text);--qs-icon-selected:var(--map-selected);--qs-icon-accent:var(--accent)}

/* Claude 2026-11-02: call switches in the header's bell panel. */
.qs-notifications-popup .qs-call-switches{display:grid;gap:2px;margin:6px 0}
.qs-notifications-popup .qs-call-switch{text-transform:none;letter-spacing:normal;font-weight:500;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 2px;font-size:13px;cursor:pointer}
.qs-notifications-popup .qs-call-switch span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qs-notifications-popup .qs-call-switch input{appearance:none;flex:none;position:relative;width:34px;height:20px;margin:0;border-radius:10px;background:#3a4642;cursor:pointer;transition:background .15s}
.qs-notifications-popup .qs-call-switch input::after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#e9eeec;transition:transform .15s}
.qs-notifications-popup .qs-call-switch input:checked{background:var(--qs-accent,#73bc91)}
.qs-notifications-popup .qs-call-switch input:checked::after{transform:translateX(14px)}
.qs-notifications-popup .qs-call-switch input:disabled{opacity:.5;cursor:default}
/* Claude 2026-11-02: one inline line about background calls instead of a popup. */
.qs-notifications-popup .qs-call-note{margin:4px 2px 0;font-size:12px;line-height:1.35;color:var(--v3-muted,#9fb0a7);text-transform:none;letter-spacing:normal}
.qs-notifications-popup .qs-call-note button{all:unset;cursor:pointer;color:var(--qs-accent,#73bc91);text-decoration:underline;font-weight:600}
/* Claude 2026-11-02: the call window's switch next to the bell: on green, off plain. */
html body .qs-icon-action.qs-icon-action[data-qs-icon=pip].enabled{color:#7bf0b6!important}
@media(min-width:1251px){html.qs-v3 .camera-list.v3-catalog-dense .v3-camera-thumb>.camera-call-preview-toggle.camera-call-float-toggle{right:36px!important}}
/* Claude 2026-11-02: «Проверить» and its short checklist in the bell panel. */
.qs-notifications-popup .qs-call-check{margin-top:6px;width:100%}
.qs-notifications-popup .qs-call-checklist{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:4px;font-size:12px;line-height:1.35;text-transform:none;letter-spacing:normal}
.qs-notifications-popup .qs-call-checklist li.ok b{color:#7bf0b6}
.qs-notifications-popup .qs-call-checklist li.fail b{color:#ffd166}
.qs-notifications-popup .qs-call-checklist span{color:var(--v3-muted,#9fb0a7)}
/* Claude 2026-11-02: the bell panel laid out as one column: title, switches, actions. */
html.qs-central-controls .qs-header-actions #qsNotificationsPanel:not([hidden]){display:flex!important;flex-direction:column;gap:8px;width:min(320px,calc(100vw - 24px))!important;padding:14px 16px!important}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel>strong{font-size:15px;font-weight:600}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel>p{margin:-4px 0 0;font-size:12px;line-height:1.4}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel .qs-call-switches{margin:0;padding:4px 0;border-top:1px solid var(--v3-line,#2a3a33);border-bottom:1px solid var(--v3-line,#2a3a33)}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel :is(.qs-call-check,.qs-call-float,.qs-call-events){display:flex!important;align-items:center;justify-content:center;width:100%!important;max-width:none!important;min-width:0!important;height:auto!important;min-height:36px!important;padding:8px 12px!important;border-radius:8px!important;font-size:13px!important;font-weight:600;line-height:1.2!important;white-space:normal;text-align:center;text-transform:none;letter-spacing:normal;gap:6px}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel :is(.qs-call-check,.qs-call-float,.qs-call-events)::before{content:none!important;display:none!important}
html.qs-central-controls body .qs-header-actions #qsNotificationsPanel button.qs-call-check.qs-call-check{margin-top:8px;border:0!important;background:#2f9e68!important;color:#fff!important}
html.qs-central-controls body .qs-header-actions #qsNotificationsPanel button.qs-call-check.qs-call-check:hover{background:#38b277!important}
html.qs-central-controls body .qs-header-actions #qsNotificationsPanel button.qs-call-float.qs-call-float{background:transparent!important;border:1px solid var(--v3-line,#3a4642)!important;color:var(--v3-text,#e9eeec)!important}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel .qs-call-float[aria-pressed=true]{border-color:#2f9e68!important;color:#7bf0b6!important}
html.qs-central-controls .qs-header-actions #qsNotificationsPanel .qs-call-events{border:0!important;background:transparent!important;color:var(--v3-muted,#9fb0a7)!important;font-weight:500;min-height:28px!important}
/* The call window's switch: closed while on → yellow until clicked. */
html body .qs-icon-action.qs-icon-action[data-qs-icon=pip].foreground-only{color:#ffd166!important}
/* Claude 2026-11-02: the call dialog's buttons carry their meaning in colour. */
html body .door-call-actions button{border:0!important;color:#fff!important;font-weight:600}
html body .door-call-actions .door-call-answer{background:#2f9e68!important}
html body .door-call-actions .door-call-answer:hover{background:#38b277!important}
html body .door-call-actions :is(.door-call-decline,.door-call-hangup){background:#c4473f!important}
html body .door-call-actions :is(.door-call-decline,.door-call-hangup):hover{background:#d4534a!important}
html body .door-call-actions .door-call-unlock{background:#a8791c!important}
html body .door-call-actions .door-call-unlock:hover{background:#bb8a25!important}
html body .door-call-actions .door-call-unlock.active{background:#2f9e68!important}
html body .door-call-actions button:disabled{opacity:.6}
/* Claude 2026-11-02: the lock button shows the lock's state by its icon. */
html body .door-call-actions .door-call-unlock{display:inline-flex;align-items:center;justify-content:center;gap:8px}
html body .door-call-actions .door-call-unlock svg{flex:none;width:18px;height:18px}
html body .door-call-actions .door-call-unlock .shackle{transition:transform .35s;transform-origin:16px 11px}
html body .door-call-actions .door-call-unlock[data-lock-state=activating]{opacity:1}
html body .door-call-actions .door-call-unlock[data-lock-state=activating] svg{animation:qsLockJiggle .5s infinite}
html body .door-call-actions .door-call-unlock[data-lock-state=active]{background:#2f9e68!important;opacity:1}
html body .door-call-actions .door-call-unlock[data-lock-state=active] .shackle{transform:translate(5px,-2px) rotate(25deg)}
html body .door-call-actions .door-call-unlock[data-lock-state=error]{background:#c4473f!important}
@keyframes qsLockJiggle{25%{transform:rotate(-10deg)}75%{transform:rotate(10deg)}}
/* Claude 2026-11-02: with the call window open the cabinet shows no call dialog of its own. */
html.qs-call-float-open #doorCallOverlay{display:none!important}
