/* fx.css: Live Engraving shared layer, identical on every portfolio site; loads after styles.css.
   Site tokens key off html[data-site]; JS state off html.fx-js, [data-motion], [data-glass], [data-fx-tier]. */
@property --glass-light { syntax: "<angle>"; inherits: true; initial-value: 135deg; }
@property --fx-spot { syntax: "<number>"; inherits: false; initial-value: 0; }
:root { --fx-dusk: rgb(27 36 64/.6); --fx-bf: blur(14px) saturate(160%); --fx-solid: rgb(18 18 24/.96); }
[data-site=quant] { --fx-dusk: rgb(18 48 46/.6); }
[data-site=ficc] { --fx-dusk: rgb(26 34 54/.6); }
[data-site=er] { --fx-dusk: rgb(42 31 20/.6); }
[data-site=cnslt] { --fx-dusk: rgb(30 34 40/.6); }
[data-site=eng] { --fx-dusk: rgb(20 38 58/.6); }
[data-site=gaming] { --fx-dusk: rgb(37 26 51/.6); }
[data-site=tech] { --fx-dusk: rgb(28 38 32/.6); }
html { scrollbar-color: var(--accent-deep) var(--paper); scrollbar-width: thin; scroll-padding: calc(var(--fx-header-h, 61px) + 16px) 0 calc(var(--fx-dock-h, 80px) + 16px); }
main { overflow-x: clip; }
h1, h2, h3 { text-wrap: balance; }
p { text-wrap: pretty; }
h2.eyebrow { margin: 0; line-height: inherit; }

/* C1 focus ring, skip link */
:where(a, button, summary, [tabindex]):focus-visible { outline: 2px solid var(--accent); outline-offset: 3px; }
:where(a:not([class]), .nav a):focus-visible { border-radius: 4px; }
.contact__links a:focus-visible { outline: 2px solid var(--accent) !important; outline-offset: 3px; }
.filter-chip.is-active:focus-visible { outline: none; box-shadow: 0 0 0 2px var(--paper), 0 0 0 4px var(--accent); }
.fx-skip { position: absolute; left: 12px; top: -60px; z-index: 100; padding: .6rem 1rem; border-radius: 8px; background: var(--accent); color: var(--paper); font: 600 .9rem/1 var(--sans); text-decoration: none; }
.fx-skip:focus { top: 12px; color: var(--paper); }
.fx-sr { position: absolute !important; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip-path: inset(50%); white-space: nowrap; border: 0; }

/* C2 backdrop (first light to site dusk on the root scroll timeline) and the static hero glow */
.fx-backdrop { position: fixed; inset: 0; z-index: -2; pointer-events: none; contain: strict; background: linear-gradient(rgb(212 178 107/.05) 1px, transparent 1px) 0 0/50px 50px,
    linear-gradient(90deg, rgb(212 178 107/.05) 1px, transparent 1px) 0 0/50px 50px, var(--paper); }
.fx-backdrop > i { position: absolute; inset: 0; }
.fx-b1 { background: radial-gradient(70% 55% at 28% 0%, rgb(212 178 107/.07), transparent 70%); }
.fx-b2 { opacity: 0; background: radial-gradient(85% 65% at 78% 100%, var(--fx-dusk), transparent 72%); }
.hero { position: relative; isolation: isolate; }
.hero:not(main)::before { content: ""; position: absolute; inset: -10% calc(50% - 50vw) 0; z-index: -2; pointer-events: none; background: radial-gradient(60% 70% at 78% 40%, rgb(212 178 107/.1), transparent 70%); }
:is([data-site=main], [data-site=eng], [data-site=gaming], [data-site=quant]) [data-fx-hero] { padding-block: clamp(1.4rem, 3.4vw, 2.4rem) clamp(.3rem, 1vw, .7rem); }
@media (min-width: 920px) and (min-height: 761px) {
  :is([data-site=main], [data-site=eng], [data-site=gaming], [data-site=quant]) [data-fx-hero] { padding-bottom: calc(clamp(.3rem, 1vw, .7rem) + 140px); }
}
@media (min-width: 920px) and (max-height: 760px) { .hero { padding-block: 2rem 1.5rem; } .hero__title { font-size: clamp(3rem, 7.5vh, 3.6rem); } }
[data-site=cnslt] .hero__title { font-size: clamp(2.2rem, 4.2vw, 3.4rem); }
.hero__title em { position: relative; }
:is([data-site=main], [data-site=eng], [data-site=gaming], [data-site=quant]) .hero__title em::after { content: ""; position: absolute; inset: auto 0 0; height: 2px; background: var(--accent); transform-origin: left; }

/* plate canvas: full bleed and under the sticky header; fades in after its first frame */
.fx-plate { position: absolute; z-index: -1; left: calc(50% - 50vw); top: calc(-1 * var(--fx-header-h, 0px)); width: 100vw; height: calc(100% + var(--fx-header-h, 0px)); display: block; pointer-events: none; opacity: 0; transition: opacity .6s var(--ease); }
.fx-plate.is-live { opacity: 1; }
[data-fx-tier=off] .fx-plate { display: none; }

/* C3 cards: the reveal moves the card and draws its top hairline; text opacity is never touched */
.project-bubble { position: relative; isolation: isolate; scroll-margin-top: 0; background-image: radial-gradient(260px circle at var(--mx, 50%) var(--my, 50%), rgb(212 178 107 / calc(.2 * var(--fx-spot))), transparent 60%); }
.project-bubble[data-num]::before { content: attr(data-num); position: absolute; top: .2rem; right: 1.2rem; z-index: -1; font: 500 clamp(2.8rem, 6vw, 4.6rem)/1 var(--mono); color: var(--accent); opacity: .06; pointer-events: none; }
.project-bubble::after { content: ""; position: absolute; top: -1px; left: 14px; right: 14px; height: 1px; pointer-events: none; background: rgb(212 178 107/.45); transform-origin: left; transition: background-color .3s, box-shadow .3s; }
.project-bubble.fx-cue::after { background: var(--accent); box-shadow: 0 0 10px rgb(212 178 107/.6); }
.fx-pending { translate: 0 20px; }
.fx-pending::after { transform: scaleX(0); }
.btn--primary { translate: var(--bx, 0px) var(--by, 0px); transition: background var(--t-fast) var(--ease), color var(--t-fast) var(--ease), border-color var(--t-fast) var(--ease), transform var(--t-fast) var(--ease), translate .18s var(--ease); }
@media (hover: hover) and (pointer: fine) {
  .project-bubble { transition: border-color .42s var(--ease), --fx-spot .3s; }
  .project-bubble:hover { border-color: color-mix(in srgb, var(--accent) 55%, var(--rule)); }
}

/* all motion: screen only, OS preference first, then the Motion switch (html[data-motion=off]) */
@media screen and (prefers-reduced-motion: no-preference) { html:not([data-motion=off]) {
    .hero__title { animation: fx-h1 .6s var(--ease); }
    .hero .eyebrow { animation: fx-h1 .6s var(--ease) 80ms backwards; }
    .hero__title em::after { animation: fx-line .7s var(--ease) 1.2s both; }
    .fx-in { animation: fx-rise .55s var(--ease) both; }
    .fx-in::after { animation: fx-line .7s var(--ease) both; }
    @supports (background-clip: text) or (-webkit-background-clip: text) {
      .hero__title em { color: transparent; background: linear-gradient(100deg, var(--accent) 42%, #F3DDA6 50%, var(--accent) 58%) 100% 0/260% 100%;
        -webkit-background-clip: text; background-clip: text; animation: fx-ink 1.2s var(--ease) .7s both; }
    }
    @media (hover: hover) and (pointer: fine) { .project-bubble:hover { --fx-spot: 1; } }
    @supports (animation-timeline: scroll()) {
      .fx-b1, .fx-b2, .marquee__track { animation: fx-dawn linear both; animation-duration: 1ms; animation-timeline: scroll(root); }
      .fx-b2 { animation-name: fx-dusk; }
      .marquee__track { animation-name: fx-mq; animation-range: 0 150vh; }
      .marquee--rev .marquee__track { animation-direction: reverse; }
    }
  }
}
html[data-motion=off] {
  scroll-behavior: auto;
  .fx-pending { translate: none; }
  .fx-pending::after { transform: none; }
  .fx-plate, .glass::before, .fx-dock, .fx-dock__glass, .fx-dock__item, .fx-dock__icon { transition: none; }
  .marquee__track { flex-wrap: wrap; justify-content: flex-start; gap: .45rem 1.75rem; width: auto; transform: none; padding-inline: max(var(--gutter), calc((100% - var(--maxw)) / 2 + var(--gutter))); }
  .marquee__track span::after { content: none; }
  .marquee__track [data-dup], .marquee::before, .marquee::after { display: none; }
}
@keyframes fx-h1 { from { translate: 0 .22em; } }
@keyframes fx-ink { to { background-position: 0 0; } }
@keyframes fx-line { from { transform: scaleX(0); } }
@keyframes fx-rise { from { translate: 0 20px; } }
@keyframes fx-dawn { to { opacity: .25; } }
@keyframes fx-dusk { 0%, 15% { opacity: 0; } 70% { opacity: .8; } 100% { opacity: 1; } }
@keyframes fx-mq { to { transform: translateX(-30%); } }
@keyframes fx-progress { to { transform: scaleX(1); } }

/* scroll progress (kept with Motion off; hidden for reduced motion) and C4 skills marquee */
.scroll-progress { display: none; }
@supports (animation-timeline: scroll()) {
  .scroll-progress { display: block; position: fixed; inset: 0 0 auto; z-index: 100; height: 2px; pointer-events: none; transform-origin: 0 50%;
    transform: scaleX(0); background: linear-gradient(90deg, var(--accent-deep), var(--accent));
    animation: fx-progress linear both; animation-duration: 1ms; animation-timeline: scroll(root); }
}
.marquee { position: relative; overflow: hidden; margin: .3rem 0 0; padding: .28rem 0; background: var(--paper); border-block: 1px solid var(--rule-soft); }
.marquee::before, .marquee::after { content: ""; position: absolute; top: 0; bottom: 0; width: 9%; z-index: 2; pointer-events: none; background: linear-gradient(90deg, var(--paper), transparent); }
.marquee::before { left: 0; }
.marquee::after { right: 0; rotate: 180deg; }
.marquee--rev, .marquee--flush { margin-top: 0; border-top: 0; }
.marquee__track { display: flex; align-items: center; gap: 2.6rem; width: max-content; }
.marquee__track span { font-family: var(--mono); font-size: .72rem; letter-spacing: .14em; text-transform: uppercase; color: var(--ink-soft); white-space: nowrap; }
.marquee__track span::after { content: "\2022"; margin-left: 2.6rem; color: var(--accent); }
@media (prefers-reduced-motion: reduce) {
  .scroll-progress, .marquee__track [data-dup], .marquee::before, .marquee::after { display: none; }
  .marquee__track { flex-wrap: wrap; justify-content: flex-start; gap: .45rem 1.75rem; width: auto; transform: none; padding-inline: max(var(--gutter), calc((100% - var(--maxw)) / 2 + var(--gutter))); }
  .marquee__track span::after { content: none; }
}

/* C8 glass on chrome only (header, dock, pills, index). Every tint passes AA with no blur at all */
.glass { position: relative; border-radius: var(--gr, 18px); color: var(--ink); --ga: .72; box-shadow: inset 0 1px 0 rgb(255 240 214/.18), 0 12px 32px rgb(0 0 0/.45), 0 2px 6px rgb(0 0 0/.35); }
.glass, .nav { isolation: isolate; background: var(--fx-solid); }
.nav { -webkit-backdrop-filter: none; backdrop-filter: none; border-bottom-color: transparent; }
.glass::before, .nav::before, .project-toc::before, .fx-toc > summary::before { content: ""; position: absolute; inset: 0; z-index: -1; padding: 1px; border-radius: inherit; pointer-events: none; background: linear-gradient(var(--glass-light), rgb(255 240 214/.45), rgb(255 240 214/.06) 40%, rgb(212 178 107/.3)); -webkit-mask: linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0); -webkit-mask-composite: xor; mask: linear-gradient(#000 0 0) content-box exclude, linear-gradient(#000 0 0); transition: --glass-light .6s ease-out; }
.nav::before { inset: auto 0 0; height: 1px; padding: 0; -webkit-mask: none; mask: none;
  background: linear-gradient(90deg, transparent, rgb(255 240 214/.3) 25%, rgb(212 178 107/.35) 70%, transparent); }
@supports (backdrop-filter: blur(1px)) or (-webkit-backdrop-filter: blur(1px)) { html:not([data-glass=solid]) {
    .glass { background: rgb(18 18 24 / var(--ga)); -webkit-backdrop-filter: var(--fx-bf); backdrop-filter: var(--fx-bf); }
    .nav { background: rgb(10 10 13/.92); -webkit-backdrop-filter: blur(14px) saturate(140%); backdrop-filter: blur(14px) saturate(140%); }
    @media (min-width: 920px) { .project-toc { background: rgb(18 18 24/.82); -webkit-backdrop-filter: var(--fx-bf); backdrop-filter: var(--fx-bf); } }
    @media (max-width: 919.98px) { .fx-toc > summary { background: rgb(18 18 24/.82); -webkit-backdrop-filter: var(--fx-bf); backdrop-filter: var(--fx-bf); } }
  }
}
@media (prefers-reduced-transparency: reduce), (prefers-contrast: more) {
  .glass, .nav, .project-toc, .fx-toc > summary { background-color: var(--fx-solid) !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }
}
@media (prefers-contrast: more) {
  .glass::before, .nav::before, .project-toc::before, .fx-toc > summary::before { display: none; }
  .glass { box-shadow: inset 0 0 0 1px rgb(255 240 214/.75); }
}

/* C6 dock (after main in the DOM): line icons on opaque tiles, visible labels, transform-only magnification;
   on wide hover screens it is parked (html.fx-dock-park) while the hero is on screen */
body:has(> .fx-dock) { padding-bottom: calc(var(--fx-dock-h, 80px) + 24px); }
.fx-dock { position: fixed; z-index: 60; left: 50%; bottom: max(12px, env(safe-area-inset-bottom)); translate: -50% 0; }
.fx-dock__glass { position: absolute; inset: 0; --gr: 22px; --ga: .66; transform: scaleX(var(--dock-grow, 1)); transition: transform .14s ease-out; }
.fx-dock__list { position: relative; display: flex; align-items: flex-end; gap: 4px; margin: 0; padding: 6px 8px; list-style: none; }
.fx-dock__split { position: relative; margin-left: 9px; }
.fx-dock__split::before { content: ""; position: absolute; left: -7px; top: 8px; height: 32px; width: 1px; background: rgb(255 240 214/.22); }
.fx-dock__item { display: grid; justify-items: center; gap: 2px; width: 56px; min-height: 56px; padding: 0; border: 0; background: none; color: var(--ink); font: inherit; text-decoration: none; cursor: pointer; -webkit-tap-highlight-color: transparent; transform: translateX(var(--dx, 0px)); transition: transform .14s ease-out; }
.fx-dock__item:hover { color: var(--ink); }
.fx-dock__icon { position: relative; display: grid; place-items: center; width: 40px; height: 40px; border-radius: 12px; background: linear-gradient(#1A1A22, #15151B); box-shadow: inset 0 1px 0 rgb(255 240 214/.16), inset 0 0 0 1px rgb(255 240 214/.07); transform-origin: 50% 100%; transform: scale(var(--s, 1)); transition: transform .14s ease-out; }
.fx-dock__icon svg { width: 22px; height: 22px; fill: none; stroke: currentColor; stroke-width: 1.6; stroke-linecap: round; stroke-linejoin: round; }
.fx-dock__label { font: 500 12px/1.2 var(--sans); white-space: nowrap; }
.fx-dock__item[aria-current] .fx-dock__icon { color: var(--accent); }
.fx-dock__item[aria-current] .fx-dock__icon::after { content: ""; position: absolute; bottom: 4px; left: 14px; width: 12px; height: 2px; border-radius: 2px; background: var(--accent); }
.fx-dock__item:focus-visible { outline: none; }
.fx-dock__item:focus-visible .fx-dock__icon { outline: 2px solid var(--accent); outline-offset: 3px; }
html:not(.fx-js) :is(.fx-dock__display, .fx-settings), .fx-settings__toggle { display: none; }

/* C5 settings: two pills bottom right from 1400 px, a round button from 1024 px (hover screens); else Display in the dock */
.fx-settings { position: fixed; z-index: 61; right: max(16px, env(safe-area-inset-right)); bottom: max(18px, env(safe-area-inset-bottom)); }
.fx-settings__panel { position: static; inset: auto; margin: 0; padding: 0; border: 0; overflow: visible; color: inherit; background: none; display: flex; flex-direction: column; align-items: flex-end; gap: 8px; }
.fx-pill { --gr: 999px; display: inline-flex; align-items: center; gap: 10px; min-height: 36px; padding: 6px 8px 6px 14px; border: 0; cursor: pointer; font: 500 12.5px/1 var(--sans); letter-spacing: .01em; }
.fx-value { min-width: 3.6em; padding: 5px 9px; border-radius: 999px; text-align: center; color: var(--paper); background: var(--accent); }
.fx-switch { position: relative; width: 34px; height: 20px; border-radius: 999px; background: rgb(255 255 255/.16); box-shadow: inset 0 0 0 1px rgb(255 240 214/.25); transition: background-color .2s; }
.fx-switch::after { content: ""; position: absolute; top: 2px; left: 2px; width: 16px; height: 16px; border-radius: 50%; background: var(--ink); box-shadow: 0 1px 3px rgb(0 0 0/.5); transition: translate .2s var(--ease); }
.fx-pill[aria-checked=true] .fx-switch { background: var(--accent); }
.fx-pill[aria-checked=true] .fx-switch::after { translate: 14px 0; background: var(--paper); }
@media (min-width: 1024px) and (hover: hover) { .fx-dock__display { display: none; } .fx-dock { transition: translate .35s var(--ease), visibility 0s; }
  html.fx-dock-park .fx-dock { translate: -50% calc(100% + 24px); visibility: hidden; transition-delay: 0s, .35s; } }
@media (min-width: 1024px) and (max-width: 1399.98px) and (hover: hover) { html.fx-js .fx-settings__toggle { display: grid; place-items: center; width: 44px; height: 44px; padding: 0; border: 0; cursor: pointer; --gr: 999px; } }
@media (max-width: 1399.98px), (hover: none) {
  .fx-settings__panel { position: fixed; inset: auto max(16px, env(safe-area-inset-right)) calc(var(--fx-dock-h, 80px) + 12px) auto; }
  .fx-settings__panel:not(:popover-open) { display: none; }
  .fx-pill { min-height: 44px; }
}

/* C7, C11 index: a sticky glass panel from 920 px; below it a closed disclosure row */
.fx-toc > summary { list-style: none; }
.fx-toc > summary::-webkit-details-marker { display: none; }
.project-toc__list a.is-active { color: var(--accent); border-left-color: var(--accent); background: var(--paper-warm); }
.project-toc__list a.is-active .project-toc__num { color: var(--accent); }
.project-toc__list a.is-active .project-toc__industry { color: var(--accent-deep); }
.project-toc__list a:focus-visible { outline: 2px solid var(--accent); outline-offset: -2px; }
@media (min-width: 920px) {
  .project-toc { top: calc(var(--fx-header-h, 61px) + 1rem); isolation: isolate; padding: 1rem .5rem 1rem .75rem; border-radius: 16px;
    background: var(--fx-solid); box-shadow: inset 0 1px 0 rgb(255 240 214/.18); }
  .project-toc__list { max-height: calc(100vh - var(--fx-header-h, 61px) - 6.5rem); overflow-y: auto; overscroll-behavior: contain; scrollbar-width: thin; }
  .fx-toc > summary { cursor: default; }
  .fx-toc > summary::before { display: none; }
}
@media (max-width: 919.98px) {
  .project-toc::before { display: none; }
  .fx-toc > summary { position: relative; isolation: isolate; display: flex; align-items: center; justify-content: space-between;
    min-height: 48px; margin: 0; padding: 0 1rem; border-radius: 12px; cursor: pointer; background: var(--fx-solid); }
  .fx-toc > summary::after { content: ""; width: 7px; height: 7px; border: solid currentColor; border-width: 0 1.5px 1.5px 0; rotate: 45deg; translate: 0 -2px; }
  .fx-toc[open] > summary { margin-bottom: .75rem; }
  .fx-toc[open] > summary::after { rotate: 225deg; translate: 0 2px; }
}
@media (scripting: enabled) and (max-width: 919.98px) { html:not(.fx-js) .fx-toc > :not(summary) { display: none; } }

/* C10 filter chips */
.filters { display: flex; flex-wrap: wrap; gap: .5rem; margin: 0 0 1.8rem; }
.filter-chip { font-family: var(--mono); font-size: .72rem; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-soft); background: transparent; border: 1px solid var(--rule); border-radius: 999px; padding: .45rem .95rem; cursor: pointer; transition: color .2s var(--ease), border-color .2s var(--ease), background .2s var(--ease); }
.filter-chip:hover { color: var(--accent); border-color: var(--accent-deep); }
.filter-chip.is-active { color: var(--paper); background: var(--accent); border-color: var(--accent); font-weight: 600; }
.project-bubble.is-hidden, .project-toc__list li.is-hidden, .domain-head.is-hidden { display: none; }
@media (min-width: 700px) { .fx-vt-filter .project-bubble:not(.is-hidden) { view-transition-name: match-element; view-transition-class: card; } }
::view-transition-group(*.card) { animation-duration: .32s; animation-timing-function: var(--ease); }

/* C7 phones: with a dock the header scrolls away (the dock navigates); 12 px text floor; chips on one scrolling row */
@media (max-width: 640px) {
  html:has(> body > .fx-dock) { scroll-padding-top: 16px; }
  body:has(> .fx-dock) .nav { position: relative; }
  .panel__meta-label, :is(.panel__meta, .hero__meta) .chip, .filter-chip, .project-toc__industry, .project-toc__num, .project-toc__label, .panel__eyebrow, .marquee__track span { font-size: 12px; }
  .filters { flex-wrap: nowrap; overflow-x: auto; scroll-snap-type: x proximity; scrollbar-width: none; margin-inline: calc(-1 * var(--gutter)); padding-inline: var(--gutter);
    -webkit-mask: linear-gradient(90deg, transparent, #000 24px calc(100% - 24px), transparent); mask: linear-gradient(90deg, transparent, #000 24px calc(100% - 24px), transparent); }
  .filter-chip { flex: none; scroll-snap-align: start; }
}

/* C12 cross-document view transitions (same origin pages only) */
@media (prefers-reduced-motion: no-preference) { @view-transition { navigation: auto; } }
.nav { view-transition-name: fx-nav; }
html:not(.fx-vt-filter)::view-transition-old(root) { animation: 140ms ease-out both fx-vt-out; }
html:not(.fx-vt-filter)::view-transition-new(root) { animation: 240ms var(--ease) both fx-vt-in; }
html[data-motion=off]::view-transition-group(*), html[data-motion=off]::view-transition-old(*),
html[data-motion=off]::view-transition-new(*) { animation: none !important; }
@keyframes fx-vt-out { to { opacity: 0; } }
@keyframes fx-vt-in { from { opacity: 0; translate: 0 10px; } }

@media (forced-colors: active) {
  :where(a, button, summary, [tabindex]):focus-visible, .filter-chip.is-active:focus-visible { outline: 2px solid CanvasText; }
  .fx-plate, .glass::before, .nav::before, .project-toc::before, .fx-toc > summary::before { display: none; }
  .glass, .nav, .project-toc, .fx-toc > summary { background: Canvas; color: CanvasText; box-shadow: none; -webkit-backdrop-filter: none; backdrop-filter: none; }
  .glass, .nav { border: 1px solid CanvasText; }
  @media (min-width: 920px) { .project-toc { border: 1px solid CanvasText; } }
  @media (max-width: 919.98px) { .fx-toc > summary { border: 1px solid CanvasText; } }
  .fx-dock__icon, .fx-switch { background: ButtonFace; color: ButtonText; border: 1px solid ButtonText; box-shadow: none; }
  .fx-dock__item[aria-current] .fx-dock__icon { border: 2px solid Highlight; }
  .fx-dock__item[aria-current] .fx-dock__icon::after, .fx-pill[aria-checked=true] .fx-switch { background: Highlight; }
  .fx-value { forced-color-adjust: none; background: Highlight; color: HighlightText; }
}
@media print {
  :root { --ink: #111; --ink-soft: #333; --muted: #555; --paper: #fff; --accent: #7A5C1E; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .fx-pending { translate: none !important; }
  .fx-pending::after { transform: none !important; }
  .fx-backdrop, .fx-plate, .hero::before, #contact::before, .fx-dock, .fx-settings, .fx-skip, .marquee, .scroll-progress, .filters, .project-toc { display: none !important; }
  body { background: #fff; color: #111; padding-bottom: 0 !important; }
  h1, h2, h3, h4, .panel__title, .panel__desc, .panel__lede, .hero__sub, .disclosure, .project-toc__name { color: #111 !important; }
  .hero__title em { color: var(--accent) !important; background: none !important; }
  .project-bubble { background: #fff !important; border: 1px solid #bbb; box-shadow: none; break-inside: avoid; page-break-after: auto; }
}
