*, *::before, *::after { box-sizing: border-box; }
html { background: var(--ivory); color: var(--ink); scroll-padding-block-start: calc(var(--header-height) + var(--s4)); }
body { margin: var(--zero); font-family: var(--font-body); font-weight: var(--weight-normal); font-size: var(--body); line-height: var(--leading-body); }
/* Static local grain, like the client's Najm reference; no animated noise/filter cost. */
body::after { content:'';position:fixed;inset:var(--zero);z-index:var(--grain-layer);pointer-events:none;background-image:var(--grain-ground);background-size:var(--grain-size);opacity:var(--grain-opacity);mix-blend-mode:multiply; }
body.menu-open { overflow: hidden; }
.sr-only{position:absolute;inline-size:var(--stroke);block-size:var(--stroke);padding:var(--zero);margin:var(--zero);overflow:hidden;clip-path:inset(var(--half));white-space:nowrap;border:var(--zero)}
button, a { -webkit-tap-highlight-color: transparent; }
button { font: inherit; }
a { color: inherit; text-decoration: none; }
img { display: block; max-inline-size: var(--full); }
button { cursor: pointer; }
button:focus-visible, a:focus-visible { outline: var(--focus-width) solid var(--brand); outline-offset: var(--focus-offset); }
::selection { color: var(--ivory); background: var(--brand); }
.skip-link { position: fixed; inset-block-start: var(--s2); inset-inline-start: var(--s2); z-index: var(--preloader-layer); padding: var(--s2) var(--s3); background: var(--ivory); transform: translateY(-200%); }
.skip-link:focus { transform: none; }
@media (prefers-reduced-motion: reduce) { *, *::before, *::after { scroll-behavior: auto; } }
