/*
 * Findus theme fundament.
 *
 * Everything a component needs (color, spacing, radius) is expressed through
 * the custom properties below. Components must not hardcode hex/rgb values —
 * add or reuse a variable instead. The palette is dark-first: `:root` and
 * `[data-bs-theme="dark"]` hold the active values, `[data-bs-theme="light"]`
 * pre-defines a light set so a future theme switch only has to flip the
 * `data-bs-theme` attribute, no component rewrites.
 */

:root {
    /* Layout scale — shared by both themes */
    --findus-space-1: 0.25rem;
    --findus-space-2: 0.5rem;
    --findus-space-3: 0.75rem;
    --findus-space-4: 1rem;
    --findus-space-5: 1.5rem;
    --findus-space-6: 2rem;

    --findus-radius-sm: 6px;
    --findus-radius-md: 10px;
    --findus-radius-lg: 14px;

    --findus-font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    --findus-font-size-sm: 0.8125rem;
    --findus-font-size-base: 0.9375rem;
    --findus-line-height: 1.55;

    --findus-sidebar-width: 15rem;
    --findus-topbar-height: 3rem;
    --findus-touch-target: 2.75rem;
    --findus-transition-fast: 120ms ease;

    /* Breakpoints (match Bootstrap defaults, documented here for reference):
       sm 576px · md 768px · lg 992px (sidebar ⇄ off-canvas switch) · xl 1200px */
}

/* Dark palette (default) ---------------------------------------------------
   Colors are stored as R,G,B triplets so both a solid color (via rgb()) and
   Bootstrap's rgba()-based variables (focus rings, subtle variants, …) can
   be derived from the same source value. */
:root,
[data-bs-theme="dark"] {
    --findus-bg-rgb: 30, 31, 34;
    --findus-surface-rgb: 38, 40, 44;
    --findus-surface-raised-rgb: 44, 46, 51;
    --findus-border-rgb: 52, 54, 59;
    --findus-text-rgb: 232, 230, 226;
    --findus-text-muted-rgb: 163, 161, 157;
    --findus-accent-rgb: 204, 120, 92;
    --findus-accent-contrast-rgb: 30, 31, 34;
    --findus-shadow: 0 8px 24px rgba(0, 0, 0, 0.35);

    color-scheme: dark;
}

/* Light palette — prepared for a future toggle, not activated yet --------*/
[data-bs-theme="light"] {
    --findus-bg-rgb: 247, 246, 244;
    --findus-surface-rgb: 255, 255, 255;
    --findus-surface-raised-rgb: 255, 255, 255;
    --findus-border-rgb: 227, 225, 221;
    --findus-text-rgb: 43, 42, 40;
    --findus-text-muted-rgb: 107, 105, 101;
    --findus-accent-rgb: 179, 93, 61;
    --findus-accent-contrast-rgb: 255, 255, 255;
    --findus-shadow: 0 8px 24px rgba(0, 0, 0, 0.1);

    color-scheme: light;
}

/* Solid colors derived from the triplets above — components use these. */
[data-bs-theme="dark"],
[data-bs-theme="light"] {
    --findus-bg: rgb(var(--findus-bg-rgb));
    --findus-surface: rgb(var(--findus-surface-rgb));
    --findus-surface-raised: rgb(var(--findus-surface-raised-rgb));
    --findus-border: rgb(var(--findus-border-rgb));
    --findus-text: rgb(var(--findus-text-rgb));
    --findus-text-muted: rgb(var(--findus-text-muted-rgb));
    --findus-accent: rgb(var(--findus-accent-rgb));
    --findus-accent-contrast: rgb(var(--findus-accent-contrast-rgb));
    --findus-focus-ring: var(--findus-accent);
}

/* Bridge into Bootstrap's own variables so every Bootstrap component
   (buttons, forms, tables, alerts, offcanvas, …) follows the theme without
   per-component overrides. */
[data-bs-theme="dark"],
[data-bs-theme="light"] {
    --bs-body-bg: var(--findus-bg);
    --bs-body-bg-rgb: var(--findus-bg-rgb);
    --bs-body-color: var(--findus-text);
    --bs-body-color-rgb: var(--findus-text-rgb);
    --bs-emphasis-color: var(--findus-text);
    --bs-emphasis-color-rgb: var(--findus-text-rgb);
    --bs-secondary-color: rgba(var(--findus-text-muted-rgb), 0.85);
    --bs-secondary-color-rgb: var(--findus-text-muted-rgb);
    --bs-tertiary-color: rgba(var(--findus-text-muted-rgb), 0.6);
    --bs-tertiary-color-rgb: var(--findus-text-muted-rgb);
    --bs-secondary-bg: var(--findus-surface);
    --bs-secondary-bg-rgb: var(--findus-surface-rgb);
    --bs-tertiary-bg: var(--findus-surface-raised);
    --bs-tertiary-bg-rgb: var(--findus-surface-raised-rgb);
    --bs-border-color: var(--findus-border);
    --bs-border-color-translucent: rgba(var(--findus-text-rgb), 0.1);
    --bs-link-color: var(--findus-accent);
    --bs-link-color-rgb: var(--findus-accent-rgb);
    --bs-link-hover-color: var(--findus-accent);
    --bs-link-hover-color-rgb: var(--findus-accent-rgb);
    --bs-primary: var(--findus-accent);
    --bs-primary-rgb: var(--findus-accent-rgb);
    --bs-primary-text-emphasis: var(--findus-accent);
    --bs-primary-bg-subtle: rgba(var(--findus-accent-rgb), 0.15);
    --bs-primary-border-subtle: rgba(var(--findus-accent-rgb), 0.4);
    --bs-body-font-family: var(--findus-font-sans);
    --bs-body-font-size: var(--findus-font-size-base);
    --bs-body-line-height: var(--findus-line-height);
}

/* Base -----------------------------------------------------------------*/
html,
body {
    height: 100%;
}

body {
    background-color: var(--findus-bg);
    color: var(--findus-text);
}

:focus-visible {
    outline: 2px solid var(--findus-focus-ring);
    outline-offset: 2px;
}

/* App shell ---------------------------------------------------------------*/
.findus-shell {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

@media (min-width: 992px) {
    .findus-shell {
        flex-direction: row;
    }
}

/* Mobile topbar (hamburger) -------------------------------------------- */
.findus-topbar {
    display: flex;
    align-items: center;
    gap: var(--findus-space-3);
    height: var(--findus-topbar-height);
    padding-inline: var(--findus-space-4);
    background-color: var(--findus-surface);
    border-bottom: 1px solid var(--findus-border);
}

.findus-nav-toggle {
    display: flex;
    flex-direction: column;
    justify-content: center;
    gap: 4px;
    width: var(--findus-touch-target);
    height: var(--findus-touch-target);
    padding: 0;
    background: transparent;
    border: 0;
    border-radius: var(--findus-radius-sm);
}

.findus-nav-toggle:hover {
    background-color: var(--findus-surface-raised);
}

.findus-nav-toggle-bar {
    display: block;
    width: 1.25rem;
    height: 2px;
    margin-inline: auto;
    background-color: var(--findus-text);
    border-radius: 1px;
}

.findus-topbar-title {
    font-size: var(--findus-font-size-base);
    font-weight: 600;
    letter-spacing: 0.01em;
}

/* Shared nav content (desktop sidebar + mobile off-canvas) -------------- */
.findus-sidebar {
    flex: 0 0 var(--findus-sidebar-width);
    width: var(--findus-sidebar-width);
    padding: var(--findus-space-4);
    background-color: var(--findus-surface);
    border-right: 1px solid var(--findus-border);
}

.findus-offcanvas {
    width: min(80vw, 20rem);
    background-color: var(--findus-surface);
    border-right: 1px solid var(--findus-border);
}

.findus-offcanvas .offcanvas-header {
    padding: var(--findus-space-3) var(--findus-space-4);
    border-bottom: 1px solid var(--findus-border);
}

.findus-nav-body {
    display: flex;
    flex-direction: column;
    height: 100%;
    padding: var(--findus-space-4);
}

.findus-brand {
    display: flex;
    align-items: center;
    gap: var(--findus-space-2);
    margin-bottom: var(--findus-space-4);
    color: var(--findus-text);
    font-size: 1.0625rem;
    font-weight: 600;
}

.findus-brand:hover {
    color: var(--findus-text);
}

.findus-nav-list {
    display: flex;
    flex-direction: column;
    gap: var(--findus-space-1);
    margin: 0;
    padding: 0;
    list-style: none;
}

.findus-nav-link {
    display: flex;
    align-items: center;
    min-height: var(--findus-touch-target);
    padding-inline: var(--findus-space-3);
    border-radius: var(--findus-radius-sm);
    color: var(--findus-text-muted);
    text-decoration: none;
    font-size: var(--findus-font-size-base);
    transition: background-color var(--findus-transition-fast), color var(--findus-transition-fast);
}

.findus-nav-link:hover {
    background-color: var(--findus-surface-raised);
    color: var(--findus-text);
}

.findus-nav-link.active {
    background-color: var(--findus-surface-raised);
    color: var(--findus-text);
    box-shadow: inset 3px 0 0 var(--findus-accent);
}

.findus-nav-search {
    margin-bottom: var(--findus-space-4);
}

.findus-nav-spacer {
    flex: 1 1 auto;
}

.findus-user {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--findus-space-2);
    padding-top: var(--findus-space-3);
    margin-top: var(--findus-space-3);
    border-top: 1px solid var(--findus-border);
}

.findus-user-name {
    overflow: hidden;
    color: var(--findus-text-muted);
    font-size: var(--findus-font-size-sm);
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Content area ------------------------------------------------------------*/
.findus-content {
    flex: 1 1 auto;
    min-width: 0;
    padding: var(--findus-space-4);
}

@media (min-width: 768px) {
    .findus-content {
        padding: var(--findus-space-5);
    }
}

@media (min-width: 992px) {
    .findus-content {
        padding: var(--findus-space-6);
    }
}

.findus-page-header {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: var(--findus-space-3);
    margin-bottom: var(--findus-space-5);
}

.findus-page-title {
    margin: 0;
    font-size: 1.25rem;
    font-weight: 600;
}

.findus-page-actions {
    display: flex;
    align-items: center;
    gap: var(--findus-space-2);
}

.findus-section {
    margin-bottom: var(--findus-space-6);
}

.findus-section-title {
    margin-bottom: var(--findus-space-2);
    font-size: var(--findus-font-size-base);
    font-weight: 600;
}

.findus-card {
    padding: var(--findus-space-4);
    background-color: var(--findus-surface);
    border: 1px solid var(--findus-border);
    border-radius: var(--findus-radius-md);
}

/* Document upload dropzone ------------------------------------------------*/
.findus-upload-dropzone {
    padding: var(--findus-space-5);
    text-align: center;
    background-color: var(--findus-surface);
    border: 2px dashed var(--findus-border);
    border-radius: var(--findus-radius-md);
    transition: border-color var(--findus-transition-fast), background-color var(--findus-transition-fast);
}

.findus-upload-dropzone--active {
    background-color: rgba(var(--findus-accent-rgb), 0.08);
    border-color: var(--findus-accent);
}

.findus-upload-hint {
    margin: 0 0 var(--findus-space-2);
}

.findus-upload-constraints {
    margin: 0;
    font-size: var(--findus-font-size-sm);
}

.findus-upload-feedback {
    margin-top: var(--findus-space-3);
}

.findus-upload-results {
    display: flex;
    flex-direction: column;
    gap: var(--findus-space-2);
    margin: 0;
    padding: 0;
    list-style: none;
}

.findus-upload-result {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--findus-space-2);
    padding: var(--findus-space-3);
    background-color: var(--findus-surface);
    border: 1px solid var(--findus-border);
    border-radius: var(--findus-radius-md);
}

.findus-upload-result-filename {
    font-weight: 600;
}

.findus-upload-result-message {
    color: var(--findus-text-muted);
    font-size: var(--findus-font-size-sm);
}

/* Document list filter bar ------------------------------------------------*/
.findus-filter-bar {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--findus-space-3);
    margin-bottom: var(--findus-space-4);
}

.findus-filter-field {
    min-width: 10rem;
}

.findus-search-field {
    flex: 1 1 20rem;
    min-width: 16rem;
}

.findus-filter-loading {
    align-self: center;
    color: var(--findus-text-muted);
    font-size: var(--findus-font-size-sm);
}

.findus-pagination {
    margin-top: var(--findus-space-4);
}

/* Semantic search results ---------------------------------------------- */
.findus-search-results {
    display: flex;
    flex-direction: column;
    gap: var(--findus-space-3);
}

.findus-search-hit {
    display: block;
    padding: var(--findus-space-4);
    background-color: var(--findus-surface);
    border: 1px solid var(--findus-border);
    border-radius: var(--findus-radius-md);
    color: inherit;
    text-decoration: none;
    transition: border-color var(--findus-transition-fast);
}

.findus-search-hit:hover {
    color: inherit;
    border-color: var(--findus-accent);
}

.findus-search-hit-header {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--findus-space-3);
}

.findus-search-hit-title {
    font-weight: 600;
}

.findus-search-hit-score {
    flex: 0 0 auto;
    color: var(--findus-accent);
    font-size: var(--findus-font-size-sm);
    font-weight: 600;
}

.findus-search-hit-snippet {
    margin: var(--findus-space-2) 0 0;
    color: var(--findus-text-muted);
    font-size: var(--findus-font-size-sm);
}

.findus-search-hit-meta {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: var(--findus-space-2);
    margin-top: var(--findus-space-3);
    color: var(--findus-text-muted);
    font-size: var(--findus-font-size-sm);
}

/* Document detail --------------------------------------------------------*/
.findus-detail-meta {
    margin-bottom: var(--findus-space-4);
}

.findus-detail-meta-list {
    display: flex;
    flex-wrap: wrap;
    gap: var(--findus-space-5);
    margin: 0;
}

.findus-detail-meta-list dt {
    color: var(--findus-text-muted);
    font-size: var(--findus-font-size-sm);
}

.findus-detail-meta-list dd {
    margin: 0;
}

.findus-detail-text {
    max-height: 32rem;
    overflow-y: auto;
    white-space: pre-wrap;
    font-family: inherit;
}

.findus-detail-actions {
    margin-bottom: var(--findus-space-4);
}

.findus-detail-summary-text {
    font-size: 1.05rem;
}

.findus-detail-keyfacts {
    margin-top: var(--findus-space-4);
}

.findus-detail-raw {
    margin-top: var(--findus-space-4);
}

.findus-detail-raw summary {
    cursor: pointer;
    color: var(--findus-text-muted);
}

.findus-detail-raw .findus-detail-content {
    margin-top: var(--findus-space-3);
}

.findus-detail-meta-header {
    display: flex;
    justify-content: flex-end;
    margin-bottom: var(--findus-space-3);
}

.findus-detail-meta-edit-fields {
    display: flex;
    flex-wrap: wrap;
    gap: var(--findus-space-4);
    margin-bottom: var(--findus-space-3);
}

.findus-detail-meta-edit-actions {
    display: flex;
    gap: var(--findus-space-2);
}

.findus-markdown {
    max-height: 32rem;
    overflow-y: auto;
}

.findus-markdown :first-child {
    margin-top: 0;
}

.findus-markdown :last-child {
    margin-bottom: 0;
}

.findus-detail-links {
    display: flex;
    flex-direction: column;
    gap: var(--findus-space-2);
    margin: 0;
    padding: 0;
    list-style: none;
}

.findus-detail-links li {
    padding: var(--findus-space-3);
    background-color: var(--findus-surface);
    border: 1px solid var(--findus-border);
    border-radius: var(--findus-radius-md);
}

/* Zuordnungs-Feld inline creation (#1021) --------------------------------*/
.findus-quick-create {
    display: flex;
    flex-wrap: wrap;
    gap: var(--findus-space-2);
    margin-top: var(--findus-space-2);
}

.findus-quick-create .form-control {
    flex: 1 1 10rem;
}

/* Stammdaten (#1021) ------------------------------------------------------*/
.findus-tabs {
    display: flex;
    gap: var(--findus-space-2);
    margin-bottom: var(--findus-space-5);
    border-bottom: 1px solid var(--findus-border);
}

.findus-tab {
    padding: var(--findus-space-2) var(--findus-space-3);
    color: var(--findus-text-muted);
    text-decoration: none;
    border-bottom: 2px solid transparent;
}

.findus-tab:hover {
    color: inherit;
}

.findus-tab.active {
    color: inherit;
    font-weight: 600;
    border-bottom-color: var(--findus-accent);
}

.findus-stammdaten-form {
    display: flex;
    flex-wrap: wrap;
    align-items: flex-end;
    gap: var(--findus-space-3);
}
