.hero-section {
    display: grid;
    min-height: 100vh;
    padding-top: var(--nav-height);
    overflow: hidden;
    align-items: center;
}

@font-face {
    font-family: "Gtek Technology";
    src: url("/fonts/GtekTechnologyFreePromo.ttf") format("truetype");
    font-display: swap;
}

.hero-atmosphere {
    position: absolute;
    inset: 0;
    z-index: -1;
}

.hero-layer,
.hero-network {
    position: absolute;
    inset: 0;
    will-change: transform;
}

.hero-grid {
    opacity: 0.28;
    background-image: linear-gradient(rgba(255,255,255,.05) 1px, transparent 1px), linear-gradient(90deg, rgba(255,255,255,.05) 1px, transparent 1px);
    background-size: 56px 56px;
    mask-image: radial-gradient(circle at center, black, transparent 72%);
}

.hero-orbit {
    width: min(58vw, 720px);
    aspect-ratio: 1;
    inset: auto 6vw 4vh auto;
    border: 1px solid var(--border-active);
    border-radius: 50%;
    box-shadow: inset 0 0 80px rgba(120, 168, 255, 0.08);
    opacity: 0.48;
}

.hero-background-cog {
    display: grid;
    place-items: center;
    width: clamp(560px, 52vw, 900px);
    aspect-ratio: 1;
    inset: auto clamp(-520px, -22vw, -260px) clamp(-380px, -28vh, -210px) auto;
    opacity: 0.34;
    filter: drop-shadow(0 0 42px rgba(77, 169, 255, 0.14));
}

.hero-background-cog-gear {
    display: block;
    width: 100%;
    height: 100%;
    background: rgba(245, 250, 255, 0.92);
    mask: url("/images/hero-gear.png") center / contain no-repeat;
    -webkit-mask: url("/images/hero-gear.png") center / contain no-repeat;
    transform-origin: center;
    filter: drop-shadow(0 0 24px rgba(112, 220, 233, 0.12));
    pointer-events: none;
    user-select: none;
    will-change: transform;
}

.hero-network {
    pointer-events: none;
}

.hero-coordinate-label {
    position: absolute;
    top: 0;
    left: 0;
    z-index: 1;
    padding: 7px 10px;
    color: var(--text-primary);
    font-size: 0.82rem;
    line-height: 1;
    white-space: nowrap;
    background: rgba(4, 8, 14, 0.78);
    border: 1px solid rgba(112, 220, 233, 0.28);
    border-radius: 7px;
    box-shadow: 0 10px 28px rgba(0, 0, 0, 0.28);
    opacity: 0;
    pointer-events: none;
    transition: opacity 160ms var(--ease-out);
    will-change: transform, opacity;
}

    .hero-coordinate-label.is-visible {
        opacity: 1;
    }

.hero-inner {
    display: grid;
    grid-template-columns: minmax(0, 1.15fr) minmax(280px, 0.85fr);
    gap: clamp(30px, 6vw, 80px);
    align-items: center;
}

.hero-title {
    margin: 22px 0 0;
    color: var(--text-primary);
    font-size: clamp(1.3rem, 3vw, 2.2rem);
    line-height: 1.25;
}

.hero-support {
    max-width: 720px;
}

.hero-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 26px 0;
}

    .hero-meta span,
    .tool-list li {
        padding: 7px 10px;
        color: var(--accent-metal);
        border: 1px solid var(--border-soft);
        border-radius: 999px;
        background: rgba(255, 255, 255, 0.03);
        font-size: 0.86rem;
    }

.hero-actions,
.contact-actions,
.project-actions,
.platform-links {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 20px;
}

    .button-primary,
    .button-secondary,
    .text-action,
    .project-actions a,
    .platform-links a {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        gap: 8px;
        min-height: 44px;
        padding: 0 16px;
        border-radius: 999px;
        text-decoration: none;
    }

.button-primary {
    color: var(--surface-black);
    background: linear-gradient(135deg, var(--accent-cyan), var(--accent-blue));
}

.button-secondary,
.project-actions a,
.platform-links a,
.text-action {
    color: var(--text-primary);
    border: 1px solid var(--border-active);
    background: rgba(255, 255, 255, 0.03);
}

.project-actions a,
.platform-links a {
    transition: color 180ms ease, border-color 180ms ease, background 180ms ease, box-shadow 180ms ease, transform 180ms ease;
}

    .project-actions a:hover,
    .platform-links a:hover {
        color: var(--surface-black);
        border-color: rgba(112, 220, 233, 0.8);
        background: linear-gradient(135deg, var(--accent-cyan), var(--accent-blue));
        box-shadow: 0 0 22px rgba(112, 220, 233, 0.2);
        transform: translateY(-1px);
    }

.hero-portrait-wrap {
    position: relative;
    display: grid;
    place-items: center;
}

.hero-portrait {
    width: min(420px, 74vw);
    height: min(420px, 74vw);
    inline-size: min(420px, 74vw);
    block-size: min(420px, 74vw);
    aspect-ratio: 1;
    display: block;
    object-fit: cover;
    border: 1px solid var(--border-active);
    border-radius: 50%;
    box-shadow: 0 0 90px rgba(120, 168, 255, 0.16);
}

.calm-section {
    background: linear-gradient(180deg, rgba(16, 20, 28, 0.4), rgba(3, 4, 6, 0));
}

.project-grid,
.skill-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
}

.capabilities-section {
    position: relative;
    overflow: clip;
}

    .capabilities-section::before {
        content: "";
        position: absolute;
        inset: 8% -10% auto auto;
        width: min(48vw, 620px);
        aspect-ratio: 1;
        border: 1px solid rgba(112, 220, 233, 0.08);
        border-radius: 50%;
        background: radial-gradient(circle, rgba(76, 155, 255, 0.08), transparent 62%);
        filter: blur(1px);
        pointer-events: none;
    }

    .capabilities-section .section-inner {
        position: relative;
    }

.project-exhibit,
.skill-group,
.music-panel {
    padding: clamp(20px, 3vw, 30px);
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-panel);
    background: var(--surface-panel);
}

.project-exhibit,
.music-panel,
.timeline-item {
    position: relative;
    overflow: hidden;
    background: linear-gradient(135deg, rgba(13, 18, 30, 0.94), rgba(7, 10, 17, 0.92)), var(--surface-panel);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
    transition: border-color 260ms ease, box-shadow 260ms ease, transform 260ms ease;
}

    .project-exhibit::before,
    .music-panel::before,
    .timeline-item::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(120deg, transparent 0 36%, rgba(112, 220, 233, 0.12) 48%, transparent 60%), radial-gradient(circle at 18% 12%, rgba(112, 220, 233, 0.1), transparent 34%);
        opacity: 0;
        transform: translateX(-26%);
        transition: opacity 280ms ease, transform 520ms var(--ease-out);
        pointer-events: none;
    }

    .project-exhibit::after,
    .music-panel::after,
    .timeline-item::after {
        content: "";
        position: absolute;
        inset: 0;
        border-radius: inherit;
        background: linear-gradient(90deg, var(--accent-cyan), rgba(80, 137, 255, 0.72), transparent) top left 30px / min(78%, 520px) 2px no-repeat, linear-gradient(rgba(112, 220, 233, 0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(112, 220, 233, 0.03) 1px, transparent 1px);
        background-size: min(78%, 520px) 2px, 34px 34px, 34px 34px;
        mask-image: linear-gradient(135deg, rgba(0, 0, 0, 0.86), transparent 78%);
        -webkit-mask-image: linear-gradient(135deg, rgba(0, 0, 0, 0.86), transparent 78%);
        pointer-events: none;
    }

    .project-exhibit > *,
    .music-panel > *,
    .timeline-item > * {
        position: relative;
        z-index: 1;
    }

    .project-exhibit:hover,
    .project-exhibit:focus-within,
    .music-panel:hover,
    .music-panel:focus-within,
    .timeline-item:hover,
    .timeline-item:focus-within {
        transform: translateY(-4px);
        border-color: rgba(112, 220, 233, 0.24);
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 20px 48px rgba(0, 0, 0, 0.26), 0 0 24px rgba(55, 137, 255, 0.08);
    }

        .project-exhibit:hover::before,
        .project-exhibit:focus-within::before,
        .music-panel:hover::before,
        .music-panel:focus-within::before,
        .timeline-item:hover::before,
        .timeline-item:focus-within::before {
            opacity: 1;
            transform: translateX(28%);
        }

.skill-group {
    position: relative;
    min-height: 188px;
    overflow: hidden;
    background: linear-gradient(135deg, rgba(13, 18, 30, 0.94), rgba(7, 10, 17, 0.92));
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.035);
    transition: border-color 260ms ease, box-shadow 260ms ease, transform 260ms ease;
}

    .skill-group::before {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(120deg, transparent 0 36%, rgba(112, 220, 233, 0.12) 48%, transparent 60%), radial-gradient(circle at 18% 12%, rgba(112, 220, 233, 0.1), transparent 34%);
        opacity: 0;
        transform: translateX(-26%);
        transition: opacity 280ms ease, transform 520ms var(--ease-out);
        pointer-events: none;
    }

    .skill-group::after {
        content: "";
        position: absolute;
        inset: 0;
        border-radius: inherit;
        background-image: linear-gradient(rgba(112, 220, 233, 0.035) 1px, transparent 1px), linear-gradient(90deg, rgba(112, 220, 233, 0.03) 1px, transparent 1px);
        background-size: 34px 34px;
        mask-image: linear-gradient(135deg, rgba(0, 0, 0, 0.8), transparent 70%);
        -webkit-mask-image: linear-gradient(135deg, rgba(0, 0, 0, 0.8), transparent 70%);
        pointer-events: none;
    }

    .skill-group:hover,
    .skill-group:focus-within {
        transform: translateY(-4px);
        border-color: rgba(112, 220, 233, 0.24);
        box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.05), 0 20px 48px rgba(0, 0, 0, 0.26), 0 0 24px rgba(55, 137, 255, 0.08);
    }

        .skill-group:hover::before,
        .skill-group:focus-within::before {
            opacity: 1;
            transform: translateX(28%);
        }

.skill-group__signal {
    position: absolute;
    top: 0;
    left: clamp(20px, 3vw, 30px);
    right: clamp(20px, 3vw, 30px);
    height: 2px;
    background: linear-gradient(90deg, var(--accent-cyan), rgba(80, 137, 255, 0.72), transparent);
    opacity: 0.72;
    transform-origin: left;
    animation: capabilitySignal 3.4s ease-in-out infinite;
    animation-delay: calc(var(--skill-index, 0) * 120ms);
}

.skill-group h3,
.skill-group ul {
    position: relative;
    z-index: 1;
}

.skill-group h3 {
    margin-bottom: 20px;
}

.project-category {
    margin: 0 0 10px;
    color: var(--accent-blue);
    font-size: 0.84rem;
}

.project-exhibit__media {
    position: relative;
    display: block;
    aspect-ratio: 16 / 9;
    margin: calc(clamp(20px, 3vw, 30px) * -1) calc(clamp(20px, 3vw, 30px) * -1) 22px;
    overflow: hidden;
    border-bottom: 1px solid rgba(112, 220, 233, 0.16);
    background: rgba(255, 255, 255, 0.035);
}

    .project-exhibit__media::after {
        content: "";
        position: absolute;
        inset: 0;
        background: linear-gradient(180deg, transparent 42%, rgba(3, 4, 6, 0.68));
        pointer-events: none;
    }

    .project-exhibit__media img {
        width: 100%;
        height: 100%;
        display: block;
        object-fit: cover;
        filter: saturate(0.92) contrast(1.04);
        transform: scale(1.01);
        transition: transform 420ms var(--ease-out), filter 420ms var(--ease-out);
    }

.project-exhibit:hover .project-exhibit__media img,
.project-exhibit:focus-within .project-exhibit__media img {
    filter: saturate(1.06) contrast(1.08);
    transform: scale(1.055);
}

.project-exhibit h3,
.music-panel h3 {
    margin-top: 0;
}

.project-exhibit p:not(.project-category),
.music-panel p:not(.music-panel__label) {
    color: var(--text-secondary);
    line-height: 1.7;
}

.tool-list,
.skill-group ul,
.timeline ul {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0;
    margin: 18px 0;
    list-style: none;
}

.skill-group__chips li,
.skill-group li {
    display: inline-flex;
    align-items: center;
    min-height: 30px;
    padding: 7px 10px;
    border: 1px solid rgba(255, 255, 255, 0.075);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.025);
    color: var(--text-secondary);
    line-height: 1;
    opacity: 0;
    transform: translateY(8px);
    animation: capabilityChipIn 540ms var(--ease-out) forwards;
    animation-delay: calc((var(--skill-index, 0) * 70ms) + (var(--chip-index, 0) * 36ms));
    transition: color 180ms ease, border-color 180ms ease, background 180ms ease, transform 180ms ease;
}

.skill-group:hover li {
    border-color: rgba(112, 220, 233, 0.18);
}

.skill-group li:hover {
    color: var(--text-primary);
    background: rgba(112, 220, 233, 0.075);
    transform: translateY(-1px);
}

.skill-group li,
.timeline li {
    color: var(--text-secondary);
}

@keyframes capabilitySignal {
    0%, 100% {
        transform: scaleX(0.18);
        opacity: 0.42;
    }

    48% {
        transform: scaleX(1);
        opacity: 0.9;
    }
}

@keyframes capabilityChipIn {
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.timeline {
    display: grid;
    gap: 18px;
}

.timeline-item {
    display: grid;
    grid-template-columns: 180px 1fr;
    gap: 24px;
    padding: 24px;
    border: 1px solid var(--border-soft);
    border-radius: var(--radius-panel);
}

.experience-sequence {
    min-height: auto;
    padding: 0;
    overflow: clip;
    background: radial-gradient(circle at 28% 18%, rgba(112, 220, 233, 0.08), transparent 28rem), radial-gradient(circle at 76% 72%, rgba(120, 168, 255, 0.06), transparent 34rem);
}

.experience-sequence__track {
    min-height: auto;
}

.experience-sequence__sticky {
    position: relative;
    top: auto;
    display: grid;
    grid-template-columns: minmax(240px, 0.74fr) 88px minmax(0, 1.26fr);
    grid-template-areas:
        "header timeline stage"
        "status timeline stage";
    gap: clamp(18px, 3.4vw, 48px);
    align-items: center;
    width: min(1180px, calc(100% - 36px));
    min-height: auto;
    max-height: none;
    margin: 0 auto;
    padding: clamp(30px, 5vh, 58px) 0;
    opacity: 1;
    transform: translate3d(0, 0, 0) scale(1);
    transition: opacity 520ms var(--ease-out), transform 650ms var(--ease-out);
}

.experience-sequence.is-enhanced .experience-sequence__track {
    min-height: max(var(--experience-track, 150vh), 100vh);
}

.experience-sequence.is-enhanced .experience-sequence__sticky {
    position: sticky;
    top: calc(var(--nav-height) + 10px);
    min-height: calc(100vh - var(--nav-height) - 20px);
    max-height: calc(100vh - var(--nav-height) - 20px);
}

.experience-sequence.is-entering .experience-sequence__sticky {
    opacity: 0.38;
    transform: translate3d(0, 18px, 0) scale(0.985);
}

.experience-sequence.is-exiting .experience-sequence__sticky {
    opacity: 0.18;
    transform: translate3d(0, -18px, 0) scale(0.965);
}

.experience-sequence__header {
    grid-area: header;
    align-self: end;
}

    .experience-sequence__header h2 {
        max-width: 520px;
    }

    .experience-sequence__header p:not(.eyebrow) {
        max-width: 460px;
    }

.experience-sequence__guide {
    display: inline-flex;
    align-items: center;
    gap: 12px;
    margin-top: 26px;
    color: var(--accent-cyan);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.12em;
    opacity: 0.78;
    transition: opacity 280ms var(--ease-out), color 280ms var(--ease-out);
}

    .experience-sequence__guide::after {
        content: "";
        width: 42px;
        height: 1px;
        background: currentColor;
        opacity: 0.58;
    }

.experience-sequence.has-advanced .experience-sequence__guide {
    opacity: 0.42;
}

.experience-sequence.is-final .experience-sequence__guide {
    color: var(--accent-blue);
    opacity: 0.8;
}

.experience-sequence__timeline {
    grid-area: timeline;
    position: relative;
    display: grid;
    justify-items: center;
    align-self: stretch;
    min-height: 420px;
    padding: 32px 0;
}

.experience-sequence__rail {
    position: absolute;
    top: 42px;
    bottom: 42px;
    width: 1px;
    background: rgba(255, 255, 255, 0.11);
}

.experience-sequence__rail-fill {
    position: absolute;
    inset: 0 0 auto;
    height: calc(var(--experience-progress, 0) * 100%);
    background: linear-gradient(180deg, var(--accent-cyan), var(--accent-blue));
    box-shadow: 0 0 22px rgba(112, 220, 233, 0.32);
    transition: height 260ms var(--ease-out);
}

.experience-sequence__nodes {
    display: flex;
    flex-direction: column;
    justify-content: space-between;
    height: 100%;
    z-index: 1;
}

.experience-progress-node {
    width: 9px;
    height: 9px;
    border: 1px solid rgba(244, 247, 251, 0.34);
    border-radius: 999px;
    background: var(--surface-black);
    transition: background 260ms var(--ease-out), border-color 260ms var(--ease-out), box-shadow 260ms var(--ease-out), transform 260ms var(--ease-out);
}

    .experience-progress-node.is-complete {
        background: rgba(112, 220, 233, 0.44);
        border-color: rgba(112, 220, 233, 0.7);
    }

    .experience-progress-node.is-active {
        transform: scale(1.72);
        background: var(--accent-cyan);
        border-color: rgba(244, 247, 251, 0.84);
        box-shadow: 0 0 22px rgba(112, 220, 233, 0.48);
    }

.experience-sequence__stage {
    grid-area: stage;
    position: relative;
    border: 1px solid rgba(120, 168, 255, 0.2);
    border-radius: var(--radius-panel);
    background: linear-gradient(90deg, rgba(112, 220, 233, 0.08), transparent 1px), linear-gradient(rgba(244, 247, 251, 0.035) 1px, transparent 1px), rgba(7, 10, 15, 0.72);
    background-size: 32px 100%, 100% 34px, auto;
    box-shadow: inset 0 0 80px rgba(120, 168, 255, 0.07), 0 24px 70px rgba(0, 0, 0, 0.26);
    overflow: visible;
}

.experience-sequence.is-enhanced .experience-sequence__stage {
    min-height: min(56vh, 560px);
    overflow: hidden;
}

.experience-sequence__stage::before {
    content: "";
    position: absolute;
    inset: 0;
    z-index: 2;
    background: linear-gradient(90deg, transparent, rgba(112, 220, 233, 0.18), transparent);
    opacity: 0;
    transform: translateX(-100%);
    pointer-events: none;
}

.experience-sequence.is-transitioning .experience-sequence__stage::before {
    animation: experienceScan 680ms var(--ease-out);
}

.experience-entry {
    display: grid;
    grid-template-columns: minmax(190px, 0.82fr) minmax(0, 1.18fr);
    gap: clamp(20px, 3vw, 38px);
    padding: clamp(22px, 4vw, 42px);
    color: var(--text-primary);
}

    .experience-entry.has-many-bullets {
        align-items: center;
        gap: clamp(16px, 2.4vw, 30px);
        padding-block: clamp(18px, 3vw, 34px);
    }

.experience-sequence.is-enhanced .experience-entry {
    position: absolute;
    inset: 0;
    opacity: 0;
    transform: translate3d(0, 18px, 0) scale(0.985);
    filter: blur(8px);
    pointer-events: none;
    transition: opacity 650ms var(--ease-out), transform 700ms var(--ease-out), filter 700ms var(--ease-out);
}

    .experience-sequence.is-enhanced .experience-entry.is-active,
    .experience-sequence.is-enhanced .experience-entry.is-entering {
        opacity: 1;
        transform: translate3d(0, 0, 0) scale(1);
        filter: blur(0);
        pointer-events: auto;
    }

    .experience-sequence.is-enhanced .experience-entry.is-exiting {
        opacity: 0;
        transform: translate3d(0, -16px, 0) scale(0.982);
        filter: blur(7px);
    }

.experience-entry__identity time {
    display: inline-flex;
    margin-bottom: 18px;
    color: var(--accent-cyan);
    font-size: 0.82rem;
    font-weight: 700;
}

.experience-entry__identity h3 {
    margin-bottom: 12px;
    font-size: clamp(2rem, 5vw, 4.6rem);
    line-height: 0.95;
}

.experience-entry__identity p {
    color: var(--text-secondary);
}

.experience-entry__current {
    display: inline-flex;
    margin: 8px 0 20px;
    padding: 6px 9px;
    color: var(--surface-black);
    border-radius: 999px;
    background: var(--accent-cyan);
    font-size: 0.76rem;
    font-weight: 700;
}

.experience-entry__summary {
    color: var(--text-primary);
    font-size: clamp(1rem, 1.7vw, 1.2rem);
}

.experience-entry.has-many-bullets .experience-entry__summary {
    margin-bottom: 12px;
    font-size: clamp(0.94rem, 1.35vw, 1.08rem);
    line-height: 1.5;
}

.experience-entry__bullets {
    display: grid;
    gap: 13px;
    padding: 0;
    margin: 24px 0;
    list-style: none;
}

.experience-entry.has-many-bullets .experience-entry__bullets {
    gap: clamp(7px, 1vh, 10px);
    margin: 14px 0;
}

.experience-entry__bullets li {
    position: relative;
    padding-left: 30px;
    color: var(--text-secondary);
    line-height: 1.52;
}

.experience-entry.has-many-bullets .experience-entry__bullets li {
    font-size: clamp(0.82rem, 0.9vw, 0.95rem);
    line-height: 1.42;
}

.experience-entry__bullets li::before {
    content: "";
    position: absolute;
    top: 0.72em;
    left: 2px;
    width: 10px;
    height: 1px;
    background: var(--accent-blue);
}

.experience-entry__technologies {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    padding: 0;
    margin: 20px 0 0;
    list-style: none;
}

.experience-entry.has-many-bullets .experience-entry__technologies {
    gap: 6px;
    margin-top: 14px;
}

.experience-entry__technologies li {
    padding: 6px 9px;
    color: var(--accent-metal);
    border: 1px solid var(--border-soft);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.03);
    font-size: 0.78rem;
}

.experience-sequence__status {
    grid-area: status;
    align-self: start;
    display: flex;
    align-items: center;
    gap: 16px;
}

.experience-sequence__counter {
    color: var(--text-primary);
    font-size: 0.86rem;
    font-weight: 700;
}

.experience-sequence__dots {
    display: flex;
    gap: 8px;
}

@keyframes experienceScan {
    0% {
        opacity: 0;
        transform: translateX(-100%);
    }

    36% {
        opacity: 0.88;
    }

    100% {
        opacity: 0;
        transform: translateX(100%);
    }
}

.builder-section,
.contact-section {
    background: radial-gradient(circle at 50% 30%, rgba(112, 220, 233, 0.08), transparent 32rem), linear-gradient(180deg, rgba(120, 168, 255, 0.04), transparent);
}

.music-layout {
    display: grid;
    grid-template-columns: minmax(0, .9fr) minmax(280px, .7fr);
    gap: 28px;
    align-items: center;
}

.music-brand-title {
    margin: 0 0 18px;
    color: var(--text-primary);
    font-family: "Gtek Technology", Orbitron, "Arial Black", sans-serif;
    font-size: clamp(4.2rem, 9vw, 9rem);
    font-weight: 400;
    line-height: 0.82;
    letter-spacing: 0.02em;
    text-transform: uppercase;
    text-shadow: 0 0 18px rgba(112, 220, 233, 0.14), 0 0 44px rgba(80, 137, 255, 0.1);
}

.music-brand-subtitle {
    max-width: 18ch;
    margin: 0 0 22px;
    color: var(--text-primary);
    font-size: clamp(1.6rem, 3vw, 3rem);
    font-weight: 650;
    line-height: 1.02;
}

.music-panel {
    min-height: 232px;
    align-self: stretch;
}

.music-panel__label {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    margin: 0 0 14px;
    color: var(--accent-cyan);
    font-size: 0.72rem;
    font-weight: 800;
    letter-spacing: 0.16em;
    text-transform: uppercase;
}

    .music-panel__label::before {
        content: "";
        width: 8px;
        height: 8px;
        border-radius: 50%;
        background: var(--accent-cyan);
        box-shadow: 0 0 18px rgba(112, 220, 233, 0.58);
    }

.music-panel audio {
    width: 100%;
    margin: 8px 0 18px;
    filter: invert(0.92) hue-rotate(165deg) saturate(0.72);
}

.music-panel__embed {
    position: relative;
    aspect-ratio: 16 / 9;
    margin: 18px 0 20px;
    overflow: hidden;
    border: 1px solid rgba(112, 220, 233, 0.2);
    border-radius: calc(var(--radius-panel) - 2px);
    background: rgba(0, 0, 0, 0.28);
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.04), 0 16px 38px rgba(0, 0, 0, 0.22);
}

    .music-panel__embed iframe {
        width: 100%;
        height: 100%;
        display: block;
        border: 0;
    }

.music-panel__artwork {
    width: 100%;
    aspect-ratio: 16 / 9;
    display: block;
    margin: 18px 0 20px;
    object-fit: cover;
    border: 1px solid rgba(112, 220, 233, 0.2);
    border-radius: calc(var(--radius-panel) - 2px);
}

.platform-links {
    margin-top: 20px;
}

    .platform-links a i {
        font-size: 1rem;
    }

/* =========================================================
   CHATBOT LAUNCH BUTTON
   ========================================================= */
.chatbot-launch {
    position: fixed;
    right: 22px;
    bottom: 104px;
    z-index: var(--z-cog);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 9px;
    min-height: 44px;
    padding: 0 16px;
    color: var(--text-primary);
    border: 1px solid rgba(112, 220, 233, 0.42);
    border-radius: 999px;
    background: linear-gradient( 135deg, rgba(8, 12, 18, 0.96), rgba(9, 20, 28, 0.92) );
    box-shadow: 0 0 0 1px rgba(112, 220, 233, 0.05), 0 10px 30px rgba(0, 0, 0, 0.42), 0 0 22px rgba(112, 220, 233, 0.12);
    font-size: 0.82rem;
    font-weight: 700;
    letter-spacing: 0.01em;
    cursor: pointer;
    backdrop-filter: blur(16px);
    -webkit-backdrop-filter: blur(16px);
    transition: transform 220ms var(--ease-out), border-color 220ms ease, box-shadow 220ms ease, background 220ms ease;
}

    .chatbot-launch::before {
        content: "";
        width: 8px;
        height: 8px;
        border-radius: 999px;
        background: var(--accent-cyan);
        box-shadow: 0 0 8px rgba(112, 220, 233, 0.9), 0 0 18px rgba(112, 220, 233, 0.5);
    }

    .chatbot-launch:hover {
        transform: translateY(-2px);
        border-color: rgba(112, 220, 233, 0.72);
        background: linear-gradient( 135deg, rgba(12, 18, 26, 0.98), rgba(10, 29, 39, 0.95) );
        box-shadow: 0 0 0 1px rgba(112, 220, 233, 0.08), 0 14px 34px rgba(0, 0, 0, 0.48), 0 0 30px rgba(112, 220, 233, 0.2);
    }

    .chatbot-launch:active {
        transform: translateY(0) scale(0.98);
    }

    .chatbot-launch:focus-visible {
        outline: 2px solid var(--accent-cyan);
        outline-offset: 4px;
    }


/* =========================================================
   CHATBOT DRAWER
   ========================================================= */

.chatbot-drawer {
    position: fixed;
    inset: 0;
    z-index: var(--z-drawer);
    display: grid;
    justify-items: end;
    background: linear-gradient( 90deg, rgba(0, 0, 0, 0.12), rgba(0, 0, 0, 0.28) );
    backdrop-filter: none;
    -webkit-backdrop-filter: none;
}

    .chatbot-drawer[hidden] {
        display: none;
    }


/* =========================================================
   CHATBOT PANEL
   ========================================================= */

.chatbot-panel {
    position: relative;
    width: min(440px, 100%);
    min-height: 100%;
    padding: 30px 28px 34px;
    overflow-y: auto;
    color: var(--text-primary);
    border-left: 1px solid rgba(112, 220, 233, 0.28);
    background: radial-gradient( circle at 16% 8%, rgba(112, 220, 233, 0.09), transparent 30% ), radial-gradient( circle at 100% 42%, rgba(99, 102, 241, 0.08), transparent 34% ), linear-gradient( 180deg, rgba(6, 10, 16, 0.985), rgba(3, 5, 9, 0.995) );
    box-shadow: -28px 0 80px rgba(0, 0, 0, 0.58), -2px 0 24px rgba(112, 220, 233, 0.09), inset 1px 0 0 rgba(255, 255, 255, 0.025);
    animation: chatbot-panel-enter 360ms var(--ease-out) both;
}

    .chatbot-panel::before {
        content: "";
        position: absolute;
        inset: 0;
        pointer-events: none;
        background: linear-gradient( rgba(255, 255, 255, 0.018) 1px, transparent 1px ), linear-gradient( 90deg, rgba(255, 255, 255, 0.018) 1px, transparent 1px );
        background-size: 36px 36px;
        mask-image: linear-gradient( to bottom, rgba(0, 0, 0, 0.8), transparent 65% );
    }

    .chatbot-panel > * {
        position: relative;
        z-index: 1;
    }

    .chatbot-panel h2 {
        max-width: 7ch;
        margin: 0;
        color: var(--text-primary);
        font-size: clamp(2.8rem, 5vw, 4.25rem);
        font-weight: 650;
        line-height: 0.95;
        letter-spacing: -0.055em;
        text-wrap: balance;
        text-shadow: 0 0 20px rgba(112, 220, 233, 0.08);
    }

    .chatbot-panel > p {
        max-width: 34ch;
        margin: 18px 0 0;
        color: var(--text-secondary);
        font-size: 0.92rem;
        line-height: 1.7;
    }


/* =========================================================
   CLOSE BUTTON
   ========================================================= */

.drawer-close {
    position: absolute;
    top: 22px;
    right: 22px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 68px;
    min-height: 34px;
    padding: 0 12px;
    color: var(--text-secondary);
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.025);
    font-size: 0.76rem;
    font-weight: 700;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    cursor: pointer;
    transition: color 200ms ease, border-color 200ms ease, background 200ms ease, box-shadow 200ms ease;
}

    .drawer-close:hover {
        color: var(--text-primary);
        border-color: rgba(112, 220, 233, 0.42);
        background: rgba(112, 220, 233, 0.06);
        box-shadow: 0 0 18px rgba(112, 220, 233, 0.1);
    }

    .drawer-close:focus-visible {
        outline: 2px solid var(--accent-cyan);
        outline-offset: 3px;
    }


/* =========================================================
   CHAT LOG
   ========================================================= */

.chat-log {
    display: flex;
    flex-direction: column;
    gap: 14px;
    min-height: 260px;
    max-height: min(48vh, 470px);
    overflow-y: auto;
    overflow-x: hidden;
    margin: 24px 0 20px;
    padding: 16px;
    border: 1px solid rgba(255, 255, 255, 0.08);
    border-radius: 18px;
    background: linear-gradient( 180deg, rgba(1, 4, 8, 0.8), rgba(5, 9, 14, 0.72) );
    box-shadow: inset 0 0 0 1px rgba(112, 220, 233, 0.02), inset 0 18px 40px rgba(0, 0, 0, 0.28), 0 18px 44px rgba(0, 0, 0, 0.28);
    scrollbar-width: thin;
    scrollbar-color: rgba(112, 220, 233, 0.42) rgba(255, 255, 255, 0.03);
}

    .chat-log::-webkit-scrollbar {
        width: 8px;
    }

    .chat-log::-webkit-scrollbar-track {
        background: rgba(255, 255, 255, 0.025);
    }

    .chat-log::-webkit-scrollbar-thumb {
        border: 2px solid transparent;
        border-radius: 999px;
        background: rgba(112, 220, 233, 0.38);
        background-clip: padding-box;
    }

    .chat-log:empty::before {
        content: "Ask about experience, projects, technologies, production systems, or availability.";
        display: block;
        max-width: 28ch;
        margin: auto;
        color: rgba(255, 255, 255, 0.38);
        font-size: 0.84rem;
        line-height: 1.65;
        text-align: center;
    }


/* =========================================================
   CHAT MESSAGE BUBBLES
   These classes should be added by your chatbot JavaScript:
   .chat-message
   .chat-message--user
   .chat-message--bot
   ========================================================= */

.chat-message {
    position: relative;
    width: fit-content;
    max-width: 88%;
    padding: 12px 14px;
    border-radius: 16px;
    font-size: 0.9rem;
    line-height: 1.65;
    animation: chatbot-message-enter 260ms var(--ease-out) both;
}

    .chat-message strong {
        display: block;
        margin-bottom: 5px;
        font-size: 0.68rem;
        font-weight: 800;
        letter-spacing: 0.11em;
        text-transform: uppercase;
    }

.chat-message--user {
    align-self: flex-end;
    color: rgba(245, 252, 255, 0.98);
    border: 1px solid rgba(104, 181, 255, 0.36);
    border-bottom-right-radius: 5px;
    background: linear-gradient( 135deg, rgba(47, 116, 172, 0.34), rgba(26, 64, 104, 0.44) );
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3), 0 0 18px rgba(77, 160, 255, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.06);
}

    .chat-message--user strong {
        color: rgba(151, 208, 255, 0.92);
    }

.chat-message--bot {
    align-self: flex-start;
    color: rgba(239, 253, 255, 0.96);
    border: 1px solid rgba(112, 220, 233, 0.32);
    border-bottom-left-radius: 5px;
    background: linear-gradient( 135deg, rgba(18, 55, 64, 0.5), rgba(8, 29, 36, 0.58) );
    box-shadow: 0 8px 24px rgba(0, 0, 0, 0.34), 0 0 20px rgba(112, 220, 233, 0.13), inset 0 1px 0 rgba(255, 255, 255, 0.055);
}

    .chat-message--bot::before {
        content: "";
        position: absolute;
        top: 14px;
        left: -5px;
        width: 8px;
        height: 8px;
        border-radius: 999px;
        background: var(--accent-cyan);
        box-shadow: 0 0 8px rgba(112, 220, 233, 0.92), 0 0 16px rgba(112, 220, 233, 0.48);
    }

    .chat-message--bot strong {
        color: var(--accent-cyan);
        text-shadow: 0 0 10px rgba(112, 220, 233, 0.34);
    }


/* =========================================================
   FALLBACK SUPPORT FOR CURRENT PLAIN-TEXT CHAT OUTPUT
   ========================================================= */

.chat-log {
    color: rgba(235, 243, 247, 0.88);
    font-size: 0.9rem;
    line-height: 1.75;
    white-space: pre-wrap;
}

    .chat-log .user-message,
    .chat-log .bot-message {
        display: block;
        width: fit-content;
        max-width: 88%;
        margin-bottom: 14px;
        padding: 12px 14px;
        border-radius: 16px;
    }

    .chat-log .user-message {
        margin-left: auto;
        color: rgba(245, 252, 255, 0.98);
        border: 1px solid rgba(104, 181, 255, 0.36);
        border-bottom-right-radius: 5px;
        background: linear-gradient( 135deg, rgba(47, 116, 172, 0.34), rgba(26, 64, 104, 0.44) );
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.3), 0 0 18px rgba(77, 160, 255, 0.12);
    }

    .chat-log .bot-message {
        margin-right: auto;
        color: rgba(239, 253, 255, 0.96);
        border: 1px solid rgba(112, 220, 233, 0.32);
        border-bottom-left-radius: 5px;
        background: linear-gradient( 135deg, rgba(18, 55, 64, 0.5), rgba(8, 29, 36, 0.58) );
        box-shadow: 0 8px 24px rgba(0, 0, 0, 0.34), 0 0 20px rgba(112, 220, 233, 0.13);
    }


/* =========================================================
   CHATBOT FORM
   ========================================================= */

.chatbot-panel form {
    display: grid;
    gap: 10px;
}

.chatbot-panel label {
    color: var(--text-primary);
    font-size: 0.76rem;
    font-weight: 800;
    letter-spacing: 0.09em;
    text-transform: uppercase;
}

.chatbot-panel textarea {
    width: 100%;
    min-height: 94px;
    margin: 0;
    padding: 14px 15px;
    color: var(--text-primary);
    caret-color: var(--accent-cyan);
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 14px;
    background: linear-gradient( 180deg, rgba(1, 3, 7, 0.94), rgba(4, 8, 13, 0.94) );
    box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.025), inset 0 10px 24px rgba(0, 0, 0, 0.24);
    font: inherit;
    font-size: 0.9rem;
    line-height: 1.55;
    resize: vertical;
    transition: border-color 200ms ease, box-shadow 200ms ease, background 200ms ease;
}

    .chatbot-panel textarea::placeholder {
        color: rgba(255, 255, 255, 0.28);
    }

    .chatbot-panel textarea:hover {
        border-color: rgba(112, 220, 233, 0.22);
    }

    .chatbot-panel textarea:focus {
        outline: none;
        border-color: rgba(112, 220, 233, 0.62);
        background: linear-gradient( 180deg, rgba(2, 7, 11, 0.98), rgba(5, 13, 18, 0.98) );
        box-shadow: 0 0 0 3px rgba(112, 220, 233, 0.08), 0 0 24px rgba(112, 220, 233, 0.12), inset 0 1px 0 rgba(255, 255, 255, 0.035);
    }


/* =========================================================
   SEND BUTTON
   ========================================================= */

.chatbot-panel .button-primary {
    justify-self: start;
    min-height: 42px;
    padding: 0 18px;
    color: #031015;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 999px;
    background: linear-gradient( 135deg, var(--accent-cyan), var(--accent-blue) );
    box-shadow: 0 8px 20px rgba(0, 0, 0, 0.32), 0 0 20px rgba(112, 220, 233, 0.18);
    font-size: 0.8rem;
    font-weight: 800;
    letter-spacing: 0.02em;
    cursor: pointer;
    transition: transform 200ms var(--ease-out), box-shadow 200ms ease, filter 200ms ease;
}

    .chatbot-panel .button-primary:hover {
        transform: translateY(-2px);
        filter: brightness(1.08);
        box-shadow: 0 12px 28px rgba(0, 0, 0, 0.38), 0 0 28px rgba(112, 220, 233, 0.28);
    }

    .chatbot-panel .button-primary:active {
        transform: translateY(0) scale(0.98);
    }

    .chatbot-panel .button-primary:focus-visible {
        outline: 2px solid var(--text-primary);
        outline-offset: 3px;
    }


/* =========================================================
   CHATBOT ANIMATIONS
   ========================================================= */

@keyframes chatbot-panel-enter {
    from {
        opacity: 0;
        transform: translateX(34px);
        filter: blur(8px);
    }

    to {
        opacity: 1;
        transform: translateX(0);
        filter: blur(0);
    }
}

@keyframes chatbot-message-enter {
    from {
        opacity: 0;
        transform: translateY(8px) scale(0.985);
        filter: blur(4px);
    }

    to {
        opacity: 1;
        transform: translateY(0) scale(1);
        filter: blur(0);
    }
}


/* =========================================================
   TABLET / MOBILE
   ========================================================= */

@media (max-width: 700px) {
    .chatbot-launch {
        right: 14px;
        bottom: 84px;
        min-height: 42px;
        padding-inline: 14px;
    }

    .chatbot-panel {
        width: 100%;
        padding: 24px 18px 28px;
    }

        .chatbot-panel h2 {
            max-width: 8ch;
            font-size: clamp(2.7rem, 14vw, 4rem);
        }

    .drawer-close {
        top: 16px;
        right: 16px;
    }

    .chat-log {
        min-height: 240px;
        max-height: 46vh;
        padding: 13px;
    }

        .chat-message,
        .chat-log .user-message,
        .chat-log .bot-message {
            max-width: 94%;
        }
}

/* =========================================================
   SHORT LAPTOP SCREENS
   ========================================================= */

@media (min-width: 901px) and (max-height: 850px) {
    .experience-sequence {
        overflow: visible;
    }

        .experience-sequence.is-enhanced .experience-sequence__sticky {
            top: calc(var(--nav-height) + 4px);
            min-height: calc(100vh - var(--nav-height) - 8px);
            max-height: calc(100vh - var(--nav-height) - 8px);
            padding-block: 16px 10px;
        }

    /* Move only the large experience card farther upward. */
    .experience-sequence__stage {
        transform: translateY(-88px);
    }

    .experience-sequence.is-enhanced .experience-sequence__stage {
        min-height: min(64vh, 590px);
    }

    /* Keep the left heading away from the navigation bar. */
    .experience-sequence__header {
        transform: translateY(22px);
    }

    .experience-sequence__status {
        transform: translateY(22px);
    }

    /* Compact timeline so every node remains visible at once. */
    .experience-sequence__timeline {
        align-self: center;
        min-height: 0;
        height: 230px;
        padding: 0;
        overflow: visible;
        transform: translateY(-2px);
    }

    .experience-sequence__rail,
    .experience-sequence__nodes {
        position: absolute;
        top: 8px;
        bottom: 8px;
    }

    .experience-sequence__rail {
        width: 1px;
    }

    .experience-sequence__nodes {
        height: auto;
        display: flex;
        flex-direction: column;
        justify-content: space-between;
        overflow: visible;
    }

    .experience-progress-node {
        flex: 0 0 auto;
        width: 6px;
        height: 6px;
    }

        .experience-progress-node.is-active {
            transform: scale(1.35);
        }

    .experience-entry {
        padding: clamp(18px, 2.2vw, 30px);
    }

    .experience-entry__identity h3 {
        font-size: clamp(1.65rem, 2.5vw, 2.8rem);
    }

    .experience-entry__bullets {
        margin-block: 12px;
    }

    .experience-entry__technologies {
        margin-top: 12px;
    }
}


/* =========================================================
   REDUCED MOTION
   ========================================================= */

@media (prefers-reduced-motion: reduce) {
    .chatbot-panel,
    .chat-message {
        animation: none;
    }

        .chatbot-launch,
        .drawer-close,
        .chatbot-panel textarea,
        .chatbot-panel .button-primary {
            transition: none;
        }
}

.drawer-close {
    float: right;
}

.system-cog {
    position: fixed;
    display: grid;
    place-items: center;
    right: 20px;
    bottom: 20px;
    z-index: var(--z-cog);
    width: 72px;
    height: 72px;
    padding: 0;
    color: var(--accent-metal);
    background: rgba(3, 4, 6, 0.72);
    border: 1px solid var(--border-active);
    border-radius: 50%;
    cursor: pointer;
    box-shadow: 0 0 0 1px rgba(112, 220, 233, 0.05), 0 12px 34px rgba(0, 0, 0, 0.36);
}

    .system-cog svg {
        position: absolute;
        inset: 0;
        width: 100%;
        height: 100%;
        pointer-events: none;
    }

.cog-progress-track,
.cog-progress {
    fill: none;
    stroke-width: 3;
}

.cog-progress-track {
    stroke: rgba(255, 255, 255, 0.12);
}

.cog-progress {
    stroke: var(--accent-cyan);
    stroke-linecap: round;
    transform: rotate(-90deg);
    transform-origin: 50% 50%;
}

.cog-gear {
    display: block;
    color: var(--accent-metal);
    font-size: 34px;
    line-height: 1;
    transform-origin: center;
    animation: cogRotate 36s linear infinite;
    filter: drop-shadow(0 0 10px rgba(112, 220, 233, 0.2));
}

@keyframes cogRotate {
    to {
        transform: rotate(360deg);
    }
}

@keyframes heroCogRotate {
    to {
        transform: rotate(360deg);
    }
}
