/* Shared product contract. Load after route styles in every application shell.
   Adapters translate Razor, Topos and the embedded Svelte vocabulary into these roles. */
:root {
    --sls-canvas: #07122a;
    --sls-shell: rgba(7,18,42,.72);
    --sls-panel: #0c203c;
    --sls-panel-raised: #132e50;
    --sls-panel-high: #15335b;
    --sls-text: #f2f5f7;
    --sls-muted: #adb8c4;
    --sls-faint: #94a3bd;
    --sls-border: rgba(203,221,247,.14);
    --sls-border-strong: rgba(203,221,247,.24);
    --sls-accent: #86b9f4;
    --sls-accent-strong: #c0dcfb;
    --sls-accent-soft: rgba(118,178,255,.13);
    --sls-font-ui: "IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;
    --sls-font-legal: "Source Serif 4", Georgia, serif;
    --sls-rail-width: 82px;
    --sls-nav-width: 66px;
    --sls-nav-height: 50px;
    --sls-header-height: 58px;
    --sls-mobile-nav-height: 64px;
    --sls-chat-column-width: 72rem;
    --sls-answer-map-width: 112px;
    --sls-answer-map-gap: 20px;
    --sls-radius-control: 6px;
    --sls-radius-panel: 8px;
    --sls-focus: 0 0 0 3px rgba(138,184,238,.22);
    --da-font: var(--sls-font-ui);
    --da-legal-font: var(--sls-font-legal);
    --da-text: var(--sls-text);
    --da-muted: var(--sls-muted);
    --da-faint: var(--sls-faint);
    --da-line: var(--sls-border);
    --da-line-strong: var(--sls-border-strong);
    --da-accent: var(--sls-accent);
    --da-accent-2: var(--sls-accent-strong);
    --da-accent-soft: var(--sls-accent-soft);
    --da-radius: var(--sls-radius-panel);
    --da-control-height: 38px;
    --da-transient-surface: var(--sls-panel-raised);
    --sls-action-primary: #2f73c9;
    --sls-action-primary-hover: #3b82d5;
    --sls-dialog-surface: var(--sls-panel-raised);
    --sls-dialog-head: var(--sls-panel-high);
}

/* Navigation has one geometry and one interaction vocabulary in both runtimes. */
.da-rail, .sls-product-rail {
    width: var(--sls-rail-width) !important;
    background: var(--sls-shell) !important;
    border-right: 1px solid var(--sls-border) !important;
}
.da-rail-link, .sls-product-nav a, .sls-product-footer a {
    box-sizing: border-box;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    width: var(--sls-nav-width) !important;
    height: var(--sls-nav-height) !important;
    min-height: var(--sls-nav-height) !important;
    gap: 4px !important;
    border: 1px solid transparent;
    border-radius: var(--sls-radius-control) !important;
    color: var(--sls-faint) !important;
    font: 500 10px/1.2 var(--sls-font-ui) !important;
    text-decoration: none;
    white-space: nowrap;
}
.da-rail-link span, .sls-product-nav a span, .sls-product-footer a span {
    font-size: 10px !important;
    letter-spacing: 0 !important;
}
.da-rail-link i, .sls-product-nav i, .sls-product-footer i { font-size: 18px !important; line-height: 1; }
.da-rail-link:hover, .sls-product-nav a:hover, .sls-product-footer a:hover {
    background: rgba(205,216,229,.055) !important;
    border-color: var(--sls-border);
    color: var(--sls-text) !important;
}
.da-rail-link.is-active, .sls-product-nav a.active {
    background: var(--sls-accent-soft) !important;
    border-color: rgba(138,184,238,.2);
    color: var(--sls-accent-strong) !important;
    box-shadow: inset 2px 0 0 var(--sls-accent);
}
.sls-product-nav a.active::before { content: none !important; }
.da-topbar { height: var(--sls-header-height); }
.da-section-head, .da-product-head { flex-wrap: wrap; gap: 12px; }
.da-section-head > div:first-child, .da-product-head > div:first-child { min-width: 0; }
.da-header-actions { position: static !important; display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.da-page-inner, .da-wide-inner { max-width: 1280px; margin-inline: auto; }
.da-field input, .da-field select, .da-field textarea { max-width: 100%; }
.da-panel, .da-table-wrap, .da-filter-bar { border-color: var(--sls-border); }

/* Embedded adapter: components retain upstream behavior while inheriting product roles.
   Tailwind gray tokens are scoped to the embedded runtime, including portal menus. */
html:has(.sls-product-shell) {
    --color-gray-50: #f2f5f7;
    --color-gray-100: #e3eaf3;
    --color-gray-200: #d4deeb;
    --color-gray-300: #c0cbdc;
    --color-gray-400: #adb8c4;
    --color-gray-500: #94a3bd;
    --color-gray-600: #587397;
    --color-gray-700: #284971;
    --color-gray-800: #193858;
    --color-gray-850: #15335b;
    --color-gray-900: #0c203c;
    --color-gray-950: #07122a;
    --font-sans: var(--sls-font-ui);
    font-family: var(--sls-font-ui);
}
.sls-product-shell {
    --sls-navy: var(--sls-canvas) !important;
    --sls-ink: var(--sls-text) !important;
    background: var(--sls-canvas) !important;
    font-family: var(--sls-font-ui) !important;
}
.sls-product-rail { inset: 0 auto 0 0; display: flex; position: absolute; z-index: 60; }
.sls-product-nav { gap: 5px !important; padding-top: 9px !important; }
.sls-launcher { width: var(--sls-rail-width) !important; height: var(--sls-header-height) !important; }
.sls-product-footer { padding: 9px 7px 14px !important; }
.sls-consumer-header { position: absolute; inset: 0 0 auto; z-index: 80; height: var(--sls-header-height); display: flex; align-items: center; justify-content: space-between; padding: 0 18px; background: var(--sls-panel); border-bottom: 1px solid var(--sls-border); }
.sls-consumer-brand { display: flex; align-items: center; gap: 9px; color: var(--sls-text); text-decoration: none; font: 600 16px var(--sls-font-ui); }
.sls-consumer-brand i { color: var(--sls-accent); font-size: 20px; }
.sls-consumer-avatar { width: 32px; height: 32px; border-radius: 50%; border: 1px solid var(--sls-border-strong); background: var(--sls-accent-soft); color: var(--sls-text); font: 600 12px var(--sls-font-ui); cursor: pointer; }
.sls-consumer-header { gap: 16px; }
.sls-matter-selector { min-width: 0; flex: 1; max-width: 460px; margin-right: auto; }
.sls-matter-selector label { display: block; color: var(--sls-faint); font: 500 10px var(--sls-font-ui); margin-bottom: 2px; }
.sls-matter-selector select { display: block; width: 100%; min-width: 0; height: 28px; padding: 2px 8px; border: 1px solid var(--sls-border); border-radius: var(--sls-radius-control); background: var(--sls-canvas); color: var(--sls-text); font: 400 12px var(--sls-font-ui); text-overflow: ellipsis; }
.sls-matter-selector select:disabled { opacity: .85; cursor: default; }
.sls-matter-selector span { display: block; color: var(--sls-amber); font-size: 10px; }
.sls-product-shell:has(.sls-consumer-header) .sls-launcher { display: none !important; }
.sls-product-shell:has(.sls-consumer-header) .sls-product-rail { top: var(--sls-header-height) !important; }
.sls-product-shell:has(.sls-consumer-header) .sls-chat-host { inset: var(--sls-header-height) 0 0 var(--sls-rail-width) !important; }
.sls-chat-host { inset: 0 0 0 var(--sls-rail-width) !important; background: var(--sls-canvas) !important; }
.sls-chat-host #chat-container { background: var(--sls-canvas) !important; color: var(--sls-text); }
/* The chat occupies its host, not the full viewport. Product navigation already
   reserves the header and mobile footer outside this host. */
.sls-chat-host #chat-container {
    height: 100% !important;
    max-height: 100% !important;
    min-height: 0;
}
.sls-chat-host #chat-container > .h-full,
.sls-chat-host #chat-container > .h-full > .h-full,
.sls-chat-host #chat-container > .h-full > .h-full > .h-full,
.sls-chat-host #chat-pane { min-height: 0; }
.sls-chat-host #chat-pane > div:has(#message-input-container) { flex-shrink: 0; }
.sls-chat-host #chat-pane { position: relative; }
.sls-chat-host #messages-container .message-listitem {
    max-width: min(100%, var(--sls-chat-column-width));
}
.sls-chat-host #chat-pane [class~="max-w-[72rem]"]:has(#message-input-container) {
    max-width: min(100%, var(--sls-chat-column-width));
    padding-inline: 0;
}
.sls-chat-host #chat-pane:has(#messages-container) > div:has(#message-input-container) {
    padding-right: .5rem;
}
.sls-chat-host #chat-pane .answer-map { display: none; }
@media (min-width: 1050px) {
    .sls-chat-host #chat-pane:has(.answer-map) #messages-container {
        padding-right: calc(var(--sls-answer-map-width) + var(--sls-answer-map-gap));
    }
    .sls-chat-host #chat-pane:has(.answer-map) > div:has(#message-input-container) {
        padding-right: calc(var(--sls-answer-map-width) + var(--sls-answer-map-gap) + .5rem);
    }
    .sls-chat-host #chat-pane .answer-map {
        display: block;
        width: var(--sls-answer-map-width);
        right: max(12px, calc((100% - var(--sls-chat-column-width) - var(--sls-answer-map-width) - var(--sls-answer-map-gap)) / 2));
    }
    .sls-chat-host .answer-map a span { margin-inline: 6px; border-radius: 2px; }
}
.sls-chat-host .answer-outline { margin-top: 48px; }
.sls-chat-host #chat-pane:has(.answer-outline) #messages-container .pt-18 { padding-top: 16px; }
.sls-chat-host #sidebar[role="navigation"] { background: var(--sls-canvas) !important; border-color: var(--sls-border); }
.sls-chat-host #message-input-container {
    background: var(--sls-panel);
    border-color: var(--sls-border-strong);
    box-shadow: 0 6px 24px rgba(0,0,0,.14);
}
.sls-chat-host #message-input-container button {
    min-width: 40px;
    min-height: 40px;
}
.sls-chat-host #message-input-container button[aria-label="Гласов режим"],
.sls-chat-host #message-input-container button[aria-label="Спри"],
.sls-chat-host #send-message-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 0;
}
.sls-chat-host #message-input-container button:not(#send-message-button):not([aria-label="Гласов режим"]):not([aria-label="Спри"]) {
    color: var(--sls-text);
}
.sls-chat-host #chat-input [data-placeholder]::before,
.sls-chat-host #chat-input::placeholder { color: var(--sls-muted); opacity: 1; }
.sls-chat-host #chat-input { font-family: var(--sls-font-ui); color: var(--sls-text); }
.sls-chat-host .prose { color: var(--sls-text); overflow-wrap: anywhere; }
.sls-chat-host .prose a { color: var(--sls-accent-strong); text-decoration: underline; text-underline-offset: 3px; }
.sls-chat-host .prose pre { overflow: auto; white-space: pre; }

/* Legacy/admin adapters share colors, controls and typography without changing authorization. */
body.sls-admin-shell, body.sls-legacy-shell {
    --bg-body: var(--sls-canvas);
    --bg-surface: var(--sls-panel);
    --bg-surface-alt: var(--sls-panel-raised);
    --text-primary: var(--sls-text);
    --text-muted: var(--sls-muted);
    --border: var(--sls-border);
    font-family: var(--sls-font-ui);
    color: var(--sls-text);
    background: var(--sls-canvas);
}
.sls-admin-shell .admin-sidebar { background: var(--sls-canvas); border-right: 1px solid var(--sls-border); }
.sls-admin-shell .admin-header { background: var(--sls-panel); min-height: var(--sls-header-height); }
.sls-admin-shell .admin-badge { background: var(--sls-accent-soft); color: var(--sls-accent-strong); border-radius: var(--sls-radius-control); }
.sls-admin-shell .admin-logo i { color: var(--sls-accent); }
.sls-admin-shell .admin-nav-item.active { color: var(--sls-accent-strong); background: var(--sls-accent-soft); }
.sls-admin-shell .admin-nav-item.active::before { background: var(--sls-accent); }
.sls-admin-shell .admin-content { max-width: 1280px; margin-inline: auto; }

:is(.sls-design-a-shell,.sls-product-shell,.sls-admin-shell,.sls-legacy-shell) :focus-visible {
    outline: 2px solid var(--sls-accent);
    outline-offset: 2px;
    box-shadow: var(--sls-focus);
}
.sls-chat-host #chat-input:focus-visible { outline: none; box-shadow: none; }
.sls-chat-host #message-input-container:focus-within { border-color: var(--sls-accent); }
@media (max-width: 820px) {
    .sls-consumer-header { gap: 8px; padding-inline: 10px; }
    .sls-consumer-brand { font-size: 13px; gap: 5px; flex-shrink: 0; }
    .sls-consumer-brand i { display: none; }
    .sls-consumer-avatar { width: 28px; height: 28px; }
    .sls-matter-selector label { font-size: 9px; }
    .sls-matter-selector select { font-size: 11px; }
    .da-section-head, .da-product-head { align-items: flex-start; }
    .da-header-actions { width: 100% !important; flex: 0 0 100%; justify-content: flex-start; }
    .da-rail, .sls-product-rail {
        display: flex !important;
        position: fixed !important;
        inset: auto 0 0 !important;
        width: 100% !important;
        height: calc(var(--sls-mobile-nav-height) + env(safe-area-inset-bottom)) !important;
        flex-direction: row !important;
        padding: 4px 4px calc(4px + env(safe-area-inset-bottom)) !important;
        background: var(--sls-panel) !important;
        border-right: 0 !important;
        border-top: 1px solid var(--sls-border) !important;
        gap: 0 !important;
    }
    .da-body { box-sizing: border-box; flex: 1 1 auto !important; height: auto !important; min-height: 0; padding-bottom: calc(var(--sls-mobile-nav-height) + env(safe-area-inset-bottom)) !important; }
    .da-rail-link, .sls-product-nav a { width: auto !important; min-width: 0; flex: 1; }
    .da-rail-link, .sls-product-nav a { color: var(--sls-muted) !important; }
    .da-rail-link span, .sls-product-nav a span { font-size: 12px !important; }
    .da-rail-link i, .sls-product-nav i { font-size: 20px !important; }
    .da-rail-link.is-active, .sls-product-nav a.active { box-shadow: inset 0 -2px 0 var(--sls-accent); }
    .sls-product-rail { display: flex !important; }
    .sls-launcher { display: none !important; }
    .sls-product-nav { flex: 1; flex-direction: row !important; padding: 0 !important; gap: 0 !important; }
    .sls-product-footer { display: flex; border: 0 !important; padding: 0 !important; }
    .sls-product-footer a { width: 48px !important; }
    .sls-product-footer a span { display: none; }
    .da-rail-foot { display: flex !important; margin-top: 0 !important; width: 48px; }
    .da-rail-foot .da-rail-link { width: 48px !important; }
    .da-rail-foot .da-rail-link span { display: none; }
    .sls-chat-host { inset: 0 0 calc(var(--sls-mobile-nav-height) + env(safe-area-inset-bottom)) !important; }
    .sls-product-shell:has(.sls-consumer-header) .sls-product-rail { top: auto !important; }
    .sls-product-shell:has(.sls-consumer-header) .sls-chat-host { inset: var(--sls-header-height) 0 calc(var(--sls-mobile-nav-height) + env(safe-area-inset-bottom)) !important; }
    .sls-admin-shell .admin-content { padding: 20px 14px; }
}
.sls-chat-host .spinner_ajPY { animation-duration: 1.4s !important; }
.sls-chat-host .sls-model-selector { display: flex; flex-direction: column; flex: 0 1 270px; min-width: 120px; margin-inline: 8px; }
.sls-model-selector label { font-size: 10px; color: var(--sls-muted); }
.sls-chat-host .sls-model-selector select { width: 100%; min-width: 0; padding: 5px 8px; border: 1px solid var(--sls-border); border-radius: 8px; background: var(--sls-panel); color: var(--sls-text); font-size: 12px; text-overflow: ellipsis; }
@media(max-width: 820px) { .sls-chat-host .sls-model-selector { flex-basis: 180px; margin-inline: 4px; } .sls-chat-host .sls-model-selector select { font-size: 11px; } }
.sls-chat-host .sls-reading-preview { position: fixed; z-index: 10000; width: min(380px, calc(100vw - 24px)); padding: 18px; border: 1px solid var(--sls-border-strong); border-radius: 14px; background: var(--sls-panel); color: var(--sls-text); box-shadow: 0 16px 48px #0006; font-size: 14px; line-height: 1.55; }
.sls-reading-preview .preview-kind { color: var(--sls-muted); font-size: 11px; margin-bottom: 6px; }
.sls-reading-preview strong { display: block; font-size: 15px; margin-bottom: 10px; }
.sls-reading-preview .preview-excerpt { max-height: min(240px, 40vh); overflow: auto; white-space: pre-wrap; font-size: 13px; }
.sls-reading-preview > a { display: block; margin-top: 12px; color: var(--sls-accent); font-size: 13px; }
.sls-chat-host .sls-research-progress { display: flex; align-items: baseline; gap: 9px; min-height: 24px; line-height: 1.6; }
.sls-chat-host .sls-research-indicator { flex: 0 0 7px; width: 7px; height: 7px; border-radius: 50%; background: var(--sls-muted); }
.sls-chat-host .sls-research-indicator.is-active { background: var(--sls-accent); }
@media (prefers-reduced-motion: reduce) {
    :is(.sls-design-a-shell,.sls-product-shell,.sls-admin-shell) *,
    :is(.sls-design-a-shell,.sls-product-shell,.sls-admin-shell) *::before,
    :is(.sls-design-a-shell,.sls-product-shell,.sls-admin-shell) *::after {
        animation: none !important;
        transition: none !important;
        scroll-behavior: auto !important;
    }
}
