/* andrewhillman.org — Chalk & Ochre (ochre for marks/fills; text links use darker ochre for AA) */
:root{--dm-paper:#F2F3F0;--dm-ink:#1A1D21;--dm-n1:#E4E6E1;--dm-n2:#B8BBB4;--dm-n3:#6E7378;--dm-n4:#2C3136;--dm-rule:#B8BBB4;--dm-accent:#8A5F14;--dm-ochre:#B8842A;--dm-accent-ink:#1A1408;--dm-focus:#C99533}
/* Independent palette remap over shared rd/bx tokens (preview) */
:root{--rd-navy-990:#1A1D21;--rd-navy-950:#1A1D21;--rd-navy-900:#22272C;--rd-navy-800:#2C3136;--rd-navy-700:#3A4148;--rd-navy-100:#E4E6E1;
--rd-brass-200:#F0DFB8;--rd-brass-300:#E3C27F;--rd-brass-400:#C99533;--rd-brass-500:#B8842A;--rd-brass-700:#8A5F14;--rd-brass-800:#6B4A10;
--rd-ivory-50:#F2F3F0;--rd-ivory-100:#E4E6E1;--rd-ivory-200:#D6D9D3;--rd-ink:var(--dm-ink);--rd-ink-2:var(--dm-n4);--rd-muted:var(--dm-n4);--rd-line:#B8BBB4;--rd-line-dark:color-mix(in srgb,#E3C27F 22%,transparent);
--rd-accent:#B8842A;--rd-accent-ink:#8A5F14;--rd-accent-light:#E3C27F;--rd-on-accent:var(--dm-accent-ink);--rd-bg:#F2F3F0;--rd-bg-alt:#E4E6E1;--rd-fg:var(--dm-ink);--rd-heading:#22272C;
--bx-navy-950:#1A1D21;--bx-navy-900:#22272C;--bx-navy-800:#2C3136;--bx-navy-700:#3A4148;--bx-navy-100:#E4E6E1;--bx-brass-300:#E3C27F;--bx-brass-400:#C99533;--bx-brass-500:#B8842A;--bx-brass-700:#8A5F14;--bx-brass-800:#6B4A10;
--bx-ivory-50:#F2F3F0;--bx-ivory-100:#E4E6E1;--bx-ink-900:var(--dm-ink);--bx-slate-600:var(--dm-n4);--bx-line:#B8BBB4;--bx-accent:#B8842A;--bx-accent-ink:#8A5F14;--bx-accent-light:#E3C27F;--bx-on-accent:var(--dm-accent-ink)}
/* one reveal per page: neutralize rd per-element reveals */
html.rd-js [data-rd-reveal]{opacity:1!important;transform:none!important;transition:none!important}
/* Dens motion layer — wave-1 PREVIEW 2026-10-31. Hallmark floor: transform/opacity only, no transition:all,
   content visible with JS off, reduced-motion = instant. Durations per Design Critique punch. */
:root{--dur-micro:120ms;--dur-short:220ms;--dur-long:420ms;
--ease-out:cubic-bezier(.22,1,.36,1);--ease-in:cubic-bezier(.4,0,1,1);--ease-in-out:cubic-bezier(.4,0,.2,1)}
/* P1/P3: kill hero scroll-scale, veil, ambient poster zoom, Ken Burns */
.hero-loop,.lb-hero .hero-loop,.hero-loop-poster,.hero-loop video,.hero-loop img{transform:none!important;animation:none!important}
[style*="--hero-veil"]::before,[style*="--hero-veil"]::after{opacity:0!important}
:root{--hero-scale:1!important;--hero-veil:0!important}
/* P2: kill 1s float reveals from enhance.css; visible by default */
html.enh-reveal [data-reveal],html.enh-reveal [data-reveal] *{opacity:1!important;transform:none!important;transition:none!important}
/* one doctrine reveal per page — hidden only when JS ran */
html.dm-js .dm-reveal>*{opacity:0;transform:translateY(8px)}
html.dm-js .dm-reveal.is-in>*{opacity:1;transform:none;transition:opacity var(--dur-long) var(--ease-out),transform var(--dur-long) var(--ease-out)}
html.dm-js .dm-reveal.is-in>*:nth-child(2){transition-delay:40ms}
html.dm-js .dm-reveal.is-in>*:nth-child(3){transition-delay:80ms}
html.dm-js .dm-reveal.is-in>*:nth-child(4){transition-delay:120ms}
html.dm-js .dm-reveal.is-in>*:nth-child(n+5){transition-delay:160ms}
/* P7: instant, sharp focus (Hyprland active border) — ring never animates */
:focus-visible{outline:2px solid var(--dm-focus)!important;outline-offset:2px!important;transition:none!important}
/* P12 + Hover.css-style micro (color/underline only, no lift, no bounce) */
.card:hover,.chip:hover{transform:none!important}
.card,.chip{transition:border-color var(--dur-micro) var(--ease-out),color var(--dur-micro) var(--ease-out)}
.card:hover,.chip:hover{border-color:var(--dm-accent)!important}
main a:not([class]),article a:not([class]){text-decoration-color:color-mix(in srgb,var(--dm-accent) 45%,transparent);text-underline-offset:.18em;transition:text-decoration-color var(--dur-micro) var(--ease-out),color var(--dur-micro) var(--ease-out)}
main a:not([class]):hover,article a:not([class]):hover{text-decoration-color:var(--dm-accent);color:var(--dm-accent)}
/* Hyprland glass chrome on sticky header, with solid fallback */
.dm-glass{background:color-mix(in srgb,var(--dm-paper) 94%,transparent)}
@supports ((backdrop-filter:blur(1px)) or (-webkit-backdrop-filter:blur(1px))){
 .dm-glass{background:color-mix(in srgb,var(--dm-paper) 78%,transparent);-webkit-backdrop-filter:blur(14px) saturate(1.2);backdrop-filter:blur(14px) saturate(1.2);border-bottom:1px solid var(--dm-rule)}}
::selection{background:var(--dm-accent);color:var(--dm-accent-ink)}
/* Animate.css subset remapped to tokens: fadeIn / fadeInUp only (no bounce suite) */
@keyframes dmFadeIn{from{opacity:0}to{opacity:1}}
@keyframes dmFadeInUp{from{opacity:0;transform:translate3d(0,8px,0)}to{opacity:1;transform:none}}
.animate__fadeIn{animation:dmFadeIn var(--dur-long) var(--ease-out) both}
.animate__fadeInUp{animation:dmFadeInUp var(--dur-long) var(--ease-out) both}
@media (prefers-reduced-motion:reduce){
 *,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;transition-delay:0s!important;scroll-behavior:auto!important}
 html.dm-js .dm-reveal>*{opacity:1!important;transform:none!important}}
