/* R108 kinetic museum-lighting hardening layer.
   It intentionally contains no content styling; it protects the R97 effect layer,
   keyboard focus, print output, high-contrast mode, and narrow viewports. */

html.resume-r105-hardened {
  overflow-x: clip;
}

html.resume-r105-hardened body {
  min-width: 0;
  overflow-x: clip;
}

@supports not (overflow: clip) {
  html.resume-r105-hardened,
  html.resume-r105-hardened body {
    overflow-x: hidden;
  }
}

html.resume-r105-hardened canvas[data-resume-fx-canvas],
html.resume-r105-hardened canvas[data-resume-fx],
html.resume-r105-hardened canvas[id*="resume" i],
html.resume-r105-hardened canvas[class*="resume" i],
html.resume-r105-hardened canvas[id*="agentic" i],
html.resume-r105-hardened canvas[class*="agentic" i],
html.resume-r105-hardened canvas[id*="intelligence" i],
html.resume-r105-hardened canvas[class*="intelligence" i] {
  pointer-events: none !important;
  touch-action: auto !important;
  user-select: none !important;
  max-width: none !important;
  max-height: none !important;
  contain: layout paint style;
}

html.resume-r105-hardened [data-resume-fx-debug],
html.resume-r105-hardened #resume-fx-debug,
html.resume-r105-hardened .resume-fx-debug {
  max-width: min(28rem, calc(100vw - 2rem));
  max-height: min(70vh, 34rem);
  overflow: auto;
  overscroll-behavior: contain;
  word-break: break-word;
}

html.resume-r105-hardened :where(a, button, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 2px solid #e5bd74;
  outline: 2px solid color-mix(in srgb, #e5bd74 88%, white 12%);
  outline-offset: 4px;
}

html.resume-r105-context-lost canvas[data-resume-fx-canvas],
html.resume-r105-context-lost canvas[data-resume-fx],
html.resume-r105-context-lost canvas[id*="resume" i],
html.resume-r105-context-lost canvas[class*="resume" i],
html.resume-r105-off canvas[data-resume-fx-canvas],
html.resume-r105-off canvas[data-resume-fx],
html.resume-r105-off canvas[id*="resume" i],
html.resume-r105-off canvas[class*="resume" i] {
  opacity: 0 !important;
  visibility: hidden !important;
}

html.resume-r105-static [data-resume-fx-animated],
html.resume-r105-reduced [data-resume-fx-animated],
html.resume-r105-static .resume-fx-animated,
html.resume-r105-reduced .resume-fx-animated {
  animation: none !important;
  transition-duration: 0.001ms !important;
  transition-delay: 0ms !important;
}

@media (max-width: 360px) {
  html.resume-r105-hardened [data-resume-fx-debug],
  html.resume-r105-hardened #resume-fx-debug,
  html.resume-r105-hardened .resume-fx-debug {
    inset-inline: 0.5rem !important;
    width: auto !important;
    max-width: none;
  }
}

@media (prefers-reduced-motion: reduce) {
  html.resume-r105-hardened [data-resume-fx-animated],
  html.resume-r105-hardened .resume-fx-animated {
    animation: none !important;
    transition-duration: 0.001ms !important;
    transition-delay: 0ms !important;
  }
}

@media (forced-colors: active) {
  html.resume-r105-hardened canvas[data-resume-fx-canvas],
  html.resume-r105-hardened canvas[data-resume-fx],
  html.resume-r105-hardened canvas[id*="resume" i],
  html.resume-r105-hardened canvas[class*="resume" i],
  html.resume-r105-hardened canvas[id*="agentic" i],
  html.resume-r105-hardened canvas[class*="agentic" i],
  html.resume-r105-hardened canvas[id*="intelligence" i],
  html.resume-r105-hardened canvas[class*="intelligence" i],
  html.resume-r105-hardened [data-resume-fx-debug],
  html.resume-r105-hardened #resume-fx-debug,
  html.resume-r105-hardened .resume-fx-debug {
    display: none !important;
  }

  html.resume-r105-hardened :where(a, button, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {
    outline: 3px solid Highlight !important;
    outline-offset: 3px !important;
  }
}

@media print {
  html.resume-r105-hardened,
  html.resume-r105-hardened body {
    overflow: visible !important;
  }

  html.resume-r105-hardened canvas[data-resume-fx-canvas],
  html.resume-r105-hardened canvas[data-resume-fx],
  html.resume-r105-hardened canvas[id*="resume" i],
  html.resume-r105-hardened canvas[class*="resume" i],
  html.resume-r105-hardened canvas[id*="agentic" i],
  html.resume-r105-hardened canvas[class*="agentic" i],
  html.resume-r105-hardened canvas[id*="intelligence" i],
  html.resume-r105-hardened canvas[class*="intelligence" i],
  html.resume-r105-hardened [data-resume-fx-debug],
  html.resume-r105-hardened #resume-fx-debug,
  html.resume-r105-hardened .resume-fx-debug {
    display: none !important;
  }
}


/* R105 kinetic museum-lighting refinement -------------------------------------------------
   Lighting is scroll-driven, never cursor-driven. The document is treated as a
   stationary exhibit passing through two fixed off-canvas light sources. */
html.resume-r105-hardened .page-resume .resume-document-scan,
.page-resume .resume-document-scan {
    display: none !important;
}

.page-resume .resume-light-surface {
    background:
        radial-gradient(46rem 32rem at var(--surface-light-x, 18%) var(--surface-light-y, 24%), rgba(255, 232, 190, 0.105), transparent 68%),
        radial-gradient(40rem 30rem at calc(100% - var(--surface-light-x, 18%)) 68%, rgba(87, 137, 188, 0.042), transparent 74%),
        linear-gradient(155deg, rgba(17, 23, 31, 0.89), rgba(5, 9, 14, 0.95)) !important;
}

/* Remove the large travelling section wash. Illumination now lives on edges. */
.page-resume .resume-document-section::before,
.page-resume .resume-document-section.is-section-active::before {
    opacity: 0 !important;
    display: none !important;
}

.page-resume .resume-document-section.is-section-active .resume-section-heading {
    color: inherit !important;
    text-shadow: none !important;
}

/* Active roles remain in the document grid. No horizontal nudge or cursor halo. */
.page-resume .resume-experience-item,
.page-resume .resume-experience-item.is-active {
    transform: none !important;
}

.page-resume .resume-experience-item.is-active {
    border-color: rgba(var(--resume-gold), 0.13) !important;
    background:
        linear-gradient(115deg, rgba(255, 238, 201, 0.045), transparent 24%),
        linear-gradient(155deg, rgba(255, 255, 255, 0.018), rgba(var(--resume-azure), 0.010), transparent) !important;
    box-shadow:
        inset 1px 1px 0 rgba(255, 240, 207, 0.14),
        inset -1px -1px 0 rgba(82, 57, 28, 0.18),
        0 12px 38px rgba(0, 0, 0, 0.10),
        -1.2rem -0.6rem 3.4rem rgba(var(--resume-brass), 0.045) !important;
}

.page-resume .resume-experience-item.is-active::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: inherit;
    pointer-events: none;
    background:
        linear-gradient(105deg, rgba(255, 244, 221, 0.62), rgba(var(--resume-brass), 0.16) 15%, transparent 32%) top left / 48% 1px no-repeat,
        linear-gradient(195deg, rgba(255, 244, 221, 0.34), transparent 34%) top left / 1px 55% no-repeat,
        linear-gradient(285deg, rgba(var(--resume-brass), 0.16), transparent 36%) bottom right / 42% 1px no-repeat;
    opacity: 0.72;
}

/* Keep the earlier-experience heading and Education content on the same content
   axis as the job cards above, without double-indenting the earlier job itself. */
.page-resume .resume-earlier-experience-section > .resume-section-heading {
    margin-left: 3.2rem;
}

.page-resume .resume-education-section {
    margin-left: 3.2rem;
    width: calc(100% - 3.2rem);
}

/* Keep ambient work event-driven. CSS effects do not run indefinitely. */
.page-resume .resume-panel-sweep,
.page-resume .resume-skill-signal {
    animation-iteration-count: 1 !important;
}

@media (max-width: 760px) {
    .page-resume .resume-earlier-experience-section > .resume-section-heading {
        margin-left: 2.1rem;
    }
    .page-resume .resume-education-section {
        margin-left: 2.1rem;
        width: calc(100% - 2.1rem);
    }
}

@media (max-width: 540px) {
    .page-resume .resume-earlier-experience-section > .resume-section-heading,
    .page-resume .resume-education-section {
        margin-left: 0;
    }
    .page-resume .resume-education-section {
        width: 100%;
    }
}

/* R105 — kinetic museum lighting. The résumé leads; the positioning panel follows. */
html.resume-r105-hardened .page-resume .resume-document-stage {
    padding-top: clamp(1.25rem, 2.6vw, 2.75rem);
}

html.resume-r105-hardened .page-resume .resume-redesign-hero {
    margin-top: clamp(1.1rem, 2.4vw, 2.5rem);
    padding-bottom: clamp(2rem, 4vw, 4rem);
}

/* The agentic constellation remains alive at a measured cadence. */
.page-resume .resume-hero-sidebar .resume-glance-path-primary {
    stroke-dasharray: 7 15;
    animation: resume-r105-agent-route 8.5s linear infinite;
}
.page-resume .resume-hero-sidebar .resume-glance-path-branch {
    stroke-dasharray: 4 18;
    animation: resume-r105-agent-route 11s linear infinite reverse;
}
@keyframes resume-r105-agent-route {
    to { stroke-dashoffset: -88; }
}

@media (prefers-reduced-motion: reduce) {
    .page-resume .resume-hero-sidebar .resume-glance-path-primary,
    .page-resume .resume-hero-sidebar .resume-glance-path-branch,
    .page-resume .resume-light-surface.is-ambient-glint::after,
    .page-resume .resume-light-surface.is-ambient-glint > .resume-panel-sweep {
        animation: none !important;
    }
}


/* R105 corrections: true WebGL2 perimeter glints, visible agentic routing, tighter stack. */
html.resume-r105-hardened .page-resume .resume-redesign-hero {
    margin-top: clamp(0.45rem, 1.15vw, 1rem);
}

.page-resume .resume-panel-sweep,
.page-resume .resume-light-surface.is-ambient-glint::after,
.page-resume .resume-light-surface.is-ambient-glint > .resume-panel-sweep {
    display: none !important;
    animation: none !important;
}

.page-resume .resume-light-surface {
    position: relative;
}

.page-resume .resume-webgl-border-glint {
    position: fixed;
    inset: auto;
    z-index: 80;
    display: block;
    pointer-events: none;
    opacity: 0;
    overflow: visible;
    contain: paint;
    mix-blend-mode: screen;
    transition: opacity 110ms linear;
}

.page-resume .resume-webgl-border-glint.is-running {
    opacity: 1;
}

.page-resume .resume-light-surface.is-border-glint-fallback {
    box-shadow:
        0 0 0 1px rgba(255, 225, 169, 0.54),
        0 0 1.25rem rgba(226, 177, 100, 0.20),
        var(--resume-surface-shadow, 0 24px 70px rgba(0,0,0,.34));
}

.page-resume .resume-hero-sidebar .resume-glance-fallback {
    z-index: 2;
    opacity: 0.42 !important;
    filter: drop-shadow(0 0 0.85rem rgba(var(--resume-brass), 0.30));
    mix-blend-mode: screen;
}

.page-resume .resume-hero-sidebar > .eyebrow,
.page-resume .resume-hero-glance-list {
    z-index: 3;
}

.page-resume .resume-hero-glance-list li {
    background:
        linear-gradient(180deg, rgba(255,255,255,.038), rgba(255,255,255,.012)),
        rgba(5, 9, 14, 0.34) !important;
    backdrop-filter: blur(1.5px);
}

.page-resume .resume-glance-path {
    stroke: rgba(255, 215, 151, 0.68);
    stroke-width: 1.45;
}
.page-resume .resume-glance-path-branch {
    stroke: rgba(100, 203, 211, 0.56);
}
.page-resume .resume-glance-node {
    opacity: 0.94;
}

@media (prefers-reduced-motion: reduce) {
    .page-resume .resume-webgl-border-glint { display: none !important; }
}

html.resume-r105-hardened .page-resume .resume-document-stage {
    padding-bottom: clamp(0.45rem, 0.9vw, 0.85rem);
}

html.resume-r105-hardened .page-resume .resume-redesign-hero {
    padding-top: clamp(0.35rem, 0.75vw, 0.7rem);
}

/* R105 viewport-perimeter overlay: never sized as an internal child. */
.page-resume .resume-webgl-border-glint {
    position: fixed !important;
    inset: 0 auto auto 0 !important;
    width: 100vw;
    height: 100vh;
    max-width: none;
    max-height: none;
    border: 0 !important;
    border-radius: 0 !important;
    background: transparent !important;
    box-shadow: none !important;
    contain: strict;
}


/* R105 — compact perimeter glint and top-of-resume agentic signal band. */
.page-resume .resume-hero-sidebar .resume-glance-fallback {
    display: none !important;
}

.page-resume .resume-agentic-top-band {
    position: absolute;
    z-index: 2;
    inset: 0 1.35rem auto 1.35rem;
    width: calc(100% - 2.7rem);
    height: clamp(5.5rem, 8vw, 8rem);
    pointer-events: none;
    overflow: visible;
    opacity: 0.34;
    filter: drop-shadow(0 0 0.8rem rgba(var(--resume-brass), 0.22));
    mix-blend-mode: screen;
    -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 7%, #000 93%, transparent 100%);
    mask-image: linear-gradient(90deg, transparent 0%, #000 7%, #000 93%, transparent 100%);
}

.page-resume .resume-agentic-top-band .resume-glance-path {
    vector-effect: non-scaling-stroke;
    stroke-width: 1.15;
    stroke-dasharray: 8 18;
}

.page-resume .resume-agentic-top-band .resume-glance-path-primary {
    stroke: rgba(var(--resume-gold), 0.52);
    animation: resume-r105-agent-route 9.5s linear infinite;
}

.page-resume .resume-agentic-top-band .resume-glance-path-branch {
    stroke: rgba(var(--resume-cyan), 0.42);
    animation: resume-r105-agent-route 12.5s linear infinite reverse;
}

.page-resume .resume-agentic-top-band .resume-glance-path-return {
    stroke: rgba(var(--resume-brass), 0.32);
    animation: resume-r105-agent-route 15s linear infinite;
}

.page-resume .resume-agentic-top-band .resume-glance-node {
    filter: drop-shadow(0 0 5px rgba(255, 224, 165, 0.46));
}

@keyframes resume-r105-agent-route {
    to { stroke-dashoffset: -104; }
}

/* Keep the top signal field behind content while giving it enough clear air to read. */
.page-resume .resume-document-header {
    padding-top: clamp(4.9rem, 7vw, 6.8rem) !important;
}

/* The At-a-glance card is now intentionally clean glass with no network beneath it. */
.page-resume .resume-hero-sidebar {
    background:
        radial-gradient(25rem 18rem at 72% 18%, rgba(var(--resume-azure), 0.045), transparent 72%),
        linear-gradient(180deg, rgba(18, 25, 33, 0.82), rgba(5, 10, 15, 0.90)) !important;
}

@media (max-width: 640px) {
    .page-resume .resume-agentic-top-band {
        inset-inline: 0.8rem;
        width: calc(100% - 1.6rem);
        height: 4.8rem;
        opacity: 0.29;
    }
    .page-resume .resume-document-header {
        padding-top: 4.5rem !important;
    }
}

@media (prefers-reduced-motion: reduce) {
    .page-resume .resume-agentic-top-band .resume-glance-path {
        animation: none !important;
    }
}

/* Keep At-a-glance entirely free of route/sweep effects after relocating the network. */
.page-resume .resume-hero-glance-list li::after,
.page-resume .resume-hero-glance-list li.is-signal-live::after {
    display: none !important;
    animation: none !important;
}

/* Never substitute a whole-edge flash when WebGL2 is unavailable. */
.page-resume .resume-light-surface.is-border-glint-fallback {
    box-shadow: var(--resume-surface-shadow, 0 24px 70px rgba(0,0,0,.34)) !important;
}

/* R105.1 — content overlays the signal field; continuous glint runs at native rAF cadence. */
.page-resume .resume-document-inner,
.page-resume .resume-document-header {
    position: relative;
    z-index: 4;
}

.page-resume .resume-document-header {
    padding-top: clamp(1.15rem, 2vw, 2rem) !important;
}

.page-resume .resume-agentic-top-band {
    z-index: 2;
    top: clamp(0.45rem, 1vw, 0.9rem);
    height: clamp(6.2rem, 9vw, 8.8rem);
    opacity: 0.27;
}

@media (max-width: 640px) {
    .page-resume .resume-document-header {
        padding-top: 0.9rem !important;
    }

    .page-resume .resume-agentic-top-band {
        top: 0.35rem;
        height: 5.4rem;
        opacity: 0.24;
    }
}

/* R109 — stable top composition.
   Keep the identity in normal document flow, place the compact agentic field behind
   it, and never stretch the 1200×120 SVG into a tall decorative panel. */
.page-resume .resume-document-shell {
    padding-top: clamp(1.25rem, 2vw, 1.8rem);
}

.page-resume .resume-document-header {
    position: relative;
    z-index: 4;
    transform: none !important;
    margin-bottom: 0 !important;
    padding-top: clamp(0.65rem, 1.1vw, 1rem) !important;
}

.page-resume .resume-agentic-top-band {
    z-index: 2;
    top: clamp(0.65rem, 1vw, 0.95rem);
    height: clamp(6rem, 6.8vw, 7.25rem);
    opacity: 0.24;
    transform: none !important;
}

/* Keep the signal field subtle behind the text rather than obscuring it. */
.page-resume .resume-document-title-wrap,
.page-resume .resume-document-meta {
    position: relative;
    z-index: 5;
}

@media (max-width: 860px) {
    .page-resume .resume-document-shell {
        padding-top: 1.15rem;
    }

    .page-resume .resume-document-header {
        padding-top: 0.55rem !important;
    }

    .page-resume .resume-agentic-top-band {
        top: 0.5rem;
        height: 5.75rem;
        opacity: 0.21;
    }
}

@media (max-width: 640px) {
    .page-resume .resume-document-shell {
        padding-top: 0.9rem;
    }

    .page-resume .resume-document-header {
        padding-top: 0.35rem !important;
    }

    .page-resume .resume-agentic-top-band {
        inset-inline: 0.8rem;
        width: calc(100% - 1.6rem);
        top: 0.35rem;
        height: 4.5rem;
        opacity: 0.18;
    }
}

/* R126: compact spacing and permanent resume visibility.
   The obsolete page-wide R123 magenta lamp/dust rules were removed so only the
   top-container-local R125/R126 treatment can render. */
.page-resume .resume-document-stage { padding-bottom: .35rem !important; }
html.resume-r105-hardened .page-resume .resume-redesign-hero { margin-top: .35rem !important; padding-top:.35rem !important; }
.page-resume .resume-experience.resume-reveals-locked-visible [data-resume-reveal],
.page-resume .resume-experience [data-resume-reveal].is-visible { opacity:1 !important; transform:none !important; visibility:visible !important; }
.resume-webgl-border-glint { position:fixed; inset:0; z-index:20; pointer-events:none; width:100vw; height:100vh; mix-blend-mode:screen; }

/* R124 final bug sweep: lifecycle-safe 30 FPS glints and non-negotiable resume visibility. */
.page-resume [data-resume-reveal] {
    opacity: 1 !important;
    transform: none !important;
    visibility: visible !important;
}
.page-resume .resume-magenta-dust i {
    will-change: transform, opacity;
    contain: strict;
}
.page-resume .resume-webgl-border-glint {
    display: block;
    opacity: 1;
}

/* R131 — top-container-only animated corner lamp. A narrow, directional magenta source
   enters from the top-left edge; it is intentionally ray-shaped rather than a
   diffuse circular blob. Fine dust catches the beam, with rare soft orbs. */
.page-resume .resume-experience::before {
    content: none !important;
    display: none !important;
}

/* R141 Canvas 2D ray layer: stronger diffused-glass post-processing softens the
   beams while preserving their independent geometry and motion. */
.page-resume .resume-magenta-rays-canvas {
    position: absolute !important;
    inset: 0 !important;
    z-index: 1 !important;
    display: block !important;
    width: 100% !important;
    height: 100% !important;
    pointer-events: none;
    border-radius: inherit;
    mix-blend-mode: screen;
    contain: paint;
    filter: blur(1.6px) saturate(1.12) brightness(1.06);
    opacity: 0.95;
    background: transparent !important;
    transform: translateZ(0);
    will-change: filter;
}


.page-resume [data-resume-document] {
    isolation: isolate;
}

.page-resume [data-resume-document]::before {
    content: "";
    position: absolute;
    z-index: 0;
    pointer-events: none;
    inset: -1px;
    border-radius: inherit;
    overflow: hidden;
    opacity: 0.98;
    mix-blend-mode: screen;
    transform-origin: 0 0;
    animation: resume-r130-window-ray-sweep 26s cubic-bezier(.45, 0, .55, 1) infinite alternate;
    will-change: transform, opacity, filter;
    background:
        radial-gradient(circle at 0% 0%,
            rgba(255, 246, 255, 0.82) 0 0.18rem,
            rgba(255, 111, 221, 0.48) 0.32rem,
            rgba(229, 49, 181, 0.22) 1.15rem,
            rgba(170, 37, 139, 0.08) 3.8rem,
            transparent 9.5rem),
        linear-gradient(132deg,
            rgba(244, 54, 190, 0.14) 0%,
            rgba(206, 40, 164, 0.075) 14%,
            rgba(125, 31, 111, 0.025) 30%,
            transparent 48%);
    -webkit-mask-image: radial-gradient(ellipse 62% 60% at 0% 0%, #000 0%, rgba(0,0,0,.96) 38%, rgba(0,0,0,.48) 63%, transparent 86%);
    mask-image: radial-gradient(ellipse 62% 60% at 0% 0%, #000 0%, rgba(0,0,0,.96) 38%, rgba(0,0,0,.48) 63%, transparent 86%);
}

/* The wide angular travel makes the motion legible at the far end of each beam,
   while the long duration keeps the source feeling like daylight, not a spotlight. */
@keyframes resume-r130-window-ray-sweep {
    0% {
        transform: translate3d(0, 0, 0) rotate(-2.2deg) scale(1.035);
        opacity: 0.86;
        filter: saturate(0.94) brightness(0.95);
    }
    52% {
        transform: translate3d(0, 0, 0) rotate(0.7deg) scale(1.06);
        opacity: 1;
        filter: saturate(1.10) brightness(1.06);
    }
    100% {
        transform: translate3d(0, 0, 0) rotate(3.2deg) scale(1.085);
        opacity: 0.91;
        filter: saturate(1.02) brightness(1.01);
    }
}

.page-resume .resume-magenta-dust {
    position: absolute;
    inset: 0;
    z-index: 1;
    pointer-events: none;
    overflow: hidden;
    border-radius: inherit;
    contain: paint;
    -webkit-mask-image: radial-gradient(ellipse 66% 64% at 0% 0%, #000 0%, rgba(0,0,0,.95) 46%, rgba(0,0,0,.38) 72%, transparent 92%);
    mask-image: radial-gradient(ellipse 66% 64% at 0% 0%, #000 0%, rgba(0,0,0,.95) 46%, rgba(0,0,0,.38) 72%, transparent 92%);
}

.page-resume .resume-magenta-dust i {
    position: absolute;
    left: var(--x);
    top: var(--y);
    width: var(--s);
    height: var(--s);
    border-radius: 50%;
    opacity: var(--a);
    background: rgba(255, 241, 252, 0.98);
    box-shadow:
        0 0 1.5px rgba(255, 225, 249, 0.95),
        0 0 3.5px rgba(244, 91, 205, 0.46);
    animation: resume-r127-twinkle var(--d) ease-in-out var(--delay) infinite;
    will-change: transform, opacity;
    contain: strict;
}

.page-resume .resume-magenta-dust i.is-orb {
    filter: blur(0.22px);
    background: radial-gradient(circle,
        rgba(255, 250, 255, 0.92) 0%,
        rgba(255, 159, 230, 0.48) 28%,
        rgba(218, 63, 182, 0.15) 58%,
        transparent 100%);
    box-shadow:
        0 0 5px rgba(255, 130, 220, 0.30),
        0 0 10px rgba(204, 51, 168, 0.12);
}

@keyframes resume-r127-twinkle {
    0%, 100% {
        transform: translate3d(0, 0, 0) scale(0.64);
        opacity: var(--a-low);
    }
    38% {
        transform: translate3d(var(--drift-x), var(--drift-y), 0) scale(1.04);
        opacity: var(--a);
    }
    65% {
        transform: translate3d(var(--drift-x-mid), var(--drift-y-mid), 0) scale(0.82);
        opacity: var(--a-mid);
    }
}

.page-resume [data-resume-document] > :not(.resume-magenta-dust):not(.resume-magenta-rays-canvas) {
    position: relative;
    z-index: 2;
}

/* Raise all textual content in the upper resume document by the requested 50px,
   and reclaim the same layout space so section rhythm remains unchanged. */
.page-resume [data-resume-document] > .resume-document-inner {
    transform: translateY(-50px) !important;
    margin-bottom: -50px;
}

/* Give the identity composition one final small lift inside the raised document. */
.page-resume [data-resume-document] .resume-document-title-wrap {
    transform: translateY(-8px);
    margin-bottom: -8px;
}

/* The lower resume container receives no magenta lamp or local dust. */
.page-resume [data-resume-hero]::before,
.page-resume [data-resume-hero] .resume-magenta-dust {
    content: none !important;
    display: none !important;
}

@media (prefers-reduced-motion: reduce) {
    .page-resume [data-resume-document]::before {
        animation: none;
        transform: none;
        filter: none;
    }

    .page-resume .resume-magenta-dust i {
        animation: none;
        opacity: var(--a-mid);
    }

}

@media print {
    .page-resume .resume-magenta-rays-canvas {
        display: none !important;
    }

    .page-resume [data-resume-document] > .resume-document-inner {
        transform: none !important;
        margin-bottom: 0;
    }

    .page-resume [data-resume-document] .resume-document-title-wrap {
        transform: none;
        margin-bottom: 0;
    }
}
