/* Creative Engine · base tecnica comune (reset, accessibilità, cursore, reveal). Nessuna scelta estetica:
   colori, tipografia, layout e movimento li decide il sistema creativo del cliente. */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;min-height:100vh;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg,video,canvas{display:block;max-width:100%}
button,input,textarea,select{font:inherit;color:inherit}
a{color:inherit}
: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);white-space:nowrap;border:0}
.skip{position:absolute;left:12px;top:-60px;z-index:1000;padding:10px 14px;background:#000;color:#fff}
.skip:focus{top:12px}
/* cursore personalizzato: nascosto su touch; il sistema del cliente ne definisce l'aspetto */
.cursor{position:fixed;left:0;top:0;z-index:999;pointer-events:none;display:none}
.has-cursor .cursor{display:block}
.has-cursor body,.has-cursor a,.has-cursor button{cursor:none}
.has-cursor input,.has-cursor textarea,.has-cursor select{cursor:text}
/* reveal: lo stato finale è sempre leggibile anche senza JavaScript */
.js [data-reveal]:not(.is-in){opacity:0}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}
