html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font-body);background:var(--surface-page);color:var(--text-primary);width:100%;overflow-x:hidden}
*,*::before,*::after{box-sizing:border-box}
img{max-width:100%;display:block}
a{color:var(--text-link);text-decoration:none}
a:hover{color:var(--text-link-hover)}
::selection{background:var(--brand-teal-100);color:var(--ink-900)}
h1,h2,h3,h4,p{margin:0}
input,textarea,select,button{font-family:var(--font-body);outline:none}
input:focus,textarea:focus,select:focus{border-color:var(--accent-primary) !important}
button{cursor:pointer}

.ec-shell{display:flex;flex-direction:column;min-height:100vh}
.ec-main{flex:1;display:flex;flex-direction:column;position:relative}

[id]{scroll-margin-top:100px}

.ec-container{max-width:var(--container-max);margin:0 auto;padding:0 var(--gutter-page)}
.ec-section{padding:var(--space-9) var(--gutter-page)}
.ec-section--tight{padding:var(--space-8) var(--gutter-page)}

@keyframes ec-fade-slide-in{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:translateY(0)}}

[data-reveal]{opacity:0;transform:translateY(28px);transition:opacity 700ms var(--ease-out),transform 700ms var(--ease-out)}
[data-reveal].is-visible{opacity:1;transform:translateY(0)}
[data-reveal-delay="1"]{transition-delay:80ms}
[data-reveal-delay="2"]{transition-delay:160ms}
[data-reveal-delay="3"]{transition-delay:240ms}
[data-reveal-delay="4"]{transition-delay:320ms}
