/* Missing Subs — layout on top of Carbon g100 tokens (carbon-theme-g100.css).
   Shell idioms cloned from performance/static/app.css; mint (#b6ffb8 family)
   echoes the PDF's signature accent, used for signal only. */

@font-face {
  font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 300;
  src: url('/static/vendor/plex/IBMPlexSans-Light.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 400;
  src: url('/static/vendor/plex/IBMPlexSans-Regular.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 500;
  src: url('/static/vendor/plex/IBMPlexSans-Medium.woff2') format('woff2');
}
@font-face {
  font-family: 'IBM Plex Sans'; font-style: normal; font-weight: 600;
  src: url('/static/vendor/plex/IBMPlexSans-SemiBold.woff2') format('woff2');
}

* { box-sizing: border-box; }
html { height: 100%; }
body {
  margin: 0; min-height: 100%;
  background: var(--cds-background, #161616);
  color: var(--cds-text-primary, #f4f4f4);
  font: 14px/1.45 'IBM Plex Sans', system-ui, sans-serif;
  font-variant-numeric: tabular-nums;
}
a { color: var(--cds-link-primary, #78a9ff); text-decoration: none; }
a:hover { text-decoration: underline; }
.muted { color: var(--cds-text-helper, #8d8d8d); font-weight: 400; }
.tbl-wrap { overflow-x: auto; }

main { max-width: 1200px; margin: 0 auto; padding: 64px 16px 80px; }

cds-header { position: fixed; top: 0; left: 0; right: 0; z-index: 8000; }

/* header extras (light-dom bits inside cds-header) */
.hdr-right { margin-left: auto; display: flex; align-items: stretch; gap: 4px;
  padding-right: 8px; height: 47px; }
.hdr-logout { margin: 0; display: flex; align-items: stretch; }
.hdr-ghost {
  border: none; background: none; cursor: pointer; font: inherit;
  font-size: 12px; letter-spacing: .16px; padding: 0 16px;
  color: var(--cds-text-secondary, #c6c6c6);
  transition: color .11s, background-color .11s;
}
.hdr-ghost:hover { background: var(--cds-layer-hover-01, #333333); color: var(--cds-text-primary); }
.hdr-ghost:focus-visible { outline: 2px solid var(--cds-focus, #fff); outline-offset: -2px; }

/* run status in the header — dot + text, mirrors performance's sync pill */
.runpill {
  display: inline-flex; align-items: center; gap: 8px; padding: 0 12px;
  font-size: 12px; color: var(--cds-text-secondary, #c6c6c6); white-space: nowrap;
}
.runpill.running { color: var(--cds-text-primary); }
.runpill .dot {
  width: 8px; height: 8px; border-radius: 50%; flex: none;
  background: var(--cds-text-helper, #6f6f6f);
}
.runpill.running .dot { background: var(--cds-support-success, #42be65);
  animation: pulse 1.4s infinite; }
@keyframes pulse { 50% { opacity: .35; } }

/* ── Carbon contextual tokens (see performance/app.css for why) ── */
:root {
  --cds-layer: var(--cds-layer-01);
  --cds-layer-hover: var(--cds-layer-hover-01);
  --cds-layer-active: var(--cds-layer-active-01);
  --cds-layer-selected: var(--cds-layer-selected-01);
  --cds-layer-selected-hover: var(--cds-layer-selected-hover-01);
  --cds-layer-accent: var(--cds-layer-accent-01);
  --cds-layer-accent-hover: var(--cds-layer-accent-hover-01);
  --cds-layer-accent-active: var(--cds-layer-accent-active-01);
  --cds-layer-background: var(--cds-layer-background-01);
  --cds-field: var(--cds-field-01);
  --cds-field-hover: var(--cds-field-hover-01);
  --cds-border-subtle: var(--cds-border-subtle-01);
  --cds-border-subtle-selected: var(--cds-border-subtle-selected-01);
  --cds-border-strong: var(--cds-border-strong-01);
  --cds-border-tile: var(--cds-border-tile-01);
  --cds-layout-size-height-xs: 1.5rem;
  --cds-layout-size-height-sm: 2rem;
  --cds-layout-size-height-md: 2.5rem;
  --cds-layout-size-height-lg: 3rem;
  --cds-layout-size-height-xl: 4rem;
  --cds-layout-size-height-2xl: 5rem;
  --cds-layout-size-height-min: 1.5rem;
  --cds-layout-size-height-max: 5rem;
  --cds-layout-density-padding-inline-min: 0.5rem;
  --cds-layout-density-padding-inline-normal: 1rem;
  --cds-layout-density-padding-inline-max: 1rem;
  /* the PDF's mint, desaturated for on-dark text use */
  --ms-mint: #b6ffb8;
  --ms-mint-dim: #8cdc91;
}
.filter-bar, .card, .kpi-tile {
  --cds-layer: var(--cds-layer-02);
  --cds-layer-hover: var(--cds-layer-hover-02);
  --cds-layer-active: var(--cds-layer-active-02);
  --cds-layer-selected: var(--cds-layer-selected-02);
  --cds-layer-selected-hover: var(--cds-layer-selected-hover-02);
  --cds-layer-accent: var(--cds-layer-accent-02);
  --cds-layer-accent-hover: var(--cds-layer-accent-hover-02);
  --cds-layer-accent-active: var(--cds-layer-accent-active-02);
  --cds-field: var(--cds-field-02);
  --cds-field-hover: var(--cds-field-hover-02);
  --cds-border-subtle: var(--cds-border-subtle-02);
  --cds-border-subtle-selected: var(--cds-border-subtle-selected-02);
  --cds-border-strong: var(--cds-border-strong-02);
}

.page-head { margin: 24px 0 16px; }
.page-head h1 { font-size: 20px; font-weight: 500; margin: 0; }
/* meta tail inside a heading reads as caption, not headline */
.page-head h1 .muted { font-size: 14px; font-weight: 400; }
.page-sub { color: var(--cds-text-secondary); margin: 4px 0 0; font-size: 13px; max-width: 720px; }
.ph-row { display: flex; align-items: center; gap: 16px; justify-content: space-between; flex-wrap: wrap; }

/* filter bar (run controls) */
.filter-bar {
  display: flex; flex-wrap: wrap; gap: 12px 24px; align-items: end;
  padding: 12px 16px; margin-bottom: 16px;
  background: var(--cds-layer-01, #262626);
}
.filter { display: flex; flex-direction: column; gap: 4px; }
.filter-lbl { font-size: 12px; color: var(--cds-text-secondary); }
.filter[hidden] { display: none; }
/* label-less cells (checkboxes, submit) sit on the control baseline */
.filter.nolbl { justify-content: flex-end; padding-bottom: 7px; }
.filter-run { margin-left: auto; padding-bottom: 0; align-self: end; }

/* segmented control (account / payment type / window mode) */
.seg { display: flex; }
.seg-btn {
  border: 1px solid var(--cds-border-strong-01, #6f6f6f); border-left-width: 0;
  background: transparent; color: var(--cds-text-secondary, #c6c6c6);
  height: 32px; padding: 0 14px; cursor: pointer; font: inherit; font-size: 13px;
  transition: background-color .11s, color .11s;
}
.seg-btn:first-child { border-left-width: 1px; }
.seg-btn:hover { background: var(--cds-layer-hover-01, #333333); color: var(--cds-text-primary); }
.seg-btn:focus-visible { outline: 2px solid var(--cds-focus, #fff); outline-offset: -2px; }
.seg-btn.on {
  background: var(--cds-layer-selected-01, #393939); color: var(--cds-text-primary);
  box-shadow: inset 0 -3px 0 var(--cds-border-interactive, #4589ff);
}

/* checkbox (Carbon look, cloned from performance .catpick) */
.catpick { display: inline-flex; align-items: center; gap: 8px 12px; flex-wrap: wrap; }
.catpick label {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; letter-spacing: .32px; color: var(--cds-text-secondary);
  cursor: pointer; white-space: nowrap;
}
.catpick input[type="checkbox"] {
  appearance: none; -webkit-appearance: none;
  width: 16px; height: 16px; margin: 0; flex: none;
  border: 1px solid var(--cds-icon-primary, #f4f4f4); border-radius: 1px;
  background: transparent; cursor: pointer; position: relative;
  transition: background-color .11s, border-color .11s;
}
.catpick input[type="checkbox"]:checked {
  background: var(--cds-icon-primary, #f4f4f4);
  border-color: var(--cds-icon-primary, #f4f4f4);
}
.catpick input[type="checkbox"]:checked::after {
  content: ""; position: absolute; left: 4px; top: 7px;
  width: 8px; height: 4px;
  border-left: 2px solid var(--cds-icon-inverse, #161616);
  border-bottom: 2px solid var(--cds-icon-inverse, #161616);
  transform: translateY(-50%) rotate(-45deg); transform-origin: center;
}
.catpick input[type="checkbox"]:focus-visible {
  outline: 2px solid var(--cds-focus, #fff); outline-offset: 1px;
}

/* number/date/text/time inputs on layer-01 surfaces */
.fld { background: var(--cds-field-02, #393939); border: none;
  border-bottom: 1px solid var(--cds-border-strong-01, #6f6f6f);
  color: var(--cds-text-primary); padding: 11px 16px; font: inherit; outline: none;
  color-scheme: dark; }
.fld::placeholder { color: var(--cds-text-placeholder, #6f6f6f); }
.fld:focus { outline: 2px solid var(--cds-focus, #fff); outline-offset: -2px; }
.fld.sm { height: 32px; padding: 0 12px; font-size: 13px; }
.fld.w-days { width: 76px; }
.fld.w-date { width: 150px; }
.fld.w-time { width: 100px; }
.fld.w-name { width: 200px; }
.fld.w-id { width: 170px; }

/* Carbon select */
select.sel {
  background: var(--cds-field-02, #393939);
  border: none; border-bottom: 1px solid var(--cds-border-strong-01, #6f6f6f);
  color: var(--cds-text-primary); border-radius: 0;
  padding: 0 32px 0 16px; font-size: 14px; letter-spacing: .16px;
  font-family: inherit; height: 32px;
  appearance: none; -webkit-appearance: none; cursor: pointer;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%23f4f4f4' stroke-width='1.4' fill='none'/%3E%3C/svg%3E");
  background-repeat: no-repeat; background-position: right 12px center;
  color-scheme: dark; transition: background-color .11s;
}
select.sel:hover { background-color: var(--cds-field-hover-02, #474747); }
select.sel:focus { outline: 2px solid var(--cds-focus, #fff); outline-offset: -2px; }

/* Carbon button set */
.btn {
  display: inline-flex; align-items: center;
  border: 1px solid var(--cds-border-strong-01, #6f6f6f); background: transparent;
  color: var(--cds-text-primary);
  height: 32px; padding: 0 15px; border-radius: 0;
  cursor: pointer; font-size: 14px; letter-spacing: .16px;
  font-family: inherit; white-space: nowrap;
  transition: background-color .11s, color .11s, border-color .11s;
  text-decoration: none;
}
.btn:hover { background: var(--cds-layer-hover-01, #333333); color: var(--cds-text-primary); text-decoration: none; }
.btn:active { background: var(--cds-layer-active-01, #525252); }
.btn:focus-visible { outline: 2px solid var(--cds-focus, #fff); outline-offset: -2px; }
.btn:disabled { color: var(--cds-text-disabled, #6f6f6f); border-color: var(--cds-border-disabled, #525252);
  cursor: default; background: transparent; }
.btn.primary { background: var(--cds-button-primary, #0f62fe); border-color: var(--cds-button-primary, #0f62fe); color: #fff; }
.btn.primary:hover { background: var(--cds-button-primary-hover, #0353e9); border-color: var(--cds-button-primary-hover, #0353e9); }
.btn.primary:active { background: var(--cds-button-primary-active, #002d9c); }
.btn.primary:disabled { background: var(--cds-button-disabled, #525252); border-color: var(--cds-button-disabled, #525252); color: var(--cds-text-on-color-disabled, #8d8d8d); }
.btn.ghost { background: transparent; border-color: transparent; color: var(--cds-link-primary, #78a9ff); }
.btn.ghost:hover { background: var(--cds-layer-hover-01, #333333); color: var(--cds-link-primary-hover, #a6c8ff); }
.btn.ghost:disabled { color: var(--cds-text-disabled); background: transparent; border-color: transparent; }
.btn.sm { height: 32px; padding: 0 12px; font-size: 13px; }
.btn.danger { color: var(--cds-text-error, #ff8389); }
.btn.danger:hover { background: var(--cds-support-error-inverse, #da1e28); color: #fff; }

/* action-button rows (run detail header, latest-run card) */
.actions { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
.actions form { margin: 0; display: inline-flex; }

/* flash + cards */
.flash { padding: 10px 16px; margin: 0 0 12px; font-size: 13px;
  display: flex; align-items: center; gap: 12px; flex-wrap: wrap;
  background: var(--cds-layer-01); border-left: 3px solid var(--cds-support-success); }
.flash.err { border-left-color: var(--cds-support-error); }
.flash[hidden] { display: none; }
.card { background: var(--cds-layer-01, #262626); padding: 16px; }
.card + .card { margin-top: 16px; }
.card h2 { font-size: 14px; font-weight: 600; margin: 0 0 12px; }

/* KPI tiles */
.kpis { display: grid; grid-template-columns: repeat(4, 1fr); gap: 1px; margin-bottom: 24px; }
.kpi-tile { background: var(--cds-layer-01); padding: 16px; }
.kpi-k { font-size: 12px; color: var(--cds-text-secondary); }
.kpi-v { font-size: 28px; font-weight: 400; margin-top: 4px; letter-spacing: 0; }
.kpi-d { font-size: 12px; margin-top: 2px; color: var(--cds-text-helper); min-height: 16px; }
.kpi-tile.hero { background: var(--ms-mint); }
.kpi-tile.hero .kpi-k, .kpi-tile.hero .kpi-v, .kpi-tile.hero .kpi-d { color: #141614; }

/* progress area on the dashboard */
.prog { margin: 0 0 16px; padding: 12px 16px; background: var(--cds-layer-01); }
.prog[hidden] { display: none; }
.prog-line { display: flex; align-items: baseline; gap: 12px; font-size: 13px; }
.prog-line b { font-weight: 600; }
.prog-sub { color: var(--cds-text-helper); font-size: 12px; }
.prog-track { height: 3px; background: var(--cds-layer-02, #393939); margin-top: 10px; }
.prog-track i { display: block; height: 100%; width: 0;
  background: var(--ms-mint); transition: width .3s; }
.prog-track.indet i { width: 30%; animation: indet 1.2s infinite linear; }
@keyframes indet { 0% { margin-left: -30%; } 100% { margin-left: 100%; } }

/* data tables */
table.tbl { border-collapse: collapse; width: 100%; font-size: 13px; }
.tbl th, .tbl td { padding: 7px 12px; text-align: left;
  border-bottom: 1px solid var(--cds-border-subtle-01, #393939); }
.tbl thead th { background: var(--cds-layer-02, #393939); color: var(--cds-text-secondary);
  font-weight: 500; font-size: 12px; letter-spacing: .32px; }
.tbl tbody tr:hover td { background: var(--cds-layer-hover-01, #333333); }
.tbl tbody tr.rowlink { cursor: pointer; }
.tbl .nowrap { white-space: nowrap; }
.tbl th.num, .tbl td.num { text-align: right; }
.tbl .ellip { max-width: 260px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* miss-rate inline bar (echoes the PDF's) */
.rate { display: inline-flex; align-items: center; gap: 8px; }
.rate-track { width: 90px; height: 4px; background: var(--cds-layer-02, #393939); flex: none; }
.rate-track i { display: block; height: 100%; background: var(--ms-mint); }
.rate-v { font-variant-numeric: tabular-nums; min-width: 46px; text-align: right; }
tr.crit td:first-child { box-shadow: inset 3px 0 0 var(--ms-mint); }

/* status tags */
.tag { display: inline-block; padding: 1px 8px; border-radius: 24px;
  font-size: 12px; letter-spacing: .16px; white-space: nowrap; }
.tag.ok { background: var(--cds-tag-background-green, #044317); color: var(--cds-tag-color-green, #6fdc8c); }
.tag.error { background: var(--cds-tag-background-red, #520408); color: var(--cds-tag-color-red, #ff8389); }
.tag.running { background: var(--cds-tag-background-blue, #0043ce); color: var(--cds-tag-color-blue, #d0e2ff); }
.tag.skipped, .tag.off { background: var(--cds-tag-background-gray, #393939); color: var(--cds-tag-color-gray, #c6c6c6); }
.tag.mint { background: transparent; border: 1px solid var(--ms-mint-dim); color: var(--ms-mint); }

/* country pill (mint outline, like the PDF's) */
.cc-pill { display: inline-block; min-width: 34px; text-align: center;
  border: 1px solid var(--ms-mint-dim); color: var(--ms-mint);
  border-radius: 2px; padding: 0 5px; font-size: 11px; letter-spacing: .5px;
  margin-right: 8px; }
.cc-pill.unk { border-color: var(--cds-border-subtle-01); color: var(--cds-text-helper); }

/* schedules form grid */
.sched-form { display: flex; flex-wrap: wrap; gap: 12px 20px; align-items: end; }
.sched-form .filter { min-width: 0; }
.sched-actions { white-space: nowrap; }
.sched-actions .btn + .btn { margin-left: 4px; }
.wk-only[hidden], .row-hint[hidden] { display: none; }

/* settings */
.set-row { display: flex; align-items: center; gap: 16px; flex-wrap: wrap;
  padding: 8px 0; border-bottom: 1px solid var(--cds-border-subtle-01, #393939); }
.set-row:last-child { border-bottom: none; }
.set-lbl { font-size: 13px; color: var(--cds-text-secondary); min-width: 130px; }
.set-row .muted { overflow-wrap: anywhere; }

details.note { margin-top: 12px; }
details.note summary {
  cursor: pointer; font-size: 12px; letter-spacing: .32px;
  color: var(--cds-text-helper);
}
details.note summary:hover { color: var(--cds-text-primary); }
.note-body {
  margin: 8px 0 0; padding: 12px 16px;
  color: var(--cds-text-secondary); line-height: 1.6; max-width: 82ch;
  background: var(--cds-layer-02, #393939); font-size: 13px;
}
.note-body p { margin: 0 0 8px; }
.note-body p:last-child { margin-bottom: 0; }
.note-body b { color: var(--cds-text-primary); }

/* all-clear block */
.all-clear { padding: 32px; text-align: center; }
.all-clear b { display: block; font-size: 20px; font-weight: 500; color: var(--ms-mint); }
.all-clear span { color: var(--cds-text-secondary); font-size: 13px; }

/* ── login ── */
.login-body { display: grid; place-items: center; min-height: 100vh; margin: 0;
  background: var(--cds-background, #161616); color: var(--cds-text-primary);
  font: 14px/1.45 'IBM Plex Sans', system-ui, sans-serif; }
.login-card { width: min(340px, calc(100vw - 32px));
  background: var(--cds-layer-01); padding: 32px;
  display: flex; flex-direction: column; gap: 12px; }
.login-card h1 { margin: 0; font-size: 22px; font-weight: 500; }
.login-err { color: var(--cds-support-error); font-size: 13px; margin: 0; }
.fld-label { font-size: 12px; color: var(--cds-text-secondary); }
.btn-primary {
  background: var(--cds-button-primary, #0f62fe);
  color: var(--cds-text-on-color, #fff);
  border: 1px solid transparent; cursor: pointer;
  font: inherit; font-size: 14px; text-align: left;
  padding: 14px 60px 14px 16px; min-height: 48px;
}
.btn-primary:hover { background: var(--cds-button-primary-hover, #0353e9); }
.btn-primary:active { background: var(--cds-button-primary-active, #002d9c); }
.btn-primary:focus-visible { outline: 2px solid var(--cds-focus, #fff); outline-offset: -3px; }

/* responsive shell (Carbon: below 1056px the header nav hides) */
.side-drawer {
  position: fixed; top: 47px; left: 0; bottom: 0; z-index: 7999;
  width: 256px; padding: 8px 0; overflow-y: auto;
  background: var(--cds-layer-01, #262626);
  box-shadow: 2px 0 6px rgba(0, 0, 0, .5);
  transform: translateX(-105%); visibility: hidden;
  transition: transform .15s, visibility .15s;
}
.side-drawer.open { transform: translateX(0); visibility: visible; }
.sd-link {
  display: flex; align-items: center; height: 44px; padding: 0 16px;
  border-left: 3px solid transparent;
  color: var(--cds-text-secondary, #c6c6c6); font-size: 14px;
  text-decoration: none;
}
.sd-link:hover { background: var(--cds-layer-hover-01, #333333);
  color: var(--cds-text-primary); text-decoration: none; }
.sd-link.on {
  background: var(--cds-layer-selected-01, #393939);
  border-left-color: var(--cds-border-interactive, #4589ff);
  color: var(--cds-text-primary); font-weight: 600;
}
@media (min-width: 1056px) {
  .side-drawer { display: none; }
}

@media (max-width: 900px) {
  .kpis { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 760px) {
  main { padding-left: 12px; padding-right: 12px; }
  .filter-bar { padding: 10px 12px; gap: 10px 16px; }
  .page-head { margin: 16px 0 12px; }
  .btn, .btn.sm, select.sel, .fld.sm, .seg-btn { height: 44px; }
  .kpi-tile { padding: 12px; }
  .kpi-v { font-size: 24px; }
  /* the primary action gets the full row on phones */
  .filter-run { margin-left: 0; width: 100%; }
  .filter-run .btn { width: 100%; justify-content: center; }
  /* payment-type seg can outgrow 320px screens — scroll, don't squash */
  .filter { max-width: 100%; overflow-x: auto; scrollbar-width: none; }
  .filter::-webkit-scrollbar { display: none; }
  .filter .seg { min-width: max-content; }
}
@media (max-width: 480px) {
  .hdr-ghost { padding: 0 8px; }
  .hdr-right { gap: 0; padding-right: 4px; }
  .runpill .pill-txt { display: none; }  /* dot stays — it IS the status */
  .runpill { padding: 0 8px; }
}
