/* andrew-hillman.com — Bone & Oxblood */
:root{--dm-paper:#F7F1E8;--dm-ink:#14110F;--dm-n1:#EDE6DB;--dm-n2:#D4CBBE;--dm-n3:#8A8178;--dm-n4:#3F3A36;--dm-rule:#D4CBBE;--dm-accent:#8B1E2D;--dm-accent-ink:#FFF8F4;--dm-focus:#A52838}
/* Independent palette remap over shared rd/bx tokens (preview) */
:root{--rd-navy-990:#14110F;--rd-navy-950:#14110F;--rd-navy-900:#1E1916;--rd-navy-800:#2B2420;--rd-navy-700:#8B1E2D;--rd-navy-100:#EDE6DB;
--rd-brass-200:#F0D3CD;--rd-brass-300:#DDA8A0;--rd-brass-400:#C0606B;--rd-brass-500:#8B1E2D;--rd-brass-700:#6E1623;--rd-brass-800:#4F0F19;
--rd-ivory-50:#F7F1E8;--rd-ivory-100:#EDE6DB;--rd-ivory-200:#E2D8C9;--rd-ink:var(--dm-ink);--rd-ink-2:var(--dm-n4);--rd-muted:var(--dm-n4);--rd-line:#D4CBBE;--rd-line-dark:color-mix(in srgb,#DDA8A0 22%,transparent);
--rd-accent:#8B1E2D;--rd-accent-ink:#6E1623;--rd-accent-light:#DDA8A0;--rd-on-accent:var(--dm-accent-ink);--rd-bg:#F7F1E8;--rd-bg-alt:#EDE6DB;--rd-fg:var(--dm-ink);--rd-heading:#1E1916;
--bx-navy-950:#14110F;--bx-navy-900:#1E1916;--bx-navy-800:#2B2420;--bx-navy-700:#8B1E2D;--bx-navy-100:#EDE6DB;--bx-brass-300:#DDA8A0;--bx-brass-400:#C0606B;--bx-brass-500:#8B1E2D;--bx-brass-700:#6E1623;--bx-brass-800:#4F0F19;
--bx-ivory-50:#F7F1E8;--bx-ivory-100:#EDE6DB;--bx-ink-900:var(--dm-ink);--bx-slate-600:var(--dm-n4);--bx-line:#D4CBBE;--bx-accent:#8B1E2D;--bx-accent-ink:#6E1623;--bx-accent-light:#DDA8A0;--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}}
