/*
 * Contour v5.0
 * Copyright (C) 2025 NIKO Technologies Ltd.
 *
 * This library is free software; you can redistribute it and/or
 * modify it under the terms of the GNU Lesser General Public
 * License as published by the Free Software Foundation; version 3
 * of the License.
 *
 * This library is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
 * Lesser General Public License for more details.
 *
 * You should have received a copy of the GNU Lesser General Public
 * License along with this library; if not, write to the Free Software
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301  USA
 */

/* ── Design tokens ────────────────────────────────────────────────────────── */
:root {
    /* Brand palette */
    --c-navy:        #0f2340;   /* primary dark — navbar, headings */
    --c-teal:        #0d7a6e;   /* primary action — buttons, links */
    --c-teal-light:  #13a394;   /* hover / focus ring */
    --c-orange:      #e07b2a;   /* accent — badges, highlights */
    --c-orange-light:#f59d55;   /* accent hover */

    /* Neutral surface */
    --c-bg:          #f4f6f8;
    --c-surface:     #ffffff;
    --c-border:      #dee2e6;
    --c-text:        #1a2233;
    --c-muted:       #6c757d;

    /* Status */
    --c-success:     #1a7a4a;
    --c-danger:      #b02a37;
    --c-warning:     #8a6500;

    /* Spacing & radii */
    --radius-sm:     4px;
    --radius:        6px;
    --radius-lg:     10px;
    --shadow-sm:     0 1px 3px rgba(15,35,64,.10);
    --shadow:        0 2px 8px rgba(15,35,64,.12);
    --shadow-lg:     0 14px 36px rgba(15,35,64,.12);
}

/* ── Base ─────────────────────────────────────────────────────────────────── */
body {
    margin: 0;
    background-color: var(--c-bg);
    color: var(--c-text);
    font-family: "Inter", "Segoe UI", system-ui, sans-serif;
    font-size: 0.9375rem;
    line-height: 1.5;
}

*, *::before, *::after { box-sizing: border-box; }

a {
    color: var(--c-teal);
    text-decoration: none;
}
a:hover { color: var(--c-teal-light); text-decoration: underline; }

a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
[tabindex]:focus-visible {
    outline: 3px solid rgba(224, 123, 42, .75);
    outline-offset: 3px;
    box-shadow: 0 0 0 3px rgba(19, 163, 148, .20);
}

.skip-link {
    position: absolute;
    top: .75rem;
    left: .75rem;
    z-index: 2000;
    transform: translateY(-160%);
    padding: .6rem .9rem;
    border-radius: var(--radius);
    background: var(--c-orange);
    color: #111827;
    font-weight: 700;
    box-shadow: var(--shadow-lg);
    transition: transform .15s ease;
}
.skip-link:focus,
.skip-link:focus-visible {
    transform: translateY(0);
    color: #111827;
    text-decoration: none;
}

.app-content:focus {
    outline: none;
}

/* ── Local Bootstrap-compatible layout fallback ─────────────────────────────
   Keeps Contour usable when CDN Bootstrap is unavailable. */
.container,
.container-fluid {
    width: 100%;
    padding-right: 1rem;
    padding-left: 1rem;
    margin-right: auto;
    margin-left: auto;
}
@media (min-width: 576px) { .container { max-width: 540px; } }
@media (min-width: 768px) { .container { max-width: 720px; } }
@media (min-width: 992px) { .container { max-width: 960px; } }
@media (min-width: 1200px) { .container { max-width: 1140px; } }
@media (min-width: 1400px) { .container { max-width: 1320px; } }

.breadcrumb {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    padding: 0;
    margin: 0;
    list-style: none;
}
.breadcrumb-item {
    display: flex;
    align-items: center;
    min-width: 0;
}
.breadcrumb-item + .breadcrumb-item {
    padding-left: .5rem;
}
.breadcrumb-item + .breadcrumb-item::before {
    padding-right: .5rem;
    color: var(--c-muted);
    content: "/";
}
.breadcrumb-item.active { color: var(--c-muted); }

.row {
    display: flex;
    flex-wrap: wrap;
    margin-right: -.75rem;
    margin-left: -.75rem;
}
.row > * {
    width: 100%;
    max-width: 100%;
    padding-right: .75rem;
    padding-left: .75rem;
}
.g-2 { row-gap: .5rem; }
.g-3 { row-gap: 1rem; }
.g-4 { row-gap: 1.5rem; }
.col { flex: 1 0 0%; }
.col-2 { flex: 0 0 auto; width: 16.666667%; }
.col-3 { flex: 0 0 auto; width: 25%; }
.col-4 { flex: 0 0 auto; width: 33.333333%; }
.col-5 { flex: 0 0 auto; width: 41.666667%; }
.col-6 { flex: 0 0 auto; width: 50%; }
.col-7 { flex: 0 0 auto; width: 58.333333%; }
.col-8 { flex: 0 0 auto; width: 66.666667%; }
@media (min-width: 576px) {
    .col-sm-8 { flex: 0 0 auto; width: 66.666667%; }
}
@media (min-width: 768px) {
    .col-md-1 { flex: 0 0 auto; width: 8.333333%; }
    .col-md-2 { flex: 0 0 auto; width: 16.666667%; }
    .col-md-3 { flex: 0 0 auto; width: 25%; }
    .col-md-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-md-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-md-6 { flex: 0 0 auto; width: 50%; }
}
@media (min-width: 992px) {
    .col-lg-4 { flex: 0 0 auto; width: 33.333333%; }
    .col-lg-5 { flex: 0 0 auto; width: 41.666667%; }
    .col-lg-6 { flex: 0 0 auto; width: 50%; }
    .col-lg-7 { flex: 0 0 auto; width: 58.333333%; }
    .col-lg-8 { flex: 0 0 auto; width: 66.666667%; }
}
@media (min-width: 1200px) {
    .col-xl { flex: 1 0 0%; }
    .col-xl-4 { flex: 0 0 auto; width: 33.333333%; }
}

.d-flex { display: flex !important; }
.d-grid { display: grid !important; }
.d-block { display: block !important; }
.d-inline-block { display: inline-block !important; }
.d-inline { display: inline !important; }
.d-none { display: none !important; }
.align-items-center { align-items: center !important; }
.align-items-end { align-items: flex-end !important; }
.align-items-start { align-items: flex-start !important; }
.justify-content-center { justify-content: center !important; }
.justify-content-between { justify-content: space-between !important; }
.flex-wrap { flex-wrap: wrap !important; }
.flex-grow-1 { flex-grow: 1 !important; }
.flex-column { flex-direction: column !important; }
.gap-1 { gap: .25rem !important; }
.gap-2 { gap: .5rem !important; }
.gap-3 { gap: 1rem !important; }
.gap-4 { gap: 1.5rem !important; }
.align-middle { vertical-align: middle !important; }
.position-fixed { position: fixed !important; }
.position-relative { position: relative !important; }
.bottom-0 { bottom: 0 !important; }
.end-0 { right: 0 !important; }
.ms-auto { margin-left: auto !important; }
.ms-1 { margin-left: .25rem !important; }
.ms-2 { margin-left: .5rem !important; }
.ms-4 { margin-left: 1.5rem !important; }
.me-1 { margin-right: .25rem !important; }
.me-2 { margin-right: .5rem !important; }
.mt-1 { margin-top: .25rem !important; }
.mt-2 { margin-top: .5rem !important; }
.mt-3 { margin-top: 1rem !important; }
.mt-4 { margin-top: 1.5rem !important; }
.mt-5 { margin-top: 3rem !important; }
.mb-0 { margin-bottom: 0 !important; }
.mb-1 { margin-bottom: .25rem !important; }
.mb-2 { margin-bottom: .5rem !important; }
.mb-3 { margin-bottom: 1rem !important; }
.mb-4 { margin-bottom: 1.5rem !important; }
.mb-5 { margin-bottom: 3rem !important; }
.my-3 { margin-top: 1rem !important; margin-bottom: 1rem !important; }
.p-0 { padding: 0 !important; }
.p-2 { padding: .5rem !important; }
.p-3 { padding: 1rem !important; }
.p-4 { padding: 1.5rem !important; }
.ps-3 { padding-left: 1rem !important; }
.px-2 { padding-right: .5rem !important; padding-left: .5rem !important; }
.px-5 { padding-right: 3rem !important; padding-left: 3rem !important; }
.py-1 { padding-top: .25rem !important; padding-bottom: .25rem !important; }
.py-2 { padding-top: .5rem !important; padding-bottom: .5rem !important; }
.py-3 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
.py-4 { padding-top: 1.5rem !important; padding-bottom: 1.5rem !important; }
.py-5 { padding-top: 3rem !important; padding-bottom: 3rem !important; }
.w-100 { width: 100% !important; }
.w-auto { width: auto !important; }
.h-100 { height: 100% !important; }
.text-center { text-align: center !important; }
.text-end { text-align: right !important; }
.text-muted { color: var(--c-muted) !important; }
.text-danger { color: var(--c-danger) !important; }
.text-dark { color: var(--c-text) !important; }
.text-warning { color: var(--c-warning) !important; }
.text-decoration-none { text-decoration: none !important; }
.text-nowrap { white-space: nowrap !important; }
.text-uppercase { text-transform: uppercase !important; }
.fw-bold { font-weight: 700 !important; }
.fw-normal { font-weight: 400 !important; }
.fw-semibold { font-weight: 600 !important; }
.small { font-size: .875em !important; }
.fs-6 { font-size: 1rem !important; }
.display-6 { font-size: 2rem; font-weight: 300; line-height: 1.2; }
.bg-danger { background-color: var(--c-danger) !important; }
.bg-info { background-color: #d9f2f7 !important; }
.bg-light { background-color: #f8fafc !important; }
.bg-success { background-color: var(--c-success) !important; }
.bg-transparent { background-color: transparent !important; }
.border { border: 1px solid var(--c-border) !important; }
.rounded { border-radius: var(--radius) !important; }
.rounded-0 { border-radius: 0 !important; }
.shadow-sm { box-shadow: var(--shadow-sm) !important; }
.shadow { box-shadow: var(--shadow) !important; }
.user-select-all { user-select: all !important; }
@media (min-width: 992px) {
    .mt-lg-0 { margin-top: 0 !important; }
}
.visually-hidden {
    position: absolute !important;
    width: 1px !important;
    height: 1px !important;
    padding: 0 !important;
    margin: -1px !important;
    overflow: hidden !important;
    clip: rect(0, 0, 0, 0) !important;
    white-space: nowrap !important;
    border: 0 !important;
}

/* ── Navbar ───────────────────────────────────────────────────────────────── */
.navbar {
    background-color: var(--c-navy) !important;
    padding-top: 0;
    padding-bottom: 0;
    box-shadow: 0 2px 6px rgba(0,0,0,.3);
}
.navbar .container-fluid {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
}

.navbar-brand {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: 1.25rem;
    font-weight: 700;
    letter-spacing: -.3px;
    color: #ffffff !important;
    padding: 14px 0;
}
.navbar-collapse {
    display: flex !important;
    flex-basis: auto;
    flex-grow: 1;
    align-items: center;
}
.navbar-nav {
    display: flex;
    flex-direction: row;
    flex-wrap: wrap;
    align-items: center;
    padding-left: 0;
    margin: 0;
    list-style: none;
}
.nav-item { list-style: none; }
.navbar .dropdown {
    position: relative;
}
.navbar-brand span.brand-dot {
    color: var(--c-orange);
}

.navbar-nav .nav-link {
    display: block;
    appearance: none;
    background: transparent;
    border-top: 0;
    border-right: 0;
    border-left: 0;
    color: rgba(255,255,255,.75) !important;
    font-size: 0.82rem;
    font-weight: 500;
    padding: 12px 8px !important;
    border-bottom: 3px solid transparent;
    transition: color .15s, border-color .15s;
}
.navbar-nav .nav-link:hover,
.navbar-nav .nav-link.active {
    color: #ffffff !important;
    border-bottom-color: var(--c-orange);
}
.compact-mode-toggle {
    cursor: pointer;
}
.shortcut-help-toggle {
    cursor: pointer;
}
.navbar .dropdown-toggle::after {
    content: "▾";
    display: inline-block;
    margin-left: .35rem;
    font-size: .7em;
    transform: translateY(-1px);
}
.navbar .dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 13rem;
    padding: .35rem 0;
    margin: 0;
    background: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    z-index: 1100;
}
.navbar .dropdown-menu.show,
.navbar .dropdown.is-open > .dropdown-menu {
    display: block;
}
.navbar .dropdown-item {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    width: 100%;
    padding: .45rem .85rem;
    color: var(--c-text);
    font-size: .875rem;
    white-space: nowrap;
    text-decoration: none;
}
.navbar .dropdown-item:hover,
.navbar .dropdown-item:focus {
    background: #f0f7f6;
    color: var(--c-teal);
    text-decoration: none;
}
.dropdown-divider {
    height: 0;
    margin: .35rem 0;
    overflow: hidden;
    border: 0;
    border-top: 1px solid var(--c-border);
}

.navbar-toggler {
    display: none;
    margin-left: auto;
    padding: .25rem .75rem;
    font-size: 1.25rem;
    line-height: 1;
    background: transparent;
    border: 1px solid rgba(255,255,255,.3);
    border-radius: var(--radius);
}
.navbar-toggler-icon {
    display: inline-block;
    width: 1.5em;
    height: 1.5em;
    vertical-align: middle;
    background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 30 30'%3e%3cpath stroke='rgba%28255%2C255%2C255%2C.75%29' stroke-linecap='round' stroke-miterlimit='10' stroke-width='2' d='M4 7h22M4 15h22M4 23h22'/%3e%3c/svg%3e");
    background-repeat: no-repeat;
    background-position: center;
    background-size: 100%;
}
@media (max-width: 991.98px) {
    .navbar-toggler { display: block; }
    .navbar-collapse {
        flex-basis: 100%;
        display: block !important;
        padding-bottom: .75rem;
    }
    .navbar-collapse:not(.show) { display: none !important; }
    .navbar-collapse.show { display: block !important; }
    .navbar-nav {
        align-items: stretch;
        flex-direction: column;
    }
    .navbar .dropdown-menu {
        position: static;
        min-width: 100%;
        box-shadow: none;
        border-color: rgba(255,255,255,.18);
        background: rgba(255,255,255,.06);
        margin-bottom: .35rem;
    }
    .navbar .dropdown-item {
        color: rgba(255,255,255,.82);
        padding-left: 1rem;
    }
    .navbar .dropdown-item:hover,
    .navbar .dropdown-item:focus {
        background: rgba(255,255,255,.10);
        color: #fff;
    }
    .dropdown-divider {
        border-top-color: rgba(255,255,255,.18);
    }
    .navbar-nav.ms-auto { margin-left: 0 !important; }
    .navbar-nav .nav-link { padding: 9px 0 !important; }
    #globalSearch { width: 100% !important; }
}

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: .4rem;
    min-height: 38px;
    padding: .5rem .9rem;
    border: 1px solid transparent;
    border-radius: var(--radius);
    font-weight: 600;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    transition: background-color .15s, border-color .15s, color .15s;
}
.btn:hover { text-decoration: none; }
.btn-sm {
    min-height: 32px;
    padding: .35rem .65rem;
    font-size: .875rem;
    border-radius: var(--radius-sm);
}
.btn-lg {
    min-height: 44px;
    padding: .7rem 1.1rem;
    font-size: 1rem;
}
.btn + .btn {
    margin-left: .35rem;
}
.d-flex .btn + .btn,
.btn-group .btn + .btn,
.input-group .btn + .btn {
    margin-left: 0;
}
.btn-primary {
    background-color: var(--c-teal);
    border-color: var(--c-teal);
    color: #fff;
}
.btn-primary:hover, .btn-primary:focus {
    background-color: var(--c-teal-light);
    border-color: var(--c-teal-light);
    color: #fff;
}

.btn-outline-primary {
    color: var(--c-teal);
    border-color: var(--c-teal);
}
.btn-outline-primary:hover {
    background-color: var(--c-teal);
    border-color: var(--c-teal);
    color: #fff;
}

.btn-outline-secondary {
    color: var(--c-muted);
    border-color: var(--c-border);
}
.btn-outline-secondary:hover {
    background-color: var(--c-border);
    color: var(--c-text);
}
.btn-secondary {
    background-color: #667085;
    border-color: #667085;
    color: #fff;
}
.btn-secondary:hover,
.btn-secondary:focus {
    background-color: #596579;
    border-color: #596579;
    color: #fff;
}
.btn-danger {
    background-color: var(--c-danger);
    border-color: var(--c-danger);
    color: #fff;
}
.btn-danger:hover,
.btn-danger:focus {
    background-color: #8f2230;
    border-color: #8f2230;
    color: #fff;
}
.btn-outline-danger {
    color: var(--c-danger);
    border-color: #efb3bc;
    background-color: #fff;
}
.btn-outline-danger:hover,
.btn-outline-danger:focus {
    background-color: var(--c-danger);
    border-color: var(--c-danger);
    color: #fff;
}
.btn-info {
    background-color: #0aa6c2;
    border-color: #0aa6c2;
    color: #fff;
}
.btn-info:hover,
.btn-info:focus {
    background-color: #088aa1;
    border-color: #088aa1;
    color: #fff;
}
.btn-link {
    color: var(--c-teal);
    background: transparent;
    border-color: transparent;
    box-shadow: none;
}
.btn-link:hover,
.btn-link:focus {
    color: var(--c-teal-light);
    text-decoration: underline;
}

/* ── Cards ────────────────────────────────────────────────────────────────── */
.card {
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    background: var(--c-surface);
}
.card-body { padding: 1.25rem; }
.card-header {
    background-color: transparent;
    border-bottom: 1px solid var(--c-border);
    font-weight: 600;
    font-size: 0.875rem;
    padding: .85rem 1.25rem;
}
.card-footer {
    padding: .85rem 1.25rem;
    border-top: 1px solid var(--c-border);
}
.card-title {
    margin-top: 0;
    margin-bottom: .85rem;
    color: var(--c-navy);
}
.card-text:last-child,
.card-body > p:last-child {
    margin-bottom: 0;
}
.card-header h1,
.card-header h2,
.card-header h3,
.card-header h4,
.card-header h5,
.card-header h6 {
    margin: 0;
}
.app-content {
    padding-top: .5rem;
    padding-bottom: 3rem;
}
.page-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 1rem;
    margin-bottom: 1.25rem;
}
.page-kicker {
    margin-bottom: .25rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.page-subtitle {
    max-width: 760px;
    margin-top: .35rem;
    margin-bottom: 1.25rem;
    color: var(--c-muted);
}
.page-guide {
    margin: 0 0 1.25rem;
    overflow: hidden;
    border: 1px solid rgba(13, 122, 110, .24);
    border-radius: var(--radius-lg);
    background: linear-gradient(135deg, rgba(13, 122, 110, .07), rgba(255, 255, 255, .98) 55%);
    box-shadow: var(--shadow-sm);
}
.page-guide > summary {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    align-items: center;
    gap: .85rem;
    min-height: 48px;
    padding: .65rem .9rem;
    cursor: pointer;
    list-style: none;
}
.page-guide > summary::-webkit-details-marker { display: none; }
.page-guide > summary:focus-visible {
    outline: 3px solid rgba(13, 122, 110, .28);
    outline-offset: -3px;
}
.page-guide-label {
    color: var(--c-teal);
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
}
.page-guide-start {
    min-width: 0;
    color: var(--c-ink);
    font-size: .88rem;
}
.page-guide-toggle {
    border: 1px solid rgba(13, 122, 110, .3);
    border-radius: 999px;
    padding: .2rem .55rem;
    color: var(--c-teal);
    background: rgba(255, 255, 255, .8);
    font-size: .72rem;
    font-weight: 800;
}
.page-guide[open] .page-guide-toggle::after { content: " −"; }
.page-guide:not([open]) .page-guide-toggle::after { content: " +"; }
.page-guide-body {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, .8fr);
    gap: 1.25rem;
    padding: .9rem 1rem 1rem;
    border-top: 1px solid rgba(13, 122, 110, .16);
    background: rgba(255, 255, 255, .72);
}
.page-guide-body p,
.page-guide-body ol { margin-bottom: 0; }
.page-guide-body ol { padding-left: 1.15rem; }
.page-guide-body li + li { margin-top: .25rem; }
.page-guide-heading {
    margin-bottom: .35rem;
    color: var(--c-muted);
    font-size: .72rem;
    font-weight: 900;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.page-guide-tip {
    margin-top: .55rem;
    color: var(--c-muted);
    font-size: .82rem;
}
.ux-task-switcher {
    margin: 0 0 1.25rem;
    padding: .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: var(--c-surface);
    box-shadow: var(--shadow-sm);
}
.ux-task-switcher-head {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: .65rem;
}
.ux-task-switcher-title {
    color: var(--c-navy);
    font-size: .9rem;
    font-weight: 900;
}
.ux-task-switcher-description {
    color: var(--c-muted);
    font-size: .8rem;
    text-align: right;
}
.ux-task-switcher-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
}
.ux-task-switcher [data-ux-task] {
    border: 1px solid var(--c-border);
    border-radius: 999px;
    padding: .45rem .8rem;
    color: var(--c-muted);
    background: #fff;
    font-size: .82rem;
    font-weight: 800;
}
.ux-task-switcher [data-ux-task]:hover,
.ux-task-switcher [data-ux-task].active {
    border-color: var(--c-teal);
    color: #fff;
    background: var(--c-teal);
}
[hidden] { display: none !important; }
.program-workspace-grid,
.status-workspace-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
    align-items: start;
}
.program-workspace-panel,
.status-workspace-grid .card {
    min-width: 0;
    margin-bottom: 0 !important;
}
.program-panel-wide,
#launchReadinessPanel {
    grid-column: 1 / -1;
}
.status-workspace-column { display: contents; }
.required-fields-note {
    margin: 0 0 1rem;
    padding: .7rem .85rem;
    border-left: 3px solid var(--c-teal);
    border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
    color: var(--c-muted);
    background: rgba(13, 122, 110, .07);
    font-size: .84rem;
}
.advanced-fields {
    overflow: hidden;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fbfcfd;
}
.advanced-fields > summary {
    display: flex;
    align-items: center;
    gap: .65rem;
    padding: .75rem .9rem;
    cursor: pointer;
    color: var(--c-navy);
    font-size: .88rem;
    font-weight: 800;
    list-style-position: inside;
}
.advanced-fields > summary:hover { background: rgba(13, 122, 110, .05); }
.advanced-fields > summary span {
    margin-left: auto;
    color: var(--c-muted);
    font-size: .72rem;
    font-weight: 700;
}
.advanced-fields[open] > summary {
    border-bottom: 1px solid var(--c-border);
    background: rgba(13, 122, 110, .05);
}
.advanced-fields-body { padding: 1rem; }
.workspace-launch-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1rem;
}
.workspace-launch-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1rem;
    padding: 1.25rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: var(--c-surface);
    box-shadow: var(--shadow-sm);
}
.workspace-launch-card-wide { grid-column: 1 / -1; }
.workspace-launch-number {
    display: grid;
    place-items: center;
    width: 2.4rem;
    height: 2.4rem;
    border-radius: .75rem;
    color: var(--c-teal);
    background: rgba(13, 122, 110, .1);
    font-size: .78rem;
    font-weight: 900;
}
.workspace-launch-card h2 { margin-bottom: .4rem; }
.workspace-launch-card p { margin-bottom: .9rem; color: var(--c-muted); }
.workspace-launch-links {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
}
.certification-export-menu {
    max-height: min(72vh, 620px);
    overflow-y: auto;
}
.metric-disclosure {
    overflow: hidden;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: rgba(255, 255, 255, .72);
}
.metric-disclosure > summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem 1rem;
    cursor: pointer;
    color: var(--c-navy);
    font-weight: 800;
}
.metric-disclosure > summary::marker { color: var(--c-teal); }
.metric-disclosure > .row { padding: 0 1rem 1rem; }
@media (max-width: 767.98px) {
    .page-guide > summary {
        grid-template-columns: 1fr auto;
    }
    .page-guide-label {
        grid-column: 1 / -1;
    }
    .page-guide-body,
    .workspace-launch-grid,
    .program-workspace-grid,
    .status-workspace-grid {
        grid-template-columns: minmax(0, 1fr);
    }
    .workspace-launch-card-wide,
    .program-panel-wide,
    #launchReadinessPanel { grid-column: auto; }
    .ux-task-switcher-head {
        display: block;
    }
    .ux-task-switcher-description {
        margin-top: .25rem;
        text-align: left;
    }
    .ux-task-switcher-tabs {
        display: grid;
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }
    .ux-task-switcher [data-ux-task] {
        width: 100%;
        border-radius: .7rem;
    }
}
.form-shell,
.table-shell,
.panel-shell {
    background: var(--c-surface);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: 1.25rem;
    margin-bottom: 1.25rem;
}
.form-shell-narrow { max-width: 980px; }
.form-shell-compact { max-width: 720px; }
.filter-toolbar {
    background:
        linear-gradient(180deg, rgba(255,255,255,.98), rgba(248,250,252,.98));
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: 1rem;
    margin-bottom: 1rem;
}
.filter-toolbar .form-label {
    color: var(--c-muted);
    font-size: .75rem;
    font-weight: 800;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.filter-toolbar .row {
    row-gap: .75rem;
}
.saved-filter-widget {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .55rem;
    margin-top: .75rem;
    padding-top: .75rem;
    border-top: 1px solid rgba(204,214,224,.72);
}
.saved-filter-widget .saved-filter-title {
    color: var(--c-muted);
    font-size: .75rem;
    font-weight: 900;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.saved-filter-widget input {
    max-width: 220px;
}
.saved-filter-list {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .35rem;
}
.saved-filter-status {
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
}
.form-section-title {
    margin: 1.25rem 0 .85rem;
    padding-top: 1rem;
    border-top: 1px solid var(--c-border);
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
}
.form-section-title:first-child {
    margin-top: 0;
    padding-top: 0;
    border-top: 0;
}
.fai-package-panel {
    border: 1px solid rgba(204,214,224,.86);
    border-radius: var(--radius-md);
    background: linear-gradient(180deg, rgba(248,250,252,.86), rgba(255,255,255,.96));
    padding: .75rem .9rem;
}
.fai-package-panel + .fai-package-panel,
.fai-package-panel .fai-package-row + .fai-package-row {
    margin-top: .75rem;
}
.fai-package-panel summary {
    cursor: pointer;
    color: var(--c-ink);
    font-weight: 800;
}
.fai-package-row {
    border-top: 1px dashed rgba(148,163,184,.65);
    padding-top: .75rem;
}
.form-actions,
.action-row,
.table-toolbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .65rem;
}
.form-actions {
    margin-top: 1.25rem;
    padding-top: 1rem;
    border-top: 1px solid var(--c-border);
}
.table-toolbar {
    justify-content: space-between;
    margin-bottom: .85rem;
}
.section-card {
    background: var(--c-surface);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: 1.25rem;
    margin-bottom: 1.25rem;
}
.section-card > h2:first-child,
.section-card > h3:first-child,
.section-card > h4:first-child {
    margin-top: 0;
}
.section-title,
.section-label {
    margin: 0 0 .85rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .07em;
    text-transform: uppercase;
}
.stack-sm {
    display: flex;
    flex-direction: column;
    gap: .65rem;
}
.stack-md {
    display: flex;
    flex-direction: column;
    gap: 1rem;
}
.white-space-pre-line {
    white-space: pre-line;
}
.metric-card {
    background: linear-gradient(180deg, var(--c-surface), var(--c-surface-muted));
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: 1rem;
    min-height: 92px;
}
.metric-label {
    color: var(--c-muted);
    font-size: .72rem;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
}
.metric-value {
    color: var(--c-ink);
    font-size: 1.8rem;
    font-weight: 800;
    line-height: 1.15;
    margin-top: .35rem;
}
.list-card {
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: var(--c-surface-muted);
    padding: .85rem 1rem;
    margin-bottom: .65rem;
}
.list-card.compact {
    padding: .65rem .8rem;
}
.empty-state.empty-state-compact {
    padding: 1rem;
    text-align: left;
}

.shortcut-help-panel {
    position: fixed;
    inset: 0;
    display: grid;
    place-items: start center;
    padding: 6rem 1rem 1rem;
    background: rgba(15, 35, 64, .32);
    z-index: 1250;
}
.shortcut-help-panel[hidden] {
    display: none !important;
}
.shortcut-help-card {
    width: min(620px, 100%);
    padding: 1.25rem;
    border: 1px solid rgba(222, 226, 230, .9);
    border-radius: var(--radius-lg);
    background: var(--c-surface);
    box-shadow: var(--shadow-lg);
}
.shortcut-grid {
    display: grid;
    grid-template-columns: max-content minmax(0, 1fr);
    gap: .6rem 1rem;
    margin: 1rem 0 0;
}
.shortcut-grid dt,
.shortcut-grid dd {
    margin: 0;
}
.shortcut-grid dt {
    display: flex;
    gap: .25rem;
    align-items: center;
}
.shortcut-grid kbd {
    display: inline-flex;
    min-width: 1.8rem;
    justify-content: center;
    border: 1px solid var(--c-border);
    border-bottom-width: 2px;
    border-radius: var(--radius-sm);
    background: #f8fafc;
    color: var(--c-navy);
    font: 700 .82rem/1.2 ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    padding: .18rem .35rem;
}
.shortcut-grid dd {
    color: var(--c-text);
}

/* ── Optional compact workspace density ───────────────────────────────────── */
body.compact-mode {
    font-size: .875rem;
}
body.compact-mode .app-content {
    padding-top: .25rem;
    padding-bottom: 1.5rem;
}
body.compact-mode .page-header {
    margin-bottom: .75rem;
}
body.compact-mode .form-shell,
body.compact-mode .table-shell,
body.compact-mode .panel-shell,
body.compact-mode .section-card,
body.compact-mode .toolbar-card {
    padding: .85rem;
    margin-bottom: .85rem;
    border-radius: var(--radius);
}
body.compact-mode .card {
    border-radius: var(--radius);
}
body.compact-mode .btn {
    min-height: 32px;
    padding: .35rem .65rem;
}
body.compact-mode .btn-sm {
    min-height: 28px;
    padding: .25rem .5rem;
}
body.compact-mode .form-control,
body.compact-mode .form-select {
    min-height: 32px;
    padding-top: .28rem;
    padding-bottom: .28rem;
}
body.compact-mode .table > :not(caption) > * > * {
    padding: .35rem .45rem;
}
body.compact-mode .section-title,
body.compact-mode .section-label,
body.compact-mode .form-section-title {
    margin-bottom: .55rem;
}
body.compact-mode .latest-revision-card {
    margin-top: .75rem;
    padding: .75rem;
}
.detail-list {
    display: grid;
    gap: .85rem;
    margin: 0;
}
.detail-list dt {
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.detail-list dd {
    margin: .15rem 0 0;
    color: var(--c-text);
}
.latest-revision-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto;
    gap: 1rem;
    align-items: center;
    margin-top: 1.1rem;
    padding: 1rem;
    border: 1px solid rgba(13,122,110,.18);
    border-radius: var(--radius-lg);
    background: linear-gradient(135deg, #f8fbfc, #eef7f6);
}
.latest-rev-title {
    color: var(--c-navy);
    font-size: 1.25rem;
    font-weight: 800;
}
.latest-rev-files {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: .35rem;
}
.item-primary-actions {
    justify-content: flex-end;
}
.item-secondary-actions .dropdown-menu {
    min-width: 220px;
}
.dropdown-form {
    margin: 0;
}
.dropdown-form .dropdown-item {
    width: 100%;
    text-align: left;
}
.file-chip {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: .25rem .55rem;
    border-radius: 999px;
    background: rgba(13,122,110,.11);
    color: var(--c-teal);
    font-size: .76rem;
    font-weight: 800;
    letter-spacing: .04em;
}
.file-chip-muted {
    background: #eef2f6;
    color: var(--c-muted);
}
.release-state-badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    border-radius: 999px;
    padding: .18rem .55rem;
    font-size: .75rem;
    font-weight: 700;
    letter-spacing: .01em;
    white-space: nowrap;
}
.release-state-badge::before {
    content: "●";
    font-size: .55rem;
}
.release-state-released {
    background: #e7f6f3;
    color: var(--c-teal-dark);
    border: 1px solid rgba(0, 116, 111, .2);
}
.release-state-working {
    background: #fff4e6;
    color: #9a5800;
    border: 1px solid rgba(217, 119, 6, .22);
}
.stock-status-badge {
    display: inline-flex;
    align-items: center;
    gap: .25rem;
    border-radius: 999px;
    padding: .18rem .55rem;
    font-size: .75rem;
    font-weight: 700;
    white-space: nowrap;
}
.stock-status-badge::before {
    content: "●";
    font-size: .55rem;
}
.stock-status-ok {
    background: #e7f6f3;
    color: var(--c-teal-dark);
    border: 1px solid rgba(0, 116, 111, .2);
}
.stock-status-low {
    background: #fff4e6;
    color: #9a5800;
    border: 1px solid rgba(217, 119, 6, .22);
}
.stock-status-out {
    background: #fdecec;
    color: #a42828;
    border: 1px solid rgba(180, 35, 24, .22);
}
.stock-status-muted {
    background: #eef2f6;
    color: var(--c-muted);
    border: 1px solid rgba(100, 116, 139, .22);
}
.baseline-card {
    border-top: 4px solid var(--c-teal);
}
.baseline-list-row {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .75rem 0;
    border-bottom: 1px solid var(--c-border);
}
.baseline-list-row:last-of-type {
    border-bottom: 0;
}
.baseline-lock-note {
    color: var(--c-muted);
    font-size: .85rem;
}
.item-history-card {
    border-top: 4px solid var(--c-navy);
}
.history-summary-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: .75rem;
    margin: .85rem 0 1rem;
}
.history-summary-card {
    padding: .8rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: #fff;
}
.history-summary-value {
    color: var(--c-navy);
    font-size: 1.45rem;
    font-weight: 800;
    line-height: 1;
}
.history-summary-label {
    color: var(--c-muted);
    font-size: .75rem;
    font-weight: 700;
    margin-top: .25rem;
    text-transform: uppercase;
    letter-spacing: .04em;
}
.history-timeline {
    display: grid;
    gap: .85rem;
}
.history-card {
    position: relative;
    display: grid;
    grid-template-columns: 18px minmax(0, 1fr);
    gap: .75rem;
}
.history-card::before {
    content: "";
    position: absolute;
    left: 8px;
    top: 22px;
    bottom: -16px;
    width: 2px;
    background: var(--c-border);
}
.history-card:last-child::before {
    display: none;
}
.history-card-marker {
    position: relative;
    z-index: 1;
    width: 18px;
    height: 18px;
    margin-top: .85rem;
    border: 3px solid var(--c-teal);
    border-radius: 999px;
    background: #fff;
}
.history-card-body {
    padding: .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: #fff;
}
.history-card-header {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    align-items: flex-start;
    margin-bottom: .65rem;
}
.history-evidence-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: .75rem;
}
.history-evidence-block {
    padding: .7rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: #f8fafc;
}
.history-evidence-title {
    color: var(--c-muted);
    font-size: .74rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: .45rem;
}
.history-evidence-row {
    display: flex;
    align-items: center;
    gap: .45rem;
    min-height: 1.55rem;
    font-size: .86rem;
}
.history-change-strip {
    margin-top: 1rem;
    padding: .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: #f8fafc;
}
.history-change-list {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
}
.history-change-chip {
    display: inline-flex;
    align-items: center;
    padding: .28rem .6rem;
    border: 1px solid var(--c-border);
    border-radius: 999px;
    background: #fff;
    color: var(--c-navy);
    font-size: .82rem;
    font-weight: 700;
    text-decoration: none;
}
.history-change-chip:hover {
    border-color: var(--c-teal);
    color: var(--c-teal);
    text-decoration: none;
}
.policy-gate-list {
    display: grid;
    gap: .45rem;
}
.policy-gate-list li {
    color: var(--c-muted);
}
.release-gate-card {
    border-top: 4px solid var(--c-orange);
}
.release-gate-ready {
    border-top-color: var(--c-teal);
}
.release-gate-metrics {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}
.release-gate-blockers {
    display: grid;
    gap: .5rem;
}
.release-gate-blocker {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    padding: .6rem .7rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: #fff;
}
.item-readiness-card {
    margin-top: 1rem;
}
.workflow-requirements-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: .75rem;
}
.workflow-requirement-card {
    padding: .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: #fff;
}
.workflow-requirement-list {
    display: grid;
    gap: .45rem;
    margin: .75rem 0 0;
    padding-left: 1.15rem;
}
.workflow-requirement-list li {
    color: var(--c-muted);
    font-size: .86rem;
}
.workflow-requirement-list strong,
.workflow-requirement-list span,
.workflow-requirement-list em {
    display: block;
}
.workflow-requirement-list strong {
    color: var(--c-navy);
}
.workflow-requirement-list em {
    color: var(--c-teal-dark);
    font-style: normal;
    font-weight: 700;
}
.launch-readiness-list {
    display: grid;
    gap: .75rem;
}
.launch-readiness-item {
    padding: .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-md);
    background: #fff;
}
.launch-readiness-command {
    display: block;
    margin-top: .5rem;
    padding: .45rem .55rem;
    border-radius: var(--radius-sm);
    background: #f3f6f9;
    color: var(--c-navy);
    white-space: normal;
    word-break: break-word;
}
.launch-readiness-missing {
    padding: .6rem;
    border-radius: var(--radius-sm);
    background: #fff7ed;
    border: 1px solid #fed7aa;
}
.launch-readiness-missing-list {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    margin-top: .35rem;
}
.launch-readiness-missing-list span {
    display: inline-flex;
    align-items: center;
    padding: .18rem .45rem;
    border-radius: 999px;
    background: #ffedd5;
    color: #9a3412;
    font-size: .76rem;
    font-weight: 700;
}
.comparison-status {
    display: inline-flex;
    border-radius: 999px;
    padding: .2rem .55rem;
    font-size: .75rem;
    font-weight: 800;
    background: #eef2f6;
    color: var(--c-muted);
    white-space: nowrap;
}
.comparison-status-added {
    background: #e7f6f3;
    color: var(--c-teal-dark);
}
.comparison-status-removed {
    background: #fdeceb;
    color: #b42318;
}
.comparison-status-revision-changed,
.comparison-status-state-changed,
.comparison-status-metadata-changed {
    background: #fff4e6;
    color: #9a5800;
}
.item-section-nav {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin-top: 1rem;
    padding-top: 1rem;
    border-top: 1px solid var(--c-border);
}
.item-section-nav a {
    padding: .35rem .65rem;
    border: 1px solid var(--c-border);
    border-radius: 999px;
    background: #fff;
    color: var(--c-muted);
    font-size: .82rem;
    font-weight: 700;
}
.item-section-nav a:hover {
    border-color: var(--c-teal);
    color: var(--c-teal);
    text-decoration: none;
}
.empty-state {
    padding: 1.25rem;
    color: var(--c-muted);
    background: #f8fafc;
    border: 1px dashed var(--c-border);
    border-radius: var(--radius-lg);
    text-align: center;
}
.empty-state p {
    max-width: 620px;
    margin: .35rem auto 0;
}
.empty-state-kicker {
    color: var(--c-teal);
    font-size: .72rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}
.empty-state h2,
.empty-state h3,
.empty-state h4 {
    color: var(--c-navy);
    margin: .25rem 0 0;
}
.empty-state-actions {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: .65rem;
    margin-top: 1rem;
}
.onboarding-card {
    border: 1px solid rgba(13, 122, 110, .22);
    background:
        radial-gradient(circle at 0 0, rgba(19,163,148,.12), transparent 28%),
        var(--c-surface);
}
.onboarding-list {
    display: grid;
    gap: .75rem;
    margin: 0;
    padding: 0;
    list-style: none;
}
.onboarding-step {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr) auto;
    gap: .8rem;
    align-items: center;
    padding: .8rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fff;
}
.onboarding-status {
    display: grid;
    width: 28px;
    height: 28px;
    place-items: center;
    border-radius: 999px;
    background: #eef2f6;
    color: var(--c-muted);
    font-weight: 800;
}
.onboarding-step.is-done .onboarding-status {
    background: rgba(26,122,74,.12);
    color: var(--c-success);
}
.role-dashboard-card {
    background:
        linear-gradient(135deg, rgba(15,35,64,.04), rgba(13,122,110,.06)),
        var(--c-surface);
}
.role-metric-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
    gap: .75rem;
}
.role-metric {
    padding: .9rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fff;
}
.role-metric-value {
    color: var(--c-navy);
    font-size: 1.45rem;
    font-weight: 800;
    line-height: 1;
}
.role-metric-label {
    margin-top: .25rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
    letter-spacing: .04em;
    text-transform: uppercase;
}
.user-edit-form {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: .45rem;
}
.user-edit-form > .form-control,
.user-edit-form > .form-select {
    max-width: 190px;
}
.user-permissions-details {
    flex-basis: 100%;
}
.user-permissions-details > summary {
    display: inline-flex;
    width: auto;
    list-style: none;
}
.user-permissions-details > summary::-webkit-details-marker {
    display: none;
}
.access-denied-card {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 1.5rem;
    max-width: 920px;
    margin: 3rem auto;
    padding: 2rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: var(--c-surface);
    box-shadow: var(--shadow);
}
.access-denied-icon {
    display: grid;
    width: 78px;
    height: 78px;
    place-items: center;
    border-radius: 24px;
    background: linear-gradient(135deg, var(--c-navy), var(--c-teal));
    color: #fff;
    font-weight: 900;
    letter-spacing: .05em;
}
.role-note {
    display: inline-block;
    margin-top: .75rem;
    padding: .55rem .75rem;
    border-radius: 999px;
    background: #f1f5f9;
    color: var(--c-muted);
    font-size: .86rem;
}
.toolbar-card {
    background: var(--c-surface);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    box-shadow: var(--shadow-sm);
    padding: .85rem 1rem;
}
.filter-presets-card {
    margin-top: 1rem;
}
.filter-preset-save-form {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: .5rem;
}
.filter-preset-save-form .form-control {
    width: min(220px, 100%);
}
.filter-preset-list {
    display: flex;
    flex-wrap: wrap;
    gap: .5rem;
}
.filter-preset-chip {
    display: inline-flex;
    align-items: center;
    overflow: hidden;
    border: 1px solid var(--c-border);
    border-radius: 999px;
    background: #f8fafc;
    box-shadow: var(--shadow-sm);
}
.filter-preset-chip a {
    padding: .38rem .7rem;
    color: var(--c-navy);
    font-size: .85rem;
    font-weight: 800;
    text-decoration: none;
}
.filter-preset-chip a:hover {
    color: var(--c-teal);
}
.filter-preset-chip form {
    margin: 0;
}
.filter-preset-chip button {
    min-width: 30px;
    min-height: 30px;
    border: 0;
    border-left: 1px solid var(--c-border);
    background: transparent;
    color: var(--c-muted);
    cursor: pointer;
    font-size: 1rem;
    font-weight: 900;
}
.filter-preset-chip button:hover {
    background: #fee2e2;
    color: var(--c-danger);
}
.preview-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: .4rem;
    margin: 1rem 0;
    padding: .35rem;
    background: #eef2f6;
    border-radius: var(--radius-lg);
}
.preview-tab-btn {
    border: 0;
    border-radius: var(--radius);
    background: transparent;
    color: var(--c-muted);
    cursor: pointer;
    font-weight: 700;
    padding: .55rem .85rem;
}
.preview-tab-btn:hover,
.preview-tab-btn.active {
    background: var(--c-surface);
    color: var(--c-navy);
    box-shadow: var(--shadow-sm);
}
.preview-tab-panel {
    display: none;
}
.preview-tab-panel.active {
    display: block;
}
.preview-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: .75rem;
    margin-bottom: .75rem;
}
.pdf-preview-frame,
.viewer-shell,
.dxf-preview-shell {
    width: 100%;
    min-height: 520px;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: #fff;
}
.pdf-preview-frame {
    display: block;
}
.viewer-shell {
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
    background: linear-gradient(145deg, #e8edf3 0%, #f8fafc 45%, #dfe7ef 100%);
}
.viewer-shell canvas {
    display: block;
    width: 100% !important;
    height: 100% !important;
}
.viewer-stage {
    position: relative;
    width: 100%;
    min-height: 520px;
    height: 100%;
    overflow: hidden;
    border-radius: inherit;
    background:
        radial-gradient(circle at 20% 10%, rgba(255,255,255,.95), rgba(255,255,255,0) 32%),
        linear-gradient(145deg, #e6edf5 0%, #f8fafc 45%, #dbe5ef 100%);
}
.viewer-canvas-slot {
    position: absolute;
    inset: 0;
}
.viewer-annotation-layer {
    position: absolute;
    inset: 0;
    z-index: 3;
    pointer-events: none;
}
.viewer-statusbar,
.viewer-toolbar,
.viewer-dimensions,
.viewer-section-panel,
.viewer-parts-panel,
.viewer-measurement,
.viewer-hint {
    position: absolute;
    z-index: 2;
    backdrop-filter: blur(10px);
    background: rgba(255,255,255,.82);
    border: 1px solid rgba(204,214,224,.85);
    box-shadow: var(--shadow-sm);
}
.viewer-statusbar {
    top: .8rem;
    left: .8rem;
    right: .8rem;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    border-radius: var(--radius-lg);
    padding: .65rem .8rem;
}
.viewer-kicker {
    color: var(--c-muted);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .09em;
    text-transform: uppercase;
}
.viewer-muted {
    color: var(--c-muted);
    font-size: .82rem;
    margin-left: .35rem;
}
.viewer-status {
    color: var(--c-muted);
    font-size: .82rem;
    font-weight: 700;
}
.viewer-status[data-state="ready"] {
    color: var(--c-success);
}
.viewer-status[data-state="danger"] {
    color: var(--c-danger);
}
.viewer-toolbar {
    left: 50%;
    bottom: .9rem;
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
    max-width: calc(100% - 2rem);
    padding: .45rem;
    border-radius: 999px;
    transform: translateX(-50%);
}
.viewer-toolbar button {
    min-height: 30px;
    padding: .34rem .62rem;
    border: 0;
    border-radius: 999px;
    background: transparent;
    color: var(--c-muted);
    cursor: pointer;
    font-size: .78rem;
    font-weight: 800;
}
.viewer-toolbar button:hover,
.viewer-toolbar button.active {
    background: var(--c-navy);
    color: #fff;
}
.viewer-toolbar button:disabled {
    cursor: not-allowed;
    opacity: .45;
}
.viewer-toolbar button:disabled:hover {
    background: transparent;
    color: var(--c-muted);
}
.viewer-dimensions {
    left: .8rem;
    bottom: .95rem;
    max-width: 360px;
    border-radius: 999px;
    padding: .45rem .75rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
}
.viewer-section-panel {
    right: .8rem;
    top: 4.8rem;
    min-width: 220px;
    border-radius: var(--radius-lg);
    padding: .55rem .65rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 800;
}
.viewer-section-panel[data-state="active"] {
    color: #0f3b57;
    background: rgba(235, 248, 255, .92);
    border-color: rgba(14, 165, 233, .45);
}
.viewer-section-title {
    margin-bottom: .2rem;
}
.viewer-section-meta {
    margin-bottom: .45rem;
    color: var(--c-muted);
    font-size: .72rem;
    font-weight: 700;
}
.viewer-section-actions,
.viewer-section-tools {
    display: flex;
    gap: .35rem;
    margin-bottom: .45rem;
}
.viewer-section-actions button,
.viewer-section-tools button {
    flex: 1;
    min-height: 28px;
    border: 0;
    border-radius: 999px;
    background: rgba(15, 35, 64, .08);
    color: var(--c-muted);
    cursor: pointer;
    font-size: .75rem;
    font-weight: 900;
}
.viewer-section-actions button.active {
    background: var(--c-navy);
    color: #fff;
}
.viewer-section-tools button {
    background: rgba(13, 122, 110, .1);
    color: var(--c-teal);
    text-align: center;
}
.viewer-section-tools button:hover {
    background: var(--c-teal);
    color: #fff;
}
.viewer-section-panel input[type="range"] {
    width: 100%;
}
.viewer-parts-panel {
    right: .8rem;
    top: 13.7rem;
    width: min(260px, calc(100% - 1.6rem));
    max-height: 240px;
    border-radius: var(--radius-lg);
    padding: .55rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 800;
    overflow: hidden;
}
.viewer-parts-panel[data-state="active"] {
    background: rgba(255, 247, 237, .92);
    border-color: rgba(249, 115, 22, .45);
}
.viewer-parts-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    margin-bottom: .45rem;
}
.viewer-parts-header button,
.viewer-part-row button {
    min-height: 28px;
    border: 0;
    border-radius: 999px;
    cursor: pointer;
    font-size: .74rem;
    font-weight: 900;
}
.viewer-parts-header button {
    padding: .25rem .55rem;
    background: rgba(15, 35, 64, .08);
    color: var(--c-muted);
}
.viewer-parts-list {
    display: grid;
    gap: .3rem;
    max-height: 185px;
    overflow: auto;
    padding-right: .15rem;
}
.viewer-part-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .3rem;
}
.viewer-part-row button {
    padding: .28rem .55rem;
    background: rgba(15, 35, 64, .07);
    color: var(--c-muted);
    text-align: left;
}
.viewer-part-row button[data-part-toggle] {
    min-width: 52px;
    text-align: center;
}
.viewer-part-row.active button[data-part-select] {
    background: #f97316;
    color: #fff;
}
.viewer-part-row button.muted {
    opacity: .62;
}
.viewer-parts-empty {
    color: var(--c-muted);
    font-weight: 700;
}
.viewer-measurement {
    left: .8rem;
    bottom: 3.25rem;
    display: flex;
    align-items: center;
    gap: .55rem;
    max-width: min(520px, calc(100% - 1.6rem));
    border-radius: 999px;
    padding: .45rem .75rem;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 800;
}
.viewer-measurement span {
    min-width: 0;
}
.viewer-measurement button {
    min-height: 24px;
    border: 0;
    border-radius: 999px;
    padding: .18rem .55rem;
    background: rgba(15, 35, 64, .08);
    color: var(--c-muted);
    cursor: pointer;
    font-size: .72rem;
    font-weight: 900;
}
.viewer-measurement button:hover {
    background: var(--c-orange);
    color: #fff;
}
.viewer-measurement[data-state="active"],
.viewer-measurement[data-state="ready"] {
    color: #9a3412;
    background: rgba(255, 247, 237, .92);
    border-color: rgba(249, 115, 22, .45);
}
.viewer-measure-active {
    cursor: crosshair;
}
.viewer-annotate-active {
    cursor: copy;
}
.viewer-annotation-label {
    position: absolute;
    left: 0;
    top: 0;
    display: inline-flex;
    align-items: flex-end;
    gap: .35rem;
    max-width: min(260px, 46vw);
    padding: 0;
    border: 0;
    background: transparent;
    color: var(--c-navy);
    font: inherit;
    text-align: left;
    pointer-events: auto;
    opacity: 0;
    transition: opacity .15s ease, filter .15s ease;
}
.viewer-annotation-label[data-visible="true"] {
    opacity: 1;
}
.viewer-annotation-label:hover {
    filter: drop-shadow(0 8px 18px rgba(15,35,64,.22));
}
.viewer-annotation-pin {
    width: .72rem;
    height: .72rem;
    flex: 0 0 auto;
    border: 2px solid #fff;
    border-radius: 999px;
    background: var(--c-orange);
    box-shadow: 0 0 0 2px rgba(224,123,42,.35), var(--shadow-sm);
    transform: translateY(-.12rem);
}
.viewer-annotation-card {
    display: grid;
    gap: .08rem;
    padding: .42rem .55rem;
    border: 1px solid rgba(224,123,42,.34);
    border-radius: var(--radius-sm);
    background: rgba(255,255,255,.92);
    box-shadow: var(--shadow-sm);
    backdrop-filter: blur(8px);
}
.viewer-annotation-card strong {
    max-width: 220px;
    overflow: hidden;
    color: var(--c-navy);
    font-size: .78rem;
    line-height: 1.15;
    text-overflow: ellipsis;
    white-space: nowrap;
}
.viewer-annotation-card small {
    color: var(--c-muted);
    font-size: .68rem;
    font-weight: 700;
}
.viewer-hint {
    right: .8rem;
    bottom: .95rem;
    border-radius: 999px;
    padding: .45rem .75rem;
    color: var(--c-muted);
    font-size: .76rem;
}
.viewer-message {
    position: absolute;
    top: 50%;
    left: 50%;
    min-width: min(420px, 90%);
    transform: translate(-50%, -50%);
}
.viewer-empty-state {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 1rem 1.1rem;
    border: 1px solid rgba(204,214,224,.9);
    border-radius: var(--radius-lg);
    background: rgba(255,255,255,.9);
    box-shadow: var(--shadow-md);
    color: var(--c-navy);
}
.viewer-empty-state strong {
    display: block;
    margin-bottom: .25rem;
}
.viewer-empty-state p {
    margin: 0 0 .25rem;
    color: var(--c-text);
}
.viewer-empty-state span {
    color: var(--c-muted);
    font-size: .78rem;
}
.viewer-empty-badge {
    display: grid;
    flex: 0 0 46px;
    width: 46px;
    height: 46px;
    place-items: center;
    border-radius: 16px;
    background: linear-gradient(135deg, var(--c-navy), var(--c-teal));
    color: #fff;
    font-size: .8rem;
    font-weight: 900;
    letter-spacing: .05em;
}
.viewer-empty-danger {
    border-left: 4px solid var(--c-danger);
}
.dxf-preview-shell {
    display: grid;
    place-items: stretch;
    overflow: hidden;
    background:
        radial-gradient(circle at 10% 0%, rgba(20,184,166,.08), rgba(20,184,166,0) 30%),
        linear-gradient(145deg, #f8fafc 0%, #eef4f9 100%);
}
.dxf-preview-frame {
    display: grid;
    grid-template-rows: auto auto 1fr;
    width: 100%;
    min-height: 520px;
}
.dxf-preview-statusbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: .8rem .9rem;
    border-bottom: 1px solid var(--c-border);
    background: rgba(255,255,255,.88);
}
.dxf-preview-meta {
    display: grid;
    gap: .15rem;
    min-width: 0;
}
.dxf-preview-meta strong {
    color: var(--c-navy);
}
.dxf-preview-meta .viewer-muted {
    margin-left: 0;
}
.dxf-preview-controls {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem;
}
.dxf-control-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    min-width: 34px;
    padding: .34rem .62rem;
    border: 1px solid rgba(204,214,224,.95);
    border-radius: 999px;
    background: #fff;
    color: var(--c-muted);
    cursor: pointer;
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
}
.dxf-control-button:hover {
    background: var(--c-navy);
    border-color: var(--c-navy);
    color: #fff;
}
.dxf-layer-line {
    padding: .45rem .9rem;
    border-bottom: 1px solid var(--c-border);
    background: rgba(248,250,252,.9);
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 700;
}
.dxf-preview-stage {
    position: relative;
    min-height: 430px;
    overflow: hidden;
}
.dxf-preview-svg {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 430px;
    background:
        radial-gradient(circle at center, rgba(255,255,255,.96), rgba(241,245,249,.75));
    cursor: grab;
    touch-action: none;
}
.dxf-preview-svg.is-panning {
    cursor: grabbing;
}
.dxf-grid-line {
    stroke: rgba(148,163,184,.24);
    stroke-width: .35;
    vector-effect: non-scaling-stroke;
}
.dxf-axis {
    stroke: rgba(15,35,64,.28);
    stroke-width: .65;
    vector-effect: non-scaling-stroke;
}
.dxf-entity {
    fill: none;
    stroke: #0f2340;
    stroke-width: 1.7;
    stroke-linecap: round;
    stroke-linejoin: round;
    vector-effect: non-scaling-stroke;
}
.dxf-entity-circle,
.dxf-entity-arc {
    stroke: var(--c-teal);
}
.dxf-entity-lwpolyline,
.dxf-entity-polyline {
    stroke: #2563eb;
}
.dxf-preview-empty {
    align-self: center;
    justify-self: center;
    max-width: 520px;
    margin: 2rem;
    padding: 1rem 1.15rem;
    border: 1px solid rgba(204,214,224,.9);
    border-radius: var(--radius-lg);
    background: rgba(255,255,255,.92);
    box-shadow: var(--shadow-md);
    color: var(--c-navy);
}
.dxf-preview-empty strong {
    display: block;
    margin-bottom: .25rem;
}
.dxf-preview-empty p {
    margin: 0;
    color: var(--c-muted);
}
.dxf-preview-empty[data-state="loading"] {
    border-left: 4px solid var(--c-teal);
}
.dxf-preview-empty[data-state="error"] {
    border-left: 4px solid var(--c-danger);
}
@media (max-width: 900px) {
    .access-denied-card,
    .onboarding-step,
    .latest-revision-card {
        grid-template-columns: 1fr;
    }
    .latest-rev-files {
        justify-content: flex-start;
    }
    .viewer-statusbar {
        align-items: flex-start;
        flex-direction: column;
    }
    .viewer-toolbar,
    .viewer-dimensions,
    .viewer-section-panel,
    .viewer-parts-panel,
    .viewer-measurement,
    .viewer-hint {
        position: static;
        transform: none;
        margin: .5rem;
    }
    .viewer-toolbar {
        border-radius: var(--radius-lg);
    }
    .dxf-preview-statusbar {
        align-items: flex-start;
        flex-direction: column;
    }
    .viewer-dimensions,
    .viewer-section-panel,
    .viewer-parts-panel,
    .viewer-measurement,
    .viewer-hint {
        display: inline-block;
    }
}

/* Stat cards on dashboard */
.stat-card {
    border-left: 4px solid var(--c-teal);
}
.stat-card.stat-orange { border-left-color: var(--c-orange); }
.stat-card.stat-navy   { border-left-color: var(--c-navy); }
.stat-card .stat-value {
    font-size: 2rem;
    font-weight: 700;
    color: var(--c-navy);
    line-height: 1;
}
.stat-card .stat-label {
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    color: var(--c-muted);
    margin-top: 4px;
}

/* ── Tables ───────────────────────────────────────────────────────────────── */
.table {
    width: 100%;
    margin-bottom: 1rem;
    border-collapse: separate;
    border-spacing: 0;
    font-size: 0.875rem;
    background: var(--c-surface);
}
.table th,
.table td {
    padding: .72rem .8rem;
    border-bottom: 1px solid var(--c-border);
    vertical-align: middle;
}
.table thead th {
    background-color: #f0f3f7;
    color: var(--c-navy);
    font-weight: 600;
    font-size: 0.8rem;
    text-transform: uppercase;
    letter-spacing: .04em;
    border-bottom: 2px solid var(--c-border);
}
.table-hover tbody tr:hover {
    background-color: #f0f7f6;
}
.table-striped tbody tr:nth-child(odd) {
    background-color: #fbfcfd;
}
.table-light th {
    background-color: #f0f3f7 !important;
}
.table-sm th,
.table-sm td {
    padding: .52rem .65rem;
}
.table-borderless th,
.table-borderless td {
    border-bottom: 0;
}
.table-responsive {
    overflow-x: auto;
    border-radius: var(--radius-lg);
}
.app-content > table.table,
.app-content > .table-responsive,
.table-shell .table,
.section-card > table.table {
    box-shadow: var(--shadow-sm);
}
.app-content > table.table,
.app-content > .table-responsive {
    background: var(--c-surface);
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    margin-bottom: 1.25rem;
}
.app-content > .table-responsive .table,
.table-shell .table,
.section-card > table.table {
    margin-bottom: 0;
}
.table .btn {
    margin-top: .1rem;
    margin-bottom: .1rem;
}
.table .form-control,
.table .form-select {
    min-height: 34px;
}
.action-cell,
td.actions {
    min-width: 220px;
}
.inline-action-form,
.action-cell form,
td.actions form {
    display: inline-flex !important;
    align-items: center;
    flex-wrap: wrap;
    gap: .4rem;
    margin: .12rem .2rem .12rem 0;
}
.inline-action-form > *,
.action-cell form > *,
td.actions form > * {
    margin-left: 0 !important;
}
.rfq-inline-form {
    width: 100%;
}
.rfq-inline-form .form-select {
    max-width: 140px;
}
.rfq-inline-form input[type="date"] {
    max-width: 150px;
}
.rfq-inline-form input[name="notes"] {
    min-width: 220px;
    flex: 1 1 240px;
}

/* ── Alerts ───────────────────────────────────────────────────────────────── */
.alert {
    position: relative;
    padding: .75rem 1rem;
    margin-bottom: 1rem;
    border: 1px solid transparent;
    border-radius: var(--radius);
    border-left-width: 4px;
}
.alert-dismissible { padding-right: 3rem; }
.btn-close {
    position: absolute;
    top: .65rem;
    right: .75rem;
    width: 1rem;
    height: 1rem;
    border: 0;
    background: transparent;
    cursor: pointer;
}

/* Local modal baseline and CDN-independent fallback. */
.modal { display: none; }
.modal.show { display: block; }
.modal.contour-modal-fallback {
    position: fixed;
    inset: 0;
    z-index: 1055;
    overflow-x: hidden;
    overflow-y: auto;
    padding: 1.75rem 1rem;
    background: rgba(15, 35, 55, .58);
}
.modal.contour-modal-fallback .modal-dialog {
    width: min(500px, 100%);
    margin: 0 auto;
}
.modal.contour-modal-fallback .modal-content {
    overflow: hidden;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-lg);
    background: var(--c-surface);
    box-shadow: var(--shadow);
}
.modal.contour-modal-fallback .modal-header,
.modal.contour-modal-fallback .modal-footer {
    position: relative;
    display: flex;
    align-items: center;
    gap: .75rem;
    padding: 1rem 1.15rem;
}
.modal.contour-modal-fallback .modal-header {
    justify-content: space-between;
    border-bottom: 1px solid var(--c-border);
}
.modal.contour-modal-fallback .modal-footer {
    justify-content: flex-end;
    border-top: 1px solid var(--c-border);
}
.modal.contour-modal-fallback .modal-body { padding: 1.15rem; }
.modal.contour-modal-fallback .modal-title { margin: 0; }
.modal.contour-modal-fallback .btn-close { position: static; margin-left: auto; }
body.modal-open { overflow: hidden; }
.btn-close::before { content: "×"; font-size: 1.35rem; line-height: 1; }
.alert-success {
    color: var(--c-success);
    background-color: #d6f0e4;
    border-color: #a3d9be;
    border-left-color: var(--c-success);
}
.alert-danger {
    color: var(--c-danger);
    background-color: #fde8ea;
    border-color: #f5b8bd;
    border-left-color: var(--c-danger);
}
.alert-warning {
    color: var(--c-warning);
    background-color: #fff8e1;
    border-color: #ffe08a;
    border-left-color: var(--c-orange);
}
.alert-info {
    color: #055160;
    background-color: #e0f5f8;
    border-color: #9dd9e4;
    border-left-color: #0b8ea6;
}

/* ── Page title ───────────────────────────────────────────────────────────── */
h1 {
    font-size: 1.65rem;
    font-weight: 700;
    color: var(--c-navy);
    margin-bottom: 1.25rem;
    letter-spacing: -.02em;
}
h2, h3, h4, h5 { color: var(--c-navy); }
h2 { font-size: 1.35rem; }
h3 { font-size: 1.2rem; margin-top: 1.35rem; }
h4 { font-size: 1.05rem; }

/* ── Badges ───────────────────────────────────────────────────────────────── */
.badge.bg-primary    { background-color: var(--c-teal)   !important; }
.badge.bg-warning    { background-color: var(--c-orange)  !important; color: #fff !important; }
.badge.bg-secondary  { background-color: var(--c-muted)  !important; }

/* ── Form controls ────────────────────────────────────────────────────────── */
.form-control,
.form-select {
    display: block;
    width: 100%;
    min-height: 38px;
    padding: .5rem .78rem;
    font-size: 1rem;
    line-height: 1.5;
    color: var(--c-text);
    background-color: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
}
.form-control:focus, .form-select:focus {
    outline: 0;
    border-color: var(--c-teal-light);
    box-shadow: 0 0 0 3px rgba(13,122,110,.2);
}
.form-control-sm,
.form-select-sm {
    min-height: 32px;
    padding: .32rem .58rem;
    font-size: .875rem;
}
.form-label {
    display: block;
    margin-bottom: .42rem;
    font-weight: 600;
    font-size: 0.875rem;
    color: var(--c-text);
}
.form-label > .form-control,
.form-label > .form-select {
    margin-top: .45rem;
}
.form-text {
    display: block;
    margin-top: .35rem;
    color: var(--c-muted);
    font-size: .85rem;
}
.mb-3 > .form-text,
.form-shell .form-text {
    line-height: 1.35;
}
.form-check { display: block; min-height: 1.5rem; padding-left: 1.5em; }
.form-check-input { float: left; margin-left: -1.5em; }
.form-check-label { cursor: pointer; }
.form-switch {
    padding-left: 2.5em;
}
.form-switch .form-check-input {
    width: 2em;
    margin-left: -2.5em;
}
.input-group {
    display: flex;
    align-items: stretch;
    width: 100%;
}
.input-group > .form-control,
.input-group > .form-select {
    position: relative;
    flex: 1 1 auto;
    width: 1%;
    min-width: 0;
}
.input-group > .btn {
    border-top-left-radius: 0;
    border-bottom-left-radius: 0;
}
.input-group > .form-control:not(:last-child),
.input-group > .form-select:not(:last-child) {
    border-top-right-radius: 0;
    border-bottom-right-radius: 0;
}
textarea.form-control {
    min-height: 110px;
}
input[type="file"].form-control {
    padding: .42rem .6rem;
}
.form-control-color {
    width: 4rem;
    height: 38px;
    padding: .25rem;
}

/* ── List groups ─────────────────────────────────────────────────────────── */
.list-group {
    display: flex;
    flex-direction: column;
    padding-left: 0;
    margin: 0;
    border-radius: var(--radius-lg);
}
.list-group-item {
    position: relative;
    display: block;
    padding: .75rem 1rem;
    color: var(--c-text);
    background: var(--c-surface);
    border: 1px solid var(--c-border);
    border-width: 0 0 1px;
}
.list-group-item:first-child {
    border-top-left-radius: inherit;
    border-top-right-radius: inherit;
}
.list-group-item:last-child {
    border-bottom: 0;
    border-bottom-right-radius: inherit;
    border-bottom-left-radius: inherit;
}
.list-group-item-action:hover {
    background: #f0f7f6;
    text-decoration: none;
}
.list-group-flush {
    border-radius: 0;
}

/* ── Dropdown/search fallback ─────────────────────────────────────────────── */
.dropdown,
.btn-group {
    position: relative;
}
.btn-group {
    display: inline-flex;
    vertical-align: middle;
}
.dropdown-menu {
    display: none;
    position: absolute;
    top: 100%;
    left: 0;
    z-index: 1000;
    min-width: 10rem;
    padding: .35rem 0;
    margin: 0;
    list-style: none;
    font-size: .875rem;
    color: var(--c-text);
    background-color: #fff;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    box-shadow: var(--shadow);
}
.dropdown-menu.show {
    display: block;
}
.btn-group > .dropdown-menu,
.text-end .dropdown-menu {
    right: 0;
    left: auto;
}
.dropdown-item {
    display: block;
    width: 100%;
    padding: .4rem .75rem;
    border: 0;
    background: transparent;
    color: var(--c-text);
    font: inherit;
    text-align: left;
    text-decoration: none;
}
.dropdown-item:hover { background: #f0f7f6; color: var(--c-teal); }
.dropdown-header {
    display: block;
    padding: .4rem .75rem;
    color: var(--c-muted);
    font-weight: 700;
}

/* ── Sidebar / BOM tree ───────────────────────────────────────────────────── */
.bom-tree-toggle { text-decoration: none; color: var(--c-teal); }
.bom-tree-toggle:hover { text-decoration: underline; }
.bom-tree-toggle .me-2 { display: inline-block; transition: transform .2s; }
.bom-tree-toggle[aria-expanded="true"] .me-2 { transform: rotate(90deg); }

/* ── Activity feed ────────────────────────────────────────────────────────── */
.activity-item {
    display: flex;
    gap: 12px;
    padding: 8px 0;
    border-bottom: 1px solid var(--c-border);
    font-size: 0.85rem;
}
.activity-item:last-child { border-bottom: none; }
.activity-dot {
    width: 8px; height: 8px;
    border-radius: 50%;
    background: var(--c-teal);
    margin-top: 5px;
    flex-shrink: 0;
}

/* ── Search input ─────────────────────────────────────────────────────────── */
#searchInput { transition: border-color .2s; }
#searchInput:focus {
    border-color: var(--c-teal-light);
    box-shadow: 0 0 5px rgba(13,122,110,.3);
}

/* ── Notifications (Socket.IO) ────────────────────────────────────────────── */
#notifications .alert { max-width: 400px; margin-bottom: .5rem; }

/* ── Supplier linked items ────────────────────────────────────────────────── */
.linked-items-container {
    max-height: 200px; overflow-y: auto; padding: 8px;
    border-radius: var(--radius); background: var(--c-bg);
    border: 1px solid var(--c-border);
}
.linked-item {
    padding: 4px 8px; border-radius: var(--radius-sm);
    background: var(--c-surface); border: 1px solid #e9ecef;
    transition: background .15s;
}
.linked-item:hover { background: #e9ecef; }
.linked-item-link { text-decoration: none; color: var(--c-text); display: block; }
.linked-item-link:hover { color: var(--c-teal); }

/* ── File upload ──────────────────────────────────────────────────────────── */
.file-upload-wrapper { display: flex; flex-direction: column; gap: .5rem; }
.file-upload-label { font-weight: 500; color: var(--c-text); }
.file-upload-input {
    padding: .375rem .75rem;
    border: 1px solid var(--c-border); border-radius: var(--radius-sm);
    background: var(--c-surface); cursor: pointer; width: 100%; box-sizing: border-box;
}
.file-upload-input:focus {
    border-color: var(--c-teal-light);
    box-shadow: 0 0 5px rgba(13,122,110,.3);
}

/* ── Pending badge on nav ─────────────────────────────────────────────────── */
.nav-badge {
    font-size: .65em; vertical-align: super;
    background: var(--c-orange); color: #fff;
    border-radius: 10px; padding: 1px 5px;
}

/* ── Terminology help ─────────────────────────────────────────────────────── */
.term-help {
    border-bottom: 1px dotted var(--c-teal);
    color: var(--c-teal);
    cursor: help;
    text-decoration: none;
}
.terminology-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
    gap: .75rem;
}
.terminology-card {
    border: 1px solid var(--c-border);
    border-radius: var(--radius-sm);
    background: var(--c-surface);
    padding: .75rem;
}
.terminology-card strong {
    display: block;
    color: var(--c-navy);
    margin-bottom: .25rem;
}
.terminology-card p {
    margin: 0;
    color: var(--c-muted);
    font-size: .875rem;
}

/* ── BOM: CR highlight ────────────────────────────────────────────────────── */
tr.bom-cr-highlight {
    background-color: rgba(224, 123, 42, 0.08) !important;
}
tr.bom-cr-highlight td:first-child {
    border-left: 3px solid var(--c-orange);
}
.drag-handle {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 1.4rem;
    height: 1.4rem;
    margin-right: .35rem;
    border-radius: 999px;
    color: var(--c-muted);
    cursor: grab;
    user-select: none;
}
.drag-handle:hover {
    background: rgba(13, 122, 110, .12);
    color: var(--c-teal);
}
.bom-table tr[draggable="true"].dragging {
    opacity: .55;
}
.bom-table tr.drag-over td {
    border-top: 2px solid var(--c-teal);
}
.bom-reorder-hint {
    align-self: center;
}
.bom-row-editor {
    min-width: 210px;
}
.bom-row-editor > summary {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 30px;
    padding: .25rem .62rem;
    border: 1px solid rgba(13, 122, 110, .35);
    border-radius: var(--radius-sm);
    color: var(--c-teal);
    font-weight: 700;
    cursor: pointer;
    list-style: none;
    background: #fff;
}
.bom-row-editor > summary::-webkit-details-marker {
    display: none;
}
.bom-row-editor > summary::after {
    content: "▾";
    margin-left: .4rem;
    font-size: .72rem;
}
.bom-row-editor[open] > summary {
    margin-bottom: .65rem;
    color: #fff;
    background: var(--c-teal);
    border-color: var(--c-teal);
}
.bom-row-editor-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(68px, 1fr));
    gap: .45rem;
}
.bom-row-editor-grid label {
    display: grid;
    gap: .2rem;
    margin: 0;
}
.bom-row-editor-grid label span {
    color: var(--c-muted);
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.bom-row-editor-wide {
    grid-column: 1 / -1;
}

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (max-width: 576px) {
    .app-content { padding-left: .75rem; padding-right: .75rem; }
    .page-header,
    .table-toolbar {
        flex-direction: column;
        align-items: stretch;
    }
    .form-shell,
    .table-shell,
    .section-card {
        padding: 1rem;
    }
    .btn,
    .btn-sm {
        width: 100%;
    }
    .btn + .btn,
    .btn + form,
    form + .btn,
    form + form {
        margin-left: 0;
    }
    #programItems .card-header {
        flex-direction: column;
        align-items: stretch !important;
        gap: .5rem;
    }
    .table-responsive { font-size: .875rem; }
    #notifications .alert { max-width: 100%; }
    .linked-items-container { max-height: 150px; }
    .stat-card .stat-value { font-size: 1.5rem; }
}

/* ── Aircraft program control ─────────────────────────────────────────────── */
.dna-page-header {
    align-items: flex-end;
}

.dna-claim-boundary {
    border: 1px solid rgba(32, 92, 122, .18);
    border-left: 4px solid var(--c-teal);
    background: linear-gradient(135deg, rgba(24, 144, 158, .08), rgba(255, 255, 255, .92));
}

.dna-focus-card {
    display: grid;
    grid-template-columns: 104px minmax(0, 1fr) auto;
    align-items: center;
    gap: 1.25rem;
    padding: 1.15rem 1.25rem;
    border: 1px solid rgba(22, 89, 115, .18);
    border-radius: 14px;
    background:
        radial-gradient(circle at 95% 0, rgba(29, 151, 160, .13), transparent 18rem),
        linear-gradient(135deg, #fff, #f5f9fb);
    box-shadow: 0 12px 30px rgba(17, 48, 67, .08);
}

.dna-focus-gate {
    display: grid;
    place-items: center;
    min-height: 92px;
    padding: .7rem;
    border-radius: 11px;
    background: linear-gradient(145deg, var(--c-navy), #2a6076);
    color: #fff;
    text-align: center;
}

.dna-focus-gate span {
    font-size: .62rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
    opacity: .78;
}

.dna-focus-gate strong {
    font-size: 1.65rem;
    letter-spacing: .03em;
}

.dna-focus-content h3 {
    margin: .15rem 0 .3rem;
    color: var(--c-navy);
    font-size: 1.2rem;
}

.dna-focus-content p,
.dna-focus-content ul {
    margin: 0;
    color: #5f707a;
    font-size: .83rem;
}

.dna-focus-content ul {
    display: grid;
    gap: .15rem;
    padding-left: 1.15rem;
}

.dna-empty-card {
    overflow: hidden;
    background:
        radial-gradient(circle at 85% 15%, rgba(36, 154, 170, .13), transparent 28rem),
        linear-gradient(145deg, #fff, #f6f9fb);
}

.dna-phase-preview {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: .65rem;
}

.dna-phase-preview span {
    padding: .45rem .8rem;
    border: 1px solid #d9e2e8;
    border-radius: 999px;
    background: #fff;
    color: var(--c-navy);
    font-size: .82rem;
    font-weight: 700;
}

.dna-summary-grid {
    display: grid;
    grid-template-columns: repeat(6, minmax(0, 1fr));
    gap: .85rem;
}

.dna-summary-card {
    min-height: 128px;
    padding: 1rem;
    border: 1px solid #dfe6eb;
    border-radius: 12px;
    background: #fff;
    box-shadow: 0 8px 22px rgba(18, 40, 55, .06);
    display: flex;
    flex-direction: column;
    justify-content: space-between;
}

.dna-summary-card strong {
    color: var(--c-navy);
    font-size: 1.65rem;
    line-height: 1.05;
}

.dna-summary-card > span:last-child {
    color: #687883;
    font-size: .76rem;
    line-height: 1.3;
}

.dna-summary-label {
    color: #60717c;
    font-size: .68rem;
    font-weight: 800;
    letter-spacing: .08em;
    text-transform: uppercase;
}

.dna-summary-primary {
    border-color: transparent;
    background: linear-gradient(145deg, var(--c-navy), #244d66);
}

.dna-summary-primary strong,
.dna-summary-primary span {
    color: #fff !important;
}

.dna-summary-success { border-top: 3px solid #2b9a68; }
.dna-summary-warning { border-top: 3px solid #e0a126; }
.dna-summary-danger { border-top: 3px solid #c94d57; }

.dna-phase-navigator {
    border: 0;
    overflow: hidden;
}

.dna-overall-progress {
    height: 8px;
    background: #e9eff3;
}

.dna-overall-progress .progress-bar {
    background: linear-gradient(90deg, var(--c-teal), #2f7898);
}

.dna-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 1rem;
    color: #647580;
}

.dna-dot {
    display: inline-block;
    width: 8px;
    height: 8px;
    margin-right: .25rem;
    border-radius: 50%;
}

.dna-dot-ready { background: #2b9a68; }
.dna-dot-blocked { background: #d79a25; }
.dna-dot-decided { background: #317a9a; }

.dna-phase-links {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .75rem;
}

.dna-phase-link {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: .2rem .7rem;
    padding: .85rem 1rem;
    border: 1px solid #dfe7ec;
    border-radius: 10px;
    color: var(--c-navy);
    background: #f9fbfc;
    text-decoration: none;
    transition: border-color .15s ease, transform .15s ease, box-shadow .15s ease;
}

.dna-phase-link:hover {
    border-color: var(--c-teal);
    color: var(--c-navy);
    transform: translateY(-1px);
    box-shadow: 0 7px 18px rgba(22, 72, 92, .08);
}

.dna-phase-name { font-weight: 750; }
.dna-phase-percent { color: #6e7d86; font-size: .75rem; }

.dna-phase-section {
    margin: 0 0 2.75rem;
    scroll-margin-top: 5rem;
}

.dna-phase-heading {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 0 0 .85rem;
    padding: 0 .25rem;
}

.dna-phase-heading > div {
    display: flex;
    align-items: center;
    gap: .8rem;
}

.dna-phase-index {
    color: var(--c-teal);
    font-size: .75rem;
    font-weight: 850;
    letter-spacing: .12em;
}

.dna-phase-heading h3 {
    margin: 0;
    color: var(--c-navy);
    font-size: 1.25rem;
}

.dna-phase-heading p {
    margin: .1rem 0 0;
    color: #74838c;
    font-size: .78rem;
}

.dna-gate-card {
    margin-bottom: .8rem;
    border: 1px solid #dce5ea;
    border-radius: 12px;
    background: #fff;
    overflow: hidden;
    scroll-margin-top: 5rem;
}

.dna-gate-card[open] {
    border-color: rgba(32, 126, 145, .4);
    box-shadow: 0 14px 36px rgba(23, 53, 70, .11) !important;
}

.dna-gate-summary {
    display: grid;
    grid-template-columns: 64px minmax(0, 1fr) auto;
    align-items: stretch;
    gap: 1rem;
    min-height: 112px;
    padding: 0 1rem 0 0;
    cursor: pointer;
    list-style: none;
}

.dna-gate-summary::-webkit-details-marker { display: none; }
.dna-gate-summary::marker { content: ""; }

.dna-gate-summary:hover {
    background: #fbfcfd;
}

.dna-gate-code-wrap {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: center;
    background: linear-gradient(155deg, var(--c-navy), #2a566d);
}

.dna-gate-code {
    color: #fff;
    font-size: 1rem;
    font-weight: 850;
    letter-spacing: .02em;
}

.dna-gate-title {
    align-self: center;
    min-width: 0;
    padding: .95rem 0;
}

.dna-gate-title h4 {
    margin: 0;
    color: var(--c-navy);
    font-size: 1rem;
}

.dna-gate-title > p {
    margin: 0 0 .55rem;
    color: #6b7a84;
    font-size: .82rem;
}

.dna-gate-meta {
    display: flex;
    flex-wrap: wrap;
    gap: .35rem 1rem;
    color: #71818b;
    font-size: .72rem;
}

.dna-gate-meta strong {
    color: #3c4f5b;
    font-weight: 700;
}

.dna-gate-state {
    align-self: center;
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: .4rem;
    min-width: 118px;
}

.dna-expand-label {
    color: #71818b;
    font-size: .68rem;
}

.dna-gate-card[open] .dna-expand-label::before { content: "Close "; }
.dna-gate-card[open] .dna-expand-label { font-size: 0; }
.dna-gate-card[open] .dna-expand-label::before { font-size: .68rem; }

.dna-badge-commercial {
    border: 1px solid #d6b456;
    background: #fff8df;
    color: #725713;
}

.dna-decision-pill,
.dna-readiness-pill,
.dna-deliverable-status {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: fit-content;
    padding: .28rem .55rem;
    border-radius: 999px;
    font-size: .68rem;
    font-weight: 800;
    white-space: nowrap;
}

.dna-decision-pending { background: #eef2f4; color: #596a74; }
.dna-decision-go,
.dna-decision-achieved { background: #dff4e9; color: #176840; }
.dna-decision-conditional-go { background: #fff0cb; color: #79580a; }
.dna-decision-hold { background: #f8e8c4; color: #76550b; }
.dna-decision-no-go { background: #f8dfe2; color: #8a2630; }
.dna-ready { background: #e0f3ea; color: #176840; }
.dna-blocked { background: #fff0d1; color: #7c5b0a; }

.dna-gate-body {
    padding: 1.25rem;
    border-top: 1px solid #e4eaee;
    background: linear-gradient(180deg, #fbfcfd, #fff 10rem);
}

.dna-blocker-panel ul {
    display: grid;
    gap: .25rem;
}

.dna-automatic-checks {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .75rem;
}

.dna-automatic-check {
    display: flex;
    gap: .65rem;
    align-items: center;
    padding: .8rem;
    border: 1px solid #dde5e9;
    border-radius: 9px;
    background: #fff;
}

.dna-automatic-check.is-ready { border-left: 3px solid #2b9a68; }
.dna-automatic-check.is-blocked { border-left: 3px solid #d89b27; }
.dna-check-icon { font-weight: 900; }
.dna-automatic-check.is-ready .dna-check-icon { color: #218052; }
.dna-automatic-check.is-blocked .dna-check-icon { color: #ad7411; }
.dna-automatic-check strong,
.dna-automatic-check span { display: block; }
.dna-automatic-check strong { font-size: .78rem; }
.dna-automatic-check div > span { color: #6d7c85; font-size: .7rem; }

.dna-deliverable-table-wrap {
    border: 1px solid #dfe6ea;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}

.dna-deliverable-table th {
    background: #f1f5f7;
    color: #5a6c77;
    font-size: .7rem;
    letter-spacing: .04em;
    text-transform: uppercase;
}

.dna-deliverable-table td {
    font-size: .78rem;
}

.dna-evidence-ref {
    max-width: 280px;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.dna-deliverable-missing { background: #f2f4f5; color: #62727b; }
.dna-deliverable-in-work { background: #e4eff8; color: #285d7b; }
.dna-deliverable-ready { background: #e9e5f7; color: #574486; }
.dna-deliverable-accepted { background: #dff4e9; color: #176840; }
.dna-deliverable-waived { background: #fff0cb; color: #79580a; }

.dna-deliverable-edit-row td {
    padding: 1rem !important;
    background: #f5f8fa;
}

.dna-evidence-workspace {
    padding: 1rem;
    border: 1px solid #dce5e9;
    border-radius: 12px;
    background: #f7fafb;
}

.dna-deliverable-list {
    display: grid;
    gap: .85rem;
}

.dna-deliverable-card {
    overflow: hidden;
    border: 1px solid #dce5ea;
    border-left: 4px solid #98a8b1;
    border-radius: 10px;
    background: #fff;
    box-shadow: 0 5px 15px rgba(22, 53, 70, .045);
}

.dna-deliverable-card.is-complete { border-left-color: #2b9a68; }
.dna-deliverable-card.is-pending { border-left-color: #d89b27; }

.dna-deliverable-head {
    display: flex;
    justify-content: space-between;
    gap: 1rem;
    padding: .9rem 1rem .75rem;
}

.dna-deliverable-head h6 {
    margin: 0;
    color: var(--c-navy);
    font-size: .92rem;
}

.dna-deliverable-head p {
    margin: .25rem 0 0;
    color: #72818a;
    font-size: .73rem;
}

.dna-deliverable-head-actions {
    display: flex;
    align-items: center;
    gap: .6rem;
    flex: 0 0 auto;
}

.dna-deliverable-code {
    color: var(--c-teal);
    font-size: .69rem;
    font-weight: 900;
    letter-spacing: .045em;
}

.dna-deliverable-step {
    display: grid;
    place-items: center;
    flex: 0 0 30px;
    width: 30px;
    height: 30px;
    border-radius: 50%;
    background: #edf3f5;
    color: #667883;
    font-size: .7rem;
    font-weight: 850;
}

.dna-evidence-current {
    display: grid;
    grid-template-columns: 34px minmax(0, 1fr) auto;
    align-items: center;
    gap: .75rem;
    margin: 0 1rem .85rem;
    padding: .75rem;
    border: 1px solid #dfe7eb;
    border-radius: 9px;
    background: #f9fbfc;
}

.dna-evidence-current.has-evidence {
    border-color: rgba(25, 130, 143, .22);
    background: rgba(25, 139, 151, .045);
}

.dna-evidence-current.is-empty { border-style: dashed; }

.dna-evidence-icon {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 8px;
    background: #e7f0f2;
    color: var(--c-teal);
    font-weight: 900;
}

.dna-evidence-main { min-width: 0; }
.dna-evidence-main span,
.dna-evidence-main strong,
.dna-evidence-main small { display: block; }
.dna-evidence-main span {
    color: #6b7b84;
    font-size: .66rem;
    font-weight: 750;
    text-transform: uppercase;
}
.dna-evidence-main strong {
    overflow: hidden;
    margin: .12rem 0;
    color: #273d49;
    font-size: .8rem;
    text-overflow: ellipsis;
}
.dna-evidence-main small { color: #78868e; font-size: .68rem; }
.dna-evidence-main p { margin: .3rem 0 0; color: #63747d; font-size: .73rem; }
.dna-evidence-open code { display: block; max-width: 260px; overflow-wrap: anywhere; }

.dna-evidence-history {
    margin: 0 1rem .8rem;
    border-top: 1px solid #e6ecef;
}

.dna-evidence-history > summary {
    padding: .65rem 0;
    color: #516670;
    font-size: .72rem;
    font-weight: 800;
    cursor: pointer;
}

.dna-evidence-history > summary span { color: #7a8991; font-weight: 600; }
.dna-evidence-history > div { display: grid; gap: .4rem; padding-bottom: .65rem; }

.dna-evidence-history-row {
    display: grid;
    grid-template-columns: 54px minmax(0, 1fr) auto auto;
    gap: .6rem;
    align-items: center;
    padding: .5rem .65rem;
    border-radius: 7px;
    background: #f6f9fa;
    font-size: .7rem;
}

.dna-evidence-history-row small { color: #7b8990; }

.dna-deliverable-actions {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-top: 1px solid #e3e9ec;
    background: #fbfcfd;
}

.dna-evidence-action + .dna-evidence-action { border-left: 1px solid #e3e9ec; }

.dna-evidence-action > summary {
    padding: .7rem 1rem;
    color: #3f5b68;
    font-size: .72rem;
    font-weight: 850;
    cursor: pointer;
    text-align: center;
}

.dna-evidence-action[open] {
    grid-column: 1 / -1;
    border-left: 0;
    border-top: 1px solid #dce5e9;
}

.dna-evidence-action[open] > summary {
    border-bottom: 1px solid #dfe6ea;
    background: #f1f6f7;
}

.dna-evidence-action .dna-control-form {
    border: 0;
    border-radius: 0;
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, .5);
}

.dna-evidence-acceptance {
    padding: .45rem 1rem;
    border-top: 1px solid #e5ebee;
    color: #547064;
    background: #f3faf6;
    font-size: .68rem;
}

.dna-inline-form,
.dna-control-form {
    padding: 1rem;
    border: 1px solid #dfe6ea;
    border-radius: 9px;
    background: #fff;
}

.dna-control-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: .75rem;
    align-items: start;
}

.dna-control-panel {
    border: 1px solid #dce4e8;
    border-radius: 9px;
    background: #fff;
    overflow: hidden;
}

.dna-control-panel > summary {
    padding: .8rem 1rem;
    color: var(--c-navy);
    font-size: .8rem;
    font-weight: 800;
    cursor: pointer;
}

.dna-control-panel[open] {
    grid-column: 1 / -1;
    border-color: rgba(33, 127, 146, .45);
}

.dna-control-panel[open] > summary {
    border-bottom: 1px solid #e1e7eb;
    background: #f5f9fa;
}

.dna-control-panel .dna-control-form {
    border: 0;
    border-radius: 0;
}

.dna-decision-panel > summary {
    background: linear-gradient(135deg, rgba(27, 114, 132, .07), rgba(255, 255, 255, 0));
}

.dna-decision-record {
    padding: 1rem;
    border: 1px solid #dce5e9;
    border-left: 4px solid var(--c-teal);
    border-radius: 9px;
    background: #f8fbfc;
}

.dna-decision-record > div {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: .75rem;
}

.dna-decision-record dl {
    display: grid;
    grid-template-columns: 120px 1fr;
    gap: .4rem .8rem;
    margin: 0;
    font-size: .78rem;
}

.dna-decision-record dt { color: #697982; }
.dna-decision-record dd { margin: 0; }
.dna-native-documents {
    padding: 1rem;
    border: 1px solid rgba(13,122,110,.2);
    border-radius: var(--radius-lg);
    background: linear-gradient(135deg, rgba(13,122,110,.06), rgba(255,255,255,.96));
}
.dna-native-document-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
    gap: .75rem;
}
.dna-native-document-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .85rem;
    min-width: 0;
    padding: .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fff;
    color: var(--c-text);
    text-decoration: none;
    box-shadow: var(--shadow-sm);
}
.dna-native-document-card:hover {
    border-color: var(--c-teal);
    color: var(--c-text);
    transform: translateY(-1px);
}
.dna-native-document-card > div:first-child { min-width: 0; }
.dna-native-document-card strong,
.dna-native-document-card small,
.dna-native-document-type { display: block; }
.dna-native-document-card small { margin-top: .2rem; color: var(--c-muted); }
.dna-native-document-type {
    margin-bottom: .25rem;
    color: var(--c-teal);
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .05em;
    text-transform: uppercase;
}
.dna-native-document-progress {
    display: grid;
    justify-items: end;
    gap: .35rem;
    flex: 0 0 auto;
}

/* ── Guided aircraft-program native documents ───────────────────────────── */
.native-document-page-header { align-items: flex-end; }
.native-document-status {
    display: inline-flex;
    align-items: center;
    min-height: 28px;
    padding: .25rem .65rem;
    border-radius: 999px;
    background: #e2e8f0;
    color: var(--c-navy);
    font-size: .75rem;
    font-weight: 900;
}
.native-document-status-in-review { background: #dbeafe; color: #1d4ed8; }
.native-document-status-changes-requested { background: #ffedd5; color: #c2410c; }
.native-document-status-approved { background: #d1fae5; color: #047857; }
.native-document-status-released { background: var(--c-teal); color: #fff; }
.native-document-lifecycle {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: .5rem;
    margin-bottom: 1.25rem;
}
.native-lifecycle-step {
    position: relative;
    display: flex;
    align-items: center;
    gap: .6rem;
    min-width: 0;
    padding: .7rem .8rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fff;
    color: var(--c-muted);
    box-shadow: var(--shadow-sm);
}
.native-lifecycle-step > span {
    display: grid;
    place-items: center;
    flex: 0 0 1.7rem;
    width: 1.7rem;
    height: 1.7rem;
    border-radius: 999px;
    background: #e2e8f0;
    font-size: .72rem;
    font-weight: 900;
}
.native-lifecycle-step.is-complete { color: #047857; border-color: rgba(4,120,87,.28); }
.native-lifecycle-step.is-complete > span { color: #fff; background: #047857; }
.native-lifecycle-step.is-current { color: var(--c-navy); border-color: var(--c-teal); }
.native-lifecycle-step.is-current > span { color: #fff; background: var(--c-teal); }
.native-document-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
    gap: 1.25rem;
    align-items: start;
}
.native-document-editor,
.native-document-sidebar { min-width: 0; }
.native-document-sidebar {
    position: sticky;
    top: 1rem;
    display: grid;
    gap: 1rem;
}
.native-document-sidebar > * { margin-bottom: 0; }
.native-document-owner-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(240px, .65fr);
    gap: 1rem;
    align-items: end;
}
.native-document-section-nav {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem;
    margin-bottom: 1rem;
}
.native-document-section-nav a {
    padding: .38rem .65rem;
    border: 1px solid var(--c-border);
    border-radius: 999px;
    background: #fff;
    color: var(--c-muted);
    font-size: .78rem;
    font-weight: 800;
    text-decoration: none;
}
.native-document-section-nav a:hover { border-color: var(--c-teal); color: var(--c-teal); }
.native-document-section { scroll-margin-top: 1rem; }
.native-document-section-heading {
    display: grid;
    grid-template-columns: 2.2rem minmax(0, 1fr);
    gap: .75rem;
    align-items: start;
    margin-bottom: 1rem;
}
.native-document-section-heading > span {
    display: grid;
    place-items: center;
    width: 2.2rem;
    height: 2.2rem;
    border-radius: .7rem;
    color: var(--c-teal);
    background: rgba(13,122,110,.1);
    font-weight: 900;
}
.native-document-savebar {
    position: sticky;
    bottom: .75rem;
    z-index: 20;
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    margin: 1rem 0 1.25rem;
    padding: .85rem 1rem;
    border: 1px solid rgba(13,122,110,.28);
    border-radius: var(--radius-lg);
    background: rgba(255,255,255,.96);
    box-shadow: 0 12px 30px rgba(15,35,64,.14);
    backdrop-filter: blur(10px);
}
.native-review-actions { border-left: 4px solid #2563eb; }
.native-review-action {
    height: 100%;
    padding: 1rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fbfcfd;
}
.native-review-changes { border-top: 3px solid var(--c-orange); }
.native-review-approve { border-top: 3px solid var(--c-teal); }
.native-release-panel,
.native-new-revision-panel {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(280px, .7fr);
    gap: 1rem;
    align-items: center;
}
.native-release-panel { border-left: 4px solid var(--c-teal); }
.native-new-revision-panel { border-left: 4px solid var(--c-navy); }
.native-completion-card .progress { height: .65rem; }
.native-readiness-card { border-top: 4px solid var(--c-orange); }
.native-readiness-card.is-ready { border-top-color: var(--c-success); }
.native-readiness-value {
    margin-bottom: .4rem;
    color: var(--c-navy);
    font-size: 1.35rem;
    font-weight: 900;
}
.native-document-control-card dd { word-break: break-word; }
.native-document-revisions { display: grid; gap: .45rem; }
.native-document-revisions a {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    padding: .55rem .65rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius-sm);
    color: var(--c-muted);
    text-decoration: none;
}
.native-document-revisions a.active {
    border-color: var(--c-teal);
    color: var(--c-teal);
    background: rgba(13,122,110,.06);
}
.native-document-comments { display: grid; gap: .65rem; }
.native-document-comments article {
    padding: .75rem .85rem;
    border: 1px solid var(--c-border);
    border-radius: var(--radius);
    background: #fbfcfd;
}
.native-document-comments article > div {
    display: flex;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: .35rem;
    font-size: .8rem;
}
.native-document-comments article span { color: var(--c-muted); }
.native-document-comments article p { margin: 0; }
.native-document-events {
    display: grid;
    gap: .75rem;
    margin: 0;
    padding-left: 1.1rem;
}
.native-document-events li { padding-left: .2rem; }
.native-document-events span,
.native-document-events small { display: block; color: var(--c-muted); font-size: .74rem; }
.native-document-events p { margin: .25rem 0 0; font-size: .82rem; }

.legacy-document-boundary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.legacy-document-layout {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 310px;
    gap: 1rem;
    align-items: start;
}

.legacy-document-layout main,
.legacy-document-sidebar {
    display: grid;
    gap: 1rem;
}

.legacy-document-sidebar { position: sticky; top: 5.5rem; }

.legacy-document-summary {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
}

.legacy-completion {
    display: grid;
    justify-items: end;
    min-width: 130px;
}

.legacy-completion strong { color: var(--c-navy); font-size: 1.5rem; }
.legacy-completion span { color: var(--c-muted); font-size: .68rem; }

.legacy-document-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: .75rem;
}

.legacy-document-field {
    padding: .75rem;
    border: 1px solid #e1e7ea;
    border-radius: 8px;
    background: #fafcfd;
}

.legacy-document-field dt {
    margin-bottom: .25rem;
    color: #667983;
    font-size: .68rem;
    font-weight: 800;
    text-transform: uppercase;
}

.legacy-document-field dd {
    margin: 0;
    color: #2f444f;
    font-size: .8rem;
    white-space: pre-wrap;
}

.legacy-document-field.is-empty { opacity: .62; }
.legacy-document-field.is-empty dd span { color: #87949b; font-style: italic; }

@media (max-width: 1199.98px) {
    .dna-summary-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); }
    .dna-control-grid { grid-template-columns: 1fr; }
    .dna-control-panel[open] { grid-column: auto; }
    .native-document-layout { grid-template-columns: minmax(0, 1fr); }
    .native-document-sidebar { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .legacy-document-layout { grid-template-columns: minmax(0, 1fr); }
    .legacy-document-sidebar { position: static; grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 767.98px) {
    .dna-summary-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dna-phase-links { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .dna-gate-summary {
        grid-template-columns: 48px minmax(0, 1fr);
        gap: .75rem;
        padding-right: .75rem;
    }
    .dna-gate-state {
        grid-column: 2;
        flex-direction: row;
        flex-wrap: wrap;
        align-items: center;
        padding: 0 0 .8rem;
    }
    .dna-expand-label { display: none; }
    .dna-gate-meta { display: grid; grid-template-columns: 1fr 1fr; }
    .dna-automatic-checks { grid-template-columns: 1fr; }
    .dna-decision-record dl { grid-template-columns: 1fr; gap: .1rem; }
    .dna-decision-record dd { margin-bottom: .45rem; }
    .native-document-page-header { align-items: stretch; }
    .native-document-lifecycle { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .native-document-owner-card,
    .native-release-panel,
    .native-new-revision-panel { grid-template-columns: minmax(0, 1fr); }
    .native-document-sidebar { grid-template-columns: minmax(0, 1fr); }
    .native-document-savebar { position: static; align-items: stretch; flex-direction: column; }
    .dna-focus-card { grid-template-columns: 70px minmax(0, 1fr); }
    .dna-focus-card > .btn { grid-column: 1 / -1; }
    .dna-focus-gate { min-height: 74px; }
    .dna-evidence-current { grid-template-columns: 34px minmax(0, 1fr); }
    .dna-evidence-open { grid-column: 2; }
    .dna-deliverable-actions { grid-template-columns: 1fr; }
    .dna-evidence-action + .dna-evidence-action { border-left: 0; border-top: 1px solid #e3e9ec; }
    .dna-evidence-action[open] { grid-column: auto; }
    .dna-evidence-history-row { grid-template-columns: 44px minmax(0, 1fr); }
    .dna-evidence-history-row small,
    .dna-evidence-history-row a { grid-column: 2; }
    .legacy-document-boundary { align-items: stretch; flex-direction: column; }
    .legacy-document-sidebar { grid-template-columns: minmax(0, 1fr); }
    .legacy-document-fields { grid-template-columns: minmax(0, 1fr); }
}

@media (max-width: 479.98px) {
    .dna-summary-grid { grid-template-columns: 1fr; }
    .dna-summary-card { min-height: 108px; }
    .dna-phase-links { grid-template-columns: 1fr; }
    .dna-gate-title h4 { font-size: .92rem; }
    .dna-gate-body { padding: .85rem; }
    .dna-focus-card { grid-template-columns: 1fr; }
    .dna-focus-gate { min-height: 64px; }
    .dna-focus-card > .btn { grid-column: auto; }
    .dna-evidence-workspace { padding: .7rem; }
    .dna-deliverable-head { padding: .8rem; }
    .dna-evidence-current { margin: 0 .8rem .75rem; }
    .legacy-document-summary { align-items: flex-start; flex-direction: column; }
    .legacy-completion { justify-items: start; }
}

/* ── Print ────────────────────────────────────────────────────────────────── */
@media print {
    @page {
        size: A4;
        margin: 14mm 12mm;
    }
    .no-print,
    .navbar,
    .sidebar,
    footer {
        display: none !important;
    }
    html,
    body {
        background: #fff !important;
        color: #000 !important;
        font-size: 10pt;
        line-height: 1.35;
    }
    .app-content,
    .container,
    .container-fluid {
        width: 100% !important;
        max-width: none !important;
        margin: 0 !important;
        padding: 0 !important;
    }
    .page-header {
        display: block;
        margin: 0 0 5mm;
        padding-bottom: 3mm;
        border-bottom: 1px solid #999;
    }
    .page-kicker {
        color: #333 !important;
        font-size: 8pt;
        letter-spacing: .12em;
    }
    h1 { font-size: 18pt; }
    h2, h3 { font-size: 13pt; }
    h4 { font-size: 11pt; }
    .card,
    .section-card,
    .latest-revision-card,
    .empty-state {
        box-shadow: none !important;
        break-inside: avoid;
        page-break-inside: avoid;
        border: 1px solid #b9b9b9 !important;
        background: #fff !important;
    }
    .section-card {
        margin: 0 0 5mm;
        padding: 4mm;
    }
    .latest-revision-card {
        display: block;
        margin-top: 4mm;
        padding: 3mm;
    }
    a { color: inherit; text-decoration: none; }
    .table-responsive {
        overflow: visible !important;
    }
    table.table,
    .bom-table {
        width: 100% !important;
        border-collapse: collapse !important;
    }
    table.table th,
    table.table td,
    .bom-table th,
    .bom-table td {
        border: 1px solid #aaa !important;
        padding: 3px 6px !important;
        color: #000 !important;
        font-size: 9pt;
        vertical-align: top;
    }
    table.table thead,
    .bom-table thead {
        background: #e8ecf0 !important;
        display: table-header-group;
    }
    .file-chip,
    .badge,
    .release-state-badge,
    .stock-status-badge {
        border: 1px solid #777 !important;
        background: #fff !important;
        color: #000 !important;
        box-shadow: none !important;
    }
    .preview-tabs,
    .preview-toolbar,
    .pdf-preview-frame,
    .viewer-shell,
    .dxf-preview-shell {
        display: none !important;
    }
    #item-bom {
        break-before: page;
        page-break-before: always;
    }
    .stat-card, .activity-feed { display: none; }
    h1, h2, h3, h4, .section-title { page-break-after: avoid; }
}
