/* Reset mínimo compartilhado + estados de reveal. Cada modelo tem seu próprio style.css. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{margin:0;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,picture,svg,video{display:block;max-width:100%;height:auto}
h1,h2,h3,h4,p,ul,ol,figure,blockquote{margin:0}
ul,ol{padding:0;list-style:none}
a{color:inherit}
button{font:inherit;color:inherit;background:none;border:0;padding:0;cursor:pointer}
table{border-collapse:collapse;width:100%}
summary{list-style:none;cursor:pointer}
summary::-webkit-details-marker{display:none}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}

/* Reveal: só anima quando o JS está ativo e o usuário não pediu reduced-motion */
.js-reveal [data-reveal]{opacity:0;transform:translateY(22px);transition:opacity .8s cubic-bezier(.2,.65,.2,1),transform .8s cubic-bezier(.2,.65,.2,1)}
.js-reveal [data-reveal="left"]{transform:translateX(-28px)}
.js-reveal [data-reveal="right"]{transform:translateX(28px)}
.js-reveal [data-reveal="scale"]{transform:scale(.96)}
.js-reveal [data-reveal="none"]{transform:none}
.js-reveal [data-reveal].is-in{opacity:1;transform:none}
