/*
 * AdminAssist — Astryx Neutral adaptation
 * Official Astryx reset/core/theme assets are loaded before this file.
 * This compatibility layer maps the existing Bootstrap/Jinja UI onto the
 * Astryx token, spacing, density, state, and frame conventions.
 */

:root {
    --app-rail: 256px;
    --app-topbar: 64px;
    --app-max-content: 1680px;
    --app-rail-bg: #171717;
    --app-rail-raised: #222222;
    --app-rail-border: rgba(255, 255, 255, 0.10);
    --app-rail-text: #fafafa;
    --app-rail-muted: #a3a3a3;
    --app-focus: #0074e2;

    /* Backwards-compatible aliases used by older templates. */
    --primary-color: #262626;
    --primary-hover: #404040;
    --background: var(--color-background-body);
    --background-secondary: var(--color-background-surface);
    --background-tertiary: var(--color-background-muted);
    --text-primary: var(--color-text-primary);
    --text-secondary: var(--color-text-secondary);
    --text-tertiary: var(--color-text-disabled);
    --border-color: var(--color-border);
    --separator: var(--color-border);
    --shadow: var(--shadow-low);
    --shadow-hover: var(--shadow-med);
    --sidebar-bg: var(--app-rail-bg);
    --card-bg: var(--color-background-card);
    --input-bg: var(--color-background-surface);
    --input-border: var(--color-border-emphasized);
    --navbar-bg: var(--color-background-surface);
    --ios-blue: #0074e2;
    --ios-blue-light: #6d9cfe;
    --ios-blue-dark: #00458c;
    --ios-green: #198100;
    --ios-orange: #b35b00;
    --ios-red: #a50c25;
    --ios-purple: #700084;
    --ios-gray: #737373;
    --ios-gray-1: #f1f1f1;
    --ios-gray-2: #ebebeb;
    --ios-gray-3: #d4d4d4;
    --ios-gray-4: #a3a3a3;
    --ios-gray-5: #737373;
    --ios-gray-6: #525252;
    --ios-label: var(--color-text-primary);
    --ios-label-secondary: var(--color-text-secondary);
    --ios-background: var(--color-background-body);
    --ios-background-secondary: var(--color-background-surface);
    --ios-system-background: var(--color-background-surface);
    --ios-secondary-system-background: var(--color-background-muted);
    --ios-separator: var(--color-border);
    --ios-shadow-sm: var(--shadow-low);
    --ios-shadow: var(--shadow-med);
    --ios-shadow-lg: var(--shadow-high);
}

html {
    min-width: 320px;
    background: var(--color-background-body);
    scroll-behavior: smooth;
}

body {
    min-height: 100vh;
    margin: 0;
    overflow-x: hidden;
    background: var(--color-background-body);
    color: var(--color-text-primary);
    font-family: var(--font-family-body, "Figtree", sans-serif);
    font-size: var(--font-size-base, 0.875rem);
    line-height: var(--text-body-leading, 1.43);
    -webkit-font-smoothing: antialiased;
}

body,
button,
input,
select,
textarea {
    font-family: var(--font-family-body, "Figtree", sans-serif);
}

::selection {
    background: var(--color-background-blue);
    color: var(--color-text-blue);
}

:focus-visible {
    outline: 2px solid var(--app-focus) !important;
    outline-offset: 2px;
}

.skip-link {
    position: fixed;
    inset: 8px auto auto 8px;
    z-index: 9999;
    padding: 8px 12px;
    border-radius: var(--radius-element);
    background: #fff;
    color: #171717;
    box-shadow: var(--shadow-high);
    transform: translateY(-150%);
    transition: transform var(--duration-fast) var(--ease-standard);
}

.skip-link:focus {
    transform: translateY(0);
}

a {
    color: var(--color-text-blue);
    text-underline-offset: 2px;
}

a:hover {
    color: #003f80;
}

h1,
h2,
h3,
h4,
h5,
h6,
.h1,
.h2,
.h3,
.h4,
.h5,
.h6 {
    margin: 0;
    color: var(--color-text-primary);
    font-family: var(--font-family-heading, "Figtree", sans-serif);
    font-weight: var(--font-weight-semibold);
    letter-spacing: -0.015em;
}

h1,
.h1 { font-size: var(--text-heading-1-size); line-height: var(--text-heading-1-leading); }
h2,
.h2 { font-size: var(--text-heading-2-size); line-height: var(--text-heading-2-leading); }
h3,
.h3 { font-size: var(--text-heading-3-size); line-height: var(--text-heading-3-leading); }
h4,
.h4 { font-size: var(--text-heading-4-size); line-height: var(--text-heading-4-leading); }
h5,
.h5 { font-size: var(--text-heading-4-size); line-height: var(--text-heading-4-leading); }
h6,
.h6 { font-size: var(--text-heading-5-size); line-height: var(--text-heading-5-leading); }

p { color: var(--color-text-primary); }
small,
.small { color: var(--color-text-secondary); }

.text-muted,
.text-secondary { color: var(--color-text-secondary) !important; }
.text-tertiary { color: var(--color-text-disabled) !important; }
.text-primary { color: var(--color-text-blue) !important; }
.text-success { color: var(--color-text-green) !important; }
.text-danger { color: var(--color-text-red) !important; }
.text-warning { color: var(--color-text-yellow) !important; }
.text-info { color: var(--color-text-cyan) !important; }

.bg-light,
.table-light { background: var(--color-background-muted) !important; }
.bg-primary { background: var(--color-background-inverted) !important; }

/* App frame ---------------------------------------------------------------- */
.app-shell {
    display: grid;
    grid-template-columns: var(--app-rail) minmax(0, 1fr);
    min-height: 100dvh;
    background: var(--color-background-body);
}

.sidebar {
    position: fixed;
    inset: 0 auto 0 0;
    z-index: 1045;
    width: var(--app-rail);
    min-height: 100dvh;
    overflow: hidden;
    border: 0;
    border-right: 1px solid var(--app-rail-border);
    background:
        radial-gradient(circle at 0 0, rgba(255,255,255,0.055), transparent 24rem),
        var(--app-rail-bg);
    color: var(--app-rail-text);
}

.sidebar-frame {
    display: grid;
    grid-template-rows: auto minmax(0, 1fr) auto;
    height: 100dvh;
}

.sidebar-brand {
    position: relative;
    padding: var(--spacing-5) var(--spacing-4) var(--spacing-4);
    border-bottom: 1px solid var(--app-rail-border);
}

.sidebar-close {
    position: absolute;
    top: 20px;
    right: 12px;
    display: none;
    width: 34px;
    height: 34px;
    place-items: center;
    border: 1px solid rgba(255,255,255,0.13);
    border-radius: var(--radius-element);
    background: rgba(255,255,255,0.07);
    color: #fff;
}

.sidebar-close:hover { background: rgba(255,255,255,0.13); }

.brand-link {
    display: flex;
    align-items: center;
    gap: var(--spacing-3);
    color: var(--app-rail-text);
    text-decoration: none;
}

.brand-link:hover { color: var(--app-rail-text); }

.brand-mark {
    display: inline-flex;
    flex: 0 0 36px;
    width: 36px;
    height: 36px;
    align-items: center;
    justify-content: center;
    gap: 3px;
    border: 1px solid rgba(255,255,255,0.16);
    border-radius: 10px;
    background: rgba(255,255,255,0.08);
    box-shadow: inset 0 1px rgba(255,255,255,0.08);
}

.brand-mark span {
    display: block;
    width: 3px;
    border-radius: 3px;
    background: #fafafa;
}
.brand-mark span:nth-child(1) { height: 9px; opacity: 0.55; }
.brand-mark span:nth-child(2) { height: 17px; }
.brand-mark span:nth-child(3) { height: 12px; opacity: 0.75; }

.brand-copy {
    display: grid;
    min-width: 0;
    line-height: 1.15;
}

.brand-copy strong {
    overflow: hidden;
    color: var(--app-rail-text);
    font-size: 0.93rem;
    font-weight: 650;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.brand-copy small {
    margin-top: 4px;
    color: var(--app-rail-muted);
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
}

.environment-tag {
    display: inline-flex;
    align-items: center;
    gap: 7px;
    margin: 14px 0 0 48px;
    color: var(--app-rail-muted);
    font-size: 0.7rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.status-dot {
    display: inline-block;
    width: 7px;
    height: 7px;
    flex: 0 0 7px;
    border-radius: 50%;
    background: #84c980;
    box-shadow: 0 0 0 3px rgba(132, 201, 128, 0.14);
}

.sidebar-scroll {
    min-height: 0;
    padding: var(--spacing-3) var(--spacing-2) var(--spacing-5);
    overflow-y: auto;
    overscroll-behavior: contain;
    scrollbar-width: thin;
    scrollbar-color: rgba(255,255,255,0.20) transparent;
}

.nav-section + .nav-section { margin-top: var(--spacing-4); }

.nav-section-label {
    padding: 0 10px 7px;
    color: #7f7f7f;
    font-size: 0.66rem;
    font-weight: 650;
    letter-spacing: 0.105em;
    text-transform: uppercase;
}

.sidebar .nav { gap: 2px; }
.sidebar .nav-item { width: 100%; }

.sidebar .nav-link {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) auto;
    min-height: 36px;
    align-items: center;
    gap: var(--spacing-2);
    padding: 6px 10px;
    border: 1px solid transparent;
    border-radius: var(--radius-element);
    color: #cfcfcf;
    font-size: 0.82rem;
    font-weight: 500;
    line-height: 1.25;
    text-decoration: none;
    transition:
        background-color var(--duration-fast) var(--ease-standard),
        border-color var(--duration-fast) var(--ease-standard),
        color var(--duration-fast) var(--ease-standard),
        transform var(--duration-fast) var(--ease-standard);
}

.sidebar .nav-link:hover {
    border-color: rgba(255,255,255,0.07);
    background: rgba(255,255,255,0.075);
    color: #fff;
}

.sidebar .nav-link:active { transform: scale(0.985); }

.sidebar .nav-link.active {
    border-color: rgba(255,255,255,0.13);
    background: #fafafa;
    color: #171717;
    box-shadow: 0 1px 0 rgba(255,255,255,0.10), 0 4px 14px rgba(0,0,0,0.18);
}

.nav-icon {
    display: inline-grid;
    width: 28px;
    height: 28px;
    place-items: center;
    border-radius: 7px;
    color: #9f9f9f;
    font-size: 0.78rem;
}

.sidebar .nav-link:hover .nav-icon { color: #fff; }
.sidebar .nav-link.active .nav-icon {
    background: #ebebeb;
    color: #171717;
}

.nav-label {
    min-width: 0;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.nav-count {
    min-width: 20px;
    padding: 1px 6px;
    border-radius: 999px;
    background: rgba(255,255,255,0.10);
    color: inherit;
    font-size: 0.68rem;
    text-align: center;
}

.sidebar-footer {
    padding: var(--spacing-3);
    border-top: 1px solid var(--app-rail-border);
    background: rgba(0,0,0,0.12);
}

.profile-button {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) auto;
    width: 100%;
    align-items: center;
    gap: 10px;
    padding: 7px;
    border: 1px solid transparent;
    border-radius: var(--radius-element);
    background: transparent;
    color: var(--app-rail-text);
    text-align: left;
}

.profile-button:hover {
    border-color: rgba(255,255,255,0.08);
    background: rgba(255,255,255,0.07);
}

.profile-avatar {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border-radius: 50%;
    background: #f1f1f1;
    color: #171717;
    font-size: 0.8rem;
    font-weight: 700;
}

.profile-copy { display: grid; min-width: 0; }
.profile-copy strong { overflow: hidden; font-size: 0.8rem; text-overflow: ellipsis; }
.profile-copy small { color: var(--app-rail-muted); font-size: 0.68rem; }

.main-content {
    grid-column: 2;
    min-width: 0;
    min-height: 100dvh;
    background: var(--color-background-body);
}

.topbar {
    position: sticky;
    top: 0;
    z-index: 1030;
    display: grid;
    grid-template-columns: minmax(190px, 1fr) minmax(280px, 520px) minmax(190px, 1fr);
    min-height: var(--app-topbar);
    align-items: center;
    gap: var(--spacing-4);
    padding: 0 var(--spacing-5);
    border-bottom: 1px solid var(--color-border);
    background: color-mix(in srgb, var(--color-background-surface) 92%, transparent);
    backdrop-filter: blur(18px) saturate(1.15);
}

.topbar-start,
.topbar-end {
    display: flex;
    align-items: center;
    gap: var(--spacing-3);
}

.topbar-end { justify-content: flex-end; }

.topbar-title { display: grid; line-height: 1.15; }
.topbar-title strong { font-size: 0.84rem; font-weight: 650; }
.topbar-kicker {
    margin-bottom: 3px;
    color: var(--color-text-secondary);
    font-size: 0.66rem;
    font-weight: 650;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.topbar-search {
    position: relative;
    display: flex;
    height: 36px;
    align-items: center;
    gap: 9px;
    padding: 0 10px;
    border: 1px solid var(--color-border-emphasized);
    border-radius: var(--radius-element);
    background: var(--color-background-muted);
    color: var(--color-text-secondary);
    transition: background var(--duration-fast), border-color var(--duration-fast), box-shadow var(--duration-fast);
}

.topbar-search:focus-within {
    border-color: #9eb7ff;
    background: var(--color-background-surface);
    box-shadow: var(--shadow-inset-selected);
}

.topbar-search input {
    min-width: 0;
    flex: 1;
    border: 0;
    outline: 0;
    background: transparent;
    color: var(--color-text-primary);
    font-size: 0.82rem;
}

.topbar-search input::placeholder { color: var(--color-text-secondary); }
.topbar-search kbd {
    padding: 2px 6px;
    border: 1px solid var(--color-border);
    border-radius: 5px;
    background: var(--color-background-surface);
    color: var(--color-text-secondary);
    box-shadow: 0 1px 0 var(--color-border-emphasized);
    font-family: var(--font-family-body);
    font-size: 0.65rem;
    font-weight: 600;
}

.topbar-mode {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: var(--color-text-secondary);
    font-size: 0.72rem;
    font-weight: 550;
}

.icon-action,
.mobile-nav-toggle {
    display: inline-grid;
    width: 36px;
    height: 36px;
    place-items: center;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-element);
    background: var(--color-background-surface);
    color: var(--color-text-primary);
    text-decoration: none;
}

.icon-action:hover,
.mobile-nav-toggle:hover {
    background: var(--color-background-muted);
    color: var(--color-text-primary);
}

.mobile-nav-toggle { display: none; }
.mobile-overlay { display: none; }

.content-shell {
    width: min(100%, var(--app-max-content));
    margin: 0 auto;
    padding: var(--spacing-6);
}

.flash-stack { display: grid; gap: var(--spacing-2); margin-bottom: var(--spacing-4); }

/* Existing page headers ---------------------------------------------------- */
.content-shell > .d-flex.justify-content-between.border-bottom,
.content-shell > .d-flex.justify-content-between.flex-wrap,
.page-header {
    display: flex !important;
    min-height: 48px;
    align-items: center !important;
    justify-content: space-between !important;
    gap: var(--spacing-4);
    margin: 0 0 var(--spacing-5) !important;
    padding: 0 0 var(--spacing-4) !important;
    border-bottom: 1px solid var(--color-border) !important;
}

.content-shell > .d-flex.justify-content-between h1,
.content-shell > .d-flex.justify-content-between .h2,
.page-header h1 {
    display: flex;
    align-items: center;
    gap: var(--spacing-2);
    font-size: var(--font-size-xl);
    font-weight: 650;
    letter-spacing: -0.025em;
}

.content-shell > .d-flex.justify-content-between h1 i,
.content-shell > .d-flex.justify-content-between .h2 i,
.page-header h1 i {
    color: var(--color-icon-secondary);
    font-size: 0.9em;
}

/* Cards and sections ------------------------------------------------------- */
.card,
.astryx-card {
    border: 1px solid var(--color-border) !important;
    border-radius: var(--radius-container);
    background: var(--color-background-card);
    color: var(--color-text-primary);
    box-shadow: none;
    overflow: hidden;
}

.card.shadow-sm,
.card.shadow-lg { box-shadow: var(--shadow-low) !important; }

.card:hover { border-color: var(--color-border-emphasized); }

.card-header {
    display: flex;
    min-height: 48px;
    align-items: center;
    padding: var(--spacing-3) var(--spacing-4);
    border-bottom: 1px solid var(--color-border);
    background: var(--color-background-surface);
    color: var(--color-text-primary);
}

.card-header h5,
.card-header .h5 { font-size: var(--font-size-base); font-weight: 650; }
.card-body { padding: var(--spacing-4); }
.card-footer {
    padding: var(--spacing-3) var(--spacing-4);
    border-top: 1px solid var(--color-border);
    background: var(--color-background-surface);
}
.card-title { color: var(--color-text-primary); }

.list-group {
    border-radius: 0;
    box-shadow: none;
}

.list-group-item {
    min-height: 42px;
    padding: 10px var(--spacing-4);
    border: 0;
    border-bottom: 1px solid var(--color-border);
    background: var(--color-background-surface);
    color: var(--color-text-primary);
}

.list-group-item:last-child { border-bottom: 0; }
.list-group-item-action:hover,
.list-group-item-action:focus { background: var(--color-overlay-hover); color: var(--color-text-primary); }

/* Buttons ----------------------------------------------------------------- */
.btn {
    --bs-btn-font-size: 0.8125rem;
    display: inline-flex;
    min-height: var(--size-element-md);
    align-items: center;
    justify-content: center;
    gap: 6px;
    padding: 5px 12px;
    border-width: 1px;
    border-style: solid;
    border-radius: var(--radius-element);
    font-weight: 600;
    line-height: 1.2;
    box-shadow: none !important;
    transition:
        background-color var(--duration-fast) var(--ease-standard),
        border-color var(--duration-fast) var(--ease-standard),
        color var(--duration-fast) var(--ease-standard),
        transform var(--duration-fast) var(--ease-standard);
}

.btn:active { transform: scale(0.975); }
.btn-sm { min-height: var(--size-element-sm); padding: 3px 9px; font-size: 0.75rem; }
.btn-lg { min-height: 40px; padding: 8px 16px; font-size: 0.875rem; }

.btn-primary,
.btn-primary:focus {
    border-color: #262626;
    background: #262626;
    color: #fff;
}
.btn-primary:hover { border-color: #404040; background: #404040; color: #fff; }

.btn-secondary,
.btn-light {
    border-color: var(--color-border-emphasized);
    background: var(--color-background-surface);
    color: var(--color-text-primary);
}
.btn-secondary:hover,
.btn-light:hover { border-color: var(--color-border-emphasized); background: var(--color-background-muted); color: var(--color-text-primary); }

.btn-outline-primary {
    border-color: var(--color-border-emphasized);
    background: var(--color-background-surface);
    color: var(--color-text-primary);
}
.btn-outline-primary:hover { border-color: #262626; background: #262626; color: #fff; }

.btn-outline-secondary,
.btn-outline-info,
.btn-outline-success,
.btn-outline-warning {
    border-color: var(--color-border-emphasized);
    background: transparent;
    color: var(--color-text-primary);
}
.btn-outline-secondary:hover,
.btn-outline-info:hover,
.btn-outline-success:hover,
.btn-outline-warning:hover { border-color: var(--color-border-emphasized); background: var(--color-background-muted); color: var(--color-text-primary); }

.btn-success { border-color: #198100; background: #198100; color: #fff; }
.btn-warning { border-color: #745b00; background: #fdcf4f; color: #171717; }
.btn-danger { border-color: #a50c25; background: #a50c25; color: #fff; }
.btn-outline-danger { border-color: var(--color-border-red); background: transparent; color: var(--color-text-red); }
.btn-outline-danger:hover { border-color: #a50c25; background: var(--color-background-red); color: var(--color-text-red); }
.btn-link { color: var(--color-text-blue); }

.btn-group { gap: 2px; }
.btn-group > .btn { border-radius: var(--radius-element) !important; }

/* Forms ------------------------------------------------------------------- */
.form-label {
    margin-bottom: 6px;
    color: var(--color-text-primary);
    font-size: 0.8rem;
    font-weight: 600;
}

.form-control,
.form-select,
.input-group-text {
    min-height: 36px;
    border-color: var(--color-border-emphasized);
    border-radius: var(--radius-element);
    background-color: var(--color-background-surface);
    color: var(--color-text-primary);
    font-size: 0.8125rem;
}

.form-control,
.form-select { padding: 7px 10px; }
.form-control-lg,
.form-select-lg { min-height: 42px; padding: 9px 12px; font-size: 0.875rem; }
.form-control-sm,
.form-select-sm { min-height: 30px; padding: 4px 8px; font-size: 0.75rem; }

.form-control:focus,
.form-select:focus {
    border-color: #9eb7ff;
    background-color: var(--color-background-surface);
    color: var(--color-text-primary);
    box-shadow: var(--shadow-inset-selected);
}

.form-control::placeholder { color: var(--color-text-disabled); }
.input-group-text { justify-content: center; color: var(--color-icon-secondary); }
.input-group .input-group-text:first-child { border-radius: var(--radius-element) 0 0 var(--radius-element); }
.input-group .form-control:not(:first-child),
.input-group .form-select:not(:first-child) { border-radius: 0 var(--radius-element) var(--radius-element) 0; }
.input-group .form-control:not(:last-child),
.input-group .form-select:not(:last-child) { border-radius: 0; }
.input-group .btn:last-child { border-radius: 0 var(--radius-element) var(--radius-element) 0 !important; }
.form-text { color: var(--color-text-secondary); font-size: 0.72rem; }
.form-check-input { border-color: var(--color-border-emphasized); }
.form-check-input:checked { border-color: #262626; background-color: #262626; }

.password-field,
.script-content,
code,
pre {
    font-family: var(--font-family-code);
}
.password-field,
.script-content {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-element);
    background: var(--color-background-muted);
    color: var(--color-text-primary);
}

/* Tables ------------------------------------------------------------------ */
.table-responsive {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-container);
    background: var(--color-background-surface);
}

.card > .table-responsive,
.card-body > .table-responsive { border: 0; border-radius: 0; }

.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--color-text-primary);
    --bs-table-hover-bg: var(--color-overlay-hover);
    --bs-table-hover-color: var(--color-text-primary);
    width: 100%;
    margin: 0;
    border: 0;
    border-radius: 0;
    background: transparent;
    color: var(--color-text-primary);
    box-shadow: none;
    font-size: 0.78rem;
}

.table > :not(caption) > * > * {
    padding: 9px 12px;
    border-bottom-color: var(--color-border);
    background: transparent;
    color: inherit;
    vertical-align: middle;
}

.table thead th {
    height: 36px;
    padding-top: 7px;
    padding-bottom: 7px;
    border-bottom: 1px solid var(--color-border-emphasized);
    background: var(--color-background-muted);
    color: var(--color-text-secondary);
    font-size: 0.69rem;
    font-weight: 650;
    letter-spacing: 0.045em;
    text-transform: uppercase;
    white-space: nowrap;
}

.table tbody tr:last-child td { border-bottom: 0; }
.table tbody tr { transition: background var(--duration-fast); }
.table tbody tr:hover { background: var(--color-overlay-hover); }
.table td strong,
.table .fw-bold,
.user-name,
.user-email { font-weight: 600; }

.markdown-content table,
.content table {
    width: 100%;
    margin: var(--spacing-4) 0;
    border: 1px solid var(--color-border);
    border-collapse: separate;
    border-spacing: 0;
    border-radius: var(--radius-container);
    overflow: hidden;
}
.markdown-content th,
.markdown-content td,
.content th,
.content td { padding: 9px 12px; border: 0; border-bottom: 1px solid var(--color-border); }
.markdown-content th,
.content th { background: var(--color-background-muted); font-size: 0.72rem; font-weight: 650; }

/* Badges / navigation / menus --------------------------------------------- */
.badge {
    padding: 4px 7px;
    border-radius: 999px;
    font-size: 0.65rem;
    font-weight: 650;
    letter-spacing: 0.015em;
}
.badge.bg-primary { background: #262626 !important; color: #fff; }
.badge.bg-secondary { background: var(--color-background-gray) !important; color: var(--color-text-gray); }
.badge.bg-success { background: var(--color-background-green) !important; color: var(--color-text-green); }
.badge.bg-warning { background: var(--color-background-yellow) !important; color: var(--color-text-yellow); }
.badge.bg-danger { background: var(--color-background-red) !important; color: var(--color-text-red); }
.badge.bg-info { background: var(--color-background-cyan) !important; color: var(--color-text-cyan); }

.nav-tabs {
    gap: 4px;
    border-bottom: 1px solid var(--color-border) !important;
}
.nav-tabs .nav-link {
    margin: 0 0 -1px;
    padding: 8px 10px;
    border: 0;
    border-bottom: 2px solid transparent;
    border-radius: 0;
    color: var(--color-text-secondary);
    font-size: 0.78rem;
    font-weight: 550;
}
.nav-tabs .nav-link:hover { color: var(--color-text-primary); }
.nav-tabs .nav-link.active {
    border-bottom-color: #262626;
    background: transparent;
    color: var(--color-text-primary);
    font-weight: 650;
}

.dropdown-menu {
    padding: 5px;
    border: 1px solid var(--color-border-emphasized);
    border-radius: var(--radius-container);
    background: var(--color-background-popover);
    box-shadow: var(--shadow-high);
    color: var(--color-text-primary);
    font-size: 0.8rem;
}
.dropdown-item {
    min-height: 32px;
    padding: 6px 9px;
    border-radius: 7px;
    color: var(--color-text-primary);
}
.dropdown-item:hover,
.dropdown-item:focus { background: var(--color-background-muted); color: var(--color-text-primary); }
.dropdown-divider { border-color: var(--color-border); }
.dropdown-menu-dark { --bs-dropdown-bg: #262626; --bs-dropdown-link-color: #f1f1f1; --bs-dropdown-link-hover-bg: #404040; }

.pagination { gap: 4px; }
.page-link {
    display: grid;
    min-width: 32px;
    min-height: 32px;
    place-items: center;
    padding: 5px 8px;
    border: 1px solid var(--color-border);
    border-radius: var(--radius-element) !important;
    background: var(--color-background-surface);
    color: var(--color-text-primary);
    font-size: 0.75rem;
}
.page-link:hover { border-color: var(--color-border-emphasized); background: var(--color-background-muted); color: var(--color-text-primary); }
.page-item.active .page-link { border-color: #262626; background: #262626; color: #fff; }

/* Alerts and modals -------------------------------------------------------- */
.alert {
    display: flex;
    min-height: 42px;
    align-items: center;
    gap: 10px;
    padding: 9px 12px;
    border: 1px solid;
    border-radius: var(--radius-container);
    font-size: 0.8rem;
    font-weight: 500;
}
.alert-success { border-color: var(--color-border-green); background: var(--color-background-green); color: var(--color-text-green); }
.alert-danger { border-color: var(--color-border-red); background: var(--color-background-red); color: var(--color-text-red); }
.alert-warning { border-color: var(--color-border-yellow); background: var(--color-background-yellow); color: var(--color-text-yellow); }
.alert-info { border-color: var(--color-border-blue); background: var(--color-background-blue); color: var(--color-text-blue); }
.alert .btn-close { margin-left: auto; font-size: 0.7rem; }

.modal-backdrop { background: #111; }
.modal-content {
    border: 1px solid var(--color-border-emphasized);
    border-radius: var(--radius-container);
    background: var(--color-background-popover);
    color: var(--color-text-primary);
    box-shadow: var(--shadow-high);
}
.modal-header,
.modal-footer { padding: var(--spacing-4); border-color: var(--color-border); }
.modal-body { padding: var(--spacing-4); }
.modal-title { font-size: var(--font-size-lg); }

/* Dashboard --------------------------------------------------------------- */
.dashboard-page { display: grid; gap: var(--spacing-5); }
.dashboard-intro {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: var(--spacing-5);
    padding-bottom: var(--spacing-4);
    border-bottom: 1px solid var(--color-border);
}
.page-eyebrow {
    display: block;
    margin-bottom: 7px;
    color: var(--color-text-secondary);
    font-size: 0.68rem;
    font-weight: 650;
    letter-spacing: 0.1em;
    text-transform: uppercase;
}
.dashboard-intro h1 {
    font-size: clamp(1.55rem, 3vw, 2.2rem);
    font-weight: 650;
    letter-spacing: -0.04em;
}
.dashboard-intro p { max-width: 640px; margin: 8px 0 0; color: var(--color-text-secondary); }
.workspace-chip {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 7px 10px;
    border: 1px solid var(--color-border);
    border-radius: 999px;
    background: var(--color-background-surface);
    color: var(--color-text-secondary);
    font-size: 0.72rem;
    font-weight: 600;
    white-space: nowrap;
}

.command-search-panel {
    display: grid;
    grid-template-columns: minmax(210px, 0.72fr) minmax(320px, 1.28fr);
    gap: var(--spacing-6);
    align-items: center;
    padding: var(--spacing-6);
    border: 1px solid #333;
    border-radius: var(--radius-page);
    background:
        radial-gradient(circle at 86% 0%, rgba(255,255,255,0.10), transparent 18rem),
        #1b1b1b;
    color: #fff;
    box-shadow: var(--shadow-low);
}

.command-search-copy .page-eyebrow { color: #a3a3a3; }
.command-search-copy h2 { color: #fff; font-size: clamp(1.2rem, 2vw, 1.65rem); letter-spacing: -0.03em; }
.command-search-copy p { max-width: 480px; margin: 8px 0 0; color: #bdbdbd; font-size: 0.82rem; }

.command-search-form {
    display: flex;
    min-height: 48px;
    align-items: center;
    gap: 10px;
    padding: 6px;
    border: 1px solid rgba(255,255,255,0.18);
    border-radius: 14px;
    background: #fff;
    box-shadow: 0 12px 28px rgba(0,0,0,0.22);
}
.command-search-form > i { margin-left: 8px; color: #737373; }
.command-search-form input {
    min-width: 0;
    flex: 1;
    border: 0;
    outline: 0;
    background: transparent;
    color: #171717;
    font-size: 0.9rem;
}
.command-search-form .btn { min-height: 36px; flex: 0 0 auto; }
.command-search-hint { display: block; margin-top: 8px; color: #9f9f9f; font-size: 0.7rem; }

.metric-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border: 1px solid var(--color-border);
    border-radius: var(--radius-container);
    background: var(--color-background-surface);
    overflow: hidden;
}
.metric-item {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr);
    align-items: center;
    gap: var(--spacing-3);
    min-height: 82px;
    padding: var(--spacing-4);
    border-right: 1px solid var(--color-border);
    color: var(--color-text-primary);
    text-decoration: none;
    transition: background var(--duration-fast);
}
.metric-item:last-child { border-right: 0; }
.metric-item:hover { background: var(--color-overlay-hover); color: var(--color-text-primary); }
.metric-icon {
    display: grid;
    width: 34px;
    height: 34px;
    place-items: center;
    border-radius: 9px;
    background: var(--color-background-muted);
    color: var(--color-icon-primary);
}
.metric-copy { display: grid; }
.metric-copy strong { font-size: 1.25rem; font-weight: 650; line-height: 1.1; }
.metric-copy span { margin-top: 5px; color: var(--color-text-secondary); font-size: 0.72rem; }

.section-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-3);
    margin-bottom: var(--spacing-3);
}
.section-label h2 { font-size: var(--font-size-lg); font-weight: 650; }
.section-label p { margin: 0; color: var(--color-text-secondary); font-size: 0.75rem; }

.helpdesk-strip {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    border: 1px solid var(--color-border);
    border-radius: var(--radius-container);
    background: var(--color-background-surface);
    overflow: hidden;
}
.helpdesk-stat {
    display: flex;
    min-height: 58px;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-3);
    padding: 12px var(--spacing-4);
    border-right: 1px solid var(--color-border);
    color: var(--color-text-primary);
    text-decoration: none;
}
.helpdesk-stat:last-child { border-right: 0; }
.helpdesk-stat:hover { background: var(--color-overlay-hover); color: var(--color-text-primary); }
.helpdesk-stat span { color: var(--color-text-secondary); font-size: 0.72rem; }
.helpdesk-stat strong { font-size: 1rem; }

.dashboard-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.55fr) minmax(280px, 0.85fr);
    gap: var(--spacing-5);
    align-items: start;
}
.dashboard-column { display: grid; gap: var(--spacing-5); }
.dashboard-panel {
    border: 1px solid var(--color-border);
    border-radius: var(--radius-container);
    background: var(--color-background-surface);
    overflow: hidden;
}
.panel-header {
    display: flex;
    min-height: 48px;
    align-items: center;
    justify-content: space-between;
    gap: var(--spacing-3);
    padding: 10px var(--spacing-4);
    border-bottom: 1px solid var(--color-border);
}
.panel-title { display: flex; align-items: center; gap: 9px; }
.panel-title i { color: var(--color-icon-secondary); }
.panel-title h2 { font-size: var(--font-size-base); font-weight: 650; }
.panel-body { padding: var(--spacing-4); }
.panel-body.flush { padding: 0; }
.empty-state {
    display: grid;
    min-height: 140px;
    place-items: center;
    padding: var(--spacing-6);
    color: var(--color-text-secondary);
    text-align: center;
}
.empty-state i { margin-bottom: 10px; color: var(--color-icon-disabled); font-size: 1.25rem; }

.ticket-row,
.wiki-row,
.action-row,
.security-row {
    display: grid;
    min-height: 48px;
    align-items: center;
    gap: var(--spacing-3);
    padding: 9px var(--spacing-4);
    border-bottom: 1px solid var(--color-border);
    color: var(--color-text-primary);
    text-decoration: none;
}
.ticket-row:last-child,
.wiki-row:last-child,
.action-row:last-child { border-bottom: 0; }
.ticket-row { grid-template-columns: auto minmax(0, 1fr) auto; }
.ticket-row:hover,
.wiki-row:hover,
.action-row:hover { background: var(--color-overlay-hover); color: var(--color-text-primary); }
.ticket-copy,
.wiki-copy { display: grid; min-width: 0; }
.ticket-copy strong,
.wiki-copy strong { overflow: hidden; font-size: 0.79rem; text-overflow: ellipsis; white-space: nowrap; }
.ticket-copy small,
.wiki-copy small { overflow: hidden; margin-top: 3px; text-overflow: ellipsis; white-space: nowrap; }
.wiki-row { grid-template-columns: 30px minmax(0, 1fr) auto; }
.row-icon {
    display: grid;
    width: 30px;
    height: 30px;
    place-items: center;
    border-radius: 8px;
    background: var(--color-background-muted);
    color: var(--color-icon-secondary);
}

.security-row { grid-template-columns: 34px minmax(0, 1fr) auto; border-bottom: 0; }
.security-copy { display: grid; }
.security-copy strong { font-size: 0.8rem; }
.security-copy small { margin-top: 3px; }

.action-list { display: grid; }
.action-row { grid-template-columns: 32px minmax(0, 1fr) auto; }
.action-row .row-icon { width: 32px; height: 32px; }
.action-copy { display: grid; }
.action-copy strong { font-size: 0.78rem; }
.action-copy small { margin-top: 2px; }
.action-row > i:last-child { color: var(--color-icon-disabled); font-size: 0.7rem; }

/* Auth -------------------------------------------------------------------- */
.auth-shell {
    position: relative;
    min-height: 100dvh;
    background: var(--color-background-body);
}
.auth-flashes {
    position: fixed;
    z-index: 30;
    inset: var(--spacing-4) var(--spacing-4) auto auto;
    width: min(420px, calc(100vw - 32px));
}
.login-layout {
    display: grid;
    grid-template-columns: minmax(360px, 0.9fr) minmax(440px, 1.1fr);
    min-height: 100dvh;
}
.login-story {
    position: relative;
    display: grid;
    align-content: space-between;
    min-height: 100%;
    padding: clamp(32px, 5vw, 72px);
    overflow: hidden;
    background:
        radial-gradient(circle at 75% 20%, rgba(255,255,255,0.12), transparent 18rem),
        radial-gradient(circle at 8% 85%, rgba(109,156,254,0.12), transparent 20rem),
        #171717;
    color: #fff;
}
.login-story::before,
.login-story::after {
    content: "";
    position: absolute;
    border: 1px solid rgba(255,255,255,0.09);
    border-radius: 50%;
}
.login-story::before { width: 520px; height: 520px; right: -240px; top: -240px; }
.login-story::after { width: 360px; height: 360px; left: -220px; bottom: -180px; }
.login-brand {
    position: relative;
    z-index: 1;
    display: flex;
    align-items: center;
    gap: var(--spacing-3);
}
.login-brand .brand-mark { border-color: rgba(255,255,255,0.18); }
.login-brand-copy { display: grid; }
.login-brand-copy strong { font-size: 0.9rem; }
.login-brand-copy small { margin-top: 3px; color: #a3a3a3; font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase; }
.login-story-copy { position: relative; z-index: 1; max-width: 560px; padding: 12vh 0; }
.login-story-copy .page-eyebrow { color: #9f9f9f; }
.login-story-copy h1 { color: #fff; font-size: clamp(2.2rem, 5vw, 4.2rem); font-weight: 600; letter-spacing: -0.055em; line-height: 0.98; }
.login-story-copy p { max-width: 480px; margin: var(--spacing-5) 0 0; color: #bdbdbd; font-size: clamp(0.9rem, 1.4vw, 1.05rem); line-height: 1.65; }
.login-proof {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    border-top: 1px solid rgba(255,255,255,0.12);
}
.login-proof div { padding: var(--spacing-4) var(--spacing-4) 0 0; }
.login-proof strong { display: block; color: #fff; font-size: 0.78rem; }
.login-proof span { display: block; margin-top: 4px; color: #858585; font-size: 0.68rem; }
.login-form-region {
    display: grid;
    min-height: 100%;
    place-items: center;
    padding: clamp(28px, 6vw, 84px);
    background: var(--color-background-body);
}
.login-form-wrap { width: min(100%, 430px); }
.login-form-heading { margin-bottom: var(--spacing-6); }
.login-form-heading h2 { font-size: 1.65rem; letter-spacing: -0.04em; }
.login-form-heading p { margin: 8px 0 0; color: var(--color-text-secondary); }
.login-card {
    padding: var(--spacing-6);
    border: 1px solid var(--color-border);
    border-radius: var(--radius-page);
    background: var(--color-background-surface);
    box-shadow: var(--shadow-low);
}
.login-card .form-control { min-height: 44px; }
.login-card .btn-primary { min-height: 42px; width: 100%; margin-top: var(--spacing-2); }
.login-help {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: var(--spacing-4);
    color: var(--color-text-secondary);
    font-size: 0.7rem;
}

/* Misc compatibility ------------------------------------------------------- */
.progress { height: 7px; border-radius: 999px; background: var(--color-track); }
.progress-bar { border-radius: 999px; background: #262626; }
.border-bottom { border-bottom-color: var(--color-border) !important; }
.border-end { border-right-color: var(--color-border) !important; }
hr { border-color: var(--color-border); opacity: 1; }
.theme-toggle { display: none !important; }

.board-card,
.site-card .card,
.printer-card .card { transition: transform var(--duration-fast) var(--ease-standard), border-color var(--duration-fast); }
.board-card:hover,
.site-card .card:hover,
.printer-card .card:hover { transform: translateY(-2px); box-shadow: var(--shadow-low); }

/* Responsive --------------------------------------------------------------- */
@media (max-width: 1180px) {
    .topbar { grid-template-columns: minmax(150px, 1fr) minmax(260px, 420px) auto; }
    .topbar-mode { display: none; }
    .command-search-panel { grid-template-columns: 1fr; gap: var(--spacing-4); }
}

@media (max-width: 991.98px) {
    :root { --app-rail: 248px; }
    .app-shell { grid-template-columns: 1fr; }
    .sidebar {
        transform: translateX(-102%);
        transition: transform var(--duration-medium) var(--ease-standard);
        box-shadow: var(--shadow-high);
    }
    .sidebar.show { transform: translateX(0); }
    .sidebar-close { display: grid; }
    .sidebar-brand .brand-link { padding-right: 36px; }
    .main-content { grid-column: 1; }
    .mobile-nav-toggle { display: inline-grid; }
    .mobile-overlay {
        position: fixed;
        inset: 0;
        z-index: 1040;
        display: block;
        background: rgba(17,17,17,0.56);
        opacity: 0;
        pointer-events: none;
        transition: opacity var(--duration-medium) var(--ease-standard);
    }
    .mobile-overlay.show { opacity: 1; pointer-events: auto; }
    .topbar { grid-template-columns: minmax(180px, 1fr) minmax(240px, 420px) auto; padding: 0 var(--spacing-4); }
    .topbar-title .topbar-kicker { display: none; }
    .dashboard-grid { grid-template-columns: 1fr; }
}

@media (max-width: 767.98px) {
    .topbar { grid-template-columns: 1fr auto; min-height: 56px; gap: var(--spacing-2); }
    .topbar-search { order: 3; grid-column: 1 / -1; display: none; }
    .topbar-title strong { font-size: 0.78rem; }
    .content-shell { padding: var(--spacing-4); }
    .content-shell > .d-flex.justify-content-between.border-bottom,
    .content-shell > .d-flex.justify-content-between.flex-wrap,
    .page-header { align-items: flex-start !important; flex-direction: column; }
    .content-shell .btn-toolbar { width: 100%; }
    .content-shell .btn-toolbar .btn,
    .content-shell .btn-toolbar .btn-group { flex: 1; }
    .dashboard-intro { align-items: flex-start; flex-direction: column; }
    .command-search-panel { padding: var(--spacing-5); border-radius: var(--radius-container); }
    .command-search-form { align-items: stretch; flex-wrap: wrap; }
    .command-search-form input { min-height: 34px; flex-basis: calc(100% - 42px); }
    .command-search-form .btn { width: 100%; }
    .metric-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .metric-item:nth-child(2) { border-right: 0; }
    .metric-item:nth-child(-n+2) { border-bottom: 1px solid var(--color-border); }
    .helpdesk-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .helpdesk-stat:nth-child(2) { border-right: 0; }
    .helpdesk-stat:nth-child(-n+2) { border-bottom: 1px solid var(--color-border); }
    .login-layout { grid-template-columns: 1fr; }
    .login-story { display: none; }
    .login-form-region { min-height: 100dvh; padding: var(--spacing-5); }
    .login-card { padding: var(--spacing-5); border-radius: var(--radius-container); }
    .table-responsive-mobile,
    .table-responsive { overflow-x: auto; -webkit-overflow-scrolling: touch; }
    .table-responsive-mobile table { min-width: 680px; }
    .form-control,
    .form-select { font-size: 16px; }
    .modal-dialog { margin: var(--spacing-4); }
    .board-columns { flex-direction: column !important; }
    .board-column { width: 100% !important; }
}

@media (max-width: 479.98px) {
    .content-shell { padding: var(--spacing-3); }
    .metric-strip,
    .helpdesk-strip { grid-template-columns: 1fr; }
    .metric-item,
    .metric-item:nth-child(2),
    .helpdesk-stat,
    .helpdesk-stat:nth-child(2) { border-right: 0; border-bottom: 1px solid var(--color-border); }
    .metric-item:last-child,
    .helpdesk-stat:last-child { border-bottom: 0; }
    .workspace-chip { display: none; }
    .dashboard-panel .panel-header { align-items: flex-start; flex-direction: column; }
    .security-row { grid-template-columns: 32px minmax(0, 1fr); }
    .security-row .btn { grid-column: 1 / -1; width: 100%; }
}

@media (prefers-reduced-motion: reduce) {
    *,
    *::before,
    *::after {
        scroll-behavior: auto !important;
        transition-duration: 0.01ms !important;
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
    }
}

@media print {
    .sidebar,
    .topbar,
    .mobile-overlay,
    .mobile-nav-toggle { display: none !important; }
    .app-shell { display: block; }
    .main-content { display: block; }
    .content-shell { width: 100%; max-width: none; padding: 0; }
    .card,
    .dashboard-panel { break-inside: avoid; box-shadow: none; }
}
