/* Jost + Spectral (SIL OFL), self-hosted from Google Fonts */
@font-face{font-family:'Jost';font-style:normal;font-weight:200 400;font-display:swap;src:url(fonts/jost-200-400-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Jost';font-style:normal;font-weight:200 400;font-display:swap;src:url(fonts/jost-200-400-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Jost';font-style:normal;font-weight:200 400;font-display:swap;src:url(fonts/jost-200-400-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Spectral';font-style:italic;font-weight:300;font-display:swap;src:url(fonts/spectral-300-italic-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Spectral';font-style:italic;font-weight:300;font-display:swap;src:url(fonts/spectral-300-italic-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Spectral';font-style:italic;font-weight:300;font-display:swap;src:url(fonts/spectral-300-italic-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Spectral';font-style:italic;font-weight:300;font-display:swap;src:url(fonts/spectral-300-italic-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Spectral';font-style:normal;font-weight:200;font-display:swap;src:url(fonts/spectral-200-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Spectral';font-style:normal;font-weight:200;font-display:swap;src:url(fonts/spectral-200-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Spectral';font-style:normal;font-weight:200;font-display:swap;src:url(fonts/spectral-200-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Spectral';font-style:normal;font-weight:200;font-display:swap;src:url(fonts/spectral-200-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}
@font-face{font-family:'Spectral';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/spectral-300-cyrillic-ext.woff2) format('woff2');unicode-range:U+0460-052F, U+1C80-1C8A, U+20B4, U+2DE0-2DFF, U+A640-A69F, U+FE2E-FE2F}
@font-face{font-family:'Spectral';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/spectral-300-cyrillic.woff2) format('woff2');unicode-range:U+0301, U+0400-045F, U+0490-0491, U+04B0-04B1, U+2116}
@font-face{font-family:'Spectral';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/spectral-300-latin-ext.woff2) format('woff2');unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF}
@font-face{font-family:'Spectral';font-style:normal;font-weight:300;font-display:swap;src:url(fonts/spectral-300-latin.woff2) format('woff2');unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD}

/* Umbra Studios. Values follow design_handoff_umbra_site/README.md (high fidelity, monochrome, no accent). */

:root {
  --ink-bg: oklch(0.135 0.006 265);
  --ink-panel: oklch(0.19 0.008 265);
  --ink-100: oklch(0.99 0 0);
  --ink-95: oklch(0.96 0.003 265);
  --ink-94: oklch(0.94 0.004 265);
  --ink-82: oklch(0.82 0.005 265);
  --ink-80: oklch(0.80 0.005 265);
  --ink-78: oklch(0.78 0.005 265);
  --ink-70: oklch(0.70 0.005 265);
  --ink-64: oklch(0.64 0.005 265);
  --ink-62: oklch(0.62 0.005 265);
  --ink-58: oklch(0.58 0.005 265);
  --ink-55: oklch(0.55 0.005 265);
  --ink-42: oklch(0.42 0.006 265);
  --ink-40: oklch(0.40 0.006 265);
  --rule: oklch(0.26 0.006 265);
  --toggle-off: oklch(0.30 0.006 265);
  --underline: oklch(0.32 0.006 265);
  --track: oklch(0.34 0.006 265);

  --sans: Jost, system-ui, sans-serif;
  --serif: Spectral, Georgia, serif;
  --gutter: 40px;
  --header-h: 80px;
  --crescent-mask: radial-gradient(ellipse 44.4% 44.4% at 56.2% 45.2%, transparent 0 99%, #000 100%);
  --stripes: repeating-linear-gradient(115deg, oklch(0.96 0.003 265 / 0.045) 0 6px, transparent 6px 14px);
}

*, *::before, *::after { box-sizing: border-box; }
html { background: var(--ink-bg); scroll-behavior: smooth; -webkit-text-size-adjust: 100%; text-size-adjust: 100%; }
body {
  margin: 0; background: var(--ink-bg); color: var(--ink-95);
  font-family: var(--sans); font-weight: 300;
  -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale;
}
h1, h2, h3, p { margin: 0; }
a { color: var(--ink-95); text-decoration: none; }
a:hover { color: oklch(1 0 0); }
button { font: inherit; color: inherit; background: none; border: 0; padding: 0; cursor: pointer; }
img { display: block; max-width: 100%; }
::selection { background: var(--ink-95); color: var(--ink-bg); }
:focus-visible { outline: 1px solid var(--ink-95); outline-offset: 5px; }
main:focus { outline: none; }

@keyframes umbraIn { from { opacity: 0; transform: translateY(18px); } to { opacity: 1; transform: none; } }
@keyframes tlA {
  0%   { opacity: 0.66; transform: translate3d(0,0,0) scale(1.04); }
  42%  { opacity: 0.66; transform: translate3d(-3.5%,0,0) scale(1.07); }
  50%  { opacity: 0;    transform: translate3d(-4%,0,0) scale(1.07); }
  92%  { opacity: 0;    transform: translate3d(0.5%,0,0) scale(1.04); }
  100% { opacity: 0.66; transform: translate3d(0,0,0) scale(1.04); }
}
@keyframes tlB {
  0%   { opacity: 0;    transform: translate3d(2%,0,0) scale(1.08); }
  42%  { opacity: 0;    transform: translate3d(-1%,0,0) scale(1.05); }
  50%  { opacity: 0.62; transform: translate3d(-1.5%,0,0) scale(1.05); }
  92%  { opacity: 0.62; transform: translate3d(2.5%,0,0) scale(1.08); }
  100% { opacity: 0;    transform: translate3d(2%,0,0) scale(1.08); }
}

.skip {
  position: absolute; left: 16px; top: -100px; z-index: 100; padding: 10px 14px;
  background: var(--ink-95); color: var(--ink-bg);
  font-size: 12px; letter-spacing: 0.2em; text-transform: uppercase;
}
.skip:focus { top: 16px; color: var(--ink-bg); }

/* clip, not hidden: hidden would turn the wrapper into a scroll container and break the sticky header */
.page { position: relative; min-height: 100vh; overflow-x: clip; }
.wrap { max-width: 1280px; margin: 0 auto; padding-inline: var(--gutter); }
main { position: relative; z-index: 1; }
.view-anim { animation: umbraIn 480ms ease both; }
#work, #contact { scroll-margin-top: var(--header-h); }

/* ---- fixed background: two session stills cross-fading, drifting sideways with scroll ---- */
.bg {
  position: fixed; inset: 0; z-index: 0; pointer-events: none; overflow: hidden;
  -webkit-mask-image: radial-gradient(ellipse 85% 75% at 50% 45%, #000 0 45%, transparent 100%);
  mask-image: radial-gradient(ellipse 85% 75% at 50% 45%, #000 0 45%, transparent 100%);
}
.bg-drift { position: absolute; inset: 0; will-change: transform; }
.bg-layer {
  position: absolute; inset: -6%;
  background-size: cover; background-position: center;
  mix-blend-mode: screen; filter: saturate(0) brightness(0.62) contrast(1.3);
  animation-duration: 66s; animation-timing-function: ease-in-out; animation-iteration-count: infinite;
}
.bg-a { background-image: url(img/bkg1.webp); animation-name: tlA; }
.bg-b { background-image: url(img/bkg2.webp); animation-name: tlB; }
.glow {
  position: fixed; top: -22vw; left: 50%; width: 120vw; height: 120vw; margin-left: -60vw;
  pointer-events: none; z-index: 0;
  background: radial-gradient(circle at 50% 50%, oklch(0.30 0.012 265 / 0.55) 0%, oklch(0.20 0.010 265 / 0.35) 38%, transparent 62%);
}

/* ---- crescent mark (CSS, not an image) ---- */
.crescent {
  flex: none; display: block; aspect-ratio: 1; border-radius: 50%; background: var(--ink-95);
  -webkit-mask-image: var(--crescent-mask); mask-image: var(--crescent-mask);
}

/* ---- header ---- */
.site-header {
  position: sticky; top: 0; z-index: 40;
  display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 14px 24px;
  padding: 22px var(--gutter);
  background: oklch(0.135 0.006 265 / 0.72);
  -webkit-backdrop-filter: blur(18px); backdrop-filter: blur(18px);
}
.lockup { display: flex; align-items: center; gap: 15px; color: var(--ink-95); }
.lockup .crescent { width: 30px; }
.wordmark { display: flex; flex-direction: column; gap: 5px; }
.wordmark-top { font-size: 19px; font-weight: 300; letter-spacing: 0.34em; line-height: 1; }
.wordmark-sub {
  align-self: flex-end; margin-right: -0.5em;
  font-size: 8px; font-weight: 300; letter-spacing: 0.5em; line-height: 1; color: var(--ink-82);
}
.nav { display: flex; flex-wrap: wrap; align-items: center; gap: 10px 34px; }
.nav-link { font-size: 13px; font-weight: 300; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-70); }
.nav-link:hover { color: oklch(1 0 0); }
.lang { display: flex; align-items: center; gap: 4px; font-size: 12px; font-weight: 300; letter-spacing: 0.16em; }
.lang a { color: var(--ink-55); }
.lang a[aria-current] { color: var(--ink-95); }
.lang a:hover { color: oklch(1 0 0); }
.lang-sep { color: var(--ink-40); }

/* ---- shared type ---- */
.body { font-family: var(--serif); font-weight: 300; font-size: 17px; line-height: 1.7; color: var(--ink-78); text-wrap: pretty; }
.caps { font-size: 11px; font-weight: 300; text-transform: uppercase; }
.cta {
  display: inline-block; padding-bottom: 8px; border-bottom: 1px solid var(--ink-95); white-space: nowrap;
  font-size: 12px; font-weight: 300; letter-spacing: 0.2em; text-transform: uppercase;
}
.split {
  display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 30px;
  border-top: 1px solid var(--rule); padding-top: clamp(28px, 3.5vw, 48px);
}
.page-intro { padding-top: clamp(50px, 8vh, 110px); }
.page-title { font-weight: 200; font-size: clamp(34px, 5.4vw, 76px); line-height: 1; letter-spacing: -0.025em; max-width: 20ch; text-wrap: balance; }
.page-lead {
  margin-top: clamp(26px, 3vw, 42px); max-width: 60ch;
  font-family: var(--serif); font-weight: 300; font-size: clamp(16px, 1.4vw, 20px); line-height: 1.72; color: var(--ink-80); text-wrap: pretty;
}

/* ---- media placeholders (striped until real photos arrive) ---- */
.ph {
  position: relative; overflow: hidden; display: flex; align-items: flex-end; padding: 16px;
  background-color: var(--ink-panel); background-image: var(--stripes);
  transition: filter 500ms;
}
.ph img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.ratio-2x3 { aspect-ratio: 2 / 3; }
.ratio-4x3 { aspect-ratio: 4 / 3; padding: 18px; }
.ratio-16x10 { aspect-ratio: 16 / 10; padding: 14px; }
.ratio-16x7 {
  aspect-ratio: 16 / 7; padding: 22px;
  background-image: repeating-linear-gradient(115deg, oklch(0.96 0.003 265 / 0.04) 0 7px, transparent 7px 16px);
}
.work-card .ph:hover { filter: brightness(1.35); }
.step .ph:hover, .plugin .ph:hover { filter: brightness(1.3); }

/* ---- home: hero ---- */
.hero { position: relative; isolation: isolate; padding-top: clamp(60px, 10vh, 130px); }
.hero-crescent {
  position: absolute; left: -2%; top: clamp(36px, 6vh, 86px); width: clamp(290px, 33vw, 450px);
  background: var(--ink-94); pointer-events: none; z-index: 0;
}
/* difference blend flips the type to black exactly where it crosses the arc; needs isolation on .hero */
.hero h1 {
  position: relative; z-index: 1; mix-blend-mode: difference; max-width: 16ch; text-wrap: balance;
  font-weight: 200; font-size: clamp(40px, 7vw, 104px); line-height: 0.98; letter-spacing: -0.025em; color: var(--ink-100);
}
.hero .lead {
  position: relative; z-index: 1; mix-blend-mode: difference; margin-top: clamp(30px, 4vw, 52px); max-width: 62ch;
  font-family: var(--serif); font-weight: 300; font-size: clamp(16px, 1.5vw, 21px); line-height: 1.72; color: var(--ink-82); text-wrap: pretty;
}

/* ---- home: waveform band + sound control ---- */
.reel { padding-top: clamp(48px, 7vw, 96px); }
.wave { position: relative; height: 180px; cursor: crosshair; touch-action: pan-y; }
.wave canvas { display: block; width: 100%; height: 100%; }
.reel-controls { display: flex; flex-wrap: wrap; align-items: center; gap: clamp(18px, 3vw, 40px); padding-top: 22px; }
.sound-toggle {
  padding-bottom: 7px; border-bottom: 1px solid var(--toggle-off); color: var(--ink-58);
  font-size: 12px; font-weight: 300; letter-spacing: 0.2em; text-transform: uppercase;
}
.sound-toggle[aria-pressed="true"] { border-bottom-color: var(--ink-95); color: var(--ink-95); }
.vol { position: relative; flex: 1; min-width: 150px; max-width: 300px; height: 22px; display: flex; align-items: center; cursor: pointer; touch-action: none; }
.vol-track { position: absolute; left: 0; right: 0; height: 1px; background: var(--track); }
.vol-fill { position: absolute; left: 0; width: var(--vol); height: 1px; background: var(--ink-95); }
.vol-handle { position: absolute; left: var(--vol); width: 9px; height: 9px; margin-left: -4px; border-radius: 50%; background: var(--ink-95); }
.vol-readout { min-width: 4ch; font-size: 11px; font-weight: 300; letter-spacing: 0.18em; color: var(--ink-62); }
.reel-note { font-size: 11px; font-weight: 300; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-64); }
/* notes left empty in content.json take no space (flex gaps would otherwise remain) */
.reel-note:empty, .footer-meta span:empty { display: none; }

/* ---- home: selected work ---- */
.work { padding-top: clamp(90px, 12vw, 180px); }
.section-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 20px; margin-bottom: clamp(30px, 4vw, 54px); }
.section-head h2 { font-weight: 200; font-size: clamp(26px, 3vw, 40px); letter-spacing: -0.015em; }
.section-note { font-size: 12px; font-weight: 300; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-58); }
.work-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 240px), 1fr)); gap: clamp(18px, 2.4vw, 34px); }
.work-card { display: flex; flex-direction: column; gap: 16px; }
.work-title { font-weight: 300; font-size: 18px; letter-spacing: -0.005em; }
.work-meta { margin-top: 8px; font-size: 11px; font-weight: 300; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-62); }

/* ---- home: plugins teaser ---- */
.teaser { padding-top: clamp(90px, 12vw, 170px); }
.teaser h2 { font-weight: 200; font-size: clamp(24px, 3vw, 38px); letter-spacing: -0.015em; max-width: 22ch; }
.teaser .body { margin-top: 18px; max-width: 56ch; }

/* ---- services ---- */
.steps { padding-top: clamp(50px, 7vw, 96px); }
.step {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 320px), 1fr)); gap: clamp(22px, 3vw, 56px);
  align-items: start; padding-block: clamp(34px, 4.5vw, 72px); border-top: 1px solid var(--rule);
}
.step-no { font-weight: 200; font-size: clamp(40px, 4.6vw, 68px); line-height: 1; letter-spacing: -0.03em; color: var(--ink-42); }
.step h2 { margin-top: 20px; max-width: 20ch; font-weight: 300; font-size: clamp(22px, 2.4vw, 32px); letter-spacing: -0.01em; }
.step .body { margin-top: 18px; max-width: 48ch; line-height: 1.72; }
.step-spec { margin-top: 22px; font-size: 11px; font-weight: 300; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-58); }
.closing-note { border-top: 1px solid var(--rule); padding-top: 26px; font-size: 11px; font-weight: 300; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-64); }

/* ---- plugins ---- */
.plugin-facts { display: flex; flex-wrap: wrap; gap: 12px 34px; margin-top: clamp(28px, 3.4vw, 46px); font-size: 12px; font-weight: 300; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ink-62); }
.plugin-hero { padding-top: clamp(40px, 5vw, 70px); }
.plugin-list { padding-top: clamp(60px, 7vw, 100px); }
.plugin {
  display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 260px), 1fr)); gap: clamp(20px, 3vw, 48px);
  align-items: start; padding-block: clamp(26px, 3.4vw, 44px); border-top: 1px solid var(--rule);
}
.plugin h2 { font-weight: 200; font-size: clamp(26px, 3.2vw, 44px); letter-spacing: -0.02em; }
.plugin-kind { margin-top: 12px; font-size: 11px; font-weight: 300; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-62); }
.plugin .body { margin-top: 20px; max-width: 44ch; line-height: 1.72; }
.beta { padding-top: clamp(60px, 7vw, 100px); }
.beta .split { gap: 28px; }
.beta h2 { font-weight: 200; font-size: clamp(24px, 2.8vw, 36px); letter-spacing: -0.015em; }
.beta .body { margin-top: 16px; max-width: 52ch; }

/* ---- 404 ---- */
.notfound-cta { margin-top: clamp(28px, 3.4vw, 46px); }

/* ---- contact (every page) + footer ---- */
.contact { position: relative; z-index: 1; padding-top: clamp(90px, 12vw, 180px); }
.contact-inner { border-top: 1px solid var(--rule); padding-top: clamp(30px, 4vw, 56px); }
.contact h2 { max-width: 18ch; text-wrap: balance; font-weight: 200; font-size: clamp(30px, 4.4vw, 62px); letter-spacing: -0.025em; }
.contact-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 240px), 1fr)); gap: clamp(26px, 3.4vw, 52px); margin-top: clamp(36px, 4.4vw, 64px); }
.contact-label { margin-bottom: 16px; font-size: 11px; font-weight: 300; letter-spacing: 0.2em; text-transform: uppercase; color: var(--ink-58); }
.contact-link { font-weight: 300; font-size: clamp(18px, 2vw, 26px); letter-spacing: -0.01em; border-bottom: 1px solid var(--underline); overflow-wrap: anywhere; }
.contact .body { max-width: 32ch; line-height: 1.68; color: var(--ink-80); }

.site-footer { position: relative; z-index: 1; padding-top: clamp(80px, 10vw, 150px); padding-bottom: 50px; }
.footer-inner { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 26px; border-top: 1px solid var(--rule); padding-top: 34px; }
.footer-lockup { display: flex; align-items: center; gap: 13px; opacity: 0.72; }
.footer-lockup .crescent { width: 24px; }
.footer-lockup .wordmark { gap: 4px; }
.footer-lockup .wordmark-top { font-size: 15px; }
.footer-lockup .wordmark-sub { font-size: 7px; color: inherit; }
.footer-meta { display: flex; flex-wrap: wrap; gap: 12px 30px; font-size: 11px; font-weight: 300; letter-spacing: 0.16em; text-transform: uppercase; color: var(--ink-64); }

/* ---- narrow screens: the header wraps to two rows instead of crowding (no hamburger in the design) ---- */
@media (max-width: 900px) {
  .nav { column-gap: 22px; }
}
@media (max-width: 600px) {
  :root { --gutter: 20px; }
  .site-header { padding-block: 16px; }
  .nav { column-gap: 16px; }
  .nav-link { font-size: 12px; letter-spacing: 0.15em; }
}

@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  .bg-layer { animation: none; }
  .bg-a { opacity: 0.66; transform: scale(1.04); }
  .bg-b { opacity: 0; }
  .view-anim { animation: none; }
  .ph { transition: none; }
}
