/* AIEFA — FLR experience tokens (A744, survey §33).
   Palette reused directly from the FLR prototype's brand sheet (flr-secure
   app/globals.css) — tokens are the contract, behavior is recreated, never
   copied. Scoped under .flr-shell so the generic AIEfa surfaces stay untouched
   and    reachable side-by-side (survey §33 exit criterion).
   A2004: the tokens are declared on the frame (.flr-app) as well as the shell, so the frame's own chrome draws from
   them too, and a light set below follows the device's prefers-color-scheme. Every colour on an FLR page is a token;
   the contrast of each pair in both schemes is recorded in tracker/aiefa/A2004.md. */
.flr-app, .flr-shell {
  --flr-scheme:    dark;
  --flr-bg:        #14110C;
  --flr-surf:      #1B160E;
  --flr-surf-2:    #1F1A12;
  --flr-raise:     #221A0C;
  --flr-line:      #3A3327;
  /* A1513 (accessibility-visual F22): an input's edge. --flr-line was 1.51:1 on the page; this is 3.72:1 on the
     page, 3.41:1 on an input's own fill and 3.55:1 on a lane (WCAG 1.4.11 asks 3:1). */
  --flr-input-line: #7A6D55;
  --flr-line-soft: #2C2619;
  --flr-gold:      #D4B373;
  --flr-gold-2:    #C9A668;
  --flr-gold-hi:   #CBA75C;
  --flr-cream:     #ECE7DB;
  --flr-muted:     #ABA08A;
  --flr-faint:     #948871;
  --flr-green:     #9DC183;
  --flr-red:       #D98A6A;
  /* A2004: the frame's help text, its gold rule and a definition's dotted underline, formerly literals. */
  --flr-help-text: #CFC4AA;
  --flr-help-rule: rgba(212, 179, 115, .55);
  --flr-tip-line:  rgba(171, 160, 138, .7);
  --flr-serif: 'Cormorant Garamond', Georgia, serif;
  --flr-sans: 'Inter', system-ui, sans-serif;
}

/* A2004 (operator, 2026-10-06): light when the device says light. The gold is darkened wherever it is text or a
   button's fill, so every text pair holds 4.5:1 and every control edge and focus ring 3:1 on all four surfaces. */
@media (prefers-color-scheme: light) {
  .flr-app, .flr-shell {
    --flr-scheme:    light;
    --flr-bg:        #F6F1E6;
    --flr-surf:      #FBF8F1;
    --flr-surf-2:    #FFFFFF;
    --flr-raise:     #EFE6D2;
    --flr-line:      #D6CAB2;
    --flr-input-line: #8A7958;
    --flr-line-soft: #E4DAC6;
    --flr-gold:      #7A5A1E;
    --flr-gold-2:    #6B4F1A;
    --flr-gold-hi:   #8A6524;
    --flr-cream:     #231C12;
    --flr-muted:     #564C3B;
    --flr-faint:     #685D49;
    --flr-green:     #37612A;
    --flr-red:       #9C4128;
    --flr-help-text: #463C2C;
    --flr-help-rule: rgba(122, 90, 30, .55);
    --flr-tip-line:  rgba(86, 76, 59, .7);
  }
}

.flr-shell {
  background: var(--flr-bg);
  color: var(--flr-cream);
  font-family: var(--flr-sans);
  min-height: 100vh;
  color-scheme: var(--flr-scheme);   /* A1513 (accessibility-visual F26): native controls drawn in the page's scheme on every FLR page, the board's too */
  margin: -1.5rem;            /* escape the generic page padding */
  padding: 1.5rem;
}

.flr-shell .flr-brand {
  font-family: var(--flr-serif);
  color: var(--flr-gold);
  letter-spacing: .18em;
  font-weight: 500;
  font-size: 1.5rem;
  text-transform: uppercase;
  margin: 0;   /* A1513: the board's wordmark is its h1 now; it keeps the span's look */
}

.flr-shell .flr-strip {
  display: flex; align-items: baseline; justify-content: space-between;
  border-bottom: 1px solid var(--flr-line);
  padding-bottom: .75rem; margin-bottom: 1.25rem;
}
.flr-shell .flr-account { color: var(--flr-muted); font-size: .85rem; }

.flr-shell .flr-board {
  display: grid;
  /* A1510 (operator-flow F38): 190px, so the five stage lanes and Funded fit one row inside .flr-app-inner
     (6 × 190 + 5 × 16 = 1,220 ≤ 1,240). At 230px the sixth lane always wrapped. */
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 1rem; align-items: start;
}
.flr-shell .flr-col {
  background: var(--flr-surf); border: 1px solid var(--flr-line-soft);
  border-radius: .5rem; padding: .75rem; min-height: 6rem;
  /* A1510 (operator-flow F39): a long lane scrolls within itself, so one 1,500-card lane no longer dwarfs the rest. */
  max-height: 75vh; overflow-y: auto;
}
.flr-shell .flr-col .flr-lane-h {
  font-family: var(--flr-serif); color: var(--flr-gold-2);
  font-size: 1.05rem; letter-spacing: .08em; text-transform: uppercase;
  display: flex; justify-content: space-between;
  /* A1510 (operator-board F16): the lane's name and count stay in view while its cards scroll. The heading reaches
     up over the lane's .75rem padding (margin -.75rem, padding .75rem) and sticks there (top -.75rem), so it sits
     where it always did and covers the strip the cards would otherwise scroll through. */
  position: sticky; top: -.75rem; z-index: 1; background: var(--flr-surf);
  margin: -.75rem 0 .6rem 0; padding: .75rem 0 .25rem;
}
.flr-shell .flr-lane-more { color: var(--flr-muted); font-size: .85rem; margin: .6rem 0 0; }
.flr-shell .flr-lane-more-button {
  background: none; border: 0; padding: 0; color: var(--flr-gold-2);
  text-decoration: underline; cursor: pointer; font: inherit;
}
.flr-shell .flr-col .flr-lane-h .flr-count { color: var(--flr-faint); font-family: var(--flr-sans); }

/* A948: .flr-card is an <a>, so it needs the anchor styling reset and — the reason the
   element changed at all — a focus ring, since it is now reachable by Tab. */
.flr-shell .flr-card {
  display: block; text-decoration: none; color: inherit;
  background: var(--flr-surf-2); border: 1px solid var(--flr-line-soft);
  border-radius: .4rem; padding: .6rem .7rem; margin-bottom: .6rem;
}
.flr-shell .flr-card:focus-visible {
  outline: 2px solid var(--flr-gold-hi); outline-offset: 2px;
}
.flr-shell .flr-card.attention { border-color: var(--flr-gold-hi); }
/* A1512 (accessibility-visual F19, F20): the attention flag and the blocker's urgency are words, not only a hue. */
.flr-shell .flr-flag { color: var(--flr-gold-hi); font-size: .72rem; letter-spacing: .06em; text-transform: uppercase; }
.flr-shell .flr-urgency { font-weight: 600; }
/* A1512 (operator-board F18): compact cards, three lines a vehicle. */
.flr-shell .flr-card.compact { padding: .4rem .55rem; }
.flr-shell .flr-card.compact .flr-desc { margin-left: .4rem; color: var(--flr-muted); font-family: var(--flr-sans); }
.flr-shell .flr-card .flr-vin { color: var(--flr-gold); font-weight: 600; letter-spacing: .06em; }
.flr-shell .flr-card .flr-vin-flag { color: var(--flr-gold-2); font-weight: 500; font-size: .75rem; letter-spacing: 0; margin-left: .4rem; }   /* A1368 */
.flr-shell .flr-stage-unrecorded { color: var(--flr-muted); font-size: .75rem; font-style: italic; }   /* A1367, A1475: on a card and under the Transit lane header */
.flr-shell .flr-card .flr-desc { color: var(--flr-cream); font-size: .9rem; }
.flr-shell .flr-card .flr-consignor { color: var(--flr-faint); font-size: .78rem; }
.flr-shell .flr-card .flr-attention { color: var(--flr-gold-2); font-size: .8rem; margin-top: .35rem; }
/* A1448 (A1416 review F7): a blocker is red wherever it stands in the shell, not only inside a card; the
   ledger's error line, the page's sign-in and unreadable notices sat outside one and read as plain prose.
   --flr-red on --flr-bg is 6.99:1 (6.38:1 on --flr-raise), inside AA everywhere. */
.flr-shell .flr-blocker { color: var(--flr-red); }
.flr-shell .flr-card .flr-blocker { color: var(--flr-red); font-size: .8rem; margin-top: .35rem; }
.flr-shell .flr-card .flr-action { color: var(--flr-gold-2); font-size: .8rem; margin-top: .2rem; }
.flr-shell .flr-card .flr-location { color: var(--flr-muted); font-size: .82rem; margin-top: .15rem; }   /* A1965 */
.flr-shell .flr-partner-h {
  font-family: var(--flr-serif); color: var(--flr-cream);
  font-size: 1.2rem; margin: 1.4rem 0 .6rem 0;
}
/* A948: --flr-dim is defined nowhere, so this always fell through to the #6E6552 fallback:
   3.12:1 on --flr-bg, below the 4.5:1 minimum, at .85rem. .flr-empty is every loading and
   empty state on the operator surfaces ("Reading the book…", "No inventory to show."), so
   it is the first text on screen on every page load. --flr-faint is the palette's dim tone
   and holds 4.93:1 even against --flr-raise, the lightest surface it lands on. */
.flr-shell .flr-empty { color: var(--flr-faint); font-size: .85rem; }
.flr-shell .flr-note { color: var(--flr-muted); font-size: .85rem; margin-top: 1rem; }
.flr-shell .flr-ledger-outcome { color: var(--flr-green); font-weight: 600; font-size: .9rem; margin: .4rem 0; }   /* A1416 */
.flr-shell .flr-ledger-outcome:empty { margin: 0; }   /* present for aria-live, silent and flat when there is nothing to say */

.flr-shell .flr-lenses {
  display: flex; gap: 1rem; align-items: center; flex-wrap: wrap;
  margin-bottom: 1rem;
}
.flr-shell .flr-search {
  background: var(--flr-surf-2); border: 1px solid var(--flr-input-line);
  color: var(--flr-cream); border-radius: .35rem; padding: .4rem .6rem;
  min-width: 240px; font-family: var(--flr-sans);
}
.flr-shell .flr-lens-toggle { color: var(--flr-muted); font-size: .85rem; display: flex; gap: .35rem; align-items: center; min-height: 24px; }   /* A1513 (accessibility-visual F27) */
.flr-shell .flr-card { cursor: pointer; }
/* A1005 — superseded by the `.flr-shell.flr-detail` block below. These four selectors never
   matched (see the note there); they are removed rather than left in place, because dead CSS
   that looks live is what let the vehicle page ship unstyled without anyone noticing. */
.flr-shell .flr-total { color: var(--flr-gold); font-weight: 600; }
.flr-shell .flr-back { color: var(--flr-gold-2); text-decoration: none; font-size: .85rem; }

/* A971 — the FLR shell's own navigation, replacing the generic AIEfa nav FlrLayout drops. */
.flr-shell .flr-nav {
  display: flex; flex-wrap: wrap; gap: 1rem; margin-bottom: 1rem;
}
.flr-shell .flr-nav a:hover { color: var(--flr-gold); text-decoration: underline; }
/* A1516 (operator-flow F2, F45): the shared nav's links, the current page marked, and a class for links in data
   (a fleet row's vehicle) apart from the back links. */
.flr-shell .flr-nav-link { color: var(--flr-gold-2); text-decoration: none; font-size: .85rem; }
.flr-shell .flr-nav-link[aria-current="page"] { color: var(--flr-gold); text-decoration: underline; font-weight: 600; }
.flr-shell .flr-data-link { color: var(--flr-gold-2); text-decoration: underline; text-underline-offset: .15em; }
/* A1516 (operator-flow F30): a primary button sized for a table row. */
.flr-shell .flr-button.flr-compact { padding: .2rem .55rem; margin: 0 .3rem .2rem 0; font-size: .8rem; }
/* A1516 (operator-flow F33): the sign-in link is the gold button, not AIExpertly's teal, and is a link. */
.flr-shell a.flr-button { display: inline-block; text-decoration: none; }

/* A1005 — these four rules were dead for the whole life of the page.
   `FlrVehicle.razor:14` is `<div class="flr-shell flr-detail">` — both classes on ONE
   element — while the selectors below used a descendant combinator, which requires
   `.flr-detail` to be *inside* `.flr-shell`. It never is, so the vehicle page's summary list
   and both of its tables rendered as raw unstyled HTML: no cell padding, no row separators,
   no muted term colour, no two-column grid. That is the bulk of "very unfriendly-looking"
   (Josh, 2026-08-27T20:11) and it is a compound-selector fix, not a redesign.
   Written as `.flr-shell.flr-detail` so it keeps working if the classes are ever split onto
   nested elements — a compound selector on one element is the accurate description of the
   markup as it actually stands. */
.flr-shell.flr-detail dl {
  display: grid; grid-template-columns: max-content 1fr; gap: .45rem 1rem;
  align-items: baseline; margin: .6rem 0 1.4rem 0;
}
.flr-shell.flr-detail dt { color: var(--flr-muted); font-size: .85rem; }
.flr-shell.flr-detail dd { margin: 0; }
.flr-shell.flr-detail table {
  width: 100%; color: var(--flr-cream); font-size: .9rem; border-collapse: collapse;
  margin-bottom: 1.2rem;
}
.flr-shell.flr-detail td, .flr-shell.flr-detail th {
  border-bottom: 1px solid var(--flr-line-soft); padding: .4rem .55rem; text-align: left;
}
.flr-shell.flr-detail th {
  color: var(--flr-gold-2); font-weight: 600; font-size: .78rem;
  text-transform: uppercase; letter-spacing: .06em;
}
.flr-shell.flr-detail tbody tr:last-child td { border-bottom: none; }
/* A2341: the one charges list reads at the size of the balance panel's own headings. */
.flr-shell.flr-detail .flr-ledger-charges-heading { font-size: 16px; margin: 20px 0 10px; }
/* A2337: a wide table scrolls in its own box on a phone, never the page. */
.flr-shell.flr-detail .flr-table-scroll { max-width: 100%; overflow-x: auto; }

.flr-shell.flr-detail .flr-intake-changes { list-style: none; margin: 0; padding: 0; }
.flr-shell.flr-detail .flr-intake-changes > li {
  border-left: 2px solid var(--flr-line); padding-left: 1rem;
}
.flr-shell.flr-detail .flr-intake-changes dl {
  grid-template-columns: max-content minmax(0, 1fr);
}
.flr-shell.flr-detail .flr-intake-changes dd {
  white-space: pre-wrap; overflow-wrap: anywhere;
}
@media (max-width: 600px) {
  .flr-shell.flr-detail .flr-intake-changes dl {
    grid-template-columns: minmax(0, 1fr); gap: .25rem;
  }
  .flr-shell.flr-detail .flr-intake-changes dd { margin-bottom: .6rem; }
}

/* A1005 — the detail page's controls were unstyled browser defaults: white boxes and grey
   OS buttons punched through a dark theme. Only `.flr-paste` (textareas) and `.flr-search`
   ever got treatment, and none of this page's inputs or buttons carry either class, so every
   control on the busiest FLR screen rendered as raw chrome. Found by screenshotting the
   running portal rather than by reading the sheet — the markup gave no hint, because the
   omission is a rule that was never written. `color-scheme` is what makes the native
   date-picker glyph and the number spinners legible; without it they stay dark-on-dark.
   A2004: it follows the palette (--flr-scheme), so the light scheme draws them light. */
.flr-shell.flr-detail { color-scheme: var(--flr-scheme); }
.flr-shell.flr-detail .flr-action-row input {
  background: var(--flr-surf-2); border: 1px solid var(--flr-input-line);
  color: var(--flr-cream); border-radius: .3rem; padding: .35rem .5rem;
  font-family: var(--flr-sans); font-size: .88rem;
}
.flr-shell.flr-detail .flr-action-row input:focus-visible {
  outline: 2px solid var(--flr-gold-hi); outline-offset: 1px; border-color: var(--flr-gold-2);
}
.flr-shell.flr-detail .flr-action-row input::placeholder { color: var(--flr-faint); }
.flr-shell.flr-detail .flr-action-row input:disabled { opacity: .55; }
.flr-shell.flr-detail .flr-action-row button {
  background: var(--flr-gold); color: var(--flr-bg); border: 0; border-radius: .3rem;
  padding: .45rem .95rem; font-weight: 600; font-family: var(--flr-sans);
  font-size: .85rem; cursor: pointer;
}
.flr-shell.flr-detail .flr-action-row button:hover:not(:disabled) { background: var(--flr-gold-2); }
.flr-shell.flr-detail .flr-action-row button:focus-visible {
  outline: 2px solid var(--flr-gold-hi); outline-offset: 2px;
}
.flr-shell.flr-detail .flr-action-row button:disabled { opacity: .5; cursor: default; }

/* A1005 — rank the page without touching its markup. "What you can do now" is the reason a
   consignor opened it; Costs and Timeline are reference. Everything rendered at identical
   weight, so the reader had to read all four sections to find the one that wanted something
   from them. Two levers, both available on the existing DOM: the vehicle's name becomes
   clearly the page title, section headings become quieter labels with a rule under them, and
   the interactive rows get a surface so the zone that *does* something is visibly distinct
   from the two tables that only report. No new class is introduced, because a rule that
   depends on markup nobody writes is precisely the dead CSS removed above. A1513: the title is
   the page's h1 now and the sections h2, so these two rules key on the classes the markup does
   write (flr-page-title, flr-section-title) rather than on the levels. */
.flr-shell.flr-detail .flr-page-title {
  font-size: 1.45rem; color: var(--flr-cream); margin: .2rem 0 .2rem 0;
}
.flr-shell.flr-detail .flr-section-title {
  font-family: var(--flr-sans); font-size: .78rem; font-weight: 600;
  text-transform: uppercase; letter-spacing: .09em; color: var(--flr-muted);
  border-bottom: 1px solid var(--flr-line-soft); padding-bottom: .35rem;
  margin: 1.8rem 0 .7rem 0;
}
.flr-shell.flr-detail .flr-action-row {
  background: var(--flr-surf); border-color: var(--flr-line-soft);
  border-radius: .45rem; padding: .7rem .9rem; margin: .5rem 0;
}
.flr-shell.flr-detail .flr-action-row.flr-highlight { border-color: var(--flr-gold-hi); }

/* A1005 — the partner book was thirteen `flex: 0 1 10rem` boxes wrapping in one row, with no
   grouping and a ragged edge that changed shape with the viewport. A grid over the existing
   flat label/input sequence gives two stable field columns and costs no markup change, so the
   lanes holding `FlrVehicle.razor` are unaffected. The note spans the remaining columns
   because it is prose, and the button spans the row because it commits all of them. */
.flr-shell.flr-detail .flr-action-row.flr-partner-record {
  display: grid;
  grid-template-columns: max-content minmax(6rem, 1fr) max-content minmax(6rem, 1fr);
  gap: .5rem .85rem; align-items: center;
  background: var(--flr-surf); border: 1px solid var(--flr-line-soft);
  border-radius: .45rem; padding: 1rem;
}
.flr-shell.flr-detail .flr-action-row.flr-partner-record label {
  min-width: 0; justify-self: end; text-align: right;
  color: var(--flr-muted); font-size: .8rem;
}
.flr-shell.flr-detail .flr-action-row.flr-partner-record input { width: 100%; min-width: 0; }
.flr-shell.flr-detail .flr-action-row.flr-partner-record input#pb-note { grid-column: 2 / -1; }
.flr-shell.flr-detail .flr-action-row.flr-partner-record button {
  grid-column: 1 / -1; justify-self: start;
}

/* One field pair per row once two no longer fit; the labels stop being right-aligned at that
   width because a right-aligned label above a full-width box reads as detached from it. */
@media (max-width: 40rem) {
  .flr-shell.flr-detail .flr-action-row.flr-partner-record {
    grid-template-columns: max-content minmax(0, 1fr);
  }
  .flr-shell.flr-detail .flr-action-row.flr-partner-record input#pb-note { grid-column: 2; }
}

/* The FLR experience frame (FlrLayout): a Front Line Ready user's own shell,
   without the generic AIEfa topbar whose links are all tenant-scoped and so
   unreachable for a workspace account. Padding matches .workspace so the
   .flr-shell negative margin escapes it exactly as it did when nested. */
.flr-app {
  position: relative;
  min-height: 100vh;
  background: var(--flr-bg);
  color: var(--flr-cream);
  color-scheme: var(--flr-scheme);
  padding: 34px 28px 56px;
}
.flr-app-inner { width: min(1240px, 100%); margin: 0 auto; }
/* A2004: a plain link on an FLR page takes the palette's link gold, not Bootstrap's blue, in both schemes. */
.flr-app a:not([class]) { color: var(--flr-gold-2); }
.flr-app .flr-signout {
  position: absolute; top: 14px; right: 28px;
  color: var(--flr-muted); font-family: var(--flr-sans);
  font-size: .82rem; text-decoration: none;
}
.flr-app .flr-signout:hover { color: var(--flr-gold); text-decoration: underline; }

.flr-shell .flr-paste {
  width: 100%; max-width: 42rem; background: var(--flr-surf-2);
  border: 1px solid var(--flr-input-line); color: var(--flr-cream);
  border-radius: .35rem; padding: .5rem .6rem; font-family: var(--flr-sans);
}
.flr-shell .flr-button {
  background: var(--flr-gold); color: var(--flr-bg); border: 0; border-radius: .3rem;
  padding: .4rem .9rem; font-weight: 600; cursor: pointer; margin-top: .5rem;
}
/* A2337: a disabled button must not look like one that works (bring-in's "Check the 0 chosen vehicles"). */
.flr-shell .flr-button:disabled { opacity: .5; cursor: not-allowed; }
.flr-shell .flr-share {
  background: var(--flr-surf); border: 1px solid var(--flr-line-soft);
  border-radius: .4rem; padding: .8rem; color: var(--flr-cream);
  max-width: 42rem; white-space: pre-wrap; overflow-wrap: anywhere; font-size: .85rem;   /* A1516 (operator-flow F47): wraps a long URL, never splits a word mid-letter */
}
.flr-shell .flr-links-table { width: 100%; max-width: 60rem; border-collapse: collapse;
  color: var(--flr-cream); font-size: .88rem; margin-top: .5rem; }
.flr-shell .flr-links-table td, .flr-shell .flr-links-table th {
  border-bottom: 1px solid var(--flr-line-soft); padding: .35rem .5rem; text-align: left; }
.flr-shell .flr-directory-controls {
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
  color: var(--flr-muted); font-size: .85rem; margin: .8rem 0;
}

/* A808(d) — "everything you did today" prefill and sidebar. A prefilled field must
   never look like a saved one (DAILY-ACTIONS.md rule 2), and a highlighted row must be
   easy to spot without a screen reader relying on color alone (the border, not just
   the tint, carries the meaning). */
.flr-shell .flr-action-row {
  display: flex; flex-wrap: wrap; align-items: center; gap: .5rem;
  padding: .5rem .6rem; margin: .4rem 0; border: 1px solid transparent; border-radius: .35rem;
}
.flr-shell .flr-action-row.flr-highlight {
  border-color: var(--flr-gold-hi);
  background: color-mix(in srgb, var(--flr-gold-hi) 12%, transparent);
}
.flr-shell input.flr-prefilled {
  border: 1px dashed var(--flr-gold-2) !important;
  background: color-mix(in srgb, var(--flr-gold-2) 10%, var(--flr-surf-2)) !important;
}
.flr-shell .flr-prefill-banner {
  color: var(--flr-gold-2); border-left: 3px solid var(--flr-gold-2); padding-left: .6rem;
}

/* A835 — the partner-book section has 12 fields plus a note, far more than the
   registration/title/price rows above; give each label+input pair its own compact
   column instead of letting the whole flex row squeeze everything onto one baseline. */
.flr-shell .flr-action-row.flr-partner-record label {
  flex: 0 0 auto; min-width: 6.5rem;
}
.flr-shell .flr-action-row.flr-partner-record input {
  flex: 0 1 10rem;
}
.flr-shell .flr-action-row.flr-partner-record input#pb-note {
  flex-basis: 16rem;
}

.flr-shell .flr-daily-actions {
  background: var(--flr-surf); border: 1px solid var(--flr-line-soft);
  border-radius: .4rem; padding: .8rem; margin-bottom: 1rem;
}
.flr-shell .flr-daily-actions h3 { margin: 0 0 .5rem 0; }
.flr-shell .flr-daily-actions ul { list-style: none; margin: 0; padding: 0; }
.flr-shell .flr-daily-actions li {
  padding: .3rem 0; border-bottom: 1px solid var(--flr-line-soft); font-size: .85rem;
}
.flr-shell .flr-daily-actions li:last-child { border-bottom: none; }
.flr-shell .flr-daily-actions a { color: var(--flr-cream); text-decoration: none; }
.flr-shell .flr-daily-actions a:hover { color: var(--flr-gold-2); text-decoration: underline; }
.flr-shell .flr-daily-actions .flr-review { color: var(--flr-red); font-size: .75rem; margin-left: .4rem; }

/* A1022 — the operator's New Vehicle form.
   `color-scheme` (the palette's, A2004) and explicit control rules are not optional here: A1005 found the
   detail page rendering white boxes and grey OS buttons through the dark theme because
   only .flr-paste and .flr-search had ever been styled. This page is almost entirely
   controls, so it would have been the worst instance of exactly that. */
.flr-shell.flr-intake { color-scheme: var(--flr-scheme); }

.flr-shell .flr-grid {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: .75rem 1rem; max-width: 52rem; margin: .5rem 0 1rem 0;
}
.flr-shell .flr-field { display: flex; flex-direction: column; gap: .25rem; }
.flr-shell .flr-field label {
  color: var(--flr-muted); font-size: .74rem; letter-spacing: .07em;
  text-transform: uppercase;
}
.flr-shell .flr-field input, .flr-shell .flr-field select {
  background: var(--flr-surf-2); border: 1px solid var(--flr-input-line);
  color: var(--flr-cream); border-radius: .3rem; padding: .4rem .55rem;
  font-family: var(--flr-sans); font-size: .9rem; width: 100%;
}
.flr-shell .flr-field input:focus-visible, .flr-shell .flr-field select:focus-visible {
  outline: 2px solid var(--flr-gold-hi); outline-offset: 1px; border-color: var(--flr-gold-2);
}
.flr-shell .flr-field input::placeholder { color: var(--flr-faint); }
.flr-shell .flr-field input:disabled, .flr-shell .flr-field select:disabled { opacity: .55; }
.flr-shell .flr-field.flr-wide { grid-column: 1 / -1; }

/* A prefilled value must never look like a confirmed one — the same rule DAILY-ACTIONS.md
   rule 2 states for the daily-actions prefill, and the reason the parser "proposes". */
.flr-shell .flr-field input.flr-from-paste {
  border-color: var(--flr-gold-2); background: var(--flr-raise);
}
.flr-shell .flr-field .flr-field-note { color: var(--flr-gold); font-size: .74rem; }

.flr-shell .flr-notice {
  border-left: 3px solid var(--flr-gold); background: var(--flr-surf);
  padding: .5rem .7rem; margin: .35rem 0; color: var(--flr-cream); font-size: .85rem;
  max-width: 52rem;
}
.flr-shell .flr-success {
  border: 1px solid var(--flr-green); border-radius: .4rem; padding: 1rem;
  max-width: 52rem; margin: 1rem 0;
}
.flr-shell .flr-warn {
  border: 1px solid var(--flr-red); border-radius: .4rem; padding: .8rem;
  max-width: 52rem; margin: .75rem 0;
}
.flr-shell .flr-checkline {
  display: flex; align-items: center; gap: .45rem; color: var(--flr-cream);
  font-size: .88rem; margin: .5rem 0;
}
/* A2104 (A2004 review item 1): a transparent button's edge is its only boundary, so it takes the input line (3:1 in both
   schemes), not the decorative --flr-line (1.51:1 dark, 1.44:1 light). */
.flr-shell .flr-button.flr-secondary {
  background: transparent; color: var(--flr-gold);
  border: 1px solid var(--flr-input-line); margin-left: .5rem;
}

/* A1097 — a live region that carries the outcome of a write to a screen reader without
   changing the visual layout. Clipped rather than `display:none` or `visibility:hidden`,
   both of which remove the node from the accessibility tree and so silence the very
   announcement this exists to make. */
.flr-shell .flr-sr-only {
  position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}

/* A1513 (accessibility-visual F15, F26, F27, F22): the board's lanes are lists; one gold focus ring across the shell;
   the lens toggles are at least 24px targets; the lens selects draw their edge at the input contrast. The heading
   rules above key on classes (flr-page-title, flr-section-title, flr-lane-h, operator-flow F42), not on levels,
   because A1513 moved every FLR page's headings up one level for its h1. */
.flr-shell .flr-lane-cards { list-style: none; margin: 0; padding: 0; }
.flr-shell :focus-visible { outline: 2px solid var(--flr-gold-hi); outline-offset: 2px; }
.flr-shell .flr-lens-toggle input[type="checkbox"] { width: 1rem; height: 1rem; }
.flr-shell .flr-lenses select {
  background: var(--flr-surf-2); border: 1px solid var(--flr-input-line); color: var(--flr-cream);
  min-height: 24px; border-radius: .3rem;
}

/* A1965 (operator, 2026-10-01): a clean screen by default. Explanations carry class flr-help and show only while
   the frame's Help switch is on (FlrLayout adds flr-help-on). When they show, a gold rule marks them as help. */
.flr-app .flr-help { display: none !important; }
.flr-app.flr-help-on .flr-help { display: revert !important; color: var(--flr-help-text); }
.flr-app.flr-help-on p.flr-help, .flr-app.flr-help-on div.flr-help {
  border-left: 2px solid var(--flr-help-rule); padding-left: .6rem;
}
/* A2004: the switch's edge was #5A4E38, 2.31:1 on the page; a control's edge takes the input line (3:1 in both). */
.flr-app .flr-help-toggle {
  position: absolute; top: 10px; right: 104px;
  background: none; border: 1px solid var(--flr-input-line); border-radius: 999px;
  color: var(--flr-muted); font-family: var(--flr-sans); font-size: .78rem;
  padding: .12rem .7rem; cursor: pointer;
}
.flr-app .flr-help-toggle:hover { color: var(--flr-gold); border-color: var(--flr-gold-hi); }
.flr-app .flr-help-toggle[aria-pressed="true"] { color: var(--flr-bg); background: var(--flr-gold); border-color: var(--flr-gold); }
.flr-app .flr-help-toggle:focus-visible { outline: 2px solid var(--flr-gold-hi); outline-offset: 2px; }
/* A dotted underline marks a word whose definition is in its tooltip. */
.flr-shell abbr[title], .flr-shell .flr-tip { text-decoration: underline dotted var(--flr-tip-line); cursor: help; }

/* A1965: the board's less-used lenses fold under "More filters"; the fold starts open when one is in use (A2105: a fold
   closed by hand stays closed until the page is loaded again). */
.flr-shell .flr-more-lenses > summary { color: var(--flr-muted); font-size: .85rem; cursor: pointer; min-height: 24px; }
.flr-shell .flr-more-lenses[open] { flex-basis: 100%; }
.flr-shell .flr-more-lenses .flr-lenses { margin: .5rem 0 0; }

/* A1965: an action form folds to its one line until it is wanted. */
.flr-shell .flr-fold { margin: .35rem 0; }
.flr-shell .flr-fold > summary {
  color: var(--flr-gold-2); cursor: pointer; font-size: .92rem; min-height: 24px; padding: .15rem 0;
}
.flr-shell .flr-fold[open] > summary { margin-bottom: .35rem; }

/* A1965: a status link's phrase runs to fifty letters; the table shows one tidy line and the tooltip the rest. */
.flr-shell a.flr-link-phrase {
  display: inline-block; max-width: 18rem; overflow: hidden; text-overflow: ellipsis;
  white-space: nowrap; vertical-align: bottom;
}

/* A2028: the vehicle list, the portal's main view (Ryan's IMG_8370): tiles, chips, one row a vehicle, and a cell for
   each missing piece. Every colour is a token, so the light scheme (A2004) follows. */
.flr-shell .flr-list-tiles { display: grid; grid-template-columns: repeat(auto-fit, minmax(9rem, 1fr)); gap: .5rem; margin: .75rem 0; }
.flr-shell .flr-list-tile { display: flex; flex-direction: column; align-items: center; padding: .5rem; background: var(--flr-surf-2);
  border: 1px solid var(--flr-line); border-radius: 6px; color: var(--flr-muted); font-size: .8rem; text-transform: uppercase; letter-spacing: .04em; }
.flr-shell .flr-list-tile-n { font-size: 1.6rem; color: var(--flr-cream); font-weight: 600; letter-spacing: 0; }
.flr-shell .flr-list-tile-need .flr-list-tile-n { color: var(--flr-red); }
.flr-shell .flr-list-controls { display: flex; gap: .5rem; flex-wrap: wrap; align-items: center; }
.flr-shell .flr-list-controls .flr-search { flex: 1 1 18rem; }
.flr-shell .flr-list-chips { display: flex; gap: .4rem; margin: .6rem 0; flex-wrap: wrap; }
.flr-shell .flr-list-chip { background: transparent; color: var(--flr-cream); border: 1px solid var(--flr-input-line); border-radius: 999px;
  padding: .2rem .8rem; font: inherit; cursor: pointer; }
.flr-shell .flr-list-chip-on { background: var(--flr-gold); color: var(--flr-bg); border-color: var(--flr-gold); font-weight: 600; }
.flr-shell .flr-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--flr-line-soft); }
.flr-shell .flr-list-row { display: flex; align-items: center; gap: .75rem; padding: .45rem .25rem; border-bottom: 1px solid var(--flr-line-soft); flex-wrap: wrap; }
.flr-shell .flr-list-vehicle { flex: 1 1 18rem; display: grid; grid-template-columns: .9rem auto 1fr; column-gap: .45rem; color: var(--flr-cream); text-decoration: none; min-width: 0; }
.flr-shell .flr-list-vehicle:hover .flr-list-name, .flr-shell .flr-list-vehicle:focus-visible .flr-list-name { text-decoration: underline; }
.flr-shell .flr-list-dot { width: .5rem; height: .5rem; border-radius: 50%; align-self: center; }
.flr-shell .flr-list-dot-on { background: var(--flr-red); }
.flr-shell .flr-list-last6 { font-weight: 700; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; letter-spacing: .03em; }
.flr-shell .flr-list-name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.flr-shell .flr-list-meta { grid-column: 3; color: var(--flr-muted); font-size: .85rem; }
.flr-shell .flr-list-vin { grid-column: 2 / span 2; color: var(--flr-faint); font-size: .72rem; font-family: ui-monospace, SFMono-Regular, Menlo, monospace; }
.flr-shell .flr-list-cells { display: flex; flex-wrap: wrap; gap: .4rem; }
/* A2104 (A2004 review item 2): each cell is a link; its edge takes the input line, 3:1 in both schemes. */
.flr-shell .flr-list-cell { display: flex; flex-direction: column; align-items: center; min-width: 5.6rem; padding: .2rem .4rem; border-radius: 5px;
  border: 1px solid var(--flr-input-line); text-decoration: none; color: var(--flr-cream); font-size: .85rem; }
.flr-shell .flr-list-cell-h { font-size: .65rem; letter-spacing: .06em; color: var(--flr-muted); }
.flr-shell .flr-list-cell-total { min-width: 9.5rem; }   /* A2274: "USD -12,345.00 owed" and "Nothing billed" keep the columns aligned */
.flr-shell .flr-list-cell-need { border-color: var(--flr-red); color: var(--flr-red); font-weight: 600; }
.flr-shell .flr-list-cell-ok { color: var(--flr-green); }
.flr-shell .flr-list-cell-optional, .flr-shell .flr-list-cell-unknown { color: var(--flr-faint); }
.flr-shell .flr-list-cell:hover, .flr-shell .flr-list-cell:focus-visible { border-color: var(--flr-gold); }
.flr-shell .flr-visually-hidden { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }
