/* ==========================================================================
   MAINTENANCE - overview, printer page and reports. Theme tokens only.
   ========================================================================== */

/* --- tones: every chip, square and stat reads its colours from these ---- */
:where(.mnt-chip, .mnt-partchip, .mnt-sq, .mnt-badge, .mnt-sumcard, .mnt-card, .mnt-cond, .mnt-cost-top .stat) { --t: var(--ink2); --t-soft: var(--panel2); --t-solid: var(--line2); }
[data-tone='ok']      { --t: var(--ok-text);      --t-soft: var(--ok-soft);      --t-solid: var(--ok); }
[data-tone='caution'] { --t: var(--caution-text); --t-soft: var(--caution-soft); --t-solid: var(--caution); }
[data-tone='warn']    { --t: var(--warn-text);    --t-soft: var(--warn-soft);    --t-solid: var(--warn); }
[data-tone='info']    { --t: var(--info-text);    --t-soft: var(--info-soft);    --t-solid: var(--info); }
[data-tone='muted'],
[data-tone='lost']    { --t: var(--lost-text);    --t-soft: var(--lost-soft);    --t-solid: var(--lost); }

.mnt-chip {
  display: inline-flex; align-items: center; padding: 1px 9px; border-radius: 99px;
  background: var(--t-soft); color: var(--t); font-size: 12px; font-weight: 600; white-space: nowrap; vertical-align: 1px;
}
.mnt-ink {
  display: inline-block; padding: 0 6px; border: 1px solid var(--line2); border-radius: var(--radius-xs);
  font-size: 11.5px; font-weight: 700; letter-spacing: 0.04em; color: var(--ink2); background: var(--panel); white-space: nowrap;
}
.mnt-ink.is-none { font-weight: 500; letter-spacing: 0; color: var(--muted); border-style: dashed; }
.mnt-count {
  display: inline-block; min-width: 22px; padding: 0 6px; border-radius: 99px; text-align: center;
  font-size: 12px; font-weight: 700; background: var(--panel2); border: 1px solid var(--line); color: var(--ink2); vertical-align: 2px;
}
.mnt-none { margin: 4px 0; font-size: 13.5px; }

/* --- summary cards (6; each filters the printers) ------------------------- */
.mnt-sumcards { display: grid; grid-template-columns: repeat(6, minmax(0, 1fr)); gap: 10px; margin-bottom: 8px; }
@media (max-width: 1099px) { .mnt-sumcards { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 699px) { .mnt-sumcards { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; } }
.mnt-sumcard {
  position: relative; overflow: hidden; display: flex; flex-direction: column; align-items: flex-start; gap: 1px; min-width: 0;
  min-height: var(--touch); padding: 10px 12px 10px 15px; text-align: left; font: inherit; color: var(--ink); cursor: pointer;
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); box-shadow: var(--shadow-card);
}
.mnt-sumcard[data-mnt-card='all'] { --t: var(--brand-quiet); --t-solid: var(--brand); }
.mnt-sumcard::before { content: ''; position: absolute; inset: 0 auto 0 0; width: var(--stripe); background: var(--t-solid); }
.mnt-sumcard:hover { border-color: var(--line2); background: var(--panel2); }
.mnt-sumcard:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-sumcard:not([data-mnt-card='all'])[aria-pressed='true'] { border-color: var(--t-solid); box-shadow: inset 0 0 0 1px var(--t-solid); background: var(--t-soft); }
.mnt-sumcard-t { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 600; color: var(--muted); }
.mnt-sumcard-t svg { width: 15px; height: 15px; flex: none; color: var(--t); }
.mnt-sumcard .n { font-family: var(--font-figures); font-weight: 600; font-size: 26px; line-height: 1.15; font-variant-numeric: tabular-nums; color: var(--ink); }
.mnt-sumcard.is-zero .n { color: var(--muted); }
.mnt-sumcard-s { font-size: 11.5px; color: var(--muted); }
.mnt-quiet { margin: 0 0 14px; font-size: 13px; color: var(--muted); }
.mnt-quiet .linkish { font-size: 13px; }
.mnt-quiet .linkish[aria-pressed='true'] { color: var(--ink); text-decoration-thickness: 2px; }
/* the Calendar view shows every printer: the cards keep their counts but stand down */
.mnt-sumcard:disabled { cursor: default; opacity: 0.6; box-shadow: none; }
.mnt-sumcard:disabled:hover { border-color: var(--line); background: var(--panel); }
.mnt-over[data-mnt-view='calendar'] .mnt-filters > :not(.mnt-layout) { display: none; }
.mnt-cal-note { margin: -2px 0 10px; font-size: 13px; color: var(--muted); }

/* --- toolbar ---------------------------------------------------------------- */
.mnt-filters { margin-bottom: 10px; }
.mnt-filters .select { width: auto; flex: 0 1 auto; min-width: 0; }
.mnt-retired { display: inline-flex; align-items: center; gap: 6px; min-height: 36px; font-size: 13.5px; color: var(--ink2); white-space: nowrap; cursor: pointer; }
.mnt-retired input { width: 16px; height: 16px; margin: 0; }
.mnt-clear { font-size: 13.5px; }
.mnt-shown { font-size: 13.5px; color: var(--muted); white-space: nowrap; }
.mnt-layout { margin-left: auto; }
.mnt-layout .btn[aria-pressed='true'] { background: var(--brand-wash); border-color: var(--brand); color: var(--brand-quiet); position: relative; z-index: 1; }
.mnt-filter-note { margin: -2px 0 10px; font-size: 13.5px; color: var(--ink2); }
@media (max-width: 699px) {
  .mnt-filters .select { flex: 1 1 calc(50% - 9px); }
  .mnt-layout { flex: 1 1 100%; margin-left: 0; }
  .mnt-layout .btn { flex: 1; }
}

/* --- status badge (icon + word; colour only repeats them) -------------------- */
.mnt-badge {
  display: inline-flex; align-items: center; gap: 5px; padding: 2px 9px 2px 7px; border-radius: 99px;
  background: var(--t-soft); color: var(--t); font-size: 12px; font-weight: 700; white-space: nowrap; vertical-align: 1px;
}
.mnt-badge svg { width: 13px; height: 13px; flex: none; }
.mnt-late { margin-left: 6px; font-size: 11px; font-weight: 700; color: var(--warn-text); cursor: help; }
.mnt-cond { display: inline-flex; align-items: center; gap: 5px; font-size: 12.5px; color: var(--ink2); white-space: nowrap; }
.mnt-cond i { width: 8px; height: 8px; border-radius: 50%; background: var(--t-solid); flex: none; }
.mnt-od { font-weight: 700; color: var(--warn-text); }
.mnt-bdn {
  display: inline-block; min-width: 22px; padding: 0 6px; border-radius: 99px; text-align: center;
  background: var(--warn-soft); color: var(--warn-text); font-size: 12px; font-weight: 700;
}

/* --- the printer table (overview-table.js) ------------------------------------ */
.mnt-tablewrap {
  overflow: auto; max-height: max(360px, calc(100dvh - 260px));
  border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel);
}
.mnt-tablewrap .mnt-table { border: 0; border-radius: 0; overflow: visible; font-size: 13.5px; }
.mnt-table th { position: sticky; top: 0; z-index: 2; white-space: nowrap; padding: 9px 10px; }
.mnt-table td { padding: 8px 10px; vertical-align: middle; overflow-wrap: normal; }
.mnt-table th .mnt-sort {
  display: inline-flex; align-items: center; gap: 5px; min-height: 24px;
  background: none; border: 0; padding: 0; font: inherit; color: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer;
}
.mnt-table th .mnt-sort:hover { color: var(--ink); }
.mnt-table th .mnt-sort:focus-visible { outline: none; box-shadow: var(--ring); border-radius: var(--radius-xs); }
.mnt-table th[aria-sort] .mnt-sort { color: var(--brand-quiet); }
.mnt-sort-arr { font-size: 10px; opacity: 0.6; }
.mnt-table th abbr { text-decoration: none; }
.mnt-table tbody tr[data-mnt-open] { cursor: pointer; }
.mnt-table tbody tr[data-mnt-open]:hover td, .mnt-table tbody tr[data-mnt-open]:focus-visible td { background: var(--panel2); }
.mnt-table tbody tr[data-mnt-open]:focus-visible { outline: none; }
.mnt-table tbody tr[data-mnt-open]:focus-visible td:first-child { box-shadow: inset 3px 0 0 var(--focus); }
/* tints: light red for overdue / sent back, light amber for due soon; the tokens carry the dark-mode values */
.mnt-table tr[data-tint='warn'] td { background: color-mix(in srgb, var(--warn-soft) 55%, var(--panel)); }
.mnt-table tr[data-tint='caution'] td { background: color-mix(in srgb, var(--caution-soft) 55%, var(--panel)); }
.mnt-table tr[data-tint='warn'] td:first-child { box-shadow: inset 3px 0 0 var(--warn); }
.mnt-table tr[data-tint='caution'] td:first-child { box-shadow: inset 3px 0 0 var(--caution); }
.mnt-table tr[data-tint='warn']:hover td { background: var(--warn-soft); }
.mnt-table tr[data-tint='caution']:hover td { background: var(--caution-soft); }
.mnt-pname { font-weight: 600; overflow-wrap: anywhere; }
.mnt-sub { display: flex; flex-wrap: wrap; align-items: center; gap: 3px 8px; margin-top: 3px; font-size: 12px; color: var(--muted); }
.mnt-sub .mono { font-size: 12px; }
.mnt-st { display: inline-flex; align-items: center; flex-wrap: wrap; }
.mnt-table td.mnt-check { min-width: 120px; max-width: 220px; white-space: normal; overflow-wrap: anywhere; font-size: 13px; color: var(--ink2); }
.mnt-table .dt-actions .btn { min-height: 30px; }

/* below 700px the table gives way to compact rows */
.mnt-prows { display: none; list-style: none; margin: 0; padding: 0; flex-direction: column; gap: 8px; }
.mnt-prow {
  display: flex; flex-direction: column; gap: 4px; padding: 10px 12px; color: var(--ink); text-decoration: none;
  border: 1px solid var(--line); border-left: 4px solid var(--t-solid, var(--line2)); border-radius: var(--radius); background: var(--panel);
}
.mnt-prow:hover { background: var(--panel2); }
.mnt-prow:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-prow-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.mnt-prow-sub { display: flex; flex-wrap: wrap; gap: 3px 12px; font-size: 12.5px; color: var(--ink2); }
@media (max-width: 699px) {
  .mnt-tablewrap { display: none; }
  .mnt-prows { display: flex; }
}

/* loading */
.mnt-skel-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px; margin-bottom: 18px; }
.mnt-skel-cards span { height: 78px; }
.mnt-skel-rows { display: flex; flex-direction: column; gap: 6px; }
.mnt-skel-rows span { height: 44px; }
.mnt-skel span {
  display: block; border-radius: var(--radius-sm);
  background: linear-gradient(90deg, var(--panel2), var(--line), var(--panel2)); background-size: 200% 100%; animation: mnt-skel 1.2s ease-in-out infinite;
}
@keyframes mnt-skel { from { background-position: 100% 0; } to { background-position: -100% 0; } }
@media (prefers-reduced-motion: reduce) { .mnt-skel span { animation: none; } }

@media (pointer: coarse) {
  :root :is(.mnt-table .dt-actions .btn, .mnt-table th .mnt-sort, .mnt-quiet .linkish, .mnt-clear, .mnt-retired) { min-height: var(--touch); }
  :root .mnt-retired input { width: 22px; height: 22px; }
}

/* --- printer cards (the Cards view): a top edge in the status colour -------- */
.mnt-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 10px; }
.mnt-card {
  display: flex; flex-direction: column; gap: 10px; padding: 12px 14px; min-width: 0;
  border: 1px solid var(--line); border-top: 4px solid var(--t-solid); border-radius: var(--radius);
  background: var(--panel); color: var(--ink); text-decoration: none; box-shadow: var(--shadow-card);
}
.mnt-card:hover { border-color: var(--line2); border-top-color: var(--t-solid); background: var(--panel2); }
.mnt-card:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-card-top { display: flex; justify-content: space-between; align-items: flex-start; gap: 8px; }
.mnt-card-id { min-width: 0; }
.mnt-card-name { font-family: var(--font-heading); font-weight: 600; font-size: 15px; overflow-wrap: anywhere; }
.mnt-card-top .mnt-st { flex: none; }
.mnt-card-dl { display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 3px 10px; margin: 0; font-size: 12.5px; }
.mnt-card-dl dt { color: var(--muted); }
.mnt-card-dl dd { margin: 0; min-width: 0; overflow-wrap: anywhere; color: var(--ink2); }
.mnt-card-dl .mnt-sub { margin-top: 1px; }
.mnt-card-bd { color: var(--warn-text); font-size: 12.5px; overflow-wrap: anywhere; }
.mnt-ink-sum { overflow-wrap: anywhere; }

/* --- main area and side column: beside from 1280px, below as a grid otherwise --- */
.mnt-over-body { display: grid; grid-template-columns: minmax(0, 1fr); gap: 18px; align-items: start; }
.mnt-over-main { min-width: 0; }
.mnt-side { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 12px; align-items: start; min-width: 0; }
.mnt-side .mnt-box { margin: 0; min-width: 0; }
.mnt-side-note { margin-left: auto; font-size: 12px; font-weight: 600; color: var(--muted); }
@media (min-width: 1280px) {
  .view:has(.mnt-over) { max-width: 1480px; }
  /* the Calendar view keeps the month full width: the side column stays below it */
  .mnt-over:not([data-mnt-view='calendar']) .mnt-over-body { grid-template-columns: minmax(0, 1fr) 300px; }
  .mnt-over:not([data-mnt-view='calendar']) .mnt-side { grid-template-columns: minmax(0, 1fr); }
}

/* --- side column lists ------------------------------------------------------ */
.mnt-box h2 { font-size: 15.5px; margin-bottom: 6px; display: flex; align-items: center; gap: 8px; }
.mnt-list { list-style: none; margin: 0; padding: 0; }
.mnt-list li { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 8px 0; border-top: 1px solid var(--line); font-size: 13.5px; }
.mnt-list li:first-child { border-top: 0; }
.mnt-list-main { min-width: 0; overflow-wrap: anywhere; }
.mnt-list-main b { font-weight: 600; }
.mnt-list-sub { display: block; font-size: 12.5px; color: var(--muted); }
@media (max-width: 559px) {
  .mnt-list li { flex-direction: column; align-items: stretch; }
}

/* --- Breakdowns in progress (the live feed, first in the side column) -------- */
.mnt-live { min-width: 0; }
.mnt-live h2 { flex-wrap: wrap; }
.mnt-live-note { margin-left: auto; font-size: 12px; font-weight: 400; color: var(--muted); }
.mnt-live-list { list-style: none; margin: 0; padding: 0; }
.mnt-live-list li { border-top: 1px solid var(--line); }
.mnt-live-list li:first-child { border-top: 0; }
.mnt-live-row {
  display: flex; flex-direction: column; gap: 3px; width: 100%; min-width: 0; padding: 9px 6px; margin: 0;
  background: none; border: 0; border-radius: var(--radius-xs); font: inherit; color: var(--ink); text-align: left; cursor: pointer;
}
.mnt-live-row:hover { background: var(--panel2); }
.mnt-live-row:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-live-top { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 14px; min-width: 0; }
.mnt-live-top b { font-weight: 600; overflow-wrap: anywhere; }
.mnt-live-days { font-size: 12.5px; color: var(--muted); }
.mnt-live-latest { font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.mnt-live-latest .muted { white-space: normal; }

/* --- printer page ----------------------------------------------------------- */
.mnt-back svg { transform: rotate(90deg); }
.mnt-head { margin-bottom: 12px; }
.mnt-head-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); gap: 8px 28px; }
.mnt-head .info-row { grid-template-columns: 100px 1fr; align-items: baseline; }
.mnt-change { min-height: 30px; padding: 0 10px; margin-left: 4px; font-size: 12.5px; }
.mnt-chans { display: inline-flex; flex-wrap: wrap; gap: 4px 10px; }
.mnt-chan { display: inline-flex; align-items: center; gap: 4px; font-size: 12.5px; font-weight: 600; color: var(--ink2); }
.mnt-dot { width: 10px; height: 10px; border-radius: 50%; background: var(--ink2); flex: none; }
.mnt-chan.is-empty { color: var(--muted); font-weight: 500; }
.mnt-chan.is-empty .mnt-dot { background: none; border: 1.5px solid var(--muted); }
.mnt-ink-groups { list-style: none; margin: 4px 0 0; padding: 0; font-size: 13px; }
.mnt-doc-links { display: flex; flex-wrap: wrap; gap: 4px 14px; }
.mnt-doc-links a, .mnt-doc-title a { color: var(--brand-quiet); font-weight: 600; text-underline-offset: 2px; overflow-wrap: anywhere; }
.mnt-doc-links a svg { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; }
.mnt-actions { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
@media (max-width: 559px) { .mnt-actions .btn { flex: 1 1 100%; } }
.mnt-pane { min-height: 120px; }
#mnt-cond-form .seg-opt input:disabled + span { opacity: 0.45; cursor: not-allowed; }
.mnt-highlight { box-shadow: 0 0 0 3px var(--focus) !important; border-radius: var(--radius-xs); }

/* timeline */
.mnt-kinds { margin-bottom: 12px; }
@media (max-width: 559px) {
  .mnt-kinds { flex-wrap: nowrap; overflow-x: auto; padding-bottom: 4px; }
  .mnt-kinds .chip { flex: none; }
  .mnt-sumcard { padding: 8px 10px 8px 13px; }
  .mnt-sumcard .n { font-size: 22px; }
}
.mnt-tl { list-style: none; margin: 0 0 12px; padding: 0; }
.mnt-tl-item { display: grid; grid-template-columns: 92px 12px 1fr; gap: 10px; padding: 10px 0; border-top: 1px solid var(--line); font-size: 13.5px; }
.mnt-tl-item:first-child { border-top: 0; }
.mnt-tl-when { display: flex; flex-direction: column; font-size: 12.5px; color: var(--ink2); }
.mnt-tl-when .muted { font-size: 12px; }
.mnt-tl-dot { width: 11px; height: 11px; margin-top: 4px; border-radius: 50%; background: var(--muted); }
.mnt-tl-item[data-kind='check'] .mnt-tl-dot { background: var(--ok); }
.mnt-tl-item[data-kind='breakdown'] .mnt-tl-dot,
.mnt-tl-item[data-kind='progress'] .mnt-tl-dot { background: var(--warn); }
.mnt-tl-item[data-kind='ink_change'] .mnt-tl-dot { background: var(--caution); }
.mnt-tl-item[data-kind='printtrace'] .mnt-tl-dot { background: var(--info); }
.mnt-tl-item[data-kind='swissqprint'] .mnt-tl-dot { background: var(--c); }
.mnt-tl-body { min-width: 0; overflow-wrap: anywhere; }
.mnt-tl-kind { font-size: 11px; font-weight: 700; letter-spacing: 0.05em; text-transform: uppercase; color: var(--muted); margin-right: 2px; }
.mnt-tl-body .linkish { font-weight: 600; text-align: left; }
.mnt-tl-detail { display: block; margin-top: 2px; color: var(--ink2); font-size: 13px; }
@media (max-width: 559px) {
  .mnt-tl-item { grid-template-columns: 12px 1fr; }
  .mnt-tl-when { grid-column: 2; flex-direction: row; gap: 6px; }
  .mnt-tl-dot { grid-row: 1 / span 2; grid-column: 1; }
  .mnt-tl-body { grid-column: 2; }
}

/* checks */
.mnt-sched { margin-bottom: 12px; }
.mnt-sched .card-head { margin-bottom: 2px; }
.mnt-sched-sub { margin: 0 0 10px; font-size: 13px; color: var(--ink2); }
.mnt-strip { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: 4px; max-width: 560px; }
.mnt-sq-wrap { display: flex; flex-direction: column; align-items: center; gap: 3px; padding: 2px 0; }
.mnt-sq-wrap .mnt-sq { width: 100%; max-width: 34px; aspect-ratio: 1; height: auto; }
.mnt-sq-wrap.is-current .mnt-sq { box-shadow: 0 0 0 2px var(--panel), 0 0 0 4px var(--ink2); }
.mnt-sq-key { font-size: 10.5px; color: var(--muted); font-variant-numeric: tabular-nums; }
.mnt-sq { display: inline-block; width: 14px; height: 14px; border-radius: 3px; background: var(--t-solid); border: 1.5px solid var(--t-solid); }
.mnt-sq[data-st='due'] { background: var(--panel); border-color: var(--ink2); }
.mnt-sq[data-st='submitted'] { background: var(--t-soft); border-color: var(--t-solid); }
.mnt-sq[data-st='paused'] {
  background: repeating-linear-gradient(135deg, var(--lost-soft) 0 3px, var(--t-solid) 3px 5px); border-color: var(--t-solid);
}
.mnt-sq[data-st='missed'] { background: var(--panel); border: 2px dashed var(--t-solid); }
.mnt-legend { display: flex; flex-wrap: wrap; gap: 6px 16px; margin-top: 4px; font-size: 12.5px; color: var(--ink2); }
.mnt-legend > span { display: inline-flex; align-items: center; gap: 6px; }

/* breakdowns, ink changes */
.mnt-recs { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.mnt-rec { padding: 12px 14px; }
.mnt-rec-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.mnt-rec-when { margin-left: auto; font-size: 12.5px; color: var(--muted); }
.mnt-rec-text { margin: 6px 0 0; font-size: 14px; overflow-wrap: anywhere; }
.mnt-rec-meta { margin: 4px 0 0; font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.mnt-rec-meta:empty { display: none; }

/* parts & costs */
.mnt-cost-top { display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 220px)); gap: 10px; margin-bottom: 6px; }
.mnt-cost-top .stat::before { background: var(--t-solid); }
.mnt-cost-top .stat[data-tone] .n { color: var(--t); }

/* documents */
.mnt-doc-adds { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 10px; }
.mnt-doc-group { margin-bottom: 8px; }
.mnt-doc-group .mini-h { margin-top: 10px; display: flex; align-items: center; gap: 6px; }
.mnt-doc-list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: var(--radius); background: var(--panel); }
.mnt-doc { display: grid; grid-template-columns: 20px 1fr auto; gap: 10px; align-items: start; padding: 10px 12px; border-top: 1px solid var(--line); }
.mnt-doc:first-child { border-top: 0; }
.mnt-doc-ico svg { width: 18px; height: 18px; color: var(--muted); margin-top: 2px; }
.mnt-doc-main { min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.mnt-doc-title { font-size: 14px; }
.mnt-doc-meta { font-size: 12.5px; color: var(--muted); overflow-wrap: anywhere; }
.mnt-doc-note { font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.mnt-doc-acts { display: flex; gap: 4px; flex-wrap: wrap; justify-content: flex-end; }
.mnt-doc-acts .btn { min-height: 34px; padding: 0 10px; font-size: 12.5px; }
.mnt-doc-acts .btn svg { width: 15px; height: 15px; }
@media (max-width: 559px) {
  .mnt-doc { grid-template-columns: 20px 1fr; }
  .mnt-doc-acts { grid-column: 2; justify-content: flex-start; }
}

/* reports */
.mnt-year .select { width: auto; }
.mnt-reps { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 12px; }
.mnt-rep h2 { font-size: 15.5px; margin-bottom: 4px; }
@media (max-width: 400px) { .mnt-reps { grid-template-columns: 1fr; } }

/* --- record dialogs (check-dialog.js, breakdown.js, ink-change.js) ------------- */
.mnt-modal .modal-actions { position: sticky; bottom: calc(-18px - env(safe-area-inset-bottom, 0px)); z-index: 2; margin: 14px -18px calc(-18px - env(safe-area-inset-bottom, 0px)); padding: 12px 18px calc(12px + env(safe-area-inset-bottom, 0px)); background: var(--panel); border-top: 1px solid var(--line); }
@media (min-width: 640px) { .mnt-modal .modal-actions { bottom: -18px; margin-bottom: -18px; padding-bottom: 12px; } }
.mnt-grid2 { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 0 14px; }
.mnt-grid3 { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; }
.mnt-span2 { grid-column: span 2; }
@media (max-width: 559px) { .mnt-grid3 { grid-template-columns: 1fr 1fr; } .mnt-span2 { grid-column: 1 / -1; } }
.mnt-note { margin: 0 0 12px; padding: 8px 12px; border-radius: var(--radius-sm); background: var(--panel2); font-size: 13.5px; color: var(--ink2); }
.mnt-fs { border: 0; margin: 0 0 14px; padding: 0; min-width: 0; }
.mnt-fs > legend { padding: 0; margin-bottom: 6px; font-size: 12.5px; font-weight: 600; letter-spacing: 0.02em; color: var(--ink2); }
.mnt-tick { display: flex; align-items: flex-start; gap: 8px; min-height: var(--touch); padding: 6px 0; font-size: 14px; cursor: pointer; }
.mnt-tick input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--brand); flex: none; }

/* tasks and steps checklists */
.mnt-tasks-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; flex-wrap: wrap; margin: 4px 0 6px; }
.mnt-tasks-head .mini-h { margin: 0; }
.mnt-tasks-head .hint { font-size: 12.5px; color: var(--muted); }
.mnt-tasks { list-style: none; margin: 0 0 14px; padding: 0; border: 1px solid var(--line); border-radius: var(--radius); }
.mnt-task { display: grid; grid-template-columns: 1fr auto; gap: 6px 12px; align-items: center; padding: 10px 12px; border-top: 1px solid var(--line); }
.mnt-task:first-child { border-top: 0; }
.mnt-task-text { display: flex; gap: 8px; min-width: 0; font-size: 14px; overflow-wrap: anywhere; }
.mnt-task-text b { font-weight: 600; }
.mnt-task-n { flex: none; min-width: 20px; color: var(--muted); font-variant-numeric: tabular-nums; }
.mnt-task-hint { display: block; margin-top: 2px; font-size: 12.5px; color: var(--muted); }
a.mnt-task-hint { color: var(--brand-quiet); font-weight: 600; }
a.mnt-task-hint svg { width: 14px; height: 14px; vertical-align: -2px; margin-right: 4px; }
.mnt-task-note { grid-column: 1 / -1; }
.mnt-task .seg-opt span { padding: 6px 11px; font-size: 13px; }
@media (max-width: 559px) {
  .mnt-task { grid-template-columns: 1fr; }
  .mnt-task .seg { display: flex; }
  .mnt-task .seg-opt { flex: 1; }
  .mnt-task .seg-opt span { text-align: center; justify-content: center; }
}
.mnt-added-list { list-style: none; margin: 0 0 10px; padding: 0; display: flex; flex-direction: column; gap: 8px; }
.mnt-added { display: grid; grid-template-columns: 1fr 1fr auto; gap: 8px; align-items: center; }
@media (max-width: 559px) { .mnt-added { grid-template-columns: 1fr auto; } .mnt-added [data-added-note] { grid-column: 1; } }

/* photos picked in a dialog, and photos on a record */
.mnt-photo-picks { display: flex; flex-wrap: wrap; gap: 8px; }
.mnt-photo-list { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.mnt-photo-list:empty { display: none; }
.mnt-photo { display: grid; grid-template-columns: 56px 1fr auto; gap: 10px; align-items: center; font-size: 13px; }
.mnt-photo img, .mnt-photo .mnt-photo-tile { width: 56px; height: 44px; object-fit: cover; border-radius: var(--radius-xs); border: 1px solid var(--line); }
.mnt-photo-name { min-width: 0; overflow-wrap: anywhere; }
.mnt-photo-tile { display: inline-flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; background: var(--panel2); color: var(--muted); font-size: 11px; }
.mnt-photo-tile svg { width: 18px; height: 18px; }
.mnt-shots { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 10px; }
.mnt-shots li { display: flex; flex-direction: column; gap: 4px; font-size: 12px; }
.mnt-shots img, .mnt-shots .mnt-photo-tile { width: 100%; aspect-ratio: 4 / 3; height: auto; object-fit: cover; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--panel2); }

/* step photos (photos.js): the block under a step in a form, and the thumbnails on a record */
.mnt-sp { grid-column: 1 / -1; display: flex; flex-direction: column; gap: 6px; min-width: 0; padding: 8px 10px; border: 1px dashed var(--line2); border-radius: var(--radius-sm); background: var(--panel2); }
.mnt-sp[data-mode='required'] { border-style: solid; }
.mnt-sp-head { display: flex; align-items: center; flex-wrap: wrap; gap: 6px; font-size: 13px; font-weight: 600; color: var(--ink2); }
.mnt-sp-head svg { width: 16px; height: 16px; flex: none; }
.mnt-sp-head .muted { font-weight: 400; }
.mnt-sp-req { padding: 1px 8px; border-radius: 999px; background: var(--caution-soft); color: var(--caution-text); font-size: 11.5px; font-weight: 700; }
.mnt-sp-n { margin-left: auto; font-weight: 400; color: var(--muted); font-variant-numeric: tabular-nums; }
.mnt-sp-tip { margin: 0; font-size: 12.5px; color: var(--muted); }
.mnt-sp-list, .mnt-sp-thumbs { list-style: none; margin: 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.mnt-sp-thumbs { margin-top: 6px; }
.mnt-sp-shot, .mnt-sp-thumbs li { position: relative; }
.mnt-sp-shot img, .mnt-sp-shot .mnt-photo-tile, .mnt-sp-view img, .mnt-sp-view .mnt-photo-tile {
  display: flex; width: 96px; height: 72px; object-fit: cover; border: 1px solid var(--line); border-radius: var(--radius-xs); background: var(--panel);
}
.mnt-sp-shot.is-up .mnt-photo-tile { color: var(--ink2); }
.mnt-sp-del { position: absolute; top: 2px; right: 2px; background: var(--panel); border: 1px solid var(--line); }
.mnt-sp-add { align-self: flex-start; position: relative; }
.mnt-sp-add:focus-within { box-shadow: var(--ring); }
.mnt-sp-add.is-busy { pointer-events: none; opacity: 0.7; }
.mnt-sp-err { margin: 0; }
.mnt-sp-full { margin: 0; font-size: 12.5px; color: var(--muted); }
.mnt-sp-none { display: block; margin-top: 2px; font-size: 12.5px; color: var(--muted); }
.mnt-sp-view { display: block; padding: 0; border: 0; border-radius: var(--radius-xs); background: none; cursor: zoom-in; }
.mnt-sp-view:hover img { border-color: var(--line2); }
.mnt-sp-view:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-answers .mnt-sp-view img, .mnt-answers .mnt-sp-view .mnt-photo-tile { width: 72px; height: 54px; }
@media (max-width: 559px) { .mnt-sp-add { align-self: stretch; justify-content: center; } }

/* breakdown before / after photos */
.mnt-bdps { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 20px; }
.mnt-bdp { display: flex; flex-direction: column; align-items: flex-start; gap: 6px; min-width: 0; }
.mnt-bdp-h { margin: 0; font-size: 13.5px; font-weight: 600; }
.mnt-bdp .mnt-sp-thumbs { margin-top: 0; }
@media (max-width: 559px) { .mnt-bdps { grid-template-columns: minmax(0, 1fr); } }

/* the full-size photo viewer */
.modal.lightbox.mnt-pv { display: flex; flex-direction: column; width: min(1100px, 96vw); }
.mnt-pv-stage { display: flex; align-items: center; justify-content: center; min-height: 180px; border-radius: var(--radius-sm); background: var(--panel2); }
.modal.lightbox.mnt-pv img { max-height: 70vh; }
.mnt-pv-tile { display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 6px; margin: 0; padding: 24px; color: var(--ink2); font-size: 14px; }
.mnt-pv-tile svg { width: 22px; height: 22px; color: var(--muted); }
.mnt-pv-nav { display: flex; gap: 8px; margin-top: 10px; }
.mnt-pv-nav .btn { flex: 1 1 0; min-height: var(--touch); justify-content: center; }
.mnt-pv-nav [data-mnt-pv='-1'] svg { transform: rotate(90deg); }
.mnt-pv-nav [data-mnt-pv='1'] svg { transform: rotate(-90deg); }

/* ink change */
.mnt-tick-all { border-bottom: 1px solid var(--line); margin-bottom: 4px; }
.mnt-ic-chans { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 0 14px; }
.mnt-ic-chans .mnt-tick > span { display: flex; flex-direction: column; min-width: 0; }
.mnt-ic-now { font-size: 12px; color: var(--muted); overflow-wrap: anywhere; }
.mnt-ic-table { margin: 0 0 8px; }
.mnt-ic-table .select, .mnt-ic-table .input { min-height: 40px; padding-top: 7px; padding-bottom: 7px; font-size: 14px; }
.mnt-ic-table .mnt-ml { width: 96px; }
.mnt-newlot { display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.mnt-newlot .input { flex: 1 1 120px; width: auto; min-width: 0; }
.mnt-ic-lothint { margin: 6px 0 0; font-size: 12.5px; color: var(--muted); }
.mnt-ic-same { display: flex; flex-wrap: wrap; gap: 6px; }
.mnt-newink { margin: 0 0 10px; padding: 10px 12px; border: 1px solid var(--line2); border-radius: var(--radius-sm); background: var(--panel2); }
.mnt-newink-head { font-size: 13.5px; margin-bottom: 6px; overflow-wrap: anywhere; }
.mnt-newink-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: 0 12px; }
.mnt-newink-cols { border: 0; margin: 0; padding: 0; min-width: 0; }
.mnt-newink-cols legend { padding: 0; font-size: 13px; font-weight: 600; margin-bottom: 2px; }
.mnt-newink-cols .mnt-ic-chans { grid-template-columns: repeat(auto-fill, minmax(120px, 1fr)); }
.mnt-newink-acts { display: flex; justify-content: flex-end; flex-wrap: wrap; gap: 6px; margin-top: 8px; }
@media (max-width: 699px) {
  .mnt-ic-table .mnt-ml { width: 100%; }
  .mnt-newink-grid { grid-template-columns: minmax(0, 1fr); }
}

/* --- a record in the printer page -------------------------------------------- */
.mnt-rec-bar { margin-bottom: 10px; }
.mnt-record { display: flex; flex-direction: column; gap: 12px; }
.mnt-rec-top .mnt-rec-title { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; }
.mnt-rec-top h2 { font-size: 18px; margin: 0; }
.mnt-rec-sub { margin: 4px 0 0; font-size: 13px; color: var(--ink2); overflow-wrap: anywhere; }
.mnt-rec-sec .mini-h:first-child { margin-top: 0; }
.mnt-rec-acts { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
@media (max-width: 559px) { .mnt-rec-acts .btn { flex: 1 1 100%; } }
.mnt-prose { margin: 6px 0 0; font-size: 14px; white-space: pre-wrap; overflow-wrap: anywhere; }
.mnt-problem { font-size: 15px; }
.mnt-returned, .mnt-signed { display: flex; align-items: flex-start; gap: 8px; margin: 10px 0 0; padding: 8px 12px; border-radius: var(--radius-sm); font-size: 13.5px; }
.mnt-modal .mnt-returned { margin: 0 0 12px; }
.mnt-returned { background: var(--warn-soft); color: var(--warn-text); }
.mnt-signed { flex-wrap: wrap; background: var(--ok-soft); color: var(--ok-text); }
.mnt-signed[data-step='check'] { background: var(--info-soft); color: var(--info-text); }   /* the checker's step: not done until signed off */
.mnt-signed > span:not(.mnt-signed-note) { flex: 1 1 0; min-width: 0; overflow-wrap: anywhere; }
.mnt-returned svg, .mnt-signed svg { width: 16px; height: 16px; flex: none; margin-top: 2px; }
.mnt-signed-note { flex-basis: 100%; color: var(--ink2); padding-left: 24px; }
.mnt-answers { list-style: none; margin: 0; padding: 0; }
.mnt-answers li { display: grid; grid-template-columns: 136px 1fr; gap: 10px; align-items: baseline; padding: 7px 0; border-top: 1px solid var(--line); font-size: 14px; }
.mnt-answers li:first-child { border-top: 0; }
.mnt-answers li > span { min-width: 0; overflow-wrap: anywhere; }
.mnt-answers li > .mnt-chip { justify-self: start; }
.mnt-answers b { font-weight: 600; }
.mnt-answer-note { display: block; margin-top: 2px; color: var(--ink2); font-size: 13px; }
@media (max-width: 559px) { .mnt-answers li { grid-template-columns: 1fr; gap: 4px; } }
.mnt-review { border-color: var(--brand); }
.mnt-review .mini-h { margin-top: 0; }
.mnt-review-acts { display: flex; gap: 8px; flex-wrap: wrap; }
.mnt-review-acts .btn { flex: 1 1 140px; min-height: 44px; }

/* breakdown steps, parts, fix */
.mnt-steps { list-style: none; margin: 0 0 6px; padding: 0; }
.mnt-step { display: grid; grid-template-columns: 14px 1fr; gap: 10px; padding: 8px 0 12px; position: relative; }
.mnt-step::before { content: ""; position: absolute; left: 5px; top: 22px; bottom: -8px; width: 2px; background: var(--line); }
.mnt-step:last-child::before { display: none; }
.mnt-step-dot { width: 12px; height: 12px; margin-top: 4px; border-radius: 50%; background: var(--panel); border: 2px solid var(--ink2); }
.mnt-step-body { min-width: 0; }
.mnt-step-head { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; font-size: 13.5px; }
.mnt-step-acts { margin-left: auto; display: flex; gap: 4px; }
.mnt-step-acts .btn { min-height: 32px; padding: 0 8px; font-size: 12.5px; }
.mnt-step-acts .btn svg { width: 14px; height: 14px; }
.mnt-step-docs { margin-top: 6px; font-size: 13px; }
.mnt-step-docs summary { cursor: pointer; color: var(--ink2); font-weight: 600; min-height: 32px; padding-top: 6px; }
.mnt-step-docs .mnt-docs { margin-top: 6px; }
.mnt-subform { margin-top: 10px; padding: 12px; border: 1px dashed var(--line2); border-radius: var(--radius); background: var(--panel2); }
.modal .mnt-subform { padding: 0; border: 0; background: none; margin: 0; }
.mnt-subform-h { margin: 0 0 10px; font-size: 14px; }
.mnt-subform .input, .mnt-subform .select, .mnt-subform .textarea { background-color: var(--panel); }
.mnt-subform .input:disabled { background-color: var(--panel2); color: var(--muted); cursor: not-allowed; }
.mnt-subform-acts { display: flex; gap: 8px; justify-content: flex-end; flex-wrap: wrap; }
@media (max-width: 559px) { .mnt-subform-acts .btn { flex: 1 1 100%; } }
.mnt-who-text { margin-top: 6px; }
.mnt-progress-now { margin: 0; font-size: 13.5px; display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; color: var(--ink2); }
.mnt-progress-form { margin-top: 8px; }
.mnt-progress-row { display: grid; grid-template-columns: minmax(0, 16rem) minmax(0, 1fr) auto; gap: 8px; align-items: end; }
.mnt-progress-row .field { margin: 0; min-width: 0; }
@media (max-width: 699px) { .mnt-progress-row { grid-template-columns: 1fr; } .mnt-progress-row .btn { width: 100%; } }
.mnt-prog-hist { list-style: none; margin: 10px 0 0; padding: 0; font-size: 13px; }
.mnt-prog-hist li { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding: 6px 0; border-top: 1px solid var(--line); overflow-wrap: anywhere; }
.mnt-prog-hist li:first-child { border-top: 0; }
.mnt-prog-hist .muted { font-size: 12.5px; }
.mnt-prog-more { margin-top: 4px; font-size: 13px; }
.mnt-prog-more summary { cursor: pointer; color: var(--ink2); font-weight: 600; min-height: 32px; padding-top: 6px; }
.mnt-parts { margin: 0 0 8px; }
.mnt-parts .dt-sub { display: block; }
.mnt-part-acts .btn { min-height: 32px; padding: 0 8px; font-size: 12.5px; }
.mnt-parts-total { margin: 0 0 10px; font-size: 14px; display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.mnt-sched .card-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.mnt-sched-act { margin-left: auto; }
.mnt-sq-btn { display: flex; flex-direction: column; align-items: center; gap: 3px; width: 100%; padding: 0; border: 0; background: none; color: inherit; font: inherit; cursor: pointer; border-radius: var(--radius-xs); }
.mnt-sq-btn:hover .mnt-sq { outline: 2px solid var(--line2); outline-offset: 1px; }
.mnt-sq-btn:focus-visible { outline: none; box-shadow: var(--ring); }

/* --- printed breakdown form (paper colours; print rules in views.css, records.css) --- */
@media print {
  .mnt-prn { font-size: 10.5pt; color: var(--paper-ink); }
  .mnt-prn-form th { width: 42mm; vertical-align: top; }
  .mnt-prn-blank { display: inline-block; min-width: 60mm; min-height: 6mm; }
  .mnt-prn-sign { display: grid; grid-template-columns: 1fr 1fr; gap: 14mm; margin-top: 18mm; }
  .mnt-prn-sign div { border-top: 1px solid var(--paper-ink); padding-top: 2mm; font-size: 9pt; color: var(--paper-ink2); }
}

/* --- the check sheet (sheet.js): the controls, then the printed sheet --------- */
.mnt-sheet-bar { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 8px 12px; margin-bottom: 14px; }
.mnt-sheet-bar .field { margin: 0; }
.mnt-sheet-bar .input { width: auto; min-width: 11em; }
.mnt-sheet-acts { display: flex; flex-wrap: wrap; gap: 8px; }
.mnt-sheet-bar .hint { flex-basis: 100%; margin: 0; }
.mnt-cal-print { white-space: nowrap; }
@media (max-width: 559px) {
  .mnt-sheet-bar .field, .mnt-sheet-bar .input, .mnt-sheet-acts { width: 100%; }
  .mnt-sheet-acts .btn { flex: 1 1 0; }
}
@media (max-width: 699px) { .mnt-cal-print { width: 100%; justify-content: center; } }

@media print {
  .mnt-sheet { page: mnt-port; font-size: 9.5pt; color: var(--paper-ink); }
  .mnt-sheet.is-land { page: mnt-land; }
  .mnt-sheet:not(:last-child) { page-break-after: always; break-after: page; }
  .mnt-sheet .prn-title { font-size: 14pt; }
  .mnt-sheet-grid { table-layout: fixed; margin-bottom: 4mm; }
  .mnt-sheet-grid th, .mnt-sheet-grid td { border-color: var(--paper-ink); padding: 2px 4px; }
  .mnt-sheet-grid th.mnt-sheet-task { width: 62mm; font-weight: 400; background: var(--paper); }
  .mnt-sheet-grid thead th { background: var(--paper-fill); font-weight: 700; text-align: center; vertical-align: top; }
  .mnt-sheet-grid thead th.mnt-sheet-task { text-align: left; font-weight: 700; background: var(--paper-fill); vertical-align: bottom; }
  .mnt-sheet-small { display: block; font-size: 8pt; font-weight: 400; color: var(--paper-ink2); }
  .mnt-sheet-st { display: block; margin-top: 1px; font-size: 7.5pt; font-weight: 600; text-transform: uppercase; letter-spacing: 0.03em; color: var(--paper-ink2); }
  .mnt-sheet-col[data-st="missed"] .mnt-sheet-st, .mnt-sheet-col[data-st="paused"] .mnt-sheet-st,
  .mnt-sheet-col[data-st="overdue"] .mnt-sheet-st { color: var(--paper-ink); }
  .mnt-sheet-cell { text-align: center; vertical-align: middle; }
  .mnt-sheet-mark { font-size: 11pt; font-weight: 700; }
  .mnt-sheet-mark[data-r="na"] { font-size: 8.5pt; }
  .mnt-sheet-cell sup { font-size: 7pt; margin-left: 1px; }
  .mnt-sheet-dash { color: var(--paper-muted); }
  .mnt-sheet-pc { display: block; font-size: 7.5pt; font-weight: 400; color: var(--paper-ink2); white-space: nowrap; }
  .mnt-sheet-foot th.mnt-sheet-task { font-weight: 700; background: var(--paper-fill); }
  .mnt-sheet-foot td { text-align: center; font-size: 8.5pt; }
  .mnt-sheet-thumb { display: block; max-width: 100%; max-height: 15mm; margin: 1px auto; object-fit: contain; border: 1px solid var(--paper-line); }
  .mnt-sheet-notes { margin-bottom: 3mm; break-inside: avoid; }
  .mnt-sheet-notes ol { margin: 0; padding-left: 16px; font-size: 8.5pt; }
  .mnt-sheet h3 { font-size: 9pt; margin: 0 0 1mm; }
  .mnt-sheet-boxes { display: grid; grid-template-columns: 1fr 1fr; gap: 4mm; break-inside: avoid; }
  .mnt-sheet-box { min-height: 18mm; padding: 2mm 3mm; border: 1px solid var(--paper-ink); }
  .mnt-sheet-box ul { margin: 0; padding-left: 14px; font-size: 8.5pt; }
  .mnt-sheet-sign { display: flex; flex-wrap: wrap; gap: 3mm 8mm; margin-top: 6mm; font-size: 9pt; break-inside: avoid; }
  .mnt-sheet-sign span { display: inline-flex; align-items: flex-end; gap: 2mm; }
  .mnt-sheet-sign i { display: inline-block; width: 45mm; border-bottom: 1px solid var(--paper-ink); }
  .mnt-sheet .prn-foot { margin-top: 4mm; }
  .mnt-sheet .prn-head { margin-bottom: 8px; }
}

/* --- Settings › Maintenance ---------------------------------------------- */
.mnt-set-rows { display: flex; flex-direction: column; gap: 8px; }
.mnt-set-rows .rp-row { align-items: center; }
.mnt-set-rows .mnt-dt-row { padding: 4px 6px; }
.mnt-set-sub { margin: 0 0 10px; font-size: 15px; }
.mnt-step-n { flex: none; min-width: 22px; font-weight: 600; color: var(--muted); align-self: flex-end; padding-bottom: 10px; }
.mnt-set-scroll { overflow-x: auto; }
.mnt-seed-table td:first-child { width: 36px; }
.mnt-seed-table input[type=checkbox], .mnt-imp-keep input { width: 18px; height: 18px; }
.mnt-imp-sum { margin: 10px 0; font-size: 14px; }
.mnt-imp-result { display: flex; gap: 8px; align-items: center; margin-bottom: 10px; padding: 10px 12px; border-radius: var(--radius-sm); background: var(--ok-soft); color: var(--ok-text); font-weight: 600; font-size: 14px; }
.mnt-imp-result svg { width: 18px; height: 18px; flex: none; }
.mnt-imp-sheet { margin: 12px 0; padding: 12px; border: 1px solid var(--line); border-radius: var(--radius-sm); background: var(--panel2); }
.mnt-imp-head { display: flex; gap: 12px; align-items: flex-end; flex-wrap: wrap; }
.mnt-imp-head h3 { margin: 0; font-size: 15px; }
.mnt-imp-head > div { flex: 1 1 180px; min-width: 0; }
.mnt-imp-target, .mnt-imp-name { display: flex; flex-direction: column; gap: 3px; flex: 1 1 220px; min-width: 0; }
.mnt-imp-sheet .input, .mnt-imp-sheet .select { background-color: var(--panel); }
.mnt-imp-sheet details { margin-top: 8px; }
.mnt-imp-sheet summary { cursor: pointer; font-weight: 600; color: var(--ink2); font-size: 13px; min-height: 32px; padding-top: 6px; }
.mnt-imp-table td { vertical-align: top; }
.mnt-imp-bad td { background: var(--caution-soft); }
.mnt-imp-table tr.is-left-out td { background: none; opacity: .55; }
.dtable .mnt-imp-note { color: var(--caution-text); font-weight: 600; }
.mnt-imp-date { min-height: 34px; max-width: 170px; }
.mnt-imp-keep { display: flex; gap: 6px; align-items: center; margin-top: 4px; font-size: 12.5px; white-space: nowrap; }
@media (max-width: 699px) {
  .mnt-set-scroll { overflow-x: visible; }
  .mnt-imp-date { max-width: none; }
  .mnt-imp-bad { background: var(--caution-soft); }
  .mnt-imp-bad td { background: none; }
}

/* --- maintenance calendar (calendar.js): overview and a printer's Checks ------- */
/* Each status's colour: --c-bg fill, --c-line edge, --c-text text. */
.mnt-cal [data-st], .mnt-cal-items [data-st] { --c-bg: var(--panel2); --c-line: var(--line2); --c-text: var(--ink2); }
:is(.mnt-cal, .mnt-cal-items) [data-st='checked']  { --c-bg: color-mix(in srgb, var(--ok) 30%, var(--panel)); --c-line: var(--ok); --c-text: var(--ok-text); }
:is(.mnt-cal, .mnt-cal-items) [data-st='done']     { --c-bg: var(--info-soft); --c-line: var(--info); --c-text: var(--info-text); }
/* awaiting sign-off: the second info shade (solid line where 'done' is dashed) */
:is(.mnt-cal, .mnt-cal-items) [data-st='signoff']  { --c-bg: color-mix(in srgb, var(--info) 30%, var(--panel)); --c-line: var(--info); --c-text: var(--info-text); }
:is(.mnt-cal, .mnt-cal-items) [data-st='due']      { --c-bg: var(--caution-soft); --c-line: var(--caution); --c-text: var(--caution-text); }
:is(.mnt-cal, .mnt-cal-items) [data-st='returned'],
:is(.mnt-cal, .mnt-cal-items) [data-st='overdue'],
:is(.mnt-cal, .mnt-cal-items) [data-st='missed']   { --c-bg: var(--warn-soft); --c-line: var(--warn); --c-text: var(--warn-text); }
:is(.mnt-cal, .mnt-cal-items) [data-st='paused']   { --c-bg: var(--lost-soft); --c-line: var(--lost); --c-text: var(--lost-text); }
.mnt-cal [data-worst] { --w: var(--line); }
.mnt-cal [data-worst='checked'] { --w: var(--ok); }
.mnt-cal [data-worst='done'] { --w: var(--info); }
.mnt-cal [data-worst='due'] { --w: var(--caution); }
.mnt-cal [data-worst='returned'], .mnt-cal [data-worst='overdue'], .mnt-cal [data-worst='missed'] { --w: var(--warn); }
.mnt-cal [data-worst='paused'] { --w: var(--lost); }

.mnt-cal { margin-bottom: 16px; min-width: 0; }
.mnt-sched + .mnt-cal, .mnt-legend + .mnt-cal { margin-top: 14px; }
.mnt-cal-head { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 12px; margin-bottom: 6px; }
.mnt-cal-head h2 { margin: 0; font-size: 15.5px; }
.mnt-cal-nav { display: flex; align-items: center; gap: 6px; margin-left: auto; }
.mnt-cal-nav .btn-icon { min-width: 34px; font-size: 18px; line-height: 1; }
.mnt-cal-month { min-width: 9.5em; text-align: center; font-weight: 600; font-size: 14px; }
.mnt-cal-legend { display: flex; flex-wrap: wrap; gap: 4px 14px; margin-bottom: 10px; font-size: 12.5px; color: var(--ink2); }
.mnt-cal-legend > span { display: inline-flex; align-items: center; gap: 6px; }
.mnt-cal-key { width: 12px; height: 12px; border-radius: 3px; background: var(--c-bg); border: 1.5px solid var(--c-line); }
.mnt-cal-key[data-st='done'] { border-style: dashed; }

.mnt-cal-grid { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; }
.mnt-cal-wd { padding: 0 4px; font-size: 11px; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--muted); }
.mnt-cal-cell {
  position: relative; display: flex; flex-direction: column; align-items: stretch; gap: 3px; min-width: 0; min-height: 84px;
  padding: 7px 5px 5px; margin: 0; overflow: hidden; text-align: left; font: inherit; color: var(--ink);
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-sm); cursor: pointer;
}
.mnt-cal-cell::before { content: ''; position: absolute; inset: 0 0 auto 0; height: 4px; background: var(--w, transparent); }
.mnt-cal-cell:hover { background: var(--panel2); border-color: var(--line2); }
.mnt-cal-cell:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-cal-cell.is-out { background: none; border-style: dashed; cursor: default; opacity: 0.45; }
.mnt-cal-cell.is-today { border-color: var(--brand); box-shadow: inset 0 0 0 1px var(--brand); }
.mnt-cal-cell.is-today .mnt-cal-n { background: var(--brand); color: var(--brand-ink); }
.mnt-cal-n { align-self: flex-start; min-width: 22px; padding: 0 5px; border-radius: 99px; text-align: center; font-size: 12.5px; font-weight: 600; font-variant-numeric: tabular-nums; color: var(--ink2); }
.mnt-cal-pills { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.mnt-cal-pill {
  display: block; min-width: 0; padding: 1px 6px; border-radius: 4px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  font-size: 11.5px; font-weight: 600; line-height: 1.45; background: var(--c-bg); color: var(--c-text); border-left: 3px solid var(--c-line);
}
.mnt-cal-pill[data-st='done'] { border-left-style: dashed; }
.mnt-cal-more { font-size: 11.5px; font-weight: 600; color: var(--muted); padding-left: 4px; }
.mnt-cal-sum { margin: 10px 0 0; font-size: 13px; color: var(--ink2); }

/* phone: an agenda of the days that have something, instead of the grid */
.mnt-cal-agenda { display: none; list-style: none; margin: 0; padding: 0; }
.mnt-cal-ag-day {
  display: flex; flex-direction: column; gap: 5px; width: 100%; min-height: var(--touch); padding: 8px 10px 9px 14px; margin: 0 0 6px;
  position: relative; overflow: hidden; text-align: left; font: inherit; color: var(--ink); cursor: pointer;
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-sm);
}
.mnt-cal-ag-day::before { content: ''; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--w, transparent); }
.mnt-cal-ag-day.is-today { border-color: var(--brand); }
.mnt-cal-ag-day:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-cal-ag-date { font-size: 13.5px; font-weight: 600; }
.mnt-cal-agenda .mnt-cal-pills { flex-direction: row; flex-wrap: wrap; }
.mnt-cal-agenda .mnt-cal-pill { max-width: 100%; }
.mnt-cal-counts { display: flex; flex-wrap: wrap; gap: 6px; }
.mnt-cal-count {
  padding: 3px 9px; border-radius: 6px; font-size: 13px; font-weight: 700; font-variant-numeric: tabular-nums;
  background: var(--c-bg); color: var(--c-text); border-left: 3px solid var(--c-line);
}
.mnt-cal-count[data-st='done'] { border-left-style: dashed; }
.mnt-cal-ag-open { display: flex; align-items: center; justify-content: space-between; font-size: 13px; font-weight: 600; color: var(--brand-quiet); }
.mnt-cal-ag-open svg { width: 16px; height: 16px; transform: rotate(-90deg); }
@media (max-width: 699px) {
  .mnt-cal-grid { display: none; }
  .mnt-cal-agenda { display: block; }
  .mnt-cal-nav { margin-left: 0; width: 100%; }
  .mnt-cal-month { flex: 1; min-width: 0; }
}

/* size (calendar.js; the choice is kept per browser; the overview's calendar is always large) */
.mnt-cal { container: mntcal / inline-size; }
.mnt-cal-bar { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin-bottom: 10px; }
.mnt-cal-bar .mnt-cal-legend { margin-bottom: 0; flex: 1 1 auto; }
.mnt-cal-opts { display: flex; flex-wrap: wrap; gap: 6px 10px; margin-left: auto; }
.mnt-cal-opts .btn-pair { flex: none; }
.mnt-cal-opts .btn[aria-pressed='true'] { background: var(--brand-wash); border-color: var(--brand); color: var(--brand-quiet); position: relative; z-index: 1; }

/* small: a compact month with a dot per item instead of printer names */
.mnt-cal[data-size='small'] { max-width: 540px; }   /* little room, wherever it sits */
.mnt-cal[data-size='small'] .mnt-cal-grid { gap: 3px; }
.mnt-cal[data-size='small'] .mnt-cal-cell { min-height: 46px; gap: 2px; padding: 7px 4px 4px; }
.mnt-cal[data-size='small'] .mnt-cal-n { font-size: 12px; }
.mnt-cal-dots { display: flex; flex-wrap: wrap; align-items: center; gap: 3px; min-width: 0; padding-left: 2px; }
.mnt-cal-dot { flex: none; width: 8px; height: 8px; border-radius: 50%; background: var(--c-line); }
.mnt-cal-dot[data-st='done'] { background: var(--c-bg); box-shadow: inset 0 0 0 1.5px var(--c-line); }
.mnt-cal-dots .mnt-cal-more { padding-left: 0; font-size: 10.5px; line-height: 1; }

/* large: taller days, up to eight printers, slightly larger text */
.mnt-cal[data-size='large'] .mnt-cal-cell { min-height: 168px; }
.mnt-cal[data-size='large'] .mnt-cal-n { font-size: 13.5px; }
.mnt-cal[data-size='large'] .mnt-cal-pill, .mnt-cal[data-size='large'] .mnt-cal-more { font-size: 12.5px; }

/* a narrow card: smaller cells and pills that truncate, never a sideways scroll */
@container mntcal (max-width: 540px) {
  .mnt-cal-grid { gap: 3px; }
  .mnt-cal-wd { padding: 0 2px; font-size: 10px; letter-spacing: 0; }
  .mnt-cal-cell { padding: 7px 3px 3px; }
  .mnt-cal-n { min-width: 18px; padding: 0 3px; font-size: 11.5px; }
  .mnt-cal-pill { padding: 0 3px; border-left-width: 2px; font-size: 10.5px; line-height: 1.5; }
  .mnt-cal-more { padding-left: 2px; font-size: 10.5px; }
  .mnt-cal[data-size='large'] .mnt-cal-cell { min-height: 150px; }
  .mnt-cal[data-size='large'] .mnt-cal-pill, .mnt-cal[data-size='large'] .mnt-cal-more { font-size: 10.5px; }
  .mnt-cal[data-size='large'] .mnt-cal-n { font-size: 12px; }
}

@media (max-width: 699px) { .mnt-cal-opts { display: none; } }   /* the phone shows the agenda: nothing to size */

/* the day dialog */
.mnt-cal-items { list-style: none; margin: 0; padding: 0; }
.mnt-cal-item {
  display: flex; align-items: center; justify-content: space-between; gap: 10px; width: 100%; padding: 9px 8px 9px 12px; margin: 0 0 6px;
  text-align: left; font: inherit; font-size: 13.5px; color: var(--ink); cursor: pointer;
  background: var(--panel); border: 1px solid var(--line); border-left: 4px solid var(--c-line); border-radius: var(--radius-sm);
}
.mnt-cal-item:hover { background: var(--panel2); }
.mnt-cal-item:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-cal-item-main { min-width: 0; overflow-wrap: anywhere; }
.mnt-cal-item-main b { font-weight: 600; }

/* schedule editor (admins) */
.mnt-sched-bar { display: flex; justify-content: flex-end; margin-bottom: 10px; }
.mnt-sched-admin { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 10px; }

/* --- service visits (visits.js): the printer's Service visits section ----------- */
.mnt-visit-bar { align-items: center; }
.mnt-visit-title { display: inline-flex; align-items: center; gap: 6px; min-width: 0; font-weight: 600; font-size: 14px; overflow-wrap: anywhere; }
.mnt-visit-title svg { width: 16px; height: 16px; flex: none; color: var(--brand-quiet); }
.mnt-visit[data-vstate='overdue'] { border-left: 4px solid var(--warn); }
.mnt-visit[data-vstate='due_soon'] { border-left: 4px solid var(--caution); }
.mnt-visit.is-cancelled { background: var(--panel2); box-shadow: none; }
.mnt-visit.is-cancelled .mnt-visit-title, .mnt-visit.is-cancelled .mnt-rec-meta { color: var(--muted); }
.mnt-visit.is-cancelled .mnt-visit-title { text-decoration: line-through; text-decoration-color: var(--line2); }
.mnt-visit.is-cancelled .mnt-visit-title svg { color: var(--muted); }
.mnt-visit-report a { display: inline-flex; align-items: center; gap: 5px; overflow-wrap: anywhere; }
.mnt-visit-report svg { width: 14px; height: 14px; flex: none; }
.mnt-visit-acts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
@media (max-width: 559px) {
  .mnt-visit .mnt-rec-when { margin-left: 0; flex-basis: 100%; }
  .mnt-visit-acts .btn { flex: 1 1 auto; }
}

/* service visits on the calendar: brand colours while planned, a status colour once due soon, overdue or done */
:is(.mnt-cal, .mnt-cal-items) [data-st='visit'] { --c-bg: var(--brand-wash); --c-line: var(--brand); --c-text: var(--brand-quiet); }
.mnt-cal-vpill { border-left-style: double; border-left-width: 4px; }
.mnt-cal-vpill svg { display: inline-block; width: 11px; height: 11px; margin-right: 3px; vertical-align: -1px; }
.mnt-cal-vcount svg { width: 11px; height: 11px; flex: none; }
.mnt-cal-vcount { display: inline-flex; align-items: center; gap: 4px; }
.mnt-cal-vkey { display: inline-flex; align-items: center; gap: 5px; }
.mnt-cal-vkey svg { width: 12px; height: 12px; padding: 1px; border-radius: 3px; background: var(--c-bg); color: var(--c-text); box-shadow: inset 0 0 0 1.5px var(--c-line); box-sizing: content-box; }
.mnt-cal-dot.is-visit { border-radius: 2px; }
.mnt-cal-vitem .mnt-cal-item-main b { display: inline-flex; align-items: center; gap: 5px; }
.mnt-cal-vitem .mnt-cal-item-main svg { width: 14px; height: 14px; flex: none; color: var(--c-text); }
@container mntcal (max-width: 540px) {
  .mnt-cal-vpill { border-left-width: 3px; }
  .mnt-cal-vpill svg { width: 9px; height: 9px; margin-right: 2px; }
}

/* Planned services: the "Done by" switch. */
.mnt-vis-prov { border: 0; padding: 0; margin: 0 0 14px; display: flex; flex-wrap: wrap; gap: 6px 18px; }
.mnt-vis-legend { font-size: 13px; font-weight: 600; margin-bottom: 6px; padding: 0; width: 100%; }
.mnt-vis-prov .tc-tick { margin: 0; }

/* --- parts log (parts.js): the printer's Parts tab and the overview's Parts view --- */
.mnt-part-bar { align-items: center; gap: 10px; flex-wrap: wrap; }
.mnt-part-hint { margin: 0 auto 0 0; font-size: 12.5px; color: var(--muted); }
.mnt-part-title { display: inline-flex; align-items: center; flex-wrap: wrap; gap: 4px 6px; min-width: 0; font-weight: 600; font-size: 14px; overflow-wrap: anywhere; }
.mnt-part-title svg { width: 16px; height: 16px; flex: none; color: var(--brand-quiet); }
.mnt-part-title .linkish { font-weight: 600; font-size: 14px; }
.mnt-part-no { font-weight: 400; font-size: 12.5px; color: var(--muted); }
.mnt-part-type { display: inline-block; padding: 0 7px; border-radius: 99px; background: var(--brand-wash); color: var(--brand-quiet); font-size: 12px; font-weight: 600; }
.mnt-part-pending { color: var(--caution-text); font-weight: 600; }
.mnt-part-note { white-space: pre-wrap; overflow-wrap: anywhere; }
.mnt-part[data-pstate='late'] { border-left: 4px solid var(--warn); }
.mnt-part[data-pstate='needed'] { border-left: 4px solid var(--caution); }
.mnt-part.is-cancelled { background: var(--panel2); box-shadow: none; }
.mnt-part.is-cancelled .mnt-part-name { color: var(--muted); text-decoration: line-through; text-decoration-color: var(--line2); }
@media (max-width: 559px) {
  .mnt-part .mnt-rec-when { margin-left: 0; flex-basis: 100%; }
  .mnt-part-acts .btn { flex: 1 1 auto; }
}

/* the overview's parts chip, per printer */
.mnt-partchip {
  display: inline-flex; align-items: center; gap: 4px; padding: 0 7px; border-radius: 99px;
  background: var(--t-soft); color: var(--t); font-size: 11.5px; font-weight: 700; white-space: nowrap;
}
.mnt-partchip svg { width: 12px; height: 12px; flex: none; }

/* the Parts view: its own toolbar; the printer filters stand down as in the calendar */
.mnt-over[data-mnt-view='parts'] .mnt-filters:not(.mnt-pq-filters) > :not(.mnt-layout) { display: none; }
.mnt-pq-all .mini-h { margin-top: 0; }

/* the add form: suggestions under the description */
.mnt-sugg-box:empty { display: none; }
.mnt-sugg-h { margin: 8px 0 4px; font-size: 12px; color: var(--muted); }
.mnt-sugg { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 4px; max-height: 220px; overflow: auto; }
.mnt-sugg-item {
  display: flex; flex-direction: column; align-items: flex-start; gap: 1px; width: 100%; min-height: 40px; padding: 6px 10px; text-align: left;
  background: var(--panel); border: 1px solid var(--line); border-radius: var(--radius-xs, 6px); color: var(--ink); font: inherit; font-size: 13.5px; cursor: pointer;
}
.mnt-sugg-item:hover { border-color: var(--brand); background: var(--brand-wash); }
.mnt-sugg-item:focus-visible { outline: none; box-shadow: var(--ring); }
.mnt-sugg-main { overflow-wrap: anywhere; }
.mnt-sugg-main .mono { color: var(--muted); font-size: 12.5px; }
.mnt-sugg-sub { font-size: 12px; color: var(--muted); }
.mnt-pq-status { border: 0; padding: 0; margin: 0 0 14px; }
.mnt-pq-status .mnt-seg { flex-wrap: wrap; }
