/* _content/AvControl.Web/Components/Layout/HalcyonLayout.razor.rz.scp.css */
/* Copied verbatim from MainLayout.razor.css. Scoped CSS gets a per-component
   attribute selector, so the MainLayout rules cannot reach this layout's copy of
   #blazor-error-ui - it has to carry its own. Bundled automatically into
   AvControl.Web.styles.css, which Components/App.razor already links. */

#blazor-error-ui[b-gijjlzcuo3] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-gijjlzcuo3] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* _content/AvControl.Web/Components/Layout/MainLayout.razor.rz.scp.css */
#blazor-error-ui[b-c90f3w6wma] {
    color-scheme: light only;
    background: lightyellow;
    bottom: 0;
    box-shadow: 0 -1px 2px rgba(0, 0, 0, 0.2);
    box-sizing: border-box;
    display: none;
    left: 0;
    padding: 0.6rem 1.25rem 0.7rem 1.25rem;
    position: fixed;
    width: 100%;
    z-index: 1000;
}

    #blazor-error-ui .dismiss[b-c90f3w6wma] {
        cursor: pointer;
        position: absolute;
        right: 0.75rem;
        top: 0.5rem;
    }
/* _content/AvControl.Web/Components/Pages/Halcyon.razor.rz.scp.css */
/* =============================================================================
   Halcyon.razor.css - page-scoped styles for the two surfaces the shared
   stylesheet does not cover.

   WHY SCOPED AND NOT wwwroot/css/halcyon.css: halcyon.css is the shared design
   contract and is owned by the foundation; this page is not permitted to edit
   it. Everything below belongs to Halcyon.razor's own markup only (the scene
   confirmation gate and the scene progress sliver), so a .razor.css file is the
   right home: Blazor rewrites each selector with this component's [b-xxxxxxxxxx]
   attribute, which no card component carries, so none of it can leak into the
   six cards, into the shared classes, or into the MudBlazor dashboard at "/".
   It is bundled automatically into AvControl.Web.styles.css, which App.razor
   already links - no wiring needed.

   Every value is taken from the design tokens declared on .hal-root in
   halcyon.css (custom properties inherit, so they resolve here) or from the
   spec's own chip / glass recipes. No new colour is introduced.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   1. SCENE BUTTON - busy progress
   The 1.3 s rAF lerp in wwwroot/js/halcyon-scenes.js writes --hal-scene-k
   (0..1, cubic ease-out) and --hal-scene-pct onto .hal-root every frame. The
   sliver below is the only thing that reads them, so the whole animation costs
   zero server round trips. Spec 6.7 says the chip renders in the ACTIVE style
   while the lerp runs, which the page does by adding is-active alongside
   is-busy; is-busy only adds the progress line.
   -------------------------------------------------------------------------- */

.hal-root[b-wz0yhcc5dy] {
    --hal-scene-k: 0;
    --hal-scene-pct: 0%;
}

.hal-scene[b-wz0yhcc5dy] {
    position: relative;
    overflow: hidden;
}

.hal-scene-prog[b-wz0yhcc5dy] {
    position: absolute;
    left: 0;
    bottom: 0;
    height: 2px;
    width: 0;
    border-radius: 999px;
    background: var(--hal-accent);
    box-shadow: 0 0 10px var(--hal-accent-glow);
    opacity: 0;
    pointer-events: none;
}

.hal-scene.is-busy .hal-scene-prog[b-wz0yhcc5dy] {
    width: var(--hal-scene-pct, 0%);
    opacity: 1;
}

/* A scene in flight keeps its full active styling; the others dim so it is
   obvious the row is locked until the lerp finishes. */
.hal-scene[disabled][b-wz0yhcc5dy] {
    cursor: default;
    opacity: .5;
}

.hal-scene.is-busy[disabled][b-wz0yhcc5dy] {
    opacity: 1;
}

.hal-scene[disabled]:hover[b-wz0yhcc5dy] {
    border-color: rgba(255, 255, 255, 0.09);
}

.hal-scene[disabled]:active[b-wz0yhcc5dy] {
    transform: none;
}


/* -----------------------------------------------------------------------------
   2. SCENE CONFIRMATION GATE
   HalcyonLayout carries no MudDialogProvider, so IDialogService renders nothing
   on this route. A scene actuates real lights, shades and an amplifier on a
   live vessel, so the gate is built here instead - same glass recipe as
   .hal-card, sitting inside .hal-root above the shell but below .hal-grain.
   -------------------------------------------------------------------------- */

.hal-confirm[b-wz0yhcc5dy] {
    position: absolute;
    inset: 0;
    z-index: 40;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 24px;
    background: rgba(4, 5, 8, 0.66);
    backdrop-filter: blur(10px) saturate(1.2);
    -webkit-backdrop-filter: blur(10px) saturate(1.2);
    /* hal-fadeUp is declared at the top level of halcyon.css, so the name is
       global and resolves from here. */
    animation: hal-fadeUp .3s cubic-bezier(.22, .61, .36, 1) both;
}

.hal-confirm-card[b-wz0yhcc5dy] {
    width: min(560px, 100%);
    max-height: 100%;
    overflow-y: auto;
    padding: 22px 24px 18px;
    border-radius: var(--hal-r-card, 26px);
    background: var(--hal-glass-bg);
    border: 1px solid var(--hal-glass-bd);
    box-shadow: var(--hal-glass-sh);
    backdrop-filter: var(--hal-glass-blur);
    -webkit-backdrop-filter: var(--hal-glass-blur);
    color: var(--hal-t1);
}

.hal-confirm-kicker[b-wz0yhcc5dy] {
    color: var(--hal-accent);
}

.hal-confirm-title[b-wz0yhcc5dy] {
    margin: 8px 0 0;
    font-family: var(--hal-font-num);
    font-size: 21px;
    font-weight: 600;
    letter-spacing: -0.01em;
    line-height: 1.15;
    color: var(--hal-t0);
}

.hal-confirm-sub[b-wz0yhcc5dy] {
    margin-top: 6px;
    font-size: 12.5px;
    color: var(--hal-t3);
}

.hal-confirm-list[b-wz0yhcc5dy] {
    margin-top: 16px;
    display: flex;
    flex-direction: column;
    gap: 1px;
    border-radius: 14px;
    overflow: hidden;
    background: rgba(0, 0, 0, 0.30);
    border: 1px solid rgba(255, 255, 255, 0.06);
    box-shadow: inset 0 2px 6px rgba(0, 0, 0, 0.45);
}

.hal-confirm-row[b-wz0yhcc5dy] {
    padding: 10px 14px;
}

.hal-confirm-row + .hal-confirm-row[b-wz0yhcc5dy] {
    border-top: 1px solid rgba(255, 255, 255, 0.05);
}

.hal-confirm-row-label[b-wz0yhcc5dy] {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--hal-accent);
}

.hal-confirm-row-detail[b-wz0yhcc5dy] {
    margin-top: 3px;
    font-size: 12.5px;
    line-height: 1.45;
    color: var(--hal-t1);
}

.hal-confirm-notes[b-wz0yhcc5dy] {
    margin: 12px 0 0;
    padding: 0 0 0 16px;
    list-style: disc;
    font-size: 11.5px;
    line-height: 1.5;
    color: var(--hal-t4);
}

.hal-confirm-notes li + li[b-wz0yhcc5dy] {
    margin-top: 4px;
}

.hal-confirm-actions[b-wz0yhcc5dy] {
    margin-top: 18px;
    display: flex;
    justify-content: flex-end;
    gap: 10px;
}

/* .hal-chip supplies the border / background / shadow recipe; only the metrics
   are set here, exactly as .hal-scene and the source chips do in halcyon.css. */
.hal-confirm-btn[b-wz0yhcc5dy] {
    padding: 10px 18px;
    border-radius: var(--hal-r-chip, 12px);
    font-size: 13px;
    font-weight: 600;
    letter-spacing: .02em;
}

.hal-confirm-btn--go[b-wz0yhcc5dy] {
    min-width: 150px;
    text-align: center;
}

@media (prefers-reduced-motion: reduce) {
    .hal-confirm[b-wz0yhcc5dy] {
        animation: none;
    }
}
