/* /Components/AboutSection.razor.rz.scp.css */
.about__body[b-9fqtf7y2a2] {
    max-width: 64ch;
}

.about__body p[b-9fqtf7y2a2] {
    margin: 0 0 1.1em;
}

.about__body p:first-child[b-9fqtf7y2a2] {
    color: var(--heading);
    font-size: 1.15rem;
    line-height: 1.6;
}

.about__focus[b-9fqtf7y2a2] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 28px 0 0;
    padding: 0;
    list-style: none;
}

.about__highlights[b-9fqtf7y2a2] {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 1px;
    margin: 48px 0 0;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--border);
    overflow: hidden;
}

.about__highlight[b-9fqtf7y2a2] {
    min-width: 0;
    padding: 32px;
    background: var(--surface-solid);
}

.about__highlight dt[b-9fqtf7y2a2] {
    color: var(--heading);
    font-family: var(--font-mono);
    font-size: clamp(2.5rem, 3.5vw, 3rem);
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: -0.055em;
}

.about__highlight:last-child dt[b-9fqtf7y2a2] {
    font-size: clamp(2rem, 2.8vw, 2.5rem);
    line-height: 1.5;
    letter-spacing: -0.06em;
    white-space: nowrap;
}

.about__highlight dd[b-9fqtf7y2a2] {
    max-width: 23ch;
    margin: 12px 0 0;
    color: var(--text-dim);
    font-size: 0.875rem;
    line-height: 1.55;
}

@media (max-width: 1180px) {
    .about__highlight[b-9fqtf7y2a2] {
        padding: 24px;
    }
}

@media (max-width: 820px) {
    .about__highlights[b-9fqtf7y2a2] {
        grid-template-columns: repeat(2, minmax(0, 1fr));
        margin-top: 32px;
    }

    .about__highlight dt[b-9fqtf7y2a2] {
        font-size: clamp(1.875rem, 5vw, 2.25rem);
    }

    .about__highlight:last-child dt[b-9fqtf7y2a2] {
        font-size: clamp(1.5rem, 4vw, 1.875rem);
    }

    .about__highlight dd[b-9fqtf7y2a2] {
        font-size: 0.8125rem;
    }
}

@media (max-width: 480px) {
    .about__highlight[b-9fqtf7y2a2] {
        padding: 24px 16px;
    }

    .about__highlight:last-child dt[b-9fqtf7y2a2] {
        font-size: 1.4rem;
        line-height: 1.61;
    }
}

@media print {
    .about__highlights[b-9fqtf7y2a2] {
        break-inside: avoid;
    }

    .about__highlight[b-9fqtf7y2a2] {
        padding: 16px;
    }
}
/* /Components/ClosingSection.razor.rz.scp.css */
.closing[b-rwpkhtkneo] {
    display: flex;
    align-items: center;
    min-height: 80vh;
    min-height: 80svh;
    text-align: center;
}

.closing__inner[b-rwpkhtkneo] {
    position: relative;
    display: flex;
    flex-direction: column;
    align-items: center;
}

/* Soft scrim: here the helix runs right behind the centred copy. It must stay inside the page
   gutter (at least 20px), otherwise phones widen the layout viewport and the page can wiggle sideways. */
.closing__inner[b-rwpkhtkneo]::before {
    content: "";
    position: absolute;
    inset: -40px -16px;
    z-index: -1;
    background: radial-gradient(closest-side, rgba(7, 9, 12, 0.82), rgba(7, 9, 12, 0));
    pointer-events: none;
}

.closing__title[b-rwpkhtkneo] {
    max-width: 16ch;
    margin: 0;
    color: var(--heading);
    font-size: clamp(2.2rem, 5.5vw, 4rem);
    font-weight: 600;
    line-height: 1.08;
    letter-spacing: -0.035em;
}

.closing__location[b-rwpkhtkneo] {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 28px 0 0;
    color: var(--text-dim);
    font-family: var(--font-mono);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
}

@media (max-width: 820px) {
    .closing[b-rwpkhtkneo] {
        min-height: 65svh;
    }

    .closing__title[b-rwpkhtkneo] {
        font-size: clamp(2rem, 6vw, 3rem);
        line-height: 1.14;
    }
}
/* /Components/DnaFallback.razor.rz.scp.css */
.dna-fallback[b-d8c9u28lfl] {
    position: absolute;
    top: 0;
    right: 8%;
    width: min(30vw, 320px);
    height: 100%;
    opacity: 0.55;
    transform: rotate(12deg) scale(1.2);
    -webkit-mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 78%, transparent);
    mask-image: linear-gradient(to bottom, transparent, #000 22%, #000 78%, transparent);
}

.dna-fallback__strand[b-d8c9u28lfl] {
    stroke: var(--dna-silver);
    stroke-width: 1.2;
    vector-effect: non-scaling-stroke;
}

.dna-fallback__rung[b-d8c9u28lfl] {
    stroke: var(--dna-silver);
    stroke-width: 1;
    opacity: 0.3;
    vector-effect: non-scaling-stroke;
}

.dna-fallback__node[b-d8c9u28lfl] {
    fill: var(--accent);
    opacity: 0.8;
}

@media (max-width: 820px) {
    .dna-fallback[b-d8c9u28lfl] {
        right: 50%;
        width: 60vw;
        opacity: 0.22;
        transform: translateX(50%) rotate(12deg) scale(1.2);
    }
}
/* /Components/DnaScene.razor.rz.scp.css */
.dna-scene[b-ycra80axy4] {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100vh;
    /* The large viewport height does not change while mobile browser bars slide in and out,
       so the WebGL drawing buffer is not resized in the middle of a scroll. */
    height: 100lvh;
    z-index: 0;
    overflow: hidden;
    pointer-events: none;
}

.dna-scene__canvas[b-ycra80axy4] {
    display: block;
    width: 100%;
    height: 100%;
    opacity: 0;
    transition: opacity 0.6s ease;
}

/* Set by portfolio3d.js after the first frame has been drawn. */
.dna-scene__canvas[data-ready][b-ycra80axy4] {
    opacity: 1;
}

/* Lens texture: a vignette plus fine film grain. It lies over the canvas only, the page text above
   stays clean. The grain is an inline SVG turbulence tile, so there is no image to download. */
.dna-scene[b-ycra80axy4]::after {
    content: "";
    position: absolute;
    inset: 0;
    background:
        radial-gradient(ellipse at center, transparent 60%, rgba(3, 4, 6, 0.45) 100%),
        url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='1 0 0 0 0  1 0 0 0 0  1 0 0 0 0  0 0 0 0 0.03'/%3E%3C/filter%3E%3Crect width='180' height='180' filter='url(%23n)'/%3E%3C/svg%3E");
    pointer-events: none;
}

.dna-scene__labels[b-ycra80axy4] {
    position: absolute;
    inset: 0;
}

@media (max-width: 820px) {
    /* On small screens the helix sits behind the text, so it is dimmed for readability. */
    .dna-scene__canvas[data-ready][b-ycra80axy4] {
        opacity: var(--scene-alpha, 0.14);
    }
}

@media (prefers-reduced-motion: reduce) {
    .dna-scene__canvas[data-ready][b-ycra80axy4] {
        opacity: 0.14;
        transition: none;
    }
}
/* /Components/ExperienceSection.razor.rz.scp.css */
.timeline[b-nxzm8ilyft] {
    position: relative;
    margin: 0;
    padding: 0;
    list-style: none;
}

.timeline[b-nxzm8ilyft]::before {
    content: "";
    position: absolute;
    top: 8px;
    bottom: 8px;
    left: 5px;
    width: 1px;
    background: linear-gradient(to bottom, var(--border-strong), var(--border) 70%, transparent);
}

.timeline[b-nxzm8ilyft]::after {
    content: "";
    position: absolute;
    top: var(--timeline-start, 8px);
    left: 5px;
    width: 1px;
    height: var(--timeline-length, 0px);
    background: var(--accent);
    opacity: 0.7;
    transform: scaleY(var(--timeline-progress, 0));
    transform-origin: top;
    pointer-events: none;
}

.timeline__heading[b-nxzm8ilyft] {
    margin: 64px 0 28px;
    color: var(--text-dim);
    font-family: var(--font-mono);
    font-size: 0.76rem;
    font-weight: 400;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.timeline__item[b-nxzm8ilyft] {
    position: relative;
    padding: 0 0 52px 40px;
}

.timeline__item:last-child[b-nxzm8ilyft] {
    padding-bottom: 0;
}

.timeline__marker[b-nxzm8ilyft] {
    position: absolute;
    top: 6px;
    left: 0;
    width: 11px;
    height: 11px;
    border: 1px solid var(--accent);
    border-radius: 50%;
    background: var(--bg);
    box-shadow: 0 0 0 4px var(--bg);
    z-index: 1;
}

.timeline__marker[b-nxzm8ilyft]::after {
    content: "";
    position: absolute;
    inset: -5px;
    border: 1px solid var(--accent);
    border-radius: 50%;
    opacity: 0;
    transform: scale(0.8);
    transition: opacity 160ms ease, transform 160ms ease;
}

.timeline__item[data-timeline-state="active"] .timeline__marker[b-nxzm8ilyft]::after {
    opacity: var(--marker-reveal, 1);
    transform: scale(1);
}

.timeline__item[data-timeline-state="active"] .timeline__position[b-nxzm8ilyft] {
    text-decoration: underline;
    text-decoration-color: rgba(127, 196, 216, 0.4);
    text-decoration-thickness: 1px;
    text-underline-offset: 7px;
}

[data-timeline-reduced] .timeline__marker[b-nxzm8ilyft]::after {
    transition: none;
    transform: none;
}

@media (prefers-reduced-motion: reduce) {
    .timeline[b-nxzm8ilyft]::after {
        display: none;
    }

    .timeline__marker[b-nxzm8ilyft]::after {
        transition: none;
        transform: none;
    }
}

@media print {
    .timeline[b-nxzm8ilyft]::before,
    .timeline[b-nxzm8ilyft]::after,
    .timeline__marker[b-nxzm8ilyft] {
        display: none;
    }
}

/* The filled marker means "current". */
.timeline__item:first-child .timeline__marker[b-nxzm8ilyft] {
    background: var(--accent);
}

.timeline--plain .timeline__item:first-child .timeline__marker[b-nxzm8ilyft] {
    background: var(--bg);
}

.timeline__period[b-nxzm8ilyft] {
    margin: 0 0 8px;
    color: var(--accent);
    font-family: var(--font-mono);
    font-size: 0.78rem;
    letter-spacing: 0.04em;
}

.timeline__position[b-nxzm8ilyft] {
    margin: 0;
    color: var(--heading);
    font-size: 1.2rem;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.timeline__company[b-nxzm8ilyft] {
    margin: 4px 0 14px;
    color: var(--text-dim);
    font-size: 0.95rem;
}

.timeline__summary[b-nxzm8ilyft] {
    margin: 0 0 14px;
}

.timeline__achievements[b-nxzm8ilyft] {
    display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
    font-size: 0.95rem;
}

.timeline__achievements li[b-nxzm8ilyft] {
    position: relative;
    padding-left: 18px;
}

.timeline__achievements li[b-nxzm8ilyft]::before {
    content: "";
    position: absolute;
    top: 0.72em;
    left: 0;
    width: 8px;
    height: 1px;
    background: var(--text-dim);
}

@media (max-width: 640px) {
    .timeline__item[b-nxzm8ilyft] {
        padding-left: 30px;
    }
}
/* /Components/NavBar.razor.rz.scp.css */
.nav[b-p5zzk8w93h] {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    z-index: 10;
    /* Nearly opaque where the links sit, so their contrast holds while content scrolls underneath. */
    background: linear-gradient(to bottom, rgba(7, 9, 12, 0.97), rgba(7, 9, 12, 0.9) 70%, rgba(7, 9, 12, 0));
}

.nav__inner[b-p5zzk8w93h] {
    display: flex;
    align-items: center;
    justify-content: space-between;
    height: var(--nav-height);
}

.nav__brand[b-p5zzk8w93h] {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    /* Comfortable touch target. */
    min-height: 44px;
    color: var(--heading);
    font-size: 0.98rem;
    font-weight: 600;
    letter-spacing: 0.01em;
    text-decoration: none;
}

.nav__brand-mark[b-p5zzk8w93h] {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--accent);
    box-shadow: 0 0 12px var(--accent-glow);
}

.nav__list[b-p5zzk8w93h] {
    display: flex;
    align-items: center;
    gap: 4px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.nav__link[b-p5zzk8w93h] {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 7px;
    padding: 8px 14px;
    color: var(--text-dim);
    font-size: 0.86rem;
    font-weight: 500;
    text-decoration: none;
    transition: color 0.2s ease;
}

.nav__link[b-p5zzk8w93h]::after {
    content: "";
    position: absolute;
    right: 14px;
    bottom: 2px;
    left: 14px;
    height: 1px;
    background: var(--accent);
    transform: scaleX(0);
    transform-origin: left;
    transition: transform 0.3s ease;
}

.nav__link:hover[b-p5zzk8w93h],
.nav__link:focus-visible[b-p5zzk8w93h],
.nav__link[aria-current="true"][b-p5zzk8w93h] {
    color: var(--heading);
}

.nav__link[aria-current="true"][b-p5zzk8w93h]::after {
    transform: scaleX(1);
}

.nav__toggle[b-p5zzk8w93h] {
    display: none;
    flex-direction: column;
    justify-content: center;
    gap: 7px;
    width: 44px;
    height: 44px;
    margin-right: -10px;
    padding: 0 10px;
    border: 0;
    background: none;
    cursor: pointer;
}

.nav__toggle-bar[b-p5zzk8w93h] {
    display: block;
    width: 100%;
    height: 1.5px;
    background: var(--heading);
    transition: transform 0.3s ease;
}

.nav__backdrop[b-p5zzk8w93h] {
    display: none;
}

@media (max-width: 820px) {
    .nav__toggle[b-p5zzk8w93h] {
        display: flex;
    }

    .nav__backdrop[b-p5zzk8w93h] {
        position: fixed;
        inset: var(--nav-height) 0 0;
        z-index: -1;
        display: block;
        background: rgba(7, 9, 12, 0.6);
    }

    .nav--open[b-p5zzk8w93h] {
        background: var(--bg);
    }

    .nav--open .nav__toggle-bar:first-child[b-p5zzk8w93h] {
        transform: translateY(4.25px) rotate(45deg);
    }

    .nav--open .nav__toggle-bar:last-child[b-p5zzk8w93h] {
        transform: translateY(-4.25px) rotate(-45deg);
    }

    .nav__menu[b-p5zzk8w93h] {
        position: absolute;
        top: var(--nav-height);
        right: 0;
        left: 0;
        /* The panel hangs off the fixed header, so it has to scroll on its own (landscape phones). */
        max-height: calc(100vh - var(--nav-height));
        max-height: calc(100svh - var(--nav-height));
        padding: 8px var(--gutter) 28px;
        border-bottom: 1px solid var(--border);
        background: var(--bg);
        overflow-y: auto;
        overscroll-behavior: contain;
        opacity: 0;
        visibility: hidden;
        transform: translateY(-8px);
        transition: opacity 0.25s ease, transform 0.25s ease, visibility 0s linear 0.25s;
    }

    .nav--open .nav__menu[b-p5zzk8w93h] {
        opacity: 1;
        visibility: visible;
        transform: none;
        transition-delay: 0s;
    }

    .nav__list[b-p5zzk8w93h] {
        flex-direction: column;
        align-items: stretch;
        gap: 0;
    }

    .nav__link[b-p5zzk8w93h] {
        width: 100%;
        padding: 15px 0;
        border-bottom: 1px solid var(--border);
        font-size: 1.05rem;
    }

    .nav__link[b-p5zzk8w93h]::after {
        display: none;
    }

    .nav__link[aria-current="true"][b-p5zzk8w93h] {
        color: var(--accent);
    }
}
/* /Components/ProjectCard.razor.rz.scp.css */
.project[b-18j12bv80y] {
    position: relative;
    isolation: isolate;
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--border);
    border-radius: var(--radius);
    background: var(--surface);
    transition: border-color 180ms var(--ease-out), background-color 180ms var(--ease-out);
}

.project > :not(.project__light)[b-18j12bv80y] {
    position: relative;
    z-index: 1;
}

.project[data-project-variant="featured"][b-18j12bv80y] {
    padding: 36px 32px 32px;
    border-color: rgba(127, 196, 216, 0.24);
    background: linear-gradient(135deg, rgba(127, 196, 216, 0.035), transparent 52%), var(--surface);
}

.project[data-project-variant="secondary"][b-18j12bv80y] {
    padding: 28px;
}

.project[b-18j12bv80y]::before {
    content: "";
    position: absolute;
    top: 28px;
    bottom: 28px;
    left: -1px;
    width: 1px;
    background: var(--accent);
    opacity: 0;
    transition: opacity 180ms var(--ease-out);
    pointer-events: none;
}

/* Corner ticks on the side that faces the helix, like the frame of a system readout.
   They light up together with the card. */
.project[b-18j12bv80y]::after {
    --tick: var(--border-strong);
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    background:
        linear-gradient(var(--tick), var(--tick)) right 18px top 0 / 14px 1px,
        linear-gradient(var(--tick), var(--tick)) right 0 top 18px / 1px 14px,
        linear-gradient(var(--tick), var(--tick)) right 18px bottom 0 / 14px 1px,
        linear-gradient(var(--tick), var(--tick)) right 0 bottom 18px / 1px 14px;
    background-repeat: no-repeat;
    pointer-events: none;
}

.project:hover[b-18j12bv80y]::after,
.project:focus-within[b-18j12bv80y]::after {
    --tick: var(--accent);
}

.project:hover[b-18j12bv80y],
.project:focus-within[b-18j12bv80y] {
    border-color: var(--border-active);
    background-color: var(--surface-hover);
}

.project:hover[b-18j12bv80y]::before,
.project:focus-within[b-18j12bv80y]::before {
    opacity: 1;
}

.project__header[b-18j12bv80y] {
    display: grid;
    gap: 12px;
}

.project__number[b-18j12bv80y] {
    color: var(--accent);
    font-family: var(--font-mono);
    width: fit-content;
    font-size: 0.75rem;
    line-height: 1;
    letter-spacing: 0.08em;
}

.project__number[b-18j12bv80y]::after {
    content: "";
    display: inline-block;
    width: 32px;
    height: 1px;
    margin-left: 12px;
    background: var(--border-strong);
    vertical-align: middle;
}

.project__title[b-18j12bv80y] {
    margin: 0;
    color: var(--heading);
    font-size: 1.375rem;
    font-weight: 600;
    line-height: 1.25;
    letter-spacing: -0.015em;
    overflow-wrap: anywhere;
}

.project[data-project-variant="featured"] .project__title[b-18j12bv80y] {
    max-width: 28ch;
    font-size: clamp(1.75rem, 2.5vw, 2rem);
    letter-spacing: -0.025em;
}

.project[data-project-variant="secondary"] .project__title[b-18j12bv80y] {
    font-size: 1.5rem;
}

.project__context[b-18j12bv80y] {
    margin: 14px 0 0;
    color: var(--text-dim);
    font-family: var(--font-mono);
    font-size: 0.75rem;
    line-height: 1.75;
    letter-spacing: 0.02em;
}

.project__summary[b-18j12bv80y] {
    max-width: 64ch;
    margin: 18px 0 0;
    line-height: 1.7;
}

.project[data-project-variant="featured"] .project__summary[b-18j12bv80y] {
    margin-top: 24px;
    font-size: 1.0625rem;
}

/* Key figures: the same readout panel as the About numbers, one size down. */
.project__metrics[b-18j12bv80y] {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(120px, 1fr));
    gap: 1px;
    margin: 24px 0 0;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--border);
    overflow: hidden;
}

.project__metric[b-18j12bv80y] {
    min-width: 0;
    padding: 14px 16px 12px;
    background: var(--surface-solid);
}

.project__metric dt[b-18j12bv80y] {
    color: var(--heading);
    font-family: var(--font-mono);
    font-size: 1.375rem;
    font-weight: 500;
    line-height: 1.2;
    letter-spacing: -0.03em;
    white-space: nowrap;
}

.project[data-project-variant="featured"] .project__metric dt[b-18j12bv80y] {
    font-size: clamp(1.5rem, 2vw, 1.75rem);
}

.project__metric dd[b-18j12bv80y] {
    margin: 4px 0 0;
    color: var(--text-dim);
    font-size: 0.75rem;
    line-height: 1.5;
}

/* Challenge, approach, outcome and system map read like a spec sheet: label column, content column. */
.project__story[b-18j12bv80y] {
    display: grid;
    grid-template-columns: 6.5rem minmax(0, 1fr);
    gap: 20px 20px;
    margin: 26px 0 0;
}

.project__story dt[b-18j12bv80y] {
    padding-top: 0.3rem;
    color: var(--text-dim);
    font-family: var(--font-mono);
    font-size: 0.7rem;
    line-height: 1.6;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

.project__story dd[b-18j12bv80y] {
    min-width: 0;
    margin: 0;
    font-size: 0.9375rem;
    line-height: 1.65;
}

.project__story dd p[b-18j12bv80y] {
    max-width: 64ch;
    margin: 0;
}

.project__list[b-18j12bv80y] {
    display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
}

.project__list li[b-18j12bv80y] {
    position: relative;
    padding-left: 16px;
    overflow-wrap: anywhere;
}

.project__list li[b-18j12bv80y]::before {
    content: "";
    position: absolute;
    top: 0.62em;
    left: 0;
    width: 5px;
    height: 5px;
    border: 1px solid var(--text-dim);
    border-radius: 50%;
}

/* System map: one row per integration point, the channel drawn as a line between the two ends. */
.project__map[b-18j12bv80y] {
    display: grid;
    gap: 1px;
    margin: 0;
    padding: 0;
    border: 1px solid var(--border);
    border-radius: 8px;
    background: var(--border);
    list-style: none;
    overflow: hidden;
}

.project__link[b-18j12bv80y] {
    display: grid;
    grid-template-columns: minmax(0, 10.5rem) minmax(0, 1fr) minmax(0, 10.5rem);
    gap: 14px;
    align-items: center;
    padding: 12px 16px;
    background: var(--surface-solid);
}

.project__link-end[b-18j12bv80y] {
    color: var(--heading);
    font-family: var(--font-mono);
    font-size: 0.78rem;
    line-height: 1.5;
    overflow-wrap: anywhere;
}

.project__link-end:last-child[b-18j12bv80y] {
    text-align: right;
}

.project__link-channel[b-18j12bv80y] {
    color: var(--text-dim);
    font-size: 0.8rem;
    line-height: 1.45;
    text-align: center;
    overflow-wrap: anywhere;
}

.project__link-channel[b-18j12bv80y]::after {
    content: "";
    display: block;
    height: 1px;
    margin-top: 6px;
    background: linear-gradient(90deg, var(--accent) 0, var(--accent) 5px, var(--border-strong) 5px, var(--border-strong) calc(100% - 5px), var(--accent) calc(100% - 5px));
}

.project__stack[b-18j12bv80y] {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin: 26px 0 0;
    padding: 18px 0 0;
    border-top: 1px solid var(--border);
    list-style: none;
}

.project__light[b-18j12bv80y] {
    position: absolute;
    inset: 0;
    z-index: 0;
    overflow: hidden;
    border-radius: inherit;
    opacity: 0;
    pointer-events: none;
    transition: opacity 200ms var(--ease-out);
}

.project__light-source[b-18j12bv80y] {
    position: absolute;
    top: 0;
    left: 0;
    width: 280px;
    height: 280px;
    border-radius: 50%;
    background: radial-gradient(circle, rgba(127, 196, 216, 0.08), rgba(127, 196, 216, 0) 70%);
    transform: translate3d(var(--light-x, -1000px), var(--light-y, -1000px), 0);
}

@media (hover: hover) and (pointer: fine) and (prefers-reduced-motion: no-preference) {
    .project[data-light-active] .project__light[b-18j12bv80y] {
        opacity: 1;
        transition-duration: 160ms;
    }
}

@media (max-width: 820px) {
    .project[b-18j12bv80y],
    .project[data-project-variant="secondary"][b-18j12bv80y] {
        padding: 24px;
    }

    .project[data-project-variant="featured"][b-18j12bv80y] {
        padding: 28px 24px;
    }

    .project[data-project-variant="featured"] .project__title[b-18j12bv80y] {
        font-size: clamp(1.4375rem, 3.7vw, 1.75rem);
    }

    .project[data-project-variant="secondary"] .project__title[b-18j12bv80y] {
        font-size: 1.4375rem;
    }

    .project__light[b-18j12bv80y] {
        display: none;
    }
}

@media (max-width: 640px) {
    .project__story[b-18j12bv80y] {
        grid-template-columns: minmax(0, 1fr);
        gap: 8px;
    }

    .project__story dt[b-18j12bv80y] {
        padding-top: 0;
    }

    .project__story dd + dt[b-18j12bv80y] {
        margin-top: 14px;
    }

    /* Both ends on one line, the channel below them. */
    .project__link[b-18j12bv80y] {
        grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
        grid-template-areas:
            "from to"
            "channel channel";
        gap: 6px 14px;
    }

    .project__link-end:first-child[b-18j12bv80y] {
        grid-area: from;
    }

    .project__link-end:last-child[b-18j12bv80y] {
        grid-area: to;
    }

    .project__link-channel[b-18j12bv80y] {
        grid-area: channel;
        text-align: left;
    }

    .project__link-channel[b-18j12bv80y]::after {
        display: none;
    }
}

@media (max-width: 480px) {
    .project[b-18j12bv80y],
    .project[data-project-variant="featured"][b-18j12bv80y],
    .project[data-project-variant="secondary"][b-18j12bv80y] {
        padding: 24px 20px;
    }

    .project__title[b-18j12bv80y] {
        font-size: 1.25rem;
    }

    .project__metric[b-18j12bv80y] {
        padding: 12px 14px 10px;
    }

    .project__metric dt[b-18j12bv80y] {
        font-size: 1.25rem;
    }

    .project[data-project-variant="featured"] .project__metric dt[b-18j12bv80y] {
        font-size: 1.375rem;
    }
}

@media print {
    .project[b-18j12bv80y],
    .project[data-project-variant="featured"][b-18j12bv80y] {
        background: none;
        break-inside: avoid;
    }

    .project[b-18j12bv80y]::before,
    .project[b-18j12bv80y]::after,
    .project__light[b-18j12bv80y] {
        display: none;
    }

    .project__metric[b-18j12bv80y],
    .project__link[b-18j12bv80y] {
        background: none;
    }
}
/* /Components/ProjectsSection.razor.rz.scp.css */
.projects__content[b-00afey2knf] {
    width: calc(66.6667% - 8px);
}

.projects[b-00afey2knf] {
    display: grid;
    gap: 24px;
}

.projects[b-00afey2knf]  .project:not([data-project-variant="featured"]) {
    width: calc(87.5% - 3px);
}

@media (max-width: 1180px) {
    .projects__content[b-00afey2knf],
    .projects[b-00afey2knf]  .project:not([data-project-variant="featured"]) {
        width: 100%;
    }
}

@media (max-width: 820px) {
    .projects[b-00afey2knf] {
        gap: 20px;
    }
}

@media print {
    .projects__content[b-00afey2knf],
    .projects[b-00afey2knf]  .project:not([data-project-variant="featured"]) {
        width: 100%;
    }
}
/* /Components/ScrollHud.razor.rz.scp.css */
.hud[b-np8xnlnkv0] {
    position: fixed;
    top: 50%;
    right: 18px;
    z-index: 5;
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 14px;
    color: var(--text-dim);
    font-family: var(--font-mono);
    font-size: 0.62rem;
    letter-spacing: 0.12em;
    pointer-events: none;
    transform: translateY(-50%);
}

.hud__label[b-np8xnlnkv0] {
    writing-mode: vertical-rl;
    white-space: nowrap;
}

.hud__rail[b-np8xnlnkv0] {
    position: relative;
    width: 1px;
    height: 148px;
    background: var(--border-strong);
}

/* Small ticks at both ends of the rail. */
.hud__rail[b-np8xnlnkv0]::before,
.hud__rail[b-np8xnlnkv0]::after {
    content: "";
    position: absolute;
    left: -3px;
    width: 7px;
    height: 1px;
    background: var(--text-dim);
}

.hud__rail[b-np8xnlnkv0]::before {
    top: 0;
}

.hud__rail[b-np8xnlnkv0]::after {
    bottom: 0;
}

.hud__fill[b-np8xnlnkv0] {
    position: absolute;
    inset: 0;
    background: var(--accent);
    transform: scaleY(var(--hud-progress, 0));
    transform-origin: top;
}

/* On small screens every pixel belongs to the content. */
@media (max-width: 820px) {
    .hud[b-np8xnlnkv0] {
        display: none;
    }
}
/* /Components/SiteFooter.razor.rz.scp.css */
.footer[b-uzs4vy3z84] {
    position: relative;
    z-index: 1;
    border-top: 1px solid var(--border);
    color: var(--text-dim);
    font-family: var(--font-mono);
    font-size: 0.72rem;
    letter-spacing: 0.03em;
}

.footer__inner[b-uzs4vy3z84] {
    display: flex;
    flex-wrap: wrap;
    justify-content: space-between;
    gap: 6px 24px;
    padding-top: 22px;
    padding-bottom: 22px;
}

.footer p[b-uzs4vy3z84] {
    margin: 0;
}
/* /Components/SkillsSection.razor.rz.scp.css */
.skills[b-os4maynwy4] {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 40px 32px;
}

.skills__category[b-os4maynwy4] {
    min-width: 0;
}

.skills__name[b-os4maynwy4] {
    margin: 0 0 16px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--border);
    color: var(--accent);
    font-family: var(--font-mono);
    font-size: 0.8125rem;
    font-weight: 500;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.skills__list[b-os4maynwy4] {
    display: grid;
    gap: 8px;
    margin: 0;
    padding: 0;
    list-style: none;
    color: var(--heading);
    font-size: 1rem;
    overflow-wrap: anywhere;
}

@media (max-width: 820px) {
    .skills[b-os4maynwy4] {
        grid-template-columns: minmax(0, 1fr);
        gap: 32px;
    }
}
