/* ═══════════════════════════════════════════════════════════════════════
   TaxClue — global shadow removal (site-wide: front-end + admin + portal)
   Added 2026-09-06 on request: every drop shadow, inset shadow and text
   shadow off, everywhere. This is deliberately a blunt instrument — it is
   the ONLY way to reach shadows that live in ~1,500 rules across 83
   stylesheets, 25 admin module <style> blocks that render in the page
   BODY, inline style="" attributes, and vendor bundles (Bootstrap,
   DataTables, flatpickr, TinyMCE).

   MUST load LAST in every layout. Loaded from:
     templates/layouts/main.php        (public site)
     admin/inc/layout.php              (CMS)
     app/includes/header.php           (client portal)
     app/billing/includes/header.php   (billing)

   ── WHY THE :not(#…) CHAIN ──────────────────────────────────────────
   A plain `* { box-shadow: none !important }` is NOT enough here. The
   codebase already contains 302 `box-shadow: … !important` declarations,
   almost all on class selectors, and many of them sit in <style> blocks
   inside the page body — i.e. AFTER this file in source order. When two
   declarations are both !important, specificity decides, and a class
   (0,1,0) beats the universal selector (0,0,0). So this file would have
   silently lost on exactly the components that shadow hardest.

   `:not(#a):not(#b):not(#c)` matches everything (no element has those
   ids) but scores three ID units — specificity (3,0,0). Nothing in the
   codebase comes close, so the kill is unconditional.

   ── TO RESTORE SHADOWS ──────────────────────────────────────────────
   Delete the four <link> tags listed above. Do NOT "soften" this file by
   dropping the !important or the :not() chain — it would keep working on
   the simple pages and quietly stop working on the loud ones, which is
   the worst of both.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. Every shadow, every element, every pseudo-element ────────────────
   ::before / ::after are listed separately because the universal selector
   alone does not match pseudo-elements, and several card/badge glows on
   this site are drawn entirely in ::after. */
*:not(#_tcns_a):not(#_tcns_b):not(#_tcns_c),
*:not(#_tcns_a):not(#_tcns_b):not(#_tcns_c)::before,
*:not(#_tcns_a):not(#_tcns_b):not(#_tcns_c)::after {
    box-shadow: none !important;
    text-shadow: none !important;
}

/* ::backdrop is kept in its OWN rule on purpose. CSS discards an entire
   rule when any selector in its list fails to parse, so folding a
   less-universally-supported pseudo-element into the block above would
   mean one old engine silently losing the whole shadow kill. Isolated,
   the worst case is that this one line is ignored. */
::backdrop {
    box-shadow: none !important;
    text-shadow: none !important;
}

/* ── 2. filter: drop-shadow() ────────────────────────────────────────────
   drop-shadow is a filter function, not a shadow property, so §1 cannot
   reach it. These are the only decorative uses in the codebase — named
   one by one rather than with a blanket `filter: none`, because that
   would also kill the blur() on .orb, grayscale on logo strips and
   TinyMCE's own icon filters. */
.sp-rocket,          /* service-page.css  — rocket glow            */
.ph-shooting-star,   /* mythos-home.css   — shooting-star trail    */
.ind-fcard-ico,      /* mythos-home.css   — industry card icon     */
.ed-seo-ring svg,    /* editor-ui.css     — SEO score ring         */
.ed-ai-hero-icon {   /* editor-ui.css     — AI panel hero icon     */
    filter: none !important;
}

/* ── 3. Accessibility floor — WCAG 2.4.7 (Focus Visible) ─────────────────
   Several components (form inputs, admin buttons, the portal's Bootstrap
   controls) drew their keyboard focus ring with box-shadow and nothing
   else. §1 removes those, which would leave keyboard users with no
   visible focus at all. A real outline replaces them — outline is a
   separate property, so §1 can never switch this off. */
:focus-visible {
    outline: 2px solid #C01530 !important;
    outline-offset: 2px !important;
}

/* Inputs get the ring on plain :focus too — browsers withhold
   :focus-visible from mouse-clicked fields, and a text field with no
   visible focus state is genuinely hard to use. */
input:focus,
textarea:focus,
select:focus,
[contenteditable]:focus {
    outline: 2px solid #C01530 !important;
    outline-offset: 1px !important;
}

/* ── 4. Hairlines that were drawn as inset shadows ───────────────────────
   A few "shadows" on this site are not decoration — they are 1px rules
   standing in for a border. Removing them leaves elements looking broken
   rather than flat, so each is re-drawn here as an actual border. */

/* main.php — the tricolor strip used `box-shadow: inset 0 -1px 0` to tie
   its three bands together against the white header. Without it the white
   middle third disappears and the strip reads as two orange/green stubs. */
.tc-tricolor:not(#_tcns_a):not(#_tcns_b) {
    border-bottom: 1px solid rgba(10, 19, 43, .14) !important;
    box-sizing: border-box !important;
}
