/* ============================================================================
   Talius Maintenance Portal — redesign stylesheet (Phase 1)
   ----------------------------------------------------------------------------
   EVERY rule in this file is scoped under `.maintenance-mode` (set on <body>
   in middleware.js only when view_mode === 'maintenance'). This guarantees the
   standard Stratix view is pixel-identical — see spec §2.1.
   Design tokens are the §1.5 palette/type system; status colour is ALWAYS
   dark text on a tinted background (never white-on-colour) to meet WCAG AA.
   ============================================================================ */

/* ---- Design tokens (spec §1.5) -------------------------------------------
   Also defined on .custom-maintenance-modal: the events modal is ONE SHARED
   template that standard-view Stratix users open too (group cards), where the
   maintenance-mode body class is absent — without this the modal's var(--maint-*)
   references would all be undefined there and the modal renders unstyled. */
.maintenance-mode,
.custom-maintenance-modal {
    --maint-surface:          #f8fafc; /* page background            */
    --maint-card-bg:          #ffffff; /* card / panel background    */
    --maint-ink:              #0f172a; /* primary text  15.9:1       */
    --maint-ink-2:            #475569; /* secondary text 7.5:1       */
    --maint-accent:           #2563eb; /* links, focus ring, primary */
    --maint-accent-ink:       #ffffff; /* text on accent  5.2:1      */

    --maint-ok-text:          #15803d; /* on ok-bg  5.0:1            */
    --maint-ok-bg:            #dcfce7;
    --maint-attention-text:   #b45309; /* on attention-bg  5.3:1     */
    --maint-attention-bg:     #fef3c7;
    --maint-urgent-text:      #b91c1c; /* on urgent-bg  5.9:1        */
    --maint-urgent-bg:        #fee2e2;

    --maint-border:           #e2e8f0;
    --maint-radius:           8px;
    --maint-space:            8px;
    --maint-shadow:           0 1px 3px rgba(15, 23, 42, 0.08);
    --maint-shadow-hover:     0 6px 16px rgba(15, 23, 42, 0.12);
    --maint-font: system-ui, -apple-system, "Segoe UI", Roboto, Arial, sans-serif;
}

/* Every selector below is prefixed with `.maintenance-mode` so nothing can leak
   into the standard Stratix view (which never carries that body class). */

/* ---- Layout shell -------------------------------------------------------- */
.maintenance-mode {
    background: var(--maint-surface);
}
.maintenance-mode .maint-root {
    font-family: var(--maint-font);
    color: var(--maint-ink);
    max-width: 1320px;
    margin: 0 auto;
    padding: 20px 12px 48px;
    font-size: 15px;
    line-height: 1.45;
    -webkit-font-smoothing: antialiased;
}
/* The shared amber sidebar + its persistent toggle belong to the old layout —
   the redesign drops the sidebar entirely (spec §1.4b). Hide the toggle here
   only; it stays untouched for the standard view. */
.maintenance-mode .persistent-sidebar-toggle { display: none !important; }

/* Neutralise Bootstrap defaults for the button-based controls in this view. */
.maintenance-mode .maint-root button {
    font-family: inherit;
    cursor: pointer;
}

/* ---- (a) Hero band ------------------------------------------------------- */
.maintenance-mode .maint-hero {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 20px;
}
.maintenance-mode .maint-hero-title {
    font-size: 24px;
    font-weight: 600;
    margin: 0;
    color: var(--maint-ink);
    line-height: 1.2;
}
.maintenance-mode .maint-hero-org {
    font-size: 15px;
    color: var(--maint-ink-2);
    margin: 4px 0 0;
    text-transform: none;
}
.maintenance-mode .maint-hero-updated {
    display: flex;
    align-items: center;
    gap: 12px;
    min-height: 44px;
}
.maintenance-mode .maint-updated-label {
    font-size: 13px;
    color: var(--maint-ink-2);
}
.maintenance-mode .maint-refresh-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 0 16px;
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
    background: var(--maint-card-bg);
    color: var(--maint-ink);
    font-size: 15px;
}
.maintenance-mode .maint-refresh-btn:hover { border-color: var(--maint-accent); color: var(--maint-accent); }
.maintenance-mode .maint-refresh-btn[disabled] { opacity: 0.6; cursor: default; }
.maintenance-mode .maint-spin { animation: maint-spin 0.9s linear infinite; }
@keyframes maint-spin { to { transform: rotate(360deg); } }

/* ---- (b) KPI row --------------------------------------------------------- */
.maintenance-mode .maint-kpis {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 12px;
    margin-bottom: 20px;
}
.maintenance-mode .maint-kpi {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 2px;
    min-height: 96px;
    padding: 16px;
    text-align: left;
    background: var(--maint-card-bg);
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
    box-shadow: var(--maint-shadow);
    transition: box-shadow 0.15s ease, transform 0.15s ease, border-color 0.15s ease;
}
/* No hover lift on the KPI boxes (per feedback) — the active/pressed state below still shows. */
.maintenance-mode .maint-kpi[disabled] { opacity: 0.65; cursor: default; box-shadow: var(--maint-shadow); transform: none; }
.maintenance-mode .maint-kpi-active { border-color: var(--maint-accent); box-shadow: 0 0 0 2px rgba(37,99,235,0.25); }
.maintenance-mode .maint-kpi-num {
    font-size: 30px;
    font-weight: 700;
    line-height: 1.1;
    color: var(--maint-ink);
}
.maintenance-mode .maint-kpi-num-sm { font-size: 20px; }
.maintenance-mode .maint-kpi-label { font-size: 13px; color: var(--maint-ink-2); }
.maintenance-mode .maint-kpi-eyebrow {
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--maint-ink-2);
}
.maintenance-mode .maint-kpi-attention .maint-kpi-num { color: var(--maint-attention-text); }
.maintenance-mode .maint-kpi-oldest { justify-content: flex-start; }

/* ---- (c) Toolbar --------------------------------------------------------- */
.maintenance-mode .maint-toolbar {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 8px;
}
.maintenance-mode .maint-segment {
    display: inline-flex;
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
    overflow: hidden;
    background: var(--maint-card-bg);
}
.maintenance-mode .maint-segment-btn {
    min-height: 44px;
    padding: 0 18px;
    border: 0;
    background: transparent;
    color: var(--maint-ink-2);
    font-size: 15px;
    font-weight: 600;
}
.maintenance-mode .maint-segment-btn.is-active {
    background: var(--maint-accent);
    color: var(--maint-accent-ink);
}
.maintenance-mode .maint-segment-btn:not(.is-active):hover { background: #eff3fb; color: var(--maint-accent); }

.maintenance-mode .maint-toolbar-filters {
    display: flex;
    align-items: flex-end;
    gap: 12px;
    flex-wrap: wrap;
}
.maintenance-mode .maint-field { display: flex; flex-direction: column; gap: 4px; margin: 0; font-weight: 400; }
.maintenance-mode .maint-field-label {
    font-size: 13px;
    font-weight: 600;
    color: var(--maint-ink-2);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}
.maintenance-mode .maint-select,
.maintenance-mode .maint-input {
    min-height: 44px;
    padding: 0 12px;
    font-size: 15px;
    color: var(--maint-ink);
    background: var(--maint-card-bg);
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
}
.maintenance-mode .maint-search { position: relative; display: inline-flex; align-items: center; }
.maintenance-mode .maint-search .fa-search {
    position: absolute; left: 12px; color: var(--maint-ink-2); pointer-events: none;
}
.maintenance-mode .maint-search .maint-input { padding-left: 34px; min-width: 200px; }

.maintenance-mode .maint-btn {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 0 16px;
    font-size: 15px;
    border-radius: var(--maint-radius);
    border: 1px solid transparent;
}
.maintenance-mode .maint-btn-ghost {
    background: var(--maint-card-bg);
    border-color: var(--maint-border);
    color: var(--maint-ink-2);
}
.maintenance-mode .maint-btn-ghost:hover { border-color: var(--maint-accent); color: var(--maint-accent); }

/* ---- Reassurance line ---------------------------------------------------- */
.maintenance-mode .maint-reassure {
    font-size: 13px;
    color: var(--maint-ink-2);
    margin: 4px 0 16px;
}
.maintenance-mode .maint-linkbtn {
    display: inline;
    background: none;
    border: 0;
    padding: 0;
    color: var(--maint-accent);
    font-size: inherit;
    font-weight: 600;
    text-decoration: none;
}
.maintenance-mode .maint-linkbtn:hover { text-decoration: underline; }

/* ---- (f) Charts panel ---------------------------------------------------- */
.maintenance-mode .maint-charts {
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
    background: var(--maint-card-bg);
    margin: 0 0 20px;
    overflow: hidden;
}
.maintenance-mode .maint-charts-summary {
    display: flex;
    align-items: center;
    gap: 10px;
    width: 100%;
    min-height: 48px;
    padding: 0 16px;
    border: 0;
    background: transparent;
    font-size: 15px;
    font-weight: 600;
    color: var(--maint-ink);
    text-align: left;
}
.maintenance-mode .maint-charts-hint { font-weight: 400; font-size: 13px; color: var(--maint-ink-2); }
.maintenance-mode .maint-charts-body {
    display: grid;
    grid-template-columns: 5fr 7fr;
    gap: 16px;
    padding: 8px 16px 16px;
}
/* min-width:0 lets the ECharts canvas shrink inside the grid column (else it overflows). */
.maintenance-mode .maint-chart-card { display: flex; flex-direction: column; min-width: 0; }
.maintenance-mode .maint-chart-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    margin-bottom: 4px;
}
.maintenance-mode .maint-chart-title {
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--maint-ink-2);
}
.maintenance-mode .maint-chart-max {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
    background: var(--maint-card-bg);
    color: var(--maint-ink-2);
    cursor: pointer;
}
.maintenance-mode .maint-chart-max:hover { border-color: var(--maint-accent); color: var(--maint-accent); }
.maintenance-mode .maint-chart { width: 100%; min-height: 320px; }
.maintenance-mode #maint-village-chart { min-height: 360px; }
/* The maximised chart inside the modal — large, sized to the viewport.
   Scoped to the modal windowClass like the rest of the modal styles. */
.custom-maintenance-modal .maint-max-chart { width: 100%; height: 68vh; min-height: 420px; }
.maintenance-mode .maint-charts-note {
    grid-column: 1 / -1;
    font-size: 13px;
    color: var(--maint-ink-2);
    margin: 0;
}
/* Untagged-issues caption under the region donut (inline card and maximised modal). */
.maintenance-mode .maint-chart-caption,
.custom-maintenance-modal .maint-chart-caption {
    margin: 6px 0 0;
    font-size: 13px;
    color: var(--maint-ink-2);
}

/* ---- (d) Region sections ------------------------------------------------- */
.maintenance-mode .maint-region { margin-bottom: 24px; }
.maintenance-mode .maint-region-head {
    display: flex;
    align-items: baseline;
    gap: 12px;
    flex-wrap: wrap;
    margin: 0 0 12px;
    padding-bottom: 6px;
    border-bottom: 1px solid var(--maint-border);
}
.maintenance-mode .maint-region-name {
    font-size: 18px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    color: var(--maint-ink);
}
.maintenance-mode .maint-region-meta { font-size: 14px; color: var(--maint-ink-2); }

/* Staff-only inline checkbox field (show unassigned-account buckets). */
.maintenance-mode .maint-field-check {
    flex-direction: row;
    align-items: center;
    gap: 6px;
    align-self: flex-end;
    font-size: 13px;
    color: var(--maint-ink-2);
    cursor: pointer;
    white-space: nowrap;
}
.maintenance-mode .maint-field-check input[type="checkbox"] { margin: 0; }

/* Deployment subtitle on unassigned-account bucket cards. */
.maintenance-mode .maint-card-sub {
    font-size: 12px;
    color: var(--maint-ink-2);
    margin-top: -4px;
}

/* Collapsible Unassigned header: same look as an h2 header, but a real <button>. */
.maintenance-mode button.maint-region-head {
    width: 100%;
    background: none;
    border: 0;
    border-bottom: 1px solid var(--maint-border);
    padding: 0 0 6px;
    font: inherit;
    text-align: left;
    cursor: pointer;
}
.maintenance-mode .maint-region-toggle > .fas {
    font-size: 13px;
    color: var(--maint-ink-2);
    align-self: center;
}
.maintenance-mode .maint-region-toggle:hover .maint-region-name { color: var(--maint-accent); }
.maintenance-mode .maint-region-toggle-hint {
    margin-left: auto;
    font-size: 13px;
    font-weight: 600;
    color: var(--maint-accent);
    white-space: nowrap;
}

.maintenance-mode .maint-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    align-items: start;
}

/* ---- (e) Village cards --------------------------------------------------- */
.maintenance-mode .maint-card {
    display: flex;
    flex-direction: column;
    gap: 8px;
    width: 100%;
    padding: 16px;
    text-align: left;
    background: var(--maint-card-bg);
    border: 1px solid var(--maint-border);
    border-left: 4px solid var(--maint-border);
    border-radius: var(--maint-radius);
    box-shadow: var(--maint-shadow);
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
/* No hover lift on the village cards (per feedback); cursor + CTA still signal clickability. */
.maintenance-mode .maint-card-top {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 8px;
}
.maintenance-mode .maint-card-name { font-size: 16px; font-weight: 600; color: var(--maint-ink); }
.maintenance-mode .maint-card-staff {
    font-size: 13px;
    color: var(--maint-ink-2);
    white-space: nowrap;
    opacity: 0.85;
}
/* Status accents — border-left + OK/attention/urgent treatment */
.maintenance-mode .maint-card-ok { border-left-color: var(--maint-ok-text); }
.maintenance-mode .maint-card-attention { border-left-color: var(--maint-attention-text); }
.maintenance-mode .maint-card-urgent { border-left-color: var(--maint-urgent-text); }

/* OK cards read compact + quiet (half-height feel, spec §1.4e) */
.maintenance-mode .maint-card-ok { padding-top: 12px; padding-bottom: 12px; }
.maintenance-mode .maint-card-ok .maint-card-cta { display: none; }
.maintenance-mode .maint-ok-flag {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-size: 15px;
    font-weight: 600;
    color: var(--maint-ok-text);
}

.maintenance-mode .maint-card-body { display: flex; flex-direction: column; gap: 8px; }
.maintenance-mode .maint-card-count { font-size: 15px; color: var(--maint-ink); }
.maintenance-mode .maint-card-count strong { font-size: 17px; }

/* Status chips — ALWAYS icon + words + dark-text-on-tint (never white-on-colour) */
.maintenance-mode .maint-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.maintenance-mode .maint-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 13px;
    font-weight: 600;
    background: var(--maint-ok-bg);
    color: var(--maint-ok-text);
}
.maintenance-mode .maint-chip-attention { background: var(--maint-attention-bg); color: var(--maint-attention-text); }
.maintenance-mode .maint-chip-urgent { background: var(--maint-urgent-bg); color: var(--maint-urgent-text); }

.maintenance-mode .maint-card-issues { display: flex; flex-wrap: wrap; gap: 4px 12px; }
.maintenance-mode .maint-issue { font-size: 13px; color: var(--maint-ink-2); }

.maintenance-mode .maint-card-cta {
    margin-top: 2px;
    font-size: 13px;
    font-weight: 600;
    color: var(--maint-accent);
}
.maintenance-mode .maint-card-cta .fa-arrow-right { margin-left: 4px; }

/* ---- Skeleton loading cards (spec §2.4 / F1) ----------------------------- */
.maintenance-mode .maint-card-skeleton {
    display: flex;
    flex-direction: column;
    gap: 10px;
    min-height: 120px;
    pointer-events: none;
    border-left-color: var(--maint-border);
}
.maintenance-mode .maint-skel-line {
    height: 12px;
    border-radius: 6px;
    background: linear-gradient(90deg, #eef2f7 25%, #e2e8f0 37%, #eef2f7 63%);
    background-size: 400% 100%;
    animation: maint-shimmer 1.4s ease infinite;
}
.maintenance-mode .maint-skel-title { height: 16px; width: 60%; }
.maintenance-mode .maint-skel-short { width: 40%; }
@keyframes maint-shimmer { 0% { background-position: 100% 0; } 100% { background-position: 0 0; } }

/* ---- Empty states -------------------------------------------------------- */
.maintenance-mode .maint-empty {
    text-align: center;
    padding: 48px 16px;
    color: var(--maint-ink-2);
    font-size: 15px;
}
.maintenance-mode .maint-empty .fas { font-size: 28px; margin-bottom: 8px; }
.maintenance-mode .maint-empty-ok { color: var(--maint-ok-text); }
.maintenance-mode .maint-empty p { margin: 8px 0 12px; }

/* ---- Back to Talius One -------------------------------------------------- */
.maintenance-mode .maint-back {
    text-align: center;
    margin-top: 32px;
    padding-top: 20px;
    border-top: 1px solid var(--maint-border);
}
.maintenance-mode .maint-back-link {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    min-height: 44px;
    padding: 0 16px;
}

/* ---- Focus visibility (keyboard) — spec §1.4 principle 4 ----------------- */
.maintenance-mode .maint-root button:focus-visible,
.maintenance-mode .maint-root a:focus-visible,
.maintenance-mode .maint-root select:focus-visible,
.maintenance-mode .maint-root input:focus-visible {
    outline: 3px solid var(--maint-accent);
    outline-offset: 2px;
}
/* Fallback for engines without :focus-visible */
.maintenance-mode .maint-card:focus,
.maintenance-mode .maint-kpi:focus,
.maintenance-mode .maint-segment-btn:focus {
    outline: 3px solid var(--maint-accent);
    outline-offset: 2px;
}

/* ---- Responsive: 3-up desktop / 2-up iPad landscape / 1-up portrait ------ */
@media (max-width: 1199px) {
    .maintenance-mode .maint-kpis { grid-template-columns: repeat(2, 1fr); }
    .maintenance-mode .maint-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 767px) {
    .maintenance-mode .maint-kpis { grid-template-columns: 1fr; }
    .maintenance-mode .maint-grid { grid-template-columns: 1fr; }
    .maintenance-mode .maint-charts-body { grid-template-columns: 1fr; }
    .maintenance-mode .maint-toolbar { align-items: stretch; }
    .maintenance-mode .maint-segment { width: 100%; }
    .maintenance-mode .maint-segment-btn { flex: 1; }
}

/* ==========================================================================
   Events modal — Phase-1 quick wins (spec §2.7 ★).
   SCOPED TO `.custom-maintenance-modal` (its unique windowClass), NOT the
   maintenance-mode body class: this modal is one shared template that is also
   opened from the standard Stratix view (group cards), where the body class is
   absent — body-class scoping left it completely unstyled there. The windowClass
   exists only on this modal (+ the chart-maximise modal), so nothing else in the
   standard view can be affected. The redesigned modal now looks identical
   regardless of which view launched it.
   ========================================================================== */

/* Header × — a real 44px close target at the top of a long modal (recon F13) */
.custom-maintenance-modal .modal-header { position: relative; padding-right: 52px; }
.custom-maintenance-modal .maint-modal-close {
    position: absolute;
    top: 10px;
    right: 14px;
    width: 40px;
    height: 40px;
    font-size: 26px;
    line-height: 1;
    opacity: 0.8;
    color: var(--maint-ink);
}
.custom-maintenance-modal .maint-modal-close:hover { opacity: 1; }

/* Stat filters — real toggle buttons, dark-text-on-tint (AA), pressed state */
.custom-maintenance-modal .maint-stats {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    align-items: center;
    margin-top: 10px;
}
.custom-maintenance-modal .maint-stat-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    min-height: 44px;
    padding: 0 14px;
    border: 2px solid transparent;
    border-radius: var(--maint-radius);
    font-size: 13px;
    font-weight: 600;
    font-family: var(--maint-font);
    cursor: pointer;
    transition: box-shadow 0.15s ease, transform 0.15s ease;
}
.custom-maintenance-modal .maint-stat-btn .maint-stat-num { font-size: 16px; font-weight: 700; }
.custom-maintenance-modal .maint-stat-btn.is-pressed { box-shadow: 0 0 0 2px rgba(15,23,42,0.35); transform: translateY(-1px); }
.custom-maintenance-modal .maint-stat-offline { background: #e2e8f0; color: #334155; }
.custom-maintenance-modal .maint-stat-recent  { background: var(--maint-ok-bg); color: var(--maint-ok-text); }
.custom-maintenance-modal .maint-stat-aging   { background: var(--maint-attention-bg); color: var(--maint-attention-text); }
.custom-maintenance-modal .maint-stat-old     { background: var(--maint-urgent-bg); color: var(--maint-urgent-text); }
.custom-maintenance-modal .maint-stat-battery { background: #ffedd5; color: #9a3412; }

/* Labelled row-action buttons — text + one icon set, AA colours. Kept on ONE
   horizontal line (nowrap) so table rows stay short; compact padding/height so
   all four fit side-by-side (the table wrapper scrolls if the modal is narrow). */
.custom-maintenance-modal .maint-row-actions {
    display: flex;
    flex-wrap: nowrap;
    gap: 4px;
    align-items: center;
}
.custom-maintenance-modal .maint-action-btn {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    min-height: 32px;
    padding: 0 9px;
    border: 1px solid var(--maint-border);
    border-radius: var(--maint-radius);
    background: var(--maint-card-bg);
    font-size: 13px;
    font-weight: 600;
    font-family: var(--maint-font);
    white-space: nowrap;
    cursor: pointer;
}
.custom-maintenance-modal .maint-action-comment { color: #334155; }
.custom-maintenance-modal .maint-action-details { color: #0369a1; }
.custom-maintenance-modal .maint-action-history { color: var(--maint-accent); }
.custom-maintenance-modal .maint-action-ack {
    color: var(--maint-ok-text);
    background: var(--maint-ok-bg);
    border-color: var(--maint-ok-bg);
}
.custom-maintenance-modal .maint-action-btn:hover { border-color: currentColor; }
.custom-maintenance-modal .maint-action-readonly { font-size: 13px; }
.custom-maintenance-modal .maint-action-btn .comment-badge { margin-left: 2px; }

/* ---- Events-table responsiveness (big screens / laptops / iPads) ----------
   The labelled action buttons are wider than the old icon cluster, so at laptop
   and iPad widths the table can exceed the modal and clip the Actions column —
   and account.css only adds horizontal scroll at <=768px, leaving those buttons
   unreachable. Fix: scroll the table body horizontally at ALL widths and PIN the
   Actions column to the right edge so all four buttons stay visible. Scoped to the
   events modal only; account.css is untouched. */
.custom-maintenance-modal .maintenance-flat-table {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
}
.custom-maintenance-modal .maintenance-events-table {
    min-width: 1100px;   /* keep natural column widths and scroll, not squeeze+clip */
}
/* Actions is always the last column — pin it right so it never scrolls out of view.
   Its <th> carries an inline width:100px (sized for the OLD icon cluster) that squeezed
   the labelled buttons; min-width:max-content overrides that and sizes the column to fit
   all four exactly (with a px fallback for engines without max-content). */
.custom-maintenance-modal .maintenance-events-table th:last-child,
.custom-maintenance-modal .maintenance-events-table td:last-child {
    position: sticky;
    right: 0;
    z-index: 2;
    min-width: 440px;
    min-width: max-content;
    background: #ffffff;
    border-left: 1px solid #e9ecef;
    box-shadow: -8px 0 8px -8px rgba(15, 23, 42, 0.18);
}
.custom-maintenance-modal .maintenance-events-table thead th:last-child {
    background: #f8f9fa;
    z-index: 3;
}
.custom-maintenance-modal .maintenance-events-table tbody tr:hover td:last-child {
    background: #f5f5f5;
}

/* Focus visibility for the modal controls too */
.custom-maintenance-modal button:focus-visible {
    outline: 3px solid var(--maint-accent);
    outline-offset: 2px;
}
