/*
 * Portal stylesheet.
 *
 * Every value here comes from design.md. Nothing is sampled and nothing is
 * invented. Where design.md has no answer, it is reported rather than filled in.
 *
 * Teal is the primary accent and is used as one, per amendment A19. The rule is
 * what a person does with the color, not the contrast number on its own: teal
 * is prohibited as small text on light and as a hairline carrying a visible
 * edge, and correct as a filled surface with dark text on it or as any shape or
 * indicator a person perceives rather than reads. Links stay Obsidian, because a
 * link is small text.
 *
 * This is the first web surface, so the component set below is the one the rest
 * of Phase 1 reuses: buttons, inputs, tables, tags, empty states, focus states.
 */

/* --- Type ---------------------------------------------------------------- */
/* The whole system: Medium, Regular, Light, and the italic of each. Medium is
 * the heaviest weight in the product. There is no Bold. */
@font-face {
  font-family: 'TT Hoves';
  src: url('/portal/fonts/tt-hoves-300.woff2') format('woff2');
  font-weight: 300;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Hoves';
  src: url('/portal/fonts/tt-hoves-300-italic.woff2') format('woff2');
  font-weight: 300;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: 'TT Hoves';
  src: url('/portal/fonts/tt-hoves-400.woff2') format('woff2');
  font-weight: 400;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Hoves';
  src: url('/portal/fonts/tt-hoves-400-italic.woff2') format('woff2');
  font-weight: 400;
  font-style: italic;
  font-display: swap;
}
@font-face {
  font-family: 'TT Hoves';
  src: url('/portal/fonts/tt-hoves-500.woff2') format('woff2');
  font-weight: 500;
  font-style: normal;
  font-display: swap;
}
@font-face {
  font-family: 'TT Hoves';
  src: url('/portal/fonts/tt-hoves-500-italic.woff2') format('woff2');
  font-weight: 500;
  font-style: italic;
  font-display: swap;
}

/* --- Tokens, verbatim from design.md ------------------------------------- */
:root {
  --color-steel-fog: #6b767e;
  --color-tidal-teal: #00d1a7;
  --color-chalk-cloud: #ffffff;
  --color-frost-field: #f4f7fa;
  --color-pewter-mist: #cdd7df;
  --color-obsidian-core: #0a0d11;
  --color-midnight-slate: #0b0c10;
  --color-cinnabar: #a3261b;
  --color-warning: #8a4b00;
  --surface-warning: rgba(196, 112, 0, 0.12);

  --font-tt-hoves: 'TT Hoves', ui-sans-serif, system-ui, -apple-system,
    BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;

  --text-caption: 14px;      --leading-caption: 1.4;
  --text-body-sm: 14px;      --leading-body-sm: 1.5;
  --text-body: 16px;         --leading-body: 1.5;
  --text-heading-sm: 20px;   --leading-heading-sm: 1.4;
  --text-heading: 24px;      --leading-heading: 1.4;
  --text-heading-lg: 28px;   --leading-heading-lg: 1.2;
  --text-display-sm: 32px;   --leading-display-sm: 1.2;
  --text-figure: 32px;       --leading-figure: 1.15;
  --text-figure-lg: 48px;    --leading-figure-lg: 1.05;
  --text-display: 36px;      --leading-display: 1.1;
  --text-micro: 14px;        --leading-micro: 1.4;    --tracking-micro: 0.04em;

  --font-weight-light: 300;
  --font-weight-regular: 400;
  --font-weight-medium: 500;

  --spacing-8: 8px;    --spacing-16: 16px;  --spacing-24: 24px;
  --spacing-32: 32px;  --spacing-40: 40px;  --spacing-48: 48px;
  --spacing-64: 64px;  --spacing-80: 80px;

  --card-padding: 24px;
  --element-gap: 24px;
  --section-gap-working: 32px;
  --sidebar-width: 240px;
  --sheet-width: 520px;
  --row-height: 48px;
  --status-size: 8px;

  --radius-pill: 9999px;
  --radius-tags: 6px;
  --radius-cards: 12px;
  --radius-inputs: 8px;
  --radius-buttons: 8px;
  --radius-surface: 20px;

  --shadow-card-hover: 0 0 0 1px #cdd7df;

  --duration-instant: 140ms;
  --easing-instant: cubic-bezier(0.33, 1, 0.68, 1);
  --duration-standard: 300ms;
  --easing-standard: cubic-bezier(0.25, 1, 0.5, 1);
  --duration-expressive: 450ms;
  --easing-expressive: cubic-bezier(0.16, 1, 0.3, 1);
}

/* --- Reset --------------------------------------------------------------- */
*, *::before, *::after { box-sizing: border-box; }
html, body { margin: 0; padding: 0; }

/* The browser's own [hidden] rule is display:none at user-agent weight, which
 * any author rule that sets display beats. .btn and .picker both do, so
 * `element.hidden = true` set the attribute and changed nothing on screen:
 * Transactions showed its Load more button with nothing left to load, and its
 * terminal filter with only one terminal to choose. A dead control, arrived at
 * by accident rather than by shipping ahead of its function. */
[hidden] { display: none !important; }

body {
  font-family: var(--font-tt-hoves);
  font-size: var(--text-body);
  line-height: var(--leading-body);
  font-weight: var(--font-weight-regular);
  color: var(--color-obsidian-core);
  background: var(--color-chalk-cloud);
  -webkit-font-smoothing: antialiased;
}

/* --- Focus --------------------------------------------------------------- */
/* Teal, and 2px rather than a hairline. A focus ring is a shape a person
 * perceives, not text they read, which is the distinction that governs where
 * teal is allowed. The offset keeps it clear of the control's own border so the
 * ring reads as a ring rather than a thickened edge. */
:where(a, button, input, select, textarea, [tabindex]):focus-visible {
  outline: 2px solid var(--color-tidal-teal);
  outline-offset: 2px;
  border-radius: var(--radius-inputs);
}

/* --- Buttons ------------------------------------------------------------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--spacing-8);
  min-height: 44px;
  padding: 0 var(--spacing-24);
  border: 1px solid transparent;
  border-radius: var(--radius-buttons);
  font: inherit;
  font-weight: var(--font-weight-medium);
  cursor: pointer;
  /* A button that is an anchor still reads as a button, not a link. */
  text-decoration: none;
  /* Color only, and at the instant token. A button a person presses hundreds
   * of times a day is the wrong place for movement. */
  transition: background-color var(--duration-instant) var(--easing-instant),
              border-color var(--duration-instant) var(--easing-instant),
              color var(--duration-instant) var(--easing-instant);
}
.btn:disabled { opacity: 0.5; cursor: not-allowed; }

/* Teal marks the single action that moves the user forward on this screen, and
 * nothing else. At most one per screen, and a screen with no forward action has
 * none. Teal as a filled surface carrying Obsidian text measures 9.9:1, which is
 * why the accent works here and not as text on light.
 *
 * The three classes are named for the job rather than the color, because the
 * rule is about which action this is, not which paint it takes. */
.btn-forward {
  background: var(--color-tidal-teal);
  color: var(--color-obsidian-core);
}
.btn-forward:hover:not(:disabled) {
  background: color-mix(in srgb, var(--color-tidal-teal) 88%, var(--color-obsidian-core));
}

.btn-standard {
  background: var(--color-obsidian-core);
  color: var(--color-chalk-cloud);
}
.btn-standard:hover:not(:disabled) {
  background: color-mix(in srgb, var(--color-obsidian-core) 88%, var(--color-chalk-cloud));
}

.btn-block { width: 100%; }

/* Destructive actions carry finality and the color says so. Cinnabar as text
 * and as the border, never as a fill behind white text, per its own rules. */
.btn-danger {
  background: var(--color-chalk-cloud);
  color: var(--color-cinnabar);
  border-color: var(--color-cinnabar);
}
.btn-danger:hover:not(:disabled) { background: var(--color-frost-field); }

/* --- Inputs -------------------------------------------------------------- */
.field { display: flex; flex-direction: column; gap: var(--spacing-8); }

.label {
  font-size: var(--text-body-sm);
  line-height: var(--leading-body-sm);
  font-weight: var(--font-weight-medium);
}

.input {
  min-height: 44px;
  padding: 0 var(--spacing-16);
  font: inherit;
  color: var(--color-obsidian-core);
  background: var(--color-frost-field);
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-inputs);
  transition: border-color var(--duration-instant) var(--easing-instant);
}
.input::placeholder { color: var(--color-steel-fog); }
.input:hover { border-color: var(--color-steel-fog); }

.hint {
  font-size: var(--text-caption);
  line-height: var(--leading-caption);
  color: var(--color-steel-fog);
}

/* Errors are inline and never in an alert. Cinnabar, per design.md, and never
 * the only signal: the message itself carries the meaning for anyone who cannot
 * see the color.
 *
 * Two things here are deliberate. margin: 0 because a bare <p> keeps the
 * browser's own 14px margins, and the reset only clears html and body. And
 * :empty collapses the element entirely rather than reserving a line for it:
 * reserving left 81px between the password field and the button, which reads as
 * a missing element rather than as space. The error appears on submit, which is
 * a moment the layout is allowed to move. */
.error {
  margin: 0;
  font-size: var(--text-body-sm);
  line-height: var(--leading-body-sm);
  color: var(--color-cinnabar);
}
.error:empty { display: none; }

/* A per-field message, quieter than the form-level one because it sits beside
 * the thing it is about. Cinnabar, and never on its own: the sentence says what
 * is wrong. */
.field-error {
  margin: 0;
  font-size: var(--text-caption);
  line-height: var(--leading-caption);
  color: var(--color-cinnabar);
}
.field-error:empty { display: none; }
.input[aria-invalid='true'] { border-color: var(--color-cinnabar); }

/* --- Cards --------------------------------------------------------------- */
.card {
  background: var(--color-chalk-cloud);
  border-radius: var(--radius-cards);
  padding: var(--card-padding);
  box-shadow: var(--shadow-card-hover);
}

/* --- Tags ---------------------------------------------------------------- */
.tag {
  display: inline-flex;
  align-items: center;
  padding: 2px var(--spacing-8);
  border-radius: var(--radius-tags);
  font-size: var(--text-caption);
  line-height: var(--leading-caption);
  font-weight: var(--font-weight-medium);
  background: var(--color-frost-field);
  color: var(--color-steel-fog);
  border: 1px solid var(--color-pewter-mist);
}
/* Teal as a fill carrying dark text is 9.9:1 and approved. Teal as text on a
 * light surface is 2.0:1 and is never used. */
.tag-live {
  background: var(--color-tidal-teal);
  color: var(--color-obsidian-core);
  border-color: transparent;
}

/* --- Status indicators --------------------------------------------------- */
/* A dot is a shape, so it carries teal. The word beside it carries the meaning
 * for anyone who does not see color, which is why the dot never appears alone. */
.status { display: inline-flex; align-items: center; gap: var(--spacing-8); }
.status-dot {
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  background: var(--color-steel-fog);
  flex: none;
}
.status-online .status-dot { background: var(--color-tidal-teal); }

/* --- Tables -------------------------------------------------------------- */
/* Fixed, so the columns are the ones declared rather than the ones the content
 * happens to negotiate. Under auto layout every column here is a control with
 * its own intrinsic width, the excess was shared out among all nine, and the
 * product name, the only column with something to say, settled at 130px at
 * 1440 while the actions column took 248. Measured, not guessed. Fixed layout
 * gives the declared widths to the controls and every remaining pixel to the
 * one column with width: auto, which is the name. */
.table { width: 100%; border-collapse: collapse; table-layout: fixed; min-width: 1080px; }
/* The name is the auto column: no width, so it takes what the others leave. */
.table .cell-product { width: auto; min-width: 0; }
.table .cell-handle { width: 40px; }
.table .cell-thumb { width: 64px; }
.table .cell-slot { width: 130px; }
.table .cell-price { width: 124px; }
.table .cell-stock { width: 104px; }
.table .cell-lowstock { width: 116px; }
.table .cell-active { width: 84px; }
.table .cell-actions { width: 240px; }

.table th, .table td {
  text-align: left;
  padding: var(--spacing-8) var(--spacing-16);
  border-bottom: 1px solid var(--color-pewter-mist);
}
.table tbody td { height: var(--row-height); }
/* Column headers take the micro role, the same as every .tx-head on the
 * grid-built tables. This page is a real <table> because its rows carry
 * inline controls and a drag handle, not because it is a different kind of
 * table. */
.table th {
  font-size: var(--text-micro);
  line-height: var(--leading-micro);
  letter-spacing: var(--tracking-micro);
  text-transform: uppercase;
  font-weight: var(--font-weight-medium);
  color: var(--color-steel-fog);
  height: 40px;
}
.table tbody tr:last-child td { border-bottom: none; }
/* Numerals line up on the right, and the price is the column the eye lands on. */
.table .cell-price, .table .cell-stock { text-align: right; }
.table .cell-actions { white-space: nowrap; text-align: right; }
.table .cell-price .price-edit { justify-content: flex-end; }
.table .cell-price input, .table .cell-stock input { text-align: right; }
.table td.cell-price { font-weight: var(--font-weight-medium); }
/* No hover-scale, no row highlight on load. Section 7.5. */

/* --- Empty states -------------------------------------------------------- */
.empty {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-8);
  padding: var(--spacing-64) var(--spacing-24);
  text-align: center;
}
.empty p { margin: 0; color: var(--color-steel-fog); max-width: 46ch; }

/* --- Auth layout --------------------------------------------------------- */
.auth {
  min-height: 100dvh;
  display: grid;
  place-items: center;
  padding: var(--spacing-24);
}
.auth-card { width: 100%; max-width: 440px; }
/* design.md's Onboarding section: the title is left aligned at the reading
 * measure and carries the Frame section's hairline rule, the way a working
 * surface names a page. It was centered over a paragraph, which is the generic
 * sign-in pattern and read as one on every other product too. There is no
 * paragraph under it now, so there is nothing for a centered headline to sit
 * over. */
.auth-card h1 {
  margin: 0 0 var(--spacing-24);
  padding-bottom: var(--spacing-16);
  border-bottom: 1px solid var(--color-pewter-mist);
  font-size: var(--text-heading-lg);
  line-height: var(--leading-heading-lg);
  font-weight: var(--font-weight-medium);
  text-align: left;
}
/* Left with everything else. Only a status line uses this now, the confirmation
 * after a request is sent; the subtitles that explained what the portal is came
 * out under the interface-text rule. */
.auth-sub {
  margin: var(--spacing-16) 0 0;
  color: var(--color-steel-fog);
  text-align: left;
}
.auth-form { display: flex; flex-direction: column; gap: var(--spacing-16); }
/* A step is a group of fields, and it needs the gap the form gives its own
 * children. Without it the console's two sign-in fields sat flush, an input
 * against the next label, which is the misalignment on that page. */
.auth-step { display: flex; flex-direction: column; gap: var(--spacing-16); }

/* The TOTP enrollment QR: white modules need a light, bordered surface to sit
 * on, the same pairing .tag already uses, not a new one invented for this. */
.enroll-qr {
  display: flex;
  justify-content: center;
  padding: var(--spacing-16);
  background: var(--color-frost-field);
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-cards);
}
.enroll-qr svg { width: 180px; height: 180px; }
/* The utility paths, side by side as quiet buttons. They were underlined text
 * links, which design.md's Onboarding section no longer allows: a working
 * surface offers a button or it offers nothing. */
.auth-alt {
  display: flex;
  gap: var(--spacing-8);
  margin: var(--spacing-8) 0 0;
}
.auth-alt .btn { flex: 1; }
/* The alternate action, the one direct child button the card holds outside the
 * form. It sat flush against the form's own submit once the `or` between them
 * came out, so the primary and the alternate read as one stacked group. */
.auth-card .card > .btn-block { margin-top: var(--spacing-16); }

/* The logo is the asset, never type set to look like it. Height is fixed and
 * width follows, so the lockup can never be stretched off its proportions.
 *
 * align-self matters here rather than being belt and braces: the rail is a flex
 * column, so the default align-items: stretch overrides width: auto and pulls
 * the lockup to the full rail width. That is exactly the distortion this rule
 * exists to prevent. */
.logo {
  display: block;
  height: 26px;
  width: auto;
  align-self: flex-start;
  flex: none;
}
.auth-card .logo { margin: 0 0 var(--spacing-40); }
.rail .logo { margin: 0 0 var(--spacing-16); height: 20px; }

/* --- Shell --------------------------------------------------------------- */
/* The rail is fixed at full viewport height; the main column clears it with a
 * margin rather than a grid track, so content scrolls and the rail never
 * moves. */
.shell { min-height: 100dvh; }

.rail {
  position: fixed;
  top: 0;
  bottom: 0;
  left: 0;
  width: var(--sidebar-width);
  z-index:var(--z-inline);
  display: flex;
  flex-direction: column;
  padding: var(--spacing-24);
  background: var(--color-frost-field);
  border-right: 1px solid var(--color-pewter-mist);
}
/* Scoped past .iconbtn, whose display:inline-grid is declared later in the
 * file and would otherwise win the tie. */
.rail .rail-toggle { display: none; }
.rail-menu { display: flex; flex-direction: column; flex: 1; min-height: 0; }
.rail-nav {
  display: flex;
  flex-direction: column;
  gap: 2px;
  flex: 1;
  overflow-y: auto;
  /* Chromium paints an idle track here even with nothing to scroll. */
  scrollbar-width: none;
}
.rail-nav::-webkit-scrollbar { display: none; }

.rail-link {
  display: block;
  padding: var(--spacing-8) var(--spacing-16);
  border-radius: var(--radius-inputs);
  color: var(--color-steel-fog);
  text-decoration: none;
  font-weight: var(--font-weight-medium);
  transition: background-color var(--duration-instant) var(--easing-instant),
              color var(--duration-instant) var(--easing-instant);
}
.rail-link:hover { background: var(--color-chalk-cloud); color: var(--color-obsidian-core); }

/* The selected-state marker is teal: a bar the eye lands on, not a color the
 * label is set in. The label itself stays Obsidian, because it is small text. */
.rail-link[aria-current='page'] {
  background: var(--color-chalk-cloud);
  color: var(--color-obsidian-core);
  position: relative;
}
.rail-link[aria-current='page']::before {
  content: '';
  position: absolute;
  left: 0;
  top: 50%;
  transform: translateY(-50%);
  width: 3px;
  height: 18px;
  border-radius: var(--radius-pill);
  background: var(--color-tidal-teal);
}

/* The workspace, at the top: the operator's name as a pill picker, because an
 * operator with two businesses switches here. Today it holds the one. Below
 * it, "Pages": wayfinding, which is one of the micro role's sanctioned jobs. */
.rail-workspace { margin-bottom: var(--spacing-8); }
.rail-workspace .picker { width: 100%; }
.rail-label { margin: var(--spacing-24) 0 var(--spacing-8); padding: 0 var(--spacing-16); }
/* On a phone the top bar carries the workspace name beside the menu button. */
.rail-top-name {
  display: none;
  flex: 1;
  min-width: 0;
  margin: 0 var(--spacing-16);
  font-weight: var(--font-weight-medium);
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.rail-foot {
  display: flex;
  flex-direction: column;
  align-items: stretch;
  gap: var(--spacing-8);
  border-top: 1px solid var(--color-pewter-mist);
  padding-top: var(--spacing-16);
}
.rail-user { display: flex; flex-direction: column; min-width: 0; }
.rail-foot-actions { display: flex; gap: var(--spacing-8); flex: none; }
.rail-email {
  font-size: var(--text-caption);
  color: var(--color-steel-fog);
  overflow-wrap: anywhere;
}

/* No cap. A working surface with a fixed sidebar beside it has one job for
 * the space it is given, which is to use it: these pages are tables and stat
 * strips, and a column that could be readable is not improved by being
 * squeezed so the page can end sooner. design.md's 1488px page max-width is a
 * marketing-page number and its Working Surfaces section deliberately sets
 * none; this used to carry a separate hardcoded 1240px, which never bound at
 * 1280 or 1440 and cost 440px of empty space at 1920. Measured before it went. */
.main { margin-left: var(--sidebar-width); padding: var(--spacing-40); }
.main h1 {
  margin: 0 0 var(--spacing-32);
  font-size: var(--text-display);
  line-height: var(--leading-display);
  font-weight: var(--font-weight-medium);
  text-wrap: balance;
}
.screen-note {
  margin: 0;
  margin-right: auto;
  color: var(--color-steel-fog);
  font-size: var(--text-body-sm);
  max-width: 52ch;
}
.section-heading {
  margin: var(--spacing-40) 0 var(--spacing-16);
  font-size: var(--text-heading-sm);
  line-height: var(--leading-heading-sm);
  font-weight: var(--font-weight-medium);
}
.muted { color: var(--color-steel-fog); }

/* Present to a screen reader, absent to the eye. Used for table headers that
 * would be noise as visible text but are needed to navigate the table. */
.sr-only {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
}

/* A card whose child table draws its own edges. */
.card-flush { padding: 0; overflow: hidden; }
.card-flush .table th:first-child, .card-flush .table td:first-child { padding-left: var(--spacing-24); }
.card-flush .table th:last-child,  .card-flush .table td:last-child  { padding-right: var(--spacing-24); }

/* --- Products table ------------------------------------------------------ */
.thumb {
  display: block;
  width: 40px; height: 40px;
  border-radius: var(--radius-tags);
  object-fit: cover;
  background: var(--color-frost-field);
}
/* An empty plate is reserved at the same size, so a row does not move when an
 * image lands. The terminal spec reserves its own plates for the same reason. */
.thumb-empty { border: 1px dashed var(--color-pewter-mist); }

/* The one column with no natural width, so it takes what is left. Every other
 * column here is a fixed control: a handle, a thumbnail, a price, two stock
 * fields, a toggle, the actions. Without this the table sizes itself to its
 * content, the remainder sits at the right as dead space, and the product name
 * wraps at 1440 with seven hundred pixels free beside it. */
.product-name { display: block; font-weight: var(--font-weight-medium); }
.product-summary { display: flex; align-items: center; gap: var(--spacing-16); min-width: 260px; }
.product-catalog-table .cell-price { width: 150px; white-space: nowrap; }
.product-catalog-table .cell-actions { width: 150px; }
.product-summary .thumb-empty {
  display: grid;
  place-items: center;
  font-size: var(--text-caption);
  color: var(--color-steel-fog);
}
.product-search-wrap { display: flex; align-items: center; gap: var(--spacing-16); flex-wrap: wrap; }
.product-assignments { margin-top: var(--spacing-24); }
.product-machine-row {
  display: grid;
  grid-template-columns: minmax(130px, 1fr) 90px 90px auto;
  gap: var(--spacing-16);
  align-items: center;
  padding: var(--spacing-16) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.product-machine-row > div { display: flex; flex-direction: column; }
.product-detail-actions { flex-wrap: wrap; }
.product-desc {
  display: block;
  font-size: var(--text-caption);
  color: var(--color-steel-fog);
  max-width: 44ch;
}

/* No fixed width: three controls do not fit in 110px, and a fixed cap forced
   the widest to overflow the card, which its overflow:hidden then clipped
   rather than scrolled. Auto width plus wrapping row-actions lets the column
   size to what is actually there and drop to a second line under real
   pressure, instead of losing a control off the edge. */

.is-archived .product-name { color: var(--color-steel-fog); }

/* Inline edits read as editable: a visible box, always, because a field that
 * only announces itself on hover reads as a value rather than a control. The
 * price is one box with the $ inside it, so it reads as one amount. */
.price-edit {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  min-height: 36px;
  padding: 0 var(--spacing-8);
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-inputs);
  background: var(--color-chalk-cloud);
}
.price-edit:focus-within {
  outline: 2px solid var(--color-tidal-teal);
  outline-offset: 2px;
}
.price-prefix { color: var(--color-steel-fog); }
.price-edit .input-inline {
  border: none;
  outline: none;
  min-height: auto;
  width: 64px;
  padding: 0;
  background: transparent;
  font: inherit;
}
/* The same visible box for a bare cell input, stock. */
.input-cell {
  min-height: 36px;
  width: 100px;
  padding: 0 var(--spacing-8);
}

/* --- Switch -------------------------------------------------------------- */
/* The track fills teal when on. It is a shape, not text, which is where teal
 * carries meaning on a light surface. */
.switch { display: inline-flex; cursor: pointer; }
.switch input {
  position: absolute;
  opacity: 0;
  width: 36px; height: 20px;
  margin: 0;
  cursor: pointer;
}
.switch-track {
  display: block;
  width: 36px; height: 20px;
  border-radius: var(--radius-pill);
  background: var(--color-pewter-mist);
  transition: background-color var(--duration-instant) var(--easing-instant);
}
.switch-knob {
  display: block;
  width: 16px; height: 16px;
  margin: 2px;
  border-radius: var(--radius-pill);
  background: var(--color-chalk-cloud);
  transition: transform var(--duration-instant) var(--easing-instant);
}
.switch input:checked + .switch-track { background: var(--color-tidal-teal); }
.switch input:checked + .switch-track .switch-knob { transform: translateX(16px); }
.switch input:focus-visible + .switch-track {
  outline: 2px solid var(--color-tidal-teal);
  outline-offset: 2px;
}

/* --- Buttons, small ------------------------------------------------------ */
.btn-sm { min-height: 34px; padding: 0 var(--spacing-16); font-size: var(--text-body-sm); }

/* --- Sheets -------------------------------------------------------------- */
.sheet {
  border: none;
  border-radius: var(--radius-cards);
  padding: 0;
  width: min(460px, calc(100vw - var(--spacing-32)));
  background: var(--color-chalk-cloud);
  color: var(--color-obsidian-core);
  box-shadow: 0 0 0 1px var(--color-pewter-mist);
}
.sheet::backdrop { background: rgba(10, 13, 17, 0.45); }
.sheet-body { padding: var(--card-padding); display: flex; flex-direction: column; gap: var(--spacing-16); }
.sheet-body h2 {
  margin: 0;
  font-size: var(--text-heading-sm);
  line-height: var(--leading-heading-sm);
  font-weight: var(--font-weight-medium);
}
.sheet-body p { margin: 0; color: var(--color-steel-fog); }
.input-file { padding: var(--spacing-8); min-height: auto; }
textarea.input { padding: var(--spacing-8) var(--spacing-16); resize: vertical; min-height: auto; }

/* --- Toast --------------------------------------------------------------- */
/* Brief confirmation for edits that save without a button. It says what
 * happened and leaves; it is never the only signal, because the field already
 * shows the value that was kept. */
.toast {
  position: fixed;
  left: 50%;
  bottom: var(--spacing-24);
  transform: translate(-50%, 8px);
  background: var(--color-obsidian-core);
  color: var(--color-chalk-cloud);
  padding: var(--spacing-8) var(--spacing-16);
  border-radius: var(--radius-pill);
  font-size: var(--text-body-sm);
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--duration-instant) var(--easing-instant),
              transform var(--duration-instant) var(--easing-instant);
}
.toast.is-shown { opacity: 1; transform: translate(-50%, 0); }

/* --- Transactions --------------------------------------------------------- */
/* Its own grid rather than a <table>, so the phone treatment for the products
 * table cannot leak in and the read-only nature is structural: there is nothing
 * in these rows that is an input. */


.input-date, .input-select { min-height: 40px; padding: 0 var(--spacing-8); }

/* overflow-x rather than card-flush's inherited hidden: between the 640px
   card layout and a comfortably wide desktop, six real columns can ask for
   more than the viewport has. Scrolling the table on its own axis keeps every
   column reachable; card-flush's hidden was clipping Receipt outright at
   exactly those widths, which is the bug item 9 named. */

/* The products table has the same shape of problem and the same answer: its
 * declared columns need more width than a narrow desktop has, so it scrolls on
 * its own axis. This has to sit after .card-flush, which sets overflow: hidden
 * at equal specificity and would otherwise clip rather than scroll. */
.pr-wrap { padding: 0; overflow-x: auto; }
/* Sale, Total, Time, Method, Terminal, Receipt. Sale is the one column with
   genuinely unbounded content (an item list), so it is the flexible track;
   every other column holds a short, bounded value and gets a fixed width. */








/* A row is the record's own control. Hover lifts it to Frost Field, which is
 * the affordance design.md gives a row that opens a sheet, and it is only
 * added now that the sheet on the other end of the click exists. */



/* Never wraps: a name like "Coca-Cola \00d71" reads worse split across two
   lines than trimmed. min-width:0 lets the grid track actually shrink to fit
   an ellipsis instead of forcing the row wider than the card, which the
   card's own overflow:hidden was then clipping outright. */


/* Count left, control right, per the reference's pagination row. The control
 * is Load more rather than arrows because the API pages forward on a cursor
 * and cannot step back; arrows would promise a direction that does not
 * exist. */


/* -- Transactions summary, the breakdown ---------------------------------- */



/* --- Payouts --------------------------------------------------------------- */
.po-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-24);
}
.po-asset {
  margin: 0;
  font-size: var(--text-caption);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-steel-fog);
}
.po-total {
  margin: var(--spacing-8) 0 0;
  font-size: var(--text-display-sm);
  line-height: var(--leading-display-sm);
  font-weight: var(--font-weight-medium);
}
.po-sales { margin: var(--spacing-8) 0 0; color: var(--color-steel-fog); font-size: var(--text-body-sm); }
.po-machine-row { grid-template-columns: 130px 1fr 90px 140px; }
/* When, kind, destination, amount: a movement out, not a sale. */
.po-recent-row { grid-template-columns: 150px 110px 1fr 100px; }
.po-simulated { margin-top: var(--spacing-16); }

/* -- The dark card's own controls ------------------------------------------
 * The balance figure stays a real button (open Instant transfer) rather than
 * static text; it is unstyled back to plain text so nothing about it reads as
 * a control except that it responds like one. */
.po-lead-open {
  all: unset;
  display: block;
  width: 100%;
  cursor: pointer;
}
/* Withdraw is the card's one real, working action, so it carries the
 * dark-surface CTA fill per design.md rather than the plain outlined
 * treatment every other button on this card once shared with it. */
.po-lead-actions { display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
.po-lead-actions .btn {
  flex: 1;
  min-width: 76px;
  background: var(--color-tidal-teal);
  color: var(--color-obsidian-core);
  border: none;
}
.po-lead-actions .btn:hover:not(:disabled) {
  background: color-mix(in srgb, var(--color-tidal-teal) 85%, black);
}

/* Convert, Send, Add and More, step 16, corrected: a preview of the
 * circular row this card will eventually carry, not yet wired to
 * anything. Not disabled or grayed, on direction, and no longer opening
 * a sheet on tap either, on direction: purely visual for now. */
.po-lead-quick { display: flex; justify-content: space-between; gap: var(--spacing-8); }
.po-circle-action {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-8);
  flex: 1;
  min-width: 0;
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: var(--color-chalk-cloud);
  cursor: default;
}
.po-circle-icon {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-pill);
  display: grid;
  place-items: center;
  background: color-mix(in srgb, var(--color-chalk-cloud) 14%, var(--color-midnight-slate));
}
.po-circle-label { font-size: var(--text-body-sm); opacity: .85; }

/* -- The multi-segment ring's legend ---------------------------------------
 * A dot per arc rather than curved on-ring labels, which is not something SVG
 * text can do cleanly at this size once there is more than one segment. */
.po-ring-legend {
  list-style: none;
  margin: 0;
  padding: 0;
  display: flex;
  flex-direction: column;
  gap: 4px;
  font-size: var(--text-body-sm);
}
.po-ring-legend li { display: flex; align-items: center; gap: var(--spacing-8); }
.po-ring-dot { width: 8px; height: 8px; border-radius: var(--radius-pill); flex: none; }
/* Four classes rather than an inline style: the portal's CSP has no
   'unsafe-inline' for style-src, so a per-segment color has to be picked
   from a fixed set rather than written onto the element directly. Matches
   RING_COLORS in screens.ts index for index. */
.po-ring-dot-0 { background: var(--color-tidal-teal); }
.po-ring-dot-1 { background: color-mix(in srgb, var(--color-tidal-teal) 70%, var(--color-obsidian-core)); }
.po-ring-dot-2 { background: color-mix(in srgb, var(--color-tidal-teal) 45%, var(--color-obsidian-core)); }
.po-ring-dot-3 { background: color-mix(in srgb, var(--color-tidal-teal) 25%, var(--color-obsidian-core)); }

/* A handful of screens center short confirmation text; not worth a whole
   utility layer, but worth not reaching for an inline style the CSP blocks. */
.center { text-align: center; }

/* -- The transfer sheet's sending and sent states --------------------------- */
.sheet-progress {
  height: 4px;
  border-radius: var(--radius-pill);
  background: var(--color-pewter-mist);
  overflow: hidden;
  position: relative;
}
.sheet-progress-fill {
  position: absolute;
  top: 0;
  bottom: 0;
  left: -40%;
  width: 40%;
  background: linear-gradient(90deg, transparent, var(--color-tidal-teal), transparent);
  animation: sheet-progress-sweep 1.1s ease-in-out infinite;
}
@keyframes sheet-progress-sweep {
  to { left: 100%; }
}
/* -- Vendpass ---------------------------------------------------------------- */
.vp-activity-row { grid-template-columns: 150px 100px minmax(140px, 1fr) 110px 110px; }
.vp-member-row { grid-template-columns: 100px minmax(160px, 1fr) 140px; }
.vp-member { color: var(--color-obsidian-core); }
.vp-what { min-width: 0; overflow-wrap: anywhere; }
.vp-amt { text-align: right; font-weight: var(--font-weight-medium); }
.vp-earn { color: var(--color-obsidian-core); }
.vp-redeem { color: var(--color-steel-fog); }
.vp-rate {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-top: var(--spacing-16);
  font-weight: var(--font-weight-medium);
}

/* -- Support tickets ----------------------------------------------------------
 * Shared between the portal and the Admin Console; .admin-* row geometries
 * override column widths only, on the same .sp- element classes. */
.sp-row {
  grid-template-columns: 110px minmax(140px, 1fr) 110px 120px 100px;
  text-decoration: none;
  color: inherit;
  cursor: pointer;
}
.sp-row:hover { background: var(--color-frost-field); }
.sp-ref { font-weight: var(--font-weight-medium); }
.sp-subject { min-width: 0; overflow-wrap: anywhere; }

.sp-head { margin-top: var(--spacing-16); }
.sp-thread { margin-top: var(--spacing-24); }
.sp-reply-form { margin-top: var(--spacing-16); }
.sp-message { padding: var(--spacing-16); }
.sp-message-mine { background: var(--color-frost-field); }
.sp-body { margin: var(--spacing-8) 0 0; white-space: pre-wrap; overflow-wrap: anywhere; }

@media (max-width: 640px) {

  .sp-row .sp-subject { grid-area: subject; font-weight: var(--font-weight-medium); }
  .sp-row > div:nth-child(4) { grid-area: status; justify-self: end; }
  .sp-row .sp-ref { grid-area: ref; }
  .sp-row > div:nth-child(5) { grid-area: updated; text-align: right; }
  .sp-row > div:nth-child(3) { grid-area: machine; }
}

.sheet-check {
  width: 56px;
  height: 56px;
  border-radius: var(--radius-pill);
  background: var(--color-tidal-teal);
  color: var(--color-obsidian-core);
  display: grid;
  place-items: center;
  margin: 0 auto;
}

@media (max-width: 640px) {
  /* Each sale becomes a small card: what, when, how much, proof. The desktop
     grid's own min-width (the sum of its six tracks) no longer applies here,
     since this replaces grid-template-columns outright rather than shrinking
     it, so nothing from that wider layout carries over to force a scrollbar. */








  .po-machine-row { grid-template-columns: 1fr auto; grid-template-areas: none; }

  /* Overrides the generic .tx-row shape above: this row carries its own
     children, none named lines/total/settled/proof, so it needs its own areas
     rather than inheriting a layout with nothing to fill it. The areas are
     named for the cells that exist: when, type, terminal, instrument, amount. */

  .vp-activity-row > div:nth-child(1) { grid-area: when; }
  .vp-activity-row > div:nth-child(2) { grid-area: type; font-weight: var(--font-weight-medium); color: var(--color-obsidian-core); }
  .vp-activity-row > div:nth-child(3) { grid-area: terminal; }
  .vp-activity-row > div:nth-child(4) { grid-area: instrument; justify-self: end; }
  .vp-activity-row > div:nth-child(5) { grid-area: amt; text-align: right; }


  .vp-member-row .vp-member { grid-area: member; }
  .vp-member-row .vp-amt { grid-area: amt; }
  .vp-member-row .vp-meta { grid-area: meta; }
}

/* --- Phones --------------------------------------------------------------
 *
 * Not a fallback. The onboarding tells an operator to open the portal on their
 * phone while a tablet sits in front of them, so a phone is a first-class way
 * to use this, and the pairing code in particular is read off a phone held next
 * to a tablet.
 *
 * 768px covers the rail, because that is where a 240px fixed column stops
 * leaving room for content. 640px covers the tables, because that is where six
 * columns stop fitting however they are trimmed.
 */

@media (max-width: 768px) {
  /* The rail becomes a header: logo left, hamburger right, and the nav with
   * the account block behind the menu. The sliding strip of tabs is gone. */
  .rail {
    right: 0;
    bottom: auto;
    width: auto;
    padding: var(--spacing-8) var(--spacing-16);
    border-right: none;
    border-bottom: 1px solid var(--color-pewter-mist);
  }
  .rail .logo { margin: 0; height: 20px; }
  .rail-top-name { display: block; }
  .rail .rail-toggle { display: inline-grid; }

  .rail-menu { display: none; }
  .rail.is-open .rail-menu {
    display: flex;
    padding-top: var(--spacing-8);
  }
  .rail-nav { flex: none; overflow-y: visible; }
  .rail-foot { margin-top: var(--spacing-8); }

  .main {
    margin-left: 0;
    /* Clears the fixed header: its 44px row plus its vertical padding. */
    padding: calc(44px + var(--spacing-16) + var(--spacing-24)) var(--spacing-16) var(--spacing-24);
  }
}

@media (max-width: 640px) {

  /* The products table becomes a list of cards. Six columns cannot be trimmed
   * into 375px, and a table that scrolls sideways puts the price and the
   * toggle off screen, which are the two things anyone came here to touch.
   *
   * One stroke: the outer card container gives up its own border and padding
   * on a phone, so each row-card carries the single border. The image sits in
   * its own column and can never ride over the name; the toggle aligns with
   * the identity row; price and stock share a labeled row of their own. */
  .card-flush { padding: 0; border: none; background: transparent; overflow: visible; }
  .table, .table tbody, .table tr, .table td { display: block; width: 100%; }
  .table { table-layout: auto; min-width: 0; }
  /* The declared column widths belong to the desktop table and have to be
     given back by name: they are set as .table .cell-x, which outranks the
     .table td reset above, so without this every phone field keeps a desktop
     column's width and the card comes out as a ladder of four different
     control sizes. */
  .table .cell-handle, .table .cell-slot, .table .cell-product,
  .table .cell-price, .table .cell-stock, .table .cell-lowstock,
  .table .cell-active, .table .cell-actions { width: auto; }
  .table .cell-thumb { width: 48px; }
  .pr-wrap { overflow-x: visible; }
  .table thead { display: none; }
  /* Nine cells, so nine placements. This grid had six areas and the handle,
     the slot and the product name had none, while td:nth-child(2) handed the
     thumbnail the name's area and the two stock cells shared one. Every cell
     is placed by its own class now, and nth-child is not used for layout: the
     column order has changed twice and would change it again. */
  .table tr {
    border: 1px solid var(--color-pewter-mist);
    border-radius: var(--radius-cards);
    background: var(--color-chalk-cloud);
    padding: var(--spacing-16);
    margin-bottom: var(--spacing-8);
    display: grid;
    grid-template-columns: 16px 48px minmax(0, 1fr) 44px;
    /* One field per row, which is design.md's rule for a form on a phone and
       the end of a whole class of bug here. The columns are sized for the
       identity row, so any pair placed across them is uneven by construction:
       price beside stock put a full-width input next to a 44px one, and slot
       beside low stock put the label over the wrong field. Stacking cannot
       misalign, and each field already says what it is. */
    grid-template-areas:
      "handle thumb name  active"
      "price  price price price"
      "slot   slot  slot  slot"
      "stock  stock stock stock"
      "low    low   low   low"
      "act    act   act   act";
    gap: var(--spacing-16);
    align-items: center;
  }
  .table tr:last-child { margin-bottom: 0; }
  /* The row-height floor belongs to the desktop table; on a phone each row is
     a card whose cells size to their own content. */
  .table td { border-bottom: none; padding: 0; height: auto; }
  .table .cell-price, .table .cell-stock { text-align: left; }
  .table .cell-price .price-edit { justify-content: flex-start; }
  .table .cell-price input, .table .cell-stock input { text-align: left; }
  .cell-handle { grid-area: handle; display: block; color: var(--color-steel-fog); }
  .cell-thumb { grid-area: thumb; display: block; width: 48px; }
  .cell-thumb .thumb { width: 48px; height: 48px; }
  .cell-product { grid-area: name; min-width: 0; }
  .cell-slot { grid-area: slot; width: auto; }
  /* Every field owns a full row now, so every field's control is the same
     width. Left to their desktop widths they came out at four different
     sizes down the card, which reads as four unrelated controls. */
  .table td .input-cell,
  .table td .input-inline,
  .table td .price-edit { width: 100%; }
  .cell-price { grid-area: price; width: auto; }
  .cell-price .price-edit { width: 100%; }
  .cell-price .price-edit .input-inline { width: 100%; }
  .cell-stock { grid-area: stock; display: block; width: auto; }
  .cell-lowstock { grid-area: low; }
  .cell-stock .input-cell { width: 100%; }
  .cell-active { grid-area: active; width: auto; justify-self: end; align-self: start; }
  .cell-actions { grid-area: act; width: auto; white-space: normal; }
  .row-actions { flex-wrap: wrap; }

  /* The header row is hidden on a phone, so each field says what it is. */
  .cell-slot::before, .cell-stock::before, .cell-lowstock::before, .cell-price::before {
    display: block;
    margin-bottom: 4px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }
  .cell-price::before { content: "Price"; }
  .cell-slot::before { content: "Slot"; }
  .cell-stock::before { content: "Stock"; }
  .cell-lowstock::before { content: "Low stock"; }
  .row-actions { display: flex; width: 100%; }
  .row-actions .btn { flex: 1; }

  /* The catalog overview has five read-only columns, not the nine editable
     machine fields above. Give it its own compact card grammar so state and
     assignment count do not fall into unnamed legacy grid cells. */
  .product-catalog-table .table tr {
    grid-template-columns: 1fr 1fr 1fr;
    grid-template-areas:
      "name name name"
      "price state machines"
      "act act act";
  }
  .product-catalog-table .cell-product { grid-area: name; }
  .product-catalog-table .cell-price { grid-area: price; }
  .product-catalog-table .product-machines { grid-area: machines; }
  .product-catalog-table .cell-actions { grid-area: act; text-align: left; }
.product-catalog-table .product-machines::before{
    display: block;
    margin-bottom: 4px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }
  .product-catalog-table .cell-price::before { content: "Default price"; }
  .product-catalog-table .product-machines::before { content: "Machines"; }

  /* Sheets sit against the bottom, where a thumb is. */
  .sheet {
    width: calc(100vw - var(--spacing-16) * 2);
    margin: auto auto var(--spacing-16);
  }

  .auth { padding: var(--spacing-16); }
}


/* =========================================================================
 * The portal pass, A30. Everything below extends the system rather than
 * replacing it: the tokens above are unchanged, and no color is new.
 *
 * The rules being implemented are in design.md, added at A27: two radius
 * tiers, the figure tokens, the dark feature surface (one per screen), stat
 * composition, icon chips and icon buttons, the ring, and the pill picker.
 * ========================================================================= */

/* --- Icons ---------------------------------------------------------------
 * Heroicons outline, vendored at A27. currentColor throughout, so a glyph
 * inherits whatever surface it sits on and the dark surface needs no second
 * copy. */
.rail-icon, .iconbtn, .chip { line-height: 0; }
/* The glyph sits beside its label, not above it: the rail link was a block
 * before it had anything to sit beside. */
.rail-link { display: flex; align-items: center; gap: var(--spacing-16); }
.rail-icon svg, .iconbtn svg, .chip svg { display: block; }
svg { flex: none; }

/* --- The top bar --------------------------------------------------------- */
.topbar {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-32);
}
.topbar-title { min-width: 0; }
.topbar h1 { margin: 0; }
.page-description {
  max-width: 72ch;
  margin: var(--spacing-8) 0 0;
  color: var(--color-steel-fog);
  font-size: var(--text-body);
}
.topbar-actions { display: flex; gap: var(--spacing-8); flex: none; }

/* An icon button is a circle, which the no-pill rule never covered: that rule
 * is scoped to text buttons. It is a control, so it takes the teal focus ring
 * like every other one. */
.iconbtn {
  width: 40px;
  height: 40px;
  border-radius: var(--radius-pill);
  display: inline-grid;
  place-items: center;
  background: var(--color-chalk-cloud);
  border: 1px solid var(--color-pewter-mist);
  color: var(--color-obsidian-core);
  cursor: pointer;
  text-decoration: none;
  transition: background var(--duration-instant) var(--easing-instant);
}
.iconbtn:hover { background: var(--color-frost-field); }

/* An icon chip is 44px holding a 20px glyph. Teal fill takes an Obsidian
 * glyph, never a white one. */
.chip {
  width: 44px;
  height: 44px;
  border-radius: var(--radius-pill);
  display: inline-grid;
  place-items: center;
  flex: none;
}
.chip-teal { background: var(--color-tidal-teal); color: var(--color-obsidian-core); }
.chip-ink { background: var(--color-obsidian-core); color: var(--color-chalk-cloud); }
.chip-quiet { background: var(--color-frost-field); color: var(--color-steel-fog); }

/* --- Stat composition ----------------------------------------------------
 * Label whispers, figure speaks. Sentence case on the label, because uppercase
 * micro-labels keep their existing job as table headers and wayfinding. */
.stat-label {
  margin: 0;
  color: var(--color-steel-fog);
  font-size: var(--text-body-sm);
}
.stat-figure {
  margin: var(--spacing-8) 0 0;
  font-size: var(--text-figure);
  line-height: var(--leading-figure);
  font-weight: var(--font-weight-medium);
  letter-spacing: -0.02em;
  font-variant-numeric: tabular-nums;
  color: var(--color-obsidian-core);
}
.stat-figure small {
  font-size: var(--text-heading-sm);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0;
  color: var(--color-steel-fog);
}
.stat-sub { margin: var(--spacing-8) 0 0; color: var(--color-steel-fog); font-size: var(--text-body-sm); }
.stat-line { margin: var(--spacing-8) 0 0; font-weight: var(--font-weight-medium); }

/* Related facts share one card, separated by a hairline, rather than one card
 * each. */
.stat-split { display: flex; gap: var(--spacing-24); flex-wrap: wrap; }
.stat-split > div { flex: 1; min-width: 180px; }
.stat-split > div + div {
  border-left: 1px solid var(--color-pewter-mist);
  padding-left: var(--spacing-24);
}

/* --- The dark feature surface --------------------------------------------
 * At most one per screen, carrying that screen's single most important
 * figure. Teal is permitted as text and as a pill here, measuring 9.9:1. */
.po-lead {
  /* Two tracks wide whenever the grid has two to give: the single-track
   * 220px minimum a plain card is happy with left the circular row
   * below Withdraw cramped, and a wider card was the more direct fix
   * than shrinking the row to fit a width sized for a plainer card.
   * auto-fill clips the span to whatever the grid actually has, so this
   * still collapses cleanly to one track on a narrow screen. */
  grid-column: span 2;
  background: var(--color-midnight-slate);
  padding: var(--card-padding);
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  gap: var(--spacing-24);
  min-height: 200px;
}
.po-lead .stat-label, .po-lead .stat-sub { color: #e5ecf2; }
.po-lead .stat-label, .po-lead .stat-figure, .po-lead .stat-sub { margin: 0; }

/* design.md's dark feature surface, placed: one per screen, carrying that
 * screen's single most important figure, with the related stats beside it
 * rather than competing on it. Rewards already had this shape. Dashboard,
 * Transactions and Analytics have a clear lead figure and take it now.
 * Payouts, Terminals, Products and Settings have no single most important
 * number, and the rule says a screen like that gets no dark surface. */
.lead-row {
  display: grid;
  grid-template-columns: minmax(240px, 1fr) minmax(0, 2fr);
  gap: var(--spacing-16);
  align-items: stretch;
}
.lead-row-wide { grid-template-columns: minmax(240px, 1fr) minmax(0, 3.2fr); }
.lead-row .po-lead { grid-column: auto; min-height: 0; }
/* Scoped by its own class, not by .card: .lead-row .card outranks
 * .stat-strip's display: grid, which turned the Dashboard's four stats into a
 * flex column while getComputedStyle still reported four grid tracks. */
.lead-rest { display: flex; flex-direction: column; justify-content: center; }
@media (max-width: 900px) {
  .lead-row, .lead-row-wide { grid-template-columns: minmax(0, 1fr); }
}
.po-lead .stat-figure { color: var(--color-chalk-cloud); }
.po-lead .stat-figure small { color: #e5ecf2; }

.pill {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-8);
  align-self: flex-start;
  border-radius: var(--radius-pill);
  padding: 4px 12px;
  font-size: var(--text-body-sm);
  font-weight: var(--font-weight-medium);
}
.pill svg { flex: none; }
.pill-teal { background: var(--color-tidal-teal); color: var(--color-obsidian-core); }

/* --- The ring ------------------------------------------------------------
 * One proportion, 8px stroke, round caps, teal on a Frost Field track. Drawn
 * once and static, never a loop. */
.po-ring-card { display: flex; flex-direction: column; justify-content: space-between; }
.po-ring {
  display: flex;
  align-items: center;
  gap: var(--spacing-16);
  margin-top: var(--spacing-16);
  flex-wrap: wrap;
}
.po-ring-label { margin: 0; display: flex; flex-direction: column; }

/* --- The pill picker -----------------------------------------------------
 * A select styled as a pill. Permitted because the no-pill rule is scoped to
 * text CTAs, and a picker is not a call to action. */
.picker { position: relative; display: inline-flex; align-items: center; }
/* Inside a .field, which is a flex column, a bare inline-flex still stretches
 * to the full width and leaves the chevron stranded at the far edge while the
 * select hugs its text. The same stretch that once pulled the logo out of
 * shape. */
.field > .picker { align-self: flex-start; max-width: 100%; }

/* --- Panels, for screens that are sections rather than one list ---------- */
.panel { margin-bottom: var(--spacing-40); }
/* Outside a screen-head the note has no flex parent to space it, so it sat
 * flush against the card below it. */
.panel > .screen-note { margin: 0 0 var(--spacing-16); }
.panel-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-16);
}
.panel-title {
  margin: 0;
  font-size: var(--text-heading-sm);
  line-height: var(--leading-heading-sm);
  font-weight: var(--font-weight-medium);
}
.stack { display: flex; flex-direction: column; gap: var(--spacing-16); }
.form-actions { display: flex; justify-content: flex-start; gap: var(--spacing-8); margin-top: var(--spacing-8); }
.stack .form-actions { margin-top: 0; }

.obj { border-bottom: 1px solid var(--color-pewter-mist); }
.obj:last-child { border-bottom: none; }

/* The whole header is the control, so the chevron is not a separate hit area
 * the way a row with its own buttons would need. */
.obj-head {
  display: grid;
  grid-template-columns: var(--status-size) auto 1fr auto auto;
  align-items: center;
  gap: var(--spacing-16);
  width: 100%;
  padding: var(--spacing-16) var(--spacing-24);
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-align: left;
  cursor: pointer;
}
.obj-head:hover { background: var(--color-frost-field); }

.obj-id { font-weight: var(--font-weight-medium); overflow-wrap: anywhere; }
.obj-name { color: var(--color-steel-fog); font-size: var(--text-body-sm); min-width: 0; }
.obj-summary { flex: none; font-size: var(--text-body-sm); color: var(--color-steel-fog); }

/* A chevron drawn rather than set, so it rotates against one origin and needs
 * no icon font. */
.obj-chevron {
  width: 8px;
  height: 8px;
  justify-self: end;
  border-right: 1px solid var(--color-steel-fog);
  border-bottom: 1px solid var(--color-steel-fog);
  transform: translateY(-2px) rotate(45deg);
  transition: transform var(--duration-instant) var(--easing-instant);
}
.obj-head[aria-expanded='true'] .obj-chevron { transform: translateY(2px) rotate(225deg); }
.obj-head .obj-chevron { margin-left: var(--spacing-8); }

.obj-body { padding: 0 var(--spacing-24) var(--spacing-24); }
/* The list is read as pairs, so it keeps a measure. Left to the card's own
 * width a label sits a thousand pixels from its value at 1440 and the two stop
 * reading as one row. */
.obj-body .kv { max-width: 560px; }
.obj-actions { display: flex; gap: var(--spacing-8); margin-top: var(--spacing-16); }

/* Add another sits inside the card under the last object, which is where the
 * reference puts it: part of the list, not a page-level action. */
.obj-foot {
  padding: var(--spacing-16) var(--spacing-24);
  border-top: 1px solid var(--color-pewter-mist);
}

.obj-empty { padding: var(--spacing-24); }
.obj-empty-line { margin: 0 0 var(--spacing-8); font-weight: var(--font-weight-medium); }

.obj-value { margin: 0; font-weight: var(--font-weight-medium); overflow-wrap: anywhere; }
.obj-set { display: flex; align-items: flex-start; gap: var(--spacing-16); }

/* A form is read at reading measure, not at panel width. Without this the
 * password fields run the full 1440 and the eye has to travel the width of the
 * page to get from a label to its own input. */
.form-measure {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-24);
  max-width: 520px;
}
/* A block button inside a measured form stops at the measure with it, rather
 * than stretching to the card. */
.form-measure .btn-block { width: 100%; }

/* design.md's forms rule is one column on mobile, and its Mobile rule is that
 * nothing disappears, it reflows. The object header carries four things across
 * one line at 1440; on a phone the identifier keeps the first line and the name
 * and summary drop under it, with the chevron staying on the identifier's row
 * where the thumb expects it. */
@media (max-width: 640px) {

  .obj-head {
    grid-template-columns: var(--status-size) 1fr auto;
    grid-template-areas: "dot id chevron" ". name name" ". summary summary";
    row-gap: 2px;
    column-gap: var(--spacing-16);
    padding: var(--spacing-16);
  }
  .obj-id { grid-area: id; }
  .obj-name { grid-area: name; }
  .obj-summary { grid-area: summary; }
  .obj-chevron { grid-area: chevron; align-self: start; margin-top: 6px; }

  .obj-body { padding: 0 var(--spacing-16) var(--spacing-16); }
  .obj-foot { padding: var(--spacing-16); }
  .obj-actions { flex-wrap: wrap; }
}

/* --- Brand marks ---------------------------------------------------------
 * Official assets, vendored, full color. A bounding box, not a fixed
 * height: Visa's own asset is a wide, flat wordmark (viewBox 1000x324.68,
 * roughly 3:1) next to icon-style marks that are closer to square
 * (Mastercard's two circles, Google's "G", Apple Pay's glyph). A single
 * fixed height let the wordmark's own width run wherever its aspect ratio
 * took it, which is what actually made Visa read as more dominant than
 * the rest: not a mistake in the asset, a property of a wordmark next to
 * icons. max-height and max-width together, with both width and height
 * left auto, is what makes a plain img fit inside a box on its long axis
 * without distorting: a fixed height alone can only ever cap the short
 * axis. */
.brandmark { max-height: 20px; max-width: 32px; width: auto; height: auto; display: inline-block; vertical-align: middle; }


/* --- Transactions summary ------------------------------------------------ */




/* --- Reports ------------------------------------------------------------- */
.report-head { align-items: center; }
.report-method-card { margin-top: var(--spacing-16); }
.report-method-row {
  display: grid;
  grid-template-columns: minmax(160px, 220px) minmax(160px, 1fr) 56px;
  gap: var(--spacing-16);
  align-items: center;
  padding: var(--spacing-16) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.report-method-row:last-of-type { border-bottom: 0; }
.report-method-row strong { text-align: right; }
.report-method-track {
  width: 100%; height: 8px;
  border: 0; border-radius: var(--radius-pill);
  overflow: hidden; background: var(--color-frost-field);
}
.report-method-track::-webkit-progress-bar { background: var(--color-frost-field); }
.report-method-track::-webkit-progress-value { background: var(--color-tidal-teal); }
.report-method-track::-moz-progress-bar { background: var(--color-tidal-teal); }

/* --- Support ------------------------------------------------------------- */
.support-tabs { margin: 0; }
.support-help-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-16); }
.support-list { margin: 0; padding-left: 20px; color: var(--color-steel-fog); }
.support-list li + li { margin-top: var(--spacing-8); }

/* --- Products, square thumbnails -----------------------------------------
 * design.md Imagery: the product is shot square, on a plate. This was a pill,
 * which cropped the corners off a square asset and read as an avatar. */
.thumb { border-radius: var(--radius-tags); }
/* The flex lives on a span inside the cell. Putting display:flex on the td
 * itself removed its table-cell display and broke the whole row: the Selling
 * column collapsed and the switch bled over the Archive button. */
.row-actions {
  display: inline-flex;
  gap: var(--spacing-8);
  align-items: center;
  justify-content: flex-end;
  flex-wrap: nowrap;
}

/* --- Auth, scaled up ----------------------------------------------------- */
.auth-card .card { border-radius: var(--radius-surface); padding: var(--spacing-32); }
.auth-card h1 { font-size: var(--text-display-sm); line-height: var(--leading-display-sm); }

/* --- Phones -------------------------------------------------------------- */
@media (max-width: 768px) {
  .topbar { flex-direction: row; align-items: flex-start; }
  .topbar h1 { font-size: var(--text-heading-lg); line-height: var(--leading-heading-lg); }
}

@media (max-width: 640px) {
  .panel-head { flex-direction: column; align-items: stretch; }
  .panel-head .btn { width: 100%; }
  .stat-split > div + div {
    border-left: none;
    border-top: 1px solid var(--color-pewter-mist);
    padding-left: 0;
    padding-top: var(--spacing-16);
  }
  .addr { flex-wrap: wrap; }
  .addr-main { flex-basis: 100%; }
  .addr-actions { flex: 1; }
  .addr-actions .btn { flex: 1; }
.picker{ width: 100%; }


  .form-actions .btn { width: 100%; }
.product-search-wrap{ width: 100%; }
  .product-machine-row { grid-template-columns: 1fr 1fr; }
  .support-help-grid { grid-template-columns: 1fr; }
  .report-method-row { grid-template-columns: 1fr auto; }
  .report-method-track { grid-column: 1 / -1; grid-row: 2; }
}

/* =========================================================================
 * The Admin Console, step 12. Same components, same tokens; only the row
 * geometries below are new, one per staff table.
 * ========================================================================= */

/* -- The dark rail ------------------------------------------------------------
 * Obsidian rather than Chalk Cloud, so the console reads as a different
 * surface from the operator portal at a glance; .main stays exactly as it
 * already was, unchanged, which is the other half of that contrast. Every
 * value below is an existing token or a color-mix of one: no new hue enters
 * the system. The nav icons cycle through three lightness steps of Tidal
 * Teal, toward white rather than toward Obsidian the way the Vendpass ring
 * does, because the ring sits on a light track and this rail is dark. */
.rail-dark {
  background: var(--color-obsidian-core);
  border-right: none;
}
.rail-dark .rail-link { color: #e5ecf2; }
.rail-dark .rail-link:hover {
  background: color-mix(in srgb, var(--color-chalk-cloud) 10%, var(--color-obsidian-core));
  color: var(--color-chalk-cloud);
}
.rail-dark .rail-link[aria-current='page'] {
  background: color-mix(in srgb, var(--color-chalk-cloud) 12%, var(--color-obsidian-core));
  color: var(--color-chalk-cloud);
}
.rail-dark .rail-email { color: #e5ecf2; }
.rail-dark .rail-foot {
  border-top-color: color-mix(in srgb, var(--color-chalk-cloud) 18%, var(--color-obsidian-core));
}
.rail-dark .iconbtn {
  background: transparent;
  border-color: color-mix(in srgb, var(--color-chalk-cloud) 24%, var(--color-obsidian-core));
  color: var(--color-chalk-cloud);
}
.rail-dark .iconbtn:hover {
  background: color-mix(in srgb, var(--color-chalk-cloud) 10%, var(--color-obsidian-core));
}

.rail-dark .rail-nav .rail-link:nth-child(1) .rail-icon { color: var(--color-tidal-teal); }
.rail-dark .rail-nav .rail-link:nth-child(2) .rail-icon { color: color-mix(in srgb, var(--color-tidal-teal) 70%, white); }
.rail-dark .rail-nav .rail-link:nth-child(3) .rail-icon { color: color-mix(in srgb, var(--color-tidal-teal) 45%, white); }
.rail-dark .rail-nav .rail-link:nth-child(4) .rail-icon { color: var(--color-tidal-teal); }
.rail-dark .rail-nav .rail-link:nth-child(5) .rail-icon { color: color-mix(in srgb, var(--color-tidal-teal) 70%, white); }
.rail-dark .rail-nav .rail-link:nth-child(6) .rail-icon { color: color-mix(in srgb, var(--color-tidal-teal) 45%, white); }
.rail-dark .rail-nav .rail-link:nth-child(7) .rail-icon { color: var(--color-tidal-teal); }

@media (max-width: 768px) {
  .rail-dark { border-bottom: none; }
}

.admin-fleet-row { grid-template-columns: 110px minmax(140px, 1fr) 130px 80px 150px; }
/* Widths measured against the content rather than guessed: an email is the
 * one unbounded value here and was breaking across two lines at 1440 while the
 * status column, at 100px, was too narrow for its own square and word and sat
 * under the Actions header instead of its own. */
.admin-op-row {
  grid-template-columns:
    minmax(140px, 1fr) minmax(220px, 1.4fr) 80px 70px 100px 120px 250px;
  align-items: center;
}
.admin-op-email { overflow-wrap: anywhere; }
/* The actions track is declared rather than auto: as auto it was whatever the
 * two flexible columns left over, which at 1440 was less than the buttons
 * needed, so Reset password broke across two lines and Suspend left the card. */
.admin-op-actions .btn { white-space: nowrap; }
/* The product name took every spare pixel, so at 1440 it ran to 750px and
 * pushed price, stock and status against the right edge of a mostly empty
 * row. It is generous but bounded now, and a trailing flexible track absorbs
 * the rest rather than any column having to. */
.admin-product-row { grid-template-columns: minmax(200px, 620px) 110px 110px 150px 1fr; }
/* The actions track is declared, not auto. The header's actions cell holds an
 * sr-only word and measures zero; the body's holds a 152px button. Under auto
 * the two rows resolved that track differently, the two 1fr columns absorbed
 * the difference at 437px against 361px, and every header sat right of the
 * value it named. Measured. This is the third grid in the console where a
 * trailing auto did it, so it is worth naming rather than fixing quietly. */
.admin-del-row {
  grid-template-columns: minmax(140px, 1fr) minmax(200px, 1fr) 150px 170px;
  align-items: center;
}
/* Six columns since the receipt moved into the record: Sale, Total, Time,
 * Method, Operator, Terminal. The 150px seventh track went with it. */
.admin-tx-row {
  grid-template-columns:
    minmax(180px, 1.4fr) 90px 140px 80px minmax(140px, 1fr) 120px;
}
.admin-vp-activity-row {
  grid-template-columns: 150px 100px minmax(140px, 1fr) minmax(110px, 1fr) 140px;
}
.admin-sp-row {
  grid-template-columns: 100px minmax(140px, 1fr) minmax(110px, 1fr) 100px 120px 100px;
}
/* Six columns, not nine. Type, size and uploaded were a column each holding
 * one short value, and between them they took 260px that the creative's own
 * name needed; they sit on the identity's second line now. The actions track
 * is declared rather than auto, which is what let Deactivate run 51px past the
 * card and get cut off mid-word. */
.admin-media-row {
  grid-template-columns: 20px minmax(260px, 1fr) 150px 120px 150px 240px;
  align-items: center;
}
.admin-media-identity {
  display: flex;
  align-items: center;
  gap: var(--spacing-8);
  min-width: 0;
}
.admin-media-thumb {
  position: relative;
  flex: none;
  width: 40px;
  height: 40px;
  border-radius: var(--radius-tags);
  overflow: hidden;
  background: var(--color-frost-field);
  display: flex;
  align-items: center;
  justify-content: center;
  color: var(--color-steel-fog);
}
.admin-media-text { min-width: 0; display: flex; flex-direction: column; }
.admin-media-name { overflow-wrap: anywhere; font-weight: var(--font-weight-medium); }
.admin-contract-rate .hint { display: block; }

/* --- The operator's advertising list -------------------------------------
 * The categories were full-width cards carrying three big figures each, and
 * a table underneath repeated the same impressions and accrued for every one
 * of them. One list now, with the contract behind the row that owns it: the
 * same object-state shape the address book uses. */
.ad-list { display: flex; flex-direction: column; }
.ad-row { border-bottom: 1px solid var(--color-pewter-mist); }
.ad-row:last-child { border-bottom: none; }

.ad-row-head, .ad-row.ad-head-row {
  display: grid;
  grid-template-columns: 44px minmax(160px, 1fr) 130px 130px 130px 24px;
  align-items: center;
  gap: var(--spacing-16);
  width: 100%;
  padding: var(--spacing-16) var(--spacing-24);
  border: 0;
  background: none;
  font: inherit;
  color: inherit;
  text-align: left;
}
button.ad-row-head { cursor: pointer; }
button.ad-row-head:hover { background: var(--color-frost-field); }
.ad-row.ad-head-row {
  border-bottom: 1px solid var(--color-pewter-mist);
  font-size: var(--text-micro);
  line-height: var(--leading-micro);
  letter-spacing: var(--tracking-micro);
  text-transform: uppercase;
  font-weight: var(--font-weight-medium);
  color: var(--color-steel-fog);
}
.ad-row-identity { display: flex; flex-direction: column; min-width: 0; }
.ad-row-rate { font-weight: var(--font-weight-medium); }
.ad-row-num { justify-self: end; }
.ad-row.ad-head-row > div:nth-child(4),
.ad-row.ad-head-row > div:nth-child(5) { justify-self: end; }
.ad-row-head .obj-chevron { justify-self: end; }
.ad-row-body { padding: 0 var(--spacing-24) var(--spacing-24); }
.ad-row-body .kv { max-width: 560px; }
.ad-leave-line { margin: 0 0 var(--spacing-8); font-weight: var(--font-weight-medium); }

@media (max-width: 640px) {
  .ad-row-head, .ad-row.ad-head-row {
    grid-template-columns: 44px minmax(0, 1fr) 24px;
    grid-template-areas: "thumb name chevron" ". rate rate" ". impressions accrued";
    row-gap: var(--spacing-8);
    padding: var(--spacing-16);
  }
  .ad-row-head > *:nth-child(1) { grid-area: thumb; }
  .ad-row-head > *:nth-child(2) { grid-area: name; }
  .ad-row-head > *:nth-child(3) { grid-area: rate; justify-self: start; }
  .ad-row-head > *:nth-child(4) { grid-area: impressions; justify-self: start; }
  .ad-row-head > *:nth-child(5) { grid-area: accrued; }
  .ad-row.ad-head-row { display: none; }
  .ad-row-body { padding: 0 var(--spacing-16) var(--spacing-16); }
}
/* Measured: the three media actions need 229px together and the two rate
 * actions 164px, so both tracks are declared above them rather than left to
 * guess. Without the nowrap, Change rate broke across two lines inside a
 * track wide enough for it. */
.admin-media-row .btn, .admin-contract .btn { white-space: nowrap; }
.admin-media-handle {
  display: flex;
  align-items: center;
  color: var(--color-steel-fog);
}
.admin-media-row[draggable="true"] { cursor: grab; }
.admin-media-row.is-dragging { opacity: .4; }

/* --- Rewards -------------------------------------------------------------- */
/* The Vendpass wordmark carries the brand inside the tab, so the nav can say
 * "Rewards" (what it is) without the product name being lost. */
.vp-brand {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
  align-items: flex-start;
  margin-bottom: var(--spacing-16);
}
.vp-logo { height: 28px; width: auto; max-width: 100%; }

.vp-tiers { margin-top: var(--spacing-16); display: flex; flex-direction: column; }
.vp-tier-row {
  display: flex;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.vp-tier-row:last-child { border-bottom: none; }
.vp-terminals { margin-top: var(--spacing-16); display: flex; flex-direction: column; }
.vp-terminal-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.vp-terminal-row:last-child { border-bottom: none; }
.vp-terminal-toggle { accent-color: var(--color-tidal-teal); }

.vp-tier-edit {
  display: flex;
  align-items: flex-end;
  gap: var(--spacing-8);
  flex-wrap: wrap;
  padding: var(--spacing-8) 0;
}
.vp-tier-field { display: flex; flex-direction: column; gap: 2px; }
.vp-tier-field .input { width: 96px; }
.vp-tier-unit { padding-bottom: var(--spacing-8); }
.vp-tier-note { padding-bottom: var(--spacing-8); }

/* Admin Rewards: a row that opens rather than one carrying every field. */
.vp-activity-head { cursor: pointer; }
.vp-activity-head:focus-visible { outline: 2px solid var(--color-tidal-teal); outline-offset: -2px; }
.vp-activity-detail {
  padding: var(--spacing-16) var(--spacing-24);
  border-bottom: 1px solid var(--color-pewter-mist);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
}
.vp-detail-row { display: flex; justify-content: space-between; gap: var(--spacing-16); }

/* --- Category contracts, Admin Console ------------------------------------ */
.admin-rate-head { display: flex; flex-direction: column; gap: var(--spacing-8); }

/* A reply is written at reading measure, not at the width of the page. */
.sp-reply-form { max-width: 640px; }

/* The row is the link, so the row says so once. Every cell inside it was
 * underlining, which read as five separate links to five different places. */
.admin-sp-link { text-decoration: none; color: inherit; }
.admin-sp-link:hover { background: var(--color-frost-field); }
.admin-sp-link:hover .sp-subject { text-decoration: underline; }

/* Selecting an asset is a small teal indicator on a light surface, the one
 * use of teal design.md allows here. */
.admin-content-row input[type="checkbox"] { accent-color: var(--color-tidal-teal); }

/* Program controls were four native inputs on one line with no field
 * structure. They are fields now, so the grid only has to place them. */
.admin-vp-settings-grid { margin-bottom: var(--spacing-24); }

/* A record opens from the row, so the row says so. */
.admin-tx-record { cursor: pointer; }
.admin-tx-record:hover { background: var(--color-frost-field); }
.admin-tx-record:focus-visible { outline: 2px solid var(--color-obsidian-core); outline-offset: -2px; }
.sheet-method { margin: 0; display: flex; align-items: center; gap: var(--spacing-8); }
.admin-contract-list {
  display: flex;
  flex-direction: column;
  margin-top: var(--spacing-16);
}
/* A table, not a stack of bands. Four categories with no rate set were four
 * near-identical full-width rows of empty state; as table rows with a header
 * over them, an unset rate reads as one value missing from a row rather than
 * as a section of nothing. */
.admin-contract {
  display: grid;
  grid-template-columns: minmax(160px, 1fr) minmax(180px, 1fr) 150px 190px;
  align-items: center;
  gap: var(--spacing-16);
  padding: var(--spacing-16) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.admin-contract:last-child { border-bottom: none; }
/* align-items keeps a "No rate set" tag sized to its own text; a stretched
 * tag in this column reads as an empty input field, not a status. */
.admin-contract-rate { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; }
.admin-contract-history {
  grid-column: 1 / -1;
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
  padding-top: var(--spacing-8);
}
.admin-contract-history-row {
  display: flex;
  gap: var(--spacing-16);
  font-size: var(--text-body-sm);
}

/* --- Operator Advertising ------------------------------------------------- */
.ad-summary { margin-bottom: var(--spacing-24); }
.ad-cards { display: flex; flex-direction: column; gap: var(--spacing-16); }
.ad-card { display: flex; flex-direction: column; gap: var(--spacing-16); }
.ad-card-head { display: flex; align-items: center; gap: var(--spacing-16); }
.ad-card-thumb {
  flex: none;
  width: 56px;
  height: 56px;
  border-radius: var(--radius-tags);
  overflow: hidden;
  background: var(--color-frost-field);
  display: flex;
  align-items: center;
  justify-content: center;
}
.ad-card-thumb-img { width: 100%; height: 100%; object-fit: cover; }
.ad-card-identity { min-width: 0; display: flex; flex-direction: column; }
.ad-card-name { font-weight: var(--font-weight-medium); font-size: var(--text-heading-sm); }
.ad-card-sample { font-size: var(--text-caption); overflow-wrap: anywhere; }
.ad-card-figures {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
  gap: var(--spacing-16);
}
.ad-card-actions { display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
.ad-card-contract {
  border-top: 1px solid var(--color-pewter-mist);
  padding-top: var(--spacing-16);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
}
.ad-contract-row { display: flex; justify-content: space-between; gap: var(--spacing-16); }
.ad-leave-all { margin-top: var(--spacing-24); display: flex; flex-direction: column; gap: var(--spacing-16); align-items: flex-start; }
.po-report { align-self: flex-start; margin-top: var(--spacing-8); }

/* --- Content library ----------------------------------------------------- */
.admin-content-row {
  grid-template-columns: 32px minmax(200px, 1.6fr) 110px 80px 90px 100px minmax(120px, 1fr);
  align-items: center;
}
.content-use { display: block; }
.admin-content-summary {
  display: flex;
  flex-wrap: wrap;
  gap: var(--spacing-32);
  margin-bottom: var(--spacing-16);
}
.admin-rate-card { margin-bottom: var(--spacing-16); }
.admin-rate-fields {
  display: flex;
  align-items: center;
  gap: var(--spacing-8);
  flex-wrap: wrap;
  margin-top: var(--spacing-8);
}
.admin-rate-input { width: 64px; text-align: center; }

.admin-code { font-weight: var(--font-weight-medium); }
.admin-op a, .admin-op-name a{
  color: var(--color-obsidian-core);
  font-weight: var(--font-weight-medium);
}
.admin-op-email{ overflow-wrap: anywhere; }

@media (max-width: 640px) {
  /* Each staff table collapses to the same card treatment the operator's
   * transactions already use, with its own arrangement per row type. */

  .admin-code { grid-area: code; }
  .admin-status { grid-area: status; justify-self: end; }
  .admin-op { grid-area: op; }
  .admin-ver { grid-area: ver; }
  .admin-seen { grid-area: seen; text-align: right; }

  /* Category rates kept its four desktop columns on a phone, which squeezed
     the two rate values and pushed Set rate off the card entirely. */
  .admin-contract {
    grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas: "name name" "rate gross" "act act";
    row-gap: var(--spacing-16);
    padding: var(--spacing-16) 0;
  }
  .admin-contract-rate { grid-area: rate; }
  .admin-contract .row-actions { grid-area: act; display: flex; width: 100%; }
  .admin-contract .row-actions .btn { flex: 1; }
.admin-contract-rate::before{
    display: block;
    margin-bottom: 4px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }
  .admin-contract-rate::before { content: "Operator rate"; }

  /* Content had no phone arrangement at all, so its seven columns stayed and
     the cells squeezed against each other. Placed by position, since only the
     first two carry a class of their own. */

  .admin-content-row > *:nth-child(1) { grid-area: pick; align-self: start; }
  .admin-content-row > *:nth-child(2) { grid-area: name; }
  .admin-content-row > *:nth-child(3) { grid-area: category; }
  .admin-content-row > *:nth-child(4) { grid-area: type; justify-self: start; }
  .admin-content-row > *:nth-child(5) { grid-area: size; }
  .admin-content-row > *:nth-child(6) { grid-area: uploaded; }
  .admin-content-row > *:nth-child(7) { grid-area: used; }


  .admin-sp-row > *:nth-child(1) { grid-area: ref; }
  .admin-sp-row > *:nth-child(2) { grid-area: subject; }
  .admin-sp-row > *:nth-child(3) { grid-area: operator; }
  /* The terminal keeps a place rather than being hidden: design.md's mobile
     rule is that nothing on desktop disappears, it reflows. */
  .admin-sp-row > *:nth-child(4) { grid-area: terminal; text-align: right; }
  .admin-sp-row > *:nth-child(5) { grid-area: status; justify-self: end; }
  .admin-sp-row > *:nth-child(6) { grid-area: updated; }


  .admin-op-name { grid-area: name; }
  .admin-op-status { grid-area: status; justify-self: end; }
  .admin-op-email { grid-area: email; }
  .admin-op-machines { grid-area: machines; }
  .admin-op-sales { grid-area: sales; }
  .admin-op-total { grid-area: total; text-align: right; }
  .admin-op-actions { grid-area: act; }
  .admin-op-actions .row-actions { display: flex; width: 100%; }
  .admin-op-actions .btn { flex: 1; }
  /* The header words, repeated as small labels where the header row is gone. */
  .admin-op-machines::before, .admin-op-sales::before, .admin-op-total::before {
    display: block;
    font-size: var(--text-caption);
    color: var(--color-steel-fog);
  }
  .admin-op-machines::before { content: 'Machines'; }
  .admin-op-sales::before { content: 'Sales'; }
  .admin-op-total::before { content: 'Total'; }


  .admin-product-row > div:nth-child(1) { grid-area: pname; font-weight: var(--font-weight-medium); }
  .admin-product-row > div:nth-child(2) { grid-area: pprice; text-align: right; }
  .admin-product-row > div:nth-child(3) { grid-area: pstock; text-align: right; }
  .admin-product-row > div:nth-child(4) { grid-area: pstatus; }





  .admin-vp-activity-row .vp-member { grid-area: member; }

  .admin-vp-activity-row .vp-what { grid-area: what; }

  .admin-vp-activity-row .vp-amt { grid-area: amt; text-align: left; }


  .admin-sp-row .sp-subject { grid-area: subject; font-weight: var(--font-weight-medium); }
  .admin-sp-row > div:nth-child(5) { grid-area: status; justify-self: end; }
  .admin-sp-row .sp-ref { grid-area: ref; }
  .admin-sp-row > div:nth-child(6) { grid-area: updated; text-align: right; }
  .admin-sp-row > div:nth-child(3) { grid-area: op; }
  .admin-sp-row > div:nth-child(4) { grid-area: machine; }

  /* Rewritten for the six-column row. The old one placed nine children, so
     after type, size and uploaded moved onto the identity line it was giving
     the status cell the type's slot and hiding the actions outright. */

  /* The handle drops out on mobile: HTML5 drag and drop is unreliable
   * enough on touch that offering it here would be offering something
   * that mostly does not work. */
  .admin-media-row > div:nth-child(1) { display: none; }
  .admin-media-row .admin-media-identity { grid-area: name; }
  .admin-media-row > div:nth-child(3) { grid-area: cat; }
  .admin-media-row > div:nth-child(4) { grid-area: status; justify-self: end; }
  .admin-media-row > div:nth-child(5) { grid-area: assigned; }
  .admin-media-row > div:nth-child(6) { grid-area: act; margin-top: var(--spacing-8); }
  .admin-media-row .row-actions { display: flex; width: 100%; }
  .admin-media-row .row-actions .btn { flex: 1; }
  .admin-rate-fields { justify-content: flex-start; }


  .admin-content-row > div:nth-child(1) { grid-area: pick; align-self: start; }
  .admin-content-row > div:nth-child(3) { grid-area: cat; }
  .admin-content-row > div:nth-child(4) { grid-area: type; justify-self: end; }
  .admin-content-row > div:nth-child(5) { grid-area: size; }
  .admin-content-row > div:nth-child(6) { display: none; }
  .admin-content-row > div:nth-child(7) { grid-area: used; justify-self: end; }
  .admin-content-summary { gap: var(--spacing-16); }
}

/* --- Reduced motion ------------------------------------------------------ */
/* Written here rather than per-component, since every transition in this file
 * is color only and none of them carry meaning. */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    transition-duration: 0.01ms !important;
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
  }
}

/* --- Receipt -------------------------------------------------------------- */
/* A button that reads as the link beside it: the XRPL row links out to an
 * explorer, the simulated row opens a dialog, and the two should not look
 * like different kinds of affordance when they answer the same question. */
.linkbtn {
  background: none;
  border: none;
  padding: 0;
  font: inherit;
  color: var(--color-obsidian-core);
  text-decoration: underline;
  cursor: pointer;
}
.linkbtn:hover { color: var(--color-steel-fog); }
.linkbtn:focus-visible { outline: 2px solid var(--color-tidal-teal); outline-offset: 2px; }
.receipt { display: flex; flex-direction: column; gap: var(--spacing-8); }
.receipt-row {
  display: flex;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.receipt-row:last-child { border-bottom: none; }

/* --- Drill-down ----------------------------------------------------------- */
.crumbs {
  display: flex;
  align-items: center;
  gap: var(--spacing-8);
  flex-wrap: wrap;
  margin-bottom: var(--spacing-16);
  font-size: var(--text-body-sm);
}
.crumbs a { color: var(--color-steel-fog); }
.crumbs a:hover { color: var(--color-obsidian-core); }
.crumbs [aria-current] { font-weight: var(--font-weight-medium); }
.crumb-sep { color: var(--color-pewter-mist); }

.admin-drill-row {
  grid-template-columns: minmax(160px, 1.5fr) minmax(140px, 1fr) 110px 110px;
  align-items: center;
  color: var(--color-obsidian-core);
}
/* The whole row is the target, so it must not read as a paragraph of links.
 * The name carries the affordance on hover; the figures beside it stay plain
 * text, which is what they are. */
a.admin-drill-row { text-decoration: none; }
a.admin-drill-row:hover { background: var(--color-frost-field); }
a.admin-drill-row:hover .admin-drill-name { text-decoration: underline; }
.admin-drill-name { font-weight: var(--font-weight-medium); display: flex; align-items: center; gap: var(--spacing-8); }
/* The build a terminal reports, beside its code. Sits inline rather than in
 * its own column so the four-column drill grid is untouched; it is a fact
 * about the row, not a measure to sort by. */
.admin-drill-sub { font-size: var(--text-caption); font-weight: var(--font-weight-regular); }
a.admin-drill-row:hover .admin-drill-sub { text-decoration: none; }
.admin-drill-total { text-align: right; }
/* The internal owner is reachable but visibly not part of the business. */
.admin-drill-internal { opacity: .75; }
.admin-op-summary { margin-bottom: var(--spacing-24); }
.admin-op-actions-card {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  flex-wrap: wrap;
}
.admin-op-fleet-link { margin-top: var(--spacing-16); }

/* By operator, on Rewards. This row had no grid of its own and fell through to
 * the .tx-row default, so five values shared whatever columns that gave and the
 * operator name ended up under its own numbers. */
.admin-vp-op-row {
  grid-template-columns: minmax(180px, 1.5fr) 110px 120px 140px 100px;
  align-items: center;
}

@media (max-width: 640px) {
  /* Four bare values with no words of their own, so each says what it is. */

  .admin-vp-op-row > div:nth-child(1) { grid-area: name; }
  .admin-vp-op-row > div:nth-child(2) { grid-area: card; }
  .admin-vp-op-row > div:nth-child(3) { grid-area: wallet; }
  .admin-vp-op-row > div:nth-child(4) { grid-area: outstanding; }
  .admin-vp-op-row > div:nth-child(5) { grid-area: members; }
  .admin-vp-op-row > div:nth-child(n + 2)::before {
    display: block;
    margin-bottom: 4px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }
  .admin-vp-op-row > div:nth-child(2)::before { content: "Card rate"; }
  .admin-vp-op-row > div:nth-child(3)::before { content: "Wallet rate"; }
  .admin-vp-op-row > div:nth-child(4)::before { content: "Outstanding"; }
  .admin-vp-op-row > div:nth-child(5)::before { content: "Members"; }


  .admin-drill-row > div:nth-child(1) { grid-area: name; }
  .admin-drill-row > div:nth-child(2) { grid-area: terminals; }
  .admin-drill-row > div:nth-child(3) { grid-area: sales; }
  .admin-drill-row > div:nth-child(4) { grid-area: total; align-self: center; }
}

/* --- Notification badge --------------------------------------------------- */
/* A small red circle, per direction: a count inside it at this size becomes
 * unreadable on the rail, and "something new is here" is the whole message. */
.rail-badge {
  display: inline-block;
  width: 8px;
  height: 8px;
  margin-left: var(--spacing-8);
  border-radius: var(--radius-pill);
  background: var(--color-cinnabar);
  vertical-align: middle;
}
.sp-resolved {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  flex-wrap: wrap;
}

/* --- Product ordering ----------------------------------------------------- */
/* Same affordance as the Admin Console's Advertising list, deliberately: an
 * operator who learns one has learned the other. */
.cell-handle { color: var(--color-steel-fog); vertical-align: middle; }
tr[draggable="true"] { cursor: grab; }
tr.is-dragging { opacity: .4; }

/* --- Dashboard and Analytics ---------------------------------------------- */
.dash-summary { margin-bottom: var(--spacing-24); }
.dash-row {
  grid-template-columns: minmax(120px, 1.2fr) minmax(110px, 1fr) 110px 110px;
  align-items: center;
}
.dash-taken { text-align: right; }

/* The two rail cards, equal width side by side; each line inside is a
 * label-figure pair on one row, the same quiet list the receipt sheet uses. */
.po-rails {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-16);
}
@media (max-width: 640px) { .po-rails { grid-template-columns: 1fr; } }
.po-asset-line {
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: var(--spacing-8);
  padding: var(--spacing-8) 0;
}

/* Live status: one plain row per open issue, a square for the state and a
 * sentence for anyone who does not see the color, same contract as .status.
 * No amber: design.md admits no color beside teal and cinnabar, so low stock
 * takes the Steel Fog square and the sentence does the work. */
.dash-issues {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
  margin-top: var(--spacing-24);
  font-size: var(--text-body-sm);
}
.dash-issue { display: flex; align-items: center; gap: var(--spacing-8); }
.admin-wallet-banner {
  display: flex;
  align-items: center;
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-16);
}
.dash-alert-row {
  grid-template-columns: minmax(140px, 1fr) 120px auto;
  align-items: center;
}
.tag-danger {
  background: var(--color-cinnabar);
  color: var(--color-chalk-cloud);
}

/* The bar chart this page used is gone; the settlement chart and the Analytics
 * line chart both use the shared .chart-* vocabulary now. Only the height
 * classes below survived, because the settlement chart's stacked segments
 * still take them. */

@media (max-width: 640px) {

  .dash-row > div:nth-child(1) { grid-area: a; }
  .dash-row > div:nth-child(2) { grid-area: b; justify-self: end; }
  .dash-row > div:nth-child(3) { grid-area: c; }
  .dash-row > div:nth-child(4) { grid-area: d; text-align: right; }
}

/* The stat strip: one top-level card, Frost Field, the stats side by side with
 * hairline column rules and no inner cards. Two per row below lg, one below sm. */
.stat-strip {
  display: grid;
  grid-template-columns: repeat(5, minmax(0, 1fr));
  padding: 0;
  background: var(--color-frost-field);
}
/* Every cell carries both rules and the edges give theirs back, so the grid
 * rewraps at any column count without a bespoke border rule per breakpoint. */
.stat-strip > div {
  padding: var(--spacing-24);
  min-width: 0;
  border-left: 1px solid var(--color-pewter-mist);
  border-top: 1px solid var(--color-pewter-mist);
}
.stat-strip > div:nth-child(5n + 1) { border-left: none; }
.stat-strip > div:nth-child(-n + 5) { border-top: none; }
/* Four across, for a strip standing beside a lead card rather than carrying
 * the page alone. Same trick as above: every cell has both rules and the
 * edge cells give theirs back, restated per breakpoint because the count
 * changes. */
/* Two across, for a pair. Content's storage figures were two divs in a plain
 * card with nothing between them; design.md puts related stats in one card
 * separated by hairline column rules, which is what the strip is. */
.stat-strip-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.stat-strip-2 > div { border-top: none; }
.stat-strip-2 > div:nth-child(2n + 1) { border-left: none; }

/* Three across, for a strip standing beside a lead card that carries the
 * fourth figure. */
.stat-strip-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.stat-strip-3 > div { border-top: none; }
.stat-strip-3 > div:nth-child(3n + 1) { border-left: none; }

.stat-strip-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.stat-strip-4 > div:nth-child(4n + 1) { border-left: none; }
.stat-strip-4 > div:nth-child(-n + 4) { border-top: none; }
@media (max-width: 1200px) {
  .stat-strip { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .stat-strip > div:nth-child(5n + 1) { border-left: 1px solid var(--color-pewter-mist); }
  .stat-strip > div:nth-child(-n + 5) { border-top: 1px solid var(--color-pewter-mist); }
  .stat-strip > div:nth-child(3n + 1) { border-left: none; }
  .stat-strip > div:nth-child(-n + 3) { border-top: none; }
  .stat-strip-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stat-strip-4 > div:nth-child(4n + 1) { border-left: 1px solid var(--color-pewter-mist); }
  .stat-strip-4 > div:nth-child(-n + 4) { border-top: 1px solid var(--color-pewter-mist); }
  .stat-strip-4 > div:nth-child(odd) { border-left: none; }
  .stat-strip-4 > div:nth-child(-n + 2) { border-top: none; }
}
@media (max-width: 900px) {
  .stat-strip { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .stat-strip > div:nth-child(3n + 1) { border-left: 1px solid var(--color-pewter-mist); }
  .stat-strip > div:nth-child(-n + 3) { border-top: 1px solid var(--color-pewter-mist); }
  .stat-strip > div:nth-child(odd) { border-left: none; }
  .stat-strip > div:nth-child(-n + 2) { border-top: none; }
}
@media (max-width: 600px) {
  .stat-strip { grid-template-columns: minmax(0, 1fr); }
  .stat-strip > div { border-left: none; border-top: 1px solid var(--color-pewter-mist); }
  .stat-strip > div:first-child { border-top: none; }
  .stat-strip-4 { grid-template-columns: minmax(0, 1fr); }
}

/* --- The settlement chart -------------------------------------------------
 * One hue in three renderings, which is the whole argument the page makes:
 * solid teal has settled, 30% teal is pending, an outline is captured and not
 * settled yet. Wallet money is solid the day it lands; card money is not.
 * Flat, one accent, no second color, and never Cinnabar in a series. */
.chart-head {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  flex-wrap: wrap;
  margin-bottom: var(--spacing-24);
}
.chart-legend { display: flex; align-items: center; gap: var(--spacing-16); flex-wrap: wrap; }
.chart-key {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-8);
  font-size: var(--text-caption);
  color: var(--color-steel-fog);
}
.chart-swatch { width: 12px; height: 12px; flex: none; }
.chart-swatch.is-settled { background: var(--color-tidal-teal); }
.chart-swatch.is-pending {
  background: color-mix(in srgb, var(--color-tidal-teal) 30%, var(--color-chalk-cloud));
}
.chart-swatch.is-awaiting { background: transparent; border: 1px solid var(--color-pewter-mist); }

/* A segment is a text button, so it takes the 8px radius and never a pill. */
.segmented {
  display: inline-flex;
  height: 40px;
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-buttons);
  overflow: hidden;
  flex: none;
}
.segment {
  appearance: none;
  border: none;
  background: var(--color-chalk-cloud);
  color: var(--color-obsidian-core);
  font: inherit;
  font-weight: var(--font-weight-medium);
  padding: 0 var(--spacing-16);
  cursor: pointer;
  transition: background-color var(--duration-instant) var(--easing-instant),
              color var(--duration-instant) var(--easing-instant);
}
.segment + .segment { border-left: 1px solid var(--color-pewter-mist); }

.chart-plot { display: flex; gap: var(--spacing-8); }
.chart-y {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  align-items: flex-end;
  height: 200px;
  font-size: var(--text-caption);
  flex: none;
}
.chart-area { position: relative; flex: 1; min-width: 0; height: 200px; }
/* Horizontal only, per design.md: vertical gridlines fence the bars in. */
.chart-grid {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
}
.chart-grid i { display: block; height: 1px; background: var(--color-pewter-mist); }
.chart-cols { position: relative; display: flex; align-items: flex-end; gap: 2px; height: 100%; }
.chart-col { position: relative; flex: 1; min-width: 0; height: 100%; display: flex; align-items: flex-end; }
/* The hovered column gets its Frost Field band, full chart height. */
.chart-col:hover, .chart-col:focus-visible { background: var(--color-frost-field); }
.chart-stack {
  display: flex;
  flex-direction: column-reverse;
  justify-content: flex-start;
  width: 100%;
  height: 100%;
}
.chart-seg { width: 100%; }
.chart-seg.has-value { min-height: 2px; }
.chart-seg.is-settled { background: var(--color-tidal-teal); }
.chart-seg.is-pending {
  background: color-mix(in srgb, var(--color-tidal-teal) 30%, var(--color-chalk-cloud));
}
.chart-seg.is-awaiting.has-value {
  border: 1px solid var(--color-pewter-mist);
  border-bottom: none;
}

.chart-tip {
  position: absolute;
  bottom: calc(100% + var(--spacing-8));
  left: 50%;
  transform: translateX(-50%);
  min-width: 220px;
  padding: var(--spacing-16);
  z-index:var(--z-toolbar);
  display: none;
  box-shadow: var(--shadow-card-hover), var(--shadow-cookie-sheet);
}
.chart-col:hover .chart-tip, .chart-col:focus-visible .chart-tip { display: block; }
.chart-tip-head {
  margin: 0 0 var(--spacing-8);
  font-size: var(--text-caption);
  font-weight: var(--font-weight-medium);
}
.chart-tip-row {
  display: grid;
  grid-template-columns: 12px 1fr auto;
  align-items: center;
  gap: var(--spacing-8);
  margin: 0;
  padding: 2px 0;
  font-size: var(--text-caption);
  color: var(--color-steel-fog);
}
.chart-tip-total { border-top: 1px solid var(--color-pewter-mist); margin-top: var(--spacing-8); padding-top: var(--spacing-8); }
.chart-axis { display: flex; justify-content: space-between; margin-top: var(--spacing-8); font-size: var(--text-caption); }
.chart-disputed { display: inline-flex; align-items: center; gap: var(--spacing-8); }
.dash-payout-row { grid-template-columns: minmax(160px, 1.4fr) minmax(120px, 1fr) 130px minmax(120px, 1fr); }

@media (max-width: 640px) {
  /* The bars keep their height and the plot scrolls, rather than thirty
   * columns compressing into stripes. The tooltip is a pointer affordance and
   * a phone has none; its figures stay in the column's text alternative. */
  .chart-area { overflow-x: auto; }
  .chart-cols { min-width: 480px; }
  .chart-tip { display: none !important; }

  .dash-payout-row > div:nth-child(1) { grid-area: period; font-weight: var(--font-weight-medium); }
  .dash-payout-row > div:nth-child(2) { grid-area: status; justify-self: end; }
  .dash-payout-row > div:nth-child(3) { grid-area: count; text-align: left; }
  .dash-payout-row > div:nth-child(3)::after { content: " settlements"; }
  .dash-payout-row > div:nth-child(4) { grid-area: amount; }
}

/* Table discipline: 48px rows, 16px horizontal cell padding, micro headers,
 * body-sm cells, numbers right-aligned, the gross column in Medium. No row
 * hover yet: a lift to Frost Field promises a click, and the detail sheet
 * that click would open is a later page. */


.dash-num { text-align: right; }
.dash-gross { text-align: right; font-weight: var(--font-weight-medium); }
.dash-terminal-row {
  grid-template-columns: minmax(100px, 0.9fr) minmax(180px, 1.4fr) 110px 130px minmax(140px, 1fr);
}
.dash-sales-row {
  grid-template-columns: minmax(180px, 1.6fr) 110px minmax(110px, 0.9fr) minmax(140px, 1fr);
}

.dash-section { margin-top: var(--section-gap-working); }
.dash-issue { display: flex; align-items: center; gap: var(--spacing-8); }
/* A link is small text, so it is Obsidian Core, never the browser's blue. */
.hint a { color: var(--color-obsidian-core); }

@media (max-width: 640px) {
  /* Each row carries its own labels' worth of structure: what, then the money.
   * With the header row gone, a bare count or timestamp needs its word back. */
  /* One inset for every row on a phone, not one per page. .tx-row is
     16px 24px, and only .dash-table overrode it, so the Portal's tables sat at
     16 and the console's at 24 and a reader moving between them felt the page
     shift under them. Measured across all eighteen before and after. */



  /* And one rhythm between sections. Five values were in play at 390: a
     section heading brought 40 above and 16 below, panels 40, the working
     section gap 32, and some cards their own. On a screen this narrow the
     difference reads as inconsistency rather than as hierarchy. */
  .section-heading { margin: var(--spacing-24) 0 var(--spacing-8); }

  /* 64px above and below an empty state is a third of a phone screen spent
     saying there is nothing here. The message is the same at half of it. */
  .empty { padding: var(--spacing-32) var(--spacing-16); }

  /* By terminal reflowed to four bare values, so a phone showed a code, an
     asset and then 4 and 15 with nothing saying which was which. The header
     row is hidden here, so each cell says what it is. */
  .po-machine-row > div:nth-child(3)::before { content: "Sales"; }
  .po-machine-row > div:nth-child(4)::before { content: "Received"; }
  .po-machine-row > div:nth-child(3)::before,
  .po-machine-row > div:nth-child(4)::before {
    display: block;
    margin-bottom: 2px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }

  .panel { margin-bottom: var(--spacing-24); }
  .dash-section { margin-top: var(--spacing-24); }

  .dash-terminal-row > div:nth-child(1) { grid-area: code; font-weight: var(--font-weight-medium); }
  .dash-terminal-row > div:nth-child(2) { grid-area: status; justify-self: end; }
  .dash-terminal-row > div:nth-child(3) { grid-area: sales; text-align: left; }
  .dash-terminal-row > div:nth-child(3)::after { content: " sales today"; }
  .dash-terminal-row > div:nth-child(4) { grid-area: revenue; }
  .dash-terminal-row > div:nth-child(5) { grid-area: last; text-align: left; }
  .dash-terminal-row > div:nth-child(5)::before { content: "Last sale "; }

  .dash-sales-row > div:nth-child(1) { grid-area: lines; font-weight: var(--font-weight-medium); }
  .dash-sales-row > div:nth-child(2) { grid-area: total; }
  .dash-sales-row > div:nth-child(3) { grid-area: method; }
  .dash-sales-row > div:nth-child(4) { grid-area: when; }
}

/* --- Stock alert bell ----------------------------------------------------- */
.topbar-alerts { display: flex; align-items: center; }
.topbar-bell { position: relative; }
.topbar-badge {
  position: absolute;
  top: 6px;
  right: 6px;
  width: 8px;
  height: 8px;
  border-radius: var(--radius-pill);
  background: var(--color-cinnabar);
}
.alerts-list { display: flex; flex-direction: column; gap: var(--spacing-8); }
.alerts-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.alerts-row:last-child { border-bottom: none; }

/* --- Payouts: the configurable object and its batches ---------------------
 * design.md's three designed states for one object. Managing addresses stays
 * on Settings: the expanded state links there rather than growing a second
 * editor for the same rows. */
.po-proceeds {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: var(--spacing-24);
  align-items: end;
  padding: clamp(24px, 4vw, 40px);
  margin-bottom: var(--section-gap-working);
  border-radius: var(--radius-xl);
  color: var(--color-chalk-cloud);
  background: var(--color-obsidian-core);
  box-shadow: var(--shadow-low);
}
.po-proceeds-head {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: var(--spacing-16);
  align-items: start;
}
.po-asset-mark {
  display: grid;
  place-items: center;
  width: 56px;
  height: 56px;
  flex: 0 0 56px;
  border-radius: 50%;
  background: var(--color-tidal-teal);
  overflow: hidden;
}
.po-asset-mark img {
  display: block;
  width: 38px;
  height: 38px;
  object-fit: contain;
}
.po-eyebrow {
  margin: 0 0 var(--spacing-8);
  color: color-mix(in srgb, var(--color-chalk-cloud) 70%, transparent);
  font-size: var(--text-caption);
  font-weight: var(--font-weight-semibold);
  letter-spacing: .08em;
  text-transform: uppercase;
}
.po-proceeds-amount {
  margin: 0;
  font-size: clamp(2.25rem, 5vw, 4.25rem);
  font-weight: var(--font-weight-medium);
  letter-spacing: -.045em;
  line-height: 1;
}
.po-proceeds-detail {
  margin: var(--spacing-12) 0 0;
  color: color-mix(in srgb, var(--color-chalk-cloud) 72%, transparent);
  font-size: var(--text-body-sm);
}
.po-direct-badge {
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-8);
  min-height: 34px;
  padding: 0 var(--spacing-12);
  border: 1px solid color-mix(in srgb, var(--color-chalk-cloud) 18%, transparent);
  border-radius: var(--radius-pill);
  color: var(--color-chalk-cloud);
  font-size: var(--text-caption);
  white-space: nowrap;
}
.po-proceeds-actions {
  display: flex;
  gap: var(--spacing-16);
}
.po-action {
  display: grid;
  justify-items: center;
  gap: var(--spacing-8);
  min-width: 72px;
  color: color-mix(in srgb, var(--color-chalk-cloud) 84%, transparent);
  font-size: var(--text-caption);
  text-decoration: none;
}
.po-action-icon {
  display: grid;
  place-items: center;
  width: 48px;
  height: 48px;
  border-radius: 50%;
  color: var(--color-chalk-cloud);
  background: color-mix(in srgb, var(--color-chalk-cloud) 9%, transparent);
  transition: background var(--duration-instant) var(--easing-instant);
}
.po-action:hover .po-action-icon { background: color-mix(in srgb, var(--color-chalk-cloud) 16%, transparent); }
.po-action:focus-visible { outline: 2px solid var(--color-tidal-teal); outline-offset: 5px; border-radius: var(--radius-sm); }

.po-split {
  display: grid;
  grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr);
  gap: var(--spacing-16);
  margin-top: var(--section-gap-working);
}
@media (max-width: 900px) { .po-split { grid-template-columns: minmax(0, 1fr); } }

.po-object { display: flex; flex-direction: column; gap: var(--spacing-16); }
.po-object > .stat-label { margin: 0; }
.po-object-line { margin: 0; font-size: var(--text-body-sm); }
.po-object-head {
  display: flex;
  align-items: center;
  gap: var(--spacing-8);
  width: 100%;
  padding: 0;
  background: none;
  border: none;
  font: inherit;
  color: var(--color-obsidian-core);
  cursor: pointer;
  text-align: left;
}
.po-object-id { font-weight: var(--font-weight-medium); }
.po-object-chevron {
  margin-left: auto;
  display: inline-flex;
  color: var(--color-steel-fog);
  transition: transform var(--duration-instant) var(--easing-instant);
}
.po-object-chevron.is-open { transform: rotate(180deg); }
.po-object-actions { display: flex; flex-wrap: wrap; gap: var(--spacing-8); }

/* Initiated carries the period beneath it, so the batch reads as a window
 * rather than a single day the money happened to be grouped on. */
.po-batch-row { grid-template-columns: minmax(160px, 1.4fr) minmax(120px, 1fr) 130px minmax(120px, 1fr); }
.po-batch-period { display: block; font-size: var(--text-caption); }

@media (max-width: 640px) {
  .po-proceeds { grid-template-columns: minmax(0, 1fr); align-items: start; }
  .po-proceeds-head { grid-template-columns: auto minmax(0, 1fr); }
  .po-direct-badge { grid-column: 1 / -1; justify-self: start; }
  .po-proceeds-actions { padding-left: 72px; }
  .po-asset-mark { width: 48px; height: 48px; }
  .po-asset-mark img { width: 32px; height: 32px; }

  .po-batch-row > div:nth-child(1) { grid-area: initiated; font-weight: var(--font-weight-medium); }
  .po-batch-row > div:nth-child(2) { grid-area: status; justify-self: end; }
  .po-batch-row > div:nth-child(3) { grid-area: count; text-align: left; }
  .po-batch-row > div:nth-child(3)::after { content: " settlements"; }
  .po-batch-row > div:nth-child(4) { grid-area: amount; }

  .po-machine-row > div:nth-child(1) { grid-area: code; font-weight: var(--font-weight-medium); }
  .po-machine-row > div:nth-child(2) { grid-area: asset; justify-self: end; }
  .po-machine-row > div:nth-child(3) { grid-area: sales; text-align: left; }
  .po-machine-row > div:nth-child(4) { grid-area: received; }
}

/* --- Rewards: the configuration form --------------------------------------
 * One top-level card, per the brief. The dark feature surface beside the two
 * stat cards is this screen's one Midnight Slate, carrying credit outstanding,
 * which is the single figure the page exists to answer. */
.vp-cards {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--spacing-16);
  align-items: stretch;
}
.vp-cards .po-lead { grid-column: auto; min-height: 0; }
@media (max-width: 900px) { .vp-cards { grid-template-columns: minmax(0, 1fr); } }

.vp-config {
  margin-top: var(--section-gap-working);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-24);
}
.vp-config-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--spacing-16);
}
.vp-config-title {
  margin: 0;
  font-size: var(--text-heading-sm);
  line-height: var(--leading-heading-sm);
  font-weight: var(--font-weight-medium);
}
.vp-config-head .hint { margin: var(--spacing-8) 0 0; }
.vp-config-actions { display: flex; justify-content: flex-start; }
.vp-config-section {
  border-top: 1px solid var(--color-pewter-mist);
  padding-top: var(--spacing-24);
  display: flex;
  flex-direction: column;
  gap: var(--spacing-8);
}
.vp-config-section .label { margin: 0; }
.vp-config-section .hint { margin: 0 0 var(--spacing-8); }
.vp-terminals { display: flex; flex-direction: column; }
.vp-terminal-row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.vp-terminal-row:last-child { border-bottom: none; }

/* --- Analytics -----------------------------------------------------------
 * Stat cards, a row of three, each a figure with a micro tag carrying the
 * qualifier. A bordered Chalk Cloud card at the nested radius, not a strip:
 * these stand apart because each answers a different question. */
/* The lead card takes the wider track, the same weighting Rewards uses, so
 * the dark surface reads as the page's figure rather than as one of three. */
.an-cards {
  display: grid;
  grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr) minmax(0, 1fr);
  gap: var(--spacing-16);
  align-items: stretch;
}
.an-cards .po-lead { grid-column: auto; min-height: 0; }
@media (max-width: 900px) { .an-cards { grid-template-columns: minmax(0, 1fr); } }
.an-card { display: flex; flex-direction: column; gap: var(--spacing-8); }
.an-card .stat-label, .an-card .stat-figure { margin: 0; }
.an-card-tag { margin: 0; }

/* The line sits under its own hover columns: the SVG draws the series, the
 * columns carry the tooltip, so one chart vocabulary serves both shapes. */
.an-line { position: absolute; inset: 0; width: 100%; height: 100%; }
.an-cols { position: relative; z-index:var(--z-decoration); }
.an-cols .chart-col:hover, .an-cols .chart-col:focus-visible {
  background: color-mix(in srgb, var(--color-frost-field) 70%, transparent);
}
.an-tabs { margin-top: var(--section-gap-working); margin-bottom: var(--spacing-16); }
.an-product-row { grid-template-columns: minmax(180px, 1.6fr) 110px minmax(120px, 1fr); }
.an-ad-row { grid-template-columns: minmax(180px, 1.4fr) minmax(140px, 1fr) 120px; }

@media (max-width: 640px) {

  .an-product-row > div:nth-child(1), .an-ad-row > div:nth-child(1) {
    grid-area: name; font-weight: var(--font-weight-medium);
  }
  .an-product-row > div:nth-child(2) { grid-area: meta; text-align: left; }
  .an-product-row > div:nth-child(2)::after { content: " units"; }
  .an-product-row > div:nth-child(3) { grid-area: value; }
  .an-ad-row > div:nth-child(2) { grid-area: meta; }
  .an-ad-row > div:nth-child(3) { grid-area: value; }
}

/* --- Terminals: the device table and its sheet ----------------------------
 * A row is the device's own control, the way a transaction row is the record's.
 * The chip stays in the row because a terminal is a physical object and the
 * glyph is how the eye finds one in a list of codes. */
.trm-row {
  grid-template-columns: minmax(150px, 1fr) minmax(150px, 1.1fr) minmax(130px, 1fr) 110px 110px;
  align-items: center;
}
.trm-ident { display: inline-flex; align-items: center; gap: var(--spacing-8); min-width: 0; }
.trm-ident .chip { width: 32px; height: 32px; }
.trm-retired-row {
  grid-template-columns: minmax(150px, 1fr) minmax(150px, 1.1fr) auto;
  align-items: center;
}
.trm-retired-action { text-align: right; }

.trm-sheet-code { margin: 0; }
.trm-unit {
  display: flex;
  align-items: center;
  gap: var(--spacing-16);
  padding: var(--spacing-16);
  background: var(--color-frost-field);
  border-radius: var(--radius-cards);
}
.trm-unit-text { display: flex; flex-direction: column; min-width: 0; }
.trm-unit-name { font-weight: var(--font-weight-medium); }

@media (max-width: 640px) {

  .trm-row > div:nth-child(1) { grid-area: ident; font-weight: var(--font-weight-medium); }
  .trm-row > div:nth-child(2) { grid-area: status; justify-self: end; }
  .trm-row > div:nth-child(3) { grid-area: address; }
  .trm-row > div:nth-child(4) { grid-area: software; text-align: right; }
  .trm-row > div:nth-child(5) { grid-area: impressions; text-align: left; }
  .trm-row > div:nth-child(5)::after { content: " impressions"; }

  .trm-retired-row > div:nth-child(1) { grid-area: ident; font-weight: var(--font-weight-medium); }
  .trm-retired-row > div:nth-child(2) { grid-area: status; }
  .trm-retired-action { grid-area: action; text-align: left; }
}

/* --- The record sheet -----------------------------------------------------
 * design.md: a 480px panel from the right edge, surface radius on its leading
 * corners, the cookie-sheet shadow, the page dimmed beneath it. It is the one
 * element in the portal that carries that shadow, because it is the one that
 * floats. Full screen on a phone. */
.sheet-side {
  margin: 0 0 0 auto;
  height: 100dvh;
  max-height: 100dvh;
  width: var(--sheet-width);
  max-width: 100%;
  border-radius: var(--radius-surface) 0 0 var(--radius-surface);
  box-shadow: var(--shadow-cookie-sheet);
  padding: 0;
}
.sheet-side::backdrop { background: rgba(10, 13, 17, 0.35); }
.sheet-side-body {
  display: flex;
  flex-direction: column;
  gap: var(--spacing-16);
  padding: var(--card-padding);
  height: 100%;
  overflow-y: auto;
}
.sheet-side-body .stat-figure { margin: 0; }

/* Tabs: the active one in Obsidian under a 2px Obsidian rule, the rest Steel
 * Fog. A text button, so no pill. */
.tabs { display: flex; gap: var(--spacing-24); border-bottom: 1px solid var(--color-pewter-mist); }
.tab {
  appearance: none;
  background: none;
  border: none;
  border-bottom: 2px solid transparent;
  margin-bottom: -1px;
  padding: var(--spacing-8) 0;
  font: inherit;
  font-weight: var(--font-weight-medium);
  color: var(--color-steel-fog);
  cursor: pointer;
  transition: color var(--duration-instant) var(--easing-instant),
              border-color var(--duration-instant) var(--easing-instant);
}
.tab:hover { color: var(--color-obsidian-core); }

.kv { display: flex; flex-direction: column; }
.kv-row {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
  font-size: var(--text-body-sm);
}
.kv-row:last-child { border-bottom: none; }
.kv-row > span:last-child { text-align: right; overflow-wrap: anywhere; }

@media (max-width: 640px) {
  .sheet-side {
    width: 100%;
    height: 100dvh;
    border-radius: 0;
    margin: 0;
  }
}

/* --- Unpublished changes -------------------------------------------------- */
.admin-draft-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  flex-wrap: wrap;
  margin-bottom: var(--spacing-16);
  border-left: 3px solid var(--color-tidal-teal);
}

/* --- Releases -------------------------------------------------------------
 * This page shipped without a single rule of its own, so every card sat on the
 * default flow: no rhythm between builds, a rollout list with no alignment,
 * and the download link jammed against whatever ended above it. It is the page
 * a build is pushed from, so it is worth reading at a glance.
 *
 * The scale is the one everything else here uses. Nothing new is introduced.
 */
.admin-release + .admin-release { margin-top: var(--spacing-16); }

.admin-release .panel-title .muted {
  font-weight: 400;
  margin-left: var(--spacing-8);
}

/* One row per rollout: label left, state and its control right, and the rows
 * aligned to each other rather than to their own contents. */
.admin-rollout-row {
  display: grid;
  grid-template-columns: 1fr auto auto;
  align-items: center;
  gap: var(--spacing-16);
  padding: var(--spacing-8) 0;
}
.admin-rollout-row + .admin-rollout-row { border-top: 1px solid var(--color-pewter-mist); }

/* The footer carries the two actions that are about the file rather than the
 * rollout, so it is separated from the body rather than continuing it. */
.release-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  flex-wrap: wrap;
  margin-top: var(--spacing-24);
  padding-top: var(--spacing-16);
  border-top: 1px solid var(--color-pewter-mist);
}

/* A section break, not another card heading: the gap above it is what says
 * the list ended. */
.admin-archived-head {
  margin-top: var(--spacing-48);
  padding-top: var(--spacing-24);
  border-top: 1px solid var(--color-pewter-mist);
}

/* Archived builds stay legible and stop competing. Recessive by surface, not
 * by opacity: half-transparent text on a white card is just low contrast. */
.admin-release[data-archived="true"] {
  background: var(--color-frost-field);
  box-shadow: none;
}

/* A rate list wider than its card scrolls rather than being cut off.
 *
 * The four columns have minimum widths that add up to about 680px plus gaps,
 * so below roughly 1100px of window the Change rate and Set rate buttons went
 * off the right edge of the card with nothing to say they were there. The
 * columns are deliberate and worth keeping, so the list scrolls instead: the
 * card keeps its shape and nothing is hidden. */
.admin-contract-list { overflow-x: auto; }
.admin-contract { min-width: 700px; }

/* Fleet overview and terminal operations. The default view is a compact
 * operations list; controls expand in place, so scanning twenty terminals is
 * not twenty copies of the same form. */
.admin-fleet-summary {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin-bottom: var(--spacing-24);
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-cards);
  overflow: hidden;
}
.admin-fleet-summary > div {
  display: grid;
  gap: var(--spacing-8);
  min-height: 92px;
  padding: var(--spacing-16) var(--spacing-24);
  border-right: 1px solid var(--color-pewter-mist);
}
.admin-fleet-summary > div:last-child { border-right: 0; }
.admin-fleet-summary .eyebrow {
  color: var(--color-steel-fog);
  font-size: var(--text-caption);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.admin-fleet-summary strong { font-size: var(--text-heading); font-weight: var(--font-weight-medium); }
.admin-console-note {
  display: grid;
  grid-template-columns: 8px minmax(0, 1fr);
  align-items: start;
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-24);
  padding: var(--spacing-16);
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-cards);
  background: var(--color-frost-field);
}
.admin-console-note p { margin: 0; color: var(--color-steel-fog); }
.admin-console-note strong { color: var(--color-obsidian-core); font-weight: var(--font-weight-medium); }

.admin-terminal-list { padding: 0; overflow: hidden; }
.admin-terminal-row {
  display: grid;
  grid-template-columns: 112px minmax(150px, 1fr) 118px 100px minmax(150px, 1fr) minmax(150px, 1.15fr) 24px;
  align-items: center;
  gap: var(--spacing-16);
  min-height: 64px;
  padding: 12px var(--spacing-24);
}
.admin-terminal-head {
  min-height: 44px;
  color: var(--color-steel-fog);
  background: var(--color-frost-field);
  font-size: var(--text-caption);
  font-weight: var(--font-weight-medium);
  letter-spacing: .04em;
  text-transform: uppercase;
}
.admin-terminal-update{ min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-terminal-row small { display: block; color: var(--color-steel-fog); font-size: var(--text-caption); }

/* Two facts a terminal reports about itself, and one the Platform works out
 * about it. A description list rather than more hint paragraphs: these are
 * label and value pairs, and the labels are what make a wall of sentences
 * scannable when there are twenty machines rather than one. */
.admin-terminal-facts {
  display: grid;
  align-content: start;
  gap: 0;
  margin: 0;
  font-size: var(--text-caption);
  line-height: var(--leading-caption);
}
.admin-terminal-facts > div {
  display: grid;
  gap: 3px;
  padding: 12px 0;
  border-bottom: 1px solid var(--color-pewter-mist);
}
.admin-terminal-facts > div:first-child { padding-top: 0; }
.admin-terminal-facts dt {
  color: var(--color-steel-fog);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.admin-terminal-facts dd { margin: 0; color: var(--color-obsidian-core); }
.admin-terminal-fault { font-family: var(--font-mono, monospace); }

@media (max-width: 1180px) {
  .admin-terminal-head { display: none; }
  .admin-terminal-row {
    grid-template-columns: minmax(120px, .7fr) minmax(180px, 1fr) minmax(120px, .7fr) 24px;
    grid-template-areas:
      "terminal business health chevron"
      "software security update chevron";
    row-gap: var(--spacing-8);
    min-height: 92px;
  }
  .admin-terminal-update { grid-area: update; }
}
@media (max-width: 720px) {
  .admin-fleet-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .admin-fleet-summary > div:nth-child(2) { border-right: 0; }
  .admin-fleet-summary > div:nth-child(-n + 2) { border-bottom: 1px solid var(--color-pewter-mist); }
  .admin-terminal-row {
    grid-template-columns: 1fr auto 24px;
    grid-template-areas:
      "terminal health chevron"
      "business business chevron"
      "software software chevron"
      "security security chevron"
      "update update chevron";
    gap: 5px 12px;
    padding: var(--spacing-16);
  }
}

/* --- Operator Portal redesign: shared additions ---------------------------
 * The rail, card, tag, status, tabs and side-sheet patterns already existed
 * and are reused as-is (they are shared with the Admin Console; changing
 * their meaning here would silently redesign that too). What follows is the
 * handful of patterns the reference introduced that this file did not have
 * yet: a metrics row, a warning tone alongside the existing live/danger
 * tags, and the location/machine card grids. */

.tag-warning {
  background: var(--surface-warning);
  color: var(--color-warning);
  border-color: transparent;
}

/* design.md 13.1's tertiary button: text only, with a real hover and focus
 * surface rather than nothing. Did not exist; "View all"-style row actions
 * had nothing to render as. */
.link-button {
  padding: 0;
  border: 0;
  color: var(--color-obsidian-core);
  background: none;
  font-weight: var(--font-weight-medium);
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 3px;
}
.link-button:hover { text-decoration-thickness: 2px; }

/* --- Metrics row (Dashboard) ----------------------------------------------
 * Four summary cards, the first dark. A metric card states label, figure and
 * one line of context; it is not a chart and does not compress two numbers
 * into one bar. */
.metric-grid {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: var(--spacing-16);
}
.metric-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.metric-card {
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  min-height: 132px;
}
.metric-card .eyebrow {
  font-size: var(--text-label);
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--color-steel-fog);
}
.metric-card.card-dark {
  color: var(--color-chalk-cloud);
  background: var(--color-obsidian-core);
}
.metric-card.card-dark .eyebrow,
.metric-card.card-dark .metric-note { color: rgba(255, 255, 255, 0.62); }
.metric-figure {
  margin: var(--spacing-16) 0 0;
  font-size: var(--text-display-sm);
  line-height: 1.1;
  letter-spacing: -0.02em;
  font-weight: var(--font-weight-medium);
  font-variant-numeric: tabular-nums;
}
.metric-note { margin: var(--spacing-8) 0 0; color: var(--color-steel-fog); font-size: var(--text-body-sm); }

/* --- Attention queue (Dashboard) -------------------------------------------
 * A callout is one row of one thing needing a decision: a status square, the
 * fact, and the one link that addresses it. Reuses .status-square rather
 * than a parallel color system. */
.callout {
  display: grid;
  grid-template-columns: 8px minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--spacing-16);
  min-height: 58px;
  padding: var(--spacing-16);
  border-bottom: 1px solid var(--color-pewter-mist);
}
.callout:last-child { border-bottom: none; }
.breadcrumbs {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--spacing-8);
  margin-bottom: var(--spacing-16);
  color: var(--color-steel-fog);
  font-size: var(--text-body-sm);
}
.breadcrumbs a { color: var(--color-obsidian-core); text-decoration: underline; text-underline-offset: 3px; }
.section-header {
  display: flex;
  align-items: flex-end;
  justify-content: space-between;
  gap: var(--spacing-16);
  margin-bottom: var(--spacing-16);
}
.section-header p { margin-top: var(--spacing-4, 4px); color: var(--color-steel-fog); }
/* The Dashboard's existing issue rows, given the shared border and
 * padding rather than a parallel row component. */
.dash-issues .dash-issue { min-height: 58px; padding: var(--spacing-16); border-bottom: 1px solid var(--color-pewter-mist); }
.dash-issues .dash-issue:last-child { border-bottom: none; }
.dash-issues { margin-top: 0; gap: 0; }
.dash-operational-grid {
  display: grid;
  grid-template-columns: minmax(0, 1.7fr) minmax(260px, .85fr);
  gap: var(--spacing-16);
  align-items: stretch;
}
.dash-performance { min-width: 0; }
.dash-summary-column { display: grid; grid-template-rows: 1fr 1fr; gap: var(--spacing-16); }
.dash-summary-list { border-top: 1px solid var(--color-pewter-mist); }
.dash-summary-list > div {
  display: flex;
  justify-content: space-between;
  gap: var(--spacing-16);
  padding: var(--spacing-12) 0;
  border-bottom: 1px solid var(--color-pewter-mist);
  color: var(--color-steel-fog);
}
.dash-summary-list > div:last-child { border-bottom: 0; padding-bottom: 0; }
.dash-summary-list strong { color: var(--color-obsidian-core); font-weight: var(--font-weight-medium); }
.callout-main > strong, .callout-main > span { display: block; }
.callout-main > span {
  margin-top: 1px;
  color: var(--color-steel-fog);
  font-size: var(--text-body-sm);
  overflow-wrap: anywhere;
}

/* --- Location and machine cards (Locations) --------------------------------
 * Same construction as .metric-grid's stat row, reused rather than a third
 * pattern: a figure, a label, a hairline above it. */
.location-grid, .machine-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--spacing-16);
}
.location-card, .machine-card { display: flex; flex-direction: column; gap: var(--spacing-16); }
.location-head, .machine-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--spacing-16);
}
.location-meta, .machine-facts {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--spacing-12);
}
.location-stat, .machine-fact { padding-top: var(--spacing-12); border-top: 1px solid var(--color-pewter-mist); }
.location-stat strong, .location-stat span,
.machine-fact strong, .machine-fact span { display: block; }
.location-stat strong, .machine-fact strong {
  font-size: var(--text-heading-sm);
  font-variant-numeric: tabular-nums;
}
.location-stat span, .machine-fact span { margin-top: 2px; color: var(--color-steel-fog); font-size: var(--text-caption); }
.location-unassigned-row { grid-template-columns: minmax(180px, 1fr) minmax(120px, 1fr) auto; }
.location-machine-row { grid-template-columns: minmax(150px, 1fr) minmax(180px, 1fr) minmax(120px, 1fr) auto; }
.inventory-stock-row { grid-template-columns: minmax(220px, 1.4fr) minmax(100px, 1.2fr) minmax(120px, 1fr) auto auto; }

/* --- Top bar search and help (all Portal pages) ---------------------------
 * Two more icon buttons beside the existing bell, same .iconbtn. */
.topbar-search {
  display: none;
}
@media (min-width: 768px) {
  .topbar-search {
    display: flex;
    align-items: center;
    gap: var(--spacing-8);
    min-height: 40px;
    padding: 0 var(--spacing-12);
    border: 1px solid var(--color-pewter-mist);
    border-radius: var(--radius-buttons);
    color: var(--color-steel-fog);
    background: var(--color-frost-field);
  }
}
/* The icon-only trigger is mobile's version of the same control, not a
 * second feature: exactly one of the two is ever visible. */
#nav-search-open-mobile { display: inline-grid; }
@media (min-width: 768px) { #nav-search-open-mobile { display: none; } }
.topbar-search kbd {
  margin-left: var(--spacing-16, 24px);
  padding: 1px 6px;
  border: 1px solid var(--color-pewter-mist);
  border-radius: 4px;
  font-family: inherit;
  font-size: var(--text-caption);
  color: var(--color-steel-fog);
  background: var(--color-chalk-cloud);
}

/* --- Responsive: Portal redesign pages -------------------------------------
 * Below tablet width the two-column grids collapse to one column, matching
 * the existing pattern used elsewhere in this file for .metric-grid-alike
 * layouts rather than introducing a new breakpoint scheme. */
@media (max-width: 900px) {
  .metric-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .location-grid, .machine-grid { grid-template-columns: 1fr; }
  .dash-operational-grid { grid-template-columns: 1fr; }
  .dash-summary-column { grid-template-columns: repeat(2, minmax(0, 1fr)); grid-template-rows: auto; }
}
@media (max-width: 560px) {
  .metric-grid { grid-template-columns: 1fr; }
  .location-meta, .machine-facts { grid-template-columns: repeat(3, 1fr); }
  .callout { grid-template-columns: 8px minmax(0, 1fr); }
  .callout > .link-button, .callout > a { grid-column: 2; justify-self: start; }
  .dash-summary-column { grid-template-columns: 1fr; }

  .location-unassigned-row > div:nth-child(1) { grid-area: terminal; font-weight: var(--font-weight-medium); }
  .location-unassigned-row > div:nth-child(2) { grid-area: status; }
  .location-unassigned-row > div:nth-child(3) { grid-area: action; align-self: center; }

  .location-machine-row > div:nth-child(1) { grid-area: terminal; font-weight: var(--font-weight-medium); }
  .location-machine-row > div:nth-child(2) { grid-area: name; }
  .location-machine-row > div:nth-child(3) { grid-area: status; }
  .location-machine-row > div:nth-child(4) { grid-area: action; align-self: center; }

  .inventory-stock-row > div:nth-child(1) { grid-area: product; }
  .inventory-stock-row > div:nth-child(2) { grid-area: slot; }
  .inventory-stock-row > div:nth-child(3) { grid-area: state; }
  .inventory-stock-row > div:nth-child(4) { grid-area: stock; }
  .inventory-stock-row > div:nth-child(5) { grid-area: count; align-self: center; }
}

/* =========================================================================
 * Admin Console: the Platform shell redesign.
 *
 * A distinct structural shell from the Portal's 240px .rail: a 64px icon-only
 * command rail that expands over the workspace (not into it, nothing below
 * reflows) on hover or keyboard focus, plus a contextual second column for
 * the active section's own destinations. .topbar keeps its existing meaning,
 * the page-level heading block; .platform-bar is the new persistent strip
 * above it carrying search, environment, and the staff account.
 * ========================================================================= */

.platform-shell { min-height: 100dvh; }
.platform-workspace { min-width: 0; }
.platform-workspace > main {
  padding: var(--spacing-40);
}
.platform-workspace > main > .topbar h1 {
  font-size: var(--text-display);
  line-height: var(--leading-display);
  font-weight: var(--font-weight-medium);
  text-wrap: balance;
}

.command-rail {
  position: fixed;
  inset: 0 auto 0 0;
  z-index:var(--z-rail);
  width: 64px;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: var(--spacing-16);
  padding: 17px 8px 12px;
  overflow: hidden;
  color: var(--color-chalk-cloud);
  background: var(--color-midnight-slate);
  border-right: 1px solid color-mix(in srgb, var(--color-chalk-cloud) 10%, var(--color-midnight-slate));
  transition: width var(--duration-standard) var(--easing-standard),
    box-shadow var(--duration-standard) var(--easing-standard);
}
.command-rail:hover, .command-rail:focus-within {
  width: 220px;
  box-shadow: 14px 0 30px rgba(10, 13, 17, 0.2);
}
.command-rail .logo { width: 28px; height: auto; align-self: flex-start; margin-left: 6px; }
.command-nav {
  display: grid;
  gap: 4px;
  width: 100%;
  overflow-x: hidden;
  overflow-y: auto;
  scrollbar-width: none;
}
.command-item {
  position: relative;
  width: 48px;
  height: 42px;
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 0 13px;
  border-radius: var(--radius-inputs);
  color: #89949e;
  background: transparent;
  white-space: nowrap;
  text-decoration: none;
  transition: width var(--duration-standard) var(--easing-standard),
    color var(--duration-instant) var(--easing-instant),
    background var(--duration-instant) var(--easing-instant);
}
.command-rail:hover .command-item, .command-rail:focus-within .command-item { width: 204px; }
.command-item:hover {
  color: var(--color-chalk-cloud);
  background: color-mix(in srgb, var(--color-chalk-cloud) 10%, var(--color-midnight-slate));
}
.command-item[aria-current='page'] {
  color: var(--color-chalk-cloud);
  background: color-mix(in srgb, var(--color-chalk-cloud) 10%, var(--color-midnight-slate));
}
.command-item[aria-current='page']::before {
  content: '';
  position: absolute;
  left: 0;
  top: 8px;
  bottom: 8px;
  width: 3px;
  background: var(--color-tidal-teal);
  border-radius: 0 2px 2px 0;
}
.command-item .rail-icon { flex: none; width: 21px; height: 21px; }
.command-badge { position: absolute; left: 30px; top: 9px; }
.command-label {
  max-width: 0;
  overflow: hidden;
  opacity: 0;
  transform: translateX(-4px);
  font-size: var(--text-body-sm);
  font-weight: var(--font-weight-medium);
  transition: max-width var(--duration-standard) var(--easing-standard),
    opacity var(--duration-instant) var(--easing-instant),
    transform var(--duration-standard) var(--easing-standard);
}
.command-rail:hover .command-label, .command-rail:focus-within .command-label {
  max-width: 148px;
  opacity: 1;
  transform: none;
}
.rail-account {
  align-self: flex-start;
  width: 38px;
  height: 38px;
  margin-top: auto;
  margin-left: 5px;
  border: 1px solid color-mix(in srgb, var(--color-chalk-cloud) 22%, var(--color-midnight-slate));
  border-radius: var(--radius-pill);
  color: var(--color-chalk-cloud);
  background: color-mix(in srgb, var(--color-chalk-cloud) 10%, var(--color-midnight-slate));
  font-size: var(--text-caption);
  font-weight: var(--font-weight-medium);
}

.context-item {
  min-height: 38px;
  display: flex;
  align-items: center;
  padding: 0 10px;
  border-radius: 7px;
  color: var(--color-steel-fog);
  background: transparent;
  text-decoration: none;
  font-size: var(--text-body-sm);
}
.context-item:hover { color: var(--color-obsidian-core); background: var(--color-chalk-cloud); }
.context-item[aria-current='page'] {
  color: var(--color-obsidian-core);
  background: var(--color-chalk-cloud);
  font-weight: var(--font-weight-medium);
  box-shadow: 0 1px 1px rgba(10, 13, 17, 0.04);
}

.platform-bar {
  position: sticky;
  top: 0;
  z-index:var(--z-sticky);
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
  height: 64px;
  padding: 0 var(--spacing-32);
  border-bottom: 1px solid var(--color-pewter-mist);
  background: rgba(255, 255, 255, 0.96);
  backdrop-filter: blur(8px);
}
.platform-bar-brand { display: none; align-items: center; gap: 8px; }
.platform-bar-brand img { height: 19px; width: auto; }
.platform-bar-brand span {
  padding-left: 8px;
  border-left: 1px solid var(--color-pewter-mist);
  color: var(--color-steel-fog);
  font-size: var(--text-caption);
}
.platform-bar-actions { display: flex; align-items: center; gap: 6px; }
.env-pill, .role-pill {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  padding: 4px 9px;
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-pill);
  color: var(--color-steel-fog);
  font-size: 11px;
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.env-pill span {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: var(--color-cinnabar);
}
.role-pill { text-transform: none; letter-spacing: 0; }

.platform-drawer-toggle { display: none; }

/* -- Below tablet width: the rail and context panel give way to a drawer.
 * 768px matches the breakpoint the rest of this file already collapses the
 * Portal's own rail at, rather than the reference's own round 820px, so the
 * two products change shape at the same width. */
@media (max-width: 768px) {
  .command-rail { display: none; }
  .platform-workspace { padding-left: 0; }
  .platform-workspace > main { padding: var(--spacing-24) var(--spacing-16); }
  .platform-bar { padding: 0 var(--spacing-16); }
  .platform-bar-brand { display: flex; }
  .platform-drawer-toggle { display: inline-grid; }
  .platform-bar-search { display: none; }
  /* The environment pill stays, even here: design.md 10.1 says production
     must be unmistakable on every screen, and a phone is still a screen.
     The role pill gives way instead; it says less, and the account sheet
     still has it. */
  .role-pill { display: none; }
  .platform-context-inline {
    display: flex;
    flex-wrap: wrap;
    gap: var(--spacing-8);
    margin-bottom: var(--spacing-24);
  }
  .platform-context-inline a {
    padding: 6px 12px;
    border: 1px solid var(--color-pewter-mist);
    border-radius: var(--radius-pill);
    color: var(--color-steel-fog);
    font-size: var(--text-body-sm);
    text-decoration: none;
  }
  .platform-context-inline a[aria-current='page'] {
    color: var(--color-chalk-cloud);
    background: var(--color-obsidian-core);
    border-color: var(--color-obsidian-core);
  }
}
@media (min-width: 769px) {
  .platform-workspace { padding-left: calc(64px + 216px); }
  .platform-context-inline { display: none; }
}

/* The mobile drawer itself: the same command-rail destinations, full label,
 * as a full-screen sheet rather than the hover-expand rail there is no room
 * for. Built on the existing .sheet dialog primitive. */
.drawer-nav { display: grid; gap: 2px; }
.drawer-nav a {
  display: flex;
  align-items: center;
  gap: 12px;
  min-height: 44px;
  padding: 0 12px;
  border-radius: var(--radius-inputs);
  color: var(--color-obsidian-core);
  text-decoration: none;
  font-size: var(--text-body);
}
.drawer-nav a:hover { background: var(--color-frost-field); }
.drawer-nav a[aria-current='page'] {
  background: var(--color-frost-field);
  font-weight: var(--font-weight-medium);
}
.drawer-nav .rail-icon { flex: none; color: var(--color-steel-fog); }

/* Admin overview: one live command center assembled from the evidence the
 * current service owns. Queue cards are links, so their whole surface is the
 * target and the page stays useful at touch sizes. */
.admin-overview-audit-row {
  grid-template-columns: minmax(180px, 1fr) minmax(140px, .8fr) minmax(220px, 1.2fr) 180px;
}

@media (max-width: 1000px) {
  .admin-overview-grid { grid-template-columns: 1fr; }
}
@media (max-width: 640px) {
  .admin-overview-audit-row {
    grid-template-columns: 1fr;
    gap: 4px;
  }
}

/* Admin Console: Businesses/Onboarding, Businesses/Risk, Fleet/Locations,
 * Fleet/Command history, Governance/Audit log. Same .tx-row base as every
 * other console table; only the column widths are new, one row per table. */
.admin-onboard-row { grid-template-columns: minmax(200px, 1fr) minmax(180px, 1fr) minmax(180px, 1fr); }
.admin-risk-row {
  grid-template-columns: minmax(200px, 1fr) 110px minmax(200px, 1fr) 120px;
  align-items: center;
}
.admin-loc-row { grid-template-columns: minmax(180px, 1fr) minmax(160px, 1fr) 100px 90px; }
.admin-cmd-row { grid-template-columns: minmax(200px, 1fr) minmax(140px, 1fr) 160px 170px; }
.admin-audit-row { grid-template-columns: minmax(160px, 1fr) minmax(180px, 1fr) minmax(180px, 1fr) 170px; }

@media (max-width: 640px) {

  .admin-onboard-row > *:nth-child(1) { grid-area: biz; }
  .admin-onboard-row > *:nth-child(2) { grid-area: invite; }
  .admin-onboard-row > *:nth-child(3) { grid-area: activation; }


  .admin-risk-row > *:nth-child(1) { grid-area: biz; }
  .admin-risk-row > *:nth-child(2) { grid-area: status; justify-self: end; }
  .admin-risk-row > *:nth-child(3) { grid-area: restriction; }
  .admin-risk-row > *:nth-child(4) { grid-area: act; }
  .admin-risk-row > *:nth-child(4) .btn { width: 100%; }


  .admin-loc-row > *:nth-child(1) { grid-area: loc; }
  .admin-loc-row > *:nth-child(2) { grid-area: biz; }
  .admin-loc-row > *:nth-child(3) { grid-area: machines; }
  .admin-loc-row > *:nth-child(4) { grid-area: online; }


  .admin-cmd-row > *:nth-child(1) { grid-area: action; }
  .admin-cmd-row > *:nth-child(2) { grid-area: target; }
  .admin-cmd-row > *:nth-child(3) { grid-area: staff; }
  .admin-cmd-row > *:nth-child(4) { grid-area: requested; }


  .admin-audit-row > *:nth-child(1) { grid-area: actor; }
  .admin-audit-row > *:nth-child(2) { grid-area: action; }
  .admin-audit-row > *:nth-child(3) { grid-area: target; }
  .admin-audit-row > *:nth-child(4) { grid-area: when; }
}

/* Exact payout identifiers remain readable within the existing table columns. */
.payout-report-table { overflow-wrap: anywhere; }
.portal-redesign .location-metrics .location-state { font-size:18px; line-height:1.3; letter-spacing:0; }
.portal-redesign .detail-card-action { display:flex; align-items:center; justify-content:space-between; font-size:13px; padding-top:16px; border-top:1px solid #d9e2e4; }
.portal-redesign .restock-row { display:grid; grid-template-columns:minmax(0,1fr) auto auto; align-items:center; gap:20px; padding:16px 0; border-top:1px solid #d9e2e4; }
.portal-redesign .restock-row p { margin:4px 0 0; }
.portal-redesign .restock-row strong { font-weight:500; }
:is(.portal-redesign,.admin-redesign) .delivery-case-list { margin:24px 0 36px; }
:is(.portal-redesign,.admin-redesign) .delivery-case-list > h2 { font-size:18px; font-weight:500; }
:is(.portal-redesign,.admin-redesign) .delivery-case-list > p { color:#5b6d72; font-size:13px; }
:is(.portal-redesign,.admin-redesign) .delivery-case-row { padding:20px 0; border-top:1px solid #d9e2e4; overflow-wrap:anywhere; }
:is(.portal-redesign,.admin-redesign) .delivery-case-row h3 { margin:0 0 8px; font-size:18px; font-weight:500; }
:is(.portal-redesign,.admin-redesign) .delivery-case-row p,:is(.portal-redesign,.admin-redesign) .delivery-case-row li { font-size:13px; }
:is(.portal-redesign,.admin-redesign) .delivery-case-row ul { padding-left:20px; }
:is(.portal-redesign,.admin-redesign) .sp-conversation { max-width:760px; margin:20px 0; }
:is(.portal-redesign,.admin-redesign) .sp-head { margin-top:20px; }
:is(.portal-redesign,.admin-redesign) .sp-head .panel-title { font-size:22px; line-height:1.2; font-weight:500; }
:is(.portal-redesign,.admin-redesign) .sp-thread { gap:0; }
:is(.portal-redesign,.admin-redesign) .sp-message { border:0; border-bottom:1px solid #d9e2e4; border-radius:0; padding:20px 0; background:transparent; }
:is(.portal-redesign,.admin-redesign) .sp-message .stat-label { font-size:13px; color:#5b6d72; margin:0 0 8px; }
:is(.portal-redesign,.admin-redesign) .sp-body { font-size:16px; line-height:1.5; }
:is(.portal-redesign,.admin-redesign) .sp-reply-form { padding-top:24px; }
:is(.portal-redesign,.admin-redesign) dialog.sheet { position:fixed; inset:0 0 0 auto; width:min(560px,100%); height:100dvh; max-height:100dvh; margin:0; border-radius:0; border:0; border-left:1px solid #d9e2e4; padding:0; }
:is(.portal-redesign,.admin-redesign) .sheet-body,:is(.portal-redesign,.admin-redesign) .sheet-side-body { padding:24px; gap:20px; height:100%; overflow-y:auto; }
@media(max-width:520px) {
 .portal-redesign .restock-row { grid-template-columns:minmax(0,1fr) auto; gap:12px; }
 .portal-redesign .restock-row .btn { grid-column:1/-1; justify-self:start; }
}

.portal-redesign .verified-proceeds-card > .card,
.portal-redesign .verified-balance-account { background:radial-gradient(ellipse at top right,rgba(0,209,167,.12),transparent 70%),var(--color-onyx-black); color:var(--color-white); min-height:220px; padding:28px; }
.portal-redesign .verified-proceeds-card > .card .muted,
.portal-redesign .verified-balance-account .muted,
.portal-redesign .verified-balance-account .stat-label { color:rgba(255,255,255,.7); }
.portal-redesign .verified-proceeds-card > .card h2 { margin:0 0 16px; font-size:28px; font-weight:400; letter-spacing:-.03em; }

/* Scoped adaptation of Bryan's October 5 Admin export. Real staff records and permissions remain authoritative. */
body.admin-redesign {
  --color-onyx-black: #0a0d11;
  --color-white: #ffffff;
  --color-caribbean-mint: #00d1a7;
  --color-stone-mist: #eaece4;
  --color-midnight-core: #1c1e22;
  --color-charcoal-grey: #4a4a48;
  --color-steel-gray: #8a8a88;
  --surface-secondary: #f2f6f7;
  --surface-strong: #e8eef0;
  --line: #d9e2e4;
  --text-secondary: #5b6d72;
  --accent-soft: #e7f9f4;
  --accent-ink: #007f69;
  --ink: var(--color-onyx-black);
  --canvas: var(--color-white);
  --on-dark-secondary: rgba(255,255,255,.72);
  --color-steel-fog: var(--text-secondary);
  --color-frost-field: var(--surface-secondary);
  --color-pewter-mist: var(--line);
  --color-obsidian-core: var(--color-onyx-black);
  --radius-cards: 8px;
  --radius-pill: 6px;
  --sidebar-width: 64px;
  --color-midnight-slate: var(--color-onyx-black);
  --font-weight-semibold: 500;
  --text-small: 13px;
  --text-large: 18px;
  --spacing-4: 4px; --spacing-6: 6px; --spacing-10: 10px;
  --spacing-12: 12px; --spacing-14: 14px; --spacing-20: 20px;
  --spacing-28: 28px; --spacing-36: 36px;
  --gutter: 40px;
  background: var(--canvas);
  font-size: 16px;
  font-weight: 400;
  line-height: 1.5;
}
.admin-redesign .platform-workspace { padding-left: 64px; }
.admin-redesign .platform-workspace > main { margin-inline:auto; padding: 36px var(--gutter) 80px; max-width: calc(1560px + var(--gutter)*2); }
.admin-redesign .platform-bar { height: 72px; padding: 0 var(--gutter); border-bottom: 1px solid var(--line); background: #fff; gap: 12px; }
.admin-redesign .platform-bar-search { margin-right: auto; width: 380px; min-height: 40px; justify-content: flex-start; background: var(--surface-secondary); border: 0; border-radius: 6px; font-size: 13px; }
.admin-redesign .platform-bar-search kbd { margin-left: auto; }
.admin-redesign .env-pill { color: var(--ink); background: var(--surface-secondary); border: 0; font-size: 13px; }
.admin-redesign .command-rail { background: var(--ink); color: #fff; }
.admin-redesign .command-item { color: rgba(255,255,255,.72); border-radius: 6px; }
.admin-redesign .command-item:hover { color: #fff; background: rgba(255,255,255,.08); }
.admin-redesign .command-item[aria-current='page'] { color: #fff; background: rgba(255,255,255,.08); }
.admin-redesign .command-item[aria-current='page'] .rail-icon { color: var(--color-caribbean-mint); }
.admin-redesign .rail-account { border-radius: 50%; }
.admin-redesign .platform-context-inline { display: flex; flex-wrap: wrap; gap: 20px; padding: 0; margin: 0 0 24px; border-bottom: 1px solid var(--line); }
.admin-redesign .context-item { border-radius: 0; padding: 12px 0; min-height: 44px; color: var(--text-secondary); background: none; }
.admin-redesign .context-item[aria-current='page'] { color: var(--ink); border-bottom: 2px solid var(--color-caribbean-mint); }
.admin-redesign .btn { border-radius: 6px; min-height: 44px; padding: 0 20px; font-weight: 500; letter-spacing: -.01em; }
.admin-redesign .btn-sm { min-height: 36px; padding: 0 14px; font-size: 13px; }
.admin-redesign .input { min-height: 44px; border-radius: 6px; }
.admin-redesign .card { border-radius: 8px; padding: 24px; }
.admin-redesign .card-flush { padding: 0; }
.admin-redesign .card-dark { background: var(--ink); }
.admin-redesign h2, .admin-redesign .card-title { font-size: 18px; line-height: 1.3; font-weight: 500; letter-spacing: -.01em; }
.admin-redesign .small, .admin-redesign .stat-label, .admin-redesign .stat-sub, .admin-redesign .metric-note { font-size: 13px; }
.admin-redesign .metric-figure, .admin-redesign .stat-figure { font-size: 28px; font-weight: 400; letter-spacing: -.035em; line-height: 1.1; }

.admin-redesign .table th { text-transform: none; font-size: 13px; letter-spacing: 0; font-weight: 500; background: var(--surface-secondary); }

.admin-redesign .sheet { border-radius: 8px; max-width: min(560px,calc(100vw - 32px)); }
.admin-redesign .sheet-body { padding: 24px; gap: 20px; }
.admin-redesign .sheet-body > * { min-height: min-content; flex-shrink: 0; }
.admin-redesign .sheet-body h2 { font-size: 22px; letter-spacing: -.025em; }
.admin-redesign .sheet-side-body { padding: 24px; }
.admin-redesign .admin-operator-tools { justify-content: space-between; gap: 12px; }
.admin-redesign .admin-operator-tools input { width: 380px; max-width: 100%; }
.admin-redesign .admin-fleet-summary { border-radius: 8px; padding: 20px 24px; gap: 20px; background: #fff; }
.admin-redesign .admin-fleet-summary strong { font-size: 28px; font-weight: 400; letter-spacing: -.035em; }
.admin-redesign .admin-fleet-summary .eyebrow { font-size: 13px; text-transform: none; letter-spacing: 0; }
.admin-redesign .admin-terminal-list { padding: 0; }
.admin-redesign .admin-console-note { font-size: 13px; margin: 20px 0; }
.admin-redesign .verified-proceeds-card { margin-bottom: 20px; }
.admin-redesign .verified-proceeds-table { overflow-x: auto; }
.admin-redesign .verified-proceeds-table table { min-width: 600px; }
.admin-redesign .auth { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); min-height: 100dvh; padding: 0; align-items: stretch; }
.admin-redesign .admin-auth-art { background: var(--ink); color: #fff; padding: 48px; display: flex; flex-direction: column; justify-content: space-between; }
.admin-redesign .admin-auth-brand { display: flex; align-items: center; gap: 12px; font-size: 18px; font-weight: 500; }
.admin-redesign .admin-auth-brand img { width: 36px; height: 36px; }
.admin-redesign .admin-auth-title { font-size: 52px; letter-spacing: -.045em; line-height: 1.04; }
.admin-redesign .auth-card { max-width: none; width: 100%; padding: 32px var(--gutter); margin: 0; display: grid; align-content: center; justify-items: center; }
.admin-redesign .auth-card > .logo { display: none; }
.admin-redesign .auth-card > .card { width: min(400px,100%); background: none; border: 0; padding: 0; }
.admin-redesign .auth-card h1 { font-size: 34px; font-weight: 400; letter-spacing: -.03em; }
@media(max-width:1100px) { body.admin-redesign { --gutter: 28px; } }
@media(max-width:960px) {
 .admin-redesign .platform-workspace { padding-left: 0; }
 .admin-redesign .command-rail { display: none; }
 .admin-redesign .platform-bar-brand { display: flex; }
 .admin-redesign .platform-bar-search { display: flex; width: 40px; height: 40px; padding: 0; justify-content: center; margin-left: auto; margin-right: 0; }
 .admin-redesign .platform-bar-search span, .admin-redesign .platform-bar-search kbd { display: none; }
 .admin-redesign .auth { grid-template-columns: minmax(0,1fr); }
 .admin-redesign .admin-auth-art { display: none; }
 .admin-redesign .auth-card > .logo { display: block; width: 32px; height: 32px; justify-self: start; }
}
@media(max-width:720px) {
 body.admin-redesign { --gutter: 20px; }
 .admin-redesign .platform-workspace > main { padding-top: 24px; }
 .admin-redesign .admin-operator-tools { flex-wrap: wrap; }
 .admin-redesign .admin-operator-tools input { width: 100%; max-width: none; }
 .admin-redesign .callout { flex-wrap: wrap; }
 .admin-redesign .env-pill { padding: 0 8px; font-size: 11px; }
 .admin-redesign .platform-bar-actions { gap: 6px; }
}
.admin-redesign .admin-runtime-settings { display: grid; grid-template-columns: minmax(0,1.65fr) minmax(0,1fr); gap: 20px; align-items: start; }
.admin-redesign .admin-runtime-fact { display: flex; align-items: flex-start; justify-content: space-between; gap: 16px; padding: 16px 0; border-top: 1px solid var(--line); }
.admin-redesign .admin-runtime-fact h3 { font-size: 16px; font-weight: 500; margin: 0; }
.admin-redesign .admin-runtime-fact p { margin: 4px 0 0; }
.admin-redesign .admin-runtime-gates { display: grid; }
.admin-redesign .admin-runtime-gates > div { display: flex; align-items: center; justify-content: space-between; gap: 12px; border-top: 1px solid var(--line); padding: 12px 0; font-size: 12px; overflow-wrap: anywhere; }
.admin-redesign .admin-runtime-gates > div > span:first-child { min-width: 0; }
@media(max-width:900px) { .admin-redesign .admin-runtime-settings { grid-template-columns: minmax(0,1fr); } }

.admin-redesign main > .section { margin-top: 32px; }
.admin-redesign .section-header { margin-bottom: 16px; }
.admin-redesign .section-header p { margin: 6px 0 0; font-size: 13px; color: var(--text-secondary); }
.admin-redesign .admin-drill-operators { display: grid; grid-template-columns: repeat(auto-fill,minmax(280px,1fr)); gap: 20px; }
.admin-redesign .admin-drill-operator { border: 1px solid var(--line); border-radius: 8px; padding: 24px; color: var(--ink); text-decoration: none; display: grid; gap: 20px; }
.admin-redesign .admin-drill-operator:hover { background: var(--surface-secondary); }
.admin-redesign .admin-drill-operator h2 { margin: 0; font-size: 16px; }
@media(max-width:720px) { .admin-redesign .admin-drill-operators { grid-template-columns: minmax(0,1fr); } }
/* The old phone chip rules must not override the supplied inline tab treatment. */
.admin-redesign .platform-context-inline a { padding: 12px 0; border: 0; border-radius: 0; background: transparent; color: var(--text-secondary); font-size: 13px; text-decoration: none; }
.admin-redesign .platform-context-inline a[aria-current='page'] { color: var(--ink); background: transparent; border: 0; border-bottom: 2px solid var(--color-caribbean-mint); }
@media(max-width:960px) { .admin-redesign .platform-drawer-toggle { display: inline-grid; } }

/* Page compositions from the supplied Admin reference, bound to live records. */
.admin-redesign .admin-home-columns { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(0,1fr); gap:20px; align-items:stretch; }
.admin-redesign .admin-home-columns > * { min-width:0; }
.admin-redesign .admin-home-columns .section-header { align-items:center; }
.admin-redesign .admin-home-columns h2 { font-size:16px; }
.admin-redesign .admin-large-figure { font-size:36px; letter-spacing:-.04em; line-height:1.15; margin:12px 0 6px; }
.admin-redesign .admin-chart-bars { display:flex; gap:3px; height:200px; margin-top:24px; border-bottom:1px solid var(--line); background:repeating-linear-gradient(to top,transparent 0,transparent 49px,var(--surface-secondary) 49px,var(--surface-secondary) 50px); }
.admin-redesign .admin-chart-day { flex:1; min-width:0; height:100%; }
.admin-redesign .admin-chart-day svg { height:100%; width:100%; fill:var(--color-caribbean-mint); }
.admin-redesign .admin-chart-dates { display:flex; justify-content:space-between; color:var(--text-secondary); font-size:12px; margin-top:10px; }
.admin-redesign .admin-treasury { background:var(--ink); color:#fff; background-image:radial-gradient(ellipse at bottom right,rgba(0,209,167,.16),transparent 65%); }
.admin-redesign .admin-treasury .muted { color:rgba(255,255,255,.72); }
.admin-redesign .admin-treasury .tag { background:rgba(255,255,255,.08); color:#fff; }
.admin-redesign .admin-treasury-facts { margin:24px 0; padding:0 16px; border-radius:6px; background:rgba(255,255,255,.04); }
.admin-redesign .admin-treasury-facts > div { display:flex; justify-content:space-between; gap:12px; padding:14px 0; font-size:13px; }
.admin-redesign .admin-treasury-facts > div + div { border-top:1px solid rgba(255,255,255,.1); }
.admin-redesign .admin-treasury .link-button { color:#fff; }
.admin-redesign .admin-activity-item { display:flex; gap:12px; align-items:center; padding:16px 20px; color:var(--ink); text-decoration:none; }
.admin-redesign .admin-activity-item + .admin-activity-item { border-top:1px solid var(--line); }
.admin-redesign .admin-activity-item:hover { background:var(--surface-secondary); }
.admin-redesign .admin-activity-item > div { flex:1; min-width:0; }
.admin-redesign .admin-activity-item strong { font-size:14px; font-weight:500; }
.admin-redesign .admin-activity-item p { margin:4px 0 0; }
.admin-redesign .admin-activity-icon { display:grid; place-items:center; flex:none; width:36px; height:36px; border-radius:50%; background:var(--surface-secondary); color:var(--text-secondary); }
.admin-redesign .admin-overview-date { margin:0 0 8px; font-size:13px; color:var(--text-secondary); }
.admin-redesign .admin-terminal-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(300px,1fr)); gap:20px; }
.admin-redesign .admin-terminal-card { color:var(--ink); text-decoration:none; border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.admin-redesign .admin-terminal-card:hover { background:var(--surface-secondary); }
.admin-redesign .admin-terminal-card-head { display:flex; gap:12px; padding:24px; align-items:center; }
.admin-redesign .admin-terminal-card-head > div { flex:1; min-width:0; }
.admin-redesign .admin-terminal-card-head h2 { font-size:16px; margin:0; }
.admin-redesign .admin-terminal-card-head p { margin:4px 0 0; }
.admin-redesign .admin-terminal-card-head .status { font-size:12px; }
.admin-redesign .admin-terminal-icon { display:grid; place-items:center; width:40px; height:40px; background:var(--surface-secondary); border-radius:8px; }
.admin-redesign .admin-terminal-card-stats { display:grid; grid-template-columns:1fr 1fr; gap:16px; padding:0 24px 20px; }
.admin-redesign .admin-terminal-card-stats > div { display:grid; gap:4px; }
.admin-redesign .admin-terminal-card-stats span { font-size:13px; color:var(--text-secondary); }
.admin-redesign .admin-terminal-card-stats strong { font-size:22px; font-weight:400; letter-spacing:-.025em; }
.admin-redesign .admin-terminal-card-foot { display:flex; justify-content:space-between; gap:12px; padding:14px 20px; border-top:1px solid var(--line); font-size:12px; color:var(--text-secondary); }
@media(max-width:900px) { .admin-redesign .admin-home-columns { grid-template-columns:minmax(0,1fr); } }
@media(max-width:720px) { .admin-redesign .admin-terminal-grid { grid-template-columns:minmax(0,1fr); } .admin-redesign .admin-activity-item { flex-wrap:wrap; } }

/* Auth is a full viewport split, independent of legacy centered card layout. */
.admin-redesign main.auth { width:100%; max-width:none; margin:0; padding:0; justify-items:stretch; }
.admin-redesign .auth > .admin-auth-art { width:100%; min-width:0; }
.admin-redesign .auth > .auth-card { border:0; border-radius:0; }
.admin-redesign .auth-card > .card { border:0; box-shadow:none; border-radius:0; padding:0; }
.admin-redesign .auth-card h1 { border:0; padding:0; margin:0 0 32px; }
.admin-redesign .auth-card .auth-form { gap:20px; }
.admin-redesign .admin-auth-art { background-image:radial-gradient(ellipse at bottom right,rgba(0,209,167,.12),transparent 70%); }

.admin-redesign .admin-software-card { margin-bottom:20px; }
.admin-redesign .admin-software-card h2 { font-size:22px; letter-spacing:-.025em; }
.admin-redesign .admin-software-card .section-header { margin-bottom:12px; }
.admin-redesign .admin-release-notes { font-size:14px; margin:12px 0 24px; }
.admin-redesign .admin-release-stages { display:flex; list-style:none; padding:0; gap:0; margin:20px 0; }
.admin-redesign .admin-release-stages li { flex:1; font-size:12px; color:var(--text-secondary); display:grid; gap:8px; border-top:2px solid var(--line); padding-top:8px; }
.admin-redesign .admin-release-stages .is-reached { border-color:var(--color-caribbean-mint); color:var(--ink); }
.admin-redesign .admin-software-foot { display:flex; justify-content:space-between; align-items:center; gap:12px; }
.admin-redesign .sheet .admin-release { border:0; padding:0; }
.admin-redesign .sheet-head { display:flex; align-items:center; justify-content:space-between; gap:12px; }
.admin-redesign .sheet-head h2 { margin:0; }

.designed-tab-list { display:flex; gap:24px; overflow-x:auto; border-bottom:1px solid var(--line); margin-bottom:24px; }
.designed-tab-list button { flex:none; border:0; border-bottom:2px solid transparent; background:transparent; padding:12px 0; font:inherit; font-size:14px; color:var(--text-secondary); cursor:pointer; }
.designed-tab-list button[aria-selected=true] { color:var(--ink); border-bottom-color:var(--color-caribbean-mint); }
.designed-tab-list button:focus-visible { outline:2px solid var(--ink); outline-offset:-2px; }

.admin-redesign .admin-fleet-operator-head { display:flex; gap:12px; align-items:center; }
.admin-redesign .admin-fleet-operator-head > div { flex:1; min-width:0; }
.admin-redesign .admin-fleet-operator-head p { margin:4px 0 0; }
.admin-redesign .admin-fleet-online { display:flex; gap:8px; align-items:baseline; margin:0; }
.admin-redesign .admin-fleet-online strong { font-size:32px; font-weight:400; letter-spacing:-.03em; }
.admin-redesign .admin-fleet-online span { font-size:13px; color:var(--text-secondary); }
.admin-redesign .admin-fleet-stock { display:flex; gap:12px; justify-content:space-between; font-size:13px; }
.admin-redesign .admin-fleet-stock strong { font-weight:400; }

.vp-brand-designed { display:flex; align-items:center; padding:12px 0 24px; }
.vp-brand-designed .vp-logo { width:150px; height:auto; }
.vp-advanced-filter { margin-bottom:20px; font-size:13px; }
.vp-advanced-filter summary, .vp-recorded-activity summary { cursor:pointer; min-height:44px; display:flex; align-items:center; }
.vp-designed-stats { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); border:1px solid var(--line); border-radius:8px; margin:20px 0; }
.vp-designed-stats > div { display:grid; gap:8px; padding:20px; }
.vp-designed-stats > div + div { border-left:1px solid var(--line); }
.vp-designed-stats span { font-size:13px; color:var(--text-secondary); }
.vp-designed-stats strong { font-size:28px; font-weight:400; letter-spacing:-.03em; }
.vp-config { margin-bottom:20px; }
@media(max-width:720px){ .vp-designed-stats { grid-template-columns:repeat(2,minmax(0,1fr)); } .vp-designed-stats > div { padding:16px; } .vp-designed-stats > div:nth-child(3) { border-left:0; } .vp-designed-stats > div:nth-child(n+3) { border-top:1px solid var(--line); } }

.vp-designed-program { margin-bottom:32px; }
.vp-designed-heading { display:flex; align-items:center; justify-content:space-between; gap:20px; margin-bottom:24px; }
.vp-designed-heading p { max-width:60ch; color:var(--text-secondary); font-size:14px; margin:0; }
.vp-designed-heading h2 { margin:0 0 8px; }
.vp-designed-heading .vp-config-actions { flex-wrap:wrap; justify-content:flex-end; margin:0; gap:12px; }
.vp-designed-heading .status { font-size:12px; }
.vp-designed-columns { display:grid; grid-template-columns:minmax(0,1.65fr) minmax(0,1fr); gap:20px; align-items:start; margin-top:32px; }
.vp-designed-columns > * { min-width:0; }
.vp-designed-columns .section-header { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-bottom:16px; }
.vp-designed-columns .section-header h2 { margin:0 0 4px; }
.vp-designed-columns .section-header p { margin:0; }
@media(max-width:720px) {
 body.admin-redesign .ui-vendpass .section-header { flex-direction:column; align-items:stretch; gap:16px; }
}
.vp-designed-aside { display:grid; gap:20px; }
.vp-designed-aside h2 { font-size:16px; margin:0 0 16px; }
.vp-designed-aside p { font-size:14px; color:var(--text-secondary); }
.vp-rule { display:flex; justify-content:space-between; align-items:baseline; gap:12px; padding:16px 0; border-bottom:1px solid var(--line); font-size:13px; }
.vp-rule span { color:var(--text-secondary); }
.vp-rule strong { font-weight:400; text-align:right; }
.vp-designed-activity { border:1px solid var(--line); border-radius:8px; overflow:hidden; }
.vp-activity-row { display:flex; align-items:center; gap:12px; padding:16px 20px; font-size:14px; }
.vp-activity-row + .vp-activity-row { border-top:1px solid var(--line); }
.vp-activity-row > div { flex:1; min-width:0; }
.vp-activity-row strong { font-weight:500; }
.vp-activity-row p { margin:4px 0 0; }
.vp-activity-mark { display:grid; place-items:center; border-radius:50%; background:var(--surface-secondary); width:36px; height:36px; flex:none; }
.vp-activity-empty { padding:32px 20px; font-size:14px; color:var(--text-secondary); }
@media(max-width:900px){ .vp-designed-columns { grid-template-columns:minmax(0,1fr); } .vp-designed-heading { align-items:flex-start; flex-direction:column; } }
.admin-redesign .admin-support-ticket { display:flex; gap:16px; align-items:center; padding:20px 24px; color:var(--ink); text-decoration:none; border-bottom:1px solid var(--line); }
.admin-redesign .admin-support-ticket:last-child { border-bottom:0; }
.admin-redesign .admin-support-ticket:hover { background:var(--surface-secondary); }
.admin-redesign .admin-support-copy { display:grid; gap:4px; flex:1; min-width:0; }
.admin-redesign .admin-support-copy strong { font-size:16px; font-weight:500; }
.admin-redesign .admin-audit-day { margin:28px 0; }
.admin-redesign .admin-audit-day h2 { font-size:13px; color:var(--text-secondary); }
.admin-redesign .admin-audit-entry { border-bottom:1px solid var(--line); }
.admin-redesign .admin-audit-entry:last-child { border-bottom:0; }
.admin-redesign .admin-audit-entry summary { display:flex; align-items:center; gap:16px; padding:20px 24px; cursor:pointer; }
.admin-redesign .admin-audit-entry summary > span:nth-child(2) { display:grid; gap:4px; flex:1; min-width:0; }
.admin-redesign .admin-audit-entry strong { font-size:16px; font-weight:500; }
.admin-redesign .admin-audit-entry dl { padding:0 24px 24px 80px; overflow-wrap:anywhere; }
@media(max-width:600px) { .admin-redesign .admin-support-ticket { flex-wrap:wrap; padding:16px; } .admin-redesign .admin-support-copy { flex-basis:calc(100% - 64px); } .admin-redesign .admin-audit-entry summary { padding:16px; } .admin-redesign .admin-audit-entry dl { padding:0 16px 16px; } }
.admin-redesign .admin-campaign-heading { display:flex; justify-content:space-between; gap:12px; align-items:flex-start; }
.admin-redesign .admin-campaign-heading h2 { margin:0; }
.admin-redesign .sheet .card { border:0; padding:0; box-shadow:none; }
.admin-redesign .sheet .field { margin:16px 0; }
.admin-redesign .verified-balance-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(300px,100%),1fr)); gap:20px; margin:24px 0; }
.admin-redesign .verified-balance-figure { font-size:28px; line-height:1.1; letter-spacing:-.035em; margin:16px 0; overflow-wrap:anywhere; }
.admin-redesign .verified-balance-figure span { font-size:16px; letter-spacing:0; }
.admin-redesign .verified-proceeds-card > details { margin:24px 0; }
.admin-redesign .admin-sales-chart { margin:28px 0; }
.admin-redesign .admin-home-columns .admin-sales-chart { margin:0; }
.admin-redesign .admin-sales-chart svg { width:100%; height:auto; display:block; }

/* Settings has one visible tab panel. A hundred-row navigation span creates
   empty grid gaps, and long runtime identifiers need to wrap on phones. */
.admin-redesign #admin-settings > .subnav { grid-row:1; min-width:0; }
.admin-redesign #admin-settings > [role="tabpanel"] { grid-row:1; grid-column:2; min-width:0; }
.admin-redesign #admin-settings .trow-main { min-width:0; }
.admin-redesign #admin-settings .trow-main .strong { overflow-wrap:anywhere; }
@media (max-width:1100px) {
    .admin-redesign #admin-settings > .subnav { grid-row:1; grid-column:1; }
    .admin-redesign #admin-settings > [role="tabpanel"] { grid-row:2; grid-column:1; }
}
.admin-redesign .admin-sales-chart svg rect { fill:var(--color-caribbean-mint); }
.admin-redesign .admin-sales-chart .section-header,.admin-redesign .admin-software-card .section-header { display:flex; justify-content:space-between; align-items:flex-start; gap:20px; }
.admin-redesign .admin-sales-chart .admin-chart-total { font-size:34px; line-height:1.15; margin:20px 0; letter-spacing:-.035em; }
.admin-redesign .admin-home-columns .admin-empty-activity { min-height:0; }
.admin-redesign .admin-audit-entry summary > svg { flex:none; }
.admin-redesign .admin-activity-list .empty { min-height:0; padding:24px; }
.admin-redesign .admin-sales-tools { display:flex; align-items:center; gap:12px; justify-content:space-between; margin:0 0 16px; }
.admin-redesign .admin-sales-tools .input { width:min(420px,100%); }
.admin-redesign .admin-sales-filters { display:flex; flex-wrap:wrap; gap:10px; align-items:center; margin:0 0 28px; }
.admin-redesign .admin-sales-metrics { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:24px; border-bottom:1px solid var(--line); padding:0 0 24px; margin:0 0 12px; }
.admin-redesign .admin-sales-metrics > div { display:grid; gap:8px; }
.admin-redesign .admin-sales-metrics span { color:var(--text-secondary); font-size:13px; }
.admin-redesign .admin-sales-metrics strong { font-size:34px; font-weight:400; line-height:1.1; letter-spacing:-.03em; }
@media(max-width:600px) {
 .admin-redesign .admin-sales-tools { flex-wrap:wrap; }
 .admin-redesign .admin-sales-tools .input { width:100%; }
 .admin-redesign .admin-sales-metrics { grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
 .admin-redesign .admin-sales-metrics strong { font-size:28px; }
}
.admin-redesign .admin-setting { display:flex; align-items:center; justify-content:space-between; gap:20px; min-height:52px; border-bottom:1px solid var(--line); cursor:pointer; }
.admin-redesign .admin-setting > span { order:0; }
.admin-redesign .admin-setting > input[type=checkbox] { order:1; flex:none; appearance:none; width:36px; height:20px; border:0; border-radius:999px; background:var(--color-steel-gray); position:relative; cursor:pointer; }
.admin-redesign .admin-setting > input[type=checkbox]::after { content:''; position:absolute; width:16px; height:16px; border-radius:50%; background:var(--color-white); top:2px; left:2px; }
.admin-redesign .admin-setting > input[type=checkbox]:checked { background:var(--color-caribbean-mint); }
.admin-redesign .admin-setting > input[type=checkbox]:checked::after { left:18px; }
.admin-redesign .admin-setting > input[type=checkbox]:focus-visible { outline:2px solid var(--ink); outline-offset:3px; }
.admin-redesign .admin-setting > input[type=checkbox]:disabled { opacity:.5; cursor:default; }

/* Campaign additions retain the supplied pane/card rhythm and detail sheet. */
.admin-redesign #admin-advertising .pane-body > .section-head { gap: 20px; }
.admin-redesign #admin-advertising .section-head > div { display: grid; gap: 6px; }
.admin-redesign #admin-advertising .ad-offer-card .ad-img { object-fit: cover; }
.admin-redesign #admin-advertising .ad-offer-card .card-top { align-items: flex-start; gap: 16px; }
.admin-redesign #admin-advertising .ad-offer-card .card-top .grow { min-width: 0; }
.admin-redesign #admin-advertising .ad-offer-card .status { flex-shrink: 0; }
.admin-redesign #admin-advertising .ad-offer-metrics { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; padding: 16px 0; border-top: 1px solid var(--line); }
.admin-redesign #admin-advertising .ad-offer-metrics > div { display: grid; gap: 4px; }
.admin-redesign #admin-advertising .ad-offer-metrics strong { font-size: 22px; font-weight: 500; line-height: 1.2; }
.admin-redesign #admin-advertising .ad-offer-card .camp-body > .btn { justify-self: start; }
.admin-redesign #admin-advertising .tabs { overflow-y: hidden; }
@media(max-width:480px) {
  .admin-redesign .platform-bar { gap: 2px; padding-inline:8px; }
  .admin-redesign .platform-bar-brand { gap:4px; }
  .admin-redesign .platform-bar-brand > span { padding-left:4px; }
  .admin-redesign .platform-bar-actions { gap:4px; }
  .admin-redesign #staff-system-open { padding-inline:4px; letter-spacing:0; }
}

/* Receiving configuration uses the approved stylesheet, never CSP-blocked inline styles. */
.admin-redesign .receiving-setup .field{margin:16px 0}.admin-redesign .receiving-setup .input{width:100%;box-sizing:border-box}.admin-redesign .receiving-setup textarea{resize:vertical;overflow-wrap:anywhere}.admin-redesign .receiving-address{overflow-wrap:anywhere}.admin-redesign .receiving-setup .columns{align-items:start}.admin-redesign .receiving-actions{display:flex;gap:12px;flex-wrap:wrap}

/* Page links share the supplied workspace tab size while retaining link semantics. */
body.admin-redesign .platform-context-inline { gap:24px; flex-wrap:nowrap; overflow-x:auto; }
body.admin-redesign .platform-context-inline a { display:flex; align-items:center; flex:none; font-size:16px; line-height:1.3; padding:12px 0; min-height:44px; box-sizing:border-box; border-bottom:2px solid transparent; }
body.admin-redesign .platform-context-inline a[aria-current='page'] { border-bottom:2px solid var(--color-caribbean-mint); }
@media(max-width:960px) {
 body.admin-redesign .platform-bar-search { align-items:center; justify-content:center; min-width:44px; min-height:44px; }
 body.admin-redesign .platform-bar-search > svg { align-self:center; }
 body.admin-redesign .platform-bar-actions .btn-icon,body.admin-redesign .platform-bar-brand .iconbtn { min-width:44px; min-height:44px; }
 body.admin-redesign .env-pill { font-size:12px; }
}

body.admin-redesign .ui-runtime-capabilities { margin-top:24px; }
body.admin-redesign .ui-runtime-capabilities summary { display:flex; justify-content:space-between; align-items:center; min-height:44px; gap:12px; list-style:none; cursor:pointer; font-weight:500; }
body.admin-redesign .ui-runtime-capabilities summary::-webkit-details-marker { display:none; }
body.admin-redesign .ui-runtime-capabilities[open] summary>svg { transform:rotate(180deg); }
body.admin-redesign .ui-runtime-capabilities .trow-main { display:grid; gap:4px; min-width:0; }
body.admin-redesign .ui-runtime-capabilities .mono { overflow-wrap:anywhere; }

/* Matching header/cell tracks are scoped to each record list. */
body.admin-redesign :is(.rows--onboarding,.rows--locations,.rows--deletions,.rows--rates,.rows--content) .row { display:grid; align-items:center; gap:16px; }
body.admin-redesign :is(.rows--onboarding,.rows--locations,.rows--deletions,.rows--rates,.rows--content) .row>* { min-width:0; overflow-wrap:anywhere; }
body.admin-redesign .rows--onboarding .row { grid-template-columns:repeat(3,minmax(0,1fr)); }
body.admin-redesign .rows--locations .row { grid-template-columns:minmax(0,3fr) minmax(0,2fr) 100px 100px; }
body.admin-redesign .rows--deletions .row { grid-template-columns:minmax(0,2fr) minmax(0,2fr) 160px auto; }
body.admin-redesign .rows--rates .row { grid-template-columns:minmax(0,3fr) 200px 160px auto; }
body.admin-redesign .rows--rates .admin-contract-history { grid-column:1/-1; }
body.admin-redesign .rows--content .row { grid-template-columns:32px minmax(0,3fr) 140px 80px 90px 110px minmax(0,2fr); }
body.admin-redesign #admin-advertising-panel-2 .section { margin-top:24px; }
@media(max-width:720px) {
 body.admin-redesign .platform-workspace>main { min-width:0; }
 body.admin-redesign :is(.rows--onboarding,.rows--locations,.rows--deletions,.rows--rates,.rows--content) .row { grid-template-columns:minmax(0,1fr); }
 body.admin-redesign :is(.rows--onboarding,.rows--locations,.rows--deletions,.rows--rates,.rows--content) .row.head { display:none; }
 body.admin-redesign :is(.rows--onboarding,.rows--locations,.rows--deletions,.rows--rates,.rows--content) [data-label]::before { content:attr(data-label); display:block; font-size:13px; color:var(--text-secondary); margin-bottom:4px; }
 body.admin-redesign .rows--rates .row-actions .btn,body.admin-redesign .rows--deletions .btn { width:100%; }
}

.admin-redesign .admin-storage .figs { margin-bottom:24px; }

.admin-redesign .sheet-head .iconbtn,.admin-redesign [data-audit-copy] { min-width:44px; min-height:44px; }
.admin-redesign .ui-admin-audit .toolbar { align-items:end; gap:12px; margin-bottom:20px; }
.admin-redesign .ui-admin-audit .kv dd { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:center; gap:8px; overflow-wrap:anywhere; }

.admin-redesign .ui-admin-audit .kv-row { grid-template-columns:120px minmax(0,1fr); }
@media(max-width:720px) { .admin-redesign .ui-admin-audit .kv-row { grid-template-columns:minmax(0,1fr); gap:8px; } }

.admin-redesign .receiving-request-section { margin:24px 0; }
.admin-redesign .receiving-request-section [data-receiving-requests-list] { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:24px; }
.admin-redesign .receiving-request .kv-row { grid-template-columns:100px minmax(0,1fr); }
.admin-redesign .receiving-request form { display:grid; gap:12px; }
.admin-redesign .receiving-request .input { width:100%; min-width:0; }
@media(max-width:720px) { .admin-redesign .receiving-request-section [data-receiving-requests-list] { grid-template-columns:minmax(0,1fr); } }

.admin-redesign .receiving-request details>summary { display:flex; align-items:center; justify-content:space-between; gap:12px; list-style:none; cursor:pointer; }
.admin-redesign .receiving-request details>summary::-webkit-details-marker { display:none; }
.admin-redesign .receiving-request-section .section-header { gap:16px; flex-wrap:wrap; }
.admin-redesign .receiving-advanced>summary { padding:16px 0; cursor:pointer; }

/* Software uses the supplied release cards and the shared file-control anatomy. */
.admin-redesign .ui-admin-software .ui-file-input { position:absolute; width:1px; height:1px; clip-path:inset(50%); overflow:hidden; }
.admin-redesign .ui-admin-software .ui-file-input:focus-visible+label { outline:2px solid var(--accent-ink); outline-offset:3px; }
.admin-redesign .ui-admin-software #release-file-name { display:block; overflow-wrap:anywhere; margin-top:8px; }
.admin-redesign .ui-admin-software progress { width:100%; accent-color:var(--color-caribbean-mint); }
.admin-redesign .ui-admin-software progress[hidden] { display:none; }
.admin-redesign .ui-admin-software .release-foot { flex-wrap:wrap; }
.admin-redesign .ui-admin-software .admin-release .form-actions { flex-wrap:wrap; gap:12px; }

.admin-redesign .ui-admin-software .software-cohort { display:block; margin-top:4px; }
.admin-redesign .ui-admin-software .software-evidence { overflow-wrap:anywhere; }
.admin-redesign .ui-admin-software progress { appearance:none; height:6px; border:0; border-radius:4px; background:var(--surface-secondary); overflow:hidden; }
.admin-redesign .ui-admin-software progress::-webkit-progress-bar { background:var(--surface-secondary); border-radius:4px; }
.admin-redesign .ui-admin-software progress::-webkit-progress-value { background:var(--color-caribbean-mint); border-radius:4px; }
.admin-redesign .ui-admin-software progress::-moz-progress-bar { background:var(--color-caribbean-mint); border-radius:4px; }
@media(prefers-reduced-motion:no-preference) { .admin-redesign .ui-admin-software progress::-webkit-progress-value { transition:width var(--motion-slow) var(--ease-out); } }
@media(max-width:720px) { .admin-redesign .ui-admin-software .admin-rollout-row { grid-template-columns:minmax(0,1fr) auto; } .admin-redesign .ui-admin-software .admin-rollout-row>span:first-child { grid-column:1/-1; } }
.admin-redesign .staff-system-open { min-height:44px; cursor:pointer; font-family:inherit; }
.admin-redesign .staff-system-open[data-system-state=stale] { outline:1px solid var(--line); }
.admin-redesign #staff-system-sheet .trow { align-items:flex-start; gap:16px; }
.admin-redesign #staff-system-sheet .trow-main { min-width:0; }
@media(max-width:720px) { .admin-redesign #staff-system-sheet .trow { flex-wrap:wrap; } }
.admin-redesign .staff-system-open[data-system-state=attention]>span { background:var(--error-ink); }
.admin-redesign .staff-system-open[data-system-state=incomplete]>span,.admin-redesign .staff-system-open[data-system-state=stale]>span { background:var(--text-secondary); }
.admin-redesign #staff-system-sheet #staff-system-refresh { min-height:44px; flex:none; }
.admin-redesign .admin-operator-tools .field-search { position:relative; width:min(380px,100%); }
.admin-redesign .admin-operator-tools .field-search>.icon { position:absolute; left:14px; top:50%; transform:translateY(-50%); color:var(--text-secondary); pointer-events:none; }
.admin-redesign .admin-operator-tools .field-search .input { width:100%; min-height:44px; padding-left:44px; }
.admin-redesign .admin-internal-operators { margin-top:24px; }
.admin-redesign .admin-operator-tools .field-search { flex:0 0 auto; height:44px; }
.admin-redesign .admin-operator-tools { margin-bottom:16px; }
.admin-redesign .ui-staff-vendpass .field-search { display:block; position:relative; width:min(380px,100%); margin:24px 0 16px; }
.admin-redesign .ui-staff-vendpass .field-search>.icon { position:absolute; left:14px; top:50%; transform:translateY(-50%); pointer-events:none; color:var(--text-secondary); }
.admin-redesign .ui-staff-vendpass .field-search .input { padding-left:44px; min-height:44px; }
.admin-redesign .vp-program-list { max-height:480px; overflow:auto; border:1px solid var(--line); border-radius:8px; }
.admin-redesign .vp-program-list .trow[hidden] { display:none; }
.admin-redesign .vp-program-list .trow { text-decoration:none; min-height:64px; padding:16px; }
@media(max-width:720px) { .admin-redesign .vp-program-list { max-height:440px; } .admin-redesign .vp-program-list .trow { flex-wrap:wrap; } }

.admin-redesign .operator-activity { display:flex; flex-wrap:wrap; gap:8px 16px; font-size:13px; color:var(--text-secondary); margin:0 0 16px; }
.admin-redesign .admin-operator-tools .operator-sort { flex:0 0 auto; }
.admin-redesign .admin-operator-tools .operator-sort select { width:220px; min-height:44px; }
@media(max-width:720px){ .admin-redesign .admin-operator-tools .operator-sort { width:100%; } .admin-redesign .admin-operator-tools .operator-sort select { width:100%; } }

.admin-redesign .ui-admin-fleet .figs + .toolbar { margin-top:24px; margin-bottom:24px; }
.admin-redesign .ui-admin-fleet > .section { margin-top:32px; }

.admin-redesign .admin-advertising-choice { border:0; padding:0; margin:0; }

.admin-redesign #ms-msg .status { white-space:normal; align-items:flex-start; }
.admin-redesign .admin-advertising-choice input[type=radio] { flex:none; width:20px; height:20px; accent-color:var(--primary); order:1; }

.admin-redesign .admin-terminal-head { text-transform:none; letter-spacing:0; font-size:13px; font-weight:500; background:var(--surface-secondary); }
@media(max-width:720px){ .admin-redesign .admin-terminal-row [data-label]::before { content:attr(data-label); display:block; font-size:12px; color:var(--text-secondary); margin-bottom:4px; } .admin-redesign .admin-terminal-row > .status { display:block; } .admin-redesign .admin-terminal-update { white-space:normal; } }

.admin-redesign .fleet-service-note { margin:24px 0; }

.admin-redesign .admin-terminal-facts dt { text-transform:none; letter-spacing:0; font-size:13px; }


body.admin-redesign .rows--rates .row > [role=cell] { grid-area:auto; }
@media(max-width:720px){ body.admin-redesign .rows--rates [data-label]::before { text-transform:none; letter-spacing:normal; font-weight:400; line-height:1.4; } body.admin-redesign .rows--rates .row-actions { flex-wrap:wrap; gap:8px; } body.admin-redesign .rows--rates .row-actions::before { flex-basis:100%; } }

.admin-redesign .ad-agreement-note { margin-top:16px; }
body.admin-redesign .rows--rates .admin-contract-rate { align-items:flex-end; }
@media(max-width:720px){ body.admin-redesign .rows--rates .admin-contract-rate { align-items:flex-start; } }

.admin-redesign .cre-actions { display:grid; grid-template-columns:repeat(auto-fit,minmax(80px,1fr)); gap:8px; margin-top:12px; }
.admin-redesign .cre-actions .btn { width:100%; min-width:0; min-height:44px; font-size:13px; padding:0 4px; }

.admin-redesign .creative-order-controls { display:flex; gap:8px; margin-top:12px; }
.admin-redesign .creative-order-controls .btn { width:44px; min-width:44px; height:44px; min-height:44px; padding:0; }

.admin-redesign .creative-order-controls [data-move=up] .icon { transform:rotate(180deg); }

.admin-redesign :is(#media-sheet,#edit-sheet) .ui-file-input { position:absolute; width:1px; height:1px; clip-path:inset(50%); overflow:hidden; }
.admin-redesign :is(#media-sheet,#edit-sheet) .ui-file-input:focus-visible+label { outline:2px solid var(--accent-ink); outline-offset:3px; }
.admin-redesign :is(#media-sheet,#edit-sheet) .ui-file-input+label { margin-right:12px; }

body.admin-redesign .command-item .command-badge { left:auto; top:6px; right:6px; min-width:16px; width:auto; height:16px; padding:0 3px; border-radius:999px; background:var(--accent-ink); color:white; font-size:11px; line-height:16px; text-align:center; box-shadow:none; }
body.admin-redesign .drawer-nav [data-support-nav] .command-badge { position:static; width:auto; padding:0 3px; box-shadow:none; margin-left:auto; min-width:16px; height:16px; font-size:11px; line-height:16px; color:white; background:var(--accent-ink); }

.admin-redesign .fleet-activity { display:flex; flex-wrap:wrap; gap:4px 20px; padding:8px 0; min-width:0; }
.admin-redesign .admin-terminal-row > .fleet-activity, .admin-redesign .trow-f > .fleet-activity { grid-column:1/-1; }
.admin-redesign .fleet-activity time { white-space:normal; }

.admin-redesign #fleet-live-sample { margin:12px 0 24px; }
.admin-redesign #fleet-live-anchor { display:none; }

.admin-redesign .att .opchip { max-width:180px; flex-shrink:0; }
.admin-redesign .att .opchip > span:last-child { overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
body.admin-redesign .att.att-with-operator { grid-template-columns:auto minmax(0,1fr) auto auto; }
@media(max-width:720px) { body.admin-redesign .att.att-with-operator { grid-template-columns:40px minmax(0,1fr) auto; gap:8px 12px; } .admin-redesign .att-with-operator .att-ic { grid-column:1; grid-row:1/3; } .admin-redesign .att-with-operator .att-main { grid-column:2/4; grid-row:1; } .admin-redesign .att-with-operator .opchip { grid-column:2; grid-row:2; min-width:0; max-width:100%; } .admin-redesign .att-with-operator .att-go { grid-column:3; grid-row:2; } }

.admin-redesign #admin-page-live { display:block; margin-top:8px; }
.admin-redesign #admin-page-live [data-state=stale] { color:var(--error-ink); }

body.admin-redesign .bh-figure.bh-figure--na { font-size:28px; }
body.admin-redesign .bh-figure--na .status { color:inherit; font-size:16px; letter-spacing:normal; }
.admin-redesign .treasury-state-tags { display:flex; flex-wrap:wrap; align-items:center; gap:8px; }
.admin-redesign .treasury-readiness { display:grid; gap:8px; margin:16px 0; font-size:14px; }
.admin-redesign .treasury-readiness > div { display:flex; flex-wrap:wrap; justify-content:space-between; gap:4px 16px; }

body.admin-redesign .bh-figure.ui-balance-empty { font-size:28px; }

.admin-redesign #treasury-content > .bal-hero { margin-bottom:24px; }

.admin-redesign .delivery-case-items { display:grid; gap:12px; padding-left:20px; }
.admin-redesign .delivery-case-items .btn { display:block; margin-top:8px; }
.admin-redesign [data-delivery-case] .detail-settings { margin-top:16px; }

/* Existing converted component rules, moved from the legacy stylesheet. */

.admin-media-thumb-img{ width: 100%; height: 100%; object-fit: cover; }
.admin-media-filename{ font-size: var(--text-caption); overflow-wrap: anywhere; }
.admin-contract-name{ font-weight: var(--font-weight-medium); }
.admin-rate-share{ display: flex; align-items: center; gap: var(--spacing-8); }
.admin-rate-share .input{ width: 96px; }
.admin-rate-preview{
  font-weight: var(--font-weight-medium);
  min-height: 1.2em;
}
.admin-content-name{ min-width: 0; display: flex; flex-direction: column; }
.admin-content-label{ overflow-wrap: anywhere; font-weight: var(--font-weight-medium); }
.admin-content-row.is-inuse .admin-content-label{ color: var(--color-steel-fog); font-weight: var(--font-weight-regular); }
.content-pick{ accent-color: var(--color-tidal-teal); }
/* This paired content header keeps its existing spacing over the shared toolbar. */
.admin-content-head, .screen-head.admin-content-head{
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--spacing-16);
}
.admin-shuffle{
  display: flex;
  align-items: center;
  gap: var(--spacing-8);
  font-size: var(--text-body-sm);
  font-weight: var(--font-weight-medium);
}
.admin-shuffle input[type="checkbox"]{ accent-color: var(--color-tidal-teal); }@media (max-width: 640px){
.admin-contract-name{ grid-area: name; font-weight: var(--font-weight-medium); }
.admin-contract-gross{ grid-area: gross; }
.admin-contract-gross::before{
    display: block;
    margin-bottom: 4px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }
.admin-contract-gross::before{ content: "Advertiser pays"; }
.admin-content-row .admin-content-name{ grid-area: name; }}

/* Existing converted component rules, moved from the legacy stylesheet. */

.admin-del-name a{
  color: var(--color-obsidian-core);
  font-weight: var(--font-weight-medium);
}
.admin-del-email{ overflow-wrap: anywhere; }@media (max-width: 640px){
.admin-del-name{ grid-area: name; }
.admin-del-email{ grid-area: email; overflow-wrap: anywhere; }
.admin-del-when{ grid-area: when; }
.admin-del-actions{ grid-area: act; }
.admin-del-actions .btn{ width: 100%; }
.admin-del-name{ grid-area: dname; }
.admin-del-when{ grid-area: dwhen; text-align: right; }
.admin-del-email{ grid-area: demail; }
.admin-del-actions{ grid-area: dact; }
.admin-del-actions .btn{ width: 100%; }}
.admin-terminal{ border-top: 1px solid var(--color-pewter-mist); }
.admin-terminal:first-of-type{ border-top: 0; }
.admin-terminal summary{
  cursor: pointer;
  list-style: none;
  transition: background var(--duration-instant) var(--easing-instant);
}
.admin-terminal summary::-webkit-details-marker{ display: none; }
.admin-terminal summary:hover{ background: var(--color-frost-field); }
.admin-terminal[open] summary{ background: var(--color-frost-field); }
.admin-terminal-code{ font-weight: var(--font-weight-medium); }
.admin-terminal-business{ min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.admin-terminal-scheme{
  font-size: var(--text-caption);
  line-height: var(--leading-caption);
  color: var(--color-steel-fog);
}
.admin-terminal-chevron{ display: grid; place-items: center; transition: transform var(--duration-standard) var(--easing-standard); }
.admin-terminal[open] .admin-terminal-chevron{ transform: rotate(180deg); }
.admin-terminal-editor{
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(240px, .75fr);
  gap: var(--spacing-32);
  padding: var(--spacing-24);
  border-top: 1px solid var(--color-pewter-mist);
}
.admin-terminal-controls{ display: grid; gap: var(--spacing-16); }@media (max-width: 1180px){
.admin-terminal:first-of-type{ border-top: 0; }
.admin-terminal-code{ grid-area: terminal; }
.admin-terminal-business{ grid-area: business; }
.admin-terminal-row > .status:not(.admin-terminal-scheme){ grid-area: health; }
.admin-terminal-software{ grid-area: software; }
.admin-terminal-scheme{ grid-area: security; }
.admin-terminal-chevron{ grid-area: chevron; }}@media (max-width: 720px){
.admin-terminal-editor{ grid-template-columns: 1fr; padding: var(--spacing-16); }
.admin-terminal-controls .form-actions{ align-items: stretch; }
.admin-terminal-controls .form-actions .btn{ width: 100%; }}

/* Deliberate expansion reserves the rail width; hover never covers the task. */
@media (min-width:961px) {
 body.admin-redesign .command-rail { width:64px; background:var(--ink); box-shadow:none; transition:none; }
 body.admin-redesign .command-rail .command-item { width:48px; min-height:44px; flex:none; }
 body.admin-redesign .command-rail .command-label { max-width:0; opacity:0; transform:none; transition:none; }
 body.admin-redesign .command-nav { align-content:start; flex:1; min-height:0; align-self:flex-start; }
 body.admin-redesign .rail-account { width:44px; height:44px; margin-left:1px; flex:none; }
 body.admin-redesign .command-rail-toggle { border:0; font:inherit; cursor:pointer; text-align:left; }
 body.admin-redesign.admin-rail-expanded .command-rail { width:220px; }
 body.admin-redesign.admin-rail-expanded .platform-workspace { padding-left:220px; }
 body.admin-redesign.admin-rail-expanded .command-rail .command-item { width:204px; }
 body.admin-redesign.admin-rail-expanded .command-rail .command-label { max-width:148px; opacity:1; }
 body.admin-redesign .command-rail-toggle:focus-visible { outline:2px solid var(--color-caribbean-mint); outline-offset:-2px; }
}
body.admin-redesign .context-item { position:relative; }
body.admin-redesign .context-item[aria-current='page'] { border-bottom-color:transparent; }
body.admin-redesign .context-item::after { content:""; position:absolute; left:0; right:0; bottom:-2px; height:2px; background:var(--color-caribbean-mint); transform:scaleX(0); transform-origin:left; }
body.admin-redesign .context-item[aria-current='page']::after { transform:scaleX(1); }
@media(prefers-reduced-motion:no-preference) {
 body.admin-redesign .command-label { transition:opacity var(--motion-fast) var(--ease-out),transform var(--motion-base) var(--ease-out); }
 body.admin-redesign .context-item::after { transition:transform var(--motion-base) var(--ease-out); }
 body.admin-redesign .stages :is(.sdone,.scur) > span[aria-hidden=true] { transform-origin:left; animation:admin-stage-fill var(--motion-slow) var(--ease-out); }
 @starting-style { body.admin-redesign .context-item[aria-current='page']::after { transform:scaleX(0); } }
 @keyframes admin-stage-fill { from { transform:scaleX(0); } }
}
@media(prefers-reduced-motion:reduce) {
 body.admin-redesign :is(.command-rail,.command-label,.context-item,.stages span) { transition:none; animation:none; }
 body.admin-redesign .command-rail::before,body.admin-redesign .context-item::after { transition:none; }
}
/* Money engine panels (src/engine/control.ts): Overview attention, network numbers and systems; Money switches and five buckets. */
body.admin-redesign .engine-overview { display: grid; gap: 16px; margin-bottom: 24px; }
body.admin-redesign .engine-kv .kv-row { display: grid; grid-template-columns: minmax(140px, .35fr) minmax(0, 1fr); gap: 16px; align-items: start; }
body.admin-redesign .engine-kv dd { margin: 0; min-width: 0; overflow-wrap: anywhere; text-align: left; }
body.admin-redesign .engine-attentions { display: grid; gap: 8px; }
body.admin-redesign .engine-attention { display: block; padding: 10px 12px; border: 1px solid var(--line, #dde2e5); border-radius: 6px; color: inherit; text-decoration: none; }
body.admin-redesign .engine-attention:hover { border-color: currentColor; }
body.admin-redesign .engine-figs { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 16px; }
body.admin-redesign .engine-figs .fig { min-width: 0; }
body.admin-redesign .engine-systems { display: grid; gap: 0; }
body.admin-redesign .engine-system { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 2px 12px; padding: 10px 0; border-bottom: 1px solid var(--line, #dde2e5); }
body.admin-redesign .engine-system:last-child { border-bottom: 0; }
body.admin-redesign .engine-system .muted { grid-column: 1 / -1; }
body.admin-redesign .engine-switches { display: grid; gap: 12px; }
body.admin-redesign .engine-switch { display: grid; gap: 8px; padding: 14px; border: 1px solid var(--line, #dde2e5); border-radius: 6px; }
body.admin-redesign .engine-switch-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; }
body.admin-redesign .engine-switch-row { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
body.admin-redesign .engine-switch-row .input { flex: 1 1 16rem; min-width: 0; }
@media (max-width: 600px) { body.admin-redesign .engine-kv .kv-row { grid-template-columns: minmax(0, 1fr); gap: 4px; } }
body.admin-redesign .engine-pipes { display: grid; }
body.admin-redesign .engine-pipe { display: grid; grid-template-columns: minmax(12rem, .8fr) minmax(0, 2fr); gap: 8px 16px; padding: 12px 0; border-bottom: 1px solid var(--line, #dde2e5); }
body.admin-redesign .engine-pipe:last-child { border-bottom: 0; }
body.admin-redesign .engine-pipe-name { display: grid; min-width: 0; }
body.admin-redesign .engine-steps { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
body.admin-redesign .engine-step { font-size: 13px; padding: 3px 8px; border: 1px solid var(--line, #dde2e5); border-radius: 6px; color: var(--text-secondary, #4f5a63); }
body.admin-redesign .engine-step.is-done { border-color: transparent; background: var(--teal-soft, #e3f3f1); color: var(--teal-ink, #0d5e56); }
body.admin-redesign .engine-step.is-failed { border-color: transparent; background: #fbe7e5; color: #a3312a; }
@media (max-width: 700px) { body.admin-redesign .engine-pipe { grid-template-columns: minmax(0, 1fr); } }

/* Advertising campaigns (src/engine/advertising.ts). */
body.admin-redesign .engine-campaigns { display: grid; gap: 16px; }
body.admin-redesign .engine-form-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(14rem, 1fr)); gap: 16px; }
body.admin-redesign .engine-form-grid .field { display: grid; gap: 6px; margin: 0; }
body.admin-redesign .engine-campaign-form { display: grid; gap: 16px; }
body.admin-redesign .engine-campaign-form .btn { justify-self: start; }
body.admin-redesign .engine-terminals { border: 1px solid var(--line, #dde2e5); border-radius: 8px; padding: 12px 16px; margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(12rem, 1fr)); gap: 12px 24px; }
body.admin-redesign .engine-terminals legend { padding: 0 6px; }
body.admin-redesign .engine-terminals > div { display: grid; gap: 6px; align-content: start; }
body.admin-redesign .engine-check { display: flex; gap: 8px; align-items: center; font-size: 14px; }
body.admin-redesign .engine-campaign { display: grid; gap: 10px; }
body.admin-redesign .engine-campaign .card-head { display: flex; justify-content: space-between; gap: 12px; align-items: start; }
body.admin-redesign .engine-campaign .engine-kv dd { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
/* The processor Dashboard's tables (src/engine/processor-dashboard.ts): scroll inside their card, never the page. */
body.admin-redesign .processor-shell .card { min-width: 0; }
body.admin-redesign .scroll-x { overflow-x: auto; margin: 0 -4px; }
body.admin-redesign .processor-table { width: 100%; min-width: 640px; border-collapse: collapse; font-size: 14px; }
body.admin-redesign .processor-table th { text-align: left; font-size: 12px; font-weight: 600; color: var(--text-secondary, #4f5a63); padding: 8px 10px; border-bottom: 1px solid var(--line, #dde2e5); white-space: nowrap; }
body.admin-redesign .processor-table td { text-align: left; vertical-align: top; padding: 10px; border-bottom: 1px solid var(--line, #dde2e5); }
body.admin-redesign .processor-table tr:last-child td { border-bottom: 0; }
body.admin-redesign .processor-table .num { text-align: right; font-variant-numeric: tabular-nums; white-space: nowrap; }
body.admin-redesign .processor-shell .block { display: block; }
body.admin-redesign .processor-table .status { white-space: normal; }
body.admin-redesign .processor-add .input { flex: 1 1 12rem; }
body.admin-redesign .processor-name { margin-right: auto; }
@media (max-width: 600px) { body.admin-redesign .processor-name { display: none; } }

/* Brands and member offers (src/engine/brands.ts). */
body.admin-redesign .engine-inline-form { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
body.admin-redesign .engine-inline-form .input { flex: 0 1 16rem; min-width: 0; min-height: 36px; }
body.admin-redesign .engine-inline-form .input[type="number"] { flex: 0 0 5.5rem; }
body.admin-redesign section[aria-label="Member offers"] .engine-kv dd { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; }
body.admin-redesign .vp-member-sub { display: block; font-size: 13px; overflow-wrap: anywhere; }
/* Merchant boarding on the processor Dashboard (engine/merchant-boarding.ts) */
body.admin-redesign .pd-form { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px 12px; align-items: end; margin: 0; }
body.admin-redesign .pd-form label { display: grid; gap: 4px; min-width: 0; font-size: 12.5px; font-weight: 500; }
body.admin-redesign .pd-form .input { width: 100%; min-height: 36px; }
body.admin-redesign .pd-form .pd-wide { grid-column: span 2; }
body.admin-redesign .pd-actions { display: flex; flex-wrap: wrap; gap: 8px; grid-column: 1 / -1; }
body.admin-redesign .pd-form > .btn { justify-self: start; }
body.admin-redesign .pd-list { list-style: none; margin: 0; padding: 0; display: grid; }
body.admin-redesign .pd-list > li { display: grid; gap: 10px; padding: 14px 0; border-top: 1px solid var(--line, #e1e5e8); min-width: 0; }
body.admin-redesign .pd-list > li:first-child { border-top: 0; }
body.admin-redesign .pd-edit summary { cursor: pointer; font-size: 13px; font-weight: 500; }
body.admin-redesign .pd-edit[open] { display: grid; gap: 12px; }
body.admin-redesign .pd-edit[open] summary { margin-bottom: 4px; }
@media (max-width: 600px) { body.admin-redesign .pd-form .pd-wide { grid-column: 1 / -1; } }
body.admin-redesign .hint code { overflow-wrap: anywhere; }
body.admin-redesign .pd-form.pd-period { display: flex; flex-wrap: wrap; gap: 8px; align-items: end; }
body.admin-redesign .pd-form.pd-period label { width: 11rem; }
body.admin-redesign .processor-table tr.total td { border-top: 2px solid var(--line, #e1e5e8); font-weight: 600; }
body.admin-redesign .fee-statement { max-width: 40rem; }
body.admin-redesign .brand-preview { margin-top: 12px; padding: 12px; border: 1px dashed var(--line, #e1e5e8); border-radius: 8px; max-width: 22rem; }
body.admin-redesign .brand-preview .rail-cobrand { display: flex; align-items: center; gap: 6px; font-size: 13px; }
body.admin-redesign .brand-preview .rail-cobrand img { width: 20px; height: 20px; object-fit: contain; border-radius: 4px; }
body.admin-redesign .pd-check { display: flex; align-items: center; gap: 6px; font-size: 13px; }
body.admin-redesign .pd-form .pd-check { display: flex; align-items: center; gap: 6px; align-self: center; font-weight: 400; }

/* Processor Dashboard (src/engine/processor-pages.ts): record pages, filters, timeline, phone tables. */
body.admin-redesign .processor-shell .page-body { display: grid; gap: var(--spacing-24); }
body.admin-redesign .processor-shell .page-body > * { min-width: 0; }
body.admin-redesign .processor-shell .page-head { align-items: flex-end; }
body.admin-redesign .processor-shell .ph-actions { display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
body.admin-redesign .processor-shell .section-head { display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); margin-bottom: var(--spacing-12); flex-wrap: wrap; }
body.admin-redesign .processor-shell .section { margin: 0; }
body.admin-redesign .processor-shell .card.flush { padding: 0; overflow: hidden; }
body.admin-redesign .processor-shell .card.flush .processor-table th:first-child, body.admin-redesign .processor-shell .card.flush .processor-table td:first-child { padding-left: var(--spacing-20); }
body.admin-redesign .processor-shell .card.flush .processor-table th:last-child, body.admin-redesign .processor-shell .card.flush .processor-table td:last-child { padding-right: var(--spacing-20); }
body.admin-redesign .processor-shell .processor-table { min-width: 0; }
body.admin-redesign .processor-shell .processor-table td { vertical-align: middle; }
body.admin-redesign .processor-shell tr[data-href] { cursor: pointer; }
body.admin-redesign .processor-shell tr[data-href]:hover td { background: var(--surface-secondary); }
body.admin-redesign .processor-shell .row-link { color: inherit; text-decoration: none; font-weight: 500; }
body.admin-redesign .processor-shell .row-link:hover { text-decoration: underline; text-underline-offset: 3px; }
body.admin-redesign .processor-shell .pd-chev { width: 24px; color: var(--text-secondary); }
body.admin-redesign .processor-shell .chips { display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
body.admin-redesign .processor-shell .chip { text-decoration: none; color: var(--text-primary); background: var(--surface-secondary); border: 1px solid transparent; }
body.admin-redesign .processor-shell .chip:hover { border-color: var(--line); }
body.admin-redesign .processor-shell .chip.is-on { background: var(--color-onyx-black); color: var(--color-white); }
body.admin-redesign .processor-shell .chip.is-on .muted { color: rgba(255,255,255,.72); }
body.admin-redesign .processor-shell .toolbar { flex-wrap: wrap; gap: var(--spacing-12); }
body.admin-redesign .processor-shell .trend-up { color: var(--accent-ink); font-weight: 500; }
body.admin-redesign .processor-shell .trend-down { color: var(--error-ink); font-weight: 500; }
body.admin-redesign .processor-shell .caution { color: var(--caution-ink); }
body.admin-redesign .processor-shell .ocard { color: inherit; text-decoration: none; display: grid; gap: var(--spacing-16); }
body.admin-redesign .processor-shell .ocard:hover { border-color: var(--text-secondary); }
body.admin-redesign .processor-shell .card-foot { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-12); border-top: 1px solid var(--line); padding-top: var(--spacing-12); }
body.admin-redesign .processor-shell .fig-value .status { font-size: var(--text-body, 15px); }
body.admin-redesign .processor-shell .pd-filters { display: grid; grid-template-columns: minmax(200px, 2fr) repeat(3, minmax(130px, 1fr)) repeat(2, minmax(130px, 1fr)) auto; gap: var(--spacing-12); align-items: end; }
body.admin-redesign .processor-shell .pd-filter-actions { display: flex; gap: var(--spacing-8); }
body.admin-redesign .processor-shell .pd-pager { display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-12); }
body.admin-redesign .processor-shell .pd-sheet-form { display: grid; gap: var(--spacing-16); }
body.admin-redesign .processor-shell .pd-sheet-form > .btn, body.admin-redesign .sheet .pd-sheet-form > .btn { justify-self: start; }
body.admin-redesign .sheet .pd-sheet-form { display: grid; gap: var(--spacing-16); margin-top: var(--spacing-16); }
body.admin-redesign .processor-shell .pd-inline { display: flex; gap: var(--spacing-8); align-items: end; flex-wrap: wrap; }
body.admin-redesign .processor-shell .pd-inline .field { flex: 1 1 220px; }
body.admin-redesign .processor-shell .pd-new { margin-top: var(--spacing-16); padding-top: var(--spacing-16); border-top: 1px solid var(--line); }
body.admin-redesign .processor-shell .row-actions { display: flex; gap: var(--spacing-8); flex-wrap: wrap; align-items: center; }
body.admin-redesign .processor-shell .pd-add-person { grid-template-columns: repeat(3, minmax(0, 1fr)) auto; align-items: end; }
body.admin-redesign .processor-shell .pd-roles { margin-top: var(--spacing-16); }
body.admin-redesign .processor-shell .pd-person { flex-wrap: wrap; }
body.admin-redesign .processor-shell .pd-person .input-sm { min-height: 34px; }
body.admin-redesign .processor-shell .pd-checks { border: 0; padding: 0; margin: 0; display: flex; flex-wrap: wrap; gap: var(--spacing-8) var(--spacing-20); }
body.admin-redesign .processor-shell .pd-checks legend { margin-bottom: var(--spacing-8); }
body.admin-redesign .processor-shell .pd-url { overflow-wrap: anywhere; }
body.admin-redesign .processor-shell .pd-secret { overflow-wrap: anywhere; font-size: 14px; }
body.admin-redesign .processor-shell .pd-code { margin: var(--spacing-12) 0 0; padding: var(--spacing-16); border-radius: 6px; background: var(--color-onyx-black); color: #e8eef0; font-size: 13px; line-height: 1.5; overflow-x: auto; white-space: pre; }
body.admin-redesign .processor-shell .pd-docs h2 code { font-size: 15px; }
body.admin-redesign .processor-shell .pd-amount { font-size: 40px; line-height: 1.05; letter-spacing: -0.03em; margin: var(--spacing-4) 0; font-variant-numeric: tabular-nums; }
body.admin-redesign .processor-shell .pd-sale-hero { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--spacing-16); flex-wrap: wrap; }
body.admin-redesign .processor-shell .pd-split { margin: var(--spacing-16) 0; }
body.admin-redesign .processor-shell .pd-timeline { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
body.admin-redesign .processor-shell .pd-timeline li { display: grid; grid-template-columns: 28px minmax(0, 1fr); column-gap: var(--spacing-12); padding-bottom: var(--spacing-16); position: relative; }
body.admin-redesign .processor-shell .pd-timeline li:not(:last-child)::before { content: ""; position: absolute; left: 11px; top: 26px; bottom: 2px; width: 2px; background: var(--line); }
body.admin-redesign .processor-shell .pd-timeline li.is-done:not(:last-child)::before { background: var(--color-onyx-black); }
body.admin-redesign .processor-shell .pd-timeline .pd-dot { grid-row: span 2; width: 24px; height: 24px; border-radius: 50%; display: grid; place-items: center; border: 2px solid var(--line); background: var(--canvas); }
body.admin-redesign .processor-shell .pd-timeline li.is-done .pd-dot { background: var(--color-onyx-black); border-color: var(--color-onyx-black); color: #fff; }
body.admin-redesign .processor-shell .pd-timeline li.is-failed .pd-dot { background: var(--error-ink); border-color: var(--error-ink); }
body.admin-redesign .processor-shell .pd-timeline .pd-dot .icon { width: 14px; height: 14px; }
body.admin-redesign .processor-shell .stages li.scur span { background: var(--color-caribbean-mint); }
body.admin-redesign .processor-shell .pd-readonly form, body.admin-redesign .processor-shell .pd-readonly button { display: none; }
body.admin-redesign .processor-shell .pd-readonly-note { margin: 0; }
body.admin-redesign .processor-shell .verified-balance-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: var(--spacing-16); }
body.admin-redesign .processor-shell .pd-acts .act { padding: var(--spacing-12) var(--spacing-20); }
body.admin-redesign .processor-shell .orows .orow { display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-10) 0; color: inherit; text-decoration: none; border-bottom: 1px solid var(--line); }
body.admin-redesign .processor-shell .orows .orow:last-child { border-bottom: 0; }
body.admin-redesign .processor-shell .orow .grow { display: grid; min-width: 0; }
body.admin-redesign .platform-bar-actions .pop-anchor { position: relative; }
body.admin-redesign .pd-bell-badge { position: absolute; top: 2px; right: 2px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 999px; background: var(--color-caribbean-mint); color: var(--color-onyx-black); font-size: 11px; font-weight: 600; display: grid; place-items: center; }
body.admin-redesign .pd-pop-atts { display: grid; gap: 0; max-height: 60vh; overflow-y: auto; }
body.admin-redesign .pd-pop-atts .att { border-radius: 0; border-left: 0; border-right: 0; border-top: 0; grid-template-columns: auto minmax(0, 1fr); }
body.admin-redesign .pd-pop-atts .att-go { grid-column: 2; justify-self: start; }
body.admin-redesign .pd-alert-toggle { margin: 0; }
body.admin-redesign .pd-alert-toggle button { display: flex; align-items: center; gap: var(--spacing-12); width: 100%; border: 0; background: none; padding: var(--spacing-12) var(--spacing-16); font: inherit; color: inherit; cursor: pointer; text-align: left; }
body.admin-redesign .pd-alert-toggle button:hover { background: var(--surface-secondary); }
body.admin-redesign .processor-shell .pd-w-0 { width: 0%; }
body.admin-redesign .processor-shell .pd-w-5 { width: 5%; }
body.admin-redesign .processor-shell .pd-w-10 { width: 10%; }
body.admin-redesign .processor-shell .pd-w-15 { width: 15%; }
body.admin-redesign .processor-shell .pd-w-20 { width: 20%; }
body.admin-redesign .processor-shell .pd-w-25 { width: 25%; }
body.admin-redesign .processor-shell .pd-w-30 { width: 30%; }
body.admin-redesign .processor-shell .pd-w-35 { width: 35%; }
body.admin-redesign .processor-shell .pd-w-40 { width: 40%; }
body.admin-redesign .processor-shell .pd-w-45 { width: 45%; }
body.admin-redesign .processor-shell .pd-w-50 { width: 50%; }
body.admin-redesign .processor-shell .pd-w-55 { width: 55%; }
body.admin-redesign .processor-shell .pd-w-60 { width: 60%; }
body.admin-redesign .processor-shell .pd-w-65 { width: 65%; }
body.admin-redesign .processor-shell .pd-w-70 { width: 70%; }
body.admin-redesign .processor-shell .pd-w-75 { width: 75%; }
body.admin-redesign .processor-shell .pd-w-80 { width: 80%; }
body.admin-redesign .processor-shell .pd-w-85 { width: 85%; }
body.admin-redesign .processor-shell .pd-w-90 { width: 90%; }
body.admin-redesign .processor-shell .pd-w-95 { width: 95%; }
body.admin-redesign .processor-shell .pd-w-100 { width: 100%; }
@media (max-width: 1100px) {
 body.admin-redesign .processor-shell .pd-filters { grid-template-columns: repeat(3, minmax(0, 1fr)); }
 body.admin-redesign .processor-shell .pd-filter-q { grid-column: 1 / -1; }
}
@media (max-width: 720px) {
 body.admin-redesign .processor-shell .pd-filters { grid-template-columns: repeat(2, minmax(0, 1fr)); }
 body.admin-redesign .processor-shell .pd-add-person { grid-template-columns: 1fr; }
 body.admin-redesign .processor-shell .pd-amount { font-size: 34px; }
 /* Tables become stacked rows: each cell labeled by its column, the first cell as the row's title. */
 body.admin-redesign .processor-shell .processor-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
 body.admin-redesign .processor-shell .processor-table, body.admin-redesign .processor-shell .processor-table tbody, body.admin-redesign .processor-shell .processor-table tr, body.admin-redesign .processor-shell .processor-table td { display: block; width: auto; }
 body.admin-redesign .processor-shell .processor-table tr { padding: var(--spacing-12) var(--spacing-16); border-bottom: 1px solid var(--line); display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: var(--spacing-12); row-gap: 4px; }
 body.admin-redesign .processor-shell .processor-table tr:last-child { border-bottom: 0; }
 body.admin-redesign .processor-shell .processor-table td { border: 0; padding: 0 !important; text-align: left; display: flex; justify-content: space-between; gap: var(--spacing-12); grid-column: 1 / -1; font-size: 14px; }
 body.admin-redesign .processor-shell .processor-table td[data-label]::before { content: attr(data-label); color: var(--text-secondary); font-size: 13px; flex: none; }
 body.admin-redesign .processor-shell .processor-table td.num { text-align: right; }
 body.admin-redesign .processor-shell .processor-table td:first-child::before { content: none; }
 body.admin-redesign .processor-shell .processor-table td:first-child { font-weight: 500; }
 body.admin-redesign .processor-shell .processor-table td.pd-chev, body.admin-redesign .processor-shell .processor-table td:empty { display: none; }
 body.admin-redesign .processor-shell .processor-table tr.total { background: var(--surface-secondary); }
 body.admin-redesign .processor-shell .card:not(.flush) > .scroll-x .processor-table tr, body.admin-redesign .processor-shell .card:not(.flush) .processor-table tr { padding-left: 0; padding-right: 0; }
}
body.admin-redesign .processor-shell .callout { display: grid; grid-template-columns: minmax(0, 1fr); gap: 4px; align-items: start; }
body.admin-redesign .processor-shell .callout > * { margin: 0; }
body.admin-redesign .processor-shell .bal-hero .mc-asset a { display: inline-block; margin-top: 4px; }
body.admin-redesign .processor-shell .chips .chip { flex: none; white-space: nowrap; width: auto; min-width: 0; max-width: none; height: auto; min-height: 32px; padding: 0 14px; border-radius: 999px; }
body.admin-redesign .processor-shell .toolbar .field-search { flex: 1 1 280px; }
body.admin-redesign .processor-shell .pd-filters .input { min-width: 0; width: 100%; box-sizing: border-box; }
body.admin-redesign .processor-shell .pd-filters .field { min-width: 0; }
@media (max-width: 720px) {
 body.admin-redesign .processor-shell .pd-filter-actions { grid-column: 1 / -1; }
 body.admin-redesign .processor-shell .pd-filter-actions .btn-primary { flex: 1; }
 body.admin-redesign .processor-shell .figs-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
 body.admin-redesign .processor-shell .figs-3 .fig { padding: var(--spacing-14) var(--spacing-12); }
 body.admin-redesign .processor-shell .figs-3 .fig-value { font-size: 20px; }
 body.admin-redesign .processor-shell .figs-3 .fig-sub { display: none; }
}
@media (max-width: 720px) {
 /* Sales on a phone: items and amount, then when, merchant, how paid and the payout. */
 body.admin-redesign .processor-shell .pd-sales tr { grid-template-columns: minmax(0, 1fr) auto; row-gap: 2px; }
 body.admin-redesign .processor-shell .pd-sales td::before { content: none !important; }
 body.admin-redesign .processor-shell .pd-sales td { grid-column: auto; font-weight: 400; }
 body.admin-redesign .processor-shell .pd-sales .c-items { grid-column: 1; grid-row: 1; display: block; }
 body.admin-redesign .processor-shell .pd-sales .c-items .block { display: none; }
 body.admin-redesign .processor-shell .pd-sales .c-amount { grid-column: 2; grid-row: 1; font-weight: 600; }
 body.admin-redesign .processor-shell .pd-sales .c-when { grid-column: 1; grid-row: 2; color: var(--text-secondary); font-size: 13px; display: block; }
 body.admin-redesign .processor-shell .pd-sales .c-merchant, body.admin-redesign .processor-shell .pd-sales .c-paid { grid-column: 1; color: var(--text-secondary); font-size: 13px; display: inline; }
 body.admin-redesign .processor-shell .pd-sales .c-merchant { grid-row: 3; }
 body.admin-redesign .processor-shell .pd-sales .c-paid { grid-row: 4; }
 body.admin-redesign .processor-shell .pd-sales .c-payout { grid-column: 2; grid-row: 2 / span 3; align-self: end; justify-content: flex-end; }
}
body.admin-redesign .processor-shell .pd-more { display: contents; }
body.admin-redesign .processor-shell .pd-more > summary { display: none; }
body.admin-redesign .processor-shell .pd-more-fields { display: contents; }
body.admin-redesign .processor-shell .pd-sales .c-amount { justify-content: flex-end; text-align: right; }
@media (max-width: 720px) {
 body.admin-redesign .processor-shell .pd-filters { grid-template-columns: minmax(0, 1fr) auto; }
 body.admin-redesign .processor-shell .pd-filter-q { grid-column: 1 / -1; }
 body.admin-redesign .processor-shell .pd-more { display: block; grid-column: 1; }
 body.admin-redesign .processor-shell .pd-more > summary { display: inline-flex; list-style: none; gap: 6px; }
 body.admin-redesign .processor-shell .pd-more > summary::-webkit-details-marker { display: none; }
 body.admin-redesign .processor-shell .pd-more[open] { grid-column: 1 / -1; }
 body.admin-redesign .processor-shell .pd-more[open] .pd-more-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-12); margin-top: var(--spacing-12); }
 body.admin-redesign .processor-shell .pd-filter-actions { grid-column: 2; grid-row: 2; }
 body.admin-redesign .processor-shell .pd-more[open] ~ .pd-filter-actions { grid-column: 1 / -1; grid-row: auto; }
 body.admin-redesign .processor-shell .pd-sales .c-when time { font-weight: 400; }
}

/* Canonical supplied component declarations. Identical ordered realm rules share one owner; realm differences remain explicit. */
/* Original HTML reset and page layout, scoped to operational web surfaces. */
/* Supplied October 5 HTML component declarations. Only selector scope changes. */
/* Real Inventory artwork uses img elements in the supplied background-image frames. */
/* Bind existing API hooks to the supplied components; no legacy table layout. */
/* Data-derived source bars without inline styles: preserve the production CSP. */
/* Remove spacing inherited from the retired Home layout. */
/* Preserve the supplied responsive tokens after the scoped source declarations. */
/* Clear effects retained from the retired shared card styles. */
/* The same source components adapt to the narrow Statement drawer itself. */
/* Retired shared drawer copy color must not override source component ink. */
/* Supplied Admin authentication composition, without the retired card wrapper. */
/* Creative library retains the supplied row composition; phone metadata stacks. */
/* Recorded finance facts must wrap under the existing strict CSP. */
/* Retained operator identity values must not widen the phone account page. */
@keyframes spin{ to { transform: rotate(360deg); } }
@keyframes spin{ to { transform: rotate(360deg); } }
:is(body.portal-redesign,body.admin-redesign) h1, :is(body.portal-redesign,body.admin-redesign) h2, :is(body.portal-redesign,body.admin-redesign) h3, :is(body.portal-redesign,body.admin-redesign) h4, :is(body.portal-redesign,body.admin-redesign) p, :is(body.portal-redesign,body.admin-redesign) dl, :is(body.portal-redesign,body.admin-redesign) dd, :is(body.portal-redesign,body.admin-redesign) figure, :is(body.portal-redesign,body.admin-redesign) ul, :is(body.portal-redesign,body.admin-redesign) ol{ margin: 0; padding: 0; }
:is(body.portal-redesign,body.admin-redesign) ul, :is(body.portal-redesign,body.admin-redesign) ol{ list-style: none; }
:is(body.portal-redesign,body.admin-redesign) img, :is(body.portal-redesign,body.admin-redesign) svg{ display: block; }
:is(body.portal-redesign,body.admin-redesign) svg{ flex: none; }
:is(body.portal-redesign,body.admin-redesign) button, :is(body.portal-redesign,body.admin-redesign) input, :is(body.portal-redesign,body.admin-redesign) select, :is(body.portal-redesign,body.admin-redesign) textarea{ font: inherit; color: inherit; }
:is(body.portal-redesign,body.admin-redesign) button{ cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) a{ color: inherit; }
:is(body.portal-redesign,body.admin-redesign) [hidden]{ display: none !important; }
:is(body.portal-redesign,body.admin-redesign) .sr-only{ position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .num{ font-variant-numeric: tabular-nums; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) :focus-visible{ outline: none; box-shadow: var(--focus-ring); }
:is(body.portal-redesign,body.admin-redesign) .on-dark :focus-visible, :is(body.portal-redesign,body.admin-redesign) .command-rail :focus-visible{ box-shadow: 0 0 0 2px var(--color-onyx-black), 0 0 0 4px var(--color-white); }
:is(body.portal-redesign,body.admin-redesign) .icon{ width: 20px; height: 20px; stroke-width: 1.5; }
:is(body.portal-redesign,body.admin-redesign) .icon-sm{ width: 16px; height: 16px; }
:is(body.portal-redesign,body.admin-redesign) .icon-lg{ width: 24px; height: 24px; }
:is(body.portal-redesign,body.admin-redesign) .content{ padding: var(--spacing-36) var(--gutter) var(--spacing-80); max-width: calc(var(--content-max) + var(--gutter) * 2); }
:is(body.portal-redesign,body.admin-redesign) .page-head{ display: flex; align-items: flex-start; justify-content: space-between; gap: var(--spacing-24); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .page-head .lede{ margin-top: var(--spacing-10); }
:is(body.portal-redesign,body.admin-redesign) .page-actions{ display: flex; gap: var(--spacing-12); align-items: center; flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .page-body{ display: grid; gap: var(--spacing-48); margin-top: var(--spacing-32); }
:is(body.portal-redesign,body.admin-redesign) .section{ display: grid; gap: var(--spacing-16); align-content: start; }
:is(body.portal-redesign,body.admin-redesign) .section-head{ display: flex; align-items: baseline; justify-content: space-between; gap: var(--spacing-16); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .section-head .lede{ width: 100%; margin-top: calc(var(--spacing-8) * -1); }
:is(body.portal-redesign,body.admin-redesign) .columns{ display: grid; grid-template-columns: minmax(0, 2fr) minmax(0, 1fr); gap: var(--spacing-24); align-items: start; }
:is(body.portal-redesign,body.admin-redesign){
  
  --color-onyx-black: #0a0d11;
  --color-white: #ffffff;
  --color-caribbean-mint: #00d1a7;
  --color-stone-mist: #eaece4;
  --color-midnight-core: #1c1e22;
  --color-charcoal-grey: #4a4a48;
  --color-steel-gray: #8a8a88;

  
  --surface-secondary: #f2f6f7;
  --surface-strong: #e8eef0;
  --line: #d9e2e4;
  --text-secondary: #5b6d72;
  --accent-soft: #e7f9f4;
  --accent-ink: #007f69;
  --error-ink: #a33737;
  --error-surface: #fff0ee;
  --caution-ink: #76551c;
  --caution-surface: #fff7e7;

  
  --on-dark-secondary: rgba(255, 255, 255, 0.72);
  --control-border: var(--color-steel-gray);

  
  --canvas: var(--color-white);
  --ink: var(--color-onyx-black);
  --primary: var(--color-caribbean-mint);
  --scrim: rgba(10, 13, 17, 0.56);

  
  --font: "TT Hoves", ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  --text-eyebrow: 12px;
  --text-small: 13px;
  --text-body: 16px;
  --text-large: 18px;
  --text-h3: 22px;
  --text-h2: 24px;
  --text-h1: 34px;
  --text-figure: 34px;
  --text-hero: 52px;

  
  --spacing-4: 4px; --spacing-6: 6px; --spacing-8: 8px; --spacing-10: 10px;
  --spacing-12: 12px; --spacing-14: 14px; --spacing-16: 16px; --spacing-20: 20px;
  --spacing-22: 22px; --spacing-24: 24px; --spacing-28: 28px; --spacing-32: 32px;
  --spacing-36: 36px; --spacing-44: 44px; --spacing-48: 48px; --spacing-60: 60px;
  --spacing-64: 64px; --spacing-80: 80px;

  
  --radius-control: 6px;
  --radius-panel: 6px;
  --radius-small: 3px;
  --radius-round: 999px;

  
  --rail-width: 248px;
  --command-rail-width: 64px;
  --command-rail-open: 232px;
  --bar-height: 72px;
  --content-max: 1200px;
  --gutter: 40px;
  --control-height: 44px;
  --control-height-small: 36px;

  --focus-ring: 0 0 0 2px var(--color-white), 0 0 0 4px var(--color-onyx-black);
  --duration: 160ms;
  --ease: cubic-bezier(0.2, 0.7, 0.2, 1);
  color-scheme: light;
}
:is(body.portal-redesign,body.admin-redesign) .h1{ font-size: var(--text-h1); line-height: 1.08; letter-spacing: -0.03em; font-weight: 400; text-wrap: balance; }
:is(body.portal-redesign,body.admin-redesign) .h2{ font-size: var(--text-h3); line-height: 1.2; letter-spacing: -0.02em; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .h3{ font-size: var(--text-body); line-height: 1.4; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .eyebrow{ font-size: var(--text-eyebrow); line-height: 1.33; letter-spacing: 0.08em; text-transform: uppercase; font-weight: 500; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .lede{ font-size: var(--text-body); line-height: 1.5; color: var(--text-secondary); max-width: 62ch; }
:is(body.portal-redesign,body.admin-redesign) .small{ font-size: var(--text-small); line-height: 1.38; }
:is(body.portal-redesign,body.admin-redesign) .muted{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .strong{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .link{ color: var(--ink); text-decoration: underline; text-decoration-color: var(--color-steel-gray); text-underline-offset: 3px; text-decoration-thickness: 1px; }
:is(body.portal-redesign,body.admin-redesign) .link:hover{ text-decoration-color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .link-more{ display: inline-flex; align-items: center; gap: var(--spacing-4); font-size: var(--text-small); font-weight: 500; text-decoration: none; }
:is(body.portal-redesign,body.admin-redesign) .link-more:hover{ text-decoration: underline; text-underline-offset: 3px; }
:is(body.portal-redesign,body.admin-redesign) .btn{
  display: inline-flex; align-items: center; justify-content: center; gap: var(--spacing-8);
  min-height: var(--control-height); padding: 0 var(--spacing-20);
  border: 0; border-radius: var(--radius-control);
  font-size: var(--text-body); line-height: 1.1; font-weight: 500; letter-spacing: -0.01em;
  text-decoration: none; white-space: nowrap;
  transition: background-color var(--duration) var(--ease), filter var(--duration) var(--ease);
}
:is(body.portal-redesign,body.admin-redesign) .btn .icon{ width: 20px; height: 20px; }
:is(body.portal-redesign,body.admin-redesign) .btn-primary{ background: var(--primary); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .btn-secondary{ background: var(--surface-secondary); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .btn-secondary:hover, :is(body.portal-redesign,body.admin-redesign) .btn-secondary.is-hover{ background: var(--surface-strong); }
:is(body.portal-redesign,body.admin-redesign) .btn-primary:hover, :is(body.portal-redesign,body.admin-redesign) .btn-primary.is-hover{ filter: brightness(0.96); }
:is(body.portal-redesign,body.admin-redesign) .btn-primary:active, :is(body.portal-redesign,body.admin-redesign) .btn-primary.is-active{ filter: brightness(0.9); }
:is(body.portal-redesign,body.admin-redesign) .btn-secondary:active, :is(body.portal-redesign,body.admin-redesign) .btn-secondary.is-active{ background: #dbe4e7; }
:is(body.portal-redesign,body.admin-redesign) .btn-danger{ background: var(--error-surface); color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .btn-danger:hover, :is(body.portal-redesign,body.admin-redesign) .btn-danger.is-hover{ filter: brightness(0.96); }
:is(body.portal-redesign,body.admin-redesign) .btn-danger:active, :is(body.portal-redesign,body.admin-redesign) .btn-danger.is-active{ filter: brightness(0.92); }
:is(body.portal-redesign,body.admin-redesign) .btn-small{ min-height: var(--control-height-small); padding: 0 var(--spacing-14); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .btn-small .icon{ width: 16px; height: 16px; }
:is(body.portal-redesign,body.admin-redesign) .btn-icon{ width: var(--control-height); padding: 0; background: var(--surface-secondary); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .btn-icon.btn-small{ width: var(--control-height-small); }
:is(body.portal-redesign,body.admin-redesign) .btn-icon:hover{ background: var(--surface-strong); }
:is(body.portal-redesign,body.admin-redesign) .btn-block{ width: 100%; }
:is(body.portal-redesign,body.admin-redesign) .btn.is-focus{ box-shadow: var(--focus-ring); }
:is(body.portal-redesign,body.admin-redesign) .btn:disabled, :is(body.portal-redesign,body.admin-redesign) .btn[aria-disabled="true"]{ background: var(--surface-strong); color: var(--text-secondary); cursor: default; filter: none; }
:is(body.portal-redesign,body.admin-redesign) .btn.is-loading{ position: relative; color: transparent; pointer-events: none; }
:is(body.portal-redesign,body.admin-redesign) .btn.is-loading::after{
  content: ""; position: absolute; width: 18px; height: 18px; border-radius: 50%;
  border: 2px solid var(--ink); border-right-color: transparent; animation: spin 0.8s linear infinite;
}
:is(body.portal-redesign,body.admin-redesign) .btn-primary.is-loading::after{ border-color: var(--ink); border-right-color: transparent; }
:is(body.portal-redesign,body.admin-redesign) .btn.is-loading .icon{ visibility: hidden; }
:is(body.portal-redesign,body.admin-redesign) .status{ display: inline-flex; align-items: center; gap: var(--spacing-6); font-size: var(--text-small); line-height: 1.3; font-weight: 500; color: var(--ink); white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .status .icon{ width: 16px; height: 16px; stroke-width: 1.75; color: currentColor; }
:is(body.portal-redesign,body.admin-redesign) .table .status{ font-size: var(--text-body); font-weight: 400; line-height: 1.5; }
:is(body.portal-redesign,body.admin-redesign) .table .status .icon{ width: 18px; height: 18px; }
:is(body.portal-redesign,body.admin-redesign) .status-ok .icon{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .status-caution .icon{ color: var(--caution-ink); }
:is(body.portal-redesign,body.admin-redesign) .status-error .icon{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .status-caution{ color: var(--caution-ink); }
:is(body.portal-redesign,body.admin-redesign) .status-error{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .status-neutral{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .status-neutral .icon{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .chip{ display: inline-flex; align-items: center; gap: var(--spacing-6); min-height: 28px; padding: 0 var(--spacing-12); border-radius: var(--radius-round); background: var(--surface-secondary); font-size: var(--text-small); font-weight: 500; color: var(--ink); white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .chip-dot::before{ content: ""; width: 8px; height: 8px; border-radius: 50%; background: var(--primary); }
:is(body.portal-redesign,body.admin-redesign) .avatar{ width: 32px; height: 32px; border-radius: 50%; display: inline-grid; place-items: center; background: var(--surface-strong); font-size: var(--text-small); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .panel{ background: var(--surface-secondary); border-radius: var(--radius-panel); padding: var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .panel-line{ background: var(--canvas); border: 1px solid var(--line); border-radius: var(--radius-panel); }
:is(body.portal-redesign,body.admin-redesign) .panel-pad{ padding: var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .notice{ display: flex; gap: var(--spacing-12); padding: var(--spacing-16) var(--spacing-20); border-radius: var(--radius-small); border-left: 4px solid var(--primary); background: var(--accent-soft); font-size: var(--text-body); line-height: 1.4; }
:is(body.portal-redesign,body.admin-redesign) .notice .icon{ margin-top: 1px; color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .notice-title{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .notice-body{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .notice-caution{ border-left-color: var(--caution-ink); background: var(--caution-surface); }
:is(body.portal-redesign,body.admin-redesign) .notice-caution .icon{ color: var(--caution-ink); }
:is(body.portal-redesign,body.admin-redesign) .notice-error{ border-left-color: var(--error-ink); background: var(--error-surface); }
:is(body.portal-redesign,body.admin-redesign) .notice-error .icon{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .empty{ display: flex; align-items: flex-start; gap: var(--spacing-16); padding: var(--spacing-24); background: var(--surface-secondary); border-radius: var(--radius-panel); }
:is(body.portal-redesign,body.admin-redesign) .empty > .icon{ width: 24px; height: 24px; color: var(--text-secondary); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .empty-title{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .empty-text{ color: var(--text-secondary); margin-top: var(--spacing-4); max-width: 56ch; }
:is(body.portal-redesign,body.admin-redesign) .empty .btn{ margin-top: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .stats{ display: grid; gap: 1px; background: var(--line); border: 1px solid var(--line); border-radius: var(--radius-panel); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .stats-4{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .stats-3{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .stats-2{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .stat{ padding: var(--spacing-24); background: var(--canvas); min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .stat-label{ font-size: var(--text-small); line-height: 1.38; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .stat-figure{ margin-top: var(--spacing-8); font-size: var(--text-figure); line-height: 1.05; letter-spacing: -0.04em; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .stat-note{ margin-top: var(--spacing-8); font-size: var(--text-small); line-height: 1.38; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .hero{ background: var(--color-onyx-black); color: var(--color-white); border-radius: var(--radius-panel); padding: var(--spacing-32); display: flex; align-items: flex-end; justify-content: space-between; gap: var(--spacing-24); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .hero-label{ font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .hero-figure{ margin-top: var(--spacing-8); font-size: var(--text-hero); line-height: 1; letter-spacing: -0.04em; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .hero-note{ margin-top: var(--spacing-12); font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .hero .btn-secondary{ background: rgba(255, 255, 255, 0.12); color: var(--color-white); }
:is(body.portal-redesign,body.admin-redesign) .hero .btn-secondary:hover{ background: rgba(255, 255, 255, 0.2); }
:is(body.portal-redesign,body.admin-redesign) .kv{ display: grid; }
:is(body.portal-redesign,body.admin-redesign) .kv-row{ display: grid; grid-template-columns: minmax(120px, 220px) 1fr; gap: var(--spacing-16); padding: var(--spacing-14) 0; border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .kv-row:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .kv-compact .kv-row{ grid-template-columns: 1fr auto; }
:is(body.portal-redesign,body.admin-redesign) .kv-compact dt{ font-size: var(--text-body); color: var(--ink); padding-top: 0; }
:is(body.portal-redesign,body.admin-redesign) .kv dt{ font-size: var(--text-small); color: var(--text-secondary); padding-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .kv dd{ font-variant-numeric: tabular-nums; min-width: 0; overflow-wrap: anywhere; }
:is(body.portal-redesign,body.admin-redesign) .kv dd .status{ font-size: var(--text-body); font-weight: 400; line-height: 1.5; }
:is(body.portal-redesign,body.admin-redesign) .list-row{ display: grid; grid-template-columns: auto 1fr auto; gap: var(--spacing-16); align-items: center; padding: var(--spacing-16) var(--spacing-20); border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .list-row:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .list-row .status .icon{ width: 22px; height: 22px; }
:is(body.portal-redesign,body.admin-redesign) .list-title{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .list-meta{ font-size: var(--text-small); color: var(--text-secondary); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .table-wrap{ overflow-x: auto; }
:is(body.portal-redesign,body.admin-redesign) .table{ width: 100%; border-collapse: collapse; }
:is(body.portal-redesign,body.admin-redesign) .table th{ padding: var(--spacing-12) var(--spacing-20); text-align: left; font-size: var(--text-small); line-height: 1.3; font-weight: 500; color: var(--text-secondary); border-bottom: 1px solid var(--line); white-space: nowrap; background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .table td{ padding: var(--spacing-16) var(--spacing-20); border-bottom: 1px solid var(--line); vertical-align: middle; }
:is(body.portal-redesign,body.admin-redesign) .table tbody tr:last-child td{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .table tbody tr:hover td{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .table .num, :is(body.portal-redesign,body.admin-redesign) .table th.num{ text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .table .cell-sub{ display: block; font-size: var(--text-small); color: var(--text-secondary); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .table .cell-end{ text-align: right; width: 1%; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .table .code{ font-variant-numeric: tabular-nums; letter-spacing: 0; }
:is(body.portal-redesign,body.admin-redesign) .method{ display: inline-flex; align-items: center; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .method .icon{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .toolbar{ display: flex; align-items: center; gap: var(--spacing-12); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .toolbar-spacer{ flex: 1; }
:is(body.portal-redesign,body.admin-redesign) .field-search{ position: relative; flex: 1 1 280px; max-width: 380px; }
:is(body.portal-redesign,body.admin-redesign) .field-search .icon{ position: absolute; left: var(--spacing-14); top: 50%; transform: translateY(-50%); color: var(--text-secondary); pointer-events: none; }
:is(body.portal-redesign,body.admin-redesign) .field-search .input{ padding-left: 44px; }
:is(body.portal-redesign,body.admin-redesign) .pager{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-16); padding: var(--spacing-12) var(--spacing-20); border-top: 1px solid var(--line); font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .pager-actions{ display: flex; gap: var(--spacing-8); align-items: center; }
:is(body.portal-redesign,body.admin-redesign) .tabs{ display: flex; gap: var(--spacing-24); border-bottom: 1px solid var(--line); overflow-x: auto; }
:is(body.portal-redesign,body.admin-redesign) .tab{ display: inline-flex; align-items: center; min-height: 48px; padding: 0 2px; font-size: var(--text-body); color: var(--text-secondary); text-decoration: none; white-space: nowrap; border-bottom: 2px solid transparent; margin-bottom: -1px; }
:is(body.portal-redesign,body.admin-redesign) .tab:hover{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .tab[aria-current="page"]{ color: var(--ink); font-weight: 500; border-bottom-color: var(--primary); }
:is(body.portal-redesign,body.admin-redesign) .segmented{ display: inline-flex; padding: 3px; gap: 2px; background: var(--surface-secondary); border-radius: var(--radius-control); }
:is(body.portal-redesign,body.admin-redesign) .segmented button{ min-height: 34px; padding: 0 var(--spacing-14); border: 0; border-radius: 4px; background: transparent; color: var(--text-secondary); font-size: var(--text-small); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .segmented button[aria-pressed="true"]{ background: var(--color-onyx-black); color: var(--color-white); }
:is(body.portal-redesign,body.admin-redesign) .field{ display: grid; gap: var(--spacing-8); align-content: start; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .label{ font-size: var(--text-small); font-weight: 500; line-height: 1.3; }
:is(body.portal-redesign,body.admin-redesign) .hint{ font-size: var(--text-small); color: var(--text-secondary); line-height: 1.38; }
:is(body.portal-redesign,body.admin-redesign) .input, :is(body.portal-redesign,body.admin-redesign) .select, :is(body.portal-redesign,body.admin-redesign) .textarea{
  width: 100%; min-height: var(--control-height); padding: 0 var(--spacing-14);
  background: var(--canvas); border: 1px solid var(--control-border); border-radius: var(--radius-control);
  font-size: var(--text-body); line-height: 1.3; color: var(--ink);
  transition: border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease);
}
:is(body.portal-redesign,body.admin-redesign) .textarea{ padding: var(--spacing-12) var(--spacing-14); min-height: 96px; resize: vertical; }
:is(body.portal-redesign,body.admin-redesign) .input::placeholder{ color: var(--text-secondary); opacity: 1; }
:is(body.portal-redesign,body.admin-redesign) .input:hover, :is(body.portal-redesign,body.admin-redesign) .select:hover, :is(body.portal-redesign,body.admin-redesign) .textarea:hover{ border-color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .input:focus, :is(body.portal-redesign,body.admin-redesign) .select:focus, :is(body.portal-redesign,body.admin-redesign) .textarea:focus, :is(body.portal-redesign,body.admin-redesign) .input.is-focus{ outline: none; border-color: var(--ink); box-shadow: var(--focus-ring); }
:is(body.portal-redesign,body.admin-redesign) .select{
  appearance: none; -webkit-appearance: none; padding-right: 40px; cursor: pointer;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%230a0d11' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'><path d='m19.5 8.25-7.5 7.5-7.5-7.5'/></svg>");
  background-repeat: no-repeat; background-position: right 12px center; background-size: 20px;
}
:is(body.portal-redesign,body.admin-redesign) .select-small, :is(body.portal-redesign,body.admin-redesign) .input-small{ min-height: var(--control-height-small); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .input:disabled, :is(body.portal-redesign,body.admin-redesign) .select:disabled, :is(body.portal-redesign,body.admin-redesign) .textarea:disabled{ background: var(--surface-secondary); border-color: var(--line); color: var(--text-secondary); cursor: not-allowed; }
:is(body.portal-redesign,body.admin-redesign) .field.has-error .input, :is(body.portal-redesign,body.admin-redesign) .field.has-error .select{ border-color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .field-error{ display: flex; align-items: center; gap: var(--spacing-6); font-size: var(--text-small); color: var(--error-ink); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .field-error .icon{ width: 16px; height: 16px; }
:is(body.portal-redesign,body.admin-redesign) .check{ display: inline-flex; align-items: center; gap: var(--spacing-10); min-height: var(--control-height-small); cursor: pointer; font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .check input{ appearance: none; -webkit-appearance: none; width: 20px; height: 20px; margin: 0; border: 1px solid var(--control-border); border-radius: 4px; background: var(--canvas); display: grid; place-items: center; cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) .check input:checked{ background: var(--ink); border-color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .check input:checked::after{ content: ""; width: 10px; height: 6px; border-left: 2px solid var(--color-white); border-bottom: 2px solid var(--color-white); transform: translateY(-1px) rotate(-45deg); }
:is(body.portal-redesign,body.admin-redesign) .switch{ position: relative; display: inline-flex; align-items: center; gap: var(--spacing-12); min-height: var(--control-height-small); cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) .switch input{ appearance: none; -webkit-appearance: none; width: 44px; height: 24px; margin: 0; border-radius: var(--radius-round); background: var(--color-steel-gray); position: relative; cursor: pointer; transition: background-color var(--duration) var(--ease); }
:is(body.portal-redesign,body.admin-redesign) .switch input::after{ content: ""; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: var(--color-white); transition: transform var(--duration) var(--ease); }
:is(body.portal-redesign,body.admin-redesign) .switch input:checked{ background: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .switch input:checked::after{ transform: translateX(20px); }
:is(body.portal-redesign,body.admin-redesign) .form-grid{ display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: var(--spacing-20) var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .form-actions{ display: flex; gap: var(--spacing-12); align-items: center; flex-wrap: wrap; margin-top: var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .split{ display: flex; height: 12px; border-radius: var(--radius-round); overflow: hidden; background: var(--surface-strong); gap: 2px; }
:is(body.portal-redesign,body.admin-redesign) .split > span{ display: block; }
:is(body.portal-redesign,body.admin-redesign) .split .seg-ok{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .split .seg-caution{ background: var(--caution-ink); }
:is(body.portal-redesign,body.admin-redesign) .split .seg-error{ background: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .split .seg-ink{ background: var(--color-onyx-black); }
:is(body.portal-redesign,body.admin-redesign) .legend{ display: flex; gap: var(--spacing-20); flex-wrap: wrap; font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .legend i{ display: inline-block; width: 12px; height: 12px; border-radius: 2px; margin-right: var(--spacing-6); vertical-align: -2px; }
:is(body.portal-redesign,body.admin-redesign) .legend .sw-settled{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .legend .sw-pending{ background: repeating-linear-gradient(135deg, var(--accent-ink) 0 2px, var(--canvas) 2px 5px); border: 1px solid var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .legend .sw-open{ background: var(--surface-strong); border: 1px solid var(--color-steel-gray); }
:is(body.portal-redesign,body.admin-redesign) .bars{ display: flex; align-items: flex-end; gap: 6px; height: 180px; border-bottom: 1px solid var(--line); padding-top: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .bars .bar-col{ flex: 1; display: flex; flex-direction: column-reverse; min-width: 0; border-radius: 2px 2px 0 0; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .bar-settled{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .bar-pending{ background: repeating-linear-gradient(135deg, var(--accent-ink) 0 2px, var(--canvas) 2px 6px); border: 1px solid var(--accent-ink); border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .bar-open{ background: var(--surface-strong); border: 1px solid var(--color-steel-gray); border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .axis{ display: flex; justify-content: space-between; margin-top: var(--spacing-8); font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .mk{ display: inline-block; flex: none; width: 28px; height: 20px; background-repeat: no-repeat; background-position: center; background-size: contain; }
:is(body.portal-redesign,body.admin-redesign) .mk-vendpass{ width: 66px; height: 15px; }
:is(body.portal-redesign,body.admin-redesign) .mk-lg{ width: 40px; height: 30px; }
:is(body.portal-redesign,body.admin-redesign) .tile{ width: 44px; height: 44px; border-radius: var(--radius-control); background: var(--surface-secondary); display: grid; place-items: center; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .tile .mk{ width: 26px; height: 22px; }
:is(body.portal-redesign,body.admin-redesign) .tile .icon{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .tile-lg{ width: 56px; height: 56px; }
:is(body.portal-redesign,body.admin-redesign) .tile-dark{ background: rgba(255, 255, 255, 0.1); }
:is(body.portal-redesign,body.admin-redesign) .tile-white{ background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .mk-circle{ width: 56px; height: 56px; }
:is(body.portal-redesign,body.admin-redesign) .pill{ display: inline-flex; align-items: center; gap: var(--spacing-6); min-height: 30px; padding: 0 var(--spacing-14) 0 var(--spacing-10); border-radius: var(--radius-round); font-size: var(--text-small); font-weight: 500; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .pill .icon{ width: 16px; height: 16px; stroke-width: 2; }
:is(body.portal-redesign,body.admin-redesign) .pill-instant{ background: var(--primary); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .page{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .page.is-current{ display: block; }
:is(body.portal-redesign,body.admin-redesign) .head-meta{ display: flex; align-items: center; gap: var(--spacing-12); flex-wrap: wrap; margin-top: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .dot-sep::before{ content: ""; width: 3px; height: 3px; border-radius: 50%; background: var(--text-secondary); margin-right: var(--spacing-12); display: inline-block; vertical-align: middle; }
:is(body.portal-redesign,body.admin-redesign) .cards{ display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .card{ position: relative; display: grid; gap: var(--spacing-16); align-content: start; padding: var(--spacing-20); background: var(--canvas); border: 1px solid var(--line); border-radius: var(--radius-panel); text-align: left; transition: border-color var(--duration) var(--ease); }
:is(body.portal-redesign,body.admin-redesign) button.card, :is(body.portal-redesign,body.admin-redesign) a.card{ cursor: pointer; text-decoration: none; color: inherit; width: 100%; font: inherit; }
:is(body.portal-redesign,body.admin-redesign) button.card:hover, :is(body.portal-redesign,body.admin-redesign) a.card:hover{ border-color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .card-top{ display: flex; align-items: center; gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .card-top .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .card-title{ font-weight: 500; font-size: var(--text-large); line-height: 1.25; letter-spacing: -0.01em; }
:is(body.portal-redesign,body.admin-redesign) .card-sub{ font-size: var(--text-small); color: var(--text-secondary); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .card-foot{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); padding-top: var(--spacing-14); border-top: 1px solid var(--line); font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .card-foot .link-more{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .meta{ display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-12) var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .meta dt{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .meta dd{ font-weight: 500; margin-top: 2px; min-width: 0; overflow-wrap: anywhere; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .meta dd.muted{ font-weight: 400; }
:is(body.portal-redesign,body.admin-redesign) .card-state{ border-top: 3px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .card-state-ok{ border-top-color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .card-state-error{ border-top-color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .card-add{ display: grid; place-items: center; gap: var(--spacing-8); min-height: 200px; border-style: dashed; border-color: var(--color-steel-gray); background: transparent; color: var(--ink); text-align: center; }
:is(body.portal-redesign,body.admin-redesign) .card-add .tile{ margin: 0 auto; }
:is(body.portal-redesign,body.admin-redesign) .pgrid{ display: grid; grid-template-columns: repeat(auto-fill, minmax(212px, 1fr)); gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .prod{ padding: 0; gap: 0; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .prod-img{ height: 168px; background-color: var(--surface-secondary); background-repeat: no-repeat; background-position: center; background-size: auto 74%; image-rendering: auto; }
:is(body.portal-redesign,body.admin-redesign) .prod-body{ padding: var(--spacing-16) var(--spacing-16) var(--spacing-12); display: grid; gap: var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .prod-name{ font-weight: 500; line-height: 1.3; }
:is(body.portal-redesign,body.admin-redesign) .prod-desc{ font-size: var(--text-small); color: var(--text-secondary); line-height: 1.38; min-height: 2.76em; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .prod-row{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-8); padding: var(--spacing-8) var(--spacing-16) var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .price{ font-size: var(--text-h3); letter-spacing: -0.02em; font-weight: 500; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .prod-foot{ padding: var(--spacing-12) var(--spacing-16); border-top: 1px solid var(--line); font-size: var(--text-small); color: var(--text-secondary); display: flex; justify-content: space-between; }
:is(body.portal-redesign,body.admin-redesign) .thumb{ width: 44px; height: 44px; border-radius: var(--radius-control); background-color: var(--surface-secondary); background-repeat: no-repeat; background-position: center; background-size: auto 78%; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .thumb-lg{ width: 80px; height: 80px; }
:is(body.portal-redesign,body.admin-redesign) .thumb-xl{ width: 100%; height: 220px; background-size: auto 80%; }
:is(body.portal-redesign,body.admin-redesign) .stockbar{ display: flex; height: 14px; border-radius: var(--radius-round); overflow: hidden; background: var(--surface-strong); }
:is(body.portal-redesign,body.admin-redesign) .stockbar span{ display: block; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sb-ok{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .sb-low{ background: var(--caution-ink); }
:is(body.portal-redesign,body.admin-redesign) .sb-out{ background: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .sb-none{ background: repeating-linear-gradient(135deg, var(--color-steel-gray) 0 2px, var(--surface-strong) 2px 7px); }
:is(body.portal-redesign,body.admin-redesign) .stocklegend{ display: grid; grid-template-columns: 1fr 1fr; gap: var(--spacing-10) var(--spacing-16); margin-top: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .stocklegend div{ display: flex; align-items: center; gap: var(--spacing-8); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .stocklegend i{ width: 12px; height: 12px; border-radius: 2px; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .stocklegend b{ margin-left: auto; font-weight: 500; font-variant-numeric: tabular-nums; font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .stocklegend .sb-none{ border: 1px solid var(--color-steel-gray); }
:is(body.portal-redesign,body.admin-redesign) .machine{ padding: 0; gap: 0; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .machine-head{ display: flex; align-items: center; gap: var(--spacing-16); padding: var(--spacing-20); border-bottom: 1px solid var(--line); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .machine-head .grow{ flex: 1; min-width: 200px; }
:is(body.portal-redesign,body.admin-redesign) .machine-summary{ min-width: 220px; flex: 0 1 320px; }
:is(body.portal-redesign,body.admin-redesign) .slots{ display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 1px; background: var(--line); }
:is(body.portal-redesign,body.admin-redesign) .slot{ background: var(--canvas); padding: var(--spacing-14) var(--spacing-14) var(--spacing-16); display: grid; gap: var(--spacing-10); justify-items: start; }
:is(body.portal-redesign,body.admin-redesign) .slot-top{ display: flex; align-items: center; justify-content: space-between; width: 100%; }
:is(body.portal-redesign,body.admin-redesign) .slot-id{ font-size: var(--text-small); font-weight: 500; min-width: 34px; height: 24px; display: inline-grid; place-items: center; border-radius: var(--radius-small); background: var(--surface-secondary); padding: 0 6px; }
:is(body.portal-redesign,body.admin-redesign) .slot-img{ width: 100%; height: 84px; background-color: var(--surface-secondary); border-radius: var(--radius-control); background-repeat: no-repeat; background-position: center; background-size: auto 80%; }
:is(body.portal-redesign,body.admin-redesign) .slot-name{ font-size: var(--text-small); font-weight: 500; line-height: 1.3; min-height: 2.6em; }
body.portal-redesign .machines .slot{ min-width: 0; }
body.portal-redesign .machines .slot-img{ min-width: 0; overflow: hidden; display: flex; align-items: center; justify-content: center; }
body.portal-redesign .machines .slot-img > img{ display: block; width: auto; height: 80%; max-width: 100%; object-fit: contain; }
body.portal-redesign .machines .slot-name{ min-width: 0; overflow-wrap: anywhere; }
body.portal-redesign .rs .thumb{ overflow: hidden; display: flex; align-items: center; justify-content: center; }
body.portal-redesign .rs .thumb > img{ display: block; width: auto; height: 80%; max-width: 100%; object-fit: contain; }
:is(body.portal-redesign,body.admin-redesign) .slot-foot{ display: flex; align-items: center; justify-content: space-between; width: 100%; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .slot-foot .status{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .sales-group{ display: grid; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .sales-day{ display: flex; align-items: baseline; justify-content: space-between; padding: 0 var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .sales-day .h3{ font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .sales-day .num{ color: var(--text-secondary); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .sales{ background: var(--canvas); border: 1px solid var(--line); border-radius: var(--radius-panel); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .sale{ display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: var(--spacing-16); width: 100%; padding: var(--spacing-12) var(--spacing-20); border: 0; border-bottom: 1px solid var(--line); background: var(--canvas); text-align: left; font: inherit; }
:is(body.portal-redesign,body.admin-redesign) .sales > .sale:last-child, :is(body.portal-redesign,body.admin-redesign) .sales > :last-child .sale:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) button.sale:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .sale-main{ min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sale-title{ display: flex; align-items: center; gap: var(--spacing-10); flex-wrap: wrap; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .sale-meta{ font-size: var(--text-small); color: var(--text-secondary); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .sale-amt{ font-weight: 500; font-variant-numeric: tabular-nums; text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .sale-amt small{ display: block; font-weight: 400; font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .methodbar{ display: flex; height: 14px; border-radius: var(--radius-round); overflow: hidden; background: var(--surface-strong); }
:is(body.portal-redesign,body.admin-redesign) .methodbar .mb-digital{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .methodbar .mb-card{ background: var(--color-onyx-black); }
:is(body.portal-redesign,body.admin-redesign) .mrows{ display: grid; gap: var(--spacing-12); margin-top: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .mrow{ display: flex; align-items: center; gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .mrow .sw{ width: 12px; height: 12px; border-radius: 2px; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .mrow .marks{ display: flex; gap: var(--spacing-6); align-items: center; }
:is(body.portal-redesign,body.admin-redesign) .mrow .marks .mk{ width: 24px; height: 18px; }
:is(body.portal-redesign,body.admin-redesign) .mrow .amt{ margin-left: auto; font-weight: 500; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .mrow .pct{ width: 44px; text-align: right; color: var(--text-secondary); font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .sw-digital{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .sw-card{ background: var(--color-onyx-black); }
:is(body.portal-redesign,body.admin-redesign) .hero-balance{ display: grid; gap: var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .hero-row{ display: flex; align-items: center; gap: var(--spacing-20); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .hero-row .grow{ flex: 1; min-width: 220px; }
:is(body.portal-redesign,body.admin-redesign) .hero-actions{ display: flex; gap: var(--spacing-10); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .hero-asset{ display: flex; align-items: center; gap: var(--spacing-8); margin-top: var(--spacing-12); font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .hero-split{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: rgba(255, 255, 255, 0.14); border-radius: var(--radius-control); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .hero-split > div{ background: var(--color-onyx-black); padding: var(--spacing-16) var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .hero-split .lab{ font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .hero-split .fig{ font-size: var(--text-h3); letter-spacing: -0.02em; font-weight: 500; margin-top: 4px; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .hero .status-ok .icon{ color: var(--primary); }
:is(body.portal-redesign,body.admin-redesign) .donut-row{ display: flex; align-items: center; gap: var(--spacing-24); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .donut{ width: 132px; height: 132px; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .donut circle{ fill: none; stroke-width: 16; }
:is(body.portal-redesign,body.admin-redesign) .donut .tr{ stroke: var(--color-onyx-black); }
:is(body.portal-redesign,body.admin-redesign) .donut .dg{ stroke: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .chart{ display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .chart-y{ display: flex; flex-direction: column-reverse; justify-content: space-between; font-size: var(--text-small); color: var(--text-secondary); height: 200px; text-align: right; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .chart-y span{ line-height: 1; transform: translateY(0.5em); }
:is(body.portal-redesign,body.admin-redesign) .chart-y span:first-child{ transform: translateY(0); }
:is(body.portal-redesign,body.admin-redesign) .chart-plot{ position: relative; height: 200px; border-bottom: 1px solid var(--line); background: repeating-linear-gradient(to top, var(--line) 0 1px, transparent 1px 25%); background-position: 0 0; }
:is(body.portal-redesign,body.admin-redesign) .chart-bars{ position: absolute; inset: 0; display: flex; align-items: flex-end; gap: 5px; padding: 0 2px; }
:is(body.portal-redesign,body.admin-redesign) .cbar{ position: relative; flex: 1; min-width: 0; height: 100%; display: flex; align-items: flex-end; outline: none; }
:is(body.portal-redesign,body.admin-redesign) .cbar-stack{ width: 100%; display: flex; flex-direction: column-reverse; border-radius: 2px 2px 0 0; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .cbar-s{ background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .cbar-p{ background: repeating-linear-gradient(135deg, var(--accent-ink) 0 2px, var(--canvas) 2px 6px); border: 1px solid var(--accent-ink); border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .cbar-o{ background: var(--surface-strong); border: 1px solid var(--color-steel-gray); border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .cbar:hover .cbar-stack, :is(body.portal-redesign,body.admin-redesign) .cbar:focus .cbar-stack{ box-shadow: 0 0 0 2px var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .cbar .tip{ position: absolute; bottom: calc(100% + 8px); left: 50%; transform: translateX(-50%); z-index:var(--z-toolbar); display: none; min-width: 168px; padding: var(--spacing-10) var(--spacing-12); border-radius: var(--radius-control); background: var(--color-onyx-black); color: var(--color-white); font-size: var(--text-small); line-height: 1.45; box-shadow: 0 8px 24px rgba(10, 13, 17, 0.2); pointer-events: none; }
:is(body.portal-redesign,body.admin-redesign) .cbar:hover .tip, :is(body.portal-redesign,body.admin-redesign) .cbar:focus .tip{ display: block; }
:is(body.portal-redesign,body.admin-redesign) .cbar:nth-child(-n+4) .tip{ left: 0; transform: none; }
:is(body.portal-redesign,body.admin-redesign) .cbar:nth-last-child(-n+4) .tip{ left: auto; right: 0; transform: none; }
:is(body.portal-redesign,body.admin-redesign) .tip b{ display: block; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .tip span{ display: flex; justify-content: space-between; gap: var(--spacing-16); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .chart-x{ grid-column: 2; display: flex; justify-content: space-between; font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .series[hidden]{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .chart-empty{ position: absolute; inset: 0; display: grid; place-items: center; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .area{ display: block; width: 100%; height: 100%; }
:is(body.portal-redesign,body.admin-redesign) .area .ln{ fill: none; stroke: var(--accent-ink); stroke-width: 2; vector-effect: non-scaling-stroke; stroke-linejoin: round; }
:is(body.portal-redesign,body.admin-redesign) .area .fl{ fill: var(--accent-soft); }
:is(body.portal-redesign,body.admin-redesign) .rows{ background: var(--canvas); border: 1px solid var(--line); border-radius: var(--radius-panel); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .row{ display: flex; align-items: center; gap: var(--spacing-16); padding: var(--spacing-14) var(--spacing-20); border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .row:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .row .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .row-title{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .row-meta{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .row .num{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) a.row, :is(body.portal-redesign,body.admin-redesign) button.row{ width: 100%; background: var(--canvas); border-left: 0; border-right: 0; border-top: 0; text-align: left; text-decoration: none; color: inherit; font: inherit; cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) a.row:hover, :is(body.portal-redesign,body.admin-redesign) button.row:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .row .chev{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .copy-field{ display: flex; align-items: center; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .mono{ font-variant-numeric: tabular-nums; letter-spacing: 0; overflow-wrap: anywhere; }
:is(body.portal-redesign,body.admin-redesign) .ad{ display: grid; grid-template-columns: 112px minmax(0, 1fr); gap: var(--spacing-20); padding: var(--spacing-20); align-items: start; }
:is(body.portal-redesign,body.admin-redesign) .ad-img{ width: 112px; height: 112px; border-radius: var(--radius-control); background-size: cover; background-position: center; background-color: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .ad-figs{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-12) var(--spacing-20); margin-top: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .ad-figs dt{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .ad-figs dd{ font-weight: 500; font-variant-numeric: tabular-nums; margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .ad-bar{ height: 6px; background: var(--surface-strong); border-radius: 999px; margin-top: var(--spacing-12); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .ad-bar span{ display: block; height: 100%; background: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .ad-actions{ display: flex; gap: var(--spacing-8); margin-top: var(--spacing-14); }
:is(body.portal-redesign,body.admin-redesign) .setting{ display: grid; grid-template-columns: minmax(0, 280px) minmax(0, 1fr); gap: var(--spacing-32); padding: var(--spacing-32) 0; border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .setting:first-child{ border-top: 0; padding-top: 0; }
:is(body.portal-redesign,body.admin-redesign) .setting-body{ display: grid; gap: var(--spacing-16); max-width: 560px; align-content: start; }
:is(body.portal-redesign,body.admin-redesign) .setting-danger .h2{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .addr{ display: flex; align-items: center; gap: var(--spacing-14); padding: var(--spacing-14) var(--spacing-16); border: 1px solid var(--line); border-radius: var(--radius-panel); background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .addr .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .thread{ display: grid; gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .msg{ display: grid; gap: var(--spacing-6); max-width: 640px; padding: var(--spacing-14) var(--spacing-16); border-radius: var(--radius-panel); background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .msg-you{ justify-self: end; background: var(--color-onyx-black); color: var(--color-white); }
:is(body.portal-redesign,body.admin-redesign) .msg-who{ font-size: var(--text-small); opacity: 0.8; }
:is(body.portal-redesign,body.admin-redesign) .resp{ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .resp .panel{ display: grid; gap: var(--spacing-12); align-content: start; }
:is(body.portal-redesign,body.admin-redesign) .resp li{ display: flex; gap: var(--spacing-10); align-items: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .resp li .icon{ width: 18px; height: 18px; margin-top: 3px; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .quick{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .pane[hidden]{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .pop-anchor{ position: relative; }
:is(body.portal-redesign,body.admin-redesign) .pop{ position: absolute; top: calc(100% + 8px); right: 0; width: 380px; max-width: calc(100vw - 32px); background: var(--canvas); border: 1px solid var(--line); border-radius: var(--radius-panel); box-shadow: 0 16px 40px rgba(10, 13, 17, 0.16); z-index:var(--z-pop); display: none; }
:is(body.portal-redesign,body.admin-redesign) .pop.is-open{ display: block; }
:is(body.portal-redesign,body.admin-redesign) .pop-left{ right: auto; left: 0; width: 300px; }
:is(body.portal-redesign,body.admin-redesign) .pop-head{ display: flex; align-items: center; justify-content: space-between; padding: var(--spacing-14) var(--spacing-16); border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .pop-item{ display: flex; gap: var(--spacing-12); align-items: flex-start; padding: var(--spacing-14) var(--spacing-16); border-bottom: 1px solid var(--line); text-decoration: none; color: inherit; width: 100%; background: var(--canvas); border-left: 0; border-right: 0; border-top: 0; text-align: left; font: inherit; cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) .pop-item:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .pop-item:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .pop-item .icon{ margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .pop-item .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .pop-item.is-read .unread{ visibility: hidden; }
:is(body.portal-redesign,body.admin-redesign) .unread{ width: 8px; height: 8px; border-radius: 50%; background: var(--accent-ink); margin-top: 8px; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .pop-menu a, :is(body.portal-redesign,body.admin-redesign) .pop-menu button{ display: flex; align-items: center; gap: var(--spacing-12); width: 100%; min-height: var(--control-height); padding: 0 var(--spacing-16); text-decoration: none; background: var(--canvas); border: 0; text-align: left; font: inherit; cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) .pop-menu a:hover, :is(body.portal-redesign,body.admin-redesign) .pop-menu button:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .pop-who{ padding: var(--spacing-14) var(--spacing-16); border-bottom: 1px solid var(--line); display: flex; gap: var(--spacing-12); align-items: center; }
:is(body.portal-redesign,body.admin-redesign) .bell.is-read::after{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .palette{ position: fixed; inset: 0; z-index:var(--z-panel); display: none; align-items: flex-start; justify-content: center; padding: 12vh var(--spacing-16) 0; background: var(--scrim); }
:is(body.portal-redesign,body.admin-redesign) .palette.is-open{ display: flex; }
:is(body.portal-redesign,body.admin-redesign) .palette-box{ width: min(560px, 100%); background: var(--canvas); border-radius: var(--radius-panel); overflow: hidden; box-shadow: 0 24px 60px rgba(10, 13, 17, 0.3); }
:is(body.portal-redesign,body.admin-redesign) .palette-input{ display: flex; align-items: center; gap: var(--spacing-12); padding: 0 var(--spacing-16); border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .palette-input input{ flex: 1; min-height: 56px; border: 0; outline: none; background: transparent; font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .palette-list{ max-height: 360px; overflow-y: auto; padding: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .palette-list a{ display: flex; align-items: center; gap: var(--spacing-12); min-height: var(--control-height); padding: 0 var(--spacing-12); border-radius: var(--radius-control); text-decoration: none; }
:is(body.portal-redesign,body.admin-redesign) .palette-list a:hover, :is(body.portal-redesign,body.admin-redesign) .palette-list a.is-active{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .palette-foot{ padding: var(--spacing-10) var(--spacing-16); border-top: 1px solid var(--line); font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .toast-host{ position: fixed; left: 50%; bottom: var(--spacing-24); transform: translateX(-50%); z-index:var(--z-sheet); pointer-events: none; }
:is(body.portal-redesign,body.admin-redesign) .toast-host .toast{ box-shadow: 0 8px 24px rgba(10, 13, 17, 0.25); }
:is(body.portal-redesign,body.admin-redesign) .sheet-title{ font-size: var(--text-h3); letter-spacing: -0.02em; font-weight: 500; line-height: 1.2; }
:is(body.portal-redesign,body.admin-redesign) .sheet-amount{ font-size: 52px; line-height: 1; letter-spacing: -0.04em; font-weight: 500; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .sheet-tabs{ margin-top: calc(var(--spacing-8) * -1); }
:is(body.portal-redesign,body.admin-redesign) .sheet .kv-row{ grid-template-columns: minmax(110px, 160px) 1fr; }
:is(body.portal-redesign,body.admin-redesign) .assign{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-14) 0; border-bottom: 1px solid var(--line); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .assign:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .assign .grow{ flex: 1; min-width: 140px; }
:is(body.portal-redesign,body.admin-redesign) .assign .figs{ display: flex; gap: var(--spacing-20); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .assign .figs b{ display: block; font-weight: 500; font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .code-box{ display: flex; align-items: center; justify-content: center; gap: var(--spacing-12); padding: var(--spacing-24); border-radius: var(--radius-panel); background: var(--surface-secondary); font-size: 40px; letter-spacing: 0.12em; font-weight: 500; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .btn-text{ background: transparent; color: var(--ink); min-height: var(--control-height-small); padding: 0 var(--spacing-10); text-decoration: underline; text-underline-offset: 3px; text-decoration-color: var(--color-steel-gray); }
:is(body.portal-redesign,body.admin-redesign) .btn-text:hover{ text-decoration-color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .btn-text-danger{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .is-filtered-out{ display: none !important; }
:is(body.portal-redesign,body.admin-redesign) .count-line{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign){
  --low: #e9978e;
  --low-ink: #c2493f;
  --mint: var(--color-caribbean-mint);
  --mint-deep: #00b894;
  --card-pad: var(--spacing-24);
}
:is(body.portal-redesign,body.admin-redesign) .content{ max-width: calc(1240px + var(--gutter) * 2); }
:is(body.portal-redesign,body.admin-redesign) .page-head{ align-items: flex-end; }
:is(body.portal-redesign,body.admin-redesign) .ph-main .eyebrow{ margin-bottom: var(--spacing-8); letter-spacing: 0.04em; text-transform: none; font-size: var(--text-small); font-weight: 400; }
:is(body.portal-redesign,body.admin-redesign) .page-body{ gap: var(--spacing-40, 40px); margin-top: var(--spacing-28); }
:is(body.portal-redesign,body.admin-redesign) .page-body.tight{ gap: var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .h3{ font-size: var(--text-large); letter-spacing: -0.01em; font-weight: 500; line-height: 1.3; }
:is(body.portal-redesign,body.admin-redesign) .section{ gap: var(--spacing-14); }
:is(body.portal-redesign,body.admin-redesign) .section-head{ align-items: flex-end; }
:is(body.portal-redesign,body.admin-redesign) .sec-lede{ font-size: var(--text-small); color: var(--text-secondary); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .count-pill{ display: inline-grid; place-items: center; min-width: 26px; height: 26px; padding: 0 8px; border-radius: 999px; background: var(--color-onyx-black); color: #fff; font-size: var(--text-small); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .stack{ display: grid; gap: var(--spacing-20); align-content: start; }
:is(body.portal-redesign,body.admin-redesign) .columns{ grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .columns.even{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .opt{ font-weight: 400; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .mono{ font-variant-numeric: tabular-nums; letter-spacing: 0.01em; overflow-wrap: anywhere; }
:is(body.portal-redesign,body.admin-redesign) .card{ padding: var(--card-pad); gap: var(--spacing-16); border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .card.flush{ padding: 0; gap: 0; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .card-head{ display: flex; align-items: flex-start; justify-content: space-between; gap: var(--spacing-12); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .card-head.pad{ padding: var(--spacing-20) var(--card-pad); border-bottom: 1px solid var(--line); align-items: center; }
:is(body.portal-redesign,body.admin-redesign) .card-title{ font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .cards{ grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) a.card:hover, :is(body.portal-redesign,body.admin-redesign) button.card:hover{ border-color: var(--color-steel-gray); box-shadow: 0 6px 20px rgba(10, 13, 17, 0.06); }
:is(body.portal-redesign,body.admin-redesign) .card-add{ border: 1.5px dashed #c3ccce; background: var(--canvas); align-content: center; justify-items: center; text-align: center; gap: var(--spacing-8); padding: var(--spacing-32); }
:is(body.portal-redesign,body.admin-redesign) .card-add:hover{ border-color: var(--ink) !important; box-shadow: none !important; }
:is(body.portal-redesign,body.admin-redesign) .card-add .muted{ max-width: 30ch; }
:is(body.portal-redesign,body.admin-redesign) .add-ic{ width: 48px; height: 48px; border-radius: 50%; background: var(--surface-secondary); display: grid; place-items: center; margin-bottom: var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .card-add:hover .add-ic{ background: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .tag{ display: inline-flex; align-items: center; height: 24px; padding: 0 var(--spacing-8); border-radius: var(--radius-small); background: var(--surface-secondary); font-size: var(--text-small); font-weight: 500; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .tag-draft{ background: var(--color-onyx-black); color: #fff; justify-self: start; margin-bottom: var(--spacing-6); }
:is(body.portal-redesign,body.admin-redesign) .tag-soon{ display: inline-flex; align-items: center; height: 22px; padding: 0 8px; border-radius: 999px; background: var(--accent-soft); color: var(--accent-ink); font-size: 12px; font-weight: 500; vertical-align: 2px; margin-left: 4px; }
:is(body.portal-redesign,body.admin-redesign) .mk-vendpass{ width: 79px; height: 18px; }
:is(body.portal-redesign,body.admin-redesign) .vp-logo{ width: 62px; height: 14px; vertical-align: middle; }
:is(body.portal-redesign,body.admin-redesign) .thumb-xs{ width: 28px; height: 28px; background-size: auto 82%; }
:is(body.portal-redesign,body.admin-redesign) .status{ font-weight: 400; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .status .icon{ width: 16px; height: 16px; }
:is(body.portal-redesign,body.admin-redesign) .st-settled{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .st-settled .icon, :is(body.portal-redesign,body.admin-redesign) .st-ok .icon, :is(body.portal-redesign,body.admin-redesign) .st-online .icon{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .st-ok, :is(body.portal-redesign,body.admin-redesign) .st-online{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .st-offline, :is(body.portal-redesign,body.admin-redesign) .st-out{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .st-offline .icon, :is(body.portal-redesign,body.admin-redesign) .st-out .icon{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .st-low{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .st-low .icon{ color: var(--low-ink); }
:is(body.portal-redesign,body.admin-redesign) .st-wait, :is(body.portal-redesign,body.admin-redesign) .st-pending, :is(body.portal-redesign,body.admin-redesign) .st-refund, :is(body.portal-redesign,body.admin-redesign) .st-none, :is(body.portal-redesign,body.admin-redesign) .st-off, :is(body.portal-redesign,body.admin-redesign) .st-info{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .st-soon .icon{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .stockbar{ height: 10px; gap: 2px; background: transparent; }
:is(body.portal-redesign,body.admin-redesign) .stockbar span{ border-radius: 2px; }
:is(body.portal-redesign,body.admin-redesign) .stockbar-lg{ height: 14px; }
:is(body.portal-redesign,body.admin-redesign) .sb-ok{ background: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .sb-low{ background: var(--low); }
:is(body.portal-redesign,body.admin-redesign) .sb-out{ background: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .sb-none{ background: var(--line); }
:is(body.portal-redesign,body.admin-redesign) .schips{ display: flex; flex-wrap: wrap; gap: var(--spacing-6) var(--spacing-14); }
:is(body.portal-redesign,body.admin-redesign) .schip{ display: inline-flex; align-items: center; gap: var(--spacing-6); font-size: var(--text-small); color: var(--ink); white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .schip i{ width: 10px; height: 10px; border-radius: 2px; }
:is(body.portal-redesign,body.admin-redesign) .schip-ok i{ background: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .schip-low i{ background: var(--low); }
:is(body.portal-redesign,body.admin-redesign) .schip-out i{ background: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .schip-none i{ background: var(--line); border: 1px solid #c3ccce; }
:is(body.portal-redesign,body.admin-redesign) .home-top{ display: grid; grid-template-columns: minmax(0, 1.65fr) minmax(0, 1fr); gap: var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .on-dark{ background: var(--color-onyx-black); color: #fff; }
:is(body.portal-redesign,body.admin-redesign) .money-card{ border-radius: 10px; padding: var(--spacing-28) var(--spacing-32); display: grid; gap: var(--spacing-8); position: relative; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .money-card::after, :is(body.portal-redesign,body.admin-redesign) .bal-hero::after{ content: ""; position: absolute; right: -140px; top: -160px; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(circle, rgba(0, 209, 167, 0.18), rgba(0, 209, 167, 0) 68%); pointer-events: none; }
:is(body.portal-redesign,body.admin-redesign) .mc-top{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .mc-label{ font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .mc-figure{ font-size: 60px; line-height: 1; letter-spacing: -0.045em; margin-top: var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .mc-asset{ display: flex; align-items: center; gap: var(--spacing-8); font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .mc-asset .mk{ width: 18px; height: 18px; }
:is(body.portal-redesign,body.admin-redesign) .mc-today{ display: flex; align-items: center; gap: var(--spacing-10); margin-top: var(--spacing-16); font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .mc-today b{ font-weight: 500; color: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .mc-bolt{ width: 28px; height: 28px; border-radius: 50%; background: rgba(0, 209, 167, 0.16); display: grid; place-items: center; color: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .mc-bolt .icon{ width: 16px; height: 16px; }
:is(body.portal-redesign,body.admin-redesign) .mc-actions, :is(body.portal-redesign,body.admin-redesign) .bh-actions{ display: flex; gap: var(--spacing-10); flex-wrap: wrap; margin-top: var(--spacing-16); position: relative; z-index:var(--z-decoration); }
:is(body.portal-redesign,body.admin-redesign) .btn-ghost-dark{ background: rgba(255, 255, 255, 0.1); color: #fff; }
:is(body.portal-redesign,body.admin-redesign) .btn-ghost-dark:hover{ background: rgba(255, 255, 255, 0.18); }
:is(body.portal-redesign,body.admin-redesign) .pill-instant{ position: relative; z-index:var(--z-decoration); }
:is(body.portal-redesign,body.admin-redesign) .today-card{ align-content: start; gap: var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .today-card .card-head{ margin-bottom: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .tc-figure{ font-size: 40px; line-height: 1.05; letter-spacing: -0.04em; }
:is(body.portal-redesign,body.admin-redesign) .mini{ display: grid; margin-top: var(--spacing-16); border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .mini-row{ display: flex; justify-content: space-between; gap: var(--spacing-12); padding: var(--spacing-10) 0; border-bottom: 1px solid var(--line); font-size: var(--text-small); text-decoration: none; }
:is(body.portal-redesign,body.admin-redesign) .mini-row:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .mini-row:hover span:first-child{ text-decoration: underline; text-underline-offset: 3px; }
:is(body.portal-redesign,body.admin-redesign) .atts{ display: grid; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .att{ display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--spacing-16); align-items: center; padding: var(--spacing-16) var(--spacing-20); border-bottom: 1px solid var(--line); text-decoration: none; background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .att:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .att:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .att-ic{ width: 40px; height: 40px; border-radius: 8px; display: grid; place-items: center; background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .att-err .att-ic{ background: var(--error-surface); color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .att-wait .att-ic{ background: var(--surface-secondary); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .att-info .att-ic{ background: var(--accent-soft); color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .att-main{ display: grid; gap: 2px; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .att-main .muted{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .att-go{ display: inline-flex; align-items: center; gap: 4px; font-size: var(--text-small); font-weight: 500; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .chart-card .card-head{ margin-bottom: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .cc-figure{ font-size: var(--text-figure); line-height: 1.05; letter-spacing: -0.04em; margin-top: var(--spacing-6); }
:is(body.portal-redesign,body.admin-redesign) .delta{ display: inline-flex; align-items: center; gap: 4px; color: var(--text-secondary); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .delta.up{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .delta.down{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .tminis{ display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .tmini{ display: grid; gap: var(--spacing-6); padding: var(--spacing-16) var(--spacing-20) var(--spacing-20); border: 1px solid var(--line); border-radius: 8px; text-decoration: none; background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .tmini:hover{ border-color: var(--color-steel-gray); }
:is(body.portal-redesign,body.admin-redesign) .tmini-top{ display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .tmini-fig{ font-size: var(--text-h3); letter-spacing: -0.02em; font-weight: 500; margin: var(--spacing-6) 0 var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .chart{ grid-template-columns: 52px minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .chart-y, :is(body.portal-redesign,body.admin-redesign) .chart-plot{ height: var(--ch, 200px); }
:is(body.portal-redesign,body.admin-redesign) .chart-plot{ border-bottom: 1px solid var(--line); background: repeating-linear-gradient(to top, var(--line) 0 1px, transparent 1px 25%); }
:is(body.portal-redesign,body.admin-redesign) .chart-bars{ gap: 4px; }
:is(body.portal-redesign,body.admin-redesign) .cbar{ position: relative; flex: 1; min-width: 0; height: 100%; display: flex; align-items: flex-end; outline: none; }
:is(body.portal-redesign,body.admin-redesign) .cbar-fill{ display: block; width: 100%; min-height: 2px; background: var(--mint); border-radius: 3px 3px 0 0; transition: background-color var(--duration) var(--ease); }
:is(body.portal-redesign,body.admin-redesign) .cbar.is-today .cbar-fill{ background: repeating-linear-gradient(0deg, var(--mint) 0 100%); opacity: 0.55; }
:is(body.portal-redesign,body.admin-redesign) .cbar:hover .cbar-fill, :is(body.portal-redesign,body.admin-redesign) .cbar:focus .cbar-fill{ background: var(--mint-deep); opacity: 1; }
:is(body.portal-redesign,body.admin-redesign) .chart-x{ position: relative; display: block; height: 22px; margin-top: var(--spacing-8); grid-column: 2; }
:is(body.portal-redesign,body.admin-redesign) .chart-x span{ position: absolute; top: 0; transform: translateX(-50%); white-space: nowrap; font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .chart-x span:first-child{ transform: translateX(-15%); }
:is(body.portal-redesign,body.admin-redesign) .chart-x span:last-child{ transform: translateX(-85%); }
:is(body.portal-redesign,body.admin-redesign) .tip i{ font-style: normal; color: #fff; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .hbs{ display: grid; gap: var(--spacing-14); }
:is(body.portal-redesign,body.admin-redesign) .hb-top{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); margin-bottom: var(--spacing-6); }
:is(body.portal-redesign,body.admin-redesign) .hb-lab{ display: flex; align-items: center; gap: var(--spacing-10); min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .hb-track{ height: 6px; border-radius: 999px; background: var(--surface-strong); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .hb-track span{ display: block; height: 100%; background: var(--mint); border-radius: 999px; }
:is(body.portal-redesign,body.admin-redesign) .hb-sub{ font-size: var(--text-small); color: var(--text-secondary); margin-top: 4px; }
:is(body.portal-redesign,body.admin-redesign) .figs{ display: grid; gap: 0; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .figs-2{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .figs-3{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .figs-4{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .fig{ padding: var(--spacing-20) var(--spacing-24); border-left: 1px solid var(--line); min-width: 0; text-decoration: none; display: block; }
:is(body.portal-redesign,body.admin-redesign) .fig:first-child{ border-left: 0; }
:is(body.portal-redesign,body.admin-redesign) a.fig:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .fig-label{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .fig-value{ font-size: 28px; line-height: 1.1; letter-spacing: -0.035em; margin-top: var(--spacing-6); }
:is(body.portal-redesign,body.admin-redesign) .fig-note{ font-size: var(--text-small); color: var(--text-secondary); margin-top: var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .fig-note .delta{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .sales-tools .select{ width: auto; min-width: 150px; }
:is(body.portal-redesign,body.admin-redesign) .sales-tools .field-search{ max-width: 340px; }
:is(body.portal-redesign,body.admin-redesign) .sales-list{ display: grid; gap: var(--spacing-28); }
:is(body.portal-redesign,body.admin-redesign) .sales-group{ display: grid; gap: var(--spacing-10); }
:is(body.portal-redesign,body.admin-redesign) .sales-day{ display: flex; align-items: flex-end; justify-content: space-between; gap: var(--spacing-16); padding: 0 var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .sd-title{ font-size: var(--text-large); font-weight: 500; letter-spacing: -0.01em; }
:is(body.portal-redesign,body.admin-redesign) .sd-sub{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .sd-tot{ display: flex; align-items: baseline; gap: var(--spacing-10); text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .sd-amt{ font-size: var(--text-large); font-weight: 500; letter-spacing: -0.01em; }
:is(body.portal-redesign,body.admin-redesign) .sd-n{ font-size: var(--text-small); color: var(--text-secondary); white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .sales{ border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .card.flush .sales{ border: 0; border-radius: 0; }
:is(body.portal-redesign,body.admin-redesign) .sale{ padding: var(--spacing-12) var(--spacing-20); text-decoration: none; color: inherit; }
:is(body.portal-redesign,body.admin-redesign) a.sale:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .sale .tile{ width: 40px; height: 40px; }
:is(body.portal-redesign,body.admin-redesign) .sale-title{ gap: var(--spacing-8); flex-wrap: nowrap; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sale-items{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sale-title .vp-logo{ flex: none; }
:is(body.portal-redesign,body.admin-redesign) .sale-amt{ display: grid; justify-items: end; gap: 2px; }
:is(body.portal-redesign,body.admin-redesign) .sale-amt .num{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .sale-amt .status{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .more-btn{ justify-self: center; }
:is(body.portal-redesign,body.admin-redesign) .bal-hero{ border-radius: 10px; padding: var(--spacing-32); position: relative; overflow: hidden; display: grid; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .bh-row{ display: flex; align-items: flex-start; justify-content: space-between; gap: var(--spacing-16); position: relative; z-index:var(--z-decoration); }
:is(body.portal-redesign,body.admin-redesign) .bh-figure{ font-size: 72px; line-height: 1; letter-spacing: -0.05em; margin: var(--spacing-8) 0 var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .bh-split{ display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; margin-top: var(--spacing-24); background: rgba(255, 255, 255, 0.12); border-radius: 8px; overflow: hidden; position: relative; z-index:var(--z-decoration); }
:is(body.portal-redesign,body.admin-redesign) .bh-split a{ display: grid; gap: 2px; padding: var(--spacing-16) var(--spacing-20); background: #12161b; text-decoration: none; color: #fff; }
:is(body.portal-redesign,body.admin-redesign) .bh-split a:hover{ background: #191e24; }
:is(body.portal-redesign,body.admin-redesign) .bh-split .lab{ display: flex; align-items: center; gap: 6px; font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .bh-split .lab .icon{ color: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .bh-split .val{ font-size: var(--text-h3); font-weight: 500; letter-spacing: -0.02em; }
:is(body.portal-redesign,body.admin-redesign) .bh-split .sub{ font-size: var(--text-small); color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .bal-note{ display: flex; align-items: center; gap: var(--spacing-10); font-size: var(--text-small); color: var(--text-secondary); margin-top: calc(var(--spacing-24) * -1); }
:is(body.portal-redesign,body.admin-redesign) .bal-note .icon{ width: 18px; height: 18px; color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .flow{ display: grid; }
:is(body.portal-redesign,body.admin-redesign) .flow > div{ display: flex; justify-content: space-between; gap: var(--spacing-12); padding: var(--spacing-10) 0; border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .flow dt a{ text-decoration: none; }
:is(body.portal-redesign,body.admin-redesign) .flow dt a:hover{ text-decoration: underline; text-underline-offset: 3px; }
:is(body.portal-redesign,body.admin-redesign) .flow dd.down{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .flow .flow-total{ border-bottom: 0; padding-top: var(--spacing-14); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .flow .flow-total dd{ font-size: var(--text-large); }
:is(body.portal-redesign,body.admin-redesign) .flow .flow-out{ border-top: 1px solid var(--line); border-bottom: 0; color: var(--text-secondary); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .dest{ display: flex; align-items: center; gap: var(--spacing-14); padding: var(--spacing-12) 0; border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .dest .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .dest-actions{ display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .act-group{ display: grid; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .act-group + .act-group{ margin-top: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .act-day{ font-size: var(--text-small); font-weight: 500; color: var(--text-secondary); padding: 0 var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .acts{ display: grid; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .act{ display: grid; grid-template-columns: auto minmax(0, 1fr) auto; gap: var(--spacing-14); align-items: center; padding: var(--spacing-12) var(--spacing-16); border-bottom: 1px solid var(--line); text-decoration: none; background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .act:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .act:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .act-ic{ width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .act-ic .icon{ width: 18px; height: 18px; }
:is(body.portal-redesign,body.admin-redesign) .ic-in{ background: var(--accent-soft); color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .ic-soft{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .act-main{ display: grid; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .act-main .muted{ display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .act-main .status{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .act-amt{ font-weight: 500; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .act-amt.pos{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .act-amt.muted{ font-weight: 400; }
:is(body.portal-redesign,body.admin-redesign) .soon{ display: flex; gap: var(--spacing-14); align-items: flex-start; padding: var(--spacing-20) var(--spacing-24); border-radius: 8px; background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .soon > .icon{ color: var(--accent-ink); margin-top: 2px; }
:is(body.portal-redesign,body.admin-redesign) .soon .muted{ font-size: var(--text-small); margin-top: 2px; max-width: 60ch; }
:is(body.portal-redesign,body.admin-redesign) .tcard .card-top .status{ align-self: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .tcard.is-off{ border-color: #e9c9c5; }
:is(body.portal-redesign,body.admin-redesign) .card-alert{ display: flex; gap: var(--spacing-8); align-items: flex-start; padding: var(--spacing-10) var(--spacing-12); border-radius: 6px; background: var(--error-surface); color: var(--error-ink); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .card-alert .icon{ margin-top: 1px; }
:is(body.portal-redesign,body.admin-redesign) .tstock{ display: grid; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .tstock-top{ display: flex; justify-content: space-between; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .meta-3{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .cards-loc{ grid-template-columns: repeat(auto-fill, minmax(340px, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .lcard{ align-content: start; }
:is(body.portal-redesign,body.admin-redesign) .tchips{ display: flex; flex-wrap: wrap; gap: var(--spacing-6); padding-top: var(--spacing-14); border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .tchip{ display: inline-flex; align-items: center; gap: 6px; height: 28px; padding: 0 var(--spacing-10); border-radius: 999px; background: var(--surface-secondary); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .dot-on, :is(body.portal-redesign,body.admin-redesign) .dot-off{ width: 8px; height: 8px; border-radius: 50%; background: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .dot-off{ background: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .pgrid{ grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .prod{ border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .prod-img{ height: 176px; }
:is(body.portal-redesign,body.admin-redesign) .prod-add{ min-height: 340px; }
:is(body.portal-redesign,body.admin-redesign) .prod-foot .status{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .publish-bar{ display: flex; align-items: center; gap: var(--spacing-16); padding: var(--spacing-16) var(--spacing-20); border-radius: 8px; background: var(--accent-soft); border: 1px solid #bfeee1; flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .publish-bar .grow{ flex: 1; min-width: 240px; }
:is(body.portal-redesign,body.admin-redesign) .pb-ic{ width: 40px; height: 40px; border-radius: 8px; background: var(--canvas); display: grid; place-items: center; color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .inv-sum{ display: flex; align-items: center; gap: var(--spacing-16); flex-wrap: wrap; padding: var(--spacing-16) var(--spacing-20); border: 1px solid var(--line); border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .inv-sum .schip{ font-size: var(--text-body); }
:is(body.portal-redesign,body.admin-redesign) .inv-sum .schip i{ width: 12px; height: 12px; }
:is(body.portal-redesign,body.admin-redesign) .rs{ display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .rs-group{ border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .rs-head{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); padding: var(--spacing-14) var(--spacing-16); background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .rs-row{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-12) var(--spacing-16); border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .rs-row .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .rs-need{ font-weight: 500; min-width: 56px; text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .machines{ display: grid; gap: var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .machine{ border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .machine-head{ gap: var(--spacing-14); }
:is(body.portal-redesign,body.admin-redesign) .machine-sum{ display: grid; gap: var(--spacing-8); min-width: 240px; flex: 0 1 340px; }
:is(body.portal-redesign,body.admin-redesign) .slots{ grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0; background: var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .slot{ border-right: 1px solid var(--line); text-decoration: none; color: inherit; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .slot:last-child{ border-right: 0; }
:is(body.portal-redesign,body.admin-redesign) a.slot:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .slot-top{ min-height: 24px; gap: var(--spacing-6); }
:is(body.portal-redesign,body.admin-redesign) .slot-top .status{ font-size: 12px; }
:is(body.portal-redesign,body.admin-redesign) .slot-top .status .icon{ width: 14px; height: 14px; }
:is(body.portal-redesign,body.admin-redesign) .slot-out .slot-img{ opacity: 0.45; }
:is(body.portal-redesign,body.admin-redesign) .slot-meter{ width: 100%; height: 6px; border-radius: 999px; background: var(--surface-strong); overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .slot-meter span{ display: block; height: 100%; border-radius: 999px; }
:is(body.portal-redesign,body.admin-redesign) .slot-foot{ font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .slot-foot b{ font-size: var(--text-body); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .tabset{ display: grid; gap: 0; }
:is(body.portal-redesign,body.admin-redesign) .pane-body{ display: grid; gap: var(--spacing-20); padding-top: var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .railbar{ display: flex; height: 12px; gap: 2px; border-radius: 3px; overflow: hidden; margin-top: var(--spacing-4); }
:is(body.portal-redesign,body.admin-redesign) .rb-card{ background: var(--color-onyx-black); }
:is(body.portal-redesign,body.admin-redesign) .rb-dig{ background: var(--mint); }
:is(body.portal-redesign,body.admin-redesign) .legend i{ width: 10px; height: 10px; }
:is(body.portal-redesign,body.admin-redesign) .mrows{ margin-top: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .mrow .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .mrow-p{ width: 40px; text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .prows{ display: grid; }
:is(body.portal-redesign,body.admin-redesign) .prow{ display: grid; grid-template-columns: auto minmax(0, 1fr) auto auto auto; gap: var(--spacing-16); align-items: center; padding: var(--spacing-14) var(--card-pad); border-bottom: 1px solid var(--line); text-decoration: none; }
:is(body.portal-redesign,body.admin-redesign) .prow:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .prow:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .prow .hb-track{ margin-top: 6px; max-width: 360px; }
:is(body.portal-redesign,body.admin-redesign) .prow-u{ color: var(--text-secondary); min-width: 72px; text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .prow-v{ min-width: 80px; text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .prow-p{ min-width: 40px; text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .offer{ display: flex; gap: var(--spacing-24); align-items: center; padding: var(--spacing-20); border-radius: 10px; background: var(--color-onyx-black); color: #fff; }
:is(body.portal-redesign,body.admin-redesign) .offer .ad-img{ width: 132px; height: 132px; flex: none; border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .offer .grow{ flex: 1; min-width: 0; display: grid; gap: var(--spacing-6); }
:is(body.portal-redesign,body.admin-redesign) .offer .eyebrow{ color: var(--mint); letter-spacing: 0.04em; text-transform: none; font-size: var(--text-small); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .offer .muted{ color: var(--on-dark-secondary); max-width: 62ch; }
:is(body.portal-redesign,body.admin-redesign) .offer-title{ font-size: var(--text-h3); letter-spacing: -0.02em; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .offer-actions{ margin-top: var(--spacing-8); display: flex; gap: var(--spacing-10); }
:is(body.portal-redesign,body.admin-redesign) .camp{ padding: 0; gap: 0; overflow: hidden; grid-template-columns: 112px minmax(0, 1fr); display: grid; }
:is(body.portal-redesign,body.admin-redesign) .camp .ad-img{ width: 112px; height: 100%; min-height: 132px; border-radius: 0; }
:is(body.portal-redesign,body.admin-redesign) .camp-body{ padding: var(--spacing-16) var(--spacing-20); display: grid; gap: var(--spacing-10); align-content: start; }
:is(body.portal-redesign,body.admin-redesign) .ad-hero{ display: block; width: 100%; height: 220px; border-radius: 8px; background-size: cover; background-position: center; }
:is(body.portal-redesign,body.admin-redesign) .ticks{ display: grid; gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .ticks li{ display: flex; gap: var(--spacing-10); align-items: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .ticks li .icon{ color: var(--accent-ink); margin-top: 4px; flex: none; }
:is(body.portal-redesign,body.admin-redesign) .vp-h1{ line-height: 1; }
:is(body.portal-redesign,body.admin-redesign) .vp-title{ width: 176px; height: 40px; }
:is(body.portal-redesign,body.admin-redesign) .vp-cost p{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .vp-eq{ display: flex; align-items: flex-end; gap: var(--spacing-12); flex-wrap: wrap; padding: var(--spacing-16); border-radius: 8px; background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .vp-eq div{ display: grid; gap: 2px; }
:is(body.portal-redesign,body.admin-redesign) .vp-eq b{ font-size: var(--text-h3); font-weight: 500; letter-spacing: -0.02em; }
:is(body.portal-redesign,body.admin-redesign) .vp-eq .op{ color: var(--text-secondary); padding-bottom: 4px; }
:is(body.portal-redesign,body.admin-redesign) .page-actions .status{ margin-right: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .trows{ display: grid; }
:is(body.portal-redesign,body.admin-redesign) .trow-t{ display: flex; align-items: center; gap: var(--spacing-14); padding: var(--spacing-16) var(--spacing-20); border-bottom: 1px solid var(--line); text-decoration: none; }
:is(body.portal-redesign,body.admin-redesign) .trow-t:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .trow-t:hover{ background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .trow-t .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .contact{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-20); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .settings{ display: grid; grid-template-columns: 200px minmax(0, 1fr); gap: var(--spacing-32); align-items: start; }
:is(body.portal-redesign,body.admin-redesign) .subnav{ display: grid; gap: 2px; position: sticky; top: calc(var(--bar-height) + 24px); }
:is(body.portal-redesign,body.admin-redesign) .subnav-link{ display: flex; align-items: center; min-height: 40px; padding: 0 var(--spacing-12); border-radius: 6px; text-decoration: none; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .subnav-link:hover{ background: var(--surface-secondary); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .subnav-link[aria-current="page"]{ background: var(--surface-secondary); color: var(--ink); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .settings .pane-body{ padding-top: 0; max-width: 720px; }
:is(body.portal-redesign,body.admin-redesign) .trow{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-16); padding: var(--spacing-14) 0; border-bottom: 1px solid var(--line); cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) .trow:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .trow-main{ display: grid; gap: 2px; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .trow-main .strong{ display: inline-flex; align-items: center; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .trow-main .mk{ width: 22px; height: 22px; }
:is(body.portal-redesign,body.admin-redesign) .trows-s{ display: grid; }
:is(body.portal-redesign,body.admin-redesign) .paid-how{ display: flex; gap: var(--spacing-14); align-items: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .paid-how .tile .mk{ width: 26px; height: 26px; }
:is(body.portal-redesign,body.admin-redesign) .marks-row{ display: flex; gap: var(--spacing-12); flex-wrap: wrap; align-items: center; }
:is(body.portal-redesign,body.admin-redesign) .marks-row .mk{ width: 40px; height: 26px; }
:is(body.portal-redesign,body.admin-redesign) .soon-line{ display: flex; align-items: center; gap: var(--spacing-8); font-size: var(--text-small); color: var(--text-secondary); padding-top: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .soon-line .icon{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .card.danger{ border-color: #ecd0cc; }
:is(body.portal-redesign,body.admin-redesign) .input-pre{ position: relative; }
:is(body.portal-redesign,body.admin-redesign) .input-pre span{ position: absolute; left: 14px; top: 50%; transform: translateY(-50%); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .input-pre .input{ padding-left: 30px; }
:is(body.portal-redesign,body.admin-redesign) .sheet{ width: min(560px, 100%); }
:is(body.portal-redesign,body.admin-redesign) .sheet-body{ gap: var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .sheet-hero, :is(body.portal-redesign,body.admin-redesign) .sale-hero{ display: flex; align-items: center; gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .sheet-hero .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sale-hero .mk{ width: 34px; height: 28px; }
:is(body.portal-redesign,body.admin-redesign) .sheet-amount{ font-size: 48px; }
:is(body.portal-redesign,body.admin-redesign) .sheet-block{ display: grid; gap: var(--spacing-10); }
:is(body.portal-redesign,body.admin-redesign) .sb-head{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .sheet-links{ display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .callout{ display: grid; gap: 4px; padding: var(--spacing-14) var(--spacing-16); border-radius: 8px; background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .callout-err{ background: var(--error-surface); }
:is(body.portal-redesign,body.admin-redesign) .callout-err .strong{ color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .callout-wait{ background: #f4f6f7; border: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .steps-list{ list-style: decimal; padding-left: 20px; display: grid; gap: 4px; margin: 6px 0; }
:is(body.portal-redesign,body.admin-redesign) .settle-line{ display: flex; gap: var(--spacing-10); align-items: flex-start; padding: var(--spacing-12) var(--spacing-14); border-radius: 8px; background: var(--accent-soft); font-size: var(--text-small); }
:is(body.portal-redesign,body.admin-redesign) .settle-line .icon{ width: 18px; height: 18px; color: var(--accent-ink); flex: none; margin-top: 1px; }
:is(body.portal-redesign,body.admin-redesign) .settle-line b{ font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .lines{ display: grid; }
:is(body.portal-redesign,body.admin-redesign) .line{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-10) 0; border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .line .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .line-sum{ display: flex; justify-content: space-between; align-items: center; gap: var(--spacing-12); padding: 6px 0; }
:is(body.portal-redesign,body.admin-redesign) .line-total{ font-weight: 500; font-size: var(--text-large); }
:is(body.portal-redesign,body.admin-redesign) .receipt-ref{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); padding: var(--spacing-14) var(--spacing-16); border-radius: 8px; background: var(--surface-secondary); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .rows{ border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .row .chev{ color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .avails, :is(body.portal-redesign,body.admin-redesign) .cnts, :is(body.portal-redesign,body.admin-redesign) .changes{ display: grid; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .avail, :is(body.portal-redesign,body.admin-redesign) .cnt, :is(body.portal-redesign,body.admin-redesign) .change{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-12) var(--spacing-16); border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .avail:last-child, :is(body.portal-redesign,body.admin-redesign) .cnt:last-child, :is(body.portal-redesign,body.admin-redesign) .change:last-child{ border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .avail .grow, :is(body.portal-redesign,body.admin-redesign) .cnt .grow, :is(body.portal-redesign,body.admin-redesign) .change .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .stepper{ display: flex; align-items: center; gap: 6px; }
:is(body.portal-redesign,body.admin-redesign) .stepper .input{ width: 56px; text-align: center; padding: 0 6px; }
:is(body.portal-redesign,body.admin-redesign) .dropzone{ display: grid; justify-items: center; gap: 4px; padding: var(--spacing-28); border: 1.5px dashed #c3ccce; border-radius: 8px; text-align: center; color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .dropzone .icon{ color: var(--text-secondary); margin-bottom: 4px; }
:is(body.portal-redesign,body.admin-redesign) .amount-in{ display: flex; align-items: center; gap: 4px; padding: 0 var(--spacing-16); border: 1px solid var(--control-border); border-radius: 8px; }
:is(body.portal-redesign,body.admin-redesign) .amount-in span{ font-size: 40px; letter-spacing: -0.03em; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .amount-in .input{ border: 0; font-size: 40px; letter-spacing: -0.03em; min-height: 76px; padding: 0; box-shadow: none !important; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .amount-in:focus-within{ border-color: var(--ink); box-shadow: var(--focus-ring); }
:is(body.portal-redesign,body.admin-redesign) .radio-list{ display: grid; gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .radio{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-12) var(--spacing-14); border: 1px solid var(--line); border-radius: 8px; cursor: pointer; }
:is(body.portal-redesign,body.admin-redesign) .radio:has(input:checked){ border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .radio input{ accent-color: var(--color-onyx-black); width: 18px; height: 18px; margin: 0; }
:is(body.portal-redesign,body.admin-redesign) .radio .grow{ flex: 1; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .verify{ display: grid; gap: var(--spacing-12); justify-items: start; }
:is(body.portal-redesign,body.admin-redesign) .otp{ display: grid; grid-template-columns: repeat(6, 48px); gap: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .otp .input{ text-align: center; font-size: 22px; padding: 0; min-height: 56px; }
:is(body.portal-redesign,body.admin-redesign) .otp-lg{ grid-template-columns: repeat(6, minmax(0, 56px)); }
:is(body.portal-redesign,body.admin-redesign) .otp-lg .input{ min-height: 64px; font-size: 28px; }
:is(body.portal-redesign,body.admin-redesign) .done{ display: grid; gap: var(--spacing-10); justify-items: start; padding-top: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .done-ic{ width: 56px; height: 56px; border-radius: 50%; background: var(--accent-soft); color: var(--accent-ink); display: grid; place-items: center; }
:is(body.portal-redesign,body.admin-redesign) .done-ic .icon{ width: 30px; height: 30px; }
:is(body.portal-redesign,body.admin-redesign) .done .kv{ width: 100%; margin-top: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .flow-steps .fstep{ display: grid; gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .fstep-foot{ display: flex; gap: var(--spacing-10); padding-top: var(--spacing-12); border-top: 1px solid var(--line); margin-top: var(--spacing-8); }
:is(body.portal-redesign,body.admin-redesign) .fstep-foot .btn{ flex: 1; }
:is(body.portal-redesign,body.admin-redesign) .btn-danger-soft{ background: var(--canvas); color: var(--error-ink); box-shadow: inset 0 0 0 1px #e3bcb7; }
:is(body.portal-redesign,body.admin-redesign) .btn-danger-soft:hover{ background: var(--error-surface); }
:is(body.portal-redesign,body.admin-redesign) .btn-danger{ background: var(--error-ink); color: #fff; }
:is(body.portal-redesign,body.admin-redesign) .btn-danger:hover{ filter: brightness(1.08); }
:is(body.portal-redesign,body.admin-redesign) .link-danger{ color: var(--error-ink); text-decoration-color: currentColor; font-size: var(--text-small); justify-self: start; }
:is(body.portal-redesign,body.admin-redesign) .thread{ gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .msg{ max-width: 92%; }
:is(body.portal-redesign,body.admin-redesign) .msg-who{ font-size: 12px; }
:is(body.portal-redesign,body.admin-redesign) .rail-link{ position: relative; }
:is(body.portal-redesign,body.admin-redesign) .rail-badge{ margin-left: auto; min-width: 20px; height: 20px; padding: 0 6px; border-radius: 999px; background: var(--error-surface); color: var(--error-ink); font-style: normal; font-size: 12px; font-weight: 500; display: grid; place-items: center; }
:is(body.portal-redesign,body.admin-redesign) .avatar.biz{ background: var(--color-onyx-black); color: #fff; border-radius: 6px; }
:is(body.portal-redesign,body.admin-redesign) .pop-ic{ width: 32px; height: 32px; border-radius: 8px; display: grid; place-items: center; background: var(--surface-secondary); flex: none; }
:is(body.portal-redesign,body.admin-redesign) .pop-ic .icon{ width: 18px; height: 18px; margin: 0; }
:is(body.portal-redesign,body.admin-redesign) .pi-err{ background: var(--error-surface); color: var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .pi-info{ background: var(--accent-soft); color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .pi-ok{ background: var(--accent-soft); color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .pop-check{ margin-left: auto; color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .palette-list a em{ margin-left: auto; font-style: normal; font-size: 12px; color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .palette-foot kbd{ font-size: 11px; }
:is(body.portal-redesign,body.admin-redesign) .tabbar{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .auth-sub{ color: var(--on-dark-secondary); margin-top: var(--spacing-16); max-width: 32ch; font-size: var(--text-large); }
:is(body.portal-redesign,body.admin-redesign) .auth-chips{ display: flex; gap: var(--spacing-8); flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .auth-chips .tile{ background: rgba(255, 255, 255, 0.92); width: 52px; height: 38px; }
:is(body.portal-redesign,body.admin-redesign) .auth-chips .tile .mk{ width: 30px; height: 22px; }
:is(body.portal-redesign,body.admin-redesign) .auth-art .art-glow{ position: absolute; right: -120px; bottom: -120px; width: 460px; height: 460px; border-radius: 50%; background: radial-gradient(circle, rgba(0, 209, 167, 0.32), rgba(0, 209, 167, 0) 66%); }
:is(body.portal-redesign,body.admin-redesign) .auth-art{ position: relative; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .auth-art > *{ position: relative; }
:is(body.portal-redesign,body.admin-redesign) .auth-art img{ align-self: flex-start; }
@media (max-width: 1200px){
:is(body.portal-redesign,body.admin-redesign) .slots{ grid-template-columns: repeat(4, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .slot{ border-bottom: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .tminis{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1100px){
:is(body.portal-redesign,body.admin-redesign) .home-top, :is(body.portal-redesign,body.admin-redesign) .columns, :is(body.portal-redesign,body.admin-redesign) .columns.even{ grid-template-columns: minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .figs-4{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .figs-4 .fig:nth-child(3){ border-left: 0; }
:is(body.portal-redesign,body.admin-redesign) .figs-4 .fig:nth-child(n+3){ border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .settings{ grid-template-columns: minmax(0, 1fr); gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .subnav{ position: static; display: flex; overflow-x: auto; gap: 4px; }
:is(body.portal-redesign,body.admin-redesign) .subnav-link{ white-space: nowrap; }
}
@media (max-width: 720px){
:is(body.portal-redesign,body.admin-redesign) .content{ padding-bottom: 120px; }
:is(body.portal-redesign,body.admin-redesign) .page-head{ align-items: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .page-actions .btn, :is(body.portal-redesign,body.admin-redesign) .page-actions .select{ flex: 1 1 auto; }
:is(body.portal-redesign,body.admin-redesign) .money-card, :is(body.portal-redesign,body.admin-redesign) .bal-hero{ padding: var(--spacing-24) var(--spacing-20); }
:is(body.portal-redesign,body.admin-redesign) .mc-figure{ font-size: 46px; }
:is(body.portal-redesign,body.admin-redesign) .bh-figure{ font-size: 50px; }
:is(body.portal-redesign,body.admin-redesign) .bh-split{ grid-template-columns: minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .bh-row{ flex-direction: column-reverse; }
:is(body.portal-redesign,body.admin-redesign) .bal-note{ margin-top: calc(var(--spacing-12) * -1); align-items: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .figs-3{ grid-template-columns: minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .figs-3 .fig{ border-left: 0; border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .figs-3 .fig:first-child{ border-top: 0; }
:is(body.portal-redesign,body.admin-redesign) .fig{ padding: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .fig-value{ font-size: 22px; }
:is(body.portal-redesign,body.admin-redesign) .cards, :is(body.portal-redesign,body.admin-redesign) .cards-loc, :is(body.portal-redesign,body.admin-redesign) .rs{ grid-template-columns: minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .tminis{ grid-template-columns: minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .att{ grid-template-columns: auto minmax(0, 1fr); padding: var(--spacing-14) var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .att-go{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .sales-tools .select{ flex: 1 1 140px; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sales-tools .field-search{ max-width: none; }
:is(body.portal-redesign,body.admin-redesign) .sale{ grid-template-columns: auto minmax(0, 1fr) auto; padding: var(--spacing-12) var(--spacing-14); gap: var(--spacing-12); }
:is(body.portal-redesign,body.admin-redesign) .sale .tile{ width: 36px; height: 36px; }
:is(body.portal-redesign,body.admin-redesign) .sale-meta{ overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .sd-tot{ flex-direction: column; align-items: flex-end; gap: 0; }
:is(body.portal-redesign,body.admin-redesign) .slots{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .slot:nth-child(2n){ border-right: 0; }
:is(body.portal-redesign,body.admin-redesign) .machine-sum{ flex-basis: 100%; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .prow{ grid-template-columns: auto minmax(0, 1fr) auto; padding: var(--spacing-12) var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .prow-u, :is(body.portal-redesign,body.admin-redesign) .prow-p{ display: none; }
:is(body.portal-redesign,body.admin-redesign) .offer{ flex-direction: column; align-items: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .offer .ad-img{ width: 100%; height: 160px; }
:is(body.portal-redesign,body.admin-redesign) .camp{ grid-template-columns: 88px minmax(0, 1fr); }
:is(body.portal-redesign,body.admin-redesign) .camp .ad-img{ width: 88px; }
:is(body.portal-redesign,body.admin-redesign) .meta-3{ grid-template-columns: 1fr 1fr; }
:is(body.portal-redesign,body.admin-redesign) .otp{ grid-template-columns: repeat(6, minmax(0, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .vp-title{ width: 140px; height: 32px; }
:is(body.portal-redesign,body.admin-redesign) .tabbar{ display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: var(--z-tabbar); height: 64px; padding: 0 var(--spacing-8) env(safe-area-inset-bottom); background: rgba(255, 255, 255, 0.96); backdrop-filter: blur(8px); border-top: 1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .tb-link{ flex: 1; display: grid; justify-items: center; align-content: center; gap: 2px; text-decoration: none; color: var(--text-secondary); font-size: 11px; font-weight: 500; background: none; border: 0; }
:is(body.portal-redesign,body.admin-redesign) .tb-link[aria-current="page"]{ color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .tb-link[aria-current="page"] .icon{ color: var(--accent-ink); }
:is(body.portal-redesign,body.admin-redesign) .tb-link .icon{ width: 22px; height: 22px; }
:is(body.portal-redesign,body.admin-redesign) .toast-host{ bottom: 80px; }
:is(body.portal-redesign,body.admin-redesign) .publish-bar .btn{ width: 100%; }
:is(body.portal-redesign,body.admin-redesign) .amount-in span, :is(body.portal-redesign,body.admin-redesign) .amount-in .input{ font-size: 32px; }
:is(body.portal-redesign,body.admin-redesign) .sheet-amount{ font-size: 40px; }
}
:is(body.portal-redesign,body.admin-redesign) .sales-day .sd-amt{ font-size: var(--text-large); font-weight: 500; color: var(--ink); letter-spacing: -0.01em; }
:is(body.portal-redesign,body.admin-redesign) .sales-day .sd-n{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .sales-tools{ flex-wrap: wrap; }
:is(body.portal-redesign,body.admin-redesign) .sales-tools .field-search{ flex: 1 1 240px; max-width: none; }
:is(body.portal-redesign,body.admin-redesign) .sales-tools .select{ flex: 0 0 auto; width: 172px; min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .card.prod, :is(body.portal-redesign,body.admin-redesign) .card.machine{ padding: 0; gap: 0; }
:is(body.portal-redesign,body.admin-redesign) .rs{ grid-template-columns: repeat(auto-fill, minmax(420px, 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .vp-sum{ padding: var(--spacing-4) var(--spacing-16); border-radius: 8px; background: var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .vp-sum .kv-row:last-child dd{ font-size: var(--text-large); font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .sheet .kv-row, :is(body.portal-redesign,body.admin-redesign) .sheet .kv-compact .kv-row{ grid-template-columns: minmax(0, 1fr) auto; gap: var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .sheet .kv dd{ text-align: right; }
:is(body.portal-redesign,body.admin-redesign) .sheet .kv dt{ font-size: var(--text-small); color: var(--text-secondary); }
:is(body.portal-redesign,body.admin-redesign) .page-actions .select{ width: auto; min-width: 170px; flex: 0 0 auto; }
:is(body.portal-redesign,body.admin-redesign) .rs{ grid-template-columns: repeat(auto-fill, minmax(min(420px, 100%), 1fr)); }
:is(body.portal-redesign,body.admin-redesign) .sale-meta{ display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
:is(body.portal-redesign,body.admin-redesign) .inv-sum{ min-width: 0; }
:is(body.portal-redesign,body.admin-redesign) .sheet-body{ grid-auto-rows: max-content; }
:is(body.portal-redesign,body.admin-redesign) .sheet-body > *{ min-height: min-content; }
body.admin-redesign body[data-layout="auth"] .app-admin{ display: none; }
body.admin-redesign .app-admin .workspace{ margin-left: var(--command-rail-width); }
body.admin-redesign .command-logo{ text-decoration: none; color: #fff; }
body.admin-redesign .command-logo svg{ width: 32px; height: 32px; flex: none; }
body.admin-redesign .command-logo .command-label{ font-weight: 500; }
body.admin-redesign .command-foot .who p{ margin: 0; }
body.admin-redesign .command-foot .who p:last-child{ color: var(--on-dark-secondary); }
body.admin-redesign .command-item[aria-current="page"] .icon{ color: var(--mint); }
body.admin-redesign .topbar .search-trigger{ width: 380px; }
body.admin-redesign .env{ display: inline-flex; align-items: center; gap: 8px; height: 34px; padding: 0 12px; border-radius: 999px; background: var(--surface-secondary); font-size: var(--text-small); font-weight: 500; text-decoration: none; white-space: nowrap; }
body.admin-redesign .env-dot{ width: 8px; height: 8px; border-radius: 50%; background: var(--mint); box-shadow: 0 0 0 3px rgba(0, 209, 167, 0.18); }
body.admin-redesign .env-sep{ width: 1px; height: 14px; background: #c3ccce; }
body.admin-redesign .opmark{ display: inline-grid; place-items: center; flex: none; width: 28px; height: 28px; border-radius: 6px; background: var(--color-onyx-black); color: #fff; font-size: 13px; font-weight: 500; }
body.admin-redesign .opmark.sm{ width: 18px; height: 18px; border-radius: 4px; font-size: 10px; margin-right: 6px; vertical-align: -3px; }
body.admin-redesign .opmark.lg{ width: 40px; height: 40px; border-radius: 8px; font-size: 16px; }
body.admin-redesign .opmark.xl{ width: 56px; height: 56px; border-radius: 10px; font-size: 22px; }
body.admin-redesign .opchip{ display: inline-flex; align-items: center; gap: 8px; height: 28px; padding: 0 10px 0 4px; border-radius: 999px; background: var(--surface-secondary); font-size: var(--text-small); font-weight: 500; text-decoration: none; white-space: nowrap; }
body.admin-redesign .opchip .opmark{ width: 20px; height: 20px; border-radius: 50%; font-size: 11px; }
body.admin-redesign a.opchip:hover{ background: var(--surface-strong); }
body.admin-redesign .crumbs{ display: flex; align-items: center; gap: 6px; font-size: var(--text-small); color: var(--text-secondary); margin-bottom: var(--spacing-12); }
body.admin-redesign .crumbs a{ text-decoration: none; }
body.admin-redesign .crumbs a:hover{ color: var(--ink); text-decoration: underline; text-underline-offset: 3px; }
body.admin-redesign .crumbs .icon{ width: 14px; height: 14px; }
body.admin-redesign .op-title{ display: flex; align-items: center; gap: var(--spacing-16); }
body.admin-redesign .op-title .lede{ margin-top: 4px; }
body.admin-redesign .att{ grid-template-columns: auto minmax(0, 1fr) auto auto; }
body.admin-redesign .att-who .opchip{ pointer-events: none; }
body.admin-redesign .att-who{ display: flex; }
body.admin-redesign .treasury-card{ border-radius: 10px; padding: var(--spacing-24) var(--spacing-28); display: grid; gap: var(--spacing-8); align-content: start; text-decoration: none; position: relative; overflow: hidden; }
body.admin-redesign .treasury-card::after{ content: ""; position: absolute; right: -150px; bottom: -170px; width: 420px; height: 420px; border-radius: 50%; background: radial-gradient(circle, rgba(0, 209, 167, 0.2), rgba(0, 209, 167, 0) 68%); pointer-events: none; }
body.admin-redesign .tc-top{ display: flex; align-items: center; justify-content: space-between; }
body.admin-redesign .tc-big{ font-size: 46px; line-height: 1; letter-spacing: -0.045em; margin-top: 4px; }
body.admin-redesign .tc-split{ display: grid; gap: 1px; margin-top: var(--spacing-16); background: rgba(255, 255, 255, 0.12); border-radius: 8px; overflow: hidden; position: relative; z-index:var(--z-decoration); }
body.admin-redesign .tc-split div{ display: flex; justify-content: space-between; gap: 12px; padding: 12px 16px; background: #12161b; font-size: var(--text-small); color: var(--on-dark-secondary); }
body.admin-redesign .tc-split b{ color: #fff; font-weight: 500; font-size: var(--text-body); }
body.admin-redesign .orows{ display: grid; }
body.admin-redesign .orow{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-12) var(--spacing-20); border-bottom: 1px solid var(--line); text-decoration: none; }
body.admin-redesign .orow:last-child{ border-bottom: 0; }
body.admin-redesign .orow:hover{ background: var(--surface-secondary); }
body.admin-redesign .orow .grow{ flex: 1; min-width: 0; display: grid; }
body.admin-redesign .ocard .card-foot .issue{ color: var(--error-ink); }
body.admin-redesign .ocard .card-top .status{ align-self: flex-start; }
body.admin-redesign .ctl-list{ display: grid; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
body.admin-redesign .ctl{ display: flex; align-items: center; gap: var(--spacing-12); padding: var(--spacing-14) var(--spacing-16); border-bottom: 1px solid var(--line); text-decoration: none; background: var(--canvas); }
body.admin-redesign .ctl:last-child{ border-bottom: 0; }
body.admin-redesign a.ctl:hover{ background: var(--surface-secondary); }
body.admin-redesign .ctl .grow{ flex: 1; min-width: 0; display: grid; gap: 2px; }
body.admin-redesign .ctl.danger .strong{ color: var(--error-ink); }
body.admin-redesign .checklist{ display: grid; gap: var(--spacing-10); }
body.admin-redesign .checklist li{ display: flex; align-items: center; gap: var(--spacing-10); color: var(--text-secondary); }
body.admin-redesign .checklist li .icon{ color: #c3ccce; }
body.admin-redesign .checklist li.is-done{ color: var(--ink); }
body.admin-redesign .checklist li.is-done .icon{ color: var(--accent-ink); }
body.admin-redesign .callout.big{ padding: var(--spacing-20) var(--spacing-24); }
body.admin-redesign .jump{ display: flex; align-items: center; gap: var(--spacing-10); width: min(520px, 100%); min-height: 48px; padding: 0 var(--spacing-14); border: 1px solid var(--control-border); border-radius: 8px; background: var(--canvas); color: var(--text-secondary); text-align: left; }
body.admin-redesign .jump span{ flex: 1; }
body.admin-redesign .jump:hover{ border-color: var(--ink); }
body.admin-redesign .fcard .card-top .link-more{ align-self: flex-start; }
body.admin-redesign .fstat{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-12); }
body.admin-redesign .tdots{ display: flex; gap: 6px; flex-wrap: wrap; }
body.admin-redesign .tdot{ width: 14px; height: 14px; border-radius: 4px; background: var(--mint); }
body.admin-redesign .tdot.off{ background: var(--error-ink); }
body.admin-redesign .tdot.svc{ background: #c3ccce; }
body.admin-redesign .probs{ display: grid; gap: 6px; padding: var(--spacing-10) var(--spacing-12); border-radius: 6px; background: var(--error-surface); }
body.admin-redesign .probs li{ display: flex; align-items: center; gap: 8px; font-size: var(--text-small); }
body.admin-redesign .probs .status{ font-size: var(--text-small); }
body.admin-redesign .ok-line{ display: flex; align-items: center; gap: 6px; }
body.admin-redesign .ok-line .icon{ color: var(--accent-ink); }
body.admin-redesign .muted-card{ background: var(--surface-secondary); border-style: dashed; }
body.admin-redesign .verbar{ display: flex; height: 14px; gap: 2px; border-radius: 3px; overflow: hidden; }
body.admin-redesign .v-1-17-9{ background: var(--mint); }
body.admin-redesign .v-1-17-8{ background: var(--color-onyx-black); }
body.admin-redesign .v-1-17-6{ background: var(--low); }
body.admin-redesign .v-1-11-6{ background: var(--error-ink); }
body.admin-redesign .legend span{ display: inline-flex; align-items: center; }
body.admin-redesign .tfs{ display: grid; border: 1px solid var(--line); border-radius: 8px; overflow: hidden; }
body.admin-redesign .trow-f{ display: grid; grid-template-columns: minmax(0, 1.4fr) 150px 150px 170px minmax(120px, 1fr) auto; gap: var(--spacing-16); align-items: center; padding: var(--spacing-14) var(--spacing-20); border-bottom: 1px solid var(--line); text-decoration: none; background: var(--canvas); }
body.admin-redesign .trow-f:last-child{ border-bottom: 0; }
body.admin-redesign .trow-f:hover{ background: var(--surface-secondary); }
body.admin-redesign .tf-main{ display: grid; min-width: 0; }
body.admin-redesign .tf-col{ min-width: 0; }
body.admin-redesign .ink{ color: var(--ink); }
body.admin-redesign .trow-f .chev{ color: var(--text-secondary); }
body.admin-redesign .rows.plain{ border: 0; }
body.admin-redesign .rows.plain .row{ padding-left: 0; padding-right: 0; }
body.admin-redesign .hb-track.exp{ width: 140px; flex: none; }
body.admin-redesign .cases{ display: grid; gap: var(--spacing-10); }
body.admin-redesign .case{ display: flex; align-items: center; gap: var(--spacing-14); padding: var(--spacing-14) var(--spacing-16); border: 1px solid var(--line); border-radius: 8px; text-decoration: none; background: var(--canvas); flex-wrap: wrap; }
body.admin-redesign a.case:hover{ background: var(--surface-secondary); }
body.admin-redesign .case .grow{ flex: 1; min-width: 220px; }
body.admin-redesign .case .att-ic{ background: var(--surface-secondary); color: var(--text-secondary); }
body.admin-redesign .timeline{ display: grid; gap: 0; }
body.admin-redesign .timeline li{ display: flex; gap: var(--spacing-12); position: relative; padding-bottom: var(--spacing-14); }
body.admin-redesign .timeline li::before{ content: ""; position: absolute; left: 5px; top: 16px; bottom: 0; width: 2px; background: var(--line); }
body.admin-redesign .timeline li:last-child::before{ display: none; }
body.admin-redesign .tl-dot{ width: 12px; height: 12px; border-radius: 50%; background: var(--mint); flex: none; margin-top: 5px; }
body.admin-redesign .timeline li:last-child .tl-dot{ background: var(--low); }
body.admin-redesign .sheet-tags{ display: flex; gap: var(--spacing-10); flex-wrap: wrap; align-items: center; }
body.admin-redesign .rels{ display: grid; gap: var(--spacing-16); }
body.admin-redesign .rel{ gap: var(--spacing-14); }
body.admin-redesign .rel > p{ color: var(--text-secondary); }
body.admin-redesign .rel.archived{ background: var(--surface-secondary); }
body.admin-redesign .stages{ display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; counter-reset: s; }
body.admin-redesign .stages li{ display: grid; gap: 6px; font-size: var(--text-small); color: var(--text-secondary); }
body.admin-redesign .stages li span{ height: 6px; border-radius: 999px; background: var(--surface-strong); }
body.admin-redesign .stages li.sdone span{ background: var(--color-onyx-black); }
body.admin-redesign .stages li.scur span{ background: var(--mint); }
body.admin-redesign .stages li.scur, body.admin-redesign .stages li.sdone{ color: var(--ink); }
body.admin-redesign .stages li.scur{ font-weight: 500; }
body.admin-redesign .rel-actions{ display: flex; gap: var(--spacing-8); }
body.admin-redesign .camp2{ padding: 0; gap: 0; overflow: hidden; }
body.admin-redesign .camp2 .ad-img{ width: 100%; height: 150px; border-radius: 0; }
body.admin-redesign .camp2 .camp-body{ padding: var(--spacing-16) var(--spacing-20) var(--spacing-20); }
body.admin-redesign .decs{ display: flex; flex-wrap: wrap; gap: 6px; }
body.admin-redesign .dec{ display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 999px; font-size: 12px; font-weight: 500; background: var(--surface-secondary); }
body.admin-redesign .dec-accepted{ background: var(--accent-soft); color: var(--accent-ink); }
body.admin-redesign .dec-declined{ color: var(--text-secondary); text-decoration: line-through; }
body.admin-redesign .dec-waiting{ background: #fff; box-shadow: inset 0 0 0 1px #c3ccce; }
body.admin-redesign .cregrid{ display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: var(--spacing-16); }
body.admin-redesign .cre{ padding: 0; gap: 0; overflow: hidden; }
body.admin-redesign .cre .ad-img{ width: 100%; height: 130px; border-radius: 0; }
body.admin-redesign .ad-img.ph{ display: grid; place-items: center; color: var(--text-secondary); background: var(--surface-secondary); }
body.admin-redesign .cre-body{ padding: var(--spacing-14) var(--spacing-16); display: grid; gap: 4px; }
body.admin-redesign .cre-foot{ display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-top: 6px; }
body.admin-redesign .row.head{ font-size: var(--text-small); color: var(--text-secondary); background: var(--surface-secondary); }
body.admin-redesign .row > .num{ min-width: 110px; text-align: right; }
body.admin-redesign .vp-c{ display: grid; text-align: right; margin-right: var(--spacing-8); }
body.admin-redesign .vp-c b{ font-weight: 500; }
body.admin-redesign .trow-t.is-new{ box-shadow: inset 3px 0 0 var(--mint); }
body.admin-redesign .trow-t.is-new .strong::after{ content: "New"; margin-left: 8px; padding: 2px 8px; border-radius: 999px; background: var(--accent-soft); color: var(--accent-ink); font-size: 11px; vertical-align: 2px; }
body.admin-redesign .seg-row{ margin-bottom: var(--spacing-8); }
body.admin-redesign .net{ display: inline-flex; align-items: center; height: 26px; padding: 0 10px; border-radius: 999px; font-size: 12px; font-weight: 500; white-space: nowrap; }
body.admin-redesign .net-test{ background: #fff7e7; color: #76551c; }
body.admin-redesign .net-off{ background: var(--surface-secondary); color: var(--text-secondary); }
body.admin-redesign .net.lg{ height: 32px; padding: 0 14px; font-size: var(--text-small); }
body.admin-redesign .net-card .btn{ justify-self: start; }
body.admin-redesign .radio.is-disabled{ opacity: 0.5; cursor: not-allowed; }
body.admin-redesign .radio .mk{ width: 24px; height: 24px; }
body.admin-redesign .dots{ list-style: disc; padding-left: 18px; font-size: var(--text-small); color: var(--text-secondary); display: grid; gap: 2px; }
body.admin-redesign .tight-cols{ gap: var(--spacing-10); }
body.admin-redesign .admin-logo{ display: flex; align-items: center; gap: 12px; color: #fff; font-weight: 500; font-size: var(--text-large); }
body.admin-redesign .admin-logo svg{ width: 36px; height: 36px; }
body.admin-redesign .admin-logo.dark{ color: var(--ink); }
@media (max-width: 1200px){
body.admin-redesign .trow-f{ grid-template-columns: minmax(0, 1fr) 130px 150px auto; }
body.admin-redesign .trow-f .tf-col:nth-child(3), body.admin-redesign .trow-f .tf-stock{ display: none; }
}
@media (max-width: 960px){
body.admin-redesign .topbar .search-trigger{ width: var(--control-height); }
body.admin-redesign .env span:not(.env-dot){ display: none; }
body.admin-redesign .env{ padding: 0 12px; }
}
@media (max-width: 720px){
body.admin-redesign .app-admin .workspace{ margin-left: 0; }
body.admin-redesign .command-rail{ transform: translateX(-100%); width: var(--command-rail-open); transition: transform 260ms var(--ease); }
body.admin-redesign .command-rail.is-open{ transform: none; }
body.admin-redesign .command-rail .command-label, body.admin-redesign .command-rail .who{ opacity: 1; }
body.admin-redesign .menu-toggle{ display: inline-flex; }
body.admin-redesign .content{ padding-bottom: 60px; }
body.admin-redesign .att{ grid-template-columns: auto minmax(0, 1fr); }
body.admin-redesign .att-who{ display: none; }
body.admin-redesign .trow-f{ grid-template-columns: minmax(0, 1fr) auto auto; }
body.admin-redesign .trow-f .tf-col:nth-child(3), body.admin-redesign .trow-f .tf-col:nth-child(4), body.admin-redesign .trow-f .tf-stock{ display: none; }
body.admin-redesign .stages{ grid-template-columns: repeat(5, minmax(0, 1fr)); font-size: 11px; }
body.admin-redesign .stages li{ font-size: 11px; }
body.admin-redesign .rel .card-foot{ flex-wrap: wrap; }
body.admin-redesign .row > .num{ min-width: 0; }
body.admin-redesign .row.head{ display: none; }
body.admin-redesign .hb-track.exp{ width: 70px; }
body.admin-redesign .op-title .opmark.xl{ width: 44px; height: 44px; font-size: 18px; }
body.admin-redesign .tc-big{ font-size: 38px; }
}
body.admin-redesign .hint .icon{ display: inline-block; vertical-align: -3px; margin-right: 4px; }
body.portal-redesign .main :is(.fig p,.sales-day h3,.prod-body p,.bal-hero p),
body.admin-redesign #page-content :is(.fig p,.sales-day h3,.card-top p){ margin: 0; }
body.portal-redesign .main .page-body{ display: grid; }
body.portal-redesign .prod-img{ border: 0; padding: 0; display: grid; place-items: center; cursor: pointer; }
body.portal-redesign .prod-img img{ width: 100%; height: 100%; object-fit: contain; padding: 20px; }
body.portal-redesign .prod-name button{ font: inherit; color: inherit; background: none; border: 0; padding: 0; text-align: left; cursor: pointer; }
body.portal-redesign .sale .brandmark, body.admin-redesign .sale .brandmark{ max-width: 28px; max-height: 24px; }
body.portal-redesign .toolbar.sales-tools{ justify-content: flex-start; margin-bottom: 0; }
body.portal-redesign .bh-actions .btn:disabled{ opacity: .6; cursor: not-allowed; }
body.portal-redesign .verified-balance-grid{ display: grid; gap: 20px; }
body.portal-redesign .bh-actions .btn-primary:disabled{ background: var(--primary); color: var(--ink); }
body.portal-redesign .bh-actions .btn-ghost-dark:disabled{ background: rgba(255,255,255,.1); color: #fff; }
body.portal-redesign .designed-tab-list{ overflow-y: hidden; }
body.portal-redesign .trow-t .grow{ display: grid; gap: 4px; }
body.admin-redesign .toolbar.sales-tools{ margin-bottom: 20px; }
body.admin-redesign .ocard{ padding: 24px; }
:is(body.portal-redesign,body.admin-redesign) .chart-series .chart-plot{position:relative;}
:is(body.portal-redesign,body.admin-redesign) .chart-x .axis-first{left:0;}
:is(body.portal-redesign,body.admin-redesign) .chart-x .axis-last{left:100%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-0{width:0%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-1{width:1%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-2{width:2%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-3{width:3%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-4{width:4%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-5{width:5%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-6{width:6%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-7{width:7%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-8{width:8%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-9{width:9%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-10{width:10%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-11{width:11%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-12{width:12%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-13{width:13%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-14{width:14%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-15{width:15%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-16{width:16%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-17{width:17%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-18{width:18%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-19{width:19%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-20{width:20%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-21{width:21%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-22{width:22%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-23{width:23%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-24{width:24%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-25{width:25%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-26{width:26%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-27{width:27%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-28{width:28%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-29{width:29%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-30{width:30%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-31{width:31%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-32{width:32%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-33{width:33%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-34{width:34%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-35{width:35%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-36{width:36%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-37{width:37%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-38{width:38%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-39{width:39%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-40{width:40%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-41{width:41%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-42{width:42%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-43{width:43%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-44{width:44%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-45{width:45%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-46{width:46%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-47{width:47%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-48{width:48%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-49{width:49%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-50{width:50%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-51{width:51%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-52{width:52%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-53{width:53%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-54{width:54%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-55{width:55%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-56{width:56%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-57{width:57%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-58{width:58%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-59{width:59%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-60{width:60%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-61{width:61%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-62{width:62%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-63{width:63%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-64{width:64%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-65{width:65%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-66{width:66%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-67{width:67%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-68{width:68%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-69{width:69%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-70{width:70%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-71{width:71%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-72{width:72%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-73{width:73%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-74{width:74%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-75{width:75%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-76{width:76%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-77{width:77%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-78{width:78%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-79{width:79%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-80{width:80%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-81{width:81%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-82{width:82%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-83{width:83%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-84{width:84%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-85{width:85%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-86{width:86%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-87{width:87%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-88{width:88%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-89{width:89%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-90{width:90%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-91{width:91%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-92{width:92%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-93{width:93%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-94{width:94%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-95{width:95%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-96{width:96%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-97{width:97%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-98{width:98%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-99{width:99%;}
:is(body.portal-redesign,body.admin-redesign) .source-w-100{width:100%;}
body.portal-redesign #page-content > .home-top ~ .section,body.portal-redesign #page-content > .home-top ~ .chart-card,body.portal-redesign #page-content > .home-top ~ .columns{margin-top:var(--spacing-28);}
body.portal-redesign dialog.palette[open],body.admin-redesign dialog.palette[open]{display:flex;width:100%;max-width:none;height:100%;max-height:none;border:0;margin:0;}
body.portal-redesign .pop .grow .strong,body.portal-redesign .pop .grow .muted,body.admin-redesign .trow-t .grow .muted{display:block;}
body.portal-redesign .pop-signout,body.admin-redesign .pop-signout{display:flex;align-items:center;gap:var(--spacing-12);width:100%;border:0;background:none;padding:var(--spacing-12) var(--spacing-16);text-align:left;color:inherit;font:inherit;}
body.portal-redesign .pop-signout:hover,body.admin-redesign .pop-signout:hover{background:var(--surface-secondary);}
body.portal-redesign .source-slot-placeholder{display:grid;place-items:center;}
body.portal-redesign .stockbar span{flex:none;}
body.portal-redesign .slot .btn{width:100%;}
body.portal-redesign .home-top{margin-bottom:0;}
body.portal-redesign .page-head{margin-bottom:0;}
body.portal-redesign .main > .page-head + dialog ~ .page-body{margin-top:var(--spacing-28);}
body.admin-redesign .pop .grow .strong,body.admin-redesign .pop .grow .muted{display:block;}
body.admin-redesign .command-badge{position:absolute;left:30px;top:9px;width:9px;height:9px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 2px var(--color-onyx-black);}
body.portal-redesign .btn-text,body.admin-redesign .btn-text{border:0;}
body.admin-redesign .source-audit-entry{border-bottom:1px solid var(--line);}
body.admin-redesign .source-audit-entry:last-child{border-bottom:0;}
body.admin-redesign .source-audit-entry>summary{cursor:pointer;border-bottom:0;list-style:none;}
body.admin-redesign .source-audit-entry>summary::-webkit-details-marker{display:none;}
body.admin-redesign .source-audit-entry>dl{margin:0;padding:var(--spacing-16) var(--spacing-20);font-size:var(--text-small);}
@media(max-width:960px){
body.portal-redesign,body.admin-redesign{--gutter:24px;}
}
@media(max-width:720px){
body.portal-redesign,body.admin-redesign{--gutter:16px;--text-h1:28px;--text-hero:40px;--text-figure:28px;}
}
body.portal-redesign button.tab,body.admin-redesign button.tab{border:0;border-bottom:2px solid transparent;background:transparent;}
body.portal-redesign button.tab[aria-selected=true],body.admin-redesign button.tab[aria-selected=true]{color:var(--ink);font-weight:500;border-bottom-color:var(--primary);}
body.portal-redesign .source-slot-placeholder,body.admin-redesign .source-slot-placeholder{display:grid;place-items:center;}
body.portal-redesign .railbar>span{flex:none;}
body.portal-redesign button.subnav-link,body.admin-redesign button.subnav-link{border:0;background:transparent;text-align:left;}
body.portal-redesign button.subnav-link[aria-selected=true],body.admin-redesign button.subnav-link[aria-selected=true]{background:var(--surface-secondary);}
body.portal-redesign .settings>.subnav,body.admin-redesign .settings>.subnav{grid-column:1;grid-row:1;}
body.portal-redesign .settings>[role=tabpanel],body.admin-redesign .settings>[role=tabpanel]{grid-column:2;max-width:720px;}
body.admin-redesign .row>.grow{display:grid;gap:2px;}
body.admin-redesign .segmented button[aria-selected=true]{background:var(--color-onyx-black);color:#fff;}
@media(max-width:1100px){
body.portal-redesign .settings>.subnav,body.admin-redesign .settings>.subnav{grid-column:1;grid-row:auto;}
body.portal-redesign .settings>[role=tabpanel],body.admin-redesign .settings>[role=tabpanel]{grid-column:1;}
}
body.portal-redesign .card,body.admin-redesign .card{box-shadow:none;}
body.portal-redesign .fig-sub,body.admin-redesign .fig-sub{font-size:var(--text-small);color:var(--text-secondary);margin-top:var(--spacing-4);}
body.portal-redesign .case{display:flex;align-items:center;gap:var(--spacing-12);padding:var(--spacing-14) var(--spacing-16);border:1px solid var(--line);border-radius:8px;background:var(--canvas);flex-wrap:wrap;text-align:left;}
body.portal-redesign .case .grow{flex:1;min-width:220px;display:grid;gap:2px;}
body.portal-redesign #po-list{display:grid;gap:var(--spacing-32);}
body.portal-redesign .sheet #po-list .columns{grid-template-columns:minmax(0,1fr);}
body.portal-redesign .sheet #po-list .figs-4{grid-template-columns:repeat(2,minmax(0,1fr));}
body.portal-redesign .sheet #po-list .fig:nth-child(3){border-left:0;}
body.portal-redesign .sheet #po-list .fig:nth-child(n+3){border-top:1px solid var(--line);}
body.portal-redesign .sheet #po-list .fig-value{color:var(--text-primary);}
body.admin-redesign button.case{text-align:left;}
body.admin-redesign button.case .grow{display:grid;gap:2px;}
body.admin-redesign .bh-split>div{padding:var(--spacing-16);display:grid;gap:var(--spacing-6);}
body.admin-redesign .cre>img.ad-img{object-fit:cover;}
body.portal-redesign :where(.sheet-body) p,body.admin-redesign :where(.sheet-body) p{color:inherit;}
body.portal-redesign .acts > p,body.admin-redesign .acts > p{padding:var(--spacing-20);}
@media(max-width:720px){
body.portal-redesign .rs-row{display:grid;grid-template-columns:32px minmax(0,1fr) auto;gap:var(--spacing-8) var(--spacing-12);}
body.portal-redesign .rs-row .thumb{grid-row:1/3;width:32px;height:40px;}
body.portal-redesign .rs-row .grow{grid-column:2;}
body.portal-redesign .rs-row .status{grid-column:2;grid-row:2;}
body.portal-redesign .rs-row .rs-need{grid-column:3;grid-row:1/3;}
}
body.portal-redesign #merchant-readiness .kv-row{
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.5fr);
}
body.admin-redesign main.source-auth{min-height:100vh;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);width:100%;max-width:none;margin:0;padding:0;align-items:stretch}
body.admin-redesign .source-auth .auth-art{background:var(--color-onyx-black);color:var(--color-white);padding:var(--spacing-48);display:flex;flex-direction:column;justify-content:space-between}
body.admin-redesign .source-auth .auth-tag{font-size:52px;line-height:1.04;letter-spacing:-.045em;font-weight:400;max-width:11ch}
body.admin-redesign .source-auth .auth-note{color:var(--on-dark-secondary);font-size:var(--text-small)}
body.admin-redesign .source-auth .auth-main{display:grid;place-items:center;padding:var(--spacing-32) var(--gutter)}
body.admin-redesign .source-auth .auth-form{width:min(400px,100%);display:grid;gap:var(--spacing-20)}
body.admin-redesign .source-auth .auth-step{display:grid;gap:var(--spacing-20)}
body.admin-redesign .source-auth .auth-step[hidden]{display:none}
body.admin-redesign .source-auth .h1{font-size:var(--text-h1);margin:0;padding:0;border:0}
body.admin-redesign .source-auth .admin-logo img{width:36px;height:36px;filter:none}
body.admin-redesign .source-auth .auth-mobile-logo{display:none;height:28px;width:auto}
body.admin-redesign .source-auth .error{display:block;min-height:3em;margin:0;line-height:1.5}
@media(max-width:960px){
body.admin-redesign main.source-auth{grid-template-columns:minmax(0,1fr)}
body.admin-redesign .source-auth .auth-art{display:none}
body.admin-redesign .source-auth .auth-mobile-logo{display:flex}
}
@media (max-width: 640px){
body.admin-redesign .admin-content-table .row.admin-content-row{
    display: grid;
    grid-template-columns: 24px minmax(0, 1fr) minmax(0, 1fr);
    grid-template-areas: "pick name name" ". type category" ". size uploaded" ". used used";
    row-gap: var(--spacing-8);
  }
body.admin-redesign .admin-content-row > div:nth-child(3){ grid-area: category; }
body.admin-redesign .admin-content-row > div:nth-child(4){ justify-self: start; }
body.admin-redesign .admin-content-row > div:nth-child(6){ display: block; }
body.admin-redesign .admin-content-row > div:nth-child(7){ justify-self: start; }
}
body.portal-redesign #merchant-readiness :is(dt, dd),
body.admin-redesign #treasury-operations .flow :is(dt, dd){
  min-width: 0;
  overflow-wrap: anywhere;
}
body.portal-redesign #merchant-readiness dd,
body.admin-redesign #treasury-operations .flow dd{ margin: 0; }
body.admin-redesign #treasury-operations .flow :is(dt, dd){ flex: 1; }
body.admin-redesign #treasury-operations .columns > .card{ min-width: 0; }
body.admin-redesign .admin-operator-detail{ min-width: 0; max-width: 100%; grid-template-columns: minmax(0, 1fr); }
body.admin-redesign .admin-operator-detail .fig{ min-width: 0; }
body.admin-redesign .admin-operator-detail .fig-note{ overflow-wrap: anywhere; }
body.admin-redesign .admin-operator-detail .row-actions{ flex-wrap: wrap; }
body.admin-redesign .source-auth .admin-art > div:last-child{margin-block:auto;}

/* Shared supplied-HTML controls and feedback. Portal/Admin retain their own brand shells. */
:root { --z-behind:-1; --z-decoration:1; --z-local-sticky:2; --z-toolbar:5; --z-inline:10; --z-sticky:20; --z-rail:30; --z-tabbar:40; --z-scrim:44; --z-mobile-rail:45; --z-pop:80; --z-panel:90; --z-sheet:100; }
:is(.portal-redesign,.admin-redesign) { --motion-fast:120ms; --motion-base:200ms; --motion-slow:320ms; --ease-out:cubic-bezier(.2,.7,.2,1); --ease-in:cubic-bezier(.4,0,1,1); }
:is(.portal-redesign,.admin-redesign) :is(h1,h2,h3,h4,strong,b,th) { font-weight:500; }
:is(.portal-redesign,.admin-redesign) .ui-empty { display:flex; flex-direction:row; align-items:flex-start; gap:16px; text-align:left; padding:24px; }
:is(.portal-redesign,.admin-redesign) .ui-empty > svg { flex:none; color:var(--text-secondary); }
:is(.portal-redesign,.admin-redesign) .ui-empty .empty-title { font-weight:500; margin:0 0 6px; }
:is(.portal-redesign,.admin-redesign) .ui-empty .empty-text { color:var(--text-secondary); margin:0 0 12px; }
:is(body.portal-redesign,body.admin-redesign) .btn-danger { min-height:44px; background:var(--error-surface); color:var(--error-ink); border-color:var(--error-ink); }
:is(body.portal-redesign,body.admin-redesign) .btn-danger:hover:not(:disabled):not([aria-disabled=true]) { background:color-mix(in srgb,var(--error-surface) 85%,var(--error-ink)); }
:is(body.portal-redesign,body.admin-redesign) .btn-danger:focus-visible { outline:2px solid var(--error-ink); outline-offset:3px; }
:is(.portal-redesign,.admin-redesign) .btn[aria-disabled=true] { opacity:.6; cursor:not-allowed; }
:is(body.portal-redesign,body.admin-redesign) dialog.ui-confirm { inset:0; width:min(520px,calc(100vw - 32px)); height:fit-content; max-height:calc(100dvh - 32px); margin:auto; border:1px solid var(--line,#d9e2e4); border-radius:8px; padding:0; }
:is(body.portal-redesign,body.admin-redesign) .ui-confirm .sheet-body { height:auto; }
:is(body.portal-redesign,body.admin-redesign) .ui-confirm .btn-danger { background:var(--error-surface,#fff0ee); color:var(--error-ink,#a33737); }
.ui-toasts { position:fixed; bottom:80px; left:50%; transform:translateX(-50%); display:grid; gap:8px; z-index:var(--z-sheet); width:max-content; max-width:calc(100vw - 32px); }
.ui-toast { display:flex; align-items:center; gap:16px; background:var(--ink,#0a0d11); color:#fff; padding:12px 16px; border-radius:8px; box-shadow:0 6px 20px rgba(10,13,17,.12); }
.ui-toast-icon { display:flex; flex:none; }
.ui-toast .btn-text { color:inherit; }
.ui-toast-error { background:var(--error-surface,#fff0ee); color:var(--error-ink,#a33737); }
.ui-copy-fallback { position:fixed; bottom:16px; left:16px; width:calc(100vw - 32px); z-index:var(--z-sheet); }
.ui-offline { position:fixed; top:72px; left:0; right:0; padding:10px 16px; z-index:var(--z-pop); background:var(--surface-strong,#e8eef0); text-align:center; }
.ui-offline[hidden] { display:none; }
.ui-region-status:not(:empty) { background:var(--surface-secondary); padding:12px 16px; margin-bottom:12px; border-radius:6px; }
.ui-region-status .btn { margin-left:12px; }
.ui-skeletons { display:grid; gap:12px; }
.skeleton { background:var(--surface-secondary,#f2f6f7); border-radius:6px; color:transparent; }
.skeleton-row { height:56px; }
.skeleton-card { height:120px; }
.ui-live { font-size:13px; color:var(--text-secondary); }
.skip-link { position:absolute; left:8px; top:-60px; z-index:var(--z-sheet); background:#0a0d11; color:#fff; padding:12px 16px; border-radius:6px; }
.skip-link:focus { top:8px; }
.rail-scrim { position:fixed; inset:0; z-index:var(--z-scrim); background:rgba(10,13,17,.4); }
.rail-scrim[hidden] { display:none; }
@media(max-width:960px) {
 body.portal-redesign .rail { visibility:hidden; height:100dvh; }
 body.portal-redesign .rail.is-open { visibility:visible; z-index:var(--z-mobile-rail); }
 body.portal-redesign .rail-menu { min-height:0; height:calc(100dvh - 72px); display:flex; flex-direction:column; padding-bottom:env(safe-area-inset-bottom); }
 body.portal-redesign .rail-nav { flex:1; min-height:0; overflow:auto; }
 body.portal-redesign .rail-foot { flex:none; }
}
@media(max-width:720px) {
 :is(body.portal-redesign,body.admin-redesign) .pop { position:fixed; left:16px; right:16px; top:80px; width:auto; max-width:none; max-height:calc(100dvh - 160px); overflow:auto; }
}
@media(prefers-reduced-motion:no-preference) {
 @view-transition { navigation:auto; }
 ::view-transition-old(root) { animation:ui-fade-out var(--motion-fast) var(--ease-in) both; }
 ::view-transition-new(root) { animation:ui-fade-in var(--motion-base) var(--ease-out) both; }
 :is(body.portal-redesign,body.admin-redesign) .rail { view-transition-name:rail; }
 :is(body.portal-redesign,body.admin-redesign) .topbar { view-transition-name:topbar; }
 body.admin-redesign .command-rail { view-transition-name:rail; }
 body.admin-redesign .platform-bar { view-transition-name:topbar; }
 ::view-transition-group(rail),::view-transition-group(topbar) { animation:none; }
 :is(body.portal-redesign,body.admin-redesign) dialog.sheet { transition:opacity var(--motion-base) var(--ease-out),transform var(--motion-base) var(--ease-out),overlay var(--motion-base) allow-discrete,display var(--motion-base) allow-discrete; opacity:0; transform:translateY(8px); }
 :is(body.portal-redesign,body.admin-redesign) dialog.sheet[open] { opacity:1; transform:none; }
 @starting-style { :is(body.portal-redesign,body.admin-redesign) dialog.sheet[open] { opacity:0; transform:translateY(8px); } }
 dialog.sheet::backdrop { transition:background var(--motion-base),overlay var(--motion-base) allow-discrete,display var(--motion-base) allow-discrete; }
 @starting-style { dialog.sheet[open]::backdrop { background:rgba(10,13,17,0); } }
 :is(body.portal-redesign,body.admin-redesign) .btn:active { transform:translateY(1px); }
 .ui-toast { animation:ui-toast-in var(--motion-base) var(--ease-out); }
 .is-new { animation:ui-row-in var(--motion-slow) var(--ease-out),ui-glow 600ms var(--ease-out); }
 .is-updated { animation:ui-glow 600ms var(--ease-out); }
 .skeleton { background:linear-gradient(90deg,var(--surface-secondary) 25%,var(--surface-strong) 37%,var(--surface-secondary) 63%); background-size:400% 100%; animation:ui-shimmer 1.2s linear infinite; }
 @keyframes ui-fade-in { from { opacity:0; } }
 @keyframes ui-fade-out { to { opacity:0; } }
 @keyframes ui-toast-in { from { opacity:0; transform:translateY(8px); } }
 @keyframes ui-row-in { from { opacity:0; transform:translateY(-6px); } }
 @keyframes ui-glow { from { background:var(--accent-soft); } }
 @keyframes ui-shimmer { from { background-position:100% 0; } to { background-position:0 0; } }
}
.ui-error-page { max-width:640px; min-height:60dvh; margin:10dvh auto; padding:16px; }
.ui-error-page .card { padding:32px; }
.ui-error-page h1 { font-size:28px; font-weight:500; margin-bottom:16px; }
.ui-error-page p { margin-bottom:24px; }
:is(body.portal-redesign,body.admin-redesign) .ui-chart .trend-h-0 { min-height:0; }
:is(body.portal-redesign,body.admin-redesign) .ui-chart .cbar.is-active .tip { visibility:visible; opacity:1; }
.ui-chart .cbar { position:relative; cursor:pointer; }
.ui-chart .cbar::before { content:""; position:absolute; inset:0 -3px; }
.ui-chart:focus-visible { outline:2px solid var(--accent-ink); outline-offset:4px; }
.ui-chart-readout { min-height:20px; margin-bottom:12px; }

/* Access records retain four labelled fields at both sizes. */
body.admin-redesign .ui-restrictions { min-width:0; max-width:100%; }
body.admin-redesign .ui-restriction-rows .row { display:grid; grid-template-columns:minmax(0,1.2fr) 110px minmax(0,1fr) 120px; gap:16px; }
body.admin-redesign .ui-restriction-rows .row > * { min-width:0; overflow-wrap:anywhere; }
@media(max-width:720px) {
 body.admin-redesign .ui-restriction-rows .ui-record-head { display:none; }
 body.admin-redesign .ui-restriction-rows .row { grid-template-columns:minmax(0,1fr) auto; padding:16px 0; }
 body.admin-redesign .ui-restriction-rows .row > :nth-child(3),body.admin-redesign .ui-restriction-rows .row > :nth-child(4) { grid-column:1 / -1; }
 body.admin-redesign .ui-restriction-rows .cell-action .btn { width:100%; }
}

/* Delivery-case records share fixed state/amount columns; exact text remains visible. */
body.admin-redesign .delivery-case-list button.case { display:grid; grid-template-columns:40px minmax(0,1fr) 140px 140px; gap:14px 16px; align-items:center; }
body.admin-redesign .delivery-case-list button.case .grow { min-width:0; }
body.admin-redesign .delivery-case-list button.case > .status { min-width:0; max-width:100%; white-space:normal; justify-self:start; }
body.admin-redesign .delivery-case-list button.case > .num { min-width:0; overflow-wrap:anywhere; text-align:right; }
@media(max-width:720px) {
 body.admin-redesign .delivery-case-list button.case { grid-template-columns:40px minmax(0,1fr); }
 body.admin-redesign .delivery-case-list button.case > .status,body.admin-redesign .delivery-case-list button.case > .num { grid-column:2; justify-self:start; text-align:left; }
}

/* Personal-session rows retain readable metadata and actions on both surfaces. */
:is(.portal-redesign,.admin-redesign) .ui-session-controls .row { display:grid; grid-template-columns:44px minmax(0,1fr) auto; gap:12px 16px; align-items:center; }
:is(.portal-redesign,.admin-redesign) .ui-session-controls .grow { display:grid; gap:4px; min-width:0; overflow-wrap:anywhere; }
:is(.portal-redesign,.admin-redesign) .ui-security-panel { display:grid; gap:24px; }
.ui-security-panel[hidden] { display:none; }
@media(max-width:600px) {
 :is(.portal-redesign,.admin-redesign) .ui-session-controls .row { grid-template-columns:44px minmax(0,1fr); padding:16px; }
 :is(.portal-redesign,.admin-redesign) .ui-session-controls .row > :last-child { grid-column:2; justify-self:start; }
 :is(.portal-redesign,.admin-redesign) .ui-session-controls .card-foot .btn { white-space:normal; text-align:left; }
}

/* Converted Settings panes use the supplied white-card composition. */
:is(.portal-redesign,.admin-redesign) .ui-settings-pane { display:grid; gap:16px; min-width:0; }
.ui-settings-pane[hidden] { display:none; }
.ui-settings-pane .section-head { margin:0; }
.ui-form-measure { display:grid; gap:16px; max-width:520px; }
.ui-team-rows .grow { display:grid; gap:4px; min-width:0; overflow-wrap:anywhere; }
.ui-team-rows .row { display:flex; justify-content:space-between; gap:16px; }
.disclosure { border:1px solid var(--line); border-radius:var(--radius-control); min-width:0; }
.disclosure > summary { display:flex; align-items:center; gap:12px; padding:16px; cursor:pointer; list-style:none; }
.disclosure > summary::-webkit-details-marker { display:none; }
.disclosure > summary .grow { display:grid; gap:4px; flex:1; min-width:0; overflow-wrap:anywhere; }
.disclosure > summary > svg:last-child { flex:none; transition:transform var(--motion-fast); }
.disclosure[open] > summary > svg:last-child { transform:rotate(180deg); }
.ui-disclosure-body { display:grid; gap:16px; padding:0 16px 16px; }
.ui-disclosure-body dd { min-width:0; overflow-wrap:anywhere; }
#team-invite-form { display:grid; gap:16px; }
#team-invite-link { overflow:hidden; }
@media(max-width:600px) { .ui-address-record > summary { flex-wrap:wrap; } }

.ui-address-record { border:0; border-bottom:1px solid var(--line); border-radius:0; }
.ui-address-record > summary { padding:16px 0; }
@media(max-width:600px) {
 .ui-address-record > summary { display:grid; grid-template-columns:44px minmax(0,1fr) auto; }
 .ui-address-record > summary .status { grid-column:2; grid-row:2; }
 .ui-address-record > summary > svg:last-child { grid-column:3; grid-row:1; }
}

/* Overflow fades identify scrollable tab choices without hiding the selected end. */
[role=tablist][data-ui-scroll-start] { mask-image:linear-gradient(to right,transparent,#000 16px); }
[role=tablist][data-ui-scroll-end] { mask-image:linear-gradient(to left,transparent,#000 16px); }
[role=tablist][data-ui-scroll-start][data-ui-scroll-end] { mask-image:linear-gradient(to right,transparent,#000 16px,#000 calc(100% - 16px),transparent); }

.ui-readiness-content { display:grid; gap:16px; }
.ui-readiness-group { display:grid; gap:8px; }
.ui-readiness-content .kv dd { min-width:0; overflow-wrap:anywhere; }

/* Support uses the supplied inbox and conversation anatomy. */
:is(body.portal-redesign,body.admin-redesign) .support-conversation { width:100%; max-width:720px; }
:is(body.portal-redesign,body.admin-redesign) .support-conversation > .page-body { padding:0; margin-top:24px; }
:is(body.portal-redesign,body.admin-redesign) .support-conversation .sp-reply-form { max-width:100%; gap:12px; margin-top:24px; padding-top:0; }
:is(body.portal-redesign,body.admin-redesign) .support-conversation #reply-body { min-height:96px; }
:is(body.portal-redesign,body.admin-redesign) .support-conversation .msg p { overflow-wrap:anywhere; }
:is(body.portal-redesign,body.admin-redesign) .support-conversation .reply-state { display:flex; align-items:center; gap:8px; flex-wrap:wrap; }
:is(body.portal-redesign,body.admin-redesign) .ui-support .trow-t { min-width:0; }
:is(body.portal-redesign,body.admin-redesign) .ui-support .trow-t .grow { min-width:0; overflow-wrap:anywhere; }
@media(max-width:600px) {
  :is(body.portal-redesign,body.admin-redesign) .ui-support .trow-t { flex-wrap:wrap; }
  :is(body.portal-redesign,body.admin-redesign) .ui-support .trow-t .grow { flex-basis:calc(100% - 64px); }
}

body.portal-redesign .support-conversation .btn-forward,
body.portal-redesign .ui-support .btn-forward { background:var(--ink,#0a0d11); color:#fff; }
body.portal-redesign:has(.ui-support) .ph-actions .btn-forward { background:var(--ink,#0a0d11); color:#fff; }

/* Staff Support inbox: one supplied segmented selection and real read state. */
body.admin-redesign .ui-support-inbox .segmented { display:inline-flex; width:fit-content; margin-bottom:16px; }
body.admin-redesign .ui-support-inbox .segmented .tab[aria-selected=true] { border-bottom-color:transparent; }
.ui-support-inbox .support-title { display:flex; align-items:center; gap:8px; font-weight:400; }
.ui-support-inbox .is-unread .support-title { font-weight:600; }
.ui-support-inbox .support-unread-dot { width:8px; height:8px; border-radius:50%; background:var(--accent,#00d1a7); flex:none; }
.ui-support-inbox .support-wait { display:block; font-size:12px; margin-top:4px; }
.ui-support-inbox .support-wait.is-overdue { color:var(--error-ink,#a33737); }
.ui-support-inbox .trow-t .grow { min-width:0; overflow-wrap:anywhere; }
@keyframes support-arrived { from{opacity:0;transform:translateY(-6px)} to{opacity:1;transform:none} }
.ui-support-inbox .ui-support-arrived { animation:support-arrived 200ms var(--ease-out); }
@media(prefers-reduced-motion:reduce){.ui-support-inbox .ui-support-arrived{animation:none}}
@media(max-width:600px){.ui-support-inbox .trow-t{flex-wrap:wrap}.ui-support-inbox .trow-t .grow{flex-basis:calc(100% - 64px)}}

.ui-support-inbox .support-reference { white-space:nowrap; }

/* Shared supplied Sales composition, including full-width phone controls. */
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-filters { display:flex; gap:12px; align-items:end; flex-wrap:wrap; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-filters .field { min-width:130px; flex:1; margin:0; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-filters .field-search { min-width:200px; flex:1.5; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-search-wrap { position:relative; display:block; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-search-wrap > svg { position:absolute; top:14px; left:12px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-search-wrap .input { width:100%; padding-left:36px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .select { width:100%; max-width:100%; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-custom { display:flex; gap:12px; margin-top:12px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-custom[hidden] { display:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-custom .field { flex:1; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-live-line { display:flex; gap:12px; align-items:center; margin:16px 0; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .fig-value { overflow-wrap:anywhere; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-long-value { grid-column:1/-1; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-method-total { display:flex; justify-content:space-between; gap:12px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-list { margin-top:24px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-list-footer { display:flex; justify-content:space-between; align-items:center; gap:16px; margin-top:16px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale .sale-main { min-width:0; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale .sale-meta { overflow-wrap:anywhere; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale .sale-amt { flex:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-internal { padding-bottom:10px; white-space:nowrap; }
@keyframes sales-arrived { from{background:var(--accent-surface,#e8fff8);opacity:.6} to{background:transparent;opacity:1} }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .ui-sales-arrived { animation:sales-arrived 600ms var(--ease-out); }
@media(prefers-reduced-motion:reduce){:is(body.portal-redesign,body.admin-redesign) .ui-sales .ui-sales-arrived{animation:none}}
@media(max-width:600px){
  :is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-filters { display:grid; grid-template-columns:minmax(0,1fr); }
  :is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-filters .field { min-width:0; }
  :is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-custom { flex-direction:column; }
  :is(body.portal-redesign,body.admin-redesign) .ui-sales .sale { gap:12px; }
  :is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-method-total { flex-wrap:wrap; }
}
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-kv-value { display:flex; align-items:center; justify-content:flex-end; gap:8px; min-width:0; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-kv-text { min-width:0; overflow-wrap:anywhere; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-kv-value .btn { flex:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-detail-tabs .tabs { overflow-x:auto; overflow-y:hidden; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-timeline { margin:0; padding-left:20px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-timeline li { margin-bottom:16px; }

:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-detail-fields .kv-row { display:grid; grid-template-columns:minmax(80px,.7fr) minmax(0,1.3fr); gap:16px; align-items:center; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-detail-fields .kv-row > .muted { min-width:0; overflow-wrap:anywhere; }

:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-pending { margin:24px 0; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-pending[hidden] { display:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-pending-detail .kv-row { display:grid; grid-template-columns:minmax(80px,.7fr) minmax(0,1.3fr); gap:16px; align-items:center; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-pending-detail .kv-row > span { min-width:0; overflow-wrap:anywhere; }

:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale-title img.vp-logo { width:auto; height:14px; max-width:62px; object-fit:contain; flex:none; }

body.portal-redesign .ui-home .mc-asof { border-top:1px solid var(--on-dark-line,rgba(255,255,255,.16)); padding-top:12px; margin-top:16px; font-size:13px; color:var(--on-dark-secondary); }
body.portal-redesign .ui-home .mc-last { display:flex; align-items:center; gap:6px; margin-top:12px; font-size:13px; color:var(--on-dark-secondary); }
body.portal-redesign .ui-home #home-attention-toggle { margin-top:12px; }
body.portal-redesign .ui-home #home-attention-more[hidden] { display:none; }
body.portal-redesign .ui-home .home-no-terminals .ui-empty { min-height:220px; }
body.portal-redesign .ui-home .sale-main { min-width:0; }
body.portal-redesign .ui-home .sale-meta { overflow-wrap:anywhere; white-space:normal; text-overflow:clip; }

body.portal-redesign .ui-attention-bell { position:relative; }
body.portal-redesign .ui-attention-dot { position:absolute; width:8px; height:8px; border-radius:50%; background:var(--accent,#00d1a7); top:8px; right:8px; }
body.portal-redesign .ui-attention-dot[hidden] { display:none; }

/* Supplied page palette: keyboard selection and a bounded internal scroll cue. */
:is(body.portal-redesign,body.admin-redesign) .palette-list a[aria-selected=true] { background:var(--surface-secondary); }
:is(body.portal-redesign,body.admin-redesign) .palette-list[data-ui-scroll-end]::after { content:""; display:block; position:sticky; bottom:0; height:24px; margin-top:-24px; background:linear-gradient(transparent,var(--surface,#fff)); pointer-events:none; }

/* Reports retains the supplied tabs, row composition and real recorded data. */
body.portal-redesign .ui-reports :is(#report-export,#report-period-label)[hidden] { display:none; }
body.portal-redesign .ui-reports .ui-report-thumb img { width:100%; height:100%; object-fit:contain; }
body.portal-redesign .ui-reports .ui-report-thumb { font-size:13px; font-weight:500; color:var(--text-secondary); }
body.portal-redesign .ui-report-dates { display:flex; align-items:flex-end; flex-wrap:wrap; gap:12px; margin-top:16px; }
body.portal-redesign .ui-report-dates label { display:grid; gap:6px; min-width:0; flex:1 1 160px; max-width:240px; }
body.portal-redesign .ui-report-dates input { width:100%; min-width:0; }
@media(prefers-reduced-motion:no-preference) { body.portal-redesign .ui-reports .cbar-fill.has-value { transform-origin:bottom; animation:ui-report-bar 320ms var(--ease-out); } @keyframes ui-report-bar { from { transform:scaleY(0); } } }

body.portal-redesign .ui-reports .tabs { overflow-y:hidden; }

@media(max-width:720px) {
 body.portal-redesign .ui-report-dates { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
 body.portal-redesign .ui-report-dates label { max-width:none; }
 body.portal-redesign .ui-report-dates input { font-size:14px; padding-inline:8px; }
 body.portal-redesign .ui-report-dates :is(button,a) { justify-self:start; }
 body.portal-redesign .ui-report-dates a { grid-column:1/-1; }
}

body.portal-redesign .ui-reports .report-head { flex-direction:row; justify-content:flex-end; align-items:center; gap:12px; flex-wrap:wrap; }
body.portal-redesign .ui-reports .report-head[hidden] { display:none; }

body.portal-redesign #payout-report-rows[hidden] { display:none; }

@media(max-width:720px) { body.portal-redesign dialog #payout-report-filter { grid-template-columns:minmax(0,1fr); } }

:is(body.portal-redesign,body.admin-redesign) .ui-balance-figure { display:block; color:inherit; text-decoration:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-balance-figure:hover { text-decoration:underline; text-decoration-thickness:1px; text-underline-offset:6px; }
:is(body.portal-redesign,body.admin-redesign) .ui-balance-empty { font-size:32px; line-height:1.1; }

:is(body.portal-redesign,body.admin-redesign) .ui-balance-help { margin:0 0 20px; }
:is(body.portal-redesign,body.admin-redesign) .ui-balance-help summary { display:flex; align-items:center; gap:6px; cursor:pointer; list-style:none; font-size:14px; }
:is(body.portal-redesign,body.admin-redesign) .ui-balance-help summary::-webkit-details-marker { display:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-balance-help .kv { margin-top:12px; }

:is(body.portal-redesign,body.admin-redesign) .verified-proceeds-card .flow dt > span { display:block; }
:is(body.portal-redesign,body.admin-redesign) .verified-proceeds-card .act-amt > span { display:block; margin-top:3px; }
:is(body.portal-redesign,body.admin-redesign) .verified-proceeds-card .card-head { flex-wrap:wrap; gap:12px; }

body.portal-redesign .ui-products .portal-product-grid { grid-template-columns:repeat(auto-fill,minmax(250px,1fr)); }
body.portal-redesign .ui-products .prod-desc { min-height:20px; }
body.portal-redesign .ui-products .product-search-wrap { display:flex; align-items:center; gap:12px; flex:1; }
body.portal-redesign .ui-products #product-count { white-space:nowrap; margin-left:auto; }
body.portal-redesign .ui-products .ui-add-product { min-height:240px; display:flex; align-items:center; justify-content:center; gap:12px; }
body.portal-redesign .ui-products [data-product][hidden] { display:none; }
body.portal-redesign .ui-products .ui-file-input { position:absolute; width:1px; height:1px; clip-path:inset(50%); overflow:hidden; }
body.portal-redesign .ui-products .ui-file-input:focus-visible+label { outline:2px solid var(--accent-ink); outline-offset:3px; }
body.portal-redesign .ui-products #edit-stock-note[hidden] { display:none; }
@media(max-width:720px) { body.portal-redesign .ui-products .portal-product-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } body.portal-redesign .ui-products .product-search-wrap { flex-wrap:wrap; } }

.ui-products .catalog-publication-notice { margin: 0 0 24px; }
.ui-configuration-changes { margin: 16px 0; }
.ui-configuration-changes h4 { margin: 12px 0 6px; font-size: 13px; }
.ui-configuration-changes ul { padding-left: 20px; margin: 0; }
.ui-configuration-changes li { margin: 6px 0; overflow-wrap: anywhere; }

body.portal-redesign .ui-products .prod-img { overflow:hidden; width:100%; flex:none; }
body.portal-redesign .ui-products .prod-img img { box-sizing:border-box; max-height:176px; max-width:100%; }
body.portal-redesign .ui-products .product-search-wrap { position:relative; flex-wrap:nowrap; }
body.portal-redesign .ui-products .product-search-wrap > svg { position:absolute; left:12px; top:14px; pointer-events:none; }
body.portal-redesign .ui-products .product-search-wrap .input { padding-left:38px; }
body.portal-redesign .ui-products .link-more { border:0; background:transparent; cursor:pointer; }
body.portal-redesign .ui-products .catalog-publication-notice { display:flex; align-items:center; justify-content:space-between; gap:24px; }
body.portal-redesign .ui-products .catalog-publication-notice .btn { flex:none; width:auto; }
@media(max-width:720px) { body.portal-redesign .ui-products .catalog-publication-notice { align-items:stretch; flex-direction:column; gap:16px; } }

body.portal-redesign .portal-inventory-tools { display:grid; grid-template-columns:minmax(0,1fr) 220px; gap:12px; }
body.portal-redesign .portal-inventory-tools .picker select { width:100%; }
body.portal-redesign .slot-top { flex-wrap:wrap; gap:6px; }
body.portal-redesign .slot-foot { white-space:nowrap; }
body.portal-redesign .ui-count-age { margin:6px 0 12px; }
body.portal-redesign [data-stock-machine][hidden],body.portal-redesign [data-stock-state][hidden] { display:none; }
@media(max-width:720px) { body.portal-redesign .portal-inventory-tools { grid-template-columns:minmax(0,1fr); } }

body.portal-redesign .cards-terminals { align-items:start; }
body.portal-redesign .cards-terminals .card-alert > span { min-width:0; }
body.portal-redesign .ui-terminal-contact { margin:12px 0 0; }
body.portal-redesign .page-head .status-line { margin-top:8px; }
body.portal-redesign #pair-code { font-size:40px; letter-spacing:.04em; }

body.portal-redesign #assign-form[hidden] { display:none; }

body.portal-redesign .ui-terminal-tools { justify-content:flex-start; }
body.portal-redesign .ui-terminal-tools .screen-note { margin:0; }

body.portal-redesign .ui-vendpass details>summary,body.admin-redesign .ui-vendpass details>summary { list-style:none; display:flex; align-items:center; justify-content:space-between; gap:12px; cursor:pointer; padding:12px 0; font-weight:500; }
.ui-vendpass details>summary::-webkit-details-marker { display:none; }
.ui-vendpass details[open]>summary>svg { transform:rotate(180deg); }
.ui-vendpass [data-vp-end-date][hidden] { display:none; }

body.portal-redesign [data-restock-terminal][hidden] { display:none; }

.ui-vendpass [data-vendpass-action] { margin-top:12px; }

body.portal-redesign [data-restock-state][hidden],body.portal-redesign #restock-no-matches[hidden] { display:none; }

body.portal-redesign .ui-setup-guide { padding:24px; margin-bottom:24px; gap:16px; }
body.portal-redesign .setup-welcome { display:flex; gap:16px; align-items:flex-start; }
body.portal-redesign .setup-welcome p { color:var(--text-secondary); max-width:680px; }
body.portal-redesign .setup-start { display:flex; gap:20px; align-items:center; margin:4px 0; flex-wrap:wrap; }
body.portal-redesign .setup-steps { display:flex; gap:20px; overflow-x:auto; border-bottom:1px solid var(--line); margin-bottom:8px; }
body.portal-redesign .setup-steps button { flex:none; background:transparent; border:0; border-bottom:2px solid transparent; min-height:44px; padding:12px 0; font:inherit; color:var(--text-secondary); cursor:pointer; }
body.portal-redesign .setup-steps button[aria-current=step] { color:var(--ink); border-bottom-color:var(--color-caribbean-mint); }
body.portal-redesign .ui-setup-guide [data-setup-panel][hidden] { display:none; }
body.portal-redesign .ui-setup-guide h3 { margin:20px 0 12px; }
body.portal-redesign .ui-setup-guide .form-actions { display:flex; gap:12px; margin:20px 0; flex-wrap:wrap; }
body.portal-redesign .ui-setup-guide [data-setup-refresh] { margin-top:20px; }
body.portal-redesign .ui-setup-records>summary { display:flex; align-items:center; gap:12px; list-style:none; cursor:pointer; padding:12px 0; }
body.portal-redesign .ui-setup-records>summary::-webkit-details-marker { display:none; }
@media(prefers-reduced-motion:no-preference) { .ui-setup-guide [data-setup-panel]:not([hidden]) { animation:ui-setup-enter 160ms var(--ease-out) both; } }
@keyframes ui-setup-enter { from { opacity:0; transform:translateY(4px); } to { opacity:1; transform:none; } }
@media(max-width:720px) { body.portal-redesign .ui-setup-guide { padding:20px; } body.portal-redesign .ui-setup-guide .form-grid { grid-template-columns:minmax(0,1fr); } }

.ui-toast-action { color:inherit; text-decoration:underline; white-space:nowrap; }
body.admin-redesign .source-audit-entry.is-linked { outline:2px solid var(--color-caribbean-mint); outline-offset:2px; }

:is(.admin-redesign,.portal-redesign) .sheet [data-delivery-case] .kv-row { display:grid; grid-template-columns:minmax(100px,.35fr) minmax(0,1fr); gap:12px; align-items:start; }
[data-delivery-case] .sales-kv-value { text-align:left; display:flex; gap:8px; min-width:0; align-items:start; }
[data-delivery-case] .sales-kv-text { min-width:0; overflow-wrap:anywhere; }
[data-delivery-case] .sales-kv-value .btn { flex-shrink:0; }
@media(max-width:720px) { :is(.admin-redesign,.portal-redesign) .sheet [data-delivery-case] .kv-row { grid-template-columns:1fr; gap:4px; } }

.ui-shortcut-list { display:grid; gap:12px; margin:20px 0; }
.ui-shortcut-list > div { display:grid; grid-template-columns:100px minmax(0,1fr); gap:16px; align-items:center; }
.ui-shortcut-list dt { display:flex; gap:6px; }
.ui-shortcut-list kbd { min-width:28px; padding:4px 8px; border:1px solid var(--line); border-radius:4px; text-align:center; font:inherit; }

/* Recorded Home activity arrives without replacing the page or open controls. */
.portal-redesign .ui-live-changed { animation: ui-live-highlight 600ms ease-out; }
.portal-redesign .home-live-new-sales { position: sticky; top: 8px; z-index:var(--z-local-sticky); margin: 12px 20px; }
@keyframes ui-live-highlight { from { background-color: var(--surface-secondary); } to { background-color: transparent; } }
@media (prefers-reduced-motion: reduce) { .portal-redesign .ui-live-changed { animation: none; } }
.portal-redesign #terminal-live-records { display: grid; gap: 24px; }
.portal-redesign #terminal-live-sample { margin: 0; }
:is(.portal-redesign,.admin-redesign) .report-period-form { display: flex; gap: 12px; align-items: end; flex-wrap: wrap; }
:is(.portal-redesign,.admin-redesign) .report-period-form .field { flex: 1 1 160px; min-width: 0; }
:is(.portal-redesign,.admin-redesign) .report-period-form > .btn { flex: 0 0 auto; }
@media (max-width: 600px) { :is(.portal-redesign,.admin-redesign) .report-period-form { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); } :is(.portal-redesign,.admin-redesign) .report-period-form > .field:first-child,:is(.portal-redesign,.admin-redesign) .report-period-form > .btn { grid-column:1/-1; } }
.portal-redesign .report-period-form { margin-top: 24px; }

/* Shared Sales side sheets fill the phone; the legacy Admin dialog inset does not apply. */
:is(body.portal-redesign,body.admin-redesign) .ui-sales dialog.sheet-side { max-width:100%; }

/* Existing converted component rules, moved from the legacy stylesheet. */

.tnum{ font-variant-numeric: tabular-nums; }
.btn-quiet{
  background: var(--color-chalk-cloud);
  color: var(--color-obsidian-core);
  border-color: var(--color-pewter-mist);
}
.btn-quiet:hover:not(:disabled){ background: var(--color-frost-field); }
.rail-workspace .picker-select{ min-width: 0; width: 100%; }
.screen-head{
  display: flex;
  align-items: center;
  justify-content: flex-end;
  gap: var(--spacing-24);
  margin: 0 0 var(--spacing-24);
  flex-wrap: wrap;
}
.sheet-actions{ display: flex; justify-content: flex-end; gap: var(--spacing-8); }
.po-ring-legend .tnum{ margin-left: auto; font-weight: var(--font-weight-medium); }@media (max-width: 640px){
.screen-head{ flex-direction: column; align-items: stretch; }
.screen-head .btn{ width: 100%; }
.sheet-actions{ flex-direction: column; }
form .sheet-actions{ flex-direction: column-reverse; }
.sheet-actions .btn{ width: 100%; }}
.card-surface{ border-radius: var(--radius-surface); }
.card-surface .card{ border-radius: var(--radius-cards); }
.stat-figure-lg{ font-size: var(--text-figure-lg); line-height: var(--leading-figure-lg); }
.po-ring-label .tnum{
  font-size: var(--text-heading);
  font-weight: var(--font-weight-medium);
  font-variant-numeric: tabular-nums;
}
.picker-select{ min-width: 220px; max-width: 100%; }
.picker-select{
  appearance: none;
  -webkit-appearance: none;
  padding-right: 40px;
  min-height: 44px;
  cursor: pointer;
  background: var(--color-chalk-cloud);
}
.picker-pill .picker-select{
  border-radius: var(--radius-pill);
  background: var(--color-frost-field);
  font-weight: var(--font-weight-medium);
}
.picker-chevron{
  position: absolute;
  right: 14px;
  pointer-events: none;
  color: var(--color-steel-fog);
  line-height: 0;
}
.report-head .picker-select:disabled{ opacity: 1; color: var(--color-obsidian-core); cursor: default; }@media (max-width: 640px){
.stat-figure-lg{ font-size: var(--text-display-sm); line-height: var(--leading-display-sm); }
.picker-select{ width: 100%; }
.screen-head{ align-items: stretch; }}
.checkbox{
  display: inline-flex;
  align-items: center;
  gap: var(--spacing-8);
  font-size: var(--text-body-sm);
  accent-color: var(--color-tidal-teal);
}
.checkbox input[type="checkbox"]{ margin: 0; }
.admin-contract-rate .tnum{ font-weight: var(--font-weight-medium); }
.micro{
  font-size: var(--text-micro);
  line-height: var(--leading-micro);
  letter-spacing: var(--tracking-micro);
  text-transform: uppercase;
  font-weight: var(--font-weight-medium);
  color: var(--color-steel-fog);
}
.segment:hover:not(.is-selected){ background: var(--color-frost-field); }
.segment.is-selected{ background: var(--color-obsidian-core); color: var(--color-chalk-cloud); }
.chart-tip-row .tnum{ color: var(--color-obsidian-core); }
.sheet-side-head{ display: flex; align-items: center; justify-content: space-between; gap: var(--spacing-16); }
.tab.is-selected{ color: var(--color-obsidian-core); border-bottom-color: var(--color-obsidian-core); }
:is(.portal-redesign,.admin-redesign) .sheet-side-head{ padding-bottom:16px; border-bottom:1px solid #d9e2e4; }
:is(.admin-redesign,.portal-redesign) .sheet .stat-figure-lg{ font-size:48px; line-height:1; letter-spacing:-.04em; }

/* Existing converted component rules, moved from the legacy stylesheet. */

.confirm-target{
  font-weight: var(--font-weight-medium);
  background: var(--color-frost-field);
  border: 1px solid var(--color-pewter-mist);
  border-radius: var(--radius-tags);
  padding: 1px 6px;
}
.topbar-status{
  display: flex;
  align-items: center;
  gap: var(--spacing-8);
  margin: var(--spacing-8) 0 0;
  color: var(--color-steel-fog);
  font-size: var(--text-body-sm);
}
.topbar-status .status-dot{ background: var(--color-pewter-mist); }
.topbar-status .status-dot.is-live{ background: var(--color-tidal-teal); }
.trend-h-0{ height: 0%; }
.trend-h-5{ height: 5%; }
.trend-h-10{ height: 10%; }
.trend-h-15{ height: 15%; }
.trend-h-20{ height: 20%; }
.trend-h-25{ height: 25%; }
.trend-h-30{ height: 30%; }
.trend-h-35{ height: 35%; }
.trend-h-40{ height: 40%; }
.trend-h-45{ height: 45%; }
.trend-h-50{ height: 50%; }
.trend-h-55{ height: 55%; }
.trend-h-60{ height: 60%; }
.trend-h-65{ height: 65%; }
.trend-h-70{ height: 70%; }
.trend-h-75{ height: 75%; }
.trend-h-80{ height: 80%; }
.trend-h-85{ height: 85%; }
.trend-h-90{ height: 90%; }
.trend-h-95{ height: 95%; }
.trend-h-100{ height: 100%; }

/* Decoded portrait media must obey the preview height cap rather than its intrinsic minimum. */
body.portal-redesign .offer-preview-dialog :is(video,img) { min-height:0; }

/* On phones, current-read details share the account popover instead of crowding actions. */
.portal-redesign .portal-header-live { white-space:nowrap; }
@media(max-width:720px){.portal-redesign .portal-header-live{display:none;}.portal-redesign .topbar-actions{gap:4px;}.portal-redesign .topbar .env-pill{display:none;}}

/* Existing converted component rules, moved from the legacy stylesheet. */

:is(.ui-warn,.warn){
  margin: 0;
  font-size: var(--text-body-sm);
  line-height: var(--leading-body-sm);
  color: var(--color-cinnabar);
}
:is(.ui-rule,.rule){ transition: color var(--duration-instant) var(--easing-instant); }
:is(.ui-rule,.rule).is-met{ color: var(--color-pewter-mist); }
:is(.ui-rule,.rule).is-unmet{ color: var(--color-cinnabar); }
:is(.ui-state-glyph,.status-square){
  width: var(--status-size);
  height: var(--status-size);
  flex: none;
  background: var(--color-steel-fog);
}
:is(.ui-state-glyph,.status-square).is-live{ background: var(--color-tidal-teal); }
:is(.ui-state-glyph,.status-square).is-open{ background: transparent; border: 1px solid var(--color-pewter-mist); }
:is(.ui-state-glyph,.status-square).is-wrong{ background: var(--color-cinnabar); }
:is(.ui-rail-top,.rail-top){ display: flex; align-items: center; justify-content: space-between; }
:is(.ui-rail-top,.rail-top) .logo{ align-self: center; }
:is(.ui-rail-name,.rail-name){ font-weight: var(--font-weight-medium); }
.product-search-wrap :is(.ui-search-input,.search-input){ width: min(360px, 100%); }
:is(.ui-product-identity,.product-detail-identity){ display: flex; align-items: center; gap: var(--spacing-16); }
:is(.ui-product-identity,.product-detail-identity) h2{ margin: 0; font-size: var(--text-heading-sm); }
:is(.ui-product-identity,.product-detail-identity) p{ margin: 4px 0 0; }
:is(.ui-product-detail-image,.product-detail-image){ width: 72px; height: 72px; object-fit: contain; border-radius: var(--radius-inputs); background: var(--color-frost-field); }
:is(.ui-pair-code,.pair-code){
  font-size: clamp(32px, 11vw, 44px);
  line-height: 1.2;
  font-weight: var(--font-weight-medium);
  letter-spacing: 0.16em;
  /* The trailing letter-space pushes the digits off center without this. */
  text-indent: 0.16em;
  color: var(--color-obsidian-core) !important;
  text-align: center;
  padding: var(--spacing-24) var(--spacing-8);
  background: var(--color-frost-field);
  border-radius: var(--radius-inputs);
  user-select: all;
  -webkit-user-select: all;
}@media (max-width: 768px){
:is(.ui-rail-top,.rail-top){ min-height: 44px; }}@media (max-width: 640px){
.product-catalog-table :is(.ui-product-state,.product-state){ grid-area: state; }
.product-catalog-table :is(.ui-product-state,.product-state)::before{
    display: block;
    margin-bottom: 4px;
    font-size: var(--text-micro);
    line-height: var(--leading-micro);
    letter-spacing: var(--tracking-micro);
    text-transform: uppercase;
    font-weight: var(--font-weight-medium);
    color: var(--color-steel-fog);
  }
.product-catalog-table :is(.ui-product-state,.product-state)::before{ content: "State"; }}
:is(.ui-iconbtn-sm,.iconbtn-sm){ width: 34px; height: 34px; }
:is(.ui-addr-list,.addr-list){ display: flex; flex-direction: column; }
.obj-set :is(.ui-state-glyph,.status-square){ margin-top: 6px; }
:is(.ui-field-pair,.field-pair){
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: var(--spacing-24) var(--spacing-32);
}
.form-measure :is(.ui-field-pair,.field-pair){ gap: var(--spacing-16) var(--spacing-24); }
:is(.ui-addr-current,.addr-current){ overflow-wrap: anywhere; }@media (max-width: 640px){
:is(.ui-field-pair,.field-pair){ grid-template-columns: 1fr; }
.obj-head :is(.ui-state-glyph,.status-square){ grid-area: dot; align-self: start; margin-top: 6px; }}
:is(.ui-terminal-manual,.terminal-manual){ margin-top: var(--spacing-8); }
:is(.ui-support-record-start,.support-record-start){ margin-top: var(--spacing-16); }
:is(.ui-support-actions,.support-record-actions){ display: flex; gap: var(--spacing-8); flex-wrap: wrap; }@media (max-width: 640px){
.product-search-wrap :is(.ui-search-input,.search-input){ width: 100%; }
:is(.ui-support-actions,.support-record-actions) .btn{ width: 100%; }}
.rail-dark :is(.ui-rail-name,.rail-name){ color: var(--color-chalk-cloud); }
:is(.ui-vp-field-pair,.vp-field-pair){ display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--spacing-24); }@media (max-width: 640px){
:is(.ui-vp-field-pair,.vp-field-pair){ grid-template-columns: minmax(0, 1fr); }}
:is(.ui-vp-field-pair,.vp-field-pair) .hint{ margin: 0; }
:is(.ui-trm-sheet,.trm-sheet) .field{ gap: var(--spacing-8); }
:is(.ui-sheet-side-actions,.sheet-side-actions){ margin-top: auto; display: flex; justify-content: flex-end; padding-top: var(--spacing-16); }
:is(.ui-sheet-side-actions,.sheet-side-actions):empty{ display: none; }
.admin-console-note :is(.ui-state-glyph,.status-square){ margin-top: 7px; }
.env-pill:is(.ui-is-nonprod,.is-nonprod) span{ background: var(--color-tidal-teal); }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-identity,.detail-hero){ display:flex; align-items:center; gap:16px; margin:20px 0; min-width:0; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-identity,.detail-hero) > div{ flex:1; min-width:0; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-identity,.detail-hero) h2{ margin:0; font-size:24px; font-weight:500; line-height:1.2; letter-spacing:-.02em; overflow-wrap:anywhere; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-identity,.detail-hero) p{ margin:6px 0 0; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-icon,.detail-icon){ width:48px; height:48px; border-radius:8px; display:grid; place-items:center; background:#f2f6f7; flex:none; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics){ display:grid; grid-template-columns:repeat(auto-fit,minmax(120px,1fr)); gap:24px; margin:24px 0; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics) > div{ display:grid; align-content:start; gap:6px; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics) span, :is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics) small{ color:#5b6d72; font-size:13px; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics) strong{ font-size:30px; font-weight:400; line-height:1.1; letter-spacing:-.03em; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-actions,.detail-links){ display:flex; flex-wrap:wrap; gap:8px; margin:12px 0 24px; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-block,.detail-block){ padding:20px 0; border-top:1px solid #d9e2e4; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-block,.detail-block) h3{ margin:0 0 10px; font-size:18px; font-weight:500; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-disclosure,.detail-settings){ margin:12px 0; border-top:1px solid #d9e2e4; border-bottom:1px solid #d9e2e4; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-disclosure,.detail-settings) > summary{ min-height:52px; padding:14px 0; display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:16px; font-weight:500; cursor:pointer; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-disclosure,.detail-settings) > summary::-webkit-details-marker{ display:none; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-disclosure-body,.detail-settings-body){ padding:8px 0 24px; display:grid; gap:16px; overflow-wrap:anywhere; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-disclosure,.detail-settings) summary:focus-visible{ outline:2px solid #007f69; outline-offset:3px; }
:is(.portal-redesign,.admin-redesign) :is(.ui-record-disclosure-body,.detail-settings-body) > p{ margin:0; }@media(max-width:520px){
:is(.portal-redesign,.admin-redesign) :is(.ui-record-identity,.detail-hero){ flex-wrap:wrap; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics){ grid-template-columns:repeat(2,minmax(0,1fr)); gap:20px; }
:is(.portal-redesign,.admin-redesign) :is(.ui-detail-metrics,.detail-metrics) strong{ font-size:26px; }}
:is(.portal-redesign,.admin-redesign) .sheet :is(.ui-record-identity,.detail-hero), :is(.portal-redesign,.admin-redesign) .sheet :is(.ui-detail-metrics,.detail-metrics), :is(.portal-redesign,.admin-redesign) .sheet :is(.ui-record-actions,.detail-links){ margin:0; }
:is(.portal-redesign,.admin-redesign) .sheet :is(.ui-detail-block,.detail-block){ padding:16px 0 0; }
:is(.portal-redesign,.admin-redesign) .sheet :is(.ui-record-identity,.detail-hero){ padding:8px 0; }

body.portal-redesign .ui-home .mc-asof a { color:inherit; text-decoration:underline; text-underline-offset:3px; }

/* A one-line tab strip scrolls horizontally without a negative-margin vertical gutter. */
:is(body.portal-redesign,body.admin-redesign) .tabs { overflow-y:hidden; }
:is(body.portal-redesign,body.admin-redesign) .tabs .tab { margin-bottom:0; }
:is(body.portal-redesign,body.admin-redesign) .tabs .tab:focus-visible { outline-offset:-2px; }
body.admin-redesign .platform-context-inline { overflow-y:hidden; }
body.admin-redesign .platform-context-inline .context-item::after { bottom:0; }
.operator-lead-row { display:flex; gap:24px; align-items:start; padding:20px; border-bottom:1px solid var(--line); }
.operator-lead-row:last-child { border-bottom:0; }
.operator-lead-row .grow { min-width:0; overflow-wrap:anywhere; }
.operator-lead-row .h3,.operator-lead-row p { margin:0 0 8px; }
.operator-lead-row time { font-size:13px; color:var(--text-secondary); }
.operator-lead-row .form-actions { flex:none; flex-wrap:wrap; }
@media(max-width:720px) { .operator-lead-row { flex-direction:column; padding:16px; gap:16px; } .operator-lead-row .form-actions { width:100%; } }

.operator-inspection-links { display:flex; align-items:center; flex-wrap:wrap; gap:12px; margin:24px 0; }

.treasury-setup-summary { display:grid; gap:12px; margin:0 0 24px; padding:24px; background:var(--surface-secondary); border:1px solid var(--line); border-radius:8px; }
.treasury-setup-summary p { margin:0; }
.treasury-setup-summary .h3 { margin:8px 0; }
.treasury-public-account { overflow-wrap:anywhere; }
/* Operational controls keep their supplied hierarchy and a full touch target. */
:is(body.portal-redesign,body.admin-redesign) .btn-sm { min-height:44px; }
:is(body.portal-redesign,body.admin-redesign) .iconbtn-sm { width:44px; height:44px; min-width:44px; min-height:44px; }
:is(body.portal-redesign,body.admin-redesign) button.btn-text { min-height:44px; }
.money-scope-summary { display:flex; flex-wrap:wrap; align-items:center; gap:16px; margin:0 0 24px; padding:20px; border:1px solid var(--line); border-radius:8px; background:var(--surface-secondary); }
.money-scope-summary > div { flex:1; min-width:240px; }
.money-scope-summary .h3 { margin:0 0 8px; }
.money-scope-summary .hint { margin:0; }

.saved-setup-checklist { margin:24px 0; }
.saved-setup-checklist dl { margin:16px 0; }
.saved-setup-checklist dl > div { display:grid; grid-template-columns:minmax(140px,1fr) minmax(0,2fr); gap:16px; padding:12px 0; border-bottom:1px solid var(--line); }
.saved-setup-checklist dd { display:grid; gap:6px; margin:0; }
@media(max-width:600px) { .saved-setup-checklist dl > div { grid-template-columns:minmax(0,1fr); gap:6px; } }

.placement-results { padding:0; margin:0; border:1px solid var(--line); border-radius:6px; }
.placement-option { display:flex; align-items:center; gap:12px; min-height:44px; padding:8px 12px; border-bottom:1px solid var(--line); overflow-wrap:anywhere; }
.placement-option:last-child { border-bottom:0; }
.placement-option input { flex:none; width:18px; height:18px; }
.placement-pagination { display:flex; align-items:center; flex-wrap:wrap; justify-content:space-between; gap:12px; }
/* Keep identity, review and actions reachable while a large placement list scrolls. */
.placement-results { max-height:min(40dvh,360px); overflow-y:auto; }
#assign-sheet h2 { overflow-wrap:anywhere; }
@media(max-width:600px) { .placement-results { max-height:30dvh; } }

.treasury-funding-observation { margin:24px 0; border:1px solid var(--line); border-radius:8px; padding:20px; }
.treasury-funding-observation summary { cursor:pointer; }
#treasury-funding-observation { display:grid; gap:12px; margin-top:16px; }
#treasury-funding-observation .input { width:100%; min-width:0; font-family:var(--font-brand); }
#treasury-funding-observation .btn { justify-self:start; }

.runtime-flag-group { margin-top:24px; }
.runtime-flag-group .h3 { margin:0 0 12px; }
.runtime-flag-group details { margin-top:8px; }
.runtime-flag-group code { overflow-wrap:anywhere; }

.report-schedules { margin-top:32px; }
.report-schedules > details { margin-top:24px; padding:20px; border:1px solid var(--line); border-radius:8px; }
#report-schedule-form { display:grid; gap:16px; margin-top:20px; }
.report-schedule-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px; }
.report-schedule-row { padding:16px 0; border-bottom:1px solid var(--line); }
.report-schedule-row .h3 { margin:0 0 8px; }
.report-schedule-row code { overflow-wrap:anywhere; }
@media(max-width:600px) { .report-schedule-fields { grid-template-columns:minmax(0,1fr); } }
/* Shared Admin heading spacing separates subtitles from filters, tabs and scope cards. */
body.admin-redesign .platform-workspace > main > .page-head { margin-bottom:var(--spacing-28); }
body.admin-redesign .tabset > [role=tabpanel] { padding-top:var(--spacing-24); }
body.admin-redesign .platform-bar-search { min-height:44px; }

/* Method evidence stays separate from the three core recorded-sales figures. */
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-method-breakdown { margin-top:var(--spacing-16); }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-breakdown { display:grid; gap:var(--spacing-12); padding:var(--spacing-16); max-width:480px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales #sales-detail-summary { padding-top:var(--spacing-24); }

body.admin-redesign .creative-edit-preview { width:100%; height:160px; min-height:0; max-height:160px; object-fit:contain; background:var(--surface-subtle,#f2f6f7); border-radius:8px; }
body.admin-redesign .cregrid .ad-img { object-fit:contain; }
body.admin-redesign .cre-body { display:flex; flex-direction:column; gap:8px; flex:1; }
body.admin-redesign .cre-actions { margin-top:auto; }
body.admin-redesign .creative-file-details summary { min-height:44px; display:flex; align-items:center; }

body.admin-redesign .creative-original-preview { display:block; width:100%; max-height:65dvh; object-fit:contain; }
body.admin-redesign #creative-preview .sheet-body { gap:var(--spacing-16); }
body.admin-redesign .platform-workspace > main .toolbar { margin-bottom:var(--spacing-24); }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale-meta { display:flex; align-items:center; gap:var(--spacing-8); }
body.admin-redesign .cregrid .cre { display:flex; flex-direction:column; }

body.admin-redesign .ui-session-controls + .hint { margin-top:var(--spacing-24); }
body.admin-redesign [role=tablist] { overflow-y:hidden; }

body.admin-redesign .creative-file-details summary { justify-content:space-between; gap:var(--spacing-8); cursor:pointer; }
body.admin-redesign .creative-file-details[open] > summary > svg:last-child, body.admin-redesign .ui-balance-help[open] > summary > svg:last-child { transform:rotate(180deg); }
body.admin-redesign .ui-balance-help > summary { min-height:44px; }

body.admin-redesign .creative-assignment-preview { width:100%; height:100px; min-height:0; max-height:100px; object-fit:contain; background:var(--surface-secondary); border-radius:8px; }
body.admin-redesign #edit-form > .sheet-head { position:sticky; top:0; z-index:2; background:var(--canvas); }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale-meta > span { min-width:0; white-space:normal; overflow-wrap:anywhere; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale-meta { white-space:normal; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-record-item { padding:16px 0; border-bottom:1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale-amt { gap:6px; }

body.admin-redesign #assign-review-slot { grid-column:1/-1; }
body.admin-redesign #assign-review-slot p { margin:0; }

:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-evidence-section { margin-top:var(--spacing-24); padding-top:var(--spacing-16); border-top:1px solid var(--line); }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-evidence-section article { margin-top:var(--spacing-16); }

:is(body.portal-redesign,body.admin-redesign) .ui-sales .sale-item-image { width:100%; height:100%; display:grid; place-items:center; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-original-image { width:40px; height:40px; object-fit:contain; border-radius:6px; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-original-image[hidden], :is(body.portal-redesign,body.admin-redesign) .ui-sales .source-slot-placeholder[hidden] { display:none; }
:is(body.portal-redesign,body.admin-redesign) .ui-sales .sales-item-heading { display:flex; align-items:center; gap:12px; margin-bottom:12px; }

/*
 * Terminuity product foundation — November 2, 2026 redesign (Bryan: "designed properly as world class SaaS").
 * Loaded last for the Portal, the Console and the Dashboard, so these roles win over the October exports.
 * Direction: a softly tinted page with white working surfaces, so every section reads as its own piece
 * (Bryan on Square: everything white, hard to tell section by section); rectangular controls, never rows of
 * pills; Caribbean Mint only for the one main action; black gradient cards kept for money moments, where the
 * main action is Mint; amounts in tabular figures with 15% looser tracking than before (Bryan, November 2).
 */
:is(body.portal-redesign,body.admin-redesign){
  --page: #f4f5f1;
  --surface: #ffffff;
  --line: #e3e6df;
  --line-strong: #d3d7ce;
  --hover-surface: #f8f9f6;
  --text-secondary: #5d635e;
  --radius-control: 8px;
  --radius-panel: 12px;
  --text-h1: 28px;
  --text-h3: 20px;
  --shadow-card: 0 1px 2px rgba(10, 13, 17, 0.04);
  --shadow-pop: 0 12px 32px rgba(10, 13, 17, 0.12), 0 2px 6px rgba(10, 13, 17, 0.06);
  /* Amount tracking: the October values (-0.05em hero, -0.035em figures, -0.02em inline) loosened by 15%. */
  --track-amount-hero: -0.0425em;
  --track-amount: -0.03em;
  --track-amount-inline: -0.017em;
  --duration: 140ms;
  background: var(--page);
}

/* Page and working surfaces */
body.portal-redesign .main, body.admin-redesign .content { background: transparent; }
:is(body.portal-redesign,body.admin-redesign) .h1 { font-size: var(--text-h1); line-height: 1.15; letter-spacing: -0.02em; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .h2 { font-size: 18px; line-height: 1.3; letter-spacing: -0.01em; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .lede { font-size: 15px; }
:is(body.portal-redesign,body.admin-redesign) :is(.card, .panel-line, .stat, .chart-card, .table-wrap, .lcard) {
  background: var(--surface); border-color: var(--line); border-radius: var(--radius-panel); box-shadow: var(--shadow-card);
}
:is(body.portal-redesign,body.admin-redesign) .card .card { box-shadow: none; }
:is(body.portal-redesign,body.admin-redesign) .panel, :is(body.portal-redesign,body.admin-redesign) .empty { background: var(--hover-surface); border-radius: var(--radius-panel); }
:is(body.portal-redesign,body.admin-redesign) .table tbody tr:hover td { background: var(--hover-surface); }
:is(body.portal-redesign,body.admin-redesign) .table th { background: var(--surface); }

/* Controls: rectangles, one Mint action, quiet secondary */
:is(body.portal-redesign,body.admin-redesign) .btn { border-radius: var(--radius-control); letter-spacing: -0.005em; }
:is(body.portal-redesign,body.admin-redesign) .btn:active:not(:disabled) { transform: translateY(1px); }
:is(body.portal-redesign,body.admin-redesign) .btn-secondary { background: var(--surface); color: var(--ink); box-shadow: inset 0 0 0 1px var(--line-strong); }
:is(body.portal-redesign,body.admin-redesign) .btn-secondary:hover, :is(body.portal-redesign,body.admin-redesign) .btn-secondary.is-hover { background: var(--hover-surface); }
:is(body.portal-redesign,body.admin-redesign) .btn-icon { background: var(--surface); box-shadow: inset 0 0 0 1px var(--line); }
:is(body.portal-redesign,body.admin-redesign) .btn-icon:hover { background: var(--hover-surface); }
:is(body.portal-redesign,body.admin-redesign) :is(.input, .select, .textarea) { border-radius: var(--radius-control); border-color: var(--line-strong); }
:is(body.portal-redesign,body.admin-redesign) :is(.input, .select, .textarea):hover:not(:disabled) { border-color: var(--color-steel-gray); }
:is(body.portal-redesign,body.admin-redesign) .segmented { border-radius: var(--radius-control); background: var(--page); box-shadow: inset 0 0 0 1px var(--line); }
:is(body.portal-redesign,body.admin-redesign) :is(.chip, .pill, .tag, .schip) { border-radius: 6px; }

/* Black money cards: the main action is Mint, the rest stay quiet */
:is(body.portal-redesign,body.admin-redesign) :is(.bal-hero, .money-card, .on-dark) :is(.btn-primary, .btn-forward) { background: var(--primary); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) :is(.bal-hero, .money-card) .btn-dark-primary { background: var(--primary); color: var(--ink); }

/* Amounts */
:is(body.portal-redesign,body.admin-redesign) :is(.num, .tnum, .bh-figure, .hero-figure, .mc-figure, .cc-figure, .fig-value, .sale-amt, .act-amt, .sd-amt) { font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) :is(.bh-figure, .hero-figure, .mc-figure) { letter-spacing: var(--track-amount-hero); }
:is(body.portal-redesign,body.admin-redesign) :is(.fig-value, .cc-figure) { letter-spacing: var(--track-amount); }
:is(body.portal-redesign,body.admin-redesign) :is(.sale-amt, .act-amt, .sd-amt) { letter-spacing: var(--track-amount-inline); }

/* Popovers and sheets lift off the page */
:is(body.portal-redesign,body.admin-redesign) :is(.pop, .palette-box) { border-radius: var(--radius-panel); box-shadow: var(--shadow-pop); }

/* Shell: white rail and bar over the tinted page */
body.portal-redesign :is(.rail, .topbar) { background: var(--surface); border-color: var(--line); }
body.admin-redesign .topbar { background: color-mix(in srgb, var(--page) 88%, transparent); backdrop-filter: saturate(1.4) blur(8px); }

/* Portal menu: a short top level, the section you are in opens under its parent */
body.portal-redesign .rail-nav { display: flex; flex-direction: column; gap: 20px; }
body.portal-redesign .rail-group-end { margin-top: auto; padding-top: 12px; border-top: 1px solid var(--line); }
body.portal-redesign .rail-link { height: 40px; font-size: 15px; border-radius: var(--radius-control); }
body.portal-redesign .rail-link:hover { background: var(--hover-surface); }
body.portal-redesign .rail-link[aria-current='page'] { background: var(--page); font-weight: 500; }
body.portal-redesign .rail-children { display: grid; gap: 1px; margin: 2px 0 6px; }
body.portal-redesign .rail-link.rail-sub { height: 34px; padding-left: 44px; font-size: 14px; color: var(--text-secondary); }
body.portal-redesign .rail-link.rail-sub[aria-current='page'] { color: var(--ink); background: transparent; }
body.portal-redesign .rail-link.rail-sub[aria-current='page']::before { left: 30px; top: 9px; bottom: 9px; width: 2px; border-radius: 2px; }
body.portal-redesign .rail-group-label { padding: 0 12px 4px; font-size: 12px; letter-spacing: 0.04em; text-transform: uppercase; font-weight: 500; }

/* Balance (engine/balance.ts) */
body.portal-redesign .bal2 { display: grid; gap: 24px; margin-top: 24px; }
body.portal-redesign .bal2-hero { display: grid; gap: 28px; padding: 32px; }
body.portal-redesign .bal2-figs { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 32px; align-items: end; }
body.portal-redesign .bal2-side { display: flex; gap: 40px; }
body.portal-redesign .bal2-side > div { min-width: 120px; }
body.portal-redesign .bal2-fig { margin: 6px 0 4px; font-size: 28px; line-height: 1.1; letter-spacing: var(--track-amount); color: #fff; }
body.portal-redesign .bal2-na { font-size: 32px; }
body.portal-redesign .bal2-actions { display: flex; gap: 10px; flex-wrap: wrap; }
body.portal-redesign .bal2-cols { display: grid; grid-template-columns: minmax(0, 1fr) 340px; gap: 24px; align-items: start; }
body.portal-redesign .bal2-aside { display: grid; gap: 16px; }
body.portal-redesign .bal2-day { margin: 8px 0 0; font-size: 13px; font-weight: 500; color: var(--text-secondary); }
body.portal-redesign .bal2-list { list-style: none; margin: 0; padding: 0; display: grid; }
body.portal-redesign .bal2-row { display: grid; grid-template-columns: 36px minmax(0, 1fr) auto; gap: 14px; align-items: center; padding: 12px 0; border-bottom: 1px solid var(--line); }
body.portal-redesign .bal2-row:last-child { border-bottom: 0; }
body.portal-redesign .bal2-ic { width: 36px; height: 36px; border-radius: 50%; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent-ink); }
body.portal-redesign .bal2-ic.bal2-out { background: var(--page); color: var(--ink); }
body.portal-redesign .bal2-main { display: grid; gap: 2px; min-width: 0; }
body.portal-redesign .bal2-main .strong, body.portal-redesign .bal2-main .small { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
body.portal-redesign .bal2-amt { display: grid; justify-items: end; gap: 4px; }
body.portal-redesign .bal2-state { font-size: 12px; font-weight: 500; padding: 2px 8px; border-radius: 6px; white-space: nowrap; }
body.portal-redesign .bal2-ok { background: var(--accent-soft); color: var(--accent-ink); }
body.portal-redesign .bal2-wait { background: var(--caution-surface); color: var(--caution-ink); }
body.portal-redesign .bal2-err { background: var(--error-surface); color: var(--error-ink); }
body.portal-redesign .bal2-acct { display: grid; grid-template-columns: 20px minmax(0, 1fr) auto; gap: 12px; align-items: center; padding: 12px 0; border-top: 1px solid var(--line); }
body.portal-redesign .bal2-acct > span { display: grid; gap: 2px; min-width: 0; }
body.portal-redesign .bal2-form { display: grid; gap: 16px; }
body.portal-redesign .bal2-form h2 { display: flex; align-items: center; gap: 10px; font-size: 20px; font-weight: 500; }
body.portal-redesign .bal2-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
body.portal-redesign .bal2-money { position: relative; }
body.portal-redesign .bal2-money span { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); color: var(--text-secondary); }
body.portal-redesign .bal2-money .input { padding-left: 26px; }
body.portal-redesign .bal2-choice { display: flex; gap: 12px; align-items: center; padding: 12px 14px; border: 1px solid var(--line-strong); border-radius: var(--radius-control); }
body.portal-redesign .bal2-choice > span { display: grid; gap: 2px; }
body.portal-redesign .bal2-choice.is-off { opacity: .6; }
body.portal-redesign .bal2-speeds { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
@media (max-width: 900px) {
  body.portal-redesign .bal2-cols { grid-template-columns: minmax(0, 1fr); }
  body.portal-redesign .bal2-figs { grid-template-columns: minmax(0, 1fr); }
  body.portal-redesign .bal2-hero { padding: 24px 20px; }
  body.portal-redesign .bal2-side { gap: 24px; }
  body.portal-redesign .bal2-pair, body.portal-redesign .bal2-speeds { grid-template-columns: 1fr; }
}

/* Sign-in panel and onboarding (engine/onboarding.ts) */
body.portal-redesign .auth-art .auth-pitch { display: grid; gap: 20px; position: relative; z-index: 1; }
body.portal-redesign .auth-art .auth-title { font-size: 48px; line-height: 1.04; letter-spacing: -0.04em; max-width: 12ch; }
body.portal-redesign .auth-points { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; color: var(--on-dark-secondary); font-size: 16px; }
body.portal-redesign .auth-points li { display: flex; gap: 10px; align-items: baseline; }
body.portal-redesign .auth-points li::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: var(--color-caribbean-mint); flex: none; transform: translateY(-2px); }
body.portal-redesign .auth-foot { position: relative; z-index: 1; color: var(--on-dark-secondary); font-size: 13px; }
body.portal-redesign .ob { display: grid; gap: 14px; width: min(100%, 520px); justify-items: stretch; text-align: left; }
body.portal-redesign .ob > * { width: 100%; }
body.portal-redesign .ob-progress { display: grid; grid-template-columns: repeat(3, 1fr); gap: 6px; }
body.portal-redesign .ob-progress span { height: 4px; border-radius: 4px; background: var(--line); transition: background var(--duration) var(--ease); }
body.portal-redesign .ob-progress span.is-on { background: var(--ink); }
body.portal-redesign .ob-count { font-size: 13px; color: var(--text-secondary); margin: 6px 0 0; }
body.portal-redesign .ob section { display: grid; gap: 18px; }
body.portal-redesign .ob-title { font-size: 32px; line-height: 1.1; letter-spacing: -0.025em; font-weight: 500; margin: 0; }
body.portal-redesign .ob-lead { font-size: 16px; line-height: 1.5; color: var(--text-secondary); margin: 0; }
body.portal-redesign .ob-form { display: grid; gap: 18px; }
body.portal-redesign .ob-types { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 8px; }
body.portal-redesign .ob-types legend { margin-bottom: 8px; }
body.portal-redesign .ob-type { display: flex; gap: 10px; align-items: flex-start; padding: 12px 14px; border: 1px solid var(--line-strong); border-radius: var(--radius-control); cursor: pointer; background: var(--surface); transition: border-color var(--duration) var(--ease), box-shadow var(--duration) var(--ease); }
body.portal-redesign .ob-type:hover { border-color: var(--color-steel-gray); }
body.portal-redesign .ob-type:has(input:checked) { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
body.portal-redesign .ob-type input { margin-top: 3px; accent-color: var(--ink); }
body.portal-redesign .ob-type > span { display: grid; gap: 2px; }
body.portal-redesign .ob-pair { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
body.portal-redesign .ob-steps, body.portal-redesign .ob-how, body.portal-redesign .ob-check { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
body.portal-redesign .ob-steps li, body.portal-redesign .ob-check li { display: flex; gap: 12px; align-items: center; padding: 12px 14px; border: 1px solid var(--line); border-radius: var(--radius-control); background: var(--surface); color: var(--text-secondary); }
body.portal-redesign .ob-tick { width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--line-strong); flex: none; }
body.portal-redesign .ob-steps li.is-busy .ob-tick { border-color: var(--ink) transparent var(--ink) var(--ink); animation: ob-spin .9s linear infinite; }
body.portal-redesign .ob-steps li.is-done, body.portal-redesign .ob-check li.is-done { color: var(--ink); }
body.portal-redesign .ob-steps li.is-done .ob-tick, body.portal-redesign .ob-check li.is-done::before { background: var(--color-caribbean-mint); border-color: var(--color-caribbean-mint); }
body.portal-redesign .ob-check li::before { content: ''; width: 18px; height: 18px; border-radius: 50%; border: 2px solid var(--line-strong); flex: none; }
body.portal-redesign .ob-steps li.is-err .ob-tick { border-color: var(--error-ink); }
@keyframes ob-spin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { body.portal-redesign .ob-steps li.is-busy .ob-tick { animation: none; } }
body.portal-redesign .ob-how li { display: flex; gap: 12px; align-items: flex-start; }
body.portal-redesign .ob-num { width: 24px; height: 24px; border-radius: 50%; background: var(--page); display: grid; place-items: center; font-size: 13px; font-weight: 500; flex: none; }
body.portal-redesign .ob-how .mono { word-break: break-all; }
body.portal-redesign .ob-alt { display: grid; gap: 8px; justify-items: start; padding: 16px; border-radius: var(--radius-panel); background: var(--page); }
body.portal-redesign .ob-alt p { margin: 0; }
body.portal-redesign .ob-sale { font-size: 13px; color: var(--text-secondary); }
body.portal-redesign .ob-sale.is-done { color: var(--accent-ink); font-weight: 500; }
@media (max-width: 600px) { body.portal-redesign .ob-types, body.portal-redesign .ob-pair { grid-template-columns: 1fr; } body.portal-redesign .ob-title { font-size: 26px; } }
body.portal-redesign .ob-title:focus { outline: none; }

/* Moving between pages: a quick cross-fade instead of a white flash (browsers that support it) */
@view-transition { navigation: auto; }
::view-transition-old(root), ::view-transition-new(root) { animation-duration: 120ms; }
@media (prefers-reduced-motion: reduce) { ::view-transition-old(root), ::view-transition-new(root) { animation: none; } }

/* Auth pages (November 2 rework): a tight form, inline links, no reserved blank space */
body.portal-redesign .auth-card { padding: 48px max(24px, 6vw); }
body.portal-redesign .auth-card > .card { max-width: 380px; display: grid; gap: 0; }
body.portal-redesign .auth-card h1 { font-size: 32px; line-height: 1.1; letter-spacing: -0.025em; font-weight: 500; margin: 0; }
body.portal-redesign .auth-card .auth-sub { margin: 8px 0 28px; font-size: 15px; }
body.portal-redesign .auth-card .auth-form { display: grid; gap: 16px; }
body.portal-redesign .auth-card .field { display: grid; gap: 6px; margin: 0; }
body.portal-redesign .auth-card .error { min-height: 0; margin: 0; }
body.portal-redesign .auth-card .error:empty { display: none; }
body.portal-redesign .auth-card .hint { margin: 0; font-size: 13px; }
body.portal-redesign .auth-card .auth-form .btn-forward { margin-top: 4px; min-height: 46px; }
body.portal-redesign .label-row { display: flex; justify-content: space-between; align-items: baseline; gap: 12px; }
body.portal-redesign .label-link, body.portal-redesign .auth-switch a { color: var(--ink); font-weight: 500; text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }
body.portal-redesign .label-link { font-size: 13px; }
body.portal-redesign .label-link:hover, body.portal-redesign .auth-switch a:hover { text-decoration-color: var(--ink); }
body.portal-redesign .auth-switch { margin: 20px 0 0; font-size: 14px; color: var(--text-secondary); text-align: center; }
body.portal-redesign .auth-card .auth-alt { margin-top: 12px; gap: 16px; justify-content: center; }
body.portal-redesign .auth-card .auth-alt .btn { background: none; box-shadow: none; min-height: 32px; padding: 0; font-size: 14px; text-decoration: underline; text-decoration-color: var(--line-strong); text-underline-offset: 3px; }

/* The sign-in panel scene (pages.ts authArt), built to stageshow's rules */
:is(body.portal-redesign,body.admin-redesign) .auth-art { padding: 40px 0 0 48px; gap: 28px; justify-content: flex-start; }
:is(body.portal-redesign,body.admin-redesign) .auth-art .auth-pitch { padding-right: 48px; }
:is(body.portal-redesign,body.admin-redesign) .auth-art .auth-title { font-size: 44px; line-height: 1.04; letter-spacing: -0.035em; max-width: 13ch; }
:is(body.portal-redesign,body.admin-redesign) .auth-lede { margin: 0; max-width: 36ch; font-size: 16px; line-height: 1.5; color: var(--on-dark-secondary); }
:is(body.portal-redesign,body.admin-redesign) .auth-foot { margin-top: auto; padding-right: 48px; color: var(--on-dark-secondary); font-size: 13px; }
:is(body.portal-redesign,body.admin-redesign) .ts-stage { position: relative; z-index: 1; flex: 1; min-height: 340px; overflow: hidden; }
:is(body.portal-redesign,body.admin-redesign) .ts-window { position: absolute; left: 64px; top: 8px; width: 760px; height: 720px; border-radius: 12px 0 0 0; background: #f4f5f1; box-shadow: 0 30px 60px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.06); overflow: hidden; font-family: var(--font); color: var(--ink); }
:is(body.portal-redesign,body.admin-redesign) .ts-chrome { height: 38px; display: flex; align-items: center; padding-left: 132px; background: #fff; border-bottom: 1px solid #e3e6df; }
:is(body.portal-redesign,body.admin-redesign) .ts-url { font-size: 11px; color: #5d635e; background: #f4f5f1; padding: 3px 14px; border-radius: 6px; }
:is(body.portal-redesign,body.admin-redesign) .ts-body { display: grid; grid-template-columns: 120px 340px 1fr; height: 100%; }
:is(body.portal-redesign,body.admin-redesign) .ts-aside { display: grid; align-content: start; gap: 14px; padding: 18px 0 18px 0; }
:is(body.portal-redesign,body.admin-redesign) .ts-card { display: grid; gap: 12px; padding: 16px; background: #fff; border: 1px solid #e3e6df; border-radius: 12px; }
:is(body.portal-redesign,body.admin-redesign) .ts-side { display: grid; align-content: start; gap: 18px; padding: 20px 16px; background: #fff; border-right: 1px solid #e3e6df; }
:is(body.portal-redesign,body.admin-redesign) .ts-main { display: grid; align-content: start; gap: 14px; padding: 18px 20px; }
:is(body.portal-redesign,body.admin-redesign) .ts-bar { display: block; height: 6px; border-radius: 3px; background: #d9ddd5; }
:is(body.portal-redesign,body.admin-redesign) .ts-w26{width:26px}:is(body.portal-redesign,body.admin-redesign) .ts-w30{width:30px}:is(body.portal-redesign,body.admin-redesign) .ts-w34{width:34px}:is(body.portal-redesign,body.admin-redesign) .ts-w36{width:36px}:is(body.portal-redesign,body.admin-redesign) .ts-w38{width:38px}:is(body.portal-redesign,body.admin-redesign) .ts-w44{width:44px}:is(body.portal-redesign,body.admin-redesign) .ts-w48{width:48px}:is(body.portal-redesign,body.admin-redesign) .ts-w50{width:50px}:is(body.portal-redesign,body.admin-redesign) .ts-w56{width:56px}:is(body.portal-redesign,body.admin-redesign) .ts-w62{width:62px}:is(body.portal-redesign,body.admin-redesign) .ts-w70{width:70px}
:is(body.portal-redesign,body.admin-redesign) .ts-balance { display: grid; gap: 4px; padding: 18px 20px; border-radius: 12px; color: #fff; background: radial-gradient(120% 140% at 85% 20%, rgba(0,209,167,.28), transparent 55%), #0a0d11; }
:is(body.portal-redesign,body.admin-redesign) .ts-label { font-size: 11px; color: rgba(255,255,255,.7); }
:is(body.portal-redesign,body.admin-redesign) .ts-amount { font-size: 34px; line-height: 1.05; letter-spacing: var(--track-amount-hero); font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .ts-head { display: flex; justify-content: space-between; align-items: center; margin-top: 4px; }
:is(body.portal-redesign,body.admin-redesign) .ts-strong { font-size: 13px; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .ts-list { list-style: none; margin: 0; padding: 0 14px; background: #fff; border: 1px solid #e3e6df; border-radius: 12px; }
:is(body.portal-redesign,body.admin-redesign) .ts-row { display: grid; grid-template-columns: 22px minmax(0,1fr) auto; gap: 10px; align-items: center; height: 44px; border-bottom: 1px solid #eef0ea; }
:is(body.portal-redesign,body.admin-redesign) .ts-row:last-child { border-bottom: 0; }
:is(body.portal-redesign,body.admin-redesign) .ts-dot { width: 22px; height: 22px; border-radius: 50%; background: #eef0ea; }
:is(body.portal-redesign,body.admin-redesign) .ts-dot-on { background: #e7f9f4; box-shadow: inset 0 0 0 6px #e7f9f4, inset 0 0 0 11px #00d1a7; }
:is(body.portal-redesign,body.admin-redesign) .ts-name { font-size: 13px; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .ts-val { font-size: 13px; font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .ts-plus { color: #007f69; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .ts-new { animation: ts-in 420ms cubic-bezier(.2,.7,.2,1) both; }
@keyframes ts-in { from { opacity: 0; transform: translateY(-10px); } }
:is(body.portal-redesign,body.admin-redesign) .ts-sale { position: absolute; left: 0; top: 196px; width: 168px; display: grid; gap: 2px; padding: 14px; border-radius: 12px; background: #fff; color: var(--ink); box-shadow: 0 18px 40px rgba(0,0,0,.35); opacity: 0; transform: translateX(-12px); transition: opacity 300ms ease, transform 380ms cubic-bezier(.2,.7,.2,1); }
:is(body.portal-redesign,body.admin-redesign) .ts-sale.is-in { opacity: 1; transform: none; }
:is(body.portal-redesign,body.admin-redesign) .ts-sale-top { display: flex; justify-content: space-between; gap: 8px; align-items: center; margin-bottom: 6px; }
:is(body.portal-redesign,body.admin-redesign) .ts-machine { font-size: 10px; color: #5d635e; }
:is(body.portal-redesign,body.admin-redesign) .ts-status { font-size: 10px; font-weight: 500; padding: 2px 6px; border-radius: 5px; background: #fff7e7; color: #76551c; transition: background 200ms ease, color 200ms ease; }
:is(body.portal-redesign,body.admin-redesign) .ts-sale.is-paid .ts-status { background: #e7f9f4; color: #007f69; }
:is(body.portal-redesign,body.admin-redesign) .ts-sale-item { font-size: 13px; font-weight: 500; }
:is(body.portal-redesign,body.admin-redesign) .ts-sale-amt { font-size: 24px; letter-spacing: var(--track-amount); font-variant-numeric: tabular-nums; }
:is(body.portal-redesign,body.admin-redesign) .ts-sale-how { font-size: 11px; color: #5d635e; }
@media (prefers-reduced-motion: reduce) { :is(body.portal-redesign,body.admin-redesign) :is(.ts-sale, .ts-new) { transition: none; animation: none; } }

body.admin-redesign .auth-art { position: relative; display: flex; flex-direction: column; overflow: hidden; background: var(--ink); color: #fff; }
body.admin-redesign .auth-art .logo { width: auto; height: 28px; filter: brightness(0) invert(1); align-self: flex-start; position: relative; z-index: 1; }
body.admin-redesign .auth-art .auth-title { margin: 0; font-weight: 400; color: #fff; }
body.admin-redesign .auth-art::after { content: ''; position: absolute; inset: 0; background: radial-gradient(ellipse at 80% 70%, rgba(0,209,167,.18), transparent 65%); pointer-events: none; }
body.admin-redesign .auth-form .error:empty { display: none; }
body.admin-redesign .auth-form .error { min-height: 0; margin: 0; }
body.admin-redesign .auth-form { display: grid; gap: 16px; max-width: 380px; width: 100%; }
body.admin-redesign .auth-form .h1 { font-size: 32px; font-weight: 500; letter-spacing: -0.025em; margin: 0 0 8px; }
body.admin-redesign .auth-art .auth-pitch { display: grid; gap: 14px; position: relative; z-index: 1; }
body.admin-redesign .auth-lead { margin: -4px 0 12px; color: var(--text-secondary); font-size: 15px; }
