/* ═══════════════════════════════════════════════════════════════════════════
   CALLSHEET · CALM SKIN  (drop-in override — v2, terracotta + vermilion)
   ---------------------------------------------------------------------------
   Load this ONE file immediately AFTER app.css (it only overrides CSS custom
   properties + a handful of component rules — no markup, no JS, no build step):

       <link rel="stylesheet" href="styles/app.css">
       <link rel="stylesheet" href="styles/callsheet-calm.css">   <!-- must be last -->

   Fully reversible: remove the file/link to restore the previous skin.
   The §1 light palette stays guarded off [data-theme="midnight"]; every other
   rule is token-driven and applies to Dark too — midnight defines the same
   calm token dialect (terracotta brand, vermilion CTA, neutral chip collapse)
   in tokens.css, so Dark gets the calm treatment instead of the 2025 look.

   WHAT IT DOES (v2 — replaces the v1 "accent = interaction" skin)
   • Calmer, monochromatic palette — soft off-white cards on a warm-grey canvas
     (kills the white-on-tan glare); quieter borders.
   • TWO-COLOR ACCENT:
       – BRAND = terracotta  → identity marks, active/selected states, category
         labels, the rate/“money” figure, nav-active icon, links.
       – CTA   = vermilion   → primary buttons ONLY (Create, Apply). It runs
         hotter than the brand so the action "advances" — same warm family, so
         it reads coherent, not clashy.
   • GREEN = available (the one positive status color). RED = real errors only.
     Amber "to-confirm" retired to neutral.
   • Colour is spent only where it does a job (identity, selection, money,
     action). NO left-border accent bars, NO rainbow status bullets.
   • Controls de-pilled to a crisp 6px.

   DEPENDS ON the existing design-system class names (.cc-*) and tokens (--cc-*).
   ═══════════════════════════════════════════════════════════════════════════ */


/* ─── 1 · CALM PALETTE + TWO-COLOR ACCENT ──────────────────────────────────
   Neutrals collapse to a tight warm-grey range; cards become soft off-white so
   they separate from the canvas by a hairline + a hair of value, not a glare. */
:root:not([data-theme="midnight"]) {
  /* neutrals */
  --cc-canvas:    #F9F8F7;   /* midpoint between the old #F2F1EE and the #fff cards
                                (Tomas, 2nd push: stark black-on-white, dark sidebar
                                on near-white — the hairline + shadow carry card
                                separation now, not canvas contrast)              */
  --cc-surface:   #FFFFFF;   /* Tomas: white cards/buttons, black ink — the
                                off-white read as cream-on-white              */
  --cc-surface-2: #F2F1EE;   /* row hover / subtle fills                     */
  --cc-canvas-glow:   #FBFAF9;  /* tokens.css default (#F0EEE7) is now DARKER than
                                    --cc-canvas above and would paint smudges over
                                    the near-white canvas — pin it just above canvas */
  --cc-canvas-glow-2: #F9F8F6;  /* same trap as --cc-canvas-glow, other radial wash */
  --cc-line:      #E4E3DF;   /* neutral hairline — the warm #D7D4CC border
                                read CREAM and far too heavy                  */
  --cc-line-soft: #EEEDEA;   /* internal dividers ~vanish                    */
  --cc-field-line: #DFDEDA;  /* neutral grey, no warm cast — every STROKED
                                INPUT FIELD (.cc-input/.cc-select/.cc-textarea)
                                reads off this, not the card hairline above.
                                Tomas: "is there really no way to apply a css
                                file to ALL STROKED INPUT FIELDS…" — §8 below */
  --cc-chip:      #F0EFEC;   /* neutral tag fill                             */

  /* BRAND accent — terracotta (replaces the old orange #C9521F) */
  --cc-accent:         #C36A48;   /* solid brand mark                        */
  --cc-accent-ink:     #A15236;   /* readable brand text on light (labels,$) */
  --cc-accent-tint:    #F4ECE7;   /* warm selected-row / active fill         */
  --cc-accent-border:  #E6D5CC;   /* border for tinted/selected surfaces     */
  --cc-accent-onchrome:#D98A6A;   /* lighter terracotta for the dark nav     */

  /* CTA — vermilion (primary buttons only) */
  --cc-cta:       #DA3A2A;
  --cc-cta-hover: #BE2F22;
  --cc-cta-ink:   #FFFFFF;

  /* Raw Scene tokens — the newer dock/board/pill components consume these
     directly (tokens.css Scene × Chrome system). --acc/--acc2 (icon + focus
     accents) join the terracotta brand; --tx/--surf/--brd — the tinted-chip
     family that painted cream/accent fills across hints, count pills,
     connect buttons, scope tags and hold cells — collapse to NEUTRAL
     (Tomas: monochromatic, no cream scatter; tint is re-earned explicitly
     by the selection/money rules below). Deliberate consequence: the
     Settings scene picker no longer recolors light themes (it already
     half-stopped when v1 pinned the --cc-accent family) — flagged for a
     follow-up product call on retiring the picker. */
  --acc:  #C36A48;
  --acc2: #D98A6A;
  --tx:   var(--cc-soft);
  --surf: var(--cc-surface-2);
  --brd:  var(--cc-line);

  /* The "gradient CTA" token — every per-surface single primary (Create,
     send, sign-up gates, offer accept…) rides this in app.css at higher
     specificity than .cc-btn.primary. Flattened to the vermilion CTA so
     "click this" is one color everywhere. Identity/data uses of the old
     gradient are re-pinned to brand terracotta in §3b below. */
  --cc-grad-accent: linear-gradient(135deg, var(--cc-cta), var(--cc-cta));

  /* status */
  --cc-ok-bg:     #E6E9E3;   /* green (available) — the one positive status  */
  --cc-danger-bg: #EEE5E1;   /* red — real errors only                       */

  /* caution / "to confirm" drops amber → neutral chip (green ok / red danger stay) */
  --cc-warn-bg:   var(--cc-chip);
  --cc-warn-line: var(--cc-line);
  --cc-warn-ink:  var(--cc-soft);
}


/* ─── 2 · DE-PILL ──────────────────────────────────────────────────────────
   A fully-rounded lozenge is the #1 "AI-generated" tell → crisp 6px rects.
   (Applies to midnight too — shape, not color; shipped this way in v1.) */
:root { --cc-radius-pill: 6px; }


/* ─── 3 · CTA = VERMILION (primary buttons only) ───────────────────────────
   Colored at rest so the primary action is the one thing that "advances";
   darkens on interaction. Everything else stays brand/neutral. Midnight
   defines its own --cc-cta family (a step brighter so it holds on dark),
   so this applies to every look. */
.cc-btn.primary {
  background: var(--cc-cta); border-color: var(--cc-cta); color: var(--cc-cta-ink);
}
.cc-btn.primary:hover,
.cc-btn.primary:focus-visible,
.cc-btn.primary:active {
  background: var(--cc-cta-hover); border-color: var(--cc-cta-hover); filter: none;
}


/* ─── 3b · GRADIENT-TOKEN CLEANUP (identity + data ≠ CTA) ──────────────────
   Two non-button uses of the old accent gradient must NOT go vermilion:
   the wordmark logo block (identity → brand terracotta) and the P&L bar
   fill (a money data-bar — red would read as "error"). */
.cc-dock-mark  { background: var(--cc-accent); }
.cc-pnl-barfill { background: var(--cc-accent); }

/* Profile cover bands (home-rail identity card + full profile page) were
   accent GRADIENT blocks — the single loudest decorative accent spend in
   the app. Calmed to the dark chrome band (same move as the open-call
   detail cover): monochromatic, layered, and the green available dot +
   avatar read cleanly against it. */
.cc-rprofile-cover,
.cc-pcover,
.cc-prof .cc-pcover { background: var(--cc-chrome); }


/* ─── 4 · BRAND = TERRACOTTA (identity, hover, links) ──────────────────────
   Neutral controls warm to the brand on hover; links use brand ink. */
.cc-cat:hover        { border-color: var(--cc-accent-border); color: var(--cc-accent-ink); }
.cc-cat:hover i      { color: var(--cc-accent); }
.cc-sortopt:hover    { color: var(--cc-accent-ink); }
.cc-nav:hover        { color: var(--cc-accent-onchrome); }
.cc-row:hover,
.cc-convo:hover      { background: var(--cc-surface-2); }   /* no accent edge */
.cc-post-act:hover   { color: var(--cc-accent); }

/* persistent decorative accent → neutral at rest (chat "me" bubble, in-text
   tap targets); they still light up on hover. Carried over from v1 — same
   "color only where it does a job" discipline. */
.cc-bubble.me { background: var(--cc-surface-2); color: var(--cc-ink); }
.cc-bubble.me .bt { color: var(--cc-muted); }
.cc-home-greet-sub .hl { color: var(--cc-ink); }
.cc-home-greet-sub .hl:hover { color: var(--cc-accent-ink); }


/* ─── 5 · FEWER COLORS, EACH ONE EARNED ────────────────────────────────────*/
/* no rainbow bullets — every status / section dot is one quiet neutral */
.cc-needrow .d, .cc-flabel .d { background: var(--cc-muted) !important; }
/* notification indicator: a quiet light dot, not a stray accent pixel */
.cc-bell-dot { background: var(--cc-chrome-ink); }


/* ─── 6 · SELECTION = STROKE, NOT TINT FILL (Tomas 2026-07-15) ──────────────
   "cards stroked terracotta … when selected and the rest should just be
   white" — generalized from the board ruling to row/chip selection: a
   selected nav item / filter / conversation / job row stays white/neutral
   and gets a terracotta STROKE, never a tint fill. Where the element has no
   border at rest (.cc-convo), an inset ring stands in for the border so
   there's no layout shift.
   (.cc-menu-i.on is deliberately NOT touched: app.css gives it a solid chrome
   fill + light text — already monochrome; recoloring only its text broke it.) */
.cc-cat.on          { background: var(--cc-surface); border-color: var(--cc-accent); color: var(--cc-ink); }
.cc-cat.on i        { color: var(--cc-accent); }
.cc-sortopt.on      { color: var(--cc-ink); background: var(--cc-surface-2); }
.cc-convo.on        { background: var(--cc-surface); box-shadow: inset 0 0 0 1px var(--cc-accent); }
.cc-row.on          { background: var(--cc-surface); border-color: var(--cc-accent); }
.cc-nav.on          { color: var(--cc-chrome-ink); }
.cc-nav.on i        { color: var(--cc-accent-onchrome); }   /* brand icon, no stripe */
.cc-nav.on::before  { display: none; }                       /* kill any left bar    */
.cc-post-act.on     { color: var(--cc-accent-ink); }

/* Dock (the redesign shell): active nav = NEUTRAL chrome fill + terracotta
   icon — replaces the cream accent-tint pill (--surf) the scene system gave
   it, which read as a stray accent block on the dark rail. Works for both
   chrome shells (--chr-raise/--chr-tx flip with [data-chrome]). */
.cc-dock-nav.on,
.cc-dock-tnav.on { background: var(--chr-raise); color: var(--chr-tx); }
.cc-dock-nav.on .cc-dock-ico { color: var(--cc-accent-onchrome); }

/* Unread count badge: a quiet light pill, not an accent block (same one-job
   discipline as the bell dot in §5). */
.cc-dock-badge { background: var(--chr-tx); color: var(--chr-bg); }

/* ─── 7 · RE-EARNED TINT (the neutral --tx/--surf/--brd collapse in §1 was a
   blanket de-creaming; these three surfaces carry real MEANING and re-earn
   the tint under the skin's own rules — selection/money/attention) ───────── */
/* Availability week strip: "hold" is a data state — neutral grey made it
   indistinguishable from "open" (and its legend swatch identical). */
.cc-wday.hold,
.cc-week-legend .sw.hold { background: var(--cc-accent-tint); border-color: var(--cc-accent-border); }
.cc-wday.hold .d,
.cc-wday.hold .n { color: var(--cc-accent-ink); }
/* Home "Needs you" offer card: the one card demanding a response must not be
   the most recessed surface on the page. */
.cc-offer { background: var(--cc-accent-tint); border-color: var(--cc-accent-border); }
.cc-offer-kick,
.cc-offer-exp { color: var(--cc-accent-ink); }
/* Invoices: "Outstanding" is the number to chase — money is terracotta's
   sanctioned job; grey inverted its emphasis vs the sibling stats. */
.cc-invstat:first-child .v { color: var(--cc-accent-ink); }

/* ─── 8 · GLOBAL NEUTRAL INPUT STROKES (fields only — NOT cards) ────────────
   Tomas: "what is it that makes this feel cheap? is it the brown strokes? is
   there really no way to apply a css file to ALL STROKED INPUT FIELDS to
   change them with a quick one shot?" Yes: one rule, every .cc-input/
   .cc-select/.cc-textarea app-wide flips off the warm --cc-line hairline
   (that stays on cards — untouched) onto the neutral --cc-field-line (§1).
   Focus goes ink-forward instead of accent-orange — porting the wizard's
   existing --wiz-ink focus language (.cc-postmodal .cc-input:focus below in
   app.css) so it's the one app-wide focus dialect, not a modal-only choice.
   Validation/danger states are MORE specific (.cc-input-invalid …) so they
   still win and are untouched. */
.cc-input, .cc-select, .cc-textarea { border-color: var(--cc-field-line); }
.cc-input:focus, .cc-select:focus, .cc-textarea:focus { border-color: var(--cc-ink); box-shadow: 0 0 0 1px var(--cc-ink); }
/* DateField's wrapper (app.css .cc-datefield) is never itself :focus — its
   nested native date input is — so :focus-within carries the same ink-ring
   language here too (2026-07-17 overlay rewrite). */
.cc-datefield:focus-within { border-color: var(--cc-ink); box-shadow: 0 0 0 1px var(--cc-ink); }

/* Placeholder/suggestion text, app-wide (Tomas 2026-07-16: "the suggestions
   need to be lighter color. it looks like its filled in with text right
   now"). --cc-faint (used for placeholders app-wide until now) is dark enough
   at weight 500 to read as typed ink, not an empty hint — --cc-ph is a
   dedicated, visibly-lighter token, and weight drops to 400 so weight ALSO
   separates it from typed 500/600 text. Loads last (calm.css) so it wins the
   existing app.css ::placeholder rules without specificity games. */
.cc-input::placeholder, .cc-textarea::placeholder { color: var(--cc-ph); font-weight: 400; }

/* ═══════════════════════════════════════════════════════════════════════════
   POST-A-JOB · CLEAN B&W PASS (Tomas 2026-07-15 eve; group-card pass same eve)
   The approved July 8 layout, styled clean: black/white text, a WHITE modal
   ground, related fields clustered into light-grey GROUP CARDS (Nova
   reference — .cc-fgroup, plus the page-3 Disclosure sections and the
   add-a-festival block, which already ARE grouped related fields) holding
   WHITE input fields, and the horizontal hairlines (head rule, foot rule,
   the kicker's trailing line) killed. Segmented controls keep a grey track,
   but the active option is now a WHITE RAISED pill (shadow), not a black
   fill — "the selected thing is always the white one" applies to segments
   too. One reversible block — delete it and the wizard returns to its warm
   July-8 skin. Loads last (calm.css) so it wins without specificity
   gymnastics.
   ═══════════════════════════════════════════════════════════════════════════ */
:root:not([data-theme="midnight"]) .cc-postmodal {
  background: #FFFFFF;                 /* white modal ground */
}
:root:not([data-theme="midnight"]) .cc-postmodal-head,
:root:not([data-theme="midnight"]) .cc-postmodal-foot {
  background: #FFFFFF; border: 0;      /* kill the head + foot hairlines */
}
:root:not([data-theme="midnight"]) .cc-postmodal-body { background: #FFFFFF; }
:root:not([data-theme="midnight"]) .cc-postmodal-head h3 { color: #131313; }
:root:not([data-theme="midnight"]) .cc-postmodal-sub { color: #6B6B67; }

/* kicker: quiet caps, no trailing rule */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-formkick { color: #8C8C86; margin-bottom: 2px; }
:root:not([data-theme="midnight"]) .cc-postmodal .cc-formkick::after { display: none; }

/* labels crisp black */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-field > label { color: #131313; }
:root:not([data-theme="midnight"]) .cc-postmodal .cc-lbl-opt { color: #9A9A93; font-weight: 500; }

/* GROUP CARDS (Nova reference): related fields cluster on a light-grey card
   — pins the light value app.css's token-driven .cc-fgroup base rule
   resolves to. App-wide: #243 widened this from .cc-postmodal to .cc-modal
   for its own plain-modal callers (SuggestEventModal, AttendPopup); sweep
   chunk 2 (2026-07-16) drops the .cc-modal requirement too — CrewProfile's
   inline edit and the availability composer aren't modals at all, so
   .cc-fgroup is unscoped and matches every caller. */
:root:not([data-theme="midnight"]) .cc-fgroup { background: #F4F3F2; }

/* Page-3 Disclosure sections ARE grouped related fields too — same grey
   card treatment, both collapsed ("+ Deliverables" row) and open states.
   The card wrap now owns ALL the padding, so the inner .cc-disc-row/
   .cc-disc-hide (app.css ~1346-1357, own padding: 9px 2px / 9px 2px 0)
   are zeroed here to avoid stacking two paddings into one oversized card.
   Distinct from `.cc-disc` (the search capsule) — scoped under
   .cc-postmodal regardless. */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-disc-row-wrap,
:root:not([data-theme="midnight"]) .cc-postmodal .cc-disc-open {
  background: #F4F3F2; border-radius: 12px; padding: 11px 14px;
}
:root:not([data-theme="midnight"]) .cc-postmodal .cc-disc-row-wrap .cc-disc-row,
:root:not([data-theme="midnight"]) .cc-postmodal .cc-disc-hdr .cc-disc-hide {
  padding: 0;
}

/* Add-a-festival inline block: same grey-card treatment — it's a cluster of
   related fields hanging off the festival picker, not a bare list anymore,
   so it no longer needs its own top hairline (removed from the JSX). */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-festadd {
  background: #F4F3F2; border-radius: 12px; padding: 12px 14px;
}

/* WHITE fields on the grey body, neutral strokes, ink focus */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-input,
:root:not([data-theme="midnight"]) .cc-postmodal .cc-select,
:root:not([data-theme="midnight"]) .cc-postmodal .cc-textarea {
  background: #FFFFFF; border-color: #E4E3E0; color: #131313;
}
:root:not([data-theme="midnight"]) .cc-postmodal .cc-input:focus,
:root:not([data-theme="midnight"]) .cc-postmodal .cc-select:focus,
:root:not([data-theme="midnight"]) .cc-postmodal .cc-textarea:focus {
  border-color: #131313; box-shadow: 0 0 0 1px #131313;
}
:root:not([data-theme="midnight"]) .cc-postmodal .cc-datefield:focus-within {
  border-color: #131313; box-shadow: 0 0 0 1px #131313;
}

/* segmented control: quiet grey track, active segment = a WHITE RAISED pill
   (Nova pattern) — the selected thing is always the white one, everywhere,
   including segments; a soft shadow (not a border) lifts it off the track.
   The .on treatment now matches the app-wide base (.cc-seg-opt.on in
   app.css, flipped to raised-white 2026-07-16) so it's dropped here —
   this block only pins the modal's own darker track grey + label grey,
   which the mono-sharp pass (§9) would otherwise flatten to ink. */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-seg { background: #E9E8E6; }
:root:not([data-theme="midnight"]) .cc-postmodal .cc-seg-opt { color: #6B6B67; }

/* budget preview → monochrome (was terracotta) */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-budgetprev { color: #6B6B67; }
:root:not([data-theme="midnight"]) .cc-postmodal .cc-budgetprev b { color: #131313; }
:root:not([data-theme="midnight"]) .cc-postmodal .cc-budgetprev-sub { color: #9A9A93; }

/* the one action stays a single clear button; everything else is B&W */
/* the primary action goes ink too — pure B&W modal (Tomas: "then push") */
:root:not([data-theme="midnight"]) .cc-postmodal .cc-btn.primary {
  background: #131313; background-image: none; border-color: #131313; color: #fff; box-shadow: none;
}
:root:not([data-theme="midnight"]) .cc-postmodal .cc-btn.primary:hover {
  background: #000; background-image: none; border-color: #000; filter: none;
}
:root:not([data-theme="midnight"]) .cc-postmodal .cc-btn.primary:disabled {
  background: #C9C8C4; background-image: none; border-color: #C9C8C4; color: #fff;
}

/* ─── 9 · MONO-SHARP TEXT PASS (2026-07-15, /home round 1) ──────────────────
   Tomas, repeat complaint: "for the billionth time... this is not grey
   backdrop, its silver?... Black and white text ONLY. keep this page SHARP
   and CLEAN." §1 above already flattened the SURFACES (canvas/cards/chips/
   hairlines) to true-neutral near-white. This section finishes the job on
   TEXT: collapse the three secondary/tertiary/hint ink tiers into the one
   primary ink — hierarchy now comes from size + weight + letterspacing
   only, never a lighter grey (the brief's own words). Scoped off midnight,
   which already defines its own light-on-dark soft/muted/faint dialect. */
:root:not([data-theme="midnight"]) {
  --cc-soft:  var(--cc-ink);
  --cc-muted: var(--cc-ink);
  --cc-faint: var(--cc-ink);
}
/* Dark-chrome (dock/top bar) secondary text was a warm grey-brown
   (--chr-mut #B7B1A3) sitting next to already-pure-white nav labels — the
   same "no mid-grey" violation, just on the dark side. Chrome flips via
   [data-chrome]; keep light chrome legible (near-black on cream) while dark
   chrome (the app default) goes pure white, matching --chr-tx exactly.
   Hierarchy between a selected nav item and "BROWSE"/"MANAGE" group labels
   already comes from weight + size + caps-tracking, not color — this just
   removes the last color-based grey. */
:root:not([data-theme="midnight"]) { --chr-mut: #FFFFFF; }
:root:not([data-theme="midnight"]) [data-chrome="dark"] { --chr-mut: #FFFFFF; }
[data-chrome="light"] { --chr-mut: var(--cc-ink); }

/* Regression guard for the above: the top-bar search capsule floats a LIGHT
   pill (.cc-surface white) on top of the dark chrome bar (app.css's
   ".cc-top .cc-search" background override) — its icon + placeholder still
   read the chrome token for color, so pure-white --chr-mut made them white
   text on a white pill (invisible). Both got an explicit ink override
   already for the input's typed text; icon + placeholder need the same. */
.cc-top .cc-search .cc-search-ico,
.cc-topbar .cc-search .cc-search-ico,
.cc-top .cc-search input::placeholder,
.cc-topbar .cc-search input::placeholder { color: var(--cc-muted); }

/* "Available" status badge: the brief names "sage" text explicitly as
   banned. The dot alone now carries the green semantic (matches the
   week-grid legend elsewhere in the app — color-coding a status swatch,
   not painting a sentence); the word "Available" itself reads in ink. */
.cc-avail-badge { color: var(--cc-ink); }

/* Top-bar avatar initials: stale cream literal (app.css:58, .cc-top .cc-avatar
   { color: #EDEAE3 }) sitting on the same dark-brown chip every other
   .cc-avatar already renders pure white on (base rule's color: var(--cc-surface),
   which resolves to #fff). Same fix, no theme guard needed — the chip's own
   background is a hardcoded literal too, unaffected by data-theme, so #fff
   reads correctly everywhere this component appears. */
.cc-top .cc-avatar { color: #fff; }

/* Profile chip's role/status line ("Working · Lighting Designer", app.css:2207
   .cc-top .cc-chip .md) was riding the green --cc-ok-ink status color as body
   copy — a status hue spent on a sentence, the same violation the "Available"
   badge above was fixed for. This lives on dark chrome (not the light-theme
   ink scale), so it takes the chrome-ink token this section already defined
   above for exactly this dialect (--chr-mut: white on dark chrome / ink on
   light chrome) rather than --cc-ink directly. */
.cc-top .cc-chip .md { color: var(--chr-mut); }

/* "0 of 3 filled" slots pill (app.css:1885-1889, .cc-slots) rode the
   terracotta selection tint as if slot-count were a selected/brand state —
   it's a neutral count, not a choice. Collapsed to the same neutral-chip
   recipe §1 already defines for the caution/"to-confirm" chip family
   (--cc-warn-bg/-ink: neutral fill + ink text). The hairline used to bypass
   --cc-line with a literal true-neutral value because app.css's old "Warm
   card edge" block re-pinned --cc-line to a warm #C6BBA3 at higher
   specificity than this skin's own §1 override — that block was deleted
   (#237, 2026-07-14), so --cc-line resolves cleanly again; simplified onto
   the token. .cc-slots.full (the green "all filled" success state) is
   excluded — that's an earned status color, not this bug. */
:root:not([data-theme="midnight"]) .cc-slots:not(.full) {
  background: var(--cc-chip); border-color: var(--cc-line); color: var(--cc-ink);
}

/* Card hairline: .cc-hcard's border (app.css:2241) rides var(--cc-line).
   This used to bypass the token with a literal true-neutral value for the
   same reason as the slots pill above — app.css's old "Warm card edge"
   block re-pinned --cc-line to a warm #C6BBA3 at higher specificity than
   this skin's §1 override, and that block was deleted (#237, 2026-07-14).
   Simplified onto the token; guard kept identical to the theme scoping the
   old workaround used (not midnight/slate/plum/mono — those looks keep
   their own tuned --cc-line and never had this bug). */
:root:not([data-theme="midnight"]):not([data-theme="slate"]):not([data-theme="plum"]):not([data-theme="mono"]) .cc-hcard {
  border-color: var(--cc-line);
}
:root:not([data-theme="midnight"]):not([data-theme="slate"]):not([data-theme="plum"]):not([data-theme="mono"]) .cc-hcard:hover,
:root:not([data-theme="midnight"]):not([data-theme="slate"]):not([data-theme="plum"]):not([data-theme="mono"]) .cc-hcard:focus-within {
  border-color: color-mix(in srgb, var(--cc-line) 78%, var(--cc-ink));
}

/* ─── 10 · TYPE FLOOR — nothing below 11px (home feed + rail + dock) ────────
   Six selectors rendered sub-11px on /home: sidebar group labels, the
   MILESTONE/AVAILABILITY post badge, the "/day" money suffix, the dock
   persona sub-line, the ⌘K search hint, and the right-rail stat/section
   labels. Bumped to the 11px floor; layout is unaffected (all sit in
   flexible rows/columns, none width-constrained to their old metrics). */
.cc-dock-grp,
.cc-dock-me-id .md,
.cc-search-kbd,
.cc-rstat .l,
.cc-rc-lbl {
  font-size: 11px;
}
.cc-rtag { font-size: 11px; }
.cc-money small { font-size: 11px; }
