/* MwShiftCheckinOps (mw-sco-*) — standalone, no scoped CSS.
   The themed shift check-in ops surface (transition console + station board), ported from
   docs/mockups/shift-checkin-redesign.html into the mitware-theme language: status carried by the
   corner-anchored edge glow (amber = late, red = No-Show?, green = on shift, blue = ending/done),
   tail corner, hairline borders, mono for times. Custom properties scoped to .mw-sco-panel. */

.mw-sco-panel {
    --mw-sco-surface: hsl(240 12% 9%);
    --mw-sco-surface-elev: hsl(240 11% 11.5%);
    --mw-sco-surface-hover: hsla(0 0% 100% / 0.03);
    --mw-sco-lines: hsla(0 0% 100% / 0.06);
    --mw-sco-lines-strong: hsla(0 0% 100% / 0.10);
    --mw-sco-text: hsl(0 0% 96%);
    --mw-sco-text-dim: hsl(240 5% 60%);
    --mw-sco-text-faint: hsl(240 5% 40%);
    --mw-sco-accent: hsl(263 90% 67%);
    --mw-sco-accent-soft: hsl(263 70% 79%);
    --mw-sco-green: hsl(152 55% 56%);
    --mw-sco-amber: hsl(38 92% 62%);
    --mw-sco-red: hsl(351 75% 64%);
    --mw-sco-blue: hsl(210 80% 65%);
    --mw-sco-teal: hsl(172 60% 50%);

    /* Grouping-level colors — one per tapped sort chip, in tap order. Deliberately their own
       variables (not the status colors) so retinting a nesting level never changes what amber/green/
       blue mean on a card's edge glow. */
    --mw-sco-lvl1: hsl(351 78% 66%);
    --mw-sco-lvl2: hsl(28 92% 63%);
    --mw-sco-lvl3: hsl(207 85% 66%);
    --mw-sco-lvl4: hsl(148 58% 57%);
    --mw-sco-lvl5: hsl(280 72% 72%);

    --mw-sco-font-body: 'Geist', -apple-system, BlinkMacSystemFont, sans-serif;
    --mw-sco-font-mono: 'JetBrains Mono', ui-monospace, monospace;
    --mw-sco-radius: 12px;
    --mw-sco-radius-sm: 8px;

    display: flex;
    flex-direction: column;
    flex: 1;
    min-height: 0;
    overflow: hidden;
    color: var(--mw-sco-text);
    font-family: var(--mw-sco-font-body);
    font-size: 14px;
    -webkit-font-smoothing: antialiased;
}

.mw-sco-panel *,
.mw-sco-panel *::before,
.mw-sco-panel *::after { box-sizing: border-box; }

.mw-sco-mi {
    font-family: 'Material Symbols Rounded';
    font-weight: normal;
    font-style: normal;
    line-height: 1;
    letter-spacing: normal;
    text-transform: none;
    display: inline-block;
    white-space: nowrap;
    direction: ltr;
    -webkit-font-smoothing: antialiased;
    font-size: 13px;
}

/* ── shared atoms ── */
.mw-sco-chip {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    font-family: var(--mw-sco-font-mono);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .03em;
    border-radius: 999px;
    padding: 2.5px 9px;
    white-space: nowrap;
    color: var(--c);
    background: color-mix(in srgb, var(--c) 13%, transparent);
    border: 1px solid color-mix(in srgb, var(--c) 42%, transparent);
}

.mw-sco-chip .mw-sco-mi { font-size: 11px; }

.mw-sco-avatar {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    flex-shrink: 0;
    display: grid;
    place-items: center;
    font-family: var(--mw-sco-font-mono);
    font-size: 11px;
    font-weight: 600;
    color: hsl(240 10% 8%);
    background: hsl(var(--h) 60% 70%);
}

.mw-sco-avatar--small { width: 28px; height: 28px; font-size: 10px; }

.mw-sco-tz {
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    color: var(--mw-sco-text-faint);
    letter-spacing: .08em;
    text-transform: uppercase;
    border: 1px solid var(--mw-sco-lines);
    border-radius: 999px;
    padding: 3px 9px;
    white-space: nowrap;
    flex-shrink: 0;
}

/* ── now-window rail (console) ── */
.mw-sco-window {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 16px;
    border-bottom: 1px solid var(--mw-sco-lines);
    flex-shrink: 0;
}

/* Console search row — one field for all three lanes, and on mobile the fixed header above the
   swipeable panes (flex-shrink: 0, so only .mw-sco-mviewport below it scrolls). */
.mw-sco-consearch {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 9px 16px;
    border-bottom: 1px solid var(--mw-sco-lines);
    flex-shrink: 0;
}

.mw-sco-consearch .mw-sco-search {
    flex: 1 1 auto;
    min-width: 0;
}

/* Toolbar accessory (the volunteer-care team-scope widget) — right-aligned in the search row.
   On desktop its presence caps the search field so the accessory owns the right edge; the mobile
   panel keeps the search stretching and the accessory sits beside it as a compact button. */
.mw-sco-consearch-accessory {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    flex-shrink: 0;
}

.mw-sco-panel:not(.mw-sco-panel--mobile) .mw-sco-consearch:has(.mw-sco-consearch-accessory) .mw-sco-search {
    flex: 0 1 320px;
    min-width: 180px;
}

.mw-sco-consearch-hint,
.mw-sco-consearch-note {
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--mw-sco-text-faint);
    white-space: nowrap;
    flex-shrink: 0;
}

/* Sort-chip bar — tap keys to build an ordered, numbered sort; X resets to the default. */
.mw-sco-sortbar {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 6px;
    padding: 8px 16px;
    border-bottom: 1px solid var(--mw-sco-lines);
    flex-shrink: 0;
}

.mw-sco-sortbar-label {
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--mw-sco-text-faint);
    flex-shrink: 0;
    margin-right: 4px;
}

.mw-sco-sortchip {
    /* --sc = this chip's level color, set inline from its priority; the accent is the inactive look. */
    --sc: var(--mw-sco-accent);
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--mw-sco-font-body);
    font-size: 11px;
    color: var(--mw-sco-text-faint);
    border: 1px solid var(--mw-sco-lines-strong);
    border-radius: 999px;
    padding: 4px 10px;
    background: none;
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-sortchip:hover {
    color: var(--mw-sco-text);
    border-color: var(--mw-sco-accent);
}

.mw-sco-sortchip--on {
    color: color-mix(in srgb, var(--sc) 80%, var(--mw-sco-text));
    border-color: color-mix(in srgb, var(--sc) 55%, transparent);
    background: color-mix(in srgb, var(--sc) 12%, transparent);
    box-shadow: 0 0 12px -6px var(--sc);
}

.mw-sco-sortchip--on:hover { border-color: var(--sc); }

.mw-sco-sortchip-num {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 16px;
    height: 16px;
    padding: 0 4px;
    border-radius: 999px;
    background: var(--sc);
    color: hsl(240 12% 9%);
    font-family: var(--mw-sco-font-mono);
    font-size: 10px;
    font-weight: 600;
    font-variant-numeric: tabular-nums;
    line-height: 1;
}

.mw-sco-sortchip-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 24px;
    height: 24px;
    border-radius: 999px;
    border: 1px solid var(--mw-sco-lines-strong);
    background: var(--mw-sco-surface-elev);
    color: var(--mw-sco-text-dim);
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-sortchip-clear:hover {
    color: var(--mw-sco-red);
    border-color: color-mix(in srgb, var(--mw-sco-red) 50%, transparent);
}

.mw-sco-window-label {
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--mw-sco-text-faint);
    flex-shrink: 0;
}

.mw-sco-steppair { display: inline-flex; gap: 3px; flex-shrink: 0; }

.mw-sco-step {
    width: 24px;
    height: 24px;
    border-radius: 8px;
    border: 1px solid var(--mw-sco-lines-strong);
    background: var(--mw-sco-surface-elev);
    color: var(--mw-sco-text-dim);
    font-family: var(--mw-sco-font-mono);
    font-size: 13px;
    line-height: 1;
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-step:hover { color: var(--mw-sco-text); border-color: var(--mw-sco-accent); }

.mw-sco-rail { position: relative; flex: 1; height: 30px; min-width: 120px; }

.mw-sco-rail-line {
    position: absolute;
    left: 0;
    right: 0;
    top: 14px;
    height: 2px;
    background: var(--mw-sco-lines-strong);
    border-radius: 2px;
}

.mw-sco-rail-sel {
    position: absolute;
    top: 14px;
    height: 2px;
    background: linear-gradient(90deg, color-mix(in srgb, var(--mw-sco-accent) 60%, transparent), var(--mw-sco-accent));
    border-radius: 2px;
}

.mw-sco-rail-now {
    position: absolute;
    top: 3px;
    left: 50%;
    width: 2px;
    height: 24px;
    background: var(--mw-sco-teal);
    box-shadow: 0 0 8px var(--mw-sco-teal);
}

.mw-sco-rail-now::after {
    content: 'JETZT';
    position: absolute;
    top: -2px;
    left: 6px;
    font-family: var(--mw-sco-font-mono);
    font-size: 8px;
    letter-spacing: .1em;
    color: var(--mw-sco-teal);
}

.mw-sco-window-read {
    font-family: var(--mw-sco-font-mono);
    font-size: 11px;
    color: var(--mw-sco-text-dim);
    flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}

.mw-sco-window-read b { color: var(--mw-sco-text); font-weight: 600; }

/* ── console lanes ── */
.mw-sco-lanes {
    display: grid;
    grid-template-columns: 1fr 1fr 1fr;
    gap: 14px;
    padding: 14px 16px 22px;
    flex: 1;
    min-height: 0;
    align-items: start;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--mw-sco-lines-strong) transparent;
}

.mw-sco-lane { display: flex; flex-direction: column; gap: 8px; min-width: 0; }

.mw-sco-lane-head { display: flex; align-items: center; gap: 8px; padding: 2px 4px 4px; }

.mw-sco-lane-dot { width: 8px; height: 8px; border-radius: 50%; background: var(--lc); flex-shrink: 0; }

.mw-sco-lane-name { font-weight: 700; font-size: 14px; }

.mw-sco-lane-count {
    font-family: var(--mw-sco-font-mono);
    font-size: 10.5px;
    color: var(--mw-sco-text-faint);
    margin-left: auto;
    font-variant-numeric: tabular-nums;
}

.mw-sco-lane-bulk {
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    font-weight: 600;
    color: var(--lc);
    background: none;
    border: 1px dashed color-mix(in srgb, var(--lc) 45%, transparent);
    border-radius: 999px;
    padding: 3px 9px;
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-lane-bulk:hover { background: color-mix(in srgb, var(--lc) 10%, transparent); }

/* The column's default order, in the smallest type on the surface — replaced by the chip bar's
   statement the moment any chip is set, so the two can never contradict each other. */
.mw-sco-lanesort {
    padding: 0 5px 3px;
    font-family: var(--mw-sco-font-mono);
    font-size: 8.5px;
    letter-spacing: .09em;
    text-transform: uppercase;
    color: var(--mw-sco-text-faint);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mw-sco-mpane > .mw-sco-lanesort { padding: 4px 2px 6px; }

.mw-sco-lane-empty {
    padding: 22px 12px;
    text-align: center;
    font-size: 12px;
    color: var(--mw-sco-text-faint);
    font-style: italic;
    border: 1px dashed var(--mw-sco-lines);
    border-radius: 14px;
    border-top-left-radius: 4px;
}

/* Every run of cards or sibling bubbles sits in one of these, virtualized or not, so spacing comes
   from a single place and <Virtualize>'s spacer divs slot into the same flow as real items. */
.mw-sco-vlist {
    display: flex;
    flex-direction: column;
    gap: 8px;
    min-width: 0;
}

/* ── lane grouping bubbles (mw-sco-grp) ──
   One nested bubble per active sort chip, colored by that chip's priority (--gc, set inline):
   1 red, 2 orange, 3 blue, 4 green, 5 violet. Same visual language as the cards one size up —
   tail corner, bottom-left-anchored radial glow painted into the border-box, hairline fallback —
   so a bubble reads as a container of cards rather than a foreign element. Nesting is by inset:
   each level sits inside the previous one's padded body, its own glow riding on top. */
.mw-sco-grp {
    --gc: var(--mw-sco-accent);
    position: relative;
    overflow: hidden;
    border-radius: 16px;
    border-top-left-radius: 5px;
    border: 1.5px solid transparent;
    background:
        linear-gradient(color-mix(in srgb, var(--gc) 4%, var(--mw-sco-surface-elev)),
                        color-mix(in srgb, var(--gc) 4%, var(--mw-sco-surface-elev))) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--gc) 82%, transparent) 0%,
            color-mix(in srgb, var(--gc) 40%, transparent) 42%, transparent 74%) border-box,
        linear-gradient(var(--mw-sco-lines-strong), var(--mw-sco-lines-strong)) border-box;
    box-shadow: -4px 3px 16px -11px color-mix(in srgb, var(--gc) 85%, transparent);
}

.mw-sco-grp-head {
    display: flex;
    align-items: center;
    gap: 7px;
    padding: 6px 11px;
    background: linear-gradient(90deg,
        color-mix(in srgb, var(--gc) 24%, transparent) 0%,
        color-mix(in srgb, var(--gc) 8%, transparent) 58%,
        transparent 100%);
    border-bottom: 1px solid color-mix(in srgb, var(--gc) 24%, transparent);
}

.mw-sco-grp-dot {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--gc);
    box-shadow: 0 0 7px var(--gc);
    flex-shrink: 0;
}

.mw-sco-grp-name {
    min-width: 0;
    font-size: 11.5px;
    font-weight: 700;
    letter-spacing: .015em;
    color: color-mix(in srgb, var(--gc) 62%, var(--mw-sco-text));
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mw-sco-grp-count {
    margin-left: auto;
    flex-shrink: 0;
    font-family: var(--mw-sco-font-mono);
    font-size: 10px;
    color: color-mix(in srgb, var(--gc) 50%, var(--mw-sco-text-faint));
    font-variant-numeric: tabular-nums;
}

.mw-sco-grp-body { padding: 8px; }

.mw-sco-grp-body > .mw-sco-vlist { gap: 7px; }

/* Nested levels tighten a little so four deep still fits a lane column. */
.mw-sco-grp .mw-sco-grp { border-radius: 13px; border-top-left-radius: 4px; }

.mw-sco-grp .mw-sco-grp .mw-sco-grp-head { padding: 5px 9px; }

.mw-sco-grp .mw-sco-grp .mw-sco-grp-name { font-size: 11px; }

.mw-sco-grp .mw-sco-grp .mw-sco-grp-body { padding: 7px; }

.mw-sco-grp .mw-sco-grp .mw-sco-grp-body > .mw-sco-vlist { gap: 6px; }

/* Off-day marker in front of a time — lanes can span several event days. */
.mw-sco-day {
    display: block;
    font-family: var(--mw-sco-font-mono);
    font-size: 9px;
    font-weight: 600;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--mw-sco-accent-soft);
}

/* ── console card: tail corner + status edge glow ── */
.mw-sco-card {
    --rail: transparent;
    position: relative;
    overflow: hidden;
    border-radius: 14px;
    border-top-left-radius: 4px;
    border: 1.5px solid transparent;
    padding: 10px 12px;
    background:
        linear-gradient(var(--mw-sco-surface), var(--mw-sco-surface)) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--rail) 75%, transparent) 0%,
            color-mix(in srgb, var(--rail) 42%, transparent) 40%, transparent 72%) border-box,
        linear-gradient(var(--mw-sco-lines-strong), var(--mw-sco-lines-strong)) border-box;
    box-shadow: -3px 2px 9px -8px color-mix(in srgb, var(--rail) 65%, transparent);
}

.mw-sco-card-top { display: flex; align-items: center; gap: 10px; }

.mw-sco-card-main { flex: 1; min-width: 0; }

.mw-sco-card-name {
    font-size: 13.5px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mw-sco-card-sub {
    display: flex;
    align-items: center;
    gap: 6px;
    margin-top: 3px;
    flex-wrap: wrap;
    font-size: 11px;
    color: var(--mw-sco-text-dim);
}

.mw-sco-card-chips { margin-top: 8px; }

.mw-sco-card-pos { font-family: var(--mw-sco-font-mono); font-size: 10px; color: var(--mw-sco-text-faint); }

.mw-sco-card-time {
    font-family: var(--mw-sco-font-mono);
    font-size: 11px;
    color: var(--mw-sco-text-dim);
    text-align: right;
    flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}

.mw-sco-card-time b { color: var(--mw-sco-text); font-weight: 600; }

.mw-sco-card--late .mw-sco-card-time b { color: var(--mw-sco-amber); }

/* NOTE: Reassign affordance — only on not-yet-checked-in console cards. Quiet until hovered. */
.mw-sco-reassign {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    border: 1px solid var(--mw-sco-lines);
    background: transparent;
    color: var(--mw-sco-text-faint);
    cursor: pointer;
    transition: background 90ms ease, color 90ms ease, border-color 90ms ease;
}

.mw-sco-reassign:hover {
    color: var(--mw-sco-accent-soft);
    border-color: var(--mw-sco-lines-strong);
    background: var(--mw-sco-surface-hover);
}

.mw-sco-reassign .mw-sco-mi { font-size: 16px; }

.mw-sco-card-act { display: flex; align-items: center; gap: 8px; margin-top: 9px; }

.mw-sco-act {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font-family: var(--mw-sco-font-body);
    font-weight: 600;
    font-size: 12px;
    border-radius: 10px;
    padding: 9px 8px;
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-act .mw-sco-mi { font-size: 15px; }

.mw-sco-act--in {
    color: var(--mw-sco-green);
    background: color-mix(in srgb, var(--mw-sco-green) 16%, var(--mw-sco-surface-elev));
    border: 1px solid color-mix(in srgb, var(--mw-sco-green) 45%, transparent);
}

.mw-sco-act--in:hover { background: color-mix(in srgb, var(--mw-sco-green) 26%, var(--mw-sco-surface-elev)); }

.mw-sco-act--out {
    color: var(--mw-sco-blue);
    background: color-mix(in srgb, var(--mw-sco-blue) 12%, var(--mw-sco-surface-elev));
    border: 1px solid color-mix(in srgb, var(--mw-sco-blue) 45%, transparent);
}

.mw-sco-act--out:hover { background: color-mix(in srgb, var(--mw-sco-blue) 22%, var(--mw-sco-surface-elev)); }

/* ── shift note: chip-sized toggle on the status-chip row, note text + inline editor above the action ──
   The toggle is deliberately the height of a status chip and rides an existing row (chip row, or the
   card/row top line when a card carries no chip), so offering the note costs no card height at all. */
.mw-sco-notebtn {
    flex-shrink: 0;
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 22px;
    height: 22px;
    border-radius: 7px;
    border: 1px solid var(--mw-sco-lines);
    background: transparent;
    color: var(--mw-sco-text-faint);
    cursor: pointer;
    transition: background 90ms ease, color 90ms ease, border-color 90ms ease;
}

.mw-sco-notebtn:hover {
    color: var(--mw-sco-accent-soft);
    border-color: var(--mw-sco-lines-strong);
    background: var(--mw-sco-surface-hover);
}

.mw-sco-notebtn .mw-sco-mi { font-size: 14px; }

.mw-sco-notebtn--set {
    color: var(--mw-sco-amber);
    border-color: color-mix(in srgb, var(--mw-sco-amber) 45%, transparent);
    background: color-mix(in srgb, var(--mw-sco-amber) 10%, transparent);
}

.mw-sco-notebtn--set:hover {
    color: var(--mw-sco-amber);
    background: color-mix(in srgb, var(--mw-sco-amber) 18%, transparent);
}

.mw-sco-note {
    display: flex;
    align-items: flex-start;
    gap: 6px;
    margin-top: 8px;
    padding: 5px 8px;
    border-radius: 8px;
    border: 1px solid color-mix(in srgb, var(--mw-sco-amber) 26%, transparent);
    background: color-mix(in srgb, var(--mw-sco-amber) 8%, transparent);
    font-size: 11.5px;
    line-height: 1.35;
    color: var(--mw-sco-text-dim);
}

.mw-sco-note .mw-sco-mi { font-size: 13px; color: var(--mw-sco-amber); flex-shrink: 0; margin-top: 1px; }

.mw-sco-note-text { min-width: 0; white-space: pre-wrap; overflow-wrap: anywhere; }

.mw-sco-noteedit { display: flex; align-items: center; gap: 6px; margin-top: 8px; }

.mw-sco-noteinput {
    flex: 1;
    min-width: 0;
    height: 28px;
    padding: 0 9px;
    border-radius: 8px;
    border: 1px solid color-mix(in srgb, var(--mw-sco-amber) 40%, transparent);
    background: var(--mw-sco-surface-elev);
    outline: none;
    color: var(--mw-sco-text);
    font: inherit;
    font-size: 12px;
}

.mw-sco-noteinput::placeholder { color: var(--mw-sco-text-faint); }

.mw-sco-notesave {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: 8px;
    border: 1px solid color-mix(in srgb, var(--mw-sco-green) 45%, transparent);
    background: color-mix(in srgb, var(--mw-sco-green) 14%, transparent);
    color: var(--mw-sco-green);
    cursor: pointer;
    transition: background 90ms ease;
}

.mw-sco-notesave:hover { background: color-mix(in srgb, var(--mw-sco-green) 24%, transparent); }

.mw-sco-notesave .mw-sco-mi { font-size: 15px; }

/* ── station board toolbar ── */
.mw-sco-toolbar {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 11px 16px;
    border-bottom: 1px solid var(--mw-sco-lines);
    flex-shrink: 0;
}

.mw-sco-toolbar-spacer { flex: 1; }

.mw-sco-search {
    flex: 0 0 280px;
    display: flex;
    align-items: center;
    gap: 8px;
    background: var(--mw-sco-surface);
    border: 1px solid var(--mw-sco-lines-strong);
    border-radius: 11px;
    padding: 0 11px;
    color: var(--mw-sco-text-faint);
}

.mw-sco-search input {
    flex: 1;
    height: 34px;
    border: none;
    background: none;
    outline: none;
    color: var(--mw-sco-text);
    font: inherit;
    font-size: 13px;
    min-width: 0;
}

.mw-sco-search input::placeholder { color: var(--mw-sco-text-faint); }

.mw-sco-search-clear {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border: none;
    background: none;
    padding: 0;
    cursor: pointer;
    color: var(--mw-sco-text-faint);
    transition: color 120ms ease;
}

.mw-sco-search-clear:hover { color: var(--mw-sco-text); }

.mw-sco-winchip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--mw-sco-font-mono);
    font-size: 10.5px;
    color: var(--mw-sco-teal);
    border: 1px solid color-mix(in srgb, var(--mw-sco-teal) 50%, transparent);
    border-radius: 999px;
    padding: 6px 12px;
    background: color-mix(in srgb, var(--mw-sco-teal) 8%, transparent);
    cursor: pointer;
    transition: 120ms ease;
    font-variant-numeric: tabular-nums;
}

.mw-sco-winchip--off {
    color: var(--mw-sco-text-faint);
    border-color: var(--mw-sco-lines-strong);
    background: none;
}

.mw-sco-total {
    font-family: var(--mw-sco-font-mono);
    font-size: 10.5px;
    color: var(--mw-sco-text-faint);
    font-variant-numeric: tabular-nums;
    white-space: nowrap;
}

/* ── station board body ── */
.mw-sco-body { display: flex; flex: 1; min-height: 0; }

.mw-sco-side {
    width: 240px;
    flex-shrink: 0;
    border-right: 1px solid var(--mw-sco-lines);
    padding: 13px 10px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    overflow-y: auto;
    scrollbar-width: thin;
    scrollbar-color: var(--mw-sco-lines-strong) transparent;
}

.mw-sco-side-label {
    font-family: var(--mw-sco-font-mono);
    font-size: 9px;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--mw-sco-text-faint);
    padding: 0 8px 8px;
}

.mw-sco-side-team { font-weight: 600; font-size: 12px; color: var(--mw-sco-text-dim); padding: 7px 8px 3px; }

.mw-sco-area {
    display: flex;
    align-items: center;
    gap: 8px;
    width: 100%;
    text-align: left;
    font-family: inherit;
    font-size: 12.5px;
    color: var(--mw-sco-text-dim);
    background: none;
    border: 1.5px solid transparent;
    border-radius: 10px;
    border-top-left-radius: 4px;
    padding: 7px 10px;
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-area:hover { background: var(--mw-sco-surface-hover); }

.mw-sco-area-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--c); flex-shrink: 0; }

.mw-sco-area-name { flex: 1; min-width: 0; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.mw-sco-area-count {
    font-family: var(--mw-sco-font-mono);
    font-size: 10px;
    color: var(--mw-sco-text-faint);
    font-variant-numeric: tabular-nums;
}

.mw-sco-area-count b { color: var(--mw-sco-green); font-weight: 600; }

.mw-sco-area--on {
    color: var(--mw-sco-text);
    background:
        linear-gradient(color-mix(in srgb, var(--c) 7%, var(--mw-sco-surface)), color-mix(in srgb, var(--c) 7%, var(--mw-sco-surface))) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--c) 75%, transparent) 0%,
            color-mix(in srgb, var(--c) 42%, transparent) 40%, transparent 72%) border-box,
        linear-gradient(var(--mw-sco-lines-strong), var(--mw-sco-lines-strong)) border-box;
}

.mw-sco-main {
    flex: 1;
    min-width: 0;
    overflow-y: auto;
    padding: 15px 16px 28px;
    scrollbar-width: thin;
    scrollbar-color: var(--mw-sco-lines-strong) transparent;
}

.mw-sco-group { margin-bottom: 20px; }

.mw-sco-group-head { display: flex; align-items: center; gap: 12px; margin-bottom: 9px; }

.mw-sco-group-name { font-weight: 700; font-size: 14.5px; }

.mw-sco-group-meta {
    font-family: var(--mw-sco-font-mono);
    font-size: 10.5px;
    color: var(--mw-sco-text-faint);
    margin-top: 1px;
}

.mw-sco-group-rule { flex: 1; height: 1px; background: var(--mw-sco-lines); }

.mw-sco-ring { position: relative; width: 40px; height: 40px; flex-shrink: 0; }

.mw-sco-ring svg { transform: rotate(-90deg); }

.mw-sco-ring-text {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    font-weight: 600;
    color: var(--mw-sco-text-dim);
    font-variant-numeric: tabular-nums;
}

.mw-sco-rows { display: flex; flex-direction: column; gap: 6px; }

.mw-sco-row {
    --rail: transparent;
    display: flex;
    align-items: center;
    /* NOTE: Wraps so a set note / the open note editor can take a full-width second line inside the
       same row box — the row itself stays one line whenever there is no note. */
    flex-wrap: wrap;
    gap: 11px;
    padding: 8px 12px;
    border-radius: 12px;
    border-top-left-radius: 4px;
    border: 1.5px solid transparent;
    background:
        linear-gradient(var(--mw-sco-surface), var(--mw-sco-surface)) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--rail) 70%, transparent) 0%,
            color-mix(in srgb, var(--rail) 38%, transparent) 40%, transparent 72%) border-box,
        linear-gradient(var(--mw-sco-lines), var(--mw-sco-lines)) border-box;
}

.mw-sco-row-name {
    font-size: 13px;
    font-weight: 600;
    width: 190px;
    flex-shrink: 0;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mw-sco-row-time {
    font-family: var(--mw-sco-font-mono);
    font-size: 11px;
    color: var(--mw-sco-text-dim);
    width: 106px;
    flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}

.mw-sco-row-chips { flex: 1; min-width: 0; display: flex; gap: 5px; flex-wrap: wrap; }

/* NOTE: In a board row the note takes the wrapped second line; the row's own 11 px gap already
   separates it from the line above, so it drops the card variant's top margin. */
.mw-sco-row .mw-sco-note,
.mw-sco-row .mw-sco-noteedit { flex: 0 0 100%; margin-top: 0; }

.mw-sco-seg {
    display: inline-flex;
    border: 1px solid var(--mw-sco-lines-strong);
    border-radius: 10px;
    overflow: hidden;
    flex-shrink: 0;
}

.mw-sco-seg button {
    font-family: var(--mw-sco-font-mono);
    font-size: 10.5px;
    font-weight: 600;
    padding: 7px 12px;
    background: none;
    border: none;
    color: var(--mw-sco-text-faint);
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-seg button:first-child { border-right: 1px solid var(--mw-sco-lines-strong); }

.mw-sco-seg button:hover { color: var(--mw-sco-text); }

.mw-sco-seg button.mw-sco-seg--in {
    background: color-mix(in srgb, var(--mw-sco-green) 15%, transparent);
    color: var(--mw-sco-green);
}

.mw-sco-seg button.mw-sco-seg--out {
    background: color-mix(in srgb, var(--mw-sco-blue) 15%, transparent);
    color: var(--mw-sco-blue);
}

/* ── Mobile (below Breakpoint.Md — class-driven, the component forks its markup) ── */

/* compact now-window row */
.mw-sco-window--compact { gap: 7px; padding: 8px 12px; }

.mw-sco-window--compact .mw-sco-window-label { font-size: 8.5px; }

.mw-sco-window--compact .mw-sco-rail { height: 24px; min-width: 56px; }

.mw-sco-window--compact .mw-sco-rail-line,
.mw-sco-window--compact .mw-sco-rail-sel { top: 11px; }

.mw-sco-window--compact .mw-sco-rail-now { top: 1px; height: 20px; }

.mw-sco-window--compact .mw-sco-rail-now::after { display: none; }

.mw-sco-window--compact .mw-sco-step { width: 22px; height: 22px; border-radius: 7px; font-size: 12px; }

.mw-sco-window--compact .mw-sco-window-read { font-size: 10px; }

.mw-sco-window--compact .mw-sco-tz { display: none; }

/* mobile console: lane tab bar + swipeable lane track */
.mw-sco-mlanetabs {
    flex-shrink: 0;
    display: flex;
    gap: 4px;
    padding: 8px 10px;
}

.mw-sco-mlanetab {
    flex: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    font-family: var(--mw-sco-font-body);
    font-weight: 600;
    font-size: 11.5px;
    color: var(--mw-sco-text-dim);
    background: transparent;
    border: 1px solid transparent;
    border-radius: 999px;
    padding: 6px 4px;
    cursor: pointer;
    transition: 200ms ease;
}

.mw-sco-mlanetab .mw-sco-lane-dot { background: var(--lc); opacity: .75; width: 6px; height: 6px; }

.mw-sco-mlanetab-count {
    font-family: var(--mw-sco-font-mono);
    font-size: 9.5px;
    opacity: .8;
    font-variant-numeric: tabular-nums;
}

.mw-sco-mlanetab--on {
    color: var(--mw-sco-text);
    background: color-mix(in srgb, var(--lc) 13%, transparent);
    border-color: color-mix(in srgb, var(--lc) 40%, transparent);
}

.mw-sco-mviewport {
    position: relative;
    flex: 1;
    min-height: 0;
    overflow: hidden;
}

.mw-sco-mviewport > .mw-dg-swap-track {
    display: flex;
    height: 100%;
    width: 300%;
    transition: transform 0.34s cubic-bezier(0.32, 0.72, 0.28, 1);
    touch-action: pan-y;
    will-change: transform;
}

.mw-sco-mviewport > .mw-dg-swap-track.mw-dg-swap-track--dragging { transition: none; }

.mw-sco-mpane {
    flex: 0 0 calc(100% / 3);
    width: calc(100% / 3);
    height: 100%;
    min-height: 0;
    overflow-y: auto;
    padding: 4px 12px 40px;
    scrollbar-width: thin;
    scrollbar-color: var(--mw-sco-lines-strong) transparent;
}

/* Card spacing on mobile comes from .mw-sco-vlist too — the pane only adds its own leading gap. */
.mw-sco-mpane > .mw-sco-vlist { margin-top: 4px; }

.mw-sco-mbulk {
    width: 100%;
    margin: 4px 0 10px;
    font-family: var(--mw-sco-font-mono);
    font-size: 10px;
    font-weight: 600;
    color: var(--mw-sco-amber);
    background: none;
    border: 1px dashed color-mix(in srgb, var(--mw-sco-amber) 45%, transparent);
    border-radius: 999px;
    padding: 7px 10px;
    cursor: pointer;
    transition: 120ms ease;
}

.mw-sco-mbulk:hover { background: color-mix(in srgb, var(--mw-sco-amber) 10%, transparent); }

/* mobile console search: full-width field, only the hit count survives — the window note does not fit */
.mw-sco-panel--mobile .mw-sco-consearch { padding: 8px 12px; }

.mw-sco-panel--mobile .mw-sco-consearch-note { display: none; }

/* mobile board: toolbar condenses, sidebar becomes a scrolling chip bar, rows become cards */
.mw-sco-panel--mobile .mw-sco-toolbar { padding: 8px 12px; }

.mw-sco-panel--mobile .mw-sco-toolbar .mw-sco-search { flex: 1; min-width: 0; }

.mw-sco-panel--mobile .mw-sco-toolbar .mw-sco-total,
.mw-sco-panel--mobile .mw-sco-toolbar .mw-sco-tz { display: none; }

.mw-sco-panel--mobile .mw-sco-winchip { flex-shrink: 0; font-size: 9.5px; padding: 5px 9px; }

.mw-sco-mareabar {
    flex-shrink: 0;
    display: flex;
    gap: 5px;
    padding: 8px 12px;
    overflow-x: auto;
    scrollbar-width: none;
    border-bottom: 1px solid var(--mw-sco-lines);
}

.mw-sco-mareabar::-webkit-scrollbar { display: none; }

.mw-sco-mareachip {
    flex-shrink: 0;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    font-family: var(--mw-sco-font-body);
    font-size: 11.5px;
    font-weight: 600;
    color: var(--mw-sco-text-dim);
    background: var(--mw-sco-surface);
    border: 1.5px solid var(--mw-sco-lines);
    border-radius: 999px;
    padding: 6px 12px;
    cursor: pointer;
    white-space: nowrap;
    transition: 150ms ease;
}

.mw-sco-mareachip .mw-sco-area-dot { background: var(--c); }

.mw-sco-mareachip--on {
    color: var(--mw-sco-text);
    border-color: transparent;
    background:
        linear-gradient(color-mix(in srgb, var(--c) 8%, var(--mw-sco-surface)), color-mix(in srgb, var(--c) 8%, var(--mw-sco-surface))) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--c) 75%, transparent) 0%,
            color-mix(in srgb, var(--c) 42%, transparent) 40%, transparent 72%) border-box,
        linear-gradient(var(--mw-sco-lines-strong), var(--mw-sco-lines-strong)) border-box;
}

.mw-sco-panel--mobile .mw-sco-main { padding: 12px 12px 40px; }

.mw-sco-mrow {
    --rail: transparent;
    border-radius: 12px;
    border-top-left-radius: 4px;
    border: 1.5px solid transparent;
    padding: 9px 11px;
    margin-bottom: 7px;
    background:
        linear-gradient(var(--mw-sco-surface), var(--mw-sco-surface)) padding-box,
        radial-gradient(135% 125% at 0% 100%,
            color-mix(in srgb, var(--rail) 70%, transparent) 0%,
            color-mix(in srgb, var(--rail) 38%, transparent) 40%, transparent 72%) border-box,
        linear-gradient(var(--mw-sco-lines), var(--mw-sco-lines)) border-box;
}

.mw-sco-mrow-top { display: flex; align-items: center; gap: 9px; }

.mw-sco-mrow-name {
    flex: 1;
    min-width: 0;
    font-size: 13px;
    font-weight: 600;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.mw-sco-mrow-time {
    font-family: var(--mw-sco-font-mono);
    font-size: 10.5px;
    color: var(--mw-sco-text-dim);
    flex-shrink: 0;
    font-variant-numeric: tabular-nums;
}

.mw-sco-mrow-chips { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 7px; }

.mw-sco-seg--wide { display: flex; width: 100%; margin-top: 8px; }

.mw-sco-seg--wide button { flex: 1; padding: 8px 4px; }
