/* Each wash and grain layer is independently adjustable. */
.atmosphere-host {position:relative;isolation:isolate;}
.atmosphere-dark {isolation:isolate;}
.atmosphere-dark:not(.footer-reveal){position:relative;}
.atmosphere {position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;border-radius:inherit;}
.color-field,.grain-field {position:absolute;inset:0;pointer-events:none;}
.atmosphere-host>.atmosphere {mask-image:linear-gradient(transparent,#000 12%,#000 88%,transparent);}
.grain-field {mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix type='matrix' values='0 0 0 0 1 0 0 0 0 1 0 0 0 0 1 3 0 0 0 -1'/%3E%3C/filter%3E%3Cpath filter='url(%23n)' d='M0 0h180v180H0z'/%3E%3C/svg%3E");}
.hero-proof-wrap>.atmosphere {top:var(--band-top,70%);}
.hero-proof-wrap::before {background:var(--section-bg,var(--ink));}
.atmosphere-dark {background-color:var(--section-bg,var(--ink));}
.hero-proof-wrap.atmosphere-dark {background-color:transparent;}
@media(max-width:600px){.footer-reveal.atmosphere-dark{position:relative;}}
/* Feedback is immediate, calm, and equally clear with a keyboard. */
a,button,summary { -webkit-tap-highlight-color:#b9d5dc66; }
a,button,summary {transition:color 180ms ease,background-color 180ms ease,border-color 180ms ease,box-shadow 180ms ease,transform 180ms ease;text-underline-offset:.22em;}
:where(a,button,summary,input,select):focus-visible {outline:2px solid currentColor;outline-offset:5px;}
@media(hover:hover){
 a:not(.btn):not(.wordmark):hover {text-decoration:underline;text-decoration-thickness:1px;}
 .btn:hover {transform:translateY(-2px);box-shadow:0 5px 12px #2c39371a;}
 .btn-primary:hover {background:#435a53;}
 .btn-outline:hover {background:var(--ink);color:var(--paper);}
 button:not(.btn):not(.doc-tab):hover,summary:hover {background-color:#879e921a;}
 .doc-tab:hover {background-color:transparent;}
 .hero-proof-wrap .doc-tab:hover::after {background:#fff;}
}
.btn:active,button:active {transform:translateY(1px);box-shadow:none;}
/* Enter once; no parallax, bouncing, or repeated disappearances. */
.enter-pending {opacity:0;transform:translateY(12px);}
.enter-ready {opacity:1;transform:none;transition:opacity 650ms ease,transform 650ms cubic-bezier(.22,1,.36,1);}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto;} .enter-pending,.enter-ready{opacity:1;transform:none;transition:none;}a,button,summary{transition:none!important;}.btn:hover,.btn:active,button:active{transform:none;}}
/* Feather both edges so a new chapter never starts with a hard color seam. */

:where(a,button,summary,input,select):focus-visible {outline-color:var(--focus-ring,var(--ink));}
.testimonials,.cta-panel,.footer-reveal,.hero-proof-wrap .doc-tabs {--focus-ring:var(--paper);}


/* Each area's colors stay inside that area, fading out softly at its top and bottom. */
.page-wash {right:auto;bottom:auto;border-radius:0;mask-image:linear-gradient(transparent,#000 200px,#000 calc(100% - 200px),transparent);}
.page-wash-top {mask-image:linear-gradient(#000 calc(100% - 200px),transparent);}
.page-wash .color-field,.atmosphere-solid .color-field {right:auto;bottom:auto;transform:translate(-50%,-50%);}
/* Position sliders: a plain track with a line through the middle marking zero. */

.grain-envelope {position:absolute;inset:-200px 0;mask-image:linear-gradient(transparent,#000 25%,#000 75%,transparent);pointer-events:none;}


