/* Shared base for every tattoo demo: reset, layout helpers, line-art and the video capture mode. */
*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}
body{-webkit-font-smoothing:antialiased;min-height:100vh;overflow-x:clip}
img{display:block;max-width:100%}
a{color:inherit}
ul,ol{list-style:none}
button{font:inherit;color:inherit;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}
[hidden]{display:none!important}
.pad{padding-left:clamp(16px,4vw,56px);padding-right:clamp(16px,4vw,56px)}
.wrap{max-width:1240px;margin:0 auto}
.map iframe{display:block;width:100%;height:100%;border:0}
.art{display:block;width:100%;height:100%;fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{animation:none!important;transition:none!important}}

/* Video capture mode (?capture): no time-based effects, so every rendered frame is deterministic. */
html.capture{scroll-behavior:auto}
html.capture *,html.capture *::before,html.capture *::after{animation:none!important;transition:none!important}
