/* Static shop stylesheet (tracked in git - NOT generated by shop:import:template).
 *
 * The Vue footer (#vue-footer-app) is styled by rvbw's own main.<hash>.css
 * (Tailwind preflight + utilities), linked via the imported layout and loading
 * BEFORE the shop stylesheets. Shop-ONLY element rules that load afterwards
 * (content_page.css h2-h5: teal color, font sizes, margin-top/bottom, h4
 * uppercase; h1 arrow background) would leak into the footer - rvbw.ch does
 * not load these files, so the footer must not see them either.
 *
 * :where() keeps the selector at element specificity (0-0-1): this file loads
 * LAST in page.includeCSS, so it beats the equal-specificity shop heading
 * rules by order, while Tailwind utility classes on the headings (0-1-0) and
 * the screen.css link/p/span rules (present on rvbw.ch too) still apply -
 * the footer sees the same cascade as on the source page.
 */
/* Footer utility classes, extracted from rvbw.ch's main.<hash>.css (Tailwind,
 * source main.0e6138e2e414.css as of 2026-07-20) - the classes footer.js's
 * compiled Vue render output actually uses. main.css itself also serves other
 * rvbw.ch widgets like a date picker - "extract the footer part" means this
 * specific class list, not the whole file. List verified against the ACTUAL
 * rendered DOM (getElementsByTagName under #vue-footer-app, classList of
 * every element - the ground truth for "used", including classes a static
 * grep over the minified bundle's `class:`...`` template literals missed,
 * e.g. max-w-64/ml-12/flex-wrap). Scoped with :where() (element-level
 * specificity, 0-0-1 per rule) so they only ever apply inside #vue-footer-app
 * - the raw file has none of these classes anywhere else in the shop, but
 * scoping keeps that guaranteed. Values (incl. the baked-in !important -
 * rvbw's Tailwind build has `important: true`) are copied verbatim, INCLUDING
 * internal --tw-* custom properties Tailwind's utilities communicate through
 * (bg-opacity, gradient stops, shadow). --tw-gradient-from-position/
 * -via-position/-to-position have NO inline var() fallback in main.css
 * (unlike bg-/text-opacity, which do) - main.css itself relies on Preflight's
 * `*,:before,:after,::backdrop{--tw-gradient-from-position: ; ...}` (inherited
 * from the document root) to make them resolve to empty instead of invalid.
 * We do NOT ship an equivalent inherited default rule here: a
 * `:where(#vue-footer-app), :where(#vue-footer-app) :before, ... {
 * --tw-gradient-from-position: ; }` rule was tried and is NOT reliable - it
 * verifiably parses, matches (confirmed via DevTools Protocol + CSSOM) and
 * even shows up correctly in getComputedStyle on #vue-footer-app itself, yet
 * the INHERITED value on .from-*/.to-* sometimes computes empty instead
 * (reproducible in headless Chrome; the identical rule works if injected via
 * a fresh <style> element instead of the external stylesheet - looks like a
 * genuine engine quirk with custom-property inheritance across linked
 * stylesheets, not a bug in this file). Fix: give `.from-\[#187ef2\]`/
 * `.to-\[#50c1fa\]` their OWN inline empty fallback - `var(--tw-gradient-
 * from-position,)` (trailing comma = explicit empty fallback) - so they never
 * depend on inheritance at all.
 *
 * `iconify`/`iconify--fa` (on the social-media icon <svg>s) are NOT Tailwind
 * classes and have no rule in main.css - they are runtime markers used by the
 * Iconify web component itself (fetches/caches icon SVGs), purely functional,
 * nothing to extract.
 *
 * px-4/py-4/gap-3/gap-4/md:px-10/md:gap-6 are deliberately NOT repeated here -
 * they collide with Plugins/bootstrap.min.css (see the section below) and are
 * already re-declared there with a comment explaining why.
 *
 * Re-extract by hand if footer.js's compiled output ever uses a class not
 * listed here - easiest via a headless browser, collect
 * `#vue-footer-app *`.classList after the page has rendered, rather than
 * grepping the minified bundle (that missed classes on this file's first
 * pass).
 */
:where(#vue-footer-app) .mb-0 { margin-bottom:0!important; }
:where(#vue-footer-app) .flex { display:flex!important; }
:where(#vue-footer-app) .flex-wrap { flex-wrap:wrap!important; }
:where(#vue-footer-app) .grid { display:grid!important; }
:where(#vue-footer-app) .h-0 { height:0!important; }
:where(#vue-footer-app) .h-1 { height:.25rem!important; }
:where(#vue-footer-app) .h-5 { height:1.25rem!important; }
:where(#vue-footer-app) .h-6 { height:1.5rem!important; }
:where(#vue-footer-app) .h-8 { height:2rem!important; }
:where(#vue-footer-app) .w-5 { width:1.25rem!important; }
:where(#vue-footer-app) .w-8 { width:2rem!important; }
:where(#vue-footer-app) .grid-cols-1 { grid-template-columns:repeat(1,minmax(0,1fr))!important; }
:where(#vue-footer-app) .flex-row { flex-direction:row!important; }
:where(#vue-footer-app) .flex-col { flex-direction:column!important; }
:where(#vue-footer-app) .items-center { align-items:center!important; }
:where(#vue-footer-app) .justify-center { justify-content:center!important; }
:where(#vue-footer-app) .gap-6 { gap:1.5rem!important; }
:where(#vue-footer-app) .gap-x-10 { -moz-column-gap:2.5rem!important; column-gap:2.5rem!important; }
:where(#vue-footer-app) .gap-y-2 { row-gap:.5rem!important; }
:where(#vue-footer-app) .gap-y-4 { row-gap:1rem!important; }
:where(#vue-footer-app) .max-w-64 { max-width:16rem!important; }
:where(#vue-footer-app) .ml-12 { margin-left:3rem!important; }
:where(#vue-footer-app) .rounded-full { border-radius:9999px!important; }
:where(#vue-footer-app) .border-b-0 { border-bottom-width:0!important; }
:where(#vue-footer-app) .border-none { border-style:none!important; }
:where(#vue-footer-app) .bg-\[\#f2f1ed\] { --tw-bg-opacity:1!important; background-color:rgb(242 241 237/var(--tw-bg-opacity,1))!important; }
:where(#vue-footer-app) .bg-gradient-to-r { background-image:linear-gradient(to right, var(--tw-gradient-stops))!important; }
:where(#vue-footer-app) .from-\[\#187ef2\] { --tw-gradient-from:#187ef2 var(--tw-gradient-from-position,)!important; --tw-gradient-to:#187ef200 var(--tw-gradient-to-position,)!important; --tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)!important; }
:where(#vue-footer-app) .to-\[\#50c1fa\] { --tw-gradient-to:#50c1fa var(--tw-gradient-to-position,)!important; }
:where(#vue-footer-app) .py-10 { padding-top:2.5rem!important; padding-bottom:2.5rem!important; }
:where(#vue-footer-app) .text-base { font-size:1rem!important; line-height:1.5rem!important; }
:where(#vue-footer-app) .text-sm { font-size:.875rem!important; line-height:1.25rem!important; }
:where(#vue-footer-app) .text-xl { font-size:1.25rem!important; line-height:1.75rem!important; }
:where(#vue-footer-app) .font-bold { font-weight:700!important; }
:where(#vue-footer-app) .text-\[\#006970\] { --tw-text-opacity:1!important; color:rgb(0 105 112/var(--tw-text-opacity,1))!important; }
:where(#vue-footer-app) .text-\[unset\] { color:unset!important; }
:where(#vue-footer-app) .text-zinc-600 { --tw-text-opacity:1!important; color:rgb(82 82 91/var(--tw-text-opacity,1))!important; }
:where(#vue-footer-app) .underline { text-decoration-line:underline!important; }
:where(#vue-footer-app) .outline { outline-style:solid!important; }
:where(#vue-footer-app) .outline-1 { outline-width:1px!important; }
:where(#vue-footer-app) .outline-\[\#006970\] { outline-color:#006970!important; }
:where(#vue-footer-app) .shadow-\[0px_-2px_12px_0px_rgba\(0\,0\,0\,0\.15\)\] { --tw-shadow:0px -2px 12px 0px #00000026!important; --tw-shadow-colored:0px -2px 12px 0px var(--tw-shadow-color)!important; box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)!important; }

@media (min-width: 768px) {
    :where(#vue-footer-app) .md\:h-8 { height:2rem!important; }
    :where(#vue-footer-app) .md\:grid-cols-3 { grid-template-columns:repeat(3,minmax(0,1fr))!important; }
    :where(#vue-footer-app) .md\:flex-row { flex-direction:row!important; }
    :where(#vue-footer-app) .md\:justify-between { justify-content:space-between!important; }
}

@media (min-width: 1200px) {
    :where(#vue-footer-app) .xl\:grid-cols-6 { grid-template-columns:repeat(6,minmax(0,1fr))!important; }
    :where(#vue-footer-app) .xl\:ml-0 { margin-left:0!important; }
}

:where(#vue-footer-app) :is(h1, h2, h3, h4, h5, h6) {
    margin: 0;
    padding: 0;
    font-size: inherit;
    font-weight: inherit;
    line-height: inherit;
    letter-spacing: inherit;
    color: inherit;
    text-transform: none;
    background: none;
    word-break: normal;
}

/* Bootstrap collision overrides: bootstrap.min.css (shop-only, loads after
 * rvbw's main.css) defines the SAME utility class names with a DIFFERENT
 * spacing scale and !important (px-4: 1.5rem vs Tailwind 1rem) - it would win
 * by order at every breakpoint (its rules are unconditioned). Re-assert the
 * Tailwind values for the class names the footer uses AND bootstrap defines
 * (px-4, py-4, gap-3, gap-4; mb-0 is value-identical). The responsive
 * variants sharing the same property (md:px-10, md:gap-6) are re-declared
 * after the base rules, mirroring main.css's own order - md=768px, xl=1200px
 * in rvbw's Tailwind config. When a footer.js deploy introduces new classes
 * that also exist in bootstrap, extend this list. */
:where(#vue-footer-app) .px-4 { padding-left: 1rem !important; padding-right: 1rem !important; }
:where(#vue-footer-app) .py-4 { padding-top: 1rem !important; padding-bottom: 1rem !important; }
:where(#vue-footer-app) .gap-3 { gap: 0.75rem !important; }
:where(#vue-footer-app) .gap-4 { gap: 1rem !important; }
@media (min-width: 768px) {
    :where(#vue-footer-app) .md\:px-10 { padding-left: 2.5rem !important; padding-right: 2.5rem !important; }
    :where(#vue-footer-app) .md\:gap-6 { gap: 1.5rem !important; }
}
