/* ============================================================================
   Plush74 Collections 2026 — Client Share / Review surface (C1)  ·  FINAL PUSH
   Surface root: .p74cs-root   ·   Page scope: .p74cs-page (+ body.p74cs-body)
   Loaded (after the shared kit collections-2026.css) by plush74-collections-2026.php
   on every /account/ page; all rules stay scoped to this surface's classes.

   ROUND 2 rebuilt the surface to the corrected 2026 language. FINAL PUSH
   (2026-07-02, DESIGN_LANGUAGE.md + ISSUES.md SH-*) adds:

     SH-1  ONE left alignment rail: the page adopts the header's gutter
           (55px @1440, 15px mobile) — eyebrow/title, grid, CTA row all on it.
     SH-2  Two-line vocabulary: every separator is the kit hairline token
           (--p74c-hair); the view root now carries .p74c-reset (kills the
           legacy td.co black border + responsive-table cell borders), and on
           mobile the cards drop their 4-side frames for ONE divider style.
     SH-4  Mobile tap targets: picks 46px, carousel arrows 44px.
     SH-5  Lazy slides (hydrated from data-p74cs-bg by the view's JS).
     SH-6  Client-facing state chips (kit chip family), SH-7 clean page head,
     SH-9  CTA note, SH-11 header plate neutralized on this page only.

   FUNCTIONS IDENTICAL: every JS hook (.p74c__pick-heart/-approve/-reject,
   .wishlisting_field, data-idwishlist_listing, .p74cs-* carousel,
   #p74c_review_grid, .is-terminal, frontendajax_wishlistingedit) is kept
   verbatim — this file ONLY skins. Square corners, flat. Cyon-deploy-ready.
   ========================================================================= */

/* ---------------------------------------------------------------------------
   0. SH-1 — the page rail. One container, the header's gutter, everything on
   the same left edge. The legacy bootstrap rows/cols inside this view carried
   3 different indents (0 / 15px / -2px overhang) — flatten them all.
   --------------------------------------------------------------------------- */
.p74cs-page {
    --p74cs-gutter:55px;                     /* header logo x @1440 */
    padding-left:var(--p74cs-gutter);
    padding-right:var(--p74cs-gutter);
    padding-bottom:48px;
}
@media (max-width:767px){ .p74cs-page { --p74cs-gutter:15px; } }
.p74cs-page .row,
.p74cs-page .row-flex { margin-left:0 !important; margin-right:0 !important; }
.p74cs-page [class*="col-md"],
.p74cs-page [class*="col-lg"],
.p74cs-page [class*="col-sm"] {
    padding-left:0 !important; padding-right:0 !important;
    margin-left:0 !important; margin-right:0 !important;  /* theme .no-padding col ships -2px */
}

.p74cs-root { font-family:var(--p74c-font); color:var(--p74c-ink); }
.p74cs-page .panel,
.p74cs-page .panel-default { border:0; box-shadow:none; background:transparent; margin-bottom:0; }
.p74cs-page .panel-heading { display:none; }      /* "Request data" panel title — noise on a client page */
.p74cs-page .panel-body { padding:0; }

/* ---------------------------------------------------------------------------
   0b. SH-7 — client page head (eyebrow + title). Replaces the Excel-era
   "COLLECTION NAME" table row for clients; the legacy row stays in the DOM
   (form fields byte-identical) but hidden.
   --------------------------------------------------------------------------- */
.p74cs-legacy-hidden { display:none !important; }
.p74cs-head { padding:26px 0 18px; border-bottom:1px solid var(--p74c-hair); margin-bottom:26px; }
.p74cs-head__eyebrow {
    font-size:10px; font-weight:700; text-transform:uppercase; letter-spacing:0.08em;
    color:var(--p74c-muted); margin-bottom:7px;
}
.p74cs-head__title {
    margin:0; font-family:var(--p74c-font-disp); font-size:26px; font-weight:700;
    line-height:1.15; text-transform:uppercase; letter-spacing:0.02em; color:var(--p74c-ink);
}
@media (max-width:600px){ .p74cs-head { padding-top:18px; margin-bottom:4px; } .p74cs-head__title { font-size:21px; } }

/* ---------------------------------------------------------------------------
   1. Legacy "Request data" meta strip (STAFF hash only now) — calm editorial
   grid of labelled facts on paper: no box, no grey cells, ONE hairline under it.

   POLISH round-1 (Finding 1): every EMPTY field is now OMITTED entirely — no
   lone "—" placeholder, no empty labelled row. The legacy <table> is linearised
   into a reflowing 3-column grid of self-contained field blocks (the label comes
   from each value cell's own data-label; the value sits beneath it). Because the
   filled fields flow into the grid in source order, the remaining fields always
   pack tight and stay aligned whatever the empty pattern — a per-cell display:none
   on a real <table> would shift later cells out of their columns (verified on a
   part-filled collection). Markup, POST fields and the readonly inputs are all
   untouched — CSS only. (.p74c-reset already flattened the black legacy borders.)
   --------------------------------------------------------------------------- */
.p74cs-page .preview-pdf .table_preview-pdf {
    display:grid; grid-template-columns:repeat(3, minmax(0,1fr));
    column-gap:34px; row-gap:2px; align-items:start;
    margin:0 0 22px !important; border:0 !important;
    border-bottom:1px solid var(--p74c-hair) !important;
    background:transparent !important; text-transform:none; width:100%;
}
/* collapse the table wrappers so every value cell becomes a direct grid item */
.p74cs-page .preview-pdf .table_preview-pdf tbody,
.p74cs-page .preview-pdf .table_preview-pdf tr { display:contents; }
/* labels are rendered from each cell's data-label — drop the legacy <th> */
.p74cs-page .preview-pdf .table_preview-pdf th { display:none !important; }
/* value cell = one field block: eyebrow label (::before) + value, stacked.
   width:100% + justify-self:stretch so each block fills its grid track (a
   display:contents td otherwise sizes to max-content and clips the value). */
.p74cs-page .preview-pdf .table_preview-pdf td.col,
.p74cs-page .preview-pdf .table_preview-pdf td.co {
    display:flex; flex-direction:column; gap:3px;
    width:100%; justify-self:stretch;
    border:0 !important; padding:14px 0 6px !important; min-width:0 !important;
    background:transparent !important; text-align:left !important; vertical-align:top;
    font-family:var(--p74c-font); font-size:13px; font-weight:700;
    text-transform:uppercase; letter-spacing:0.03em; color:var(--p74c-ink);
}
.p74cs-page .preview-pdf .table_preview-pdf td.col .form-group,
.p74cs-page .preview-pdf .table_preview-pdf td.co .form-group { width:100%; }
.p74cs-page .preview-pdf .table_preview-pdf td .form-control { width:100%; display:block; }
.p74cs-page .preview-pdf .table_preview-pdf td.co { grid-column:1 / -1; }   /* Collection Name spans the row */
/* eyebrow label from data-label (small-caps muted — DL) */
.p74cs-page .preview-pdf .table_preview-pdf td.col::before,
.p74cs-page .preview-pdf .table_preview-pdf td.co::before {
    content:attr(data-label); display:block;
    font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:0.07em;
    color:var(--p74c-muted); line-height:1.2;
}
/* value typography — inherits the block styling; only reset the input chrome */
.p74cs-page .preview-pdf .table_preview-pdf td .form-control,
.p74cs-page .preview-pdf .table_preview-pdf td textarea {
    border:0 !important; background:transparent !important; box-shadow:none !important;
    padding:0 !important; margin:0; line-height:1.35; height:auto; min-height:0;
    text-align:left !important; font:inherit; text-transform:inherit;
    letter-spacing:inherit; color:inherit; resize:none;
}
/* ONLY the collection-name value reads at title size (td.co class-typo row) */
.p74cs-page .preview-pdf .table_preview-pdf td.co .form-control {
    font-family:var(--p74c-font-disp); font-size:18px; letter-spacing:0.02em;
    line-height:1.25; text-transform:uppercase;
}
/* placeholders: muted, sentence case (DL — no SHOUTING) */
.p74cs-page .preview-pdf .table_preview-pdf .form-control::placeholder,
.p74cs-page .preview-pdf .table_preview-pdf textarea::placeholder {
    color:var(--p74c-faint); text-transform:none; font-weight:400;
}
.p74cs-page .preview-pdf .table_preview-pdf .form-group { margin:0; }
/* custom-media.css gives .field_event_producer margin-left:-10px on mobile, which
   clipped the producer value's first glyph ("S"ANDI…) — neutralise it here */
.p74cs-page .preview-pdf .table_preview-pdf .form-group.field_event_producer { margin:0 !important; }
/* keep the terms textarea's own inline height (shows full boilerplate); just full width */
.p74cs-page .preview-pdf .table_preview-pdf td textarea { width:100%; }
.p74cs-page .preview-pdf .input-group.date { display:block; }
/* readonly share: the calendar addon glyph is a non-functional stray (it floated
   to the far edge of the meta once the input went full-width) — hide it */
.p74cs-page .preview-pdf .input-group.date .input-group-addon { display:none !important; }
.p74cs-page .preview-pdf .table_cover { overflow:visible; }

/* ---------------------------------------------------------------------------
   1a. Finding 1 — OMIT any empty field. The view tags an empty value wrapper
   with .p74cs-empty; we drop the WHOLE field block (label + value) so nothing
   remains — no "—", no orphan label. The grid reflows the filled fields. The
   underlying <input>/<select> stays in the DOM (POST byte-identical); it is
   only visually removed with its block.
   The PRODUCER renders as a plain-text NAME (.p74cs-metaval); its
   event_producer[] <select> stays as a hidden POST stub so it reads like its
   siblings and the email is not shown twice.
   --------------------------------------------------------------------------- */
.p74cs-page .preview-pdf .table_preview-pdf td.col:has(> .form-group.p74cs-empty),
.p74cs-page .preview-pdf .table_preview-pdf td.co:has(> .form-group.p74cs-empty) {
    display:none !important;
}
.p74cs-page .preview-pdf .p74cs-poststub { display:none !important; }
.p74cs-page .preview-pdf .p74cs-metaval {
    font:inherit; color:inherit; text-transform:inherit; letter-spacing:inherit;
    line-height:1.35; white-space:normal; word-break:break-word;
}

/* the "Request data" form alert region — keep on paper, no stray boxes */
.p74cs-page .alert_box_m:empty { display:none; }

/* ---------------------------------------------------------------------------
   1b. MOBILE staff meta — one field per row, tight single column. The grid just
   collapses to a single column; empty fields are already omitted by §1a.
   --------------------------------------------------------------------------- */
@media (max-width:767px){
    .p74cs-page .preview-pdf .table_preview-pdf {
        grid-template-columns:1fr; column-gap:0; row-gap:0;
        margin:0 0 18px !important;
    }
    .p74cs-page .preview-pdf .table_preview-pdf td.col,
    .p74cs-page .preview-pdf .table_preview-pdf td.co { padding:11px 0 3px !important; }
    .p74cs-page .preview-pdf .table_preview-pdf td.co .form-control { font-size:16px; }
}

/* ---------------------------------------------------------------------------
   2. THE CLIENT REVIEW GRID.
   MOCK 07-17 (owner fb #34, sign-off pending): base rule below is the
   ORIGINAL soft-card fallback — kept verbatim so list view (§10) and the
   mobile single-divider stack (§7) render exactly as before. The /find-style
   hard black lattice is layered on top for the GRID view only, further down.
   --------------------------------------------------------------------------- */
.p74cs-root .p74c__grid {
    border:0 !important; gap:18px;
    grid-template-columns:repeat(3, minmax(0, 1fr));
}
@media (max-width:980px){ .p74cs-root .p74c__grid { grid-template-columns:repeat(2, minmax(0, 1fr)); gap:16px; } }
@media (max-width:600px){ .p74cs-root .p74c__grid { grid-template-columns:1fr; gap:0; } }

.p74cs-root .p74c__card {
    border:1px solid var(--p74c-hair) !important; border-radius:0;
    background:var(--p74c-paper); overflow:hidden;
    transition:border-color .15s ease, opacity .35s ease, filter .35s ease;
}
.p74cs-root .p74c__card:hover { border-color:var(--p74c-hair-hover) !important; }

/* 2a. MOCK 07-17 — owner fb #34 "clear lines / use the /find grid": swap the
   soft separate cards for a /find-style hard black lattice (gap:0, one
   continuous 1px #111 rule shared by every card edge) on the GRID view only.
   :not(.is-list) keeps list rows (§10) on the original hairline card above —
   untouched. The ≥601px guard keeps this out of §7's mobile stacked pass on
   PURPOSE: a plain :not(.is-list) selector is MORE specific than §7's
   `.p74cs-root .p74c__card` mobile override and would out-specificity it even
   though §7 comes later in the file — the media guard removes that risk
   entirely rather than relying on cascade order. */
@media (min-width:601px){
    .p74cs-root:not(.is-list) .p74c__grid {
        gap:0 !important;
        border-left:1px solid var(--p74c-ink,#111) !important;
        border-top:1px solid var(--p74c-ink,#111) !important;
    }
    .p74cs-root:not(.is-list) .p74c__card {
        border:0 !important; border-radius:0 !important;
        border-right:1px solid var(--p74c-ink,#111) !important;
        border-bottom:1px solid var(--p74c-ink,#111) !important;
        transition:background .15s ease, opacity .35s ease, filter .35s ease;
    }
    .p74cs-root:not(.is-list) .p74c__card:hover { background:var(--p74c-soft); }
}

/* card image — paper (NOT grey) fallback while photos lazy-load; full-bleed */
.p74cs-root .p74c__card-img { background:var(--p74c-paper); border-bottom:1px solid var(--p74c-hair); }
.p74cs-root .p74c__card-body { padding:13px 15px 15px; gap:7px; }
/* MOCK 07-17 — owner fb #34 "grey miniature text": was 14px/10.5px, reading
   smaller/greyer than the /find grid's own .p74-find__name (15px/700). Match
   it here so the two grids read as one family. */
.p74cs-root .p74c__card-name { font-family:var(--p74c-font-disp); font-size:15px; font-weight:700; letter-spacing:0.005em; }
.p74cs-root .p74c__card-meta { font-size:11.5px; }
.p74cs-root .p74c__card-meta .color-link { color:var(--p74c-muted); text-decoration:none; }
.p74cs-root .p74c__card-meta .color-link:hover { color:var(--p74c-ink); text-decoration:underline; }
/* the staff-only "#123" internal id (bare <span>, no class — the ONLY
   unclassed span this container ever renders; the "Listing Removed" flag
   uses .label and the address uses .color-link, both untouched below) reads
   too loud next to the address — quiet + shrink it so the address (client-
   relevant) leads. */
.p74cs-root .p74c__card-meta > span:not(.label) {
    color:var(--p74c-faint); font-weight:400; font-size:9.5px; letter-spacing:0.03em;
}
/* "Shortlist" corner tag (STAFF hash only since SH-8) — lime accent, ink text */
.p74cs-root .p74c__card-tag {
    background:var(--p74c-lime); color:var(--p74c-ink);
    font-size:9px; font-weight:700; letter-spacing:0.05em; padding:3px 8px;
}
/* SH-6 client-facing state chip row (kit chip family renders the chip itself) */
.p74cs-root .p74cs-statechip { margin-top:2px; }
/* "Listing removed" — quiet outline, not a red bootstrap box */
.p74cs-root .label.label-danger {
    background:var(--p74c-paper); color:var(--p74c-muted); border:1px solid var(--p74c-hair);
    border-radius:0; padding:2px 7px; font-size:9px; font-weight:700; text-transform:uppercase; letter-spacing:0.03em;
}

/* ---------------------------------------------------------------------------
   3. In-card image carousel (no lightbox; arrows + swipe + dots).
   Geometry matches the kit's .p74c__card-img aspect-ratio:528/309.
   NOTE: selectors are ≥3 classes deep on purpose — the kit's .p74c-reset
   button rule is (0,2,1) and must lose to the deliberate arrow styling.
   --------------------------------------------------------------------------- */
.p74cs-scroller {
    display:flex; width:100%; height:100%;
    overflow-x:auto; scroll-snap-type:x mandatory;
    -webkit-overflow-scrolling:touch; touch-action:pan-x; overscroll-behavior-x:contain;
    scrollbar-width:none;
}
.p74cs-scroller::-webkit-scrollbar { display:none; }

.p74cs-slide {
    flex:0 0 100%; height:100%; scroll-snap-align:center;
    background-size:cover; background-position:center; background-repeat:no-repeat;
    background-color:var(--p74c-paper);   /* paper, NOT grey (owner rule #1) */
    display:block;
}

/* Finding 1 (round 2) — designed no-photo tile: rendered ONLY when a listing has
   zero images that still exist on disk (deleted uploads). Fills the card-img
   frame with a calm editorial empty state (muted image glyph + small-caps label)
   so a client-facing card is never a bare white slide with live arrows/dots. */
.p74cs-root .p74cs-nophoto {
    position:absolute; inset:0;
    display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px;
    background:var(--p74c-soft); color:var(--p74c-muted); text-align:center; padding:14px;
}
.p74cs-root .p74cs-nophoto svg { width:30px; height:30px; opacity:.5; }
.p74cs-root .p74cs-nophoto span {
    font-size:9.5px; font-weight:700; text-transform:uppercase; letter-spacing:0.08em;
    color:var(--p74c-faint);
}

/* pagination dots (not tap targets — pointer-events:none) */
.p74cs-dots {
    position:absolute; bottom:8px; left:0; right:0; z-index:3;
    display:flex; justify-content:center; gap:5px; pointer-events:none;
}
.p74cs-dots span {
    width:6px; height:6px; border-radius:50%;
    background:rgba(255,255,255,0.55); border:0.5px solid rgba(0,0,0,0.4);
    transition:background .15s;
}
.p74cs-dots span.is-on { background:#fff; }

/* prev / next nav — reveal on card hover (round button is the only round shape) */
.p74cs-root .p74c__card-img .p74cs-nav {
    position:absolute; top:50%; transform:translateY(-50%); z-index:3;
    width:30px; height:30px; border-radius:50%;
    background:rgba(255,255,255,0.9); border:0; cursor:pointer;
    opacity:0; transition:opacity .15s;
    display:flex; align-items:center; justify-content:center; padding:0;
}
.p74cs-root .p74c__card:hover .p74cs-nav { opacity:1; }
.p74cs-root .p74c__card-img .p74cs-nav:focus-visible { opacity:1; outline:2px solid var(--p74c-ink); }
.p74cs-root .p74c__card-img .p74cs-nav.prev { left:8px; }
.p74cs-root .p74c__card-img .p74cs-nav.next { right:8px; }
.p74cs-root .p74c__card-img .p74cs-nav svg { width:14px; height:14px; }

/* SH-4: touch devices — arrows always visible and ≥44px tap targets */
@media (hover:none) {
    .p74cs-root .p74c__card-img .p74cs-nav { opacity:.92; width:44px; height:44px; }
    .p74cs-root .p74c__card-img .p74cs-nav svg { width:17px; height:17px; }
}

/* ---------------------------------------------------------------------------
   4. CLIENT PICK CONTROLS — ONE segmented control on the kit hairline.
   ACTIVE pick = quiet lime accent (lime-bg + INK text); "rejected" = quiet
   de-emphasis (struck + faded) — never a black bar. Hooks unchanged.
   --------------------------------------------------------------------------- */
.p74cs-root .p74c__client-picks {
    display:flex; gap:0; margin-top:4px;
    border:1px solid var(--p74c-hair);       /* one shared hairline frame */
}
.p74cs-root .p74c__client-picks .p74c__btn {
    flex:1 1 0; min-width:0; height:34px; padding:0 6px; gap:5px;
    border:0 !important; border-radius:0 !important;
    background:var(--p74c-paper) !important; color:var(--p74c-ink) !important;
    box-shadow:none !important; font-size:10.5px; font-weight:700;
    letter-spacing:0.03em; text-transform:uppercase; white-space:nowrap;
    transition:background .15s, color .15s;
}
/* single hairline between the three — never a double/black divider */
.p74cs-root .p74c__client-picks .p74c__btn + .p74c__btn { border-left:1px solid var(--p74c-hair) !important; }
.p74cs-root .p74c__client-picks .p74c__btn:hover { background:var(--p74c-soft) !important; color:var(--p74c-ink) !important; }

.p74cs-root .p74c__heart-glyph { font-size:12px; line-height:1; }

/* ---------------------------------------------------------------------------
   4a. ROUND-3 polish — one baseline for every card's action bar.
   Grid cards are equal height per row (grid stretch), but the card BODY packed
   its content to the top, so a card WITHOUT a masked address line (or with a
   shorter title) lifted its SHORTLIST/APPROVE/REJECT bar ~30px above a
   neighbour that HAS an address — a visible stagger along the row. Let the body
   fill the card and push the pick bar to the bottom, so every card's action bar
   lands on ONE baseline regardless of how much meta sits above it. Layout-only;
   markup, hooks and the segmented-control styling above are unchanged. (Staff
   cards have no .p74c__client-picks, so they keep their top-packed layout.) */
.p74cs-root .p74c__card-body { flex:1 1 auto; }
/* the view ships an inline style="margin-top:2px" on the pick bar; override it
   (inline wins over a normal rule, loses to an author !important) so the auto
   margin can absorb the meta-height difference and drop the bar to the base. */
.p74cs-root .p74c__card-body .p74c__client-picks { margin-top:auto !important; }

/* SHORTLIST active = lime accent (lime-bg + INK text) */
.p74cs-root .p74c__pick-heart.is-on,
.p74cs-root .p74c__client-picks .p74c__pick-heart.is-on {
    background:var(--p74c-lime) !important; color:var(--p74c-ink) !important;
}
.p74cs-root .p74c__pick-heart.is-on .p74c__heart-glyph { color:var(--p74c-ink); }

/* APPROVE active = lime accent (lime-bg + ink text). Override the kit's
   .p74c__btn--go so it matches the segmented control exactly. */
.p74cs-root .p74c__client-picks .p74c__pick-approve.is-on,
.p74cs-root .p74c__client-picks .p74c__pick-approve.p74c__btn--go {
    background:var(--p74c-lime) !important; color:var(--p74c-ink) !important;
}

/* REJECT selected = a clean ink-outline "chosen" state from the button family
   (--ink = ink outline on paper), NEVER a dark/black fill. Round-2 (Finding 2):
   the previous struck-through + muted-grey fill read as a DISABLED control (and
   sat inconsistently next to the plain siblings on the same row). The card
   already signals rejection on its own (dim + sink + struck NAME); the button
   just needs to read as the active pick — parallel to the lime APPROVE selection
   — with full ink text (not muted) and no strikethrough. The JS toggles
   .p74c__btn--ink on reject; this styles that state. */
.p74cs-root .p74c__client-picks .p74c__pick-reject.is-on,
.p74cs-root .p74c__client-picks .p74c__pick-reject.p74c__btn--ink {
    background:var(--p74c-paper) !important; color:var(--p74c-ink) !important;
    box-shadow:inset 0 0 0 1.5px var(--p74c-ink) !important;
    font-weight:700; text-decoration:none;
}
.p74cs-root .p74c__client-picks .p74c__pick-reject.is-on:hover { background:var(--p74c-soft) !important; }

/* SH-4: mobile tap targets ≥44px on the primary pick row + CTA buttons */
@media (max-width:767px){
    .p74cs-root .p74c__client-picks .p74c__btn { height:46px; font-size:11px; }
    .p74cs-cta .p74c__btn { height:46px; padding:0 22px; }
}

/* "View conversation" deep-link chip (additive, visitor-hash gated in PHP) */
.p74cs-root .p74cs-chatlink {
    font-size:10px; font-weight:600; text-transform:uppercase; letter-spacing:0.05em;
    color:var(--p74c-ink); text-decoration:underline; text-underline-offset:2px;
}
.p74cs-root .p74cs-chatlink:hover { color:var(--p74c-muted); }

/* STAFF-hash view: the inline status read-out + shortlist checkbox row. */
.p74cs-root .p74c__st { margin-top:2px; }

/* MOCK 07-17 — owner fb #35 "XP checkbox": Finding-2's kit tick above read as
   a hard 18px black-ring square (owner: too "Excel checkbox"). PRIMARY mock
   below is a "Spotify 2026" control — 20px, a rounded-square 5px radius (the
   safest read per the fb; a full circle is an acceptable alt — swap
   border-radius:5px -> 50% below to preview it), a quiet rgba ring at rest
   (no hard #111 square), filled lime + centered ink check + a small pop-in
   check animation when ticked. Markup/.wishlisting_field hook/appearance:none
   untouched — skin only. NOT finalized for Cyon — owner sign-off pending. */
.p74cs-root input[type="checkbox"].wishlisting_field{
    -webkit-appearance:none; appearance:none; box-sizing:border-box;
    width:20px; height:20px; min-height:0; margin:0; padding:0; flex:0 0 20px;
    border:1.5px solid var(--p74c-hair-hover,rgba(17,17,17,.4)) !important;
    border-radius:5px !important;
    background:var(--p74c-paper,#fff) !important; box-shadow:none !important;
    cursor:pointer; position:relative; vertical-align:middle;
    transition:background .15s ease, border-color .15s ease, transform .12s ease;
}
.p74cs-root input[type="checkbox"].wishlisting_field:hover{ border-color:var(--p74c-ink,#111) !important; }
/* kill any theme FontAwesome ::before tick that would poke out of the box */
.p74cs-root input[type="checkbox"].wishlisting_field::before{ content:none !important; display:none !important; }
.p74cs-root input[type="checkbox"].wishlisting_field:checked{
    background:var(--p74c-lime,#E9FF75) !important; border-color:var(--p74c-lime,#E9FF75) !important;
    transform:scale(1.04);
}
.p74cs-root input[type="checkbox"].wishlisting_field:checked::after{
    content:""; position:absolute; left:50%; top:45%; width:5px; height:9px;
    border:solid var(--p74c-ink,#111); border-width:0 2px 2px 0;
    transform:translate(-50%,-50%) rotate(45deg);
    animation:p74cs-check-pop .15s ease;
}
@keyframes p74cs-check-pop {
    from { opacity:0; transform:translate(-50%,-50%) rotate(45deg) scale(.4); }
    to   { opacity:1; transform:translate(-50%,-50%) rotate(45deg) scale(1); }
}

/* ---------------------------------------------------------------------------
   5. REJECTED card "sink" — dim + de-emphasize (opacity only, no grey band)
   --------------------------------------------------------------------------- */
.p74cs-root .p74c__card.is-terminal {
    opacity:.5; filter:grayscale(.18);
    transition:opacity .35s ease, filter .35s ease;
}
.p74cs-root .p74c__card.is-terminal:hover { opacity:.85; }   /* still inspectable */
.p74cs-root .p74c__card.is-terminal .p74c__card-name { text-decoration:line-through; }

/* ---------------------------------------------------------------------------
   6. Bottom CTA row (Back / Request) — on the page rail, one hairline above
   (the view renders the kit .p74c-hairline utility; <hr> is theme-eaten).
   --------------------------------------------------------------------------- */
.p74cs-cta__note {
    margin:0 0 12px; font-size:13px; line-height:1.5; color:var(--p74c-muted);
    text-transform:none; letter-spacing:0; max-width:560px;
}
/* custom-media.css:236 `p{font-size:inherit!important}` @≤991px would inflate
   the note to 17px body size (CD-8 root cause) — hold it at 13px */
@media (max-width:991px){
    .p74cs-page p.p74cs-cta__note { font-size:13px !important; }
}

/* ---------------------------------------------------------------------------
   7. SH-2 mobile pass — ONE divider style. Cards drop their 4-side frames;
   a single hairline separates stacked cards. 46px picks live in §4.
   --------------------------------------------------------------------------- */
@media (max-width:600px){
    .p74cs-root .p74c__card { border:0 !important; padding:16px 0 20px; }
    .p74cs-root .p74c__card + .p74c__card { border-top:1px solid var(--p74c-hair) !important; }
    .p74cs-root .p74c__card-img { border-bottom:0; }
    .p74cs-root .p74c__card-body { padding-left:0; padding-right:0; }
}

/* ---------------------------------------------------------------------------
   8. Kill leftover Bootstrap / legacy grey + box rules that bleed in here
   (the template ships inline <style> with grey select2 + #eee form-control +
   55px bordered .wishlisting_field_input + blue btn-add). Scope-neutralize.
   --------------------------------------------------------------------------- */
.p74cs-root .form-control,
.p74cs-root .select2-container--default .select2-selection--multiple { background:transparent; }
.p74cs-root .wishlisting_field_input {
    background:transparent; border:0; border-bottom:1px solid var(--p74c-hair);
    width:auto; min-width:48px; padding:4px 2px; border-radius:0;
}
.p74cs-root .field_event_producer .btn.btn-add {
    background:var(--p74c-paper); color:var(--p74c-ink); border:1px solid var(--p74c-line);
    border-radius:0; transition:background .15s, color .15s;
}
.p74cs-root .field_event_producer .btn.btn-add:hover { background:var(--p74c-lime); color:var(--p74c-ink); }
/* the theme's sw_over_right_border col paints a full-height vertical line via
   ::after down the grid's right edge — line-zoo, kill it inside this page */
.p74cs-page .sw_over_right_border::after,
.p74cs-page .sw_mobile_hidden_border::after { content:none !important; display:none !important; }

/* ---------------------------------------------------------------------------
   9. SH-11 — the global header paints a #FCFCFC plate behind the logo
   (elementor widget-wrap background). Neutralized ONLY on this page via the
   body class the view's JS adds; :has() keeps it to the logo column.
   --------------------------------------------------------------------------- */
body.p74cs-body [data-elementor-type="header"] .elementor-widget-wrap:has(.elementor-widget-image),
body.p74cs-body .elementor-location-header .elementor-widget-wrap:has(.elementor-widget-image) {
    background-color:transparent !important;
}

/* ===========================================================================
   10. SH-12 (2026-07-07) — owner: the meta header wastes vertical space (cards
   sit below the fold on the staff-hash view) + clients want a LIST option.
   (a) Tighten the meta grid; (b) Grid|List view toggle. Additive overrides —
   no markup dependency beyond the SH-12 toolbar + #p74cs_root.is-list class.
   =========================================================================== */

/* (a) compact meta header — pull the location cards up. Denser grid, less
   vertical padding, 4 columns of the many short fields on wide screens. */
.p74cs-page .preview-pdf .table_preview-pdf {
    column-gap:28px; row-gap:0; margin:0 0 14px !important;
}
@media (min-width:1100px){
    .p74cs-page .preview-pdf .table_preview-pdf { grid-template-columns:repeat(4, minmax(0,1fr)); }
}
.p74cs-page .preview-pdf .table_preview-pdf td.col,
.p74cs-page .preview-pdf .table_preview-pdf td.co {
    padding:8px 0 4px !important; gap:2px;
}
.p74cs-page .preview-pdf .table_preview-pdf td.co .form-control { font-size:17px; }
/* terms block: cap its height so the boilerplate no longer dominates the header
   (scrolls if long); it keeps its full text, just doesn't push cards down. */
.p74cs-page .preview-pdf .table_preview-pdf td textarea {
    max-height:74px; overflow:auto;
}
/* the clean client (visitor-hash) head is already tight; trim its lower gap */
.p74cs-head { padding:22px 0 14px; margin-bottom:18px; }

/* (b1) the view-toggle toolbar (sits above the card grid) */
.p74cs-viewbar {
    display:flex; align-items:center; justify-content:space-between; gap:12px;
    flex-wrap:wrap; margin:0 0 14px;
}
.p74cs-viewbar__count {
    font-family:var(--p74c-font); font-size:10.5px; font-weight:700;
    text-transform:uppercase; letter-spacing:0.07em; color:var(--p74c-muted);
}
.p74cs-viewtoggle { display:inline-flex; border:1px solid var(--p74c-line); }
/* ≥3 classes so the deliberate button styling beats the kit's .p74c-reset button (0,2,1) */
.p74cs-root .p74cs-viewtoggle .p74cs-viewbtn,
.p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn {
    display:inline-flex; align-items:center; gap:6px;
    background:var(--p74c-paper); color:var(--p74c-muted);
    border:0; border-radius:0; cursor:pointer;
    padding:7px 12px; font-family:var(--p74c-font); font-size:10.5px; font-weight:700;
    text-transform:uppercase; letter-spacing:0.06em; line-height:1;
    transition:background .15s ease, color .15s ease;
}
.p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn + .p74cs-viewbtn { border-left:1px solid var(--p74c-line); }
.p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn svg { width:15px; height:15px; }
.p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn:hover { color:var(--p74c-ink); }
.p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn.is-on { background:var(--p74c-ink); color:var(--p74c-paper); }
@media (max-width:600px){
    .p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn span { display:none; }   /* icon-only on phones */
    .p74cs-viewbar .p74cs-viewtoggle .p74cs-viewbtn { padding:8px 12px; }
}

/* (b2) LIST view — same cards, horizontal layout (image left, details right) */
.p74cs-root.is-list .p74c__grid {
    grid-template-columns:1fr !important; gap:10px !important;
}
.p74cs-root.is-list .p74c__card {
    display:grid; grid-template-columns:230px 1fr; align-items:stretch;
}
.p74cs-root.is-list .p74c__card-img {
    aspect-ratio:auto; height:auto; min-height:132px;
    border-bottom:0; border-right:1px solid var(--p74c-hair);
}
.p74cs-root.is-list .p74c__card-body {
    padding:14px 18px; justify-content:center;
}
.p74cs-root.is-list .p74c__card-name { font-size:15px; }
/* on phones the horizontal split gets cramped -> fall back to stacked cards */
@media (max-width:600px){
    .p74cs-root.is-list .p74c__card { grid-template-columns:1fr; }
    .p74cs-root.is-list .p74c__card-img { min-height:0; aspect-ratio:528/309; border-right:0; border-bottom:1px solid var(--p74c-hair); }
}

/* ===========================================================================
   11. SH-13 (2026-07-07) — owner round 2: the meta header STILL reads as wasted
   white space; make it tighter AND bigger-text so it looks intentional. Layers
   over SH-12 (§10). Values up, dead vertical gaps out.
   =========================================================================== */
/* denser grid + real values that read as content, not form labels.
   MOCK 07-17 (owner fb #34) — row-gap 0->4px (fields no longer touch, so the
   dense multi-column pack stops reading as one solid "form" block) and the
   eyebrow label drops 700->600 weight (quieter, less "label-shouting" next to
   the now-bigger value below it). */
.p74cs-page .preview-pdf .table_preview-pdf{ column-gap:26px !important; row-gap:4px !important; margin:0 0 10px !important; }
.p74cs-page .preview-pdf .table_preview-pdf td.col,
.p74cs-page .preview-pdf .table_preview-pdf td.co{ padding:4px 0 3px !important; gap:1px !important; }
/* bigger value text */
.p74cs-page .preview-pdf .table_preview-pdf td.col,
.p74cs-page .preview-pdf .table_preview-pdf td.co{ font-size:15px !important; }
.p74cs-page .preview-pdf .table_preview-pdf td.col::before,
.p74cs-page .preview-pdf .table_preview-pdf td.co::before{ font-size:10px !important; font-weight:600 !important; letter-spacing:.06em; line-height:1.15; color:var(--p74c-muted); }
.p74cs-page .preview-pdf .table_preview-pdf td .form-control,
.p74cs-page .preview-pdf .table_preview-pdf td textarea{ font-size:15px !important; line-height:1.25 !important; }
.p74cs-page .preview-pdf .table_preview-pdf td.co .form-control{ font-size:22px !important; line-height:1.15 !important; }
/* terms boilerplate: quieter + shorter so it stops dominating the header */
.p74cs-page .preview-pdf .table_preview-pdf td textarea{ max-height:56px !important; font-size:12.5px !important; color:var(--p74c-muted) !important; line-height:1.35 !important; }
/* clean client (visitor-hash) head — bigger title, tighter */
.p74cs-head{ padding:20px 0 12px !important; margin-bottom:14px !important; }
.p74cs-head__title{ font-size:27px !important; }
.p74cs-head__eyebrow{ font-size:10.5px; }
/* the location-count / toggle bar hugs the meta a little tighter */
.p74cs-viewbar{ margin:2px 0 12px !important; }
.p74cs-viewbar__count{ font-size:11.5px !important; }
