/* ============================================================
   contracts.css — /contracts.html · the tender desk
   Prefix: .ctd-  (contracts tool desk) + shared .gcx- tokens.
   Family: gov-contracts warm-editorial (.gcx-), evolved into a
   working tool. Fraunces display / DM Sans body / Plex Mono data.
   Light mode only. Link colors scoped (sitewide a:hover trap).
   ============================================================ */
:root {
    --gcx-forest: #1a3d2e;
    --gcx-forest-dk: #0f2a1f;
    --gcx-forest-light: #2d5a45;
    --gcx-sienna: #a85a3c;
    --gcx-sienna-dk: #8a4830;
    --gcx-parchment: #fcf6e9;
    --gcx-cream: #fdfaf2;
    --gcx-ink: #1a1a1a;
    --gcx-ink-2: #40403a;
    --gcx-line: #e6dcc8;
    --ctd-amber: #b3801f;
    --ctd-paper: #fffdf8;
    --gcx-serif: 'Fraunces', Georgia, 'Times New Roman', serif;
    --gcx-sans: 'DM Sans', system-ui, -apple-system, sans-serif;
    --gcx-mono: 'IBM Plex Mono', ui-monospace, 'SFMono-Regular', monospace;
}

/* main.css sets html,body{overflow-x:hidden} sitewide — that turns body into a
   non-scrolling scroll container and position:sticky anchors to IT, so the rail
   never sticks (repo gotcha family). This page restores visible (contracts.css
   loads after main.css) and carries its own per-section overflow clips instead. */
html, body.ctd-body { overflow-x: visible; overflow-y: visible; }
.ctd-body { background: var(--gcx-cream); color: var(--gcx-ink); font-family: var(--gcx-sans); }
/* overflow-x guards live on the SECTIONS, never on .ctd-main — clip on any
   ancestor of #filterRail silently kills its position:sticky (repo gotcha,
   hit live: the rail scrolled away instead of sticking) */
.ctd-mast, .ctd-matched, .ctd-results, .ctd-about, .gcx-footer, .ctd-stale { overflow-x: clip; }
.ctd-wrap { max-width: 980px; margin: 0 auto; padding: 0 22px; }
#matchedBand, .ctd-results { scroll-margin-top: calc(190px + env(safe-area-inset-top, 0px)); } /* nav 56 + rail can wrap to 2 rows */

/* nav text-color restore (ids beat any content rule) */
#siteNav .nav__link, #siteNav .btn-ghost, #mobileMenu .mobile-menu-link { color: var(--ink); }
#siteNav .btn-primary, #mobileMenu .btn-primary { color: var(--white); }

/* ================= Masthead ================= */
.ctd-mast { background: linear-gradient(160deg, var(--gcx-forest) 0%, var(--gcx-forest-dk) 100%); color: #fff; padding: 52px 22px 0; text-align: center; }
.ctd-mast-inner { max-width: 980px; margin: 0 auto; }
.ctd-badge { display: inline-block; background: rgba(255,255,255,.12); border: 1px solid rgba(255,255,255,.22); color: #f4e9d8; font-size: 12px; font-weight: 600; letter-spacing: .09em; text-transform: uppercase; padding: 5px 13px; border-radius: 999px; margin-bottom: 18px; font-family: var(--gcx-mono); }
.ctd-badge .ctd-live-dot { display: inline-block; width: 7px; height: 7px; border-radius: 50%; background: #7fc79a; margin-right: 7px; vertical-align: 1px; }
.ctd-mast h1 { font-family: var(--gcx-serif); font-size: clamp(30px, 4.6vw, 44px); line-height: 1.08; margin: 0 auto 14px; font-weight: 600; letter-spacing: -.02em; color: #fff; max-width: 700px; }
.ctd-mast h1 em { color: #e8a87c; font-style: normal; }
.ctd-mast-sub { font-size: clamp(15.5px, 2vw, 18px); line-height: 1.55; color: #e9e2d4; margin: 0 auto 8px; max-width: 620px; }
.ctd-mast-meta { font-size: 13px; color: #b9c7bd; margin: 0 0 30px; }
.ctd-mast-meta a { color: #d8cfbc; text-decoration: underline; }
.ctd-mast-meta a:hover { color: #fff; }

/* live ticker — data as masthead */
.ctd-ticker { display: grid; grid-template-columns: repeat(4, auto); justify-content: center; gap: 0 56px; border-top: 1px solid rgba(255,255,255,.14); padding: 20px 0 24px; }
.ctd-ticker b { display: block; font-family: var(--gcx-serif); color: #e8a87c; font-size: clamp(22px, 3vw, 30px); font-weight: 600; line-height: 1; font-variant-numeric: tabular-nums; }
.ctd-ticker span { display: block; font-family: var(--gcx-mono); color: #c8d2c8; font-size: 11px; letter-spacing: .08em; text-transform: uppercase; margin-top: 7px; line-height: 1.4; }
.ctd-tick-link { cursor: pointer; border-radius: 8px; padding: 4px 8px; margin: -4px -8px; transition: background .15s; }
.ctd-tick-link:hover { background: rgba(255,255,255,.07); }
.ctd-tick-link:hover span { color: #e9e2d4; text-decoration: underline; text-underline-offset: 3px; }
.ctd-tick-link:focus-visible { outline: 2px solid #e8a87c; outline-offset: 2px; }
@media (max-width: 640px) {
    .ctd-ticker { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px 20px; }
}

/* stale-feed banner */
.ctd-stale { background: #f6ead2; border-bottom: 1px solid var(--gcx-line); color: #6b5320; font-size: 14px; padding: 10px 22px; text-align: center; }
.ctd-stale[hidden] { display: none; }

/* ================= Filter rail ================= */
.ctd-rail { position: sticky; top: calc(56px + env(safe-area-inset-top, 0px)); z-index: 40; background: var(--gcx-cream); border-bottom: 1px solid var(--gcx-line); box-shadow: 0 1px 0 rgba(26,61,46,.03); }
.ctd-rail-inner { max-width: 980px; margin: 0 auto; padding: 12px 22px; display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.ctd-search { flex: 1 1 240px; min-width: 0; position: relative; }
.ctd-search input { width: 100%; padding: 11px 14px 11px 38px; border: 1px solid var(--gcx-line); border-radius: 10px; background: var(--ctd-paper); font-size: 15px; font-family: var(--gcx-sans); color: var(--gcx-ink); }
.ctd-search input:focus { outline: 2px solid var(--gcx-forest-light); outline-offset: 1px; border-color: var(--gcx-forest-light); }
.ctd-search svg { position: absolute; left: 12px; top: 50%; transform: translateY(-50%); width: 17px; height: 17px; color: var(--gcx-ink-2); opacity: .55; pointer-events: none; }
.ctd-rail select { appearance: none; -webkit-appearance: none; padding: 11px 30px 11px 13px; border: 1px solid var(--gcx-line); border-radius: 10px; background: var(--ctd-paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2340403a' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 11px center; font-size: 14px; font-family: var(--gcx-sans); color: var(--gcx-ink); cursor: pointer; max-width: 175px; }
.ctd-rail select:focus { outline: 2px solid var(--gcx-forest-light); outline-offset: 1px; }
.ctd-chiptoggle { display: inline-flex; align-items: center; gap: 7px; padding: 10px 14px; border: 1px solid var(--gcx-line); border-radius: 999px; background: var(--ctd-paper); font-size: 13.5px; font-weight: 600; color: var(--gcx-ink-2); cursor: pointer; transition: border-color .15s, background .15s, color .15s; white-space: nowrap; }
.ctd-chiptoggle[aria-pressed="true"] { background: var(--gcx-forest); border-color: var(--gcx-forest); color: #fff; }
.ctd-chiptoggle:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; }
.ctd-reset { background: none; border: none; font-size: 13.5px; font-weight: 600; color: var(--gcx-sienna); cursor: pointer; padding: 10px 6px; font-family: var(--gcx-sans); }
.ctd-reset:hover { text-decoration: underline; }
.ctd-reset[hidden] { display: none; }
@media (max-width: 700px) {
    .ctd-rail-inner { padding: 10px 14px; }
    .ctd-search { flex-basis: 100%; }
    .ctd-rail-row2 { display: flex; gap: 8px; overflow-x: auto; -webkit-overflow-scrolling: touch; flex: 1 1 100%; padding-bottom: 2px; scrollbar-width: none; -webkit-mask-image: linear-gradient(to right, #000 88%, transparent); mask-image: linear-gradient(to right, #000 88%, transparent); }
    .ctd-rail-row2::-webkit-scrollbar { display: none; }
    .ctd-rail select { flex: 0 0 auto; }
}
@media (min-width: 701px) {
    .ctd-rail-row2 { display: contents; }
}

/* ================= Matched band ================= */
.ctd-matched { background: #f6eed9; border-top: 2px solid var(--gcx-forest-light); border-bottom: 1px solid var(--gcx-line); }
.ctd-matched-inner { max-width: 980px; margin: 0 auto; padding: 30px 22px 8px; }
.ctd-matched-head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin: 0 0 6px; }
.ctd-matched-head h2 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: clamp(21px, 3vw, 26px); font-weight: 600; margin: 0; }
.ctd-matched-count { font-family: var(--gcx-sans); font-size: 13.5px; font-weight: 600; color: var(--gcx-sienna); }
.ctd-matched-tune { margin-left: auto; background: none; border: 1px solid var(--gcx-line); border-radius: 999px; padding: 8px 16px; font-size: 13.5px; font-weight: 600; color: var(--gcx-forest); cursor: pointer; font-family: var(--gcx-sans); transition: border-color .15s, background .15s; }
.ctd-matched-tune:hover { border-color: var(--gcx-forest); background: #fff; }
.ctd-matched-sub { font-size: 14.5px; color: var(--gcx-ink-2); margin: 0 0 18px; }
.ctd-matched .ctd-row { background: var(--ctd-paper); border-radius: 10px; border-bottom: none; margin-bottom: 10px; box-shadow: 0 1px 3px rgba(26,61,46,.06); padding-left: 14px; padding-right: 18px; }
.ctd-matched .ctd-list { border-top: none; }

/* seed prompt (no profile yet) */
.ctd-seed[hidden] { display: none; } /* [hidden] loses to any display rule — repo gotcha */
.ctd-seed { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 20px; align-items: center; background: var(--ctd-paper); border: 1px solid var(--gcx-line); border-left: 4px solid var(--gcx-sienna); border-radius: 0 14px 14px 0; padding: 24px 26px; margin: 0 0 26px; }
.ctd-seed h3 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 19px; font-weight: 600; margin: 0 0 6px; }
.ctd-seed p { font-size: 14.5px; color: var(--gcx-ink-2); line-height: 1.55; margin: 0; }
.ctd-seed button { background: var(--gcx-sienna); color: #fff; font-weight: 700; font-size: 15px; padding: 12px 22px; border: none; border-radius: 10px; cursor: pointer; font-family: var(--gcx-sans); transition: background .15s; white-space: nowrap; }
.ctd-seed button:hover { background: var(--gcx-sienna-dk); }
@media (max-width: 560px) {
    .ctd-seed { grid-template-columns: 1fr; }
    .ctd-seed button { justify-self: start; }
}

/* ================= Prefs panel (slide-down, no modal) ================= */
.ctd-prefs { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .28s cubic-bezier(.22,.9,.3,1); }
.ctd-prefs.open { grid-template-rows: 1fr; }
.ctd-prefs > .ctd-prefs-clip { overflow: hidden; min-height: 0; }
.ctd-prefs-card { background: var(--ctd-paper); border: 1px solid var(--gcx-line); border-radius: 14px; padding: 26px 26px 22px; margin: 4px 0 26px; }
.ctd-prefs-card h3 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 20px; font-weight: 600; margin: 0 0 4px; }
.ctd-prefs-card > p { font-size: 14px; color: var(--gcx-ink-2); margin: 0 0 20px; }
.ctd-pf { margin: 0 0 22px; }
.ctd-pf > label, .ctd-pf-label { display: block; font-family: var(--gcx-mono); font-size: 11.5px; letter-spacing: .08em; text-transform: uppercase; color: var(--gcx-forest-light); margin-bottom: 9px; font-weight: 600; }
.ctd-chips { display: flex; flex-wrap: wrap; gap: 6px; }
.ctd-chip { padding: 6px 12px; border: 1px solid var(--gcx-line); border-radius: 999px; background: #fff; font-size: 13px; font-weight: 500; color: var(--gcx-ink-2); cursor: pointer; font-family: var(--gcx-sans); transition: border-color .12s, background .12s, color .12s; min-height: 34px; }
.ctd-chip[aria-pressed="true"] { background: var(--gcx-forest); border-color: var(--gcx-forest); color: #fff; font-weight: 600; }
.ctd-chip:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; }
.ctd-kw { display: flex; flex-wrap: wrap; gap: 7px; align-items: center; border: 1px solid var(--gcx-line); border-radius: 10px; background: #fff; padding: 7px 9px; cursor: text; }
.ctd-kw:focus-within { outline: 2px solid var(--gcx-forest-light); outline-offset: 1px; }
.ctd-kw-tag { display: inline-flex; align-items: center; gap: 6px; background: var(--gcx-parchment); border: 1px solid var(--gcx-line); border-radius: 6px; padding: 4px 8px; font-size: 13px; color: var(--gcx-ink); }
.ctd-kw-tag button { background: none; border: none; padding: 0 2px; cursor: pointer; color: var(--gcx-ink-2); font-size: 15px; line-height: 1; }
.ctd-kw-tag button:hover { color: var(--gcx-sienna); }
.ctd-kw input { flex: 1 1 130px; min-width: 0; border: none; background: none; font-size: 14px; padding: 6px 4px; font-family: var(--gcx-sans); color: var(--gcx-ink); }
.ctd-kw input:focus { outline: none; }
.ctd-pf-hint { font-family: var(--gcx-sans); font-size: 12.5px; color: var(--gcx-ink-2); opacity: .85; margin: 7px 0 0; }
.ctd-prefs-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 0 30px; }
.ctd-switchrow { display: flex; align-items: center; justify-content: space-between; gap: 14px; padding: 13px 0; border-top: 1px dashed var(--gcx-line); }
.ctd-switchrow:first-of-type { border-top: 1px solid var(--gcx-line); margin-top: 8px; }
.ctd-switchrow b { font-size: 14.5px; font-weight: 600; color: var(--gcx-ink); display: block; }
.ctd-switchrow small { font-size: 12.5px; color: var(--gcx-ink-2); display: block; margin-top: 2px; line-height: 1.45; }
.ctd-switch { position: relative; flex: 0 0 46px; width: 46px; height: 26px; border-radius: 999px; border: 1px solid var(--gcx-line); background: #ede5d3; cursor: pointer; transition: background .18s, border-color .18s; }
.ctd-switch::after { content: ''; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px; border-radius: 50%; background: #fff; box-shadow: 0 1px 2px rgba(26,26,26,.25); transition: transform .18s cubic-bezier(.22,.9,.3,1); }
.ctd-switch[aria-checked="true"] { background: var(--gcx-forest); border-color: var(--gcx-forest); }
.ctd-switch[aria-checked="true"]::after { transform: translateX(20px); }
.ctd-switch:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; }
.ctd-prefs-foot { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin-top: 20px; }
.ctd-prefs-save { background: var(--gcx-forest); color: #fff; font-weight: 700; font-size: 15px; padding: 12px 26px; border: none; border-radius: 10px; cursor: pointer; font-family: var(--gcx-sans); transition: background .15s; }
.ctd-prefs-save:hover { background: var(--gcx-forest-dk); }
.ctd-prefs-status { font-size: 13.5px; color: var(--gcx-forest-light); font-weight: 600; }
.ctd-prefs-status.err { color: var(--gcx-sienna-dk); }
.ctd-prefs-anon { font-size: 13px; color: var(--gcx-ink-2); }
.ctd-prefs-anon a { color: var(--gcx-sienna); font-weight: 600; text-decoration: none; }
.ctd-prefs-anon a:hover { text-decoration: underline; }

/* ================= Results ================= */
/* padding-TOP/BOTTOM only — the shorthand `padding: 26px 0 10px` clobbered .ctd-wrap's
   22px side gutters (same specificity, later in file) and left mobile text flush to the
   screen edge. Never re-shorthand padding on a class that shares an element with .ctd-wrap. */
.ctd-results { padding-top: 26px; padding-bottom: 10px; }
.ctd-results-head { display: flex; align-items: baseline; gap: 14px; flex-wrap: wrap; margin: 0 0 16px; }
.ctd-results-head h2 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: clamp(20px, 2.8vw, 24px); font-weight: 600; margin: 0; }
.ctd-results-count { font-family: var(--gcx-sans); font-size: 13.5px; color: var(--gcx-ink-2); }
.ctd-sort { margin-left: auto; display: inline-flex; align-items: center; gap: 8px; font-size: 13px; color: var(--gcx-ink-2); }
.ctd-sort select { padding: 8px 26px 8px 10px; font-size: 13.5px; border: 1px solid var(--gcx-line); border-radius: 8px; background: var(--ctd-paper) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' fill='none' stroke='%2340403a' stroke-width='1.6' stroke-linecap='round'/%3E%3C/svg%3E") no-repeat right 9px center; appearance: none; -webkit-appearance: none; font-family: var(--gcx-sans); color: var(--gcx-ink); cursor: pointer; }

/* ---- the ledger row ---- */
.ctd-list { list-style: none; margin: 0; padding: 0; border-top: 1px solid var(--gcx-line); }
.ctd-row { position: relative; display: grid; grid-template-columns: 80px minmax(0, 1fr) auto; gap: 18px; padding: 20px 14px 20px 10px; border-bottom: 1px solid var(--gcx-line); background: transparent; transition: background .15s; }
.ctd-row:hover { background: rgba(255,255,255,.75); }
.ctd-matched .ctd-row:hover { background: #fff; }

/* date block — the editorial anchor */
.ctd-date { text-align: center; padding-top: 2px; }
.ctd-date b { display: block; font-family: var(--gcx-serif); font-size: 23px; font-weight: 600; line-height: 1; color: var(--gcx-forest); font-variant-numeric: tabular-nums; }
.ctd-date span { display: block; font-family: var(--gcx-mono); font-size: 10.5px; letter-spacing: .12em; text-transform: uppercase; color: var(--gcx-ink-2); margin-top: 4px; }
/* white-space: normal + max-width — a nowrap inline-block pill SPILLS over the
   neighboring cell when its label outgrows the 80px column (never truncates);
   "CLOSING TODAY" overlapped the entity text live (founder catch 2026-07-20).
   Labels are designed to fit one line; anything longer wraps INSIDE the column. */
.ctd-date .ctd-due { display: inline-block; margin-top: 8px; font-family: var(--gcx-mono); font-size: 10.5px; letter-spacing: .03em; padding: 3px 8px; border-radius: 999px; background: #eee7d6; color: var(--gcx-ink-2); white-space: normal; max-width: 100%; box-sizing: border-box; line-height: 1.35; }
/* compound selectors: `.ctd-date span {display:block}` (0,1,1) silently beats a
   lone class (0,1,0) — the quiz-step trap, hit live here */
.ctd-date .ctd-due-full { display: inline; }
.ctd-date .ctd-due-mini { display: none; }
/* the pill's inner spans must inherit ITS color — `.ctd-date span` (0,1,1)
   otherwise repaints them ink on the solid-sienna urgency pills */
.ctd-date .ctd-due .ctd-due-full, .ctd-date .ctd-due .ctd-due-mini { color: inherit; margin-top: 0; }
@media (max-width: 640px) {
    /* "IN 19 DAYS" overflows the narrow date column — compact to "19d left" */
    .ctd-date .ctd-due-full { display: none; }
    .ctd-date .ctd-due-mini { display: inline; }
    /* audit P2s (2026-07-20): month caption above legibility floor on the page
       whose job is scanning dates; sub-44px tap targets on the core controls */
    .ctd-date span { font-size: 11px; letter-spacing: .09em; }
    .ctd-rail select, .ctd-sort select, .ctd-sheet-btn, .ctd-matched-tune { min-height: 44px; }
}
.ctd-row.u7 .ctd-date b { color: var(--gcx-sienna-dk); font-weight: 700; }
.ctd-row.u3 { box-shadow: inset 3px 0 0 var(--gcx-sienna); }
.ctd-matched .ctd-row.u3 { box-shadow: inset 3px 0 0 var(--gcx-sienna), 0 1px 3px rgba(26,61,46,.06); }
.ctd-row.u0 .ctd-date .ctd-due { background: var(--gcx-sienna-dk); color: #fff; font-weight: 600; }
.ctd-row.u7 .ctd-due { background: #f6e3d7; color: var(--gcx-sienna-dk); }
.ctd-row.u3 .ctd-due { background: var(--gcx-sienna); color: #fff; }
.ctd-row.u3 .ctd-due span, .ctd-row.u0 .ctd-due span { color: #fff; }
.ctd-date .ctd-due-none { display: block; font-family: var(--gcx-mono); font-size: 10.5px; color: var(--gcx-ink-2); opacity: .7; margin-top: 8px; }

/* main cell */
.ctd-rowmain { min-width: 0; }
.ctd-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 0 0 7px; align-items: center; }
.ctd-type { font-family: var(--gcx-mono); font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: var(--gcx-forest); background: color-mix(in srgb, var(--gcx-forest) 15%, #fff); border: 1px solid color-mix(in srgb, var(--gcx-forest) 24%, #fff); padding: 3px 8px; border-radius: 6px; }
.ctd-setaside { font-family: var(--gcx-mono); font-size: 10.5px; font-weight: 600; letter-spacing: .05em; text-transform: uppercase; color: #6b4a12; background: #f6ead2; border: 1px solid #e8d5a8; padding: 3px 8px; border-radius: 6px; }
.ctd-prov { font-family: var(--gcx-mono); font-size: 10.5px; letter-spacing: .06em; color: var(--gcx-ink-2); }
.ctd-row h3 { font-family: var(--gcx-serif); font-size: 18.5px; font-weight: 600; line-height: 1.3; margin: 0 0 5px; letter-spacing: -.005em; overflow-wrap: anywhere; max-width: 34em; }
.ctd-row h3 a { color: var(--gcx-ink); text-decoration: none; }
.ctd-row h3 a:hover, .ctd-row h3 a:focus, .ctd-row h3 a:visited, .ctd-row h3 a:active { color: var(--gcx-ink); }
.ctd-row h3 a:hover { text-decoration: underline; text-decoration-color: var(--gcx-sienna); text-underline-offset: 3px; }
.ctd-entity { font-family: var(--gcx-sans); font-size: 13px; font-weight: 500; color: var(--gcx-ink-2); margin: 0 0 7px; overflow-wrap: anywhere; }
.ctd-desc { font-size: 14px; line-height: 1.55; color: var(--gcx-ink-2); margin: 0; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; max-width: 62ch; }
.ctd-why { font-family: var(--gcx-sans); font-size: 13px; font-weight: 600; color: var(--gcx-sienna); margin: 8px 0 0; line-height: 1.5; }
.ctd-why::before { content: '↳ '; }

/* actions — desktop: right-side pill · mobile: inline text link beside Details */
.ctd-rowact { align-self: start; margin-top: 30px; }
.ctd-row.open .ctd-rowact { visibility: hidden; } /* the dossier's CTA takes over; a second pill floating beside it read as clutter */
.ctd-view { display: inline-flex; align-items: center; gap: 6px; font-size: 13.5px; font-weight: 600; color: var(--gcx-forest); text-decoration: none; border: 1px solid var(--gcx-line); border-radius: 999px; padding: 9px 16px; transition: border-color .15s, background .15s; white-space: nowrap; min-height: 44px; box-sizing: border-box; }
.ctd-row h3 a { display: inline-block; padding: 9px 0; margin: -9px 0; }
.ctd-view:hover, .ctd-view:focus, .ctd-view:visited, .ctd-view:active { color: var(--gcx-forest); }
.ctd-view:hover { border-color: var(--gcx-forest); background: #fff; }
.ctd-actions { display: flex; align-items: center; gap: 18px; }
.ctd-notice-inline { display: none; align-items: center; gap: 5px; font-family: var(--gcx-sans); font-size: 13px; font-weight: 600; color: var(--gcx-forest); text-decoration: none; padding: 10px 4px; min-height: 44px; }
.ctd-notice-inline:hover, .ctd-notice-inline:focus, .ctd-notice-inline:visited, .ctd-notice-inline:active { color: var(--gcx-forest); }
@media (max-width: 640px) {
    .ctd-row { grid-template-columns: 54px minmax(0, 1fr); gap: 13px; padding: 16px 4px 14px 0; }
    .ctd-date b { font-size: 21px; }
    .ctd-date .ctd-due { font-size: 10px; padding: 3px 6px; margin-top: 6px; }
    .ctd-rowact { display: none; }             /* one action row, not three stacked blocks */
    .ctd-notice-inline { display: inline-flex; }
    .ctd-row h3 { font-size: 16px; }
    .ctd-desc { font-size: 13.5px; }
    .ctd-entity { font-size: 10.5px; }
}

/* ---- row detail expand (the dossier) ---- */
.ctd-row { cursor: pointer; }
.ctd-row a, .ctd-row button { cursor: pointer; }
.ctd-details-btn { display: inline-flex; align-items: center; gap: 6px; background: none; border: none; padding: 10px 4px; margin-top: 2px; font-family: var(--gcx-sans); font-size: 13px; font-weight: 600; color: var(--gcx-ink-2); cursor: pointer; min-height: 44px; }
.ctd-details-btn:hover { color: var(--gcx-sienna); }
.ctd-details-btn:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; border-radius: 6px; }
.ctd-details-btn svg { width: 12px; height: 12px; transition: transform .2s cubic-bezier(.22,.9,.3,1); }
.ctd-row.open .ctd-details-btn svg { transform: rotate(180deg); }
.ctd-row.open .ctd-details-btn { color: var(--gcx-sienna); }
.ctd-detail { display: grid; grid-template-rows: 0fr; transition: grid-template-rows .26s cubic-bezier(.22,.9,.3,1); }
.ctd-row.open .ctd-detail { grid-template-rows: 1fr; }
.ctd-detail > div { overflow: hidden; min-height: 0; }
.ctd-detail-card { border-top: 1px dashed var(--gcx-line); margin-top: 14px; padding-top: 16px; cursor: auto; }
.ctd-detail-desc { font-size: 14.5px; line-height: 1.65; color: var(--gcx-ink-2); margin: 0 0 16px; max-width: 68ch; white-space: pre-line; }
.ctd-detail-list { margin: 0 0 16px; padding-left: 22px; max-width: 68ch; }
.ctd-detail-list li { font-size: 14.5px; line-height: 1.6; color: var(--gcx-ink-2); margin: 0 0 8px; }
.ctd-detail-list li::marker { font-family: var(--gcx-mono); font-size: 12px; color: var(--gcx-sienna); font-weight: 600; }
.ctd-detail-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 13px 26px; margin: 0 0 18px; }
.ctd-detail-grid dt { font-family: var(--gcx-mono); font-size: 10.5px; letter-spacing: .09em; text-transform: uppercase; color: var(--gcx-forest-light); margin: 0 0 3px; font-weight: 600; }
.ctd-detail-grid dd { margin: 0; font-size: 14px; color: var(--gcx-ink); line-height: 1.45; overflow-wrap: anywhere; }
.ctd-detail-grid dd.mono { font-family: var(--gcx-mono); font-size: 12.5px; }
.ctd-detail-foot { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.ctd-detail-cta { display: inline-flex; align-items: center; gap: 7px; background: var(--gcx-forest); color: #fff !important; font-weight: 700; font-size: 14.5px; padding: 12px 22px; border-radius: 10px; text-decoration: none; transition: background .15s; min-height: 44px; box-sizing: border-box; }
.ctd-detail-cta:hover { background: var(--gcx-forest-dk); }
.ctd-detail-note { font-size: 12.5px; color: var(--gcx-ink-2); }
.ctd-row.open .ctd-desc { display: none; } /* full body replaces the teaser */
@media (prefers-reduced-motion: reduce) {
    .ctd-detail { transition: none; }
    .ctd-details-btn svg { transition: none; }
}

/* skeleton */
.ctd-skel { border-bottom: 1px solid var(--gcx-line); padding: 22px 0; }
.ctd-skel div { border-radius: 6px; background: linear-gradient(90deg, #f1ead9 25%, #f9f4e7 45%, #f1ead9 65%); background-size: 220% 100%; animation: ctdShimmer 1.3s linear infinite; }
.ctd-skel .s1 { width: 32%; height: 12px; margin-bottom: 12px; }
.ctd-skel .s2 { width: 78%; height: 18px; margin-bottom: 10px; }
.ctd-skel .s3 { width: 60%; height: 12px; }
@keyframes ctdShimmer { to { background-position: -220% 0; } }
@media (prefers-reduced-motion: reduce) {
    .ctd-skel div { animation: none; }
    .ctd-prefs { transition: none; }
    .ctd-switch::after { transition: none; }
}

/* empty / error states */
.ctd-state { border: 1px solid var(--gcx-line); border-left: 4px solid var(--gcx-sienna); border-radius: 0 14px 14px 0; background: var(--ctd-paper); text-align: left; padding: 30px 34px; margin: 26px 0; }
.ctd-state h3 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 20px; font-weight: 600; margin: 0 0 8px; }
.ctd-state p { font-size: 14.5px; color: var(--gcx-ink-2); line-height: 1.6; margin: 0 0 16px; max-width: 52ch; }
.ctd-state button { background: none; border: 1px solid var(--gcx-line); border-radius: 999px; padding: 10px 20px; font-size: 14px; font-weight: 600; color: var(--gcx-forest); cursor: pointer; font-family: var(--gcx-sans); }
.ctd-state button:hover { border-color: var(--gcx-forest); background: #fff; }
.ctd-state[hidden] { display: none; }

/* load more */
.ctd-more { text-align: center; padding: 26px 0 8px; }
.ctd-more button { background: none; border: 1px solid var(--gcx-line); border-radius: 999px; padding: 12px 26px; font-size: 14.5px; font-weight: 600; color: var(--gcx-forest); cursor: pointer; font-family: var(--gcx-sans); transition: border-color .15s, background .15s; min-height: 44px; }
.ctd-more button:hover { border-color: var(--gcx-forest); background: #fff; }
.ctd-more span { display: block; font-family: var(--gcx-mono); font-size: 11.5px; color: var(--gcx-ink-2); margin-top: 8px; letter-spacing: .04em; }
.ctd-more[hidden] { display: none; }

/* ================= About strip / footer ================= */
.ctd-about { background: var(--gcx-parchment); border-top: 1px solid var(--gcx-line); margin-top: 44px; }
.ctd-about-inner { max-width: 980px; margin: 0 auto; padding: 34px 22px 38px; display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 26px; }
.ctd-about h2 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 17px; font-weight: 600; margin: 0 0 8px; }
.ctd-about p { font-size: 13.5px; line-height: 1.6; color: var(--gcx-ink-2); margin: 0; }
.ctd-about a { color: var(--gcx-sienna); font-weight: 600; text-decoration: none; }
.ctd-about a:hover { text-decoration: underline; }

.gcx-footer { background: var(--gcx-forest-dk); color: #c8d2c8; padding: 40px 22px; text-align: center; }
.gcx-footer-brand { display: flex; align-items: center; justify-content: center; gap: 10px; font-weight: 700; color: #fff; font-size: 18px; }
.gcx-footer-tag { font-size: 14px; margin: 10px 0 18px; }
.gcx-footer-links { display: flex; flex-wrap: wrap; gap: 8px 20px; justify-content: center; margin-bottom: 18px; }
.gcx-footer-links a { color: #c8d2c8; font-size: 14px; text-decoration: none; }
.gcx-footer-links a:hover { color: #fff; text-decoration: underline; }
.gcx-footer-copy { font-size: 12.5px; color: #8ea394; max-width: 640px; margin: 0 auto; line-height: 1.6; }

/* ================= Round-2 additions (design critique + founder lens) ========= */
/* New-since-last-visit badge */
.ctd-new { font-family: var(--gcx-sans); font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #fff; background: var(--gcx-forest-light); padding: 3px 8px; border-radius: 6px; }
/* Type-chip qualifier ("· join the pool") */
.ctd-type i { font-style: normal; font-weight: 500; opacity: .75; text-transform: none; letter-spacing: 0; }
/* "What this means for you" — the can-I-bid answer, first thing in the dossier */
.ctd-detail-means { background: var(--gcx-parchment); border-left: 3px solid var(--gcx-forest-light); border-radius: 0 8px 8px 0; padding: 12px 16px; margin: 0 0 16px; font-size: 14px; line-height: 1.55; color: var(--gcx-ink-2); max-width: 68ch; }
.ctd-detail-means b { color: var(--gcx-forest); font-weight: 700; }
/* Dossier foot: guide link beside the CTA */
.ctd-detail-guide { font-family: var(--gcx-sans); font-size: 14px; font-weight: 600; color: var(--gcx-sienna); text-decoration: none; }
.ctd-detail-guide:hover { text-decoration: underline; }
.ctd-detail-guide:visited, .ctd-detail-guide:active, .ctd-detail-guide:focus { color: var(--gcx-sienna); }
/* Masthead badge: drop the third segment on tiny screens (wrap balloons the pill) */
@media (max-width: 380px) {
    .ctd-badge-extra { display: none; }
}

/* Keyboard focus ring for the nav auth buttons — nav-v7 ships none (WCAG 2.4.7
   gap surfaced by the contracts keyboard sweep; page-scoped fix, sitewide ticket
   noted in the spec). */
#siteNav a:focus-visible, #siteNav button:focus-visible,
#mobileMenu a:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; border-radius: 6px; }

/* profile echo in the matched header (Codex round) */
.ctd-matched-echo { display: inline-block; margin-left: 6px; font-size: 12.5px; font-weight: 600; color: var(--gcx-forest-light); background: rgba(45,90,69,.08); border: 1px solid rgba(45,90,69,.16); border-radius: 999px; padding: 2px 10px; vertical-align: 1px; }

/* ============ V1.1 — shortlist, triage, magnet, dividers, win panel ============ */
/* Save + hide row actions */
.ctd-save-btn { display: inline-flex; align-items: center; gap: 6px; background: none; border: 1px solid var(--gcx-line); border-radius: 999px; padding: 8px 14px; font-family: var(--gcx-sans); font-size: 13px; font-weight: 600; color: var(--gcx-forest); cursor: pointer; transition: border-color .15s, background .15s, color .15s; min-height: 44px; }
.ctd-save-btn svg { width: 14px; height: 14px; }
.ctd-save-btn:hover { border-color: var(--gcx-forest); background: #fff; }
.ctd-save-btn[aria-pressed="true"] { background: var(--gcx-forest); border-color: var(--gcx-forest); color: #fff; }
.ctd-save-btn:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; }
.ctd-hide-btn { margin-left: auto; background: none; border: none; font-family: var(--gcx-sans); font-size: 12.5px; font-weight: 600; color: var(--gcx-ink-2); opacity: .55; cursor: pointer; padding: 10px 6px; min-height: 44px; transition: opacity .15s, color .15s; }
.ctd-row:hover .ctd-hide-btn, .ctd-hide-btn:focus-visible { opacity: 1; }
.ctd-hide-btn:hover { color: var(--gcx-sienna); }
.ctd-hide-btn:focus-visible { outline: 2px solid var(--gcx-forest-light); outline-offset: 2px; border-radius: 6px; }
.ctd-unhide { background: none; border: none; font-family: var(--gcx-sans); font-size: 13px; font-weight: 600; color: var(--gcx-sienna); cursor: pointer; padding: 2px 4px; text-decoration: underline; text-underline-offset: 2px; }
/* Saved rail pill gets the bookmark accent when active */
.ctd-chiptoggle--saved[aria-pressed="true"] { background: var(--gcx-sienna); border-color: var(--gcx-sienna); }
.ctd-chiptoggle--saved[hidden] { display: none; }
/* Shortlist section */
.ctd-shortlist { padding-top: 26px; } /* vertical only — see .ctd-results gutter note */
.ctd-shortlist .ctd-list { border-top: 1px solid var(--gcx-line); }
.ctd-shortlist-gone { list-style: none; font-size: 13px; color: var(--gcx-ink-2); padding: 12px 0 14px; border-bottom: 1px solid var(--gcx-line); }
/* Updated chip (amendment tracking) */
.ctd-updated { font-family: var(--gcx-sans); font-size: 10.5px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: #6b4a12; background: #f6ead2; border: 1px solid #e8d5a8; padding: 3px 8px; border-radius: 6px; }
/* Group dividers */
.ctd-divider { list-style: none; font-family: var(--gcx-mono); font-size: 11px; letter-spacing: .09em; text-transform: uppercase; color: var(--gcx-forest-light); padding: 22px 0 8px 10px; border-bottom: 1px solid var(--gcx-line); }
/* Toast */
.ctd-toast { position: fixed; left: 50%; bottom: 26px; transform: translate(-50%, 16px); z-index: 9600; background: var(--gcx-forest-dk); color: #fff; font-family: var(--gcx-sans); font-size: 14px; padding: 12px 20px; border-radius: 10px; box-shadow: 0 6px 24px rgba(15,42,31,.3); opacity: 0; transition: opacity .2s, transform .2s; pointer-events: none; max-width: min(92vw, 480px); text-align: center; }
.ctd-toast.show { opacity: 1; transform: translate(-50%, 0); pointer-events: auto; }
.ctd-toast button { background: none; border: none; color: #e8a87c; font-family: var(--gcx-sans); font-size: 14px; font-weight: 700; cursor: pointer; margin-left: 10px; padding: 2px 4px; text-decoration: underline; }
/* Account magnet (soft — shortlist_v1 doctrine) */
.ctd-magnet { position: relative; background: var(--ctd-paper); border: 1px solid var(--gcx-line); border-left: 4px solid var(--gcx-sienna); border-radius: 0 14px 14px 0; padding: 24px 28px 22px; margin: 0 0 18px; }
.ctd-magnet[hidden] { display: none; }
.ctd-magnet h3 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 20px; font-weight: 600; margin: 0 0 6px; }
.ctd-magnet p { font-size: 14.5px; color: var(--gcx-ink-2); line-height: 1.55; margin: 0 0 16px; max-width: 56ch; }
.ctd-magnet-x { position: absolute; top: 10px; right: 12px; background: none; border: none; font-size: 22px; line-height: 1; color: var(--gcx-ink-2); opacity: .6; cursor: pointer; padding: 6px; }
.ctd-magnet-x:hover { opacity: 1; }
.ctd-magnet-cta { display: inline-block; background: var(--gcx-sienna); color: #fff !important; font-weight: 700; font-size: 15px; padding: 12px 22px; border-radius: 10px; text-decoration: none; }
/* gc-signup renderInline re-tokenized to the ctd palette */
.ctd-magnet .gcs { max-width: 340px; text-align: left; }
.ctd-magnet .gcs-google { width: 100%; display: flex; align-items: center; justify-content: center; gap: 10px; background: #fff; border: 1px solid var(--gcx-line); border-radius: 10px; padding: 12px 16px; font-family: inherit; font-size: 14.5px; font-weight: 600; color: var(--gcx-ink); cursor: pointer; transition: background .12s, box-shadow .12s; }
.ctd-magnet .gcs-google:hover { background: var(--gcx-cream); box-shadow: 0 2px 8px rgba(26,61,46,.08); }
.ctd-magnet .gcs-google:disabled { opacity: .55; cursor: default; }
.ctd-magnet .gcs-or { display: flex; align-items: center; gap: 10px; margin: 12px 0; color: var(--gcx-ink-2); font-size: 12px; }
.ctd-magnet .gcs-or::before, .ctd-magnet .gcs-or::after { content: ""; flex: 1; height: 1px; background: var(--gcx-line); }
.ctd-magnet .gcs-form { display: flex; flex-direction: column; gap: 8px; }
.ctd-magnet .gcs-name, .ctd-magnet .gcs-email, .ctd-magnet .gcs-pw { width: 100%; box-sizing: border-box; border: 1px solid var(--gcx-line); border-radius: 9px; padding: 11px 13px; font-family: inherit; font-size: 14px; color: var(--gcx-ink); background: #fff; }
.ctd-magnet .gcs-name:focus, .ctd-magnet .gcs-email:focus, .ctd-magnet .gcs-pw:focus { outline: 2px solid var(--gcx-forest-light); outline-offset: -1px; border-color: var(--gcx-forest-light); }
.ctd-magnet .gcs-email-btn { width: 100%; background: var(--gcx-sienna); color: #fff; border: 0; border-radius: 9px; padding: 12px; font-family: inherit; font-size: 14.5px; font-weight: 700; cursor: pointer; }
.ctd-magnet .gcs-email-btn:hover { background: var(--gcx-sienna-dk); }
.ctd-magnet .gcs-err { min-height: 15px; margin-top: 9px; font-size: 12.5px; color: var(--gcx-sienna-dk); }
.ctd-magnet .gcs-err:empty { min-height: 0; margin-top: 0; }
.ctd-magnet .gcs-toggle { margin-top: 11px; font-size: 12.5px; color: var(--gcx-ink-2); }
.ctd-magnet .gcs-signin-link { background: none; border: 0; color: var(--gcx-forest-light); font-family: inherit; font-size: 12.5px; font-weight: 600; cursor: pointer; text-decoration: underline; padding: 0; }
/* Win panel */
.ctd-win { background: var(--gcx-parchment); border: 1px solid var(--gcx-line); border-radius: 12px; padding: 18px 22px 14px; margin: 0 0 18px; max-width: 68ch; }
.ctd-win h4 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 16.5px; font-weight: 600; margin: 0 0 10px; }
.ctd-win ul { margin: 0; padding-left: 20px; }
.ctd-win li { font-size: 14px; line-height: 1.6; color: var(--gcx-ink-2); margin: 0 0 8px; }
.ctd-win li::marker { color: var(--gcx-sienna); }
.ctd-win-foot { font-size: 13px; line-height: 1.6; color: #6b6a5f; border-top: 1px dashed var(--gcx-line); margin: 12px 0 0; padding: 10px 0 2px; }
.ctd-win-foot a, .ctd-win-foot a:visited { color: var(--gcx-sienna-dk); font-weight: 600; text-decoration: none; }
.ctd-win-foot a:hover, .ctd-win-foot a:focus { color: var(--gcx-forest); text-decoration: underline; }
/* No-official-link honesty box (51% of feed records; never fabricate a deep link) */
.ctd-findbox { background: #fdf3e7; border: 1px solid #ecd9bd; border-radius: 10px; padding: 13px 16px; margin: 0 0 16px; font-size: 13.5px; line-height: 1.7; color: #5a4636; max-width: 68ch; }
.ctd-findbox b { color: var(--gcx-sienna-dk); }
.ctd-findbox-num { background: #fff; border: 1px solid var(--gcx-line); border-radius: 6px; padding: 2px 8px; font-size: 12.5px; white-space: nowrap; }
.ctd-copy-btn { font-family: var(--gcx-mono); font-size: 11.5px; font-weight: 600; color: var(--gcx-forest); background: #fff; border: 1px solid var(--gcx-line); border-radius: 6px; padding: 4px 10px; cursor: pointer; min-height: 28px; }
.ctd-copy-btn:hover { border-color: var(--gcx-forest-light); }
.ctd-findbox a, .ctd-findbox a:visited { color: var(--gcx-sienna-dk); font-weight: 600; text-decoration: none; white-space: nowrap; }
.ctd-findbox a:hover, .ctd-findbox a:focus { color: var(--gcx-forest); text-decoration: underline; }

/* ================= Dossier polish (2026-07-20 founder-review round) ================= */
/* date block: standing arrangements show "open", never a 27,192-day countdown */
.ctd-date b.ctd-date-open { font-size: 13px; letter-spacing: .06em; text-transform: uppercase; font-family: var(--gcx-mono); font-weight: 600; padding-top: 5px; display: block; color: inherit; }
/* long descriptions clamp with a fade + explicit toggle — a 2,400-char wall
   buried the facts grid and the win panel */
.ctd-desc-wrap { position: relative; }
.ctd-desc-wrap.clamped .ctd-desc-inner { max-height: 340px; overflow: hidden; }
.ctd-desc-wrap.clamped::before { content: ''; position: absolute; left: 0; right: 0; top: 270px; height: 70px; background: linear-gradient(180deg, rgba(255,253,248,0), var(--ctd-paper)); pointer-events: none; }
.ctd-desc-more { display: block; margin: 6px 0 14px; background: none; border: 1px solid var(--gcx-line); border-radius: 9px; padding: 9px 16px; font-family: var(--gcx-sans); font-size: 13.5px; font-weight: 700; color: var(--gcx-forest); cursor: pointer; min-height: 40px; }
.ctd-desc-more:hover { border-color: var(--gcx-forest-light); background: var(--gvc-sage, #eef2ea); }
.ctd-desc-more[hidden] { display: none; }
/* description typography: readable measure + breathing room */
.ctd-detail-desc { max-width: 66ch; line-height: 1.7; }
.ctd-detail-list { max-width: 66ch; }
.ctd-detail-list li { margin: 0 0 10px; line-height: 1.65; }
/* win panel: calmer markers + tighter rhythm */
.ctd-win ul { padding-left: 18px; }
.ctd-win li::marker { content: '\2192  '; color: var(--gcx-sienna); font-size: 12px; }
/* findbox: give the copy row its own line + real button hierarchy */
.ctd-findbox { display: block; }
.ctd-findbox .ctd-findbox-row { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin-top: 8px; }
.ctd-findbox a.ctd-findbox-go { display: inline-flex; align-items: center; gap: 6px; background: var(--gcx-forest); color: #fff; font-weight: 700; font-size: 13px; padding: 8px 14px; border-radius: 8px; text-decoration: none; }
.ctd-findbox a.ctd-findbox-go:hover, .ctd-findbox a.ctd-findbox-go:focus { background: var(--gcx-forest-light); color: #fff; text-decoration: none; }
/* detail foot: consistent rhythm */
.ctd-detail-foot { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 18px; }

/* Returning-user compact hero (pre-paint class on <html>) */
.ctd-return .ctd-mast { padding-top: 34px; }
.ctd-return .ctd-mast-sub, .ctd-return .ctd-mast-meta { display: none; }
.ctd-return .ctd-mast h1 { font-size: clamp(26px, 3.6vw, 34px); margin-bottom: 10px; }
.ctd-return .ctd-ticker { padding: 16px 0 20px; }
@media (max-width: 640px) {
    .ctd-hide-btn { margin-left: 0; }
    .ctd-save-btn { padding: 8px 12px; }
}
@media (prefers-reduced-motion: reduce) { .ctd-toast { transition: none; } }
/* a Hide control on something you SAVED is a contradiction — not in the shortlist */
.ctd-shortlist .ctd-hide-btn { display: none; }

/* ---- mobile filter bottom sheet + active-filter chips ---- */
.ctd-sheet-btn { display: none; }
.ctd-chipstrip { display: flex; flex-wrap: wrap; gap: 6px; padding: 0 22px 10px; max-width: 980px; margin: 0 auto; }
.ctd-chipstrip[hidden] { display: none; }
.ctd-fchip { display: inline-flex; align-items: center; gap: 6px; background: var(--gcx-forest); color: #fff; border: none; border-radius: 999px; padding: 6px 12px; font-family: var(--gcx-sans); font-size: 12.5px; font-weight: 600; cursor: pointer; }
.ctd-fchip span { opacity: .8; font-size: 14px; line-height: 1; }
.ctd-fchip:hover span { opacity: 1; }
@media (max-width: 700px) {
    .ctd-sheet-btn { display: inline-flex; }
    body:not(.ctd-sheet-open) .ctd-rail-row2 { display: none; } /* controls live in the sheet on mobile */
    .ctd-chipstrip { padding: 0 14px 8px; }
}
#ctdSheetWrap { position: fixed; inset: 0; z-index: 9500; pointer-events: none; visibility: hidden; }
#ctdSheetWrap.open { pointer-events: auto; visibility: visible; }
.ctd-sheet-overlay { position: absolute; inset: 0; background: rgba(15,42,31,.45); opacity: 0; transition: opacity .22s; }
#ctdSheetWrap.open .ctd-sheet-overlay { opacity: 1; }
.ctd-sheet { position: absolute; left: 0; right: 0; bottom: 0; background: var(--ctd-paper); border-radius: 18px 18px 0 0; padding: 10px 20px calc(18px + env(safe-area-inset-bottom, 0px)); transform: translateY(102%); transition: transform .26s cubic-bezier(.22,.9,.3,1); max-height: 86vh; overflow-y: auto; box-shadow: 0 -8px 32px rgba(15,42,31,.22); }
#ctdSheetWrap.open .ctd-sheet { transform: translateY(0); }
.ctd-sheet-bar { width: 40px; height: 4px; border-radius: 999px; background: var(--gcx-line); margin: 4px auto 12px; }
.ctd-sheet h3 { font-family: var(--gcx-serif); color: var(--gcx-forest); font-size: 19px; font-weight: 600; margin: 0 0 14px; }
.ctd-sheet-field { display: block; margin: 0 0 14px; }
.ctd-sheet-field > span { display: block; font-family: var(--gcx-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; color: var(--gcx-forest-light); font-weight: 600; margin-bottom: 6px; }
.ctd-sheet-field select { width: 100%; max-width: none; min-height: 48px; }
.ctd-sheet-slot { margin: 4px 0 6px; }
.ctd-sheet-slot .ctd-chiptoggle { width: 100%; justify-content: center; min-height: 48px; }
.ctd-sheet-foot { display: flex; gap: 12px; margin-top: 16px; }
.ctd-sheet-reset { flex: 0 0 auto; background: none; border: 1px solid var(--gcx-line); border-radius: 10px; padding: 13px 18px; font-family: var(--gcx-sans); font-size: 14.5px; font-weight: 600; color: var(--gcx-sienna); cursor: pointer; min-height: 48px; }
.ctd-sheet-done { flex: 1; background: var(--gcx-forest); color: #fff; border: none; border-radius: 10px; padding: 13px; font-family: var(--gcx-sans); font-size: 15px; font-weight: 700; cursor: pointer; min-height: 48px; }
body.ctd-sheet-open { overflow: hidden; }
@media (prefers-reduced-motion: reduce) { .ctd-sheet, .ctd-sheet-overlay { transition: none; } }
