/* shared reset + utilities (loaded before each variant's own stylesheet) */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
body{min-height:100svh;line-height:1.5;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,picture,video,canvas,svg{display:block;max-width:100%}
input,button,textarea,select{font:inherit;color:inherit}
button{cursor:pointer;background:none;border:none}
a{color:inherit;text-decoration:none}
ul,ol{list-style:none}
h1,h2,h3,h4{line-height:1.05;font-weight:inherit}
:focus-visible{outline:2px solid currentColor;outline-offset:3px}

/* scroll-reveal (driven by shared/app.js) */
.reveal{opacity:0;transform:translateY(28px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1)}
.reveal.in{opacity:1;transform:none}
.reveal[data-delay="1"]{transition-delay:.08s}
.reveal[data-delay="2"]{transition-delay:.16s}
.reveal[data-delay="3"]{transition-delay:.24s}
.reveal[data-delay="4"]{transition-delay:.32s}
@media (prefers-reduced-motion:reduce){.reveal{opacity:1;transform:none;transition:none}}

/* shared slideshow (themed per variant; structural only here) */
.slideshow{position:relative;margin-inline:auto}
.slides{position:relative;width:100%;aspect-ratio:3/2;overflow:hidden}
.slide{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 28%;opacity:0;transition:opacity 1s ease}
.slide.is-active{opacity:1}
.dots{display:flex;gap:.5rem;justify-content:center;margin-top:.9rem}
.dots button{width:9px;height:9px;border-radius:50%;background:currentColor;opacity:.28;border:0;cursor:pointer;padding:0;transition:opacity .3s,transform .3s}
.dots button.on{opacity:1;transform:scale(1.3)}
.slides{touch-action:pan-y}
.slide-nav{position:absolute;top:50%;transform:translateY(-50%);z-index:3;width:42px;height:42px;border-radius:50%;
  display:grid;place-items:center;font-size:1.5rem;line-height:1;color:#1a1a1a;background:rgba(255,255,255,.82);
  backdrop-filter:blur(4px);box-shadow:0 4px 14px rgba(0,0,0,.25);opacity:0;transition:opacity .25s,background .2s;cursor:pointer}
.slides:hover .slide-nav,.slideshow:focus-within .slide-nav{opacity:1}
.slide-nav:hover{background:#fff}
.slide-nav--prev{left:10px}.slide-nav--next{right:10px}
@media (hover:none){.slide-nav{opacity:.9}}  /* always visible on touch */
@media (prefers-reduced-motion:reduce){.slide{transition:none}}

/* screen-reader only */
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
