:root {
    --bg: #050713;
    --bg2: #090b1e;
    --ink: #f7fbff;
    --muted: #95a5c0;
    --soft: #63708b;
    --cyan: #00f5ff;
    --blue: #2d7dff;
    --violet: #8a5cff;
    --pink: #ff3df2;
    --green: #00ffbf;
    --orange: #ffb84d;
    --red: #ff3f68;
    --line: rgba(255, 255, 255, .13);
    --line2: rgba(0, 245, 255, .25);
    --glass: rgba(255, 255, 255, .065);
    --glass2: rgba(255, 255, 255, .035);
    --shadow: 0 34px 120px rgba(0, 0, 0, .48);
    --font: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
    --ease: cubic-bezier(.2, .85, .2, 1);
    --radius: 30px;
}

* {
    box-sizing: border-box
}

html {
    scroll-behavior: smooth
}

body {
    margin: 0;
    min-height: 100vh;
    background: var(--bg);
    color: var(--ink);
    font-family: var(--font);
    overflow-x: hidden;
    -webkit-font-smoothing: antialiased;
    text-rendering: optimizeLegibility
}

body.menu-open {
    overflow: hidden
}

a {
    color: inherit
}

button,
input,
textarea {
    font: inherit
}

::selection {
    background: rgba(0, 245, 255, .28);
    color: #fff
}

::-webkit-scrollbar {
    width: 7px
}

::-webkit-scrollbar-track {
    background: #050713
}

::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: linear-gradient(180deg, var(--cyan), var(--violet), var(--pink))
}

#neuralBg {
    position: fixed;
    inset: 0;
    z-index: -5;
    width: 100%;
    height: 100%;
    pointer-events: none
}

.aurora {
    position: fixed;
    inset: -20%;
    z-index: -4;
    pointer-events: none;
    background: radial-gradient(circle at 18% 18%, rgba(0, 245, 255, .26), transparent 28%), radial-gradient(circle at 82% 15%, rgba(255, 61, 242, .23), transparent 30%), radial-gradient(circle at 55% 85%, rgba(0, 255, 191, .16), transparent 34%), linear-gradient(180deg, #050713, #08091c 48%, #03040b);
    filter: saturate(1.1)
}

.aurora:before {
    content: "";
    position: absolute;
    inset: 0;
    background: conic-gradient(from 180deg at 50% 50%, transparent, rgba(0, 245, 255, .13), transparent, rgba(255, 61, 242, .12), transparent);
    animation: spin 18s linear infinite;
    mix-blend-mode: screen
}

.grid-noise {
    position: fixed;
    inset: 0;
    z-index: -2;
    pointer-events: none;
    background: linear-gradient(rgba(255, 255, 255, .035) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .028) 1px, transparent 1px), url("data:image/svg+xml,%3Csvg viewBox='0 0 220 220' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E");
    background-size: 78px 78px, 78px 78px, 220px 220px;
    mask-image: linear-gradient(180deg, transparent, #000 12%, #000 86%, transparent);
    opacity: .45
}

.cursor-orb {
    position: fixed;
    left: 0;
    top: 0;
    z-index: 5000;
    width: 420px;
    height: 420px;
    border-radius: 999px;
    pointer-events: none;
    background: radial-gradient(circle, rgba(0, 245, 255, .18), rgba(138, 92, 255, .09) 38%, rgba(255, 61, 242, .05) 55%, transparent 70%);
    transform: translate3d(-50%, -50%, 0);
    mix-blend-mode: screen;
    opacity: .88;
    will-change: transform
}

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

.shell {
    width: min(1180px, calc(100% - 40px));
    margin-inline: auto
}

.section {
    position: relative;
    padding: 112px 0
}

.section-head {
    display: grid;
    grid-template-columns: minmax(0, .85fr) minmax(260px, .5fr);
    gap: 34px;
    align-items: end;
    margin-bottom: 42px
}

.section-head.compact {
    display: block;
    margin: 0
}

.kicker,
.eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    color: #8ff8ff;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .25em;
    text-transform: uppercase
}

.eyebrow span {
    width: 9px;
    height: 9px;
    border-radius: 999px;
    background: var(--green);
    box-shadow: 0 0 20px var(--green)
}

h1,
h2,
h3,
p {
    margin-top: 0
}

.section-head h2,
.game-copy h2 {
    margin: .55rem 0 0;
    font-size: clamp(34px, 5vw, 68px);
    line-height: .98;
    letter-spacing: -.06em
}

.section-head p,
.section-copy {
    margin: 0;
    color: var(--muted);
    font-size: 16px;
    line-height: 1.85
}

.reveal {
    opacity: 0;
    transform: translateY(28px) scale(.985);
    filter: blur(8px);
    transition: opacity .75s var(--ease), transform .75s var(--ease), filter .75s var(--ease)
}

.reveal.is-visible {
    opacity: 1;
    transform: none;
    filter: none
}

.magnetic {
    transition: transform .12s ease
}

.btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 0 22px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 999px;
    text-decoration: none;
    color: #fff;
    cursor: pointer;
    overflow: hidden;
    isolation: isolate
}

.btn:before {
    content: "";
    position: absolute;
    inset: -2px;
    background: linear-gradient(120deg, transparent, rgba(255, 255, 255, .5), transparent);
    transform: translateX(-120%) skewX(-18deg);
    transition: transform .65s var(--ease);
    z-index: -1
}

.btn:hover:before {
    transform: translateX(120%) skewX(-18deg)
}

.btn.primary {
    border-color: rgba(0, 245, 255, .5);
    background: linear-gradient(135deg, rgba(0, 245, 255, .95), rgba(138, 92, 255, .95) 55%, rgba(255, 61, 242, .9));
    box-shadow: 0 18px 48px rgba(0, 245, 255, .22), inset 0 1px rgba(255, 255, 255, .35);
    font-weight: 900
}

.btn.ghost {
    background: rgba(255, 255, 255, .045);
    backdrop-filter: blur(18px);
    box-shadow: inset 0 1px rgba(255, 255, 255, .13)
}

.nav {
    position: fixed;
    top: 16px;
    left: 50%;
    z-index: 1000;
    width: min(1180px, calc(100% - 34px));
    height: 68px;
    display: grid;
    grid-template-columns: auto 1fr auto;
    align-items: center;
    gap: 22px;
    padding: 0 12px 0 18px;
    border: 1px solid rgba(255, 255, 255, .11);
    border-radius: 24px;
    background: rgba(5, 7, 19, .48);
    box-shadow: 0 24px 80px rgba(0, 0, 0, .36);
    backdrop-filter: blur(24px);
    transform: translateX(-50%);
    transition: .28s ease
}

.nav.scrolled {
    top: 9px;
    border-color: rgba(0, 245, 255, .28);
    background: rgba(5, 7, 19, .78)
}

.brand {
    display: flex;
    align-items: center;
    gap: 12px;
    text-decoration: none;
    min-width: max-content
}

.brand-mark {
    width: 40px;
    height: 40px;
    border-radius: 15px;
    background: radial-gradient(circle at 25% 20%, #fff, transparent 20%), linear-gradient(135deg, var(--cyan), var(--violet), var(--pink));
    box-shadow: 0 0 30px rgba(0, 245, 255, .34);
    position: relative
}

.brand-mark:after {
    content: "";
    position: absolute;
    inset: 10px;
    border: 2px solid rgba(5, 7, 19, .75);
    border-radius: 50%;
    border-top-color: transparent;
    animation: spin 3.8s linear infinite
}

.brand strong {
    display: block;
    font-size: 15px;
    letter-spacing: .03em
}

.brand em {
    display: block;
    margin-top: 2px;
    color: var(--muted);
    font-size: 10px;
    font-style: normal;
    letter-spacing: .18em;
    text-transform: uppercase
}

.nav-links {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 4px
}

.nav-links a {
    padding: 12px 14px;
    border-radius: 999px;
    color: #bfcae2;
    text-decoration: none;
    font-size: 14px;
    transition: .22s ease
}

.nav-links a:hover,
.nav-links a.active {
    color: #fff;
    background: rgba(255, 255, 255, .07);
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .08)
}

.nav-cta {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    height: 44px;
    padding: 0 18px;
    border-radius: 999px;
    color: #031018;
    text-decoration: none;
    font-weight: 900;
    background: linear-gradient(135deg, var(--green), var(--cyan));
    box-shadow: 0 14px 34px rgba(0, 255, 191, .2)
}

.nav-toggle {
    display: none;
    width: 46px;
    height: 46px;
    border: 0;
    border-radius: 16px;
    background: rgba(255, 255, 255, .08);
    color: #fff;
    cursor: pointer
}

.nav-toggle span {
    display: block;
    width: 20px;
    height: 2px;
    margin: 5px auto;
    border-radius: 99px;
    background: #fff;
    transition: .2s ease
}

.nav-toggle.active span:nth-child(1) {
    transform: translateY(7px) rotate(45deg)
}

.nav-toggle.active span:nth-child(2) {
    opacity: 0
}

.nav-toggle.active span:nth-child(3) {
    transform: translateY(-7px) rotate(-45deg)
}

.hero {
    min-height: 100vh;
    display: grid;
    place-items: center;
    padding-top: 135px;
    overflow: hidden
}

.hero-grid {
    display: grid;
    grid-template-columns: minmax(0, .92fr) minmax(360px, .75fr);
    gap: 52px;
    align-items: center
}

.hero-copy h1 {
    margin: 18px 0 22px;
    font-size: clamp(54px, 8.8vw, 112px);
    line-height: .88;
    letter-spacing: -.075em
}

.hero-copy h1 strong {
    display: inline-block;
    color: transparent;
    background: linear-gradient(100deg, #fff 5%, #8ff8ff 28%, #b49bff 58%, #ff83f7 86%);
    -webkit-background-clip: text;
    background-clip: text;
    text-shadow: 0 0 44px rgba(0, 245, 255, .14)
}

.hero-copy p {
    max-width: 650px;
    color: #a9b8d5;
    font-size: 18px;
    line-height: 1.86
}

.hero-actions {
    display: flex;
    gap: 14px;
    flex-wrap: wrap;
    margin-top: 28px
}

.metric-strip {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    max-width: 620px;
    margin-top: 36px
}

.metric-strip div {
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 22px;
    background: rgba(255, 255, 255, .045);
    box-shadow: inset 0 1px rgba(255, 255, 255, .08);
    backdrop-filter: blur(18px)
}

.metric-strip strong {
    display: block;
    font-size: 32px;
    line-height: 1;
    color: #fff
}

.metric-strip strong:after {
    content: "+";
    color: var(--cyan)
}

.metric-strip span {
    display: block;
    margin-top: 8px;
    color: var(--muted);
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .14em
}

.hero-stage {
    perspective: 1200px
}

.holo-card {
    position: relative;
    min-height: 560px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 40px;
    background: linear-gradient(160deg, rgba(255, 255, 255, .13), rgba(255, 255, 255, .035));
    box-shadow: var(--shadow), 0 0 90px rgba(0, 245, 255, .16);
    overflow: hidden;
    transform-style: preserve-3d
}

.holo-card picture,
.holo-card img {
    display: block;
    width: 100%;
    height: 100%;
    min-height: 560px
}

.holo-card img {
    object-fit: cover;
    filter: saturate(1.15) contrast(1.04) brightness(.92)
}

.holo-card:before {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at var(--mx, 45%) var(--my, 35%), rgba(255, 255, 255, .42), transparent 23%), linear-gradient(120deg, rgba(0, 245, 255, .33), transparent 28%, transparent 62%, rgba(255, 61, 242, .28));
    mix-blend-mode: screen;
    pointer-events: none
}

.holo-card:after {
    content: "";
    position: absolute;
    inset: 0;
    background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .08) 0 1px, transparent 1px 7px);
    opacity: .22;
    pointer-events: none
}

.scan-beam {
    position: absolute;
    inset: auto -20% 20% -20%;
    height: 34%;
    background: linear-gradient(180deg, transparent, rgba(0, 245, 255, .18), transparent);
    filter: blur(10px);
    animation: scan 4s ease-in-out infinite
}

.hud {
    position: absolute;
    z-index: 2;
    padding: 13px 15px;
    border: 1px solid rgba(0, 245, 255, .28);
    border-radius: 18px;
    background: rgba(5, 10, 24, .7);
    box-shadow: 0 18px 60px rgba(0, 0, 0, .38);
    backdrop-filter: blur(16px)
}

.hud span {
    display: block;
    color: #8aa0c2;
    font-size: 10px;
    letter-spacing: .2em
}

.hud strong {
    display: block;
    margin-top: 4px;
    color: #dffcff;
    font-size: 12px
}

.hud-a {
    left: 22px;
    bottom: 26px
}

.hud-b {
    right: 18px;
    top: 24px
}

.hud-c {
    right: 28px;
    bottom: 110px
}

@keyframes scan {

    0%,
    100% {
        transform: translateY(-120%)
    }

    50% {
        transform: translateY(120%)
    }
}

.hero-orbit {
    position: absolute;
    inset: 0;
    pointer-events: none
}

.hero-orbit span {
    position: absolute;
    border: 1px solid rgba(0, 245, 255, .18);
    border-radius: 50%;
    filter: blur(.2px);
    animation: spin 22s linear infinite
}

.hero-orbit span:nth-child(1) {
    width: 560px;
    height: 560px;
    right: -160px;
    top: 11%;
    border-left-color: rgba(255, 61, 242, .5)
}

.hero-orbit span:nth-child(2) {
    width: 280px;
    height: 280px;
    left: 4%;
    bottom: 10%;
    animation-direction: reverse;
    border-top-color: rgba(0, 255, 191, .45)
}

.hero-orbit span:nth-child(3) {
    width: 760px;
    height: 760px;
    left: 35%;
    top: -30%;
    animation-duration: 34s;
    border-bottom-color: rgba(138, 92, 255, .38)
}

.lab-grid {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 18px
}

.lab-card,
.timeline-item,
.member-card,
.game-card,
.join-card,
.signal-grid {
    border: 1px solid rgba(255, 255, 255, .11);
    background: linear-gradient(160deg, rgba(255, 255, 255, .082), rgba(255, 255, 255, .03));
    box-shadow: 0 28px 90px rgba(0, 0, 0, .32);
    backdrop-filter: blur(18px)
}

.lab-card {
    position: relative;
    min-height: 300px;
    padding: 24px;
    border-radius: 30px;
    overflow: hidden;
    transition: .35s var(--ease)
}

.lab-card:before {
    content: "";
    position: absolute;
    inset: -1px;
    background: radial-gradient(circle at 25% 18%, rgba(0, 245, 255, .19), transparent 34%), linear-gradient(135deg, transparent, rgba(255, 61, 242, .08));
    opacity: 0;
    transition: .35s ease
}

.lab-card:hover {
    transform: translateY(-8px);
    border-color: rgba(0, 245, 255, .34)
}

.lab-card:hover:before {
    opacity: 1
}

.lab-card i {
    position: relative;
    color: rgba(255, 255, 255, .28);
    font-style: normal;
    font-size: 13px;
    letter-spacing: .22em
}

.lab-card h3 {
    position: relative;
    margin: 42px 0 14px;
    font-size: 24px;
    letter-spacing: -.035em
}

.lab-card p {
    position: relative;
    color: #9cadc9;
    line-height: 1.72
}

.lab-card div {
    position: relative;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    margin-top: 24px
}

.lab-card span,
.game-tips span {
    display: inline-flex;
    padding: 7px 10px;
    border: 1px solid rgba(0, 245, 255, .18);
    border-radius: 999px;
    background: rgba(0, 245, 255, .06);
    color: #bdfcff;
    font-size: 12px
}

.signal-grid {
    display: grid;
    grid-template-columns: minmax(0, .75fr) minmax(300px, .55fr);
    gap: 32px;
    align-items: center;
    padding: 34px;
    border-radius: 36px
}

.signal-grid h2 {
    font-size: clamp(34px, 5vw, 64px);
    line-height: 1;
    letter-spacing: -.055em
}

.signal-grid p {
    color: var(--muted);
    line-height: 1.85
}

.signal-panel {
    position: relative;
    min-height: 280px;
    border-radius: 28px;
    border: 1px solid rgba(0, 245, 255, .16);
    background: radial-gradient(circle at 50% 50%, rgba(0, 245, 255, .16), transparent 44%), rgba(0, 0, 0, .18);
    overflow: hidden
}

.signal-panel code {
    position: relative;
    display: block;
    margin: 22px;
    color: #bdfcff;
    font: 800 14px/1.6 ui-monospace, SFMono-Regular, Menlo, monospace
}

.wave {
    position: absolute;
    inset: 20%;
    border: 1px solid rgba(0, 245, 255, .34);
    border-radius: 50%;
    animation: pulse 2.8s ease-out infinite
}

.wave.delay {
    animation-delay: 1.4s;
    border-color: rgba(255, 61, 242, .34)
}

@keyframes pulse {
    from {
        transform: scale(.5);
        opacity: .9
    }

    to {
        transform: scale(1.8);
        opacity: 0
    }
}

.gallery-toolbar {
    display: flex;
    justify-content: center;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 30px
}

.gallery-toolbar button {
    height: 42px;
    padding: 0 18px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 999px;
    background: rgba(255, 255, 255, .045);
    color: #bdc9e3;
    cursor: pointer;
    transition: .25s ease
}

.gallery-toolbar button:hover,
.gallery-toolbar button.active {
    color: #fff;
    border-color: rgba(0, 245, 255, .45);
    background: linear-gradient(135deg, rgba(0, 245, 255, .18), rgba(138, 92, 255, .16));
    box-shadow: 0 0 28px rgba(0, 245, 255, .12)
}

.holo-gallery {
    display: grid;
    grid-template-columns: repeat(12, 1fr);
    grid-auto-rows: 86px;
    gap: 16px
}

.gallery-item {
    position: relative;
    grid-column: span 3;
    grid-row: span 3;
    min-height: 230px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 28px;
    overflow: hidden;
    cursor: pointer;
    background: #101629;
    box-shadow: 0 28px 80px rgba(0, 0, 0, .34);
    transform: translateY(18px);
    opacity: 0;
    transition: opacity .45s ease, transform .45s var(--ease), border-color .25s ease
}

.gallery-item.wide {
    grid-column: span 6
}

.gallery-item.tall {
    grid-row: span 4
}

.gallery-item.show {
    opacity: 1;
    transform: none
}

.gallery-item:hover {
    transform: translateY(-8px) scale(1.015);
    border-color: rgba(0, 245, 255, .4)
}

.gallery-item img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(.92) brightness(.78) blur(12px);
    transform: scale(1.04);
    transition: filter .65s ease, transform .75s var(--ease)
}

.gallery-item.loaded img {
    filter: saturate(1.08) brightness(.95) blur(0);
    transform: scale(1)
}

.gallery-item:hover img {
    transform: scale(1.08);
    filter: saturate(1.16) brightness(1)
}

.gallery-item:after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 38%, rgba(0, 0, 0, .76));
    pointer-events: none
}

.gallery-meta {
    position: absolute;
    z-index: 2;
    left: 18px;
    right: 18px;
    bottom: 16px
}

.gallery-meta strong {
    display: block;
    font-size: 18px
}

.gallery-meta span {
    display: block;
    margin-top: 5px;
    color: #aebbd4;
    font-size: 13px;
    line-height: 1.5
}

.lightbox {
    position: fixed;
    inset: 0;
    z-index: 3000;
    display: grid;
    place-items: center;
    padding: 24px;
    background: rgba(2, 3, 10, .78);
    backdrop-filter: blur(8px);
    opacity: 0;
    pointer-events: none;
    transition: .25s ease
}

.lightbox.open {
    opacity: 1;
    pointer-events: auto
}

.lightbox-panel {
    position: relative;
    width: min(1080px, 100%);
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 32px;
    background: rgba(8, 12, 28, .82);
    box-shadow: 0 45px 160px rgba(0, 0, 0, .62);
    overflow: hidden
}

.lightbox img {
    display: block;
    width: 100%;
    max-height: 76vh;
    object-fit: contain;
    background: #03040b
}

.lightbox-caption {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: center;
    padding: 18px 20px;
    color: #c6d2ea
}

.lightbox-caption strong {
    display: block;
    color: #fff
}

.lb-close,
.lb-arrow {
    position: absolute;
    z-index: 2;
    border: 1px solid rgba(255, 255, 255, .15);
    background: rgba(5, 7, 19, .72);
    color: #fff;
    cursor: pointer;
    backdrop-filter: blur(12px)
}

.lb-close {
    right: 14px;
    top: 14px;
    width: 44px;
    height: 44px;
    border-radius: 16px
}

.lb-arrow {
    top: 50%;
    width: 48px;
    height: 58px;
    border-radius: 18px;
    transform: translateY(-50%);
    font-size: 26px
}

.lb-arrow.prev {
    left: 14px
}

.lb-arrow.next {
    right: 14px
}

.game-layout {
    display: grid;
    grid-template-columns: minmax(0, .52fr) minmax(420px, .72fr);
    gap: 34px;
    align-items: center
}

.game-tips {
    display: flex;
    gap: 9px;
    flex-wrap: wrap;
    margin-top: 24px
}

.game-card {
    border-radius: 34px;
    padding: 16px
}

.game-topbar,
.game-hud {
    display: flex;
    justify-content: space-between;
    gap: 14px;
    align-items: center
}

.game-topbar {
    margin-bottom: 14px
}

.game-topbar strong {
    display: block
}

.game-topbar span {
    display: block;
    color: var(--muted);
    font-size: 12px;
    margin-top: 3px
}

.game-card canvas {
    display: block;
    width: 100%;
    height: auto;
    max-height: 62vh;
    border: 1px solid rgba(0, 245, 255, .18);
    border-radius: 24px;
    background: radial-gradient(circle at 50% 50%, rgba(0, 245, 255, .08), rgba(2, 4, 14, .96) 60%);
    touch-action: none
}

.game-hud {
    padding: 14px 6px 0;
    color: #aebbd4
}

.game-hud strong {
    color: #fff;
    font-size: 20px
}

.timeline {
    position: relative;
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 18px
}

.timeline:before {
    content: "";
    position: absolute;
    left: 0;
    right: 0;
    top: 28px;
    height: 1px;
    background: linear-gradient(90deg, transparent, var(--cyan), var(--pink), transparent);
    opacity: .45
}

.timeline-item {
    position: relative;
    padding: 25px;
    border-radius: 28px
}

.timeline-item time {
    display: inline-flex;
    margin-bottom: 48px;
    color: #89f7ff;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .22em
}

.timeline-item h3 {
    font-size: 21px
}

.timeline-item p {
    color: #9cadc9;
    line-height: 1.72
}

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

.member-card {
    border-radius: 30px;
    padding: 16px;
    overflow: hidden
}

.member-avatar {
    height: 240px;
    border-radius: 24px;
    overflow: hidden;
    background: rgba(255, 255, 255, .06)
}

.member-avatar img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(.92) brightness(.85);
    transition: .45s ease
}

.member-card:hover img {
    transform: scale(1.06);
    filter: saturate(1.08) brightness(1)
}

.member-card h3 {
    margin: 16px 4px 6px;
    font-size: 22px
}

.member-card p {
    margin: 0 4px 14px;
    color: #9cadc9;
    line-height: 1.6
}

.member-card span {
    display: inline-flex;
    margin: 0 4px 4px;
    padding: 6px 10px;
    border-radius: 999px;
    background: rgba(255, 255, 255, .06);
    color: #bdfcff;
    font-size: 12px
}

.join-card {
    position: relative;
    border-radius: 40px;
    padding: 46px;
    overflow: hidden
}

.join-card:before {
    content: "";
    position: absolute;
    inset: -30%;
    background: conic-gradient(from 90deg, rgba(0, 245, 255, .22), transparent, rgba(255, 61, 242, .22), transparent, rgba(0, 255, 191, .18));
    animation: spin 16s linear infinite;
    filter: blur(12px)
}

.join-content {
    position: relative;
    z-index: 1;
    max-width: 850px
}

.join-content h2 {
    margin: 14px 0 12px;
    font-size: clamp(42px, 6vw, 78px);
    line-height: .96;
    letter-spacing: -.06em
}

.join-content p {
    color: #a9b8d5;
    line-height: 1.82
}

.join-info {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 12px;
    margin-top: 26px
}

.join-info div {
    padding: 18px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 22px;
    background: rgba(0, 0, 0, .18)
}

.join-info span {
    display: block;
    color: var(--muted);
    font-size: 12px
}

.join-info strong {
    display: block;
    margin-top: 6px
}

.footer {
    padding: 34px 0 46px;
    color: #8797b4
}

.footer .shell {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: center
}

.footer a {
    text-decoration: none;
    color: #bdfcff
}

.toast {
    position: fixed;
    left: 50%;
    bottom: 26px;
    z-index: 4000;
    max-width: min(440px, calc(100% - 32px));
    padding: 13px 16px;
    border: 1px solid rgba(0, 245, 255, .28);
    border-radius: 18px;
    color: #e6feff;
    background: rgba(5, 10, 24, .88);
    box-shadow: 0 24px 70px rgba(0, 0, 0, .42), 0 0 35px rgba(0, 245, 255, .16);
    backdrop-filter: blur(18px);
    transform: translate(-50%, 22px);
    opacity: 0;
    pointer-events: none;
    transition: .25s ease
}

.toast.show {
    opacity: 1;
    transform: translate(-50%, 0)
}

@media (max-width:1050px) {

    .hero-grid,
    .game-layout,
    .signal-grid {
        grid-template-columns: 1fr
    }

    .lab-grid,
    .timeline,
    .members-grid {
        grid-template-columns: repeat(2, 1fr)
    }

    .holo-gallery {
        grid-template-columns: repeat(6, 1fr)
    }

    .gallery-item {
        grid-column: span 3
    }

    .gallery-item.wide {
        grid-column: span 6
    }

    .section-head {
        grid-template-columns: 1fr
    }

    .nav {
        grid-template-columns: auto auto;
        justify-content: space-between
    }

    .nav-toggle {
        display: block
    }

    .nav-links {
        position: fixed;
        left: 17px;
        right: 17px;
        top: 86px;
        display: grid;
        gap: 8px;
        padding: 14px;
        border: 1px solid rgba(255, 255, 255, .12);
        border-radius: 24px;
        background: rgba(5, 7, 19, .92);
        box-shadow: 0 24px 80px rgba(0, 0, 0, .45);
        backdrop-filter: blur(8px);
        opacity: 0;
        pointer-events: none;
        transform: translateY(-12px);
        transition: .22s ease
    }

    .nav-links.mobile-on {
        opacity: 1;
        pointer-events: auto;
        transform: none
    }

    .nav-links a {
        padding: 15px 16px
    }

    .nav-cta {
        display: none
    }

    .holo-card,
    .holo-card img,
    .holo-card picture {
        min-height: 440px
    }
}

@media (max-width:680px) {
    .shell {
        width: min(100% - 28px, 1180px)
    }

    .section {
        padding: 78px 0
    }

    .hero {
        padding-top: 110px
    }

    .hero-copy h1 {
        font-size: clamp(48px, 15vw, 76px)
    }

    .hero-copy p {
        font-size: 16px
    }

    .metric-strip,
    .join-info {
        grid-template-columns: 1fr
    }

    .lab-grid,
    .timeline,
    .members-grid {
        grid-template-columns: 1fr
    }

    .holo-gallery {
        display: block
    }

    .gallery-item,
    .gallery-item.wide,
    .gallery-item.tall {
        display: block;
        min-height: 270px;
        margin-bottom: 14px
    }

    .game-card {
        padding: 10px;
        border-radius: 26px
    }

    .game-card canvas {
        border-radius: 20px
    }

    .join-card {
        padding: 28px
    }

    .footer .shell {
        display: block
    }

    .cursor-orb {
        display: none
    }

    .section-head h2 {
        font-size: 40px
    }

    .lightbox {
        padding: 12px
    }

    .lightbox-panel {
        border-radius: 24px
    }

    .lb-arrow {
        width: 42px;
        height: 52px
    }

    .hero-actions .btn {
        width: 100%
    }
}

@media (prefers-reduced-motion:reduce) {

    *,
    *::before,
    *::after {
        animation-duration: .01ms !important;
        animation-iteration-count: 1 !important;
        scroll-behavior: auto !important;
        transition-duration: .01ms !important
    }

    .reveal {
        opacity: 1;
        transform: none;
        filter: none
    }

    .cursor-orb {
        display: none
    }
}

/* === Cinematic gallery upgrade v2 === */
body {
    background: radial-gradient(circle at 72% 10%, rgba(71, 52, 255, .23), transparent 34%), radial-gradient(circle at 16% 20%, rgba(0, 234, 255, .16), transparent 30%), linear-gradient(180deg, #040712 0%, #02030a 46%, #050611 100%)
}

body:after {
    content: "";
    position: fixed;
    inset: 0;
    z-index: -2;
    background: repeating-linear-gradient(0deg, rgba(255, 255, 255, .025) 0 1px, transparent 1px 4px);
    mix-blend-mode: screen;
    opacity: .22;
    pointer-events: none
}

.hero {
    overflow: hidden
}

.hero-video {
    position: absolute;
    inset: 0;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: .52;
    filter: saturate(1.28) contrast(1.08) brightness(.75)
}

.hero-shade {
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 72% 45%, transparent 0 20%, rgba(3, 5, 13, .2) 42%, rgba(3, 5, 13, .9) 100%), linear-gradient(90deg, rgba(3, 5, 13, .96), rgba(3, 5, 13, .55) 44%, rgba(3, 5, 13, .78));
    pointer-events: none
}

.hero-stage {
    min-height: 620px;
    perspective: 1300px
}

.photo-orbit {
    position: relative;
    height: 620px;
    transform-style: preserve-3d;
    animation: stageFloat 8s ease-in-out infinite
}

.photo-orbit:before {
    content: "";
    position: absolute;
    inset: 54px 20px;
    border: 1px solid rgba(0, 234, 255, .2);
    border-radius: 50%;
    transform: rotateX(67deg);
    box-shadow: 0 0 80px rgba(0, 234, 255, .12), inset 0 0 60px rgba(255, 69, 246, .08)
}

.orbit-card {
    position: absolute;
    margin: 0;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 30px;
    background: rgba(255, 255, 255, .06);
    box-shadow: 0 28px 80px rgba(0, 0, 0, .46), 0 0 34px rgba(0, 234, 255, .13);
    transform-style: preserve-3d
}

.orbit-card img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(1.08) contrast(1.05);
    animation: photoDrift 9s ease-in-out infinite
}

.orbit-card:after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(135deg, rgba(255, 255, 255, .2), transparent 36%, rgba(0, 234, 255, .14));
    mix-blend-mode: screen
}

.orbit-card.is-main {
    left: 9%;
    top: 9%;
    width: 68%;
    height: 62%;
    transform: rotateY(-12deg) rotateX(7deg) translateZ(70px);
    animation: mainCard 7s ease-in-out infinite
}

.orbit-card:not(.is-main):nth-child(2) {
    right: 0;
    top: 7%;
    width: 40%;
    height: 27%;
    transform: translateZ(110px) rotateY(-22deg);
    animation: sideFloat 6.2s ease-in-out infinite
}

.orbit-card:nth-child(3) {
    left: 0;
    bottom: 12%;
    width: 42%;
    height: 28%;
    transform: translateZ(58px) rotateY(18deg);
    animation: sideFloat 7s ease-in-out -.8s infinite
}

.orbit-card:nth-child(4) {
    right: 6%;
    bottom: 5%;
    width: 45%;
    height: 32%;
    transform: translateZ(88px) rotateY(-14deg);
    animation: sideFloat 6.7s ease-in-out -1.8s infinite
}

.orbit-core {
    position: absolute;
    left: 50%;
    top: 55%;
    width: 170px;
    height: 170px;
    display: grid;
    place-content: center;
    text-align: center;
    border-radius: 50%;
    transform: translate(-50%, -50%) translateZ(145px);
    background: radial-gradient(circle at 35% 30%, #fff, rgba(0, 234, 255, .86) 13%, rgba(25, 30, 86, .72) 46%, rgba(255, 69, 246, .28));
    border: 1px solid rgba(255, 255, 255, .28);
    box-shadow: 0 0 80px rgba(0, 234, 255, .32), inset 0 0 42px rgba(255, 255, 255, .12);
    animation: corePulse 2.6s ease-in-out infinite
}

.orbit-core span {
    font-size: 12px;
    font-weight: 900;
    color: #06111b
}

.orbit-core strong {
    font-size: 13px;
    letter-spacing: .16em
}

.showcase-section {
    overflow: hidden
}

.showcase-section:before {
    content: "";
    position: absolute;
    inset: 4% -10% auto;
    height: 72%;
    background: radial-gradient(ellipse at 54% 42%, rgba(0, 234, 255, .2), transparent 58%);
    filter: blur(20px);
    pointer-events: none
}

.cinema-stage {
    position: relative;
    display: grid;
    grid-template-columns: minmax(0, 1fr) 230px;
    gap: 16px;
    min-height: 660px;
    padding: 16px;
    border-radius: 44px;
    overflow: hidden
}

.cinema-stage:before {
    content: "";
    position: absolute;
    inset: -40%;
    background: conic-gradient(from 120deg, transparent, rgba(0, 234, 255, .18), transparent 28%, rgba(255, 69, 246, .14), transparent 55%, rgba(0, 255, 191, .12), transparent);
    animation: spin 20s linear infinite;
    opacity: .8
}

.cinema-main,
.cinema-side {
    position: relative;
    z-index: 1
}

.cinema-main {
    min-height: 628px;
    border-radius: 32px;
    overflow: hidden;
    background: #090d18;
    cursor: zoom-in
}

.cinema-main img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(1.08) contrast(1.08);
    transform: scale(1.04);
    animation: kenBurns 8s ease-in-out infinite
}

.cinema-stage.switching .cinema-main img {
    animation: none;
    opacity: .18;
    transform: scale(1.12)
}

.cinema-main:after {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(180deg, transparent 28%, rgba(0, 0, 0, .68)), linear-gradient(90deg, rgba(0, 234, 255, .16), transparent 24% 74%, rgba(255, 69, 246, .14));
    pointer-events: none
}

.cinema-glass {
    position: absolute;
    left: 24px;
    right: 24px;
    bottom: 24px;
    z-index: 2;
    display: grid;
    gap: 7px;
    max-width: 650px;
    padding: 18px 20px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 24px;
    background: rgba(4, 8, 18, .55);
    backdrop-filter: blur(18px);
    box-shadow: 0 20px 70px rgba(0, 0, 0, .38)
}

.cinema-glass span {
    color: #91f6ff;
    font-size: 12px;
    font-weight: 900;
    letter-spacing: .18em
}

.cinema-glass strong {
    font-size: 28px;
    line-height: 1.1
}

.cinema-glass em {
    color: #c5d3e8;
    font-style: normal
}

.cinema-side {
    display: grid;
    grid-template-rows: repeat(4, 1fr);
    gap: 12px
}

.float-photo {
    position: relative;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 24px;
    background: rgba(255, 255, 255, .06);
    cursor: pointer;
    transform: translateZ(0);
    box-shadow: 0 18px 60px rgba(0, 0, 0, .26);
    animation: miniFloat 6s ease-in-out infinite
}

.float-photo:nth-child(2n) {
    animation-delay: -1.7s
}

.float-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(1.02) brightness(.92);
    transition: transform .5s var(--ease), filter .5s
}

.float-photo:hover img {
    transform: scale(1.09);
    filter: saturate(1.22) brightness(1.05)
}

.float-photo span {
    position: absolute;
    left: 12px;
    bottom: 10px;
    font-size: 11px;
    font-weight: 900;
    color: #fff;
    text-shadow: 0 2px 10px #000
}

.photo-marquee {
    position: relative;
    margin-top: 18px;
    border-radius: 30px;
    overflow: hidden;
    padding: 12px
}

.photo-marquee:before,
.photo-marquee:after {
    content: "";
    position: absolute;
    top: 0;
    bottom: 0;
    width: 160px;
    z-index: 2;
    pointer-events: none
}

.photo-marquee:before {
    left: 0;
    background: linear-gradient(90deg, #040711, transparent)
}

.photo-marquee:after {
    right: 0;
    background: linear-gradient(-90deg, #040711, transparent)
}

.marquee-track {
    display: flex;
    gap: 12px;
    width: max-content;
    animation: marquee 34s linear infinite
}

.photo-marquee:hover .marquee-track {
    animation-play-state: paused
}

.marquee-tile {
    position: relative;
    width: 210px;
    height: 128px;
    flex: 0 0 auto;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 20px;
    overflow: hidden;
    background: rgba(255, 255, 255, .06);
    cursor: pointer
}

.marquee-tile img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    transition: .45s
}

.marquee-tile:hover img {
    transform: scale(1.09);
    filter: saturate(1.25)
}

.marquee-cat {
    position: absolute;
    left: 8px;
    bottom: 8px;
    z-index: 2;
    padding: 3px 9px;
    border-radius: 999px;
    background: rgba(5, 7, 19, .62);
    backdrop-filter: blur(4px);
    color: #8ff8ff;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: .06em;
    pointer-events: none;
    white-space: nowrap
}

.difficulty-panel {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 22px 0 14px
}

.difficulty-panel button {
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 999px;
    background: rgba(255, 255, 255, .055);
    color: #c9d7ec;
    padding: 11px 15px;
    cursor: pointer;
    transition: .22s
}

.difficulty-panel button.active,
.difficulty-panel button:hover {
    color: #fff;
    border-color: rgba(0, 234, 255, .48);
    background: linear-gradient(135deg, rgba(0, 234, 255, .18), rgba(255, 69, 246, .12));
    box-shadow: 0 0 26px rgba(0, 234, 255, .16)
}

.game-hud {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: 8px
}

.game-hud span {
    padding: 10px 12px;
    border-radius: 16px;
    background: rgba(255, 255, 255, .045)
}

@keyframes stageFloat {

    0%,
    100% {
        transform: rotateX(0) rotateY(0) translateY(0)
    }

    50% {
        transform: rotateX(2deg) rotateY(-3deg) translateY(-10px)
    }
}

@keyframes photoDrift {

    0%,
    100% {
        transform: scale(1.05) translate(0, 0)
    }

    50% {
        transform: scale(1.12) translate(-2%, 1.4%)
    }
}

@keyframes mainCard {

    0%,
    100% {
        transform: rotateY(-12deg) rotateX(7deg) translateZ(70px) translateY(0)
    }

    50% {
        transform: rotateY(-8deg) rotateX(5deg) translateZ(95px) translateY(-12px)
    }
}

@keyframes sideFloat {

    0%,
    100% {
        translate: 0 0
    }

    50% {
        translate: 0 -14px
    }
}

@keyframes corePulse {

    0%,
    100% {
        transform: translate(-50%, -50%) translateZ(145px) scale(1)
    }

    50% {
        transform: translate(-50%, -50%) translateZ(170px) scale(1.05)
    }
}

@keyframes kenBurns {

    0%,
    100% {
        transform: scale(1.04) translate(0, 0)
    }

    50% {
        transform: scale(1.13) translate(-1.8%, 1.2%)
    }
}

@keyframes miniFloat {

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

    50% {
        transform: translateY(-8px)
    }
}

@keyframes marquee {
    to {
        transform: translateX(-50%)
    }
}

@media (max-width:1050px) {

    .hero-grid,
    .game-layout,
    .section-head {
        grid-template-columns: 1fr
    }

    .hero-stage {
        min-height: 520px
    }

    .photo-orbit {
        height: 520px
    }

    .cinema-stage {
        grid-template-columns: 1fr;
        min-height: auto
    }

    .cinema-main {
        min-height: 560px
    }

    .cinema-side {
        grid-template-columns: repeat(4, 1fr);
        grid-template-rows: 140px
    }

    .lab-grid,
    .timeline,
    .members-grid {
        grid-template-columns: repeat(2, 1fr)
    }
}

@media (max-width:680px) {
    .hero-stage {
        min-height: 430px
    }

    .photo-orbit {
        height: 430px
    }

    .orbit-card.is-main {
        left: 2%;
        top: 10%;
        width: 82%;
        height: 54%
    }

    .orbit-card:not(.is-main):nth-child(2) {
        width: 45%;
        height: 24%
    }

    .orbit-card:nth-child(3) {
        width: 48%;
        height: 24%;
        bottom: 18%
    }

    .orbit-card:nth-child(4) {
        width: 54%;
        height: 26%;
        right: 0
    }

    .orbit-core {
        width: 130px;
        height: 130px
    }

    .cinema-stage {
        padding: 10px;
        border-radius: 28px
    }

    .cinema-main {
        min-height: 430px;
        border-radius: 22px
    }

    .cinema-glass {
        left: 12px;
        right: 12px;
        bottom: 12px;
        padding: 14px;
        border-radius: 18px
    }

    .cinema-glass strong {
        font-size: 21px
    }

    .cinema-side {
        grid-template-columns: repeat(2, 1fr);
        grid-template-rows: 120px 120px
    }

    .photo-marquee:before,
    .photo-marquee:after {
        width: 50px
    }

    .marquee-tile {
        width: 170px;
        height: 110px
    }

    .game-hud {
        grid-template-columns: 1fr
    }

    .game-topbar {
        align-items: stretch;
        flex-direction: column
    }

    .game-topbar .btn {
        width: 100%
    }
}

@media (prefers-reduced-motion:reduce) {
    .marquee-track {
        animation: none
    }

    .photo-orbit,
    .orbit-card,
    .orbit-card img,
    .orbit-core,
    .cinema-main img,
    .float-photo {
        animation: none !important
    }
}


/* === Game upgrade v4 === */
.game-layout {
    display: grid;
    grid-template-columns: minmax(320px, .45fr) minmax(0, .55fr);
    gap: 28px;
    align-items: start
}

.game-copy {
    display: grid;
    gap: 16px;
    align-content: start
}

.game-copy p {
    max-width: 520px
}

.game-badges,
.game-tipbar {
    display: flex;
    flex-wrap: wrap;
    gap: 10px
}

.game-badges span,
.game-tipbar span {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 9px 14px;
    border-radius: 999px;
    border: 1px solid rgba(255, 255, 255, .11);
    background: rgba(255, 255, 255, .045);
    color: #d8f5ff;
    font-size: 12px;
    letter-spacing: .04em;
    box-shadow: inset 0 1px rgba(255, 255, 255, .04)
}

.game-card {
    padding: 18px;
    border-radius: 34px
}

.game-topbar {
    display: flex;
    justify-content: space-between;
    gap: 18px;
    align-items: center;
    margin-bottom: 14px
}

.game-status strong {
    display: block;
    font-size: 22px;
    letter-spacing: -.03em
}

.game-status span {
    display: block;
    margin-top: 6px;
    color: #9db2d4;
    font-size: 13px
}

.game-actions {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    justify-content: flex-end
}

.game-actions .btn {
    min-width: 128px
}

#gameCanvas {
    display: block;
    width: 100%;
    height: auto;
    border-radius: 28px;
    border: 1px solid rgba(255, 255, 255, .1);
    background: radial-gradient(circle at 50% 50%, rgba(0, 234, 255, .1), rgba(3, 6, 16, .98));
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .02), 0 24px 80px rgba(0, 0, 0, .35)
}

.game-hud-extended {
    grid-template-columns: repeat(7, minmax(0, 1fr));
    margin-top: 14px
}

.game-hud strong {
    display: block;
    margin-top: 6px;
    font-size: 20px;
    color: #fff
}

.game-hud span {
    min-height: 72px;
    align-content: center
}

.game-tipbar {
    margin-top: 14px
}

.game-tipbar span {
    background: linear-gradient(135deg, rgba(255, 255, 255, .06), rgba(255, 255, 255, .03))
}

#gamePulse[disabled],
#gameDash[disabled] {
    opacity: .45;
    cursor: not-allowed;
    filter: saturate(.55)
}

@media (max-width:1050px) {
    .game-layout {
        grid-template-columns: 1fr
    }

    .game-copy p {
        max-width: none
    }

    .game-hud-extended {
        grid-template-columns: repeat(4, minmax(0, 1fr))
    }
}

@media (max-width:680px) {
    .game-topbar {
        flex-direction: column;
        align-items: stretch
    }

    .game-actions {
        justify-content: stretch
    }

    .game-actions .btn {
        width: 100%;
        min-width: 0
    }

    .game-hud-extended {
        grid-template-columns: repeat(2, minmax(0, 1fr))
    }

    .game-badges span,
    .game-tipbar span {
        width: 100%;
        justify-content: center
    }
}


/* === Game controls cleanup v5 === */
.game-copy p,
.game-tipbar {
    display: none !important
}

.game-copy {
    gap: 12px
}

.game-badges {
    margin-top: 6px
}

.game-actions {
    align-items: center
}

.game-actions .btn {
    min-width: 124px
}

#gameCanvas {
    touch-action: none;
    cursor: auto
}

.game-card.is-fullscreen {
    display: grid;
    grid-template-rows: auto 1fr auto;
    padding: 24px;
    border-radius: 0 !important;
    width: 100vw;
    height: 100vh;
    max-width: none;
    background: radial-gradient(circle at 50% 20%, rgba(18, 32, 82, .72), rgba(4, 8, 20, .96))
}

.game-card.is-fullscreen #gameCanvas {
    height: 100%;
    max-height: none
}

.game-card.is-fullscreen .game-hud {
    margin-top: 12px
}

@media (max-width:680px) {
    .game-actions .btn {
        width: 100%
    }
}



/* === Game mobile polish v8 === */
.cinema-stage {
    grid-template-columns: minmax(0, 1fr) 210px;
    min-height: 500px;
    gap: 14px
}

.cinema-main {
    min-height: 460px;
    padding: 14px 14px 96px;
    display: flex;
    align-items: center;
    justify-content: center;
    cursor: default;
    background: radial-gradient(circle at 50% 20%, rgba(24, 38, 88, .44), rgba(6, 10, 22, .98))
}

.cinema-main img {
    width: 100%;
    height: 100%;
    max-height: 100%;
    object-fit: contain;
    transform: scale(.98);
    animation: kenBurnsContain 12s ease-in-out infinite;
    filter: saturate(1.08) contrast(1.04) brightness(1.02)
}

.cinema-stage.switching .cinema-main img {
    animation: none;
    opacity: .28;
    transform: scale(1.03)
}

.cinema-glass {
    left: 20px;
    right: 20px;
    bottom: 18px;
    max-width: min(520px, calc(100% - 40px));
    padding: 16px 18px
}

.cinema-glass strong {
    font-size: 24px
}

.game-card {
    position: relative;
    overflow: hidden;
    isolation: isolate
}

.game-card::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    opacity: 0;
    z-index: 3;
    background: radial-gradient(circle at 50% 50%, rgba(255, 80, 110, 0), rgba(255, 70, 100, .12) 58%, rgba(255, 45, 87, .48));
    transition: opacity .22s ease
}

.game-card.is-hit::after {
    opacity: .95
}

.game-mobile-ui,
.mobile-float-exit,
.mobile-float-start {
    display: none
}

.game-card.pulse-ready #gameCanvas {
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .03), 0 24px 90px rgba(0, 234, 255, .2), 0 0 0 1px rgba(0, 234, 255, .18)
}

.game-card.dash-ready #gameCanvas {
    box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .03), 0 24px 90px rgba(138, 92, 255, .18), 0 0 0 1px rgba(138, 92, 255, .16)
}

.game-actions .btn.is-ready,
.skill-button.is-ready {
    border-color: rgba(0, 234, 255, .65);
    background: linear-gradient(135deg, rgba(0, 234, 255, .24), rgba(138, 92, 255, .22) 55%, rgba(255, 61, 242, .2));
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .08) inset, 0 0 36px rgba(0, 234, 255, .24)
}

.game-actions .btn.is-ready {
    color: #fff
}

.mobile-float-exit {
    position: absolute;
    top: max(12px, env(safe-area-inset-top));
    right: max(12px, env(safe-area-inset-right));
    z-index: 7;
    min-width: 88px;
    min-height: 42px;
    padding: 0 16px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    background: rgba(5, 9, 20, .52);
    backdrop-filter: blur(20px);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 12px 34px rgba(0, 0, 0, .3)
}

@keyframes kenBurnsContain {

    0%,
    100% {
        transform: scale(.98) translate(0, 0)
    }

    50% {
        transform: scale(1.02) translate(-.55%, -.35%)
    }
}

@media (max-width:1050px) {
    .cinema-stage {
        grid-template-columns: 1fr;
        min-height: auto
    }

    .cinema-main {
        min-height: 500px;
        padding: 16px 16px 102px
    }
}

@media (max-width:680px) {
    .cinema-main {
        min-height: 380px;
        padding: 12px 12px 94px
    }

    .cinema-main img {
        transform: none
    }

    .cinema-glass {
        left: 12px;
        right: 12px;
        bottom: 12px;
        max-width: none
    }
}

@media (max-width:900px) {
    .game-card.is-mobile-fullscreen {
        display: block;
        padding: 0 !important;
        border-radius: 0 !important;
        width: 100vw;
        height: 100dvh;
        height: 100vh;
        max-width: none;
        background: radial-gradient(circle at 50% 18%, rgba(20, 34, 84, .84), rgba(4, 8, 20, .98) 62%)
    }

    .game-card.is-mobile-fullscreen .game-topbar {
        display: none
    }

    .game-card.is-mobile-fullscreen #gameCanvas {
        width: 100%;
        height: 100%;
        max-height: none;
        border: none;
        border-radius: 0
    }

    .game-card.is-mobile-fullscreen .game-hud {
        position: absolute;
        left: max(10px, env(safe-area-inset-left));
        right: max(10px, env(safe-area-inset-right));
        top: max(10px, env(safe-area-inset-top));
        z-index: 4;
        display: grid;
        grid-template-columns: repeat(4, minmax(0, 1fr));
        gap: 8px;
        margin: 0;
        padding: 0
    }

    .game-card.is-mobile-fullscreen .game-hud span {
        min-height: 0;
        padding: 9px 8px;
        border-radius: 16px;
        background: rgba(5, 9, 20, .5);
        backdrop-filter: blur(18px);
        font-size: 11px;
        line-height: 1.15;
        text-align: center
    }

    .game-card.is-mobile-fullscreen .game-hud strong {
        margin-top: 5px;
        font-size: 15px
    }

    .game-card.is-mobile-fullscreen .game-mobile-ui {
        display: block;
        position: absolute;
        inset: 0;
        z-index: 6;
        pointer-events: none
    }

    .game-card.is-mobile-fullscreen .mobile-float-exit,
    .game-card.is-mobile-fullscreen .mobile-float-start {
        display: inline-flex;
        align-items: center;
        justify-content: center
    }

    .game-card.is-mobile-fullscreen .joystick-zone,
    .game-card.is-mobile-fullscreen .skill-pad,
    .game-card.is-mobile-fullscreen .mobile-float-exit,
    .game-card.is-mobile-fullscreen .mobile-float-start {
        pointer-events: auto
    }

    .joystick-zone {
        position: absolute;
        left: max(14px, env(safe-area-inset-left));
        bottom: max(16px, calc(env(safe-area-inset-bottom) + 10px));
        width: min(34vw, 164px);
        height: min(34vw, 164px);
        border-radius: 50%;
        background: radial-gradient(circle at 50% 50%, rgba(255, 255, 255, .12), rgba(255, 255, 255, .04) 58%, rgba(255, 255, 255, .02));
        border: 1px solid rgba(255, 255, 255, .14);
        box-shadow: inset 0 0 40px rgba(255, 255, 255, .05), 0 18px 44px rgba(0, 0, 0, .28);
        backdrop-filter: blur(20px)
    }

    .joystick-base {
        position: absolute;
        inset: 12%;
        border-radius: 50%;
        border: 1px solid rgba(0, 234, 255, .16);
        box-shadow: inset 0 0 26px rgba(0, 234, 255, .08)
    }

    .joystick-base::before,
    .joystick-base::after {
        content: "";
        position: absolute;
        left: 50%;
        top: 50%;
        background: rgba(255, 255, 255, .08);
        transform: translate(-50%, -50%)
    }

    .joystick-base::before {
        width: 1px;
        height: 64%
    }

    .joystick-base::after {
        width: 64%;
        height: 1px
    }

    .joystick-stick {
        position: absolute;
        left: 50%;
        top: 50%;
        width: 34%;
        height: 34%;
        margin: -17% 0 0 -17%;
        border-radius: 50%;
        background: radial-gradient(circle at 35% 30%, rgba(255, 255, 255, .95), rgba(0, 234, 255, .48) 48%, rgba(138, 92, 255, .28));
        border: 1px solid rgba(255, 255, 255, .2);
        box-shadow: 0 12px 28px rgba(0, 0, 0, .32), 0 0 26px rgba(0, 234, 255, .25);
        transition: transform .06s linear
    }

    .skill-pad {
        position: absolute;
        right: max(14px, env(safe-area-inset-right));
        bottom: max(16px, calc(env(safe-area-inset-bottom) + 10px));
        display: grid;
        grid-template-columns: 1fr;
        gap: 12px;
        width: min(34vw, 168px)
    }

    .skill-button {
        display: inline-flex;
        align-items: center;
        justify-content: center;
        min-height: 72px;
        padding: 0 18px;
        border: 1px solid rgba(255, 255, 255, .16);
        border-radius: 24px;
        background: rgba(5, 9, 20, .54);
        color: #fff;
        backdrop-filter: blur(8px);
        box-shadow: 0 18px 36px rgba(0, 0, 0, .26);
        font-size: 16px;
        font-weight: 800;
        letter-spacing: .08em;
        cursor: pointer
    }

    .skill-button.pulse {
        background: linear-gradient(135deg, rgba(0, 234, 255, .18), rgba(10, 12, 26, .62))
    }

    .skill-button.dash {
        background: linear-gradient(135deg, rgba(138, 92, 255, .18), rgba(10, 12, 26, .62))
    }

    .skill-button:disabled {
        opacity: .32;
        filter: saturate(.6)
    }

    .game-section.is-game-mobile-fullscreen .game-layout {
        grid-template-columns: 1fr
    }

    .game-section.is-game-mobile-fullscreen .game-copy {
        display: none
    }
}

/* === Mobile fullscreen final polish v9 === */
@media (max-width:900px) {
    .game-card.is-mobile-fullscreen .game-hud {
        display: none !important
    }

    .game-card.is-mobile-fullscreen .game-topbar {
        display: none !important
    }

    .game-card.is-mobile-fullscreen {
        cursor: auto;
        touch-action: none
    }

    .game-card.is-mobile-fullscreen #gameCanvas {
        display: block;
        touch-action: none
    }
}

@media (min-width:901px) {
    .cinema-stage {
        min-height: min(72vh, 620px)
    }

    .cinema-main {
        min-height: min(66vh, 560px)
    }

    .cinema-main img {
        max-height: min(62vh, 520px);
        width: auto;
        max-width: 100%
    }
}

/* === Fullscreen game chrome cleanup v10 === */
.game-card.is-fullscreen .game-topbar {
    display: none !important
}

.game-card.is-fullscreen {
    padding: 0 !important;
    gap: 0 !important
}

.game-card.is-fullscreen #gameCanvas {
    width: 100vw;
    height: 100vh;
    height: 100dvh;
    max-height: none;
    border-radius: 0;
    border: 0
}

.game-card.is-fullscreen .mobile-float-exit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto
}

@media (min-width:901px) {
    .game-card.is-fullscreen {
        width: 100vw;
        height: 100vh;
        height: 100dvh;
        max-width: none;
        border-radius: 0 !important;
        background: #040814
    }

    .game-card.is-fullscreen .game-hud {
        position: absolute;
        left: 18px;
        right: 18px;
        bottom: 18px;
        z-index: 4;
        margin: 0;
        pointer-events: none;
        opacity: .96
    }
}

/* === Game hints vertical layout v12 === */
.game-badges {
    display: grid !important;
    grid-template-columns: 1fr;
    align-items: start;
    justify-items: start;
    gap: 10px;
    max-width: 260px
}

.game-badges span {
    width: 100%;
    justify-content: flex-start;
    box-sizing: border-box
}

@media (max-width:1050px) {
    .game-badges {
        max-width: none
    }
}

/* === Wider game window v13 === */
@media (min-width:1051px) {
    .game-section .shell {
        width: min(1320px, calc(100% - 40px))
    }

    .game-section .game-layout {
        grid-template-columns: minmax(220px, .38fr) minmax(700px, .92fr);
        gap: 30px
    }

    .game-section .game-card {
        min-width: 0
    }
}

/* === Pause control v14 === */
.game-mobile-ui,
.mobile-float-exit,
.mobile-float-pause,
.mobile-float-start {
    display: none
}

.mobile-float-pause[hidden],
.mobile-float-exit[hidden],
.mobile-float-start[hidden] {
    display: none !important
}

.mobile-float-pause {
    position: absolute;
    top: max(12px, env(safe-area-inset-top));
    left: max(12px, env(safe-area-inset-left));
    z-index: 7;
    min-width: 88px;
    min-height: 42px;
    padding: 0 16px;
    border: 1px solid rgba(0, 234, 255, .28);
    border-radius: 999px;
    background: rgba(5, 9, 20, .52);
    backdrop-filter: blur(20px);
    color: #fff;
    cursor: pointer;
    box-shadow: 0 12px 34px rgba(0, 0, 0, .3), 0 0 28px rgba(0, 234, 255, .12)
}

.mobile-float-start {
    position: absolute;
    top: max(12px, env(safe-area-inset-top));
    left: 50%;
    transform: translateX(-50%);
    z-index: 7;
    min-width: 82px;
    min-height: 42px;
    padding: 0 18px;
    border: 1px solid rgba(255, 255, 255, .2);
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(0, 234, 255, .42), rgba(138, 92, 255, .34));
    backdrop-filter: blur(20px);
    color: #fff;
    cursor: pointer;
    font-weight: 900;
    letter-spacing: .08em;
    box-shadow: 0 14px 36px rgba(0, 0, 0, .32), 0 0 30px rgba(0, 234, 255, .18)
}

.game-card.is-fullscreen .mobile-float-pause {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto
}

.game-card.is-mobile-fullscreen .mobile-float-pause,
.game-card.is-mobile-fullscreen .mobile-float-start {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    pointer-events: auto
}

#gamePause:disabled {
    opacity: .45;
    cursor: not-allowed;
    filter: saturate(.55)
}

/* 3D memory orbit v16 */
.memory-orbit-scene {
    position: relative;
    height: clamp(410px, 52vw, 660px);
    margin: 8px 0 34px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 34px;
    overflow: hidden;
    background: radial-gradient(circle at 50% 18%, rgba(0, 245, 255, .18), transparent 28%), radial-gradient(circle at 72% 72%, rgba(255, 61, 242, .13), transparent 32%), linear-gradient(135deg, rgba(255, 255, 255, .07), rgba(255, 255, 255, .025));
    box-shadow: 0 36px 120px rgba(0, 0, 0, .42), inset 0 1px rgba(255, 255, 255, .1);
    perspective: 1600px;
    isolation: isolate;
    cursor: grab;
    touch-action: pan-y;
    contain: layout paint
}

.memory-orbit-scene:active {
    cursor: grabbing
}

.memory-orbit-scene:before {
    content: "";
    position: absolute;
    inset: -1px;
    background: linear-gradient(90deg, transparent, rgba(0, 245, 255, .42), transparent, rgba(255, 61, 242, .32), transparent);
    opacity: .32;
    filter: blur(20px);
    animation: memoryBeam 7s linear infinite;
    pointer-events: none
}

.memory-orbit-scene:after {
    content: "";
    position: absolute;
    left: 8%;
    right: 8%;
    bottom: 10%;
    height: 1px;
    background: linear-gradient(90deg, transparent, rgba(0, 245, 255, .7), rgba(255, 61, 242, .55), transparent);
    box-shadow: 0 0 35px rgba(0, 245, 255, .45);
    opacity: .72
}

.memory-orbit-bg {
    position: absolute;
    inset: 0;
    background: linear-gradient(rgba(255, 255, 255, .045) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .035) 1px, transparent 1px);
    background-size: 44px 44px;
    mask-image: radial-gradient(circle at center, #000 0 62%, transparent 88%);
    opacity: .28;
    transform: translateZ(-1px)
}

.memory-orbit-stage {
    position: absolute;
    inset: 0;
    display: grid;
    place-items: center;
    transform-style: preserve-3d;
    transform: rotateX(var(--orbit-rx, -12deg)) rotateY(var(--orbit-ry, 0deg));
    transition: transform .16s ease-out
}

.memory-orbit-ring {
    position: relative;
    width: 180px;
    height: 118px;
    transform-style: preserve-3d;
    animation: memorySpin 34s linear infinite
}

.memory-orbit-scene:not(.is-active) .memory-orbit-ring,
.memory-orbit-scene.is-paused .memory-orbit-ring {
    animation-play-state: paused
}

.memory-orbit-card {
    position: absolute;
    inset: 0;
    width: 180px;
    height: 118px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 18px;
    background: #0b1023;
    overflow: hidden;
    box-shadow: 0 18px 50px rgba(0, 0, 0, .46), 0 0 26px rgba(0, 245, 255, .14);
    transform: rotateY(var(--angle)) translateZ(var(--radius));
    transform-style: preserve-3d;
    transition: transform .8s var(--ease), box-shadow .25s ease, border-color .25s ease;
    cursor: pointer;
    -webkit-box-reflect: below 14px linear-gradient(transparent 26%, rgba(255, 255, 255, .2));
    backface-visibility: hidden
}

.memory-orbit-card:before {
    content: "";
    position: absolute;
    inset: 0;
    background: linear-gradient(120deg, rgba(255, 255, 255, .32), transparent 26%, transparent 68%, rgba(0, 245, 255, .18));
    mix-blend-mode: screen;
    opacity: .72;
    z-index: 1;
    pointer-events: none
}

.memory-orbit-card:after {
    content: "";
    position: absolute;
    inset: 0;
    border-radius: inherit;
    border: 1px solid rgba(0, 245, 255, .18);
    box-shadow: inset 0 0 28px rgba(0, 245, 255, .14);
    z-index: 2;
    pointer-events: none
}

.memory-orbit-card:hover {
    border-color: rgba(0, 245, 255, .62);
    box-shadow: 0 22px 64px rgba(0, 0, 0, .52), 0 0 42px rgba(0, 245, 255, .3)
}

.memory-orbit-card img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
    filter: saturate(1.08) contrast(1.05) brightness(.88);
    transform: scale(1.03);
    transition: filter .25s ease, transform .35s ease
}

.memory-orbit-card:hover img {
    filter: saturate(1.22) contrast(1.08) brightness(1);
    transform: scale(1.08)
}

.memory-orbit-core {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 190px;
    height: 190px;
    margin: -95px 0 0 -95px;
    display: grid;
    place-items: center;
    text-align: center;
    border: 1px solid rgba(0, 245, 255, .26);
    border-radius: 50%;
    background: radial-gradient(circle, rgba(0, 245, 255, .22), rgba(138, 92, 255, .1) 44%, rgba(2, 5, 15, .1) 70%, transparent);
    box-shadow: 0 0 70px rgba(0, 245, 255, .18), inset 0 0 44px rgba(255, 61, 242, .08);
    transform: translateZ(20px);
    pointer-events: none
}

.memory-orbit-core:before,
.memory-orbit-core:after {
    content: "";
    position: absolute;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, .12);
    animation: spin 13s linear infinite
}

.memory-orbit-core:before {
    inset: 18px;
    border-left-color: rgba(0, 245, 255, .72);
    border-right-color: rgba(255, 61, 242, .55)
}

.memory-orbit-core:after {
    inset: 42px;
    animation-direction: reverse;
    border-top-color: rgba(0, 255, 191, .55)
}

.memory-orbit-core span {
    display: block;
    color: var(--cyan);
    font-size: 10px;
    letter-spacing: .34em;
    font-weight: 900
}

.memory-orbit-core strong {
    display: block;
    margin-top: 8px;
    color: #fff;
    font-size: 12px;
    letter-spacing: .18em
}

.memory-orbit-hint {
    position: absolute;
    left: 50%;
    bottom: 18px;
    z-index: 3;
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
    justify-content: center;
    transform: translateX(-50%);
    pointer-events: none
}

.memory-orbit-hint span {
    padding: 7px 11px;
    border: 1px solid rgba(255, 255, 255, .12);
    border-radius: 999px;
    background: rgba(4, 7, 18, .56);
    color: #d8f8ff;
    font-size: 12px;
    letter-spacing: .08em;
    box-shadow: 0 10px 30px rgba(0, 0, 0, .26);
    backdrop-filter: blur(12px)
}

@keyframes memorySpin {
    from {
        transform: rotateY(0deg)
    }

    to {
        transform: rotateY(360deg)
    }
}

@keyframes memoryBeam {
    from {
        transform: translateX(-34%) rotate(0deg)
    }

    to {
        transform: translateX(34%) rotate(360deg)
    }
}

@media (max-width:900px) {
    .memory-orbit-scene {
        height: 450px;
        border-radius: 28px
    }

    .memory-orbit-ring {
        width: 138px;
        height: 92px
    }

    .memory-orbit-card {
        width: 138px;
        height: 92px;
        border-radius: 15px;
        -webkit-box-reflect: below 9px linear-gradient(transparent 34%, rgba(255, 255, 255, .16))
    }

    .memory-orbit-core {
        width: 150px;
        height: 150px;
        margin: -75px 0 0 -75px
    }

    .memory-orbit-core strong {
        font-size: 10px
    }

    .memory-orbit-hint {
        bottom: 12px
    }

    .memory-orbit-hint span {
        font-size: 11px;
        padding: 6px 9px
    }
}

@media (max-width:560px) {
    .memory-orbit-scene {
        height: 360px;
        margin-bottom: 24px
    }

    .memory-orbit-ring {
        width: 112px;
        height: 76px
    }

    .memory-orbit-card {
        width: 112px;
        height: 76px;
        border-radius: 12px
    }

    .memory-orbit-core {
        width: 118px;
        height: 118px;
        margin: -59px 0 0 -59px
    }

    .memory-orbit-core span {
        font-size: 8px
    }

    .memory-orbit-core strong {
        font-size: 8px;
        line-height: 1.35
    }

    .memory-orbit-hint span {
        font-size: 10px
    }

    .holo-gallery {
        grid-auto-rows: 78px;
        gap: 12px
    }

    .gallery-item,
    .gallery-item.wide,
    .gallery-item.tall {
        grid-column: span 12;
        grid-row: span 3;
        min-height: 210px
    }
}

@media (prefers-reduced-motion:reduce) {

    .memory-orbit-ring,
    .memory-orbit-scene:before,
    .memory-orbit-core:before,
    .memory-orbit-core:after {
        animation: none !important
    }

    .memory-orbit-stage {
        transition: none
    }
}

/* Three-row cinematic orbit v17 */
.gallery-section .section-head {
    margin-bottom: 26px
}

.gallery-section .section-head p,
.gallery-toolbar,
.holo-gallery {
    display: none !important
}

.memory-orbit-scene {
    height: clamp(620px, 64vw, 820px);
    margin: 0;
    border-radius: 38px;
    cursor: grab;
    touch-action: pan-y;
    background: #040712;
    overflow: hidden
}

.memory-orbit-scene:active {
    cursor: grabbing
}

.memory-orbit-slides {
    position: absolute;
    inset: 0;
    z-index: -2;
    overflow: hidden
}

.memory-orbit-slides img {
    position: absolute;
    inset: -5%;
    width: 110%;
    height: 110%;
    object-fit: cover;
    opacity: 0;
    filter: blur(8px) saturate(1.32) contrast(1.08) brightness(.42);
    transform: scale(1.12);
    transition: opacity 1.2s ease, transform 5.2s ease
}

.memory-orbit-slides img.is-on {
    opacity: .72;
    transform: scale(1.02)
}

.memory-orbit-bg {
    z-index: -1;
    background: radial-gradient(circle at 50% 48%, rgba(0, 245, 255, .2), transparent 26%), radial-gradient(circle at 30% 70%, rgba(255, 61, 242, .2), transparent 30%), linear-gradient(rgba(255, 255, 255, .05) 1px, transparent 1px), linear-gradient(90deg, rgba(255, 255, 255, .04) 1px, transparent 1px);
    background-size: auto, auto, 54px 54px, 54px 54px;
    opacity: .72;
    mask-image: none
}

.memory-orbit-scene:before {
    opacity: .32;
    filter: blur(26px)
}

.memory-orbit-scene:after {
    left: 5%;
    right: 5%;
    bottom: 50%;
    height: 2px;
    opacity: .5
}

.memory-orbit-controls {
    position: absolute;
    right: 20px;
    top: 20px;
    z-index: 6;
    display: flex;
    gap: 10px
}

.memory-orbit-controls button {
    width: 44px;
    height: 44px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 16px;
    background: linear-gradient(145deg, rgba(0, 245, 255, .18), rgba(255, 255, 255, .055));
    color: #fff;
    font-size: 24px;
    line-height: 1;
    cursor: pointer;
    box-shadow: 0 16px 42px rgba(0, 0, 0, .3), 0 0 28px rgba(0, 245, 255, .12);
    backdrop-filter: blur(16px);
    transition: transform .2s ease, border-color .2s ease, box-shadow .2s ease
}

.memory-orbit-controls button:hover {
    transform: translateY(-2px);
    border-color: rgba(0, 245, 255, .62);
    box-shadow: 0 18px 50px rgba(0, 0, 0, .35), 0 0 34px rgba(0, 245, 255, .24)
}

.memory-orbit-stage {
    inset: 0;
    display: block;
    transform: rotateX(var(--orbit-rx, -11deg)) rotateY(var(--orbit-ry, 0deg));
    transform-origin: 50% 50%;
    transition: transform .14s ease-out
}

.memory-orbit-lane {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 188px;
    height: 122px;
    margin: -61px 0 0 -94px;
    transform-style: preserve-3d;
    transform: translateY(var(--lane-y)) rotateX(var(--lane-rx));
    animation: memorySpin var(--lane-speed, 38s) linear infinite
}

.memory-orbit-lane.reverse {
    animation-name: memorySpinReverse
}

.memory-orbit-scene:not(.is-active) .memory-orbit-lane,
.memory-orbit-scene.is-paused .memory-orbit-lane {
    animation-play-state: paused
}

.memory-orbit-ring {
    display: none
}

.memory-orbit-card {
    width: 188px;
    height: 122px;
    border-radius: 18px;
    transform: rotateY(var(--angle)) translateZ(var(--radius));
    animation: memoryCardIn .75s var(--ease) both;
    animation-delay: var(--delay);
    background: #070b19;
    border-color: rgba(255, 255, 255, .22);
    box-shadow: 0 20px 58px rgba(0, 0, 0, .52), 0 0 32px rgba(0, 245, 255, .18);
    -webkit-box-reflect: below 12px linear-gradient(transparent 38%, rgba(255, 255, 255, .17))
}

.memory-orbit-card:nth-child(3n+1) {
    box-shadow: 0 20px 58px rgba(0, 0, 0, .52), 0 0 35px rgba(0, 245, 255, .2)
}

.memory-orbit-card:nth-child(3n+2) {
    box-shadow: 0 20px 58px rgba(0, 0, 0, .52), 0 0 35px rgba(255, 61, 242, .18)
}

.memory-orbit-card:nth-child(3n) {
    box-shadow: 0 20px 58px rgba(0, 0, 0, .52), 0 0 35px rgba(0, 255, 191, .16)
}

.memory-orbit-card img {
    filter: saturate(1.18) contrast(1.08) brightness(.9)
}

.memory-orbit-card:hover {
    z-index: 4;
    border-color: rgba(255, 255, 255, .72);
    box-shadow: 0 24px 72px rgba(0, 0, 0, .56), 0 0 54px rgba(0, 245, 255, .34)
}

.memory-orbit-core {
    width: 230px;
    height: 230px;
    margin: -115px 0 0 -115px;
    z-index: 3;
    background: radial-gradient(circle, rgba(0, 245, 255, .25), rgba(255, 61, 242, .12) 42%, rgba(2, 5, 16, .22) 68%, transparent);
    box-shadow: 0 0 100px rgba(0, 245, 255, .22), inset 0 0 55px rgba(255, 61, 242, .12)
}

.memory-orbit-core span {
    font-size: 10px
}

.memory-orbit-core strong {
    font-size: 13px
}

.memory-orbit-hint {
    display: none !important
}

@keyframes memorySpinReverse {
    from {
        transform: translateY(var(--lane-y)) rotateX(var(--lane-rx)) rotateY(360deg)
    }

    to {
        transform: translateY(var(--lane-y)) rotateX(var(--lane-rx)) rotateY(0deg)
    }
}

@keyframes memoryCardIn {
    from {
        opacity: 0;
        filter: blur(10px);
        transform: rotateY(var(--angle)) translateZ(calc(var(--radius) * .72)) translateY(24px)
    }

    to {
        opacity: 1;
        filter: blur(0);
        transform: rotateY(var(--angle)) translateZ(var(--radius)) translateY(0)
    }
}

@media (max-width:900px) {
    .memory-orbit-scene {
        height: 620px;
        border-radius: 30px
    }

    .memory-orbit-lane {
        width: 148px;
        height: 96px;
        margin: -48px 0 0 -74px
    }

    .memory-orbit-card {
        width: 148px;
        height: 96px;
        border-radius: 15px
    }

    .memory-orbit-core {
        width: 170px;
        height: 170px;
        margin: -85px 0 0 -85px
    }

    .memory-orbit-controls {
        right: 14px;
        top: 14px
    }

    .memory-orbit-controls button {
        width: 40px;
        height: 40px;
        border-radius: 14px
    }
}

@media (max-width:560px) {
    .memory-orbit-scene {
        height: 520px;
        border-radius: 26px
    }

    .memory-orbit-lane {
        width: 116px;
        height: 78px;
        margin: -39px 0 0 -58px
    }

    .memory-orbit-card {
        width: 116px;
        height: 78px;
        border-radius: 12px;
        -webkit-box-reflect: below 8px linear-gradient(transparent 42%, rgba(255, 255, 255, .13))
    }

    .memory-orbit-core {
        width: 128px;
        height: 128px;
        margin: -64px 0 0 -64px
    }

    .memory-orbit-core span {
        font-size: 8px
    }

    .memory-orbit-core strong {
        font-size: 8px
    }

    .memory-orbit-controls button {
        width: 38px;
        height: 38px;
        font-size: 22px
    }
}

@media (prefers-reduced-motion:reduce) {

    .memory-orbit-lane,
    .memory-orbit-slides img {
        animation: none !important;
        transition: none !important
    }
}

/* Orbit direction fix v18 */
@keyframes memorySpin {
    from {
        transform: translateY(var(--lane-y)) rotateX(var(--lane-rx)) rotateY(0deg)
    }

    to {
        transform: translateY(var(--lane-y)) rotateX(var(--lane-rx)) rotateY(360deg)
    }
}

@keyframes memorySpinReverse {
    from {
        transform: translateY(var(--lane-y)) rotateX(var(--lane-rx)) rotateY(360deg)
    }

    to {
        transform: translateY(var(--lane-y)) rotateX(var(--lane-rx)) rotateY(0deg)
    }
}

/* True cylinder photo drum v19 */
.memory-orbit-scene {
    height: clamp(610px, 58vw, 760px);
    perspective: 1850px
}

.memory-orbit-stage {
    transform: rotateX(var(--orbit-rx, -8deg)) rotateY(var(--orbit-ry, 0deg));
    transform-style: preserve-3d
}

.memory-orbit-lane {
    width: 220px;
    height: 138px;
    margin: -69px 0 0 -110px;
    transform-style: preserve-3d;
    transform: translateY(var(--lane-y)) rotateX(0deg);
    animation: memoryDrumLeft var(--lane-speed, 36s) linear infinite;
    will-change: transform
}

.memory-orbit-lane.reverse {
    animation-name: memoryDrumRight
}

.memory-orbit-card {
    width: 220px;
    height: 138px;
    border-radius: 16px;
    transform: rotateY(var(--angle)) translateZ(var(--radius));
    transform-origin: 50% 50%;
    -webkit-box-reflect: none;
    backface-visibility: hidden
}

.memory-orbit-card:before {
    background: linear-gradient(90deg, rgba(255, 255, 255, .22), transparent 22%, transparent 76%, rgba(0, 245, 255, .2))
}

.memory-orbit-card:after {
    box-shadow: inset 0 0 22px rgba(0, 245, 255, .16)
}

.memory-orbit-core {
    width: 260px;
    height: 260px;
    margin: -130px 0 0 -130px;
    opacity: .72
}

.memory-orbit-core:before {
    inset: 22px
}

.memory-orbit-core:after {
    inset: 54px
}

.memory-orbit-scene:after {
    bottom: 50%;
    height: 180px;
    border-top: 1px solid rgba(0, 245, 255, .24);
    border-bottom: 1px solid rgba(255, 61, 242, .2);
    background: linear-gradient(180deg, transparent, rgba(0, 245, 255, .055), transparent);
    box-shadow: 0 0 60px rgba(0, 245, 255, .18);
    transform: translateY(-50%);
    pointer-events: none
}

.memory-orbit-lane:before {
    content: "";
    position: absolute;
    left: 50%;
    top: 50%;
    width: calc(var(--radius) * 2);
    height: 138px;
    border: 1px solid rgba(0, 245, 255, .12);
    border-left-color: rgba(255, 61, 242, .16);
    border-right-color: rgba(0, 255, 191, .16);
    border-radius: 50%;
    transform: translate(-50%, -50%) rotateX(90deg);
    pointer-events: none
}

.memory-orbit-scene:not(.is-active) .memory-orbit-lane,
.memory-orbit-scene.is-paused .memory-orbit-lane {
    animation-play-state: paused
}

@keyframes memoryDrumLeft {
    from {
        transform: translateY(var(--lane-y)) rotateX(0deg) rotateY(0deg)
    }

    to {
        transform: translateY(var(--lane-y)) rotateX(0deg) rotateY(-360deg)
    }
}

@keyframes memoryDrumRight {
    from {
        transform: translateY(var(--lane-y)) rotateX(0deg) rotateY(0deg)
    }

    to {
        transform: translateY(var(--lane-y)) rotateX(0deg) rotateY(360deg)
    }
}

@media (max-width:900px) {
    .memory-orbit-scene {
        height: 600px
    }

    .memory-orbit-lane {
        width: 164px;
        height: 104px;
        margin: -52px 0 0 -82px
    }

    .memory-orbit-card {
        width: 164px;
        height: 104px;
        border-radius: 14px
    }

    .memory-orbit-lane:before {
        height: 104px
    }

    .memory-orbit-core {
        width: 184px;
        height: 184px;
        margin: -92px 0 0 -92px
    }
}

@media (max-width:560px) {
    .memory-orbit-scene {
        height: 500px
    }

    .memory-orbit-stage {
        transform: rotateX(var(--orbit-rx, -7deg)) rotateY(var(--orbit-ry, 0deg))
    }

    .memory-orbit-lane {
        width: 126px;
        height: 82px;
        margin: -41px 0 0 -63px
    }

    .memory-orbit-card {
        width: 126px;
        height: 82px;
        border-radius: 11px
    }

    .memory-orbit-lane:before {
        height: 82px
    }

    .memory-orbit-core {
        width: 132px;
        height: 132px;
        margin: -66px 0 0 -66px
    }
}

/* Cylinder density polish v20 */
.memory-orbit-lane:before {
    width: calc(var(--drum-radius, 420px) * 2);
    opacity: .72
}

.memory-orbit-card {
    box-shadow: 0 18px 46px rgba(0, 0, 0, .48), 0 0 24px rgba(0, 245, 255, .16)
}

.memory-orbit-card:nth-child(odd) {
    filter: brightness(1.04)
}

.memory-orbit-card:nth-child(even) {
    filter: brightness(.92)
}

.memory-orbit-card img {
    object-fit: cover
}

.memory-orbit-scene.is-active .memory-orbit-lane {
    animation-play-state: running
}

/* Drum autoplay force v21 */
.memory-orbit-scene .memory-orbit-lane {
    animation-play-state: running !important
}

.memory-orbit-scene.is-paused .memory-orbit-lane {
    animation-play-state: paused !important
}

.memory-orbit-scene:not(.is-active) .memory-orbit-lane {
    animation-play-state: running !important
}

.memory-orbit-lane.lane-top,
.memory-orbit-lane.lane-bottom {
    animation-name: memoryDrumLeft !important
}

.memory-orbit-lane.lane-mid {
    animation-name: memoryDrumRight !important
}

.memory-orbit-stage {
    transform: rotateX(var(--orbit-rx, -6deg)) rotateY(var(--orbit-ry, 0deg));
}

.memory-orbit-lane {
    transform-origin: 50% 50%;
}

.memory-orbit-card {
    transform: rotateY(var(--angle)) translateZ(var(--radius)) rotateY(0deg)
}

/* JS driven visible cylinder drum v22 */
.memory-orbit-scene .memory-orbit-lane,
.memory-orbit-scene:not(.is-active) .memory-orbit-lane,
.memory-orbit-scene.is-paused .memory-orbit-lane {
    animation: none !important
}

.memory-orbit-lane {
    width: 162px;
    height: 102px;
    margin: -51px 0 0 -81px;
    will-change: transform
}

.memory-orbit-card {
    width: 162px;
    height: 102px;
    border-radius: 14px;
    border-color: rgba(255, 255, 255, .2);
    box-shadow: 0 14px 34px rgba(0, 0, 0, .46), 0 0 20px rgba(0, 245, 255, .13)
}

.memory-orbit-card:hover {
    transform: rotateY(var(--angle)) translateZ(var(--radius)) scale(1.08)
}

.memory-orbit-card img {
    filter: saturate(1.15) contrast(1.06) brightness(.92)
}

.memory-orbit-core {
    width: 310px;
    height: 310px;
    margin: -155px 0 0 -155px;
    padding: 0;
    border-radius: 50%;
    overflow: hidden;
    opacity: .96;
    background: radial-gradient(circle, rgba(0, 245, 255, .2), rgba(5, 8, 20, .45));
    border: 1px solid rgba(0, 245, 255, .32);
    box-shadow: 0 0 90px rgba(0, 245, 255, .24), 0 0 140px rgba(255, 61, 242, .12), inset 0 0 40px rgba(0, 0, 0, .36)
}

.memory-orbit-core img {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
    filter: saturate(1.12) contrast(1.05) brightness(.95)
}

.memory-orbit-core:before {
    inset: 8px;
    z-index: 2
}

.memory-orbit-core:after {
    inset: 28px;
    z-index: 2
}

.memory-orbit-lane:before {
    height: 102px;
    opacity: .48;
    border-color: rgba(0, 245, 255, .12)
}

@media (max-width:900px) {
    .memory-orbit-lane {
        width: 126px;
        height: 80px;
        margin: -40px 0 0 -63px
    }

    .memory-orbit-card {
        width: 126px;
        height: 80px;
        border-radius: 12px
    }

    .memory-orbit-lane:before {
        height: 80px
    }

    .memory-orbit-core {
        width: 220px;
        height: 220px;
        margin: -110px 0 0 -110px
    }
}

@media (max-width:560px) {
    .memory-orbit-lane {
        width: 96px;
        height: 64px;
        margin: -32px 0 0 -48px
    }

    .memory-orbit-card {
        width: 96px;
        height: 64px;
        border-radius: 10px
    }

    .memory-orbit-lane:before {
        height: 64px
    }

    .memory-orbit-core {
        width: 154px;
        height: 154px;
        margin: -77px 0 0 -77px
    }
}

/* Drum start reliability v23 */
.memory-orbit-lane {
    animation: none !important;
    transform-style: preserve-3d
}

.memory-orbit-card {
    width: 150px;
    height: 94px;
    margin: -47px 0 0 -75px
}

.memory-orbit-core {
    z-index: 0
}

.memory-orbit-lane {
    z-index: 2
}

.memory-orbit-controls {
    z-index: 8
}

@media (max-width:900px) {
    .memory-orbit-card {
        width: 118px;
        height: 74px;
        margin: -37px 0 0 -59px
    }
}

@media (max-width:560px) {
    .memory-orbit-card {
        width: 88px;
        height: 58px;
        margin: -29px 0 0 -44px
    }
}

/* Unified axis + bottom scrubber v24 */
.memory-orbit-scene {
    height: clamp(650px, 60vw, 780px);
    perspective: 1900px
}

.memory-orbit-stage {
    position: absolute !important;
    inset: 0 !important;
    display: block !important;
    transform-style: preserve-3d !important;
    transform: rotateX(-6deg) !important;
    pointer-events: none
}

.memory-orbit-lane {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 0 !important;
    height: 0 !important;
    margin: 0 !important;
    z-index: 2;
    transform-origin: 0 0 !important;
    transform-style: preserve-3d !important;
    animation: none !important;
    pointer-events: none
}

.memory-orbit-card {
    position: absolute !important;
    inset: auto !important;
    left: 0 !important;
    top: 0 !important;
    width: 142px !important;
    height: 90px !important;
    margin: -45px 0 0 -71px !important;
    padding: 0 !important;
    transform: rotateY(var(--angle)) translateZ(var(--radius)) !important;
    transform-origin: 50% 50% !important;
    pointer-events: auto
}

.memory-orbit-lane:before {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: calc(var(--drum-radius, 420px) * 2);
    height: 1px;
    border: 1px solid rgba(0, 245, 255, .16);
    border-radius: 50%;
    transform: translate(-50%, -50%) rotateX(90deg);
    opacity: .34;
    pointer-events: none
}

.memory-orbit-core {
    position: absolute !important;
    left: 50% !important;
    top: 50% !important;
    width: 300px !important;
    height: 300px !important;
    margin: -150px 0 0 -150px !important;
    z-index: 1;
    transform: rotateY(var(--core-spin, 0deg)) !important;
    transform-style: preserve-3d;
    pointer-events: none
}

.memory-orbit-core img {
    transform: translateZ(1px);
    border-radius: 50%
}

.memory-orbit-core:before,
.memory-orbit-core:after {
    pointer-events: none
}

.memory-orbit-scrubber {
    position: absolute;
    left: 50%;
    bottom: 24px;
    z-index: 9;
    width: min(620px, 72%);
    height: 46px;
    display: grid;
    place-items: center;
    transform: translateX(-50%);
    padding: 0 18px;
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(5, 9, 24, .72), rgba(255, 255, 255, .055));
    box-shadow: 0 18px 55px rgba(0, 0, 0, .36), 0 0 32px rgba(0, 245, 255, .13);
    backdrop-filter: blur(18px)
}

.memory-orbit-scrubber input {
    width: 100%;
    accent-color: #00f5ff;
    cursor: grab
}

.memory-orbit-scrubber input:active {
    cursor: grabbing
}

.memory-orbit-scrubber input::-webkit-slider-runnable-track {
    height: 6px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(255, 61, 242, .7), rgba(0, 245, 255, .9), rgba(0, 255, 191, .7))
}

.memory-orbit-scrubber input::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 24px;
    height: 24px;
    margin-top: -9px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 24px rgba(0, 245, 255, .8), 0 0 0 7px rgba(0, 245, 255, .14)
}

.memory-orbit-scrubber input::-moz-range-track {
    height: 6px;
    border-radius: 999px;
    background: linear-gradient(90deg, rgba(255, 61, 242, .7), rgba(0, 245, 255, .9), rgba(0, 255, 191, .7))
}

.memory-orbit-scrubber input::-moz-range-thumb {
    width: 24px;
    height: 24px;
    border: 0;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 24px rgba(0, 245, 255, .8), 0 0 0 7px rgba(0, 245, 255, .14)
}

.memory-orbit-controls {
    pointer-events: auto
}

.memory-orbit-scene:after {
    bottom: 50%;
    height: 248px;
    transform: translateY(50%)
}

@media (max-width:900px) {
    .memory-orbit-scene {
        height: 610px
    }

    .memory-orbit-card {
        width: 112px !important;
        height: 72px !important;
        margin: -36px 0 0 -56px !important
    }

    .memory-orbit-core {
        width: 210px !important;
        height: 210px !important;
        margin: -105px 0 0 -105px !important
    }

    .memory-orbit-scrubber {
        width: min(520px, 78%);
        bottom: 18px
    }
}

@media (max-width:560px) {
    .memory-orbit-scene {
        height: 520px
    }

    .memory-orbit-stage {
        transform: rotateX(-5deg) !important
    }

    .memory-orbit-card {
        width: 84px !important;
        height: 56px !important;
        margin: -28px 0 0 -42px !important
    }

    .memory-orbit-core {
        width: 150px !important;
        height: 150px !important;
        margin: -75px 0 0 -75px !important
    }

    .memory-orbit-scrubber {
        width: 82%;
        height: 42px;
        bottom: 14px
    }
}

/* Core fixed axis v25 */
.memory-orbit-core {
    transform: none !important
}

.memory-orbit-core img {
    transform: rotate(var(--core-spin, 0deg)) translateZ(1px) !important;
    transform-origin: 50% 50%;
    will-change: transform
}

.memory-orbit-stage {
    transform-origin: 50% 50% !important
}

.memory-orbit-lane {
    transform-origin: 0 0 !important
}

.memory-orbit-card:hover {
    transform: rotateY(var(--angle)) translateZ(var(--radius)) scale(1.05) !important
}

/* Core image self spin v26 */
.memory-orbit-core img {
    animation: coreImageSelfSpin 18s linear infinite !important;
    transform-origin: 50% 50% !important
}

@keyframes coreImageSelfSpin {
    from {
        transform: rotate(0deg) translateZ(1px)
    }

    to {
        transform: rotate(360deg) translateZ(1px)
    }
}

/* 3D view control orb v27 */
.memory-orbit-scrubber {
    display: none !important
}

.memory-orbit-stage {
    transform: rotateX(var(--view-rx, -6deg)) rotateY(var(--view-ry, 0deg)) !important;
    transition: transform .18s cubic-bezier(.2, .85, .2, 1)
}

.memory-orbit-orb {
    position: absolute;
    right: 24px;
    bottom: 24px;
    z-index: 12;
    width: 88px;
    height: 88px;
    padding: 0;
    border: 1px solid rgba(255, 255, 255, .22);
    border-radius: 50%;
    display: grid;
    place-items: center;
    overflow: hidden;
    background: radial-gradient(circle at 30% 24%, #fff 0 6%, rgba(143, 248, 255, .98) 7% 16%, rgba(0, 245, 255, .72) 17% 34%, rgba(55, 73, 255, .58) 48%, rgba(7, 10, 31, .92) 74%), radial-gradient(circle at 76% 76%, rgba(255, 61, 242, .72), transparent 42%);
    box-shadow: 0 0 0 1px rgba(0, 245, 255, .2), 0 0 36px rgba(0, 245, 255, .38), 0 0 78px rgba(138, 92, 255, .22), inset 16px 12px 24px rgba(255, 255, 255, .22), inset -22px -26px 36px rgba(0, 0, 0, .52);
    cursor: grab;
    touch-action: none;
    user-select: none;
    -webkit-tap-highlight-color: transparent;
    transform: translateZ(0) scale(1);
    transition: transform .18s var(--ease), box-shadow .18s var(--ease), border-color .18s var(--ease)
}

.memory-orbit-orb:before {
    content: "";
    position: absolute;
    inset: 10px;
    border-radius: 50%;
    background: repeating-radial-gradient(ellipse at 50% 50%, transparent 0 12px, rgba(255, 255, 255, .22) 13px 14px, transparent 15px 24px), repeating-linear-gradient(90deg, transparent 0 17px, rgba(255, 255, 255, .14) 18px 19px, transparent 20px 34px);
    mix-blend-mode: screen;
    opacity: .72;
    transform: rotateX(var(--orb-rx, 6deg)) rotateY(var(--orb-ry, 0deg)) rotateZ(18deg)
}

.memory-orbit-orb:after {
    content: "";
    position: absolute;
    inset: -18px;
    border-radius: 50%;
    background: conic-gradient(from 0deg, rgba(0, 245, 255, .05), rgba(255, 61, 242, .34), rgba(0, 255, 191, .3), rgba(0, 245, 255, .05));
    animation: orbHaloSpin 3.8s linear infinite;
    filter: blur(7px);
    opacity: .58
}

.memory-orbit-orb span {
    position: relative;
    z-index: 1;
    width: 18px;
    height: 18px;
    border-radius: 50%;
    background: #fff;
    box-shadow: 0 0 18px #fff, 0 0 34px rgba(0, 245, 255, .9), 0 0 60px rgba(255, 61, 242, .55)
}

.memory-orbit-orb.is-dragging {
    cursor: grabbing;
    border-color: rgba(143, 248, 255, .72);
    transform: translateZ(0) scale(1.08);
    box-shadow: 0 0 0 1px rgba(143, 248, 255, .55), 0 0 48px rgba(0, 245, 255, .68), 0 0 110px rgba(255, 61, 242, .34), inset 16px 12px 24px rgba(255, 255, 255, .24), inset -22px -26px 36px rgba(0, 0, 0, .5)
}

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

@media (max-width:900px) {
    .memory-orbit-orb {
        right: 18px;
        bottom: 18px;
        width: 76px;
        height: 76px
    }

    .memory-orbit-stage {
        transition: transform .12s cubic-bezier(.2, .85, .2, 1)
    }
}

@media (max-width:560px) {
    .memory-orbit-orb {
        right: 14px;
        bottom: 14px;
        width: 64px;
        height: 64px
    }

    .memory-orbit-orb span {
        width: 14px;
        height: 14px
    }
}

/* Cinematic particle core + home reset v28 */
.memory-orbit-scene {
    background: radial-gradient(circle at 50% 42%, rgba(0, 245, 255, .26), transparent 24%), radial-gradient(circle at 48% 46%, rgba(255, 61, 242, .18), transparent 34%), radial-gradient(circle at 18% 18%, rgba(45, 125, 255, .22), transparent 30%), radial-gradient(circle at 86% 78%, rgba(0, 255, 191, .13), transparent 28%), linear-gradient(135deg, rgba(4, 8, 24, .96), rgba(9, 10, 30, .88) 48%, rgba(2, 4, 14, .96)) !important;
    box-shadow: 0 42px 140px rgba(0, 0, 0, .52), 0 0 90px rgba(0, 245, 255, .12), inset 0 1px rgba(255, 255, 255, .12) !important
}

.memory-orbit-scene:before {
    background: conic-gradient(from 0deg at 50% 50%, transparent 0deg, rgba(0, 245, 255, .3) 50deg, transparent 95deg, rgba(255, 61, 242, .24) 155deg, transparent 215deg, rgba(0, 255, 191, .18) 280deg, transparent 360deg), radial-gradient(circle at 50% 50%, transparent 0 26%, rgba(0, 245, 255, .12) 28%, transparent 34%, rgba(255, 61, 242, .1) 39%, transparent 47%) !important;
    opacity: .58 !important;
    filter: blur(10px) !important;
    animation: memoryNebulaSpin 16s linear infinite !important;
    transform: none !important
}

.memory-orbit-scene:after {
    left: 50% !important;
    right: auto !important;
    top: 50% !important;
    bottom: auto !important;
    width: min(760px, 78vw) !important;
    height: min(760px, 78vw) !important;
    border-radius: 50%;
    background: repeating-conic-gradient(from 0deg, rgba(0, 245, 255, .34) 0 1deg, transparent 1deg 11deg), radial-gradient(circle, transparent 0 38%, rgba(0, 245, 255, .22) 39%, transparent 40%, transparent 53%, rgba(255, 61, 242, .14) 54%, transparent 55%) !important;
    box-shadow: 0 0 70px rgba(0, 245, 255, .18), inset 0 0 70px rgba(255, 61, 242, .12) !important;
    opacity: .34 !important;
    transform: translate(-50%, -50%) rotateX(68deg) !important;
    animation: memoryRadarSpin 24s linear infinite !important;
    pointer-events: none
}

.memory-orbit-bg {
    background: linear-gradient(rgba(143, 248, 255, .07) 1px, transparent 1px), linear-gradient(90deg, rgba(143, 248, 255, .045) 1px, transparent 1px), radial-gradient(circle at 50% 50%, rgba(0, 245, 255, .22), transparent 35%) !important;
    background-size: 36px 36px, 36px 36px, 100% 100% !important;
    opacity: .32 !important;
    animation: memoryGridFloat 10s ease-in-out infinite alternate !important
}

.memory-orbit-particles {
    position: absolute;
    left: 50%;
    top: 50%;
    width: 0;
    height: 0;
    z-index: 1;
    transform-style: preserve-3d;
    pointer-events: none;
    animation: particleShellSpin 18s linear infinite
}

.memory-orbit-particles:before,
.memory-orbit-particles:after {
    content: "";
    position: absolute;
    left: 0;
    top: 0;
    width: 430px;
    height: 430px;
    margin: -215px 0 0 -215px;
    border-radius: 50%;
    border: 1px solid rgba(0, 245, 255, .22);
    box-shadow: 0 0 36px rgba(0, 245, 255, .16), inset 0 0 30px rgba(255, 61, 242, .08);
    transform: rotateX(74deg)
}

.memory-orbit-particles:after {
    width: 540px;
    height: 540px;
    margin: -270px 0 0 -270px;
    border-color: rgba(255, 61, 242, .16);
    transform: rotateX(64deg) rotateZ(32deg);
    animation: particleRingPulse 2.8s ease-in-out infinite alternate
}

.memory-orbit-particles i {
    position: absolute;
    left: 0;
    top: 0;
    width: var(--s);
    height: var(--s);
    margin: calc(var(--s) / -2);
    border-radius: 50%;
    background: #eaffff;
    box-shadow: 0 0 10px rgba(255, 255, 255, .95), 0 0 22px rgba(0, 245, 255, .9), 0 0 42px rgba(255, 61, 242, .4);
    transform: rotate(var(--a)) translateX(var(--r)) translateZ(var(--z));
    animation: particleBlink 1.8s ease-in-out infinite alternate;
    animation-delay: var(--d);
    will-change: transform, opacity
}

.memory-orbit-core {
    z-index: 3 !important;
    filter: drop-shadow(0 0 28px rgba(0, 245, 255, .42)) drop-shadow(0 0 58px rgba(255, 61, 242, .24))
}

.memory-orbit-core:before {
    inset: -20px !important;
    border-color: rgba(0, 245, 255, .24) !important;
    border-left-color: rgba(143, 248, 255, .86) !important;
    border-right-color: rgba(255, 61, 242, .7) !important;
    box-shadow: 0 0 28px rgba(0, 245, 255, .28) !important
}

.memory-orbit-core:after {
    inset: -44px !important;
    border-top-color: rgba(0, 255, 191, .68) !important;
    border-bottom-color: rgba(255, 61, 242, .42) !important;
    box-shadow: 0 0 42px rgba(255, 61, 242, .18) !important
}

.memory-orbit-core img {
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .15), 0 0 44px rgba(0, 245, 255, .34), 0 0 92px rgba(255, 61, 242, .2) !important
}

.memory-orbit-card {
    width: 154px !important;
    height: 98px !important;
    margin: -49px 0 0 -77px !important;
    border-radius: 17px !important
}

.memory-orbit-home {
    position: absolute;
    right: 126px;
    bottom: 39px;
    z-index: 12;
    width: 58px;
    height: 58px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 18px;
    display: grid;
    place-items: center;
    padding: 0;
    background: linear-gradient(135deg, rgba(255, 255, 255, .13), rgba(0, 245, 255, .07)), rgba(5, 9, 24, .72);
    box-shadow: 0 18px 45px rgba(0, 0, 0, .36), 0 0 30px rgba(0, 245, 255, .18), inset 0 1px rgba(255, 255, 255, .16);
    color: #eaffff;
    cursor: pointer;
    backdrop-filter: blur(16px);
    transition: transform .18s var(--ease), box-shadow .18s var(--ease), border-color .18s var(--ease)
}

.memory-orbit-home svg {
    width: 28px;
    height: 28px;
    fill: currentColor;
    filter: drop-shadow(0 0 12px rgba(0, 245, 255, .72))
}

.memory-orbit-home:hover {
    transform: translateY(-2px) scale(1.04);
    border-color: rgba(143, 248, 255, .58);
    box-shadow: 0 22px 52px rgba(0, 0, 0, .4), 0 0 42px rgba(0, 245, 255, .32), 0 0 68px rgba(255, 61, 242, .14)
}

.memory-orbit-home:active {
    transform: translateY(0) scale(.97)
}

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

@keyframes memoryRadarSpin {
    to {
        transform: translate(-50%, -50%) rotateX(68deg) rotateZ(360deg)
    }
}

@keyframes memoryGridFloat {
    from {
        background-position: 0 0, 0 0, 50% 50%
    }

    to {
        background-position: 18px 24px, -22px 16px, 50% 52%
    }
}

@keyframes particleShellSpin {
    to {
        transform: rotateY(360deg) rotateZ(360deg)
    }
}

@keyframes particleRingPulse {
    from {
        opacity: .32;
        filter: blur(0)
    }

    to {
        opacity: .92;
        filter: blur(1px)
    }
}

@keyframes particleBlink {
    from {
        opacity: .28;
        transform: rotate(var(--a)) translateX(calc(var(--r) - 10px)) translateZ(var(--z)) scale(.72)
    }

    to {
        opacity: 1;
        transform: rotate(var(--a)) translateX(calc(var(--r) + 10px)) translateZ(var(--z)) scale(1.28)
    }
}

@media (max-width:900px) {
    .memory-orbit-card {
        width: 124px !important;
        height: 80px !important;
        margin: -40px 0 0 -62px !important
    }

    .memory-orbit-home {
        right: 108px;
        bottom: 27px;
        width: 52px;
        height: 52px;
        border-radius: 16px
    }

    .memory-orbit-home svg {
        width: 25px;
        height: 25px
    }

    .memory-orbit-particles:before {
        width: 330px;
        height: 330px;
        margin: -165px 0 0 -165px
    }

    .memory-orbit-particles:after {
        width: 410px;
        height: 410px;
        margin: -205px 0 0 -205px
    }
}

@media (max-width:560px) {
    .memory-orbit-card {
        width: 94px !important;
        height: 62px !important;
        margin: -31px 0 0 -47px !important;
        border-radius: 11px !important
    }

    .memory-orbit-home {
        right: 88px;
        bottom: 20px;
        width: 44px;
        height: 44px;
        border-radius: 14px
    }

    .memory-orbit-home svg {
        width: 22px;
        height: 22px
    }

    .memory-orbit-particles:before {
        width: 240px;
        height: 240px;
        margin: -120px 0 0 -120px
    }

    .memory-orbit-particles:after {
        width: 300px;
        height: 300px;
        margin: -150px 0 0 -150px
    }
}

/* Interaction cursor cleanup v29 */
.memory-orbit-scene,
.memory-orbit-scene:active {
    cursor: default !important
}

.memory-orbit-card,
.memory-orbit-controls button,
.memory-orbit-home {
    cursor: pointer !important
}

.memory-orbit-orb {
    cursor: grab !important
}

.memory-orbit-orb.is-dragging {
    cursor: grabbing !important
}

/* Mobile performance mode v30 */
@media (max-width:700px),
(pointer:coarse) {
    .cursor-orb {
        display: none !important
    }

    #neuralBg {
        opacity: .55 !important
    }

    .aurora:before {
        animation-duration: 34s !important;
        opacity: .55 !important
    }

    .grid-noise {
        opacity: .28 !important;
        background-size: 96px 96px, 96px 96px, 220px 220px !important
    }

    .memory-orbit-scene {
        box-shadow: 0 24px 72px rgba(0, 0, 0, .44), 0 0 34px rgba(0, 245, 255, .08), inset 0 1px rgba(255, 255, 255, .1) !important;
        contain: layout paint style !important;
        perspective: 1250px !important
    }

    .memory-orbit-scene:before {
        opacity: .34 !important;
        filter: blur(4px) !important;
        animation-duration: 28s !important
    }

    .memory-orbit-scene:after {
        display: none !important
    }

    .memory-orbit-bg {
        opacity: .24 !important;
        animation: none !important;
        mask-image: radial-gradient(circle at center, #000 0 55%, transparent 82%) !important;
        background-size: 54px 54px, 54px 54px, 100% 100% !important
    }

    .memory-orbit-stage {
        transition: none !important;
        will-change: transform
    }

    .memory-orbit-lane:before {
        opacity: .18 !important
    }

    .memory-orbit-card {
        -webkit-box-reflect: none !important;
        box-shadow: 0 10px 24px rgba(0, 0, 0, .36), 0 0 13px rgba(0, 245, 255, .13) !important;
        transition: box-shadow .18s ease, border-color .18s ease !important;
        will-change: transform
    }

    .memory-orbit-card:before {
        opacity: .38 !important
    }

    .memory-orbit-card:after {
        box-shadow: inset 0 0 14px rgba(0, 245, 255, .1) !important
    }

    .memory-orbit-card img {
        filter: saturate(1.04) contrast(1.02) brightness(.9) !important;
        transform: none !important;
        transition: none !important
    }

    .memory-orbit-particles {
        animation-duration: 30s !important
    }

    .memory-orbit-particles:before {
        box-shadow: 0 0 16px rgba(0, 245, 255, .12) !important
    }

    .memory-orbit-particles:after {
        display: none !important
    }

    .memory-orbit-particles i:nth-child(n+19) {
        display: none !important
    }

    .memory-orbit-particles i {
        box-shadow: 0 0 8px rgba(255, 255, 255, .82), 0 0 15px rgba(0, 245, 255, .64) !important;
        animation-duration: 2.7s !important
    }

    .memory-orbit-core {
        filter: drop-shadow(0 0 16px rgba(0, 245, 255, .32)) !important
    }

    .memory-orbit-core:before {
        inset: -14px !important;
        box-shadow: 0 0 16px rgba(0, 245, 255, .18) !important
    }

    .memory-orbit-core:after {
        display: none !important
    }

    .memory-orbit-core img {
        box-shadow: 0 0 0 1px rgba(255, 255, 255, .13), 0 0 26px rgba(0, 245, 255, .24) !important;
        animation-duration: 28s !important
    }

    .memory-orbit-home,
    .memory-orbit-orb,
    .memory-orbit-controls button {
        backdrop-filter: none !important
    }

    .memory-orbit-home {
        box-shadow: 0 10px 24px rgba(0, 0, 0, .34), 0 0 18px rgba(0, 245, 255, .14) !important
    }

    .memory-orbit-orb {
        box-shadow: 0 0 0 1px rgba(0, 245, 255, .16), 0 0 24px rgba(0, 245, 255, .28), inset 10px 8px 18px rgba(255, 255, 255, .18), inset -16px -18px 24px rgba(0, 0, 0, .46) !important
    }

    .memory-orbit-orb:after {
        display: none !important
    }
}

/* Mobile reflection trim v31 */
@media (max-width:700px),
(pointer:coarse) {
    .memory-orbit-card {
        -webkit-box-reflect: below 0 linear-gradient(transparent, transparent) !important
    }
}

/* Desktop motion reliability v32 */
.photo-orbit,
.orbit-card,
.orbit-card img,
.orbit-core,
.cinema-main img,
.float-photo,
.marquee-track,
.memory-orbit-particles,
.memory-orbit-core img {
    animation-play-state: running !important
}

.memory-orbit-scene .memory-orbit-lane {
    animation-play-state: running !important
}

@media (prefers-reduced-motion:reduce) {
    .photo-orbit {
        animation: stageFloat 9s ease-in-out infinite !important;
        animation-duration: 9s !important;
        animation-iteration-count: infinite !important
    }

    .orbit-card.is-main {
        animation: mainCard 8s ease-in-out infinite !important;
        animation-duration: 8s !important;
        animation-iteration-count: infinite !important
    }

    .orbit-card:not(.is-main):nth-child(2) {
        animation: sideFloat 7.2s ease-in-out infinite !important;
        animation-iteration-count: infinite !important
    }

    .orbit-card:nth-child(3) {
        animation: sideFloat 7.8s ease-in-out -.8s infinite !important;
        animation-iteration-count: infinite !important
    }

    .orbit-card:nth-child(4) {
        animation: sideFloat 7.5s ease-in-out -1.8s infinite !important;
        animation-iteration-count: infinite !important
    }

    .orbit-card img {
        animation: photoDrift 10s ease-in-out infinite !important;
        animation-duration: 10s !important;
        animation-iteration-count: infinite !important
    }

    .orbit-core {
        animation: corePulse 3.6s ease-in-out infinite !important;
        animation-iteration-count: infinite !important
    }

    .cinema-main img {
        animation: kenBurns 10s ease-in-out infinite !important;
        animation-iteration-count: infinite !important
    }

    .float-photo {
        animation: miniFloat 7.5s ease-in-out infinite !important;
        animation-iteration-count: infinite !important
    }

    .marquee-track {
        animation: marquee 44s linear infinite !important;
        animation-iteration-count: infinite !important
    }

    .memory-orbit-core img {
        animation: coreImageSelfSpin 28s linear infinite !important;
        animation-iteration-count: infinite !important
    }

    .memory-orbit-particles {
        animation: particleShellSpin 34s linear infinite !important;
        animation-iteration-count: infinite !important
    }

    .memory-orbit-particles i {
        animation: particleBlink 3s ease-in-out infinite alternate !important;
        animation-iteration-count: infinite !important
    }
}

/* === In-canvas compact game HUD v36 === */
.game-card .game-hud {
    display: none !important
}

@media (max-width:900px) {
    .game-card.is-mobile-fullscreen::after {
        transition: opacity .14s ease
    }

    .game-card.is-mobile-fullscreen #gameCanvas {
        image-rendering: auto
    }
}

/* === Mobile fullscreen control glass v39 === */
@media (max-width:900px),
(pointer:coarse) {

    .game-card.is-mobile-fullscreen .mobile-float-pause,
    .game-card.is-mobile-fullscreen .mobile-float-start,
    .game-card.is-mobile-fullscreen .mobile-float-exit {
        left: auto !important;
        right: max(8px, env(safe-area-inset-right)) !important;
        transform: none !important;
        min-width: 58px !important;
        min-height: 32px !important;
        height: 32px !important;
        padding: 0 10px !important;
        border-radius: 999px !important;
        border: 1px solid rgba(185, 245, 255, .18) !important;
        background: rgba(3, 7, 18, .36) !important;
        color: rgba(255, 255, 255, .82) !important;
        font-size: 12px !important;
        font-weight: 800 !important;
        letter-spacing: .04em !important;
        opacity: .56 !important;
        box-shadow: 0 8px 24px rgba(0, 0, 0, .18), inset 0 1px rgba(255, 255, 255, .08) !important;
        backdrop-filter: blur(12px) !important;
        -webkit-backdrop-filter: blur(12px) !important;
    }

    .game-card.is-mobile-fullscreen .mobile-float-pause {
        top: max(8px, env(safe-area-inset-top)) !important
    }

    .game-card.is-mobile-fullscreen .mobile-float-start {
        top: calc(max(8px, env(safe-area-inset-top)) + 38px) !important
    }

    .game-card.is-mobile-fullscreen .mobile-float-exit {
        top: calc(max(8px, env(safe-area-inset-top)) + 76px) !important
    }

    .game-card.is-mobile-fullscreen .mobile-float-pause:active,
    .game-card.is-mobile-fullscreen .mobile-float-start:active,
    .game-card.is-mobile-fullscreen .mobile-float-exit:active {
        opacity: .92 !important;
        background: rgba(0, 234, 255, .22) !important
    }

    .game-card.is-mobile-fullscreen .game-mobile-ui {
        z-index: 6 !important
    }

    .game-card.is-mobile-fullscreen .joystick-zone {
        opacity: .46 !important;
        filter: saturate(.9) !important
    }

    .game-card.is-mobile-fullscreen .joystick-base {
        background: rgba(3, 7, 18, .26) !important;
        border-color: rgba(185, 245, 255, .18) !important;
        box-shadow: 0 10px 26px rgba(0, 0, 0, .16), inset 0 0 22px rgba(0, 234, 255, .08) !important
    }

    .game-card.is-mobile-fullscreen .joystick-stick {
        opacity: .72 !important;
        background: rgba(0, 234, 255, .36) !important;
        box-shadow: 0 0 18px rgba(0, 234, 255, .22) !important
    }

    .game-card.is-mobile-fullscreen .skill-pad {
        opacity: .58 !important;
        filter: saturate(.92) !important
    }

    .game-card.is-mobile-fullscreen .skill-button {
        background: rgba(3, 7, 18, .34) !important;
        border-color: rgba(185, 245, 255, .18) !important;
        color: rgba(255, 255, 255, .82) !important;
        box-shadow: 0 10px 26px rgba(0, 0, 0, .18), inset 0 1px rgba(255, 255, 255, .08) !important;
        backdrop-filter: blur(10px) !important;
        -webkit-backdrop-filter: blur(10px) !important
    }

    .game-card.is-mobile-fullscreen .skill-button.is-ready {
        opacity: 1 !important;
        background: rgba(0, 234, 255, .24) !important;
        color: #fff !important;
        box-shadow: 0 0 24px rgba(0, 234, 255, .2), inset 0 1px rgba(255, 255, 255, .12) !important
    }

    .game-card.is-mobile-fullscreen .skill-button:active {
        opacity: .92 !important;
        transform: scale(.96) !important
    }
}

/* === Final performance + accessibility optimization v40 === */
body.game-performance-mode #neuralBg {
    opacity: 0 !important
}

body.game-performance-mode .aurora,
body.game-performance-mode .memory-orbit-particles,
body.game-performance-mode .memory-orbit-particles i,
body.game-performance-mode .photo-orbit,
body.game-performance-mode .orbit-card,
body.game-performance-mode .orbit-card img,
body.game-performance-mode .memory-orbit-core img {
    animation-play-state: paused !important
}

body.game-performance-mode .memory-orbit-bg {
    opacity: .16 !important;
    animation: none !important
}

body.game-performance-mode .memory-orbit-card {
    transition: none !important;
    box-shadow: 0 8px 18px rgba(0, 0, 0, .34) !important
}

@media (prefers-reduced-motion:reduce) {
    html {
        scroll-behavior: auto !important
    }

    *,
    *::before,
    *::after {
        animation: none !important;
        transition: none !important
    }

    .reveal {
        opacity: 1 !important;
        transform: none !important;
        filter: none !important
    }

    #neuralBg {
        opacity: .18 !important
    }

    .hero-video {
        animation: none !important
    }
}

@media (max-width:700px),
(pointer:coarse) {

    .nav,
    .cinema-glass,
    .lab-card,
    .timeline-item,
    .member-card,
    .game-card,
    .join-card,
    .signal-grid,
    .game-card.is-mobile-fullscreen .mobile-float-pause,
    .game-card.is-mobile-fullscreen .mobile-float-start,
    .game-card.is-mobile-fullscreen .mobile-float-exit,
    .game-card.is-mobile-fullscreen .skill-button,
    .game-card.is-mobile-fullscreen .joystick-zone {
        backdrop-filter: none !important;
        -webkit-backdrop-filter: none !important
    }

    .memory-orbit-card img,
    .cinema-main img,
    .orbit-card img {
        filter: saturate(1.03) contrast(1.02) !important
    }

    .memory-orbit-card,
    .game-card.is-mobile-fullscreen .skill-button,
    .game-card.is-mobile-fullscreen .joystick-zone {
        box-shadow: 0 8px 22px rgba(0, 0, 0, .28) !important
    }
}

/* === Game help dialog v42 === */
.game-help-trigger {
    justify-self: start;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 92px;
    height: 42px;
    padding: 0 20px;
    border: 1px solid rgba(0, 245, 255, .34);
    border-radius: 999px;
    background: linear-gradient(135deg, rgba(0, 245, 255, .16), rgba(138, 92, 255, .12));
    color: #effcff;
    font-weight: 900;
    letter-spacing: .18em;
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .06) inset, 0 14px 38px rgba(0, 234, 255, .13);
    cursor: pointer;
    transition: transform .18s var(--ease), border-color .18s ease, box-shadow .18s ease, background .18s ease
}

.game-help-trigger:hover {
    transform: translateY(-2px);
    border-color: rgba(0, 245, 255, .72);
    box-shadow: 0 0 0 1px rgba(255, 255, 255, .1) inset, 0 18px 48px rgba(0, 234, 255, .22), 0 0 28px rgba(138, 92, 255, .18)
}

.game-help-trigger:focus-visible {
    outline: 2px solid rgba(0, 245, 255, .75);
    outline-offset: 4px
}

.game-help-modal {
    position: fixed;
    inset: 0;
    z-index: 2600;
    display: grid;
    place-items: center;
    padding: 24px;
    background: radial-gradient(circle at 50% 36%, rgba(0, 245, 255, .16), transparent 34%), rgba(2, 4, 12, .68);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
    opacity: 0;
    pointer-events: none;
    transition: opacity .2s ease
}

.game-help-modal.open {
    opacity: 1;
    pointer-events: auto
}

.game-help-panel {
    position: relative;
    width: min(440px, calc(100vw - 36px));
    padding: 30px 26px 24px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 30px;
    background: linear-gradient(160deg, rgba(8, 16, 38, .92), rgba(5, 8, 22, .88));
    box-shadow: 0 30px 120px rgba(0, 0, 0, .56), 0 0 70px rgba(0, 245, 255, .16), inset 0 1px rgba(255, 255, 255, .1);
    transform: translateY(12px) scale(.97);
    transition: transform .22s var(--ease)
}

.game-help-modal.open .game-help-panel {
    transform: translateY(0) scale(1)
}

.game-help-panel h3 {
    margin: 8px 0 18px;
    font-size: clamp(28px, 5vw, 42px);
    line-height: .95;
    letter-spacing: -.04em
}

.game-help-close {
    position: absolute;
    right: 16px;
    top: 14px;
    width: 38px;
    height: 38px;
    border-radius: 50%;
    border: 1px solid rgba(255, 255, 255, .14);
    background: rgba(255, 255, 255, .06);
    color: #fff;
    font-size: 24px;
    line-height: 1;
    cursor: pointer
}

.game-help-list {
    display: grid;
    gap: 10px
}

.game-help-list span {
    display: grid;
    grid-template-columns: minmax(112px, .72fr) 1fr;
    gap: 12px;
    align-items: center;
    min-height: 48px;
    padding: 10px 12px;
    border-radius: 18px;
    border: 1px solid rgba(255, 255, 255, .1);
    background: rgba(255, 255, 255, .045)
}

.game-help-list b {
    color: #fff;
    font-size: 14px
}

.game-help-list em {
    font-style: normal;
    color: #bdefff;
    font-size: 13px;
    text-align: right
}

@media (max-width:680px) {
    .game-help-trigger {
        width: max-content;
        height: 40px;
        min-width: 84px;
        padding: 0 18px
    }

    .game-help-modal {
        padding: 18px;
        backdrop-filter: none;
        -webkit-backdrop-filter: none
    }

    .game-help-panel {
        padding: 28px 18px 20px;
        border-radius: 26px
    }

    .game-help-list span {
        grid-template-columns: 1fr;
        gap: 4px
    }

    .game-help-list em {
        text-align: left
    }
}



/* === Game guide atlas === */
.game-guide-panel {
    width: min(1080px, calc(100vw - 34px));
    max-height: min(86vh, 880px);
    padding: 30px 28px 24px;
    overflow: hidden;
}

.game-guide-panel .kicker {
    color: #7efcff;
}

.game-guide-panel h3 {
    margin-bottom: 10px;
}

.game-guide-lead {
    max-width: 860px;
    margin: 0 0 18px;
    color: #ccefff;
    line-height: 1.75;
    font-size: 14px;
}

.game-guide-scroll {
    max-height: calc(min(86vh, 880px) - 150px);
    overflow: auto;
    padding: 0 4px 8px 0;
    scrollbar-width: thin;
    scrollbar-color: rgba(0, 234, 255, .55) rgba(255, 255, 255, .08);
}

.game-guide-scroll::-webkit-scrollbar {
    width: 8px;
}

.game-guide-scroll::-webkit-scrollbar-thumb {
    border-radius: 999px;
    background: linear-gradient(180deg, #00eaff, #8a5cff);
}

.guide-section {
    margin: 16px 0 20px;
    padding: 16px;
    border: 1px solid rgba(255, 255, 255, .1);
    border-radius: 24px;
    background: linear-gradient(135deg, rgba(255, 255, 255, .06), rgba(0, 234, 255, .035));
}

.guide-title {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
}

.guide-title span {
    display: inline-grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 12px;
    background: linear-gradient(135deg, rgba(0, 234, 255, .28), rgba(138, 92, 255, .24));
    color: #fff;
    font-weight: 900;
    font-size: 12px;
    box-shadow: inset 0 1px rgba(255, 255, 255, .22);
}

.guide-title b {
    color: #fff;
    font-size: 18px;
    letter-spacing: -.02em;
}

.guide-cards,
.guide-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
}

.guide-grid.pickups {
    grid-template-columns: repeat(3, minmax(0, 1fr));
}

.guide-cards article,
.guide-grid article {
    display: grid;
    grid-template-columns: 42px 1fr;
    gap: 8px 10px;
    align-items: center;
    min-height: 92px;
    padding: 12px;
    border-radius: 18px;
    border: 1px solid rgba(255, 255, 255, .1);
    background: rgba(2, 8, 24, .5);
    box-shadow: inset 0 1px rgba(255, 255, 255, .08);
}

.guide-cards article i,
.guide-grid article i {
    grid-row: span 2;
    display: grid;
    place-items: center;
    width: 42px;
    height: 42px;
    border-radius: 15px;
    background: radial-gradient(circle at 35% 25%, #fff, rgba(0, 234, 255, .72) 34%, rgba(138, 92, 255, .32));
    color: #06101e;
    font-style: normal;
    font-weight: 950;
    box-shadow: 0 0 22px rgba(0, 234, 255, .28);
}

.guide-cards article b,
.guide-grid article b {
    color: #fff;
    font-size: 14px;
}

.guide-cards article em,
.guide-grid article em {
    color: #bdefff;
    font-style: normal;
    font-size: 12px;
    line-height: 1.55;
}

.guide-note-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
}

.guide-note-grid p,
.artifact-line {
    margin: 0;
    padding: 12px 14px;
    border-radius: 18px;
    border: 1px solid rgba(255, 255, 255, .1);
    background: rgba(255, 255, 255, .045);
    color: #cbefff;
    font-size: 13px;
    line-height: 1.7;
}

.guide-note-grid strong,
.artifact-line b {
    color: #fff;
}

.guide-note-grid code {
    color: #ffe178;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
}

.artifact-line {
    display: grid;
    grid-template-columns: 150px repeat(4, 1fr);
    gap: 8px;
    margin-top: 10px;
    align-items: center;
}

.artifact-line span,
.artifact-line em {
    padding: 8px 10px;
    border-radius: 14px;
    background: rgba(0, 234, 255, .07);
    font-style: normal;
}

.artifact-line em {
    color: #bdefff;
}

.guide-table {
    display: grid;
    grid-template-columns: 1.1fr .72fr .72fr 2.6fr;
    overflow: hidden;
    border-radius: 18px;
    border: 1px solid rgba(255, 255, 255, .1);
}

.guide-table span,
.guide-table b,
.guide-table em {
    min-height: 38px;
    padding: 9px 11px;
    border-right: 1px solid rgba(255, 255, 255, .08);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
    font-size: 12px;
    line-height: 1.55;
}

.guide-table span {
    color: #fff;
    font-weight: 900;
    background: rgba(0, 234, 255, .12);
}

.guide-table b {
    color: #fff;
    background: rgba(255, 255, 255, .035);
}

.guide-table em {
    color: #cbefff;
    font-style: normal;
    background: rgba(2, 8, 24, .42);
}

.guide-table.boss {
    grid-template-columns: 1.1fr .55fr .55fr 2.45fr;
}

@media (max-width:980px) {
    .guide-cards,
    .guide-grid,
    .guide-grid.pickups,
    .guide-note-grid {
        grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    .artifact-line {
        grid-template-columns: 1fr 1fr;
    }
}

@media (max-width:680px) {
    .game-guide-panel {
        width: calc(100vw - 20px);
        max-height: 90vh;
        padding: 26px 14px 16px;
        border-radius: 24px;
    }

    .game-guide-scroll {
        max-height: calc(90vh - 138px);
        padding-right: 2px;
    }

    .guide-section {
        padding: 12px;
        border-radius: 20px;
    }

    .guide-cards,
    .guide-grid,
    .guide-grid.pickups,
    .guide-note-grid,
    .artifact-line {
        grid-template-columns: 1fr;
    }

    .guide-table,
    .guide-table.boss {
        grid-template-columns: 1fr 58px 58px 1.45fr;
    }

    .guide-table span,
    .guide-table b,
    .guide-table em {
        padding: 8px 7px;
        font-size: 11px;
    }
}



/* === Game guide real sprites v03 === */
.guide-cards article i.pickup-token,
.guide-grid article i.pickup-token {
    position: relative;
    isolation: isolate;
    overflow: visible;
    background: var(--pickup-bg, radial-gradient(circle at 35% 25%, #fff, rgba(0, 234, 255, .78) 34%, rgba(138, 92, 255, .36)));
    color: #06101e;
}

.pickup-token::before,
.enemy-token::before,
.boss-token::before {
    content: "";
    position: absolute;
    inset: -7px;
    border-radius: inherit;
    background: radial-gradient(circle, var(--sprite-glow, rgba(0, 234, 255, .38)), transparent 64%);
    filter: blur(5px);
    z-index: -1;
}

.pickup-token span {
    position: relative;
    z-index: 1;
}

.pickup-good,
.pickup-heal,
.pickup-invincible,
.pickup-blackhole,
.pickup-timewarp {
    border-radius: 50% !important;
}

.pickup-shield,
.pickup-guardian,
.pickup-sanctuary {
    clip-path: polygon(50% 0, 92% 24%, 92% 76%, 50% 100%, 8% 76%, 8% 24%);
}

.pickup-charge,
.pickup-nova,
.pickup-overdrive,
.pickup-miracle,
.pickup-jackpot {
    clip-path: polygon(50% 0, 61% 32%, 96% 35%, 68% 55%, 78% 90%, 50% 70%, 22% 90%, 32% 55%, 4% 35%, 39% 32%);
}

.pickup-blade,
.pickup-laser,
.pickup-splitter {
    clip-path: polygon(14% 62%, 50% 4%, 92% 26%, 58% 48%, 44% 96%);
}

.pickup-bullet,
.pickup-storm,
.pickup-drone,
.pickup-surge {
    clip-path: polygon(96% 50%, 14% 8%, 30% 50%, 14% 92%);
}

.pickup-speed,
.pickup-blink,
.pickup-phase {
    clip-path: polygon(0 10%, 76% 50%, 0 90%, 26% 50%);
}

.pickup-magnet,
.pickup-freeze,
.pickup-cleanser,
.pickup-echo {
    border-radius: 36% 64% 38% 62% / 60% 34% 66% 40% !important;
}

.pickup-mine,
.pickup-meteor,
.pickup-gold,
.pickup-repair,
.pickup-thornmail,
.pickup-vampire,
.pickup-berserk {
    clip-path: polygon(50% 0, 66% 28%, 98% 34%, 74% 57%, 80% 90%, 50% 76%, 20% 90%, 26% 57%, 2% 34%, 34% 28%);
}

.pickup-good { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #00ffbf 36%, #07664f); --sprite-glow: rgba(0, 255, 191, .55); }
.pickup-shield,.pickup-guardian,.pickup-repair,.pickup-sanctuary { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #8a5cff 36%, #251155); --sprite-glow: rgba(138, 92, 255, .6); }
.pickup-charge,.pickup-gold,.pickup-overdrive,.pickup-jackpot { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #ffe178 34%, #8a5600); --sprite-glow: rgba(255, 225, 120, .65); }
.pickup-blade,.pickup-vampire,.pickup-splitter,.pickup-samurai { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #ff3df2 34%, #5b0d62); --sprite-glow: rgba(255, 61, 242, .6); }
.pickup-bullet,.pickup-storm,.pickup-laser,.pickup-drone,.pickup-surge { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #00eaff 34%, #07345c); --sprite-glow: rgba(0, 234, 255, .6); }
.pickup-speed,.pickup-thornmail { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #27ff7a 34%, #09572b); --sprite-glow: rgba(39, 255, 122, .58); }
.pickup-freeze,.pickup-timewarp,.pickup-cleanser { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #7ec8ff 34%, #102f66); --sprite-glow: rgba(126, 200, 255, .6); }
.pickup-blackhole,.pickup-phase,.pickup-echo { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #7b4dff 34%, #160c4d); --sprite-glow: rgba(123, 77, 255, .62); }
.pickup-mine,.pickup-meteor,.pickup-berserk { --pickup-bg: radial-gradient(circle at 35% 25%, #fff, #ff7c4d 34%, #60200e); --sprite-glow: rgba(255, 124, 77, .62); }

.guide-table i.guide-token {
    position: relative;
    display: grid;
    place-items: center;
    min-height: 38px;
    padding: 6px;
    border-right: 1px solid rgba(255, 255, 255, .08);
    border-bottom: 1px solid rgba(255, 255, 255, .08);
    background: rgba(2, 8, 24, .42);
    font-style: normal;
}

.enemy-table {
    grid-template-columns: 54px 1.1fr .72fr .72fr 2.6fr;
}

.enemy-token::after {
    content: "";
    width: 26px;
    height: 26px;
    display: block;
    background: var(--enemy-color, #ff3f68);
    box-shadow: 0 0 18px var(--enemy-color, #ff3f68);
    border: 1px solid rgba(255, 255, 255, .72);
}

.enemy-token.runner::after { --enemy-color: #ff7c4d; clip-path: polygon(50% 0, 96% 100%, 4% 100%); }
.enemy-token.seeker::after { --enemy-color: #ff3f68; clip-path: polygon(50% 0, 100% 50%, 50% 100%, 0 50%); }
.enemy-token.orbit::after { --enemy-color: #b56cff; width: 30px; height: 20px; border-radius: 50%; transform: rotate(35deg); }
.enemy-token.brute::after { --enemy-color: #ffb14a; border-radius: 4px; }
.enemy-token.sniper::after { --enemy-color: #7ec8ff; clip-path: polygon(100% 50%, 8% 0, 28% 50%, 8% 100%); }

.boss-table {
    grid-template-columns: 58px 1.1fr .55fr .55fr 2.45fr;
}

.boss-token::after {
    content: attr(data-glyph);
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    color: #fff;
    font-style: normal;
    font-weight: 950;
    font-size: 13px;
    text-shadow: 0 1px 6px rgba(0, 0, 0, .65);
    background: var(--boss-bg, radial-gradient(circle at 35% 25%, #fff, #00eaff 32%, #2c1b72));
    border: 1px solid rgba(255,255,255,.78);
    box-shadow: 0 0 18px var(--boss-color, rgba(0,234,255,.65)), inset 0 0 12px rgba(255,255,255,.18);
    clip-path: polygon(50% 0, 62% 27%, 91% 17%, 78% 45%, 100% 64%, 69% 67%, 69% 100%, 50% 76%, 31% 100%, 31% 67%, 0 64%, 22% 45%, 9% 17%, 38% 27%);
}

.boss-token.serpent,.boss-token.glitch { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #00ffbf 34%, #094534); --boss-color: rgba(0,255,191,.68); }
.boss-token.prism,.boss-token.samurai { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #ff3df2 34%, #4b1150); --boss-color: rgba(255,61,242,.72); }
.boss-token.hydra,.boss-token.titan { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #ffb14a 34%, #5c2d06); --boss-color: rgba(255,177,74,.72); }
.boss-token.phantom,.boss-token.void,.boss-token.aurora { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #8a5cff 34%, #241052); --boss-color: rgba(138,92,255,.72); }
.boss-token.reactor,.boss-token.crown,.boss-token.clock,.boss-token.satellite,.boss-token.monolith { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #ffe178 32%, #31364f); --boss-color: rgba(255,225,120,.7); }
.boss-token.mantis,.boss-token.thorn { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #27ff7a 34%, #0b4e25); --boss-color: rgba(39,255,122,.68); }
.boss-token.nebula,.boss-token.railgun,.boss-token.cube,.boss-token.leviathan { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #7ec8ff 34%, #123461); --boss-color: rgba(126,200,255,.72); }
.boss-token.eclipse,.boss-token.lotus,.boss-token.siren { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #ff8dff 34%, #51225a); --boss-color: rgba(255,141,255,.7); }
.boss-token.swarm,.boss-token.comet,.boss-token.phoenix,.boss-token.dragon { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #ff7c4d 34%, #5f200c); --boss-color: rgba(255,124,77,.7); }
.boss-token.mirror { --boss-bg: radial-gradient(circle at 35% 25%, #fff, #b8f7ff 34%, #234d62); --boss-color: rgba(184,247,255,.72); }

@media (max-width:680px) {
    .enemy-table,
    .boss-table,
    .guide-table.boss {
        grid-template-columns: 42px 1fr 52px 52px 1.35fr;
    }

    .boss-token::after {
        width: 30px;
        height: 30px;
        font-size: 11px;
    }

    .enemy-token::after {
        width: 23px;
        height: 23px;
    }
}

/* === Orbit video background v45 === */
.memory-orbit-scene {
    isolation: isolate;
    background: #020714 !important
}

.memory-orbit-backdrop {
    position: absolute !important;
    inset: -84px !important;
    z-index: 0 !important;
    width: calc(100% + 168px) !important;
    height: calc(100% + 168px) !important;
    max-width: none !important;
    object-fit: cover !important;
    opacity: .92 !important;
    filter: blur(8px) saturate(1.18) contrast(1.06) brightness(.94) !important;
    transform: scale(1.12) !important;
    pointer-events: none !important;
    user-select: none !important;
    transition: opacity .45s ease, filter .45s ease !important
}

.memory-orbit-slides {
    position: absolute !important;
    inset: -80px !important;
    z-index: 1 !important;
    pointer-events: none !important;
    overflow: hidden !important;
    border-radius: inherit !important;
    background: transparent !important;
    --orbit-bg-poster: url('../assets/videos/neural-loop-poster.webp')
}

.memory-orbit-slides::before {
    content: "";
    position: absolute;
    inset: -34px;
    background: radial-gradient(circle at 50% 50%, rgba(0, 245, 255, .18), transparent 31%), linear-gradient(135deg, rgba(255, 61, 242, .12), transparent 52%);
    opacity: .86;
    filter: blur(8px);
    pointer-events: none;
    z-index: 2
}

.memory-orbit-slides::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 50% 50%, transparent 0 30%, rgba(0, 245, 255, .13) 48%, transparent 70%), linear-gradient(180deg, rgba(2, 5, 16, .04), rgba(2, 5, 16, .32));
    pointer-events: none;
    z-index: 3
}

.memory-orbit-slides img:not(.memory-bg-img) {
    display: none !important
}

.memory-orbit-slides video {
    position: absolute;
    inset: 0;
    z-index: 1;
    width: 100%;
    height: 100%;
    object-fit: cover;
    opacity: 0;
    filter: blur(10px) saturate(1.16) contrast(1.05) brightness(.86);
    transform: scale(1.15);
    transition: opacity .9s ease;
    will-change: opacity;
    pointer-events: none
}

.memory-orbit-slides video.is-on {
    opacity: .58
}

.memory-orbit-bg {
    display: none !important;
    background: none !important;
    animation: none !important;
    opacity: 0 !important
}

.memory-orbit-scene:before,
.memory-orbit-scene:after {
    pointer-events: none
}

.memory-orbit-scene:before {
    z-index: 2 !important;
    opacity: .62 !important
}

.memory-orbit-scene:after {
    z-index: 2 !important
}

.memory-orbit-stage {
    position: absolute;
    inset: 0;
    z-index: 4 !important
}

.memory-orbit-controls,
.memory-orbit-home,
.memory-orbit-orb {
    z-index: 7 !important
}

body.game-performance-mode .memory-orbit-backdrop {
    opacity: .7 !important;
    filter: blur(8px) saturate(1.04) brightness(.8) !important;
    transition: none !important
}

body.game-performance-mode .memory-orbit-slides video {
    opacity: 0 !important;
    transition: none !important
}

@media (max-width:700px),
(pointer:coarse) {
    .memory-orbit-backdrop {
        inset: -56px !important;
        width: calc(100% + 112px) !important;
        height: calc(100% + 112px) !important;
        opacity: .86 !important;
        filter: blur(7px) saturate(1.12) brightness(.8) !important;
        transform: scale(1.14) !important
    }

    .memory-orbit-slides {
        inset: -52px !important
    }

    .memory-orbit-slides video {
        filter: blur(9px) saturate(1.06) brightness(.74);
        transform: scale(1.18)
    }

    .memory-orbit-slides video.is-on {
        opacity: .32
    }
}

@media (prefers-reduced-motion:reduce) {

    .memory-orbit-backdrop,
    .memory-orbit-slides video {
        transition: none !important
    }
}


/* === Desktop orbit visual layer v50: particles + music notes only === */
.memory-orbit-vfx {
    display: none;
    pointer-events: none
}

@media (min-width:701px) {
    .memory-orbit-vfx {
        display: block;
        position: absolute;
        inset: 0;
        z-index: 6;
        overflow: hidden;
        border-radius: inherit;
        perspective: 1200px;
        transform-style: preserve-3d;
        mix-blend-mode: screen;
        mask-image: radial-gradient(ellipse at 50% 50%, transparent 0 14%, #000 25%, #000 78%, transparent 96%)
    }

    .memory-orbit-vfx:before,
    .memory-orbit-vfx:after {
        content: "";
        position: absolute;
        left: 50%;
        top: 50%;
        width: 58%;
        aspect-ratio: 1;
        border-radius: 50%;
        transform: translate(-50%, -50%) rotateX(66deg);
        border: 1px solid rgba(143, 248, 255, .24);
        box-shadow: 0 0 24px rgba(0, 245, 255, .18), inset 0 0 26px rgba(255, 61, 242, .08);
        opacity: .62;
        animation: vfxRingBreath 3.6s ease-in-out infinite alternate
    }

    .memory-orbit-vfx:after {
        width: 74%;
        border-color: rgba(255, 61, 242, .18);
        transform: translate(-50%, -50%) rotateX(72deg) rotateZ(28deg);
        animation: vfxRingSpin 19s linear infinite
    }

    .orbit-spark,
    .orbit-note {
        position: absolute;
        left: 50%;
        top: 50%;
        will-change: transform, opacity;
        pointer-events: none
    }

    .orbit-spark {
        width: var(--s);
        height: var(--s);
        margin: calc(var(--s) / -2) 0 0 calc(var(--s) / -2);
        border-radius: 50%;
        background: #efffff;
        box-shadow: 0 0 10px rgba(255, 255, 255, .95), 0 0 22px rgba(0, 245, 255, .9), 0 0 42px rgba(255, 61, 242, .42);
        animation: vfxSparkOrbit var(--dur) linear infinite, vfxSparkPulse 1.9s ease-in-out infinite alternate;
        animation-delay: var(--d), calc(var(--d) * .42)
    }

    .orbit-spark:nth-child(3n+1) {
        background: #bffcff;
        box-shadow: 0 0 10px rgba(191, 252, 255, .95), 0 0 25px rgba(0, 245, 255, .92), 0 0 48px rgba(45, 125, 255, .38)
    }

    .orbit-spark:nth-child(3n+2) {
        background: #ffd7ff;
        box-shadow: 0 0 10px rgba(255, 215, 255, .95), 0 0 24px rgba(255, 61, 242, .75), 0 0 44px rgba(0, 245, 255, .38)
    }

    .orbit-note {
        width: 32px;
        height: 32px;
        margin: -16px 0 0 -16px;
        display: grid;
        place-items: center;
        color: rgba(232, 255, 255, .95);
        font-size: calc(var(--fs) * 1.16);
        font-weight: 900;
        line-height: 1;
        text-shadow: 0 0 10px rgba(255, 255, 255, .72), 0 0 22px rgba(0, 245, 255, .82), 0 0 42px rgba(255, 61, 242, .45);
        animation: vfxNoteOrbit var(--dur) linear infinite;
        animation-delay: var(--d);
        opacity: .82
    }

    .orbit-note:nth-last-child(2n) {
        color: rgba(255, 220, 255, .96);
        text-shadow: 0 0 10px rgba(255, 255, 255, .68), 0 0 22px rgba(255, 61, 242, .72), 0 0 44px rgba(0, 245, 255, .38)
    }

    .memory-orbit-card:hover ~ .orbit-spark {
        opacity: 1
    }
}

body.game-performance-mode .memory-orbit-vfx {
    display: block
}

@media (max-width:700px) {
    .memory-orbit-vfx {
        display: none !important
    }
}

@media (prefers-reduced-motion:reduce) {
    .memory-orbit-vfx,
    .orbit-spark,
    .orbit-note,
    .memory-orbit-vfx:before,
    .memory-orbit-vfx:after {
        animation: none !important
    }
}

@keyframes vfxSparkOrbit {
    0% {
        transform: rotate(var(--a)) translate3d(var(--r), -18px, var(--z)) scale(.62);
        opacity: .18
    }

    38% {
        opacity: .96
    }

    72% {
        opacity: .58
    }

    100% {
        transform: rotate(calc(var(--a) + 360deg)) translate3d(var(--r), 18px, var(--zn)) scale(1.08);
        opacity: .22
    }
}

@keyframes vfxSparkPulse {
    from {
        filter: brightness(.82)
    }

    to {
        filter: brightness(1.45)
    }
}

@keyframes vfxNoteOrbit {
    0% {
        transform: rotate(var(--a)) translateX(var(--r)) translateY(var(--y)) rotate(0deg) scale(.72);
        opacity: 0
    }

    12% {
        opacity: .86
    }

    50% {
        transform: rotate(calc(var(--a) + 180deg)) translateX(calc(var(--r) * .9)) translateY(calc(var(--y) * -.55)) rotate(-180deg) scale(1.08);
        opacity: .95
    }

    88% {
        opacity: .78
    }

    100% {
        transform: rotate(calc(var(--a) + 360deg)) translateX(var(--r)) translateY(var(--y)) rotate(-360deg) scale(.72);
        opacity: 0
    }
}

@keyframes vfxRingBreath {
    from {
        opacity: .32;
        transform: translate(-50%, -50%) rotateX(66deg) scale(.96)
    }

    to {
        opacity: .74;
        transform: translate(-50%, -50%) rotateX(66deg) scale(1.04)
    }
}

@keyframes vfxRingSpin {
    to {
        transform: translate(-50%, -50%) rotateX(72deg) rotateZ(388deg)
    }
}

/* === Orbit VFX desktop visibility fix v56 === */
@media (min-width:561px) {
    .memory-orbit-vfx {
        display: block !important;
        position: absolute !important;
        inset: 0 !important;
        z-index: 18 !important;
        opacity: 1 !important;
        visibility: visible !important;
        overflow: hidden !important;
        pointer-events: none !important;
        border-radius: inherit !important;
        mix-blend-mode: normal !important;
        mask-image: none !important;
        -webkit-mask-image: none !important;
        contain: layout paint;
    }

    .memory-orbit-vfx:before,
    .memory-orbit-vfx:after {
        opacity: .82 !important;
        border-width: 1px !important;
        box-shadow: 0 0 30px rgba(0, 245, 255, .26), inset 0 0 34px rgba(255, 61, 242, .12) !important;
    }

    .orbit-spark,
    .orbit-note {
        display: grid !important;
        visibility: visible !important;
        opacity: 1;
        z-index: 2 !important;
    }

    .orbit-spark {
        width: calc(var(--s) + 1px) !important;
        height: calc(var(--s) + 1px) !important;
        background: #ffffff !important;
        box-shadow: 0 0 8px rgba(255,255,255,.98), 0 0 22px rgba(0,245,255,.95), 0 0 46px rgba(255,61,242,.62) !important;
    }

    .orbit-note {
        width: 42px !important;
        height: 42px !important;
        margin: -21px 0 0 -21px !important;
        place-items: center !important;
        color: #ffffff !important;
        font-size: clamp(20px, calc(var(--fs) * 1.38), 34px) !important;
        font-weight: 950 !important;
        opacity: .98 !important;
        -webkit-text-stroke: .45px rgba(0, 245, 255, .72);
        text-shadow: 0 0 2px rgba(2, 6, 18, .95), 0 0 12px rgba(255,255,255,.95), 0 0 28px rgba(0,245,255,.95), 0 0 56px rgba(255,61,242,.72) !important;
        filter: drop-shadow(0 0 12px rgba(0,245,255,.55));
    }

    .orbit-note:nth-last-child(2n) {
        color: #ffdfff !important;
        -webkit-text-stroke-color: rgba(255, 61, 242, .72);
        text-shadow: 0 0 2px rgba(2, 6, 18, .95), 0 0 12px rgba(255,255,255,.9), 0 0 28px rgba(255,61,242,.92), 0 0 56px rgba(0,245,255,.56) !important;
    }
}

@media (max-width:560px) {
    .memory-orbit-vfx {
        display: none !important;
    }
}


/* === Orbit VFX desktop/pointer visibility hardening v57 === */
.memory-orbit-scene {
    isolation: isolate;
}

@media (min-width:561px), (hover:hover) and (pointer:fine) {
    .memory-orbit-vfx {
        display: block !important;
        position: absolute !important;
        inset: 0 !important;
        z-index: 18 !important;
        opacity: 1 !important;
        visibility: visible !important;
        mix-blend-mode: normal !important;
        mask-image: none !important;
        -webkit-mask-image: none !important;
    }

    .orbit-note {
        display: grid !important;
        opacity: .99 !important;
        visibility: visible !important;
        color: #ffffff !important;
        -webkit-text-stroke: .55px rgba(0, 245, 255, .82);
        text-shadow: 0 0 3px rgba(2, 6, 18, .96), 0 0 16px rgba(255,255,255,.98), 0 0 34px rgba(0,245,255,.98), 0 0 70px rgba(255,61,242,.78) !important;
        animation: vfxNoteOrbit var(--dur) linear infinite !important;
        animation-delay: var(--d) !important;
    }

    .orbit-spark {
        display: grid !important;
        opacity: 1 !important;
        visibility: visible !important;
        animation: vfxSparkOrbit var(--dur) linear infinite, vfxSparkPulse 1.9s ease-in-out infinite alternate !important;
        animation-delay: var(--d), calc(var(--d) * .42) !important;
    }

    .memory-orbit-vfx:before {
        animation: vfxRingBreath 3.6s ease-in-out infinite alternate !important;
    }

    .memory-orbit-vfx:after {
        animation: vfxRingSpin 19s linear infinite !important;
    }
}

@media (max-width:560px) and (pointer:coarse) {
    .memory-orbit-vfx {
        display: none !important;
    }
}
/* Python quiz challenge */
.game-revive-action,.game-time-action{box-shadow:0 0 0 1px rgba(86,255,215,.18),0 0 28px rgba(0,234,255,.22)}
.mobile-float-revive{display:none;position:absolute;z-index:16;right:6.2rem;top:max(.7rem,env(safe-area-inset-top));min-width:3.3rem;height:2.4rem;border:1px solid rgba(87,255,218,.45);border-radius:999px;background:rgba(3,11,28,.58);color:#dffff8;font:800 .78rem/1 system-ui;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px);box-shadow:0 0 20px rgba(0,234,255,.2)}
.quiz-modal{position:fixed;inset:0;z-index:1500;display:grid;place-items:center;padding:clamp(.75rem,3vw,2rem);background:radial-gradient(circle at 50% 25%,rgba(0,234,255,.13),transparent 36%),rgba(1,4,14,.82);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);opacity:0;visibility:hidden;transition:opacity .22s ease,visibility .22s ease}
.quiz-modal.open{opacity:1;visibility:visible}
body.quiz-open{overflow:hidden}
.quiz-panel{position:relative;isolation:isolate;width:min(720px,100%);max-height:min(92dvh,780px);overflow:hidden;border:1px solid rgba(133,236,255,.28);border-radius:28px;background:linear-gradient(145deg,rgba(9,19,43,.97),rgba(3,8,24,.98));box-shadow:0 32px 100px rgba(0,0,0,.58),0 0 54px rgba(0,234,255,.12)}
.quiz-panel:before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:linear-gradient(120deg,transparent 25%,rgba(255,255,255,.035) 48%,transparent 70%),repeating-linear-gradient(0deg,rgba(255,255,255,.018) 0 1px,transparent 1px 5px)}
.quiz-glow{position:absolute;z-index:-1;width:280px;height:280px;right:-100px;top:-130px;border-radius:50%;background:rgba(0,234,255,.22);filter:blur(70px);pointer-events:none}
.quiz-close{position:absolute;z-index:3;right:1rem;top:1rem;width:2.4rem;height:2.4rem;border:1px solid rgba(255,255,255,.15);border-radius:50%;background:rgba(255,255,255,.06);color:#dffbff;font:500 1.55rem/1 system-ui;cursor:pointer}
.quiz-close:hover{background:rgba(255,255,255,.12);transform:rotate(8deg)}
.quiz-head{display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding:1.45rem 4.5rem .8rem 1.55rem}
.quiz-head h3{margin:.3rem 0 0;color:#fff;font-size:clamp(1.35rem,3vw,2rem);letter-spacing:-.03em}
.quiz-score{display:flex;align-items:baseline;gap:.2rem;padding:.55rem .85rem;border:1px solid rgba(87,255,218,.2);border-radius:16px;background:rgba(87,255,218,.06);color:#91ffe4}
.quiz-score strong{font:900 1.65rem/1 system-ui}.quiz-score span{font-weight:800;opacity:.76}
.quiz-meta{display:grid;grid-template-columns:auto auto 1fr;align-items:center;gap:.55rem;padding:0 1.55rem 1rem;color:#a9c7d6;font-size:.78rem;font-weight:800}
.quiz-meta>span:not(.quiz-timer){padding:.38rem .65rem;border:1px solid rgba(255,255,255,.09);border-radius:999px;background:rgba(255,255,255,.035)}
.quiz-timer{position:relative;justify-self:stretch;overflow:hidden;height:2rem;border:1px solid rgba(0,234,255,.2);border-radius:999px;background:rgba(0,0,0,.26);display:flex;align-items:center;justify-content:flex-end;padding:0 .75rem;color:#e8fdff}
.quiz-timer i{position:absolute;inset:0 auto 0 0;width:100%;background:linear-gradient(90deg,rgba(87,255,218,.3),rgba(0,234,255,.12));transform-origin:left center;transition:transform .1s linear}
.quiz-timer b{position:relative;min-width:2.2rem;text-align:right;font-variant-numeric:tabular-nums}
.quiz-body{overflow:auto;max-height:calc(92dvh - 190px);padding:0 1.55rem 1.2rem;overscroll-behavior:contain}
.quiz-question{margin:.15rem 0 1rem;color:#f6fdff;font:800 clamp(1rem,2.4vw,1.22rem)/1.65 system-ui}
.quiz-code{margin:0 0 1rem;padding:1rem 1.1rem;overflow:auto;border:1px solid rgba(0,234,255,.15);border-radius:16px;background:#030817;color:#b9fff0;font:700 .9rem/1.65 "Cascadia Code",Consolas,monospace;white-space:pre}
.quiz-options{display:grid;gap:.7rem}
.quiz-option{position:relative;width:100%;min-height:3.35rem;padding:.8rem 1rem .8rem 3.2rem;border:1px solid rgba(182,225,244,.14);border-radius:15px;background:rgba(255,255,255,.035);color:#dfeef5;text-align:left;font:700 .92rem/1.45 system-ui;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}
.quiz-option:before{content:attr(data-letter);position:absolute;left:.8rem;top:50%;translate:0 -50%;display:grid;place-items:center;width:1.75rem;height:1.75rem;border:1px solid rgba(0,234,255,.25);border-radius:9px;color:#7ff5ff;background:rgba(0,234,255,.06);font-weight:900}
.quiz-option:hover:not(:disabled){transform:translateX(4px);border-color:rgba(0,234,255,.48);background:rgba(0,234,255,.075)}
.quiz-option:disabled{cursor:default}.quiz-option.correct{border-color:rgba(87,255,154,.62);background:rgba(39,255,122,.12);color:#dffff0}.quiz-option.correct:before{border-color:#57ff9a;color:#03180d;background:#57ff9a}
.quiz-option.wrong{border-color:rgba(255,74,112,.72);background:rgba(255,63,104,.13);color:#ffe5eb}.quiz-option.wrong:before{border-color:#ff587a;color:#fff;background:#c5244a}
.quiz-feedback{margin-top:.85rem;padding:.85rem 1rem;border:1px solid rgba(255,255,255,.1);border-radius:14px;background:rgba(0,0,0,.24)}
.quiz-feedback strong{color:#fff}.quiz-feedback p{margin:.35rem 0 0;color:#b9d0da;font-size:.86rem;line-height:1.55}
.quiz-feedback.is-correct{border-color:rgba(87,255,154,.32)}.quiz-feedback.is-wrong{border-color:rgba(255,74,112,.34)}

.quiz-next{display:block;width:100%;min-height:2.85rem;margin-top:.8rem;border:1px solid rgba(0,234,255,.48);border-radius:12px;background:linear-gradient(135deg,rgba(0,234,255,.2),rgba(138,92,255,.2));color:#eaffff;font:800 .88rem/1 system-ui;letter-spacing:.08em;cursor:pointer;box-shadow:0 10px 28px rgba(0,174,234,.12);transition:transform .16s ease,filter .16s ease,border-color .16s ease}
.quiz-next:hover{transform:translateY(-1px);filter:brightness(1.12);border-color:rgba(87,255,218,.72)}
.quiz-next:active{transform:translateY(0) scale(.985)}
.quiz-next[hidden]{display:none!important}
.quiz-foot{padding:.75rem 1.55rem 1.05rem;color:#7894a2;font-size:.75rem;text-align:center}
.game-card.guard-locked canvas{filter:saturate(.55) brightness(.62)}
@media(max-width:700px){
  .quiz-modal{padding:0;place-items:stretch}.quiz-panel{width:100%;height:100dvh;max-height:none;border-radius:0;border-width:0;background:linear-gradient(160deg,#07162e,#020713 72%)}
  .quiz-head{padding:max(1rem,env(safe-area-inset-top)) 4rem .65rem 1rem}.quiz-head h3{font-size:1.25rem}.quiz-score{padding:.45rem .7rem}.quiz-score strong{font-size:1.35rem}
  .quiz-close{top:max(.7rem,env(safe-area-inset-top));right:.7rem}.quiz-meta{grid-template-columns:auto auto;gap:.45rem;padding:0 1rem .8rem}.quiz-timer{grid-column:1/-1;height:1.8rem}
  .quiz-body{max-height:calc(100dvh - 175px);padding:0 1rem calc(1rem + env(safe-area-inset-bottom))}.quiz-question{font-size:1rem;line-height:1.55}.quiz-code{font-size:.8rem;padding:.8rem}.quiz-options{gap:.58rem}.quiz-option{min-height:3.15rem;padding:.7rem .8rem .7rem 3rem;font-size:.86rem}.quiz-foot{display:none}
  .game-card:fullscreen .mobile-float-revive,.game-card:-webkit-full-screen .mobile-float-revive{display:block}
}
@media(prefers-reduced-motion:reduce){.quiz-modal,.quiz-option,.quiz-close{transition:none}}

.game-revive-action[hidden],.game-time-action[hidden],.mobile-float-revive[hidden],.quiz-code[hidden],.quiz-feedback[hidden]{display:none!important}

/* In-canvas game over choices */
.game-card{position:relative}
.game-over-choice{position:absolute;z-index:18;display:grid;place-items:center;overflow:hidden;border-radius:24px;background:radial-gradient(circle at 50% 42%,rgba(0,234,255,.13),transparent 36%),rgba(1,5,16,.38);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px);pointer-events:auto}
.game-over-choice[hidden],#gameStart[hidden]{display:none!important}
.game-over-choice-panel{position:relative;isolation:isolate;width:min(390px,calc(100% - 32px));padding:clamp(1.1rem,3vw,1.65rem);overflow:hidden;border:1px solid rgba(138,240,255,.32);border-radius:24px;background:linear-gradient(145deg,rgba(7,20,43,.94),rgba(3,8,23,.92));box-shadow:0 24px 64px rgba(0,0,0,.48),0 0 42px rgba(0,234,255,.14);text-align:center}
.game-over-choice-panel:before{content:"";position:absolute;z-index:-1;width:180px;height:180px;left:50%;top:-120px;translate:-50% 0;border-radius:50%;background:rgba(0,234,255,.3);filter:blur(54px)}
.game-over-choice-panel>span{display:block;color:#78f5ff;font:900 .72rem/1 system-ui;letter-spacing:.22em}
.game-over-choice-panel>strong{display:block;margin:.65rem 0 1.15rem;color:#fff;font:800 clamp(.9rem,2vw,1.08rem)/1.4 system-ui}
.game-over-choice-actions{display:grid;grid-template-columns:1fr 1fr;gap:.7rem}
.game-over-choice-actions button{min-height:3rem;border-radius:14px;font:900 .9rem/1 system-ui;cursor:pointer;transition:transform .16s ease,filter .16s ease,border-color .16s ease}
.game-over-choice-actions button:hover{transform:translateY(-2px);filter:brightness(1.1)}
.game-over-revive{border:1px solid rgba(87,255,218,.58);background:linear-gradient(135deg,#24e5c2,#00aeea);color:#02121b;box-shadow:0 10px 30px rgba(0,234,255,.2)}
.game-over-next{border:1px solid rgba(182,225,244,.24);background:rgba(255,255,255,.07);color:#eafcff}
@media(max-width:700px){
  .game-over-choice{border-radius:0}
  .game-over-choice-panel{width:min(340px,calc(100% - 28px));padding:1rem;border-radius:20px}
  .game-over-choice-panel>strong{margin:.5rem 0 .85rem;font-size:.82rem}
  .game-over-choice-actions{gap:.55rem}.game-over-choice-actions button{min-height:2.7rem;font-size:.82rem}
  .game-card.is-mobile-fullscreen .mobile-float-start{display:none!important}
}

/* Mobile fullscreen emergency exit */
@media (max-width:900px),(pointer:coarse){
  .game-card.is-mobile-fullscreen .mobile-float-exit{display:inline-flex!important;align-items:center;justify-content:center;z-index:1705!important;opacity:.82!important;pointer-events:auto!important}
}

/* ==========================================================================
   影像墙 · 全屏 3D 旋转相册（移植自机器人官网项目的 Hero）
   ========================================================================== */
.gallery-section{padding:0}
.orbit3d-hero{
  position:relative;
  min-height:100svh;
  display:flex;
  align-items:center;
  justify-content:center;
  overflow:hidden;
  isolation:isolate;
  background:radial-gradient(circle at 50% 40%,rgba(0,245,255,.12),transparent 46%),radial-gradient(circle at 50% 55%,rgba(255,61,242,.10),transparent 40%),linear-gradient(135deg,#040610,#090b1e 48%,#03040e);
}
.orbit3d-hero.dragging{cursor:grabbing}
.orbit3d-bg{position:absolute;inset:-20%;z-index:1;filter:blur(70px) saturate(140%);opacity:.55;transition:filter .6s var(--ease),opacity .6s var(--ease)}
.orbit3d-orb{position:absolute;border-radius:50%}
.orb3d-cyan{width:46%;aspect-ratio:1;left:4%;top:6%;background:radial-gradient(circle,rgba(0,245,255,.5),transparent 70%);animation:orbit3dDrift1 16s ease-in-out infinite alternate}
.orb3d-violet{width:52%;aspect-ratio:1;right:2%;top:18%;background:radial-gradient(circle,rgba(138,92,255,.45),transparent 70%);animation:orbit3dDrift2 20s ease-in-out infinite alternate}
.orb3d-magenta{width:40%;aspect-ratio:1;left:32%;bottom:-6%;background:radial-gradient(circle,rgba(255,61,242,.4),transparent 70%);animation:orbit3dDrift3 18s ease-in-out infinite alternate}
.orbit3d-hero.dragging .orbit3d-bg{filter:blur(52px) saturate(190%) hue-rotate(20deg);opacity:.85}

#orbit3dCanvas{position:absolute;inset:0;width:100%;height:100%;z-index:2;cursor:grab;touch-action:pan-y}
.orbit3d-hero.dragging #orbit3dCanvas{cursor:grabbing}

#orbit3dWater{position:absolute;left:0;right:0;bottom:0;height:26%;width:100%;z-index:3;pointer-events:none;opacity:.9;-webkit-mask-image:linear-gradient(to bottom,transparent 0,#000 18%);mask-image:linear-gradient(to bottom,transparent 0,#000 18%)}

.orbit3d-hero::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:radial-gradient(110% 85% at 50% 46%,transparent 50%,rgba(4,6,16,.42) 100%)}

.orbit3d-notes{position:absolute;inset:0;z-index:4;pointer-events:none}
.orbit3d-note{position:absolute;font-family:serif;color:rgba(255,255,255,.65);text-shadow:0 0 14px rgba(0,245,255,.8),0 0 30px rgba(138,92,255,.6);animation:orbit3dFloatNote var(--dur,9s) var(--ease) infinite;opacity:0}
.note3d-1{left:12%;top:34%;font-size:26px;--dur:8s;animation-delay:0s}
.note3d-2{left:24%;top:58%;font-size:20px;--dur:10s;animation-delay:1.4s;color:rgba(138,92,255,.7)}
.note3d-3{right:16%;top:30%;font-size:30px;--dur:9s;animation-delay:.7s;color:rgba(255,61,242,.7)}
.note3d-4{right:26%;top:62%;font-size:18px;--dur:11s;animation-delay:2.2s}
.note3d-5{left:46%;top:22%;font-size:22px;--dur:9.5s;animation-delay:3.1s;color:rgba(0,245,255,.7)}
.note3d-6{right:8%;top:50%;font-size:24px;--dur:8.5s;animation-delay:4s;color:rgba(255,61,242,.7)}

.orbit3d-inner{position:relative;z-index:5;width:100%;max-width:1200px;padding:120px 28px 40px;pointer-events:none}
.orbit3d-content{max-width:620px;pointer-events:auto}
.orbit3d-eyebrow{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:12px;letter-spacing:.28em;color:var(--muted);text-transform:uppercase}
.orbit3d-eyebrow-dot{width:8px;height:8px;border-radius:50%;background:linear-gradient(120deg,var(--cyan),var(--pink));box-shadow:0 0 10px rgba(0,245,255,.9);animation:orbit3dPulse 2.4s infinite}
.orbit3d-title{margin:22px 0 20px;font-weight:900;font-size:clamp(40px,7vw,76px);line-height:1.08;letter-spacing:.01em;background:linear-gradient(100deg,var(--cyan),var(--violet) 45%,var(--pink));-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:transparent;background-size:200% 200%;animation:orbit3dGradShift 5s ease-in-out infinite}
.orbit3d-sub{font-size:16px;color:var(--muted);max-width:460px;margin-bottom:34px}
.orbit3d-cta{display:flex;gap:16px;flex-wrap:wrap}
.orbit3d-hint{margin-top:26px;font-size:13px;color:var(--soft);letter-spacing:.04em}

.orbit3d-scroll{position:absolute;left:50%;bottom:22px;transform:translateX(-50%);z-index:5;display:flex;flex-direction:column;align-items:center;gap:10px;pointer-events:none}
.orbit3d-scroll-line{width:1px;height:44px;background:linear-gradient(var(--cyan),transparent);animation:orbit3dScrollLine 2s var(--ease) infinite}
.orbit3d-scroll-text{font-size:10px;letter-spacing:.34em;color:var(--soft);text-transform:uppercase}

@keyframes orbit3dDrift1{to{transform:translate(9vw,7vh) scale(1.18)}}
@keyframes orbit3dDrift2{to{transform:translate(-8vw,-6vh) scale(1.12)}}
@keyframes orbit3dDrift3{to{transform:translate(5vw,-8vh) scale(1.2)}}
@keyframes orbit3dFloatNote{
  0%{transform:translateY(0) translateX(0) rotate(0);opacity:0}
  15%{opacity:.9}
  50%{transform:translateY(-46px) translateX(18px) rotate(12deg)}
  85%{opacity:.9}
  100%{transform:translateY(-110px) translateX(-12px) rotate(-10deg);opacity:0}
}
@keyframes orbit3dGradShift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
@keyframes orbit3dPulse{0%{box-shadow:0 0 0 0 rgba(0,245,255,.55)}70%{box-shadow:0 0 0 12px rgba(0,245,255,0)}100%{box-shadow:0 0 0 0 rgba(0,245,255,0)}}
@keyframes orbit3dScrollLine{0%{transform:scaleY(0);transform-origin:top;opacity:0}40%{transform:scaleY(1);opacity:1}100%{transform:scaleY(0);transform-origin:bottom;opacity:0}}

@media(max-width:980px){
  .orbit3d-inner{padding-top:100px}
}
@media(max-width:700px){
  .orbit3d-inner{padding:100px 20px 40px}
  .orbit3d-content{max-width:100%}
  .orbit3d-title{font-size:clamp(34px,12vw,50px)}
  .orbit3d-sub{font-size:15px}
}

/* ==========================================================================
   封面 Hero 科技感增强：网格纹理 + 扫描线 + 标题流光
   ========================================================================== */
.hero-shade::before{
  content:"";
  position:absolute;
  inset:0;
  background-image:linear-gradient(rgba(0,245,255,.05) 1px,transparent 1px),linear-gradient(90deg,rgba(0,245,255,.05) 1px,transparent 1px);
  background-size:54px 54px;
  -webkit-mask-image:radial-gradient(circle at 58% 40%,#000 8%,transparent 74%);
  mask-image:radial-gradient(circle at 58% 40%,#000 8%,transparent 74%);
  pointer-events:none
}
.hero-shade::after{
  content:"";
  position:absolute;
  left:0;
  right:0;
  top:-30%;
  height:150px;
  background:linear-gradient(180deg,transparent,rgba(0,245,255,.09),transparent);
  animation:heroScan 6.5s linear infinite;
  pointer-events:none
}
.hero-copy h1 strong{
  background-size:220% 220%;
  animation:heroShine 6s ease-in-out infinite
}
@keyframes heroScan{
  0%{top:-22%;opacity:0}
  8%{opacity:1}
  90%{opacity:1}
  100%{top:118%;opacity:0}
}
@keyframes heroShine{
  0%,100%{background-position:0% 50%}
  50%{background-position:100% 50%}
}

/* ==========================================================================
   动态展厅 · 分类筛选 + 高级感增强
   ========================================================================== */
.showcase-filters{
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:-6px 0 26px
}
.showcase-filter{
  padding:9px 18px;
  border:1px solid rgba(255,255,255,.12);
  border-radius:999px;
  background:rgba(255,255,255,.04);
  color:#a9b8d5;
  font-size:13px;
  font-weight:600;
  letter-spacing:.02em;
  cursor:pointer;
  transition:border-color .3s var(--ease),color .3s var(--ease),background .3s var(--ease),box-shadow .3s var(--ease),transform .3s var(--ease)
}
.showcase-filter:hover{
  color:#eafcff;
  border-color:rgba(0,245,255,.4);
  transform:translateY(-2px)
}
.showcase-filter.active{
  color:#04121b;
  border-color:transparent;
  background:linear-gradient(120deg,var(--cyan),var(--blue) 60%,var(--violet));
  box-shadow:0 8px 26px rgba(0,245,255,.28)
}

.cinema-arrow{
  position:absolute;
  top:42%;
  z-index:3;
  width:48px;
  height:48px;
  display:grid;
  place-items:center;
  border:1px solid rgba(255,255,255,.16);
  border-radius:50%;
  background:rgba(4,8,18,.45);
  backdrop-filter:blur(12px);
  color:#eafcff;
  font-size:26px;
  line-height:1;
  cursor:pointer;
  transform:translateY(-50%);
  transition:background .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease),transform .3s var(--ease)
}
.cinema-arrow.prev{left:18px}
.cinema-arrow.next{right:18px}
.cinema-arrow:hover{
  background:rgba(0,245,255,.16);
  border-color:rgba(0,245,255,.5);
  box-shadow:0 0 24px rgba(0,245,255,.3)
}
.cinema-arrow.prev:hover{transform:translateY(-50%) translateX(-3px)}
.cinema-arrow.next:hover{transform:translateY(-50%) translateX(3px)}

.cinema-progress{
  position:absolute;
  left:20px;
  right:20px;
  bottom:0;
  z-index:3;
  height:3px;
  background:rgba(255,255,255,.08);
  border-radius:999px;
  overflow:hidden;
  pointer-events:none
}
.cinema-progress i{
  display:block;
  height:100%;
  width:0;
  border-radius:999px;
  background:linear-gradient(90deg,var(--cyan),var(--violet),var(--pink));
  transition:width .45s var(--ease)
}

@media(max-width:700px){
  .cinema-arrow{width:40px;height:40px;font-size:22px}
  .cinema-arrow.prev{left:12px}
  .cinema-arrow.next{right:12px}
  .showcase-filters{gap:8px;margin:-2px 0 20px}
  .showcase-filter{padding:8px 14px;font-size:12px}
}
