/* Osando noleggio: base comune a tutte le direzioni.
   Ogni direzione definisce i token su .osn-dNN e veste i componenti nel proprio CSS. */

.osn {
  --osn-bg: #fff; --osn-surface: #f4eef1; --osn-ink: #2b161b; --osn-soft: #554b4e;
  --osn-accent: #c54790; --osn-accent-ink: #fff;
  --osn-display: 'Lato', system-ui, sans-serif; --osn-text: 'Lato', system-ui, sans-serif;
  --osn-margin: clamp(1rem, 3vw, 2.5rem); --osn-gap: clamp(1rem, 2vw, 2rem); --osn-section: clamp(6rem, 12vw, 12rem);
  --osn-ease: cubic-bezier(0.22, 1, 0.36, 1);
  background: var(--osn-bg); color: var(--osn-ink); font-family: var(--osn-text);
  font-size: clamp(1rem, .96rem + .2vw, 1.125rem); line-height: 1.55;
  -webkit-font-smoothing: antialiased; text-rendering: optimizeLegibility;
}
/* neutralizza gli stili del tema (Astra) dentro il blocco */
.osn *, .osn *::before, .osn *::after { box-sizing: border-box; }
.osn :where(h1, h2, h3, h4, p, figure, ul, ol, blockquote, details) { margin: 0; }
.osn :where(h1, h2, h3, h4) { font-family: var(--osn-display); color: inherit; text-wrap: balance; }
.osn :where(a) { color: inherit; }
.osn :where(img) { display: block; max-width: 100%; height: auto; }
.osn :where(.wp-block-image) { margin: 0; }
.osn :where(.wp-block-group) { margin-block: 0; }
.osn :where(.wp-block-list) { padding: 0; list-style: none; }
.osn :focus-visible { outline: 2px solid var(--osn-accent); outline-offset: 3px; }
.osn ::selection { background: var(--osn-accent); color: var(--osn-accent-ink); }
.osn .is-layout-flow > * + *, .osn .is-layout-constrained > * + * { margin-block-start: 0; }
.osn .is-layout-constrained > * { max-width: none; }

/* scheda galleria: tutta la foto e il nome sono cliccabili, i prezzi stanno sopra */
.osn .osn-item { position: relative; }
.osn .osn-item__name a { text-decoration: none; }
.osn .osn-item__img a { display: block; overflow: hidden; }
.osn .osn-item__img img { width: 100%; object-fit: cover; transition: transform 900ms var(--osn-ease); }
@media (hover: hover) { .osn .osn-item:hover .osn-item__img img { transform: scale(1.035); } }
.osn .osn-price a { text-decoration: none; transition: background-color 180ms, color 180ms, transform 140ms; }
.osn .osn-price a:active { transform: scale(.97); }

/* passi e FAQ */
.osn .osn-steps { counter-reset: s; }
.osn .osn-steps li strong { display: block; }
.osn .osn-faq summary { cursor: pointer; list-style: none; }
.osn .osn-faq summary::-webkit-details-marker { display: none; }
.osn .osn-faq summary::after { content: '+'; float: right; margin-left: 1rem; transition: transform 240ms var(--osn-ease); }
.osn .osn-faq details[open] summary::after { transform: rotate(45deg); }
.osn .osn-faq details > p { padding-top: .75rem; max-width: 60ch; }

/* pulsanti */
.osn .osn-cta .wp-block-button__link, .osn .osn-book__wa {
  display: inline-block; background: var(--osn-accent); color: var(--osn-accent-ink); border: 0; border-radius: 0;
  padding: 1rem 1.6rem; font: 700 1rem/1.2 var(--osn-text); text-decoration: none; transition: transform 140ms, filter 180ms;
}
.osn .osn-cta--mail .wp-block-button__link { background: transparent; color: inherit; padding-inline: 0; text-decoration: underline; text-underline-offset: .25em; }
.osn .osn-cta .wp-block-button__link:hover, .osn .osn-book__wa:hover { filter: brightness(1.08); }
.osn .osn-cta .wp-block-button__link:active, .osn .osn-book__wa:active { transform: scale(.97); }
.osn .wp-block-buttons { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; }

/* modulo di prenotazione */
.osn .osn-book { display: grid; gap: 1.25rem; }
.osn .osn-book fieldset { border: 0; padding: 0; margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.osn .osn-book legend { font-weight: 700; margin-bottom: .75rem; padding: 0; }
.osn .osn-opt { position: relative; display: grid; gap: .15rem; padding: 1rem 1.1rem; background: var(--osn-surface); cursor: pointer; transition: background-color 180ms, color 180ms; }
.osn .osn-opt input { position: absolute; opacity: 0; inset: 0; cursor: pointer; }
.osn .osn-opt__name { font-weight: 700; }
.osn .osn-opt__price { font-family: var(--osn-display); font-size: 2rem; line-height: 1.1; }
.osn .osn-opt__note { font-size: .9375rem; }
.osn .osn-opt:has(input:checked) { background: var(--osn-ink); color: var(--osn-bg); }
.osn .osn-opt:has(input:focus-visible) { outline: 2px solid var(--osn-accent); outline-offset: 3px; }
.osn .osn-book__fields { display: grid; grid-template-columns: 1fr 1fr; gap: .5rem; }
.osn .osn-field { display: grid; gap: .35rem; font-size: .9375rem; }
.osn .osn-field input, .osn .osn-field select { font: inherit; color: var(--osn-ink); background: var(--osn-bg); border: 0; border-radius: 0; padding: .8rem .9rem; box-shadow: inset 0 0 0 2px var(--osn-surface); width: 100%; min-height: 3rem; } /* taste-skill-ignore: bordo campo, banner in sovrimpressione o reset */
.osn .osn-book__summary { font-size: 1rem; }
.osn .osn-book__actions { display: flex; flex-wrap: wrap; gap: 1rem 1.5rem; align-items: center; }
.osn .osn-book__mail { text-underline-offset: .25em; }
@media (max-width: 520px) { .osn .osn-book fieldset, .osn .osn-book__fields { grid-template-columns: 1fr; } }

/* entrate */
.osn-rise { opacity: 0; transform: translateY(24px); transition: opacity 800ms var(--osn-ease), transform 800ms var(--osn-ease); }
.osn-rise.is-in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) { .osn-rise { opacity: 1; transform: none; transition: none; } .osn * { transition: none !important; animation: none !important; } }

/* banner consenso (fuori dallo scope .osn) */
.osn-consent { position: fixed; z-index: 9999; left: 1rem; right: 1rem; bottom: 1rem; max-width: 34rem; margin-inline: auto; background: #2b161b; color: #fff;
  padding: 1.1rem 1.25rem; font: 400 .9375rem/1.5 'Lato', system-ui, sans-serif; display: grid; gap: .9rem; box-shadow: 0 10px 40px rgba(0,0,0,.25); } /* taste-skill-ignore: bordo campo, banner in sovrimpressione o reset */
.osn-consent a { color: #ffd0ea; }
.osn-consent div { display: flex; gap: .5rem; justify-content: flex-end; flex-wrap: wrap; }
.osn-consent button { font: 700 .9375rem/1 'Lato', system-ui, sans-serif; padding: .8rem 1.1rem; border: 0; cursor: pointer; background: transparent; color: #fff; }
.osn-consent button[data-c="yes"] { background: #ff42b3; color: #2b161b; }

/* WordPress/Astra: Astra riduce la base (html 93.75%) e il tema aggiunge ombre ai pulsanti */
html:has(.osn) { font-size: 100%; }
.osn .wp-element-button, .osn .wp-block-button__link, .osn button { box-shadow: none; text-shadow: none; } /* taste-skill-ignore: bordo campo, banner in sovrimpressione o reset */
.osn :where(h1, h2, h3, h4) { text-transform: none; }
/* Astra stilizza label/legend/campi dei moduli: il modulo eredita dalla direzione */
.osn-book :where(label, legend, span, input, select) { font-size: inherit; font-weight: inherit; line-height: inherit; color: inherit; letter-spacing: inherit; text-transform: none; }
.osn-book :where(input, select) { font-size: 1rem; }
/* Astra: padding automatico sui gruppi di primo livello e margine sotto i paragrafi (.entry-content p) */
.osn { --wp--custom--ast-default-block-top-padding: 0; --wp--custom--ast-default-block-right-padding: 0; --wp--custom--ast-default-block-bottom-padding: 0; --wp--custom--ast-default-block-left-padding: 0; }
.osn p { margin-block-end: 0; }
/* il radio resta accessibile da tastiera ma non copre il testo: si clicca l'etichetta */
.osn .osn-opt input { inset: auto; top: .5rem; left: .5rem; width: 1px; height: 1px; pointer-events: none; }
/* Etsy: il pulsante compare solo con "Su misura" scelto (funziona anche senza JS) */
.osn .osn-book__etsy { display: none; background: var(--osn-ink); color: var(--osn-bg); padding: 1rem 1.6rem; font: 700 1rem/1.2 var(--osn-text); text-decoration: none; transition: transform 140ms, filter 180ms; }
.osn .osn-book:has(input[value="su-misura"]:checked) .osn-book__etsy { display: inline-block; order: -1; }
.osn .osn-book__etsy:hover { filter: brightness(1.15); }
.osn .osn-book__etsy:active { transform: scale(.97); }
