/* ============================================================
 * V4 Aurora Geometric — Defensive Font Awesome 6 reset
 * ============================================================
 * Vendor all.min.css defines FA6 font-family ONLY on .fa-solid /
 * .fas / .fa-regular / .far / .fa-brands / .fab / .fa-light /
 * .fal etc (specificity 0,1,0). When V4 or page-wrapper CSS
 * sets font-family on a parent (button / label / section /
 * card / etc), the icon-glyph inherits that family and renders
 * as a tofu-box (empty rectangle) because the parent font has
 * no glyph at the FA Unicode point.
 *
 * Combined-rule trap (memory 2026-06-29): ONE selector that
 * matches BOTH .fa-solid AND .fa-regular cannot share the same
 * font-weight, so we MUST keep separate selectors per style.
 *
 * This file lives at the TOP of every V4 page's cascade (linked
 * AFTER the vendor CSS) so its !important beats both vendor's
 * loose specificity AND any page-level font-family override.
 *
 * Targets every FA6 delivery surface:
 *   - <i class="fas fa-...">      → font-family on the <i>
 *   - <button class="fas fa-..."> → font-family on the ::before
 *     pseudo-element (vendor adds the glyph via ::before)
 * ============================================================ */

/* === Solid (900) === */
.fa-solid,
.fa-solid::before,
.fas,
.fas::before,
button.fa-solid,
button.fa-solid::before,
button.fas,
button.fas::before,
i.fa-solid,
i.fa-solid::before,
i.fas,
i.fas::before {
    font-family: "Font Awesome 6 Free" !important;
    font-weight: 900 !important;
    font-style: normal !important;
}

/* === Regular (400) === */
.fa-regular,
.fa-regular::before,
.far,
.far::before,
button.fa-regular,
button.fa-regular::before,
button.far,
button.far::before,
i.fa-regular,
i.fa-regular::before,
i.far,
i.far::before {
    font-family: "Font Awesome 6 Free" !important;
    font-weight: 400 !important;
    font-style: normal !important;
}

/* === Brands (400, separate font) === */
.fa-brands,
.fa-brands::before,
.fab,
.fab::before,
button.fa-brands,
button.fa-brands::before,
button.fab,
button.fab::before,
i.fa-brands,
i.fa-brands::before,
i.fab,
i.fab::before {
    font-family: "Font Awesome 6 Brands" !important;
    font-weight: 400 !important;
    font-style: normal !important;
}

/* === Light (300) === */
.fa-light,
.fa-light::before,
.fal,
.fal::before,
button.fa-light,
button.fa-light::before,
button.fal,
button.fal::before,
i.fa-light,
i.fa-light::before,
i.fal,
i.fal::before {
    font-family: "Font Awesome 6 Free" !important;
    font-weight: 300 !important;
    font-style: normal !important;
}

/* === Thin (100) === */
.fa-thin,
.fa-thin::before,
.fat,
.fat::before,
button.fa-thin,
button.fa-thin::before,
button.fat,
button.fat::before,
i.fa-thin,
i.fa-thin::before,
i.fat,
i.fat::before {
    font-family: "Font Awesome 6 Free" !important;
    font-weight: 100 !important;
    font-style: normal !important;
}

/* === Duotone (uses ::before + ::after, both must be set) === */
.fad,
.fad::before,
.fad::after,
button.fad,
button.fad::before,
button.fad::after,
i.fad,
i.fad::before,
i.fad::after {
    font-family: "Font Awesome 6 Duotone" !important;
    font-weight: 900 !important;
    font-style: normal !important;
}

/* === Universal defensive .hidden reset (memory line 83) ===
 * UA stylesheet sets `[hidden] { display: none }` (specificity 0,1,0).
 * Vendor `.hidden { display: none }` is also 0,1,0. But V4 rules
 * like `.whiteboard-header-title button { display: inline-flex }` are
 * 0,1,1 — wins on specificity, hiding-buttons leak as visible
 * styled boxes (Pierre's 2026-06-29 screenshot showed BOTH lock-open
 * AND lock buttons because both had class=\"hidden\" but V4 specificity
 * beat vendor .hidden).
 *
 * REGRESSION HISTORY (2026-06-29):
 *   PR #198: `[hidden], .hidden { display: none !important }` →
 *     source-order tie-break (same specificity 0,1,0) wins for .hidden
 *     → blocked `.show { display: block !important }` on all modals.
 *   PR #199: `.hidden:not(.show)` → specificity (0,2,0) beats .show
 *     (0,1,0) and .whiteboard-header-title button (0,1,1). But
 *     loses to ID selectors like `#whiteboardUnlockBtn` (1,0,0).
 *   PR #200 (this fix): `[id].hidden:not(.show)` → specificity (1,2,0)
 *     beats ID selectors like #whiteboardUnlockBtn (1,0,0) AND
 *     keeps both previous wins. */
[hidden],
.hidden:not(.show),
[id].hidden:not(.show) {
    display: none !important;
}