/* staff-area.css: Staff area: the staff shell (header, rail, bottom bar, search), filter bar, bulk bar, result rows, staff tables, overview, breadcrumb. */
/* ============================================================================
   Staff area overhaul (one contiguous block: easy to promote or revert).

   Two things live here:
   1. Canonical .staff-filters / .staff-bulkbar / .staff-row families. These
      replace the .error-* families that were named for the error monitor but
      reused across the whole staff area. During the template migration both
      names style identically; the .error-* selectors are removed once every
      template has moved over.
   2. body.staff-shell: staff pages render their own shell (the Staff shell block at the end of
      this file) instead of the player chrome. Player pages keep theirs.
   ============================================================================ */

/* --- Canonical filter bar (row-wrap, no 420px form cap) --- */
.staff-filters__search { flex: 1 1 260px; }
.staff-filters__search input { width: 100%; }

/* --- Canonical bulk-action bar --- */
.staff-bulkbar {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    padding: 10px 14px;
    margin-bottom: 10px;
    border-radius: var(--radius-md);
    background: var(--bg-elevated);
    border: 1px solid var(--color-primary);
}
.staff-bulkbar__count { font-family: var(--font-mono); font-size: 0.8rem; color: var(--color-primary); margin-right: 4px; }

/* --- Canonical result row (status stripe + field typography) --- */
.staff-row--resolved { opacity: 0.65; }
.staff-row--ignored { opacity: 0.5; }
.staff-row td:first-child { border-left: 3px solid transparent; }
.staff-row--unresolved td:first-child { border-left-color: var(--color-error); }
.staff-row__type { font-weight: 700; }
.staff-row__summary { color: var(--text-secondary); font-size: 0.84rem; margin-top: 2px; }
.staff-row__culprit { color: var(--text-muted); font-size: 0.72rem; margin-top: 2px; }
.staff-row__count { font-family: var(--font-mono); font-weight: 700; text-align: right; }
.staff-row__actions { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }

/* --- Shared staff data-table refinements ---
   Scoped to staff tables only (the .staff-table-scroll wrapper and the two
   explicit staff table classes), so player-facing tables are untouched. Zero
   template churn: every staff data table already renders as a bare <table>
   inside .staff-table-scroll (or the catalog's .staff-catalog-table). All colors
   are existing tokens, so all themes come along for free. */
.staff-table-scroll > table tbody tr:nth-child(even) > td,
.staff-table-scroll > table tbody tr:nth-child(even) > th,
.staff-table tbody tr:nth-child(even) > td,
.staff-catalog-table tbody tr:nth-child(even) > td {
    background: var(--bg-subtle);
}
/* Hover must win over the zebra stripe, and stays inside @media (hover: hover)
   per the house rule (a touch tap would otherwise leave a row stuck "hovered"). */
@media (hover: hover) {
    .staff-table-scroll > table tbody tr:hover > td,
    .staff-table-scroll > table tbody tr:hover > th,
    .staff-table tbody tr:hover > td,
    .staff-catalog-table tbody tr:hover > td {
        background: var(--bg-hover);
    }
}
/* Opt-in alignment utilities: right-align counts/currency with tabular figures,
   and keep an action column on one line hugging the right edge. Apply on the
   <th>/<td> where a column is numeric or holds row actions. */
.staff-table-scroll .is-numeric,
.staff-table .is-numeric,
.staff-catalog-table .is-numeric { text-align: right; font-variant-numeric: tabular-nums; }
.staff-table-scroll .is-actions,
.staff-table .is-actions { text-align: right; white-space: nowrap; }

/* --- Breadcrumb eyebrow (the linked Staff / Workspace trail) --- */
.staff-breadcrumb { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.staff-breadcrumb a { color: var(--text-muted); }
@media (hover: hover) { .staff-breadcrumb a:hover { color: var(--color-primary); } }

/* --- Breadcrumb trail: an ordered list, separators drawn in CSS so the trail reads as links and one current page --- */
.staff-breadcrumb__list { display: flex; flex-wrap: wrap; align-items: center; gap: 2px 6px; margin: 0; padding: 0; list-style: none; }
.staff-breadcrumb__item { min-width: 0; overflow-wrap: anywhere; }
.staff-breadcrumb__item + .staff-breadcrumb__item::before { content: '/'; margin-right: 6px; color: var(--text-muted); opacity: 0.6; }
.staff-breadcrumb__item[aria-current="page"] { color: var(--text-secondary); }

/* --- Sibling tools of the current staff tool (the Events and Incursions managers, the report sources) --- */
.staff-group-nav { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 10px; margin-bottom: 12px; }
.staff-group-nav__label { font-family: var(--font-mono); font-size: 0.75rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.staff-group-nav__list { display: flex; flex-wrap: wrap; gap: 6px; margin: 0; padding: 0; list-style: none; }
.staff-group-nav__list a { display: inline-flex; align-items: center; min-height: 36px; padding: 4px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-pill, 999px); color: var(--text-secondary); text-decoration: none; }
.staff-group-nav__list a.is-active { border-color: var(--color-primary); color: var(--text-primary); background: var(--bg-elevated); font-weight: 700; }
@media (hover: hover) { .staff-group-nav__list a:hover { color: var(--text-primary); border-color: var(--color-primary); } }
@media (pointer: coarse) { .staff-group-nav__list a { min-height: 44px; } }

/* --- Report inbox summary: true totals above a capped preview --- */
.mod-inbox-summary { margin-bottom: 12px; }
.mod-inbox-summary p { margin: 0 0 4px; }
.mod-inbox-summary__cap { color: var(--text-secondary); }


/* ============================================================================
   Staff shell: header, rail, bottom bar, tool search, overview.

   Staff pages extend templates/game/staff_base.html, which replaces the player header,
   sidebar, bottom bar, Campfire launcher and footer. From 1024px a rail carries the section
   tree; below it a three-item bar (Overview, Search, Sections) and the Sections drawer
   (the shared drawerModal shell, styled by .nav-drawer in chrome.css) carry the same tree.
   Breakpoints stay on the house scale (480/768/1024/1280). The bar and drawer reuse the
   .mobile-tabbar and .nav-drawer rules, which already own safe-area insets and the 1024 cutoff.
   ============================================================================ */
body.staff-shell { background: var(--bg-body); }
@media (width < 1024px) {
    body.staff-shell { padding-bottom: calc(var(--tabbar-height) + env(safe-area-inset-bottom, 0px)); }
}

.staff-header {
    position: sticky;
    top: 0;
    z-index: 100;
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: var(--header-height);
    padding: 0 16px;
    background: var(--bg-surface);
    border-bottom: 1px solid var(--border-color);
}
.staff-header__brand {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    font-family: var(--font-display);
    font-weight: 700;
    font-size: 1.05rem;
    color: var(--text-primary);
    white-space: nowrap;
}
.staff-header__mark { color: var(--color-primary); }
.staff-header__brand-sub { color: var(--text-secondary); font-weight: 500; }
.staff-header__env {
    padding: 2px 10px;
    border: 1px solid var(--color-warning-border);
    border-radius: var(--radius-pill);
    background: var(--color-warning-bg);
    color: var(--color-warning-text);
    font-size: 0.75rem;
    font-weight: 700;
    white-space: nowrap;
}
.staff-header__tools { display: flex; align-items: center; gap: 12px; margin-left: auto; min-width: 0; flex-shrink: 0; }
.staff-header__search {
    display: none;
    align-items: center;
    gap: 8px;
    min-height: 40px;
    padding: 6px 12px;
    border: 1px solid var(--border-color);
    border-radius: var(--radius-md);
    background: var(--bg-subtle);
    color: var(--text-secondary);
    font: inherit;
    cursor: pointer;
}
.staff-header__kbd {
    padding: 1px 6px;
    border: 1px solid var(--border-color);
    border-radius: 4px;
    color: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 0.7rem;
}
.staff-header__clock { color: var(--text-secondary); font-size: 0.86rem; font-variant-numeric: tabular-nums; white-space: nowrap; }
.staff-header__back { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--text-secondary); white-space: nowrap; }
.staff-header__account { position: relative; }
@media (min-width: 1024px) {
    .staff-header { padding: 0 20px; }
    .staff-header__search { display: inline-flex; }
}
/* The full header needs about 525px, so the label-dropping rules start at the 768 step: a
   480px phone in landscape or a small tablet would otherwise scroll sideways. */
@media (width < 768px) {
    .staff-header__clock { display: none; }
    .staff-header__brand-sub { display: none; }
    .staff-header__back { justify-content: center; min-width: 44px; }
    .staff-header__account .account-name { display: none; }
    /* Words the narrow header drops visually stay in the accessibility tree. */
    .staff-header__narrow-hidden {
        position: absolute;
        width: 1px;
        height: 1px;
        margin: -1px;
        overflow: hidden;
        clip: rect(0, 0, 0, 0);
        white-space: nowrap;
    }
}
@media (width < 480px) {
    .staff-header { gap: 8px; padding: 0 10px; }
    .staff-header__brand { font-size: 0.95rem; }
    .staff-header__env { padding: 1px 8px; font-size: 0.7rem; }
    .staff-header__tools { gap: 2px; }
    .staff-header__mark { display: none; }
}
@media (hover: hover) {
    .staff-header__search:hover { border-color: var(--color-primary); color: var(--text-primary); }
    .staff-header__back:hover { color: var(--text-primary); text-decoration: none; }
}

.staff-layout { display: flex; align-items: stretch; min-height: calc(100vh - var(--header-height)); min-height: calc(100dvh - var(--header-height)); }
.staff-main { flex: 1 1 auto; min-width: 0; max-width: 1240px; }
.staff-rail { display: none; }
@media (min-width: 1024px) {
    .staff-rail {
        display: block;
        flex: 0 0 272px;
        width: 272px;
        position: sticky;
        top: var(--header-height);
        align-self: flex-start;
        height: calc(100vh - var(--header-height));
        height: calc(100dvh - var(--header-height));
        overflow-y: auto;
        padding: 16px 14px;
        border-right: 1px solid var(--border-subtle);
        background: var(--bg-surface);
    }
}
.staff-nav-group-label {
    display: block;
    padding: 8px 12px 2px 20px;
    color: var(--text-muted);
    font-family: var(--font-mono);
    font-size: 0.66rem;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}
.staff-pinned { display: flex; flex-direction: column; gap: 2px; margin: 6px 0; padding-bottom: 6px; border-bottom: 1px solid var(--border-subtle); }
.staff-nav-tree .sidebar-nav-group__items a { padding-left: 32px; }

/* Compact current-section control (below 1024px): one line under the title, expanding to the
   section's tools, instead of a wrapped wall of pills. */
.staff-page-tools { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 8px 12px; margin-bottom: 12px; }
.staff-section-control { flex: 1 1 180px; min-width: 0; border: 1px solid var(--border-color); border-radius: var(--radius-md); background: var(--bg-surface); }
.staff-section-control > summary {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 2px 12px;
    min-height: 44px;
    padding: 8px 14px;
    cursor: pointer;
    list-style: none;
    font-family: var(--font-heading);
    font-weight: 600;
}
.staff-section-control > summary::-webkit-details-marker { display: none; }
.staff-section-control > summary::after { content: '⌄'; margin-left: auto; color: var(--text-muted); }
.staff-section-control[open] > summary::after { content: '⌃'; }
.staff-section-control > summary:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 2px; }
.staff-section-control__tool { color: var(--text-secondary); font-weight: 500; font-size: 0.9rem; }
.staff-section-control__panel { display: flex; flex-direction: column; gap: 2px; padding: 4px 8px 10px; border-top: 1px solid var(--border-subtle); }
.staff-section-control__panel a {
    display: flex;
    align-items: center;
    min-height: 44px;
    padding: 8px 12px;
    border-radius: var(--radius-md);
    color: var(--text-secondary);
}
.staff-section-control__panel a.is-active { background: var(--bg-hover); color: var(--text-primary); font-weight: 700; }
@media (min-width: 1024px) { .staff-section-control { display: none; } }
.staff-pin { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.staff-pin__message { color: var(--text-secondary); font-size: 0.84rem; }
@media (pointer: coarse) { .staff-pin .btn { min-height: 44px; } }

/* The forum pages keep the player layout; this strip is their only staff chrome. */
.staff-context-strip { display: flex; flex-wrap: wrap; gap: 6px 14px; margin: 0 0 14px; }
.staff-context-strip a { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; color: var(--text-secondary); }

/* Tool search dialog (the drawerModal shell) and the full-page search. */
.staff-search__backdrop { position: fixed; inset: 0; z-index: 1000; background: var(--modal-overlay); }
.staff-search__dialog {
    position: fixed;
    z-index: 1001;
    top: max(8px, env(safe-area-inset-top, 0px));
    left: 50%;
    transform: translateX(-50%);
    width: min(640px, calc(100vw - 16px));
    max-height: calc(100vh - 16px);
    max-height: calc(100dvh - 16px);
    overflow-y: auto;
    overscroll-behavior: contain;
    padding: 16px 16px calc(16px + env(safe-area-inset-bottom, 0px));
    border: 1px solid var(--border-color);
    border-radius: var(--radius-lg);
    background: var(--bg-elevated);
    box-shadow: var(--shadow-lg);
}
.staff-search__title { margin: 0 44px 8px 0; font-size: 1.1rem; }
.staff-search__close {
    position: absolute;
    top: 8px;
    right: 8px;
    min-width: 44px;
    min-height: 44px;
    border: 0;
    border-radius: var(--radius-md);
    background: none;
    color: var(--text-secondary);
    font-size: 1.1rem;
    cursor: pointer;
}
.staff-search__form { max-width: none; }
.staff-search__label { display: block; margin-bottom: 6px; color: var(--text-secondary); font-size: 0.86rem; }
.staff-search__row { display: flex; gap: 8px; }
.staff-search__row input { flex: 1 1 auto; min-width: 0; font-size: 16px; }
.staff-search__results { margin-top: 12px; }
.staff-search__hint, .staff-search__count { margin: 0 0 8px; color: var(--text-secondary); font-size: 0.9rem; }
.staff-search__list { display: flex; flex-direction: column; gap: 4px; margin: 0; padding: 0; list-style: none; }
.staff-search__list a {
    display: grid;
    gap: 2px;
    min-height: 44px;
    padding: 10px 12px;
    border: 1px solid var(--border-subtle);
    border-radius: var(--radius-md);
    color: var(--text-primary);
}
.staff-search__name { font-weight: 700; }
.staff-search__meta { color: var(--text-muted); font-size: 0.76rem; }
.staff-search__purpose { color: var(--text-secondary); font-size: 0.86rem; overflow-wrap: anywhere; }
@media (hover: hover) { .staff-search__list a:hover { border-color: var(--color-primary); text-decoration: none; } }
.staff-search__list a:focus-visible, .staff-search__close:focus-visible { outline: 3px solid var(--color-primary); outline-offset: 2px; }

/* Overview. */
.staff-attention__note, .staff-shortcuts__note { margin: 0 0 8px; color: var(--text-secondary); font-size: 0.86rem; }
.staff-attention__list, .staff-mine, .staff-activity, .staff-shortcuts__list { display: flex; flex-direction: column; gap: 6px; margin: 8px 0 0; padding: 0; list-style: none; }
.staff-attention__list li, .staff-activity li { overflow-wrap: anywhere; }
.staff-mine li { display: flex; flex-wrap: wrap; align-items: baseline; gap: 2px 10px; overflow-wrap: anywhere; }
.staff-mine__id { font-family: var(--font-mono); color: var(--text-secondary); }
.staff-mine__meta, .staff-activity__source { color: var(--text-muted); font-size: 0.8rem; }
.staff-shortcuts__grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(240px, 100%), 1fr)); gap: 16px; }
.staff-shortcuts__heading, .staff-directory__group-title { margin: 0 0 6px; font-family: var(--font-mono); font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase; color: var(--text-muted); }
.staff-shortcuts__empty { margin: 0; color: var(--text-secondary); font-size: 0.86rem; }
.staff-shortcuts__list a { display: inline-flex; align-items: center; min-height: 36px; }
@media (pointer: coarse) { .staff-shortcuts__list a { min-height: 44px; } }
.staff-directory__section { margin-top: 18px; scroll-margin-top: calc(var(--header-height) + 8px); }
.staff-directory__title { margin: 0 0 2px; font-size: 1.05rem; }
.staff-directory__purpose { margin: 0 0 8px; color: var(--text-secondary); font-size: 0.88rem; }
.staff-directory__group { margin-bottom: 12px; }


/* Report inbox cards and the exact-report detail (WP03). Cards, not a wide table, so a phone
   shows what the report is about and a Review button without sideways scrolling. */
.report-filters { align-items: flex-end; }
.report-filters label { min-width: 0; }
.report-filters input[type="date"], .report-filters select { max-width: 100%; }
.report-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 340px), 1fr)); gap: 12px; margin: 12px 0; padding: 0; list-style: none; }
.report-card {
    display: flex;
    flex-direction: column;
    gap: 6px;
    min-width: 0;
    padding: 14px;
    border: 1px solid var(--border-color);
    border-left: 4px solid var(--border-color);
    border-radius: var(--radius-md);
    background: var(--bg-surface);
    overflow-wrap: anywhere;
}
.report-card--open { border-left-color: var(--color-warning); }
.report-card--resolved { border-left-color: var(--color-success); }
.report-card p { margin: 0; }
.report-card__head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.report-card__source { font-weight: 700; }
.report-card__age { margin-left: auto; color: var(--text-muted); font-size: 0.82rem; }
.report-card__incident { padding: 1px 8px; border: 1px solid var(--color-warning-border); border-radius: var(--radius-pill); background: var(--color-warning-bg); color: var(--color-warning-text); font-size: 0.78rem; }
.report-card__removed { margin-left: 6px; padding: 1px 8px; border: 1px solid var(--color-error-border); border-radius: var(--radius-pill); color: var(--color-error-text); font-size: 0.74rem; font-weight: 700; }
.report-card__excerpt { color: var(--text-secondary); font-size: 0.9rem; }
.report-card__label { color: var(--text-muted); font-family: var(--font-mono); font-size: 0.68rem; letter-spacing: 0.08em; text-transform: uppercase; }
.report-card__meta { color: var(--text-secondary); font-size: 0.82rem; }
.report-card__review { align-self: flex-start; margin-top: 4px; }
.report-cards__empty { grid-column: 1 / -1; padding: 18px; color: var(--text-secondary); }
@media (pointer: coarse) { .report-card__review, .report-review-link { min-height: 44px; display: inline-flex; align-items: center; } }

.report-detail__notice { margin: 0 0 12px; padding: 10px 14px; border: 1px solid var(--color-warning-border); border-left-width: 4px; border-radius: var(--radius-md); background: var(--color-warning-bg); color: var(--color-warning-text); }
.report-detail__bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-bottom: 14px; }
.report-detail__where { color: var(--text-secondary); font-size: 0.88rem; overflow-wrap: anywhere; }
.report-detail__nav { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 8px; margin-left: auto; }
.report-detail__position { color: var(--text-secondary); font-size: 0.86rem; }
.report-detail__grid { display: flex; flex-direction: column; gap: 14px; }
/* On a phone the two columns dissolve and the actions sit right after the evidence, so the
   controls are not buried under a long list of sibling reports. */
.report-detail__main, .report-detail__side { display: contents; }
.rd-evidence { order: 1; }
.rd-actions { order: 2; }
.rd-reports { order: 3; }
.rd-history { order: 4; }
@media (min-width: 1024px) {
    .report-detail__grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(280px, 1fr); align-items: start; }
    .report-detail__main, .report-detail__side { display: flex; }
    .report-detail__side { position: sticky; top: calc(var(--header-height) + 12px); }
}
.report-detail__main, .report-detail__side { flex-direction: column; gap: 14px; min-width: 0; }
.report-detail__meta { margin: 0 0 6px; color: var(--text-secondary); font-size: 0.88rem; overflow-wrap: anywhere; }
.report-detail__removed { margin: 0 0 10px; padding: 8px 12px; border: 1px solid var(--color-error-border); border-radius: var(--radius-md); background: var(--color-error-bg); color: var(--color-error-text); }
.report-detail__body { padding: 12px 14px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--bg-subtle); overflow-wrap: anywhere; max-height: 60vh; max-height: 60dvh; overflow-y: auto; }
.report-detail__reports { display: flex; flex-direction: column; gap: 8px; margin: 8px 0 0; padding: 0; list-style: none; }
.report-detail__report { padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); }
.report-detail__report.is-selected { border-color: var(--color-primary); background: var(--bg-elevated); }
.report-detail__report-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.report-detail__report-head time { margin-left: auto; color: var(--text-muted); font-size: 0.82rem; }
.report-detail__reason { margin: 6px 0 4px; overflow-wrap: anywhere; }
.report-detail__buttons { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.report-detail__side form { margin-bottom: 12px; max-width: none; }

/* Below 1024px the section control already lists a tool's siblings, so the pill row would only
   push the working surface down; it stays on wider screens, where there is room. */
@media (width < 1024px) { .staff-group-nav { display: none; } }
.report-filters__more { flex: 1 1 100%; }
.report-filters__more > summary { display: inline-flex; align-items: center; min-height: 44px; cursor: pointer; color: var(--text-secondary); }
.report-filters__more-fields { display: flex; flex-wrap: wrap; gap: 10px 14px; margin-top: 6px; }
.report-filters__more-fields label { flex: 1 1 160px; }

/* Rows for the case history and currency ledger: what happened and when first, detail wrapping
   below, so a phone reads them without sideways scrolling. */
.staff-rowlist { display: flex; flex-direction: column; gap: 8px; margin: 10px 0; padding: 0; list-style: none; }
.staff-rowlist__item { padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--bg-surface); overflow-wrap: anywhere; }
.staff-rowlist__head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 10px; }
.staff-rowlist__head time { margin-left: auto; color: var(--text-muted); font-size: 0.82rem; }
.staff-rowlist__amount { font-variant-numeric: tabular-nums; }
.staff-rowlist__detail { margin: 4px 0 0; }
.staff-rowlist__meta { margin: 2px 0 0; color: var(--text-secondary); font-size: 0.84rem; font-variant-numeric: tabular-nums; }
.staff-rowlist__empty { padding: 14px; color: var(--text-secondary); }

/* Case file: jump links between sections, and the form helpers for warn, suspend and adjust. */
.mod-case-jump { display: flex; flex-wrap: wrap; gap: 4px 6px; margin: 0 0 14px; }
.mod-case-jump a { display: inline-flex; align-items: center; min-height: 36px; padding: 4px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-pill); color: var(--text-secondary); }
@media (pointer: coarse) { .mod-case-jump a { min-height: 44px; } }
.mod-case-main { display: flex; flex-direction: column; gap: 16px; min-width: 0; }
.mod-case-main .mod-section { scroll-margin-top: calc(var(--header-height) + 8px); }
.mod-section__subhead { margin: 12px 0 4px; font-size: 0.95rem; }
.warn-preview, .suspend-expiry, .currency-projection { margin: 8px 0 12px; padding: 10px 12px; border: 1px solid var(--border-subtle); border-radius: var(--radius-md); background: var(--bg-subtle); }
.warn-preview__line { margin: 4px 0 0; color: var(--text-secondary); font-size: 0.9rem; overflow-wrap: anywhere; }
.currency-projection__warn { color: var(--color-error-text); font-weight: 700; }
.suspend-type { display: flex; flex-wrap: wrap; gap: 6px 16px; border: 0; padding: 0; }
.suspend-type label { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; }
