@import '_content/DRYL.Components/DRYL.Components.kavis2aog5.bundle.scp.css';

/* /Components/Layout/AdminLayout.razor.rz.scp.css */
/* AdminLayout — scoped styles, token-driven only.
   The shell, sidebar and content area now come from the official DRYL app-shell
   components (DrylLayout / DrylDrawer / DrylMainContent) and dryl.css. Only the
   admin-specific app-bar title and the logout form need local tweaks. */

.admin-appbar-title[b-bmhknb5g79] {
    font-weight: 600;
    color: var(--fg);
    letter-spacing: -0.01em;
}

.admin-logout-form[b-bmhknb5g79] {
    margin: 0;
    width: 100%;
}

.admin-logout-form[b-bmhknb5g79]  .btn {
    width: 100%;
    justify-content: center;
}
/* /Components/Layout/MainLayout.razor.rz.scp.css */
.layout-fallback[b-6ff8re8adg] {
    min-height: 100vh;
    padding: var(--sp-4);
    color: var(--fg);
}
/* /Components/Layout/PortfolioLayout.razor.rz.scp.css */
/* PortfolioLayout — scoped styles, token-driven only.
   All values reference dryl.css custom properties — no literal colors, spacing, or radii. */

/* ── Shell ─────────────────────────────────────────────── */

.portfolio-shell[b-jsmbjypopo] {
    display: flex;
    flex-direction: column;
    min-height: 100vh;
}

/* ── Top nav ─────────────────────────────────────────────── */

.portfolio-nav[b-jsmbjypopo] {
    position: sticky;
    top: 0;
    z-index: var(--z-sticky);
    display: flex;
    align-items: center;
    gap: var(--sp-5);
    padding: 0 var(--sp-6);
    height: var(--appbar-h);
    background: color-mix(in srgb, var(--ground) 72%, transparent);
    backdrop-filter: blur(var(--glass-blur)) saturate(140%);
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
    border-bottom: 1px solid var(--line);
    box-shadow: var(--shadow-sm);
    transition: height var(--dur-med) var(--ease-out),
                background var(--dur-med) var(--ease-out),
                border-color var(--dur-med) var(--ease-out),
                box-shadow var(--dur-med) var(--ease-out);
}

/* portfolio.js toggles .is-scrolled past 24px — nav condenses and grounds. */
.portfolio-nav.is-scrolled[b-jsmbjypopo] {
    height: calc(var(--appbar-h) - 6px);
    background: color-mix(in srgb, var(--ground) 88%, transparent);
    border-bottom-color: var(--line-strong);
    box-shadow: var(--shadow-md);
}

.portfolio-brand[b-jsmbjypopo] {
    position: relative;
    color: var(--fg);
    font-weight: 700;
    font-size: 1.0625rem;
    text-decoration: none;
    letter-spacing: -0.02em;
    flex-shrink: 0;
    transition: opacity var(--dur-fast) var(--ease-out);
}

/* gradient brand wordmark */
.portfolio-brand[b-jsmbjypopo] {
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.portfolio-brand:hover[b-jsmbjypopo],
.portfolio-brand:focus-visible[b-jsmbjypopo] {
    opacity: 0.85;
}

.portfolio-nav-links[b-jsmbjypopo] {
    display: flex;
    align-items: center;
    gap: var(--sp-1);
    margin-left: auto;
}

/* ── Mobile menu toggle (hamburger) ───────────────────────────
   Hidden on desktop; the media query below reveals it and turns
   the inline links into a collapsible glass dropdown. */
.portfolio-nav-toggle[b-jsmbjypopo] {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 5px;
    margin-left: auto;
    width: 40px;
    height: 40px;
    padding: 0 9px;
    border-radius: var(--r-sm);
    border: 1px solid var(--line-strong);
    background: var(--glass-2);
    cursor: pointer;
    transition: border-color var(--dur-fast) var(--ease-out),
                background var(--dur-fast) var(--ease-out),
                box-shadow var(--dur-fast) var(--ease-out);
}

.portfolio-nav-toggle:hover[b-jsmbjypopo],
.portfolio-nav-toggle:focus-visible[b-jsmbjypopo] {
    border-color: var(--accent-line);
    background: var(--glass-3);
    box-shadow: 0 0 0 1px var(--accent-line), 0 4px 16px var(--accent-soft);
}

.portfolio-nav-toggle-bar[b-jsmbjypopo] {
    display: block;
    width: 100%;
    height: 2px;
    border-radius: var(--r-pill);
    background: var(--fg);
    transition: transform var(--dur-med) var(--ease-spring),
                opacity var(--dur-fast) var(--ease-out);
}

/* hamburger morphs into an X while the menu is open */
.portfolio-nav.is-open .portfolio-nav-toggle-bar:nth-child(1)[b-jsmbjypopo] {
    transform: translateY(7px) rotate(45deg);
}

.portfolio-nav.is-open .portfolio-nav-toggle-bar:nth-child(2)[b-jsmbjypopo] {
    opacity: 0;
}

.portfolio-nav.is-open .portfolio-nav-toggle-bar:nth-child(3)[b-jsmbjypopo] {
    transform: translateY(-7px) rotate(-45deg);
}

/* NavLink renders an <a>, which is a child-component output — Blazor CSS
   isolation does NOT add the scope attribute to it, so plain `.portfolio-link`
   rules never match. `::deep` pierces the scope from the (scoped) nav wrapper. */
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    padding: var(--sp-2) var(--sp-3);
    border-radius: var(--r-sm);
    color: var(--fg-muted);
    text-decoration: none;
    font-size: 0.875rem;
    font-weight: 500;
    transition: color var(--dur-fast) var(--ease-out),
                background var(--dur-fast) var(--ease-out);
}

/* animated gradient underline that grows from the centre */
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link::after {
    content: "";
    position: absolute;
    left: var(--sp-3);
    right: var(--sp-3);
    bottom: 4px;
    height: 2px;
    border-radius: var(--r-pill);
    background: var(--accent-grad);
    transform: scaleX(0);
    transform-origin: center;
    opacity: 0;
    transition: transform var(--dur-med) var(--ease-spring),
                opacity var(--dur-fast) var(--ease-out);
}

.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link:hover,
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link:focus-visible {
    color: var(--fg);
}

.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link:hover::after,
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link:focus-visible::after,
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link.active::after {
    transform: scaleX(1);
    opacity: 1;
}

.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link.active {
    color: var(--fg);
}

/* CTA-style Kontakt link */
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link--cta {
    color: var(--fg);
    background: var(--glass-3);
    border: 1px solid var(--line-strong);
}

/* the CTA link carries a border/glow instead of the underline */
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link--cta::after {
    display: none;
}

.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link--cta:hover,
.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link--cta:focus-visible {
    border-color: var(--accent-line);
    box-shadow: 0 0 0 1px var(--accent-line), 0 4px 16px var(--accent-soft);
}

.portfolio-nav-links[b-jsmbjypopo]  .portfolio-link--cta.active {
    border-color: var(--accent-line);
}

/* ── Mobile nav (≤ 640px) ─────────────────────────────────────
   Below this width the inline links overflow the bar, so they
   collapse behind the hamburger into a full-width glass dropdown. */
@media (max-width: 640px) {
    .portfolio-nav[b-jsmbjypopo] {
        gap: var(--sp-3);
        padding: 0 var(--sp-4);
    }

    .portfolio-nav-toggle[b-jsmbjypopo] {
        display: inline-flex;
    }

    /* links drop out of the bar flow and become a panel under the header */
    .portfolio-nav-links[b-jsmbjypopo] {
        position: absolute;
        top: 100%;
        left: 0;
        right: 0;
        flex-direction: column;
        align-items: stretch;
        gap: var(--sp-1);
        margin-left: 0;
        padding: var(--sp-3);
        background: color-mix(in srgb, var(--ground) 92%, transparent);
        backdrop-filter: blur(var(--glass-blur)) saturate(140%);
        -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
        border-bottom: 1px solid var(--line);
        box-shadow: var(--shadow-md);

        /* collapsed by default — revealed when the header has .is-open */
        opacity: 0;
        visibility: hidden;
        transform: translateY(-8px);
        transition: opacity var(--dur-med) var(--ease-out),
                    transform var(--dur-med) var(--ease-out),
                    visibility var(--dur-med) var(--ease-out);
    }

    .portfolio-nav.is-open .portfolio-nav-links[b-jsmbjypopo] {
        opacity: 1;
        visibility: visible;
        transform: translateY(0);
    }

    /* full-width, taller tap targets; the centre underline doesn't suit a
       stacked list, so active state reads as a filled row instead */
    .portfolio-nav-links[b-jsmbjypopo]  .portfolio-link {
        padding: var(--sp-3);
        font-size: 0.9375rem;
    }

    .portfolio-nav-links[b-jsmbjypopo]  .portfolio-link::after {
        display: none;
    }

    .portfolio-nav-links[b-jsmbjypopo]  .portfolio-link.active {
        background: var(--glass-2);
    }

    .portfolio-nav-links[b-jsmbjypopo]  .portfolio-link--cta {
        justify-content: center;
        margin-top: var(--sp-1);
    }
}

/* ── Main content ─────────────────────────────────────────── */

.portfolio-main[b-jsmbjypopo] {
    flex: 1;
}

/* ── Footer ─────────────────────────────────────────────── */

.portfolio-footer[b-jsmbjypopo] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-4);
    padding: var(--sp-8) var(--sp-6) var(--sp-6);
    border-top: 1px solid var(--line);
    background: linear-gradient(to bottom,
        transparent,
        color-mix(in srgb, var(--accent-a) 6%, transparent));
}

/* hairline accent glow along the top edge of the footer */
.portfolio-footer[b-jsmbjypopo]::before {
    content: "";
    position: absolute;
    top: -1px;
    left: 50%;
    transform: translateX(-50%);
    width: min(420px, 60%);
    height: 1px;
    background: var(--accent-grad);
    opacity: 0.5;
}

.portfolio-footer-mark[b-jsmbjypopo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: var(--r-md);
    font-weight: 700;
    font-size: 0.875rem;
    letter-spacing: 0.02em;
    color: var(--fg);
    border: 1px solid var(--line-strong);
    background: var(--glass-2);
    box-shadow: var(--glow-soft);
}

.portfolio-footer-social[b-jsmbjypopo] {
    display: flex;
    gap: var(--sp-3);
}

.portfolio-social-link[b-jsmbjypopo] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 36px;
    height: 36px;
    border-radius: var(--r-sm);
    color: var(--fg-muted);
    text-decoration: none;
    border: 1px solid var(--line);
    background: var(--glass-2);
    transition: color var(--dur-fast) var(--ease-out),
                border-color var(--dur-fast) var(--ease-out),
                box-shadow var(--dur-fast) var(--ease-out),
                transform var(--dur-fast) var(--ease-out),
                background var(--dur-fast) var(--ease-out);
}

.portfolio-social-link:hover[b-jsmbjypopo],
.portfolio-social-link:focus-visible[b-jsmbjypopo] {
    color: var(--fg);
    background: var(--glass-3);
    border-color: var(--accent-line);
    box-shadow: 0 0 0 1px var(--accent-line), 0 6px 20px var(--accent-soft);
    transform: translateY(-2px);
}

.portfolio-footer-copy[b-jsmbjypopo] {
    margin: 0;
    font-size: 0.75rem;
    color: var(--fg-dim);
}
/* /Components/Layout/ReconnectModal.razor.rz.scp.css */
.components-reconnect-first-attempt-visible[b-2hf4eerfdg],
.components-reconnect-repeated-attempt-visible[b-2hf4eerfdg],
.components-reconnect-failed-visible[b-2hf4eerfdg],
.components-pause-visible[b-2hf4eerfdg],
.components-resume-failed-visible[b-2hf4eerfdg],
.components-rejoining-animation[b-2hf4eerfdg] {
    display: none;
}

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


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

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

}

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

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

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

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

    100% {
        opacity: 1;
    }
}

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

    100% {
        opacity: 0;
    }
}

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

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

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

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

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

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

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

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

@keyframes components-rejoining-animation-b-2hf4eerfdg {
    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;
    }
}
/* /Features/Admin/AdminHome.razor.rz.scp.css */
/* AdminHome — KPI grid                                                    */
/* Spacing/colors use dryl.css tokens. Font sizes are raw px/rem because   */
/* dryl.css has no typography-scale tokens (consistent with library CSS).  */

.dashboard-heading[b-yg50dxvp81] {
    font-size: 20px;
    font-weight: 600;
    color: var(--fg);
    margin-bottom: var(--sp-4);
}

.admin-kpis[b-yg50dxvp81] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: var(--sp-4);
}

.kpi-label[b-yg50dxvp81] {
    font-size: 12px;
    color: var(--fg-muted);
    margin: 0 0 var(--sp-2) 0;
    font-weight: 500;
}

.kpi-value[b-yg50dxvp81] {
    font-size: 2rem;
    font-weight: 700;
    color: var(--fg);
    margin: 0;
}
/* /Features/Admin/AiAssistant.razor.rz.scp.css */
.assistant[b-h99vslllo9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
    height: 100%;
}

.assistant-header[b-h99vslllo9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-3);
}

.assistant-title-row[b-h99vslllo9] {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
}

.assistant-title[b-h99vslllo9] {
    margin: 0;
}

.assistant-chat-card[b-h99vslllo9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    flex: 1;
    min-height: 0;
}

.assistant-messages[b-h99vslllo9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
    overflow-y: auto;
    padding-right: var(--sp-2);
    min-height: 320px;
    max-height: 60vh;
}

.assistant-empty[b-h99vslllo9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-4);
    margin: auto 0;
    padding: var(--sp-6) var(--sp-3);
}

.assistant-suggestions[b-h99vslllo9] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--sp-2);
}

.msg[b-h99vslllo9] {
    display: flex;
}

.msg--user[b-h99vslllo9] {
    justify-content: flex-end;
}

.msg--ai[b-h99vslllo9] {
    justify-content: flex-start;
}

.msg-bubble[b-h99vslllo9] {
    max-width: 80%;
    padding: var(--sp-3) var(--sp-4);
    border-radius: var(--r-lg);
    border: 1px solid var(--line);
}

.msg-bubble--user[b-h99vslllo9] {
    background: var(--accent-soft);
    border-color: var(--accent-line);
    color: var(--fg);
}

.msg-bubble--ai[b-h99vslllo9] {
    background: var(--glass-1);
    color: var(--fg);
}

.assistant-thinking[b-h99vslllo9] {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
    color: var(--fg-muted);
}

.assistant-composer[b-h99vslllo9] {
    margin-top: auto;
}
/* /Features/Admin/AiQuestionDialog.razor.rz.scp.css */
.ai-q[b-jca1h0u8ep] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.ai-q-intro[b-jca1h0u8ep] {
    display: flex;
    align-items: flex-start;
    gap: var(--sp-2);
    color: var(--fg-muted);
}

.ai-q-intro p[b-jca1h0u8ep] {
    margin: 0;
}

.ai-q-block[b-jca1h0u8ep] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
}

.ai-q-text[b-jca1h0u8ep] {
    font-weight: 600;
    color: var(--fg);
}

.ai-q-options[b-jca1h0u8ep] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}

.ai-q-option[b-jca1h0u8ep] {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
    width: 100%;
    padding: var(--sp-3);
    background: var(--glass-1);
    border: 1px solid var(--line);
    border-radius: var(--r-md);
    color: var(--fg-muted);
    text-align: left;
    cursor: pointer;
    transition: border-color var(--dur-fast) var(--ease-out),
                box-shadow var(--dur-fast) var(--ease-out),
                color var(--dur-fast) var(--ease-out);
}

.ai-q-option:hover[b-jca1h0u8ep] {
    border-color: var(--line-strong);
    color: var(--fg);
}

.ai-q-option:focus-visible[b-jca1h0u8ep] {
    outline: none;
    border-color: var(--accent);
    box-shadow: 0 0 0 3px var(--accent-soft);
}

.ai-q-option.is-selected[b-jca1h0u8ep] {
    border-color: var(--accent);
    color: var(--fg);
    box-shadow: 0 0 0 1px var(--accent-line), 0 0 18px var(--glow);
}

.ai-q-option.is-recommended[b-jca1h0u8ep] {
    border-image: var(--accent-grad) 1;
}

.ai-q-option-label[b-jca1h0u8ep] {
    flex: 1;
}

/* Selection indicator — radio (circle) or checkbox (square) */
.ai-q-mark[b-jca1h0u8ep] {
    flex: 0 0 auto;
    width: 18px;
    height: 18px;
    border: 1px solid var(--line-strong);
    position: relative;
    transition: border-color var(--dur-fast) var(--ease-out);
}

.ai-q-mark--radio[b-jca1h0u8ep] {
    border-radius: var(--r-pill);
}

.ai-q-mark--check[b-jca1h0u8ep] {
    border-radius: var(--r-xs);
}

.ai-q-option.is-selected .ai-q-mark[b-jca1h0u8ep] {
    border-color: transparent;
    background: var(--accent-grad);
}

.ai-q-mark--check[b-jca1h0u8ep]::after {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 5px;
    height: 9px;
    border: solid var(--bg-0);
    border-width: 0 2px 2px 0;
    transform: rotate(45deg) translate(-1px, -1px);
    opacity: 0;
    transition: opacity var(--dur-fast) var(--ease-out);
}

.ai-q-option.is-selected .ai-q-mark--check[b-jca1h0u8ep]::after {
    opacity: 1;
}

.ai-q-mark--radio[b-jca1h0u8ep]::after {
    content: "";
    position: absolute;
    inset: 0;
    margin: auto;
    width: 7px;
    height: 7px;
    border-radius: var(--r-pill);
    background: var(--bg-0);
    opacity: 0;
    transition: opacity var(--dur-fast) var(--ease-out);
}

.ai-q-option.is-selected .ai-q-mark--radio[b-jca1h0u8ep]::after {
    opacity: 1;
}

.ai-q-rec-badge[b-jca1h0u8ep] {
    margin-left: auto;
}
/* /Features/Admin/ContentAdmin.razor.rz.scp.css */
.content-admin[b-g90rv41jo7] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.content-header[b-g90rv41jo7] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-4);
}

.content-title[b-g90rv41jo7] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--fg);
}

.content-form-card[b-g90rv41jo7] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.section-heading[b-g90rv41jo7] {
    margin: 0 0 var(--sp-1);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--fg-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.form-actions[b-g90rv41jo7] {
    display: flex;
    justify-content: flex-end;
    gap: var(--sp-3);
}
/* /Features/Admin/Inbox.razor.rz.scp.css */
/* ── Inbox admin page ─────────────────────────────────────── */

.inbox-admin[b-k3mhlr4qk9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.inbox-header[b-k3mhlr4qk9] {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
}

.inbox-title[b-k3mhlr4qk9] {
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--fg);
    margin: 0;
}

/* ── From cell ── */

.inbox-from[b-k3mhlr4qk9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-1);
}

.inbox-from-name[b-k3mhlr4qk9] {
    color: var(--fg);
    font-weight: 500;
}

.inbox-from-email[b-k3mhlr4qk9] {
    color: var(--fg-muted);
    font-size: 0.75rem;
}

/* ── Unread emphasis ── */

.inbox-unread[b-k3mhlr4qk9] {
    color: var(--fg);
    font-weight: 600;
}

/* ── Date cell ── */

.inbox-date[b-k3mhlr4qk9] {
    color: var(--fg-muted);
    font-size: 0.8125rem;
}

/* ── Empty state ── */

.inbox-empty[b-k3mhlr4qk9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-4);
    padding: var(--sp-8) var(--sp-4);
    color: var(--fg-dim);
}

.inbox-empty-icon[b-k3mhlr4qk9] {
    opacity: 0.35;
}

.inbox-empty-text[b-k3mhlr4qk9] {
    font-size: 1rem;
    color: var(--fg-dim);
    margin: 0;
}

/* ── Detail panel ── */

.inbox-detail-card[b-k3mhlr4qk9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.inbox-detail-header[b-k3mhlr4qk9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    padding-bottom: var(--sp-3);
    border-bottom: 1px solid var(--line);
}

.inbox-detail-meta[b-k3mhlr4qk9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-3);
    flex-wrap: wrap;
}

.inbox-detail-from[b-k3mhlr4qk9] {
    color: var(--fg-muted);
    font-size: 0.8125rem;
}

.inbox-detail-date[b-k3mhlr4qk9] {
    color: var(--fg-dim);
    font-size: 0.8125rem;
}

.inbox-detail-subject[b-k3mhlr4qk9] {
    font-size: 1.125rem;
    font-weight: 600;
    color: var(--fg);
    margin: 0;
}

.inbox-detail-body[b-k3mhlr4qk9] {
    color: var(--fg-muted);
    line-height: 1.65;
    white-space: pre-wrap;
}

.inbox-detail-actions[b-k3mhlr4qk9] {
    display: flex;
    gap: var(--sp-2);
    padding-top: var(--sp-3);
    border-top: 1px solid var(--line);
}
/* /Features/Admin/Login.razor.rz.scp.css */
/* Login page — scoped styles, token-driven only.
   No literal colors, no hardcoded radii or spacing values. */

/* ── Shell ─────────────────────────────────────────────────────────────── */

.login-shell[b-jhwz6qjwu6] {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    padding: var(--sp-4);
    background: var(--bg);
}

/* ── Card ───────────────────────────────────────────────────────────────── */

.login-card[b-jhwz6qjwu6] {
    width: 100%;
    max-width: 400px;
    background: var(--glass-1);
    backdrop-filter: blur(var(--glass-blur));
    -webkit-backdrop-filter: blur(var(--glass-blur));
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: var(--sp-7) var(--sp-6);
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

/* ── Header ─────────────────────────────────────────────────────────────── */

.login-header[b-jhwz6qjwu6] {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
}

.login-title[b-jhwz6qjwu6] {
    font-size: 1.25rem;
    font-weight: 600;
    color: var(--fg);
    margin: 0;
}

/* ── Form ───────────────────────────────────────────────────────────────── */

.login-form[b-jhwz6qjwu6] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

/* ── Field ──────────────────────────────────────────────────────────────── */

.login-field[b-jhwz6qjwu6] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-1);
}

.login-label[b-jhwz6qjwu6] {
    font-size: 0.875rem;
    color: var(--fg-muted);
    font-weight: 500;
}

.login-input[b-jhwz6qjwu6] {
    background: var(--glass-2);
    border: 1px solid var(--line);
    border-radius: var(--r-sm);
    padding: var(--sp-2) var(--sp-3);
    color: var(--fg);
    font-size: 0.9375rem;
    width: 100%;
    box-sizing: border-box;
    transition: border-color var(--dur-fast) var(--ease-out),
                box-shadow var(--dur-fast) var(--ease-out);
}

.login-input:focus-visible[b-jhwz6qjwu6] {
    outline: none;
    border-color: var(--accent-line);
    box-shadow: 0 0 0 2px var(--accent-soft);
}

/* ── Submit button ──────────────────────────────────────────────────────── */

.login-submit[b-jhwz6qjwu6] {
    width: 100%;
    margin-top: var(--sp-1);
}
/* /Features/Admin/ProjectAssistantPanel.razor.rz.scp.css */
/* ProjectAssistantPanel — scoped, token-driven only. Mirrors the profile
   assistant's chat visuals so the two AI surfaces feel identical. */

.proj-assistant[b-g6gfrfa5o9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    position: sticky;
    top: var(--sp-5);
    max-height: calc(100vh - var(--sp-8));
}

.proj-assistant-header[b-g6gfrfa5o9] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-3);
}

.proj-assistant-title-row[b-g6gfrfa5o9] {
    display: flex;
    align-items: center;
    gap: var(--sp-2);
}

.proj-assistant-title[b-g6gfrfa5o9] {
    margin: 0;
    font-size: 1rem;
}

.proj-assistant-messages[b-g6gfrfa5o9] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
    overflow-y: auto;
    padding-right: var(--sp-2);
    min-height: 240px;
    flex: 1;
}

.proj-assistant-empty[b-g6gfrfa5o9] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-4);
    margin: auto 0;
    padding: var(--sp-5) var(--sp-2);
}

.proj-assistant-suggestions[b-g6gfrfa5o9] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--sp-2);
}

.msg[b-g6gfrfa5o9] {
    display: flex;
}

.msg--user[b-g6gfrfa5o9] {
    justify-content: flex-end;
}

.msg--ai[b-g6gfrfa5o9] {
    justify-content: flex-start;
}

.msg-bubble[b-g6gfrfa5o9] {
    max-width: 85%;
    padding: var(--sp-3) var(--sp-4);
    border-radius: var(--r-lg);
    border: 1px solid var(--line);
}

.msg-bubble--user[b-g6gfrfa5o9] {
    background: var(--accent-soft);
    border-color: var(--accent-line);
    color: var(--fg);
}

.msg-bubble--ai[b-g6gfrfa5o9] {
    background: var(--glass-1);
    color: var(--fg);
}

.proj-assistant-thinking[b-g6gfrfa5o9] {
    display: flex;
    align-items: center;
    gap: var(--sp-3);
    color: var(--fg-muted);
}

.proj-assistant-composer[b-g6gfrfa5o9] {
    margin-top: auto;
}
/* /Features/Admin/ProjectEdit.razor.rz.scp.css */
.project-edit[b-ctv1x0evfx] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.project-edit-header[b-ctv1x0evfx] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-4);
}

.project-edit-title[b-ctv1x0evfx] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--fg);
}

.project-edit-layout[b-ctv1x0evfx] {
    display: grid;
    grid-template-columns: minmax(0, 1fr) 380px;
    gap: var(--sp-5);
    align-items: start;
}

.project-edit-main[b-ctv1x0evfx] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
    min-width: 0;
}

.project-edit-aside[b-ctv1x0evfx] {
    min-width: 0;
}

@media (max-width: 1100px) {
    .project-edit-layout[b-ctv1x0evfx] {
        grid-template-columns: 1fr;
    }
}

.project-edit-form[b-ctv1x0evfx] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.project-edit-card[b-ctv1x0evfx] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.section-heading[b-ctv1x0evfx] {
    margin: 0 0 var(--sp-1);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--fg-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.field-grid[b-ctv1x0evfx] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-4);
}

.toggles-group[b-ctv1x0evfx] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
}

.project-edit-actions[b-ctv1x0evfx] {
    display: flex;
    justify-content: flex-end;
    gap: var(--sp-3);
}
/* /Features/Admin/ProjectsAdmin.razor.rz.scp.css */
.projects-admin[b-s5qjnd74vp] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.projects-header[b-s5qjnd74vp] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-4);
}

.projects-title[b-s5qjnd74vp] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--fg);
}

.tbl-edit-btn[b-s5qjnd74vp] {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: var(--sp-1) var(--sp-2);
    border-radius: var(--r-sm);
    border: 1px solid transparent;
    color: var(--fg-muted);
    background: transparent;
    transition: color var(--dur-fast) var(--ease-out),
                border-color var(--dur-fast) var(--ease-out),
                background var(--dur-fast) var(--ease-out);
    cursor: pointer;
    text-decoration: none;
}

.tbl-edit-btn:hover[b-s5qjnd74vp],
.tbl-edit-btn:focus-visible[b-s5qjnd74vp] {
    color: var(--fg);
    border-color: var(--line-strong);
    background: var(--glass-2);
}
/* /Features/Admin/SkillsAdmin.razor.rz.scp.css */
.skills-admin[b-7k7vrmiton] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.skills-header[b-7k7vrmiton] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-4);
}

.skills-title[b-7k7vrmiton] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--fg);
}

.skills-form-card[b-7k7vrmiton] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.skills-form[b-7k7vrmiton] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.section-heading[b-7k7vrmiton] {
    margin: 0 0 var(--sp-1);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--fg-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.field-grid[b-7k7vrmiton] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-4);
}

.form-actions[b-7k7vrmiton] {
    display: flex;
    justify-content: flex-end;
    gap: var(--sp-3);
}
/* /Features/Admin/SocialAdmin.razor.rz.scp.css */
.social-admin[b-mtdea7bpqn] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-5);
}

.social-header[b-mtdea7bpqn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-4);
}

.social-title[b-mtdea7bpqn] {
    margin: 0;
    font-size: 1.5rem;
    font-weight: 600;
    color: var(--fg);
}

.social-form-card[b-mtdea7bpqn] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.social-form[b-mtdea7bpqn] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

.section-heading[b-mtdea7bpqn] {
    margin: 0 0 var(--sp-1);
    font-size: 0.875rem;
    font-weight: 600;
    color: var(--fg-muted);
    text-transform: uppercase;
    letter-spacing: 0.06em;
}

.field-grid[b-mtdea7bpqn] {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: var(--sp-4);
}

.toggle-field[b-mtdea7bpqn] {
    display: flex;
    align-items: center;
    padding-top: var(--sp-5);
}

.form-actions[b-mtdea7bpqn] {
    display: flex;
    justify-content: flex-end;
    gap: var(--sp-3);
}
/* /Features/Contact/ContactPage.razor.rz.scp.css */
/* ── Hero ──────────────────────────────────────────────── */
.contact-hero[b-md21jotrj1] {
    max-width: 720px;
    margin: 0 auto;
    padding: calc(var(--sp-8) + var(--sp-4)) var(--sp-4) var(--sp-6);
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    text-align: center;
    align-items: center;
}

.contact-eyebrow[b-md21jotrj1] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin: 0;
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.contact-headline[b-md21jotrj1] {
    font-size: clamp(2.5rem, 6vw, 4rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.035em;
    margin: 0;
    background: linear-gradient(110deg,
        var(--accent-a), var(--accent-b), var(--accent-a));
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: contact-shimmer-b-md21jotrj1 8s linear infinite;
}

@keyframes contact-shimmer-b-md21jotrj1 {
    to { background-position: 200% center; }
}

@media (prefers-reduced-motion: reduce) {
    .contact-headline[b-md21jotrj1] { animation: none; }
}

.contact-subtitle[b-md21jotrj1] {
    font-size: clamp(1.0625rem, 2vw, 1.25rem);
    color: var(--fg-muted);
    margin: 0;
    max-width: 520px;
}

/* ── Form section ──────────────────────────────────────── */
.contact-form-section[b-md21jotrj1] {
    padding: 0 var(--sp-4) var(--sp-8);
    max-width: 640px;
    margin: 0 auto;
}

.contact-card[b-md21jotrj1] {
    padding: var(--sp-6);
}

.contact-form-inner[b-md21jotrj1] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
}

/* ── Fields ────────────────────────────────────────────── */
.contact-fields[b-md21jotrj1] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
}

/* ── Submit row ────────────────────────────────────────── */
.contact-actions[b-md21jotrj1] {
    display: flex;
    justify-content: flex-end;
    padding-top: var(--sp-2);
}

/* ── Honeypot — off-screen, invisible to humans ────────── */
.hp-field[b-md21jotrj1] {
    position: absolute;
    left: -9999px;
    width: 1px;
    height: 1px;
    overflow: hidden;
}
/* /Features/Portfolio/About.razor.rz.scp.css */
/* ── Hero ──────────────────────────────────────────────── */
.about-hero[b-rpqz4axb9n] {
    max-width: 760px;
    margin: 0 auto;
    padding: calc(var(--sp-8) + var(--sp-4)) var(--sp-4) var(--sp-5);
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}

.about-eyebrow[b-rpqz4axb9n] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin: 0;
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.about-headline[b-rpqz4axb9n] {
    font-size: clamp(2.5rem, 6vw, 4rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.035em;
    margin: 0;
    background: linear-gradient(110deg,
        var(--accent-a), var(--accent-b), var(--accent-a));
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: about-shimmer-b-rpqz4axb9n 8s linear infinite;
}

@keyframes about-shimmer-b-rpqz4axb9n {
    to { background-position: 200% center; }
}

@media (prefers-reduced-motion: reduce) {
    .about-headline[b-rpqz4axb9n] { animation: none; }
}

/* ── Body ──────────────────────────────────────────────── */
.about-body[b-rpqz4axb9n] {
    padding: 0 var(--sp-4) var(--sp-8);
}

.about-body-inner[b-rpqz4axb9n] {
    max-width: 760px;
    margin: 0 auto;
    font-size: 1.0625rem;
    line-height: 1.75;
    color: var(--fg-muted);
}
/* /Features/Portfolio/GitHubSection.razor.rz.scp.css */
/* ── GitHub Section ────────────────────────────────────── */
.gh-section[b-cj507lmhwb] {
    padding: var(--sp-8) var(--sp-4);
    max-width: 1120px;
    margin: 0 auto;
}

.gh-eyebrow[b-cj507lmhwb] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin: 0 0 var(--sp-2) 0;
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.gh-section-heading[b-cj507lmhwb] {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg);
    margin: 0 0 var(--sp-6) 0;
    display: flex;
    align-items: center;
    gap: var(--sp-2);
}

.gh-section-heading :global(svg)[b-cj507lmhwb] {
    color: var(--accent-b);
}

.gh-grid[b-cj507lmhwb] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--sp-5);
}

.gh-tilt[b-cj507lmhwb] {
    height: 100%;
}

.gh-card[b-cj507lmhwb] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    height: 100%;
}

.gh-card-name[b-cj507lmhwb] {
    font-size: 1rem;
    font-weight: 600;
    color: var(--fg);
    margin: 0;
}

.gh-card-desc[b-cj507lmhwb] {
    font-size: 0.875rem;
    color: var(--fg-muted);
    margin: 0;
    flex: 1;
}

.gh-card-meta[b-cj507lmhwb] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-1);
    align-items: center;
}

.gh-card-link[b-cj507lmhwb] {
    margin-top: auto;
    align-self: flex-start;
    text-decoration: none;
}
/* /Features/Portfolio/Home.razor.rz.scp.css */
/* Home — token-driven only. Every color/space/radius/duration references a
   dryl.css custom property. Ambient (looping) glows follow the same exception
   the design system grants its own .aurora / AI-aura primitives. */

/* ── Shared accent eyebrow + section heading ───────────────── */
.home-eyebrow[b-8b9ugeg9vn] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin: 0 0 var(--sp-2) 0;
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.home-section-heading[b-8b9ugeg9vn] {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg);
    margin: 0 0 var(--sp-6) 0;
}

/* ── Hero ─────────────────────────────────────────────── */
.home-hero[b-8b9ugeg9vn] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: min(88vh, 760px);
    padding: var(--sp-8) var(--sp-4);
    overflow: hidden;
}

/* breathing glow that sits right behind the headline */
.home-hero-aura[b-8b9ugeg9vn] {
    position: absolute;
    top: 42%;
    left: 50%;
    width: min(680px, 90vw);
    height: min(680px, 90vw);
    transform: translate(-50%, -50%);
    pointer-events: none;
    background: radial-gradient(circle at center,
        color-mix(in srgb, var(--accent-a) 30%, transparent) 0%,
        color-mix(in srgb, var(--accent-b) 14%, transparent) 38%,
        transparent 68%);
    filter: blur(40px);
    animation: home-hero-breathe-b-8b9ugeg9vn 6s var(--ease-in-out) infinite;
}

@keyframes home-hero-breathe-b-8b9ugeg9vn {
    0%, 100% { opacity: 0.7; transform: translate(-50%, -50%) scale(1); }
    50%      { opacity: 1;   transform: translate(-50%, -50%) scale(1.08); }
}

.home-hero-inner[b-8b9ugeg9vn] {
    position: relative;
    max-width: 820px;
    width: 100%;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-4);
}

.home-hero-eyebrow[b-8b9ugeg9vn] {
    display: flex;
    justify-content: center;
}

.home-hero-claim[b-8b9ugeg9vn] {
    font-size: 0.8125rem;
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--fg-dim);
    margin: 0;
}

.home-hero-headline[b-8b9ugeg9vn] {
    font-size: clamp(2.75rem, 8vw, 5.5rem);
    font-weight: 700;
    line-height: 1.02;
    letter-spacing: -0.035em;
    margin: 0;
    background: linear-gradient(110deg,
        var(--accent-a), var(--accent-b), var(--accent-a));
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: home-headline-shimmer-b-8b9ugeg9vn 8s linear infinite;
}

@keyframes home-headline-shimmer-b-8b9ugeg9vn {
    to { background-position: 200% center; }
}

.home-hero-subtitle[b-8b9ugeg9vn] {
    font-size: clamp(1.0625rem, 2vw, 1.375rem);
    color: var(--fg-muted);
    margin: 0;
    max-width: 620px;
    line-height: 1.5;
}

.home-hero-actions[b-8b9ugeg9vn] {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: var(--sp-3);
    margin-top: var(--sp-3);
}

/* scroll cue — gentle bob */
.home-hero-scrollcue[b-8b9ugeg9vn] {
    position: absolute;
    bottom: var(--sp-6);
    left: 50%;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: var(--r-pill);
    color: var(--fg-dim);
    border: 1px solid var(--line);
    background: var(--glass-1);
    backdrop-filter: blur(var(--glass-blur));
    -webkit-backdrop-filter: blur(var(--glass-blur));
    text-decoration: none;
    animation: home-scrollcue-bob-b-8b9ugeg9vn 2.4s var(--ease-in-out) infinite;
    transition: color var(--dur-fast) var(--ease-out),
                border-color var(--dur-fast) var(--ease-out);
}

.home-hero-scrollcue:hover[b-8b9ugeg9vn],
.home-hero-scrollcue:focus-visible[b-8b9ugeg9vn] {
    color: var(--fg);
    border-color: var(--accent-line);
}

@keyframes home-scrollcue-bob-b-8b9ugeg9vn {
    0%, 100% { transform: translate(-50%, 0); }
    50%      { transform: translate(-50%, 6px); }
}

/* ── Stats band ───────────────────────────────────────── */
.home-stats[b-8b9ugeg9vn] {
    max-width: 1120px;
    margin: 0 auto;
    padding: var(--sp-6) var(--sp-4);
}

.home-stats-grid[b-8b9ugeg9vn] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: var(--sp-4);
    padding: var(--sp-6) var(--sp-5);
    background: var(--glass-1);
    border: 1px solid var(--line);
    border-radius: var(--r-xl);
    backdrop-filter: blur(var(--glass-blur)) saturate(140%);
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
    box-shadow: var(--shadow-md);
}

.home-stat[b-8b9ugeg9vn] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-1);
    text-align: center;
}

.home-stat-value[b-8b9ugeg9vn] {
    font-family: var(--font-mono);
    font-size: clamp(2rem, 4vw, 3rem);
    font-weight: 600;
    line-height: 1;
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.home-stat-label[b-8b9ugeg9vn] {
    font-size: 0.8125rem;
    color: var(--fg-muted);
    letter-spacing: 0.02em;
}

/* ── About ────────────────────────────────────────────── */
.home-about[b-8b9ugeg9vn] {
    max-width: 960px;
    margin: 0 auto;
    padding: var(--sp-8) var(--sp-4);
}

.home-about-grid[b-8b9ugeg9vn] {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: var(--sp-8);
    align-items: start;
}

.home-about-photo-wrap[b-8b9ugeg9vn] {
    position: relative;
    width: 200px;
    flex-shrink: 0;
}

/* Gradient-Ring als Hintergrund des Wrappers, Foto sitzt 3px innen */
.home-about-photo-wrap[b-8b9ugeg9vn]::before {
    content: '';
    position: absolute;
    inset: 0;
    border-radius: var(--r-pill);
    background: var(--accent-grad);
    opacity: 0.9;
}

.home-about-photo[b-8b9ugeg9vn] {
    position: relative;
    display: block;
    width: 194px;
    height: 194px;
    margin: 3px;
    object-fit: cover;
    border-radius: var(--r-pill);
    background: var(--glass-2);
    /* Glow direkt am Bild – bleibt innerhalb des Border-Radius */
    box-shadow:
        0 0 24px 6px color-mix(in srgb, var(--accent-a) 40%, transparent),
        0 0 52px 18px color-mix(in srgb, var(--accent-b) 22%, transparent);
    animation: home-photo-glow-b-8b9ugeg9vn 5s var(--ease-in-out) infinite;
}

@keyframes home-photo-glow-b-8b9ugeg9vn {
    0%, 100% {
        box-shadow:
            0 0 24px 6px color-mix(in srgb, var(--accent-a) 40%, transparent),
            0 0 52px 18px color-mix(in srgb, var(--accent-b) 22%, transparent);
    }
    50% {
        box-shadow:
            0 0 36px 10px color-mix(in srgb, var(--accent-a) 55%, transparent),
            0 0 70px 26px color-mix(in srgb, var(--accent-b) 30%, transparent);
    }
}

.home-about-content[b-8b9ugeg9vn] {
    min-width: 0;
}

.home-about-body[b-8b9ugeg9vn] {
    font-size: 1.0625rem;
    line-height: 1.7;
    color: var(--fg-muted);
}

/* Mobil: untereinander stapeln */
@media (max-width: 640px) {
    .home-about-grid[b-8b9ugeg9vn] {
        grid-template-columns: 1fr;
        justify-items: center;
        text-align: center;
    }

    .home-about-photo-wrap[b-8b9ugeg9vn] {
        width: 160px;
    }

    .home-about-photo[b-8b9ugeg9vn] {
        width: 160px;
        height: 160px;
    }
}

/* ── Skills ───────────────────────────────────────────── */
.home-skills[b-8b9ugeg9vn] {
    padding: var(--sp-8) var(--sp-4);
    max-width: 1120px;
    margin: 0 auto;
}

.home-skills-grid[b-8b9ugeg9vn] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(300px, 1fr));
    gap: var(--sp-4);
}

.home-skills-group[b-8b9ugeg9vn] {
    position: relative;
    background: var(--glass-1);
    border: 1px solid var(--line);
    border-radius: var(--r-lg);
    padding: var(--sp-5);
    display: flex;
    flex-direction: column;
    gap: var(--sp-4);
    backdrop-filter: blur(var(--glass-blur)) saturate(140%);
    -webkit-backdrop-filter: blur(var(--glass-blur)) saturate(140%);
    transition: border-color var(--dur-med) var(--ease-out),
                box-shadow var(--dur-med) var(--ease-out);
}

.home-skills-group:hover[b-8b9ugeg9vn] {
    border-color: var(--line-strong);
    box-shadow: var(--glow-soft);
}

.home-skills-category[b-8b9ugeg9vn] {
    font-size: 0.8125rem;
    font-weight: 600;
    letter-spacing: 0.08em;
    text-transform: uppercase;
    color: var(--accent-b);
    margin: 0;
}

.home-skills-list[b-8b9ugeg9vn] {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
}

.home-skill-item[b-8b9ugeg9vn] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
}

.home-skill-header[b-8b9ugeg9vn] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--sp-2);
}

.home-skill-name[b-8b9ugeg9vn] {
    font-size: 0.9375rem;
    color: var(--fg);
    font-weight: 500;
}

/* ── Projects ─────────────────────────────────────────── */
.home-projects[b-8b9ugeg9vn] {
    padding: var(--sp-8) var(--sp-4);
    max-width: 1120px;
    margin: 0 auto;
}

.home-projects-grid[b-8b9ugeg9vn] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--sp-5);
}

/* tilt wrapper keeps perspective; the DrylCard inside provides the spotlight */
.home-project-tilt[b-8b9ugeg9vn] {
    height: 100%;
}

.home-project-card[b-8b9ugeg9vn] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    height: 100%;
}

.home-project-title[b-8b9ugeg9vn] {
    font-size: 1.1875rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: var(--fg);
    margin: 0;
}

.home-project-summary[b-8b9ugeg9vn] {
    font-size: 0.9375rem;
    line-height: 1.55;
    color: var(--fg-muted);
    margin: 0;
    flex: 1;
}

.home-project-tags[b-8b9ugeg9vn] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-1);
}

.home-project-link[b-8b9ugeg9vn] {
    margin-top: auto;
    align-self: flex-start;
    text-decoration: none;
}

.home-projects-more[b-8b9ugeg9vn] {
    margin-top: var(--sp-6);
    display: flex;
    justify-content: center;
}

/* ── Contact CTA ──────────────────────────────────────── */
.home-cta[b-8b9ugeg9vn] {
    padding: var(--sp-8) var(--sp-4);
    display: flex;
    justify-content: center;
}

.home-cta-card[b-8b9ugeg9vn] {
    max-width: 620px;
    width: 100%;
    text-align: center;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-3);
    padding: var(--sp-8) var(--sp-6);
}

.home-cta-heading[b-8b9ugeg9vn] {
    font-size: clamp(1.5rem, 3vw, 2rem);
    font-weight: 600;
    letter-spacing: -0.02em;
    color: var(--fg);
    margin: 0;
}

.home-cta-sub[b-8b9ugeg9vn] {
    font-size: 1.0625rem;
    color: var(--fg-muted);
    margin: 0 0 var(--sp-2) 0;
}
/* /Features/Portfolio/ProjectDetail.razor.rz.scp.css */
/* ── Article wrapper ──────────────────────────────────── */
.project-detail[b-2tr2dupas6] {
    max-width: 760px;
    margin: 0 auto;
    padding: var(--sp-6) var(--sp-4) var(--sp-8);
    display: flex;
    flex-direction: column;
    gap: var(--sp-6);
}

/* ── Hero image ───────────────────────────────────────── */
.project-detail-image-wrap[b-2tr2dupas6] {
    position: relative;
    width: 100%;
    border-radius: var(--r-lg);
    overflow: hidden;
    border: 1px solid var(--line);
    box-shadow: var(--shadow-lg);
}

.project-detail-image[b-2tr2dupas6] {
    width: 100%;
    display: block;
}

/* fade the bottom of the hero image into the page for a filmic blend */
.project-detail-image-veil[b-2tr2dupas6] {
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: linear-gradient(to bottom,
        transparent 55%,
        color-mix(in srgb, var(--ground) 75%, transparent) 100%);
}

/* ── Header ───────────────────────────────────────────── */
.project-detail-header[b-2tr2dupas6] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
}

.project-detail-back[b-2tr2dupas6] {
    align-self: flex-start;
    text-decoration: none;
    color: var(--fg-muted);
}

.project-detail-title[b-2tr2dupas6] {
    font-size: clamp(1.75rem, 4vw, 2.5rem);
    font-weight: 700;
    line-height: 1.15;
    margin: 0;
    color: var(--fg);
}

.project-detail-summary[b-2tr2dupas6] {
    font-size: 1.0625rem;
    color: var(--fg-muted);
    margin: 0;
    max-width: 640px;
}

/* ── Tags ─────────────────────────────────────────────── */
.project-detail-tags[b-2tr2dupas6] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-1);
}

/* ── Actions ──────────────────────────────────────────── */
.project-detail-actions[b-2tr2dupas6] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-2);
    margin-top: var(--sp-1);
}

/* ── Body (Markdown content) ──────────────────────────── */
.project-detail-body[b-2tr2dupas6] {
    border-top: 1px solid var(--line);
    padding-top: var(--sp-5);
}
/* /Features/Portfolio/Projects.razor.rz.scp.css */
/* ── Hero ──────────────────────────────────────────────── */
.projects-hero[b-72i2g7mkt0] {
    max-width: 820px;
    margin: 0 auto;
    padding: calc(var(--sp-8) + var(--sp-4)) var(--sp-4) var(--sp-7);
    display: flex;
    flex-direction: column;
    gap: var(--sp-2);
    text-align: center;
    align-items: center;
}

.projects-eyebrow[b-72i2g7mkt0] {
    font-size: 0.6875rem;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    margin: 0;
    background: var(--accent-grad);
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
}

.projects-headline[b-72i2g7mkt0] {
    font-size: clamp(2.5rem, 6vw, 4rem);
    font-weight: 700;
    line-height: 1.05;
    letter-spacing: -0.035em;
    margin: 0;
    background: linear-gradient(110deg,
        var(--accent-a), var(--accent-b), var(--accent-a));
    background-size: 200% auto;
    -webkit-background-clip: text;
    background-clip: text;
    -webkit-text-fill-color: transparent;
    animation: projects-shimmer-b-72i2g7mkt0 8s linear infinite;
}

@keyframes projects-shimmer-b-72i2g7mkt0 {
    to { background-position: 200% center; }
}

.projects-subtitle[b-72i2g7mkt0] {
    font-size: clamp(1.0625rem, 2vw, 1.25rem);
    color: var(--fg-muted);
    margin: 0;
    max-width: 560px;
}

@media (prefers-reduced-motion: reduce) {
    .projects-headline[b-72i2g7mkt0] { animation: none; }
}

/* ── Empty state ──────────────────────────────────────── */
.projects-empty[b-72i2g7mkt0] {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: var(--sp-3);
    padding: var(--sp-8) var(--sp-4);
    color: var(--fg-dim);
    text-align: center;
}

.projects-empty-text[b-72i2g7mkt0] {
    font-size: 0.9375rem;
    color: var(--fg-dim);
    margin: 0;
    max-width: 400px;
}

/* ── Grid ─────────────────────────────────────────────── */
.projects-grid-section[b-72i2g7mkt0] {
    padding: 0 var(--sp-4) var(--sp-8);
    max-width: 1120px;
    margin: 0 auto;
}

.projects-grid[b-72i2g7mkt0] {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
    gap: var(--sp-5);
}

/* ── Card ─────────────────────────────────────────────── */
.project-tilt[b-72i2g7mkt0] {
    height: 100%;
}

.project-card[b-72i2g7mkt0] {
    display: flex;
    flex-direction: column;
    gap: 0;
    height: 100%;
    overflow: hidden;
}

/* media frame clips the zoom; image scales up on card hover */
.project-card-media[b-72i2g7mkt0] {
    overflow: hidden;
    border-bottom: 1px solid var(--line);
}

.project-card-image[b-72i2g7mkt0] {
    width: 100%;
    display: block;
    transition: transform var(--dur-slow) var(--ease-out);
}

.project-tilt:hover .project-card-image[b-72i2g7mkt0] {
    transform: scale(1.06);
}

.project-card-body[b-72i2g7mkt0] {
    display: flex;
    flex-direction: column;
    gap: var(--sp-3);
    padding: var(--sp-5);
    flex: 1;
}

.project-card-title[b-72i2g7mkt0] {
    font-size: 1.1875rem;
    font-weight: 600;
    letter-spacing: -0.01em;
    color: var(--fg);
    margin: 0;
}

.project-card-summary[b-72i2g7mkt0] {
    font-size: 0.875rem;
    color: var(--fg-muted);
    margin: 0;
    flex: 1;
}

.project-card-tags[b-72i2g7mkt0] {
    display: flex;
    flex-wrap: wrap;
    gap: var(--sp-1);
}

.project-card-link[b-72i2g7mkt0] {
    align-self: flex-start;
    text-decoration: none;
    margin-top: auto;
}
