/* OS1 semantic bridge. Values are installed before paint by os1-appearance.js.
   Existing component files own geometry; this file owns palette UI and inherited roles. */
:root[data-os1-appearance] {
  --os1-ink:var(--os1-text);--os1-coral:var(--os1-accent);--os1-line:var(--os1-border);
  /* Code has its own stable dark reading surface in both modes. */
  --os1-code-surface:#302c2b;--os1-code-toolbar:#39322e;--os1-code-text:#efe4d9;
  --os1-code-border:#554b46;--os1-code-control-border:#b3a69a;--os1-code-muted:#dbbc9f;
  --os1-code-hover:#58473b;--os1-code-keyword:#f4a4ac;--os1-code-string:#bfd3a5;
  --os1-code-number:#edb486;--os1-code-comment:#b3a69a;--os1-code-title:#d0b1df;--os1-code-parameter:#e8d8c5;
  --ink:var(--os1-text);--muted:var(--os1-muted);--coral:var(--os1-accent);
}
:root[data-os1-appearance] body:is(.os1-mode,.os1-access,.nityx-gateway) { color:var(--os1-text);background-color:var(--os1-canvas); }
.os1-mode .os1-atmosphere,.os1-access .os1-access-atmosphere {
  background:var(--os1-ribbons-image) center/cover no-repeat,var(--os1-canvas);
}
.os1-mode .os1-atmosphere::after {background:linear-gradient(90deg,transparent,color-mix(in srgb,var(--os1-canvas) 92%,transparent) 22%,color-mix(in srgb,var(--os1-canvas) 92%,transparent) 76%,transparent);}
.os1-access .os1-access-atmosphere::after {content:'';position:absolute;inset:0;background:linear-gradient(90deg,transparent,var(--os1-canvas) 68%);}
/* Pseudo-element blur remains in the existing composer; no new fixed containing block. */
.os1-mode .os1-compose-area::before {background:var(--os1-surface);border-color:var(--os1-control-border);}
.os1-mode .os1-compose-area {border-color:var(--os1-control-border);}
.os1-mode #chatComposer {background:transparent;}
.os1-mode .os1-brand small,.os1-mode #chat .mensaje.asistente::after {color:var(--os1-muted);}
.os1-mode .os1-account-menu button {font:inherit;padding:8px;border:0;border-radius:8px;text-align:left;background:transparent;color:var(--os1-text);}
.os1-mode .os1-account-menu button:hover {background:var(--os1-hover);}
.os1-mode .os1-connection.is-up i {background:var(--os1-success);}
.os1-mode .os1-connection.is-down i {background:var(--os1-warning);}
.os1-mode .service-chip.service-is-up::after {color:var(--os1-success);}
.os1-mode .service-chip.service-is-down::after {color:var(--os1-error);}
.os1-mode :is(button,input,textarea,select,a):focus-visible,.os1-access :is(button,input,a):focus-visible {outline:2px solid var(--os1-focus);outline-offset:3px;}
.os1-mode :is(input,textarea)::placeholder,.os1-access input::placeholder {color:var(--os1-muted);opacity:1;}
.os1-mode :is(input,select,textarea) {color-scheme:inherit;}
.os1-mode :is(button,input,select,textarea):disabled,.os1-access :is(button,input):disabled {opacity:1;color:var(--os1-muted);background:var(--os1-disabled);border-color:var(--os1-border);cursor:not-allowed;}
.os1-mode button:active:not(:disabled):not(.btn-inline-send):not(.ampache-play-btn) {background-color:var(--os1-pressed);color:var(--os1-text);}
.os1-mode .os1-orb {--orb:var(--os1-accent);}
.os1-mode #chat .mensaje.asistente.os1-editorial-message {background:transparent;}
/* Rich components with styles inherited from their shared widgets. */
.os1-mode :is(.nx-media-result-title,.nx-media-result-copy,.python-result-card,.places-chat-card,.attachment-file-name) {color:var(--os1-text);}
.os1-mode :is(.nx-cameras-view,.nx-cameras-card,.nx-camera-card,.nx-cameras-toolbar,.nx-cameras-empty) {color:var(--os1-text);background-color:var(--os1-surface);border-color:var(--os1-border);}
.os1-mode :is(.nx-camera-card button,.python-result-card button,.attachment-preview-dialog button) {color:var(--os1-text);background-color:var(--os1-raised);border-color:var(--os1-control-border);}
.os1-mode .nx-media-result-action {color:var(--os1-on-accent);background:var(--os1-accent);border-color:var(--os1-accent);}
.os1-mode input[type=range] {accent-color:var(--os1-accent);}
.os1-appearance-settings {border-top:1px solid var(--os1-border);margin-top:16px;padding:16px 8px;font-size:12px;}
.os1-appearance-settings>summary {color:var(--os1-text);cursor:pointer;}
.os1-appearance-label {margin:16px 0 8px;color:var(--os1-muted);font-size:11px;}
.os1-appearance-modes {display:flex;gap:3px;padding:4px;border:1px solid var(--os1-border);border-radius:12px;background:var(--os1-subtle);}
.os1-appearance-modes button {flex:1;min-height:36px;padding:6px 4px;border:1px solid transparent;border-radius:8px;font-size:10px;color:var(--os1-text);background:transparent;}
.os1-appearance-modes button[aria-pressed=true] {background:var(--os1-surface);border-color:var(--os1-control-border);font-weight:650;}
.os1-palette-list {max-height:clamp(180px,calc(100dvh - 500px),360px);overflow:auto;overscroll-behavior:contain;scrollbar-width:thin;padding:3px;}
.os1-palette-list h3 {font-size:10px;font-weight:650;margin:12px 0 7px;color:var(--os1-muted);}
.os1-palette-list section:first-child h3 {margin-top:0;}
.os1-palette-grid {display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px;}
.os1-palette-grid button {position:relative;display:grid;gap:5px;min-width:0;min-height:62px;text-align:left;padding:5px;border:1px solid var(--os1-border);border-radius:10px;background:var(--os1-surface);color:var(--os1-text);font-size:10px;line-height:1.3;}
.os1-palette-grid button>i {height:27px;display:block;border-radius:6px;}
.os1-palette-grid button>span {padding:1px;}
.os1-palette-grid button[aria-pressed=true] {outline:2px solid var(--os1-focus);outline-offset:0;}
.os1-palette-grid button[aria-pressed=true]::after {content:'✓';position:absolute;right:8px;top:8px;display:grid;place-items:center;width:18px;height:18px;border-radius:50%;background:var(--os1-surface);color:var(--os1-text);font-size:11px;font-weight:750;}
.os1-palette-previews {display:grid;gap:6px;margin:14px 0 10px;}
.os1-palette-previews>div {display:flex;align-items:center;gap:7px;padding:8px;border:1px solid;border-radius:9px;font-size:10px;}
.os1-palette-previews i {height:14px;width:14px;border-radius:5px;flex:none;}
.os1-appearance-reset {min-height:36px;padding:7px 10px;border:1px solid var(--os1-control-border);border-radius:9px;background:var(--os1-raised);color:var(--os1-text);font:inherit;font-size:10px;}
.os1-appearance-note {font-size:10px;line-height:1.5;color:var(--os1-muted);margin:9px 0 0;}
:root[data-os1-appearance] .nityx-gateway[data-theme=os1] {
 --gateway-ink:var(--os1-text);--gateway-muted:var(--os1-muted);--gateway-accent:var(--os1-accent);--gateway-button:var(--os1-soft);--gateway-line:var(--os1-control-border);
 background:radial-gradient(ellipse at 50% 43%,var(--os1-surface),var(--os1-canvas) 70%,var(--os1-soft));
}
:root[data-os1-appearance] .nityx-gateway[data-theme=os1] .gateway-symbol {background:var(--os1-soft);--orb:var(--os1-accent);}
:root[data-os1-appearance] .nityx-gateway[data-theme=os1] .gateway-symbol::before,
:root[data-os1-appearance] .nityx-gateway[data-theme=os1] .gateway-symbol::after {border-color:var(--os1-border);}
@media(max-width:640px) {.os1-palette-list{max-height:clamp(160px,calc(100dvh - 490px),330px);}.os1-appearance-modes button{min-height:40px;}}
/* Functional dates and pin markers must retain contrast in both luminosities. */
.os1-mode .cal-day.out-month {opacity:1;}
.os1-mode .os1-module-picker button.is-pinned::after {background:var(--os1-accent);}
/* Login prose sits in front of the sculpture too: quiet its luminance behind text. */
.os1-access .os1-access-atmosphere::after {background:linear-gradient(90deg,color-mix(in srgb,var(--os1-canvas) 88%,transparent),color-mix(in srgb,var(--os1-canvas) 97%,transparent) 68%);}

.os1-mode #chat .mensaje.usuario {color:var(--os1-on-soft);}

.os1-mode #chat .os1-code-toolbar button:focus-visible {outline-color:var(--os1-code-control-border);}
/* Keep focused palette choices below the drawer's existing sticky heading. */
.os1-mode #leftSidebar {scroll-padding-top:52px;scroll-padding-bottom:12px;}
.os1-mode #leftSidebar>.os1-drawer-heading {background:var(--os1-surface);}
.os1-appearance-settings {scroll-margin-top:8px;}
.os1-mode #leftSidebar>.os1-drawer-heading::before {content:'';position:absolute;inset:-24px -23px 0;background:var(--os1-surface);z-index:-1;pointer-events:none;}
