/* Shared motion system — progressive enhancement, no external runtime. */
html.motion-ready [data-motion-reveal] {
  --motion-delay: 0ms;
  opacity: 0;
  transform: translate3d(0, 46px, 0);
  filter: blur(5px);
  transition:
    opacity 900ms var(--ease-out) var(--motion-delay),
    transform 1100ms var(--ease-out) var(--motion-delay),
    filter 900ms var(--ease-out) var(--motion-delay);
  will-change: opacity, transform, filter;
}
html.motion-ready [data-motion-reveal='left'] { transform: translate3d(-42px, 0, 0); }
html.motion-ready [data-motion-reveal='right'] { transform: translate3d(42px, 0, 0); }
html.motion-ready [data-motion-reveal='scale'] { transform: scale(.94); }
html.motion-ready [data-motion-reveal].motion-visible {
  opacity: 1;
  transform: none;
  filter: none;
}

/* Reader-controlled accessibility, shared by every redesigned page. */
.a11y-widget { position:fixed; top:104px; bottom:auto; left:0; z-index:1100; font-family:var(--font-body,system-ui,sans-serif); }
.a11y-trigger {
  width:46px; min-height:46px; display:inline-flex; align-items:center; justify-content:center; gap:.55rem; padding:0;
  border:1px solid rgba(244,238,224,.6); border-radius:0 999px 999px 0; background:var(--primary-deep,#2f4438);
  color:#fff; box-shadow:0 8px 28px rgba(31,42,35,.22); font:650 .84rem/1 var(--font-body,system-ui,sans-serif);
}
.a11y-trigger span:last-child { display:none; }
.a11y-trigger span:first-child { font:600 1.05rem/1 var(--font-display,serif); }
.a11y-panel { position:absolute; top:0; left:58px; bottom:auto; width:min(330px,calc(100vw - 76px)); padding:1.15rem; border:1px solid var(--line,#d6cbb0); background:var(--cream,#f4eee0); color:var(--ink,#3a3833); box-shadow:0 18px 48px rgba(31,42,35,.2); }
.a11y-panel[hidden] { display:none; }
.a11y-panel-head { display:flex; align-items:center; justify-content:space-between; gap:1rem; }
.a11y-panel-head strong { font:500 1.25rem/1.2 var(--font-display,serif); }
.a11y-panel-head button { width:36px; height:36px; border:1px solid var(--line,#d6cbb0); background:transparent; color:inherit; font-size:1.4rem; }
.a11y-panel p { margin:.75rem 0 1rem; font-size:.9rem; line-height:1.55; }
.a11y-scale { display:grid; grid-template-columns:repeat(3,1fr); gap:6px; }
.a11y-scale button { min-height:44px; padding:.55rem .35rem; border:1px solid var(--sage-700,#4f6b58); background:transparent; color:inherit; font-weight:650; }
.a11y-scale button:hover,.a11y-scale button:focus-visible { background:var(--sage-700,#4f6b58); color:#fff; }
.a11y-contrast { min-height:44px; margin-top:.75rem; display:flex; align-items:center; gap:.65rem; font-size:.92rem; }
.a11y-contrast input { width:20px; height:20px; accent-color:var(--sage-700,#4f6b58); }
.a11y-widget button:focus-visible,.a11y-widget input:focus-visible { outline:3px solid var(--amber-300,#d4a968); outline-offset:3px; }
html.a11y-high-contrast { --cream:#fffaf0; --cream-soft:#fffdf7; --surface:#f5ecd8; --ink:#181714; --ink-soft:#2f2d28; --text-muted:#302e29; --primary-deep:#173528; --sage-900:#173528; --sage-700:#315a43; --line:#827763; }
html.a11y-high-contrast a { text-decoration-thickness:2px; text-underline-offset:3px; }

[data-motion-parallax] { transform: translate3d(0, var(--parallax-y, 0), 0) scale(var(--parallax-scale, 1)); }
[data-motion-card] {
  --card-rx: 0deg;
  --card-ry: 0deg;
  --card-lift: 0px;
  transform: perspective(900px) rotateX(var(--card-rx)) rotateY(var(--card-ry)) translateY(var(--card-lift));
  transform-style: preserve-3d;
  transition: transform 500ms var(--ease-out), box-shadow 500ms var(--ease-out);
  will-change: transform;
}
[data-motion-card]:hover { --card-lift: -7px; }
[data-motion-card] > * { transform: translateZ(0); }

[data-magnetic] { --magnetic-x: 0px; --magnetic-y: 0px; transform: translate3d(var(--magnetic-x), var(--magnetic-y), 0); }
.motion-cursor {
  position: fixed;
  inset: 0 auto auto 0;
  z-index: 4000;
  width: 11px;
  height: 11px;
  border-radius: 50%;
  background: var(--cream);
  mix-blend-mode: difference;
  pointer-events: none;
  opacity: 0;
  transform: translate3d(-50%, -50%, 0);
  transition: width 260ms var(--ease-out), height 260ms var(--ease-out), opacity 220ms ease;
}
.motion-cursor.is-active { opacity: .86; }
.motion-cursor.is-interactive { width: 34px; height: 34px; }

.motion-progress {
  position: fixed;
  inset: 0 0 auto;
  z-index: 3500;
  height: 3px;
  transform: scaleX(var(--page-progress, 0));
  transform-origin: left;
  background: var(--warm-light);
  pointer-events: none;
}

[data-organic-particles] {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  pointer-events: none;
  opacity: .44;
  mix-blend-mode: screen;
}

.motion-word { display: inline-block; overflow: hidden; vertical-align: bottom; }
.motion-word > span {
  display: inline-block;
  transform: translateY(115%);
  animation: motion-word-in 920ms var(--ease-out) forwards;
  animation-delay: var(--word-delay, 0ms);
}
@keyframes motion-word-in { to { transform: translateY(0); } }

@media (pointer: coarse), (max-width: 900px) {
  .a11y-widget { top:14px; right:78px; bottom:auto; left:auto; }
  .a11y-panel { top:56px; right:-62px; bottom:auto; left:auto; }
  .a11y-trigger span:last-child { display:none; }
  .a11y-trigger { width:48px; padding:0; justify-content:center; }
  .motion-cursor { display: none; }
  [data-motion-card] { transform: none; }
}

@media (prefers-reduced-motion: reduce) {
  html.motion-ready [data-motion-reveal],
  html.motion-ready [data-motion-reveal].motion-visible,
  [data-motion-parallax],
  [data-motion-card],
  [data-magnetic],
  .motion-word > span {
    opacity: 1 !important;
    transform: none !important;
    filter: none !important;
    animation: none !important;
    transition: none !important;
  }
  [data-organic-particles], .motion-cursor, .motion-progress { display: none !important; }
}
