/* ============================================================================
 * La2etlak — REPORT CARD (the one shared component family)
 * ============================================================================
 * EXTRACTED from public/css/design/homepage.css §8/§11 by
 * HOMEPAGE-OWNER-REVISION-001 §7. The `.rc` family is not a Homepage feature:
 * Search, report collections, saved / profile surfaces and every other future
 * report-card consumer render the same component, so it owns its own
 * stylesheet and is loaded by the shared design shell
 * (resources/views/layouts/app.blade.php) rather than by one page.
 *
 * ────────────────────────────────────────────────────────────────────────────
 * AUTHORITY CORRECTION — SHARED-REPORT-CARD-AUTHORITY-001 (2026-08-15)
 * ────────────────────────────────────────────────────────────────────────────
 * This family was first ported from `phase-3-homepage-redesign-v3.html` alone,
 * which draws the Lost/Found chip inside the card body, no bookmark slot, no
 * Claimed / Reward status row and no card foot.
 *
 * `uploads/DESIGN_RULES.md` § Report cards — the RULE LAYER, which sits ABOVE
 * every artifact (DESIGN_AUTHORITY.md §1.3) — requires the opposite:
 *
 *     · "Lost and Found badges use the same geometry and visual weight, and
 *        stay in the MEDIA SLOT."                                    (line 67)
 *     · "Featured, Claimed and Reward Offered form one quiet status row in the
 *        card BODY — a separate family from the Lost/Found badge."   (line 68)
 *     · "Use the real 44px bookmark toggle wherever saving is supported; keep
 *        the card's toggle slot RESERVED when Save is absent so no row shifts.
 *        No full-width Save buttons."                                (line 69)
 *     · "Views count stays visible wherever current code renders it." (line 70)
 *
 * `phase-5a-search-browse.html`, `phase-5b-item-detail.html`,
 * `phase-5j-report-collections.html` and `phase-5k-public-profile.html` all
 * corroborate that structure (`.tslot` on the media, `.sslot` bookmark,
 * `.stts` body status row, `.rfoot`). 3-v3 is the artifact-level outlier.
 *
 * The rule layer plus the four corroborating artifacts therefore supersede
 * 3-v3 for this shared component. Values below are ported from
 * `phase-5a-search-browse.html` (the only board that draws the complete card),
 * on the runtime class names this family already uses — the two sides
 * legitimately disagree on class names (PARITY_METHOD §4), and the
 * correspondence maps carry the translation:
 *
 *     runtime  .rcm  .rcb  .rc h3  .rcc + .rcmeta  .schip  .rcfoot
 *     5A       .rimg .rb   .rt     .meta           .stt    .rfoot
 *
 * The `.rcstat` / `.stts` status-row pair is absent from that map on purpose:
 * SEARCH-OWNER-REVISION-001 §A moved the status chips into the media badge
 * cluster, so the board's body row has no runtime counterpart left (ledger §22).
 *
 * Recorded in docs/design/IMPLEMENTATION_LEDGER.md §21. Homepage consumes the
 * corrected component and its card region must be re-verified — that is a
 * named consequence of this correction, not a silent rewrite of its history.
 *
 * The two OWNER-APPROVED revisions on top of the port survive it unchanged and
 * are marked `OWNER REVISION 001` inline (ledger §17, §19.2).
 * ========================================================================== */


/* ============================================================================
 * 1. CARD SHELL   (5A proof line 204; identical in 3-v3 line 214)
 * ========================================================================== */
.la2-pg .rc {
    border: 1px solid var(--edge);
    border-radius: var(--r3);
    background: var(--bg);
    box-shadow: var(--csh);
    overflow: hidden;
    display: flex;
    flex-direction: column;
}
.la2-pg .rc:hover { border-color: var(--secEdge); box-shadow: var(--sh); }

/* Media box. 5A names it `.rimg` and backs it with `--p1`; this family keeps
   `--plate`, the same neutral plate role it has carried since the first port —
   both are covered by the photograph or by the fallback plate below. */
.la2-pg .rcm { position: relative; aspect-ratio: 4/3; overflow: hidden; background: var(--plate); }
.la2-pg .rcm img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }


/* ============================================================================
 * 2. MEDIA SLOTS   (5A proof lines 230, 252-259)
 * ----------------------------------------------------------------------------
 * DESIGN_RULES § Report cards line 67 + line 69. Both slots are absolutely
 * positioned, so an empty bookmark slot occupies no flow and no row can shift
 * whether or not the surface supports Save.
 * ========================================================================== */
/* THE BADGE CLUSTER — SEARCH-OWNER-REVISION-001 §A.
   `.tslot` no longer holds the type chip alone: it is the single cluster carrying
   the type badge AND every real status chip, at the media's logical top-start.

   The geometry is structural, not a magic offset. `inset-inline-end: 62px` is
   derived from the Save slot this cluster must never reach: 10px end inset + 44px
   control + 8px breathing gap. Bounding the cluster instead of letting it run the
   full width is what makes wrapping possible at all — a flex row with nowhere to
   stop would slide under Save rather than break.

   `flex-wrap` then lets a long status set fall onto a second line INSIDE the media
   (the owner's stated preference over clipping, shrinking the label below
   readability, or dropping a status the report really has). `align-items: center`
   applies per line, so the 28px type chip and the 22px status chips sit on a
   shared centre-line in whichever row they land. */
.la2-pg .tslot {
    position: absolute;
    top: 10px;
    inset-inline-start: 10px;
    inset-inline-end: 62px;
    z-index: 2;
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 5px;
}

.la2-pg .sslot {
    position: absolute;
    top: 10px;
    inset-inline-end: 10px;
    z-index: 2;
    width: 44px;
    height: 44px;
}
/* The save control is a real form submit; the form itself must not add a box. */
.la2-pg .sslot form { margin: 0; display: block; }

.la2-pg .sv {
    width: 44px;
    height: 44px;
    border-radius: 12px;
    border: 0;
    padding: 0;
    background: color-mix(in oklab, var(--bg) 84%, transparent);
    box-shadow: inset 0 0 0 1.5px var(--edge);
    color: var(--body);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
}
.la2-pg .sv:hover { color: var(--act); box-shadow: inset 0 0 0 1.5px var(--act); }
.la2-pg .sv[aria-pressed="true"] { background: var(--act); box-shadow: none; color: var(--actInk); }

/* Bookmark mark — outline when unsaved, filled when saved (5A lines 256-258). */
.la2-pg .bm {
    width: 14px;
    height: 18px;
    background: currentColor;
    position: relative;
    clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 70%, 0 100%);
}
.la2-pg .bm i {
    position: absolute;
    inset: 2.5px 2px;
    background: var(--bg);
    clip-path: polygon(0 0, 100% 0, 100% 100%, 50% 66%, 0 100%);
}
.la2-pg .sv[aria-pressed="true"] .bm i { display: none; }


/* ============================================================================
 * 3. CARD BODY   (5A proof lines 238-244)
 * ========================================================================== */
.la2-pg .rcb { padding: 13px 15px 15px; display: flex; flex-direction: column; flex: 1; gap: 7px; }

/* The report title is a HEADING and takes the display face, not the UI face
   (ledger §25, SHARED-COMPONENT-AUTHORITY-002). 5A's `.rt` (line 239) declares no
   family at all — it inherits `.pg h1,.pg h2,.pg h3` (line 62): Source Serif 4 /
   600 / -.01em, and in RTL `Noto Naskh Arabic` / letter-spacing 0 (line 64).
   FOUNDATION §7 agrees: "headings are the display face". 3-v3's explicit
   'IBM Plex Sans' is the artifact-level divergence, superseded for this shared
   component.

   So family, weight, colour and letter-spacing are INHERITED from foundation.css,
   which already ports both of those rules verbatim. Declaring them here would
   duplicate a shared owner. Only the card's own size and leading belong to this
   file — exactly the two things 5A's `.rt` overrides. */
.la2-pg .rc h3 {
    font-size: 15.5px;
    line-height: 1.38;
}
[dir="rtl"] .la2-pg .rc h3 { line-height: 1.6; }
.la2-pg .rc h3 a {
    color: inherit;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.la2-pg .rc h3 a:hover { color: var(--act); }

/* WHOLE-CARD LINK (owner override, ledger §101). A reachable card carries
   `.rc--linked`; its ONE item-detail anchor (`.rc-link`, the title link) stretches
   its ::after hit area over the card shell. The card is never wrapped in <a>, so
   the Save form and the actions region stay valid, independent controls above the
   overlay. Decorative badges take no pointer events, so a click on them falls
   through to the overlay. No JavaScript. */
.la2-pg .rc--linked { position: relative; cursor: pointer; }
.la2-pg .rc--linked .rc-link::after {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 1;
}
.la2-pg .rc--linked .tslot { pointer-events: none; }
.la2-pg .rc--linked .rcacts { pointer-events: none; }
.la2-pg .rc--linked .rcacts > * { position: relative; z-index: 2; pointer-events: auto; }
.la2-pg .rc--linked .sv { cursor: pointer; }
/* The overlay owns keyboard focus: the card, not just the title, shows it. */
.la2-pg .rc--linked .rc-link:focus-visible { outline: none; }
.la2-pg .rc--linked:has(.rc-link:focus-visible) {
    outline: 3px solid var(--act);
    outline-offset: 2px;
}

/* The two public metadata lines — category, then governorate (5A `.meta`). They
   are wrapped in one flex item carrying the body's own gap, so a consumer can
   recompose them onto a single line without duplicating either element:
   `display: inline` on a flex CHILD is blockified by the spec, on a block child
   it is honoured. `.rcmetas` therefore reproduces `.rb`'s 7px row gap itself. */
.la2-pg .rcmetas { display: flex; flex-direction: column; gap: 7px; }
.la2-pg .rcc,
.la2-pg .rcmeta { margin: 0; font-size: 12.5px; line-height: 1.5; color: var(--body); }


/* ============================================================================
 * 4. REPORT-TYPE CHIP   (5A proof lines 231-237)
 * ----------------------------------------------------------------------------
 * OWNER REVISIONS — TWO STACKED, EXPLICIT, OWNER-APPROVED OVERRIDES.
 *
 * OWNER REVISION 001 §6 (ledger §17.3) — the locked package gives one marker a
 * filled dot and the other a hollow ring (3-v3 rings Found; 5A rings Lost — the
 * boards do not even agree with each other). The owner overrode that: both
 * markers were made solid on one shared geometry.
 *
 * REPORT-CARD-SEMANTIC-BADGE-POLISH-001 (ledger §23) — SUPERSEDES the marker
 * question entirely. There is no dot on this chip any more: Lost carries a
 * MAGNIFYING GLASS (the item is being searched for) and Found a LOCATION PIN
 * (an item has been located), so the marker now carries meaning instead of
 * merely being present. Future parity must flag NEITHER the missing dot nor the
 * icon as a defect.
 *
 * Colour-only signalling is still avoided, because the chip renders the word
 * "Lost" / "Found" beside the icon; the icon is reinforcement, never the signal.
 * The two colour roles remain the locked package's own approved Lost / Found
 * roles (--lostInk / --foundInk) — neither override touches the palette, which
 * no part of this task is authorised to reinterpret.
 *
 * REPORT-CARD-BADGE-VISUAL-REFINEMENT-001 (ledger §24) — ONE BADGE FAMILY.
 * The type chip and the status chips used to be two visibly different families
 * (26px/12px/pill against 22px/11.5px/5px-radius), which made Featured, Claimed
 * and Reward read as small utility tags rather than as report statuses. They now
 * share ONE geometry — declared once, immediately below — and differ only by the
 * two things that carry meaning: font weight and colour role.
 * ========================================================================== */

/* THE SHARED BADGE BASE. Both families are declared together so the geometry
   cannot drift apart again: there is one height, one radius, one padding, one
   gap and one type size for every badge on the card. Per-status dimensions are
   deliberately absent — a status differs by ROLE, never by size. */
.la2-pg .tchip,
.la2-pg .schip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 28px;
    padding: 0 10px;
    border-radius: 999px;
    font-family: 'IBM Plex Sans', sans-serif;
    font-size: 12.5px;
    line-height: 1;
    white-space: nowrap;
    border: 1px solid transparent;
}
[dir="rtl"] .la2-pg .tchip,
[dir="rtl"] .la2-pg .schip { font-family: 'IBM Plex Sans Arabic', sans-serif; }

/* One icon size for the whole family (see §5 for why sizing lives here). */
.la2-pg .tchip .ico,
.la2-pg .schip .ico { width: 14px; height: 14px; }

/* The type badge stays the PRIMARY one — but it earns that with weight and with
   the saturation of its own colour role, not by being physically bigger. */
.la2-pg .tchip { font-weight: 700; }
.la2-pg .tchip.lost { color: var(--lostInk); background: var(--lostBg); border-color: var(--lostEdge); }
.la2-pg .tchip.found { color: var(--foundInk); background: var(--foundBg); border-color: var(--foundEdge); }


/* ============================================================================
 * 5. STATUS CHIPS   (5A proof lines 245-250, relocated + recoloured)
 * ----------------------------------------------------------------------------
 * SEARCH-OWNER-REVISION-001 §A/§B — TWO EXPLICIT OWNER-APPROVED OVERRIDES.
 *
 * §A PLACEMENT. DESIGN_RULES line 68 puts these three in a quiet status row in
 * the card BODY. Having seen that shipped on the live Search page, the owner
 * moved them into the media badge cluster beside Lost/Found (§2 above). Only the
 * location changed; the `.rcstat` body wrapper is gone with the row it laid out.
 *
 * That revision kept them a separate family by GEOMETRY (22px, 5px radius, 11.5px
 * text against the type chip's pill). REPORT-CARD-BADGE-VISUAL-REFINEMENT-001
 * reversed that half: at that size they read as small utility tags rather than as
 * report statuses, so all five badges now share ONE geometry (§4) and separate on
 * WEIGHT and COLOUR ROLE alone — which is the part of line 68 that ever carried
 * the meaning. Size was never the distinction worth keeping.
 *
 * §B COLOUR. The chips used to be near-neutral, which the owner rejected: three
 * unrelated states read as one grey smear, and Claimed in particular could not
 * be told from Reward Offered at a glance. Each family now carries an
 * intentional role colour drawn from tokens the system already defines — no new
 * palette, no novelty hues:
 *
 *     Featured        gold / amber      --warnInk / --warnBg   (unchanged)
 *     Claimed         blue / indigo     --inI / --inBg / --inEd (the canonical
 *                                       information role — Claimed is a fact
 *                                       about the report, not a warning)
 *     Reward Offered  orange / copper   mixed from the brand ornament roles
 *                                       --orn / --ornDeep / --ornHov over --bg
 *
 * Reward is colour-mixed from the ornament tokens rather than hard-coded, so it
 * tracks the brand colour and both colourways from one source.
 *
 * Colour is never the whole signal: every chip renders its own WORD, and the
 * chips only appear for state the surface actually published (§ the component's
 * "runtime state is never invented" contract).
 *
 * Now that these sit on the media, an opaque background is load-bearing rather
 * than decorative — a chip over a photograph must carry its own ground. The old
 * transparent Claimed treatment is therefore gone, and every family below sets
 * background AND border.
 * ========================================================================== */
/* Geometry, type size, radius and icon size all come from the SHARED BADGE BASE
   in §4 — this family adds only its weight and its three colour roles. A status
   is a peer of the type badge, one step quieter in weight and nothing else.

   The `.ico` sizing there is composition, not a second ownership claim: `.ico`
   itself (the currentColor mask, the `flex: none`) stays in foundation.css, and
   because that mask paints in currentColor each icon inherits its own badge's
   semantic ink with no second colour anywhere. */
.la2-pg .schip {
    font-weight: 600;
    color: var(--body);
    background: var(--fill);
}

/* Featured — gold / amber, the established warning-family role. Unchanged in
   hue; it gains only the border every chip on the media now carries. */
.la2-pg .schip.feat {
    color: var(--warnInk);
    background: var(--warnBg);
    border-color: color-mix(in oklab, var(--warnInk) 28%, transparent);
}

/* Claimed — blue / indigo, the canonical information role. */
.la2-pg .schip.clm {
    color: var(--inI);
    background: var(--inBg);
    border-color: var(--inEd);
}

/* Reward Offered — warm orange / copper, mixed from the brand ornament roles.
   Light uses --ornDeep (#B4650A) as ink because --orn itself is a fill colour
   and cannot hold 4.5:1 as 11.5px text; dark lifts the ink to --ornHov over a
   deepened ground, the same inversion --warnInk/--warnBg makes. */
.la2-pg .schip.rwd {
    color: var(--ornDeep);
    background: color-mix(in oklab, var(--orn) 12%, var(--bg));
    border-color: color-mix(in oklab, var(--ornDeep) 30%, transparent);
}
[data-bs-theme="dark"] .la2-pg .schip.rwd {
    color: var(--ornHov);
    background: color-mix(in oklab, var(--orn) 16%, var(--bg));
    border-color: color-mix(in oklab, var(--ornHov) 34%, transparent);
}


/* ============================================================================
 * 6. CARD FOOT   (5A proof line 251)
 * ----------------------------------------------------------------------------
 * Relative post time, and the views count on the surfaces whose runtime
 * already publishes one (DESIGN_RULES line 70 — Search does, the Homepage does
 * not; handoff §7 records that as a product decision, never a design one).
 * ========================================================================== */
.la2-pg .rcfoot {
    display: flex;
    justify-content: space-between;
    gap: 10px;
    font-size: 11.5px;
    color: var(--muted);
    margin-top: auto;
    padding-top: 9px;
    border-top: 1px solid var(--line);
}


/* ============================================================================
 * 7. NO-PHOTO FALLBACK   (OWNER REVISION 001 §8-§11 — new family)
 * ----------------------------------------------------------------------------
 * Rendered ONLY when a report genuinely has no valid uploaded image. A real
 * photograph always wins, and stripMissingImages() still removes rows whose
 * file is absent from disk before this branch is ever reached.
 *
 * The artwork is decoration: it is `aria-hidden`, and the card keeps an honest,
 * visible "No photo provided" caption so the illustration can never be mistaken
 * for the reporter's own photograph. It supersedes 5A's `.rph` striped plate,
 * which is the same honest-fallback role drawn before the owner revision.
 *
 * The symbols live in components/design/report-card-sprite.blade.php and paint
 * themselves from the four role properties below, so one sprite serves three
 * deterministic tones in both colourways.
 * ========================================================================== */
/* SHELL + FALLBACK POLISH 001 §B — ONE MEDIA FRAME, NOT TWO BANDS.
   `.rcm` already gave both branches the same 4:3 box, but the caption used to
   be a full-bleed bar across the bottom of it. Against a neighbouring real
   photograph — which runs edge to edge — that bar read as a horizontal cut, so
   the illustration appeared to stop short of the frame the photo filled. The
   plate now runs the full frame in both branches and the caption is an inset
   plate floating on it (see the `.nof` block), so nothing divides the box.
   Flex end/centre places that caption without a transform or an offset; `.rcf`
   is absolutely positioned and therefore out of this flow entirely. */
.la2-pg .rcm.none {
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 10px;
    background:
        radial-gradient(120% 92% at 50% 8%, var(--rfPlateTop) 0%, var(--rfPlate) 68%);
}

.la2-pg .rcf {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    display: block;

    /* Tone A — navy (the default, and the generic / unknown-category tone). */
    --rfInk:    #3A4576;
    --rfFill:   #FFFFFF;
    --rfDeep:   #DCE2F3;
    --rfAccent: #C9713A;
    --rfShade:  rgba(35, 43, 82, .10);
}
.la2-pg .rcf--tone-b {
    /* Tone B — product blue. */
    --rfInk:    #2B52C6;
    --rfFill:   #FFFFFF;
    --rfDeep:   #DCE5FA;
    --rfAccent: #C9713A;
    --rfShade:  rgba(43, 82, 198, .10);
}
.la2-pg .rcf--tone-c {
    /* Tone C — the warm La2etlak orange family, ink deepened to --ornDeep so
       the linework holds contrast against the pale plate. */
    --rfInk:    #B4650A;
    --rfFill:   #FFFFFF;
    --rfDeep:   #F6E4CB;
    --rfAccent: #2B52C6;
    --rfShade:  rgba(180, 101, 10, .12);
}

.la2-pg .rcm.none { --rfPlate: #E7ECF7; --rfPlateTop: #F5F8FD; }

[data-bs-theme="dark"] .la2-pg .rcm.none { --rfPlate: #1A2233; --rfPlateTop: #222C41; }
[data-bs-theme="dark"] .la2-pg .rcf {
    --rfInk:    #AEB8EE;
    --rfFill:   #232C42;
    --rfDeep:   #2E3A56;
    --rfAccent: #E09A5B;
    --rfShade:  rgba(0, 0, 0, .30);
}
[data-bs-theme="dark"] .la2-pg .rcf--tone-b {
    --rfInk:    #8FA6F2;
    --rfFill:   #1F2A45;
    --rfDeep:   #2B3A5E;
    --rfAccent: #E09A5B;
}
[data-bs-theme="dark"] .la2-pg .rcf--tone-c {
    --rfInk:    #F0A64B;
    --rfFill:   #2A2416;
    --rfDeep:   #3D3220;
    --rfAccent: #8FA6F2;
}

/* The honest caption — SHELL + FALLBACK POLISH 001 §B.
   A compact plate resting near the bottom INSIDE the media frame, not a strip
   below the artwork: the plate gradient and the illustration both run the full
   4:3 box, exactly like a real photograph, and this reads as a caption on the
   image rather than as a second band. `position: relative` is what lifts it
   above the absolutely-positioned `.rcf`; it is still laid out by the parent's
   flex end/centre alignment, so there is no offset to maintain.
   It is deliberately quiet and pill-shaped so it is never mistaken for the
   Lost / Found chip or the Featured status chip, both of which carry weight
   600+ and live in the media slot and the card body respectively. */
.la2-pg .rcm.none .nof {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    max-width: 100%;
    padding: 4px 10px;
    border-radius: 999px;
    border: 1px solid var(--rfCaptionEdge);
    background: var(--rfCaptionBg);
    /* --muted, not --plateInk. `--plateInk` (#8895AB) is the ink for decorative
       plate glyphs; measured on this plate it gives the caption only 2.97:1,
       under the 4.5:1 floor for 11.5px text — it was already under it as the old
       full-width strip. `--muted` is the token this very component already uses
       for `.rcfoot`, and measures 5.6:1 light / 8.0:1 dark here. No new colour
       is introduced. */
    color: var(--muted);
    font-size: 11.5px;
    font-weight: 500;
    line-height: 1.35;
    text-align: center;
}
.la2-pg .rcm.none {
    --rfCaptionBg: rgba(255, 255, 255, .88);
    --rfCaptionEdge: rgba(35, 43, 82, .14);
}
[data-bs-theme="dark"] .la2-pg .rcm.none {
    --rfCaptionBg: rgba(12, 17, 28, .82);
    --rfCaptionEdge: rgba(255, 255, 255, .16);
}
.la2-pg .rcm.none .nof .ico { position: static; width: 14px; height: 14px; flex: none; }


/* ============================================================================
 * 8. EMPTY STATE (report collection)
 * ----------------------------------------------------------------------------
 * L1+L2-RULES. 3-v3 renders a populated `mode=recent` grid, so the empty
 * branch has no rendered proof. FOUNDATION §16: designed content with a
 * heading, an explanation and the one real action that exists — never a
 * placeholder card added to preserve the layout.
 * ========================================================================== */
.la2-pg .rcempty {
    border: 1px solid var(--edge);
    border-radius: var(--r3);
    background: var(--bg);
    padding: 40px 24px;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 12px;
}
.la2-pg .rcempty .ico { width: 32px; height: 32px; color: var(--plateInk); }
.la2-pg .rcempty h3 { font-size: 18px; }
.la2-pg .rcempty p { margin: 0; color: var(--muted); font-size: 14.5px; max-width: 52ch; }


/* ============================================================================
 * 9. ACTION REGION   (ADDITIVE — 5J-ACCOUNT-COLLECTIONS-STAGE-B-FINAL-PORT-001)
 * ----------------------------------------------------------------------------
 * The container only, and only when a surface actually renders the optional
 * `actions` slot. It is here rather than in a page stylesheet because the slot
 * is now a GENERIC capability of the shared card: any surface that publishes
 * card-level actions gets the same box, the same rhythm and the same 44px floor,
 * and no family re-declares them.
 *
 * WHAT THIS OWNS: the region's own geometry. WHAT IT DOES NOT OWN: which
 * controls a surface puts inside it or what role they wear — that is the
 * caller's composition, and 5J's `.rcl-unsv` quiet role lives in
 * report-collections.css where it belongs.
 *
 * NO SEPARATE RULE. `.rcfoot` already draws the one hairline that closes the
 * metadata block and already takes the `margin-top:auto` that pins the tail to
 * the bottom of the card; a second border here would cut the tail in half. The
 * region simply follows the foot at the body's own rhythm.
 *
 * 5J's locked board draws this pair as `.sfoot` with `gap:8px`, centre
 * alignment and 44px controls (board line 297). Those are the values below.
 * ========================================================================== */
.la2-pg .rcacts {
    display: flex;
    align-items: center;
    gap: 8px;
    padding-top: 11px;
}

/* The 44px floor is measured on the control itself, never on this container
   (FOUNDATION §6 / 5J board §11). `.btn.sm` already carries it; this states it
   for any control a future surface puts here. */
.la2-pg .rcacts .btn { min-height: 44px; }
