/* themes/bootswatch_spacelab/css/style.css — bespoke "space agency" polish.
   Spacelab = clean silvery blue-grey, crisp/scientific. The Bootswatch skin
   supplies colours/typography/components through the --bs-* variables; this
   file adds a precise instrument-panel hero + orderly section/card rhythm. */

/* ── Hero : cool silvery-blue, gridded "control room" feel ───────────── */
.bsw-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(4.5rem, 11vw, 8rem) 0 clamp(4rem, 9vw, 6.5rem);
    background:
        linear-gradient(180deg,
            rgba(var(--bs-primary-rgb), 0.10) 0%,
            rgba(var(--bs-primary-rgb), 0.03) 45%,
            var(--bs-body-bg) 100%);
    border-bottom: 1px solid rgba(var(--bs-primary-rgb), 0.12);
}

/* fine precision grid — the orderly scientific backdrop */
.bsw-hero__grid {
    position: absolute;
    inset: 0;
    background-image:
        linear-gradient(rgba(var(--bs-primary-rgb), 0.06) 1px, transparent 1px),
        linear-gradient(90deg, rgba(var(--bs-primary-rgb), 0.06) 1px, transparent 1px);
    background-size: clamp(2rem, 4vw, 3rem) clamp(2rem, 4vw, 3rem);
    /* fade the grid out toward the edges for an instrument-screen look */
    -webkit-mask-image: radial-gradient(ellipse 75% 70% at 50% 38%, #000 30%, transparent 80%);
            mask-image: radial-gradient(ellipse 75% 70% at 50% 38%, #000 30%, transparent 80%);
    pointer-events: none;
}

/* soft cool glow above the headline */
.bsw-hero__glow {
    position: absolute;
    left: 50%;
    top: -18%;
    width: min(46rem, 90%);
    height: 30rem;
    transform: translateX(-50%);
    background: radial-gradient(ellipse at center,
        rgba(var(--bs-primary-rgb), 0.22), transparent 65%);
    filter: blur(8px);
    pointer-events: none;
}

/* baseline "tick ruler" along the bottom — crisp, measured */
.bsw-hero__ticks {
    position: absolute;
    left: 0;
    right: 0;
    bottom: 0;
    height: 12px;
    background-image: repeating-linear-gradient(90deg,
        rgba(var(--bs-primary-rgb), 0.30) 0 1px,
        transparent 1px 14px);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 12%, #000 88%, transparent);
    pointer-events: none;
}

/* status eyebrow with a live "telemetry" pulse */
.bsw-hero__eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 0.5rem;
    margin-bottom: 1.25rem;
    padding: 0.35rem 0.9rem;
    border: 1px solid rgba(var(--bs-primary-rgb), 0.30);
    border-radius: 2rem;
    background: rgba(var(--bs-primary-rgb), 0.06);
    color: var(--bs-primary);
    font-size: 0.72rem;
    font-weight: 600;
    letter-spacing: 0.14em;
    text-transform: uppercase;
}
.bsw-hero__pulse {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background: var(--bs-primary);
    box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0.55);
    animation: bsw-pulse 2.4s ease-out infinite;
}
@keyframes bsw-pulse {
    0%   { box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0.55); }
    70%  { box-shadow: 0 0 0 0.55rem rgba(var(--bs-primary-rgb), 0); }
    100% { box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0); }
}

.bsw-hero__title {
    letter-spacing: -0.015em;
    line-height: 1.08;
}
.bsw-hero__lead {
    color: var(--bs-secondary-color);
    max-width: 44ch;
    margin-inline: auto;
}

/* ── Telemetry strip : a row of monospace instrument readouts ─────────── */
.bsw-telem {
    position: relative;
    display: flex;
    flex-wrap: wrap;            /* readouts wrap on narrow screens */
    justify-content: center;
    align-items: stretch;
    gap: 0.5rem;
    margin: 2rem auto 0;
    padding: 0.85rem 1rem 1.1rem;
    max-width: 52rem;
    border: 1px solid rgba(var(--bs-primary-rgb), 0.22);
    border-radius: 0.55rem;
    background:
        linear-gradient(180deg,
            rgba(var(--bs-primary-rgb), 0.05),
            rgba(var(--bs-primary-rgb), 0.02));
    box-shadow: inset 0 1px 0 rgba(var(--bs-primary-rgb), 0.10);
}
/* one readout cell : KEY over VALUE, divided by a faint rule */
.bsw-telem__cell {
    flex: 1 1 8.5rem;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.25rem;
    padding: 0.15rem 0.9rem;
    text-align: center;
}
.bsw-telem__cell + .bsw-telem__cell {
    border-left: 1px solid rgba(var(--bs-primary-rgb), 0.16);
}
.bsw-telem__key {
    font-family: var(--bs-font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
    font-size: 0.62rem;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--bs-secondary-color);
}
.bsw-telem__val {
    font-family: var(--bs-font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
    font-size: 0.92rem;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.02em;
    color: var(--bs-primary);
    white-space: nowrap;
}
.bsw-telem__val--ok {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
}
.bsw-telem__dot {
    width: 0.5rem;
    height: 0.5rem;
    border-radius: 50%;
    background: var(--bs-primary);
    box-shadow: 0 0 0 0 rgba(var(--bs-primary-rgb), 0.55);
    animation: bsw-pulse 2.4s ease-out infinite;
}
/* SIGNAL : five rising bars */
.bsw-telem__bars {
    display: inline-flex;
    align-items: flex-end;
    gap: 2px;
    height: 0.95rem;
}
.bsw-telem__bars i {
    width: 3px;
    background: var(--bs-primary);
    border-radius: 1px;
}
.bsw-telem__bars i:nth-child(1) { height: 30%; }
.bsw-telem__bars i:nth-child(2) { height: 50%; }
.bsw-telem__bars i:nth-child(3) { height: 70%; }
.bsw-telem__bars i:nth-child(4) { height: 90%; }
.bsw-telem__bars i:nth-child(5) { height: 100%; opacity: 0.4; }
/* tiny tick ruler underlining the whole strip */
.bsw-telem__ruler {
    flex: 1 0 100%;
    height: 7px;
    margin-top: 0.55rem;
    background-image: repeating-linear-gradient(90deg,
        rgba(var(--bs-primary-rgb), 0.35) 0 1px,
        transparent 1px 9px);
    -webkit-mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
            mask-image: linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent);
}

/* precise outlined INITIATE / CTA — instrument-button feel */
.bsw-hero__cta {
    font-family: var(--bs-font-monospace, ui-monospace, SFMono-Regular, Menlo, monospace);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    font-size: 0.92rem;
    font-weight: 600;
    border-width: 1.5px;
}

/* ── Section rhythm ──────────────────────────────────────────────────── */
.bsw-section,
main > section {
    padding-block: clamp(3rem, 7vw, 5rem);
}
main > section { scroll-margin-top: 5rem; }

/* gentle alternating bands for an orderly, measured cadence */
main > section:nth-of-type(even) {
    background: rgba(var(--bs-primary-rgb), 0.025);
}

/* centred section titles emitted by the _shared sections */
.section-title h2 {
    font-weight: 700;
    letter-spacing: -0.01em;
}
.section-title p {
    color: var(--bs-secondary-color);
}

/* ── Cards : crisp, instrument-panel hover ───────────────────────────── */
.card {
    border: 1px solid rgba(var(--bs-primary-rgb), 0.14);
    border-radius: 0.6rem;
    background: var(--bs-body-bg);
    transition: transform 0.22s ease,
                box-shadow 0.22s ease,
                border-color 0.22s ease;
}
.card:hover {
    transform: translateY(-4px);
    border-color: rgba(var(--bs-primary-rgb), 0.40);
    box-shadow: 0 0.75rem 2rem rgba(var(--bs-primary-rgb), 0.16);
}
.card .card-title a {
    color: var(--bs-body-color);
    transition: color 0.18s ease;
}
.card:hover .card-title a {
    color: var(--bs-primary);
}

/* ── Footer ──────────────────────────────────────────────────────────── */
.bsw-footer a { text-decoration: none; }
.bsw-footer a:hover { color: var(--bs-primary) !important; }

/* ── Accessibility : honour reduced-motion ───────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .bsw-hero__pulse,
    .bsw-telem__dot { animation: none; }
    .card { transition: none; }
    .card:hover { transform: none; }
}

/* ── Small screens ───────────────────────────────────────────────────── */
@media (max-width: 575.98px) {
    .bsw-hero__glow { height: 22rem; }
    .bsw-hero__eyebrow { font-size: 0.65rem; letter-spacing: 0.10em; }
    /* telemetry wraps to a tidy 2-up grid; drop the inter-cell rules */
    .bsw-telem { padding: 0.75rem 0.6rem 0.9rem; }
    .bsw-telem__cell { flex-basis: 42%; padding: 0.15rem 0.4rem; }
    .bsw-telem__cell + .bsw-telem__cell { border-left: none; }
    .bsw-telem__val { font-size: 0.84rem; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Phase 3 — bespoke section overrides (projects / team / testimonials / faq)
   Scientific instrument-panel identity: silvery rules, telemetry tags,
   measured numbering, crisp hover. Built on the --bs-* palette.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Section heading : telemetry "tag" above an underlined title ───────── */
.bsw-panel-head {
    position: relative;
    text-align: center;
}
.bsw-panel-tag {
    display: inline-block;
    margin-bottom: 0.6rem;
    padding: 0.2rem 0.7rem;
    border: 1px solid rgba(var(--bs-primary-rgb), 0.30);
    border-radius: 0.3rem;
    background: rgba(var(--bs-primary-rgb), 0.05);
    color: var(--bs-primary);
    font-size: 0.66rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
}
/* a fine centred rule beneath the section title — the "measured" feel */
.bsw-panel-head h2 {
    display: inline-block;
    padding-bottom: 0.6rem;
    border-bottom: 2px solid rgba(var(--bs-primary-rgb), 0.35);
}

/* ── Instrument-panel card : a shared crisp, gridded surface ──────────── */
.bsw-instrument {
    border: 1px solid rgba(var(--bs-primary-rgb), 0.16);
    border-radius: 0.55rem;
    background: var(--bs-body-bg);
    box-shadow: 0 1px 0 rgba(var(--bs-primary-rgb), 0.05);
    overflow: hidden;
    transition: transform 0.22s ease,
                box-shadow 0.22s ease,
                border-color 0.22s ease;
}
.bsw-instrument:hover {
    transform: translateY(-4px);
    border-color: rgba(var(--bs-primary-rgb), 0.42);
    box-shadow: 0 0.75rem 2rem rgba(var(--bs-primary-rgb), 0.16);
}

/* ── Projects : image media with a stencilled reference number ────────── */
.bsw-instrument__media {
    position: relative;
}
.bsw-instrument__ref {
    position: absolute;
    top: 0.5rem;
    right: 0.5rem;
    padding: 0.15rem 0.5rem;
    border-radius: 0.3rem;
    background: rgba(var(--bs-body-bg-rgb, 255, 255, 255), 0.88);
    border: 1px solid rgba(var(--bs-primary-rgb), 0.25);
    color: var(--bs-primary);
    font-size: 0.68rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    backdrop-filter: saturate(140%) blur(2px);
}

/* small caps "Featured" chip + category meta line */
.bsw-chip {
    background: rgba(var(--bs-primary-rgb), 0.10);
    color: var(--bs-primary);
    border: 1px solid rgba(var(--bs-primary-rgb), 0.30);
    font-weight: 600;
    letter-spacing: 0.04em;
}
.bsw-chip .bi { font-size: 0.75em; }
.bsw-meta {
    color: var(--bs-secondary-color);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    font-size: 0.72rem !important;
}

/* ── Team : placeholder avatar + measured social links ────────────────── */
.bsw-roster__placeholder {
    background:
        linear-gradient(rgba(var(--bs-primary-rgb), 0.06) 1px, transparent 1px),
        linear-gradient(90deg, rgba(var(--bs-primary-rgb), 0.06) 1px, transparent 1px),
        rgba(var(--bs-primary-rgb), 0.04);
    background-size: 1.25rem 1.25rem, 1.25rem 1.25rem, auto;
}
.bsw-roster__links a {
    color: var(--bs-secondary-color);
    transition: color 0.18s ease;
}
.bsw-roster__links a:hover { color: var(--bs-primary); }

/* ── Testimonials : quote cards with a primary "tab" edge ─────────────── */
.bsw-quote {
    position: relative;
}
.bsw-quote::before {
    content: "";
    position: absolute;
    inset: 0 auto 0 0;
    width: 3px;
    background: linear-gradient(180deg,
        var(--bs-primary), rgba(var(--bs-primary-rgb), 0.15));
}
.bsw-quote .card-body { padding-left: 1.5rem; }
.bsw-quote__by { color: var(--bs-secondary-color); }

/* ── FAQ : console-readout accordion with indexed rows ────────────────── */
.bsw-faq .accordion-item {
    border: 1px solid rgba(var(--bs-primary-rgb), 0.16) !important;
    border-radius: 0.5rem !important;
    overflow: hidden;
}
.bsw-faq .accordion-button {
    background: var(--bs-body-bg);
    color: var(--bs-body-color);
    font-weight: 600;
    gap: 0.75rem;
}
.bsw-faq .accordion-button:not(.collapsed) {
    background: rgba(var(--bs-primary-rgb), 0.06);
    color: var(--bs-primary);
    box-shadow: inset 0 -1px 0 rgba(var(--bs-primary-rgb), 0.18);
}
.bsw-faq .accordion-button:focus {
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);
}
.bsw-faq__idx {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
    font-size: 0.8rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--bs-primary);
    opacity: 0.7;
}

/* ── Accessibility / motion ──────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .bsw-instrument { transition: none; }
    .bsw-instrument:hover { transform: none; }
}

/* ── Small screens ───────────────────────────────────────────────────── */
@media (max-width: 575.98px) {
    .bsw-panel-tag { font-size: 0.6rem; letter-spacing: 0.12em; }
    .bsw-quote .card-body { padding-left: 1.25rem; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Phase 5 — bespoke home sections (about / skills / stats / resume / services)
   Same scientific instrument-panel identity: silvery rules, telemetry
   readouts, calibration gauges, measured numbering. Built on --bs-* palette.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── About : data-readout spec sheet beside a referenced image plate ──── */
.bsw-about__title {
    font-weight: 700;
    letter-spacing: -0.01em;
}
.bsw-readout {
    border-top: 1px solid rgba(var(--bs-primary-rgb), 0.16);
    margin-top: 1.25rem;
}
.bsw-readout__row {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    padding: 0.6rem 0;
    border-bottom: 1px solid rgba(var(--bs-primary-rgb), 0.12);
}
.bsw-readout__row .bi { flex: 0 0 auto; }
.bsw-readout__key {
    flex: 0 0 auto;
    min-width: 7rem;
    color: var(--bs-secondary-color);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.72rem;
    font-weight: 600;
}
.bsw-readout__val {
    flex: 1 1 auto;
    font-variant-numeric: tabular-nums;
}
.bsw-readout__val a { color: var(--bs-primary); text-decoration: none; }
.bsw-readout__val a:hover { text-decoration: underline; }

/* ── Skills : calibration gauges in crisp instrument cells ────────────── */
.bsw-gauge {
    padding: 1.1rem 1.2rem;
    border: 1px solid rgba(var(--bs-primary-rgb), 0.16);
    border-radius: 0.55rem;
    background: var(--bs-body-bg);
    box-shadow: 0 1px 0 rgba(var(--bs-primary-rgb), 0.05);
    transition: border-color 0.22s ease, box-shadow 0.22s ease;
}
.bsw-gauge:hover {
    border-color: rgba(var(--bs-primary-rgb), 0.40);
    box-shadow: 0 0.5rem 1.5rem rgba(var(--bs-primary-rgb), 0.12);
}
.bsw-gauge__head {
    display: flex;
    align-items: center;
    gap: 0.6rem;
}
.bsw-gauge__head .bi { font-size: 1.25rem; }
.bsw-gauge__name { flex: 1 1 auto; font-weight: 600; }
.bsw-gauge__pct {
    flex: 0 0 auto;
    font-variant-numeric: tabular-nums;
    font-size: 0.78rem;
    font-weight: 700;
    color: var(--bs-primary);
}
.bsw-gauge__bar {
    height: 6px;
    background: rgba(var(--bs-primary-rgb), 0.10);
    border-radius: 2rem;
    overflow: hidden;
}
.bsw-gauge__bar .progress-bar { border-radius: 2rem; }

/* ── Stats : telemetry readout, separated by fine vertical rules ──────── */
.bsw-telemetry { text-align: center; }
.bsw-telemetry__cell {
    position: relative;
    padding: 0.5rem 0.75rem;
}
/* fine dividers between cells (skip the first in each row at the lg grid) */
.bsw-telemetry > [class*="col-"] + [class*="col-"] .bsw-telemetry__cell::before {
    content: "";
    position: absolute;
    left: 0;
    top: 12%;
    bottom: 12%;
    width: 1px;
    background: linear-gradient(180deg,
        transparent, rgba(var(--bs-primary-rgb), 0.28), transparent);
}
.bsw-telemetry__icon {
    display: block;
    font-size: 2rem;
    margin-bottom: 0.4rem;
}
.bsw-telemetry__value {
    font-size: clamp(2rem, 5vw, 2.75rem);
    font-weight: 700;
    line-height: 1;
    font-variant-numeric: tabular-nums;
    letter-spacing: -0.02em;
}
.bsw-telemetry__unit {
    font-size: 0.45em;
    font-weight: 600;
    margin-left: 0.1em;
}
.bsw-telemetry__label {
    margin-top: 0.4rem;
    color: var(--bs-secondary-color);
    text-transform: uppercase;
    letter-spacing: 0.08em;
    font-size: 0.74rem;
    font-weight: 600;
}

/* ── Resume : mission-log timeline with measured nodes ────────────────── */
.bsw-resume__head { font-weight: 700; letter-spacing: -0.01em; }
.bsw-timeline {
    position: relative;
    padding-left: 1.5rem;
    border-left: 2px solid rgba(var(--bs-primary-rgb), 0.20);
}
.bsw-timeline__item {
    position: relative;
    padding-bottom: 1.4rem;
}
.bsw-timeline__item:last-child { padding-bottom: 0; }
.bsw-timeline__item::before {
    content: "";
    position: absolute;
    left: calc(-1.5rem - 5px);
    top: 0.35rem;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--bs-body-bg);
    border: 2px solid var(--bs-primary);
    box-shadow: 0 0 0 3px rgba(var(--bs-primary-rgb), 0.10);
}

/* ── Services : numbered instrument cards with a square icon plate ─────── */
.bsw-service__ref {
    align-self: flex-end;
    margin-bottom: 0.25rem;
    font-variant-numeric: tabular-nums;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.06em;
    color: var(--bs-primary);
    opacity: 0.7;
}
.bsw-service__icon {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 3rem;
    height: 3rem;
    border: 1px solid rgba(var(--bs-primary-rgb), 0.28);
    border-radius: 0.55rem;
    background: rgba(var(--bs-primary-rgb), 0.07);
    font-size: 1.4rem;
}

/* ── Accessibility / motion ──────────────────────────────────────────── */
@media (prefers-reduced-motion: reduce) {
    .bsw-gauge { transition: none; }
}

/* ── Small screens ───────────────────────────────────────────────────── */
@media (max-width: 767.98px) {
    /* drop vertical rules between stacked telemetry cells */
    .bsw-telemetry > [class*="col-"] + [class*="col-"] .bsw-telemetry__cell::before {
        display: none;
    }
    .bsw-readout__key { min-width: 5.5rem; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Phase 5 — bespoke list sections (publications / events / resources / blog)
   Reuses .bsw-panel-head/.bsw-panel-tag/.bsw-instrument/.bsw-instrument__ref/
   .bsw-chip/.bsw-meta/.bsw-service__ref. Only the publications "instrument
   log" rows and the events date readout need new rules. Built on --bs-*.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Publications : a measured "instrument log" of indexed records ─────── */
.bsw-pub-list { border-top: 1px solid rgba(var(--bs-primary-rgb), 0.16); }
.bsw-pub-row {
    display: flex;
    align-items: flex-start;
    gap: 1rem;
    padding: 0.9rem 0.25rem;
    border-bottom: 1px solid rgba(var(--bs-primary-rgb), 0.12);
    transition: background-color 0.2s ease;
}
.bsw-pub-row:hover { background: rgba(var(--bs-primary-rgb), 0.035); }
.bsw-pub-row__ref {
    flex: 0 0 auto;
    padding-top: 0.1rem;
    font-variant-numeric: tabular-nums;
    font-size: 0.74rem;
    font-weight: 700;
    letter-spacing: 0.04em;
    color: var(--bs-primary);
    opacity: 0.7;
    white-space: nowrap;
}
.bsw-pub-row__title {
    color: var(--bs-body-color);
    transition: color 0.18s ease;
}
.bsw-pub-row:hover .bsw-pub-row__title { color: var(--bs-primary); }

/* ── Events : crisp primary "telemetry" date line in the instrument card ─ */
.bsw-event-date {
    display: inline-flex;
    align-items: center;
    color: var(--bs-primary);
    font-weight: 600;
    font-size: 0.8rem;
    font-variant-numeric: tabular-nums;
    letter-spacing: 0.03em;
}

/* ── Small screens ───────────────────────────────────────────────────── */
@media (max-width: 575.98px) {
    .bsw-pub-row { gap: 0.6rem; }
    .bsw-pub-row__ref { font-size: 0.66rem; }
}

/* ═══════════════════════════════════════════════════════════════════════
   Phase 6 — bespoke full pages (blog list/detail, project list/detail)
   Reuses .bsw-panel-head/.bsw-panel-tag/.bsw-instrument/.bsw-instrument__ref/
   .bsw-chip/.bsw-meta/.bsw-readout/.bsw-timeline/.bsw-telemetry__*. Only a few
   page-level chrome rules (breadcrumb, pagination, filter bar, article body,
   tags, sub-headings, image plates) are new. Built on the --bs-* palette.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Filter bar : measured instrument toggles ─────────────────────────── */
.bsw-filterbar .btn {
    letter-spacing: 0.03em;
}

/* ── Breadcrumb : crisp silvery trail with chevron separators ─────────── */
.bsw-breadcrumb {
    --bs-breadcrumb-divider: '›';
    font-size: 0.82rem;
    letter-spacing: 0.02em;
}
.bsw-breadcrumb .breadcrumb-item a {
    color: var(--bs-secondary-color);
    text-decoration: none;
    transition: color 0.18s ease;
}
.bsw-breadcrumb .breadcrumb-item a:hover { color: var(--bs-primary); }
.bsw-breadcrumb .breadcrumb-item.active { color: var(--bs-primary); }
.bsw-breadcrumb .breadcrumb-item + .breadcrumb-item::before {
    color: rgba(var(--bs-primary-rgb), 0.45);
}

/* ── Pagination : instrument-panel page selector ──────────────────────── */
.bsw-pagination .page-link {
    color: var(--bs-primary);
    border-color: rgba(var(--bs-primary-rgb), 0.22);
    font-variant-numeric: tabular-nums;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease;
}
.bsw-pagination .page-link:hover {
    background: rgba(var(--bs-primary-rgb), 0.08);
    border-color: rgba(var(--bs-primary-rgb), 0.40);
}
.bsw-pagination .page-link:focus {
    box-shadow: 0 0 0 0.2rem rgba(var(--bs-primary-rgb), 0.25);
}
.bsw-pagination .page-item.active .page-link {
    background: var(--bs-primary);
    border-color: var(--bs-primary);
}

/* ── Sub-headings : measured, primary-accented section labels ─────────── */
.bsw-panel-subhead {
    font-weight: 700;
    letter-spacing: -0.005em;
}

/* ── Article / dossier header : telemetry tag + underlined title ───────── */
.bsw-article-head .bsw-panel-tag { margin-bottom: 0.75rem; }
.bsw-article-title {
    font-weight: 700;
    letter-spacing: -0.015em;
    line-height: 1.1;
}
.bsw-article-lead {
    color: var(--bs-secondary-color);
    border-left: 3px solid rgba(var(--bs-primary-rgb), 0.45);
    padding-left: 1rem;
}

/* image "plates" — a fine instrument frame around media */
.bsw-article-plate {
    border: 1px solid rgba(var(--bs-primary-rgb), 0.18);
}

/* ── Long-form body : measured rhythm + primary-keyed links/quotes ────── */
.bsw-prose :where(h2, h3, h4, h5) {
    font-weight: 700;
    letter-spacing: -0.005em;
}
.bsw-prose a {
    color: var(--bs-primary);
    text-underline-offset: 0.15em;
}
.bsw-prose blockquote {
    margin: 1.25rem 0;
    padding: 0.5rem 0 0.5rem 1rem;
    border-left: 3px solid rgba(var(--bs-primary-rgb), 0.45);
    color: var(--bs-secondary-color);
}
.bsw-prose img {
    max-width: 100%;
    height: auto;
    border-radius: 0.4rem;
    border: 1px solid rgba(var(--bs-primary-rgb), 0.18);
}

/* ── Tags : monospace-keyed reference chips ───────────────────────────── */
.bsw-tag {
    background: rgba(var(--bs-primary-rgb), 0.06);
    color: var(--bs-primary);
    border: 1px solid rgba(var(--bs-primary-rgb), 0.22);
    font-weight: 600;
    letter-spacing: 0.03em;
    transition: background-color 0.18s ease, border-color 0.18s ease;
}
a.bsw-tag:hover {
    background: rgba(var(--bs-primary-rgb), 0.12);
    border-color: rgba(var(--bs-primary-rgb), 0.40);
    color: var(--bs-primary);
}

/* ── Figure captions in the gallery ───────────────────────────────────── */
.bsw-figure .figure-caption {
    margin-top: 0.4rem;
    text-transform: none;
    letter-spacing: 0.02em;
}

/* timeline rows on the dossier carry their marker inline */
.bsw-timeline .bsw-timeline__item > .bi,
.bsw-timeline__item .me-2 { display: inline; }

/* ═══════════════════════════════════════════════════════════════════════
   Phase 7 — content pages (events, jobs, services, publications, team,
   resources, faq). Reuses the existing instrument identity:
   .bsw-panel-head/.bsw-panel-tag/.bsw-instrument/.bsw-instrument__media/
   .bsw-instrument__ref/.bsw-chip/.bsw-meta/.bsw-readout/.bsw-service__icon/
   .bsw-service__ref/.bsw-faq/.bsw-faq__idx/.bsw-pub-list/.bsw-pub-row/
   .bsw-event-date/.bsw-breadcrumb/.bsw-article-plate/.bsw-prose/.bsw-roster__*.
   Only the section wrapper, a couple of page-level chrome rules, and small
   responsive tweaks below are new. Built on the --bs-* palette.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── Section wrapper : measured top rhythm for content pages ──────────── */
.bsw-panel-section {
    padding-block: clamp(3rem, 7vw, 5rem);
    scroll-margin-top: 5rem;
}

/* ── Services "What's included" : transparent flush list on the panel ─── */
.service-detail .list-group-flush .list-group-item {
    border-color: rgba(var(--bs-primary-rgb), 0.12);
}

/* ── Team roster : crisp gridded photo plate (matches instrument media) ─ */
.team-list .bsw-instrument__media,
.team-member-detail .card-img-top {
    border-bottom: 1px solid rgba(var(--bs-primary-rgb), 0.10);
}

/* ── Publications log : keep the indexed ref aligned with wrapping rows ─ */
.bsw-pub-row__ref { min-width: 3.25rem; }

/* ── Small screens ───────────────────────────────────────────────────── */
@media (max-width: 575.98px) {
    /* let the publication ref sit on its own measured line */
    .bsw-pub-row { flex-wrap: wrap; }
    .bsw-pub-row__ref { min-width: 0; }
    /* tighten the faq index gutter */
    .bsw-faq .accordion-button { gap: 0.5rem; }
    .bsw-faq__idx { font-size: 0.72rem; }
}


/* ---- Mode nuit : accent lisible (audit contraste) ------------------------- */
/* spacelab : --bs-primary=#446e9b (accent pensé pour le fond clair) n'est pas redéfini
   par le skin en mode nuit -> accents/titres/icônes bsw-* illisibles sur fond
   sombre. On adapte l'accent (teinte préservée), mode clair inchangé, + texte
   sombre sur les fonds .bg-primary devenus clairs. */
[data-bs-theme="dark"] {
    --bs-primary: #89a9cb;
    --bs-primary-rgb: 137, 169, 203;
}
[data-bs-theme="dark"] .bg-primary,
[data-bs-theme="dark"] .text-bg-primary {
    color: #1a1a1a;
}


/* ---- Mode nuit : texte muté lisible (audit contraste) ---- */
/* --bs-secondary-color n'est pas adapté au mode nuit -> texte muté sombre sur
   fond sombre. On le passe à un muté-clair lisible (~ratio 6). */
[data-bs-theme="dark"] {
    --bs-secondary-color: rgba(255, 255, 255, .55);
}

/* AUDIT CONTRASTE — WCAG AA : le muté #999 du skin échoue (2.8). Muté lisible. */
:root:not([data-bs-theme="dark"]) {
    --bs-secondary-color: #6c6c6c;
    --bs-secondary-color-rgb: 108, 108, 108;
}
/* navbar-brand en bleu clair (#3399f3) sur navbar claire -> plus sombre. */
:root:not([data-bs-theme="dark"]) .navbar-brand { color: #1c6bb0 !important; }
/* .text-secondary du skin peut ignorer le muté corrigé -> on rétablit. */
:root:not([data-bs-theme="dark"]) .text-secondary { color: var(--bs-secondary-color) !important; }
