/* /Components/Layout/Footer.razor.rz.scp.css */
.hx-footer[b-atjd90ejg7] {
    border-top: 1px solid var(--hx-border);
    background: var(--hx-surface-1);
    margin-top: 3rem;
}

.hx-footer__inner[b-atjd90ejg7] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    justify-content: space-between;
    gap: 1rem 2rem;
    padding-block: 1.5rem;
}

/* Brand */
.hx-footer__brand[b-atjd90ejg7] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
}
.hx-footer__wordmark[b-atjd90ejg7] {
    font-family: var(--hx-font-display);
    font-size: 1.35rem;
    letter-spacing: 0.06em;
    color: var(--hx-gold);
    line-height: 1;
}
.hx-footer__tag[b-atjd90ejg7] {
    font-family: var(--hx-font-mono);
    font-size: 0.7rem;
    letter-spacing: 0.05em;
    color: var(--hx-text-caption);
}

/* Links */
.hx-footer__links[b-atjd90ejg7] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem 1.25rem;
}
.hx-footer__link[b-atjd90ejg7] {
    font-size: 0.85rem;
    color: var(--hx-text-muted);
    text-decoration: none;
    transition: color 0.15s;
}
.hx-footer__link:hover[b-atjd90ejg7] { color: var(--hx-gold-hover); }

/* Legal + version */
.hx-footer__meta[b-atjd90ejg7] {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 0.15rem;
    text-align: right;
}
.hx-footer__legal[b-atjd90ejg7] {
    margin: 0;
    font-size: 0.75rem;
    color: var(--hx-text-caption-2);
}
.hx-footer__version[b-atjd90ejg7] {
    margin: 0;
    font-family: var(--hx-font-mono);
    font-size: 0.7rem;
    color: var(--hx-text-faint);
}

/* Mobile: stack, left-align. */
@media (max-width: 640px) {
    .hx-footer__inner[b-atjd90ejg7] { justify-content: flex-start; }
    .hx-footer__meta[b-atjd90ejg7] { align-items: flex-start; text-align: left; }
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
/* #blazor-error-ui styles live in app.css */

.hx-main[b-ufp39mu4tj] {
    min-height: calc(100dvh - var(--hx-nav-h));
}
/* /Components/Layout/NavMenu.razor.rz.scp.css */
/* ── Nav bar ──────────────────────────────────────────────── */
.hx-nav[b-ol0do8vzsg] {
    position: sticky;
    top: 0;
    z-index: 50;
    background: rgba(8,8,7,.92);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(232,196,108,.16);
}

.hx-nav__inner[b-ol0do8vzsg] {
    max-width: var(--hx-max-app);
    margin: 0 auto;
    padding: 0 clamp(16px,4vw,40px);
    height: var(--hx-nav-h);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 16px;
}

/* ── Wordmark ─────────────────────────────────────────────── */
.hx-nav__wordmark[b-ol0do8vzsg] {
    font-family: var(--hx-font-display);
    font-size: 26px;
    color: var(--hx-gold);
    letter-spacing: .06em;
    text-decoration: none;
    line-height: 1;
    flex-shrink: 0;
    transition: color var(--hx-t);
}

.hx-nav__wordmark:hover[b-ol0do8vzsg] {
    color: var(--hx-gold-hover);
}

/* ── Left cluster ─────────────────────────────────────────── */
.hx-nav__left[b-ol0do8vzsg] {
    display: flex;
    align-items: center;
    gap: 26px;
    min-width: 0;
}

/* ── Primary nav links (desktop) ─────────────────────────── */
.hx-nav__links[b-ol0do8vzsg] {
    display: flex;
    align-items: center;
    gap: 22px;
}

/* NavLink renders <a> — use ::deep to pierce the component boundary */
.hx-nav__links[b-ol0do8vzsg]  a {
    font-size: 13px;
    font-weight: 600;
    color: var(--hx-text-muted);
    text-decoration: none;
    transition: color var(--hx-t);
    white-space: nowrap;
}

.hx-nav__links[b-ol0do8vzsg]  a:hover,
.hx-nav__links[b-ol0do8vzsg]  a.is-active {
    color: var(--hx-gold);
}

/* ── Grouped dropdowns (doc 18, Phase 1) — headers are pure containers ── */
.hx-nav__group[b-ol0do8vzsg] { position: relative; }

.hx-nav__group-btn[b-ol0do8vzsg] {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-family: var(--hx-font-body);
    font-size: 13px;
    font-weight: 600;
    color: var(--hx-text-muted);
    background: transparent;
    border: none;
    padding: 0;
    cursor: pointer;
    white-space: nowrap;
    transition: color var(--hx-t);
}

.hx-nav__group:hover .hx-nav__group-btn[b-ol0do8vzsg],
.hx-nav__group:focus-within .hx-nav__group-btn[b-ol0do8vzsg] { color: var(--hx-gold); }

.hx-nav__caret[b-ol0do8vzsg] { font-size: 9px; transition: transform var(--hx-t); }
.hx-nav__group:hover .hx-nav__caret[b-ol0do8vzsg],
.hx-nav__group:focus-within .hx-nav__caret[b-ol0do8vzsg] { transform: rotate(180deg); }

.hx-nav__menu[b-ol0do8vzsg] {
    position: absolute;
    top: calc(100% + 10px);
    left: 50%;
    transform: translateX(-50%) translateY(4px);
    min-width: 170px;
    background: var(--hx-surface-1);
    border: 1px solid var(--hx-border-mid);
    border-radius: var(--hx-r-sm);
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    box-shadow: 0 8px 24px rgba(0,0,0,.5);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity var(--hx-t), transform var(--hx-t), visibility var(--hx-t);
    z-index: 60;
}

/* Invisible bridge so the cursor can cross the gap from header to menu without dropping :hover. */
.hx-nav__menu[b-ol0do8vzsg]::before {
    content: "";
    position: absolute;
    top: -10px;
    left: 0;
    right: 0;
    height: 10px;
}

.hx-nav__group:hover .hx-nav__menu[b-ol0do8vzsg],
.hx-nav__group:focus-within .hx-nav__menu[b-ol0do8vzsg] {
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
    transform: translateX(-50%) translateY(0);
}

.hx-nav__menu[b-ol0do8vzsg]  a {
    display: block;
    padding: 8px 12px;
    font-size: .85rem;
    font-weight: 500;
    color: var(--hx-text-2);
    border-radius: 6px;
    text-decoration: none;
    white-space: nowrap;
    transition: background var(--hx-t), color var(--hx-t);
}

.hx-nav__menu[b-ol0do8vzsg]  a:hover,
.hx-nav__menu[b-ol0do8vzsg]  a.is-active {
    background: var(--hx-fill-gold-subtle);
    color: var(--hx-gold);
}

/* ── Right cluster ────────────────────────────────────────── */
.hx-nav__right[b-ol0do8vzsg] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-shrink: 0;
}

.hx-nav__signin[b-ol0do8vzsg] {
    font-size: .8rem !important;
    padding: .45em 1.1em !important;
    min-height: 36px !important;
}

/* ── Avatar ───────────────────────────────────────────────── */
.hx-nav__avatar-wrap[b-ol0do8vzsg] {
    position: relative;
}

/* Account button = @handle + initial glyph (so you can tell profiles apart at a glance). */
.hx-nav__account[b-ol0do8vzsg] {
    display: flex;
    align-items: center;
    gap: 8px;
    background: transparent;
    border: none;
    padding: 0;
    cursor: pointer;
}

.hx-nav__handle[b-ol0do8vzsg] {
    font-family: var(--hx-font-mono);
    font-size: 12.5px;
    color: var(--hx-gold);
    max-width: min(40vw, 12rem);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: color var(--hx-t);
}

.hx-nav__avatar[b-ol0do8vzsg] {
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    line-height: 1;
    transition: transform var(--hx-t);
}

.hx-nav__account:hover .hx-nav__avatar[b-ol0do8vzsg] {
    transform: scale(1.06);
}
.hx-nav__account:hover .hx-nav__handle[b-ol0do8vzsg] { color: var(--hx-gold-hover); }

/* ── Avatar dropdown ──────────────────────────────────────── */
.hx-nav__dropdown[b-ol0do8vzsg] {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    min-width: 160px;
    background: var(--hx-surface-1);
    border: 1px solid var(--hx-border-mid);
    border-radius: var(--hx-r-sm);
    padding: 6px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    box-shadow: 0 8px 24px rgba(0,0,0,.5);
}

.hx-nav__dropdown a[b-ol0do8vzsg],
.hx-nav__dropdown button[b-ol0do8vzsg] {
    display: block;
    width: 100%;
    padding: 8px 12px;
    text-align: left;
    font-size: .85rem;
    font-weight: 500;
    color: var(--hx-text-2);
    background: transparent;
    border: none;
    border-radius: 6px;
    cursor: pointer;
    text-decoration: none;
    transition: background var(--hx-t), color var(--hx-t);
    font-family: var(--hx-font-body);
}

.hx-nav__dropdown a:hover[b-ol0do8vzsg],
.hx-nav__dropdown button:hover[b-ol0do8vzsg] {
    background: var(--hx-fill-gold-subtle);
    color: var(--hx-gold);
}

.hx-nav__dropdown-divider[b-ol0do8vzsg] {
    height: 1px;
    background: var(--hx-border);
    margin: 4px 6px;
}

/* ── Hamburger (mobile only) ──────────────────────────────── */
.hx-nav__hamburger[b-ol0do8vzsg] {
    display: none;
    flex-direction: column;
    justify-content: center;
    align-items: center;
    gap: 5px;
    width: 40px;
    height: 40px;
    background: transparent;
    border: 1px solid var(--hx-border-mid);
    border-radius: var(--hx-r-sm);
    cursor: pointer;
    padding: 0;
    transition: border-color var(--hx-t);
}

.hx-nav__hamburger:hover[b-ol0do8vzsg] {
    border-color: var(--hx-border-gold);
}

.hx-nav__hamburger span[b-ol0do8vzsg] {
    display: block;
    width: 18px;
    height: 2px;
    background: var(--hx-text-muted);
    border-radius: 2px;
    transition: transform var(--hx-t), opacity var(--hx-t), background var(--hx-t);
    transform-origin: center;
}

.hx-nav__hamburger.is-open span:nth-child(1)[b-ol0do8vzsg] { transform: translateY(7px) rotate(45deg); background: var(--hx-gold); }
.hx-nav__hamburger.is-open span:nth-child(2)[b-ol0do8vzsg] { opacity: 0; }
.hx-nav__hamburger.is-open span:nth-child(3)[b-ol0do8vzsg] { transform: translateY(-7px) rotate(-45deg); background: var(--hx-gold); }

/* ── Mobile drawer ────────────────────────────────────────── */
.hx-nav__mobile[b-ol0do8vzsg] {
    border-top: 1px solid var(--hx-border);
    padding: 8px clamp(16px,4vw,40px) 16px;
    display: flex;
    flex-direction: column;
    gap: 2px;
    max-width: var(--hx-max-app);
    margin: 0 auto;
}

.hx-nav__mobile[b-ol0do8vzsg]  a {
    display: flex;
    align-items: center;
    padding: 11px 10px;
    font-size: .95rem;
    font-weight: 600;
    /* Neutral off-white so links read as links — gold is reserved for headers, hover & active. */
    color: var(--hx-text-heading, #f6efdd);
    text-decoration: none;
    border-radius: var(--hx-r-sm);
    transition: background var(--hx-t), color var(--hx-t);
    min-height: 44px;
}

.hx-nav__mobile[b-ol0do8vzsg]  a:hover,
.hx-nav__mobile[b-ol0do8vzsg]  a.is-active {
    color: var(--hx-gold);
    background: var(--hx-fill-gold-subtle);
}

/* Each group = header + its links, chunked by a divider line above. */
.hx-nav__m-section[b-ol0do8vzsg] {
    margin-top: 8px;
    padding-top: 6px;
    border-top: 1px solid var(--hx-border);
}

/* Grouped links sit indented UNDER their header, a touch smaller — clearly subordinate. */
.hx-nav__m-section[b-ol0do8vzsg]  a {
    padding-left: 28px;
    font-size: .9rem;
}

/* Group headers (doc 18) — labels, not links. Gold + uppercase + spaced = the group anchor. */
.hx-nav__mobile-group[b-ol0do8vzsg] {
    display: block;
    padding: 4px 10px 6px;
    font-family: var(--hx-font-mono);
    font-size: .68rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--hx-gold);
}

/* ── Responsive ───────────────────────────────────────────── */
@media (max-width: 700px) {
    .hx-nav__links[b-ol0do8vzsg] {
        display: none;
    }

    .hx-nav__hamburger[b-ol0do8vzsg] {
        display: flex;
    }
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-t4a3fpxj24],
.components-reconnect-repeated-attempt-visible[b-t4a3fpxj24],
.components-reconnect-failed-visible[b-t4a3fpxj24],
.components-pause-visible[b-t4a3fpxj24],
.components-resume-failed-visible[b-t4a3fpxj24],
.components-rejoining-animation[b-t4a3fpxj24] {
    display: none;
}

#components-reconnect-modal.components-reconnect-show .components-reconnect-first-attempt-visible[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-show .components-rejoining-animation[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-paused .components-pause-visible[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-resume-failed .components-resume-failed-visible[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-retrying[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-retrying .components-reconnect-repeated-attempt-visible[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-retrying .components-rejoining-animation[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-failed[b-t4a3fpxj24],
#components-reconnect-modal.components-reconnect-failed .components-reconnect-failed-visible[b-t4a3fpxj24] {
    display: block;
}


#components-reconnect-modal[b-t4a3fpxj24] {
    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-t4a3fpxj24 0.5s both;
    &[open]

{
    animation: components-reconnect-modal-slideUp-b-t4a3fpxj24 1.5s cubic-bezier(.05, .89, .25, 1.02) 0.3s, components-reconnect-modal-fadeInOpacity-b-t4a3fpxj24 0.5s ease-in-out 0.3s;
    animation-fill-mode: both;
}

}

#components-reconnect-modal[b-t4a3fpxj24]::backdrop {
    background-color: rgba(0, 0, 0, 0.4);
    animation: components-reconnect-modal-fadeInOpacity-b-t4a3fpxj24 0.5s ease-in-out;
    opacity: 1;
}

@keyframes components-reconnect-modal-slideUp-b-t4a3fpxj24 {
    0% {
        transform: translateY(30px) scale(0.95);
    }

    100% {
        transform: translateY(0);
    }
}

@keyframes components-reconnect-modal-fadeInOpacity-b-t4a3fpxj24 {
    0% {
        opacity: 0;
    }

    100% {
        opacity: 1;
    }
}

@keyframes components-reconnect-modal-fadeOutOpacity-b-t4a3fpxj24 {
    0% {
        opacity: 1;
    }

    100% {
        opacity: 0;
    }
}

.components-reconnect-container[b-t4a3fpxj24] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1rem;
}

#components-reconnect-modal p[b-t4a3fpxj24] {
    margin: 0;
    text-align: center;
}

#components-reconnect-modal button[b-t4a3fpxj24] {
    border: 0;
    background-color: #6b9ed2;
    color: white;
    padding: 4px 24px;
    border-radius: 4px;
}

    #components-reconnect-modal button:hover[b-t4a3fpxj24] {
        background-color: #3b6ea2;
    }

    #components-reconnect-modal button:active[b-t4a3fpxj24] {
        background-color: #6b9ed2;
    }

.components-rejoining-animation[b-t4a3fpxj24] {
    position: relative;
    width: 80px;
    height: 80px;
}

    .components-rejoining-animation div[b-t4a3fpxj24] {
        position: absolute;
        border: 3px solid #0087ff;
        opacity: 1;
        border-radius: 50%;
        animation: components-rejoining-animation-b-t4a3fpxj24 1.5s cubic-bezier(0, 0.2, 0.8, 1) infinite;
    }

        .components-rejoining-animation div:nth-child(2)[b-t4a3fpxj24] {
            animation-delay: -0.5s;
        }

@keyframes components-rejoining-animation-b-t4a3fpxj24 {
    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/Admin/AdminJudges.razor.rz.scp.css */
.aj[b-dt19d2k70i] { padding-block: 2rem 4rem; }

.aj__head[b-dt19d2k70i] { margin-bottom: 1.5rem; }
.aj__title[b-dt19d2k70i] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2rem;
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0;
}
.aj__sub[b-dt19d2k70i] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
    margin: 0.25rem 0 0;
}

.aj__flash[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.85rem;
    padding: 0.7rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    border: 1px solid transparent;
}
.aj__flash--ok[b-dt19d2k70i]  { color: #7bd88f; border-color: rgba(123, 216, 143, 0.4); background: rgba(123, 216, 143, 0.08); }
.aj__flash--err[b-dt19d2k70i] { color: #e6a15a; border-color: rgba(230, 161, 90, 0.4);  background: rgba(230, 161, 90, 0.08); }

.aj__card[b-dt19d2k70i] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 12px;
    padding: 1.25rem;
    margin-bottom: 1.5rem;
    min-width: 0;
}
.aj__section[b-dt19d2k70i] {
    font-family: 'Bebas Neue', sans-serif;
    letter-spacing: 0.08em;
    font-size: 1.25rem;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.75rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}
.aj__count[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    letter-spacing: 0;
}
.aj__hint[b-dt19d2k70i], .aj__empty[b-dt19d2k70i] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
    font-size: 0.92rem;
    margin: 0 0 0.9rem;
}

.aj__list[b-dt19d2k70i] { list-style: none; margin: 0.5rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.75rem; }

.aj__judge[b-dt19d2k70i], .aj__result[b-dt19d2k70i], .aj__invite[b-dt19d2k70i] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.75rem 1rem;
    padding: 0.85rem;
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    background: var(--hx-surface-2, #0c0c0c);
    min-width: 0;
}
.aj__who[b-dt19d2k70i] { display: flex; align-items: center; gap: 0.75rem; flex: 1 1 260px; min-width: 0; }
.aj__who-text[b-dt19d2k70i] { display: flex; flex-direction: column; gap: 0.15rem; min-width: 0; flex: 1 1 200px; }
.aj__name[b-dt19d2k70i] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 700;
    color: var(--hx-fg, #fff);
    text-decoration: none;
    overflow-wrap: anywhere;
}
a.aj__name:hover[b-dt19d2k70i] { color: var(--hx-gold, #e8c46c); }
.aj__meta[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.74rem;
    color: var(--hx-muted);
    overflow-wrap: anywhere;
}
.aj__meta a[b-dt19d2k70i] { color: inherit; }

.aj__byline-row[b-dt19d2k70i] { display: flex; align-items: flex-end; gap: 0.5rem; flex: 1 1 280px; min-width: 0; }
.aj__byline-row .aj__field[b-dt19d2k70i] { flex: 1; min-width: 0; }
.aj__row-actions[b-dt19d2k70i] { display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem; }
.aj__confirm[b-dt19d2k70i] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.88rem; color: #e6a15a; flex-basis: 100%; }

.aj__field[b-dt19d2k70i] { display: flex; flex-direction: column; gap: 0.3rem; min-width: 0; }
.aj__field > span[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--hx-muted);
}
.aj__field > span em[b-dt19d2k70i] { font-style: italic; text-transform: none; opacity: 0.8; }
.aj__input[b-dt19d2k70i] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 1rem;
    padding: 0.6rem 0.7rem;
    min-height: 44px;
    background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #333);
    border-radius: 8px;
    color: var(--hx-fg, #fff);
    width: 100%;
    box-sizing: border-box;
}
.aj__input:focus[b-dt19d2k70i] { outline: none; border-color: var(--hx-gold, #e8c46c); }

.aj__btn[b-dt19d2k70i] { min-height: 44px; white-space: nowrap; }
/* Outlined, not the bare grey hx-btn — grey reads as disabled (operator, 2026-10-10). */
.aj__btn--danger[b-dt19d2k70i] { background: transparent; color: #e6a15a; border: 1px solid rgba(230, 161, 90, 0.55); }
.aj__btn--danger:hover:not(:disabled)[b-dt19d2k70i] { border-color: #e6a15a; background: rgba(230, 161, 90, 0.08); }

.aj__search[b-dt19d2k70i] { display: flex; gap: 0.5rem; }
.aj__search .aj__input[b-dt19d2k70i] { flex: 1; }

.aj__tag[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.74rem;
    letter-spacing: 0.06em;
    color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.45);
    border-radius: 999px;
    padding: 0.25rem 0.65rem;
}

.aj__invite-form[b-dt19d2k70i] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr));
    gap: 0.75rem;
    align-items: end;
}

.aj__newlink[b-dt19d2k70i] {
    margin-top: 1rem;
    padding: 0.9rem;
    border: 1px solid rgba(232, 196, 108, 0.5);
    border-radius: 10px;
    background: rgba(232, 196, 108, 0.06);
    display: flex;
    flex-direction: column;
    gap: 0.6rem;
    min-width: 0;
}
.aj__newlink-head[b-dt19d2k70i] { margin: 0; font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; color: var(--hx-gold, #e8c46c); }
.aj__link[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    color: var(--hx-fg, #fff);
    overflow-wrap: anywhere;
    user-select: all;
}
.aj__newlink .aj__btn[b-dt19d2k70i] { align-self: flex-start; }

.aj__state[b-dt19d2k70i] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    border-radius: 999px;
    padding: 0.2rem 0.6rem;
    border: 1px solid var(--hx-border, #333);
    color: var(--hx-muted);
}
.aj__state--open[b-dt19d2k70i]    { color: #6fa8bd; border-color: rgba(111, 168, 189, 0.5); }
.aj__state--claimed[b-dt19d2k70i] { color: #7bd88f; border-color: rgba(123, 216, 143, 0.45); }
/* /Components/Pages/Admin/CatalogReview.razor.rz.scp.css */
.cr[b-ce2f0qk2zr] { padding: 2rem 1rem 4rem; }

.cr__head[b-ce2f0qk2zr] { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.cr__eyebrow[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.16em; color: var(--hx-gold, #e8c46c); margin: 0; }
.cr__title[b-ce2f0qk2zr] { font-family: 'Bebas Neue', sans-serif; font-size: clamp(2rem, 5vw, 3rem); margin: 0.1rem 0 0; color: var(--hx-text-heading, #f6efdd); }
.cr__head-actions[b-ce2f0qk2zr] { display: flex; align-items: center; gap: 0.9rem; }
.cr__count[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-2, #cbc3b0); white-space: nowrap; }

.cr__flash[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.8rem; color: #6cbf7a; background: rgba(108,191,122,0.08); border: 1px solid rgba(108,191,122,0.3); border-radius: 8px; padding: 0.6rem 0.9rem; margin: 1rem 0 0; }

.cr__filters[b-ce2f0qk2zr] { display: flex; gap: 0.5rem; flex-wrap: wrap; margin: 1.25rem 0 0.75rem; }
.cr__filter[b-ce2f0qk2zr] { padding: 6px 14px; border-radius: 999px; border: none; background: rgba(255,255,255,.04); color: var(--hx-text-muted, #9a927e); font-family: var(--hx-font-body); font-size: 12px; font-weight: 600; cursor: pointer; }
.cr__filter.is-active[b-ce2f0qk2zr] { background: transparent; color: var(--hx-gold, #e8c46c); box-shadow: inset 0 0 0 1px rgba(232,196,108,.7); }

/* Within-status narrowing: category dropdown + name/brand search (the queue grows without bound). */
.cr__subfilters[b-ce2f0qk2zr] { display: flex; align-items: center; gap: 0.6rem; flex-wrap: wrap; margin: 0 0 1.25rem; }
.cr__cat-select[b-ce2f0qk2zr], .cr__search[b-ce2f0qk2zr] {
    font-family: 'Space Mono', monospace; font-size: 0.78rem;
    color: var(--hx-text-heading, #f6efdd);
    background: var(--hx-surface-1, #14110c);
    border: 1px solid var(--hx-border, #2a2820); border-radius: 8px;
    padding: 7px 12px;
}
.cr__cat-select[b-ce2f0qk2zr] { cursor: pointer; }
.cr__search[b-ce2f0qk2zr] { flex: 1 1 220px; min-width: 0; }
.cr__search[b-ce2f0qk2zr]::placeholder { color: var(--hx-text-muted, #9a927e); }
.cr__cat-select:focus[b-ce2f0qk2zr], .cr__search:focus[b-ce2f0qk2zr] { outline: none; border-color: rgba(232,196,108,.6); }
.cr__result-count[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.68rem; color: var(--hx-text-muted, #9a927e); white-space: nowrap; }
@media (min-width: 560px) { .cr__cat-select[b-ce2f0qk2zr] { max-width: 260px; } }

.cr__layout[b-ce2f0qk2zr] { display: grid; grid-template-columns: minmax(0, 340px) 1fr; gap: 1.5rem; align-items: start; }
@media (max-width: 820px) { .cr__layout[b-ce2f0qk2zr] { grid-template-columns: 1fr; } }

.cr__queue[b-ce2f0qk2zr] { display: flex; flex-direction: column; gap: 0.5rem; }
.cr__empty[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #9a927e); }

/* Gated-queue prompt — shown until the reviewer picks a category or searches. */
.cr__prompt[b-ce2f0qk2zr] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-text-2, #cbc3b0);
    background: rgba(255,255,255,.02);
    border: 1px dashed var(--hx-border, #2a2820);
    border-radius: 10px;
    padding: 1.6rem 1.25rem;
    text-align: center;
    line-height: 1.5;
}
.cr__prompt-sub[b-ce2f0qk2zr] {
    display: block;
    margin-top: 0.4rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    color: var(--hx-text-muted, #9a927e);
}
.cr__item[b-ce2f0qk2zr] { text-align: left; width: 100%; cursor: pointer; padding: 0.7rem 0.85rem; border-radius: 10px; background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820); transition: border-color .15s; }
.cr__item:hover[b-ce2f0qk2zr] { border-color: rgba(232,196,108,.4); }
.cr__item.is-selected[b-ce2f0qk2zr] { border-color: var(--hx-gold, #e8c46c); }
.cr__item-top[b-ce2f0qk2zr] { display: flex; justify-content: space-between; align-items: center; gap: 0.5rem; }
.cr__item-name[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; color: var(--hx-text-heading, #f6efdd); }
.cr__item-meta[b-ce2f0qk2zr] { display: flex; gap: 0.5rem; flex-wrap: wrap; margin-top: 0.35rem; font-family: 'Space Mono', monospace; font-size: 0.62rem; color: var(--hx-text-2, #cbc3b0); }

.cr__cat[b-ce2f0qk2zr] { color: var(--hx-text-2, #cbc3b0); text-transform: lowercase; }
.cr__src--user[b-ce2f0qk2zr] { color: #8fc2ff; }
.cr__verify[b-ce2f0qk2zr] { color: #ffb02e; }
.cr__status[b-ce2f0qk2zr] { color: var(--hx-text-muted, #9a927e); }
.cr__conf[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.6rem; padding: 2px 7px; border-radius: 999px; }
.cr__conf--high[b-ce2f0qk2zr] { color: #6cbf7a; border: 1px solid rgba(108,191,122,.5); }
.cr__conf--medium[b-ce2f0qk2zr] { color: #ffb02e; border: 1px solid rgba(255,176,46,.5); }
.cr__conf--low[b-ce2f0qk2zr] { color: #ff8f8f; border: 1px solid rgba(255,120,120,.5); }

.cr__detail[b-ce2f0qk2zr] { background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820); border-radius: 14px; padding: 1.4rem; }
.cr__d-title[b-ce2f0qk2zr] { font-family: 'Bebas Neue', sans-serif; font-size: 1.9rem; margin: 0; color: var(--hx-text-heading, #f6efdd); }
.cr__d-badges[b-ce2f0qk2zr] { display: flex; gap: 0.6rem; flex-wrap: wrap; margin: 0.5rem 0 1rem; font-family: 'Space Mono', monospace; font-size: 0.65rem; align-items: center; }
.cr__warn[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; color: #ffb02e; background: rgba(255,176,46,.07); border: 1px solid rgba(255,176,46,.3); border-radius: 8px; padding: 0.5rem 0.75rem; margin: 0.4rem 0; }

.cr__chars[b-ce2f0qk2zr] { background: rgba(255,255,255,.02); border: 1px solid var(--hx-border, #2a2820); border-radius: 10px; padding: 0.8rem 1rem; margin: 0.8rem 0; }
.cr__chars-label[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.1em; color: var(--hx-gold, #e8c46c); }
.cr__char[b-ce2f0qk2zr] { display: flex; justify-content: space-between; gap: 1rem; padding: 0.3rem 0; border-bottom: 1px solid rgba(255,255,255,.05); font-family: 'Space Mono', monospace; font-size: 0.78rem; }
.cr__char span:first-child[b-ce2f0qk2zr] { color: var(--hx-text-muted, #9a927e); }
.cr__char span:last-child[b-ce2f0qk2zr] { color: var(--hx-text-heading, #f6efdd); text-align: right; }

.cr__source-link[b-ce2f0qk2zr] { display: block; font-family: 'Space Mono', monospace; font-size: 0.68rem; color: #8fc2ff; word-break: break-all; margin: 0.4rem 0 1rem; }
.cr__label[b-ce2f0qk2zr] { display: block; font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.06em; color: var(--hx-text-2, #cbc3b0); margin: 0.7rem 0 0.25rem; }
.cr__label-hint[b-ce2f0qk2zr] { color: var(--hx-text-muted, #9a927e); text-transform: none; letter-spacing: 0; }
.cr__fields[b-ce2f0qk2zr] { display: flex; flex-direction: column; gap: 0.4rem; }
.cr__field[b-ce2f0qk2zr] { display: grid; grid-template-columns: 8rem 1fr; align-items: center; gap: 0.6rem; }
.cr__field-key[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-muted, #9a927e); }
/* Empty field = amber highlight for quick-reference enrichment (clears live as it's filled). */
.cr__field--missing .hx-input[b-ce2f0qk2zr] { border-color: rgba(255,176,46,.55); background: rgba(255,176,46,.05); }
.cr__field--missing .cr__field-key[b-ce2f0qk2zr] { color: #ffb02e; }
.cr__field--missing .cr__field-key[b-ce2f0qk2zr]::after { content: " •"; }
.cr__raw[b-ce2f0qk2zr] { margin: 0.7rem 0 0; }
.cr__raw summary[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.66rem; color: var(--hx-text-muted, #9a927e); cursor: pointer; }
.cr__json[b-ce2f0qk2zr] { font-family: 'Space Mono', monospace; font-size: 0.75rem; width: 100%; margin-top: 0.4rem; }
.cr__save-row[b-ce2f0qk2zr] { display: flex; align-items: center; gap: 0.7rem; margin-top: 0.7rem; }
.cr__save[b-ce2f0qk2zr] { margin-top: 0; }
/* Immediate, local save confirmation beside the button (operator, 2026-07-18). */
.cr__saved[b-ce2f0qk2zr] {
    font-family: 'Space Mono', monospace; font-size: 0.78rem;
    color: #6cbf7a;
    animation: cr-saved-in-b-ce2f0qk2zr 0.15s ease-out;
}
@keyframes cr-saved-in-b-ce2f0qk2zr { from { opacity: 0; transform: translateX(-4px); } to { opacity: 1; transform: none; } }

/* Live-product note (shown instead of the publish/reject actions once Approved). */
.cr__live-note[b-ce2f0qk2zr] {
    margin: 1.2rem 0 0.6rem; padding: 0.7rem 0.9rem;
    border: 1px solid rgba(108,191,122,.3); border-radius: 8px; background: rgba(108,191,122,.06);
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; color: #b0a890; line-height: 1.4;
}
.cr__live-note b[b-ce2f0qk2zr] { color: #f6efdd; }

.cr__actions[b-ce2f0qk2zr] { display: flex; gap: 0.6rem; flex-wrap: wrap; margin: 1.2rem 0 0.6rem; }
.cr__merge[b-ce2f0qk2zr] { display: flex; gap: 0.6rem; align-items: center; margin-top: 0.4rem; }
.cr__error[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; color: #e0a05a; margin: 0.8rem 0 0; }

/* ── Near-duplicate verify panel (doc 23) ─────────────────── */
.cr__dup[b-ce2f0qk2zr] {
    margin-top: 0.9rem;
    padding: 0.9rem 1rem 1rem;
    border: 1px solid rgba(224, 160, 90, 0.55);
    border-left: 3px solid #e0a05a;
    border-radius: 8px;
    background: rgba(224, 160, 90, 0.08);
}
.cr__dup-title[b-ce2f0qk2zr] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1rem;
    letter-spacing: 0.04em;
    color: #f0b070;
    margin: 0 0 0.35rem;
}
.cr__dup-body[b-ce2f0qk2zr] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    line-height: 1.45;
    color: #d8d2c4;
    margin: 0 0 0.6rem;
}
.cr__dup-list[b-ce2f0qk2zr] {
    list-style: none;
    margin: 0 0 0.9rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.cr__dup-list li[b-ce2f0qk2zr] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
}
.cr__dup-name[b-ce2f0qk2zr] { color: var(--hx-fg, #fff); font-weight: 600; }
.cr__dup-id[b-ce2f0qk2zr] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
}
.cr__dup-actions[b-ce2f0qk2zr] { display: flex; gap: 0.6rem; flex-wrap: wrap; }

/* Review trail — append-only, attributed, multi-pass history (doc 23 §7) */
.cr__trail[b-ce2f0qk2zr] { margin: 1.1rem 0 0.4rem; border-top: 1px solid var(--hx-border, #2a2820); padding-top: 0.9rem; }
.cr__trail-empty[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: var(--hx-text-muted, #9a927e); font-style: italic; margin: 0.3rem 0 0.6rem; }
.cr__trail-list[b-ce2f0qk2zr] { list-style: none; margin: 0.3rem 0 0.7rem; padding: 0; display: flex; flex-direction: column; gap: 0.55rem; }
.cr__trail-item[b-ce2f0qk2zr] { border-left: 2px solid var(--hx-border, #2a2820); padding: 0.1rem 0 0.1rem 0.7rem; }
.cr__trail-meta[b-ce2f0qk2zr] { display: flex; gap: 0.6rem; flex-wrap: wrap; align-items: baseline; font-family: 'Space Mono', monospace; font-size: 0.62rem; }
.cr__trail-who[b-ce2f0qk2zr] { color: var(--hx-text-2, #cbc3b0); }
.cr__trail-when[b-ce2f0qk2zr] { color: var(--hx-text-muted, #9a927e); }
.cr__trail-note[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; color: var(--hx-text-heading, #f6efdd); margin: 0.25rem 0 0; white-space: pre-wrap; }
.cr__trail-kind[b-ce2f0qk2zr] { letter-spacing: 0.04em; color: var(--hx-text-muted, #9a927e); }
.cr__trail-kind--published[b-ce2f0qk2zr] { color: #6cbf7a; }
.cr__trail-kind--rejected[b-ce2f0qk2zr] { color: #ff8f8f; }
.cr__trail-kind--merged[b-ce2f0qk2zr] { color: #8fc2ff; }
.cr__trail-kind--markedreviewing[b-ce2f0qk2zr] { color: #ffb02e; }
.cr__trail-add[b-ce2f0qk2zr] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; width: 100%; margin: 0.2rem 0 0.5rem; resize: vertical; }
/* /Components/Pages/Admin/ShowdownBooth.razor.rz.scp.css */
.sb[b-e8p7qhj4i7] { padding-block: 2rem 4rem; }

.sb__head[b-e8p7qhj4i7] { margin-bottom: 1.5rem; }
.sb__title[b-e8p7qhj4i7] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2rem;
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0;
}
.sb__sub[b-e8p7qhj4i7] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
    margin: 0.25rem 0 0;
}

.sb__flash[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace;
    font-size: 0.85rem;
    padding: 0.7rem 1rem;
    border-radius: 8px;
    margin-bottom: 1rem;
    border: 1px solid transparent;
}
.sb__flash--ok[b-e8p7qhj4i7]  { color: #7bd88f; border-color: rgba(123, 216, 143, 0.4); background: rgba(123, 216, 143, 0.08); }
.sb__flash--err[b-e8p7qhj4i7] { color: #e6a15a; border-color: rgba(230, 161, 90, 0.4);  background: rgba(230, 161, 90, 0.08); }

.sb__actions-top[b-e8p7qhj4i7] { margin-bottom: 1.5rem; }

/* ── Create/edit form ─────────────────────────────── */
.sb__form[b-e8p7qhj4i7] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 2rem;
}
.sb__form-title[b-e8p7qhj4i7] {
    font-family: 'Bebas Neue', sans-serif;
    letter-spacing: 0.08em;
    font-size: 1.25rem;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 1rem;
}
.sb__grid[b-e8p7qhj4i7] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
}
.sb__field[b-e8p7qhj4i7] { display: flex; flex-direction: column; gap: 0.3rem; }
.sb__field--wide[b-e8p7qhj4i7] { grid-column: 1 / -1; }
.sb__field > span[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--hx-muted);
}
.sb__field > span em[b-e8p7qhj4i7] { font-style: italic; text-transform: none; opacity: 0.8; }
.sb__input[b-e8p7qhj4i7] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.95rem;
    padding: 0.55rem 0.7rem;
    background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #333);
    border-radius: 8px;
    color: var(--hx-fg, #fff);
}
.sb__input:focus[b-e8p7qhj4i7] { outline: none; border-color: var(--hx-gold, #e8c46c); }
.sb__check[b-e8p7qhj4i7] { flex-direction: row; align-items: center; gap: 0.5rem; }
.sb__check span[b-e8p7qhj4i7] { text-transform: none; font-size: 0.9rem; color: #d8cdb6; font-family: 'Hanken Grotesk', sans-serif; letter-spacing: 0; }

.sb__form-issue[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace; font-size: 0.8rem;
    color: #e6a15a; margin: 1rem 0 0;
}
.sb__form-actions[b-e8p7qhj4i7] { display: flex; gap: 0.75rem; margin-top: 1.25rem; }

/* ── List ─────────────────────────────────────────── */
.sb__empty[b-e8p7qhj4i7] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-muted); }
.sb__list[b-e8p7qhj4i7] { display: flex; flex-direction: column; gap: 0.75rem; }
.sb__row[b-e8p7qhj4i7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    padding: 1rem 1.2rem;
}
.sb__row-main[b-e8p7qhj4i7] { min-width: 0; flex: 1 1 320px; }
.sb__row-name[b-e8p7qhj4i7] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.25rem;
    letter-spacing: 0.03em;
    color: var(--hx-fg, #fff);
    display: flex;
    align-items: center;
    gap: 0.6rem;
    flex-wrap: wrap;
}
.sb__status[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.12rem 0.5rem;
    border-radius: 999px;
    border: 1px solid var(--hx-border, #333);
    color: var(--hx-muted);
}
.sb__status--1[b-e8p7qhj4i7] { color: #9db4d0; border-color: rgba(157, 180, 208, 0.4); }   /* Upcoming */
.sb__status--2[b-e8p7qhj4i7] { color: #7bd88f; border-color: rgba(123, 216, 143, 0.4); }   /* Taking entries */
.sb__status--3[b-e8p7qhj4i7] { color: var(--hx-gold, #e8c46c); border-color: rgba(232, 196, 108, 0.5); }  /* Live */
.sb__status--4[b-e8p7qhj4i7] { color: var(--hx-muted); }                                    /* Closed (finished) */
.sb__status--cancelled[b-e8p7qhj4i7] {                                                       /* Called off */
    color: #e6a15a;
    border-color: rgba(230, 161, 90, 0.4);
    text-decoration: line-through;
}
.sb__mode[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    letter-spacing: 0.08em;
    color: var(--hx-muted);
}
.sb__row-meta[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace;
    font-size: 0.74rem;
    color: var(--hx-muted);
    margin-top: 0.4rem;
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    align-items: center;
}
.sb__hopper--full[b-e8p7qhj4i7] { color: #7bd88f; }
.sb__voting[b-e8p7qhj4i7] { color: var(--hx-gold, #e8c46c); }

.sb__row-actions[b-e8p7qhj4i7] { display: flex; gap: 0.5rem; flex-wrap: wrap; align-items: center; }
.sb__confirm[b-e8p7qhj4i7] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    color: #e6a15a;
    margin-right: 0.15rem;
}
.sb__btn-sm[b-e8p7qhj4i7] { padding: 0.4rem 0.8rem; font-size: 0.8rem; }
.sb__btn-danger[b-e8p7qhj4i7] { color: #e6a15a; border-color: rgba(230, 161, 90, 0.4); }

@media (max-width: 640px) {
    .sb__row[b-e8p7qhj4i7] { flex-direction: column; align-items: stretch; }
    /* In a column the 320px basis becomes a HEIGHT — a tall empty block under every row (operator, 2026-10-10). */
    .sb__row-main[b-e8p7qhj4i7] { flex: 0 0 auto; }
    .sb__row-actions[b-e8p7qhj4i7] { justify-content: flex-start; }
}

/* ── The judging panel picker (doc 21 §11.2) ─────── */
.sb__panel[b-e8p7qhj4i7] {
    margin: 1.25rem 0 0;
    padding: 1rem;
    border: 1px solid rgba(232, 196, 108, 0.35);
    border-radius: 10px;
    min-width: 0;
}
.sb__panel-title[b-e8p7qhj4i7] {
    font-family: 'Bebas Neue', sans-serif;
    letter-spacing: 0.08em;
    font-size: 1.1rem;
    color: var(--hx-gold, #e8c46c);
    padding: 0 0.4rem;
}
.sb__panel-hint[b-e8p7qhj4i7] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; color: var(--hx-muted); margin: 0 0 0.75rem; }
.sb__panel-hint a[b-e8p7qhj4i7] { color: var(--hx-gold, #e8c46c); }
.sb__panel-list[b-e8p7qhj4i7] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 0.4rem; }
.sb__judge[b-e8p7qhj4i7] {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    min-height: 44px;
    padding: 0.55rem 0.6rem;
    border-radius: 8px;
    cursor: pointer;
}
.sb__judge:hover[b-e8p7qhj4i7] { background: rgba(232, 196, 108, 0.06); }
.sb__judge input[b-e8p7qhj4i7] { width: 1.2rem; height: 1.2rem; margin-top: 0.15rem; flex-shrink: 0; accent-color: var(--hx-gold, #e8c46c); }
.sb__judge.is-blocked[b-e8p7qhj4i7] { opacity: 0.55; cursor: not-allowed; }
.sb__judge-text[b-e8p7qhj4i7] { display: flex; flex-direction: column; gap: 0.1rem; min-width: 0; }
.sb__judge-name[b-e8p7qhj4i7] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; color: var(--hx-fg, #fff); overflow-wrap: anywhere; }
.sb__judge-handle[b-e8p7qhj4i7] { font-family: 'Space Mono', monospace; font-weight: 400; font-size: 0.78rem; color: var(--hx-gold, #e8c46c); }
.sb__judge-meta[b-e8p7qhj4i7] { font-family: 'Space Mono', monospace; font-size: 0.74rem; color: var(--hx-muted); overflow-wrap: anywhere; }
.sb__form-title:focus[b-e8p7qhj4i7] { outline: none; }

/* Quorum flag (doc 21 sec 3): a judged show below 3 rulings - the crowd decides it. */
.sb__mode--warn[b-e8p7qhj4i7] { color: var(--hx-gold, #e8c46c); border-color: var(--hx-border-gold-strong, rgba(232,196,108,.6)); }
/* /Components/Pages/Admin/SystemBlueprints.razor.rz.scp.css */
.sbp[b-9et1i9dj5m] { padding-block: 2.5rem 4rem; }

.sbp__head[b-9et1i9dj5m] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}
.sbp__eyebrow[b-9et1i9dj5m] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}
.sbp__title[b-9et1i9dj5m] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2.4rem;
    letter-spacing: 0.02em;
    color: var(--hx-fg, #fff);
    margin: 0.15rem 0 0;
}
.sbp__lede[b-9et1i9dj5m] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.92rem;
    line-height: 1.55;
    color: var(--hx-muted);
    max-width: 56rem;
    margin: 0 0 1.75rem;
}
.sbp__lede strong[b-9et1i9dj5m] { color: var(--hx-fg, #fff); }

.sbp__empty[b-9et1i9dj5m] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
    line-height: 1.55;
}
.sbp__error[b-9et1i9dj5m] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.88rem;
    color: #e08a86;
    border: 1px solid rgba(209, 84, 79, 0.4);
    border-radius: 8px;
    padding: 0.7rem 0.9rem;
    margin-bottom: 1.25rem;
}

.sbp__grid[b-9et1i9dj5m] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(19rem, 1fr));
    gap: 1rem;
}

.sbp__card[b-9et1i9dj5m] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    padding: 1.1rem 1.2rem 1rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
/* A pulled kit stays legible but recedes — it is still the operator's to repair and restore. */
.sbp__card.is-retired[b-9et1i9dj5m] { opacity: 0.62; }

.sbp__card-head[b-9et1i9dj5m] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.6rem;
}
.sbp__name[b-9et1i9dj5m] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.3rem;
    letter-spacing: 0.04em;
    color: var(--hx-fg, #fff);
    margin: 0;
}
.sbp__state[b-9et1i9dj5m] {
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    letter-spacing: 0.1em;
    white-space: nowrap;
    padding: 0.2rem 0.45rem;
    border: 1px solid var(--hx-border, #222);
    border-radius: 999px;
    color: var(--hx-muted);
}
.sbp__state.is-live[b-9et1i9dj5m] {
    color: var(--hx-gold, #e8c46c);
    border-color: rgba(232, 196, 108, 0.45);
}

.sbp__meta[b-9et1i9dj5m] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    letter-spacing: 0.04em;
    color: var(--hx-muted);
    margin: 0;
}
.sbp__desc[b-9et1i9dj5m] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    line-height: 1.45;
    color: var(--hx-muted);
    margin: 0;
}

.sbp__stats[b-9et1i9dj5m] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.45rem 1rem;
    margin-top: 0.15rem;
}
.sbp__stat[b-9et1i9dj5m] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-muted);
}
.sbp__stat strong[b-9et1i9dj5m] { color: var(--hx-fg, #fff); font-weight: 700; }
/* Red is the reserved consequential tint — a kit whose gear has rotted is exactly that: it is still
   being offered to beginners while no longer being buyable. */
.sbp__stat.is-rot[b-9et1i9dj5m],
.sbp__stat.is-rot strong[b-9et1i9dj5m] { color: #e08a86; }

.sbp__warn[b-9et1i9dj5m] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.8rem;
    line-height: 1.4;
    color: #e08a86;
    margin: 0;
}

.sbp__actions[b-9et1i9dj5m] {
    display: flex;
    gap: 0.5rem;
    margin-top: auto;
    padding-top: 0.65rem;
}
/* /Components/Pages/Blueprints/BlueprintBuilder.razor.rz.scp.css */
.bpb[b-3r8rsjw2ew] {
    max-width: 720px;
    margin: 0 auto;
    padding: var(--hx-space-6) var(--hx-space-4) var(--hx-space-9);
}

/* ── Header ────────────────────────────────────────────────────── */
.bpb__eyebrow[b-3r8rsjw2ew] {
    font-family: var(--hx-font-mono);
    font-size: 11px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--hx-gold);
    margin: 0 0 var(--hx-space-2);
}

.bpb__headline[b-3r8rsjw2ew] {
    font-family: var(--hx-font-display);
    font-size: clamp(2.6rem, 7vw, 4.2rem);
    line-height: 0.95;
    color: var(--hx-text-heading);
    margin: 0 0 var(--hx-space-4);
    letter-spacing: 0.01em;
}

.bpb__sub[b-3r8rsjw2ew] {
    font-size: 14px;
    color: var(--hx-text-muted);
    line-height: 1.55;
    margin: 0 0 var(--hx-space-7);
}

.bpb__loading[b-3r8rsjw2ew] { color: var(--hx-text-muted); padding: var(--hx-space-6) 0; }

/* ── Sections ──────────────────────────────────────────────────── */
.bpb__section[b-3r8rsjw2ew] {
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-radius-md);
    background: var(--hx-surface-1);
    padding: var(--hx-space-5);
    margin-bottom: var(--hx-space-5);
    display: flex;
    flex-direction: column;
    gap: var(--hx-space-5);
}

.bpb__section-head[b-3r8rsjw2ew] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
}

.bpb__section-title[b-3r8rsjw2ew] {
    font-family: var(--hx-font-display);
    font-size: 1.5rem;
    letter-spacing: 0.02em;
    /* Section titles gold, app-wide header treatment (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}

.bpb__count[b-3r8rsjw2ew] {
    font-family: var(--hx-font-mono);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-gold);
}

/* ── Fields ────────────────────────────────────────────────────── */
.bpb__field label[b-3r8rsjw2ew] {
    display: block;
    font-family: var(--hx-font-mono);
    font-size: 11px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-text-muted);
    margin-bottom: var(--hx-space-2);
}

.bpb__req[b-3r8rsjw2ew] { color: var(--hx-gold); }
.bpb__optional[b-3r8rsjw2ew] { color: var(--hx-text-muted); opacity: 0.6; font-size: 10px; }

.bpb__light-sun[b-3r8rsjw2ew] {
    font-size: 13px;
    color: var(--hx-text-2);
    margin: 0;
    line-height: 1.5;
}

.bpb__hint[b-3r8rsjw2ew] {
    font-size: 13px;
    color: var(--hx-text-muted);
    margin: 0;
    line-height: 1.55;
}

/* ── Chips ─────────────────────────────────────────────────────── */
.bpb__chips[b-3r8rsjw2ew] { display: flex; flex-wrap: wrap; gap: var(--hx-space-2); }

.bpb__chip[b-3r8rsjw2ew] {
    padding: 7px 18px;
    border: 1px solid var(--hx-border);
    border-radius: 999px;
    background: transparent;
    color: var(--hx-text-2);
    font-family: var(--hx-font-body);
    font-size: 13px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
    line-height: 1;
}

.bpb__chip:hover[b-3r8rsjw2ew] { border-color: rgba(212, 175, 55, 0.4); color: var(--hx-text-heading); }
.bpb__chip.is-active[b-3r8rsjw2ew] { border-color: var(--hx-gold); background: rgba(212, 175, 55, 0.1); color: var(--hx-gold); }

/* ── Pick controls (search + category) ─────────────────────────── */
.bpb__pick-controls[b-3r8rsjw2ew] { display: flex; gap: var(--hx-space-2); flex-wrap: wrap; }
.bpb__search[b-3r8rsjw2ew] { flex: 1 1 60%; min-width: 0; }
.bpb__cat[b-3r8rsjw2ew] { flex: 1 1 30%; color-scheme: dark; }

/* ── Pick list ─────────────────────────────────────────────────── */
.bpb__picklist[b-3r8rsjw2ew] {
    display: flex;
    flex-direction: column;
    gap: 6px;
    max-height: 340px;
    overflow-y: auto;
    padding-right: 2px;
}

.bpb__pick[b-3r8rsjw2ew] {
    display: flex;
    align-items: center;
    gap: var(--hx-space-3);
    width: 100%;
    text-align: left;
    padding: 9px 12px;
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-radius-md);
    background: var(--hx-surface-2);
    cursor: pointer;
    transition: border-color 0.12s, background 0.12s;
}

.bpb__pick:hover[b-3r8rsjw2ew] { border-color: rgba(212, 175, 55, 0.4); }
.bpb__pick.is-on[b-3r8rsjw2ew] { border-color: var(--hx-gold); background: rgba(212, 175, 55, 0.08); }

.bpb__pick-check[b-3r8rsjw2ew] {
    flex: 0 0 18px;
    width: 18px;
    height: 18px;
    border: 1px solid var(--hx-border);
    border-radius: 5px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    color: var(--hx-gold);
    line-height: 1;
}

.bpb__pick.is-on .bpb__pick-check[b-3r8rsjw2ew] { border-color: var(--hx-gold); background: rgba(212, 175, 55, 0.15); }

.bpb__pick-glyph[b-3r8rsjw2ew] { flex: 0 0 auto; font-size: 18px; line-height: 1; }

.bpb__pick-info[b-3r8rsjw2ew] { display: flex; flex-direction: column; gap: 1px; min-width: 0; }

.bpb__pick-name[b-3r8rsjw2ew] {
    color: var(--hx-text-heading);
    font-size: 14px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bpb__pick-sub[b-3r8rsjw2ew] {
    font-family: var(--hx-font-mono);
    font-size: 11px;
    color: var(--hx-text-muted);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.bpb__empty[b-3r8rsjw2ew] {
    font-size: 13px;
    color: var(--hx-text-muted);
    line-height: 1.5;
    margin: var(--hx-space-2) 0;
}

/* ── Search-to-add: pinned rows + result matches (operator, 2026-07-18) ── */
.bpb__chosen[b-3r8rsjw2ew] { display: flex; flex-direction: column; gap: 6px; margin-bottom: var(--hx-space-2); }
.bpb__chosen-row[b-3r8rsjw2ew] {
    display: flex; align-items: center; gap: var(--hx-space-3);
    padding: 8px 12px;
    border: 1px solid var(--hx-gold); border-radius: 8px;
    background: rgba(212, 175, 55, 0.08);
}
.bpb__chosen-name[b-3r8rsjw2ew] { flex: 1 1 auto; min-width: 0; color: var(--hx-text-heading); font-size: 14px;
    white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.bpb__chosen-sub[b-3r8rsjw2ew] { flex: 0 0 auto; font-family: var(--hx-font-mono); font-size: 11px; color: var(--hx-text-muted); }
.bpb__chosen-x[b-3r8rsjw2ew] {
    flex: 0 0 auto; background: none; border: 0; cursor: pointer;
    color: var(--hx-text-muted); font-size: 13px; line-height: 1; padding: 4px 6px;
}
.bpb__chosen-x:hover[b-3r8rsjw2ew] { color: #e0863c; }

.bpb__results[b-3r8rsjw2ew] {
    display: flex; flex-direction: column; gap: 6px;
    max-height: 300px; overflow-y: auto; padding-right: 2px; margin-top: 6px;
}
.bpb__result[b-3r8rsjw2ew] {
    display: flex; align-items: center; gap: var(--hx-space-3);
    width: 100%; text-align: left; padding: 9px 12px;
    border: 1px solid var(--hx-border); border-radius: 8px;
    background: var(--hx-surface-2, #14100b); color: inherit; cursor: pointer;
    transition: border-color 0.12s;
}
.bpb__result:hover[b-3r8rsjw2ew] { border-color: rgba(212, 175, 55, 0.4); }
.bpb__result-add[b-3r8rsjw2ew] { margin-left: auto; flex: 0 0 auto; font-family: var(--hx-font-mono); font-size: 11px; color: var(--hx-gold); }
.bpb__empty a[b-3r8rsjw2ew] { color: var(--hx-gold); }

/* Build (left) + Edit (right) share one row, opposite ends. */
.bpb__recipe-edit[b-3r8rsjw2ew] {
    font-family: var(--hx-font-body); font-size: 13px; color: var(--hx-gold); text-decoration: none;
}
.bpb__recipe-edit:hover[b-3r8rsjw2ew] { color: var(--hx-gold-hover); text-decoration: underline; }

/* ── "Your Super Soils" browser (recipe mode) ──────────────────── */
.bpb__soil-view[b-3r8rsjw2ew] {
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-radius-md);
    background: var(--hx-surface-2, #14100b);
    padding: var(--hx-space-4);
    display: flex;
    flex-direction: column;
    gap: var(--hx-space-3);
}
.bpb__soil-view-head[b-3r8rsjw2ew] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: var(--hx-space-3);
}
.bpb__soil-view-name[b-3r8rsjw2ew] {
    font-family: var(--hx-font-display);
    font-size: 1.25rem;
    letter-spacing: 0.02em;
    color: var(--hx-text-heading);
    margin: 0;
}
.bpb__soil-items[b-3r8rsjw2ew] { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 6px; }
.bpb__soil-items li[b-3r8rsjw2ew] { display: flex; align-items: center; gap: var(--hx-space-3); }

/* ── Actions ───────────────────────────────────────────────────── */
.bpb__error[b-3r8rsjw2ew] {
    color: #e5847b;
    font-size: 13px;
    margin: 0 0 var(--hx-space-3);
}

/* Why the save button is disabled — blue, because this is a nudge toward a better kit, not an error. */
.bpb__gate[b-3r8rsjw2ew] {
    color: #b8d4de;
    background: rgba(111, 168, 189, 0.06);
    border: 1px solid rgba(111, 168, 189, 0.4);
    border-radius: 4px;
    padding: 0.7rem 0.9rem;
    font-size: 13px;
    line-height: 1.55;
    margin: 0 0 var(--hx-space-3);
}
.bpb__gate-link[b-3r8rsjw2ew] { color: #6fa8bd; }

.bpb__actions[b-3r8rsjw2ew] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--hx-space-3);
    justify-content: flex-end;
    margin-top: var(--hx-space-4);
}

@media (max-width: 560px) {
    .bpb__actions[b-3r8rsjw2ew] { flex-direction: column-reverse; }
    .bpb__actions .hx-btn[b-3r8rsjw2ew] { width: 100%; }
}

/* Crew-only "Create as system blueprint" (doc 31 §System Blueprints return). Purple is the premium/
   backstage tint, not gold — gold is the grower's own primary action, and a crew action sitting beside
   it must not read as the one a grower is meant to press. */
.bpb__system-btn[b-3r8rsjw2ew] {
    border-color: rgba(146, 110, 196, 0.55);
    color: #b795e0;
}
.bpb__system-btn:hover:not(:disabled)[b-3r8rsjw2ew] {
    border-color: #926ec4;
    background: rgba(146, 110, 196, 0.1);
}
/* /Components/Pages/Blueprints/BlueprintView.razor.rz.scp.css */
/* Read-only Blueprint view (planning doc 31, Slice 3) — the deep-link target from a plant's
   "Blueprint: <name>" listing. Marquee headline + Space Mono labels, per the design system. */

.bpv[b-40lcmwbnj1] {
    max-width: var(--hx-max-focused);
    /* padding-block only — preserve .hx-container's padding-inline (the shorthand's `0` zeroed it). */
    padding-block: 2rem 4rem;
}

.bpv__back[b-40lcmwbnj1] {
    background: none;
    border: none;
    color: var(--hx-text-muted);
    font-family: var(--hx-font-mono);
    font-size: .8rem;
    letter-spacing: .04em;
    cursor: pointer;
    padding: 0;
    margin-bottom: var(--hx-space-6);
    transition: color var(--hx-t);
}
.bpv__back:hover[b-40lcmwbnj1] { color: var(--hx-gold); }

.bpv__eyebrow[b-40lcmwbnj1] {
    font-family: var(--hx-font-mono);
    font-size: .8rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--hx-gold);
    margin: 0 0 var(--hx-space-2);
}

.bpv__headline[b-40lcmwbnj1] {
    font-family: var(--hx-font-display);
    font-size: clamp(2.4rem, 6vw, 3.6rem);
    line-height: .95;
    letter-spacing: .01em;
    color: var(--hx-text-heading);
    margin: 0 0 var(--hx-space-3);
}

.bpv__desc[b-40lcmwbnj1] {
    font-size: 15px;
    color: var(--hx-text-muted);
    line-height: 1.55;
    margin: 0 0 var(--hx-space-6);
}

.bpv__section[b-40lcmwbnj1] {
    border-top: 1px solid var(--hx-border);
    padding-top: var(--hx-space-5);
    margin-top: var(--hx-space-6);
}

.bpv__section-title[b-40lcmwbnj1] {
    font-family: var(--hx-font-mono);
    font-size: .78rem;
    letter-spacing: .14em;
    text-transform: uppercase;
    color: var(--hx-text-caption);
    margin: 0 0 var(--hx-space-4);
}

.bpv__rows[b-40lcmwbnj1] {
    display: grid;
    grid-template-columns: minmax(0, 120px) 1fr;
    gap: var(--hx-space-3) var(--hx-space-5);
    margin: 0;
}
.bpv__rows dt[b-40lcmwbnj1] {
    font-family: var(--hx-font-mono);
    font-size: 12px;
    letter-spacing: .08em;
    text-transform: uppercase;
    color: var(--hx-text-muted);
}
.bpv__rows dd[b-40lcmwbnj1] {
    margin: 0;
    font-size: 15px;
    color: var(--hx-text-body);
}

.bpv__list[b-40lcmwbnj1] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--hx-space-2);
}
.bpv__list li[b-40lcmwbnj1] {
    font-size: 14px;
    color: var(--hx-text-body);
    line-height: 1.4;
}
.bpv__item-glyph[b-40lcmwbnj1] { margin-right: .4em; }
.bpv__item-name[b-40lcmwbnj1] { color: var(--hx-text-body); }
.bpv__item-sub[b-40lcmwbnj1]  { color: var(--hx-text-caption); margin-left: .35em; }
/* The stats register (Space Mono, muted) on its own line under the name — mirrors .inv__card-spec on the
   Gear page. Indented past the glyph so it hangs under the name, not the icon. */
.bpv__item-spec[b-40lcmwbnj1] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    line-height: 1.4;
    color: var(--hx-text-muted);
    margin-left: 1.6em;
}

.bpv__loading[b-40lcmwbnj1] { color: var(--hx-text-muted); }
/* /Components/Pages/Dashboard.razor.rz.scp.css */
/* ── Greeting ──────────────────────────────────────────── */
.db-greeting[b-upc4sir9e9] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px 18px;
    padding-top: clamp(28px, 4vw, 44px);
    padding-bottom: 0;
}

/* The headline gets its own row so a judge's banner can sit between it and the run line + buttons. */
.db-greeting__text[b-upc4sir9e9] {
    flex-basis: 100%;
}

.db-greeting__date[b-upc4sir9e9] {
    margin-bottom: 8px;
}

.db-greeting__headline[b-upc4sir9e9] {
    font-size: clamp(38px, 6vw, 58px);
    margin: 0;
}

.db-greeting__handle[b-upc4sir9e9] {
    color: var(--hx-gold);
}

.db-greeting__sub[b-upc4sir9e9] {
    font-size: 15px;
    color: var(--hx-text-caption);
    margin: 0;
}

.db-greeting__sub strong[b-upc4sir9e9] {
    color: var(--hx-gold);
    font-weight: 600;
}

.db-greeting__actions[b-upc4sir9e9] {
    display: flex;
    gap: 12px;
    flex-shrink: 0;
}

/* ── Stat strip ────────────────────────────────────────── */
.db-stats[b-upc4sir9e9] {
    display: grid;
    /* Four tiles: 2x2 on phones, one row from tablet up — never a 3+1 orphan. */
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 1px;
    background: rgba(255,255,255,.07);
    border: 1px solid var(--hx-border-mid);
    border-radius: var(--hx-r-sm);
    overflow: hidden;
    margin-top: clamp(24px, 3vw, 32px);
}

@media (min-width: 640px) {
    .db-stats[b-upc4sir9e9] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

.db-stat[b-upc4sir9e9] {
    background: #0d0e0f;
    padding: 20px 22px;
    text-align: center;
}

.db-stat__val[b-upc4sir9e9] {
    font-family: var(--hx-font-display);
    font-size: 34px;
    color: var(--hx-text-heading);
    line-height: .9;
}

.db-stat__val--gold[b-upc4sir9e9] {
    color: var(--hx-gold);
}

.db-stat__label[b-upc4sir9e9] {
    font-family: var(--hx-font-mono);
    font-size: 10px;
    color: var(--hx-text-caption-2);
    letter-spacing: .1em;
    margin-top: 6px;
}

/* ── Body layout ───────────────────────────────────────── */
.db-body[b-upc4sir9e9] {
    display: flex;
    gap: clamp(20px, 3vw, 32px);
    flex-wrap: wrap;
    align-items: flex-start;
    padding-top: clamp(28px, 4vw, 40px);
    padding-bottom: 80px;
}

.db-main[b-upc4sir9e9] {
    flex: 1;
    min-width: 300px;
}

.db-sidebar[b-upc4sir9e9] {
    width: 320px;
    flex: 1 1 280px;
    max-width: 360px;
    display: flex;
    flex-direction: column;
    gap: 16px;
}

/* Stacked under the main column (phones): the 360px desktop cap would leave the cards short of the edge. */
@media (max-width: 700px) {
    .db-sidebar[b-upc4sir9e9] { flex-basis: 100%; max-width: none; }
}

/* ── Section headers ───────────────────────────────────── */
.db-section-head[b-upc4sir9e9] {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 14px;
    margin-bottom: 18px;
}

.db-section-title[b-upc4sir9e9] {
    font-size: clamp(28px, 4vw, 38px);
    margin: 0;
    /* Section titles are gold, app-wide header treatment (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c);
}

/* ── Tab filter ────────────────────────────────────────── */
.db-tabs[b-upc4sir9e9] {
    display: flex;
    gap: 8px;
}

.db-tab[b-upc4sir9e9] {
    padding: 7px 16px;
    border-radius: var(--hx-r-pill);
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    border: none;
    background: rgba(255,255,255,.04);
    color: var(--hx-text-muted);
    font-family: var(--hx-font-body);
    transition: background var(--hx-t), color var(--hx-t);
    min-height: 36px;
}

/* Inverse of the filled-gold CTAs: the selected filter is a gold OUTLINE, so page controls read
   distinct from "main" actions (filled gold). Inset box-shadow avoids a layout shift vs the borderless off-state. */
.db-tab.is-active[b-upc4sir9e9] {
    background: transparent;
    color: var(--hx-gold);
    box-shadow: inset 0 0 0 1px rgba(232,196,108,.7);
}

.db-tab:not(.is-active):hover[b-upc4sir9e9] {
    background: rgba(255,255,255,.08);
    color: var(--hx-text-body);
}

/* ── Grows grid ────────────────────────────────────────── */
.db-grows-grid[b-upc4sir9e9] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));
    gap: 16px;
    margin-bottom: 44px;
}

/* ── Empty state ───────────────────────────────────────── */
.db-grows-empty[b-upc4sir9e9] {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 16px;
    padding: 56px 24px;
    background: rgba(255,255,255,.02);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r);
    text-align: center;
}

/* Filter yielded nothing (grows exist, none match the pill) — a compact single-line notice. */
.db-grows-empty--filter[b-upc4sir9e9] { padding: 32px 24px; }
.db-grows-empty--filter .db-grows-empty__sub[b-upc4sir9e9] { margin: 0; max-width: none; }

.db-grows-empty__art[b-upc4sir9e9] {
    width: 80px;
    height: 80px;
    border-radius: var(--hx-r-sm);
    opacity: .5;
}

.db-grows-empty__title[b-upc4sir9e9] {
    font-family: var(--hx-font-display);
    font-size: 28px;
    color: var(--hx-text-heading);
    letter-spacing: .03em;
}

.db-grows-empty__sub[b-upc4sir9e9] {
    font-size: 14px;
    color: var(--hx-text-caption);
    max-width: 340px;
    margin: 0 0 18px;
    line-height: 1.55;
}

.db-grows-empty__link[b-upc4sir9e9] {
    color: var(--hx-gold);
    text-decoration: none;
}
.db-grows-empty__link:hover[b-upc4sir9e9] { text-decoration: underline; }

.db-grows-empty__actions[b-upc4sir9e9] {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: center;
}

/* ── Grow card ─────────────────────────────────────────── */
.db-run-card[b-upc4sir9e9] {
    display: block;
    background: rgba(255,255,255,.02);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-sm);
    overflow: hidden;
    color: inherit;
    text-decoration: none;
    transition: border-color var(--hx-t);
}

.db-run-card:hover[b-upc4sir9e9] {
    border-color: rgba(232,196,108,.45);
}

.db-run-card__thumb[b-upc4sir9e9] {
    position: relative;
}

.db-run-card__photo[b-upc4sir9e9] {
    aspect-ratio: 3 / 2;
}

/* Cover image variant — the run's latest plant photo fills the thumb (doc 17). */
img.db-run-card__photo[b-upc4sir9e9] {
    width: 100%;
    object-fit: cover;
    display: block;
}

/* No real cover photo (missing or a demo placeholder) — center the plant glyph, never a broken image. */
.db-run-card__photo--glyph[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 3rem;
    opacity: 0.5;
}

/* Status bar — a full-width strip between the photo and the body (operator mock, 2026-09-20). Solid fills so
   the run's state reads from across the grid. Red stays the reserved "consequential" tint (Ended only). */
.db-run-card__status-bar[b-upc4sir9e9] {
    padding: 4px 12px;
    text-align: center;
    font-family: var(--hx-font-mono);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: #fff;
}

.db-run-card__status-bar.active[b-upc4sir9e9],
.db-run-card__status-bar.on-floor[b-upc4sir9e9] {
    background: var(--hx-gold);
    color: var(--hx-gold-on);
}

.db-run-card__status-bar.curing[b-upc4sir9e9] {
    background: #926ec4;   /* the cure accent — see docs: purple = premium/cure */
}

.db-run-card__status-bar.complete[b-upc4sir9e9] {
    background: #1f7a3a;
}

.db-run-card__status-bar.ended[b-upc4sir9e9] {
    background: #8f1414;
}

.db-run-card__status-bar.archived[b-upc4sir9e9] {
    background: rgba(255,255,255,.12);
    color: var(--hx-text-3);
}

/* The logging pill (active runs only) sits in the card body, pushed to the right edge, one row above the name. */
.db-run-card__tags[b-upc4sir9e9] {
    display: flex;
    justify-content: flex-end;
    margin-bottom: 10px;
}

.db-run-card__body[b-upc4sir9e9] {
    padding: 15px 16px 16px;
}

.db-run-card__name-row[b-upc4sir9e9] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}

.db-run-card__name[b-upc4sir9e9] {
    font-weight: 700;
    font-size: 17px;
    color: var(--hx-text-heading);
}

.db-run-card__submeta[b-upc4sir9e9] {
    font-size: 12px;
    color: var(--hx-text-caption);
    margin-top: 2px;
}

.db-run-card__score[b-upc4sir9e9] {
    text-align: right;
    flex-shrink: 0;
}

.db-run-card__score-val[b-upc4sir9e9] {
    font-family: var(--hx-font-display);
    font-size: 24px;
    color: var(--hx-gold);
    line-height: .9;
}

/* Logging tag sits beside the status badge in the body tags row; colour carries the state. */
.db-run-card__health-tag[b-upc4sir9e9] {
    padding: 4px 10px;
    border-radius: var(--hx-r-pill);
    background: rgba(8,7,5,.7);
    border: 1px solid transparent;
    font-family: var(--hx-font-mono);
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .06em;
}
/* Done = green (score/optimal register). */
.db-run-card__health-tag.is-logged[b-upc4sir9e9] { border-color: rgba(116,213,154,.55); color: #9fe3b6; }
/* To-do = blue "gentle nudge" register (an invitation, not a warning). */
.db-run-card__health-tag.is-todo[b-upc4sir9e9]   { border-color: rgba(74,158,255,.6);   color: #8fc2ff; }
/* No grows yet = a quiet fact, not a task: muted, no accent (operator, 2026-10-17). */
.db-run-card__health-tag.is-empty[b-upc4sir9e9]  { border-color: rgba(255,255,255,.14); color: var(--hx-text-caption, #9a927e); }

.db-run-card__harvest-row[b-upc4sir9e9] {
    display: flex;
    gap: 8px;
    margin-top: 14px;
}

.db-run-card__yield[b-upc4sir9e9] {
    padding: 6px 11px;
    background: var(--hx-fill-gold);
    color: var(--hx-gold-2);
    border-radius: 6px;
    font-family: var(--hx-font-mono);
    font-size: 11px;
}

.db-run-card__days[b-upc4sir9e9] {
    padding: 6px 11px;
    background: rgba(255,255,255,.04);
    color: var(--hx-text-caption);
    border-radius: 6px;
    font-family: var(--hx-font-mono);
    font-size: 11px;
}

.db-run-card__footer[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    justify-content: flex-end;
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid var(--hx-border);
}

/* Journal CTA = the filled-gold primary button (matches "+ Start new grow"), kept fully rounded (pill).
   Hovering anywhere on the card deepens it, since the whole tile is the link. */
.db-run-card__open[b-upc4sir9e9] {
    border-radius: var(--hx-r-pill);
    padding: .5em 1.2em;
    font-size: .75rem;
    min-height: 0;   /* release the 44px hx-btn tap-target floor so it can shrink on the card */
}
.db-run-card:hover .db-run-card__open.hx-btn-primary[b-upc4sir9e9] {
    background: var(--hx-gold-hover);
}

/* ── Activity feed ─────────────────────────────────────── */
.db-activity[b-upc4sir9e9] {
    background: rgba(255,255,255,.02);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-sm);
    overflow: hidden;
}

.db-activity__empty[b-upc4sir9e9] {
    padding: 28px 18px;
    font-size: 14px;
    color: var(--hx-text-faint);
    text-align: center;
}

.db-activity__row[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 15px 18px;
    border-bottom: 1px solid rgba(255,255,255,.05);
}

.db-activity__row:last-child[b-upc4sir9e9] {
    border-bottom: none;
}

.db-activity__dot[b-upc4sir9e9] {
    width: 8px;
    height: 8px;
    border-radius: 99px;
    flex-shrink: 0;
}

.db-activity__dot.gold[b-upc4sir9e9]  { background: var(--hx-gold); }
.db-activity__dot.green[b-upc4sir9e9] { background: var(--hx-green); }
.db-activity__dot.muted[b-upc4sir9e9] { background: var(--hx-text-faint); }

.db-activity__text[b-upc4sir9e9] {
    flex: 1;
    font-size: 14px;
    color: var(--hx-text-2);
}

.db-activity__time[b-upc4sir9e9] {
    font-family: var(--hx-font-mono);
    font-size: 11px;
    color: var(--hx-text-faint);
    flex-shrink: 0;
}

/* ── Sidebar shared card ───────────────────────────────── */
.db-side-card[b-upc4sir9e9] {
    background: rgba(255,255,255,.02);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-sm);
    padding: 20px;
}

.db-side-card__eyebrow[b-upc4sir9e9] {
    display: block;
    margin-bottom: 10px;
    /* Card eyebrow headers: gold + bold (the mono label is thin, so bold gives it presence). */
    color: var(--hx-gold, #e8c46c);
    font-weight: 700;
}

/* ── Grower's Pass (mini) ──────────────────────────────────
   A one-line signpost to /pass, where the full Free/Premier comparison lives. The whole card is the link. */
/* Purple tint — the app's premium/special signal (shared with Cure mode, #926ec4 / rgba(146,110,196,…)).
   Sets the Grower's Pass apart from the gold Belt card above it. */
.db-pass-mini[b-upc4sir9e9] {
    display: block;
    background: linear-gradient(135deg, rgba(146,110,196,.16), rgba(146,110,196,.03));
    border: 1px solid rgba(146,110,196,.4);
    border-radius: var(--hx-r-sm);
    padding: 14px 16px;
    text-decoration: none;
    color: inherit;
    transition: border-color .18s ease, background .18s ease;
}

.db-pass-mini:hover[b-upc4sir9e9] {
    border-color: #926ec4;
    background: linear-gradient(135deg, rgba(146,110,196,.24), rgba(146,110,196,.07));
}

.db-pass-mini__head[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 6px;
}

.db-pass-mini__eyebrow[b-upc4sir9e9] { color: #b79ae0; }

.db-pass-mini__body[b-upc4sir9e9] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 10px;
    flex-wrap: wrap;
}

.db-pass-mini__tier[b-upc4sir9e9] {
    font-size: 24px;
    line-height: 1;
}

/* Mirrors .db-belt-card__more — hx-label carries the mono/uppercase register for both minis. */
.db-pass-mini__cta[b-upc4sir9e9] { color: #b79ae0; white-space: nowrap; }

/* ── Showcase standing ─────────────────────────────────── */
.db-standing[b-upc4sir9e9] {
    display: flex;
    align-items: baseline;
    gap: 10px;
    margin-top: 4px;
}

.db-standing__rank[b-upc4sir9e9] {
    font-size: 54px;
    color: var(--hx-gold);
    line-height: .85;
}

.db-standing__plant[b-upc4sir9e9] {
    font-size: 13px;
    color: var(--hx-text-2);
    font-weight: 600;
}

.db-standing__count[b-upc4sir9e9] {
    font-size: 12px;
    color: var(--hx-text-caption-2);
    margin-top: 2px;
}

.db-standing__cta[b-upc4sir9e9] {
    display: block;
    width: 100%;
    text-align: center;
    margin-top: 16px;
}

.db-standing-empty[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    gap: 16px;
    padding: 6px 0;
}

.db-standing-empty__dash[b-upc4sir9e9] {
    font-size: 54px;
    color: var(--hx-text-divider);
    line-height: .85;
}

.db-standing-empty__text[b-upc4sir9e9] {
    font-size: 13px;
    color: var(--hx-text-faint);
    margin: 0;
}

/* ── To Do Today ───────────────────────────────────────── */
.db-todo-head[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
}

.db-todo-empty[b-upc4sir9e9] {
    font-size: 13px;
    color: var(--hx-text-faint);
    margin: 0;
}

.db-todo-list[b-upc4sir9e9] {
    display: flex;
    flex-direction: column;
    gap: 4px;
}

.db-todo-item[b-upc4sir9e9] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 9px 0;
    font-family: var(--hx-font-body);
    min-height: 44px;
}

/* The checkbox toggles "done" (not navigation) — a bare button. */
.db-todo-item__check[b-upc4sir9e9] {
    flex-shrink: 0;
    display: flex;
    padding: 0;
    background: none;
    border: none;
    cursor: pointer;
}

/* The label + meta + ⚡ are one deep-link to the grow — the whole row is clickable. */
.db-todo-item__body[b-upc4sir9e9] {
    flex: 1;
    min-width: 0;
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    color: inherit;
    cursor: pointer;
}
.db-todo-item__body:hover .db-todo-item__label[b-upc4sir9e9] { color: var(--hx-gold); }
.db-todo-item__body:hover .db-todo-item__go[b-upc4sir9e9] { transform: scale(1.15); }

.db-todo-item__go[b-upc4sir9e9] {
    flex-shrink: 0;
    color: var(--hx-gold);
    transition: transform var(--hx-t);
}

.db-todo-item__box[b-upc4sir9e9] {
    width: 20px;
    height: 20px;
    flex-shrink: 0;
    border-radius: 5px;
    border: 1.5px solid rgba(232,196,108,.4);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 700;
    color: var(--hx-gold-on);
    transition: background var(--hx-t), border-color var(--hx-t);
}

.db-todo-item__box.is-done[b-upc4sir9e9] {
    background: var(--hx-gold);
    border-color: var(--hx-gold);
}

.db-todo-item__label[b-upc4sir9e9] {
    font-size: 14px;
    color: var(--hx-text-body);
    transition: color var(--hx-t);
}

.db-todo-item__label.is-done[b-upc4sir9e9] {
    color: var(--hx-text-faint);
    text-decoration: line-through;
}

.db-todo-item__meta[b-upc4sir9e9] {
    margin-top: 2px;
    color: var(--hx-text-faint);
}

/* ── Your Belt (HaxPoints · earned) — doc 25 ───────────────── */
.db-belt-card[b-upc4sir9e9] {
    display: block;
    text-decoration: none;
    color: inherit;
    background: linear-gradient(135deg, rgba(232,196,108,.16), rgba(232,196,108,.03));
    border: 1px solid rgba(232,196,108,.35);
    border-radius: var(--hx-r-sm);
    padding: 20px;
    transition: border-color var(--hx-t-slow), transform var(--hx-t-slow);
}
.db-belt-card:hover[b-upc4sir9e9] {
    border-color: var(--hx-gold);
    transform: translateY(-1px);
}
.db-belt-card__head[b-upc4sir9e9] { margin-bottom: 12px; }
.db-belt-card__belt[b-upc4sir9e9] { display: flex; align-items: center; gap: 10px; }
.db-belt-card__chip[b-upc4sir9e9] { width: 34px; height: 10px; border-radius: 3px; border: 1px solid rgba(255,255,255,.25); flex-shrink: 0; }
.db-belt-card__name[b-upc4sir9e9] { font-size: 30px; line-height: 1; }
.db-belt-card__pts[b-upc4sir9e9] { display: flex; align-items: baseline; gap: 8px; margin-top: 12px; }
.db-belt-card__pts-val[b-upc4sir9e9] { font-family: var(--hx-font-display); font-size: 30px; color: var(--hx-gold); line-height: 1; }
.db-belt-card__pts-unit[b-upc4sir9e9] { font-size: 12px; color: var(--hx-text-caption-2); }
.db-belt-card__bar-track[b-upc4sir9e9] { height: 8px; border-radius: 99px; background: rgba(0,0,0,.3); overflow: hidden; margin: 12px 0 8px; }
.db-belt-card__bar-fill[b-upc4sir9e9] { height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--hx-gold-3, #b8912f), var(--hx-gold)); transition: width var(--hx-t-slow); }
/* The progress line carries the deep-link CTA on its right (the ladder + "earned only" foot are gone). */
.db-belt-card__next[b-upc4sir9e9] {
    color: var(--hx-text-caption-2);
    display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
}
.db-belt-card__next strong[b-upc4sir9e9] { color: var(--hx-gold); }
.db-belt-card__next--black[b-upc4sir9e9] { color: var(--hx-gold); }
.db-belt-card__more[b-upc4sir9e9] { color: var(--hx-gold); white-space: nowrap; }
.db-belt-card__chip--white[b-upc4sir9e9]  { background: #f2ecda; }
.db-belt-card__chip--yellow[b-upc4sir9e9] { background: #e8c46c; }
.db-belt-card__chip--orange[b-upc4sir9e9] { background: #e0863c; }
.db-belt-card__chip--green[b-upc4sir9e9]  { background: #6cbf7a; }
.db-belt-card__chip--blue[b-upc4sir9e9]   { background: #6ba8d8; }
.db-belt-card__chip--brown[b-upc4sir9e9]  { background: #9c6b3f; }
.db-belt-card__chip--black[b-upc4sir9e9]  { background: #2b2b2b; }
/* /Components/Pages/GrowBelt/GrowBelt.razor.rz.scp.css */
/* Grow Belt — the HaxPoints ledger surface (planning doc 25 §6b). */

.gb[b-5f861ykgil] { padding-block: 24px 64px; max-width: 860px; }

.gb__back[b-5f861ykgil] {
    display: inline-block;
    color: var(--hx-text-caption-2);
    text-decoration: none;
    margin-bottom: 20px;
    transition: color var(--hx-t-slow);
}
.gb__back:hover[b-5f861ykgil] { color: var(--hx-gold); }

.gb__loading[b-5f861ykgil] { color: var(--hx-text-caption-2); }

/* ── HERO ─────────────────────────────────────────────────── */
.gb-hero[b-5f861ykgil] {
    background: linear-gradient(135deg, rgba(232,196,108,.16), rgba(232,196,108,.03));
    border: 1px solid rgba(232,196,108,.35);
    border-radius: var(--hx-r-md, 14px);
    padding: 28px;
    margin-bottom: 28px;
}
.gb-hero__id[b-5f861ykgil] { display: flex; align-items: center; gap: 16px; }
.gb-hero__chip[b-5f861ykgil] {
    width: 56px; height: 16px; border-radius: 4px;
    border: 1px solid rgba(255,255,255,.25); flex-shrink: 0;
}

/* ── Belt colors — the hero chip and the ladder dot share one palette ── */
.gb-hero__chip--white[b-5f861ykgil],  .gb-climb__dot--white[b-5f861ykgil]  { background: #ece7d6; }
.gb-hero__chip--yellow[b-5f861ykgil], .gb-climb__dot--yellow[b-5f861ykgil] { background: #e9cf4e; }
.gb-hero__chip--orange[b-5f861ykgil], .gb-climb__dot--orange[b-5f861ykgil] { background: #e08a3c; }
.gb-hero__chip--green[b-5f861ykgil],  .gb-climb__dot--green[b-5f861ykgil]  { background: #52a95f; }
.gb-hero__chip--blue[b-5f861ykgil],   .gb-climb__dot--blue[b-5f861ykgil]   { background: #4f83d1; }
.gb-hero__chip--brown[b-5f861ykgil],  .gb-climb__dot--brown[b-5f861ykgil]  { background: #7d5432; }
/* Black needs a lighter border to read on the dark surface. */
.gb-hero__chip--black[b-5f861ykgil],  .gb-climb__dot--black[b-5f861ykgil]  { background: #15130f; border-color: rgba(255,255,255,.4); }
.gb-hero__eyebrow[b-5f861ykgil] { color: var(--hx-gold); display: block; }
.gb-hero__name[b-5f861ykgil] { font-size: 44px; line-height: 1; margin-top: 4px; }

.gb-hero__pts[b-5f861ykgil] { display: flex; align-items: baseline; gap: 10px; margin-top: 22px; }
.gb-hero__pts-val[b-5f861ykgil] {
    font-family: var(--hx-font-display);
    font-size: 52px; line-height: 1; color: var(--hx-gold);
}
.gb-hero__pts-unit[b-5f861ykgil] { color: var(--hx-text-caption-2); }

.gb-hero__bar-track[b-5f861ykgil] {
    height: 10px; border-radius: 99px;
    background: rgba(0,0,0,.3); overflow: hidden; margin: 18px 0 10px;
}
.gb-hero__bar-fill[b-5f861ykgil] {
    height: 100%; border-radius: 99px;
    background: linear-gradient(90deg, var(--hx-gold-3, #b8912f), var(--hx-gold));
    transition: width var(--hx-t-slow);
}
/* Small inline swatch beside the "…to <Next> Belt" label — colour comes from the shared
   gb-hero__chip--<belt> rules; this just sizes it for inline use. */
.gb-hero__next-chip[b-5f861ykgil] {
    display: inline-block; width: 16px; height: 10px; border-radius: 3px;
    border: 1px solid rgba(255,255,255,.25); vertical-align: middle; margin: 0 5px 2px;
}
.gb-hero__next[b-5f861ykgil] { color: var(--hx-text-caption-2); }
.gb-hero__next strong[b-5f861ykgil] { color: var(--hx-gold); }
.gb-hero__next--black[b-5f861ykgil] { color: var(--hx-gold); }

/* ── BLOCKS ───────────────────────────────────────────────── */
.gb-block[b-5f861ykgil] { margin-bottom: 32px; }
.gb-block__title[b-5f861ykgil] {
    color: var(--hx-gold);
    font-size: 13px; letter-spacing: .12em;
    padding-bottom: 10px; margin-bottom: 16px;
    border-bottom: 1px solid var(--hx-border);
}

/* ── THE CLIMB (ladder) ───────────────────────────────────── */
.gb-climb[b-5f861ykgil] { list-style: none; margin: 0; padding: 0; }
.gb-climb__rung[b-5f861ykgil] {
    display: flex; align-items: center; gap: 12px;
    padding: 9px 0; border-bottom: 1px solid rgba(255,255,255,.04);
}
.gb-climb__rung:last-child[b-5f861ykgil] { border-bottom: none; }
.gb-climb__dot[b-5f861ykgil] {
    width: 22px; height: 8px; border-radius: 3px;
    border: 1px solid rgba(255,255,255,.25); flex-shrink: 0;
}
.gb-climb__name[b-5f861ykgil] {
    font-family: var(--hx-font-mono);
    text-transform: uppercase; font-size: 12px; letter-spacing: .06em;
    color: var(--hx-text-faint);
}
.gb-climb__floor[b-5f861ykgil] { margin-left: auto; color: var(--hx-text-faint); }
.gb-climb__here[b-5f861ykgil] {
    color: var(--hx-gold); margin-left: 12px;
    background: rgba(232,196,108,.12);
    border: 1px solid var(--hx-gold);
    border-radius: 99px; padding: 2px 8px;
}
.gb-climb__rung.is-done .gb-climb__name[b-5f861ykgil] { color: var(--hx-text-caption); }
.gb-climb__rung.is-done .gb-climb__dot[b-5f861ykgil] { opacity: .75; }
.gb-climb__rung.is-current .gb-climb__name[b-5f861ykgil] { color: var(--hx-text-heading); font-weight: 700; }
.gb-climb__rung.is-locked[b-5f861ykgil] { opacity: .5; }
.gb-climb__note[b-5f861ykgil] {
    margin-top: 14px; color: var(--hx-text-caption-2);
    line-height: 1.5; text-transform: none; letter-spacing: 0;
}

/* ── PILLARS ──────────────────────────────────────────────── */
.gb-pillars[b-5f861ykgil] {
    display: grid; gap: 12px;
    grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
}
.gb-pillar[b-5f861ykgil] {
    background: var(--hx-surface-2);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-sm, 10px);
    padding: 14px;
}
.gb-pillar.is-empty[b-5f861ykgil] { opacity: .55; }
.gb-pillar__head[b-5f861ykgil] {
    display: flex; align-items: baseline; justify-content: space-between; gap: 8px;
}
.gb-pillar__name[b-5f861ykgil] {
    font-family: var(--hx-font-mono); font-size: 11px;
    text-transform: uppercase; letter-spacing: .05em; color: var(--hx-text-caption);
}
.gb-pillar__pts[b-5f861ykgil] {
    font-family: var(--hx-font-display); font-size: 22px;
    color: var(--hx-text-heading); line-height: 1;
}
.gb-pillar__bar-track[b-5f861ykgil] {
    height: 5px; border-radius: 99px; background: rgba(0,0,0,.3);
    overflow: hidden; margin: 10px 0 8px;
}
.gb-pillar__bar-fill[b-5f861ykgil] { height: 100%; border-radius: 99px; background: var(--pillar-color, var(--hx-gold)); }
.gb-pillar__count[b-5f861ykgil] { color: var(--hx-text-faint); }

/* Pillar accent colors — foliage/earth/stage palette (reference-svg-palette). */
.gb-pillar--milestones[b-5f861ykgil]  { --pillar-color: #e8c46c; }
.gb-pillar--growing[b-5f861ykgil]     { --pillar-color: #6cbf7a; }
.gb-pillar--showcase[b-5f861ykgil]    { --pillar-color: #d87a9c; }
.gb-pillar--community[b-5f861ykgil]   { --pillar-color: #6ba8d8; }
.gb-pillar--consistency[b-5f861ykgil] { --pillar-color: #c98a4b; }

/* ── THE RECORD (ledger) ──────────────────────────────────── */
.gb-empty[b-5f861ykgil] {
    background: var(--hx-surface-2);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-sm, 10px);
    padding: 28px; text-align: center;
}
.gb-empty__lead[b-5f861ykgil] { color: var(--hx-text-heading); font-size: 17px; margin-bottom: 6px; }
.gb-empty__sub[b-5f861ykgil] { color: var(--hx-text-caption-2); }

.gb-day[b-5f861ykgil] { margin-bottom: 20px; }
.gb-day__date[b-5f861ykgil] {
    color: var(--hx-text-faint); margin-bottom: 8px;
}
.gb-day__list[b-5f861ykgil] { list-style: none; margin: 0; padding: 0; }

.gb-entry[b-5f861ykgil] {
    display: flex; align-items: center; gap: 14px;
    padding: 12px 14px;
    background: var(--hx-surface-2);
    border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-sm, 10px);
    margin-bottom: 8px;
}
.gb-entry__glyph[b-5f861ykgil] {
    width: 10px; height: 10px; border-radius: 99px; flex-shrink: 0;
    background: var(--pillar-color, var(--hx-gold));
    box-shadow: 0 0 0 4px color-mix(in srgb, var(--pillar-color, var(--hx-gold)) 18%, transparent);
}
.gb-entry__glyph--milestones[b-5f861ykgil]  { --pillar-color: #e8c46c; }
.gb-entry__glyph--growing[b-5f861ykgil]     { --pillar-color: #6cbf7a; }
.gb-entry__glyph--showcase[b-5f861ykgil]    { --pillar-color: #d87a9c; }
.gb-entry__glyph--community[b-5f861ykgil]   { --pillar-color: #6ba8d8; }
.gb-entry__glyph--consistency[b-5f861ykgil] { --pillar-color: #c98a4b; }

.gb-entry__body[b-5f861ykgil] { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.gb-entry__label[b-5f861ykgil] { color: var(--hx-text-heading); font-weight: 600; }
.gb-entry__blurb[b-5f861ykgil] { color: var(--hx-text-caption-2); font-size: 13px; }
.gb-entry__pts[b-5f861ykgil] {
    margin-left: auto; flex-shrink: 0;
    font-family: var(--hx-font-display); font-size: 22px;
    color: var(--hx-gold); line-height: 1;
}

@media (max-width: 560px) {
    .gb-hero[b-5f861ykgil] { padding: 20px; }
    .gb-hero__name[b-5f861ykgil] { font-size: 34px; }
    .gb-hero__pts-val[b-5f861ykgil] { font-size: 42px; }
    .gb-entry__blurb[b-5f861ykgil] { display: none; }
}
/* /Components/Pages/HarvestCure/CureMonth.razor.rz.scp.css */
/* The cure Month view (planning doc 40). PURPLE = cure time; the muted tint = on the shelf; red = used. */

.cm[b-te44nbzplq] { padding-block: 24px 64px; }
.cm__loading[b-te44nbzplq], .cm__empty[b-te44nbzplq] { color: var(--hx-text-caption-2); }
.cm__back[b-te44nbzplq] {
    display: inline-block; color: var(--hx-text-caption-2);
    text-decoration: none; margin-bottom: 20px; transition: color var(--hx-t-slow);
}
.cm__back:hover[b-te44nbzplq] { color: var(--hx-gold); }

/* ── Header + pager ── */
.cm__head[b-te44nbzplq] { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; margin-bottom: 22px; }
.cm__eyebrow[b-te44nbzplq] { color: var(--hx-gold); display: block; }
.cm__title[b-te44nbzplq] { font-size: 56px; line-height: 1; margin-top: 4px; }
.cm__pager[b-te44nbzplq] { display: flex; align-items: center; gap: 10px; }
.cm__pager-label[b-te44nbzplq] { color: var(--hx-text-caption); }
.cm__pager-btn[b-te44nbzplq] {
    width: 40px; height: 40px; display: inline-flex; align-items: center; justify-content: center;
    border: 1px solid var(--hx-border); border-radius: 8px; background: var(--hx-surface-1);
    color: var(--hx-text-heading); text-decoration: none; font-size: 20px;
}
.cm__pager-btn:hover[b-te44nbzplq] { border-color: var(--hx-gold); }
.cm__pager-btn.is-disabled[b-te44nbzplq] { opacity: .35; pointer-events: none; }

/* ── Stat strip ── */
.cm__stats[b-te44nbzplq] {
    display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));
    background: var(--hx-surface-1); border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-md, 14px); margin-bottom: 22px;
}
.cm__stat[b-te44nbzplq] { padding: 18px 12px; text-align: center; }
.cm__stat + .cm__stat[b-te44nbzplq] { border-left: 1px solid var(--hx-border); }
.cm__stat-val[b-te44nbzplq] { display: block; font-family: var(--hx-font-display); font-size: 32px; line-height: 1; color: var(--hx-text-heading); }
.cm__stat-label[b-te44nbzplq] { display: block; margin-top: 6px; color: var(--hx-text-faint); }

/* ── Four week columns (stacked on a phone, W1 first) ── */
.cm__weeks[b-te44nbzplq] { display: grid; gap: 16px; grid-template-columns: minmax(0, 1fr); }
@media (min-width: 900px) { .cm__weeks[b-te44nbzplq] { grid-template-columns: repeat(4, minmax(0, 1fr)); } }

.cm__week[b-te44nbzplq] {
    background: var(--hx-surface-1); border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-md, 14px); padding: 14px; min-height: 120px;
}
.cm__week.is-future[b-te44nbzplq] { background: none; border-style: dashed; opacity: .5; }
.cm__week.is-highlighted[b-te44nbzplq] { border-color: var(--hx-gold); box-shadow: 0 0 0 1px var(--hx-gold); }
.cm__week-title[b-te44nbzplq] { font-family: var(--hx-font-display); font-size: 20px; letter-spacing: .02em; color: #b48ee0; margin: 0; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.cm__week.is-shelf .cm__week-title[b-te44nbzplq] { color: #a89fb6; }
/* The current week: its title takes the gold of its ring, so it reads at a glance. */
.cm__week.is-highlighted .cm__week-title[b-te44nbzplq],
.cm__week.is-highlighted .cm__week-dates[b-te44nbzplq] { color: var(--hx-gold); }
.cm__week-tag[b-te44nbzplq] { font-size: 10px; color: var(--hx-text-faint); border: 1px solid var(--hx-border); border-radius: 99px; padding: 1px 7px; }
.cm__week-dates[b-te44nbzplq] { color: var(--hx-text-faint); margin: 2px 0 12px; }

/* Jar tiles — the shelf's jar glyph, coloured by what happened to the jar that week. */
.cm__jars[b-te44nbzplq] { display: grid; grid-template-columns: repeat(auto-fill, minmax(64px, 1fr)); gap: 10px; margin-bottom: 12px; }
.cm__jar[b-te44nbzplq] { display: flex; flex-direction: column; align-items: center; gap: 3px; --jar-color: #6e6858; }
.cm__jar--burped[b-te44nbzplq] { --jar-color: #926ec4; }
.cm__jar--used[b-te44nbzplq]   { --jar-color: var(--hx-red, #e05555); }
.cm__jar-glyph[b-te44nbzplq] {
    width: 34px; height: 42px; border-radius: 7px 7px 8px 8px; margin-top: 6px;
    border: 2px solid var(--jar-color);
    background: color-mix(in srgb, var(--jar-color) 18%, transparent);
    position: relative;
}
.cm__jar-glyph[b-te44nbzplq]::before { /* lid */
    content: ""; position: absolute; top: -6px; left: 50%; transform: translateX(-50%);
    width: 26px; height: 6px; border-radius: 2px; background: var(--jar-color);
}
.cm__jar-name[b-te44nbzplq] { font-family: var(--hx-font-mono); font-size: 11px; color: var(--hx-text-caption); text-align: center; }
.cm__jar-rh[b-te44nbzplq] { font-family: var(--hx-font-display); font-size: 16px; color: var(--hx-text-heading); line-height: 1; }
.cm__jar--used .cm__jar-rh[b-te44nbzplq] { color: var(--hx-red, #e05555); }
.cm__jar-temp[b-te44nbzplq] { font-family: var(--hx-font-mono); font-size: 11px; color: var(--hx-text-caption-2); min-height: 1em; }

/* That week's burps. */
.cm__log[b-te44nbzplq] { border-top: 1px solid var(--hx-border); padding-top: 10px; }
.cm__log-empty[b-te44nbzplq] { color: var(--hx-text-caption-2); margin: 0; font-size: 14px; }
.cm__log-list[b-te44nbzplq] { list-style: none; margin: 0; padding: 0; }
.cm__log-list li[b-te44nbzplq] {
    display: flex; justify-content: space-between; gap: 10px; padding: 5px 0;
    border-bottom: 1px solid rgba(255,255,255,.04); font-size: 13px; color: var(--hx-text-caption);
}
.cm__log-list li:last-child[b-te44nbzplq] { border-bottom: none; }
.cm__log-reading[b-te44nbzplq] { font-family: var(--hx-font-mono); font-size: 12px; color: var(--hx-text-heading); white-space: nowrap; }

@media (max-width: 560px) {
    .cm__title[b-te44nbzplq] { font-size: 40px; }
    .cm__stat-val[b-te44nbzplq] { font-size: 24px; }
}
/* /Components/Pages/HarvestCure/HarvestCure.razor.rz.scp.css */
/* Harvest & Cure (planning doc 26). Gold = grow time; PURPLE = cure time (the mode signal). */

.hc[b-gq09s43h86] { padding-block: 24px 64px; max-width: 900px; }
.hc__loading[b-gq09s43h86] { color: var(--hx-text-caption-2); }
.hc__back[b-gq09s43h86] {
    display: inline-block; color: var(--hx-text-caption-2);
    text-decoration: none; margin-bottom: 20px; transition: color var(--hx-t-slow);
}
.hc__back:hover[b-gq09s43h86] { color: var(--hx-gold); }

.hc__notyet[b-gq09s43h86] { text-align: center; padding: 40px 0; }
.hc__notyet p[b-gq09s43h86] { color: var(--hx-text-caption-2); margin: 12px 0 20px; }

/* ── Header ── */
.hc__head[b-gq09s43h86] { margin-bottom: 16px; }
.hc__eyebrow[b-gq09s43h86] { color: var(--hx-gold); display: block; }
.hc__title[b-gq09s43h86] { font-size: 40px; line-height: 1; margin-top: 4px; }
.hc__plant-eyebrow[b-gq09s43h86] { display: flex; align-items: center; gap: 7px; margin-top: 8px; color: var(--hx-text-caption); font-family: var(--hx-font-mono); font-size: 12px; }
.hc__plant-dot[b-gq09s43h86] { width: 8px; height: 8px; border-radius: 99px; background: #6cbf7a; }

/* ── Blocks ── */
.hc__block[b-gq09s43h86] { margin-bottom: 30px; }
.hc__block-title[b-gq09s43h86] { color: var(--hx-gold); font-size: 13px; letter-spacing: .12em; }

/* ── Cure progress ── */
.hc__cure-head[b-gq09s43h86] { display: flex; justify-content: space-between; align-items: baseline; gap: 10px; margin-bottom: 10px; }
.hc__cure-day[b-gq09s43h86] { color: var(--hx-text-caption-2); }
.hc__cure-track[b-gq09s43h86] { height: 10px; border-radius: 99px; background: rgba(0,0,0,.3); overflow: hidden; }
.hc__cure-fill[b-gq09s43h86] { height: 100%; border-radius: 99px; background: linear-gradient(90deg, #6a4b96, #b48ee0); transition: width var(--hx-t-slow); }
.hc__cure-note[b-gq09s43h86] { color: var(--hx-text-caption-2); font-size: 13px; margin-top: 10px; }

/* ── The Curing Shelf ── */
.hc__shelf-head[b-gq09s43h86], .hc__cure-head[b-gq09s43h86] { display: flex; justify-content: space-between; align-items: center; }
.hc__block-title[b-gq09s43h86] { padding-bottom: 10px; border-bottom: 1px solid var(--hx-border); display: block; margin-bottom: 16px; flex: 1; }
.hc__shelf-head .hc__block-title[b-gq09s43h86], .hc__cure-head .hc__block-title[b-gq09s43h86] { margin-bottom: 0; padding-bottom: 0; border-bottom: none; }
.hc__shelf-head[b-gq09s43h86] { margin-bottom: 16px; border-bottom: 1px solid var(--hx-border); padding-bottom: 10px; }

.hc__addjar[b-gq09s43h86] { background: none; border: 1px solid var(--hx-gold); color: var(--hx-gold); border-radius: 99px; padding: 5px 12px; font-family: var(--hx-font-mono); font-size: 11px; cursor: pointer; }
.hc__addjar:hover[b-gq09s43h86] { background: rgba(232,196,108,.12); }
.hc__addjar-row[b-gq09s43h86] { display: flex; gap: 8px; margin-bottom: 14px; flex-wrap: wrap; }
.hc__shelf-empty[b-gq09s43h86] { color: var(--hx-text-caption-2); }
.hc__shelf-ref[b-gq09s43h86] { color: var(--hx-text-faint); margin: -6px 0 14px; }

.hc__shelf[b-gq09s43h86] { position: relative; padding: 10px 0 0; }
.hc__shelf-jars[b-gq09s43h86] { display: flex; flex-wrap: wrap; gap: 22px; padding: 0 8px 16px; }
.hc__shelf-board[b-gq09s43h86] { height: 10px; border-radius: 3px; background: linear-gradient(180deg, #6b4a2e, #4a3220); box-shadow: 0 6px 14px rgba(0,0,0,.35); }

.hc__jar[b-gq09s43h86] {
    display: flex; flex-direction: column; align-items: center; gap: 6px;
    background: none; border: none; cursor: pointer; padding: 4px; width: 89px;
}
.hc__jar-glyph[b-gq09s43h86] {
    width: 53px; height: 67px; border-radius: 10px 10px 12px 12px;
    border: 2px solid var(--jar-color, #8a836f);
    background: linear-gradient(180deg, color-mix(in srgb, var(--jar-color, #8a836f) 22%, transparent), color-mix(in srgb, var(--jar-color, #8a836f) 8%, transparent));
    position: relative; transition: transform var(--hx-t-slow), box-shadow var(--hx-t-slow);
}
.hc__jar-glyph[b-gq09s43h86]::before { /* lid */
    content: ""; position: absolute; top: -7px; left: 50%; transform: translateX(-50%);
    width: 41px; height: 8px; border-radius: 3px; background: var(--jar-color, #8a836f);
}
.hc__jar:hover .hc__jar-glyph[b-gq09s43h86] { transform: translateY(-3px); box-shadow: 0 6px 16px color-mix(in srgb, var(--jar-color, #8a836f) 30%, transparent); }
.hc__jar.is-selected .hc__jar-glyph[b-gq09s43h86] { box-shadow: 0 0 0 3px color-mix(in srgb, var(--jar-color, #8a836f) 45%, transparent); }
.hc__jar-name[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 12px; color: var(--hx-text-caption); text-align: center; line-height: 1.2; }
.hc__jar-rh[b-gq09s43h86] { font-family: var(--hx-font-display); font-size: 18px; color: var(--jar-color, var(--hx-text-heading)); }
.hc__jar-temp[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 12px; color: var(--hx-text-caption-2); }

.is-perfect[b-gq09s43h86] { --jar-color: #74d59a; }
.is-moist[b-gq09s43h86]   { --jar-color: #e8c46c; }
.is-dry[b-gq09s43h86]     { --jar-color: #b0a890; }
.is-unknown[b-gq09s43h86] { --jar-color: #8a836f; }
/* Used (doc 40) — consumed but still on the record. The reserved red: a final, consequential state. */
.is-used[b-gq09s43h86]    { --jar-color: var(--hx-red, #e05555); }

/* The jar you're working on goes gold — overrides its RH / used colour while it's selected. */
.hc__jar.is-selected[b-gq09s43h86] { --jar-color: var(--hx-gold); }
.hc__jar.is-selected .hc__jar-name[b-gq09s43h86] { color: var(--hx-gold); }

.hc__jaruse[b-gq09s43h86] { margin-top: 18px; padding-top: 14px; border-top: 1px solid var(--hx-border); }
.hc__jaruse-title[b-gq09s43h86] { margin: 0 0 10px; }
.hc__usejar[b-gq09s43h86] {
    background: rgba(224, 85, 85, 0.12); color: var(--hx-red, #e05555);
    border: 1px solid rgba(224, 85, 85, 0.6); border-radius: 0.5rem;
    padding: 0.4rem 0.85rem; font-size: 0.85rem; cursor: pointer;
}
.hc__usejar:hover[b-gq09s43h86] { background: rgba(224, 85, 85, 0.24); }

/* ── Jar detail ── */
.hc__jardetail[b-gq09s43h86] { margin-top: 16px; padding: 16px; background: var(--hx-surface-2); border: 1px solid var(--hx-border); border-radius: var(--hx-r-sm, 10px); }
.hc__jardetail-head[b-gq09s43h86] { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
.hc__jardetail-name[b-gq09s43h86] { font-family: var(--hx-font-display); font-size: 20px; color: var(--hx-text-heading); }
.hc__jardetail-meta[b-gq09s43h86] { color: var(--hx-text-caption-2); }
.hc__jardetail-close[b-gq09s43h86] { margin-left: auto; background: none; border: none; color: var(--hx-text-faint); cursor: pointer; font-size: 15px; }

/* Cure Zone — two axes (RH + temp), each: ideal band · min–max swing · current marker */
.hc__zone[b-gq09s43h86] { margin-bottom: 16px; padding: 12px 14px; background: rgba(146,110,196,.05); border: 1px solid rgba(146,110,196,.18); border-radius: var(--hx-r-sm, 10px); }
.hc__zone-head[b-gq09s43h86] { color: var(--hx-text-caption-2); margin-bottom: 10px; }
.hc__axis[b-gq09s43h86] { display: flex; align-items: center; gap: 10px; margin: 9px 0; }
.hc__axis-name[b-gq09s43h86] { width: 36px; color: var(--hx-text-faint); flex-shrink: 0; }
.hc__bar-end[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 10px; color: var(--hx-text-faint); flex-shrink: 0; }
.hc__bar-track[b-gq09s43h86] { position: relative; flex: 1; min-width: 120px; height: 10px; border-radius: 99px; background: rgba(0,0,0,.3); }
.hc__bar-band[b-gq09s43h86] { position: absolute; top: 0; bottom: 0; background: rgba(116,213,154,.25); border-radius: 2px; }   /* the ideal band */
.hc__bar-range[b-gq09s43h86] { position: absolute; top: 50%; height: 4px; transform: translateY(-50%); background: rgba(255,255,255,.45); border-radius: 99px; }  /* the swing */
.hc__bar-marker[b-gq09s43h86] { position: absolute; top: 50%; width: 12px; height: 12px; border-radius: 99px; transform: translate(-50%, -50%); background: var(--jar-color, #fff); border: 2px solid var(--hx-bg); z-index: 1; }  /* current */
.hc__bar-cur[b-gq09s43h86] { width: 54px; text-align: right; font-family: var(--hx-font-mono); font-size: 12px; color: var(--jar-color, var(--hx-text-caption)); flex-shrink: 0; }

.hc__jaractions[b-gq09s43h86] { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.hc__jarhint[b-gq09s43h86] { color: var(--hx-text-faint); margin: 8px 0 0; }
.hc__rhinput[b-gq09s43h86] { width: 90px; }
.hc__jarlog[b-gq09s43h86] { list-style: none; margin: 14px 0 0; padding: 0; }
.hc__jarlog li[b-gq09s43h86] { display: flex; justify-content: space-between; gap: 10px; padding: 5px 0; border-bottom: 1px solid rgba(255,255,255,.05); font-size: 13px; color: var(--hx-text-caption); }
.hc__jarlog-time[b-gq09s43h86] { color: var(--hx-text-faint); font-family: var(--hx-font-mono); font-size: 11px; }

/* ── Burp schedule ── */
.hc__sched[b-gq09s43h86] { list-style: none; margin: 0; padding: 0; }
.hc__sched-row[b-gq09s43h86] { display: grid; grid-template-columns: 20px 1fr; gap: 4px 10px; padding: 10px 0; border-bottom: 1px solid rgba(255,255,255,.05); color: var(--hx-text-faint); }
.hc__sched-row:last-child[b-gq09s43h86] { border-bottom: none; }
.hc__sched-mark[b-gq09s43h86] { grid-row: span 2; color: var(--hx-text-faint); }
.hc__sched-label[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .05em; }
.hc__sched-guide[b-gq09s43h86] { font-size: 13px; color: var(--hx-text-caption-2); }
.hc__sched-row.is-now[b-gq09s43h86] { color: var(--hx-text-heading); }
.hc__sched-row.is-now .hc__sched-mark[b-gq09s43h86], .hc__sched-row.is-now .hc__sched-label[b-gq09s43h86] { color: #b48ee0; }
.hc__sched-row.is-done .hc__sched-mark[b-gq09s43h86] { color: #74d59a; }

/* ── Dry log form ── */
.hc__form[b-gq09s43h86] { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 14px; }
.hc__field[b-gq09s43h86] { display: flex; flex-direction: column; gap: 5px; }
.hc__field label[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 11px; text-transform: uppercase; letter-spacing: .04em; color: var(--hx-text-caption); }
.hc__optional[b-gq09s43h86] { color: var(--hx-text-faint); text-transform: none; }
.hc__form-actions[b-gq09s43h86] { display: flex; align-items: center; gap: 12px; margin-top: 16px; }
.hc__saved[b-gq09s43h86] { color: #74d59a; }

/* ── Mark done ── */
.hc__markdone[b-gq09s43h86] { text-align: center; padding: 24px; border: 1px dashed var(--hx-border); border-radius: var(--hx-r-sm, 10px); }
.hc__markdone-lead[b-gq09s43h86] { font-family: var(--hx-font-display); font-size: 22px; color: var(--hx-text-heading); }
.hc__markdone-sub[b-gq09s43h86] { color: var(--hx-text-caption-2); margin: 6px 0 16px; }
.hc__markdone-hint[b-gq09s43h86] { color: var(--hx-text-faint); margin-top: 10px; }

/* ── Drying phase ── */
.hc__phase-lead[b-gq09s43h86] { color: var(--hx-text-caption-2); margin: -6px 0 16px; }
.hc__hint[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 10px; color: var(--hx-text-faint); }
.hc__weigh[b-gq09s43h86] { margin-top: -12px; }
.hc__weigh-row[b-gq09s43h86] { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; margin-top: 8px; align-items: flex-end; }
.hc__weigh-input[b-gq09s43h86] { max-width: 240px; }
.hc__weigh-preview[b-gq09s43h86] { margin-top: 12px; color: var(--hx-text-caption-2); }
.hc__weigh-preview strong[b-gq09s43h86] { color: var(--hx-gold); }

/* ── Labelled field inside an action row (the weigh row, the mark-complete row). A placeholder disappears the
   moment you type and can't say "optional"; a date input can't carry one at all. Rows bottom-align so the
   labels ride above and the button still sits on the inputs' baseline. ── */
/* flex-basis + min-width:0 so the fields SHARE the row and shrink together. Without it each one sizes to its
   control's intrinsic width — a native date picker and a <select> resolve differently — and with
   align-items:flex-end their labels then sit at different heights, which is what made the row look broken on
   a phone (operator, 2026-08-07). */
.hc__rowfield[b-gq09s43h86] { display: flex; flex-direction: column; gap: 4px; text-align: left; flex: 1 1 150px; min-width: 0; max-width: 240px; }
.hc__rowfield .hx-label[b-gq09s43h86] { color: var(--hx-text-faint); }
.hc__rowfield .hx-input[b-gq09s43h86] { width: 100%; }
.hc__markdone-row[b-gq09s43h86] { display: flex; gap: 10px; justify-content: center; flex-wrap: wrap; align-items: flex-end; }
.hc__burpdate[b-gq09s43h86] { width: 150px; color: var(--hx-text-caption); }
/* ── Dry summary ── */
.hc__drylist[b-gq09s43h86] { margin: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(140px, 1fr)); gap: 12px; }
.hc__drylist dt[b-gq09s43h86] { font-family: var(--hx-font-mono); font-size: 10px; text-transform: uppercase; letter-spacing: .04em; color: var(--hx-text-faint); margin-bottom: 3px; }
.hc__drylist dd[b-gq09s43h86] { margin: 0; color: var(--hx-text-heading); }

@media (max-width: 560px) {
    .hc__title[b-gq09s43h86] { font-size: 30px; }

    /* One control per line on a phone. Side-by-side labelled fields need ~150px each plus the gap; below
       that they wrap into a cramped, misaligned row rather than degrading gracefully. Stacking is the
       honest answer at this width — these are the two rows that COMMIT something (start the cure, close
       it), so they should be unhurried and full-thumb-width, not squeezed. */
    .hc__weigh-row[b-gq09s43h86],
    .hc__markdone-row[b-gq09s43h86] {
        flex-direction: column;
        align-items: stretch;
    }
    /* flex: 0 0 auto is load-bearing, not tidying. The row-width basis above (`flex: 1 1 150px`) is measured
       along the MAIN axis — so the moment the container stacks, that 150px becomes each field's HEIGHT and
       flex-grow stretches it further, spacing the controls hugely apart. Height must come from the content. */
    .hc__weigh-row .hc__rowfield[b-gq09s43h86],
    .hc__markdone-row .hc__rowfield[b-gq09s43h86] {
        flex: 0 0 auto;
        max-width: none;
        width: 100%;
    }
    .hc__weigh-input[b-gq09s43h86] { max-width: none; width: 100%; }
    .hc__weigh-row .hx-btn[b-gq09s43h86],
    .hc__markdone-row .hx-btn[b-gq09s43h86] { width: 100%; }
}
/* /Components/Pages/HarvestCure/HarvestOverview.razor.rz.scp.css */
/* Harvest & Cure overview (planning doc 40). Gold = grow time; PURPLE = cure time (the mode signal). */

.hco[b-v91fncbc88] { padding-block: 24px 64px; }
.hco__loading[b-v91fncbc88] { color: var(--hx-text-caption-2); }
.hco__back[b-v91fncbc88] {
    display: inline-block; color: var(--hx-text-caption-2);
    text-decoration: none; margin-bottom: 20px; transition: color var(--hx-t-slow);
}
.hco__back:hover[b-v91fncbc88] { color: var(--hx-gold); }

.hco__notyet[b-v91fncbc88] { text-align: center; padding: 40px 0; }
.hco__notyet p[b-v91fncbc88] { color: var(--hx-text-caption-2); margin: 12px 0 20px; }

/* ── Header ── */
.hco__head[b-v91fncbc88] { margin-bottom: 28px; }
.hco__eyebrow[b-v91fncbc88] { color: var(--hx-gold); display: block; }
.hco__title[b-v91fncbc88] { font-size: 48px; line-height: 1; margin-top: 4px; }
.hco__theme[b-v91fncbc88] { font-family: var(--hx-font-mono); font-style: italic; color: var(--hx-text-caption); margin: 10px 0 0; }
.hco__meta[b-v91fncbc88] { color: var(--hx-text-caption-2); margin: 10px 0 0; }
.hco__meta a[b-v91fncbc88] { color: var(--hx-gold); text-decoration: none; }
.hco__meta a:hover[b-v91fncbc88] { text-decoration: underline; }

/* ── Layout: plants · schedule · side panel on desktop; one column on mobile, plants → side → schedule ── */
.hco__grid[b-v91fncbc88] { display: grid; gap: 28px; grid-template-columns: minmax(0, 1fr); }
.hco__plants[b-v91fncbc88]   { order: 1; }
.hco__side[b-v91fncbc88]     { order: 2; display: flex; flex-direction: column; gap: 16px; }
.hco__schedule[b-v91fncbc88] { order: 3; }
@media (min-width: 1100px) {
    .hco__grid[b-v91fncbc88] { grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr) minmax(0, 0.9fr); align-items: start; }
    .hco__plants[b-v91fncbc88], .hco__schedule[b-v91fncbc88], .hco__side[b-v91fncbc88] { order: 0; }
}

.hco__section-title[b-v91fncbc88] {
    font-family: var(--hx-font-display); font-size: 26px; letter-spacing: .02em;
    color: var(--hx-gold); margin: 0 0 10px;
}
.hco__section-title--cure[b-v91fncbc88] { color: #b48ee0; }
.hco__count[b-v91fncbc88] { font-family: var(--hx-font-mono); font-size: 15px; color: var(--hx-text-caption-2); }
.hco__lead[b-v91fncbc88] { color: var(--hx-text-caption-2); margin: 0 0 12px; font-size: 14px; }

/* ── Plant cards — the standard Plant card (matches Run Journal) ── */
.hco__cards[b-v91fncbc88] { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.hco__card[b-v91fncbc88] {
    display: flex; align-items: center; gap: 14px; width: 100%; cursor: pointer;
    text-align: left; font: inherit; color: inherit;
    background: var(--hx-surface-1); border: 1px solid var(--hx-border); border-radius: 10px; padding: 15px 18px;
    transition: border-color var(--hx-t-slow), background var(--hx-t-slow), box-shadow var(--hx-t-slow), transform var(--hx-t-slow);
}
.hco__card:hover[b-v91fncbc88] { border-color: var(--hx-gold); transform: translateY(-1px); }
.hco__card.is-selected[b-v91fncbc88] { border-color: var(--hx-gold); background: rgba(232,196,108,.08); box-shadow: inset 0 0 0 1px rgba(232,196,108,.4); }
.hco__card-info[b-v91fncbc88] { flex: 1; min-width: 0; }
.hco__card-name[b-v91fncbc88] { font-weight: 600; font-size: 17px; color: var(--hx-text-heading); }
.hco__card-stage[b-v91fncbc88] { font-family: var(--hx-font-mono); font-size: 11px; letter-spacing: .04em; text-transform: uppercase; color: var(--hx-gold); margin-top: 3px; }
.hco__card-stage--notstarted[b-v91fncbc88] { color: var(--hx-text-caption-2); }
.hco__card-stage--usedup[b-v91fncbc88] { color: var(--hx-red, #e05555); }
.hco__card-strain[b-v91fncbc88] { font-family: var(--hx-font-mono); font-size: 12px; color: var(--hx-text-caption-2); margin-top: 3px; }
.hco__card-score[b-v91fncbc88] { flex-shrink: 0; }

/* ── Curing schedule: the heat map in month rows (M1 W1–W4 / M2 W5…) ── */
.hco__empty[b-v91fncbc88] { color: var(--hx-text-caption-2); margin: 4px 0 10px; }
.hco__map[b-v91fncbc88] { display: flex; flex-direction: column; gap: 10px; margin: 6px 0 14px; }
.hco__map-row[b-v91fncbc88] { display: flex; gap: 10px; flex-wrap: wrap; }
.hco__mcell[b-v91fncbc88], .hco__wcell[b-v91fncbc88] {
    width: 54px; height: 54px; border-radius: 9px;
    display: inline-flex; align-items: center; justify-content: center;
    font-family: var(--hx-font-mono); font-size: 15px; text-decoration: none;
    transition: transform var(--hx-t-slow), box-shadow var(--hx-t-slow);
}
.hco__mcell[b-v91fncbc88] { background: #b44fb8; color: #fff; font-weight: 700; }
.hco__mcell:hover[b-v91fncbc88] { transform: translateY(-2px); box-shadow: 0 0 0 2px rgba(180,79,184,.5); }
.hco__wcell[b-v91fncbc88] { border: 1px solid rgba(146,110,196,.2); color: var(--hx-text-heading); }
a.hco__wcell:hover[b-v91fncbc88] { transform: translateY(-2px); box-shadow: 0 0 0 1px rgba(146,110,196,.7); }
.hco__wcell--l0[b-v91fncbc88] { background: rgba(146,110,196,.10); }
.hco__wcell--l1[b-v91fncbc88] { background: rgba(146,110,196,.45); }
.hco__wcell--l3[b-v91fncbc88] { background: #926ec4; }
/* On the shelf — weeks after Cure complete — a muted second tint of the same family. */
.hco__wcell--l1.is-shelf[b-v91fncbc88] { background: rgba(140,130,150,.40); }
.hco__wcell--l3.is-shelf[b-v91fncbc88] { background: #8a7f99; }
.hco__wcell.is-now[b-v91fncbc88] { box-shadow: 0 0 0 2px var(--hx-gold); }
.hco__wcell.is-next[b-v91fncbc88] { opacity: .4; border-style: dashed; color: var(--hx-text-faint); background: none; }

.hco__key[b-v91fncbc88] { display: flex; gap: 16px; flex-wrap: wrap; color: var(--hx-text-faint); align-items: center; margin-bottom: 14px; }
.hco__key span[b-v91fncbc88] { display: inline-flex; align-items: center; gap: 5px; }
.hco__swatch[b-v91fncbc88] { width: 12px; height: 12px; border-radius: 3px; display: inline-block; }

.hco__nudge[b-v91fncbc88] { color: var(--hx-text-caption-2); font-size: 14px; margin: 0 0 10px; }
.hco__open[b-v91fncbc88] { color: var(--hx-gold); text-decoration: none; font-size: 14px; }
.hco__open:hover[b-v91fncbc88] { text-decoration: underline; }

/* ── Side panels ── */
.hco__panel[b-v91fncbc88] {
    background: var(--hx-surface-1); border: 1px solid var(--hx-border);
    border-radius: var(--hx-r-md, 14px); padding: 18px 20px;
}
.hco__panel-title[b-v91fncbc88] { font-family: var(--hx-font-display); font-size: 20px; letter-spacing: .03em; color: var(--hx-gold); margin: 0 0 12px; }
.hco__panel-lead[b-v91fncbc88] { color: var(--hx-text-caption-2); margin: 0 0 8px; font-size: 14px; }

/* Stage stepper — a completed phase keeps its purple; the current one takes the gold ring. */
.hco__steps[b-v91fncbc88] { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 6px; }
.hco__step[b-v91fncbc88] { display: flex; flex-direction: column; align-items: center; gap: 5px; text-align: center; }
.hco__step-dot[b-v91fncbc88] { width: 14px; height: 14px; border-radius: 99px; background: var(--hx-surface-2); border: 1px solid var(--hx-border); }
.hco__step-name[b-v91fncbc88] { font-family: var(--hx-font-mono); font-size: 11px; letter-spacing: .03em; text-transform: uppercase; color: var(--hx-text-faint); }
.hco__step-sub[b-v91fncbc88] { font-family: var(--hx-font-mono); font-size: 10px; color: var(--hx-text-caption-2); }
.hco__step.is-done .hco__step-dot[b-v91fncbc88] { background: #926ec4; border-color: #926ec4; }
.hco__step.is-done .hco__step-name[b-v91fncbc88] { color: var(--hx-text-heading); }
.hco__step.is-now .hco__step-dot[b-v91fncbc88] { background: #b48ee0; border-color: var(--hx-gold); box-shadow: 0 0 0 2px var(--hx-gold); }
.hco__step.is-now .hco__step-name[b-v91fncbc88] { color: var(--hx-gold); }

/* Cure complete — only when the plant is Ready. */
.hco__complete[b-v91fncbc88] {
    text-align: center; padding: 22px;
    background: linear-gradient(135deg, rgba(146,110,196,.18), rgba(146,110,196,.04));
    border: 1px solid rgba(146,110,196,.5); border-radius: var(--hx-r-md, 14px);
}
.hco__complete-crown[b-v91fncbc88] { font-size: 30px; color: var(--hx-gold); }
.hco__complete-title[b-v91fncbc88] { font-family: var(--hx-font-display); font-size: 24px; margin: 4px 0 0; color: var(--hx-text-heading); }
.hco__complete p[b-v91fncbc88] { color: var(--hx-text-caption-2); margin: 8px 0 0; }
.hco__complete strong[b-v91fncbc88] { color: var(--hx-gold); }

.hco__entry[b-v91fncbc88] { display: block; color: var(--hx-gold); text-decoration: none; padding: 4px 0; }
.hco__entry:hover[b-v91fncbc88] { text-decoration: underline; }
.hco__submit[b-v91fncbc88] { display: inline-block; }

/* This grow */
.hco__stats[b-v91fncbc88] { margin: 0; display: grid; gap: 8px; }
.hco__stats div[b-v91fncbc88] { display: flex; justify-content: space-between; gap: 12px; }
.hco__stats dt[b-v91fncbc88] { color: var(--hx-text-caption-2); }
.hco__stats dd[b-v91fncbc88] { margin: 0; font-family: var(--hx-font-mono); color: var(--hx-text-heading); }
/* /Components/Pages/Insights.razor.rz.scp.css */
/* ── Insights — ins__ namespace (planning doc 30) ─────────────
   Existing app.css tokens only. Gold stays the accent; no new palette, and none of the reserved
   tints (purple = premium/cure, blue = privacy) appear here. */

.ins[b-92xcoxen19] { padding-bottom: 4rem; }

/* ⚠ Vertical padding ONLY. This element also carries .hx-container for its gutters, and scoped CSS
   out-specifies app.css — so a `padding:` shorthand here silently zeroes the container's left/right and
   the headline goes flush to the screen edge on mobile. Never use the shorthand on an element that wears
   a layout utility: the sides you didn't mention are the ones it overwrites. */
.ins__head[b-92xcoxen19] {
    padding-top: 2.25rem;
    padding-bottom: 1.5rem;
}

.ins__headline[b-92xcoxen19] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2.2rem, 6vw, 3.2rem);
    letter-spacing: 0.06em;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0;
}

.ins__sub[b-92xcoxen19] {
    font-size: 0.95rem;
    color: var(--hx-text-caption, #9a927e);
    margin: 0.35rem 0 0;
}

.ins__loading[b-92xcoxen19] {
    color: var(--hx-text-faint, #6f6857);
    padding: 2rem 0;
}

/* ── Headline stats ───────────────────────────────────────── */
/* Grid so the count of columns is the only thing that changes at a breakpoint — a flex row that flips to
   a column silently reinterprets align-items, which is the axis-flip trap this app has already paid for. */
.ins__stats[b-92xcoxen19] {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 0.85rem;
    margin-bottom: 2.5rem;
}

.ins__stat[b-92xcoxen19] {
    padding: 1.1rem 1.15rem;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border-gold, rgba(232,196,108,.3));
    border-radius: var(--hx-r, 12px);
}

.ins__stat-val[b-92xcoxen19] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(1.7rem, 4.5vw, 2.3rem);
    line-height: 1;
    letter-spacing: 0.03em;
    color: var(--hx-gold, #e8c46c);
}

.ins__stat-key[b-92xcoxen19] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.11em;
    color: var(--hx-text-faint, #6f6857);
    margin-top: 0.4rem;
}

/* ── Panels ───────────────────────────────────────────────── */
.ins__panel[b-92xcoxen19] {
    margin-bottom: 2.25rem;
    padding: 1.35rem 1.4rem 1.25rem;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    border-radius: var(--hx-r, 12px);
}

.ins__panel-head[b-92xcoxen19] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem 0.9rem;
    margin-bottom: 1.15rem;
}

.ins__panel-title[b-92xcoxen19] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.1em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}

.ins__panel-meta[b-92xcoxen19],
.ins__panel-empty[b-92xcoxen19] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    letter-spacing: 0.04em;
    color: var(--hx-text-faint, #6f6857);
}
.ins__panel-empty[b-92xcoxen19] { font-family: 'Hanken Grotesk', system-ui, sans-serif; font-size: 0.85rem; margin: 0; }

/* ── Strains ──────────────────────────────────────────────── */
.ins__strains[b-92xcoxen19] { display: flex; flex-direction: column; gap: 0.15rem; }

.ins__strain[b-92xcoxen19] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto auto auto;
    align-items: center;
    gap: 0.9rem;
    padding: 0.6rem 0;
    border-top: 1px solid var(--hx-border, rgba(255,255,255,.06));
}
.ins__strain:first-child[b-92xcoxen19] { border-top: none; }

.ins__strain-name[b-92xcoxen19] {
    font-size: 0.92rem;
    color: var(--hx-text-body, #efe9da);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* One dot per weighed harvest — the count IS the sample size, shown rather than stated. */
.ins__strain-dots[b-92xcoxen19] { display: flex; gap: 3px; }
.ins__strain-dot[b-92xcoxen19] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--hx-gold, #e8c46c);
    opacity: 0.85;
}

.ins__strain-range[b-92xcoxen19] {
    font-family: 'Space Mono', monospace;
    font-size: 0.76rem;
    color: var(--hx-gold, #e8c46c);
    white-space: nowrap;
}

.ins__strain-n[b-92xcoxen19] {
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: var(--hx-text-faint, #6f6857);
    white-space: nowrap;
}

/* Sample-size honesty sits WITH the data it qualifies, not in a footer nobody reads. */
.ins__caveat[b-92xcoxen19] {
    margin: 1.15rem 0 0;
    padding-top: 0.9rem;
    border-top: 1px dashed var(--hx-border, rgba(255,255,255,.06));
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--hx-text-caption, #9a927e);
}

.ins__footnote[b-92xcoxen19] {
    font-size: 0.78rem;
    color: var(--hx-text-faint, #6f6857);
    margin: 0;
}

/* ── Empty state ──────────────────────────────────────────── */
.ins__empty[b-92xcoxen19] {
    text-align: center;
    padding: 3rem 1rem 3.5rem;
    border: 1px dashed var(--hx-border, rgba(255,255,255,.06));
    border-radius: var(--hx-r, 12px);
}
.ins__empty-glyph[b-92xcoxen19] { font-size: 2rem; display: block; margin-bottom: 0.75rem; }
.ins__empty-title[b-92xcoxen19] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.5rem;
    letter-spacing: 0.06em;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0 0 0.5rem;
}
.ins__empty-sub[b-92xcoxen19] {
    max-width: 46ch;
    margin: 0 auto 1.4rem;
    font-size: 0.9rem;
    line-height: 1.55;
    color: var(--hx-text-caption, #9a927e);
}

/* ── Mobile ───────────────────────────────────────────────── */
@media (max-width: 720px) {
    .ins__stats[b-92xcoxen19] { grid-template-columns: repeat(2, 1fr); }
}

@media (max-width: 480px) {
    /* Name and range stay; the dot row and the grow count drop to a second line rather than squeezing
       the strain name to an ellipsis stub. */
    .ins__strain[b-92xcoxen19] {
        grid-template-columns: minmax(0, 1fr) auto;
        gap: 0.35rem 0.75rem;
    }
    .ins__strain-dots[b-92xcoxen19] { grid-column: 1; }
    .ins__strain-n[b-92xcoxen19] { grid-column: 2; text-align: right; }
}
/* /Components/Pages/Inventory/InventoryPage.razor.rz.scp.css */
/* ──────────────────────────────────────────────────────────
   Equipment Inventory — inv__ namespace
   ────────────────────────────────────────────────────────── */

.inv__loading[b-3tbj3by4cv] {
    padding: 5rem 1.5rem;
    text-align: center;
}

.inv__loading-text[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    letter-spacing: 0.1em;
    color: var(--hx-muted);
}

/* ── Header ──────────────────────────────────────────────── */
.inv__header[b-3tbj3by4cv] {
    background: var(--hx-surface-1, #0f0f0f);
    border-bottom: 1px solid var(--hx-border, #222);
    padding-bottom: 2rem;
    margin-bottom: 0;
}

.inv__header-inner[b-3tbj3by4cv] {
    padding-top: 2rem;
}

.inv__eyebrow[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: var(--hx-gold, #d4af37);
    letter-spacing: 0.2em;
    margin-bottom: 0.5rem;
}

.inv__headline[b-3tbj3by4cv] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2.4rem, 6vw, 4rem);
    letter-spacing: 0.02em;
    line-height: 0.95;
    color: var(--hx-fg, #fff);
    margin: 0 0 0.6rem;
}

.inv__subhead[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.95rem;
    color: var(--hx-muted, #888);
    max-width: 540px;
    margin: 0 0 1.5rem;
    line-height: 1.5;
}

/* ── Stats bar ───────────────────────────────────────────── */
.inv__stats-bar[b-3tbj3by4cv] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(130px, 1fr));
    gap: 1px;
    background: rgba(255,255,255,0.07);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 8px;
    overflow: hidden;
    max-width: 480px;
}

.inv__stat[b-3tbj3by4cv] {
    background: var(--hx-surface-1, #0d0e0f);
    padding: 1rem 1.25rem;
}

.inv__stat-val[b-3tbj3by4cv] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.9rem;
    line-height: 0.9;
    color: var(--hx-fg, #fff);
}

.inv__stat-val--gold[b-3tbj3by4cv] { color: var(--hx-gold, #d4af37); }

.inv__stat-label[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    color: var(--hx-muted, #666);
    letter-spacing: 0.08em;
    margin-top: 0.3rem;
}

/* ── Featured Partner ────────────────────────────────────── */
.inv__partner[b-3tbj3by4cv] {
    position: relative;
    margin-top: 1.5rem;
    border-radius: 10px;
    background: linear-gradient(120deg, #1c1607, #0f0c06);
    border: 1px solid rgba(212, 175, 55, 0.4);
    display: flex;
    gap: clamp(1.25rem, 3vw, 2.25rem);
    flex-wrap: wrap;
    align-items: center;
    padding: clamp(1.25rem, 3vw, 2rem);
    overflow: hidden;
}

.inv__partner-badge[b-3tbj3by4cv] {
    position: absolute;
    top: 1rem;
    right: 1rem;
    padding: 0.25rem 0.65rem;
    background: rgba(212,175,55,0.16);
    color: var(--hx-gold, #d4af37);
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    letter-spacing: 0.12em;
}

.inv__partner-img[b-3tbj3by4cv] {
    width: clamp(100px, 14vw, 160px);
    flex-shrink: 0;
    aspect-ratio: 1;
    border-radius: 8px;
    background: repeating-linear-gradient(48deg, #241d10, #241d10 12px, #191307 12px, #191307 24px);
    display: flex;
    align-items: center;
    justify-content: center;
}

.inv__partner-img-placeholder[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: #5a5040;
}

.inv__partner-body[b-3tbj3by4cv] { flex: 1; min-width: 200px; }

.inv__partner-eyebrow[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: var(--hx-gold, #d4af37);
    letter-spacing: 0.15em;
    margin-bottom: 0.5rem;
}

.inv__partner-name[b-3tbj3by4cv] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(1.6rem, 3.5vw, 2.4rem);
    letter-spacing: 0.02em;
    color: var(--hx-fg, #fff);
    margin: 0 0 0.5rem;
}

.inv__partner-desc[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.875rem;
    color: var(--hx-muted, #999);
    line-height: 1.55;
    max-width: 400px;
    margin: 0 0 1rem;
}

.inv__partner-btn[b-3tbj3by4cv] { font-size: 0.875rem; }

/* ── Controls ────────────────────────────────────────────── */
.inv__controls[b-3tbj3by4cv] {
    padding-top: 1.75rem;
    padding-bottom: 0;
}

.inv__search-row[b-3tbj3by4cv] {
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
    justify-content: space-between;   /* keep SORT controls pinned right as the search box narrows */
    margin-bottom: 1rem;
}

.inv__search[b-3tbj3by4cv] {
    flex: 0 1 340px;                  /* single-word searches don't need much width (operator, 2026-07-24) */
    max-width: 340px;
    min-width: 180px;
    background: rgba(255,255,255,0.03);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 8px;
    color: var(--hx-fg, #efe9da);
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.875rem;
    padding: 0.75rem 1rem;
    transition: border-color 0.15s;
}

.inv__search:focus[b-3tbj3by4cv] {
    outline: none;
    border-color: rgba(212, 175, 55, 0.5);
}

/* ── Category filter ─────────────────────────────────────── */
/* 16 categories is too many pills — they wrapped to several rows and littered the floor (worse on
   mobile), so a compact dropdown is the filter at ALL widths. The old .inv__cats / .inv__cat-pill
   are retired. */
/* The category filter — a compact dropdown at every width (replaces the old 16-pill row). Capped on
   desktop so it reads as a tidy control; goes full-width on mobile (see @media below). */
.inv__cat-select[b-3tbj3by4cv] {
    display: block;
    width: 100%;
    max-width: 300px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
}

/* Empty-grid fallback message (default "Recently added" view returned nothing, or a picked category is empty). */
.inv__prompt[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: #cbc3b0;
    background: rgba(255,255,255,.02);
    border: 1px dashed rgba(255,255,255,.12);
    border-radius: 12px;
    padding: 2rem 1.25rem;
    text-align: center;
    line-height: 1.5;
}
.inv__prompt-sub[b-3tbj3by4cv] {
    display: block;
    margin-top: 0.4rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: var(--hx-muted, #8a8270);
}

/* ── Body layout ─────────────────────────────────────────── */
.inv__body[b-3tbj3by4cv] {
    display: flex;
    gap: clamp(1.25rem, 3vw, 2rem);
    align-items: flex-start;
    padding-top: 1.5rem;
    padding-bottom: 5rem;
}

.inv__main[b-3tbj3by4cv] { flex: 1; min-width: 0; }

/* ── Grid ────────────────────────────────────────────────── */
.inv__grid[b-3tbj3by4cv] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
}

.inv__empty[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    color: var(--hx-muted, #6f6857);
    padding: 3.5rem 1rem;
    text-align: center;
    line-height: 1.6;
}
.inv__empty strong[b-3tbj3by4cv] { color: var(--hx-text-2, #d8cdb6); font-weight: 700; }

/* A button that reads as a link — the widen action is part of the sentence, not a control beside it,
   but it must stay a <button> so it keeps keyboard focus and the right semantics. */
.inv__empty-link[b-3tbj3by4cv] {
    display: inline; background: none; border: none; padding: 0; cursor: pointer;
    font: inherit; color: var(--hx-gold, #e8c46c); text-decoration: underline;
}
.inv__empty-link:hover[b-3tbj3by4cv] { color: var(--hx-text-heading, #f6efdd); }

/* ── Card ────────────────────────────────────────────────── */
.inv__card[b-3tbj3by4cv] {
    border-radius: 10px;
    overflow: hidden;
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.08);
    transition: border-color 0.18s;
}

.inv__card.is-selected[b-3tbj3by4cv] {
    border-color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.06);
}

.inv__card.is-sponsored[b-3tbj3by4cv] {
    border-color: rgba(212, 175, 55, 0.35);
}

.inv__card-thumb[b-3tbj3by4cv] {
    position: relative;
    aspect-ratio: 16 / 10;
    background: repeating-linear-gradient(48deg, #1a1610, #1a1610 10px, #14100b 10px, #14100b 20px);
}
/* Placeholder glyph until a licensed product image exists (doc 23 §5a). */
.inv__card-glyph[b-3tbj3by4cv] {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 2.75rem; opacity: 0.45; pointer-events: none;
}

.inv__card-cat-badge[b-3tbj3by4cv] {
    position: absolute;
    top: 0.6rem;
    left: 0.6rem;
    padding: 0.25rem 0.65rem;
    background: rgba(8,7,5,0.72);
    border: 1px solid rgba(255,255,255,0.12);
    color: var(--hx-muted, #b0a890);
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    letter-spacing: 0.06em;
}

.inv__card-sponsor-badge[b-3tbj3by4cv] {
    position: absolute;
    top: 0.6rem;
    right: 0.6rem;
    padding: 0.25rem 0.6rem;
    background: var(--hx-gold, #d4af37);
    color: #16120a;
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 0.55rem;
    font-weight: 700;
    letter-spacing: 0.08em;
}

.inv__card-body[b-3tbj3by4cv] {
    padding: 0.9rem 1rem 1rem;
}

.inv__card-top[b-3tbj3by4cv] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 0.5rem;
    margin-bottom: 0.4rem;
}

.inv__card-info[b-3tbj3by4cv] { min-width: 0; }

.inv__card-name[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 700;
    font-size: 0.95rem;
    color: var(--hx-fg, #f6efdd);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.inv__card-brand[b-3tbj3by4cv] {
    font-size: 0.75rem;
    color: var(--hx-muted, #8a8270);
    margin-top: 0.1rem;
}

.inv__card-spec[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: var(--hx-muted, #9a927e);
    margin-bottom: 0.75rem;
    line-height: 1.4;
}

/* ── Usage bar ───────────────────────────────────────────── */
.inv__card-usage[b-3tbj3by4cv] { margin-bottom: 0.75rem; }

.inv__card-usage-row[b-3tbj3by4cv] {
    display: flex;
    justify-content: space-between;
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    color: var(--hx-muted, #8a8270);
    margin-bottom: 0.3rem;
}

.inv__usage-track[b-3tbj3by4cv] {
    height: 4px;
    border-radius: 99px;
    background: rgba(255,255,255,0.07);
    overflow: hidden;
}

.inv__usage-fill[b-3tbj3by4cv] {
    height: 100%;
    border-radius: 99px;
    background: var(--hx-gold, #c89b62);
    transition: width 0.3s ease;
}

/* ── Add button ──────────────────────────────────────────── */
.inv__add-btn[b-3tbj3by4cv] {
    display: block;
    width: 100%;
    text-align: center;
    padding: 0.625rem;
    border-radius: 2px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    font-weight: 700;
    cursor: pointer;
    background: transparent;
    color: var(--hx-gold, #d4af37);
    border: 1px solid rgba(212, 175, 55, 0.4);
    transition: background 0.15s, color 0.15s;
}

.inv__add-btn.is-in-gear[b-3tbj3by4cv] {
    background: var(--hx-gold, #d4af37);
    color: #1a1407;
    border-color: var(--hx-gold, #d4af37);
}

.inv__add-btn:not(.is-in-gear):hover[b-3tbj3by4cv] {
    background: rgba(212, 175, 55, 0.1);
}

/* ── Submit Missing Item ─────────────────────────────────── */
.inv__submit-eyebrow[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: var(--hx-gold, #d4af37);
    letter-spacing: 0.15em;
    margin-bottom: 0.5rem;
}

.inv__submit-title[b-3tbj3by4cv] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.6rem;
    letter-spacing: 0.04em;
    color: var(--hx-fg, #fff);
    margin: 0 0 0.5rem;
}

.inv__submit-desc[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.875rem;
    color: var(--hx-muted, #999);
    margin: 0 0 1.5rem;
    line-height: 1.5;
}

.inv__submit-form[b-3tbj3by4cv] { display: flex; flex-direction: column; gap: 1rem; }

.inv__submit-row[b-3tbj3by4cv] {
    display: flex;
    gap: 1rem;
    flex-wrap: wrap;
}

.inv__submit-field[b-3tbj3by4cv] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    flex: 1;
    min-width: 180px;
}

.inv__submit-label[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: var(--hx-muted, #888);
    letter-spacing: 0.08em;
}

.inv__submit-input[b-3tbj3by4cv] {
    background: rgba(255,255,255,0.04);
    border: 1px solid rgba(255,255,255,0.1);
    border-radius: 6px;
    color: var(--hx-fg, #efe9da);
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.875rem;
    padding: 0.65rem 0.875rem;
    transition: border-color 0.15s;
}

.inv__submit-input:focus[b-3tbj3by4cv] {
    outline: none;
    border-color: rgba(212, 175, 55, 0.5);
}

.inv__submit-select[b-3tbj3by4cv] {
    -webkit-appearance: none;
    appearance: none;
    cursor: pointer;
}

.inv__submit-select option[b-3tbj3by4cv] { background: #1a1a1a; }

.inv__submit-error[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: #ff6b6b;
}

.inv__submit-success[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    color: #6bcf7f;
    padding: 1rem;
    background: rgba(107, 207, 127, 0.1);
    border: 1px solid rgba(107, 207, 127, 0.25);
    border-radius: 6px;
}

.inv__submit-btn[b-3tbj3by4cv] { align-self: flex-start; font-size: 0.875rem; }

/* Submit + Cancel side by side (Cancel = ghost/outline, closes the modal like the ×). */
.inv__submit-actions[b-3tbj3by4cv] { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; }
.inv__cancel-btn[b-3tbj3by4cv] { font-size: 0.875rem; }

/* ── "Item not found?" toolbar trigger ─────────────────────── */
.inv__missing-btn[b-3tbj3by4cv] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.7rem 1.1rem;
    border-radius: 8px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.08);
    border: 1px solid rgba(212, 175, 55, 0.4);
    transition: background 0.15s, border-color 0.15s;
}
.inv__missing-btn:hover[b-3tbj3by4cv] {
    background: rgba(212, 175, 55, 0.16);
    border-color: rgba(212, 175, 55, 0.7);
}
.inv__missing-btn-plus[b-3tbj3by4cv] { font-size: 1.05rem; line-height: 1; }

/* ── Submit-a-missing-item modal ───────────────────────────── */
.inv__modal-backdrop[b-3tbj3by4cv] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: clamp(1rem, 6vh, 5rem) 1rem;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(3px);
    overflow-y: auto;
    animation: inv-modal-fade-b-3tbj3by4cv 0.15s ease-out;
}
.inv__modal[b-3tbj3by4cv] {
    position: relative;
    width: 100%;
    max-width: 640px;
    padding: 2rem;
    background: #14110c;               /* solid so the blurred backdrop doesn't bleed through */
    border: 1px solid rgba(255,255,255,0.1);
    border-left: 3px solid var(--hx-gold, #d4af37);
    border-radius: 10px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.55);
    animation: inv-modal-rise-b-3tbj3by4cv 0.18s ease-out;
}
.inv__modal-close[b-3tbj3by4cv] {
    position: absolute;
    top: 0.6rem;
    right: 0.75rem;
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    color: var(--hx-muted, #999);
    background: none;
    border: none;
    border-radius: 6px;
    transition: background 0.15s, color 0.15s;
}
.inv__modal-close:hover[b-3tbj3by4cv] { background: rgba(255,255,255,0.08); color: var(--hx-fg, #fff); }

@keyframes inv-modal-fade-b-3tbj3by4cv { from { opacity: 0; } to { opacity: 1; } }
@keyframes inv-modal-rise-b-3tbj3by4cv { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

/* ── Sidebar ─────────────────────────────────────────────── */
.inv__sidebar[b-3tbj3by4cv] {
    width: 300px;
    flex-shrink: 0;
    position: sticky;
    top: 80px;
    display: flex;
    flex-direction: column;
    gap: 1rem;
}

.inv__my-gear-card[b-3tbj3by4cv] {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(212, 175, 55, 0.22);
    border-radius: 10px;
    padding: 1.25rem;
}

.inv__my-gear-head[b-3tbj3by4cv] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.inv__my-gear-title[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: var(--hx-gold, #d4af37);
    letter-spacing: 0.12em;
}

.inv__my-gear-list[b-3tbj3by4cv] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    margin-bottom: 0.75rem;
    /* Cap the list so a big kit scrolls inside the card instead of stretching the
       page down (operator, 2026-07-20). ~5 rows visible, the rest one scroll away. */
    max-height: 17rem;
    overflow-y: auto;
    padding-right: 0.25rem;
}
.inv__my-gear-list[b-3tbj3by4cv]::-webkit-scrollbar { width: 6px; }
.inv__my-gear-list[b-3tbj3by4cv]::-webkit-scrollbar-thumb {
    background: rgba(212, 175, 55, 0.3);
    border-radius: 3px;
}

.inv__my-gear-item[b-3tbj3by4cv] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    padding: 0.7rem 0.75rem;
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.07);
    border-radius: 6px;
}

.inv__my-gear-item-info[b-3tbj3by4cv] { flex: 1; min-width: 0; }

.inv__my-gear-item-name[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.8rem;
    font-weight: 600;
    color: var(--hx-fg, #efe9da);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

.inv__my-gear-item-cat[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    color: var(--hx-muted, #8a8270);
    margin-top: 0.1rem;
}

.inv__my-gear-remove[b-3tbj3by4cv] {
    width: 22px;
    height: 22px;
    flex-shrink: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255,255,255,0.12);
    border-radius: 99px;
    color: var(--hx-muted, #8a8270);
    background: transparent;
    cursor: pointer;
    font-size: 0.9rem;
    line-height: 1;
    transition: border-color 0.15s, color 0.15s;
}

.inv__my-gear-remove:hover[b-3tbj3by4cv] {
    border-color: var(--hx-gold, #d4af37);
    color: var(--hx-gold, #d4af37);
}

.inv__my-gear-empty[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.8rem;
    color: var(--hx-muted, #8a8270);
    line-height: 1.5;
    margin: 0 0 0.75rem;
}

.inv__my-gear-note[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.72rem;
    color: var(--hx-muted, #6f6857);
    line-height: 1.5;
    margin: 0;
    padding-top: 0.875rem;
    border-top: 1px solid rgba(255,255,255,0.06);
}

/* ── Nutrient link card ──────────────────────────────────── */
.inv__nutrient-link-card[b-3tbj3by4cv] {
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 10px;
    padding: 1.25rem;
}

.inv__nutrient-link-eyebrow[b-3tbj3by4cv] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    color: var(--hx-muted, #666);
    letter-spacing: 0.12em;
    margin-bottom: 0.3rem;
}

.inv__nutrient-link-title[b-3tbj3by4cv] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.06em;
    /* Cross-link card title gold, app-wide header treatment (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c);
    margin-bottom: 0.4rem;
}

.inv__nutrient-link-desc[b-3tbj3by4cv] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.78rem;
    color: var(--hx-muted, #8a8270);
    line-height: 1.4;
    margin: 0 0 0.875rem;
}

.inv__nutrient-link-btn[b-3tbj3by4cv] {
    display: block;
    text-align: center;
    font-size: 0.8rem;
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 900px) {
    /* Filter dropdown fills the width on a phone. */
    .inv__cat-select[b-3tbj3by4cv] { max-width: none; }

    .inv__body[b-3tbj3by4cv] {
        flex-direction: column;
        /* align-items is CROSS-axis: the base `flex-start` aligns tops in a row, but once stacked it means
           "don't stretch horizontally" and the flex:1 main column collapses to its content width. */
        align-items: stretch;
    }

    .inv__sidebar[b-3tbj3by4cv] {
        width: 100%;
        position: static;
    }

    .inv__partner[b-3tbj3by4cv] {
        flex-direction: column;
        /* The base `center` vertically centres the image against the copy in the ROW — worth keeping there,
           but stacked it becomes a HORIZONTAL rule and `.inv__partner-body` (flex: 1, no explicit width)
           would size to fit-content instead of filling. Today that is masked: the description's max-content
           width exceeds the container, so fit-content clamps to the full width anyway. Shorten the copy or
           swap the promo for a short headline and it would silently shrink and centre. Make it explicit. */
        align-items: stretch;
    }

    .inv__partner-img[b-3tbj3by4cv] {
        width: 100%;
        aspect-ratio: 3 / 1;
    }
}
/* /Components/Pages/Landing.razor.rz.scp.css */
/* ── Landing — lp__ namespace (planning doc 37) ──────────────
   Built entirely from the existing tokens in app.css — no new palette, no new type (§6).
   Reserved accents stay reserved: purple = premium/cure, blue = privacy. Neither appears here. */

.lp[b-xxxvxjrgx6] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 60vh;
    padding: 4rem 0 5rem;
    text-align: center;
}

/* Holds the viewport steady while an authenticated visitor is being routed onward, so a member never
   glimpses the stranger's page on the way to their dashboard. */
.lp__wait[b-xxxvxjrgx6] { min-height: 60vh; }

.lp__inner[b-xxxvxjrgx6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 1.25rem;
}

.lp__eyebrow[b-xxxvxjrgx6] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.22em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}

/* The hero owns the spotlight so the glow sits behind the wordmark rather than the whole column.
   isolation + a -1 layer keeps the gradient under the type without needing a stacking hack. */
.lp__hero[b-xxxvxjrgx6] {
    position: relative;
    isolation: isolate;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.75rem;
    padding: 1.5rem 0 0.5rem;
}

/* THE one marquee effect this page gets (doc 37 §5): a spotlight. No chasing bulbs, no pulsating
   border — those belong to moments a grower earns. Purely decorative, so it never traps a click. */
.lp__hero[b-xxxvxjrgx6]::before {
    content: "";
    position: absolute;
    z-index: -1;
    top: -10%;
    left: 50%;
    transform: translateX(-50%);
    width: min(680px, 120%);
    aspect-ratio: 1.6;
    background: radial-gradient(ellipse at center,
                rgba(232, 196, 108, 0.13) 0%,
                rgba(232, 196, 108, 0.05) 42%,
                transparent 72%);
    pointer-events: none;
}

.lp__headline[b-xxxvxjrgx6] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(3rem, 11vw, 6rem);
    letter-spacing: 0.06em;
    line-height: 0.95;
    /* Gold wordmark (§6) — this is the brand's own name, the one place it outranks the heading colour. */
    color: var(--hx-gold, #e8c46c);
    text-shadow: 0 0 28px rgba(232, 196, 108, 0.28);
    margin: 0;
}

/* The positioning line — the one sentence a stranger actually reads. Body face, not the display face,
   so it reads as a statement rather than more marquee. */
.lp__lede[b-xxxvxjrgx6] {
    font-family: 'Hanken Grotesk', system-ui, sans-serif;
    font-size: clamp(1rem, 2.4vw, 1.18rem);
    line-height: 1.55;
    color: var(--hx-text-body, #efe9da);
    max-width: 34ch;
    margin: 0;
    text-wrap: balance;
}

.lp__actions[b-xxxvxjrgx6] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.9rem;
    margin-top: 0.75rem;
}

.lp__cta[b-xxxvxjrgx6] { padding: 0.85rem 1.6rem; font-size: 0.95rem; }

/* The member's way back in — quiet on purpose. The primary CTA stays the only loud thing on the page
   (doc 37 §5.2); a second competing button would split a stranger's attention. */
.lp__signin[b-xxxvxjrgx6] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    color: var(--hx-text-caption, #9a927e);
    text-decoration: none;
    border-bottom: 1px dotted var(--hx-border-gold, rgba(232,196,108,.3));
    padding-bottom: 1px;
    transition: color 0.15s, border-color 0.15s;
}
.lp__signin:hover[b-xxxvxjrgx6] {
    color: var(--hx-gold, #e8c46c);
    border-bottom-color: var(--hx-gold, #e8c46c);
}

/* ── The three pillars ─────────────────────────────────────
   GRID, not flex-column-that-becomes-a-row: this is the axis-flip trap the 2026-08-07 audit chased across
   six surfaces (a media query flipping flex-direction silently reinterprets align-items and flex). A grid
   changes only its track count between breakpoints, so there is no cross-axis meaning to reinterpret.
   ⚠ width:100% is load-bearing — .lp__inner is a centred flex column, so without it this block would size
   to its content and sit narrower than the page, which is exactly how that bug family presents. */
.lp__pillars[b-xxxvxjrgx6] {
    width: 100%;
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 0.9rem;
    margin-top: 2.75rem;
    text-align: left;
}

/* Gold borders per §6 ("cards --hx-surface-1, borders --hx-border-gold"), and --hx-r is the app's card
   radius — there is no --hx-r-card token, so naming one would have quietly fallen back forever. */
.lp__pillar[b-xxxvxjrgx6] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    padding: 1.35rem 1.25rem 1.45rem;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border-gold, rgba(232, 196, 108, 0.3));
    border-radius: var(--hx-r, 12px);
    text-decoration: none;
    transition: border-color 0.18s, transform 0.18s, background 0.18s;
}
.lp__pillar:hover[b-xxxvxjrgx6] {
    border-color: rgba(232, 196, 108, 0.55);
    transform: translateY(-2px);
}

.lp__pillar-glyph[b-xxxvxjrgx6] { font-size: 1.5rem; line-height: 1; }

.lp__pillar-title[b-xxxvxjrgx6] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.4rem;
    letter-spacing: 0.09em;
    color: var(--hx-gold, #e8c46c);
}

.lp__pillar-copy[b-xxxvxjrgx6] {
    font-family: 'Hanken Grotesk', system-ui, sans-serif;
    font-size: 0.88rem;
    line-height: 1.5;
    color: var(--hx-text-caption, #9a927e);
    /* Two concise lines, not a paragraph (§3) — this is a scan, not a read. */
    text-wrap: pretty;
}

/* SHOWCASE carries the weight (§3): TRACK is table stakes, the floor is the emotional peak and the thing
   nobody else has. One step brighter — a warmer border and a faint lift — NOT a second marquee effect. */
.lp__pillar--feature[b-xxxvxjrgx6] {
    border-color: var(--hx-border-gold, rgba(232, 196, 108, 0.4));
    background:
        linear-gradient(180deg, rgba(232, 196, 108, 0.06) 0%, transparent 60%),
        var(--hx-surface-1, #0f0d0a);
}
.lp__pillar--feature:hover[b-xxxvxjrgx6] { border-color: var(--hx-gold, #e8c46c); }

.lp__micro[b-xxxvxjrgx6] {
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    letter-spacing: 0.12em;
    color: var(--hx-text-faint, #6f6857);
    margin: 2rem 0 0;
}

/* Mobile is the default view (CLAUDE.md), so the stacked order IS the journey order: learn, track, show. */
@media (max-width: 760px) {
    .lp__pillars[b-xxxvxjrgx6] { grid-template-columns: 1fr; }
}

@media (max-width: 640px) {
    .lp[b-xxxvxjrgx6] { padding: 2.5rem 0 3.5rem; }
    .lp__pillar[b-xxxvxjrgx6] { padding: 1.15rem 1.1rem 1.25rem; }
}

/* The lift is decoration; anyone who asked for less motion keeps the colour cue and loses the movement. */
@media (prefers-reduced-motion: reduce) {
    .lp__pillar[b-xxxvxjrgx6] { transition: border-color 0.18s, background 0.18s; }
    .lp__pillar:hover[b-xxxvxjrgx6] { transform: none; }
}
/* /Components/Pages/Learn/GrowSchool.razor.rz.scp.css */
.gs[b-0lq2cw7xyw] {
    background: #080807;
    min-height: 100vh;
    color: #efe9da;
}

/* ── Hero ─────────────────────────────────────────────────── */
.gs__hero[b-0lq2cw7xyw] {
    padding: clamp(44px, 6vw, 76px) 0 clamp(24px, 3vw, 36px);
    background: radial-gradient(110% 80% at 50% -10%, rgba(232,196,108,.15), rgba(8,8,7,0) 58%);
}
.gs__eyebrow[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #e8c46c;
    letter-spacing: .24em;
    margin: 0 0 12px;
}
.gs__headline[b-0lq2cw7xyw] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(44px, 8vw, 82px);
    line-height: .88;
    margin: 0 0 16px;
    color: #f6efdd;
    letter-spacing: .02em;
}
.gs__sub[b-0lq2cw7xyw] {
    font-size: clamp(15px, 2vw, 17px);
    color: #b0a890;
    max-width: 620px;
    line-height: 1.6;
    margin: 0 0 28px;
}

/* ── Progress ─────────────────────────────────────────────── */
.gs__progress[b-0lq2cw7xyw] {
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(232,196,108,.2);
    border-radius: 12px;
    padding: 20px 22px;
    max-width: 620px;
}
.gs__progress-top[b-0lq2cw7xyw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.gs__progress-count[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #e8c46c;
    letter-spacing: .1em;
}
.gs__progress-pct[b-0lq2cw7xyw] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 24px;
    color: #f6efdd;
    line-height: 1;
}
.gs__progress-track[b-0lq2cw7xyw] {
    height: 8px;
    border-radius: 99px;
    background: rgba(255,255,255,.08);
    overflow: hidden;
}
.gs__progress-fill[b-0lq2cw7xyw] {
    height: 100%;
    border-radius: 99px;
    background: linear-gradient(90deg, #c89b62, #e8c46c);
    transition: width .4s;
}
.gs__progress-note[b-0lq2cw7xyw] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 14px;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 13px;
    color: #9a927e;
}
.gs__skip[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #8a8270;
    letter-spacing: .04em;
    transition: color .15s;
}
.gs__skip:hover[b-0lq2cw7xyw] { color: #e8c46c; }

/* ── Body / lesson rail ───────────────────────────────────── */
/* padding-block only — preserve .hx-container's padding-inline. The shorthand's `0` was zeroing it, so the
   lesson step-number dots sat flush against the screen edge on mobile (operator, 2026-08-10). */
.gs__body[b-0lq2cw7xyw] { padding-block: 18px 80px; }

.gs__lesson[b-0lq2cw7xyw] {
    display: flex;
    gap: clamp(14px, 2.5vw, 22px);
    align-items: stretch;
}

/* rail */
.gs__rail[b-0lq2cw7xyw] {
    display: flex;
    flex-direction: column;
    align-items: center;
    flex: none;
}
.gs__dot[b-0lq2cw7xyw] {
    width: 42px;
    height: 42px;
    border-radius: 99px;
    border: 1px solid rgba(255,255,255,.12);
    background: rgba(255,255,255,.04);
    color: #8a8270;
    font-family: 'Bebas Neue', sans-serif;
    font-size: 20px;
    cursor: pointer;
    flex: none;
    transition: .2s;
    display: flex;
    align-items: center;
    justify-content: center;
}
.gs__dot:hover[b-0lq2cw7xyw] { border-color: rgba(232,196,108,.5); color: #e8c46c; }
.gs__dot.is-done[b-0lq2cw7xyw] {
    background: #e8c46c;
    color: #1a1407;
    border-color: #e8c46c;
    box-shadow: 0 0 18px rgba(232,196,108,.35);
    font-size: 18px;
    font-weight: 700;
}
.gs__rail-line[b-0lq2cw7xyw] {
    flex: 1;
    width: 2px;
    background: rgba(255,255,255,.08);
    margin: 6px 0;
    min-height: 18px;
}
.gs__lesson.is-done .gs__rail-line[b-0lq2cw7xyw] { background: rgba(232,196,108,.4); }

/* card */
.gs__card[b-0lq2cw7xyw] {
    flex: 1;
    min-width: 0;
    margin-bottom: 18px;
    border-radius: 12px;
    padding: clamp(18px, 3vw, 28px);
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(255,255,255,.08);
    transition: .2s;
}
.gs__lesson.is-done .gs__card[b-0lq2cw7xyw] {
    background: rgba(255,255,255,.015);
    border-color: rgba(255,255,255,.06);
    opacity: .82;
}

.gs__card-meta[b-0lq2cw7xyw] {
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 10px;
}
.gs__phase[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .12em;
}
.gs__meta-dot[b-0lq2cw7xyw] {
    width: 3px; height: 3px;
    border-radius: 99px;
    background: #4a4438;
}
.gs__lesson-n[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    letter-spacing: .06em;
}
.gs__done-tag[b-0lq2cw7xyw] {
    margin-left: auto;
    padding: 3px 10px;
    background: rgba(232,196,108,.14);
    color: #e8c46c;
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .06em;
}

.gs__lesson-headline[b-0lq2cw7xyw] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(28px, 4vw, 40px);
    margin: 0 0 8px;
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: 1;
}
.gs__hook[b-0lq2cw7xyw] {
    font-size: 15px;
    color: #e8c46c;
    font-weight: 600;
    line-height: 1.5;
    margin: 0 0 16px;
}
.gs__para[b-0lq2cw7xyw] {
    font-size: 14px;
    color: #cbb98e;
    line-height: 1.65;
    margin: 0 0 14px;
}

/* numbers table */
.gs__numbers-label[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    letter-spacing: .14em;
    margin: 20px 0 10px;
}
.gs__table-wrap[b-0lq2cw7xyw] {
    overflow-x: auto;
    border: 1px solid rgba(232,196,108,.16);
    border-radius: 10px;
    margin-bottom: 20px;
}
.gs__table[b-0lq2cw7xyw] {
    width: 100%;
    border-collapse: collapse;
    font-size: 12.5px;
}
.gs__table th[b-0lq2cw7xyw] {
    text-align: left;
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .06em;
    padding: 10px 14px;
    background: rgba(232,196,108,.06);
    white-space: nowrap;
}
.gs__table td[b-0lq2cw7xyw] {
    padding: 9px 14px;
    color: #d8cdb6;
    border-top: 1px solid rgba(255,255,255,.06);
    white-space: nowrap;
}
.gs__td-key[b-0lq2cw7xyw] {
    color: #efe9da;
    font-weight: 600;
}

/* watch out */
.gs__watch[b-0lq2cw7xyw] {
    background: rgba(224,92,92,.05);
    border: 1px solid rgba(224,92,92,.18);
    border-radius: 10px;
    padding: 14px 18px;
    margin-bottom: 18px;
}
.gs__watch-label[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e0857a;
    letter-spacing: .12em;
    margin-bottom: 8px;
}
.gs__watch-list[b-0lq2cw7xyw] {
    margin: 0;
    padding-left: 18px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.gs__watch-list li[b-0lq2cw7xyw] {
    font-size: 13px;
    color: #cbb0a6;
    line-height: 1.5;
}

.gs__card-foot[b-0lq2cw7xyw] {
    display: flex;
    align-items: center;
    gap: 16px;
    flex-wrap: wrap;
    margin-bottom: 14px;
}
.gs__action[b-0lq2cw7xyw] {
    font-size: 14px;
    font-weight: 700;
    color: #e8c46c;
    transition: color .15s;
}
.gs__action:hover[b-0lq2cw7xyw] { color: #f1d488; }
.gs__mark[b-0lq2cw7xyw] {
    background: none;
    border: none;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 13px;
    font-weight: 600;
    color: #e8c46c;
    cursor: pointer;
    padding: 0;
    transition: color .15s;
}
.gs__mark.is-done[b-0lq2cw7xyw] { color: #8a8270; }
.gs__mark:hover[b-0lq2cw7xyw] { color: #f1d488; }

.gs__sources[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #6f6857;
    letter-spacing: .02em;
    line-height: 1.5;
    margin: 0;
    padding-top: 12px;
    border-top: 1px solid rgba(255,255,255,.05);
}

/* ── Payoff ───────────────────────────────────────────────── */
.gs__payoff[b-0lq2cw7xyw] {
    display: flex;
    gap: clamp(14px, 2.5vw, 22px);
    align-items: flex-start;
    margin-top: 8px;
}
.gs__payoff-crown[b-0lq2cw7xyw] {
    width: 42px;
    height: 42px;
    flex: none;
    border-radius: 99px;
    background: rgba(232,196,108,.12);
    border: 1px solid rgba(232,196,108,.4);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 18px;
    color: #e8c46c;
}
.gs__payoff-inner[b-0lq2cw7xyw] {
    flex: 1;
    min-width: 0;
    padding: clamp(20px, 3vw, 30px);
    border-radius: 12px;
    background: linear-gradient(180deg, rgba(232,196,108,.08), rgba(255,255,255,.02));
    border: 1px solid rgba(232,196,108,.28);
}
.gs__payoff-title[b-0lq2cw7xyw] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(28px, 4vw, 40px);
    margin: 0 0 8px;
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: 1;
}
.gs__payoff-sub[b-0lq2cw7xyw] {
    font-size: 14px;
    color: #b0a890;
    line-height: 1.6;
    margin: 0 0 22px;
    max-width: 560px;
}

.gs__q[b-0lq2cw7xyw] { margin-bottom: 18px; }
.gs__q-label[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    letter-spacing: .14em;
    margin-bottom: 10px;
}
.gs__pills[b-0lq2cw7xyw] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
}
.gs__pill[b-0lq2cw7xyw] {
    padding: 9px 16px;
    border-radius: 99px;
    border: 1px solid rgba(255,255,255,.12);
    background: rgba(255,255,255,.03);
    color: #b0a890;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    transition: .15s;
}
.gs__pill:hover[b-0lq2cw7xyw] { border-color: rgba(232,196,108,.5); color: #efe9da; }
.gs__pill.is-on[b-0lq2cw7xyw] {
    background: #e8c46c;
    color: #1a1407;
    border-color: #e8c46c;
}

.gs__payoff-hint[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #6f6857;
    letter-spacing: .04em;
    margin: 20px 0 0;
}

.gs__result[b-0lq2cw7xyw] {
    margin-top: 22px;
    padding: 22px;
    border-radius: 10px;
    background: rgba(232,196,108,.06);
    border: 1px solid rgba(232,196,108,.3);
}
.gs__result-eyebrow[b-0lq2cw7xyw] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .14em;
    margin-bottom: 8px;
}
.gs__result-name[b-0lq2cw7xyw] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(30px, 5vw, 44px);
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: .95;
    margin-bottom: 12px;
}
.gs__result-tip[b-0lq2cw7xyw] {
    font-size: 13.5px;
    color: #cbb98e;
    line-height: 1.55;
    margin: 0 0 10px;
}
.gs__result-note[b-0lq2cw7xyw] {
    font-size: 13px;
    color: #e0a55a;
    line-height: 1.55;
    background: rgba(224,140,60,.08);
    border: 1px solid rgba(224,140,60,.22);
    border-radius: 8px;
    padding: 10px 12px;
    margin: 0 0 16px;
}
/* "What to look for" — the shape, in the grower's own shopping terms (doc 36). Body face, not display:
   these are read as instructions, not chanted as a headline. */
.gs__result-list[b-0lq2cw7xyw] {
    list-style: none;
    margin: 0 0 14px;
    padding: 0;
    text-align: left;
}
.gs__result-list li[b-0lq2cw7xyw] {
    position: relative;
    font-size: 13.5px;
    color: #e6dcc4;
    line-height: 1.55;
    padding: 0 0 0 20px;
    margin-bottom: 7px;
}
.gs__result-list li[b-0lq2cw7xyw]::before {
    content: "▸";
    position: absolute;
    left: 2px;
    color: var(--hx-gold, #e8c46c);
}

/* The generic escape hatch — quiet, and only meaningful once they're in the picker. */
.gs__result-hint[b-0lq2cw7xyw] {
    font-size: 12.5px;
    color: #a99b7c;
    line-height: 1.5;
    margin: 10px 0 0;
}
.gs__result-hint strong[b-0lq2cw7xyw] { color: var(--hx-gold, #e8c46c); font-weight: 600; }

.gs__result-cta[b-0lq2cw7xyw] { margin-top: 4px; }
.gs__result-guide[b-0lq2cw7xyw] {
    display: inline-block;
    margin-top: 14px;
    font-family: 'Space Mono', monospace;
    font-size: 12.5px;
    color: #e8c46c;
    text-decoration: none;
    border-bottom: 1px dashed rgba(232,196,108,.5);
}
.gs__result-guide:hover[b-0lq2cw7xyw] { border-bottom-style: solid; }

/* Consumables, separated from the kit by a rule so it reads as a second errand with its own
   destination rather than more of the Blueprint checklist (operator, 2026-08-09). */
.gs__result-stock[b-0lq2cw7xyw] {
    margin-top: 18px;
    padding-top: 16px;
    border-top: 1px solid rgba(232,196,108,.18);
}
.gs__result-stock .gs__result-list[b-0lq2cw7xyw] { margin-bottom: 0; }

/* ── Mobile ───────────────────────────────────────────────── */
@media (max-width: 640px) {
    .gs__rail[b-0lq2cw7xyw] { display: none; }
    .gs__card[b-0lq2cw7xyw] { margin-bottom: 14px; }
    .gs__payoff-crown[b-0lq2cw7xyw] { display: none; }
}
/* /Components/Pages/Nutrients/NutrientsPage.razor.rz.scp.css */
.ns[b-fmj9z8l2u0] {
    background: #080807;
    min-height: 100vh;
    color: #efe9da;
}

/* Header */
.ns__header[b-fmj9z8l2u0] {
    position: sticky;
    top: 0;
    z-index: 40;
    background: rgba(8,8,7,.9);
    backdrop-filter: blur(12px);
    border-bottom: 1px solid rgba(232,196,108,.16);
}
.ns__header-inner[b-fmj9z8l2u0] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding-top: 14px;
    padding-bottom: 14px;
}
.ns__breadcrumb-label[b-fmj9z8l2u0] {
    font-size: 13px;
    color: #e8c46c;
}
.ns__link-gear[b-fmj9z8l2u0] {
    font-size: 13px;
    color: #b0a890;
    transition: color .15s;
}
.ns__link-gear:hover[b-fmj9z8l2u0] { color: #e8c46c; }

/* Title block */
.ns__title-block[b-fmj9z8l2u0] {
    padding: clamp(28px,4vw,44px) 0 0;
}
.ns__eyebrow[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #e8c46c;
    letter-spacing: .2em;
    margin: 0 0 8px;
}
.ns__headline[b-fmj9z8l2u0] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(38px,6vw,58px);
    margin: 0 0 8px;
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: .95;
}
.ns__sub[b-fmj9z8l2u0] {
    font-size: 15px;
    color: #9a927e;
    margin: 0;
    max-width: 560px;
}

/* Stats bar */
.ns__stats[b-fmj9z8l2u0] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px,1fr));
    gap: 1px;
    background: rgba(255,255,255,.07);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 10px;
    overflow: hidden;
    margin-top: 24px;
}
.ns__stat-cell[b-fmj9z8l2u0] {
    background: #0d0e0f;
    padding: 18px 20px;
}
.ns__stat-val[b-fmj9z8l2u0] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 30px;
    color: #f6efdd;
    line-height: .9;
}
.ns__stat-val--gold[b-fmj9z8l2u0] { color: #e8c46c; }
.ns__stat-key[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    letter-spacing: .08em;
    margin-top: 5px;
}

/* Featured partner */
.ns__featured[b-fmj9z8l2u0] {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    background: linear-gradient(120deg,#1c1607,#0f0c06);
    border: 1px solid rgba(232,196,108,.4);
    display: flex;
    gap: clamp(20px,3vw,36px);
    flex-wrap: wrap;
    align-items: center;
    padding: clamp(22px,3vw,32px);
    margin-top: clamp(20px,3vw,28px);
}
.ns__featured-badge[b-fmj9z8l2u0] {
    position: absolute;
    top: 14px;
    right: 16px;
    padding: 4px 10px;
    background: rgba(232,196,108,.16);
    color: #e8c46c;
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 9px;
    letter-spacing: .12em;
}
.ns__featured-thumb[b-fmj9z8l2u0] {
    width: clamp(100px,14vw,140px);
    flex: none;
    aspect-ratio: 1;
    border-radius: 10px;
    background: repeating-linear-gradient(48deg,#241d10,#241d10 12px,#191307 12px,#191307 24px);
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #6c6450;
}
.ns__featured-body[b-fmj9z8l2u0] { flex: 1; min-width: 220px; }
.ns__featured-label[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .16em;
    margin: 0 0 8px;
}
.ns__featured-title[b-fmj9z8l2u0] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(24px,4vw,38px);
    margin: 0 0 8px;
    color: #f6efdd;
    letter-spacing: .02em;
}
.ns__featured-desc[b-fmj9z8l2u0] {
    font-size: 14px;
    color: #b0a890;
    line-height: 1.55;
    margin: 0 0 16px;
    max-width: 440px;
}
.ns__featured-highlight[b-fmj9z8l2u0] { color: #e8c46c; font-weight: 700; }
.ns__featured-cta[b-fmj9z8l2u0] { font-size: 13px; }

/* Controls */
.ns__controls[b-fmj9z8l2u0] { padding-top: clamp(24px,3vw,32px); }

/* Search + "Item not found?" trigger on one row, matching the Gear page. */
.ns__search-row[b-fmj9z8l2u0] {
    display: flex;
    gap: 1rem;
    align-items: center;
    flex-wrap: wrap;
    justify-content: space-between;
    margin-bottom: 1rem;
}
.ns__search[b-fmj9z8l2u0] {
    flex: 0 1 340px;                  /* same compact width as the Gear search (operator, 2026-07-24) */
    max-width: 340px;
    min-width: 180px;
    box-sizing: border-box;
    margin-bottom: 0;
}

/* "Item not found?" toolbar trigger — opens the submit modal (gold outline, matches Gear). */
.ns__missing-btn[b-fmj9z8l2u0] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.7rem 1.1rem;
    border-radius: 8px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    white-space: nowrap;
    color: #e8c46c;
    background: rgba(232, 196, 108, 0.08);
    border: 1px solid rgba(232, 196, 108, 0.4);
    transition: background 0.15s, border-color 0.15s;
}
.ns__missing-btn:hover[b-fmj9z8l2u0] {
    background: rgba(232, 196, 108, 0.16);
    border-color: rgba(232, 196, 108, 0.7);
}
.ns__missing-btn-plus[b-fmj9z8l2u0] { font-size: 1.05rem; line-height: 1; }

/* Category filter — a compact dropdown (replaces the scrolling pill row), capped on desktop and
   full-width on mobile (see @media). */
.ns__cat-select[b-fmj9z8l2u0] {
    display: block;
    width: 100%;
    max-width: 300px;
    font-size: 0.9rem;
}

/* Gated-grid prompt — shown until the grower searches or picks a filter. */
.ns__prompt[b-fmj9z8l2u0] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: #cbc3b0;
    background: rgba(255,255,255,.02);
    border: 1px dashed rgba(255,255,255,.12);
    border-radius: 12px;
    padding: 2rem 1.25rem;
    text-align: center;
    line-height: 1.5;
    margin-top: 8px;
}
.ns__prompt-sub[b-fmj9z8l2u0] {
    display: block;
    margin-top: 0.4rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: #8a8270;
}

/* Body layout */
.ns__body[b-fmj9z8l2u0] {
    display: flex;
    gap: clamp(20px,3vw,32px);
    flex-wrap: wrap;
    align-items: flex-start;
    padding-top: clamp(20px,3vw,28px);
    padding-bottom: 80px;
}
.ns__grid-col[b-fmj9z8l2u0] { flex: 1; min-width: 300px; }

/* Card grid */
.ns__card-grid[b-fmj9z8l2u0] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px,1fr));
    gap: 16px;
}
.ns__empty[b-fmj9z8l2u0] {
    text-align: center;
    padding: 60px 20px;
    color: #6f6857;
    font-family: 'Space Mono', monospace;
    font-size: 13px;
}

.ns__card[b-fmj9z8l2u0] {
    border-radius: 10px;
    overflow: hidden;
    border: 1px solid rgba(255,255,255,.08);
    background: rgba(255,255,255,.02);
    transition: border-color .18s;
}
.ns__card.is-on-shelf[b-fmj9z8l2u0] {
    border-color: #e8c46c;
    background: rgba(232,196,108,.08);
}
.ns__card.is-sponsored[b-fmj9z8l2u0] {
    border-color: rgba(232,196,108,.4);
    background: rgba(232,196,108,.03);
}

.ns__card-thumb[b-fmj9z8l2u0] {
    position: relative;
    aspect-ratio: 16/10;
    background: repeating-linear-gradient(48deg,#1a1610,#1a1610 10px,#14100b 10px,#14100b 20px);
}
/* Placeholder glyph until a licensed product image exists (doc 23 §5a). */
.ns__card-glyph[b-fmj9z8l2u0] {
    position: absolute; inset: 0;
    display: flex; align-items: center; justify-content: center;
    font-size: 2.75rem; opacity: 0.45; pointer-events: none;
}
.ns__card-cat-pill[b-fmj9z8l2u0] {
    position: absolute;
    top: 10px;
    left: 10px;
    padding: 4px 10px;
    background: rgba(8,7,5,.72);
    border: 1px solid rgba(255,255,255,.12);
    color: #b0a890;
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 9px;
}
.ns__card-partner-badge[b-fmj9z8l2u0] {
    position: absolute;
    top: 10px;
    right: 10px;
    padding: 4px 9px;
    background: #e8c46c;
    color: #16120a;
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 8px;
    font-weight: 700;
    letter-spacing: .08em;
}

.ns__card-body[b-fmj9z8l2u0] { padding: 15px 16px 16px; }
.ns__card-top[b-fmj9z8l2u0] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 8px;
}
.ns__card-info[b-fmj9z8l2u0] { min-width: 0; }
.ns__card-name[b-fmj9z8l2u0] { font-weight: 700; font-size: 15px; color: #f6efdd; }
.ns__card-brand[b-fmj9z8l2u0] { font-size: 12px; color: #8a8270; margin-top: 2px; }
.ns__card-spec[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #9a927e;
    margin-top: 10px;
}
.ns__card-usage[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    margin-top: 8px;
}
.ns__usage-track[b-fmj9z8l2u0] {
    height: 3px;
    background: rgba(255,255,255,.08);
    border-radius: 99px;
    margin-top: 6px;
    overflow: hidden;
}
.ns__usage-fill[b-fmj9z8l2u0] {
    height: 100%;
    background: #e8c46c;
    border-radius: 99px;
    transition: width .3s ease;
}
.ns__add-btn[b-fmj9z8l2u0] {
    display: block;
    width: 100%;
    text-align: center;
    margin-top: 13px;
    padding: 10px;
    border-radius: 2px;
    font-size: 13px;
    font-weight: 700;
    cursor: pointer;
    border: 1px solid rgba(232,196,108,.4);
    background: transparent;
    color: #e8c46c;
    transition: background .15s, color .15s;
}
.ns__add-btn:hover[b-fmj9z8l2u0] { background: rgba(232,196,108,.12); }
.ns__add-btn.is-on-shelf[b-fmj9z8l2u0] { background: #e8c46c; color: #1a1407; border-color: #e8c46c; }
.ns__add-btn.is-on-shelf:hover[b-fmj9z8l2u0] { background: #f1d488; }

/* Submit section */
.ns__submit-title[b-fmj9z8l2u0] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 22px;
    color: #f6efdd;
    margin: 0 0 4px;
    letter-spacing: .02em;
}
.ns__submit-desc[b-fmj9z8l2u0] { font-size: 13px; color: #8a8270; margin: 0 0 16px; }
.ns__submit-form[b-fmj9z8l2u0] {
    display: flex;
    flex-direction: column;
    gap: 10px;
    max-width: 420px;
}
/* Role + Type pickers on the submission form — labeled rows sharing the same label style. */
.ns__submit-role[b-fmj9z8l2u0] { display: flex; align-items: center; gap: 0.6rem; }
.ns__submit-role-select[b-fmj9z8l2u0] { flex: 1 1 auto; }
.ns__submit-type[b-fmj9z8l2u0] { display: flex; align-items: center; gap: 0.5rem; flex-wrap: wrap; }
.ns__submit-type-label[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.06em;
    text-transform: uppercase; color: #8a8270; margin-right: 0.15rem;
}
.ns__submit-radio[b-fmj9z8l2u0] {
    display: inline-flex; align-items: center; gap: 0.4rem;
    padding: 0.35rem 0.75rem; border: 1px solid rgba(255,255,255,.12); border-radius: 8px;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: #b0a890; cursor: pointer;
    transition: border-color 0.12s, color 0.12s, background 0.12s;
}
.ns__submit-radio:hover[b-fmj9z8l2u0] { border-color: #ccc; }
.ns__submit-radio.is-active[b-fmj9z8l2u0] { border-color: #e8c46c; color: #f6efdd; background: rgba(232,196,108,.08); }
.ns__submit-radio input[b-fmj9z8l2u0] { accent-color: #e8c46c; margin: 0; cursor: pointer; }
.ns__submit-type-clear[b-fmj9z8l2u0] {
    background: none; border: 0; color: #8a8270; cursor: pointer;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.74rem; text-decoration: underline; padding: 0;
}
.ns__submit-type-clear:hover[b-fmj9z8l2u0] { color: #e0863c; }

.ns__submit-error[b-fmj9z8l2u0] { font-size: 13px; color: #e05c5c; margin: 0; }
.ns__submit-ok[b-fmj9z8l2u0] { font-size: 13px; color: #6bcf8c; margin: 0; }

/* Submit + Cancel side by side (Cancel = ghost/outline, closes the modal like the ×). */
.ns__submit-actions[b-fmj9z8l2u0] { display: flex; align-items: center; gap: 0.75rem; flex-wrap: wrap; margin-top: 4px; }

/* ── Submit-a-missing-product modal (mirrors the Gear page) ─── */
.ns__modal-backdrop[b-fmj9z8l2u0] {
    position: fixed;
    inset: 0;
    z-index: 1000;
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: clamp(1rem, 6vh, 5rem) 1rem;
    background: rgba(0, 0, 0, 0.7);
    backdrop-filter: blur(3px);
    overflow-y: auto;
    animation: ns-modal-fade-b-fmj9z8l2u0 0.15s ease-out;
}
.ns__modal[b-fmj9z8l2u0] {
    position: relative;
    width: 100%;
    max-width: 560px;
    padding: 2rem;
    background: #14110c;               /* solid so the blurred backdrop doesn't bleed through */
    border: 1px solid rgba(255,255,255,0.1);
    border-left: 3px solid #e8c46c;
    border-radius: 10px;
    box-shadow: 0 24px 60px rgba(0,0,0,0.55);
    animation: ns-modal-rise-b-fmj9z8l2u0 0.18s ease-out;
}
.ns__modal-close[b-fmj9z8l2u0] {
    position: absolute;
    top: 0.6rem;
    right: 0.75rem;
    width: 2rem;
    height: 2rem;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    line-height: 1;
    cursor: pointer;
    color: #8a8270;
    background: none;
    border: none;
    border-radius: 6px;
    transition: background 0.15s, color 0.15s;
}
.ns__modal-close:hover[b-fmj9z8l2u0] { background: rgba(255,255,255,0.08); color: #f6efdd; }

@keyframes ns-modal-fade-b-fmj9z8l2u0 { from { opacity: 0; } to { opacity: 1; } }
@keyframes ns-modal-rise-b-fmj9z8l2u0 { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }

/* Shelf sidebar */
.ns__shelf-sidebar[b-fmj9z8l2u0] {
    width: 300px;
    flex: 1 1 260px;
    max-width: 340px;
    position: sticky;
    top: 80px;
}
.ns__shelf-card[b-fmj9z8l2u0] {
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(232,196,108,.22);
    border-radius: 10px;
    padding: 20px;
}
.ns__shelf-label[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .12em;
    margin: 0 0 14px;
}
.ns__shelf-empty[b-fmj9z8l2u0] { font-size: 13px; color: #8a8270; line-height: 1.5; margin: 8px 0 0; }
.ns__shelf-list[b-fmj9z8l2u0] {
    display: flex;
    flex-direction: column;
    gap: 8px;
    /* Cap the shelf so a big lineup scrolls inside the card instead of stretching the
       page (operator, 2026-07-20; mirrors the Inventory "My Gear" list). */
    max-height: 17rem;
    overflow-y: auto;
    padding-right: 0.25rem;
}
.ns__shelf-list[b-fmj9z8l2u0]::-webkit-scrollbar { width: 6px; }
.ns__shelf-list[b-fmj9z8l2u0]::-webkit-scrollbar-thumb {
    background: rgba(212, 175, 55, 0.3);
    border-radius: 3px;
}
.ns__shelf-row[b-fmj9z8l2u0] {
    display: flex;
    align-items: center;
    gap: 12px;
    padding: 11px 12px;
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(255,255,255,.07);
    border-radius: 8px;
}
.ns__shelf-row-info[b-fmj9z8l2u0] { flex: 1; min-width: 0; }
.ns__shelf-row-name[b-fmj9z8l2u0] { font-size: 13px; font-weight: 600; color: #efe9da; }
.ns__shelf-row-cat[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    margin-top: 1px;
}
.ns__shelf-remove[b-fmj9z8l2u0] {
    width: 24px;
    height: 24px;
    flex: none;
    display: flex;
    align-items: center;
    justify-content: center;
    border: 1px solid rgba(255,255,255,.12);
    border-radius: 99px;
    background: transparent;
    color: #8a8270;
    cursor: pointer;
    font-size: 16px;
    line-height: 1;
    transition: border-color .15s, color .15s;
}
.ns__shelf-remove:hover[b-fmj9z8l2u0] { border-color: #e8c46c; color: #e8c46c; }
.ns__shelf-hint[b-fmj9z8l2u0] {
    font-size: 12px;
    color: #6f6857;
    line-height: 1.5;
    margin: 14px 0 0;
    padding-top: 14px;
    border-top: 1px solid rgba(255,255,255,.06);
}

/* Reciprocal cross-link card to the Gear page (mirrors Inventory's "Also manage: Nutrient Shelf"). */
.ns__gear-link-card[b-fmj9z8l2u0] {
    margin-top: 16px;
    background: rgba(255,255,255,0.02);
    border: 1px solid rgba(255,255,255,0.08);
    border-radius: 10px;
    padding: 1.25rem;
}
.ns__gear-link-eyebrow[b-fmj9z8l2u0] {
    font-family: 'Space Mono', monospace; font-size: 0.62rem;
    color: #8a8270; letter-spacing: 0.12em; margin-bottom: 0.3rem;
}
.ns__gear-link-title[b-fmj9z8l2u0] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1.2rem; letter-spacing: 0.06em;
    /* Cross-link card title gold, app-wide header treatment (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c); margin-bottom: 0.4rem;
}
.ns__gear-link-desc[b-fmj9z8l2u0] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.78rem;
    color: #8a8270; line-height: 1.4; margin: 0 0 0.875rem;
}
.ns__gear-link-btn[b-fmj9z8l2u0] { display: block; text-align: center; font-size: 0.8rem; }

/* Responsive */
@media (max-width: 900px) {
    /* align-items is CROSS-axis: the base `flex-start` aligns tops in a row, but once stacked it means
       "don't stretch horizontally" and the flex:1 main column collapses to its content width. */
    .ns__body[b-fmj9z8l2u0] { flex-direction: column; align-items: stretch; }
    .ns__shelf-sidebar[b-fmj9z8l2u0] {
        width: 100%;
        max-width: 100%;
        position: static;
    }
    .ns__search[b-fmj9z8l2u0] { flex-basis: 100%; max-width: none; }
    .ns__cat-select[b-fmj9z8l2u0] { max-width: none; }
}
/* /Components/Pages/Onboarding/ClaimIdentity.razor.rz.scp.css */
.ci[b-7og02yl33e] {
    min-height: calc(100vh - var(--hx-nav-h, 0px));
    display: flex;
    align-items: flex-start;
    justify-content: center;
    padding: 3rem 1.25rem 4rem;
}
.ci__inner[b-7og02yl33e] { width: min(560px, 100%); }
.ci__loading[b-7og02yl33e] { color: var(--hx-muted); font-family: 'Hanken Grotesk', sans-serif; }

/* Type scale, operator 2026-09-04: the eyebrow is BRANDING and was reading as fine print, so it goes
   up; the headline gives back two steps because it was eating the fold; everything else on the page
   goes up one step (~1.1x). Net effect on the headline is one step down, not two. */
.ci__head[b-7og02yl33e] { margin-bottom: 1.6rem; }
.ci__eyebrow[b-7og02yl33e] {
    font-family: 'Space Mono', monospace;
    font-size: 1rem;
    letter-spacing: 0.16em;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.5rem;
}
.ci__headline[b-7og02yl33e] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2rem, 5.5vw, 2.7rem);
    letter-spacing: 0.02em;
    line-height: 1;
    color: var(--hx-fg, #fff);
    /* The sub-headline used to sit under this; with it gone, .ci__head's own margin is the whole gap. */
    margin: 0;
}

.ci__card[b-7og02yl33e] {
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, #2a2620);
    border-radius: 10px;
    padding: 1.5rem 1.5rem 1.6rem;
    display: flex;
    flex-direction: column;
    gap: 1.2rem;
}

.ci__field[b-7og02yl33e] { display: flex; flex-direction: column; gap: 0.35rem; }
.ci__field-label[b-7og02yl33e] {
    font-family: 'Space Mono', monospace;
    font-size: 0.73rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-muted);
}
.ci__input[b-7og02yl33e] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 1.08rem;
    color: var(--hx-fg, #fff);
    background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #222);
    border-radius: 8px;
    padding: 0.65rem 0.8rem;
    transition: border-color 0.12s ease;
    width: 100%;
}
.ci__input:focus[b-7og02yl33e] { outline: none; border-color: var(--hx-gold, #e8c46c); }
.ci__input--error[b-7og02yl33e] { border-color: #d1544f; }

.ci__handle-wrap[b-7og02yl33e] { position: relative; display: flex; align-items: center; }
.ci__handle-at[b-7og02yl33e] {
    position: absolute;
    left: 0.8rem;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 1.08rem;
    color: var(--hx-muted);
    pointer-events: none;
}
/* Tracks the "@" glyph's width - it grew with .ci__handle-at, so the input's inset grows with it. */
.ci__input--handle[b-7og02yl33e] { padding-left: 1.85rem; }

.ci__field-hint[b-7og02yl33e] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    line-height: 1.4;
    color: var(--hx-muted);
}
.ci__field-hint strong[b-7og02yl33e] { color: #e8c46c; font-weight: 600; }
.ci__url[b-7og02yl33e] {
    font-family: 'Space Mono', monospace;
    font-size: 0.81rem;
    color: #d8d2c4;
}
.ci__field-error[b-7og02yl33e] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    color: #e08a86;
}

.ci__avatar[b-7og02yl33e] { padding-top: 0.2rem; }

.ci__actions[b-7og02yl33e] { margin-top: 1.5rem; display: flex; justify-content: flex-end; }
/* One step over the global .hx-btn (0.875rem), scoped so no other button on the site moves. Its
   padding is in em, so the box grows with the label rather than needing its own bump. */
.ci__continue[b-7og02yl33e] { min-width: 10rem; font-size: 0.96rem; }

@media (max-width: 640px) {
    .ci[b-7og02yl33e] { padding-top: 2rem; }
    .ci__actions[b-7og02yl33e] { justify-content: stretch; }
    .ci__continue[b-7og02yl33e] { width: 100%; }
}
/* /Components/Pages/Onboarding/JudgeInvite.razor.rz.scp.css */
.ji[b-shuhcih51d] { padding: 3rem 1rem 4rem; display: flex; justify-content: center; }
.ji__loading[b-shuhcih51d] { font-family: 'Space Mono', monospace; color: var(--hx-muted); }
.ji__card[b-shuhcih51d] {
    width: 100%; max-width: 26rem;
    box-sizing: border-box;
    text-align: center;
    padding: 2rem 1.5rem;
    border-radius: 16px;
    border: 1px solid var(--hx-border, #2a2820);
    background: var(--hx-surface-1, #14110c);
    display: flex; flex-direction: column; align-items: center; gap: 0.75rem;
}
.ji__eyebrow[b-shuhcih51d] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.2em; color: var(--hx-gold, #e8c46c); margin: 0; }
.ji__title[b-shuhcih51d] { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; letter-spacing: 0.03em; line-height: 1.05; margin: 0; color: var(--hx-text-heading, #f6efdd); }
.ji__body[b-shuhcih51d] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-caption-2, #b8b09a); margin: 0; }
.ji__btn[b-shuhcih51d] { width: 100%; min-height: 44px; margin-top: 0.5rem; display: inline-flex; align-items: center; justify-content: center; }
/* /Components/Pages/Onboarding/JudgeWelcomePage.razor.rz.scp.css */
.jwp[b-yzpjktrcu0] { padding: 3rem 1rem 4rem; display: flex; justify-content: center; }
/* /Components/Pages/Pass/GrowersPass.razor.rz.scp.css */
/* ── Grower's Pass (stub — doc 19). gp-pass__ namespace ── */
.gp-pass__head[b-prts230btn] { padding-block: 2.5rem 1.25rem; }   /* not `padding` shorthand — preserve .hx-container padding-inline */
.gp-pass__eyebrow[b-prts230btn] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}
.gp-pass__headline[b-prts230btn] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2.4rem;
    letter-spacing: 0.02em;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0.25rem 0 0;
}
.gp-pass__sub[b-prts230btn] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.92rem;
    color: var(--hx-text-muted, #b0a890);
    margin: 0.4rem 0 1.25rem;
    max-width: 52ch;
}

.gp-pass__notice[b-prts230btn] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    background: rgba(232, 196, 108, 0.06);
    border: 1px dashed rgba(232, 196, 108, 0.35);
    border-radius: 8px;
    padding: 0.75rem 1rem;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.85rem;
    color: var(--hx-text-2, #d8cdb6);
    line-height: 1.5;
    max-width: 60ch;
}
.gp-pass__notice-tag[b-prts230btn] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.08em;
    color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.4);
    border-radius: 999px;
    padding: 0.15rem 0.5rem;
    white-space: nowrap;
}

.gp-pass__body[b-prts230btn] { padding-bottom: 4rem; }

.gp-pass__tiers[b-prts230btn] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: 1rem;
    margin-bottom: 2rem;
}

.gp-pass__tier[b-prts230btn] {
    display: flex;
    flex-direction: column;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    border-radius: 10px;
    padding: 1.25rem;
    position: relative;
}
.gp-pass__tier.is-current[b-prts230btn] { border-color: var(--hx-gold, #e8c46c); }
/* Paid tier accent (doc 19 §5 — two-tier Free | Premier; gates buy capability, never prestige) */
.gp-pass__tier--premier[b-prts230btn] { box-shadow: inset 0 2px 0 rgba(232, 196, 108, 0.7); }

.gp-pass__tier-head[b-prts230btn] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 0.5rem;
}
.gp-pass__tier-name[b-prts230btn] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.5rem;
    letter-spacing: 0.03em;
    color: var(--hx-text-heading, #f6efdd);
}
.gp-pass__tier-price[b-prts230btn] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-text-muted, #b0a890);
}
.gp-pass__tier-badge[b-prts230btn] {
    align-self: flex-start;
    margin-top: 0.35rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    letter-spacing: 0.06em;
    color: #17130a;
    background: var(--hx-gold, #e8c46c);
    border-radius: 999px;
    padding: 0.12rem 0.5rem;
}

.gp-pass__feats[b-prts230btn] {
    list-style: none;
    margin: 1rem 0 1.25rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    flex: 1;
}
.gp-pass__feats li[b-prts230btn] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.85rem;
    color: var(--hx-text-2, #d8cdb6);
    line-height: 1.4;
    padding-left: 1.2rem;
    position: relative;
}
.gp-pass__feats li[b-prts230btn]::before {
    content: "✓";
    position: absolute;
    left: 0;
    color: var(--hx-gold, #e8c46c);
    font-size: 0.8rem;
}

.gp-pass__cta[b-prts230btn] { width: 100%; opacity: 0.7; cursor: not-allowed; }

.gp-pass__firewall[b-prts230btn] {
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    border-radius: 10px;
    padding: 1.25rem 1.4rem;
    max-width: 60ch;
}
.gp-pass__firewall-title[b-prts230btn] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.03em;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0 0 0.5rem;
}
.gp-pass__firewall p[b-prts230btn] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.88rem;
    line-height: 1.55;
    color: var(--hx-text-muted, #b0a890);
    margin: 0;
}
/* /Components/Pages/Plans/PlansPage.razor.rz.scp.css */
.gp[b-rxnofijaob] {
    background: #080807;
    min-height: 100vh;
    color: #efe9da;
}

/* Hero */
.gp__hero[b-rxnofijaob] {
    padding: clamp(48px,7vw,80px) 0 clamp(28px,4vw,44px);
    background: radial-gradient(110% 80% at 50% -10%, rgba(232,196,108,.14), rgba(8,8,7,0) 60%);
}
.gp__eyebrow[b-rxnofijaob] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #e8c46c;
    letter-spacing: .22em;
    margin: 0 0 12px;
}
.gp__headline[b-rxnofijaob] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(44px,8vw,80px);
    margin: 0 0 12px;
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: .9;
}
.gp__sub[b-rxnofijaob] {
    font-size: 15px;
    color: #9a927e;
    max-width: 580px;
    margin: 0;
    line-height: 1.6;
}
.gp__hero-ctas[b-rxnofijaob] {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 22px;
}
.gp__hero-cta[b-rxnofijaob] { display: inline-block; }

.gp__recipe-block[b-rxnofijaob] { margin-top: 22px; }
.gp__recipe-block .gp__line-title[b-rxnofijaob] { color: #e8c46c; }

/* Your Blueprints */
.gp__section-title[b-rxnofijaob] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(26px, 4vw, 34px);
    /* Section titles gold, app-wide header treatment (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c);
    letter-spacing: .02em;
    margin: 8px 0 18px;
}
.gp__mine[b-rxnofijaob] { margin-bottom: 40px; }

/* Owner actions on an owned Blueprint's detail view */
.gp__owner-actions[b-rxnofijaob] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 12px;
    margin-bottom: 24px;
}
.gp__del-confirm[b-rxnofijaob] {
    display: inline-flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 10px;
    font-size: 13px;
    color: #b0a890;
}
.gp__del-yes[b-rxnofijaob] {
    border-color: rgba(210, 110, 100, .55) !important;
    color: #e5847b !important;
}
.gp__card--mine[b-rxnofijaob] {
    border-color: rgba(232, 196, 108, .35);
    background: rgba(232, 196, 108, .04);
}
.gp__card--mine .gp__card-category[b-rxnofijaob] { color: #e8c46c; }

/* Body */
.gp__body[b-rxnofijaob] { padding-bottom: 80px; }
.gp__loading[b-rxnofijaob] {
    font-family: 'Space Mono', monospace;
    font-size: 13px;
    color: #8a8270;
    /* padding-block only — preserve .hx-container's padding-inline. */
    padding-block: 60px;
}

/* Back button */
.gp__back[b-rxnofijaob] {
    background: none;
    border: none;
    color: #b0a890;
    font-size: 13px;
    font-family: 'Hanken Grotesk', sans-serif;
    cursor: pointer;
    padding: 0;
    margin-bottom: 28px;
    transition: color .15s;
}
.gp__back:hover[b-rxnofijaob] { color: #e8c46c; }

/* Plan grid */
.gp__grid[b-rxnofijaob] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 20px;
    padding-top: 16px;
}

/* Empty state — reachable since the four system starter kits were retired (doc 36). Explains what a
   Blueprint IS before asking for one, and offers both routes: build it, or be walked through it. */
.gp__empty[b-rxnofijaob] {
    text-align: center;
    max-width: 560px;
    margin: 28px auto 8px;
    padding: 32px 24px;
    background: rgba(255, 255, 255, .02);
    border: 1px solid rgba(255, 255, 255, .07);
    border-radius: 14px;
}
.gp__empty-glyph[b-rxnofijaob] { font-size: 34px; line-height: 1; margin-bottom: 12px; }
.gp__empty-title[b-rxnofijaob] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(26px, 4vw, 34px);
    color: var(--hx-gold, #e8c46c);
    letter-spacing: .02em;
    margin: 0 0 10px;
}
.gp__empty-sub[b-rxnofijaob] {
    font-size: 14px;
    color: #cbb98e;
    line-height: 1.6;
    margin: 0 auto 20px;
}
.gp__empty-ctas[b-rxnofijaob] { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.gp__empty-link[b-rxnofijaob] { font-size: 13px; color: #a99b7c; text-decoration: none; }
.gp__empty-link:hover[b-rxnofijaob] { color: var(--hx-gold, #e8c46c); }

.gp__card[b-rxnofijaob] {
    text-align: left;
    border-radius: 14px;
    padding: 28px 24px;
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(255,255,255,.1);
    color: inherit;
    cursor: pointer;
    transition: border-color .18s, transform .18s;
    display: flex;
    flex-direction: column;
    gap: 0;
    font-family: 'Hanken Grotesk', sans-serif;
}
.gp__card:hover[b-rxnofijaob] {
    border-color: rgba(232,196,108,.5);
    transform: translateY(-3px);
}

.gp__card-top[b-rxnofijaob] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 14px;
}
.gp__card-category[b-rxnofijaob] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .14em;
}
.gp__card-diff[b-rxnofijaob] {
    padding: 4px 10px;
    border-radius: 99px;
    font-family: 'Space Mono', monospace;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: .06em;
    background: rgba(255,255,255,.06);
    color: #9a927e;
}
.gp__card-diff.is-beginner[b-rxnofijaob] { background: rgba(108,207,140,.14); color: #6bcf8c; }
.gp__card-diff.is-intermediate[b-rxnofijaob] { background: rgba(232,196,108,.14); color: #e8c46c; }
.gp__card-diff.is-advanced[b-rxnofijaob] { background: rgba(224,92,92,.14); color: #e05c5c; }

.gp__card-name[b-rxnofijaob] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(30px,4vw,40px);
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: .92;
    margin: 0 0 12px;
}
.gp__card-desc[b-rxnofijaob] {
    font-size: 13px;
    color: #b0a890;
    line-height: 1.55;
    margin: 0 0 16px;
    flex: 1;
}
.gp__card-chips[b-rxnofijaob] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-bottom: 14px;
}
.gp__card-chip[b-rxnofijaob] {
    padding: 4px 10px;
    border-radius: 99px;
    background: rgba(255,255,255,.05);
    color: #9a927e;
    font-family: 'Space Mono', monospace;
    font-size: 9px;
    letter-spacing: .06em;
}
.gp__card-counts[b-rxnofijaob] {
    display: flex;
    gap: 14px;
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #8a8270;
    margin-bottom: 18px;
}
.gp__card-cta[b-rxnofijaob] {
    font-size: 14px;
    font-weight: 700;
    color: #e8c46c;
}

/* Detail view */
.gp__detail[b-rxnofijaob] {
    max-width: 780px;
}
.gp__detail-header[b-rxnofijaob] {
    margin-bottom: 32px;
}
.gp__detail-title[b-rxnofijaob] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(36px,6vw,58px);
    margin: 0 0 10px;
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: .9;
}
.gp__detail-desc[b-rxnofijaob] {
    font-size: 15px;
    color: #b0a890;
    line-height: 1.6;
    margin: 0 0 20px;
    max-width: 580px;
}
.gp__detail-meta[b-rxnofijaob] {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.gp__meta-chip[b-rxnofijaob] {
    padding: 6px 14px;
    border-radius: 99px;
    background: rgba(255,255,255,.04);
    border: 1px solid rgba(255,255,255,.08);
    color: #b0a890;
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    letter-spacing: .06em;
}

/* Detail columns */
.gp__detail-cols[b-rxnofijaob] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 28px;
    margin-bottom: 32px;
}
@media (max-width: 640px) {
    .gp__detail-cols[b-rxnofijaob] { grid-template-columns: 1fr; }
}

.gp__line-section[b-rxnofijaob] {
    background: rgba(255,255,255,.02);
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 10px;
    padding: 20px;
}
.gp__line-title[b-rxnofijaob] {
    font-family: 'Space Mono', monospace;
    font-size: 10px;
    color: #e8c46c;
    letter-spacing: .12em;
    margin: 0 0 16px;
}
.gp__line-list[b-rxnofijaob] { display: flex; flex-direction: column; gap: 10px; }
.gp__line-row[b-rxnofijaob] {
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.gp__line-qty[b-rxnofijaob] {
    font-family: 'Space Mono', monospace;
    font-size: 11px;
    color: #e8c46c;
    flex: none;
    min-width: 22px;
    margin-top: 2px;
}
.gp__line-glyph[b-rxnofijaob] { flex: none; font-size: 16px; line-height: 1.2; }
.gp__line-info[b-rxnofijaob] { flex: 1; min-width: 0; }
.gp__line-name[b-rxnofijaob] { font-size: 13px; font-weight: 600; color: #efe9da; display: block; }
.gp__line-brand[b-rxnofijaob] { font-size: 11px; color: #8a8270; margin-top: 1px; display: block; }
/* The stats register (Space Mono, muted) — mirrors .inv__card-spec on the Gear page so the same string
   reads the same in both places. */
.gp__line-spec[b-rxnofijaob]  { font-family: 'Space Mono', monospace; font-size: 11px; color: #8a8270; margin-top: 3px; display: block; line-height: 1.4; }
.gp__line-opt[b-rxnofijaob] {
    font-family: 'Space Mono', monospace;
    font-size: 9px;
    color: #6f6857;
    padding: 2px 7px;
    border: 1px solid rgba(255,255,255,.08);
    border-radius: 99px;
    flex: none;
    margin-top: 2px;
}

/* Apply CTA */
.gp__apply-btn[b-rxnofijaob] { margin-bottom: 10px; }
.gp__apply-hint[b-rxnofijaob] { font-size: 12px; color: #6f6857; margin: 0; }
.gp__apply-ok[b-rxnofijaob] {
    font-size: 14px;
    color: #6bcf8c;
    background: rgba(108,207,140,.08);
    border: 1px solid rgba(108,207,140,.2);
    border-radius: 8px;
    padding: 16px 18px;
    margin-bottom: 12px;
    line-height: 1.55;
}
.gp__apply-link[b-rxnofijaob] { color: #e8c46c; }
.gp__apply-error[b-rxnofijaob] { font-size: 13px; color: #e05c5c; margin: 0 0 12px; }
/* /Components/Pages/Profile/Community.razor.rz.scp.css */
/* ── Community — merged Watching + Explore (doc 14). cm__ = shell; fav__ = follows; xp__ = discover ── */

.cm__head[b-h7x26tgtrc] { padding-block: 2.5rem 1.25rem; }   /* not `padding` shorthand — preserve .hx-container padding-inline */
.cm__eyebrow[b-h7x26tgtrc] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}
.cm__headline[b-h7x26tgtrc] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2.4rem;
    letter-spacing: 0.02em;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0.25rem 0 0;
}
.cm__sub[b-h7x26tgtrc] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.92rem;
    color: var(--hx-text-muted, #b0a890);
    margin: 0.4rem 0 1.1rem;
}

/* Segmented toggle: Your Growers | Discover */
.cm__toggle[b-h7x26tgtrc] {
    display: inline-flex;
    gap: 0.3rem;
    padding: 0.25rem;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    border-radius: 999px;
}
.cm__toggle-btn[b-h7x26tgtrc] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    letter-spacing: 0.03em;
    padding: 0.4rem 0.95rem;
    border: none;
    border-radius: 999px;
    background: transparent;
    color: var(--hx-text-muted, #b0a890);
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.cm__toggle-btn:hover[b-h7x26tgtrc] { color: var(--hx-text-heading, #f6efdd); }
.cm__toggle-btn.is-on[b-h7x26tgtrc] {
    background: var(--hx-gold, #e8c46c);
    color: #17130a;
}
.cm__toggle-count[b-h7x26tgtrc] {
    font-size: 0.72rem;
    opacity: 0.85;
}
.cm__toggle-btn.is-on .cm__toggle-count[b-h7x26tgtrc] { opacity: 1; }

.cm__body[b-h7x26tgtrc] { padding-bottom: 4rem; }
.cm__search[b-h7x26tgtrc] { margin-bottom: 1.75rem; }

/* ── Your Growers (follows) ───────────────────────────── */
.fav__loading[b-h7x26tgtrc] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-muted); }

.fav__empty[b-h7x26tgtrc] { text-align: center; padding: 3rem 1rem; max-width: 30rem; margin: 0 auto; }
.fav__empty-glyph[b-h7x26tgtrc] { font-size: 2.5rem; opacity: 0.7; }
.fav__empty-title[b-h7x26tgtrc] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.5rem;
    color: var(--hx-fg, #fff);
    margin: 0.75rem 0 0.5rem;
}
.fav__empty-sub[b-h7x26tgtrc] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    color: var(--hx-muted);
    line-height: 1.5;
    margin: 0 0 1.5rem;
}

.fav__grid[b-h7x26tgtrc] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
    gap: 1rem;
}
.fav__card[b-h7x26tgtrc] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.35rem;
    padding: 1.5rem 1rem;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, transform 0.1s ease;
}
.fav__card:hover[b-h7x26tgtrc] { border-color: rgba(232, 196, 108, 0.5); transform: translateY(-2px); }
.fav__card[b-h7x26tgtrc]  .ga { margin-bottom: 0.3rem; }
.fav__name[b-h7x26tgtrc] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; font-size: 0.98rem; color: var(--hx-fg, #fff); }
.fav__handle[b-h7x26tgtrc] { font-family: 'Space Mono', monospace; font-size: 0.74rem; color: var(--hx-gold, #e8c46c); }
.fav__runs[b-h7x26tgtrc] { font-family: 'Space Mono', monospace; font-size: 0.7rem; color: var(--hx-muted); margin-top: 0.15rem; }

/* ── Discover (search + floor) ────────────────────────── */
.xp__search[b-h7x26tgtrc] {
    display: flex; align-items: center; gap: 0.5rem;
    max-width: 30rem;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border-mid, rgba(255,255,255,.09));
    border-radius: 8px;
    padding: 0.15rem 0.75rem;
}
.xp__search-icon[b-h7x26tgtrc] { opacity: 0.7; }
.xp__search-input[b-h7x26tgtrc] { border: none; background: transparent; flex: 1; }
.xp__search-input:focus[b-h7x26tgtrc] { outline: none; box-shadow: none; }

.xp__section[b-h7x26tgtrc] { margin-bottom: 2.5rem; }
.xp__section-title[b-h7x26tgtrc] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.08em;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0 0 1rem;
}
.xp__count[b-h7x26tgtrc] { color: var(--hx-text-muted, #b0a890); }
.xp__hint[b-h7x26tgtrc] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #b0a890); font-size: 0.9rem; }

/* The Discover search narrows the floor itself (operator, 2026-08-29) — there is no separate
   GROWERS result list any more, so its card styles went with it. */

/* Header row: identity link + Follow button as siblings. The button must NOT be inside the anchor. */
/* Follow is a full-width BAR between the identity and the teaser, not an inline button beside the
   name (operator, 2026-08-29) — at card width an inline button truncates the name and handle. Flush
   to the card edges (no radius) so it reads as a band, and it doubles as the divider the header used
   to draw. */
.xp__floor-follow[b-h7x26tgtrc] {
    display: block; width: 100%;
    padding: 0.4rem 1rem; border: none; border-radius: 0;
    background: var(--hx-gold, #e8c46c); color: var(--hx-gold-on, #1a1610);
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; font-weight: 700;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.xp__floor-follow:hover:not(:disabled)[b-h7x26tgtrc] { background: var(--hx-gold-hover, #f0d189); }
.xp__floor-follow:disabled[b-h7x26tgtrc] { opacity: 0.4; cursor: not-allowed; }
/* Already following: recede to a quiet confirmation so the gold CTA never competes with itself
   across a grid of cards the viewer has already acted on. */
.xp__floor-follow.is-following[b-h7x26tgtrc] {
    background: var(--hx-surface-2, #16120d); color: var(--hx-text-2, #d8cdb6);
    box-shadow: inset 0 -1px 0 var(--hx-border, rgba(255,255,255,.06));
}
.xp__floor-follow.is-following:hover:not(:disabled)[b-h7x26tgtrc] { background: var(--hx-surface-1, #0f0d0a); color: var(--hx-text-heading, #f6efdd); }

/* A button that reads as a link — used inside the no-match copy, where the action is a sentence,
   not a control. Keeps keyboard focus and semantics correct without looking like a button. */
.xp__linkbtn[b-h7x26tgtrc] {
    background: none; border: none; padding: 0; cursor: pointer;
    font: inherit; color: var(--hx-gold, #e8c46c); text-decoration: underline;
}
.xp__linkbtn:hover[b-h7x26tgtrc] { color: var(--hx-text-heading, #f6efdd); }

.xp__floor-head[b-h7x26tgtrc] { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; flex-wrap: wrap; }
.xp__sorts[b-h7x26tgtrc] { display: flex; gap: 0.4rem; flex-wrap: wrap; }
.xp__sort[b-h7x26tgtrc] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem;
    padding: 0.3rem 0.6rem; border-radius: 99px;
    background: var(--hx-surface-1, #0f0d0a); border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    color: var(--hx-text-2, #d8cdb6); cursor: pointer;
}
.xp__sort:hover:not(:disabled)[b-h7x26tgtrc] { border-color: var(--hx-border-gold-strong, rgba(232,196,108,.6)); }
.xp__sort.is-on[b-h7x26tgtrc] { border-color: var(--hx-gold, #e8c46c); color: var(--hx-gold, #e8c46c); background: rgba(232,196,108,.08); }

/* ── The floor: one card per GROWER (operator, 2026-08-29) ────────────────
   Two independent link targets share the card — the identity header goes to
   the profile, the teaser goes to the run — so each gets its own hover tell.
   The card itself only reacts at the border; it never lifts as a whole, which
   would imply a single destination. */
.xp__floor-grid[b-h7x26tgtrc] { display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 1rem; }
.xp__floor-card[b-h7x26tgtrc] {
    display: block; padding: 0; overflow: hidden;
    background: var(--hx-surface-1, #0f0d0a); border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    border-radius: 10px; color: inherit;
    transition: border-color 0.15s ease;
}
.xp__floor-card:hover[b-h7x26tgtrc] { border-color: var(--hx-border-gold-strong, rgba(232,196,108,.6)); }

.xp__floor-id[b-h7x26tgtrc] {
    /* The Follow bar below draws the separation now, so no border here. */
    display: flex; align-items: center; gap: 0.8rem;
    padding: 0.9rem 1rem;
    min-width: 0;
    text-decoration: none; color: inherit;
}
.xp__floor-id-text[b-h7x26tgtrc] { min-width: 0; }
.xp__floor-name[b-h7x26tgtrc] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.35rem; line-height: 1.05; letter-spacing: 0.04em;
    color: var(--hx-text-heading, #f6efdd);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    transition: color 0.15s ease;
}
.xp__floor-id:hover .xp__floor-name[b-h7x26tgtrc] { color: var(--hx-gold, #e8c46c); }
.xp__floor-handle[b-h7x26tgtrc] {
    font-family: 'Space Mono', monospace; font-size: 0.74rem;
    color: var(--hx-gold, #e8c46c);
    overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
}
.xp__floor-stats[b-h7x26tgtrc] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.76rem;
    color: var(--hx-text-muted, #b0a890); margin-top: 0.35rem;
}
.xp__floor-stats strong[b-h7x26tgtrc] { color: var(--hx-text-heading, #f6efdd); font-weight: 700; }
.xp__floor-stat-gap[b-h7x26tgtrc] { display: inline-block; width: 0.9rem; }

.xp__run-teaser[b-h7x26tgtrc] { display: block; text-decoration: none; color: inherit; }
.xp__run-cover[b-h7x26tgtrc] { position: relative; }
.xp__run-cover-img[b-h7x26tgtrc] {
    width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block;
    transition: opacity 0.15s ease;
}
.xp__run-teaser:hover .xp__run-cover-img[b-h7x26tgtrc] { opacity: 0.82; }
.xp__run-stage-pill[b-h7x26tgtrc] {
    position: absolute; bottom: 8px; right: 8px;
    background: rgba(0,0,0,0.66); color: #f0ead9;
    font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.03em;
    padding: 0.18rem 0.44rem; border-radius: var(--hx-r-pill, 999px);
}
.xp__run-body[b-h7x26tgtrc] { padding: 0.9rem 1rem 1.1rem; }
.xp__run-eyebrow[b-h7x26tgtrc] {
    font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.12em;
    color: var(--hx-text-muted, #b0a890); margin-bottom: 0.3rem;
}
.xp__run-name[b-h7x26tgtrc] {
    font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; font-size: 1.05rem;
    color: var(--hx-text-heading, #f6efdd); transition: color 0.15s ease;
}
.xp__run-teaser:hover .xp__run-name[b-h7x26tgtrc] { color: var(--hx-gold, #e8c46c); }
.xp__run-theme[b-h7x26tgtrc] { font-family: 'Hanken Grotesk', sans-serif; font-style: italic; font-size: 0.82rem; color: var(--hx-text-3, #cbb98e); margin-top: 0.2rem; }
.xp__run-meta[b-h7x26tgtrc] { font-family: 'Space Mono', monospace; font-size: 0.7rem; color: var(--hx-text-muted, #b0a890); margin-top: 0.55rem; }

.xp__empty[b-h7x26tgtrc] { text-align: center; padding: 2.5rem 1rem; max-width: 30rem; margin: 0 auto; }
.xp__empty-glyph[b-h7x26tgtrc] { font-size: 2.2rem; opacity: 0.7; }
.xp__empty-sub[b-h7x26tgtrc] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #b0a890); font-size: 0.9rem; line-height: 1.5; margin-top: 0.5rem; }
/* /Components/Pages/Profile/GrowerProfile.razor.rz.scp.css */
.gp__loading[b-zhpjwbxmg8], .gp__missing[b-zhpjwbxmg8] {
    padding-block: 4rem;   /* not `padding` shorthand — would clobber .hx-container's padding-inline */
    text-align: center;
}
.gp__loading-text[b-zhpjwbxmg8], .gp__missing-sub[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
    margin: 0 0 1.5rem;
}

/* ── Header ─────────────────────────────────────────── */
.gp__header[b-zhpjwbxmg8] {
    background: var(--hx-surface-1, #111);
    border-bottom: 1px solid var(--hx-border, #222);
    padding: 2.5rem 0;
}
.gp__header-inner[b-zhpjwbxmg8] {
    display: flex;
    align-items: flex-start;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.gp__avatar[b-zhpjwbxmg8] {
    flex: 0 0 auto;
    /* subtle ring so a dark identity hue still separates from the page background */
    border-radius: 50%;
    box-shadow: 0 0 0 2px rgba(255, 255, 255, 0.08);
}

.gp__id[b-zhpjwbxmg8] { flex: 1 1 260px; min-width: 0; }
.gp__name[b-zhpjwbxmg8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2.25rem;
    letter-spacing: 0.02em;
    color: var(--hx-fg, #fff);
    margin: 0;
    line-height: 1.05;
}
.gp__handle[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.85rem;
    color: var(--hx-gold, #e8c46c);
    margin: 0.15rem 0 0;
}
.gp__location[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    color: var(--hx-muted);
    margin: 0.5rem 0 0;
}
.gp__bio[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.92rem;
    color: #d8cdb6;
    margin: 0.65rem 0 0;
    max-width: 46ch;
}
.gp__stats[b-zhpjwbxmg8] {
    display: flex;
    gap: 1.5rem;
    margin-top: 1rem;
}
.gp__stat[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    color: var(--hx-muted);
}
.gp__stat strong[b-zhpjwbxmg8] { color: var(--hx-fg, #fff); font-size: 1.05rem; margin-right: 0.15rem; }

.gp__actions[b-zhpjwbxmg8] { flex: 0 0 auto; display: flex; flex-direction: column; gap: 0.5rem; align-items: stretch; max-width: 20rem; }
.gp__follow[b-zhpjwbxmg8] { min-width: 8rem; }

/* ── Judge tag + admin judge control (doc 21 §11.5 #2, §11.3) ── */
.gp__judge[b-zhpjwbxmg8] { margin: 0.45rem 0 0; display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem 0.6rem; }
.gp__judge-tag[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.74rem;
    letter-spacing: 0.06em;
    color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.5);
    border-radius: 999px;
    padding: 0.2rem 0.65rem;
}
.gp__judge-byline[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    color: var(--hx-text-caption-2, #b8b09a);
}
.gp__judge-btn[b-zhpjwbxmg8] { min-height: 44px; }
.gp__judge-btn--danger[b-zhpjwbxmg8] { background: transparent; color: #e6a15a; border: 1px solid rgba(230, 161, 90, 0.55); }
.gp__judge-confirm[b-zhpjwbxmg8] { display: flex; flex-direction: column; gap: 0.5rem; }
.gp__judge-confirm-text[b-zhpjwbxmg8], .gp__judge-flash[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.88rem;
    margin: 0;
}
.gp__judge-confirm-text[b-zhpjwbxmg8] { color: #e6a15a; }
.gp__judge-flash[b-zhpjwbxmg8] { color: var(--hx-text-caption-2, #b8b09a); }

/* ── Body / public grows ────────────────────────────── */
.gp__body[b-zhpjwbxmg8] { padding-block: 2rem 4rem; }   /* padding-block only — preserve .hx-container padding-inline */
.gp__section-title[b-zhpjwbxmg8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.1em;
    color: var(--hx-fg, #fff);
    margin: 0 0 1.25rem;
}
.gp__count[b-zhpjwbxmg8] { color: var(--hx-muted); }
.gp__empty[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
    font-size: 0.9rem;
}

/* Spectator self-view orientation — the "what you can do" card on an empty floor. */
.gp__orient[b-zhpjwbxmg8] {
    max-width: 34rem;
    border: 1px solid var(--hx-border, #2a2620);
    border-radius: 10px;
    background: var(--hx-surface-1, #0f0d0a);
    padding: 1.5rem 1.6rem 1.7rem;
}
.gp__orient-eyebrow[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.6rem;
}
.gp__orient-lead[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.95rem;
    line-height: 1.5;
    color: #d8d2c4;
    margin: 0 0 1.2rem;
}
.gp__orient-list[b-zhpjwbxmg8] {
    list-style: none;
    margin: 0 0 1.5rem;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: 0.85rem;
}
.gp__orient-list li[b-zhpjwbxmg8] {
    display: flex;
    align-items: flex-start;
    gap: 0.7rem;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    line-height: 1.45;
    color: var(--hx-muted);
}
.gp__orient-list strong[b-zhpjwbxmg8] { color: var(--hx-fg, #fff); font-weight: 600; }
.gp__orient-list a[b-zhpjwbxmg8] { color: var(--hx-gold, #e8c46c); text-decoration: none; }
.gp__orient-list a:hover[b-zhpjwbxmg8] { text-decoration: underline; }
.gp__orient-glyph[b-zhpjwbxmg8] {
    flex-shrink: 0;
    font-size: 1.1rem;
    line-height: 1.2;
}
.gp__orient-cta[b-zhpjwbxmg8] { display: inline-block; }

/* Each grow, with its public plants beneath (doc 16) — collapsible accordion (single-open). */
.gp__grow[b-zhpjwbxmg8] { margin-bottom: 2rem; }
.gp__grow-head[b-zhpjwbxmg8] {
    display: flex;
    align-items: baseline;
    gap: 0.75rem;
    flex-wrap: wrap;
    width: 100%;
    margin-bottom: 0.8rem;
    padding: 0 0 0.5rem;
    border: 0;
    border-bottom: 1px solid var(--hx-border, #222);
    background: none;
    font: inherit;
    text-align: left;
    cursor: pointer;
}
/* Down-triangle signals "expandable"; flips up when the run is open. */
.gp__grow-caret[b-zhpjwbxmg8] {
    flex-shrink: 0;
    color: var(--hx-gold, #e8c46c);
    font-size: 1rem;
    line-height: 1;
    transition: transform 0.15s ease;
}
.gp__grow.is-open .gp__grow-caret[b-zhpjwbxmg8] { transform: rotate(180deg); }
.gp__grow-name[b-zhpjwbxmg8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.4rem;
    letter-spacing: 0.03em;
    color: var(--hx-fg, #fff);
    text-decoration: none;
}
.gp__grow-head:hover .gp__grow-name[b-zhpjwbxmg8] { color: var(--hx-gold, #e8c46c); }
.gp__grow-plantcount[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.06em;
    color: var(--hx-muted);
}
.gp__grow-theme[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-style: italic;
    font-size: 0.85rem;
    color: #c9bfa6;
}
.gp__grow-status[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    padding: 0.12rem 0.5rem;
    border-radius: 999px;
    border: 1px solid var(--hx-border, #333);
    color: var(--hx-muted);
    margin-left: auto;
}
.gp__run-status--1[b-zhpjwbxmg8] { color: #7bd88f; border-color: rgba(123, 216, 143, 0.4); }
.gp__run-status--2[b-zhpjwbxmg8] { color: var(--hx-gold, #e8c46c); border-color: rgba(232, 196, 108, 0.4); }

.gp__plants[b-zhpjwbxmg8] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 0.85rem;
}
.gp__plant-card[b-zhpjwbxmg8] {
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.2rem;
    padding: 1.1rem 0.85rem;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    text-decoration: none;
    color: inherit;
    transition: border-color 0.15s ease, transform 0.1s ease;
}
.gp__plant-card:hover[b-zhpjwbxmg8] { border-color: rgba(232, 196, 108, 0.5); transform: translateY(-2px); }
/* Square thumbnail box — the glyph sits centered as the base; the photo overlays it when present. */
.gp__plant-thumb[b-zhpjwbxmg8] {
    position: relative;
    width: 100%;
    aspect-ratio: 1 / 1;
    border-radius: 8px;
    margin-bottom: 0.45rem;
    background: var(--hx-surface-2, #1a1a1a);
    display: flex;
    align-items: center;
    justify-content: center;
    overflow: hidden;
}
.gp__plant-glyph[b-zhpjwbxmg8] {
    font-size: 2.4rem;
    line-height: 1;
}
/* Cover thumbnail — this plant's latest photo, overlays the glyph; onerror removes it → glyph shows (doc 17). */
.gp__plant-photo[b-zhpjwbxmg8] {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    border-radius: 8px;
}
.gp__plant-name[b-zhpjwbxmg8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 700;
    font-size: 1rem;
    color: var(--hx-fg, #fff);
}
.gp__plant-stage[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--hx-gold, #e8c46c);
}
.gp__plant-strain[b-zhpjwbxmg8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
}

@media (max-width: 640px) {
    .gp__header-inner[b-zhpjwbxmg8] { gap: 1rem; }
    .gp__name[b-zhpjwbxmg8] { font-size: 1.8rem; }
    .gp__actions[b-zhpjwbxmg8] { flex-basis: 100%; max-width: none; }
    .gp__follow[b-zhpjwbxmg8] { width: 100%; }
}
/* /Components/Pages/Runs/AddPlant.razor.rz.scp.css */
/* ── AddPlant — ap__ namespace ───────────────────────────── */

.ap[b-ntv31e0ctr] {
    max-width: 560px;
    padding-top: 2rem;
    padding-bottom: 4rem;
}

.ap__back[b-ntv31e0ctr] {
    display: inline-block;
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    text-decoration: none;
    letter-spacing: 0.05em;
    margin-bottom: 1.5rem;
}

.ap__back:hover[b-ntv31e0ctr] { color: var(--hx-gold, #d4af37); }

.ap__headline[b-ntv31e0ctr] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2.5rem, 6vw, 3.5rem);
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0 0 0.25rem;
}

.ap__sub[b-ntv31e0ctr] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    color: var(--hx-muted);
    margin: 0 0 1rem;
}

.ap__note[b-ntv31e0ctr] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    line-height: 1.5;
    color: var(--hx-muted);
    background: rgba(232, 196, 108, 0.07);
    border-left: 2px solid rgba(232, 196, 108, 0.5);
    border-radius: 6px;
    padding: 0.7rem 0.85rem;
    margin: 0 0 2.5rem;
}

.ap__note strong[b-ntv31e0ctr] { color: var(--hx-text); }

.ap__seed-note[b-ntv31e0ctr] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
    margin: 0.4rem 0 0;
}

/* Encouragement deep link inside a note ("build your own →", "add to your Seed List →"). */
.ap__inline-link[b-ntv31e0ctr] {
    color: var(--hx-gold, #e8c46c);
    text-decoration: none;
    white-space: nowrap;
}
.ap__inline-link:hover[b-ntv31e0ctr] { text-decoration: underline; }

/* "What you're growing" — the read-only card shown in place of the manual strain/type/source fields
   once a seed is picked (its strain/type/source come from the lot). */
.ap__seedcard[b-ntv31e0ctr] {
    /* Purple tint — the "what you're growing" card reads as a distinct, premium confirmation
       (operator, 2026-07-19; accent-tints convention: PURPLE #926ec4). */
    border: 1px solid rgba(146, 110, 196, 0.4);
    background: rgba(146, 110, 196, 0.07);
    border-radius: var(--hx-r, 12px);
    padding: 0.9rem 1.1rem;
}
.ap__seedcard-eyebrow[b-ntv31e0ctr] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: #b79ae0;
    margin: 0 0 0.35rem;
}
.ap__seedcard-strain[b-ntv31e0ctr] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.6rem;
    letter-spacing: 0.01em;
    color: var(--hx-text-heading, #f6efdd);
    line-height: 1.05;
}
.ap__seedcard-meta[b-ntv31e0ctr] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    font-size: 0.82rem;
    color: var(--hx-text-muted, #b0a890);
    margin-top: 0.25rem;
}
.ap__seedcard-note[b-ntv31e0ctr] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-text-caption, #9a927e);
    margin: 0.7rem 0 0;
    line-height: 1.5;
}

.ap__form[b-ntv31e0ctr] {
    display: flex;
    flex-direction: column;
    gap: 1.5rem;
}

.ap__field[b-ntv31e0ctr] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
}

.ap__label[b-ntv31e0ctr] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--hx-muted);
}

.ap__required[b-ntv31e0ctr] { color: var(--hx-gold, #d4af37); }
.ap__optional[b-ntv31e0ctr] { color: var(--hx-muted); font-size: 0.65rem; }

.ap__chips[b-ntv31e0ctr] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

.ap__chip[b-ntv31e0ctr] {
    padding: 0.45rem 1rem;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #2a2a2a);
    border-radius: 100px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.85rem;
    color: var(--hx-muted);
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.ap__chip:hover[b-ntv31e0ctr] {
    border-color: var(--hx-fg, #ccc);
    color: var(--hx-fg, #fff);
}

.ap__chip.is-active[b-ntv31e0ctr] {
    border-color: var(--hx-gold, #d4af37);
    color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.08);
}

/* Grow-level visibility (doc 16) — the blue "gentle nudge" register, mirroring the run-surface
   per-plant privacy control (#6fa8bd) for consistency. */
.ap__vis-field[b-ntv31e0ctr] {
    padding: 1.1rem 1.2rem;
    background: rgba(111, 168, 189, 0.06);
    border: 1px solid rgba(111, 168, 189, 0.4);
    border-radius: 10px;
}
.ap__chip--vis:hover[b-ntv31e0ctr] { border-color: rgba(111, 168, 189, 0.55); }
.ap__chip--vis.is-active[b-ntv31e0ctr] {
    border-color: #6fa8bd;
    color: var(--hx-text-heading, #f6efdd);
    background: rgba(111, 168, 189, 0.14);
}

.ap__actions[b-ntv31e0ctr] {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
    padding-top: 0.5rem;
}

.ap__error[b-ntv31e0ctr] {
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: #ff453a;
}
/* /Components/Pages/Runs/Compare.razor.rz.scp.css */
.cmp[b-iyyp31brx7] { padding-block: 1.25rem 4rem; }
/* padding-block only — preserve .hx-container's padding-inline. */
.cmp__loading[b-iyyp31brx7] { padding-block: 3rem; color: var(--hx-text-muted, #9a927e); font-family: 'Hanken Grotesk', sans-serif; }

.cmp__header[b-iyyp31brx7] { margin-bottom: 1.1rem; }
.cmp__back[b-iyyp31brx7] {
    font-family: 'Space Mono', monospace; font-size: 0.8rem; color: var(--hx-gold, #e8c46c);
    text-decoration: none;
}
.cmp__back:hover[b-iyyp31brx7] { text-decoration: underline; }
.cmp__title[b-iyyp31brx7] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2rem, 8vw, 3rem); letter-spacing: 0.05em;
    color: var(--hx-fg, #fff); margin: 0.25rem 0 0.15rem;
}
.cmp__sub[b-iyyp31brx7] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; color: var(--hx-text-muted, #9a927e); margin: 0; }

/* ── Shared type filter ─────────────────────────────── */
.cmp__filters[b-iyyp31brx7] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 1.1rem; }
.cmp__filter[b-iyyp31brx7] {
    display: inline-flex; align-items: center; gap: 0.3rem;
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.03em;
    padding: 0.4rem 0.7rem; border-radius: 999px; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-text-2, #cbc3b0);
    border: 1px solid var(--hx-border, #2a2820);
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.cmp__filter:hover[b-iyyp31brx7] { border-color: var(--hx-gold, #e8c46c); }
.cmp__filter.is-on[b-iyyp31brx7] {
    background: rgba(232, 196, 108, 0.12); color: var(--hx-gold, #e8c46c);
    border-color: var(--hx-gold, #e8c46c);
}
.cmp__filter-ico[b-iyyp31brx7] { font-size: 0.9rem; }

/* ── Two panes — side by side even on a phone (the comparison IS the value) ── */
.cmp__panes[b-iyyp31brx7] { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
@media (min-width: 640px) { .cmp__panes[b-iyyp31brx7] { gap: 1rem; } }

.cmp__pane[b-iyyp31brx7] { min-width: 0; display: flex; flex-direction: column; gap: 0.5rem; }
.cmp__pane-head[b-iyyp31brx7] { display: flex; }
.cmp__day-select[b-iyyp31brx7] {
    width: 100%; font-family: 'Space Mono', monospace; font-size: 0.75rem;
    padding: 0.45rem 0.5rem; border-radius: 8px;
    background: var(--hx-surface-2, #0c0c0c); color: var(--hx-fg, #fff);
    border: 1px solid var(--hx-border, #333);
}

.cmp__frame[b-iyyp31brx7] {
    position: relative; width: 100%; aspect-ratio: 3 / 4; overflow: hidden;
    border-radius: 12px; background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #2a2820);
    display: flex; align-items: center; justify-content: center;
}
.cmp__img[b-iyyp31brx7] { width: 100%; height: 100%; object-fit: cover; display: block; }
.cmp__frame-demo[b-iyyp31brx7] { font-size: 2.5rem; opacity: 0.5; }
.cmp__frame-empty[b-iyyp31brx7] {
    display: flex; flex-direction: column; align-items: center; gap: 0.5rem;
    padding: 1rem; text-align: center;
}
.cmp__frame-empty > span:first-child[b-iyyp31brx7] { font-size: 2.5rem; opacity: 0.4; }
.cmp__frame-empty-txt[b-iyyp31brx7] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.02em;
    color: var(--hx-text-muted, #9a927e);
}

.cmp__frame-cap[b-iyyp31brx7] {
    font-family: 'Space Mono', monospace; font-size: 0.68rem; letter-spacing: 0.04em;
    color: var(--hx-gold, #e8c46c); text-align: center;
}

/* Multi-photo strip within a day */
.cmp__strip[b-iyyp31brx7] { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.cmp__thumb[b-iyyp31brx7] {
    width: 40px; height: 40px; padding: 0; overflow: hidden; cursor: pointer;
    border-radius: 6px; background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #333);
    display: flex; align-items: center; justify-content: center;
}
.cmp__thumb img[b-iyyp31brx7] { width: 100%; height: 100%; object-fit: cover; }
.cmp__thumb.is-on[b-iyyp31brx7] { border-color: var(--hx-gold, #e8c46c); box-shadow: 0 0 0 1px var(--hx-gold, #e8c46c); }

/* ── Empty state ─────────────────────────────────────── */
.cmp__empty[b-iyyp31brx7] {
    text-align: center; padding: 3rem 1rem; color: var(--hx-text-muted, #9a927e);
    font-family: 'Hanken Grotesk', sans-serif;
}
.cmp__empty-ico[b-iyyp31brx7] { font-size: 2.5rem; display: block; margin-bottom: 0.5rem; opacity: 0.6; }
.cmp__empty-hint[b-iyyp31brx7] { font-size: 0.8rem; margin-top: 0.25rem; }
/* /Components/Pages/Runs/DayView.razor.rz.scp.css */
/* ── DayView — dv__ namespace ─────────────────────────────── */

.dv__loading-text[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    color: var(--hx-muted);
    font-size: 0.85rem;
    padding: 4rem 0;
}

/* ── Header ──────────────────────────────────────────────── */
.dv__header[b-e28tujeo5c] {
    padding-top: 1.5rem;
    padding-bottom: 1.25rem;
    border-bottom: 1px solid var(--hx-border, #222);
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.dv__back[b-e28tujeo5c] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    text-decoration: none;
    letter-spacing: 0.05em;
    flex-basis: 100%;
    margin-bottom: 0.25rem;
}

.dv__back:hover[b-e28tujeo5c] { color: var(--hx-gold, #d4af37); }

/* Day-to-day navigation. Grid with a fixed-content column each side and the date taking the middle, so the
   headline stays optically centred whether a neighbour is "Aug 8" or "First day" — a flex row would shift
   the date sideways as the labels change length, which reads as the page jittering between days. */
.dv__daynav[b-e28tujeo5c] {
    flex: 1;
    display: grid;
    grid-template-columns: 1fr auto 1fr;
    align-items: center;
    gap: 0.75rem;
}

.dv__daynav-step[b-e28tujeo5c] {
    display: inline-flex;
    align-items: baseline;
    gap: 0.35rem;
    justify-self: start;
    font-family: 'Space Mono', monospace;
    font-size: 0.74rem;
    letter-spacing: 0.04em;
    color: var(--hx-gold, #e8c46c);
    text-decoration: none;
    white-space: nowrap;
    transition: color 0.15s;
}
.dv__daynav-step--next[b-e28tujeo5c] { justify-self: end; }
.dv__daynav-step:hover[b-e28tujeo5c] { color: var(--hx-text-heading, #f6efdd); }

.dv__daynav-arrow[b-e28tujeo5c] { font-size: 1.05rem; line-height: 1; }

/* The edge of the record. Kept visible rather than removed: "there is nothing before this" is information,
   and a vanishing control makes the layout shift as you walk into it. */
.dv__daynav-step.is-edge[b-e28tujeo5c] {
    color: var(--hx-text-faint, #6f6857);
    cursor: default;
}
.dv__daynav-step.is-edge:hover[b-e28tujeo5c] { color: var(--hx-text-faint, #6f6857); }

@media (max-width: 560px) {
    /* The labels are the first thing to go — the arrows still say which way, and the date stays whole. */
    .dv__daynav-label[b-e28tujeo5c] { display: none; }
    .dv__daynav[b-e28tujeo5c] { gap: 0.4rem; }
}

.dv__edit-btn[b-e28tujeo5c] {
    margin-left: auto;
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-gold, #d4af37);
    text-decoration: none;
    letter-spacing: 0.08em;
    padding: 0.3rem 0.8rem;
    border: 1px solid rgba(212, 175, 55, 0.3);
    border-radius: 4px;
    transition: background 0.15s, border-color 0.15s;
    white-space: nowrap;
    align-self: center;
}

.dv__edit-btn:hover[b-e28tujeo5c] {
    background: rgba(212, 175, 55, 0.1);
    border-color: rgba(212, 175, 55, 0.6);
}

.dv__headline[b-e28tujeo5c] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2rem, 5vw, 3rem);
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0;
}

/* .dv__date removed — the date IS the headline now, so a second muted copy of it beside the day number
   had nothing left to say. The day number moved to each plant (.dv__plant-day). */

.dv__edit-btn[b-e28tujeo5c] {
    margin-left: auto;
}

/* ── Body layout ─────────────────────────────────────────── */
.dv__body[b-e28tujeo5c] {
    display: flex;
    gap: 2.5rem;
    align-items: flex-start;
    padding-top: 2rem;
    padding-bottom: 3rem;
}

.dv__main[b-e28tujeo5c] {
    flex: 1;
    min-width: 0;
}

/* ── Plant section ───────────────────────────────────────── */
.dv__plant-section[b-e28tujeo5c] {
    margin-bottom: 2rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--hx-border, #1e1e1e);
}

.dv__plant-name[b-e28tujeo5c] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2rem;
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0 0 1.25rem;
    display: flex;
    align-items: center;
    gap: 0.6rem;
}

/* This plant's own day number, in the gold "stats" register — a fact ABOUT the grow, sitting with the grow
   it describes (doc 34; the page header can't carry it, since each plant is a different age on one date). */
.dv__plant-day[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.09em;
    color: var(--hx-gold, #e8c46c);
    border: 1px solid var(--hx-border-gold, rgba(232, 196, 108, 0.3));
    border-radius: 3px;
    padding: 0.1rem 0.45rem;
    white-space: nowrap;
    align-self: center;
}

/* A logged entry that recorded nothing. One honest line beats three empty slots pretending to be content. */
.dv__plant-blank[b-e28tujeo5c] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.35rem 0.9rem;
    padding: 1rem 1.15rem;
    border: 1px dashed var(--hx-border, rgba(255, 255, 255, 0.06));
    border-radius: var(--hx-r-sm, 8px);
    background: var(--hx-surface-1, #0f0d0a);
}
.dv__plant-blank-text[b-e28tujeo5c] {
    margin: 0;
    font-size: 0.9rem;
    color: var(--hx-text-caption, #9a927e);
}
.dv__plant-blank-cta[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.05em;
    color: var(--hx-gold, #e8c46c);
    text-decoration: none;
    border-bottom: 1px dotted var(--hx-border-gold, rgba(232, 196, 108, 0.3));
}
.dv__plant-blank-cta:hover[b-e28tujeo5c] { border-bottom-style: solid; }

/* Stage-transition pill — same tinted purple build as Week View's, so one fact keeps one look across
   surfaces. Sits inside the flex .dv__plant-name; Edit still claims the right edge via margin-left:auto. */
.dv__stage-pill[b-e28tujeo5c] {
    display: inline-block;
    padding: 0.1rem 0.45rem;
    border-radius: 3px;
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.07em;
    white-space: nowrap;
    background: rgba(146, 110, 196, 0.2);
    border: 1px solid rgba(146, 110, 196, 0.45);
    color: #cdb4ee;
    align-self: center;
}

.dv__plant-dot[b-e28tujeo5c] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--hx-gold, #d4af37);
    flex-shrink: 0;
}

.dv__plant-row[b-e28tujeo5c] {
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
}

/* ── Photo ───────────────────────────────────────────────── */
.dv__photo-side[b-e28tujeo5c] {
    flex-shrink: 0;
    width: 320px;
}

/* Gallery: primary photo full-width, extras in a 2-up row below (doc 17). */
.dv__photo-gallery[b-e28tujeo5c] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0.5rem;
}

.dv__photo-fig[b-e28tujeo5c] {
    margin: 0;
    position: relative;
}

/* The primary shot spans both columns — it's the headline image. */
.dv__photo-fig.is-primary[b-e28tujeo5c] {
    grid-column: 1 / -1;
}

.dv__photo[b-e28tujeo5c] {
    width: 100%;
    aspect-ratio: 3 / 4;
    object-fit: cover;
    border-radius: 6px;
    border: 1px solid var(--hx-border, #333);
    display: block;
}

/* The headline shot follows the PHOTO rather than a fixed ratio — same rule as the Week View
   gallery stage. The 2-up extras below stay cropped to a uniform 3/4 tile, because that strip
   has to line up; only the primary is ever shown whole. */
.dv__photo-fig.is-primary .dv__photo[b-e28tujeo5c] {
    aspect-ratio: auto;
    width: auto;
    max-width: 100%;
    max-height: 60vh;
    margin: 0 auto;
    border-color: var(--hx-gold, #e8c46c);
}

.dv__photo-fig.is-primary .dv__photo-cap[b-e28tujeo5c] { justify-content: center; }

.dv__photo-cap[b-e28tujeo5c] {
    display: flex;
    align-items: center;
    gap: 0.3rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.64rem;
    letter-spacing: 0.03em;
    color: var(--hx-muted);
    margin-top: 0.3rem;
}

.dv__photo-star[b-e28tujeo5c] { color: var(--hx-gold, #e8c46c); }

/* Quick jump to the Log Day editor to add/manage this day's shots (doc 17). */
.dv__photo-add-link[b-e28tujeo5c] {
    display: block;
    margin-top: 0.6rem;
    padding: 0.5rem 0.75rem;
    border: 1px dashed var(--hx-border, #333);
    border-radius: 6px;
    text-align: center;
    text-decoration: none;
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    letter-spacing: 0.05em;
    color: var(--hx-muted);
    transition: border-color 0.15s, color 0.15s, background 0.15s;
}

.dv__photo-add-link:hover[b-e28tujeo5c] {
    border-color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.05);
    color: var(--hx-gold, #e8c46c);
}

.dv__photo-placeholder[b-e28tujeo5c] {
    width: 320px;
    aspect-ratio: 3 / 4;
    border-radius: 6px;
    border: 1px solid var(--hx-border, #333);
    background: var(--hx-surface-1, #111);
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.5rem;
}

.dv__photo-placeholder--empty[b-e28tujeo5c] {
    opacity: 0.4;
}

.dv__photo-icon[b-e28tujeo5c] {
    font-size: 2rem;
    line-height: 1;
}

.dv__photo-hint[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: var(--hx-muted);
    letter-spacing: 0.04em;
}

/* ── Note ────────────────────────────────────────────────── */
.dv__plant-notes[b-e28tujeo5c] {
    flex: 1;
    min-width: 0;
    padding-top: 0.25rem;
}

.dv__note-text[b-e28tujeo5c] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 1rem;
    line-height: 1.7;
    color: var(--hx-fg, #fff);
    white-space: pre-wrap;
    margin: 0;
}

.dv__note-empty[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    color: var(--hx-muted);
    margin: 0;
}

/* ── Sections ────────────────────────────────────────────── */
.dv__section[b-e28tujeo5c] {
    margin-bottom: 2rem;
}

/* Per-plant actions, under that plant's observation. Separated by a rule rather than a card so the plant
   section still reads as one block — the note and what you did to it are the same story. */
.dv__plant-actions[b-e28tujeo5c] {
    margin-top: 1.4rem;
    padding-top: 1.1rem;
    border-top: 1px solid var(--hx-border, #222);
}

.dv__plant-actions .dv__chip-row:last-child[b-e28tujeo5c] { margin-bottom: 0; }

.dv__section-title[b-e28tujeo5c] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1rem;
    letter-spacing: 0.1em;
    color: var(--hx-muted);
    margin: 0 0 0.85rem;
}

/* ── Action chips ────────────────────────────────────────── */
.dv__chip-row[b-e28tujeo5c] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-bottom: 1rem;
}

.dv__chip[b-e28tujeo5c] {
    display: inline-flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.4rem 0.85rem;
    background: rgba(212, 175, 55, 0.08);
    border: 1px solid rgba(212, 175, 55, 0.3);
    border-radius: 100px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    color: var(--hx-gold, #d4af37);
}

/* ── Water detail ────────────────────────────────────────── */
.dv__water-row[b-e28tujeo5c] {
    display: flex;
    gap: 1.5rem;
    flex-wrap: wrap;
    background: var(--hx-surface-1, #0e0e0e);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    padding: 0.85rem 1rem;
}

.dv__stat[b-e28tujeo5c] {
    display: flex;
    flex-direction: column;
    gap: 0.2rem;
}

.dv__stat-label[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: var(--hx-muted);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

.dv__stat-value[b-e28tujeo5c] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
}

/* ── Environment sidebar ─────────────────────────────────── */
.dv__env[b-e28tujeo5c] {
    width: 240px;
    flex-shrink: 0;
}

.dv__env-card[b-e28tujeo5c] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    padding: 1.25rem;
}

/* This surface's one gold header (the per-plant Actions titles stay muted). */
.dv__env-title[b-e28tujeo5c] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1rem;
    letter-spacing: 0.1em;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.25rem;
}

.dv__env-note[b-e28tujeo5c] {
    font-size: 0.72rem;
    color: var(--hx-muted);
    line-height: 1.45;
    margin: 0.25rem 0 1rem;
}

/* Readouts, not inputs — this is a review surface. Styled like Log Day's number+unit pair so the same
   figures look the same in both places, but they're plain text: nothing here is editable. */
.dv__env-fields[b-e28tujeo5c] {
    display: flex;
    gap: 0.75rem;
    margin-bottom: 0.25rem;
}

.dv__env-field[b-e28tujeo5c] {
    flex: 1;
    min-width: 0;
}

.dv__env-flabel[b-e28tujeo5c] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    color: var(--hx-muted);
    letter-spacing: 0.05em;
    text-transform: uppercase;
    margin-bottom: 0.35rem;
}

.dv__env-readout[b-e28tujeo5c] {
    display: flex;
    align-items: stretch;
}

.dv__env-num[b-e28tujeo5c] {
    flex: 1;
    min-width: 2.5rem;
    display: flex;
    align-items: center;
    height: 2.4rem;
    padding: 0 0.6rem;
    background: var(--hx-surface-2, #1a1a1a);
    border: 1px solid var(--hx-border, #333);
    border-radius: 4px 0 0 4px;
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.3rem;
    letter-spacing: 0.04em;
    color: var(--hx-fg, #fff);
}

.dv__env-unit[b-e28tujeo5c] {
    display: flex;
    align-items: center;
    height: 2.4rem;
    padding: 0 0.6rem;
    background: var(--hx-surface-2, #1a1a1a);
    border: 1px solid var(--hx-border, #333);
    border-left: none;
    border-radius: 0 4px 4px 0;
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    white-space: nowrap;
}

/* ── VPD gauge — mirrors Log Day's, reading the shared VpdGauge in Core ── */
.dv__vpd[b-e28tujeo5c] {
    display: flex;
    align-items: baseline;
    gap: 0.5rem;
    padding: 0.6rem 0.75rem;
    border-radius: 4px;
    margin: 0.75rem 0 1rem;
    border: 1px solid var(--hx-border, #333);
}

.dv__vpd-value[b-e28tujeo5c] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.5rem;
    letter-spacing: 0.04em;
}

.dv__vpd-unit[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-muted);
}

.dv__vpd-label[b-e28tujeo5c] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    margin-left: auto;
    text-align: right;
}

.dv__vpd--blank[b-e28tujeo5c] {
    border-style: dashed;
    border-color: rgba(255,255,255,0.14);
    color: var(--hx-muted, #8a8270);
    opacity: 0.85;
}
.dv__vpd--blank .dv__vpd-value[b-e28tujeo5c] { color: var(--hx-muted, #8a8270); }

.dv__vpd-learn[b-e28tujeo5c] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    color: #8a8270;
    text-decoration: none;
    margin: -0.5rem 0 1rem;
    letter-spacing: 0.02em;
    line-height: 1.4;
    transition: color 0.15s;
}
.dv__vpd-learn:hover[b-e28tujeo5c] { color: #e8c46c; }

/* The gauge scale — the one place red is intended: red (fix it) → amber (caution) → green (dialled in).
   Duplicated from Log Day because scoped CSS can't be shared; the LOGIC lives once, in Core's VpdGauge. */
.vpd-good[b-e28tujeo5c]    { border-color: #6bcf7f55; color: #6bcf7f; background: rgba(107,207,127,0.06); }
.vpd-caution[b-e28tujeo5c] { border-color: #ffb02e66; color: #ffb02e; background: rgba(255,176,46,0.06); }
.vpd-danger[b-e28tujeo5c]  { border-color: #ff453a66; color: #ff453a; background: rgba(255,69,58,0.07); }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 800px) {
    /* align-items is CROSS-axis: the base `flex-start` aligns tops in a row, but once stacked it means
       "don't stretch horizontally" and the flex:1 main column collapses to its content width. The sidebar
       escaped it only by setting an explicit width. */
    .dv__body[b-e28tujeo5c] { flex-direction: column; align-items: stretch; }
    .dv__env[b-e28tujeo5c]  { width: 100%; }

    .dv__plant-row[b-e28tujeo5c] {
        flex-direction: column;
        align-items: stretch;   /* same reason — .dv__plant-notes is flex:1, which is the MAIN axis */
    }

    /* The side is the gallery CONTAINER, not an image — pinning it to 4/3 squeezed the whole
       strip into a landscape box and clipped a tall primary. Only the empty-state placeholder
       needs a ratio of its own. */
    .dv__photo-side[b-e28tujeo5c] {
        width: 100%;
    }

    .dv__photo-placeholder[b-e28tujeo5c] {
        width: 100%;
        aspect-ratio: 4 / 3;
    }
}
/* /Components/Pages/Runs/Gallery.razor.rz.scp.css */
/* The Grow Gallery (planning doc 38) — the grow's whole photographic record, undated.
   Reads as a wall of photos, not a form: the grid is the page, everything else recedes. */

.gal[b-h0a2bh5cib] { padding-block: 1.25rem 4rem; }
/* padding-block only — preserve .hx-container's padding-inline. */
.gal__loading[b-h0a2bh5cib] { padding-block: 3rem; color: var(--hx-text-muted, #9a927e); font-family: 'Hanken Grotesk', sans-serif; }

.gal__header[b-h0a2bh5cib] { margin-bottom: 1.1rem; }
.gal__back[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.8rem; color: var(--hx-gold, #e8c46c);
    text-decoration: none;
}
.gal__back:hover[b-h0a2bh5cib] { text-decoration: underline; }
.gal__title[b-h0a2bh5cib] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2rem, 8vw, 3rem); letter-spacing: 0.05em;
    color: var(--hx-fg, #fff); margin: 0.25rem 0 0.15rem;
}
.gal__sub[b-h0a2bh5cib] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem;
    color: var(--hx-text-muted, #9a927e); margin: 0;
}

/* ── Add panel (owner only) ─────────────────────────── */
.gal__add[b-h0a2bh5cib] {
    margin-bottom: 1.25rem; padding: 0.85rem;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    border-radius: 12px;
}
.gal__add-head[b-h0a2bh5cib] {
    display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.5rem; margin-bottom: 0.65rem;
}
.gal__add-title[b-h0a2bh5cib] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1.05rem; letter-spacing: 0.06em;
    color: var(--hx-gold, #e8c46c);
}
.gal__add-hint[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.03em;
    color: var(--hx-text-muted, #9a927e);
}

.gal__tray[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; gap: 0.5rem; }

.gal__add-tile[b-h0a2bh5cib] {
    position: relative; width: 96px; aspect-ratio: 3 / 4;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.15rem;
    padding: 0.35rem; text-align: center; cursor: pointer;
    border: 1px dashed var(--hx-border, #3a382e); border-radius: 10px;
    background: var(--hx-surface-2, #0c0c0c);
    transition: border-color 0.15s ease;
}
.gal__add-tile:hover[b-h0a2bh5cib] { border-color: var(--hx-gold, #e8c46c); }
.gal__add-icon[b-h0a2bh5cib] { font-size: 1.3rem; }
.gal__add-label[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.03em;
    color: var(--hx-text-2, #cbc3b0);
}
.gal__add-spec[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.52rem; line-height: 1.35;
    color: var(--hx-text-muted, #9a927e);
}

/* A picked-but-not-yet-added photo. Same footprint as the add tile so the tray doesn't reflow. */
.gal__stage[b-h0a2bh5cib] {
    position: relative; width: 96px; aspect-ratio: 3 / 4; overflow: hidden;
    border-radius: 10px; border: 1px solid var(--hx-border, #2a2820);
    background: var(--hx-surface-2, #0c0c0c);
}
.gal__stage-img[b-h0a2bh5cib] { width: 100%; height: 100%; object-fit: cover; display: block; }
.gal__stage-x[b-h0a2bh5cib], .gal__tile-x[b-h0a2bh5cib] {
    position: absolute; top: 3px; right: 3px; width: 20px; height: 20px; padding: 0;
    display: flex; align-items: center; justify-content: center; cursor: pointer;
    font-size: 0.65rem; line-height: 1; border-radius: 50%;
    background: rgba(0, 0, 0, 0.72); color: #fff; border: none;
}
.gal__stage-x:hover:not(:disabled)[b-h0a2bh5cib], .gal__tile-x:hover:not(:disabled)[b-h0a2bh5cib] { background: var(--hx-red, #e05555); }
.gal__stage-type[b-h0a2bh5cib], .gal__tile-typesel[b-h0a2bh5cib] {
    position: absolute; left: 0; right: 0; bottom: 0; width: 100%;
    font-family: 'Space Mono', monospace; font-size: 0.58rem;
    padding: 0.2rem 0.15rem; border: none; border-top: 1px solid var(--hx-border, #2a2820);
    background: rgba(0, 0, 0, 0.78); color: var(--hx-text-2, #cbc3b0); cursor: pointer;
}

.gal__add-actions[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.75rem; }

.gal__btn-danger[b-h0a2bh5cib] {
    background: rgba(224, 85, 85, 0.14); color: var(--hx-red, #e05555);
    border: 1px solid var(--hx-red, #e05555);
}
.gal__btn-danger:hover:not(:disabled)[b-h0a2bh5cib] { background: rgba(224, 85, 85, 0.26); }

.gal__error[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.7rem; line-height: 1.45;
    color: var(--hx-red, #e05555); margin: 0.6rem 0 0;
}
.gal__error--float[b-h0a2bh5cib] { margin-top: 1rem; }

/* ── The pinned set: what the grower put out front ─── */
/* Read-only for everyone, including the owner — editing lives behind "Pick what judges see". */
.gal__pinned[b-h0a2bh5cib] {
    margin-bottom: 1.25rem; padding: 0.85rem;
    background: rgba(232, 196, 108, 0.06); border: 1px solid rgba(232, 196, 108, 0.3);
    border-radius: 12px;
}
.gal__pinned-title[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c); margin: 0 0 0.25rem;
}
.gal__pinned-sub[b-h0a2bh5cib] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.8rem;
    color: var(--hx-text-muted, #9a927e); margin: 0 0 0.7rem;
}
/* One scrolling row, not a wrapping grid: ten is a sequence the grower ordered, and a row keeps that
   reading left-to-right instead of re-flowing into arbitrary lines. */
.gal__pinned-strip[b-h0a2bh5cib] {
    display: flex; gap: 0.45rem; overflow-x: auto; padding-bottom: 0.3rem;
    scroll-snap-type: x proximity;
}
.gal__pinned-item[b-h0a2bh5cib] {
    position: relative; flex: 0 0 auto; width: 104px; aspect-ratio: 3 / 4;
    overflow: hidden; cursor: zoom-in; scroll-snap-align: start;
    border-radius: 10px; border: 1px solid var(--hx-border, #2a2820);
    background: var(--hx-surface-2, #0c0c0c);
    display: flex; align-items: center; justify-content: center;
}
.gal__pinned-item:hover[b-h0a2bh5cib] { border-color: var(--hx-gold, #e8c46c); }
.gal__pinned-item.is-hero[b-h0a2bh5cib] { border-color: var(--hx-gold, #e8c46c); box-shadow: 0 0 0 1px var(--hx-gold, #e8c46c); }
.gal__pinned-img[b-h0a2bh5cib] { width: 100%; height: 100%; object-fit: cover; display: block; }
.gal__pinned-demo[b-h0a2bh5cib] { font-size: 1.8rem; opacity: 0.45; }
.gal__pinned-hero-tag[b-h0a2bh5cib] {
    position: absolute; top: 3px; left: 3px;
    font-family: 'Space Mono', monospace; font-size: 0.46rem; letter-spacing: 0.08em;
    padding: 0.1rem 0.28rem; border-radius: 3px;
    background: var(--hx-gold, #e8c46c); color: #111;
}
@media (min-width: 640px) { .gal__pinned-item[b-h0a2bh5cib] { width: 132px; } }

/* The same photo, spotted while scrolling the wall below. */
.gal__tile-star[b-h0a2bh5cib] {
    position: absolute; top: 4px; right: 4px;
    display: flex; align-items: center; justify-content: center;
    width: 20px; height: 20px; border-radius: 50%; font-size: 0.6rem;
    background: rgba(0, 0, 0, 0.68); color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.45);
}

/* ── Selection mode: picking what judges lead with ─── */
/* Gold, because this is a Showcase surface — the grower is dressing their act for the floor. */
.gal__pick[b-h0a2bh5cib] {
    margin-bottom: 1.25rem; padding: 0.85rem;
    background: rgba(232, 196, 108, 0.06); border: 1px solid rgba(232, 196, 108, 0.35);
    border-radius: 12px;
}
.gal__pick-head[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; align-items: baseline; gap: 0.6rem; }
.gal__pick-count[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.75rem; letter-spacing: 0.05em;
    color: var(--hx-text-2, #cbc3b0);
}
.gal__pick-hint[b-h0a2bh5cib], .gal__pick-empty[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.64rem; letter-spacing: 0.03em;
    color: var(--hx-text-muted, #9a927e);
}
.gal__pick-empty[b-h0a2bh5cib] { margin: 0.6rem 0 0; line-height: 1.5; }

.gal__pick-strip[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.7rem; }
.gal__pick-item[b-h0a2bh5cib] {
    position: relative; width: 76px; aspect-ratio: 3 / 4; overflow: hidden;
    border-radius: 8px; border: 1px solid var(--hx-border, #2a2820);
    background: var(--hx-surface-2, #0c0c0c);
}
.gal__pick-item.is-hero[b-h0a2bh5cib] { border-color: var(--hx-gold, #e8c46c); box-shadow: 0 0 0 1px var(--hx-gold, #e8c46c); }
.gal__pick-img[b-h0a2bh5cib] { width: 100%; height: 100%; object-fit: cover; display: block; }
.gal__pick-hero-tag[b-h0a2bh5cib] {
    position: absolute; top: 3px; left: 3px;
    font-family: 'Space Mono', monospace; font-size: 0.45rem; letter-spacing: 0.08em;
    padding: 0.1rem 0.25rem; border-radius: 3px;
    background: var(--hx-gold, #e8c46c); color: #111;
}
.gal__pick-order[b-h0a2bh5cib] {
    position: absolute; left: 0; right: 0; bottom: 0; display: flex;
    background: rgba(0, 0, 0, 0.78); border-top: 1px solid var(--hx-border, #2a2820);
}
.gal__pick-order button[b-h0a2bh5cib] {
    flex: 1; padding: 0.18rem 0; border: none; background: none; cursor: pointer;
    font-size: 0.6rem; color: var(--hx-text-2, #cbc3b0);
}
.gal__pick-order button:hover:not(:disabled)[b-h0a2bh5cib] { color: var(--hx-gold, #e8c46c); }
.gal__pick-order button:disabled[b-h0a2bh5cib] { opacity: 0.3; cursor: default; }

.gal__pick-actions[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.85rem; }
/* Shown only when leaving would destroy work. Wears the reserved consequential tint rather than gold —
   this is the one moment on this surface that can cost the grower something. "Discard them" takes the
   ghost treatment and "Keep editing" the solid one, so the SAFE way out stays the easy one to hit. */
.gal__pick-discard[b-h0a2bh5cib] {
    display: flex; flex-wrap: wrap; align-items: center; gap: 0.5rem;
    margin-top: 0.6rem; padding: 0.6rem 0.75rem;
    border: 1px solid rgba(201, 138, 106, 0.5); border-radius: 8px;
    background: rgba(201, 138, 106, 0.08);
}
.gal__pick-discard-q[b-h0a2bh5cib] {
    flex: 1 1 100%; margin: 0;
    font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.04em;
    color: #c98a6a;
}

/* The pick badge replaces the subject glyph while curating — same corner, one job at a time. */
.gal__tile-pick[b-h0a2bh5cib] {
    position: absolute; top: 4px; left: 4px;
    display: flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 50%;
    font-family: 'Space Mono', monospace; font-size: 0.62rem;
    background: rgba(0, 0, 0, 0.68); color: var(--hx-text-muted, #9a927e);
    border: 1px solid var(--hx-border, #3a382e);
}
.gal__tile-pick.is-on[b-h0a2bh5cib] {
    background: var(--hx-gold, #e8c46c); color: #111; border-color: var(--hx-gold, #e8c46c);
}
.gal__tile.is-picked[b-h0a2bh5cib] { border-color: var(--hx-gold, #e8c46c); }

/* ── Subject filter ─────────────────────────────────── */
.gal__filters[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-bottom: 0.9rem; }
.gal__filter[b-h0a2bh5cib] {
    display: inline-flex; align-items: center; gap: 0.3rem;
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.03em;
    padding: 0.4rem 0.7rem; border-radius: 999px; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-text-2, #cbc3b0);
    border: 1px solid var(--hx-border, #2a2820);
    transition: border-color 0.15s ease, color 0.15s ease, background 0.15s ease;
}
.gal__filter:hover[b-h0a2bh5cib] { border-color: var(--hx-gold, #e8c46c); }
.gal__filter.is-on[b-h0a2bh5cib] {
    background: rgba(232, 196, 108, 0.12); color: var(--hx-gold, #e8c46c);
    border-color: var(--hx-gold, #e8c46c);
}
.gal__filter-ico[b-h0a2bh5cib] { font-size: 0.9rem; }

.gal__count[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.68rem; letter-spacing: 0.05em;
    color: var(--hx-text-muted, #9a927e); margin: 0 0 0.6rem;
}
.gal__count-n[b-h0a2bh5cib] { color: var(--hx-gold, #e8c46c); }

/* ── The wall ───────────────────────────────────────── */
/* auto-fill so a phone gets 3 up and a desktop gets as many as fit — the grid IS the page. */
.gal__grid[b-h0a2bh5cib] {
    display: grid; gap: 0.4rem;
    grid-template-columns: repeat(auto-fill, minmax(104px, 1fr));
}
@media (min-width: 640px) {
    .gal__grid[b-h0a2bh5cib] { gap: 0.6rem; grid-template-columns: repeat(auto-fill, minmax(148px, 1fr)); }
}

.gal__tile[b-h0a2bh5cib] {
    position: relative; aspect-ratio: 3 / 4; overflow: hidden; cursor: pointer;
    border-radius: 10px; background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #2a2820);
    display: flex; align-items: center; justify-content: center;
}
/* A log photo is read-only here (doc 38 §6.2) — the muted border says "this one lives somewhere else". */
.gal__tile.is-log[b-h0a2bh5cib] { border-color: rgba(42, 40, 32, 0.55); }
.gal__tile:hover[b-h0a2bh5cib] { border-color: rgba(232, 196, 108, 0.45); }
.gal__tile-img[b-h0a2bh5cib] { width: 100%; height: 100%; object-fit: cover; display: block; }
.gal__tile-demo[b-h0a2bh5cib] { font-size: 2rem; opacity: 0.45; }

.gal__tile-type[b-h0a2bh5cib] {
    position: absolute; top: 4px; left: 4px;
    display: flex; align-items: center; justify-content: center;
    width: 22px; height: 22px; border-radius: 50%; font-size: 0.7rem;
    background: rgba(0, 0, 0, 0.62);
}

.gal__tile-day[b-h0a2bh5cib] {
    position: absolute; right: 4px; bottom: 4px;
    font-family: 'Space Mono', monospace; font-size: 0.55rem; letter-spacing: 0.06em;
    padding: 0.15rem 0.35rem; border-radius: 999px; text-decoration: none;
    background: rgba(0, 0, 0, 0.72); color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.35);
}
.gal__tile-day:hover[b-h0a2bh5cib] { background: rgba(232, 196, 108, 0.2); }
/* Mid-curation the day badge is a label, not a link — don't invite a tap that discards unsaved picks. */
.gal__tile-day.is-static[b-h0a2bh5cib] { color: var(--hx-text-muted, #9a927e); border-color: var(--hx-border, #3a382e); }

.gal__more[b-h0a2bh5cib] { display: flex; justify-content: center; margin-top: 1.1rem; }

/* ── Empty ──────────────────────────────────────────── */
.gal__empty[b-h0a2bh5cib] {
    display: flex; flex-direction: column; align-items: center; gap: 0.4rem;
    padding: 2.5rem 1rem; text-align: center;
    border: 1px dashed var(--hx-border, #2a2820); border-radius: 12px;
}
.gal__empty-ico[b-h0a2bh5cib] { font-size: 2.4rem; opacity: 0.4; }
.gal__empty p[b-h0a2bh5cib] {
    margin: 0; font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; color: var(--hx-text-2, #cbc3b0);
}
.gal__empty-hint[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace !important; font-size: 0.68rem !important;
    color: var(--hx-text-muted, #9a927e) !important;
}

/* ── Overlays: lightbox + delete confirm ────────────── */
.gal__overlay[b-h0a2bh5cib] {
    position: fixed; inset: 0; z-index: 60; cursor: zoom-out;
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.6rem;
    padding: 1.25rem; background: rgba(0, 0, 0, 0.88);
}
.gal__zoom-img[b-h0a2bh5cib] {
    max-width: 100%; max-height: 82vh; object-fit: contain; border-radius: 10px;
}
.gal__zoom-cap[b-h0a2bh5cib] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.05em;
    color: var(--hx-gold, #e8c46c);
}

.gal__confirm[b-h0a2bh5cib] {
    cursor: default; max-width: 22rem; width: 100%; padding: 1.1rem;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    border-radius: 14px;
}
.gal__confirm-title[b-h0a2bh5cib] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1.4rem; letter-spacing: 0.04em;
    color: var(--hx-fg, #fff); margin: 0 0 0.4rem;
}
.gal__confirm-body[b-h0a2bh5cib] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; line-height: 1.5;
    color: var(--hx-text-2, #cbc3b0); margin: 0 0 0.9rem;
}
.gal__confirm-actions[b-h0a2bh5cib] { display: flex; flex-wrap: wrap; gap: 0.5rem; }
/* /Components/Pages/Runs/LogDay.razor.rz.scp.css */
/* ──────────────────────────────────────────────────────────
   LogDay — ld__ namespace
   ────────────────────────────────────────────────────────── */

.ld__loading[b-pweotox1zd] {
    padding: 4rem 1.5rem;
}

.ld__loading-text[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    color: var(--hx-muted);
    font-size: 0.85rem;
}

/* ── Header ──────────────────────────────────────────────── */
.ld__header[b-pweotox1zd] {
    padding-top: 1.5rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--hx-border, #222);
    margin-bottom: 0;
}

.ld__back[b-pweotox1zd] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.86rem;
    color: var(--hx-muted);
    text-decoration: none;
    margin-bottom: 0.75rem;
    letter-spacing: 0.05em;
}

.ld__back:hover[b-pweotox1zd] { color: var(--hx-gold, #d4af37); }

.ld__title-row[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

/* Day-by-day navigator — arrows flanking the date picker (mirrors WeekView's week nav). */
.ld__day-nav[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0.5rem;
    margin-left: auto;
}
.ld__day-nav-btn[b-pweotox1zd] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: 1px solid var(--hx-border, #333);
    border-radius: 4px;
    background: var(--hx-surface-1, #111);
    color: var(--hx-fg, #fff);
    font-size: 1.25rem;
    line-height: 1;
    cursor: pointer;
    flex-shrink: 0;
    transition: border-color 0.15s, color 0.15s;
}
.ld__day-nav-btn:hover:not(:disabled)[b-pweotox1zd] { border-color: var(--hx-gold, #d4af37); color: var(--hx-gold, #d4af37); }
.ld__day-nav-btn:disabled[b-pweotox1zd] { opacity: 0.25; cursor: default; }

.ld__headline[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2rem, 5vw, 3rem);
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0;
    flex: 1;
}

.hx-input--sm[b-pweotox1zd] {
    padding: 0.35rem 0.65rem;
    font-size: 0.98rem;
}

/* ── Momentum bar ────────────────────────────────────────── */
.ld__momentum[b-pweotox1zd] {
    padding-top: 1rem;
    padding-bottom: 0.75rem;
    border-bottom: 1px solid var(--hx-border, #222);
    margin-bottom: 2rem;
}

.ld__momentum-bar-track[b-pweotox1zd] {
    height: 4px;
    background: var(--hx-surface-2, #1a1a1a);
    border-radius: 2px;
    overflow: hidden;
    margin-bottom: 0.5rem;
}

.ld__momentum-bar-fill[b-pweotox1zd] {
    height: 100%;
    background: var(--hx-gold, #d4af37);
    border-radius: 2px;
    transition: width 0.3s ease;
}

.ld__momentum-meta[b-pweotox1zd] {
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.ld__momentum-label[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    color: var(--hx-muted);
    letter-spacing: 0.03em;
}

.ld__momentum-pct[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.1rem;
    letter-spacing: 0.08em;
    color: var(--hx-gold, #d4af37);
}

/* ── Edit-mode banner ────────────────────────────────────── */
.ld__edit-banner[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0.6rem;
    background: rgba(100, 180, 255, 0.06);
    border: 1px solid rgba(100, 180, 255, 0.22);
    border-radius: 4px;
    padding: 0.65rem 1rem;
    margin-bottom: 1.5rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: #7bc8f0;
}

.ld__edit-icon[b-pweotox1zd] {
    font-size: 1rem;
    color: #7bc8f0;
}

/* ── Growth stage strip ──────────────────────────────────── */
.ld__stage[b-pweotox1zd] {
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.75rem 1.25rem;
    padding-top: 1rem;
    padding-bottom: 1rem;
    border-bottom: 1px solid var(--hx-border, #222);
}
.ld__stage-head[b-pweotox1zd] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
}
.ld__stage-eyebrow[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c);   /* gold, not muted (operator, 2026-09-21) */
}
.ld__stage-now[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.6rem;
    letter-spacing: 0.02em;
    color: #f6efdd;
    line-height: 1;
}
/* Purple tint (operator, 2026-07-28) — the standard tinted-card recipe: faint same-hue gradient fill, a
   #926ec4 border, #b79ae0 for text on dark. Marks the stage change as a lifecycle-transition control rather
   than one more gold action competing with the page's brand accents. */
.ld__stage-actions[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
    margin-left: auto;
    background: linear-gradient(135deg, rgba(146,110,196,.16), rgba(146,110,196,.03));
    border: 1px solid rgba(146,110,196,.4);
    border-radius: 4px;
    padding: 0.7rem 0.9rem;
    transition: border-color .15s;
}
.ld__stage-actions:hover[b-pweotox1zd] { border-color: #926ec4; }

.ld__stage-advance[b-pweotox1zd] {
    background: rgba(146,110,196,.12);
    border: 1px solid rgba(146,110,196,.4);
    color: #b79ae0;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    font-weight: 700;
    border-radius: 2px;
    padding: 0.5rem 0.9rem;
    cursor: pointer;
    transition: background .15s, border-color .15s;
}
.ld__stage-advance:hover[b-pweotox1zd] { background: rgba(146,110,196,.24); border-color: #926ec4; }
/* Same purple tint as .ld__stage-actions — this is the same slot mid-flow (the "when did it happen?" step),
   so it must not change colour underneath the grower. */
/* One compact sheet beside the stage label (operator mock, 2026-09-21). History, so it is not re-litigated:
   2026-08-31 made it a tall column (a wrapping row had floated the buttons mid-panel); 2026-09-20 gave that
   column its own row because, beside the label, its 450px height left a void. Now the sheet is short — a
   question and ONE field row with the actions stacked at its right edge — so it sits beside the label
   again with no void, and the phone layout is the same row simply wrapping. */
.ld__stage-confirm[b-pweotox1zd] {
    display: flex;
    flex-direction: column;
    gap: 0.75rem;
    flex: 1 1 24rem;
    max-width: 48rem;
    background: linear-gradient(135deg, rgba(146,110,196,.16), rgba(146,110,196,.03));
    border: 1px solid rgba(146,110,196,.4);
    border-radius: 4px;
    padding: 0.9rem 1.1rem;
}
/* The decision. Leads the sheet, so it reads as the thing being asked rather than as more prose. */
.ld__stage-confirm-q[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 1.02rem;
    font-weight: 600;
    line-height: 1.35;
    color: var(--hx-fg, #fff);
    margin: 0;
}
/* Fields left, actions right; wraps on a phone so the actions drop under the fields. */
.ld__stage-confirm-row[b-pweotox1zd] {
    display: flex;
    align-items: flex-end;
    flex-wrap: wrap;
    gap: 0.9rem 1.25rem;
}
.ld__stage-field[b-pweotox1zd] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    flex: 0 1 auto;
}
.ld__stage-field .hx-input[b-pweotox1zd] { max-width: 14rem; }
.ld__stage-field-label[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-muted, #8a8270);
}
/* Footnotes under the control row: "* - text", one per line, in the sheet's quiet register. */
.ld__stage-notes[b-pweotox1zd] {
    list-style: none;
    margin: 0;
    padding: 0.1rem 0 0;
    display: flex;
    flex-direction: column;
    gap: 0.25rem;
}
.ld__stage-notes li[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    line-height: 1.4;
    color: var(--hx-muted, #8a8270);
    padding-left: 1.4rem;
    text-indent: -1.4rem;
}
.ld__stage-notes li[b-pweotox1zd]::before {
    content: "* - ";
    color: var(--hx-gold, #e8c46c);
    font-family: 'Space Mono', monospace;
}
/* Right-anchored, Cancel beside the primary (operator, 2026-09-21). Cancel is a text-weight control, not a
   second button (2026-08-31) — two buttons side by side read as two equal choices, and this one has a default. */
.ld__stage-confirm-actions[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 1rem;
    margin-left: auto;
}
.ld__stage-cancel[b-pweotox1zd] {
    background: none;
    border: 0;
    padding: 0.35rem 0.25rem;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    color: var(--hx-muted, #8a8270);
    cursor: pointer;
}
.ld__stage-cancel:hover[b-pweotox1zd],
.ld__stage-cancel:focus-visible[b-pweotox1zd] { color: var(--hx-fg, #fff); }
/* Third state of the same slot ("moving to X when you save") — same purple tint, so the stage control keeps
   one identity from offer → confirm → pending. */
.ld__stage-pending[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    flex-wrap: wrap;
    margin-left: auto;
    font-size: 0.85rem;
    color: #b79ae0;
    background: linear-gradient(135deg, rgba(146,110,196,.16), rgba(146,110,196,.03));
    border: 1px solid rgba(146,110,196,.4);
    border-radius: 4px;
    padding: 0.7rem 0.9rem;
}
.ld__stage-pending strong[b-pweotox1zd] { color: #f6efdd; }
.ld__stage-pending-tent[b-pweotox1zd] { color: #d8cdb6; }
.ld__stage-undo[b-pweotox1zd] {
    background: none;
    border: none;
    color: var(--hx-muted, #8a8270);
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.78rem;
    text-decoration: underline;
    cursor: pointer;
    padding: 0;
}
.ld__stage-undo:hover[b-pweotox1zd] { color: #b79ae0; }

/* ── Body layout ─────────────────────────────────────────── */
.ld__body[b-pweotox1zd] {
    display: flex;
    gap: 2.5rem;
    align-items: flex-start;
    padding-bottom: 6rem; /* space for sticky submit bar */
}

.ld__main[b-pweotox1zd] {
    flex: 1;
    min-width: 0;
}

/* ── Sections ────────────────────────────────────────────── */
.ld__section[b-pweotox1zd] {
    margin-bottom: 2rem;
    padding-bottom: 2rem;
    border-bottom: 1px solid var(--hx-border, #1e1e1e);
}

.ld__section:last-child[b-pweotox1zd] {
    border-bottom: none;
}

.ld__section-title[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.15rem;
    letter-spacing: 0.1em;
    /* Section headers gold, app-wide header treatment (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 1.25rem;
    display: flex;
    align-items: center;
    gap: 0.5rem;
}

/* The same gold title on a field (Photos, Observations) — tighter below, since a control follows at once. */
.ld__section-title--field[b-pweotox1zd] { margin-bottom: 0.5rem; }
/* On a gold title the count stays gold with the title ("PHOTOS up to 6"); only the star legend is the white cue (operator, 2026-09-21). */
.ld__section-title .ld__label-hint[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); }
.ld__section-title .ld__label-hint--cue[b-pweotox1zd] { color: var(--hx-text-heading, #f6efdd); }
/* Demoted: plain heading ink. Photos, Observations and Environment are the log's paramount sections and
   carry the gold; Actions are optional (operator, 2026-09-21). */
.ld__section-title--quiet[b-pweotox1zd] { color: var(--hx-text-heading, #f6efdd); }
.ld__sub-title[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--hx-muted);
    margin: 1.25rem 0 0.75rem;
}

/* Fed: Liquid | Dry toggle — flips the dose unit + hides water/runoff for a dry top-dress. */
/* Feed type — a clean radio group (operator, 2026-07-17: the emoji segmented buttons read as jarring). */
.ld__feed-type[b-pweotox1zd] { display: inline-flex; gap: 0.5rem; margin-bottom: 0.85rem; }
.ld__feed-radio[b-pweotox1zd] {
    display: inline-flex; align-items: center; gap: 0.45rem;
    padding: 0.4rem 0.85rem;
    border: 1px solid var(--hx-border, #333); border-radius: 8px;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem;
    color: var(--hx-muted); cursor: pointer;
    transition: border-color 0.12s, color 0.12s, background 0.12s;
}
.ld__feed-radio:hover[b-pweotox1zd] { border-color: var(--hx-fg, #ccc); }
.ld__feed-radio.is-active[b-pweotox1zd] {
    border-color: var(--hx-gold, #e8c46c);
    color: var(--hx-fg, #f6efdd);
    background: rgba(232, 196, 108, 0.08);
}
.ld__feed-radio input[b-pweotox1zd] { accent-color: var(--hx-gold, #e8c46c); margin: 0; cursor: pointer; }

/* Nutrients fed — a dropdown of matching-form nutes; each pick drops in as a dose row (operator, 2026-07-18,
   scales to a 10-20 item shelf where a checklist would be a wall). */
.ld__feed-empty[b-pweotox1zd] { font-size: 0.85rem; color: var(--hx-text-2, #d8cdb6); margin: 0 0 0.5rem; }
.ld__feed-link[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); }
.ld__feed-add[b-pweotox1zd] { max-width: 22rem; margin-bottom: 0.85rem; cursor: pointer; }
.ld__feed-lines[b-pweotox1zd] { display: flex; flex-direction: column; gap: 0.6rem; margin-bottom: 0.85rem; }
/* Each nute is its own feeding block — product header + its pour/runoff (or grams for dry). */
.ld__feed-block[b-pweotox1zd] {
    padding: 0.65rem 0.8rem;
    border: 1px solid var(--hx-border, #2a2a2a); border-radius: 8px;
    background: rgba(232, 196, 108, 0.05);
}
.ld__feed-block-head[b-pweotox1zd] { display: flex; align-items: center; gap: 0.5rem; margin-bottom: 0.6rem; }
.ld__feed-product-select[b-pweotox1zd] { flex: 1 1 auto; min-width: 0; cursor: pointer; }
.ld__feed-product[b-pweotox1zd] { min-width: 0; font-size: 0.9rem; font-weight: 600; color: var(--hx-fg, #f6efdd); }
.ld__feed-x[b-pweotox1zd] {
    flex: 0 0 auto; background: none; border: 0; cursor: pointer;
    color: var(--hx-muted, #8a8270); font-size: 0.8rem; line-height: 1; padding: 0.2rem 0.3rem;
}
.ld__feed-x:hover[b-pweotox1zd] { color: #e0863c; }

/* ── Plant section ───────────────────────────────────────── */
.ld__plant-name[b-pweotox1zd] {
    font-size: 2rem;
    color: var(--hx-fg, #fff);
}

.ld__plant-dot[b-pweotox1zd] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--hx-gold, #d4af37);
    flex-shrink: 0;
}

/* ── Fields ──────────────────────────────────────────────── */
.ld__field[b-pweotox1zd] {
    margin-bottom: 1rem;
}

.ld__field:last-child[b-pweotox1zd] { margin-bottom: 0; }

.ld__label[b-pweotox1zd] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    letter-spacing: 0.06em;
    text-transform: uppercase;
    color: var(--hx-muted);
    margin-bottom: 0.4rem;
}

.ld__field-row[b-pweotox1zd] {
    display: flex;
    gap: 1rem;
}

.ld__field-row .ld__field[b-pweotox1zd] {
    flex: 1;
}

/* A field row whose columns carry hint paragraphs. Scoped with a modifier rather than changing .ld__field-row
   — the other three rows hold bare inputs and wrap fine as they are.
   The wrap is CONTAINER-driven, not a breakpoint: these live in the environment sidebar, which is narrow on
   a desktop too, so ~150px per column would give a hint four words per line. flex-basis is the width below
   which two columns stop being worth it, and the row stacks on its own wherever that happens — sidebar or
   phone, without either having to know about the other. align-items:start keeps the shorter column's field
   from being stretched by the taller column's hint. */
.ld__field-row--hinted[b-pweotox1zd] {
    flex-wrap: wrap;
    align-items: flex-start;
}
.ld__field-row--hinted .ld__field[b-pweotox1zd] {
    flex: 1 1 13rem;
}

.ld__input-unit[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0;
}

.ld__input-unit .hx-input[b-pweotox1zd] {
    border-radius: 4px 0 0 4px;
    flex: 1;
    min-width: 3rem;
}

/* The unit chip (°F, %, in…) already labels these fields, so the native
   number spinners are redundant — and they overlap/clip the value in the
   narrow two-column rows. Hide them so the number gets the full width. */
.ld__input-unit .hx-input[b-pweotox1zd]::-webkit-outer-spin-button,
.ld__input-unit .hx-input[b-pweotox1zd]::-webkit-inner-spin-button {
    -webkit-appearance: none;
    margin: 0;
}
.ld__input-unit .hx-input[type="number"][b-pweotox1zd] {
    -moz-appearance: textfield;
    appearance: textfield;
}

/* A unit the grower PICKS rather than reads — sits where the static .ld__unit chip would, so the field keeps
   its shape whether the unit is fixed (°F, mS) or chosen (mL/L/gal). */
.ld__unit-select[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.86rem;
    color: var(--hx-fg, #f6efdd);
    background: var(--hx-surface-2, #1a1a1a);
    border: 1px solid var(--hx-border, #333);
    border-left: none;
    padding: 0 0.4rem;
    height: 2.4rem;
    border-radius: 0 4px 4px 0;
    cursor: pointer;
}
.ld__unit-select:hover[b-pweotox1zd] { border-color: var(--hx-gold, #e8c46c); }

.ld__unit[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.86rem;
    color: var(--hx-muted);
    background: var(--hx-surface-2, #1a1a1a);
    border: 1px solid var(--hx-border, #333);
    border-left: none;
    padding: 0 0.6rem;
    height: 2.4rem;
    display: flex;
    align-items: center;
    border-radius: 0 4px 4px 0;
    white-space: nowrap;
}

.ld__note[b-pweotox1zd] {
    resize: vertical;
    min-height: 13rem;
}

.ld__env-note[b-pweotox1zd] {
    font-size: 0.82rem;
    color: var(--hx-muted);
    line-height: 1.45;
    margin: 0.25rem 0 1rem;
}

.ld__plant-eyebrow[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    font-family: 'Space Mono', monospace;
    /* Plant name eyebrow bumped up for presence (operator, 2026-07-26) — was 0.72rem. */
    font-size: 1rem;
    letter-spacing: 0.08em;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.35rem;
}

/* ── Optional environment group (doesn't count toward 100%) ── */
.ld__env-optional[b-pweotox1zd] {
    margin-top: 1rem;
    padding: 0.85rem 0.9rem 0.95rem;
    background: rgba(255, 255, 255, 0.025);
    border: 1px dashed rgba(255, 255, 255, 0.12);
    border-radius: 8px;
}
.ld__env-optional-head[b-pweotox1zd] {
    display: flex;
    align-items: baseline;
    gap: 0.6rem;
    flex-wrap: wrap;
    margin-bottom: 0.7rem;
}
.ld__env-optional-tag[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    font-weight: 700;
    letter-spacing: 0.14em;
    color: #8a8270;
    background: rgba(255, 255, 255, 0.06);
    border-radius: 3px;
    padding: 0.15rem 0.45rem;
}
.ld__env-optional-hint[b-pweotox1zd] {
    font-size: 0.82rem;
    color: var(--hx-muted, #8a8270);
}

/* Per-field note inside OPTIONAL — reassures that a blank field costs nothing (e.g. height under LST). */
.ld__field-hint[b-pweotox1zd] {
    font-size: 0.78rem;
    color: var(--hx-muted, #8a8270);
    line-height: 1.45;
    margin: 0.35rem 0 0;
}

.ld__note-tools[b-pweotox1zd] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
    margin-top: 0.4rem;
}

.ld__char-count[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    text-align: right;
    margin: 0;
}

/* ── Auto comment quick-fill ─────────────────────────────── */
.ld__autocomment[b-pweotox1zd] {
    position: relative;
}
.ld__autocomment-btn[b-pweotox1zd] {
    background: rgba(255,255,255,.03);
    border: 1px solid var(--hx-border, #333);
    color: #b0a890;
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    letter-spacing: 0.04em;
    border-radius: 4px;
    padding: 0.4rem 0.7rem;
    cursor: pointer;
    transition: border-color .15s, color .15s;
    white-space: nowrap;
}
.ld__autocomment-btn:hover[b-pweotox1zd] {
    border-color: rgba(232,196,108,.5);
    color: #e8c46c;
}
.ld__autocomment-menu[b-pweotox1zd] {
    position: absolute;
    top: calc(100% + 4px);
    left: 0;
    z-index: 20;
    min-width: 12rem;
    background: #14130f;
    border: 1px solid rgba(232,196,108,.25);
    border-radius: 6px;
    padding: 0.3rem;
    display: flex;
    flex-direction: column;
    box-shadow: 0 8px 24px rgba(0,0,0,.5);
}
.ld__autocomment-item[b-pweotox1zd] {
    background: none;
    border: none;
    text-align: left;
    color: #d8cdb6;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.85rem;
    padding: 0.5rem 0.6rem;
    border-radius: 4px;
    cursor: pointer;
    transition: background .12s, color .12s;
}
.ld__autocomment-item:hover[b-pweotox1zd] {
    background: rgba(232,196,108,.12);
    color: #f6efdd;
}

/* ── Action chips ────────────────────────────────────────── */
.ld__action-chips[b-pweotox1zd] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
}

/* Pill wrapper = the frame (chip + optional ✕ as one unit). Active/focused state lives here. */
.ld__action-pill[b-pweotox1zd] {
    display: inline-flex;
    align-items: center;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #2a2a2a);
    border-radius: 100px;
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}
.ld__action-pill:hover[b-pweotox1zd] { border-color: var(--hx-fg, #ccc); }
.ld__action-pill.is-active[b-pweotox1zd] {
    border-color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.08);
}
/* The one whose detail box is currently open — a stronger ring so you know where your fields belong. */
.ld__action-pill.is-focused[b-pweotox1zd] {
    border-color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.16);
    box-shadow: inset 0 0 0 1px rgba(212, 175, 55, 0.5);
}

.ld__action-chip[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0.4rem;
    padding: 0.45rem 0.85rem;
    background: transparent;
    border: 0;
    border-radius: 100px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.94rem;
    color: var(--hx-muted);
    cursor: pointer;
    transition: color 0.15s;
    white-space: nowrap;
}
.ld__action-pill:hover .ld__action-chip[b-pweotox1zd] { color: var(--hx-fg, #fff); }
.ld__action-pill.is-active .ld__action-chip[b-pweotox1zd] { color: var(--hx-gold, #d4af37); }

/* Remove — the deliberate uncheck. A plain tap on the pill only ever checks + focuses. */
.ld__action-x[b-pweotox1zd] {
    background: transparent;
    border: 0;
    color: var(--hx-muted, #8a8270);
    cursor: pointer;
    font-size: 0.82rem;
    line-height: 1;
    padding: 0.5rem 0.7rem 0.5rem 0.15rem;
}
.ld__action-x:hover[b-pweotox1zd] { color: #e0863c; }

.ld__action-icon[b-pweotox1zd] {
    font-size: 0.98rem;
    line-height: 1;
}

.ld__actions-hint[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    color: var(--hx-muted, #8a8270);
    margin: 0 0 0.75rem;
}

/* Caption under a stable sub-title (e.g. the liquid panel's "covers…" line). */
.ld__sub-note[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.88rem;
    color: var(--hx-muted, #8a8270);
    margin: 0 0 0.9rem;
}

/* ── Water detail panel ──────────────────────────────────── */
.ld__water-detail[b-pweotox1zd] {
    background: var(--hx-surface-1, #0e0e0e);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    padding: 1rem;
    margin-top: 1rem;
}

/* ── Environment sidebar ─────────────────────────────────── */
.ld__env[b-pweotox1zd] {
    width: 280px;
    flex-shrink: 0;
}

.ld__env-card[b-pweotox1zd] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    padding: 1.25rem;
    margin-bottom: 0;
    border-bottom: none;
}

/* ── VPD display ─────────────────────────────────────────── */
.ld__vpd[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0 1.1rem;
    padding: 0.7rem 1rem;
    border-radius: 4px;
    margin: 0.75rem 0 1rem;
    border: 1px solid var(--hx-border, #333);
}

/* Two-cell tile (operator mock, 2026-09-21): the reading — label over number — then a divider that takes the
   tile's tint (border-color: inherit), then the verdict. Status classes below colour the whole tile as before. */
.ld__vpd-reading[b-pweotox1zd] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.1rem;
    padding-right: 1.1rem;
    border-right: 1px solid;
    border-color: inherit;
    flex: 0 0 auto;
}

.ld__vpd-value[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.65rem;
    line-height: 1;
    letter-spacing: 0.04em;
}

.ld__vpd-unit[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.12em;
    color: var(--hx-muted);
}

.ld__vpd-side[b-pweotox1zd] {
    display: flex;
    flex-direction: column;
    gap: 0.15rem;
    min-width: 0;
}

.ld__vpd-label[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
}

/* Always-visible blank state — VPD sits waiting for temp + humidity, so
   beginners learn it matters (and that both values feed it) before they
   ever fill it in. */
.ld__vpd--blank[b-pweotox1zd] {
    border-style: dashed;
    border-color: rgba(255,255,255,0.14);
    color: var(--hx-muted, #8a8270);
    opacity: 0.85;
}
.ld__vpd--blank .ld__vpd-value[b-pweotox1zd] { color: var(--hx-muted, #8a8270); }
.ld__vpd-learn[b-pweotox1zd] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: #8a8270;
    text-decoration: none;
    margin: -0.5rem 0 1rem;
    letter-spacing: 0.02em;
    line-height: 1.4;
    transition: color 0.15s;
}
.ld__vpd-learn:hover[b-pweotox1zd] { color: #e8c46c; }

/* VPD gauge scale — the one place red is intended: red (fix it) → amber (caution) → green (dialed in).
   A diagnostic, not a celebration surface, so it speaks the universal grower language, not the brand gold. */
.vpd-good[b-pweotox1zd]    { border-color: #6bcf7f55; color: #6bcf7f; background: rgba(107,207,127,0.06); }
.vpd-caution[b-pweotox1zd] { border-color: #ffb02e66; color: #ffb02e; background: rgba(255,176,46,0.06); }
.vpd-danger[b-pweotox1zd]  { border-color: #ff453a66; color: #ff453a; background: rgba(255,69,58,0.07); }

/* ── Submit bar ──────────────────────────────────────────── */
.ld__submit-bar[b-pweotox1zd] {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--hx-bg, #000);
    border-top: 1px solid var(--hx-border, #222);
    padding: 0.85rem 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
    z-index: 50;
}

.ld__submit-actions[b-pweotox1zd] {
    display: flex;
    gap: 0.75rem;
    justify-content: flex-end;
}

.ld__error[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: #ff453a;
    text-align: right;
    margin: 0;
}

/* ── Photo upload (multi-photo, doc 17) ──────────────────── */
.ld__photo-col[b-pweotox1zd] {
    display: flex;
    gap: 1.25rem;
    align-items: flex-start;
}

.ld__photo-side[b-pweotox1zd] {
    flex-shrink: 0;
    width: 320px;
}

.ld__label-hint[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
    letter-spacing: 0.04em;
    text-transform: none;
}

.ld__photos-grid[b-pweotox1zd] {
    display: grid;
    /* minmax(0, 1fr), not 1fr: bare 1fr is minmax(auto, 1fr), and the Add tile's aspect-ratio:1/1
       transfers its content HEIGHT into a min-content WIDTH (~180px). Whichever column it lands in
       then outgrows the other, and the slots in the wide column get tall enough that overflow:hidden
       clips their type picker. Visible only from the 5th photo, when the tile first shares a row
       (operator, 2026-09-17). Pinning the minimum to 0 keeps the columns equal regardless. */
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.6rem;
    margin-top: 0.35rem;
}

/* Each slot: thumbnail + type picker below, star + remove overlaid. */
.ld__photo-slot[b-pweotox1zd] {
    position: relative;
    display: flex;
    flex-direction: column;
    border-radius: 6px;
    overflow: hidden;
    border: 1px solid var(--hx-border, #333);
    background: rgba(255,255,255,0.02);
}

.ld__photo-slot.is-primary[b-pweotox1zd] {
    border-color: var(--hx-gold, #e8c46c);
    box-shadow: 0 0 0 1px var(--hx-gold, #e8c46c);
}

.ld__photo-thumb[b-pweotox1zd] {
    width: 100%;
    aspect-ratio: 1 / 1;
    object-fit: cover;
    display: block;
    cursor: pointer;
}

.ld__photo-star[b-pweotox1zd],
.ld__photo-x[b-pweotox1zd] {
    position: absolute;
    top: 0.3rem;
    background: rgba(0,0,0,0.62);
    border: none;
    border-radius: 4px;
    color: #fff;
    cursor: pointer;
    line-height: 1;
    padding: 0.22rem 0.36rem;
}

.ld__photo-star[b-pweotox1zd] {
    left: 0.3rem;
    font-size: 0.95rem;
    color: #d8d2c4;
}

.ld__photo-star.is-on[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); }

.ld__photo-x[b-pweotox1zd] {
    right: 0.3rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
}

.ld__photo-x:hover[b-pweotox1zd] { background: rgba(255,69,58,0.85); }

.ld__photo-type[b-pweotox1zd] {
    width: 100%;
    border: none;
    border-top: 1px solid var(--hx-border, #333);
    background: rgba(0,0,0,0.35);
    color: var(--hx-fg, #fff);
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.02em;
    padding: 0.34rem 0.4rem;
    cursor: pointer;
}

/* Add tile — mirrors slot dimensions so the grid stays even. */
.ld__photo-add[b-pweotox1zd] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 0.3rem;
    aspect-ratio: 1 / 1;
    border: 1px dashed var(--hx-border, #333);
    border-radius: 6px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    text-align: center;
}

.ld__photo-add:hover[b-pweotox1zd] {
    border-color: var(--hx-gold, #d4af37);
    background: rgba(212, 175, 55, 0.04);
}

.ld__photo-add-icon[b-pweotox1zd] { font-size: 1.5rem; line-height: 1; }

.ld__photo-add-label[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    color: var(--hx-fg, #fff);
}

/* Quiet spec line under the label — guidance, not an instruction. Sits in the technical
   monospace register and stays well below the label in contrast so the tile still reads
   as one button. Drops out on the narrowest tiles, where it would crowd the icon. */
.ld__photo-add-spec[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    line-height: 1.45;
    letter-spacing: 0.02em;
    color: var(--hx-muted, #8a8377);
    opacity: 0.75;
    padding: 0 0.35rem;
}

@media (max-width: 380px) {
    .ld__photo-add-spec[b-pweotox1zd] { display: none; }
}

.ld__photo-error[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: #ff453a;
    margin-top: 0.4rem;
}

/* ── Larger photo preview — a modest centered card (doc 17) ── */
.ld__zoom[b-pweotox1zd] {
    position: fixed;
    inset: 0;
    z-index: 300;
    background: rgba(4, 4, 3, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
}

.ld__zoom-card[b-pweotox1zd] {
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, #2a2620);
    border-radius: 10px;
    padding: 0.75rem;
    display: flex;
    flex-direction: column;
    gap: 0.55rem;
    max-width: min(520px, 92vw);
}

.ld__zoom-head[b-pweotox1zd] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 0.75rem;
}

.ld__zoom-cap[b-pweotox1zd] {
    display: flex;
    align-items: center;
    gap: 0.35rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.74rem;
    letter-spacing: 0.03em;
    color: #d8d2c4;
}

.ld__zoom-star[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); }

/* Scaled-up view of the same photo — whole image, comfortably larger than the thumbnail. */
.ld__zoom-img[b-pweotox1zd] {
    width: 100%;
    max-height: 60vh;
    object-fit: contain;
    border-radius: 6px;
    display: block;
}

.ld__zoom-close[b-pweotox1zd] {
    flex-shrink: 0;
    background: rgba(255,255,255,0.06);
    border: 1px solid var(--hx-border, #2a2620);
    border-radius: 6px;
    color: #fff;
    font-size: 0.85rem;
    line-height: 1;
    padding: 0.35rem 0.5rem;
    cursor: pointer;
    transition: background 0.15s;
}

.ld__zoom-close:hover[b-pweotox1zd] { background: rgba(255,255,255,0.14); }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 800px) {
    .ld__body[b-pweotox1zd] {
        flex-direction: column;
        /* align-items is CROSS-axis: the base `flex-start` aligns tops in a row, but once stacked it means
           "don't stretch horizontally" and the flex:1 main column collapses to its content width. */
        align-items: stretch;
    }

    .ld__env[b-pweotox1zd] {
        width: 100%;
    }

    .ld__submit-actions[b-pweotox1zd] {
        justify-content: stretch;
        flex-direction: column-reverse;
    }

    .ld__submit-actions .hx-btn[b-pweotox1zd] {
        width: 100%;
        text-align: center;
    }

    .ld__photo-col[b-pweotox1zd] {
        flex-direction: column;
        align-items: stretch;
    }

    .ld__photo-side[b-pweotox1zd] {
        width: 100%;
    }

    .ld__photos-grid[b-pweotox1zd] {
        grid-template-columns: repeat(3, minmax(0, 1fr));   /* same reason as the desktop rule */
    }

    /* Stage-confirm on a phone (operator, 2026-08-31; compacted 2026-09-21). The sheet owns the full width,
       each field takes the whole row, and the actions drop under them: the primary full-width and Cancel
       beneath it — a thumb-sized target for the action you meant, a deliberately smaller one for the action
       you didn't. DOM order stays Cancel-then-primary (tab order, screen readers); column-reverse puts the
       primary on top visually. */
    .ld__stage-confirm[b-pweotox1zd] {
        flex-basis: 100%;
        max-width: none;
        padding: 0.85rem 0.9rem;
    }
    .ld__stage-confirm-q[b-pweotox1zd] { font-size: 0.98rem; }
    .ld__stage-field[b-pweotox1zd] { flex: 1 1 100%; }
    .ld__stage-field .hx-input[b-pweotox1zd] { max-width: none; }
    .ld__stage-confirm-actions[b-pweotox1zd] {
        flex: 1 1 100%;
        flex-direction: column-reverse;
        align-items: stretch;
        gap: 0.7rem;
        margin-left: 0;
    }
    .ld__stage-confirm-actions .hx-btn[b-pweotox1zd] { width: 100%; }
}

/* ── Progression card (doc 24): the slot-style payoff after a new log lands ──────────── */
.ld__progress-overlay[b-pweotox1zd] {
    position: fixed; inset: 0; z-index: 60;
    display: flex; align-items: center; justify-content: center;
    padding: 1.25rem;
    background: rgba(8, 6, 3, 0.72);
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    animation: ld-progress-fade-b-pweotox1zd 0.25s ease;
}
.ld__progress-card[b-pweotox1zd] {
    width: 100%; max-width: 26rem;
    display: flex; flex-direction: column; align-items: center; gap: 1rem;
    text-align: center;
    padding: 2rem 1.6rem 1.7rem;
    border-radius: 18px;
    background: radial-gradient(ellipse at 50% -10%, rgba(108,191,122,0.16), transparent 60%), var(--hx-surface-1, #14110c);
    border: 1px solid var(--hx-border, #2a2820);
    box-shadow: 0 24px 60px rgba(0,0,0,0.55), 0 0 40px rgba(108,191,122,0.12);
    animation: ld-progress-pop-b-pweotox1zd 0.3s cubic-bezier(0.2, 0.8, 0.3, 1.2);
}
.ld__progress-eyebrow[b-pweotox1zd] {
    font-family: 'Space Mono', monospace; font-size: 0.8rem; letter-spacing: 0.16em;
    color: var(--hx-green, #6cbf7a); margin: 0;
}
.ld__progress-line[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 1rem; color: var(--hx-text-2, #cbc3b0); margin: 0.2rem 0 0;
}
.ld__progress-next[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; color: var(--hx-text-2, #cbc3b0);
    background: rgba(232,196,108,0.08); border: 1px solid rgba(232,196,108,0.25);
    border-radius: 10px; padding: 0.7rem 0.9rem; margin: 0.1rem 0 0;
}
.ld__progress-next-label[b-pweotox1zd] {
    display: block; font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.1em;
    color: var(--hx-gold, #e8c46c); margin-bottom: 0.2rem;
}
.ld__progress-actions[b-pweotox1zd] { width: 100%; display: flex; flex-direction: column; gap: 0.55rem; margin-top: 0.4rem; }
.ld__progress-btn[b-pweotox1zd] { width: 100%; }
.ld__progress-cta[b-pweotox1zd] { width: 100%; }
/* On a beat with a CTA, the continue control reads as the quiet secondary. */
.ld__progress-actions .ld__progress-btn:not(.hx-btn-primary)[b-pweotox1zd] {
    background: transparent; color: var(--hx-text-2, #cbc3b0);
    font-size: 0.85rem; padding-top: 0.35rem; padding-bottom: 0.35rem;
}

/* Beat cards — non-floor beats (climb, maxed, stage-up), styled by magnitude. */
/* ── The default win scene: any beat without a bespoke set-piece ──────────── */
.ld__win[b-pweotox1zd] { display: flex; flex-direction: column; align-items: center; gap: 0.15rem; }

/* Celebratory eyebrow — the "this is a reward" cue the plain fallback was missing. */
.ld__win-eyebrow[b-pweotox1zd] {
    font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.18em;
    color: var(--hx-gold, #e8c46c); opacity: 0.85; margin: 0;
}
/* Names the kind of win at a glance. Gentle float — celebration, not an alert. */
.ld__win-glyph[b-pweotox1zd] {
    font-size: 2.6rem; line-height: 1; margin: 0.35rem 0 0.1rem;
    filter: drop-shadow(0 0 18px rgba(232,196,108,0.35));
    animation: ld-win-pop-b-pweotox1zd 0.5s cubic-bezier(.2,1.4,.4,1) both;
}
@keyframes ld-win-pop-b-pweotox1zd {
    from { transform: scale(0.4) rotate(-12deg); opacity: 0; }
    to   { transform: scale(1) rotate(0); opacity: 1; }
}

.ld__beat-title[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.2rem, 9vw, 3rem); letter-spacing: 0.03em;
    line-height: 1; margin: 0.3rem 0 0; color: var(--hx-green, #6cbf7a);
    text-shadow: 0 0 26px rgba(108,191,122,0.3);
}
/* Body face, not Bebas: this line carries a full sentence of teaching, and a paragraph set in condensed
   display caps reads as a system notice rather than praise (operator, 2026-07-28). */
.ld__beat-detail[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.95rem; line-height: 1.55;
    letter-spacing: 0; text-transform: none;
    color: var(--hx-text-muted, #b8b0a0); margin: 0.5rem 0 0; max-width: 30rem;
}

@media (prefers-reduced-motion: reduce) {
    .ld__win-glyph[b-pweotox1zd] { animation: none; }
}
/* Magnitude → colour + intensity: Small = green, Medium/Jackpot = gold; Jackpot glows. */
.ld__progress-card--medium .ld__beat-title[b-pweotox1zd],
.ld__progress-card--jackpot .ld__beat-title[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); text-shadow: 0 0 30px rgba(232,196,108,0.4); }
.ld__progress-card--jackpot[b-pweotox1zd] {
    border-color: var(--hx-gold, #e8c46c);
    background: radial-gradient(ellipse at 50% -10%, rgba(232,196,108,0.24), transparent 62%), var(--hx-surface-1, #14110c);
    box-shadow: 0 24px 60px rgba(0,0,0,0.55), 0 0 46px rgba(232,196,108,0.3);
}

/* Queue position dots. */
.ld__progress-dots[b-pweotox1zd] { display: flex; gap: 0.4rem; margin-bottom: 0.1rem; }
.ld__progress-dot[b-pweotox1zd] { width: 0.5rem; height: 0.5rem; border-radius: 50%; background: var(--hx-border, #2a2820); transition: background 0.2s; }
.ld__progress-dot.is-on[b-pweotox1zd] { background: var(--hx-gold, #e8c46c); }

/* ── The stage-transition scene (doc 24 §3b): a stage-up rendered as a marquee level-up ── */
.ld__scene[b-pweotox1zd] { display: flex; flex-direction: column; align-items: center; gap: 0.6rem; width: 100%; }
.ld__scene-eyebrow[b-pweotox1zd] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.22em;
    color: var(--hx-gold, #e8c46c); margin: 0;
    animation: ld-scene-flash-b-pweotox1zd 1.4s ease-in-out infinite;
}
.ld__scene-glyph[b-pweotox1zd] {
    font-size: 3.4rem; line-height: 1; margin: 0.1rem 0 0;
    filter: drop-shadow(0 0 22px rgba(232,196,108,0.5));
    animation: ld-scene-rise-b-pweotox1zd 0.5s cubic-bezier(0.2, 0.8, 0.3, 1.3) both;
}
.ld__scene-title[b-pweotox1zd] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.4rem, 10vw, 3.4rem); letter-spacing: 0.03em;
    line-height: 1; margin: 0; color: var(--hx-gold, #e8c46c); text-shadow: 0 0 32px rgba(232,196,108,0.45);
}
/* The stage rail — nodes fill up to the one just reached, which pulses. */
.ld__scene-track[b-pweotox1zd] { display: flex; align-items: flex-start; justify-content: center; gap: 0; width: 100%; margin: 0.3rem 0 0.1rem; }
.ld__scene-node[b-pweotox1zd] { position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; gap: 0.3rem; }
.ld__scene-node[b-pweotox1zd]::before {
    content: ""; position: absolute; top: 0.34rem; right: 50%; width: 100%; height: 2px;
    background: var(--hx-border, #2a2820);
}
.ld__scene-node:first-child[b-pweotox1zd]::before { display: none; }
.ld__scene-node.is-on[b-pweotox1zd]::before { background: var(--hx-gold, #e8c46c); }
.ld__scene-node-dot[b-pweotox1zd] {
    position: relative; z-index: 1; width: 0.72rem; height: 0.72rem; border-radius: 50%;
    background: var(--hx-border, #2a2820); border: 2px solid var(--hx-surface-1, #14110c);
}
.ld__scene-node.is-on .ld__scene-node-dot[b-pweotox1zd] { background: var(--hx-gold, #e8c46c); }
.ld__scene-node.is-now .ld__scene-node-dot[b-pweotox1zd] {
    box-shadow: 0 0 0 4px rgba(232,196,108,0.28); animation: ld-scene-pulse-b-pweotox1zd 1.3s ease-in-out infinite;
}
.ld__scene-node-label[b-pweotox1zd] {
    font-family: 'Space Mono', monospace; font-size: 0.6rem; letter-spacing: 0.06em;
    color: var(--hx-text-2, #cbc3b0);
}
.ld__scene-node.is-now .ld__scene-node-label[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); }
.ld__scene-blurb[b-pweotox1zd] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.95rem; line-height: 1.4;
    color: var(--hx-text-2, #cbc3b0); margin: 0.2rem 0 0;
}

@keyframes ld-progress-fade-b-pweotox1zd { from { opacity: 0; } }
@keyframes ld-progress-pop-b-pweotox1zd { from { opacity: 0; transform: translateY(12px) scale(0.96); } }
@keyframes ld-scene-flash-b-pweotox1zd { 0%, 100% { opacity: 0.55; } 50% { opacity: 1; } }
@keyframes ld-scene-rise-b-pweotox1zd { from { opacity: 0; transform: translateY(14px) scale(0.7); } }
@keyframes ld-scene-pulse-b-pweotox1zd { 0%, 100% { box-shadow: 0 0 0 4px rgba(232,196,108,0.28); } 50% { box-shadow: 0 0 0 7px rgba(232,196,108,0.12); } }
@media (prefers-reduced-motion: reduce) {
    .ld__progress-overlay[b-pweotox1zd], .ld__progress-card[b-pweotox1zd],
    .ld__scene-eyebrow[b-pweotox1zd], .ld__scene-glyph[b-pweotox1zd], .ld__scene-node.is-now .ld__scene-node-dot[b-pweotox1zd] { animation: none; }
}

/* ── Harvest/Cure — the daily log is closed after harvest (doc 09 terminal) ── */
.ld__harvest-closed[b-pweotox1zd] {
    max-width: 34rem;
    margin: 2.5rem auto;
    padding: 2.5rem 2rem;
    text-align: center;
    border: 1px solid var(--hx-border, #2a2820);
    border-radius: 1rem;
    background: radial-gradient(ellipse at 50% -20%, rgba(232,196,108,0.10), transparent 60%), var(--hx-surface-1, #14110c);
}
.ld__harvest-icon[b-pweotox1zd]  { font-size: 2.6rem; display: block; }
.ld__harvest-title[b-pweotox1zd] {
    font-family: var(--hx-font-display, 'Bebas Neue'), sans-serif;
    font-size: clamp(1.7rem, 5vw, 2.4rem);
    letter-spacing: 0.04em;
    color: var(--hx-gold, #e8c46c);
    margin: 0.6rem 0 0.9rem;
}
.ld__harvest-msg[b-pweotox1zd] { color: var(--hx-text, #e8e4d8); line-height: 1.6; margin: 0 0 0.75rem; }
.ld__harvest-sub[b-pweotox1zd] { color: var(--hx-text-dim, #9a9484); font-size: 0.9rem; margin: 0 0 1.5rem; }
.ld__harvest-back[b-pweotox1zd] { display: inline-block; }
.ld__harvest-actions[b-pweotox1zd] { display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem; }

/* ── HaxPoints finale tally beat (doc 25) ─────────────────── */
.ld__hax[b-pweotox1zd] { text-align: center; padding: 0.4rem 0; }
.ld__hax-eyebrow[b-pweotox1zd] { font-family: 'Space Mono', monospace; font-size: 0.65rem; letter-spacing: 0.18em; color: var(--hx-gold, #e8c46c); margin: 0 0 0.4rem; }
.ld__hax-amount[b-pweotox1zd] { font-family: 'Bebas Neue', sans-serif; font-size: 3.4rem; line-height: 1; color: var(--hx-gold, #e8c46c); }
/* Itemized "what earned it" receipt — so +85 reads as "30-day streak + 14-day + 7-day", not mystery points. */
.ld__hax-breakdown[b-pweotox1zd] { list-style: none; margin: 0.9rem auto 0; padding: 0; max-width: 260px; text-align: left; }
.ld__hax-line[b-pweotox1zd] { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0.28rem 0; border-bottom: 1px solid rgba(255,255,255,.06); }
.ld__hax-line:last-child[b-pweotox1zd] { border-bottom: none; }
.ld__hax-line-label[b-pweotox1zd] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.02em; color: var(--hx-text-caption-2, #b8b09a); }
.ld__hax-line-pts[b-pweotox1zd] { font-family: 'Bebas Neue', sans-serif; font-size: 1.05rem; color: var(--hx-gold, #e8c46c); flex-shrink: 0; }

.ld__hax-belt[b-pweotox1zd] { display: inline-flex; align-items: center; gap: 0.5rem; margin-top: 0.6rem; font-family: 'Bebas Neue', sans-serif; font-size: 1.4rem; letter-spacing: 0.04em; color: var(--hx-text-heading, #f6efdd); }
.ld__hax-chip[b-pweotox1zd] { width: 2rem; height: 0.6rem; border-radius: 3px; border: 1px solid rgba(255,255,255,.25); }
.ld__hax-bar[b-pweotox1zd] { height: 8px; border-radius: 99px; background: rgba(255,255,255,.1); overflow: hidden; margin: 0.9rem auto 0.4rem; max-width: 240px; }
.ld__hax-bar-fill[b-pweotox1zd] { height: 100%; border-radius: 99px; background: linear-gradient(90deg, var(--hx-gold-3, #b8912f), var(--hx-gold, #e8c46c)); }
.ld__hax-next[b-pweotox1zd] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-muted, #9a927e); margin: 0; }
.ld__hax-next strong[b-pweotox1zd] { color: var(--hx-gold, #e8c46c); }
.ld__hax-chip--white[b-pweotox1zd]  { background: #f2ecda; }
.ld__hax-chip--yellow[b-pweotox1zd] { background: #e8c46c; }
.ld__hax-chip--orange[b-pweotox1zd] { background: #e0863c; }
.ld__hax-chip--green[b-pweotox1zd]  { background: #6cbf7a; }
.ld__hax-chip--blue[b-pweotox1zd]   { background: #6ba8d8; }
.ld__hax-chip--brown[b-pweotox1zd]  { background: #9c6b3f; }
.ld__hax-chip--black[b-pweotox1zd]  { background: #2b2b2b; }

/* Belt-up marquee moved to Shared/BeltUpMarquee.razor.css (doc 21 §11.1 #3). */

/* ── Harvest lockout (doc 41) ─────────────────────────────────── */
/* The fieldset only exists to disable every control at once; it must not draw anything itself. */
.ld__lockset[b-pweotox1zd] {
    border: 0;
    margin: 0;
    padding: 0;
    min-inline-size: 0;
}
.ld__lockset:disabled[b-pweotox1zd] { opacity: 0.72; }

.ld__locked[b-pweotox1zd] {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 0.6rem 1rem;
    margin-top: 1rem;
    margin-bottom: 1rem;
    padding: 0.75rem 1rem;
    border: 1px solid var(--hx-border, #2a2820);
    border-radius: 0.6rem;
    background: var(--hx-surface-1, #14110c);
}
.ld__locked-text[b-pweotox1zd] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    letter-spacing: 0.04em;
    color: var(--hx-text-muted);
}
.ld__locked-unlock[b-pweotox1zd] {
    margin-left: auto;
    background: transparent;
    border: 1px solid var(--hx-border, #3a362c);
    border-radius: 999px;
    padding: 0.35rem 0.9rem;
    font-size: 0.85rem;
    color: var(--hx-text-secondary, #cfc8b8);
    cursor: pointer;
}
.ld__locked-unlock:hover[b-pweotox1zd] { border-color: var(--hx-red, #e05555); color: var(--hx-red, #e05555); }
.ld__locked-error[b-pweotox1zd] { flex-basis: 100%; text-align: left; }

.ld__unlock[b-pweotox1zd] {
    position: fixed;
    inset: 0;
    z-index: 300;
    background: rgba(4, 4, 3, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
}
.ld__unlock-card[b-pweotox1zd] {
    width: min(30rem, 100%);
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, #2a2820);
    border-radius: 0.9rem;
    padding: 1.4rem 1.4rem 1.2rem;
}
.ld__unlock-title[b-pweotox1zd] {
    font-size: 1.05rem;
    line-height: 1.35;
    margin: 0 0 0.8rem;
    color: var(--hx-text-heading);
}
.ld__unlock-lead[b-pweotox1zd] { margin: 0 0 0.3rem; color: var(--hx-text-secondary, #cfc8b8); }
.ld__unlock-list[b-pweotox1zd] {
    margin: 0 0 0.8rem;
    padding-left: 1.2rem;
    color: var(--hx-red, #e05555);
    line-height: 1.5;
}
.ld__unlock-note[b-pweotox1zd] { margin: 0 0 0.6rem; font-size: 0.9rem; color: var(--hx-text-muted); line-height: 1.5; }
.ld__unlock-note a[b-pweotox1zd] { color: var(--hx-gold, #d4af37); }
.ld__unlock-actions[b-pweotox1zd] {
    display: flex;
    flex-wrap: wrap;
    justify-content: flex-end;
    gap: 0.6rem;
    margin-top: 1rem;
}
/* Red = the app's reserved consequential tint (same family as the Gallery's delete). */
.ld__unlock-go[b-pweotox1zd] {
    background: rgba(224, 85, 85, 0.14);
    color: var(--hx-red, #e05555);
    border: 1px solid var(--hx-red, #e05555);
    border-radius: 0.5rem;
    padding: 0.55rem 1rem;
    font-size: 0.9rem;
    cursor: pointer;
}
.ld__unlock-go:hover:not(:disabled)[b-pweotox1zd] { background: rgba(224, 85, 85, 0.26); }
.ld__unlock-go:disabled[b-pweotox1zd] { opacity: 0.6; cursor: default; }
/* /Components/Pages/Runs/NewRun.razor.rz.scp.css */
.nrw[b-h9f7stugjr] {
    max-width: 600px;
    margin: 0 auto;
    padding: var(--hx-space-10) var(--hx-space-5) var(--hx-space-10);
}

/* ── Blueprint pre-fill banner ─────────────────────────────────── */
.nrw__plan-banner[b-h9f7stugjr] {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    background: linear-gradient(180deg, rgba(232,196,108,.09), rgba(255,255,255,.02));
    border: 1px solid rgba(232,196,108,.32);
    border-radius: 12px;
    padding: 16px 18px;
    margin-bottom: var(--hx-space-6);
}
.nrw__plan-banner-text[b-h9f7stugjr] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    flex: 1;
    min-width: 0;
}
.nrw__plan-banner-eyebrow[b-h9f7stugjr] {
    font-family: 'Space Mono', monospace;
    font-size: 12px;
    color: #e8c46c;
    letter-spacing: .16em;
}
.nrw__plan-banner-name[b-h9f7stugjr] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 26px;
    color: #f6efdd;
    letter-spacing: .02em;
    line-height: 1;
}
.nrw__plan-banner-hint[b-h9f7stugjr] {
    font-size: 13.5px;
    color: #b0a890;
    line-height: 1.5;
    margin-top: 2px;
}
.nrw__plan-banner-clear[b-h9f7stugjr] {
    flex: none;
    background: none;
    border: none;
    color: #8a8270;
    font-size: 15px;
    cursor: pointer;
    padding: 2px 4px;
    line-height: 1;
    transition: color .15s;
}
.nrw__plan-banner-clear:hover[b-h9f7stugjr] { color: #e8c46c; }

/* ── Progress dots ─────────────────────────────────────────────── */
.nrw__progress[b-h9f7stugjr] {
    display: flex;
    gap: 10px;
    margin-bottom: var(--hx-space-8);
}

.nrw__dot[b-h9f7stugjr] {
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--hx-surface-2);
    transition: background 0.25s, transform 0.25s;
}

.nrw__dot.is-done[b-h9f7stugjr]  { background: rgba(212, 175, 55, 0.35); }
.nrw__dot.is-active[b-h9f7stugjr] { background: var(--hx-gold); transform: scale(1.4); }

/* ── Step header ───────────────────────────────────────────────── */
.nrw__step-label[b-h9f7stugjr] {
    font-family: var(--hx-font-mono);
    font-size: 13px;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--hx-gold);
    margin: 0 0 var(--hx-space-2);
}

.nrw__headline[b-h9f7stugjr] {
    font-family: var(--hx-font-display);
    font-size: clamp(2.8rem, 7vw, 4.5rem);
    line-height: 0.95;
    color: var(--hx-text-heading);
    margin: 0 0 var(--hx-space-7);
    letter-spacing: 0.01em;
}

/* ── Form fields ───────────────────────────────────────────────── */
.nrw__body[b-h9f7stugjr] {
    display: flex;
    flex-direction: column;
    gap: var(--hx-space-6);
    margin-bottom: var(--hx-space-8);
}

.nrw__field label[b-h9f7stugjr] {
    display: block;
    font-family: var(--hx-font-mono);
    font-size: 13px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-text-muted);
    margin-bottom: var(--hx-space-2);
}

.nrw__required[b-h9f7stugjr] { color: var(--hx-gold); }
.nrw__optional[b-h9f7stugjr] { color: var(--hx-text-muted); opacity: 0.6; font-size: 12px; }

.nrw__hint[b-h9f7stugjr] {
    font-size: 13.5px;
    color: var(--hx-text-muted);
    margin: var(--hx-space-2) 0 0;
    line-height: 1.5;
}

/* Outdoor light = the sun; a friendly note stands in for the fixture picker. */
.hx-input--date[b-h9f7stugjr] { color-scheme: dark; }

/* ── Chip selectors ────────────────────────────────────────────── */
.nrw__chips[b-h9f7stugjr] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--hx-space-2);
}

.nrw__chip[b-h9f7stugjr] {
    padding: 7px 18px;
    border: 1px solid var(--hx-border);
    border-radius: 999px;
    background: transparent;
    color: var(--hx-text-secondary);
    font-family: var(--hx-font-body);
    font-size: 14px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s, color 0.15s;
    line-height: 1;
}

.nrw__chip:hover[b-h9f7stugjr] {
    border-color: rgba(212, 175, 55, 0.4);
    color: var(--hx-text-heading);
}

.nrw__chip.is-active[b-h9f7stugjr] {
    border-color: var(--hx-gold);
    background: rgba(212, 175, 55, 0.1);
    color: var(--hx-gold);
}

.nrw__chip-hint[b-h9f7stugjr] {
    font-size: 11px;
    opacity: 0.7;
}

/* ── Navigation ────────────────────────────────────────────────── */
.nrw__nav[b-h9f7stugjr] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--hx-space-3);
}

.nrw__error[b-h9f7stugjr] {
    margin-top: var(--hx-space-4);
    font-size: 13px;
    color: #f87171;
}

/* ── Mobile ────────────────────────────────────────────────────── */
@media (max-width: 640px) {
    .nrw[b-h9f7stugjr] {
        padding: var(--hx-space-6) var(--hx-space-4) var(--hx-space-8);
    }

    .nrw__headline[b-h9f7stugjr] {
        font-size: 2.8rem;
    }
}
/* /Components/Pages/Runs/RunJournal.razor.rz.scp.css */
/* ──────────────────────────────────────────────────────────
   RunJournal — rj__ namespace
   ────────────────────────────────────────────────────────── */

/* ── Loading / Not Found ─────────────────────────────────── */
.rj__loading[b-sr9r9oypb8] {
    padding: 4rem 1.5rem;
    text-align: center;
}

.rj__loading-text[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    color: var(--hx-muted);
    font-size: 0.85rem;
    letter-spacing: 0.05em;
}

.rj__not-found[b-sr9r9oypb8] {
    padding: 4rem 1.5rem;
}

/* ── Header ──────────────────────────────────────────────── */
.rj__header[b-sr9r9oypb8] {
    background: var(--hx-surface-1, #0f0f0f);
    border-bottom: 1px solid var(--hx-border, #222);
    padding-bottom: 2rem;
    margin-bottom: 2.5rem;
}

.rj__header-inner[b-sr9r9oypb8] {
    padding-top: 1.5rem;
}

/* Stacked into distinct rows — breadcrumb, then the watching/follow line, then the chips —
   so the header reads as a sequence instead of one bloated wrapping row (operator, 2026-07-20).
   Works the same on mobile: it's already a column. */
.rj__header-meta[b-sr9r9oypb8] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.7rem;
    margin-bottom: 1.25rem;
}

.rj__back[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    text-decoration: none;
    letter-spacing: 0.05em;
    transition: color 0.15s;
}

.rj__back:hover[b-sr9r9oypb8] {
    color: var(--hx-gold, #d4af37);
}

.rj__chips-row[b-sr9r9oypb8] {
    display: flex;
    gap: 0.5rem;
    flex-wrap: wrap;
}

.rj__chip[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.65rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    padding: 0.25rem 0.65rem;
    border: 1px solid var(--hx-border, #333);
    border-radius: 2px;
    color: var(--hx-muted);
}

.rj__chip--stage[b-sr9r9oypb8] {
    border-color: var(--hx-gold, #d4af37);
    color: var(--hx-gold, #d4af37);
}

.rj__run-name[b-sr9r9oypb8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2.5rem, 7vw, 4.5rem);
    letter-spacing: 0.04em;
    line-height: 1;
    color: var(--hx-fg, #fff);
    margin: 0 0 0.5rem;
}

.rj__theme[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    color: var(--hx-muted);
    margin: 0 0 1rem;
    font-style: italic;
}

/* Two aligned pills — a filled-gold DAY badge + an outlined date. Each glyph is centered in its own
   box (align-items:center + line-height:1), so the Bebas/Mono baseline mismatch no longer shows.
   `stretch` makes the date pill match the (taller) DAY pill's height exactly. */
/* Day/date badge + the run-level "+ Add grow" action share a row, so Add grow reads as a run metric. */
.rj__day-row[b-sr9r9oypb8] {
    display: flex;
    align-items: center;
    gap: 1rem;
    flex-wrap: wrap;
}

.rj__day-badge[b-sr9r9oypb8] {
    display: flex;
    align-items: stretch;
    gap: 0.4rem;
}

/* Nudge the moved button to sit a touch off the date box (the row gap already spaces them). */
.rj__day-add[b-sr9r9oypb8] {
    align-self: center;
}

/* The grow's day count, beside its name (moved out of the run header, operator 2026-08-02 — the value is
   per-plant, so it can't live among run-level facts). Keeps the filled-gold treatment it had: it's still the
   grow's headline number, just correctly attached. "RAN N DAYS" once harvested — a total, not a position. */
.rj__grow-day[b-sr9r9oypb8] {
    display: inline-flex;
    align-items: center;
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.05rem;
    letter-spacing: 0.06em;
    line-height: 1;
    padding: 0.3rem 0.66rem;
    border-radius: 8px;
    background: var(--hx-gold, #d4af37);
    color: var(--hx-gold-on, #1a1407);
    white-space: nowrap;
    flex-shrink: 0;
}

.rj__day-date[b-sr9r9oypb8] {
    display: flex;
    align-items: center;
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    line-height: 1;
    padding: 0.34rem 0.72rem;
    border-radius: 8px;
    background: transparent;
    border: 1px solid var(--hx-border-mid, rgba(232,196,108,0.35));
    color: var(--hx-text-2, #cbc3b0);
}

/* ── Body layout ─────────────────────────────────────────── */
.rj__body[b-sr9r9oypb8] {
    display: flex;
    gap: 2.5rem;
    align-items: flex-start;
}

.rj__main[b-sr9r9oypb8] {
    flex: 1;
    min-width: 0;
}

/* Plants + heatmap sit side by side on wide screens — kills the dead space to the right of the
   (narrow) heatmap. Mobile-first: stacked; two columns only when there's genuinely room. */
.rj__run-layout[b-sr9r9oypb8] {
    display: grid;
    grid-template-columns: 1fr;
    gap: 1.5rem;

    /* The heat map's width cap, declared ONCE here because two things must agree on it: the grid itself and
       the spectator hint, whose ⇩ only lands on W1 while both share a cap. Two literals would drift.

       It is width-dependent, and the mobile case is the one that was wrong: below 1100px the layout is a
       single full-width column, but the cap stayed at the 330px tuned for the fixed 360px desktop rail — so
       the squares shrank on the viewport with the MOST room (operator, 2026-08-07). At 330px a cell is ~38px,
       under the 44px touch-target floor.

       Expressed as the GRID, not as a guessed container width — the thing actually worth capping is the CELL.
       A flat 460px was a guess, and it under-served the tablet band: an iPad mini gives a ~720px column in
       portrait and ~636px in landscape, so the map stopped well short of the room in both. This says "the
       label track, the eight gutters, and seven cells of at most 80px", which fills that band and still
       can't produce comically large squares. Below it the map simply takes 100% of whatever it is given. */
    --rj-heat-max: calc(34px + (8 * 4px) + (7 * 80px));   /* = 626px */
}
@media (min-width: 1100px) {
    .rj__run-layout[b-sr9r9oypb8] {
        grid-template-columns: minmax(0, 1fr) 360px;   /* plants flex left · heatmap fixed right */
        gap: 2rem;
        align-items: start;
        --rj-heat-max: 330px;                          /* tightened to fit that 360px rail */
    }
}
.rj__run-layout .rj__section[b-sr9r9oypb8] { margin-bottom: 0; }

/* ── Sections ────────────────────────────────────────────── */
.rj__section[b-sr9r9oypb8] {
    margin-bottom: 2.5rem;
}

.rj__section-header[b-sr9r9oypb8] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    margin-bottom: 1rem;
}

.rj__section-title[b-sr9r9oypb8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.1rem;
    letter-spacing: 0.08em;
    /* Section/card headers are gold, matching the SOL name header (operator, 2026-07-26). */
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 1rem;
}
/* Focused-plant name heading the HaxScore block — larger + gold, the star of the section. */
.rj__section-title--plant[b-sr9r9oypb8] {
    font-size: 1.9rem;
    color: var(--hx-gold, #e8c46c);
}
/* The plant's action buttons: equal widths at every size, one gap between every pair and every line (operator,
   2026-10-17: uneven button widths "drive me nuts"). These are permanent buttons, so each width gets its own layout
   (operator: "different logic … for sake of presentation"). A CONTAINER query, not a viewport one — the column
   narrows when the right rail appears, and the buttons should answer to the room they actually have:
     phone        one full-width column (two can't fit "PUT ON THE FLOOR")
     >= 34rem     two equal columns
     >= 54rem     four equal columns — every button on one row; fewer buttons keep the same cell width
   The ceiling is four: Compare, Gallery, Harvest & Cure, Put on the floor. */
.rj__ctas[b-sr9r9oypb8] { container-type: inline-size; margin-top: 0.85rem; }
.rj__ctas-grid[b-sr9r9oypb8] { display: grid; grid-template-columns: minmax(0, 1fr); gap: 0.6rem; }
.rj__ctas-grid .rj__floor-cta[b-sr9r9oypb8] { text-align: center; white-space: nowrap; }
@container (min-width: 34rem) {
    .rj__ctas-grid[b-sr9r9oypb8] { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@container (min-width: 54rem) {
    .rj__ctas-grid[b-sr9r9oypb8] { grid-template-columns: repeat(4, minmax(0, 1fr)); }
}

/* "Put it on the floor" — the call to compete, on a harvested plant. */
.rj__floor-cta[b-sr9r9oypb8] {
    display: inline-block;
    font-family: 'Bebas Neue', sans-serif; font-size: 1.2rem; letter-spacing: 0.03em;
    color: #17140e; background: var(--hx-gold, #e8c46c);
    padding: 0.5rem 1.1rem; border-radius: 6px; text-decoration: none;
    transition: background 0.15s;
}
.rj__floor-cta:hover[b-sr9r9oypb8] { background: var(--hx-gold-hover, #f1d488); }
.rj__floor-cta--secondary[b-sr9r9oypb8] {
    color: var(--hx-gold, #e8c46c);
    background: transparent; border: 1px solid var(--hx-gold, #e8c46c);
}
.rj__floor-cta--secondary:hover[b-sr9r9oypb8] { background: rgba(232,196,108,.12); }

.rj__count[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    margin-left: 0.35rem;
}

.rj__link[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-gold, #d4af37);
    text-decoration: none;
    letter-spacing: 0.05em;
    /* also used on <button> (All public / All private) — strip default button chrome */
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
}
.rj__link:hover[b-sr9r9oypb8] { color: var(--hx-gold-hover, #f1d488); text-decoration: underline; }
/* Primary action — a solid gold button that stands apart from the utility links */
.rj__link--add[b-sr9r9oypb8] {
    background: var(--hx-gold, #e8c46c);
    color: #17140e;
    padding: 0.35rem 0.75rem;
    border-radius: 5px;
    font-weight: 700;
}
.rj__link--add:hover[b-sr9r9oypb8] { background: var(--hx-gold-hover, #f1d488); color: #17140e; text-decoration: none; }

.rj__link:hover[b-sr9r9oypb8] { text-decoration: underline; }

/* ── Plant Cards ─────────────────────────────────────────── */
.rj__plant-cards[b-sr9r9oypb8] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(230px, 1fr));   /* 1-up when narrow, 2-up when the column has room */
    gap: 1rem;
}

/* Zero-plant empty state (doc 31 — a run is created before any grow is added) */
.rj__plants-empty[b-sr9r9oypb8] {
    grid-column: 1 / -1;
    display: flex;
    flex-direction: column;
    align-items: center;
    text-align: center;
    gap: 0.4rem;
    padding: 2rem 1.25rem;
    border: 1px dashed var(--hx-border, #2a2820);
    border-radius: 10px;
    background: rgba(255, 255, 255, 0.02);
}
.rj__plants-empty-glyph[b-sr9r9oypb8] { font-size: 1.8rem; opacity: 0.9; }
.rj__plants-empty-title[b-sr9r9oypb8] { font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem; letter-spacing: 0.03em; color: var(--hx-text-1, #f3eede); margin: 0; }
.rj__plants-empty-sub[b-sr9r9oypb8] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; color: var(--hx-text-muted, #9a927e); margin: 0 0 0.6rem; }
.rj__plants-empty-cta[b-sr9r9oypb8] { align-self: center; }

/* Per-plant visibility toggle (doc 16) — owner only, under each plant card */
/* A grow's card and its pills are ONE object (operator, 2026-07-17): the Blueprint and visibility pills are
   that grow's own metadata, not loose siblings. So the frame wraps the whole slot and the button inside
   carries no border of its own — one box per grow, never a box inside a box. */
.rj__plant-slot[b-sr9r9oypb8] {
    display: flex;
    flex-direction: column;
    gap: 0.4rem;
    padding: 0.5rem;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    transition: border-color 0.15s, background 0.15s, box-shadow 0.15s;
}

.rj__plant-slot:hover[b-sr9r9oypb8] {
    border-color: var(--hx-gold, #d4af37);
}

/* Selected grow — the heatmap below is filtered to it, so the whole group lights up. */
.rj__plant-slot:has(.rj__plant-card.is-selected)[b-sr9r9oypb8] {
    border-color: var(--hx-gold, #d4af37);
    background: rgba(232, 196, 108, 0.08);
    box-shadow: inset 0 0 0 1px rgba(232, 196, 108, 0.4);
}
.rj__plants-actions[b-sr9r9oypb8] {
    display: flex;
    gap: 0.85rem;
    align-items: center;
}
/* At-a-glance visibility badge under each plant card (control lives in the sidebar) */
.rj__plant-badge[b-sr9r9oypb8] {
    align-self: flex-start;
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.03em;
    padding: 0.2rem 0.55rem;
    border-radius: 999px;
    border: 1px solid var(--hx-border, #222);
    color: var(--hx-text-muted, #b0a890);
}
.rj__plant-badge--public[b-sr9r9oypb8]   { color: var(--hx-gold, #e8c46c);  border-color: rgba(232, 196, 108, 0.45); }
.rj__plant-badge--unlisted[b-sr9r9oypb8] { color: #9bb8c4;                  border-color: rgba(111, 168, 189, 0.4); }
.rj__plant-badge--private[b-sr9r9oypb8]  { color: var(--hx-text-muted, #b0a890); }

/* Per-plant Blueprint listing — deep-links to the read-only blueprint view (doc 31 Slice 3). */
.rj__vis-note[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.74rem;
    color: var(--hx-text-muted, #b0a890);
    margin: 0 0 0.75rem;
}

/* Spectator signpost — the photos/notes live in the weeks (doc 16) */
.rj__heatmap-hint[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    color: var(--hx-text-2, #d8cdb6);
    background: rgba(232, 196, 108, 0.06);
    border-left: 2px solid rgba(232, 196, 108, 0.45);
    border-radius: 6px;
    padding: 0.5rem 0.7rem;
    margin: 0 0 0.9rem;
}
.rj__heatmap-hint strong[b-sr9r9oypb8] { color: var(--hx-gold, #e8c46c); }

/* Spectator wayfinding — the ONLY live control on their heat map is the W# column, so the hint points at it
   literally. Drops the panel treatment (background/border/padding) on purpose: the arrow has to sit in the
   same 34px track the week labels occupy, and padding would push it off. Text steps up from .82 to .95rem —
   it's the primary affordance on this surface for a follower, not a footnote. */
.rj__heatmap-hint--spectator[b-sr9r9oypb8] {
    display: grid;
    grid-template-columns: 34px 1fr;   /* mirrors .rj__heatmap-row's week-label column */
    gap: 4px;                          /* and its gutter */
    align-items: center;
    max-width: var(--rj-heat-max, 330px);   /* SAME cap as .rj__heatmap, or the ⇩ stops landing on W1 */
    background: none;
    border: 0;
    padding: 0;
    margin: 0 0 0.6rem;
    font-size: 0.95rem;
    line-height: 1.45;
    color: var(--hx-text-2, #d8cdb6);
}
.rj__heatmap-hint-arrow[b-sr9r9oypb8] {
    justify-self: center;
    font-size: 1.7rem;
    line-height: 1;
    color: var(--hx-gold, #e8c46c);
    animation: rj-hint-bob-b-sr9r9oypb8 1.9s ease-in-out infinite;
}
@keyframes rj-hint-bob-b-sr9r9oypb8 {
    0%, 100% { transform: translateY(0); }
    50%      { transform: translateY(4px); }
}
@media (prefers-reduced-motion: reduce) {
    .rj__heatmap-hint-arrow[b-sr9r9oypb8] { animation: none; }
}

/* Borderless — the frame lives on .rj__plant-slot, which wraps this button and its pills as one unit. */
.rj__plant-card[b-sr9r9oypb8] {
    display: flex;
    align-items: center;
    gap: 1rem;
    background: transparent;
    border: 0;
    border-radius: 6px;
    padding: 0.55rem 0.85rem;
    width: 100%;
    cursor: pointer;
    /* button reset */
    text-align: left;
    font: inherit;
    color: inherit;
}

/* Keyboard affordance — the slot's hover frame is mouse-only, so don't strand tab users. */
.rj__plant-card:focus-visible[b-sr9r9oypb8] {
    outline: 2px solid var(--hx-gold, #d4af37);
    outline-offset: 2px;
}

.rj__plant-img[b-sr9r9oypb8] {
    width: 52px;
    height: 52px;
    border-radius: 50%;
    background: var(--hx-surface-2, #1a1a1a);
    flex-shrink: 0;
    border: 1px solid var(--hx-border, #2a2a2a);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.5rem;
    line-height: 1;
}

.rj__plant-info[b-sr9r9oypb8] {
    flex: 1;
    min-width: 0;   /* let the name use the space freed by dropping the glyph */
}

.rj__plant-name[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 600;
    font-size: 1.05rem;
    color: var(--hx-fg, #fff);
}

.rj__plant-stage[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--hx-gold, #e8c46c);
    margin-top: 0.15rem;
}

.rj__plant-strain[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    color: var(--hx-muted);
    margin-top: 0.15rem;
}

.rj__plant-hint[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    color: var(--hx-muted);
    margin: 0.4rem 0 0.9rem;
    letter-spacing: 0.02em;
    width: 100%;          /* stretch in the flex-column plants section so center actually centers */
    align-self: stretch;
    text-align: center;   /* sits above the plant cards — "tap a plant" reads next to them */
}

/* ── Heatmap ─────────────────────────────────────────────── */
.rj__heatmap-head[b-sr9r9oypb8] {
    display: flex;
    align-items: baseline;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
}
.rj__streak[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.04em;
    color: var(--hx-text-2, #cbc3b0); white-space: nowrap;
    background: rgba(232,196,108,0.08); border: 1px solid rgba(232,196,108,0.25);
    border-radius: 999px; padding: 0.25rem 0.6rem;
}
.rj__streak strong[b-sr9r9oypb8] { color: var(--hx-gold, #d4af37); font-weight: 700; }
/* Collapsed run of logless weeks. Deliberately quiet — it stands for absence, so it must not compete
   with the real day cells; it reads as a seam in the grid, not a control demanding attention. */
.rj__heatmap-gap[b-sr9r9oypb8] {
    display: block;
    width: 100%;
    text-align: left;
    font-family: 'Space Mono', monospace;
    font-size: 0.68rem;
    letter-spacing: 0.03em;
    color: var(--hx-muted, #8a8577);
    background: rgba(255, 255, 255, 0.02);
    border: 0;
    border-left: 2px solid rgba(255, 255, 255, 0.07);
    border-radius: 4px;
    padding: 0.35rem 0.6rem;
    margin: 0.15rem 0;
    cursor: pointer;
    transition: background 0.15s ease, color 0.15s ease;
}
.rj__heatmap-gap:hover[b-sr9r9oypb8] {
    background: rgba(255, 255, 255, 0.045);
    color: var(--hx-text-2, #d8cdb6);
}
.rj__heatmap-gap strong[b-sr9r9oypb8] { color: var(--hx-gold, #e8c46c); font-weight: 600; }

.rj__heatmap-legend[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-muted);
    display: flex;
    align-items: center;
    gap: 0.25rem;
    margin-bottom: 0.75rem;
}

.rj__legend-dot[b-sr9r9oypb8] {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 2px;
    vertical-align: middle;
}

/* Stage key — carries the marker's own hairline (and no border-radius) so the swatch looks like the thing
   it stands for, rather than a purple sibling of the momentum shades. Those key one scale; this keys a
   different fact entirely. */
.rj__legend-dot--stage[b-sr9r9oypb8] {
    background: #a888d6;
    border-radius: 0;
    box-shadow: 0 0 0 1px rgba(8, 6, 4, 0.7);
}

/* Weeks-as-rows: a fixed 7-wide grid that grows DOWNWARD for long runs, so
   it never scrolls sideways regardless of grow length (a 125-day run is the
   same width as a 7-day one). Squares are responsive — they fill the row up
   to the container cap, so they're big on mobile and sane on desktop. */
.rj__heatmap[b-sr9r9oypb8] {
    display: flex;
    flex-direction: column;
    gap: 4px;
    max-width: var(--rj-heat-max, 330px);   /* width-dependent — see .rj__run-layout. Guarantees no h-scroll. */
    padding-bottom: 0.5rem;
}

/* No grow on the run yet — the grid is a preview only: greyed out, no hover, no clicks
   (operator, 2026-07-20). */
.rj__heatmap--disabled[b-sr9r9oypb8] {
    opacity: 0.4;
    filter: saturate(0.4);
    pointer-events: none;
}
.rj__heatmap--disabled .rj__heatmap-day:hover[b-sr9r9oypb8] { transform: none; }

/* `align-items: start`, NOT `stretch` — this is what actually made the squares look "squished" on a phone
   and tablet (operator, 2026-08-07). `stretch` gave each day cell a DEFINITE height (the row's, set by the
   week label), and `aspect-ratio: 1` then derived the cell's WIDTH from that height — so a cell rendered at
   ~38px no matter how wide its 1fr column was, leaving the rest of the column empty. The wider the map, the
   bigger the gaps, which is why widening the container made it worse rather than better, and why the 330px
   desktop rail looked fine: there a column happens to be ~38px, so width and height coincided.
   With `start` the height is auto, so the cell fills its column and aspect-ratio derives the height from it —
   the direction the layout actually wants. The label opts back into stretching so it still matches the row. */
.rj__heatmap-row[b-sr9r9oypb8] {
    display: grid;
    grid-template-columns: 34px repeat(7, 1fr);
    gap: 4px;
    align-items: start;
}

.rj__heatmap-day[b-sr9r9oypb8] {
    aspect-ratio: 1;
    border-radius: 5px;
    cursor: default;
    transition: transform 0.1s;
    display: flex;
    align-items: center;
    justify-content: center;
}

.rj__heatmap-day:hover[b-sr9r9oypb8] {
    transform: scale(1.15);
    z-index: 2;
}

/* Read-only cells (spectator / no-plant): quiet DATA, not a button. Keep the momentum shade
   but drop the button cues so nothing invites a dead click. Dimmed hard so the cells read as
   inert backdrop and the clickable W# labels clearly own the interaction (operator: 0.8 too
   subtle 07-21 → 0.7 → 0.45 on 07-22; still leaves the momentum pattern legible). */
.rj__heatmap-day--static[b-sr9r9oypb8] { cursor: default; opacity: 0.45; }
.rj__heatmap-day--static:hover[b-sr9r9oypb8] { transform: none; z-index: auto; }

/* Spectator: day cells are inert, so the clickable W# labels are the ONLY control — accentuate
   them (brighter fill + border) so it's obvious what to tap (operator, 2026-07-21). Targets the
   <a> only, so fully-future --ondeck week <span>s stay inert. */
.rj__heatmap--spectator a.rj__week-label[b-sr9r9oypb8] {
    background: rgba(232, 196, 108, 0.34);
    border-color: rgba(232, 196, 108, 0.7);
    color: #f6efdd;
}
.rj__heatmap--spectator a.rj__week-label:hover[b-sr9r9oypb8] {
    background: rgba(232, 196, 108, 0.5);
    border-color: #e8c46c;
}

/* Per-square day label — the at-a-glance "which day" for mobile (where
   tooltips don't show). Sits inside the box so the grid stays intact;
   clicks pass through to the square. */
.rj__heatmap-dx[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 12px;
    font-weight: 700;
    line-height: 1;
    letter-spacing: -0.04em;
    color: rgba(240, 230, 200, 0.7); /* light ink for dark / low-momentum squares */
    pointer-events: none;
    user-select: none;
}

/* Bright gold squares need dark ink to stay readable */
.rj__heatmap-day.m3 .rj__heatmap-dx[b-sr9r9oypb8],
.rj__heatmap-day.m4 .rj__heatmap-dx[b-sr9r9oypb8],
.rj__heatmap-day.m5 .rj__heatmap-dx[b-sr9r9oypb8] {
    color: rgba(20, 16, 7, 0.75);
}

/* Momentum levels — 0=no log, 5=fully complete */
.rj__heatmap-day.m0[b-sr9r9oypb8],
.rj__legend-dot.m0[b-sr9r9oypb8] { background: var(--hx-surface-2, #1a1a1a); }

.rj__heatmap-day.m1[b-sr9r9oypb8],
.rj__legend-dot.m1[b-sr9r9oypb8] { background: rgba(212, 175, 55, 0.15); }

.rj__heatmap-day.m2[b-sr9r9oypb8],
.rj__legend-dot.m2[b-sr9r9oypb8] { background: rgba(212, 175, 55, 0.30); }

.rj__heatmap-day.m3[b-sr9r9oypb8],
.rj__legend-dot.m3[b-sr9r9oypb8] { background: rgba(212, 175, 55, 0.50); }

.rj__heatmap-day.m4[b-sr9r9oypb8],
.rj__legend-dot.m4[b-sr9r9oypb8] { background: rgba(212, 175, 55, 0.75); }

.rj__heatmap-day.m5[b-sr9r9oypb8],
.rj__legend-dot.m5[b-sr9r9oypb8] { background: var(--hx-gold, #d4af37); }

/* On deck — tomorrow's slot: visible but not loggable yet. Dashed, dim, inert. */
.rj__heatmap-day--ondeck[b-sr9r9oypb8] {
    background: transparent;
    border: 1px dashed rgba(232, 196, 108, 0.35);
    cursor: default;
    opacity: 0.55;
}
.rj__heatmap-day--ondeck:hover[b-sr9r9oypb8] { transform: none; }
.rj__heatmap-day--ondeck .rj__heatmap-dx[b-sr9r9oypb8] { color: rgba(232, 196, 108, 0.7); }

/* Today, not yet logged — the "log me" cell. Gold ring + gentle pulse pulls the tap here,
   not to tomorrow's on-deck slot. This is the daily-log affordance now the CTA button is gone. */
.rj__heatmap-day--today-log[b-sr9r9oypb8] {
    box-shadow: 0 0 0 1.5px var(--hx-gold, #e8c46c), 0 0 10px rgba(232, 196, 108, 0.5);
    animation: rj-today-pulse-b-sr9r9oypb8 2.4s ease-in-out infinite;
}
@keyframes rj-today-pulse-b-sr9r9oypb8 {
    0%, 100% { box-shadow: 0 0 0 1.5px var(--hx-gold, #e8c46c), 0 0 7px rgba(232, 196, 108, 0.35); }
    50%      { box-shadow: 0 0 0 1.5px var(--hx-gold, #e8c46c), 0 0 15px rgba(232, 196, 108, 0.65); }
}
@media (prefers-reduced-motion: reduce) {
    .rj__heatmap-day--today-log[b-sr9r9oypb8] { animation: none; }
}

/* A growth stage began on this day — a purple ring around the square (operator, 2026-08-03: the compromise
   between the original corner dot, too quiet, and a full purple fill, which overwrote the momentum shade the
   legend depends on). The ring reads at a glance across the whole grid and leaves the fill saying what it
   always said.
   `outline`, NOT `border` (which would shift the box) and NOT `box-shadow` (already owned by the today-log
   ring, so the two would overwrite each other). A negative offset seats it inside the square, so it can't
   crowd its neighbours across the 4px grid gap. */
.rj__heatmap-day--stage[b-sr9r9oypb8] { position: relative; }

/* A purple SQUARE in the corner (operator, 2026-08-03), after a 2px ring proved too thin to read against a
   bright gold fill. A square packs noticeably more area than the circle it replaces at the same nominal size.
   Kept on a ::after so it composes with BOTH the momentum fill (background) and the today-log ring
   (box-shadow) — neither of which it may disturb, which is what ruled out a full purple fill. The dark
   hairline is what makes one colour work on every momentum shade, dim to bright. */
.rj__heatmap-day--stage[b-sr9r9oypb8]::after {
    content: "";
    position: absolute;
    top: 3px;
    right: 3px;
    width: 9px;
    height: 9px;
    background: #a888d6;
    box-shadow: 0 0 0 1px rgba(8, 6, 4, 0.7);
    pointer-events: none;
}

.rj__week-label[b-sr9r9oypb8] {
    /* The row is `align-items: start` so the day cells can size themselves from their column width; the
       label has no intrinsic height worth having, so it opts back in and matches the row. */
    align-self: stretch;
    display: flex;
    align-items: center;
    justify-content: center;
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    font-weight: 700;
    color: #e8c46c;
    background: rgba(232, 196, 108, 0.14);
    border: 1px solid rgba(232, 196, 108, 0.22);
    border-radius: 5px;
    text-decoration: none;
    letter-spacing: 0.01em;
    white-space: nowrap;
    transition: background 0.15s, color 0.15s, border-color 0.15s;
}

.rj__week-label:hover[b-sr9r9oypb8] {
    background: rgba(232, 196, 108, 0.26);
    border-color: rgba(232, 196, 108, 0.5);
    color: #f6efdd;
}

/* Fully-future week (only the on-deck day) — inert, matches the dim preview. */
.rj__week-label--ondeck[b-sr9r9oypb8] {
    background: transparent;
    border: 1px dashed rgba(232, 196, 108, 0.22);
    opacity: 0.55;
}

.rj__heatmap-empty[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
    margin-top: 0.75rem;
}

/* ── Sidebar ─────────────────────────────────────────────── */
.rj__sidebar[b-sr9r9oypb8] {
    width: 300px;
    flex-shrink: 0;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
}

.rj__sidebar-card[b-sr9r9oypb8] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    padding: 1.25rem;
}
/* Plant privacy panel — its own blue/teal zone (privacy = trust), distinct from HaxScore green. */
.rj__sidebar-card--privacy[b-sr9r9oypb8] {
    background: rgba(111, 168, 189, 0.06);
    border-color: rgba(111, 168, 189, 0.4);
}

/* Growth stage — the purple lifecycle-transition tint (operator, 2026-07-28). Uses the canonical purple
   card recipe rather than the flat fill above, so it reads as the same treatment as Log Day's stage
   control: one concept, one colour, across both surfaces. */
.rj__sidebar-card--stage[b-sr9r9oypb8] {
    background: linear-gradient(135deg, rgba(146, 110, 196, 0.16), rgba(146, 110, 196, 0.03));
    border-color: rgba(146, 110, 196, 0.4);
}

.rj__sidebar-title[b-sr9r9oypb8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 0.9rem;
    letter-spacing: 0.1em;
    /* Sidebar card headers (THIS GROW / RUN SETUP / WHO CAN WATCH / GROWTH STAGE) are gold too. */
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 1rem;
}

/* A second section header inside the same card (THIS GROW / RUN SETUP) — extra top gap + a hairline
   divider so the two levels read as distinct groups, not one list. */
.rj__sidebar-title--sub[b-sr9r9oypb8] {
    margin-top: 1.5rem;
    padding-top: 1.25rem;
    border-top: 1px solid var(--hx-border, #2a2820);
}

/* "Saved ✓" flash — quiet confirmation that a live visibility change stuck (doc 16/17). */
.rj__vis-saved[b-sr9r9oypb8] {
    margin-left: 0.5rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.04em;
    color: #7ad17a;
    animation: rj-vis-saved-in-b-sr9r9oypb8 0.15s ease-out;
}

@keyframes rj-vis-saved-in-b-sr9r9oypb8 {
    from { opacity: 0; transform: translateY(-2px); }
    to   { opacity: 1; transform: none; }
}

/* Gentle stage nudge (doc 09 §5) — suggestion, never a demand */
.rj__stage-nudge[b-sr9r9oypb8] {
    margin: 0.9rem 0 0;
    padding: 0.65rem 0.75rem;
    background: rgba(232, 196, 108, 0.07);
    border-left: 2px solid rgba(232, 196, 108, 0.45);
    border-radius: 6px;
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.82rem;
    line-height: 1.45;
    color: #d8cdb6;
}

/* Spectator "watching" banner + follow (doc 13 / 14) */
.rj__watching-row[b-sr9r9oypb8] {
    display: flex;
    align-items: center;
    gap: 0.85rem;
    flex-wrap: wrap;
}
.rj__watching[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}
.rj__watching strong[b-sr9r9oypb8] { color: var(--hx-fg, #fff); }
/* Judging an act (doc 21): blue marks the mode (operator, 2026-10-12). */
.rj__watching--judge[b-sr9r9oypb8] { color: #6fa8bd; }
.rj__judge-entered[b-sr9r9oypb8] {
    margin: 0.5rem 0 0;
    font-family: 'Space Mono', monospace; font-size: 0.78rem;
    color: #6fa8bd;
}
.rj__judge-entered strong[b-sr9r9oypb8] { color: var(--hx-fg, #fff); }
.rj__follow[b-sr9r9oypb8] { min-width: 6.5rem; }

/* Visibility selector (doc 13) */
.rj__vis[b-sr9r9oypb8] {
    display: flex;
    flex-direction: column;
    gap: 0.5rem;
}
.rj__vis-opt[b-sr9r9oypb8] {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.1rem;
    text-align: left;
    padding: 0.6rem 0.75rem;
    background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    color: var(--hx-fg, #fff);
    cursor: pointer;
    transition: border-color 0.12s ease, background 0.12s ease;
}
.rj__vis-opt:hover:not(:disabled)[b-sr9r9oypb8] { border-color: rgba(111, 168, 189, 0.55); }
.rj__vis-opt:disabled[b-sr9r9oypb8] { opacity: 0.6; cursor: default; }
.rj__vis-opt.is-selected[b-sr9r9oypb8] {
    border-color: #6fa8bd;
    background: rgba(111, 168, 189, 0.1);
}
.rj__vis-label[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 600;
    font-size: 0.9rem;
}
.rj__vis-hint[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-muted);
}

.rj__details[b-sr9r9oypb8] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 0.4rem 1rem;
    margin: 0;
}

.rj__details dt[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
    padding-top: 0.05rem;
}

.rj__details dd[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.85rem;
    color: var(--hx-fg, #fff);
    margin: 0;
}

/* Deep-links out of the details list — the Blueprint and the Seed List lot behind this grow. */
.rj__details-link[b-sr9r9oypb8] {
    color: var(--hx-gold, #e8c46c);
    font-weight: 600;
    text-decoration: none;
}
.rj__details-link:hover[b-sr9r9oypb8] { text-decoration: underline; }

.rj__details-none[b-sr9r9oypb8] { color: var(--hx-text-muted, #8a8270); }
/* The current backfilled-starter value shown before a "Select →" (medium picker) — muted, it's just a default. */
.rj__details-default[b-sr9r9oypb8] { color: var(--hx-text-muted, #8a8270); }

/* Ended grow (didn't make it) — dimmed tombstone on the plant card + its badge. */
.rj__plant-card.is-ended[b-sr9r9oypb8] { opacity: 0.55; }
.rj__plant-card.is-ended:hover[b-sr9r9oypb8] { opacity: 0.75; }
.rj__plant-ended[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.06em;
    text-transform: uppercase; color: #c98a6a; margin-top: 2px;
}

/* Grow lifecycle control (end / reactivate) in the THIS GROW panel. */
.rj__lifecycle[b-sr9r9oypb8] { margin: 0.5rem 0 1.2rem; display: flex; flex-direction: column; gap: 0.5rem; align-items: flex-start; }
.rj__lifecycle-note[b-sr9r9oypb8] { font-size: 0.8rem; color: var(--hx-text-muted, #8a8270); }
.rj__lifecycle-btn[b-sr9r9oypb8] {
    background: none; border: 0; padding: 0; cursor: pointer; text-align: left;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: var(--hx-text-muted, #8a8270);
}
.rj__lifecycle-btn:hover[b-sr9r9oypb8] { color: var(--hx-text-heading, #f6efdd); text-decoration: underline; }
/* Every "didn't make it" end link — per-grow ("End this grow") AND run-level ("End this run") — shares the
   app's muted "consequential" red by default, so the two read as the same kind of action. */
.rj__lifecycle-btn--end[b-sr9r9oypb8] { color: #c47a72; }
.rj__lifecycle-btn--end:hover[b-sr9r9oypb8] { color: #ea8b81; }
.rj__end-confirm[b-sr9r9oypb8] {
    border: 1px solid rgba(217,122,90,.35); border-radius: 8px; background: rgba(217,122,90,.06);
    padding: 0.7rem 0.8rem; display: flex; flex-direction: column; gap: 0.6rem;
}
.rj__end-confirm p[b-sr9r9oypb8] { margin: 0; font-size: 0.82rem; color: var(--hx-text-2, #b0a890); line-height: 1.45; }
.rj__end-confirm-actions[b-sr9r9oypb8] { display: flex; gap: 0.5rem; flex-wrap: wrap; }

/* ── Run lifecycle — close a run that didn't make it / reopen it ──────────── */
.rj__runlife[b-sr9r9oypb8] { display: flex; flex-direction: column; gap: 0.6rem; align-items: flex-start; }
.rj__runlife--nudge[b-sr9r9oypb8], .rj__runlife--closed[b-sr9r9oypb8] {
    border-radius: var(--hx-r-sm, 8px);
    padding: 1.1rem 1.25rem;
    margin-bottom: 1.25rem;
}
/* Red is the app's ONE reserved "consequential action" tint — introduced here on purpose, because closing
   a whole run is heavyweight and hard-feeling to walk back. Loud enough to warrant a pause, not an error. */
.rj__runlife--nudge[b-sr9r9oypb8] {
    border: 1px solid rgba(224,87,79,.40);
    background: linear-gradient(180deg, rgba(224,87,79,.11), rgba(255,255,255,.012));
}
/* Closed state — reopening is safe, so it stays a calm muted "kept, not gone" card (no red). */
.rj__runlife--closed[b-sr9r9oypb8] {
    border: 1px solid var(--hx-border, #333);
    background: rgba(255,255,255,.03);
}
.rj__runlife-title[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif; font-weight: 700;
    font-size: 1.02rem; color: var(--hx-text-heading, #f6efdd);
}
.rj__runlife-sub[b-sr9r9oypb8] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.86rem;
    color: var(--hx-text-caption, #b0a890); line-height: 1.5; margin: 0; max-width: 40rem;
}
/* In the prominent banners the buttons read as real actions (pills), not the plain text link the sidebar uses. */
.rj__runlife--nudge .rj__lifecycle-btn--end[b-sr9r9oypb8],
.rj__runlife--closed .rj__lifecycle-btn[b-sr9r9oypb8] {
    border-radius: var(--hx-r-pill, 999px); padding: 0.4rem 0.95rem; font-weight: 600;
}
/* Close this run = red. */
.rj__runlife--nudge .rj__lifecycle-btn--end[b-sr9r9oypb8] {
    border: 1px solid rgba(224,87,79,.55); color: #ea8b81;
}
.rj__runlife--nudge .rj__lifecycle-btn--end:hover[b-sr9r9oypb8] { background: rgba(224,87,79,.14); color: #f2a79e; text-decoration: none; }
/* Reactivate = calm gold. */
.rj__runlife--closed .rj__lifecycle-btn[b-sr9r9oypb8] {
    border: 1px solid rgba(232,196,108,.4); color: var(--hx-gold, #e8c46c);
}
.rj__runlife--closed .rj__lifecycle-btn:hover[b-sr9r9oypb8] { color: var(--hx-gold, #e8c46c); background: rgba(232,196,108,.08); text-decoration: none; }
/* The whole run-close flow carries the red — the confirm box too (scoped so the per-plant "End this grow"
   confirm elsewhere keeps its own coral). */
.rj__runlife .rj__end-confirm[b-sr9r9oypb8] {
    border-color: rgba(224,87,79,.42); background: rgba(224,87,79,.08);
}
/* Sidebar variant — quiet, separated from RUN SETUP above by a hairline. The link inherits the shared
   muted-red --end color, so the caution reads even in this low-key path. */
.rj__runlife--aside[b-sr9r9oypb8] { margin-top: 1rem; padding-top: 0.85rem; border-top: 1px solid var(--hx-border, #2a2a2a); width: 100%; }

/* Collapsed adopt affordance — reads like a deep link; expands into the picker on click. */
.rj__details-set[b-sr9r9oypb8] {
    background: none; border: 0; padding: 0; cursor: pointer;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; font-weight: 600;
    color: var(--hx-gold, #e8c46c);
}
.rj__details-set:hover[b-sr9r9oypb8] { text-decoration: underline; }

/* "Set Blueprint" adopt picker — shown in the details when a grow has no Blueprint yet. */
.rj__bp-adopt[b-sr9r9oypb8] { display: flex; gap: 0.4rem; align-items: center; flex-wrap: wrap; }
.rj__bp-adopt .hx-input[b-sr9r9oypb8] { flex: 1 1 auto; min-width: 0; }
.rj__bp-set[b-sr9r9oypb8] { flex: 0 0 auto; padding: 0.35rem 0.9rem; font-size: 0.8rem; }

/* Takes the whole second row of the wrapping flex line, so the note reads as a consequence of the picker
   rather than crowding the Set/Cancel pair. Muted: it explains, it doesn't ask for anything. */
.rj__bp-note[b-sr9r9oypb8] {
    flex: 1 1 100%;
    margin: 0.15rem 0 0;
    font-size: 0.72rem;
    color: var(--hx-text-muted, #8a8270);
}

/* Cancel sits beside Set but reads as the way out, not a second action — plain text, muted, no button
   chrome. Set keeps the only button treatment so the committing choice stays the obvious one. */
.rj__bp-cancel[b-sr9r9oypb8] {
    flex: 0 0 auto;
    background: none;
    border: none;
    padding: 0.35rem 0.4rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.75rem;
    color: var(--hx-muted);
    cursor: pointer;
    transition: color 0.15s;
}
.rj__bp-cancel:hover:not(:disabled)[b-sr9r9oypb8] { color: var(--hx-fg, #fff); }
.rj__bp-cancel:disabled[b-sr9r9oypb8] { opacity: 0.4; cursor: default; }

/* "Set Seed" adopt picker — keeps any free-text strain visible above the link dropdown. */
.rj__seed-adopt[b-sr9r9oypb8] { display: flex; flex-direction: column; align-items: flex-start; gap: 0.35rem; }
.rj__seed-current[b-sr9r9oypb8] { font-size: 0.85rem; color: var(--hx-fg, #fff); }

/* ── Stage Track ─────────────────────────────────────────── */
.rj__stage-name[b-sr9r9oypb8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.4rem;
    letter-spacing: 0.06em;
    color: var(--hx-gold, #d4af37);
    margin-bottom: 1rem;
}

.rj__stage-track[b-sr9r9oypb8] {
    display: flex;
    gap: 0;
    position: relative;
}

.rj__stage-track[b-sr9r9oypb8]::before {
    content: '';
    position: absolute;
    top: 7px;
    left: 7px;
    right: 7px;
    height: 1px;
    background: var(--hx-border, #333);
}

.rj__stage-node[b-sr9r9oypb8] {
    flex: 1;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.35rem;
    position: relative;
    z-index: 1;
}

.rj__stage-dot[b-sr9r9oypb8] {
    width: 14px;
    height: 14px;
    border-radius: 50%;
    background: var(--hx-surface-2, #1a1a1a);
    border: 1px solid var(--hx-border, #333);
    transition: background 0.2s, border-color 0.2s;
}

.rj__stage-node.is-past .rj__stage-dot[b-sr9r9oypb8] {
    background: rgba(212, 175, 55, 0.3);
    border-color: var(--hx-gold, #d4af37);
}

.rj__stage-node.is-current .rj__stage-dot[b-sr9r9oypb8] {
    background: var(--hx-gold, #d4af37);
    border-color: var(--hx-gold, #d4af37);
    box-shadow: 0 0 6px rgba(212, 175, 55, 0.5);
}

.rj__stage-label[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.55rem;
    color: var(--hx-muted);
    text-align: center;
    letter-spacing: 0.04em;
    white-space: nowrap;
}

.rj__stage-node.is-current .rj__stage-label[b-sr9r9oypb8] {
    color: var(--hx-gold, #d4af37);
}

/* Skipped stages (e.g. a clone that started at Veg) — dashed, dimmed */
.rj__stage-node.is-skipped .rj__stage-dot[b-sr9r9oypb8] {
    background: transparent;
    border-style: dashed;
    border-color: var(--hx-border, #333);
    opacity: 0.6;
}
.rj__stage-node.is-skipped .rj__stage-label[b-sr9r9oypb8] {
    opacity: 0.5;
}

.rj__stage-date[b-sr9r9oypb8] {
    font-family: 'Space Mono', monospace;
    font-size: 0.5rem;
    color: var(--hx-muted);
    letter-spacing: 0.02em;
    white-space: nowrap;
}
.rj__stage-node.is-current .rj__stage-date[b-sr9r9oypb8] {
    color: var(--hx-gold, #d4af37);
}

/* ── Harvest terminal state ──────────────────────────────── */
.rj__harvest[b-sr9r9oypb8] {
    background: linear-gradient(180deg, rgba(212,175,55,.1), rgba(255,255,255,.02));
    border: 1px solid rgba(212,175,55,.3);
    border-radius: var(--hx-r-sm, 8px);
    padding: 1.5rem 1.75rem;
}
.rj__harvest-title[b-sr9r9oypb8] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.6rem;
    color: #f6efdd;
    letter-spacing: 0.02em;
    margin-bottom: 0.4rem;
}
.rj__harvest-sub[b-sr9r9oypb8] {
    font-size: 0.9rem;
    color: var(--hx-text-caption, #b0a890);
    line-height: 1.55;
    margin: 0;
    max-width: 40rem;
}
.rj__harvest-cta[b-sr9r9oypb8] { margin-top: 1rem; align-self: flex-start; }

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 860px) {
    .rj__body[b-sr9r9oypb8] {
        flex-direction: column;

        /* `align-items: flex-start` (set for the desktop ROW, where it aligns tops) controls the CROSS axis —
           so the moment this stacks, it stops meaning "align tops" and starts meaning "don't stretch
           horizontally". `.rj__main` then shrank to its content width, leaving a bare strip down the whole
           right side beside the plant cards and the heat map. `.rj__sidebar` escaped it only because it sets
           `width: 100%` explicitly, which is exactly why the sections below LOOKED right while these didn't
           (operator, 2026-08-07). Back to the default so the main column fills the width. */
        align-items: stretch;
    }

    .rj__sidebar[b-sr9r9oypb8] {
        width: 100%;
    }

    .rj__plant-card[b-sr9r9oypb8] {
        max-width: 100%;
    }
}
/* /Components/Pages/Runs/WeekView.razor.rz.scp.css */
/* ── WeekView — wv__ namespace ─────────────────────────── */

.wv__loading-text[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    color: var(--hx-muted);
    font-size: 0.85rem;
    padding: 4rem 0;
}

/* ── Header ──────────────────────────────────────────────── */
.wv__header[b-h7ybpglt7z] {
    padding-top: 1.5rem;
    padding-bottom: 1.5rem;
    border-bottom: 1px solid var(--hx-border, #222);
}

.wv__back[b-h7ybpglt7z] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
    text-decoration: none;
    letter-spacing: 0.05em;
    margin-bottom: 0.5rem;
}
.wv__back:hover[b-h7ybpglt7z] { color: var(--hx-gold, #d4af37); }

.wv__eyebrow[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    /* Eyebrow bumped up for presence (operator, 2026-07-26) — was 0.72rem. */
    font-size: 0.9rem;
    color: var(--hx-muted);
    letter-spacing: 0.08em;
    margin: 0 0 0.4rem;
}

.wv__title-row[b-h7ybpglt7z] {
    display: flex;
    align-items: center;
    gap: 1.5rem;
    flex-wrap: wrap;
}

.wv__headline[b-h7ybpglt7z] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2.5rem, 6vw, 4rem);
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0;
    flex-shrink: 0;
}

/* ── Week navigation ─────────────────────────────────────── */
.wv__nav[b-h7ybpglt7z] {
    display: flex;
    align-items: center;
    gap: 0.75rem;
    margin-left: auto;
}

.wv__nav-btn[b-h7ybpglt7z] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 2rem;
    height: 2rem;
    border: 1px solid var(--hx-border, #333);
    border-radius: 4px;
    background: var(--hx-surface-1, #111);
    color: var(--hx-fg, #fff);
    font-size: 1.1rem;
    text-decoration: none;
    cursor: pointer;
    transition: border-color 0.15s, color 0.15s;
    flex-shrink: 0;
}
.wv__nav-btn:hover[b-h7ybpglt7z] { border-color: var(--hx-gold, #d4af37); color: var(--hx-gold, #d4af37); }
.wv__nav-btn--disabled[b-h7ybpglt7z] { opacity: 0.25; cursor: default; pointer-events: none; }

.wv__nav-range[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
    letter-spacing: 0.04em;
    white-space: nowrap;
}

/* ── Stats bar ───────────────────────────────────────────── */
.wv__stats-bar[b-h7ybpglt7z] {
    display: flex;
    align-items: center;
    gap: 0;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    padding: 1.25rem 1.5rem;
    margin: 1.5rem 0;
}

.wv__stat[b-h7ybpglt7z] {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 0.35rem;
    text-align: center;
}

.wv__stat-divider[b-h7ybpglt7z] {
    width: 1px;
    height: 2.5rem;
    background: var(--hx-border, #2a2a2a);
    flex-shrink: 0;
}

.wv__stat-value[b-h7ybpglt7z] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.8rem;
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    line-height: 1;
}

.wv__stat-value--perfect[b-h7ybpglt7z]   { color: #4ade80; }

.wv__stat-label[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    color: var(--hx-muted);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* ── 7-day grid ──────────────────────────────────────────── */
.wv__scroll-wrap[b-h7ybpglt7z] {
    overflow-x: auto;
    -webkit-overflow-scrolling: touch;
    padding-bottom: 0.5rem;
    margin-bottom: 1.25rem;
}

.wv__day-grid[b-h7ybpglt7z] {
    display: grid;
    grid-template-columns: repeat(7, minmax(130px, 1fr));
    gap: 0.5rem;
    min-width: 910px;
    margin-bottom: 2rem;
}

/* ── Day card ────────────────────────────────────────────── */
.wv__day-card[b-h7ybpglt7z] {
    display: flex;
    flex-direction: column;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 6px;
    overflow: hidden;
    text-decoration: none;
    color: inherit;
    position: relative;
    transition: border-color 0.15s;
}
.wv__day-card:hover[b-h7ybpglt7z] { border-color: rgba(212, 175, 55, 0.5); }
.wv__day-card--today[b-h7ybpglt7z] { border-color: var(--hx-gold, #d4af37); }
/* Spectator read-only day cards — no click affordance (doc 13) */
.wv__day-card--readonly[b-h7ybpglt7z] { cursor: default; }
.wv__day-card--readonly:hover[b-h7ybpglt7z] { border-color: var(--hx-border, #222); }
.wv__day-card--readonly.wv__day-card--today:hover[b-h7ybpglt7z] { border-color: var(--hx-gold, #d4af37); }
.wv__day-card--empty[b-h7ybpglt7z] { opacity: 0.65; }
.wv__day-card--empty:hover[b-h7ybpglt7z] { opacity: 1; }

/* Future day — on deck, not loggable yet by anyone. Dashed, dim, inert (mirrors the heatmap on-deck cell). */
.wv__day-card--ondeck[b-h7ybpglt7z] { border: 1px dashed rgba(232, 196, 108, 0.35); opacity: 0.5; cursor: default; }
.wv__day-card--ondeck:hover[b-h7ybpglt7z] { opacity: 0.5; border-color: rgba(232, 196, 108, 0.35); }

/* After harvest — the daily log is closed for this plant (Harvest/Cure mode, doc 09). Dimmed + inert. */
.wv__day-card--after-harvest[b-h7ybpglt7z] { opacity: 0.4; cursor: default; }
.wv__day-card--after-harvest:hover[b-h7ybpglt7z] { opacity: 0.4; }

/* Spectator day card WITH photos — a <button> that opens the read-only gallery (doc 17). */
.wv__day-card--viewable[b-h7ybpglt7z] {
    cursor: pointer;
    font: inherit;
    text-align: inherit;
    padding: 0;
    width: 100%;
}
.wv__day-card--readonly.wv__day-card--viewable:hover[b-h7ybpglt7z] { border-color: rgba(212, 175, 55, 0.5); }

.wv__day-header[b-h7ybpglt7z] {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 0.4rem 0.5rem 0.3rem;
}

.wv__day-dow[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.73rem;
    color: var(--hx-muted);
    letter-spacing: 0.04em;
}

.wv__day-num[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.67rem;
    color: var(--hx-gold, #d4af37);
    letter-spacing: 0.04em;
}

/* ── TODAY badge ─────────────────────────────────────────── */
.wv__today-badge[b-h7ybpglt7z] {
    position: absolute;
    top: 2rem;
    left: 0.4rem;
    background: var(--hx-gold, #d4af37);
    color: #000;
    font-family: 'Bebas Neue', sans-serif;
    font-size: 0.78rem;
    letter-spacing: 0.08em;
    padding: 0.1rem 0.4rem;
    border-radius: 3px;
    z-index: 1;
}

/* ── Photo area ──────────────────────────────────────────── */
.wv__day-photo[b-h7ybpglt7z] {
    position: relative;
    aspect-ratio: 3 / 4;
    overflow: hidden;
    flex-shrink: 0;
}

.wv__photo-img[b-h7ybpglt7z] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}

/* "+N photos" badge — signals the day detail holds more shots (doc 17). */
.wv__photo-more[b-h7ybpglt7z] {
    position: absolute;
    bottom: 0.3rem;
    right: 0.3rem;
    background: rgba(0,0,0,0.68);
    color: #f0ead9;
    font-family: 'Space Mono', monospace;
    font-size: 0.67rem;
    letter-spacing: 0.03em;
    padding: 0.14rem 0.34rem;
    border-radius: 4px;
}

.wv__photo-empty[b-h7ybpglt7z] {
    width: 100%;
    height: 100%;
    background: repeating-linear-gradient(
        45deg,
        #181818,
        #181818 4px,
        #0e0e0e 4px,
        #0e0e0e 10px
    );
}

.wv__photo-empty--logged[b-h7ybpglt7z] {
    /* logged but no photo — slightly lighter hatch */
    background: repeating-linear-gradient(
        45deg,
        #1e1e1e,
        #1e1e1e 4px,
        #141414 4px,
        #141414 10px
    );
}

/* Substitute glyph when a logged day's photo can't be shown (missing/placeholder file). */
.wv__photo-glyph[b-h7ybpglt7z] {
    display: flex;
    align-items: center;
    justify-content: center;
}
.wv__photo-glyph span[b-h7ybpglt7z] {
    font-size: 2.46rem;
    opacity: 0.5;
    filter: grayscale(0.2);
}

/* ── Day footer (below photo) ────────────────────────────── */
.wv__day-footer[b-h7ybpglt7z] {
    padding: 0.5rem 0.5rem 0.6rem;
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}


.wv__chips[b-h7ybpglt7z] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.2rem;
}

.wv__chip[b-h7ybpglt7z] {
    display: inline-block;
    padding: 0.1rem 0.4rem;
    border-radius: 3px;
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.03em;
    white-space: nowrap;
}

/* Action-type chip colors */
.wv__chip--1[b-h7ybpglt7z] { background: rgba(59,130,246,0.2);  color: #93c5fd; border: 1px solid rgba(59,130,246,0.4); }
.wv__chip--2[b-h7ybpglt7z] { background: rgba(34,197,94,0.2);   color: #86efac; border: 1px solid rgba(34,197,94,0.4); }
.wv__chip--3[b-h7ybpglt7z] { background: rgba(103,232,249,0.2); color: #67e8f9; border: 1px solid rgba(103,232,249,0.4); }
.wv__chip--4[b-h7ybpglt7z] { background: rgba(212,175,55,0.15); color: #d4af37; border: 1px solid rgba(212,175,55,0.35); }
.wv__chip--5[b-h7ybpglt7z] { background: rgba(168,85,247,0.2);  color: #d8b4fe; border: 1px solid rgba(168,85,247,0.4); }
.wv__chip--6[b-h7ybpglt7z] { background: rgba(249,115,22,0.2);  color: #fdba74; border: 1px solid rgba(249,115,22,0.4); }
.wv__chip--7[b-h7ybpglt7z] { background: rgba(234,179,8,0.2);   color: #fde047; border: 1px solid rgba(234,179,8,0.4); }
.wv__chip--8[b-h7ybpglt7z] { background: rgba(22,163,74,0.2);   color: #6ee7b7; border: 1px solid rgba(22,163,74,0.4); }

/* Stage-transition pill — "the plant became this here". Same tinted build as an action chip (operator,
   2026-08-03), in the accent purple #926ec4 rather than the chip palette's violet. It stays distinguishable
   from the purple "Trained" chip (.wv__chip--5) by TYPOGRAPHY instead of fill: uppercase and wider-tracked
   against the chips' sentence case. */
.wv__stage-pill[b-h7ybpglt7z] {
    display: inline-block;
    padding: 0.1rem 0.45rem;
    border-radius: 3px;
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.07em;
    white-space: nowrap;
    background: rgba(146, 110, 196, 0.2);
    border: 1px solid rgba(146, 110, 196, 0.45);
    color: #cdb4ee;
}

/* Leads the footer (the pills follow), so the flex gap owns the spacing — no stray margin on top. */
.wv__day-date[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.67rem;
    color: var(--hx-muted);
    letter-spacing: 0.03em;
}

/* ── Week in Review ──────────────────────────────────────── */
.wv__review[b-h7ybpglt7z] {
    border-left: 3px solid var(--hx-gold, #d4af37);
    padding: 1rem 1.25rem;
    background: rgba(212, 175, 55, 0.04);
    border-radius: 0 6px 6px 0;
    margin-bottom: 3rem;
}

.wv__review-title[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-gold, #d4af37);
    letter-spacing: 0.1em;
    margin: 0 0 0.75rem;
}

.wv__review-note[b-h7ybpglt7z] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    line-height: 1.6;
    color: var(--hx-fg, #eee);
    margin: 0 0 0.5rem;
}

.wv__review-note:last-child[b-h7ybpglt7z] { margin-bottom: 0; }

.wv__review-day[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-muted);
    margin-right: 0.4rem;
}

/* Owner's hook into the whole-day view. Quiet by default — it sits at the head of every line, so anything
   louder would turn the review into a column of links and pull attention off the notes. */
.wv__review-day--link[b-h7ybpglt7z] {
    text-decoration: none;
    border-bottom: 1px dotted rgba(232, 196, 108, 0.35);
    transition: color 0.15s, border-color 0.15s;
}
.wv__review-day--link:hover[b-h7ybpglt7z] {
    color: var(--hx-gold, #e8c46c);
    border-bottom-color: var(--hx-gold, #e8c46c);
}

/* The day's action pills, inline ahead of its note. Reuses .wv__chip so the colours/labels match the day
   card exactly; this only handles the inline grouping. margin-right separates them from the note text.
   inline-flex + baseline keeps them sitting on the note's first line rather than pushing it down. */
.wv__review-chips[b-h7ybpglt7z] {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.2rem;
    margin-right: 0.45rem;
    vertical-align: baseline;
}

/* Preserve the line breaks the grower typed into the observation (pre-wrap, not pre — still wraps long
   lines). Scoped to the note text so the Razor source's own indentation doesn't leak in. */
.wv__review-text[b-h7ybpglt7z] { white-space: pre-wrap; }

/* ── Read-only day gallery (doc 17) — same gentle card language as Log Day ── */
.wv__lightbox[b-h7ybpglt7z] {
    position: fixed;
    inset: 0;
    z-index: 200;
    background: rgba(4, 4, 3, 0.6);
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 1.25rem;
}

.wv__lightbox-panel[b-h7ybpglt7z] {
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, #2a2620);
    border-radius: 10px;
    width: min(560px, 92vw);
    max-height: 90vh;   /* a portrait stage is taller than the old 4/3 one — give it the room */
    overflow-y: auto;
    padding: 1rem 1.1rem 1.3rem;
}

.wv__lightbox-head[b-h7ybpglt7z] {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 1rem;
    margin-bottom: 1rem;
}

.wv__lightbox-eyebrow[b-h7ybpglt7z] {
    font-family: 'Space Mono', monospace;
    font-size: 0.64rem;
    letter-spacing: 0.08em;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.15rem;
}

.wv__lightbox-title[b-h7ybpglt7z] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.5rem;
    letter-spacing: 0.02em;
    margin: 0;
    color: var(--hx-fg, #fff);
}

.wv__lightbox-close[b-h7ybpglt7z] {
    flex-shrink: 0;
    background: rgba(255,255,255,0.06);
    border: 1px solid var(--hx-border, #2a2620);
    border-radius: 6px;
    color: var(--hx-fg, #fff);
    font-size: 0.85rem;
    line-height: 1;
    padding: 0.4rem 0.55rem;
    cursor: pointer;
    transition: background 0.15s;
}
.wv__lightbox-close:hover[b-h7ybpglt7z] { background: rgba(255,255,255,0.12); }

/* Staged (large) shot — the current selection; tapping a thumbnail swaps it in.
   The frame follows the PHOTO rather than a fixed ratio. Grow shots are overwhelmingly tall
   phone captures, and the old 4/3 `cover` crop cut the top and bottom off the plant — exactly
   what the viewer opened the gallery to see. Bounded by the panel width and the viewport
   height so the thumbnail strip and the day's note stay on screen underneath. */
.wv__lightbox-stage[b-h7ybpglt7z] {
    margin: 0;
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}

.wv__lightbox-img[b-h7ybpglt7z] {
    max-width: 100%;
    max-height: 56vh;
    border-radius: 6px;
    border: 1px solid var(--hx-border, #2a2620);
    display: block;
}
.wv__lightbox-stage.is-primary .wv__lightbox-img[b-h7ybpglt7z] { border-color: var(--hx-gold, #e8c46c); }

/* Thumbnail strip — one per photo; the active one is ringed. */
.wv__lightbox-thumbs[b-h7ybpglt7z] {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5rem;
    margin-top: 0.7rem;
}

.wv__lightbox-thumb[b-h7ybpglt7z] {
    position: relative;
    width: 68px;
    height: 68px;
    padding: 0;
    border: 2px solid transparent;
    border-radius: 6px;
    background: none;
    cursor: pointer;
    overflow: hidden;
    opacity: 0.6;
    transition: opacity 0.15s, border-color 0.15s, transform 0.15s;
}
.wv__lightbox-thumb:hover[b-h7ybpglt7z] { opacity: 0.85; transform: translateY(-1px); }
.wv__lightbox-thumb.is-active[b-h7ybpglt7z] {
    opacity: 1;
    border-color: var(--hx-gold, #e8c46c);
}

.wv__lightbox-thumb-img[b-h7ybpglt7z] {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    border-radius: 3px;
}

.wv__lightbox-thumb-star[b-h7ybpglt7z] {
    position: absolute;
    top: 2px;
    right: 3px;
    font-size: 0.6rem;
    color: var(--hx-gold, #e8c46c);
    text-shadow: 0 0 3px rgba(0,0,0,0.8);
}

.wv__lightbox-cap[b-h7ybpglt7z] {
    display: flex;
    align-items: center;
    justify-content: center;   /* tracks the centred stage image, not the panel edge */
    gap: 0.3rem;
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.03em;
    color: var(--hx-muted);
    margin-top: 0.3rem;
}
.wv__lightbox-star[b-h7ybpglt7z] { color: var(--hx-gold, #e8c46c); }

.wv__lightbox-note[b-h7ybpglt7z] {
    margin: 1.1rem 0 0;
    padding-top: 0.9rem;
    border-top: 1px solid var(--hx-border, #2a2620);
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.9rem;
    line-height: 1.5;
    color: #d8d2c4;
}

/* ── Responsive ──────────────────────────────────────────── */
@media (max-width: 640px) {
    .wv__stats-bar[b-h7ybpglt7z] { gap: 0; padding: 1rem; }
    .wv__stat-value[b-h7ybpglt7z] { font-size: 1.4rem; }
    .wv__nav-range[b-h7ybpglt7z] { display: none; }
}
/* /Components/Pages/Seeds/Seeds.razor.rz.scp.css */
.sl[b-ucygwxgica] { padding-block: 1.5rem 4rem; }

/* Breadcrumb back to whatever sent the grower here on a "add a seed" detour (?ret). */
.sl__back[b-ucygwxgica] {
    display: inline-block; font-family: 'Space Mono', monospace; font-size: 0.75rem;
    color: var(--hx-text-muted, #9a927e); text-decoration: none; letter-spacing: 0.05em;
    margin-bottom: 1.25rem;
}
.sl__back:hover[b-ucygwxgica] { color: var(--hx-gold, #d4af37); }

.sl__header[b-ucygwxgica] { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; margin-bottom: 1.25rem; }
.sl__title[b-ucygwxgica] { font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.8rem, 7vw, 2.6rem); letter-spacing: 0.05em; color: var(--hx-fg, #fff); margin: 0; }
.sl__sub[b-ucygwxgica] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.85rem; color: var(--hx-text-muted, #9a927e); margin: 0.15rem 0 0; max-width: 42ch; }

.sl__flash[b-ucygwxgica] {
    font-family: 'Space Mono', monospace; font-size: 0.78rem; padding: 0.55rem 0.8rem;
    border-radius: 8px; border: 1px solid; margin-bottom: 1rem;
}
.sl__flash--ok[b-ucygwxgica]  { color: #7bd88f; border-color: rgba(123, 216, 143, 0.4); background: rgba(123, 216, 143, 0.08); }
.sl__flash--err[b-ucygwxgica] { color: #e6a15a; border-color: rgba(230, 161, 90, 0.4);  background: rgba(230, 161, 90, 0.08); }

/* ── Form ─────────────────────────────────────────────── */
.sl__form[b-ucygwxgica] {
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    border-radius: 14px; padding: 1.25rem; margin-bottom: 1.5rem;
}
.sl__form-title[b-ucygwxgica] { font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem; letter-spacing: 0.06em; color: var(--hx-gold, #e8c46c); margin: 0 0 1rem; }
.sl__grid[b-ucygwxgica] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
@media (min-width: 720px) { .sl__grid[b-ucygwxgica] { grid-template-columns: repeat(4, minmax(0, 1fr)); } }
.sl__field[b-ucygwxgica] { display: flex; flex-direction: column; gap: 0.3rem; }
.sl__field > span[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.05em; text-transform: uppercase; color: var(--hx-text-2, #cbc3b0); }
.sl__field em[b-ucygwxgica] { color: var(--hx-text-muted, #9a927e); font-style: normal; text-transform: none; }
.sl__field--wide[b-ucygwxgica] { grid-column: 1 / -1; }
@media (min-width: 720px) { .sl__field--wide[b-ucygwxgica] { grid-column: span 2; } .sl__field--num[b-ucygwxgica] { grid-column: span 1; } }
.sl__input[b-ucygwxgica] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; padding: 0.5rem 0.6rem;
    border-radius: 8px; background: var(--hx-surface-2, #0c0c0c); color: var(--hx-fg, #fff);
    border: 1px solid var(--hx-border, #333); width: 100%;
}
.sl__form-issue[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.78rem; color: #e6a15a; margin: 1rem 0 0; }
.sl__form-actions[b-ucygwxgica] { display: flex; gap: 0.75rem; margin-top: 1.25rem; }

/* ── Toolbar ──────────────────────────────────────────── */
.sl__toolbar[b-ucygwxgica] { display: flex; justify-content: flex-end; margin-bottom: 0.75rem; }
.sl__toggle[b-ucygwxgica] { display: inline-flex; align-items: center; gap: 0.4rem; font-family: 'Space Mono', monospace; font-size: 0.75rem; color: var(--hx-text-2, #cbc3b0); cursor: pointer; }

/* ── List ─────────────────────────────────────────────── */
.sl__empty[b-ucygwxgica] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #9a927e); text-align: center; padding: 2.5rem 0; }
.sl__list[b-ucygwxgica] { display: flex; flex-direction: column; gap: 0.6rem; }
.sl__row[b-ucygwxgica] {
    display: flex; align-items: center; gap: 1rem; flex-wrap: wrap;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    border-radius: 12px; padding: 0.85rem 1rem;
}
.sl__row.is-hidden[b-ucygwxgica] { opacity: 0.5; }
/* "I love this, but I'm out" — the orange restock accent from the grower's Legend. */
.sl__row.is-restock[b-ucygwxgica] { border-color: rgba(232, 140, 60, 0.55); box-shadow: inset 3px 0 0 rgba(232, 140, 60, 0.9); }
.sl__row-main[b-ucygwxgica] { flex: 1 1 12rem; min-width: 0; }
.sl__row-name[b-ucygwxgica] { display: flex; align-items: center; gap: 0.5rem; }
.sl__code[b-ucygwxgica] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1.1rem; line-height: 1; color: var(--hx-surface-2, #0c0c0c);
    background: var(--hx-gold, #e8c46c); border-radius: 5px; padding: 0.1rem 0.4rem; min-width: 1.4rem; text-align: center;
}
.sl__strain[b-ucygwxgica] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; font-size: 1rem; color: var(--hx-fg, #fff); }
.sl__badge[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.55rem; letter-spacing: 0.1em; color: var(--hx-text-muted, #9a927e); border: 1px solid var(--hx-border, #333); border-radius: 999px; padding: 0.1rem 0.45rem; }
.sl__fav-star[b-ucygwxgica] { color: var(--hx-gold, #e8c46c); font-size: 0.9rem; line-height: 1; }
.sl__tag[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.55rem; letter-spacing: 0.1em; border-radius: 999px; padding: 0.1rem 0.5rem; }
.sl__tag--restock[b-ucygwxgica] { color: #e88c3c; border: 1px solid rgba(232, 140, 60, 0.6); background: rgba(232, 140, 60, 0.1); }
.sl__tag--out[b-ucygwxgica] { color: var(--hx-text-muted, #9a927e); border: 1px solid var(--hx-border, #333); }

/* Like (★) toggle */
.sl__star[b-ucygwxgica] {
    background: none; border: none; cursor: pointer; padding: 0.2rem 0.35rem;
    font-size: 1.1rem; line-height: 1; color: var(--hx-text-muted, #6a6357);
}
.sl__star:hover:not(:disabled)[b-ucygwxgica] { color: var(--hx-gold, #e8c46c); }
.sl__star.is-on[b-ucygwxgica] { color: var(--hx-gold, #e8c46c); }
.sl__star:disabled[b-ucygwxgica] { cursor: default; opacity: 0.6; }
.sl__row-meta[b-ucygwxgica] { display: flex; flex-wrap: wrap; gap: 0.4rem; font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-muted, #9a927e); margin-top: 0.25rem; }

/* The "grows sown from this seed" nav dropdown (doc 29) — the live "Run" column. */
.sl__grows[b-ucygwxgica] {
    margin-top: 0.45rem; font-family: 'Space Mono', monospace; font-size: 0.72rem;
    padding: 0.3rem 0.5rem; border-radius: 8px; max-width: 100%;
    background: var(--hx-surface-2, #0c0c0c); color: var(--hx-gold, #e8c46c);
    border: 1px solid var(--hx-border, #333); cursor: pointer;
}

/* Grow state inside the picker. A native <option> can only be coloured as a whole — there is no way to
   tint just the "(Ended)" suffix — so the row carries its state. Active keeps the picker's gold (the
   token's designated active-state colour), so the three states worth noticing are the ones that differ.
   The text label says the state on its own, so a browser that ignores option colours loses nothing.
   Purple = chopped but still drying/curing (accent-tints convention: CURE PURPLE #926ec4); green = the
   cure finished; red = didn't make it. */
.sl__grows option.sl__grow-opt--harvested[b-ucygwxgica] { color: #926ec4; }
.sl__grows option.sl__grow-opt--cured[b-ucygwxgica]     { color: var(--hx-green, #74d59a); }
.sl__grows option.sl__grow-opt--ended[b-ucygwxgica]     { color: var(--hx-red, #e05555); }

/* Edit panel: link existing grows to this seed */
.sl__links[b-ucygwxgica] { margin-top: 1.25rem; border-top: 1px solid var(--hx-border, #2a2820); padding-top: 1rem; }
.sl__links-title[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.05em; text-transform: uppercase; color: var(--hx-text-2, #cbc3b0); }
.sl__links-empty[b-ucygwxgica] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: var(--hx-text-muted, #9a927e); margin: 0.5rem 0 0; }
.sl__links-list[b-ucygwxgica] { display: flex; flex-wrap: wrap; gap: 0.4rem; margin-top: 0.6rem; }
.sl__link-item[b-ucygwxgica] {
    display: inline-flex; align-items: center; gap: 0.4rem; cursor: pointer;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: var(--hx-text-2, #cbc3b0);
    padding: 0.35rem 0.6rem; border-radius: 999px;
    background: var(--hx-surface-2, #0c0c0c); border: 1px solid var(--hx-border, #333);
}
.sl__link-item.is-on[b-ucygwxgica] { border-color: var(--hx-gold, #e8c46c); color: var(--hx-fg, #fff); }
.sl__link-note[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.6rem; color: var(--hx-text-muted, #9a927e); }

.sl__qty[b-ucygwxgica] { display: flex; align-items: center; gap: 0.5rem; }
.sl__qty-btn[b-ucygwxgica] {
    width: 30px; height: 30px; border-radius: 8px; cursor: pointer; font-size: 1.1rem; line-height: 1;
    background: var(--hx-surface-2, #0c0c0c); color: var(--hx-fg, #fff); border: 1px solid var(--hx-border, #333);
    display: flex; align-items: center; justify-content: center;
}
.sl__qty-btn:hover:not(:disabled)[b-ucygwxgica] { border-color: var(--hx-gold, #e8c46c); }
.sl__qty-btn:disabled[b-ucygwxgica] { opacity: 0.4; cursor: default; }
.sl__qty-val[b-ucygwxgica] { font-family: 'Space Mono', monospace; font-size: 0.95rem; color: var(--hx-fg, #fff); min-width: 3rem; text-align: center; }
.sl__qty-total[b-ucygwxgica] { color: var(--hx-text-muted, #9a927e); font-size: 0.8rem; }

.sl__row-actions[b-ucygwxgica] { display: flex; align-items: center; gap: 0.4rem; }
.sl__btn-sm[b-ucygwxgica] { font-size: 0.78rem; padding: 0.35rem 0.7rem; }
.sl__btn-muted[b-ucygwxgica] { color: var(--hx-text-muted, #9a927e); }
/* /Components/Pages/Settings/Settings.razor.rz.scp.css */
.st[b-6ynvncebjb] { padding-block: 2.5rem 4rem; max-width: 44rem; }   /* padding-block only — preserve .hx-container padding-inline */

.st__head[b-6ynvncebjb] { margin-bottom: 1.75rem; }
.st__eyebrow[b-6ynvncebjb] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}
.st__headline[b-6ynvncebjb] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2.4rem;
    letter-spacing: 0.02em;
    color: var(--hx-fg, #fff);
    margin: 0.15rem 0 0;
}
.st__loading[b-6ynvncebjb] {
    font-family: 'Hanken Grotesk', sans-serif;
    color: var(--hx-muted);
}

.st__card[b-6ynvncebjb] {
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #222);
    border-radius: 10px;
    padding: 1.5rem;
    margin-bottom: 1.25rem;
}
.st__card-title[b-6ynvncebjb] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.15rem;
    letter-spacing: 0.06em;
    color: var(--hx-fg, #fff);
    margin: 0;
}
.st__card-sub[b-6ynvncebjb] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.86rem;
    color: var(--hx-muted);
    line-height: 1.45;
    margin: 0.35rem 0 1.1rem;
}

.st__opts[b-6ynvncebjb] {
    display: flex;
    gap: 0.65rem;
    flex-wrap: wrap;
}
.st__opt[b-6ynvncebjb] {
    flex: 1 1 140px;
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 0.15rem;
    text-align: left;
    padding: 0.75rem 0.9rem;
    background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #222);
    border-radius: 8px;
    color: var(--hx-fg, #fff);
    cursor: pointer;
    transition: border-color 0.12s ease, background 0.12s ease;
}
.st__opt:hover:not(:disabled)[b-6ynvncebjb] { border-color: rgba(232, 196, 108, 0.5); }
.st__opt:disabled[b-6ynvncebjb] { opacity: 0.6; cursor: default; }
.st__opt.is-selected[b-6ynvncebjb] {
    border-color: var(--hx-gold, #e8c46c);
    background: rgba(232, 196, 108, 0.08);
}
.st__opt-label[b-6ynvncebjb] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-weight: 600;
    font-size: 0.92rem;
}
.st__opt-hint[b-6ynvncebjb] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-muted);
}

.st__saved[b-6ynvncebjb] {
    font-family: 'Space Mono', monospace;
    font-size: 0.82rem;
    color: #7bd88f;
    margin: 0.5rem 0 0;
}

/* ── Profile card (identity — doc 33; pickers live in <AvatarPicker>) ─────── */
.st__profile-fields[b-6ynvncebjb] {
    display: flex;
    flex-direction: column;
    gap: 0.9rem;
    min-width: 0;
}
.st__profile-fields--wide[b-6ynvncebjb] { margin-bottom: 1.3rem; }
.st__avatar-picker[b-6ynvncebjb] { margin-bottom: 1.3rem; }
.st__field[b-6ynvncebjb] {
    display: flex;
    flex-direction: column;
    gap: 0.3rem;
}
.st__field-label[b-6ynvncebjb] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-muted);
}
.st__input[b-6ynvncebjb] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.95rem;
    color: var(--hx-fg, #fff);
    background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #222);
    border-radius: 8px;
    padding: 0.6rem 0.8rem;
    transition: border-color 0.12s ease;
}
.st__input:focus[b-6ynvncebjb] { outline: none; border-color: var(--hx-gold, #e8c46c); }
.st__input--error[b-6ynvncebjb] { border-color: #d1544f; }
/* The handle is rendered text, not a disabled input (operator, 2026-08-29). Gold monospace is how a
   handle reads everywhere else in the app, so it looks like an identity rather than a dead field.
   Padding-block only, and no inline padding, so it sits flush with the label above it. */
.st__handle[b-6ynvncebjb] {
    font-family: 'Space Mono', monospace;
    font-weight: 700;
    font-size: 1rem;
    color: var(--hx-gold, #e8c46c);
    margin: 0.25rem 0 0;
    word-break: break-all;
    /* Indent to the same optical line as the Display name TEXT above it (operator, 2026-08-29).
       That field's text starts at .st__input's inline padding (0.8rem) plus its 1px border, so
       matching those two values keeps the column aligned. ⚠ If .st__input's padding or border
       changes, this must change with it — it is a deliberate copy, not a coincidence. */
    padding-left: calc(0.8rem + 1px);
}
.st__field-hint[b-6ynvncebjb] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.75rem;
    color: var(--hx-muted);
    line-height: 1.35;
}
.st__field-error[b-6ynvncebjb] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.76rem;
    color: #e08a86;
}

/* Page footer (operator, 2026-08-29): the saved note sits immediately LEFT of the Save button, both
   anchored right. justify-content:flex-end keeps them together as a pair, so the confirmation reads
   as belonging to the action rather than floating at the far side of the page. */
.st__footer[b-6ynvncebjb] {
    display: flex; align-items: center; justify-content: flex-end; gap: 1rem;
    margin-top: 0.5rem;
}
/* /Components/Pages/Showcase/JudgingHome.razor.rz.scp.css */
/* /judging — the judge's home (doc 21 §11.5 #4, §11.6). One column at every width, NOW first. Blue = judging
   mode; gold only for a ruling in its last hour. Tap targets >= 44px, labels >= 0.72rem. */

.jh[b-syubpubena] { max-width: 760px; padding-top: clamp(24px, 4vw, 40px); padding-bottom: 5rem; }
.jh__note[b-syubpubena] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #b0a890); margin: 0.5rem 0 1rem; line-height: 1.5; }
.jh__error[b-syubpubena] {
    padding: 0.7rem 0.9rem; border-radius: var(--hx-r-sm, 8px);
    border: 1px solid rgba(224, 85, 85, 0.5); background: rgba(224, 85, 85, 0.08);
    color: var(--hx-text-heading, #f6efdd); font-family: 'Hanken Grotesk', sans-serif;
}

.jh__gate[b-syubpubena] { text-align: center; padding: 4rem 0; }
.jh__gate-title[b-syubpubena] { font-family: 'Bebas Neue', sans-serif; font-size: 2.2rem; color: var(--hx-text-heading, #f6efdd); margin: 0; }

.jh__head[b-syubpubena] { margin-bottom: 0.6rem; }
.jh__eyebrow[b-syubpubena] { margin: 0; font-family: 'Space Mono', monospace; font-size: 0.75rem; letter-spacing: 0.28em; color: #6fa8bd; }
.jh__title[b-syubpubena] {
    margin: 0.1rem 0 0; font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.4rem, 8vw, 3.4rem);
    line-height: 1; color: var(--hx-text-heading, #f6efdd);
}
.jh__tag[b-syubpubena] { margin: 0.3rem 0 0; font-family: 'Space Mono', monospace; font-size: 0.78rem; color: var(--hx-text-caption, #9a927e); }

.jh__section[b-syubpubena] { margin-top: 1.6rem; }
.jh__section-title[b-syubpubena] {
    margin: 0 0 0.4rem; font-family: 'Space Mono', monospace; font-size: 0.8rem; letter-spacing: 0.24em;
    color: var(--hx-gold, #e8c46c);
}
.jh__empty[b-syubpubena] { margin: 0.3rem 0; font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-caption, #9a927e); }

.jh__row[b-syubpubena] {
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    padding: 12px 14px; margin-bottom: 8px;
    border: 1px solid rgba(111, 168, 189, 0.35); border-left: 3px solid #6fa8bd;
    border-radius: var(--hx-r-sm, 8px); background: rgba(111, 168, 189, 0.05);
}
.jh__row-text[b-syubpubena] { display: flex; flex-direction: column; gap: 3px; min-width: 0; }
.jh__row-title[b-syubpubena] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1.35rem; letter-spacing: 0.03em; line-height: 1.1;
    color: var(--hx-text-heading, #f6efdd); text-decoration: none; overflow-wrap: anywhere;
}
.jh__row-title:hover[b-syubpubena] { color: #6fa8bd; }
.jh__row-state[b-syubpubena] { font-family: 'Space Mono', monospace; font-size: 0.78rem; color: var(--hx-text-2, #d8cdb6); }
.jh__row-meta[b-syubpubena] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-caption, #9a927e); }
.jh__go[b-syubpubena] { flex-shrink: 0; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; white-space: nowrap; }

.jh__row.is-in .jh__row-state[b-syubpubena] { color: var(--hx-green, #74d59a); }
.jh__row--past[b-syubpubena] { border-left-color: var(--hx-text-divider, #4a4438); border-color: var(--hx-border, rgba(255,255,255,.08)); background: transparent; }
.jh__row.is-missed .jh__row-state[b-syubpubena] { color: var(--hx-text-caption, #9a927e); }

/* The last hour: gold (§11.5 #3). */
.jh__row.is-gold[b-syubpubena] {
    border-color: rgba(232, 196, 108, 0.6); border-left-color: var(--hx-gold, #e8c46c);
    background: rgba(232, 196, 108, 0.1);
}
.jh__row.is-gold .jh__row-title[b-syubpubena], .jh__row.is-gold .jh__row-state[b-syubpubena] { color: var(--hx-gold, #e8c46c); }

.jh__remarks[b-syubpubena] { list-style: none; margin: 6px 0 0; padding: 0; display: flex; flex-direction: column; gap: 4px; }
.jh__remark[b-syubpubena] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; color: var(--hx-text-muted, #b0a890); line-height: 1.4; }
.jh__remark-act[b-syubpubena] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-caption, #9a927e); margin-right: 4px; }

@media (max-width: 560px) {
    .jh__row[b-syubpubena] { flex-direction: column; align-items: stretch; }
    .jh__go[b-syubpubena] { width: 100%; }
}
/* /Components/Pages/Showcase/ShowcaseArena.razor.rz.scp.css */
/* THE ARENA — browse carousel (planning doc 20 §7.2). Mobile-first; slide internals flex & auto-arrange. */
.arena__hero[b-6h36lggskj] { text-align: center; padding: 2.5rem 1rem 1.25rem; background: radial-gradient(ellipse at 50% -20%, rgba(232,196,108,0.14), transparent 60%); }
.arena__eyebrow[b-6h36lggskj] { font-family: 'Space Mono', monospace; font-size: 0.78rem; letter-spacing: 0.28em; color: var(--hx-gold, #e8c46c); margin: 0 0 0.5rem; }
.arena__title[b-6h36lggskj] { font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.8rem, 10vw, 6rem); letter-spacing: 0.04em; line-height: 0.9; margin: 0; color: var(--hx-text-heading, #f6efdd); text-shadow: 0 0 40px rgba(232,196,108,0.25); }
.arena__sub[b-6h36lggskj] { font-family: 'Hanken Grotesk', sans-serif; font-size: clamp(1.05rem, 2.6vw, 1.35rem); color: var(--hx-text-2, #cbc3b0); margin: 0.6rem 0 0; }
.arena__loading[b-6h36lggskj] { text-align: center; font-family: 'Space Mono', monospace; color: var(--hx-text-muted, #9a927e); padding: 3rem 0; }

.arena__dark[b-6h36lggskj] { text-align: center; padding: 4rem 1rem; }
.arena__dark-emoji[b-6h36lggskj] { font-size: 3.5rem; opacity: 0.7; }
.arena__dark-title[b-6h36lggskj] { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; color: var(--hx-text-heading, #f6efdd); margin: 0.5rem 0 0.4rem; }
.arena__dark-sub[b-6h36lggskj] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #9a927e); margin: 0; }
.arena__dark-cta[b-6h36lggskj] {
    margin-top: 1.4rem; cursor: pointer;
    font-family: 'Space Mono', monospace; font-size: 0.78rem; letter-spacing: 0.12em; text-transform: uppercase;
    padding: 0.6rem 1.3rem; border-radius: 999px;
    background: transparent; color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232,196,108,0.5); transition: background 0.15s, color 0.15s;
}
.arena__dark-cta:hover[b-6h36lggskj] { background: var(--hx-gold, #e8c46c); color: #17140e; }

/* Bill vs archive — a segmented control, deliberately heavier than the type chips below it so the
   two rows never read as one filter bar. */
.arena__tabs[b-6h36lggskj] { display: flex; justify-content: center; gap: 0.4rem; margin: 0.75rem 0 1.5rem; }
/* Outlined pills in the status-pill style (operator, 2026-10-07) — they were solid gold buttons. Same footprint:
   min-height holds the old button height now that the type is the smaller mono face. */
.arena__tab[b-6h36lggskj] {
    display: inline-flex; align-items: center; gap: 0.6rem; cursor: pointer;
    min-height: 2.6rem; padding: 0.5rem 1.4rem; border-radius: 999px;
    font-family: 'Space Mono', monospace; font-size: 0.82rem; letter-spacing: 0.22em; text-transform: uppercase;
    background: transparent; color: var(--hx-text-3, #b0a890);
    border: 1px solid var(--hx-border, #2a2820); transition: all 0.15s;
}
.arena__tab:hover[b-6h36lggskj] { border-color: rgba(232,196,108,0.5); color: var(--hx-text-heading, #f6efdd); }
.arena__tab.is-active[b-6h36lggskj] { background: rgba(232,196,108,0.1); color: var(--hx-gold, #e8c46c); border-color: rgba(232,196,108,0.6); }
.arena__tab-count[b-6h36lggskj] {
    font-family: 'Space Mono', monospace; font-size: 0.66rem; line-height: 1;
    padding: 0.2rem 0.42rem; border-radius: 999px;
    background: rgba(255,255,255,0.06); color: inherit;
}
.arena__tab.is-active .arena__tab-count[b-6h36lggskj] { background: rgba(232,196,108,0.16); }

.arena__filters[b-6h36lggskj] { display: flex; flex-wrap: wrap; gap: 0.45rem; justify-content: center; margin: 0.5rem 0 1.5rem; }
.arena__filter[b-6h36lggskj] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase;
    padding: 0.35rem 0.8rem; border-radius: 999px; cursor: pointer;
    background: transparent; color: var(--hx-text-3, #b0a890);
    border: 1px solid var(--hx-border, #2a2820); transition: all 0.15s;
}
.arena__filter:hover[b-6h36lggskj] { border-color: rgba(232,196,108,0.5); color: var(--hx-text-heading, #f6efdd); }
/* Outlined like the tabs above (operator, 2026-10-07) — no solid gold fill left on the Arena's controls. */
.arena__filter.is-active[b-6h36lggskj] { background: rgba(232,196,108,0.1); color: var(--hx-gold, #e8c46c); border-color: rgba(232,196,108,0.6); }
.arena__empty[b-6h36lggskj] { text-align: center; font-family: 'Space Mono', monospace; color: var(--hx-text-muted, #9a927e); padding: 2rem 0; }

/* Carousel — one big centered card with arrows OUTSIDE it (beside), so a mis-aim can't click the card.
   Flex row: [‹] [viewport/card] [›], the whole group centered. CSS-animated slide, no scrollbar. */
.arena__carousel[b-6h36lggskj] { display: flex; align-items: center; justify-content: center; gap: 0.75rem; }
.arena__viewport[b-6h36lggskj] { flex: 0 1 760px; min-width: 0; overflow: hidden; }
.arena__track[b-6h36lggskj] { display: flex; transition: transform 0.4s ease; }
.arena__cell[b-6h36lggskj] { flex: 0 0 100%; display: flex; justify-content: center; padding: 0.5rem 0.15rem 1rem; }

.arena__nav[b-6h36lggskj] {
    flex: 0 0 auto;
    width: 2.6rem; height: 2.6rem; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.7rem; line-height: 1; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232,196,108,0.5); transition: background 0.15s, color 0.15s, border-color 0.15s, opacity 0.15s;
}
.arena__nav:hover:not(:disabled)[b-6h36lggskj] { background: var(--hx-gold, #e8c46c); color: #17140e; border-color: var(--hx-gold, #e8c46c); }
.arena__nav:disabled[b-6h36lggskj] { opacity: 0.2; cursor: default; }

/* Slide card — big and centered; internals flex-column so they auto-arrange & wrap on mobile.
   Arrows live outside now, so the card gets normal padding. */
.arena__slide[b-6h36lggskj] {
    width: 100%; max-width: 760px;
    display: flex; flex-direction: column; gap: 0.9rem;
    min-height: 380px; padding: 2rem 2.1rem 1.9rem;
    border-radius: 18px; text-decoration: none;
    background: radial-gradient(ellipse at 50% -10%, rgba(232,196,108,0.13), transparent 65%), var(--hx-surface-1, #14110c);
    border: 1px solid var(--hx-border, #2a2820);
    transition: border-color 0.15s, transform 0.12s;
}
@media (min-width: 768px) {
    .arena__slide[b-6h36lggskj] { min-height: 440px; padding: 2.6rem 2.8rem 2.4rem; }
}
.arena__slide:hover[b-6h36lggskj] { border-color: rgba(232,196,108,0.45); }
/* On Now reads green end to end — border, glow, name and "Watch live" — so a live show can't be mistaken for one
   taking entries, which keeps the gold (operator, 2026-10-07). The 40% border alone read as grey. */
.arena__slide--on-now[b-6h36lggskj] {
    border-color: rgba(108,191,122,0.75);
    box-shadow: 0 0 28px rgba(108,191,122,0.16);
    background: radial-gradient(ellipse at 50% -10%, rgba(108,191,122,0.16), transparent 65%), var(--hx-surface-1, #14110c);
}
.arena__slide--on-now:hover[b-6h36lggskj] { border-color: var(--hx-green, #6cbf7a); }
/* Taking Entries: a visible gold edge (the default border was near-invisible), but no glow — the glow stays On Now's. */
.arena__slide--entries[b-6h36lggskj] { border-color: rgba(232,196,108,0.45); }
.arena__slide--entries:hover[b-6h36lggskj] { border-color: rgba(232,196,108,0.75); }
.arena__slide--on-now .arena__slide-name[b-6h36lggskj],
.arena__slide--on-now .arena__go[b-6h36lggskj] { color: var(--hx-green, #6cbf7a); }

.arena__ribbon[b-6h36lggskj] { align-self: flex-start; font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.22em; padding: 0.25rem 0.7rem; border-radius: 999px; border: 1px solid var(--hx-border, #2a2820); color: var(--hx-text-3, #b0a890); }
.arena__ribbon--on-now[b-6h36lggskj] { color: var(--hx-green, #6cbf7a); border-color: rgba(108,191,122,0.4); background: rgba(108,191,122,0.08); }
.arena__ribbon--entries[b-6h36lggskj] { color: var(--hx-gold, #e8c46c); border-color: rgba(232,196,108,0.4); background: rgba(232,196,108,0.08); }
.arena__ribbon--results[b-6h36lggskj] { color: var(--hx-gold, #e8c46c); border-color: rgba(232,196,108,0.5); background: rgba(232,196,108,0.12); }

.arena__slide-name[b-6h36lggskj] { font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.4rem, 7vw, 4rem); letter-spacing: 0.02em; line-height: 0.96; color: var(--hx-gold, #e8c46c); margin: 0; }
.arena__slide-desc[b-6h36lggskj] { font-family: 'Hanken Grotesk', sans-serif; font-size: 1.05rem; color: var(--hx-text-2, #cbc3b0); margin: 0; }
.arena__slide-reqs[b-6h36lggskj] { display: flex; flex-wrap: wrap; gap: 0.35rem; }
.arena__req[b-6h36lggskj] { font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.03em; padding: 0.2rem 0.5rem; border-radius: 6px; background: rgba(255,255,255,0.03); border: 1px solid var(--hx-border, #2a2820); color: var(--hx-text-3, #b0a890); }
.arena__req--mode[b-6h36lggskj] { background: rgba(232,196,108,0.08); border-color: rgba(232,196,108,0.25); color: var(--hx-gold, #e8c46c); }

/* Footer pinned to the bottom (margin-top:auto) and wrapping so nothing overflows on a phone. */
.arena__slide-foot[b-6h36lggskj] { margin-top: auto; display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 0.4rem 0.8rem; padding-top: 0.7rem; }
.arena__when[b-6h36lggskj] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-muted, #9a927e); }
.arena__go[b-6h36lggskj] { font-family: 'Space Mono', monospace; font-size: 0.78rem; color: var(--hx-gold, #e8c46c); white-space: nowrap; }

/* Dots — the classic carousel position indicator (click to jump). */
.arena__dots[b-6h36lggskj] { display: flex; justify-content: center; gap: 0.5rem; margin: 0.5rem 0 3rem; }
.arena__dot[b-6h36lggskj] { width: 0.6rem; height: 0.6rem; border-radius: 50%; cursor: pointer; padding: 0; border: none; background: var(--hx-border, #2a2820); transition: background 0.15s, transform 0.15s; }
.arena__dot:hover[b-6h36lggskj] { background: var(--hx-text-3, #b0a890); }
.arena__dot.is-active[b-6h36lggskj] { background: var(--hx-gold, #e8c46c); transform: scale(1.3); }
/* /Components/Pages/Showcase/ShowcaseFloor.razor.rz.scp.css */
.floor__hero[b-5g5nagiqso] {
    text-align: center;
    padding: 3rem 1rem 1.5rem;
    background: radial-gradient(ellipse at 50% -20%, rgba(232,196,108,0.14), transparent 60%);
}
.floor__eyebrow[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.8rem; letter-spacing: 0.28em;
    color: var(--hx-gold, #e8c46c); margin: 0 0 0.5rem;
}
.floor__headline[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(3rem, 9vw, 6rem);
    letter-spacing: 0.04em; line-height: 0.9; margin: 0; color: var(--hx-text-heading, #f6efdd);
    text-shadow: 0 0 40px rgba(232,196,108,0.25);
}
/* The show name is the star of the bill — promoted to the hero headline, in gold. */
.floor__showname-hero[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.8rem, 8vw, 5.5rem);
    letter-spacing: 0.03em; line-height: 0.92; margin: 0.1rem 0 0; color: var(--hx-gold, #e8c46c);
    text-shadow: 0 0 44px rgba(232,196,108,0.3);
}
.floor__loading[b-5g5nagiqso] { text-align: center; font-family: 'Space Mono', monospace; color: var(--hx-text-muted, #9a927e); padding: 3rem 0; }

/* Marquee dark (empty state) */
.floor__dark[b-5g5nagiqso] { text-align: center; padding: 4rem 1rem; }
.floor__dark-emoji[b-5g5nagiqso] { font-size: 3.5rem; opacity: 0.7; }
.floor__dark-title[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 2rem; color: var(--hx-text-heading, #f6efdd); margin: 0.5rem 0 0.4rem; }
.floor__dark-sub[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #9a927e); margin: 0; }

/* Show picker */
.floor__tabs[b-5g5nagiqso] { display: flex; flex-wrap: wrap; gap: 0.5rem; justify-content: center; margin: 0 0 1.5rem; }
.floor__tab[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1rem; letter-spacing: 0.04em;
    padding: 0.4rem 0.9rem; border-radius: 999px; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-text-3, #b0a890);
    border: 1px solid var(--hx-border, #2a2820); transition: all 0.15s;
}
.floor__tab:hover[b-5g5nagiqso] { border-color: rgba(232,196,108,0.5); color: var(--hx-text-heading, #f6efdd); }
.floor__tab.is-active[b-5g5nagiqso] { background: var(--hx-gold, #e8c46c); color: #17140e; border-color: var(--hx-gold, #e8c46c); }

.floor__showhead[b-5g5nagiqso] { text-align: center; margin-bottom: 2rem; }
.floor__showname[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 2.4rem; letter-spacing: 0.03em; color: var(--hx-gold, #e8c46c); margin: 0; }
.floor__showdesc[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-size: 1.15rem; color: var(--hx-text-2, #cbc3b0); margin: 0.6rem 0 0; }
.floor__mode[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.78rem; color: var(--hx-text-muted, #9a927e); margin: 0.6rem 0 0; }
.floor__voted[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.82rem; color: var(--hx-gold, #e8c46c); margin: 0.7rem 0 0; }
.floor__voted strong[b-5g5nagiqso] { color: var(--hx-text-heading, #f6efdd); }
.floor__vote-hint[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.82rem; color: var(--hx-text-muted, #9a927e); margin: 0.7rem 0 0; }
.floor__vote-hint strong[b-5g5nagiqso] { color: var(--hx-text-2, #cbc3b0); }

/* Section divider above the lineup. */
.floor__section[b-5g5nagiqso] {
    text-align: center;
    font-family: 'Space Mono', monospace; font-size: 0.8rem; letter-spacing: 0.28em;
    color: var(--hx-gold, #e8c46c); margin: 0 0 1.5rem;
}

/* View toggle — Grid (compare + quick pick) vs Spotlight reel (savor one at a time). */
.floor__view-toggle[b-5g5nagiqso] { display: flex; justify-content: center; gap: 0.4rem; margin: 0 0 1.5rem; }
.floor__view-btn[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.06em;
    padding: 0.35rem 0.85rem; border-radius: 999px; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-text-3, #b0a890);
    border: 1px solid var(--hx-border, #2a2820); transition: all 0.15s;
}
.floor__view-btn:hover[b-5g5nagiqso] { border-color: rgba(232,196,108,0.5); color: var(--hx-text-heading, #f6efdd); }
.floor__view-btn.is-active[b-5g5nagiqso] { background: var(--hx-gold, #e8c46c); color: #17140e; border-color: var(--hx-gold, #e8c46c); }

/* Spotlight reel — one act, centered, arrows OUTSIDE the card (it's a link); JS-free CSS-transform slide. */
.floor__reel[b-5g5nagiqso] { display: flex; align-items: center; justify-content: center; gap: 0.6rem; padding-bottom: 0.5rem; }
.floor__reel-nav[b-5g5nagiqso] {
    flex: 0 0 auto; width: 2.6rem; height: 2.6rem; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 1.7rem; line-height: 1; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232,196,108,0.5); transition: background 0.15s, color 0.15s, border-color 0.15s, opacity 0.15s;
}
.floor__reel-nav:hover:not(:disabled)[b-5g5nagiqso] { background: var(--hx-gold, #e8c46c); color: #17140e; }
.floor__reel-nav:disabled[b-5g5nagiqso] { opacity: 0.25; cursor: default; }
.floor__reel-viewport[b-5g5nagiqso] { flex: 0 1 460px; min-width: 0; overflow: hidden; }
.floor__reel-track[b-5g5nagiqso] { display: flex; transition: transform 0.4s ease; }
.floor__reel-cell[b-5g5nagiqso] { flex: 0 0 100%; display: flex; justify-content: center; padding: 0.4rem 0.3rem 0.8rem; }
.floor__reel .floor__act[b-5g5nagiqso] { width: 100%; max-width: 440px; }
.floor__reel-dots[b-5g5nagiqso] { display: flex; justify-content: center; gap: 0.45rem; margin: 0.2rem 0 3rem; }
.floor__reel-dot[b-5g5nagiqso] { width: 0.55rem; height: 0.55rem; border-radius: 50%; cursor: pointer; padding: 0; border: none; background: var(--hx-border, #2a2820); transition: background 0.15s, transform 0.15s; }
.floor__reel-dot:hover[b-5g5nagiqso] { background: var(--hx-text-3, #b0a890); }
.floor__reel-dot.is-active[b-5g5nagiqso] { background: var(--hx-gold, #e8c46c); transform: scale(1.25); }

/* Acts — a deliberate board (doc 21 §4): 2-up on mobile, a 1×5 / 2×5 lineup on desktop. */
.floor__acts[b-5g5nagiqso] {
    display: grid; grid-template-columns: repeat(2, 1fr); gap: 0.85rem;
    padding-bottom: 4rem;
}
@media (min-width: 768px) {
    .floor__acts[b-5g5nagiqso] { grid-template-columns: repeat(5, 1fr); gap: 1.25rem; }
}
.floor__act[b-5g5nagiqso] {
    position: relative;   /* anchors the judge-set badge over the act image */
    display: flex; flex-direction: column; overflow: hidden;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    border-radius: 12px; transition: border-color 0.15s, transform 0.1s;
}
/* "the grower picked these" (doc 38) — a quiet gold chip, not a second call to action. It sits ABOVE the
   card link in z-order so its own tap opens the gallery instead of the grow. */
.floor__act-set[b-5g5nagiqso] {
    position: absolute; top: 0.4rem; right: 0.4rem; z-index: 2; cursor: pointer;
    font-family: 'Space Mono', monospace; font-size: 0.6rem; letter-spacing: 0.04em;
    padding: 0.2rem 0.45rem; border-radius: 999px; text-decoration: none;
    background: rgba(0, 0, 0, 0.74); color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.45);
}
.floor__act-set:hover[b-5g5nagiqso] { background: rgba(232, 196, 108, 0.24); color: #fff; }

/* The same badge on a closed show's standing — smaller, since the tier row is a compact ladder. */
.floor__tier-set[b-5g5nagiqso] {
    cursor: pointer; align-self: flex-end;
    font-family: 'Space Mono', monospace; font-size: 0.6rem; letter-spacing: 0.04em;
    padding: 0.15rem 0.4rem; border-radius: 999px;
    background: rgba(0, 0, 0, 0.5); color: var(--hx-gold, #e8c46c);
    border: 1px solid rgba(232, 196, 108, 0.45);
}
.floor__tier-set:hover[b-5g5nagiqso] { background: rgba(232, 196, 108, 0.24); color: #fff; }

/* ── The judge-set viewer: the grower's picks, without leaving the show ── */
.floor__setview[b-5g5nagiqso] {
    position: fixed; inset: 0; z-index: 80; display: flex; align-items: center; justify-content: center;
    padding: 1rem; background: rgba(0, 0, 0, 0.9);
}
.floor__setview-panel[b-5g5nagiqso] {
    width: 100%; max-width: 34rem; max-height: 92vh; overflow-y: auto; padding: 1rem;
    background: var(--hx-surface-1, #14110c); border: 1px solid rgba(232, 196, 108, 0.35);
    border-radius: 14px;
}
.floor__setview-head[b-5g5nagiqso] { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.floor__setview-eyebrow[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.6rem; letter-spacing: 0.14em;
    color: var(--hx-gold, #e8c46c); margin: 0 0 0.15rem;
}
.floor__setview-name[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif; font-size: 1.6rem; letter-spacing: 0.04em;
    color: var(--hx-text-1, #f3eede); margin: 0;
}
.floor__setview-x[b-5g5nagiqso] {
    flex: 0 0 auto; width: 28px; height: 28px; border-radius: 50%; cursor: pointer;
    background: rgba(255, 255, 255, 0.07); color: var(--hx-text-2, #cbc3b0); border: none;
}
.floor__setview-x:hover[b-5g5nagiqso] { background: rgba(232, 196, 108, 0.22); color: #fff; }
.floor__setview-loading[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-muted, #9a927e);
    padding: 2rem 0; text-align: center;
}

/* No forced aspect ratio: the stage sizes to the PHOTO. A fixed 3/4 box suits portrait grow shots and
   letterboxes everything else — a canopy or tent shot floated in dead bands top and bottom. The image caps
   itself instead, so each one fills its own shape. Trade accepted: the panel height shifts a little as you
   page between a portrait and a landscape frame. min-height keeps the loading state and the ‹ › from
   collapsing onto a one-line box. */
.floor__setview-stage[b-5g5nagiqso] {
    position: relative; margin-top: 0.75rem; overflow: hidden; min-height: 11rem;
    border-radius: 10px; background: var(--hx-surface-2, #0c0c0c);
    display: flex; align-items: center; justify-content: center;
}
.floor__setview-img[b-5g5nagiqso] {
    display: block; width: auto; height: auto;
    max-width: 100%; max-height: 56vh; object-fit: contain;
}
.floor__setview-demo[b-5g5nagiqso] { font-size: 3rem; opacity: 0.45; }
.floor__setview-nav[b-5g5nagiqso] {
    position: absolute; top: 50%; transform: translateY(-50%); cursor: pointer;
    width: 34px; height: 44px; font-size: 1.4rem; line-height: 1; border: none;
    background: rgba(0, 0, 0, 0.55); color: var(--hx-gold, #e8c46c);
}
.floor__setview-nav:hover[b-5g5nagiqso] { background: rgba(232, 196, 108, 0.28); color: #fff; }
.floor__setview-nav.is-prev[b-5g5nagiqso] { left: 0; border-radius: 0 8px 8px 0; }
.floor__setview-nav.is-next[b-5g5nagiqso] { right: 0; border-radius: 8px 0 0 8px; }

.floor__setview-cap[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.05em;
    color: var(--hx-text-muted, #9a927e); text-align: center; margin: 0.5rem 0 0;
}
.floor__setview-strip[b-5g5nagiqso] { display: flex; gap: 0.3rem; overflow-x: auto; margin-top: 0.5rem; padding-bottom: 0.2rem; }
.floor__setview-thumb[b-5g5nagiqso] {
    flex: 0 0 auto; width: 44px; height: 56px; padding: 0; overflow: hidden; cursor: pointer;
    border-radius: 6px; background: var(--hx-surface-2, #0c0c0c);
    border: 1px solid var(--hx-border, #2a2820);
    display: flex; align-items: center; justify-content: center;
}
.floor__setview-thumb img[b-5g5nagiqso] { width: 100%; height: 100%; object-fit: cover; }
.floor__setview-thumb-demo[b-5g5nagiqso] { font-size: 1rem; opacity: 0.45; }
.floor__setview-thumb.is-on[b-5g5nagiqso] { border-color: var(--hx-gold, #e8c46c); box-shadow: 0 0 0 1px var(--hx-gold, #e8c46c); }

.floor__setview-actions[b-5g5nagiqso] { display: flex; flex-wrap: wrap; gap: 0.5rem; margin-top: 0.9rem; }
.floor__act:hover[b-5g5nagiqso] { transform: translateY(-2px); border-color: rgba(232,196,108,0.4); }
.floor__act.is-mine[b-5g5nagiqso] { border-color: var(--hx-green, #6cbf7a); box-shadow: 0 0 0 1px rgba(108,191,122,0.4); }
/* The act this viewer cheered — gold (their pick), distinct from the green "that's you" owner border. */
.floor__act.is-pick[b-5g5nagiqso] { border-color: var(--hx-gold, #e8c46c); box-shadow: 0 0 0 1px rgba(232,196,108,0.5), 0 0 26px rgba(232,196,108,0.18); }

/* The clickable review link — wraps image + info, drills into the read-only run (doc 13). Cheer stays outside it. */
.floor__act-view[b-5g5nagiqso] { display: flex; flex-direction: column; text-decoration: none; color: inherit; }

.floor__act-img[b-5g5nagiqso] {
    aspect-ratio: 4 / 3; display: flex; align-items: center; justify-content: center;
    background: radial-gradient(ellipse at center, rgba(108,191,122,0.12), rgba(20,17,12,0.6));
    overflow: hidden;
}
.floor__act-img img[b-5g5nagiqso] { width: 100%; height: 100%; object-fit: cover; }
.floor__act-glyph[b-5g5nagiqso] { font-size: 3rem; opacity: 0.55; }

.floor__act-body[b-5g5nagiqso] { padding: 0.9rem 1rem 0.5rem; display: flex; flex-direction: column; gap: 0.3rem; }
.floor__act-top[b-5g5nagiqso] { display: flex; justify-content: space-between; align-items: baseline; gap: 0.5rem; }
.floor__act-plant[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 1.25rem; letter-spacing: 0.02em; color: var(--hx-text-heading, #f6efdd); line-height: 1.05; }
.floor__act-score[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-weight: 700; font-size: 1.3rem; color: var(--hx-green, #6cbf7a); display: inline-flex; align-items: baseline; gap: 0.25rem; white-space: nowrap; }
.floor__act-score-label[b-5g5nagiqso] { font-size: 0.52rem; letter-spacing: 0.04em; color: var(--hx-gold, #e8c46c); }
.floor__act-grower[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.8rem; color: var(--hx-gold, #e8c46c); }
.floor__act-you[b-5g5nagiqso] { font-size: 0.62rem; color: var(--hx-green, #6cbf7a); margin-left: 0.35rem; letter-spacing: 0.05em; }
.floor__act-strain[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: var(--hx-text-muted, #9a927e); }
.floor__act-see[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.68rem; letter-spacing: 0.04em; color: var(--hx-text-muted, #9a927e); margin-top: 0.35rem; transition: color 0.15s; }
.floor__act:hover .floor__act-see[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }

.floor__act-cheer[b-5g5nagiqso] { margin-top: auto; padding: 0.5rem 1rem 1rem; }
/* The hero action — big, full-width, gold, inviting. Cheering is the whole point of the Floor. */
.floor__cheer[b-5g5nagiqso] {
    display: flex; align-items: center; justify-content: center; gap: 0.5rem; width: 100%; cursor: pointer;
    padding: 0.85rem 1rem; border-radius: 12px;
    background: linear-gradient(180deg, rgba(232,196,108,0.24), rgba(232,196,108,0.12));
    border: 1.5px solid var(--hx-gold, #e8c46c);
    color: var(--hx-gold, #e8c46c);
    font-family: 'Bebas Neue', sans-serif; font-size: 1.35rem; letter-spacing: 0.07em;
    box-shadow: 0 0 0 3px rgba(232,196,108,0.08);
    animation: floor-cheer-invite-b-5g5nagiqso 2.2s ease-in-out infinite;
    transition: transform 0.12s, background 0.12s, box-shadow 0.12s, color 0.12s;
}
.floor__cheer:hover:not(:disabled)[b-5g5nagiqso] {
    background: var(--hx-gold, #e8c46c); color: #1a1400; transform: translateY(-2px) scale(1.02);
    box-shadow: 0 10px 28px rgba(232,196,108,0.4); animation: none;
}
/* Your pick — gold, celebratory (the act you spent your cheer on). Non-interactive span. */
.floor__cheer.is-cheered[b-5g5nagiqso] {
    background: var(--hx-gold, #e8c46c); color: #1a1400; border-color: var(--hx-gold, #e8c46c);
    cursor: default; pointer-events: none; animation: none;
}
/* Every other act once your cheer is spent — muted, locked. */
/* A seated judge's slot: the Cheer button's look, but a link to their board — no invite pulse, it isn't a cheer. */
.floor__cheer--judge[b-5g5nagiqso] { text-decoration: none; animation: none; white-space: nowrap; }
.floor__cheer--judge:hover[b-5g5nagiqso] { background: var(--hx-gold, #e8c46c); color: #1a1400; transform: translateY(-2px); }
.floor__cheer.is-spent[b-5g5nagiqso] { opacity: 0.4; cursor: default; pointer-events: none; animation: none; }
.floor__cheer-emoji[b-5g5nagiqso] { font-size: 1.5rem; line-height: 1; }
.floor__applause-num[b-5g5nagiqso] { font-weight: 700; }
.floor__cheer-label[b-5g5nagiqso] { font-size: 1.35rem; letter-spacing: 0.07em; }
@keyframes floor-cheer-invite-b-5g5nagiqso { 0%, 100% { box-shadow: 0 0 0 3px rgba(232,196,108,0.08); } 50% { box-shadow: 0 0 22px 3px rgba(232,196,108,0.28); } }
@media (prefers-reduced-motion: reduce) { .floor__cheer[b-5g5nagiqso] { animation: none; } }
.floor__applause[b-5g5nagiqso] { font-family: 'Space Mono', monospace; color: var(--hx-text-3, #b0a890); font-size: 0.9rem; }
.floor__applause .floor__applause-num[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }

/* The judging/voting countdown shown while cheering's open — how long you've got left to weigh in.
   A prominent clock: a small label over a big gold mm:ss so the deadline reads at a glance. */
.floor__voting-clock[b-5g5nagiqso] {
    text-align: center; font-family: 'Space Mono', monospace; font-size: 0.8rem;
    letter-spacing: 0.12em; text-transform: uppercase; color: var(--hx-text-muted, #9a927e);
    margin: 0 0 1.5rem;
}
.floor__voting-clock strong[b-5g5nagiqso] {
    display: block; margin-top: 0.15rem;
    font-family: 'Bebas Neue', sans-serif; font-weight: 400;
    font-size: clamp(2.6rem, 11vw, 4rem); line-height: 1; letter-spacing: 0.03em;
    color: var(--hx-gold, #e8c46c); text-shadow: 0 0 24px rgba(232,196,108,0.3);
    font-variant-numeric: tabular-nums;
}

/* First-timer "how to vote" cue — a mini sample button + plain-language instruction (dogfood 2026-07-12). */
.floor__how[b-5g5nagiqso] {
    display: flex; align-items: center; justify-content: center; flex-wrap: wrap; gap: 0.6rem;
    margin: 0 auto 1.25rem; padding: 0.6rem 1rem; max-width: 520px;
    background: rgba(232,196,108,0.06); border: 1px dashed var(--hx-border-gold, rgba(232,196,108,0.4)); border-radius: 12px;
}
.floor__how-sample[b-5g5nagiqso] {
    display: inline-flex; align-items: center; gap: 0.35rem; flex: 0 0 auto;
    padding: 0.35rem 0.7rem; border-radius: 999px;
    background: linear-gradient(180deg, rgba(232,196,108,0.24), rgba(232,196,108,0.12));
    border: 1.5px solid var(--hx-gold, #e8c46c); color: var(--hx-gold, #e8c46c);
    font-family: 'Bebas Neue', sans-serif; font-size: 1rem; letter-spacing: 0.06em;
}
.floor__how-emoji[b-5g5nagiqso] { font-size: 1.15rem; line-height: 1; }
.floor__how-text[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.95rem; color: var(--hx-text-2, #cbc3b0); }
.floor__how-text strong[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }

/* ── The Playbill: filter chips + posters (doc 20 §7.2) ── */
.floor__filters[b-5g5nagiqso] { display: flex; flex-wrap: wrap; gap: 0.45rem; justify-content: center; margin: 0 0 2rem; }
.floor__filter[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.08em; text-transform: uppercase;
    padding: 0.35rem 0.8rem; border-radius: 999px; cursor: pointer;
    background: var(--hx-surface-1, #14110c); color: var(--hx-text-3, #b0a890);
    border: 1px solid var(--hx-border, #2a2820); transition: all 0.15s;
}
.floor__filter:hover[b-5g5nagiqso] { border-color: rgba(232,196,108,0.5); color: var(--hx-text-heading, #f6efdd); }
.floor__filter.is-active[b-5g5nagiqso] { background: var(--hx-gold, #e8c46c); color: #17140e; border-color: var(--hx-gold, #e8c46c); }

.floor__posters[b-5g5nagiqso] {
    display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 1rem;
    margin: 0 0 2.5rem;
}
.floor__poster[b-5g5nagiqso] {
    display: flex; flex-direction: column; gap: 0.6rem;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    border-radius: 12px; padding: 1.1rem 1.15rem 1.2rem;
    transition: border-color 0.15s, transform 0.1s;
}
.floor__poster:hover[b-5g5nagiqso] { transform: translateY(-2px); border-color: rgba(232,196,108,0.35); }
.floor__poster--open[b-5g5nagiqso] { border-color: rgba(232,196,108,0.35); }   /* taking entries — a touch of gold */

.floor__poster-top[b-5g5nagiqso] { display: flex; justify-content: space-between; align-items: baseline; gap: 0.6rem; }
.floor__poster-name[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 1.5rem; letter-spacing: 0.02em; color: var(--hx-gold, #e8c46c); line-height: 1.05; margin: 0; }
.floor__poster-when[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.68rem; color: var(--hx-text-muted, #9a927e); white-space: nowrap; }
.floor__poster-desc[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem; color: var(--hx-text-2, #cbc3b0); margin: 0; }

.floor__poster-reqs[b-5g5nagiqso] { display: flex; flex-wrap: wrap; gap: 0.35rem; margin-top: 0.15rem; }
.floor__req[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.03em;
    padding: 0.2rem 0.5rem; border-radius: 6px;
    background: rgba(255,255,255,0.03); border: 1px solid var(--hx-border, #2a2820); color: var(--hx-text-3, #b0a890);
}
.floor__poster-cta[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-3, #b0a890); margin: 0.2rem 0 0; }

/* ── Show detail (a show's Floor) — back link, status ribbon, dormant standby ── */
/* Its own line (block + fit-content): as inline-block it sat on the same line as the status pill. */
.floor__back[b-5g5nagiqso] {
    display: block; width: fit-content; margin: 0 auto 0.8rem;
    font-family: 'Space Mono', monospace; font-size: 0.75rem; letter-spacing: 0.08em;
    color: var(--hx-text-muted, #9a927e); text-decoration: none;
}
.floor__back:hover[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }

.floor__ribbon[b-5g5nagiqso] {
    display: inline-block; font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.24em;
    padding: 0.25rem 0.75rem; border-radius: 999px; margin: 0 0 0.5rem;
    border: 1px solid var(--hx-border, #2a2820); color: var(--hx-text-3, #b0a890);
}
.floor__ribbon--on-now[b-5g5nagiqso]  { color: var(--hx-green, #6cbf7a); border-color: rgba(108,191,122,0.4); background: rgba(108,191,122,0.08); }
.floor__ribbon--entries[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c);  border-color: rgba(232,196,108,0.4); background: rgba(232,196,108,0.08); }

.floor__standby[b-5g5nagiqso] { text-align: center; padding: 1.5rem 0 4rem; display: flex; flex-direction: column; align-items: center; gap: 1.1rem; }
.floor__countdown[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.8rem, 5vw, 2.8rem); letter-spacing: 0.05em; color: var(--hx-gold, #e8c46c); margin: 0; }
.floor__standby-reqs[b-5g5nagiqso] { display: flex; flex-wrap: wrap; gap: 0.4rem; justify-content: center; }
.floor__standby-cta[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); max-width: 32rem; margin: 0.2rem auto 0; }

/* ── The final standing — a pyramid revealed bottom-up to the champion (doc 21 §6) ──
   Every act on it already won the draw: NO red, NO "last place". Placement, never defeat. */
.floor__pyramid[b-5g5nagiqso] { display: flex; flex-direction: column; align-items: center; gap: 0.7rem; padding-bottom: 4rem; }
.floor__tier[b-5g5nagiqso] {
    width: 100%; max-width: calc(20rem + var(--rank, 1) * 3rem);   /* wider toward the base, narrow gold apex */
    display: flex; align-items: center; gap: 0.9rem;
    padding: 0.85rem 1.1rem; border-radius: 12px;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
    opacity: 0; transform: translateY(14px);
    animation: floor-tier-in-b-5g5nagiqso 0.55s ease forwards;
    animation-delay: calc(var(--reveal, 0) * 0.7s);   /* bottom rung first, champion last */
    transition: box-shadow 0.45s ease;   /* so the ceremony spotlight glides off as it moves down the standing */
}
@keyframes floor-tier-in-b-5g5nagiqso { to { opacity: 1; transform: none; } }
@media (prefers-reduced-motion: reduce) {
    .floor__tier[b-5g5nagiqso] { animation: none; opacity: 1; transform: none; }
}
.floor__tier.is-champ[b-5g5nagiqso] {
    max-width: 24rem; padding: 1.1rem 1.2rem;
    border-color: var(--hx-gold, #e8c46c);
    background: radial-gradient(ellipse at 50% -40%, rgba(232,196,108,0.22), transparent 70%), var(--hx-surface-1, #14110c);
    box-shadow: 0 0 32px rgba(232,196,108,0.22);
}
.floor__tier-badge[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem; color: var(--hx-text-3, #b0a890); min-width: 2rem; text-align: center; }
.floor__tier.is-champ .floor__tier-badge[b-5g5nagiqso] { font-size: 1.9rem; }
.floor__tier-body[b-5g5nagiqso] { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; text-decoration: none; color: inherit; }
.floor__tier-name[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 1.25rem; letter-spacing: 0.02em; line-height: 1.05; color: var(--hx-text-heading, #f6efdd); }
.floor__tier.is-champ .floor__tier-name[b-5g5nagiqso] { font-size: 1.75rem; color: var(--hx-gold, #e8c46c); }
.floor__tier-body:hover .floor__tier-name[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }
.floor__tier-grower[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.03em; color: var(--hx-text-muted, #9a927e); }
.floor__tier.is-champ .floor__tier-grower[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }
.floor__tier-meta[b-5g5nagiqso] { display: flex; flex-direction: column; align-items: flex-end; gap: 0.15rem; white-space: nowrap; }
.floor__tier-applause[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.85rem; color: var(--hx-text-2, #cbc3b0); }
.floor__tier-hax[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-weight: 700; font-size: 1rem; color: var(--hx-green, #6cbf7a); display: inline-flex; align-items: baseline; gap: 0.2rem; }
.floor__tier-haxlabel[b-5g5nagiqso] { font-size: 0.5rem; letter-spacing: 0.04em; color: var(--hx-gold, #e8c46c); }

/* ── The Results Ceremony (doc 21 §6a) — the draw's twin, counting up to the champion ─────────── */
/* The announcer's cue, held while placements fall into place worst-first. Pulses like the draw eyebrow
   but at headline weight — "I PRESENT THE WINNERS OF <show>…". */
.floor__results-cue[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(1.5rem, 6vw, 2.6rem); letter-spacing: 0.04em; line-height: 1.05;
    color: var(--hx-gold, #e8c46c); text-align: center;
    text-shadow: 0 0 24px rgba(232, 196, 108, 0.38);
    animation: floor-pulse-b-5g5nagiqso 1.6s ease-in-out infinite;
}
/* Spotlight on the placement that just landed — a gold halo that glides down the standing (via the
   base tier's box-shadow transition) as the next act arrives, so the eye follows the countdown. */
.floor__tier.is-newest[b-5g5nagiqso] {
    box-shadow: 0 0 0 2px rgba(232, 196, 108, 0.35), 0 12px 34px rgba(232, 196, 108, 0.14);
}
@media (prefers-reduced-motion: reduce) {
    .floor__results-cue[b-5g5nagiqso] { animation: none; }
}

/* ── The live draw ceremony (doc 20 §5c) — mobile-first ─────────────────────── */
.floor__draw[b-5g5nagiqso] { text-align: center; padding-block: 1rem 2.5rem; }
.floor__draw-eyebrow[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem; letter-spacing: 0.22em; text-transform: uppercase;
    color: var(--hx-gold, #e8c46c);
    margin: 0 0 0.5rem;
    animation: floor-pulse-b-5g5nagiqso 1.4s ease-in-out infinite;
}
.floor__draw-title[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(1.4rem, 5vw, 2.2rem); letter-spacing: 0.05em;
    color: var(--hx-text-2, #cbc3b0); margin: 0 0 0.15rem;
}
/* The announcer's headline — the just-called grower's name, slammed in. The star of each beat. */
.floor__announce-name[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(2.4rem, 11vw, 4.5rem); letter-spacing: 0.02em; line-height: 1;
    color: var(--hx-gold, #e8c46c); margin: 0 0 1rem;
    text-shadow: 0 0 26px rgba(232, 196, 108, 0.4);
    animation: floor-announce-b-5g5nagiqso 0.5s cubic-bezier(0.2, 0.9, 0.3, 1.25);
}
.floor__draw-next[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.85rem; color: var(--hx-text-2, #cbc3b0); margin: 0 0 1.5rem; }
.floor__draw-next strong[b-5g5nagiqso] { color: var(--hx-gold, #e8c46c); }

/* The pre-show countdown clock. */
.floor__clock[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(3.5rem, 16vw, 6.5rem); line-height: 1; letter-spacing: 0.04em;
    color: var(--hx-gold, #e8c46c); margin: 0 0 1.5rem;
    text-shadow: 0 0 30px rgba(232, 196, 108, 0.35);
    font-variant-numeric: tabular-nums;
}

/* Taking entries — its own phase, its own look. Calm blue (the gentle-nudge tint), no glow, no pulse:
   the gold spotlight belongs to the draw. Reads "come in, there's time", not "showtime". */
.floor__entries[b-5g5nagiqso] { text-align: center; padding-block: 1rem 1rem; display: flex; flex-direction: column; align-items: center; gap: 0.9rem; }
.floor__entries-title[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace;
    font-size: 0.78rem; letter-spacing: 0.22em; text-transform: uppercase;
    color: var(--hx-blue, #6fa8bd); margin: 0;
}
.floor__entries-clock[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: clamp(3rem, 13vw, 5.25rem); line-height: 1; letter-spacing: 0.04em;
    color: var(--hx-blue, #6fa8bd); margin: 0;
    font-variant-numeric: tabular-nums;
}
.floor__entries-rule[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.85rem; letter-spacing: 0.04em; color: var(--hx-text-2, #cbc3b0); margin: 0; }
.floor__entries .floor__sponsor[b-5g5nagiqso] { margin: 1rem auto 0; }   /* last thing in the poster: no trailing margin (operator 10-10: dead space) */

/* Pre-show sponsor slot — tasteful, restrained (sponsor the WAIT, never the show). A slim "brought to
   you by" card, muted so it doesn't compete with the ceremony; it disappears the instant the reveal starts. */
.floor__sponsor[b-5g5nagiqso] {
    position: relative;
    max-width: 440px; margin: 0 auto 1.75rem;
    padding: 1rem 1.1rem; display: flex; align-items: center; gap: 1rem;
    background: var(--hx-surface-1, #111);
    border: 1px solid var(--hx-border, #262626); border-radius: 12px;
    text-align: left;
}
.floor__sponsor-badge[b-5g5nagiqso] {
    position: absolute; top: -0.55rem; left: 1rem;
    font-family: 'Space Mono', monospace; font-size: 0.55rem; letter-spacing: 0.14em;
    color: var(--hx-text-muted, #9a927e);
    background: var(--hx-surface-2, #0c0c0c); border: 1px solid var(--hx-border, #333);
    border-radius: 999px; padding: 0.12rem 0.5rem;
}
.floor__sponsor-img[b-5g5nagiqso] {
    flex: 0 0 auto; width: 64px; height: 64px; border-radius: 8px;
    background: var(--hx-surface-2, #0c0c0c); border: 1px dashed var(--hx-border, #333);
    display: flex; align-items: center; justify-content: center;
}
.floor__sponsor-img span[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.55rem; letter-spacing: 0.08em; color: var(--hx-text-muted, #9a927e); }
.floor__sponsor-body[b-5g5nagiqso] { min-width: 0; text-align: left; }
.floor__sponsor-eyebrow[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.6rem; letter-spacing: 0.1em; text-transform: uppercase; color: var(--hx-text-muted, #9a927e); }
.floor__sponsor-name[b-5g5nagiqso] { font-family: 'Bebas Neue', sans-serif; font-size: 1.35rem; letter-spacing: 0.03em; color: var(--hx-text-2, #cbc3b0); line-height: 1.1; }
.floor__sponsor-desc[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.78rem; color: var(--hx-text-muted, #9a927e); margin-top: 0.15rem; }

/* The stage — every seat visible from the start (empty), filling one by one. 2-up on a phone. */
.floor__stage[b-5g5nagiqso] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 0.6rem; max-width: 640px; margin: 0 auto 1.25rem;
}
.floor__seat[b-5g5nagiqso] {
    display: flex; flex-direction: column; align-items: center; justify-content: center;
    gap: 0.2rem; padding: 0.85rem 0.6rem; min-height: 132px;
    border-radius: 12px; border: 1px solid var(--hx-border, #333);
    background: var(--hx-surface-2, #0c0c0c);
    transition: border-color 0.2s ease;
}
.floor__seat.is-empty[b-5g5nagiqso] { border-style: dashed; opacity: 0.5; }
.floor__seat.is-filled[b-5g5nagiqso] { border-color: var(--hx-gold, #e8c46c); background: var(--hx-surface-1, #111); }
/* The card that just landed fades + pops into its seat. */
.floor__seat.is-newest[b-5g5nagiqso] {
    animation: floor-seat-in-b-5g5nagiqso 0.55s cubic-bezier(0.2, 0.9, 0.3, 1.2);
    box-shadow: 0 0 0 3px rgba(232, 196, 108, 0.18), 0 10px 30px rgba(0, 0, 0, 0.5);
}
.floor__seat-img[b-5g5nagiqso] { width: 68px; height: 68px; border-radius: 10px; overflow: hidden; background: var(--hx-surface-2, #1a1a1a); display: flex; align-items: center; justify-content: center; }
.floor__seat-img img[b-5g5nagiqso] { width: 100%; height: 100%; object-fit: cover; }
.floor__seat-glyph[b-5g5nagiqso] { font-size: 2rem; }
.floor__seat-name[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; font-size: 0.9rem; color: var(--hx-fg, #fff); text-align: center; line-height: 1.1; }
.floor__seat-grower[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-gold, #e8c46c); }
.floor__seat-ticket[b-5g5nagiqso] { font-size: 1.6rem; opacity: 0.6; }
.floor__seat-wait[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.62rem; letter-spacing: 0.06em; color: var(--hx-text-muted, #9a927e); text-transform: uppercase; }
.floor__draw-foot[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-muted, #9a927e); margin: 0; }
/* The results lines sit outside .floor__standby / .floor__draw, which is where those classes get centred. */
.floor__results-note[b-5g5nagiqso] { text-align: center; margin-inline: auto; }

@keyframes floor-seat-in-b-5g5nagiqso { from { opacity: 0; transform: scale(0.85) translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes floor-announce-b-5g5nagiqso { from { opacity: 0; transform: scale(1.15); letter-spacing: 0.2em; } to { opacity: 1; transform: none; } }
@keyframes floor-pulse-b-5g5nagiqso { 0%, 100% { opacity: 1; } 50% { opacity: 0.45; } }

@media (prefers-reduced-motion: reduce) {
    .floor__draw-eyebrow[b-5g5nagiqso], .floor__announce-name[b-5g5nagiqso], .floor__seat.is-newest[b-5g5nagiqso] { animation: none; }
}

/* Give each seat its own column on wider screens (up to 5-up, then wrap). */
@media (min-width: 560px) {
    .floor__stage[b-5g5nagiqso] { grid-template-columns: repeat(auto-fit, minmax(110px, 140px)); justify-content: center; }
}

/* ── "The judging panel" (doc 21 §11.4) ──────────────────────────────
   Phone: avatars wrapping into centred rows, byline on the profile (tap). Desktop: cards with bylines. */
.floor__panel[b-5g5nagiqso] { margin-top: 1.5rem; min-width: 0; width: 100%; }
/* Inside the entries poster: the poster's own gap spaces it. */
.floor__entries .floor__panel[b-5g5nagiqso] { margin-top: 0.25rem; }
.floor__panel-title[b-5g5nagiqso] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.35rem; letter-spacing: 0.1em;
    color: var(--hx-gold, #e8c46c);
    text-align: center;
    margin: 0 0 1rem;
}
.floor__panel-row[b-5g5nagiqso] {
    list-style: none; margin: 0; padding: 0 0 0.5rem;
    display: flex; flex-wrap: wrap; justify-content: center; gap: 0.75rem;   /* wraps into rows, never scrolls */
}
.floor__judge[b-5g5nagiqso] { flex: 0 0 auto; }
.floor__judge-link[b-5g5nagiqso] {
    display: flex; flex-direction: column; align-items: center; gap: 0.3rem;
    width: 6.5rem; min-height: 44px;
    padding: 0.6rem 0.4rem;
    text-align: center; text-decoration: none;
    border-radius: 12px;
}
.floor__judge-link:hover[b-5g5nagiqso] { background: rgba(232, 196, 108, 0.06); }
.floor__judge-name[b-5g5nagiqso] {
    font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; font-size: 0.85rem;
    color: var(--hx-text-heading, #f6efdd);
    max-width: 100%; overflow-wrap: anywhere;   /* the full name, wrapped; the row wraps, so height is free */
}
.floor__judge-handle[b-5g5nagiqso] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem;
    color: var(--hx-gold, #e8c46c);
    max-width: 100%; overflow-wrap: anywhere;
}
.floor__judge-byline[b-5g5nagiqso] { display: none; }

@media (min-width: 768px) {
    .floor__panel-row[b-5g5nagiqso] { gap: 1rem; }
    /* Every card in a row is as tall as the tallest: the row stretches each item, the link fills its item. */
    .floor__judge[b-5g5nagiqso] { display: flex; }
    .floor__judge-link[b-5g5nagiqso] {
        width: 11rem;
        box-sizing: border-box;
        padding: 1rem 0.75rem;
        border: 1px solid rgba(232, 196, 108, 0.3);
        background: var(--hx-surface-1, #14110c);
    }
    .floor__judge-byline[b-5g5nagiqso] {
        display: block;
        font-family: 'Hanken Grotesk', sans-serif; font-size: 0.8rem;
        color: var(--hx-text-caption-2, #b8b09a);
        margin-top: 0.2rem;
        /* Two lines at most, so one long byline can't make the whole row tall. The full byline is on the profile. */
        display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; line-clamp: 2; overflow: hidden;
    }
}

/* ── Judged shows (doc 21 slice 3b) ── */
/* A seated judge's way into their board (§11.5 #5): gold-bordered, under the mode line, in every phase they sit. */
.floor__judge-cta[b-5g5nagiqso] {
    display: flex; flex-wrap: wrap; align-items: center; justify-content: center; gap: 0.6rem 1rem;
    margin: 1rem auto 0; padding: 0.8rem 1rem; max-width: 40rem;
    border: 1px solid var(--hx-border-gold-strong, rgba(232,196,108,.6)); border-radius: var(--hx-r, 12px);
    background: var(--hx-fill-gold, rgba(232,196,108,.10));
}
.floor__judge-cta-text[b-5g5nagiqso] { margin: 0; font-family: 'Space Mono', monospace; font-size: 0.82rem; color: var(--hx-gold, #e8c46c); }
.floor__judge-cta-btn[b-5g5nagiqso] { min-height: 44px; display: inline-flex; align-items: center; }
/* The crowd's own pick on a judged show's results. */
.floor__crowd-fav[b-5g5nagiqso] {
    text-align: center; font-family: 'Space Mono', monospace; font-size: 0.82rem;
    color: var(--hx-text-muted, #b0a890); margin: 0.5rem 0 1.4rem;   /* its own line, a beat under the rule */
}
.floor__crowd-fav strong[b-5g5nagiqso] { color: var(--hx-text-heading, #f6efdd); }

/* "The judges on the winner" (doc 21 §11.5 #8, slice 4): under the champion row, as wide as it. Gold stays the
   champion's; the panel's words sit in judging blue (reference_accent_tints). Phone first, labels >= 0.72rem. */
.floor__jow[b-5g5nagiqso] {
    width: 100%; max-width: 24rem; box-sizing: border-box; margin-top: -0.2rem;
    padding: 0.8rem 1rem; border-left: 3px solid #6fa8bd; border-radius: var(--hx-r-sm, 8px);
    background: rgba(111, 168, 189, 0.06);
}
.floor__jow-title[b-5g5nagiqso] { margin: 0; font-family: 'Space Mono', monospace; font-size: 0.75rem; letter-spacing: 0.2em; color: #6fa8bd; }
.floor__jow-tally[b-5g5nagiqso] { margin: 0.3rem 0 0; font-family: 'Space Mono', monospace; font-size: 0.8rem; line-height: 1.45; color: var(--hx-text-2, #cbc3b0); }
.floor__jow-remarks[b-5g5nagiqso] { list-style: none; margin: 0.7rem 0 0; padding: 0; display: flex; flex-direction: column; gap: 0.8rem; }
.floor__jow-judge[b-5g5nagiqso] { display: flex; align-items: center; gap: 0.55rem; min-height: 44px; text-decoration: none; color: inherit; }
.floor__jow-who[b-5g5nagiqso] { display: flex; flex-direction: column; min-width: 0; flex: 1 1 auto; }
.floor__jow-name[b-5g5nagiqso] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 600; font-size: 0.92rem; color: var(--hx-text-heading, #f6efdd); }
.floor__jow-judge:hover .floor__jow-name[b-5g5nagiqso] { color: #6fa8bd; }
.floor__jow-byline[b-5g5nagiqso] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-caption, #9a927e); overflow-wrap: anywhere; }
.floor__jow-picked[b-5g5nagiqso] {
    flex-shrink: 0; padding: 2px 9px; border-radius: var(--hx-r-pill, 999px);
    box-shadow: inset 0 0 0 1px rgba(111, 168, 189, 0.75);
    font-family: 'Space Mono', monospace; font-size: 0.72rem; color: #6fa8bd; white-space: nowrap;
}
.floor__jow-quote[b-5g5nagiqso] {
    margin: 0.25rem 0 0; padding: 0; font-family: 'Hanken Grotesk', sans-serif; font-size: 0.95rem;
    line-height: 1.5; color: var(--hx-text-2, #cbc3b0); overflow-wrap: anywhere;
}
/* /Components/Pages/Showcase/ShowcaseJudge.razor.rz.scp.css */
/* The judge board (doc 21 §4, §11.6). Phone first: a 2-column ladder under a sticky header that always carries
   "opened X of N" and the pick state; 5 columns on desktop. Tap targets >= 44px, labels >= 0.72rem. */

.jb[b-qthqzp91b1] { min-height: 60vh; padding-bottom: 6rem; }
.jb__note[b-qthqzp91b1] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-muted, #b0a890); margin: 0.5rem 0 1rem; line-height: 1.5; }

.jb__gate[b-qthqzp91b1] { text-align: center; padding: 4rem 0; }
.jb__gate-title[b-qthqzp91b1] { font-family: 'Bebas Neue', sans-serif; font-size: 2.2rem; color: var(--hx-text-heading, #f6efdd); margin: 0; }

/* ── Sticky header ── */
.jb__head[b-qthqzp91b1] {
    position: sticky; top: var(--hx-nav-h, 56px); z-index: 20;   /* pins under the site nav, not behind it */
    background: rgba(8, 8, 7, 0.96); backdrop-filter: blur(6px);
    border-bottom: 1px solid var(--hx-border-gold, rgba(232,196,108,.3));
    padding: 0.7rem 0 0.8rem;
}
.jb__head-inner[b-qthqzp91b1] { display: flex; flex-direction: column; gap: 0.2rem; }
.jb__back[b-qthqzp91b1] {
    font-family: 'Space Mono', monospace; font-size: 0.75rem; letter-spacing: 0.08em;
    color: var(--hx-text-muted, #b0a890); text-decoration: none; align-self: flex-start;
}
.jb__back:hover[b-qthqzp91b1] { color: var(--hx-gold, #e8c46c); }
.jb__eyebrow[b-qthqzp91b1] { margin: 0.2rem 0 0; font-family: 'Space Mono', monospace; font-size: 0.75rem; letter-spacing: 0.28em; color: var(--hx-gold, #e8c46c); }
.jb__show[b-qthqzp91b1] {
    margin: 0; font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.8rem, 6vw, 2.8rem);
    line-height: 1; color: var(--hx-text-heading, #f6efdd);
}
.jb__when[b-qthqzp91b1] { margin: 0; font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-caption, #9a927e); }
.jb__status[b-qthqzp91b1] {
    display: flex; flex-wrap: wrap; gap: 0.3rem 1.2rem; margin-top: 0.35rem;
    font-family: 'Space Mono', monospace; font-size: 0.82rem; color: var(--hx-text-2, #cbc3b0);
}
.jb__status strong[b-qthqzp91b1] { color: var(--hx-gold, #e8c46c); }
.jb__pick-state[b-qthqzp91b1] { margin: 0.2rem 0 0; font-family: 'Space Mono', monospace; font-size: 0.8rem; color: var(--hx-text-muted, #b0a890); }
.jb__pick-state.is-in[b-qthqzp91b1] { color: var(--hx-green, #74d59a); }
.jb__pick-state strong[b-qthqzp91b1] { color: var(--hx-text-heading, #f6efdd); }

.jb__pips[b-qthqzp91b1] { display: flex; flex-wrap: wrap; align-items: center; gap: 0.35rem; margin-top: 0.35rem; }
.jb__pip[b-qthqzp91b1] {
    width: 12px; height: 12px; border-radius: 50%;
    border: 1px solid var(--hx-border-gold-strong, rgba(232,196,108,.6)); background: transparent;
}
.jb__pip.is-lit[b-qthqzp91b1] { background: var(--hx-green, #74d59a); border-color: var(--hx-green, #74d59a); }
.jb__pips-label[b-qthqzp91b1] { margin-left: 0.35rem; font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-caption, #9a927e); }

/* ── Body ── */
.jb__body[b-qthqzp91b1] { padding-top: 1.2rem; }
.jb__error[b-qthqzp91b1] {
    margin: 0 0 1rem; padding: 0.7rem 0.9rem; border-radius: var(--hx-r-sm, 8px);
    border: 1px solid rgba(224, 85, 85, 0.5); background: rgba(224, 85, 85, 0.08);
    color: var(--hx-text-heading, #f6efdd); font-family: 'Hanken Grotesk', sans-serif;
}
.jb__how[b-qthqzp91b1] { margin: 0 0 1rem; font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); }

.jb__wait[b-qthqzp91b1] { text-align: center; padding: 2.5rem 0; }
.jb__wait-title[b-qthqzp91b1] { font-family: 'Bebas Neue', sans-serif; font-size: 1.8rem; letter-spacing: 0.04em; color: var(--hx-gold, #e8c46c); margin: 0; }

/* The §4.1 ladder: deliberate columns, not auto-fill — 2 on a phone/tablet, 5 on desktop. */
.jb__acts[b-qthqzp91b1] { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0.8rem; }
@media (min-width: 769px) {
    .jb__acts[b-qthqzp91b1] { grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 1rem; }
}

.jb__act[b-qthqzp91b1] {
    display: flex; flex-direction: column; overflow: hidden; scroll-margin-top: 12rem;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820); border-radius: 12px;
}
.jb__act.is-pick[b-qthqzp91b1] { border: 2px solid var(--hx-gold, #e8c46c); box-shadow: 0 0 18px rgba(232,196,108,.25); }
.jb__act-img[b-qthqzp91b1] { position: relative; aspect-ratio: 1 / 1; background: #0e0c09; display: flex; align-items: center; justify-content: center; }
.jb__act-img img[b-qthqzp91b1] { width: 100%; height: 100%; object-fit: cover; display: block; }
.jb__act-glyph[b-qthqzp91b1] { font-size: 2.4rem; opacity: 0.6; }
.jb__act-tick[b-qthqzp91b1], .jb__act-ruling[b-qthqzp91b1] {
    position: absolute; left: 0.4rem; font-family: 'Space Mono', monospace; font-size: 0.72rem;
    padding: 0.15rem 0.45rem; border-radius: 999px; background: rgba(0,0,0,.78);
}
/* The tick sits at the image's foot, beside the name: the top of a card is what the sticky header covers. */
.jb__act-tick[b-qthqzp91b1] { bottom: 0.4rem; color: var(--hx-green, #74d59a); border: 1px solid rgba(116,213,154,.5); }
/* An opened act's button goes green with the tick, so "done" reads at a glance down the ladder. */
.jb__btn.jb__btn--opened[b-qthqzp91b1] {
    color: var(--hx-green, #74d59a); border-color: rgba(116,213,154,.6); background: rgba(116,213,154,.08);
}
.jb__act-ruling[b-qthqzp91b1] { top: 0.4rem; color: var(--hx-gold, #e8c46c); border: 1px solid var(--hx-border-gold-strong, rgba(232,196,108,.6)); }

.jb__act-body[b-qthqzp91b1] { padding: 0.6rem 0.7rem 0.3rem; }
.jb__act-top[b-qthqzp91b1] { display: flex; justify-content: space-between; align-items: flex-start; gap: 0.4rem; }
.jb__act-plant[b-qthqzp91b1] { font-family: 'Hanken Grotesk', sans-serif; font-weight: 700; color: var(--hx-text-heading, #f6efdd); overflow-wrap: anywhere; }
.jb__act-score[b-qthqzp91b1] { display: flex; flex-direction: column; align-items: flex-end; font-family: 'Space Mono', monospace; font-weight: 700; color: var(--hx-gold, #e8c46c); }
.jb__act-score-label[b-qthqzp91b1] { font-size: 0.72rem; font-weight: 400; color: var(--hx-text-caption, #9a927e); }
.jb__act-grower[b-qthqzp91b1], .jb__act-strain[b-qthqzp91b1] { font-family: 'Space Mono', monospace; font-size: 0.75rem; color: var(--hx-text-muted, #b0a890); overflow-wrap: anywhere; }

.jb__act-actions[b-qthqzp91b1] { display: flex; flex-direction: column; gap: 0.4rem; padding: 0.5rem 0.7rem 0.7rem; margin-top: auto; }
.jb__btn[b-qthqzp91b1] { min-height: 44px; width: 100%; justify-content: center; }
.jb__remark-toggle[b-qthqzp91b1] {
    min-height: 44px; background: none; border: none; cursor: pointer;
    font-family: 'Space Mono', monospace; font-size: 0.75rem; color: var(--hx-text-muted, #b0a890);
}
.jb__remark-toggle:hover[b-qthqzp91b1] { color: var(--hx-gold, #e8c46c); }

.jb__remark[b-qthqzp91b1] { padding: 0 0.7rem 0.8rem; display: flex; flex-direction: column; gap: 0.4rem; }
.jb__remark-label[b-qthqzp91b1] { font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-2, #cbc3b0); }
.jb__remark-input[b-qthqzp91b1] {
    width: 100%; box-sizing: border-box; resize: vertical; min-height: 4.5rem;
    background: #0e0c09; color: var(--hx-text-body, #efe9da);
    border: 1px solid var(--hx-border-strong, rgba(255,255,255,.12)); border-radius: var(--hx-r-input, 7px);
    padding: 0.5rem; font-family: 'Hanken Grotesk', sans-serif; font-size: 1rem;
}
.jb__remark-hint[b-qthqzp91b1] { margin: 0; font-family: 'Space Mono', monospace; font-size: 0.72rem; color: var(--hx-text-caption, #9a927e); }
.jb__remark-actions[b-qthqzp91b1] { display: flex; flex-direction: column; gap: 0.4rem; }
.jb__remark-saved[b-qthqzp91b1] {
    margin: 0 0.7rem 0.8rem; font-family: 'Hanken Grotesk', sans-serif; font-style: italic; font-size: 0.9rem;
    color: var(--hx-text-2, #cbc3b0); overflow-wrap: anywhere;
}

/* ── The confirm gate — a bottom sheet on a phone, a centred card on desktop ── */
.jb__sheet-backdrop[b-qthqzp91b1] {
    position: fixed; inset: 0; z-index: 50; background: rgba(0,0,0,.7);
    /* Centred at every width (operator, 2026-10-12 — reverses §11.6's bottom sheet on a phone). */
    display: flex; align-items: center; justify-content: center; padding: 1rem;
}
.jb__sheet[b-qthqzp91b1] {
    width: 100%; max-width: 32rem; box-sizing: border-box;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border-gold-strong, rgba(232,196,108,.6));
    border-radius: 16px; padding: 1.2rem 1rem;
}
@media (min-width: 769px) {
    .jb__sheet[b-qthqzp91b1] { padding: 1.5rem; }
}
.jb__sheet-title[b-qthqzp91b1] { margin: 0 0 0.5rem; font-family: 'Bebas Neue', sans-serif; font-size: 1.8rem; line-height: 1.05; color: var(--hx-text-heading, #f6efdd); }
.jb__sheet-title span[b-qthqzp91b1] { color: var(--hx-gold, #e8c46c); }
.jb__sheet-text[b-qthqzp91b1] { margin: 0 0 1rem; font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); }
.jb__sheet-actions[b-qthqzp91b1] { display: grid; grid-template-columns: 1fr 1fr; gap: 0.6rem; }
.jb__sheet-btn[b-qthqzp91b1] { min-height: 48px; justify-content: center; }
/* /Components/Pages/Showcase/ShowcaseSubmit.razor.rz.scp.css */
.sub[b-zy81rmsbz9] { max-width: 720px; padding: 2.5rem 1rem 4rem; }
.sub__loading[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; color: var(--hx-text-muted, #9a927e); }

.sub__back[b-zy81rmsbz9] {
    display: inline-block; margin-bottom: 1.5rem;
    font-family: 'Space Mono', monospace; font-size: 0.8rem;
    color: var(--hx-text-3, #9a927e); text-decoration: none;
}
.sub__back:hover[b-zy81rmsbz9] { color: var(--hx-gold, #e8c46c); }

.sub__eyebrow[b-zy81rmsbz9] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.18em;
    color: var(--hx-gold, #e8c46c); margin: 0 0 0.4rem;
}
.sub__headline[b-zy81rmsbz9] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2rem, 5vw, 3rem);
    line-height: 1.02; color: var(--hx-text-heading, #f6efdd); margin: 0;
}
.sub__plant[b-zy81rmsbz9] { color: var(--hx-gold, #e8c46c); }
.sub__sub[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); margin: 0.75rem 0 0; line-height: 1.55; }

.sub__head[b-zy81rmsbz9] { margin-bottom: 1.75rem; }
.sub__score[b-zy81rmsbz9] { display: inline-flex; align-items: baseline; gap: 0.4rem; margin-top: 1rem; }
.sub__score-num[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-weight: 700; font-size: 1.9rem; color: var(--hx-green, #6cbf7a); }
.sub__score-label[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.05em; color: var(--hx-gold, #e8c46c); }

.sub__intro[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); margin: 0 0 1rem; }

.sub__showdowns[b-zy81rmsbz9] { display: flex; flex-direction: column; gap: 0.7rem; margin-bottom: 1.5rem; }
.sub__showdown[b-zy81rmsbz9] {
    display: flex; align-items: flex-start; gap: 0.8rem; width: 100%; text-align: left; cursor: pointer;
    padding: 1rem 1.1rem; background: var(--hx-surface-1, #14110c);
    border: 1px solid var(--hx-border, #2a2820); border-radius: 8px;
    transition: border-color 0.15s, background 0.15s;
}
.sub__showdown:hover[b-zy81rmsbz9] { border-color: rgba(108,191,122,0.5); }
.sub__showdown.is-selected[b-zy81rmsbz9] { border-color: var(--hx-green, #6cbf7a); background: rgba(108,191,122,0.08); }
.sub__showdown-check[b-zy81rmsbz9] { color: var(--hx-green, #6cbf7a); font-size: 1.1rem; line-height: 1.4; }
.sub__showdown-body[b-zy81rmsbz9] { display: flex; flex-direction: column; gap: 0.15rem; }
.sub__showdown-name[b-zy81rmsbz9] { font-family: 'Bebas Neue', sans-serif; font-size: 1.3rem; letter-spacing: 0.03em; color: var(--hx-text-heading, #f6efdd); }
.sub__showdown-desc[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.86rem; color: var(--hx-text-muted, #9a927e); }

.sub__go[b-zy81rmsbz9] { margin-top: 0.5rem; }

.sub__confirm[b-zy81rmsbz9] {
    margin-top: 0.5rem; padding: 1.25rem; border-radius: 8px;
    background: rgba(232,196,108,0.06); border: 1px solid var(--hx-border-gold, rgba(232,196,108,0.4));
}
.sub__confirm-q[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); margin: 0 0 1rem; line-height: 1.5; }
.sub__actions[b-zy81rmsbz9] { display: flex; flex-wrap: wrap; gap: 0.7rem; }
/* Amber, not red: red is reserved for consequential acts, and a refused entry costs nothing. */
.sub__error[b-zy81rmsbz9] {
    display: flex; align-items: flex-start; gap: 0.6rem;
    font-family: 'Hanken Grotesk', sans-serif; font-size: 1.05rem; font-weight: 600; color: #f0b56e;
    margin: 1rem 0 0; padding: 0.9rem 1.1rem; border-radius: 8px;
    background: rgba(224, 160, 90, 0.12); border: 1px solid rgba(224, 160, 90, 0.45); border-left-width: 4px;
}
.sub__error-icon[b-zy81rmsbz9] { flex: none; line-height: 1.3; }

.sub__gate[b-zy81rmsbz9] {
    padding: 1.25rem; border-radius: 8px; margin-bottom: 1.5rem;
    background: var(--hx-surface-1, #14110c); border: 1px solid var(--hx-border, #2a2820);
}
.sub__gate p[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; color: var(--hx-text-2, #cbc3b0); margin: 0; line-height: 1.55; }

/* ── Shows this grow is already on the floor at (multi-show entry) ── */
.sub__entered[b-zy81rmsbz9] { margin: 1.5rem 0 0.5rem; padding: 1rem 1.1rem; border: 1px solid rgba(212, 175, 55, 0.35); border-radius: 8px; background: rgba(212, 175, 55, 0.06); }
.sub__entered-title[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.14em; color: var(--hx-gold, #d4af37); margin: 0 0 0.35rem; }
.sub__entered-sub[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.86rem; color: var(--hx-text-muted, #9a927e); margin: 0 0 0.6rem; }
.sub__entered-row[b-zy81rmsbz9] { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; padding: 0.55rem 0; border-top: 1px solid rgba(212, 175, 55, 0.18); text-decoration: none; }
.sub__entered-row:first-of-type[b-zy81rmsbz9] { border-top: none; }
.sub__entered-name[b-zy81rmsbz9] { font-family: 'Bebas Neue', sans-serif; font-size: 1.1rem; letter-spacing: 0.03em; color: var(--hx-text-1, #f3eede); }
.sub__entered-go[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-size: 0.74rem; letter-spacing: 0.06em; color: var(--hx-gold, #d4af37); flex: 0 0 auto; }
/* Which grow holds this slot, when it isn't the one you're staging. Recessive — it's an explanation. */
.sub__entered-who[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-size: 0.66rem; letter-spacing: 0.04em; color: var(--hx-text-muted, #9a927e); flex: 1 1 auto; }
.sub__entered-row:hover .sub__entered-go[b-zy81rmsbz9] { text-decoration: underline; }
/* Disqualified (doc 41): the reserved red, and no link affordance. */
.sub__entered-row--dq .sub__entered-go[b-zy81rmsbz9] { color: var(--hx-red, #e05555); }
.sub__entered-row--dq:hover .sub__entered-go[b-zy81rmsbz9] { text-decoration: none; }
.sub__entered-dq-why[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.04em; color: var(--hx-text-muted, #9a927e); margin: -0.2rem 0 0.55rem; }

/* Judge set (doc 38): dressing your act, offered right after the marquee and beside every open entry. */
.sub__curate[b-zy81rmsbz9] { margin: 1.25rem 0; padding: 0.9rem 1rem; border: 1px solid rgba(212, 175, 55, 0.35); border-radius: 8px; background: rgba(212, 175, 55, 0.06); }
.sub__curate-q[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.88rem; line-height: 1.5; color: var(--hx-text-2, #cbc3b0); margin: 0 0 0.7rem; }
.sub__entered-curate[b-zy81rmsbz9] { display: inline-block; font-family: 'Space Mono', monospace; font-size: 0.7rem; letter-spacing: 0.05em; color: var(--hx-gold, #d4af37); text-decoration: none; padding: 0 0 0.55rem; }
.sub__entered-curate:hover[b-zy81rmsbz9] { text-decoration: underline; }

.sub__locked[b-zy81rmsbz9] { margin-top: 2.5rem; }
.sub__locked-head[b-zy81rmsbz9] { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin: 0 0 0.75rem; padding-bottom: 0.4rem; border-bottom: 1px solid var(--hx-border, #2a2820); }
.sub__locked-title[b-zy81rmsbz9] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.14em; color: var(--hx-text-muted, #9a927e); margin: 0; }
.sub__locked-title--reason[b-zy81rmsbz9] { text-align: right; }
.sub__locked-row[b-zy81rmsbz9] { display: flex; justify-content: space-between; gap: 1rem; padding: 0.6rem 0; border-bottom: 1px solid var(--hx-border, #2a2820); }
.sub__locked-name[b-zy81rmsbz9] { font-family: 'Bebas Neue', sans-serif; font-size: 1.05rem; letter-spacing: 0.03em; color: var(--hx-text-3, #b0a890); flex: 0 0 auto; }
.sub__locked-reason[b-zy81rmsbz9] { font-family: 'Hanken Grotesk', sans-serif; font-size: 0.84rem; color: var(--hx-text-muted, #9a927e); text-align: right; }

/* ── The "you're on the floor" ceremony — a theatre marquee lighting up (doc 14 emotional peak) ── */
.sub__done[b-zy81rmsbz9] { text-align: center; padding: 1.25rem 0 0.5rem; }
.sub__done .sub__actions[b-zy81rmsbz9] { justify-content: center; margin-top: 1.75rem; }
.sub__done .sub__sub[b-zy81rmsbz9] { max-width: 30rem; margin-left: auto; margin-right: auto; }

.sub__marquee[b-zy81rmsbz9] {
    position: relative; overflow: hidden;
    max-width: 30rem; margin: 0 auto;
    padding: 1.2rem 1.3rem 1.5rem; border-radius: 16px;
    background: radial-gradient(ellipse at 50% 0%, rgba(232,196,108,0.16), transparent 66%), var(--hx-surface-1, #14110c);
    border: 1px solid var(--hx-border-gold, rgba(232,196,108,0.45));
    /* Entrance pop, then the whole sign breathes — a pulsating gold border/glow. */
    animation: sub-marquee-in-b-zy81rmsbz9 0.45s ease both, sub-border-pulse-b-zy81rmsbz9 2.6s ease-in-out 0.45s infinite;
}

/* Bulb rails top & bottom — the chasing lights of a theatre sign. */
.sub__bulbs[b-zy81rmsbz9] { display: flex; justify-content: space-between; padding: 0 0.25rem; }
.sub__bulb[b-zy81rmsbz9] {
    width: 0.5rem; height: 0.5rem; border-radius: 50%;
    background: var(--hx-gold, #e8c46c); box-shadow: 0 0 9px rgba(232,196,108,0.85);
    animation: sub-bulb-b-zy81rmsbz9 1s ease-in-out infinite;
    animation-delay: calc(var(--i) * 0.08s);
}

.sub__stage[b-zy81rmsbz9] { position: relative; padding: 1rem 0 0.3rem; }
/* A slow spotlight sweep behind the name. */
.sub__spotlight[b-zy81rmsbz9] {
    position: absolute; top: -1.2rem; left: 50%; width: 150%; height: 150%;
    transform: translateX(-50%); pointer-events: none; z-index: 0;
    background: conic-gradient(from 180deg at 50% 0%, transparent 43%, rgba(232,196,108,0.12) 50%, transparent 57%);
    animation: sub-sweep-b-zy81rmsbz9 6.5s ease-in-out infinite;
}
.sub__stage > *:not(.sub__spotlight)[b-zy81rmsbz9] { position: relative; z-index: 1; }

.sub__ticket[b-zy81rmsbz9] {
    font-size: 3rem; margin-bottom: 0.3rem;
    filter: drop-shadow(0 0 16px rgba(232,196,108,0.6));
    animation: sub-pop-b-zy81rmsbz9 0.5s cubic-bezier(0.2, 0.8, 0.3, 1.4) both;
}
.sub__eyebrow--lit[b-zy81rmsbz9] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.18em;
    color: var(--hx-gold, #e8c46c); text-shadow: 0 0 14px rgba(232,196,108,0.65);
    margin: 0 0 0.35rem; animation: sub-flash-b-zy81rmsbz9 1.7s ease-in-out infinite;
}
.sub__marquee-name[b-zy81rmsbz9] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(2.3rem, 8vw, 3.4rem); line-height: 1;
    margin: 0.15rem 0 0; color: var(--hx-text-heading, #f6efdd);
    text-shadow: 0 0 28px rgba(246,239,221,0.4);
}
.sub__marquee-at[b-zy81rmsbz9] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.9rem;
    color: var(--hx-text-2, #cbc3b0); margin: 0.35rem 0;
}
.sub__won--lit[b-zy81rmsbz9] {
    font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.9rem, 6vw, 2.7rem); line-height: 1;
    margin: 0; color: var(--hx-gold, #e8c46c); text-shadow: 0 0 32px rgba(232,196,108,0.6);
}

@keyframes sub-marquee-in-b-zy81rmsbz9 { from { opacity: 0; transform: translateY(10px) scale(0.98); } }
/* The whole sign breathing — a pulsating gold border + glow (an alternative to / companion for the bulbs). */
@keyframes sub-border-pulse-b-zy81rmsbz9 {
    0%, 100% { border-color: rgba(232,196,108,0.35); box-shadow: 0 0 34px rgba(232,196,108,0.12), inset 0 0 45px rgba(232,196,108,0.04); }
    50%      { border-color: rgba(232,196,108,0.90); box-shadow: 0 0 72px rgba(232,196,108,0.38), inset 0 0 55px rgba(232,196,108,0.09); }
}
@keyframes sub-bulb-b-zy81rmsbz9 { 0%, 100% { opacity: 1; } 50% { opacity: 0.22; } }
@keyframes sub-sweep-b-zy81rmsbz9 { 0%, 100% { transform: translateX(-50%) rotate(-7deg); } 50% { transform: translateX(-50%) rotate(7deg); } }
@keyframes sub-pop-b-zy81rmsbz9 { from { opacity: 0; transform: scale(0.6); } }
@keyframes sub-flash-b-zy81rmsbz9 { 0%, 100% { opacity: 0.7; } 50% { opacity: 1; } }

@media (prefers-reduced-motion: reduce) {
    .sub__marquee[b-zy81rmsbz9], .sub__ticket[b-zy81rmsbz9], .sub__eyebrow--lit[b-zy81rmsbz9], .sub__bulb[b-zy81rmsbz9] { animation: none; }
    .sub__spotlight[b-zy81rmsbz9] { display: none; }
}
/* /Components/Shared/AvatarPicker.razor.rz.scp.css */
.ap[b-op0i9pjbiz] {
    display: flex;
    gap: 1.4rem;
    align-items: flex-start;
    flex-wrap: wrap;
}
.ap__preview[b-op0i9pjbiz] {
    flex: 0 0 auto;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 0.4rem;
}
/* Type scale bumped one step (~1.1x) with the identity surface, operator 2026-09-04. This component is
   shared with the Settings profile card, and the operator accepted the change landing on both. */
.ap__preview-cap[b-op0i9pjbiz] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--hx-muted);
}
.ap__fields[b-op0i9pjbiz] {
    flex: 1 1 260px;
    display: flex;
    flex-direction: column;
    gap: 1.1rem;
    min-width: 0;
}
.ap__pick[b-op0i9pjbiz] { }
.ap__label[b-op0i9pjbiz] {
    display: block;
    font-family: 'Space Mono', monospace;
    font-size: 0.73rem;
    letter-spacing: 0.1em;
    text-transform: uppercase;
    color: var(--hx-muted);
    margin-bottom: 0.6rem;
}

.ap__swatches[b-op0i9pjbiz] { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.ap__swatch[b-op0i9pjbiz] {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    border: 2px solid transparent;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.08);
    cursor: pointer;
    padding: 0;
    transition: transform 0.1s ease, border-color 0.12s ease;
}
.ap__swatch:hover[b-op0i9pjbiz] { transform: scale(1.08); }
.ap__swatch.is-selected[b-op0i9pjbiz] { border-color: #fff; }

.ap__glyphs[b-op0i9pjbiz] { display: flex; flex-wrap: wrap; gap: 0.55rem; }
.ap__glyph[b-op0i9pjbiz] {
    width: 40px;
    height: 40px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    border: 1px solid var(--hx-border, #222);
    background: var(--hx-surface-2, #0c0c0c);
    color: var(--hx-fg, #fff);
    cursor: pointer;
    padding: 0;
    transition: border-color 0.12s ease, background 0.12s ease;
}
.ap__glyph:hover[b-op0i9pjbiz] { border-color: rgba(232, 196, 108, 0.5); }
.ap__glyph.is-selected[b-op0i9pjbiz] {
    border-color: var(--hx-gold, #e8c46c);
    background: rgba(232, 196, 108, 0.1);
}
.ap__glyph svg[b-op0i9pjbiz] { width: 60%; height: 60%; }
.ap__glyph--initial[b-op0i9pjbiz] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.32rem;
    line-height: 1;
}
/* /Components/Shared/BeltUpMarquee.razor.rz.scp.css */
/* BELT UP marquee (doc 25 §7, doc 21 §11.1 #3). Moved out of LogDay.razor.css so every page that plays it
   draws the same thing. */
.bu[b-pklt66look] { text-align: center; padding: 0.6rem 0; animation: bu-glow-b-pklt66look 2.4s ease-in-out infinite; }
@keyframes bu-glow-b-pklt66look { 0%,100% { filter: drop-shadow(0 0 0 rgba(232,196,108,0)); } 50% { filter: drop-shadow(0 0 18px rgba(232,196,108,.55)); } }
.bu__eyebrow[b-pklt66look] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.25em; color: var(--hx-gold, #e8c46c); margin: 0 0 0.6rem; }
.bu__chip[b-pklt66look] { display: block; width: 4.5rem; height: 1rem; border-radius: 4px; margin: 0 auto 0.7rem; border: 1px solid rgba(255,255,255,.3); }
.bu__title[b-pklt66look] { font-family: 'Bebas Neue', sans-serif; font-size: 2.2rem; line-height: 1; letter-spacing: 0.03em; color: var(--hx-gold, #e8c46c); margin: 0; text-shadow: 0 0 20px rgba(232,196,108,.4); }
.bu__amount[b-pklt66look] { font-family: 'Space Mono', monospace; font-size: 0.85rem; color: var(--hx-text-heading, #f6efdd); margin-top: 0.7rem; }

.bu__breakdown[b-pklt66look] { list-style: none; margin: 0.7rem auto 0; padding: 0; max-width: 260px; text-align: left; }
.bu__line[b-pklt66look] { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding: 0.28rem 0; border-bottom: 1px solid rgba(255,255,255,.1); }
.bu__line:last-child[b-pklt66look] { border-bottom: none; }
.bu__line-label[b-pklt66look] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.02em; color: var(--hx-text-caption-2, #b8b09a); }
.bu__line-pts[b-pklt66look] { font-family: 'Bebas Neue', sans-serif; font-size: 1.05rem; color: var(--hx-gold, #e8c46c); flex-shrink: 0; }

.bu__ladder[b-pklt66look] { display: flex; justify-content: center; gap: 0.4rem; margin-top: 1rem; }
.bu__rung[b-pklt66look] { width: 12px; height: 12px; border-radius: 99px; border: 1px solid var(--hx-border, #2a2820); display: flex; align-items: center; justify-content: center; opacity: 0.35; }
.bu__rung.is-on[b-pklt66look] { opacity: 1; }
.bu__rung.is-now[b-pklt66look] { transform: scale(1.5); box-shadow: 0 0 10px rgba(232,196,108,.7); }
.bu__dot[b-pklt66look] { width: 8px; height: 8px; border-radius: 99px; }
.bu__dot--white[b-pklt66look],  .bu__chip--white[b-pklt66look]  { background: #f2ecda; }
.bu__dot--yellow[b-pklt66look], .bu__chip--yellow[b-pklt66look] { background: #e8c46c; }
.bu__dot--orange[b-pklt66look], .bu__chip--orange[b-pklt66look] { background: #e0863c; }
.bu__dot--green[b-pklt66look],  .bu__chip--green[b-pklt66look]  { background: #6cbf7a; }
.bu__dot--blue[b-pklt66look],   .bu__chip--blue[b-pklt66look]   { background: #6ba8d8; }
.bu__dot--brown[b-pklt66look],  .bu__chip--brown[b-pklt66look]  { background: #9c6b3f; }
.bu__dot--black[b-pklt66look],  .bu__chip--black[b-pklt66look]  { background: #2b2b2b; }

/* Overlay variant — pages with no beat queue of their own (Dashboard, /belt). Same look as LogDay's
   jackpot beat card. */
.bu__overlay[b-pklt66look] {
    position: fixed; inset: 0; z-index: 60;
    display: flex; align-items: center; justify-content: center;
    padding: 1rem;
    background: rgba(8, 6, 3, 0.72);
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    animation: bu-fade-b-pklt66look 0.25s ease;
}
.bu__card[b-pklt66look] {
    width: 100%; max-width: 26rem;
    display: flex; flex-direction: column; align-items: center; gap: 1rem;
    text-align: center;
    padding: 2rem 1.6rem 1.7rem;
    border-radius: 18px;
    border: 1px solid var(--hx-gold, #e8c46c);
    background: radial-gradient(ellipse at 50% -10%, rgba(232,196,108,0.24), transparent 62%), var(--hx-surface-1, #14110c);
    box-shadow: 0 24px 60px rgba(0,0,0,0.55), 0 0 46px rgba(232,196,108,0.3);
    animation: bu-pop-b-pklt66look 0.3s cubic-bezier(0.2, 0.8, 0.3, 1.2);
}
.bu__actions[b-pklt66look] { width: 100%; display: flex; flex-direction: column; gap: 0.55rem; margin-top: 0.4rem; }
.bu__btn[b-pklt66look] { width: 100%; min-height: 44px; }
/* The non-primary button (Continue beside "See your belt") is an outlined secondary — the bare hx-btn grey
   read as disabled (operator, 2026-10-10). */
.bu__actions .bu__btn:not(.hx-btn-primary)[b-pklt66look] {
    background: transparent;
    color: var(--hx-text-heading, #f6efdd);
    border: 1px solid rgba(232,196,108,0.55);
}
.bu__actions .bu__btn:not(.hx-btn-primary):hover[b-pklt66look] { border-color: var(--hx-gold, #e8c46c); color: var(--hx-gold, #e8c46c); }
@keyframes bu-fade-b-pklt66look { from { opacity: 0; } }
@keyframes bu-pop-b-pklt66look { from { opacity: 0; transform: translateY(12px) scale(0.96); } }

@media (prefers-reduced-motion: reduce) {
    .bu[b-pklt66look], .bu__overlay[b-pklt66look], .bu__card[b-pklt66look] { animation: none; }
}
/* /Components/Shared/GrowerAvatar.razor.rz.scp.css */
.ga[b-c1sdof8l4j] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
    border-radius: 50%;
    overflow: hidden;
    line-height: 1;
    color: #fff;   /* glyph + initial ink; disc background is the identity color */
}

.ga__img[b-c1sdof8l4j] {
    width: 100%;
    height: 100%;
    object-fit: cover;
}

.ga__glyph[b-c1sdof8l4j] {
    width: 58%;
    height: 58%;
    display: block;
}

.ga__initial[b-c1sdof8l4j] {
    font-family: 'Bebas Neue', sans-serif;
    letter-spacing: 0.01em;
    color: #fff;
    /* subtle lift so the letter reads on lighter palette hues */
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
}
/* /Components/Shared/JudgeBanner.razor.rz.scp.css */
/* The judge's banner (doc 21 §11.5 #3, revised 2026-10-17). A full-width pill in the Dashboard's own filter-tab
   register (.db-tab), in judging blue (reference_accent_tints): Seated = the selected tab's outline, so being on a
   panel reads at a glance; Idle (a judge between panels) = the unselected tab's faint fill, no outline. One line at
   every width; the whole pill is the tap target (>= 44px). */

.jbn[b-t5elmxje5z] {
    flex-basis: 100%;
    display: flex; align-items: center; justify-content: space-between; gap: 12px;
    min-height: 46px; padding: 8px 20px;
    border-radius: var(--hx-r-pill, 999px);
    text-decoration: none;
    transition: background var(--hx-t, .15s), color var(--hx-t, .15s);
}

.jbn__label[b-t5elmxje5z] {
    min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
    font-family: 'Space Mono', monospace; font-size: 0.78rem; font-weight: 700; letter-spacing: 0.22em;
}
.jbn__go[b-t5elmxje5z] { flex-shrink: 0; font-family: 'Space Mono', monospace; font-size: 0.78rem; letter-spacing: 0.04em; }

/* ── Seated: on a panel now — the selected tab ── */
.jbn--seated[b-t5elmxje5z] { background: transparent; box-shadow: inset 0 0 0 1px rgba(111, 168, 189, 0.75); }
.jbn--seated .jbn__label[b-t5elmxje5z], .jbn--seated .jbn__go[b-t5elmxje5z] { color: #6fa8bd; }
.jbn--seated:hover[b-t5elmxje5z], .jbn--seated:focus-visible[b-t5elmxje5z] { background: rgba(111, 168, 189, 0.1); }

/* ── Idle: a HaxGrow Judge between panels — the unselected tab's faint fill, blue text (operator, 2026-10-17) ── */
.jbn--idle[b-t5elmxje5z] { background: rgba(255, 255, 255, 0.08); }
.jbn--idle .jbn__label[b-t5elmxje5z], .jbn--idle .jbn__go[b-t5elmxje5z] { color: #6fa8bd; }
.jbn--idle:hover[b-t5elmxje5z], .jbn--idle:focus-visible[b-t5elmxje5z] { background: rgba(255, 255, 255, 0.12); }
/* /Components/Shared/JudgeWelcome.razor.rz.scp.css */
/* "You're a HaxGrow Judge" (doc 21 §11.5 #1). Same overlay/card language as BELT UP so the two
   one-time moments read as a family. */
.jw[b-civzm0nxnl] { text-align: center; padding: 0.4rem 0; }
.jw__eyebrow[b-civzm0nxnl] { font-family: 'Space Mono', monospace; font-size: 0.72rem; letter-spacing: 0.25em; color: var(--hx-gold, #e8c46c); margin: 0 0 0.6rem; }
.jw__mark[b-civzm0nxnl] {
    display: block;
    font-size: 2.6rem;
    line-height: 1;
    margin: 0 auto 0.6rem;
    color: var(--hx-gold, #e8c46c);
    filter: drop-shadow(0 0 14px rgba(232,196,108,.5));
}
.jw__title[b-civzm0nxnl] {
    font-family: 'Bebas Neue', sans-serif;
    font-size: 2.2rem;
    line-height: 1;
    letter-spacing: 0.03em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
    text-shadow: 0 0 20px rgba(232,196,108,.4);
}
.jw__byline[b-civzm0nxnl] {
    font-family: 'Space Mono', monospace;
    font-size: 0.8rem;
    color: var(--hx-text-heading, #f6efdd);
    margin: 0.7rem 0 0;
}
.jw__points[b-civzm0nxnl] {
    list-style: none;
    margin: 1rem auto 0;
    padding: 0;
    max-width: 22rem;
    text-align: left;
    display: flex;
    flex-direction: column;
    gap: 0.45rem;
}
.jw__points li[b-civzm0nxnl] {
    font-family: 'Hanken Grotesk', sans-serif;
    font-size: 0.95rem;
    color: var(--hx-text-caption-2, #b8b09a);
    padding-left: 1.1rem;
    position: relative;
}
.jw__points li[b-civzm0nxnl]::before { content: "✦"; position: absolute; left: 0; color: var(--hx-gold, #e8c46c); font-size: 0.7rem; top: 0.2rem; }

.jw__overlay[b-civzm0nxnl] {
    position: fixed; inset: 0; z-index: 60;
    display: flex; align-items: center; justify-content: center;
    padding: 1rem;
    background: rgba(8, 6, 3, 0.72);
    -webkit-backdrop-filter: blur(4px); backdrop-filter: blur(4px);
    animation: jw-fade-b-civzm0nxnl 0.25s ease;
}
.jw__card[b-civzm0nxnl] {
    width: 100%; max-width: 26rem;
    margin: 0 auto;
    box-sizing: border-box;
    display: flex; flex-direction: column; align-items: center; gap: 1rem;
    text-align: center;
    padding: 2rem 1.6rem 1.7rem;
    border-radius: 18px;
    border: 1px solid var(--hx-gold, #e8c46c);
    background: radial-gradient(ellipse at 50% -10%, rgba(232,196,108,0.24), transparent 62%), var(--hx-surface-1, #14110c);
    box-shadow: 0 24px 60px rgba(0,0,0,0.55), 0 0 46px rgba(232,196,108,0.3);
    animation: jw-pop-b-civzm0nxnl 0.3s cubic-bezier(0.2, 0.8, 0.3, 1.2);
}
.jw__actions[b-civzm0nxnl] { width: 100%; display: flex; flex-direction: column; gap: 0.55rem; margin-top: 0.4rem; }
.jw__btn[b-civzm0nxnl] { width: 100%; min-height: 44px; display: inline-flex; align-items: center; justify-content: center; }
.jw__btn--quiet[b-civzm0nxnl] {
    background: transparent;
    color: var(--hx-text-heading, #f6efdd);
    border: 1px solid rgba(232,196,108,0.55);
}
.jw__btn--quiet:hover[b-civzm0nxnl] { border-color: var(--hx-gold, #e8c46c); color: var(--hx-gold, #e8c46c); }
@keyframes jw-fade-b-civzm0nxnl { from { opacity: 0; } }
@keyframes jw-pop-b-civzm0nxnl { from { opacity: 0; transform: translateY(12px) scale(0.96); } }

@media (prefers-reduced-motion: reduce) {
    .jw__overlay[b-civzm0nxnl], .jw__card[b-civzm0nxnl] { animation: none; }
}
/* /Components/Shared/NotificationBell.razor.rz.scp.css */
/* ── Notification bell (planning doc 22 §6.1) — nb__ namespace ──────────
   Gold is the signal: the badge, the unread dot, the open state. Read rows dim; nothing turns red. */

.nb[b-z93tp93qd9] { position: relative; }

.nb__bell[b-z93tp93qd9] {
    position: relative;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid transparent;
    background: transparent;
    color: var(--hx-text-2);
    display: grid;
    place-items: center;
    cursor: pointer;
    transition: color var(--hx-t), border-color var(--hx-t), background var(--hx-t);
}
.nb__bell svg[b-z93tp93qd9] { width: 20px; height: 20px; }
.nb__bell:hover[b-z93tp93qd9],
.nb__bell.is-open[b-z93tp93qd9] {
    color: var(--hx-gold);
    border-color: var(--hx-border-gold);
    background: var(--hx-fill-gold-subtle);
}
.nb__bell:focus-visible[b-z93tp93qd9] { outline: 2px solid var(--hx-gold); outline-offset: 2px; }

.nb__badge[b-z93tp93qd9] {
    position: absolute;
    top: -2px;
    right: -4px;
    min-width: 18px;
    height: 18px;
    padding: 0 5px;
    border-radius: var(--hx-r-pill);
    background: var(--hx-gold);
    color: var(--hx-gold-on);
    border: 2px solid var(--hx-bg);
    font-family: var(--hx-font-mono);
    font-size: .66rem;
    font-weight: 700;
    line-height: 14px;
    text-align: center;
}

/* The nav's backdrop-filter makes IT the containing block for fixed children, so `inset: 0` would cover only the
   nav bar. Anchor at the nav's corner (which sits at the viewport's top-left) and size by the viewport instead. */
.nb__backdrop[b-z93tp93qd9] {
    position: fixed;
    top: 0;
    left: 0;
    width: 100vw;
    height: 100dvh;
    z-index: 70;
    background: transparent;
}

.nb__pop[b-z93tp93qd9] {
    position: absolute;
    top: calc(100% + 10px);
    right: 0;
    z-index: 71;
    width: 380px;
    background: var(--hx-surface-2);
    border: 1px solid var(--hx-border-gold);
    border-radius: var(--hx-r);
    box-shadow: 0 18px 40px rgba(0,0,0,.55);
    overflow: hidden;
}

.nb__head[b-z93tp93qd9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    padding: 14px 16px;
    border-bottom: 1px solid var(--hx-border-mid);
}
.nb__title[b-z93tp93qd9] {
    font-family: var(--hx-font-mono);
    font-size: .76rem;
    font-weight: 700;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--hx-gold);
}
.nb__markall[b-z93tp93qd9] {
    background: none;
    border: 0;
    padding: 0;
    cursor: pointer;
    font-family: var(--hx-font-mono);
    font-size: .72rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--hx-text-2);
    transition: color var(--hx-t);
}
.nb__markall:hover[b-z93tp93qd9] { color: var(--hx-gold); }
.nb__markall:focus-visible[b-z93tp93qd9] { outline: 2px solid var(--hx-gold); outline-offset: 2px; }

.nb__list[b-z93tp93qd9] {
    max-height: min(420px, 70vh);
    overflow-y: auto;
}

.nb__row[b-z93tp93qd9] {
    display: grid;
    grid-template-columns: 28px minmax(0, 1fr) 8px;
    gap: 12px;
    align-items: start;
    width: 100%;
    padding: 13px 16px;
    background: none;
    border: 0;
    border-bottom: 1px solid var(--hx-border);
    color: inherit;
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: background var(--hx-t);
}
.nb__row:last-child[b-z93tp93qd9] { border-bottom: 0; }
.nb__row:hover[b-z93tp93qd9] { background: var(--hx-fill-gold-subtle); }
.nb__row:focus-visible[b-z93tp93qd9] { outline: 2px solid var(--hx-gold); outline-offset: -2px; }

.nb__icon[b-z93tp93qd9] {
    width: 28px;
    height: 28px;
    border-radius: var(--hx-r-sm);
    background: var(--hx-surface-3);
    color: var(--hx-gold);
    display: grid;
    place-items: center;
}
.nb__icon[b-z93tp93qd9]  svg { width: 15px; height: 15px; }

.nb__text[b-z93tp93qd9] { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.nb__line[b-z93tp93qd9] {
    font-size: .92rem;
    font-weight: 600;
    line-height: 1.35;
    color: var(--hx-text-heading);
    overflow-wrap: anywhere;
}
.nb__age[b-z93tp93qd9] {
    font-family: var(--hx-font-mono);
    font-size: .72rem;
    letter-spacing: .04em;
    color: var(--hx-text-caption);
}
.nb__dot[b-z93tp93qd9] {
    width: 8px;
    height: 8px;
    margin-top: 7px;
    border-radius: 50%;
    background: var(--hx-gold);
}

.nb__row.is-read .nb__line[b-z93tp93qd9] { color: var(--hx-text-muted); font-weight: 500; }
.nb__row.is-read .nb__icon[b-z93tp93qd9] { color: var(--hx-text-faint); }
.nb__row.is-read .nb__dot[b-z93tp93qd9]  { visibility: hidden; }

.nb__empty[b-z93tp93qd9] {
    margin: 0;
    padding: 32px 16px;
    text-align: center;
    font-size: .92rem;
    color: var(--hx-text-caption);
}
.nb__foot[b-z93tp93qd9] {
    margin: 0;
    padding: 10px 16px;
    text-align: center;
    border-top: 1px solid var(--hx-border);
    font-family: var(--hx-font-mono);
    font-size: .72rem;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--hx-text-caption);
}

/* Phone: the dropdown becomes a full-width sheet pinned under the nav. Same breakpoint as the nav's hamburger.
   Fixed here resolves against the nav (see .nb__backdrop), so top: 100% is exactly the nav's bottom edge. */
@media (max-width: 700px) {
    .nb__pop[b-z93tp93qd9] {
        position: fixed;
        top: 100%;
        left: 0;
        right: 0;
        width: auto;
        border-radius: 0;
        border-left: 0;
        border-right: 0;
        border-top: 0;
    }
    .nb__list[b-z93tp93qd9] { max-height: 70vh; }
}

@media (prefers-reduced-motion: no-preference) {
    .nb__pop[b-z93tp93qd9] { animation: nb-drop-b-z93tp93qd9 .16s ease; }
    @keyframes nb-drop-b-z93tp93qd9 { from { opacity: 0; transform: translateY(-4px); } }
}
/* /Components/Shared/RoleLegend.razor.rz.scp.css */
.rl[b-sixpb8v0we] { margin: 0.15rem 0; }
.rl summary[b-sixpb8v0we] {
    font-family: 'Space Mono', monospace; font-size: 0.72rem; color: #e8c46c;
    cursor: pointer; list-style: none; width: fit-content;
}
.rl summary[b-sixpb8v0we]::before { content: "▸ "; }
.rl[open] summary[b-sixpb8v0we]::before { content: "▾ "; }
.rl summary:hover[b-sixpb8v0we] { color: #f1d488; }
.rl__list[b-sixpb8v0we] {
    list-style: none; margin: 0.5rem 0 0; padding: 0.7rem 0.9rem;
    border: 1px solid rgba(255,255,255,.08); border-radius: 8px; background: rgba(255,255,255,.02);
    display: flex; flex-direction: column; gap: 0.4rem;
}
.rl__list li[b-sixpb8v0we] {
    font-family: 'Hanken Grotesk', sans-serif; font-size: 0.82rem; color: #b0a890; line-height: 1.35;
}
.rl__list b[b-sixpb8v0we] { color: #f6efdd; font-family: 'Space Mono', monospace; font-size: 0.76rem; }
.rl__list em[b-sixpb8v0we] { color: #8a8270; font-style: italic; }
/* /Components/Shared/TimingStrip.razor.rz.scp.css */
/* ── Timing strip — ts__ namespace (planning doc 30) ──────────
   One row per run, one dot per plant. Built from app.css tokens; no new palette. */

.ts[b-bg6jse6a64] {
    margin-bottom: 2.25rem;
    padding: 1.35rem 1.4rem 1.15rem;
    background: var(--hx-surface-1, #0f0d0a);
    border: 1px solid var(--hx-border, rgba(255,255,255,.06));
    border-radius: var(--hx-r, 12px);
}

/* ── Tints ────────────────────────────────────────────────
   Same gradient + border recipe the app's tinted cards already use (Dashboard's premium card, the Cure
   surface), so these read as the established treatment rather than a new one — only the hue differs.
   ⚠ Both hues are reserved elsewhere (purple = premium/cure · blue = privacy) and are used here purely to
   separate two adjacent strips. Deliberate; see TimingStrip.Tint. */
.ts--purple[b-bg6jse6a64] {
    background: linear-gradient(135deg, rgba(146,110,196,.12), rgba(146,110,196,.02));
    border-color: rgba(146,110,196,.4);
}
.ts--blue[b-bg6jse6a64] {
    background: linear-gradient(135deg, rgba(111,168,189,.12), rgba(111,168,189,.02));
    border-color: rgba(111,168,189,.4);
}

/* The sticky label mask has to match the card it sits on, or a tinted strip shows a dark rectangle
   sliding under the run names when it scrolls. */
.ts--purple .ts__row-label[b-bg6jse6a64] { background: #16121c; }
.ts--blue   .ts__row-label[b-bg6jse6a64] { background: #101619; }

.ts__head[b-bg6jse6a64] {
    display: flex;
    flex-wrap: wrap;
    align-items: baseline;
    gap: 0.4rem 0.9rem;
    margin-bottom: 1.35rem;
}

/* Gold section header — the app-wide treatment for a panel title. */
.ts__title[b-bg6jse6a64] {
    display: flex;
    align-items: center;
    gap: 0.45rem;
    font-family: 'Bebas Neue', sans-serif;
    font-size: 1.2rem;
    letter-spacing: 0.1em;
    color: var(--hx-gold, #e8c46c);
    margin: 0;
}

/* Slightly under the cap height so the glyph sits WITH the condensed caps rather than towering over them —
   emoji render larger than their font-size against a display face. */
.ts__glyph[b-bg6jse6a64] {
    font-size: 0.95rem;
    line-height: 1;
}

.ts__meta[b-bg6jse6a64] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    letter-spacing: 0.04em;
    color: var(--hx-text-faint, #6f6857);
}

.ts__empty[b-bg6jse6a64],
.ts__legend[b-bg6jse6a64] {
    font-size: 0.82rem;
    color: var(--hx-text-faint, #6f6857);
    margin: 0;
}
.ts__legend[b-bg6jse6a64] { margin-top: 1rem; }

/* Wide content scrolls INSIDE its own box; the page body never scrolls sideways. */
.ts__scroll[b-bg6jse6a64] {
    overflow-x: auto;
    /* Room for the dot's focus ring and the last tick label, which both sit outside the track. */
    padding-bottom: 0.35rem;
}

.ts__plot[b-bg6jse6a64] { min-width: 420px; }

/* Grid, not flex: the run label, the track and the range read as three aligned columns, and the axis row
   inherits the same columns so a tick label lands under the position it names rather than near it. */
.ts__row[b-bg6jse6a64] {
    display: grid;
    grid-template-columns: 5.5rem 1fr 5.5rem;
    align-items: center;
    gap: 0.75rem;
    min-height: 2rem;
}

/* Pinned to the left edge while the strip scrolls sideways, so a run's identity never leaves the screen —
   without it you scroll right to read a late day and lose which row you're on, which is the one thing the
   labels exist to tell you. Sticky resolves against .ts__scroll, the nearest scrolling ancestor.
     · stretch + flex so the wrapper fills the row HEIGHT and masks dots passing beneath it
     · an opaque surface background, or the dots would show through
     · the hairline reads as an edge, so a dot sliding under looks like it passes behind rather than
       colliding with the text */
.ts__row-label[b-bg6jse6a64] {
    position: sticky;
    left: 0;
    z-index: 2;
    align-self: stretch;
    display: flex;
    align-items: center;
    min-width: 0;                 /* lets the inner text actually ellipsis inside a grid/flex item */
    padding-right: 0.45rem;
    background: var(--hx-surface-1, #0f0d0a);
    box-shadow: 1px 0 0 var(--hx-border, rgba(255,255,255,.06));
    text-decoration: none;
}

.ts__row-label-text[b-bg6jse6a64] {
    font-family: 'Space Mono', monospace;
    font-size: 0.72rem;
    color: var(--hx-text-caption, #9a927e);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
    transition: color 0.15s;
}
.ts__row-label:hover .ts__row-label-text[b-bg6jse6a64] { color: var(--hx-gold, #e8c46c); }

.ts__row-range[b-bg6jse6a64] {
    font-family: 'Space Mono', monospace;
    font-size: 0.7rem;
    color: var(--hx-text-faint, #6f6857);
    text-align: right;
    white-space: nowrap;
}

.ts__track[b-bg6jse6a64] {
    position: relative;
    height: 2rem;
}

.ts__rule[b-bg6jse6a64] {
    position: absolute;
    left: 0; right: 0; top: 50%;
    height: 1px;
    background: var(--hx-border, rgba(255,255,255,.06));
    pointer-events: none;
}

/* The dot is 10px of ink inside a 30px tap target — a mark small enough to show a cluster honestly, with a
   target big enough to hit on a phone. The ring is the surface colour, so overlapping dots stay countable
   instead of merging into one blob. */
.ts__dot[b-bg6jse6a64] {
    position: absolute;
    top: 50%;
    width: 30px;
    height: 30px;
    margin: -15px 0 0 -15px;
    display: flex;
    align-items: center;
    justify-content: center;
    text-decoration: none;
}
.ts__dot[b-bg6jse6a64]::before {
    content: "";
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--hx-gold, #e8c46c);
    box-shadow: 0 0 0 2px var(--hx-surface-1, #0f0d0a);
    transition: transform 0.12s;
}
/* The separating ring is the CARD's colour, not a fixed one — on a tinted strip the default dark ring
   would draw a visible halo around every dot. */
.ts--purple .ts__dot[b-bg6jse6a64]::before { box-shadow: 0 0 0 2px #16121c; }
.ts--blue   .ts__dot[b-bg6jse6a64]::before { box-shadow: 0 0 0 2px #101619; }
.ts__dot:hover[b-bg6jse6a64]::before,
.ts__dot:focus-visible[b-bg6jse6a64]::before { transform: scale(1.45); }

/* Several grows on one day. The mark carries the COUNT rather than being merely bigger: size alone is
   guessed at (is that three or four?), a numeral is read. It also keeps the position honest — the mark
   still sits exactly on its day, so the axis reading doesn't shift to make room for the label. */
.ts__dot--multi[b-bg6jse6a64]::before {
    width: 18px;
    height: 18px;
}
.ts__dot--multi:hover[b-bg6jse6a64]::before,
.ts__dot--multi:focus-visible[b-bg6jse6a64]::before { transform: scale(1.2); }

.ts__dot-count[b-bg6jse6a64] {
    position: absolute;
    font-family: 'Space Mono', monospace;
    font-size: 0.6rem;
    line-height: 1;
    font-weight: 700;
    color: var(--hx-gold-on, #1a1407);   /* ink ON a gold fill */
    pointer-events: none;
}

/* Identity for a screen reader; the visual carries it as position + title. */
.ts__dot-sr[b-bg6jse6a64] {
    position: absolute;
    width: 1px; height: 1px;
    overflow: hidden;
    clip-path: inset(50%);
    white-space: nowrap;
}

.ts__row--axis[b-bg6jse6a64] { min-height: 1.4rem; margin-top: 0.35rem; }

.ts__ticks[b-bg6jse6a64] {
    position: relative;
    height: 1rem;
}

.ts__tick[b-bg6jse6a64] {
    position: absolute;
    top: 0;
    transform: translateX(-50%);
    font-family: 'Space Mono', monospace;
    font-size: 0.64rem;
    color: var(--hx-text-faint, #6f6857);
    white-space: nowrap;
}

@media (max-width: 560px) {
    .ts[b-bg6jse6a64] { padding: 1.1rem 1rem 1rem; }
    /* The range column is the first thing to go — the dots and the axis still carry the story, and each
       dot keeps its own value on tap. */
    .ts__row[b-bg6jse6a64] { grid-template-columns: 4.25rem 1fr; }
    .ts__row-range[b-bg6jse6a64] { display: none; }
}

@media (prefers-reduced-motion: reduce) {
    .ts__dot[b-bg6jse6a64]::before { transition: none; }
    .ts__dot:hover[b-bg6jse6a64]::before,
    .ts__dot:focus-visible[b-bg6jse6a64]::before,
    .ts__dot--multi:hover[b-bg6jse6a64]::before,
    .ts__dot--multi:focus-visible[b-bg6jse6a64]::before { transform: none; }
}

/* Environment group header (Indoor / Outdoor / Greenhouse). Rendered only when a grower has more than
   one, so the common single-environment case is visually unchanged. Deliberately quiet — it separates
   two scales, it is not a section title competing with the panel's own. */
.ts__group[b-bg6jse6a64] {
    font-family: 'Space Mono', monospace;
    font-size: 0.66rem;
    font-weight: 400;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--hx-muted);
    margin: 1.15rem 0 0.35rem;
}
.ts__group:first-child[b-bg6jse6a64] { margin-top: 0; }

/* ── Axis labels (operator, 2026-08-31) ───────────────────────
   Gold, because these name the chart's structure rather than reporting a value — the same job the panel
   title does. The tick numbers and run names stay faint so the labels don't compete with the data.
   Both rows are short: they annotate the grid, they don't add a band to it. */
.ts__axis-label[b-bg6jse6a64] {
    font-family: 'Space Mono', monospace;
    font-size: 0.62rem;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--hx-gold, #e8c46c);
}

.ts__row--axis-y[b-bg6jse6a64] { min-height: 1.2rem; }
.ts__row--axis-x[b-bg6jse6a64] { min-height: 1.2rem; }

/* Centred over the track it names, not over the whole row — the label column is a fixed width to the
   left, so centring on the row would sit it off-centre from the axis it belongs to. */
.ts__axis-x[b-bg6jse6a64] { text-align: center; }
