/**
 * Design system e layout pubblico Sterralandia.
 * Organizzato con cascade layers: reset, token, base, componenti, pagine e utility.
 */

@layer reset,  tokens,  base,  components,  pages,  utilities;
@layer reset {
  *, *::before, *::after {
    box-sizing:border-box
  }
  html {
    scroll-behavior:smooth
  }
  body, h1, h2, h3, p, ul {
    margin:0
  }
  ul {
    padding:0
  }
  img {
    max-width:100%;
    display:block
  }
  button, input, textarea, select {
    font:inherit
  }
  button, a {
    -webkit-tap-highlight-color:transparent
  }
}
@layer tokens {
  :root {
    --ink:#0b0b0d;
    --ink-2:#111114;
    --surface:#151519;
    --surface-2:#1b1b20;
    --paper:#f4f1ea;
    --muted:#b8b6b3;
    --red:#e01820;
    --red-bright:#ff3038;
    --cyan:#35b8d6;
    --green:#3ecf7a;
    --border:rgba(255,255,255,.14);
    --shadow:0 24px 70px rgba(0,0,0,.38);
    --radius-sm:14px;
    --radius:22px;
    --radius-lg:30px;
    --shell:min(1200px,calc(100% - 40px));
    --header:82px;
    --ease:cubic-bezier(.2,.8,.2,1)
  }
}
@layer base {
  html {
    background:var(--ink);
    color-scheme:dark
  }
  body {
    min-height:100vh;
    background:var(--ink);
    color:var(--paper);
    font-family:Montserrat, "Avenir Next", Avenir, "Segoe UI", Arial, sans-serif;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden
  }
  body.menu-open {
    overflow:hidden
  }
  a {
    color:inherit;
    text-decoration:none
  }
  p {
    color:rgba(244,241,234,.72);
    line-height:1.75;
    text-wrap:pretty
  }
  h1, h2, h3 {
    font-weight:900;
    text-transform:uppercase;
    line-height:1.02;
    letter-spacing:-.025em
  }
  h1 em, h2 em {
    font-family:"Arial Black", Impact, sans-serif;
    font-style:italic;
    color:var(--red);
    letter-spacing:-.04em
  }
  ::selection {
    background:var(--red);
    color:#fff
  }
  :focus-visible {
    outline:3px solid var(--cyan);
    outline-offset:3px
  }
  .shell {
    width:var(--shell);
    margin-inline:auto
  }
  .skip-link {
    position:fixed;
    left:16px;
    top:-100px;
    z-index:999;
    background:var(--cyan);
    color:#05232a;
    padding:12px 18px;
    border-radius:12px;
    font-weight:800
  }
  .skip-link:focus {
    top:16px
  }
  .eyebrow {
    display:inline-flex;
    align-items:center;
    gap:10px;
    font-size:.72rem;
    font-weight:900;
    letter-spacing:.2em;
    text-transform:uppercase;
    color:var(--paper)
  }
  .eyebrow::before {
    content:"";
    width:34px;
    height:2px;
    background:var(--red)
  }
  .eyebrow--red {
    color:var(--red)
  }
  .eyebrow--cyan {
    color:var(--cyan)
  }
  .eyebrow--cyan::before {
    background:var(--cyan)
  }
  .lead {
    font-size:clamp(1rem,1.4vw,1.18rem)
  }
  .section {
    padding:clamp(74px,9vw,124px) 0
  }
  .section--soft {
    background:linear-gradient(180deg,#0b0b0d,#101013 48%,#0b0b0d)
  }
  .section-heading {
    max-width:740px;
    margin-bottom:44px
  }
  .section-heading h2, .split-grid h2 {
    font-size:clamp(2.2rem,5vw,4.5rem);
    margin:14px 0 22px
  }
  .section-heading p {
    font-size:1.06rem;
    max-width:650px
  }
  .reveal {
    opacity:0;
    transform:translateY(26px);
    transition:opacity .72s var(--ease), transform .72s var(--ease);
    transition-delay:var(--delay,0ms)
  }
  .reveal.is-visible {
    opacity:1;
    transform:none
  }
}
@layer components {
  .site-header {
    position:fixed;
    inset:0 0 auto;
    z-index:100;
    height:var(--header);
    transition:background .3s, border-color .3s, backdrop-filter .3s
  }
  .site-header.is-scrolled {
    background:rgba(11,11,13,.86);
    border-bottom:1px solid #35b8d6;
    backdrop-filter:blur(16px)
  }
  .site-header__inner {
    height:100%;
    display:flex;
    align-items:center;
    gap:28px
  }
  .brand {
    display:flex;
    align-items:center;
    flex:0 0 auto
  }
  .brand img {
    width:170px;
    height:auto;
    max-height:68px;
    object-fit:contain
  }
  .desktop-nav {
    display:flex;
    align-items:center;
    gap:28px;
    margin-left:auto
  }
  .desktop-nav a {
    position:relative;
    font-size:.78rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.08em;
    color:rgba(244,241,234,.78);
    transition:color .2s
  }
  .desktop-nav a:hover, .desktop-nav a[aria-current="page"] {
    color:#fff
  }
  .desktop-nav a[aria-current="page"]::after {
    content:"";
    position:absolute;
    left:0;
    right:0;
    bottom:-10px;
    height:2px;
    background:var(--red)
  }
  .header-actions {
    display:flex;
    align-items:center;
    gap:12px
  }
  .menu-toggle {
    display:none;
    width:44px;
    height:44px;
    border:1px solid var(--border);
    border-radius:14px;
    background:rgba(11,11,13,.4);
    color:#fff;
    align-items:center;
    justify-content:center;
    flex-direction:column;
    gap:4px
  }
  .menu-toggle span {
    width:20px;
    height:2px;
    background:currentColor
  }
  .mobile-menu {
    position:fixed;
    inset:0;
    z-index:200
  }
  .mobile-menu__backdrop {
    position:absolute;
    inset:0;
    border:0;
    background:rgba(0,0,0,.72);
    backdrop-filter:blur(5px)
  }
  .mobile-menu__panel {
    position:absolute;
    right:0;
    top:0;
    bottom:0;
    width:min(370px,90vw);
    background:#111114;
    border-left:1px solid var(--border);
    padding:24px;
    display:flex;
    flex-direction:column;
    gap:6px;
    box-shadow:var(--shadow);
    animation:drawer .32s var(--ease)
  }
  .mobile-menu__head {
    display:flex;
    align-items:center;
    justify-content:space-between;
    margin-bottom:22px
  }
  .mobile-menu__head img {
    height:62px;
    width:auto
  }
  .mobile-menu__head button {
    width:42px;
    height:42px;
    border:1px solid var(--border);
    border-radius:13px;
    background:none;
    color:#fff;
    font-size:1.8rem
  }
  .mobile-menu__panel>a:not(.button) {
    padding:15px 14px;
    border-radius:12px;
    font-size:1rem;
    font-weight:800;
    text-transform:uppercase
  }
  .mobile-menu__panel>a:hover {
    background:rgba(255,255,255,.06)
  }
  @keyframes drawer {
    from {
      transform:translateX(100%)
    }
    to {
      transform:none
    }
  }
  .button {
    display:inline-flex;
    align-items:center;
    justify-content:center;
    gap:10px;
    min-height:52px;
    padding:14px 26px;
    border:1px solid transparent;
    border-radius:999px;
    font-size:.83rem;
    font-weight:900;
    letter-spacing:.045em;
    text-transform:uppercase;
    cursor:pointer;
    transition:transform .2s, background .2s, border-color .2s, box-shadow .2s
  }
  .button:hover {
    transform:translateY(-2px)
  }
  .button--primary {
    background:var(--red);
    color:#fff;
    box-shadow:0 14px 34px rgba(224,24,32,.25)
  }
  .button--primary:hover {
    background:var(--red-bright);
    box-shadow:0 18px 42px rgba(224,24,32,.36)
  }
  .button--glass {
    background:rgba(11,11,13,.42);
    border-color:rgba(255,255,255,.38);
    backdrop-filter:blur(10px)
  }
  .button--glass:hover, .button--ghost:hover {
    border-color:#fff;
    background:rgba(255,255,255,.08)
  }
  .button--ghost {
    background:transparent;
    border-color:var(--border)
  }
  .button--secondary {
    background:var(--cyan);
    color:#08242b
  }
  .button--compact {
    min-height:42px;
    padding:10px 20px;
    font-size:.73rem
  }
  .button--wide {
    width:100%
  }
  .button-row {
    display:flex;
    gap:14px;
    flex-wrap:wrap
  }
  .toast {
    position:fixed;
    right:18px;
    bottom:18px;
    z-index:400;
    max-width:min(460px,calc(100vw - 36px));
    display:flex;
    align-items:flex-start;
    gap:14px;
    background:#17171b;
    border:1px solid var(--border);
    border-left:4px solid var(--cyan);
    border-radius:16px;
    padding:16px 18px;
    box-shadow:var(--shadow);
    font-size:.9rem;
    line-height:1.5
  }
  .toast--error {
    border-left-color:var(--red)
  }
  .toast button {
    margin-left:auto;
    border:0;
    background:none;
    color:#fff;
    font-size:1.3rem
  }
  .site-footer {
    padding:70px 0 24px;
    background:#070708;
    border-top:1px solid var(--border)
  }
  .site-footer__grid {
    display:grid;
    grid-template-columns:1.45fr repeat(3,1fr);
    gap:46px
  }
  .site-footer__logo {
    width:230px;
    height:auto;
    margin-bottom:16px
  }
  .site-footer h2 {
    font-size:.82rem;
    letter-spacing:.12em;
    margin-bottom:20px
  }
  .site-footer__grid>div {
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    gap:11px
  }
  .site-footer__grid a, .site-footer__grid span, .site-footer__grid p {
    font-size:.87rem;
    color:rgba(244,241,234,.62);
    line-height:1.6
  }
  .site-footer__grid a:hover {
    color:#fff
  }
  .site-footer__bottom {
    display:flex;
    justify-content:space-between;
    gap:20px;
    padding-top:28px;
    margin-top:42px;
    border-top:1px solid rgba(255,255,255,.08);
    font-size:.78rem;
    color:rgba(244,241,234,.45)
  }
  .social-links {
    display:flex;
    gap:16px
  }
  [hidden] {
    display:none !important
  }
  .cookie-settings {
    position:fixed;
    left:14px;
    bottom:14px;
    z-index:150;
    border:1px solid var(--border);
    background:#151519;
    color:#fff;
    border-radius:999px;
    padding:9px 13px;
    font-size:.7rem;
    font-weight:800
  }
  .cookie-banner {
    position:fixed;
    inset:0;
    z-index:500;
    display:grid;
    align-items:end;
    background:rgba(0,0,0,.55);
    padding:18px
  }
  .cookie-banner__card {
    width:min(980px,100%);
    margin:auto;
    background:#151519;
    border:1px solid var(--border);
    border-radius:24px;
    padding:24px;
    box-shadow:var(--shadow);
    display:grid;
    grid-template-columns:1fr auto;
    gap:24px
  }
  .cookie-banner__card h2 {
    margin:8px 0;
    font-size:1.5rem
  }
  .cookie-banner__actions {
    display:flex;
    align-items:center;
    justify-content:flex-end;
    gap:10px;
    flex-wrap:wrap
  }
  .cookie-banner__details {
    grid-column:1/-1;
    border-top:1px solid var(--border);
    padding-top:18px
  }
  .switch-row {
    display:flex;
    justify-content:space-between;
    align-items:center;
    padding:14px 0
  }
  .switch-row span {
    display:grid;
    gap:4px
  }
  .switch-row small {
    color:var(--muted)
  }
  .switch-row input {
    width:22px;
    height:22px
  }
  .field {
    display:grid;
    gap:8px
  }
  .field>span {
    font-size:.76rem;
    font-weight:800;
    text-transform:uppercase;
    letter-spacing:.08em;
    color:rgba(244,241,234,.78)
  }
  .field input, .field textarea, .field select {
    width:100%;
    border:1px solid rgba(255,255,255,.17);
    background:#0e0e11;
    color:#fff;
    border-radius:14px;
    padding:14px 15px;
    outline:none;
    transition:border-color .2s, box-shadow .2s
  }
  .field input:focus, .field textarea:focus, .field select:focus {
    border-color:var(--cyan);
    box-shadow:0 0 0 4px rgba(53,184,214,.12)
  }
  .field--full {
    grid-column:1/-1
  }
  .form-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:18px
  }
  .consent-row {
    display:flex;
    align-items:flex-start;
    gap:12px;
    margin:22px 0;
    color:rgba(244,241,234,.72);
    font-size:.84rem;
    line-height:1.6
  }
  .consent-row input {
    width:20px;
    height:20px;
    flex:0 0 auto;
    margin-top:2px
  }
  .consent-row a {
    color:var(--cyan);
    text-decoration:underline
  }
  .honeypot {
    position:absolute!important;
    left:-9999px!important
  }
}
@layer pages {
  .hero {
    position:relative;
    min-height:100svh;
    display:grid;
    align-items:end;
    overflow:hidden
  }
  .hero__media, .hero__overlay, .hero__dust {
    position:absolute;
    inset:0
  }
  .hero__media img {
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center 38%;
    filter:saturate(.9) contrast(1.05)
  }
  .hero__overlay {
    background:linear-gradient(90deg,rgba(7,7,8,.92) 0%,rgba(7,7,8,.58) 48%,rgba(7,7,8,.16) 78%), linear-gradient(0deg,#0b0b0d 0%,transparent 45%), radial-gradient(circle at 75% 60%,rgba(224,24,32,.18),transparent 34%)
  }
  .hero__dust {
    opacity:.28;
    background-image:radial-gradient(circle at 80% 70%,rgba(224,24,32,.3),transparent 2px), radial-gradient(circle at 86% 62%,rgba(244,241,234,.18),transparent 1px);
    background-size:87px 73px, 119px 101px;
    animation:dust 18s linear infinite
  }
  @keyframes dust {
    to {
      transform:translate3d(-80px,-35px,0)
    }
  }
  .hero__content {
    position:relative;
    z-index:2;
    padding-top:calc(var(--header) + 90px);
    padding-bottom:clamp(110px,15vh,170px)
  }
  .hero h1 {
    font-size:clamp(3rem,7.8vw,7rem);
    max-width:1000px;
    margin:16px 0 22px
  }
  .hero h1 em {
    color:#fff;
    text-shadow:0 8px 40px rgba(224,24,32,.58)
  }
  .hero__content>p {
    max-width:650px;
    font-size:clamp(1rem,1.5vw,1.18rem);
    color:rgba(244,241,234,.82)
  }
  .hero .button-row {
    margin-top:30px
  }
  .trust-list {
    list-style:none;
    display:flex;
    gap:22px;
    flex-wrap:wrap;
    margin-top:30px;
    color:rgba(244,241,234,.72);
    font-size:.78rem;
    font-weight:750
  }
  .trust-list li::before {
    content:"✓";
    color:var(--green);
    font-weight:900;
    margin-right:8px
  }
  .scroll-cue {
    position:absolute;
    z-index:3;
    left:50%;
    bottom:24px;
    transform:translateX(-50%);
    display:grid;
    justify-items:center;
    gap:7px;
    color:rgba(244,241,234,.48);
    font-size:.62rem;
    font-weight:800;
    letter-spacing:.18em;
    text-transform:uppercase
  }
  .scroll-cue span {
    width:24px;
    height:38px;
    border:2px solid rgba(255,255,255,.35);
    border-radius:15px;
    position:relative
  }
  .scroll-cue span::after {
    content:"";
    position:absolute;
    left:50%;
    top:7px;
    width:4px;
    height:8px;
    background:var(--red);
    border-radius:3px;
    transform:translateX(-50%);
    animation:scroll 1.5s infinite
  }
  @keyframes scroll {
    50% {
      transform:translate(-50%,10px);
      opacity:.35
    }
  }
  .split-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:clamp(42px,7vw,90px);
    align-items:center
  }
  .check-list {
    list-style:none;
    display:grid;
    gap:12px;
    margin:26px 0 28px
  }
  .check-list li {
    display:flex;
    align-items:center;
    gap:12px;
    font-weight:700;
    font-size:.92rem
  }
  .check-list li::before {
    content:"✓";
    display:grid;
    place-items:center;
    width:28px;
    height:28px;
    border-radius:9px;
    background:rgba(224,24,32,.14);
    color:var(--red)
  }
  .text-link {
    color:var(--cyan);
    font-size:.8rem;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.08em
  }
  .media-card {
    position:relative;
    border-radius:var(--radius-lg);
    border:1px solid var(--border);
    overflow:visible
  }
  .media-card picture {
    display:block;
    overflow:hidden;
    border-radius:inherit;
    aspect-ratio:4/3
  }
  .media-card img {
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center 72%
  }
  .media-card__badge {
    position:absolute;
    left:-18px;
    bottom:-22px;
    background:#151519;
    border:1px solid var(--border);
    border-radius:20px;
    padding:16px 22px;
    box-shadow:var(--shadow);
    display:grid
  }
  .media-card__badge strong {
    font-size:1.7rem;
    color:var(--red)
  }
  .media-card__badge span {
    font-size:.67rem;
    text-transform:uppercase;
    letter-spacing:.08em;
    color:var(--muted)
  }
  .metric-grid {
    display:grid;
    grid-template-columns:repeat(4,1fr);
    gap:16px;
    margin-top:88px
  }
  .metric-grid article {
    background:rgba(255,255,255,.04);
    border:1px solid var(--border);
    border-radius:var(--radius);
    padding:28px 20px;
    text-align:center
  }
  .metric-grid strong {
    display:block;
    font-size:clamp(2.2rem,4vw,3.4rem)
  }
  .metric-grid article:nth-child(2) strong {
    color:var(--red)
  }
  .metric-grid article:nth-child(4) strong {
    color:var(--cyan)
  }
  .metric-grid span {
    display:block;
    margin-top:8px;
    color:var(--muted);
    font-size:.68rem;
    font-weight:800;
    letter-spacing:.1em;
    text-transform:uppercase
  }
  .service-grid {
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:16px
  }
  .service-card {
    position:relative;
    min-height:330px;
    display:flex;
    flex-direction:column;
    padding:28px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    background:linear-gradient(145deg,rgba(255,255,255,.065),rgba(255,255,255,.018));
    overflow:hidden;
    transition:transform .25s, border-color .25s
  }
  .service-card::after {
    content:"";
    position:absolute;
    width:180px;
    height:180px;
    right:-80px;
    bottom:-90px;
    background:radial-gradient(circle,rgba(224,24,32,.22),transparent 65%)
  }
  .service-card:hover {
    transform:translateY(-5px);
    border-color:rgba(255,255,255,.3)
  }
  .service-card__number {
    position:absolute;
    right:22px;
    top:10px;
    font-size:4.7rem;
    font-weight:900;
    color:rgba(255,255,255,.04)
  }
  .service-card__type, .price-card__type {
    font-size:.65rem;
    font-weight:900;
    letter-spacing:.13em;
    text-transform:uppercase;
    color:var(--red)
  }
  .service-card h3 {
    font-size:1.45rem;
    margin:18px 0 12px;
    max-width:80%
  }
  .service-card p {
    font-size:.87rem
  }
  .service-card__meta {
    margin-top:auto;
    padding-top:24px;
    display:flex;
    justify-content:space-between;
    align-items:flex-end;
    gap:12px;
    border-top:1px solid rgba(255,255,255,.08)
  }
  .service-card__meta span {
    font-size:.7rem;
    color:var(--muted)
  }
  .service-card__meta strong {
    font-size:1.2rem
  }
  .service-card>a {
    margin-top:18px;
    color:var(--cyan);
    font-size:.75rem;
    font-weight:900;
    text-transform:uppercase;
    letter-spacing:.08em;
    z-index:1
  }
  .image-cta {
    position:relative;
    min-height:600px;
    display:grid;
    align-items:center;
    overflow:hidden
  }
  .image-cta__bg, .image-cta__shade {
    position:absolute;
    inset:0
  }
  .image-cta__bg {
    background-size:cover;
    background-position:center 35%;
    transform:scale(1.03)
  }
  .image-cta__shade {
    background:linear-gradient(90deg,rgba(8,8,10,.92),rgba(8,8,10,.5) 55%,rgba(8,8,10,.2)), linear-gradient(0deg,#0b0b0d,transparent 35%,transparent 70%,#0b0b0d)
  }
  .image-cta__content {
    position:relative;
    z-index:1
  }
  .image-cta__content h2 {
    font-size:clamp(2.6rem,6vw,5.7rem);
    margin:14px 0 22px;
    max-width:800px
  }
  .image-cta__content p {
    max-width:560px;
    margin-bottom:26px
  }
  .booking-callout, .contact-strip {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:36px;
    padding:clamp(30px,5vw,58px);
    border:1px solid var(--border);
    border-radius:var(--radius-lg);
    background:radial-gradient(circle at 90% 10%,rgba(53,184,214,.12),transparent 30%), linear-gradient(145deg,#17171b,#101013)
  }
  .booking-callout h2, .contact-strip h2 {
    font-size:clamp(2rem,4vw,4rem);
    margin:10px 0
  }
  .booking-callout p {
    max-width:660px
  }
  .section--contact {
    padding-top:10px
  }
  .contact-strip h2 {
    font-size:clamp(1.4rem,3vw,2.4rem);
    text-transform:none;
    line-height:1.2
  }
  .contact-strip__actions {
    display:flex;
    gap:12px;
    flex-wrap:wrap
  }
  .page-hero {
    position:relative;
    min-height:68svh;
    display:grid;
    align-items:end;
    overflow:hidden
  }
  .page-hero__media, .page-hero__shade {
    position:absolute;
    inset:0
  }
  .page-hero__media {
    background-size:cover;
    background-position:center 35%
  }
  .page-hero__shade {
    background:linear-gradient(90deg,rgba(7,7,8,.92),rgba(7,7,8,.35)), linear-gradient(0deg,#0b0b0d,transparent 55%)
  }
  .page-hero__content {
    position:relative;
    z-index:2;
    padding-top:calc(var(--header) + 100px);
    padding-bottom:90px
  }
  .page-hero h1 {
    font-size:clamp(3rem,7vw,6.7rem);
    margin:16px 0
  }
  .page-hero p {
    font-size:1.06rem;
    max-width:620px
  }
  .price-filters {
    display:flex;
    gap:10px;
    flex-wrap:wrap;
    margin-bottom:34px
  }
  .price-filters button {
    border:1px solid var(--border);
    border-radius:999px;
    background:transparent;
    color:var(--paper);
    padding:11px 18px;
    font-size:.72rem;
    font-weight:850;
    text-transform:uppercase;
    letter-spacing:.07em
  }
  .price-filters button.is-active {
    background:var(--red);
    border-color:var(--red)
  }
  .price-grid {
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:18px
  }
  .price-card {
    border:1px solid var(--border);
    border-radius:var(--radius-lg);
    background:linear-gradient(145deg,rgba(255,255,255,.055),rgba(255,255,255,.018));
    padding:30px;
    transition:opacity .25s, transform .25s
  }
  .price-card[hidden] {
    display:none
  }
  .price-card__top {
    display:flex;
    justify-content:space-between;
    gap:20px
  }
  .price-card h2 {
    font-size:clamp(1.5rem,3vw,2.2rem);
    margin:10px 0
  }
  .price-card__age {
    min-width:76px;
    height:76px;
    border-radius:22px;
    border:1px solid rgba(224,24,32,.4);
    background:rgba(224,24,32,.1);
    display:grid;
    place-content:center;
    text-align:center;
    font-size:1.5rem;
    font-weight:900;
    color:var(--red)
  }
  .price-card__age small {
    display:block;
    font-size:.55rem;
    letter-spacing:.08em;
    text-transform:uppercase
  }
  .price-options {
    display:grid;
    gap:8px;
    margin:28px 0
  }
  .price-option {
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:16px;
    padding:15px 16px;
    border-radius:14px;
    background:rgba(255,255,255,.045)
  }
  .price-option>div {
    display:grid;
    gap:4px
  }
  .price-option strong {
    font-size:.84rem
  }
  .price-option small {
    font-size:.67rem;
    color:var(--muted)
  }
  .price-option>span {
    font-size:1.12rem;
    font-weight:900;
    white-space:nowrap
  }
  .price-card__footer {
    display:flex;
    align-items:center;
    justify-content:space-between;
    gap:16px;
    border-top:1px solid rgba(255,255,255,.08);
    padding-top:20px
  }
  .price-card__footer>span {
    font-size:.7rem;
    color:var(--muted)
  }
  .notice-card {
    margin-top:22px;
    border-left:4px solid var(--cyan);
    background:#151519;
    border-radius:0 var(--radius) var(--radius) 0;
    padding:22px 24px
  }
  .notice-card p {
    margin-top:7px;
    font-size:.88rem
  }
  .contact-grid {
    display:grid;
    grid-template-columns:1fr 1fr;
    gap:32px;
    align-items:start
  }
  .contact-info h2, .contact-form-card h2 {
    font-size:clamp(2rem,4vw,3.8rem);
    margin:12px 0 24px
  }
  .contact-cards {
    display:grid;
    gap:10px
  }
  .contact-cards>a, .contact-cards>div {
    display:grid;
    gap:6px;
    padding:20px;
    border:1px solid var(--border);
    border-radius:18px;
    background:rgba(255,255,255,.03)
  }
  .contact-cards span {
    font-size:.65rem;
    font-weight:850;
    letter-spacing:.1em;
    text-transform:uppercase;
    color:var(--red)
  }
  .contact-cards strong {
    font-size:1rem;
    line-height:1.45
  }
  .contact-cards small {
    color:var(--muted)
  }
  .hours-card, .map-placeholder {
    margin-top:18px;
    padding:24px;
    border:1px solid var(--border);
    border-radius:var(--radius);
    background:#131316
  }
  .hours-card h3 {
    font-size:1rem;
    margin-bottom:15px
  }
  .hours-card>div {
    display:flex;
    justify-content:space-between;
    gap:18px;
    padding:9px 0;
    border-bottom:1px solid rgba(255,255,255,.06);
    font-size:.82rem
  }
  .hours-card>div:last-child {
    border:0
  }
  .hours-card span {
    color:var(--muted)
  }
  .map-placeholder {
    min-height:230px;
    display:flex;
    flex-direction:column;
    justify-content:space-between;
    background:radial-gradient(circle at 70% 30%,rgba(53,184,214,.11),transparent 30%), linear-gradient(135deg,#17171b,#0c0c0f)
  }
  .map-placeholder>div {
    display:grid;
    gap:7px
  }
  .map-pin {
    color:var(--red);
    font-size:2rem
  }
  .map-placeholder small {
    color:var(--muted)
  }
  .contact-form-card {
    border:1px solid var(--border);
    border-radius:var(--radius-lg);
    padding:clamp(24px,4vw,42px);
    background:linear-gradient(145deg,#17171b,#0f0f12);
    position:sticky;
    top:110px
  }
  .contact-form-card>p {
    margin-bottom:26px
  }
  .legal-hero {
    padding:calc(var(--header) + 100px) 0 60px;
    background:radial-gradient(circle at 80% 0,rgba(224,24,32,.15),transparent 30%), #0b0b0d
  }
  .legal-hero h1 {
    font-size:clamp(2.8rem,6vw,5.5rem);
    margin:14px 0
  }
  .legal-document {
    max-width:860px
  }
  .legal-document h2 {
    font-size:1.3rem;
    margin:36px 0 12px
  }
  .legal-alert {
    border-left:4px solid var(--red);
    padding:20px 22px;
    background:#151519;
    border-radius:0 var(--radius) var(--radius) 0
  }
  .legal-alert p {
    margin-top:8px
  }
  .maintenance, .not-found {
    min-height:100svh;
    display:grid;
    place-content:center;
    text-align:center;
    padding:80px 20px;
    position:relative;
    overflow:hidden;
    background:radial-gradient(circle at 50% 115%,rgba(224,24,32,.2),transparent 42%), radial-gradient(circle at 85% 0,rgba(53,184,214,.1),transparent 30%), #0b0b0d
  }
  .maintenance>*, .not-found>* {
    position:relative;
    z-index:1
  }
  .maintenance img {
    width:min(330px,78vw);
    margin:0 auto 20px
  }
  .maintenance h1, .not-found h1 {
    font-size:clamp(2.6rem,7vw,6rem);
    margin:14px auto 20px
  }
  .maintenance p, .not-found p {
    max-width:600px;
    margin:0 auto 26px
  }
  .maintenance .button-row, .not-found .button-row {
    justify-content:center
  }
  .maintenance__admin {
    display:inline-block;
    margin-top:24px;
    color:var(--muted);
    font-size:.75rem;
    text-decoration:underline
  }
  .not-found__code {
    display:block;
    font-size:clamp(6rem,20vw,15rem);
    font-weight:900;
    color:rgba(255,255,255,.025);
    line-height:.6
  }
}
@layer utilities {
  @media(max-width:980px) {
    .desktop-nav {
      display:none
    }
    .menu-toggle {
      display:flex
    }
    .site-header__inner {
      gap:12px
    }
    .header-actions {
      margin-left:auto
    }
    .service-grid {
      grid-template-columns:repeat(2,1fr)
    }
    .site-footer__grid {
      grid-template-columns:1.5fr 1fr 1fr
    }
    .site-footer__grid>div:last-child {
      grid-column:2/4
    }
    .contact-grid {
      grid-template-columns:1fr
    }
    .contact-form-card {
      position:static
    }
    .price-grid {
      grid-template-columns:1fr
    }
  }
  @media(max-width:720px) {
    :root {
      --shell:min(100% - 28px,1200px);
      --header:70px
    }
    .brand img {
      width:138px
    }
    .header-actions>.button {
      display:none
    }
    .hero {
      min-height:920px
    }
    .hero__content {
      padding-bottom:130px
    }
    .hero__media img {
      object-position:60% center
    }
    .hero__overlay {
      background:linear-gradient(0deg,#0b0b0d 0%,rgba(7,7,8,.15) 70%), linear-gradient(90deg,rgba(7,7,8,.82),rgba(7,7,8,.25))
    }
    .hero h1 {
      font-size:clamp(2.8rem,14vw,4.8rem)
    }
    .trust-list {
      display:grid;
      gap:9px
    }
    .split-grid {
      grid-template-columns:1fr
    }
    .media-card__badge {
      left:12px;
      bottom:-18px
    }
    .metric-grid {
      grid-template-columns:1fr 1fr;
      margin-top:70px
    }
    .service-grid {
      grid-template-columns:1fr
    }
    .service-card {
      min-height:300px
    }
    .image-cta {
      min-height:650px
    }
    .image-cta__bg {
      background-position:58% center
    }
    .booking-callout, .contact-strip {
      align-items:flex-start;
      flex-direction:column
    }
    .page-hero {
      min-height:620px
    }
    .page-hero__media {
      background-position:58% center
    }
    .page-hero__content {
      padding-bottom:65px
    }
    .price-card {
      padding:22px
    }
    .price-card__top {
      align-items:flex-start
    }
    .price-card__age {
      min-width:64px;
      height:64px;
      border-radius:18px
    }
    .contact-form-card {
      padding:24px
    }
    .form-grid {
      grid-template-columns:1fr
    }
    .field--full {
      grid-column:auto
    }
    .site-footer__grid {
      grid-template-columns:1fr 1fr
    }
    .site-footer__grid>div:first-child, .site-footer__grid>div:last-child {
      grid-column:1/-1
    }
    .site-footer__bottom {
      align-items:flex-start;
      flex-direction:column
    }
    .cookie-banner__card {
      grid-template-columns:1fr;
      padding:20px
    }
    .cookie-banner__actions {
      justify-content:flex-start
    }
    .button {
      width:100%
    }
    .button-row {
      display:grid;
      width:100%
    }
    .contact-strip__actions {
      width:100%;
      display:grid
    }
    .page-hero h1 {
      font-size:clamp(2.8rem,13vw,4.8rem)
    }
  }
  @media(prefers-reduced-motion:reduce) {
    html {
      scroll-behavior:auto
    }
    .reveal {
      opacity:1;
      transform:none;
      transition:none
    }
    .hero__dust, .scroll-cue span::after {
      animation:none
    }
    .button {
      transition:none
    }
  }
}

/* --------------------------------------------------------------------------
   Prenotazioni pubbliche, informative e consenso modulare — v4
   -------------------------------------------------------------------------- */
@layer pages {
  .booking-section{background:linear-gradient(180deg,#0b0b0d,#121216);padding-top:54px}.booking-steps{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:28px}.booking-steps span{padding:12px;border:1px solid var(--border);border-radius:999px;text-align:center;font-size:.76rem;font-weight:800;color:var(--muted)}.booking-steps .is-active{background:var(--red);border-color:var(--red);color:#fff}
  .booking-block{margin-bottom:24px;padding:clamp(20px,4vw,34px);border:1px solid var(--border);border-radius:var(--radius);background:rgba(255,255,255,.035);box-shadow:0 18px 55px rgba(0,0,0,.18)}.booking-block__heading{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;margin-bottom:24px}.booking-block__heading h2{margin-top:8px;font-size:clamp(1.45rem,3vw,2.4rem)}.booking-block__heading>a{color:var(--cyan);font-weight:800;font-size:.82rem}
  .booking-service-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:12px}.booking-service-card{display:grid;gap:8px;padding:20px;border:1px solid var(--border);border-radius:18px;background:var(--surface);transition:.2s var(--ease)}.booking-service-card:hover,.booking-service-card.is-selected{transform:translateY(-2px);border-color:var(--red);box-shadow:0 12px 35px rgba(224,24,32,.16)}.booking-service-card span,.booking-service-card small{color:var(--muted);font-size:.74rem}.booking-service-card span{text-transform:uppercase;letter-spacing:.12em}.booking-service-card strong{font-size:1.08rem}.booking-service-card b{color:var(--cyan)}
  .availability-live{display:inline-flex;align-items:center;gap:8px;color:var(--green);font-size:.78rem;font-weight:800}.availability-live i{width:8px;height:8px;border-radius:50%;background:currentColor;box-shadow:0 0 0 5px rgba(62,207,122,.12)}.slot-date-list{display:grid;gap:16px}.slot-date-list.has-error{outline:2px solid var(--red);outline-offset:8px;border-radius:16px}.slot-day{margin:0;padding:0;border:0}.slot-day legend{display:flex;gap:12px;align-items:baseline;margin-bottom:10px}.slot-day legend span{color:var(--muted);font-size:.82rem}.slot-choice-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:10px}.slot-choice{cursor:pointer}.slot-choice input{position:absolute;opacity:0;pointer-events:none}.slot-choice span{display:grid;gap:5px;padding:15px;border:1px solid var(--border);border-radius:14px;background:var(--surface);transition:.2s}.slot-choice small{color:var(--muted)}.slot-choice input:checked+span{border-color:var(--cyan);background:rgba(53,184,214,.1);box-shadow:inset 0 0 0 1px var(--cyan)}.booking-empty,.notice-card{padding:22px;border:1px dashed var(--border);border-radius:16px}.booking-empty p,.notice-card p{margin-top:8px}
  .booking-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px}.booking-config-grid h3{margin-bottom:12px;font-size:.9rem;color:var(--muted)}.booking-option-list{display:grid;gap:10px}.booking-option{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:12px;padding:15px;border:1px solid var(--border);border-radius:14px;background:var(--surface);cursor:pointer}.booking-option input{accent-color:var(--red)}.booking-option span{display:grid;gap:4px}.booking-option small{color:var(--muted)}.booking-option b{white-space:nowrap;color:var(--cyan)}.booking-option.is-static{grid-template-columns:1fr auto;cursor:default}.booking-total{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-top:22px;padding-top:20px;border-top:1px solid var(--border)}.booking-total strong{font-size:1.5rem;color:var(--cyan)}
  .public-form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.public-form-grid label:not(.public-check){display:grid;gap:8px}.public-form-grid label>span{font-size:.78rem;font-weight:800}.public-form-grid input,.public-form-grid select,.public-form-grid textarea{width:100%;padding:13px 14px;border:1px solid var(--border);border-radius:12px;background:var(--surface);color:var(--paper)}.public-form-grid__full{grid-column:1/-1}.public-check{display:flex;align-items:flex-start;gap:12px;padding:14px;border:1px solid var(--border);border-radius:14px}.public-check input{margin-top:3px;accent-color:var(--red)}.public-check>span{display:grid;gap:6px}.public-check small{color:var(--muted);line-height:1.5}.consent-list{display:grid;gap:10px}.privacy-inline{margin-top:14px}.privacy-inline a{color:var(--cyan);text-decoration:underline}.booking-submit-bar{position:sticky;bottom:14px;z-index:5;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:16px 18px;border:1px solid var(--border);border-radius:18px;background:rgba(11,11,13,.92);box-shadow:var(--shadow);backdrop-filter:blur(15px)}.booking-submit-bar div{display:grid;gap:4px}.booking-submit-bar small{color:var(--muted)}.booking-submit-bar button:disabled{opacity:.55;cursor:wait}
  .booking-confirmation-card,.booking-manage-card{max-width:850px;margin-inline:auto;padding:clamp(24px,5vw,46px);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}
  .legal-table-wrap{overflow:auto;margin:18px 0 30px}.legal-table{width:100%;min-width:900px;border-collapse:collapse;font-size:.84rem}.legal-table th,.legal-table td{padding:13px;border:1px solid var(--border);text-align:left;vertical-align:top}.legal-table th{background:var(--surface);color:var(--paper)}.legal-table td{color:rgba(244,241,234,.78)}.legal-table code{white-space:nowrap;color:var(--cyan)}.legal-note{margin-top:34px;padding:18px;border-left:4px solid var(--cyan);background:rgba(53,184,214,.08)}.legal-note p{margin-top:7px}
}
@layer components {
  .cookie-banner__card{position:relative}.cookie-banner__close{position:absolute;top:12px;right:12px;width:34px;height:34px;border:1px solid var(--border);border-radius:50%;background:transparent;color:var(--paper);cursor:pointer}.cookie-banner__card a{text-decoration:underline;color:var(--cyan)}
}
@layer utilities {
  .honeypot{position:absolute!important;left:-10000px!important;width:1px!important;height:1px!important;overflow:hidden!important}
}
@media(max-width:760px){.booking-steps{grid-template-columns:1fr 1fr}.booking-block__heading,.booking-submit-bar{align-items:flex-start;flex-direction:column}.booking-config-grid,.public-form-grid{grid-template-columns:1fr}.public-form-grid__full{grid-column:auto}.booking-submit-bar .button{width:100%}.slot-choice-grid{grid-template-columns:1fr 1fr}}
@media(max-width:460px){.booking-steps,.slot-choice-grid{grid-template-columns:1fr}.booking-service-grid{grid-template-columns:1fr}.booking-total{align-items:flex-start;flex-direction:column}}
@layer pages {
  .booking-result-hero{text-align:center}.booking-result-icon{display:grid;place-items:center;width:64px;height:64px;margin:0 auto 18px;border-radius:50%;background:var(--green);color:#062b17;font-size:2rem;font-weight:900}.booking-result-grid{display:grid;grid-template-columns:minmax(0,1.45fr) minmax(280px,.75fr);gap:24px;align-items:start}.booking-summary-card,.booking-result-aside{padding:clamp(22px,4vw,36px);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.booking-summary-card__code{display:flex;justify-content:space-between;align-items:center;gap:16px;padding-bottom:18px;border-bottom:1px solid var(--border)}.booking-summary-card__code span,.booking-summary-data span,.booking-summary-items span{color:var(--muted);font-size:.78rem}.booking-summary-card__code strong{font-size:1.25rem;color:var(--cyan)}.booking-summary-data{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;padding:22px 0}.booking-summary-data>div{display:grid;gap:6px}.booking-summary-items{display:grid;gap:10px;padding-top:18px;border-top:1px solid var(--border)}.booking-summary-items h2{font-size:1rem;margin-bottom:5px}.booking-summary-items>div{display:flex;justify-content:space-between;gap:12px}.booking-result-aside{display:grid;gap:16px}.booking-result-aside h2{font-size:clamp(1.35rem,3vw,2rem)}.booking-result-aside form label{display:grid;gap:8px}.booking-result-aside textarea{width:100%;padding:12px;border:1px solid var(--border);border-radius:12px;background:var(--ink);color:var(--paper)}.booking-cancelled-note{margin-top:18px;padding:16px;border:1px solid rgba(224,24,32,.5);border-radius:14px;background:rgba(224,24,32,.08)}.booking-cancelled-note p{margin-top:6px}
}
@media(max-width:820px){.booking-result-grid{grid-template-columns:1fr}.booking-summary-data{grid-template-columns:1fr 1fr}}
@media(max-width:480px){.booking-summary-data{grid-template-columns:1fr}.booking-summary-card__code{align-items:flex-start;flex-direction:column}}

/* --------------------------------------------------------------------------
   Navigazione giornaliera delle disponibilità — v4.1.3
   -------------------------------------------------------------------------- */
@layer pages {
  .slot-day-browser {
    min-width:0
  }
  .slot-day-toolbar {
    display:grid;
    grid-template-columns:44px minmax(0,1fr) 44px;
    align-items:center;
    gap:10px;
    margin-bottom:14px
  }
  .slot-day-browser:not(.is-enhanced) .slot-day-toolbar {
    display:none
  }
  .slot-day-tabs {
    display:flex;
    gap:8px;
    min-width:0;
    overflow-x:auto;
    padding:3px 2px 8px;
    scrollbar-width:thin;
    scroll-snap-type:x proximity;
    overscroll-behavior-inline:contain
  }
  .slot-day-tab {
    flex:0 0 104px;
    scroll-snap-align:center;
    display:grid;
    grid-template-columns:auto 1fr;
    grid-template-rows:auto auto;
    align-items:center;
    column-gap:8px;
    min-height:66px;
    padding:10px 12px;
    border:1px solid var(--border);
    border-radius:14px;
    background:var(--surface);
    color:var(--paper);
    cursor:pointer;
    text-align:left;
    transition:border-color .18s var(--ease),background .18s var(--ease),transform .18s var(--ease)
  }
  .slot-day-tab span {
    grid-column:1;
    grid-row:1;
    color:var(--muted);
    font-size:.68rem;
    font-weight:850;
    letter-spacing:.08em;
    text-transform:uppercase
  }
  .slot-day-tab strong {
    grid-column:1;
    grid-row:2;
    font-size:1.35rem;
    line-height:1
  }
  .slot-day-tab small {
    grid-column:2;
    grid-row:1/3;
    color:var(--muted);
    font-size:.7rem
  }
  .slot-day-tab:hover {
    transform:translateY(-1px);
    border-color:rgba(53,184,214,.55)
  }
  .slot-day-tab.is-active,
  .slot-day-tab[aria-selected="true"] {
    border-color:var(--cyan);
    background:rgba(53,184,214,.12);
    box-shadow:inset 0 0 0 1px rgba(53,184,214,.35)
  }
  .slot-day-tab.is-active span,
  .slot-day-tab.is-active small {
    color:#b9edf7
  }
  .slot-day-arrow {
    display:grid;
    place-items:center;
    width:44px;
    height:44px;
    border:1px solid var(--border);
    border-radius:50%;
    background:var(--surface);
    color:var(--paper);
    cursor:pointer;
    font-size:1.8rem;
    line-height:1
  }
  .slot-day-arrow:hover:not(:disabled) {
    border-color:var(--cyan);
    color:var(--cyan)
  }
  .slot-day-arrow:disabled {
    opacity:.3;
    cursor:not-allowed
  }
  .slot-day-current {
    margin:0 0 12px;
    color:var(--paper);
    font-size:.92rem;
    font-weight:850
  }
  .slot-day-browser.is-enhanced .slot-day[hidden] {
    display:none
  }
  .slot-day-browser.is-enhanced .slot-date-list {
    display:block
  }
  .slot-day-browser.is-enhanced .slot-day {
    animation:slot-day-enter .2s var(--ease)
  }
  @keyframes slot-day-enter {
    from { opacity:.45; transform:translateX(8px) }
    to { opacity:1; transform:translateX(0) }
  }
}
@layer utilities {
  .visually-hidden {
    position:absolute!important;
    width:1px!important;
    height:1px!important;
    padding:0!important;
    margin:-1px!important;
    overflow:hidden!important;
    clip:rect(0,0,0,0)!important;
    white-space:nowrap!important;
    border:0!important
  }
}
@media(max-width:760px) {
  .slot-day-toolbar {
    grid-template-columns:38px minmax(0,1fr) 38px;
    gap:7px
  }
  .slot-day-arrow {
    width:38px;
    height:38px
  }
  .slot-day-tab {
    flex-basis:94px;
    min-height:62px;
    padding:9px 10px
  }
}
@media(max-width:460px) {
  .slot-day-toolbar {
    margin-inline:-6px
  }
  .slot-day-tab {
    flex-basis:88px
  }
  .slot-day-current {
    font-size:.84rem
  }
}
@media(prefers-reduced-motion:reduce) {
  .slot-day-browser.is-enhanced .slot-day {
    animation:none
  }
}
