/* ── Font (self-hosted, solo latin + latin-ext) ── */
@font-face { font-family:'Newsreader'; font-style:normal; font-weight:400 600; font-display:swap; src:url('../assets/fonts/newsreader-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family:'Newsreader'; font-style:normal; font-weight:400 600; font-display:swap; src:url('../assets/fonts/newsreader-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family:'Newsreader'; font-style:italic; font-weight:400; font-display:swap; src:url('../assets/fonts/newsreader-italic-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family:'Newsreader'; font-style:italic; font-weight:400; font-display:swap; src:url('../assets/fonts/newsreader-italic-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }
@font-face { font-family:'Work Sans'; font-style:normal; font-weight:400 700; font-display:swap; src:url('../assets/fonts/work-sans-latin-ext.woff2') format('woff2'); unicode-range:U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF; }
@font-face { font-family:'Work Sans'; font-style:normal; font-weight:400 700; font-display:swap; src:url('../assets/fonts/work-sans-latin.woff2') format('woff2'); unicode-range:U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }

html { scroll-behavior: smooth; }
body { margin: 0; background: #FAF7F2; color:#23231F; font-family:'Work Sans',sans-serif; -webkit-font-smoothing: antialiased; overflow-x:hidden; }
a { color: #46604C; text-decoration: none; }
a:hover { color: #2F3F33; }
::selection { background: #E4EBE1; }
@keyframes bgSheen { 0% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } 100% { background-position: 0% 50%; } }
.cta { display:inline-flex; align-items:center; border-radius:999px; font-weight:600; white-space:nowrap; background:#5C7A63; color:#fff; transition:background .25s ease; }
.cta:hover { background:#46604C; color:#fff; }
.cta-header { padding:10px 20px; font-size:14px; }
.cta-hero { padding:16px 30px; font-size:15px; }
.cta-contact { background:#fff; color:#23231F; padding:18px 36px; font-size:16px; }
.cta-contact:hover { background:#f0ece2; color:#23231F; }
.reveal { opacity:0; transform:translateY(28px); transition:opacity .7s ease-out, transform .35s ease-out; }
.reveal.visible { opacity:1; transform:translateY(0); }
.img-hover { transition:transform .35s ease-out; }
.img-hover:hover { transform:scale(1.035); }
.lift-card { transition:transform .3s ease, box-shadow .3s ease; }
.lift-card:hover { transform:translateY(-4px); box-shadow:0 14px 26px -14px rgba(35,35,31,0.25); }
.sheen-dark { background:linear-gradient(120deg,#23231F,#2E2D27,#23231F); background-size:200% 200%; animation:bgSheen 16s ease-in-out infinite; }
.sheen-contact { background:linear-gradient(120deg,#23231F,#333B30,#23231F); background-size:200% 200%; animation:bgSheen 14s ease-in-out infinite; }

/* ── Sfondi di sezione: alternanza netta beige / verde ── */
.bg-cream { background:#FAF7F2; }
.bg-sage  { background:#DCE5D8; }
.bg-sand  { background:#EDE4D3; }
.bg-green { background:#3F5845; color:#F5F1E9; }
.inner { max-width:1280px; margin:0 auto; }
picture { display:contents; }
picture > source { display:none; }

/* ── Hero: foto con cornice verde, rotazione e coriandoli ── */
#hero-blob { position:absolute; width:min(95%,420px); height:min(95%,420px); border-radius:50%; background:#E4EBE1; top:50%; left:50%; transform:translate(-50%,-50%); z-index:0; }
#hero-wrap { position:relative; z-index:1; width:min(100%,340px); transition:transform .15s linear; }
.hero-frame { position:relative; }
.hero-frame::before { content:''; position:absolute; inset:0; background:#5C7A63; border-radius:28px; transform:rotate(5deg) translate(16px,12px); transition:transform .45s cubic-bezier(.3,1.4,.5,1); z-index:0; }
.hero-frame::after { content:''; position:absolute; inset:-14px; border:2px dashed #8FA98F; border-radius:36px; transform:rotate(-3deg); transition:transform .45s cubic-bezier(.3,1.4,.5,1); z-index:0; pointer-events:none; }
#hero-img { position:relative; z-index:1; display:block; width:100%; height:auto; border-radius:24px; border:8px solid #fff; box-shadow:0 24px 40px -12px rgba(35,35,31,0.28); transition:transform .45s cubic-bezier(.3,1.4,.5,1); }
.hero-frame:hover #hero-img { transform:rotate(-3deg) scale(1.02); }
.hero-frame:hover::before { transform:rotate(9deg) translate(20px,14px); }
.hero-frame:hover::after { transform:rotate(3deg) scale(1.03); }

/* ── Patologie: griglia 4x4 ── */
.patologie-grid { display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }
.patologia-card { display:flex; align-items:center; min-height:76px; background:#FBF6EA; border:1px solid #E6DCC4; border-radius:14px; padding:12px 16px; font-size:18px; font-weight:700; line-height:1.3; color:#23231F; transition:transform .25s ease, box-shadow .25s ease, border-color .25s ease, background .25s ease; }
.patologia-card:hover { transform:translateY(-3px); box-shadow:0 10px 20px -12px rgba(35,35,31,0.22); border-color:#46604C; background:#fff; }
@media (max-width:900px) { .patologie-grid { grid-template-columns:repeat(2,1fr); } }
@media (max-width:480px) { .patologie-grid { gap:10px; } .patologia-card { min-height:68px; padding:10px 12px; font-size:16px; } }

/* ── Approccio: titolo sopra l'immagine ── */
.approccio-card { position:relative; overflow:hidden; border-radius:18px; display:flex; min-width:0; }
.approccio-card img { width:100%; height:100%; object-fit:cover; transition:transform .5s ease-out; }
.approccio-card:hover img { transform:scale(1.05); }
.approccio-label { position:absolute; left:0; right:0; bottom:0; padding:22px 20px 16px; background:linear-gradient(to top, rgba(35,45,37,0.88), rgba(35,45,37,0.45) 70%, rgba(35,45,37,0)); color:#fff; font-family:'Newsreader',serif; font-size:clamp(20px,2.1vw,26px); font-weight:600; line-height:1.15; text-shadow:0 1px 6px rgba(0,0,0,0.3); }

/* ── Dove ricevo: indirizzi con icona mappa ── */
.sede-card { flex:1 1 300px; min-width:240px; background:#fff; border-radius:18px; padding:26px 24px; border:1px solid #DCD2BF; display:flex; gap:16px; align-items:flex-start; }
.sede-card svg { flex-shrink:0; width:34px; height:44px; }


/* ── Chi sono: box laurea ── */
.laurea-box { display:flex; align-items:center; gap:16px; background:#3F5845; color:#fff; border-radius:16px; padding:18px 22px; margin-top:6px; width:fit-content; max-width:100%; box-shadow:0 14px 28px -16px rgba(35,45,37,0.55); border-left:5px solid #A9BFA6; }
.laurea-box svg { flex-shrink:0; width:38px; height:38px; color:#C8D6C3; }

/* ── Esperienza: immagini con la stessa altezza ── */
.elite-fig { flex:0 1 auto; margin:0; text-align:center; }
.elite-img { display:block; height:clamp(360px,42vw,540px); width:auto; max-width:100%; border-radius:16px; margin:0 auto; }
@media (max-width:700px) { .elite-fig { flex:1 1 100%; } .elite-img { height:auto; width:100%; } }

/* ── Dove ricevo: mappa stilizzata di sfondo ── */
#dove-ricevo { position:relative; overflow:hidden; }
.map-bg { position:absolute; inset:0; width:100%; height:100%; z-index:0; }
.map-fade { position:absolute; inset:0; z-index:0; background:linear-gradient(90deg, rgba(237,228,211,0.92) 0%, rgba(237,228,211,0.6) 55%, rgba(237,228,211,0.25) 100%); }
#dove-ricevo .inner { position:relative; z-index:1; }

/* ── Recensioni: griglia 2x2 + overlay ── */
.reviews-grid { display:grid; grid-template-columns:repeat(2,1fr); gap:20px; }
.review-card { all:unset; box-sizing:border-box; cursor:pointer; background:#fff; border-radius:18px; padding:26px 26px 22px; display:flex; flex-direction:column; gap:16px; text-align:left; font-family:'Work Sans',sans-serif; color:#23231F; border:1px solid transparent; }
.review-card:hover { border-color:#C8D6C3; }
.review-card:focus-visible { outline:3px solid #46604C; outline-offset:3px; }
.review-head { display:flex; align-items:center; gap:14px; }
.review-avatar { width:76px; height:76px; border-radius:50%; object-fit:cover; flex-shrink:0; border:3px solid #E4EBE1; transition:transform .35s cubic-bezier(.3,1.4,.5,1); }
.review-card:hover .review-avatar { transform:scale(1.08) rotate(-4deg); }
.review-meta { display:flex; flex-direction:column; gap:2px; }
.review-name { font-size:16px; font-weight:600; color:#23231F; }
.review-stars { color:#5C7A63; font-size:15px; letter-spacing:2px; }
.review-quote { font-family:'Newsreader',serif; font-style:italic; font-size:clamp(19px,1.9vw,22px); line-height:1.4; color:#3A362E; }
.review-more { margin-top:auto; font-size:14px; font-weight:600; color:#46604C; }
.review-more span { display:inline-block; transition:transform .25s ease; }
.review-card:hover .review-more span { transform:translateX(4px); }
@media (max-width:760px) { .reviews-grid { grid-template-columns:1fr; } }

.review-dialog { border:0; padding:0; background:transparent; max-width:min(640px, calc(100vw - 32px)); width:100%; max-height:calc(100vh - 48px); overflow:visible; }
.review-dialog::backdrop { background:rgba(35,35,31,0.55); backdrop-filter:blur(4px); }
.review-dialog[open] .rd-box { animation:rdIn .35s cubic-bezier(.3,1.25,.5,1); }
.review-dialog[open]::backdrop { animation:rdFade .3s ease-out; }
@keyframes rdIn { from { opacity:0; transform:translateY(24px) scale(.97); } to { opacity:1; transform:none; } }
@keyframes rdFade { from { opacity:0; } to { opacity:1; } }
.rd-box { position:relative; background:#FAF7F2; border-radius:22px; padding:clamp(28px,5vw,44px); max-height:calc(100vh - 48px); overflow-y:auto; box-sizing:border-box; display:flex; flex-direction:column; gap:16px; box-shadow:0 30px 60px -20px rgba(35,35,31,0.45); }
.rd-close { position:absolute; top:12px; right:14px; width:40px; height:40px; border:0; border-radius:50%; background:#E4EBE1; color:#23231F; font-size:26px; line-height:1; cursor:pointer; transition:background .2s ease, transform .2s ease; }
.rd-close:hover { background:#C8D6C3; transform:rotate(90deg); }
.rd-quote { font-family:'Newsreader',serif; font-style:italic; font-size:clamp(22px,2.6vw,28px); line-height:1.3; color:#2F3F33; padding-right:36px; }
.rd-text p { font-size:16px; line-height:1.7; color:#4A4538; margin:0 0 12px; }
.rd-text p:last-child { margin-bottom:0; }
.rd-figure { margin:8px 0 0; display:flex; flex-direction:column; align-items:center; gap:10px; }
.rd-photo { display:block; max-width:100%; max-height:380px; width:auto; border-radius:18px; border:6px solid #fff; box-shadow:0 18px 32px -14px rgba(35,35,31,0.3); }
.rd-name { font-size:15px; font-weight:600; color:#23231F; }
body.rd-lock { overflow:hidden; }

@media (prefers-reduced-motion: reduce) {
  .review-dialog[open] .rd-box, .review-dialog[open]::backdrop { animation:none; }
  .hero-frame:hover #hero-img, .hero-frame:hover::before, .hero-frame:hover::after { transform:none; }
}
