@import '_content/Microsoft.AspNetCore.Components.QuickGrid/Microsoft.AspNetCore.Components.QuickGrid.boiwgh0w5b.bundle.scp.css';

/* /Components/Layout/MainLayout.razor.rz.scp.css */
/*  Scoped styles for MainLayout.

    This file used to be the untouched Blazor project template, which fought the
    real layout in wwwroot/app.css on four counts:

      .sidebar        a blue-to-purple linear-gradient painted over the app's flat
                      var(--bg2). Scoped CSS carries an extra [b-*] attribute, so it
                      outranked app.css and the gradient always won.
      .sidebar        width:250px above 641px, against app.css's 225px.
      .top-row        background-color:#f7f7f7 - a light bar in a dark-themed app.
      .top-row/article padding-left:2rem !important, which nothing could override.

    None of .page, .top-row or <article> exist in this layout: the markup is
    .topbar / .layout / .sidebar / .main, all styled in app.css. So the template
    rules were either dead or harmful, and are gone.

    #blazor-error-ui stays. The element lives in MainLayout.razor and is styled
    NOWHERE else - app.css has no rule for it - so deleting this block would leave
    the error bar unstyled and permanently visible instead of display:none.
    It is deliberately dark-on-light: it must stay readable when the app itself
    has failed, so it does not use the theme tokens. Its colours are LITERALS for
    that reason, and there must be one for the text: 'color-scheme' does not
    reset an inherited colour, so without its own the bar took body's #f5f7fa on
    lightyellow (about 1.05:1) and the Reload link took --cyan #4dd0e1 -- an error
    bar nobody could read, shown only at the moment something has gone wrong.
    #1f2328 on lightyellow is about 15:1; #0b57d0 about 6.6:1.  */

#blazor-error-ui[b-43dcs0ysos] {
    color-scheme: light only;
    background: lightyellow;
    color: #1f2328;
    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 a[b-43dcs0ysos] {
        color: #0b57d0;
        text-decoration: underline;
    }

    /*  A real <button> with a 44px hit area (the app's tap-target floor), stripped
        of the global button look so it stays a quiet glyph. Centred on the bar's
        edge rather than pinned 0.5rem from the top, which a 44px box would overhang. */
    #blazor-error-ui .dismiss[b-43dcs0ysos] {
        cursor: pointer;
        position: absolute;
        right: 0.25rem;
        top: 50%;
        transform: translateY(-50%);
        min-width: 44px;
        min-height: 44px;
        display: inline-flex;
        align-items: center;
        justify-content: center;
        padding: 0;
        border: 0;
        background: transparent;
        color: #1f2328;
        font: inherit;
    }

    #blazor-error-ui .dismiss:focus-visible[b-43dcs0ysos] {
        outline: 2px solid #0b57d0;
        outline-offset: 2px;
    }
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-7ho84n6rne],
.components-reconnect-repeated-attempt-visible[b-7ho84n6rne],
.components-reconnect-failed-visible[b-7ho84n6rne],
.components-pause-visible[b-7ho84n6rne],
.components-resume-failed-visible[b-7ho84n6rne],
.components-rejoining-animation[b-7ho84n6rne] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-retrying[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-failed[b-7ho84n6rne],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-7ho84n6rne] {
    display: block;
}


#components-reconnect-modal[b-7ho84n6rne] {
    background-color: white;
    width: 20rem;
    margin: 20vh auto;
    padding: 2rem;
    border: 0;
    border-radius: 0.5rem;
    box-shadow: 0 3px 6px 2px rgba(0, 0, 0, 0.3);
    opacity: 0;
    transition: display 0.5s allow-discrete, overlay 0.5s allow-discrete;
    animation: components-reconnect-modal-fadeOutOpacity-b-7ho84n6rne 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-7ho84n6rne 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-7ho84n6rne 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-7ho84n6rne]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-7ho84n6rne 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-7ho84n6rne {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-7ho84n6rne {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-7ho84n6rne {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-7ho84n6rne] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-7ho84n6rne] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-7ho84n6rne] {
    border: 0;
    background-color: #1d4ed8;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-7ho84n6rne] {
        background-color: #1d4ed8;
    }

    #components-reconnect-modal button:active[b-7ho84n6rne] {
        background-color: #1d4ed8;
    }

.components-rejoining-animation[b-7ho84n6rne] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-7ho84n6rne] {
        position: absolute;
        border: 3px solid #1d4ed8;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-7ho84n6rne 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-7ho84n6rne] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-7ho84n6rne {
    0% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    4.9% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 0;
    }

    5% {
        top: 40px;
        left: 40px;
        width: 0;
        height: 0;
        opacity: 1;
    }

    100% {
        top: 0px;
        left: 0px;
        width: 80px;
        height: 80px;
        opacity: 0;
    }
}
/* /Components/Pages/DataEntry/DataEntry.razor.rz.scp.css */
/* Data Entry portal. Dark war room tokens from app.css; 44px tap targets. */
.de-prog[b-abks8vy8mg] { display:grid; grid-template-columns:repeat(auto-fill,minmax(200px,1fr)); gap:10px; margin-bottom:24px }
.de-track[b-abks8vy8mg] { height:6px; background:var(--bg4); border-radius:3px; overflow:hidden; margin:6px 0 }
.de-fill[b-abks8vy8mg] { height:100% }

/* geocharts.js builds these nodes itself, so they carry no scope attribute: ::deep. */
.de[b-abks8vy8mg]  .de-charts { display:grid; grid-template-columns:repeat(auto-fit,minmax(280px,1fr)); gap:10px; margin-bottom:24px }
.de[b-abks8vy8mg]  .gcard { background:var(--bg2); border:1px solid var(--border); border-radius:var(--radius); padding:12px 14px; min-width:0 }
.de[b-abks8vy8mg]  .gcard-head { display:flex; justify-content:space-between; align-items:baseline; gap:8px; margin-bottom:8px }
.de[b-abks8vy8mg]  .gcard-head h4 { margin:0; font-family:var(--mono); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--muted) }
.de[b-abks8vy8mg]  .gcard-sub { font-family:var(--mono); font-size:10px; color:var(--muted) }
.de[b-abks8vy8mg]  .gcard-canvas { position:relative; height:240px }

.de-bar[b-abks8vy8mg] { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin:8px 0 12px }
.de-spacer[b-abks8vy8mg] { flex:1 1 auto }
.de-sel[b-abks8vy8mg] { min-height:44px; background:var(--bg3); color:var(--text); border:1px solid var(--border2); border-radius:var(--radius); padding:0 12px; font-family:var(--mono); font-size:16px }
.de-btn[b-abks8vy8mg] { min-height:44px }
.de-dirty-count[b-abks8vy8mg] { color:var(--amber); font-family:var(--mono); font-size:12px; font-weight:700 }
.de-note[b-abks8vy8mg] { font-size:12px }

/* The grid scrolls inside its own box; the page body never scrolls sideways. */
.de-scroll[b-abks8vy8mg] { overflow-x:auto; -webkit-overflow-scrolling:touch }
.de-grid[b-abks8vy8mg] { min-width:1250px }
.de-grid td[b-abks8vy8mg] { vertical-align:middle }
.de-info-h[b-abks8vy8mg], .de-info[b-abks8vy8mg] { min-width:320px }
.de-mob[b-abks8vy8mg] { font-weight:700; color:var(--text) !important; white-space:nowrap }
.de-in[b-abks8vy8mg] { width:100%; min-width:120px; min-height:44px; box-sizing:border-box; background:var(--bg3); color:var(--text);
         border:1px solid var(--border2); border-radius:var(--radius); padding:0 10px; font-family:var(--mono); font-size:16px }
.de-in:focus[b-abks8vy8mg] { border-color:var(--accent); outline:none }
.de-cat[b-abks8vy8mg] { min-width:150px }
.de-note-in[b-abks8vy8mg] { min-width:200px }
.de-dirty td[b-abks8vy8mg] { background:rgba(245,158,11,.08) }
.de-dirty .de-in[b-abks8vy8mg] { border-color:var(--amber) }

.vi-wrap[b-abks8vy8mg] { display:flex; justify-content:space-between; gap:12px }
.vi-left[b-abks8vy8mg], .vi-right[b-abks8vy8mg] { min-width:0 }
.vi-right[b-abks8vy8mg] { text-align:right; white-space:nowrap }
.vi-name[b-abks8vy8mg] { color:var(--text); font-weight:700; font-size:12px }
.vi-fh[b-abks8vy8mg] { color:var(--muted2) }
.vi-id[b-abks8vy8mg] { color:var(--cyan); font-weight:700 }
