@charset "UTF-8";
/*!
 * Aderis design-system bridge
 * Copyright 2026 Aderis Energy, LLC All Rights Reserved (https://aderisenergy.com)
 *
 * Brings the Aderis.Common.Blazor component library's theme into Acuity WITHOUT
 * restyling the app all at once.
 *
 * ── How the URL resolves ───────────────────────────────────────────────────────
 * aderis-theme.css is a static web asset of the Aderis.Common.Blazor.Components
 * Razor Class Library, served by ACUITY.HOST via MapStaticAssets(). Acuity.Host
 * registers MapReverseProxy() last, so /_content/** resolves at the Host and is
 * never proxied to Flask. Flask pages are served THROUGH the Host, so they can link
 * this from the same origin -- one stylesheet, one source of truth, both stacks.
 *
 * If the Host is bypassed (browsing gunicorn directly on a dev port, or the
 * instant-rollback path that points Caddy back at :8081) this import 404s. That is
 * survivable by design: the tokens simply go missing and every consumer below is
 * written with a literal fallback, e.g. var(--aderis-orange, #f78a1e).
 *
 * ── Why layer(aderis), and not a plain <link> ──────────────────────────────────
 * Loading this theme unlayered would repaint all 247 Flask templates in one go:
 * it sets body{background:#030303}, a{color:green}, an h1-h6 reset, * box-sizing,
 * and redefines .form-control and .text-muted -- which Bootstrap 4 also defines.
 *
 * Unlayered declarations beat layered ones regardless of specificity. Bootstrap and
 * acuity.css both arrive via plain <link>, so they are unlayered and win
 * automatically. Nothing about Acuity's current appearance changes.
 *
 * But CUSTOM PROPERTIES still flow through, because nothing else declares them. So
 * every --aderis-* token is available immediately while every Aderis RULE stays
 * suppressed. That is the point: adopt the design system one component at a time.
 *
 * ── How to opt a component in ──────────────────────────────────────────────────
 * Write a normal, unlayered rule (in acuity.css, or in the partial that owns the
 * markup) that consumes the tokens. It outranks the layer by construction. Do NOT
 * reach for !important; if a rule is not winning, it is competing with another
 * unlayered rule, and !important will only hide that.
 *
 * ── Cost ───────────────────────────────────────────────────────────────────────
 * @import costs one extra round trip: the browser must fetch and parse this file
 * before it discovers aderis-theme.css. Accepted deliberately -- there is no `layer`
 * attribute on <link>, so an @import is the only way to assign a layer to an
 * external sheet. Revisit if it shows up in page-load measurements.
 *
 * A browser without @layer support (pre-2022) ignores this import entirely and falls
 * back to the literal values, exactly like the 404 case.
 */

/* @import must precede every rule other than @charset and @layer. */
@import url("/_content/Aderis.Common.Blazor.Components/css/aderis-theme.css") layer(aderis);
