@font-face {
  font-family:'DM Sans';
  src:url(fonts/dm-sans.ttf) format('truetype');
  font-weight:400;
  font-display:swap
}
@font-face {
  font-family:'Playfair Display';
  src:url(fonts/playfair.ttf) format('truetype');
  font-weight:800;
  font-display:swap
}
:root {
  --blue:#0E1B2E;
  --orange:#E8671A;
  --paper:#faf9f6;
  --muted:#566172;
  --line:#d9dce0;
  --soft:#f0eee8;
  --width:1160px
}
* {
  box-sizing:border-box
}
html {
  scroll-padding-top:140px
}
body {
  margin:0;
  color:var(--blue);
  background:var(--paper);
  font:17px/1.7 'DM Sans',sans-serif
}
h1,h2,h3,p {
  margin-top:0
}
h1,h2,h3 {
  line-height:1.15;
  font-family:'Playfair Display',Georgia,serif;
  font-weight:700
}
h1 {
  font-size:clamp(2.6rem,5.2vw,4.8rem);
  letter-spacing:-.035em
}
h2 {
  font-size:clamp(2rem,3vw,2.8rem);
  letter-spacing:-.025em
}
h3 {
  font-size:1.55rem
}
a {
  color:inherit;
  text-underline-offset:5px
}
a:hover {
  text-decoration-color:var(--orange)
}
button {
  font:inherit;
  cursor:pointer;
  color:inherit
}
a,button,summary {
  -webkit-tap-highlight-color:transparent
}
button:focus-visible,a:focus-visible,summary:focus-visible {
  outline:3px solid var(--orange);
  outline-offset:4px
}
img {
  max-width:100%
}
.container {
  max-width:var(--width);
  margin:auto;
  padding-inline:28px
}
.section {
  padding:76px max(28px,calc((100vw - var(--width))/2 + 28px))
}
.section.container {
  padding:64px 28px
}
.eyebrow,.section-label,.num {
  font-size:.73rem;
  letter-spacing:.15em;
  text-transform:uppercase;
  font-weight:700;
  color:#a2430e;
  margin-bottom:22px
}
.review {
  text-align:center;
  padding:7px 16px;
  background:var(--soft);
  font-size:.68rem;
  letter-spacing:.1em
}
.skip {
  position:fixed;
  top:-100px;
  left:20px;
  z-index:100;
  background:white;
  padding:12px
}
.skip:focus {
  top:12px
}
.header {
  background:var(--paper);
  position:sticky;
  top:0;
  z-index:20;
  border-bottom:1px solid var(--line)
}
/* The compact header is the default. The navigation expands at desktop width. */
.header-inner {
  max-width:1320px;
  margin:auto;
  padding:8px 14px;
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:8px
}
.brand {
  display:flex;
  align-items:center;
  gap:4px;
  min-width:0;
  flex:1;
  text-decoration:none;
  font:700 clamp(1.05rem,4.1vw,1.5rem)/1.1 'Playfair Display',Georgia,serif
}
.brand img {
  width:64px;
  height:64px;
  flex:none
}
.brand-name {
  display:block;
  text-wrap:balance
}
#about {
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,1fr);
  align-items:center;
  gap:60px
}
.about-photo {
  margin:0;
  justify-self:end;
  width:100%;
  max-width:330px
}
.about-photo img {
  display:block;
  width:100%;
  height:auto
}
.service-link {
  overflow-wrap:anywhere
}
.nav-list {
  display:flex;
  align-items:center;
  gap:14px;
  list-style:none;
  padding:0;
  margin:0
}
.nav-item {
  position:relative;
  display:flex;
  align-items:center;
  font-size:.85rem
}
.nav-item>a {
  padding:12px 0;
  text-decoration:none;
  white-space:nowrap
}
.nav-item>a[aria-current=page] {
  text-decoration:underline;
  text-decoration-color:var(--orange);
  text-decoration-thickness:2px
}
.submenu-toggle {
  border:0;
  background:transparent;
  min-width:44px;
  min-height:44px;
  margin-left:0
}
.submenu {
  list-style:none;
  margin:0;
  padding:12px;
  background:white;
  border:1px solid var(--line);
  min-width:250px;
  position:absolute;
  top:100%;
  left:0;
  box-shadow:0 12px 30px #0e1b2e16
}
.submenu a {
  display:block;
  padding:10px;
  text-decoration:none
}
.submenu a:hover {
  background:var(--soft)
}
.js .submenu[hidden] {
  display:none
}
.js .nav-toggle {
  display:none
}
.nav-toggle {
  display:none
}
.cta {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-height:48px;
  padding:13px 24px!important;
  background:var(--blue);
  color:white;
  text-decoration:none;
  font-weight:700;
  font-size:.9rem;
  border:1px solid var(--blue);
  gap:12px
}
.cta:hover {
  background:var(--orange);
  border-color:var(--orange);
  color:var(--blue)
}
.nav-cta {
  margin-left:5px
}
.hero {
  display:grid;
  grid-template-columns:1.6fr 1fr;
  gap:60px;
  align-items:center;
  padding:76px max(28px,calc((100vw - var(--width))/2 + 28px));
  overflow:hidden;
  position:relative;
  background:var(--blue);
  color:white
}
.hero h1 {
  max-width:750px
}
.hero .eyebrow {
  color:#ffab7b
}
.lead {
  font-size:1.15rem;
  line-height:1.6;
  max-width:760px
}
.hero .pitch {
  font-size:.97rem;
  color:#d4dce6;
  max-width:640px
}
.hero .second {
  color:#ffbc96
}
.hero .textlink {
  display:inline-block;
  margin:16px 0 0 20px;
  font-size:.9rem
}
.hero-art {
  text-align:center;
  color:#e2e6ec;
  font-family:'Playfair Display',Georgia,serif;
  font-size:1.2rem
}
.rings {
  width:280px;
  height:280px;
  margin:0 auto 30px;
  display:grid;
  place-items:center;
  position:relative
}
.rings span {
  border:1px solid #ffffff30;
  border-radius:50%;
  position:absolute;
  inset:0
}
.rings span:nth-child(2) {
  inset:28px
}
.rings span:nth-child(3) {
  inset:56px;
  border-color:var(--orange)
}
.rings b {
  font-size:110px;
  color:var(--orange);
  font-weight:400
}
.two,.three {
  display:grid;
  gap:28px
}
.two {
  grid-template-columns:repeat(2,minmax(0,1fr))
}
.three {
  grid-template-columns:repeat(3,minmax(0,1fr))
}
.two article {
  padding:28px 0
}
.three .tile {
  border:1px solid var(--line);
  padding:30px;
  background:var(--paper);
  display:flex;
  flex-direction:column
}
.tile p {
  font-size:.95rem
}
.tile h2 {
  font-size:1.65rem
}
.tile a:last-child {
  margin-top:auto
}
.tinted {
  background:var(--soft)
}
#services .tile:nth-child(2) {
  background:var(--blue);
  color:white
}
#services .tile:nth-child(2) a {
  color:#ffbc96
}
.note,.section-foot {
  margin:28px 0 0;
  max-width:880px;
  color:var(--muted)
}
.wide {
  max-width:850px
}
.method {
  border-block:1px solid var(--line)
}
.under {
  font-weight:700
}
.faq details {
  border-bottom:1px solid var(--line);
  padding:18px 0;
  max-width:900px
}
.faq summary {
  font-weight:600;
  cursor:pointer;
  min-height:36px
}
.faq details p {
  padding-top:14px;
  max-width:800px
}
.contact {
  padding:65px max(28px,calc((100vw - var(--width))/2 + 28px));
  background:var(--blue);
  color:white
}
.contact>p:not(.section-label) {
  max-width:750px
}
.contact .section-label {
  color:#ffbc96
}
.page-hero {
  background:var(--blue);
  color:white;
  padding:66px 0
}
.page-hero .eyebrow {
  color:#ffbc96
}
.page-hero h1 {
  max-width:1000px;
  margin-bottom:0;
  font-size:clamp(2.5rem,5vw,4rem)
}
.page-hero .lead {
  margin-top:25px;
  margin-bottom:0;
  color:#d4dce6
}
.prose {
  max-width:820px;
  margin:auto;
  padding:52px 28px 70px
}
.prose h2 {
  font-size:1.9rem;
  margin:42px 0 18px
}
.prose h3 {
  margin-top:32px
}
.prose p {
  margin-bottom:22px
}
.editor-note {
  font:12px/1.7 'DM Sans',sans-serif;
  border-left:3px solid var(--orange);
  padding:12px 16px;
  background:var(--soft);
  margin:24px 0;
  color:#5a4c42
}
.related {
  padding-bottom:50px
}
.related h2 {
  font-size:1.7rem
}
.related-links {
  display:flex;
  flex-wrap:wrap;
  gap:20px
}
.end-cta {
  background:var(--soft);
  text-align:center;
  padding:60px 28px
}
.resource {
  display:grid;
  grid-template-columns:1fr auto;
  gap:50px;
  align-items:center;
  border-top:1px solid var(--line);
  padding:34px 0;
  margin-bottom:30px
}
.resource:not(:has(+ .resource)) { border-bottom:1px solid var(--line); }
.resource h2 {
  font-size:2rem
}
.contact-layout {
  display:grid;
  grid-template-columns:1.1fr 1fr;
  gap:70px
}
.contact-card {
  background:var(--soft);
  padding:30px;
  font-style:normal;
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:20px
}
.contact-card>p {
  margin:0;
  font-weight:700
}
.contact-email {
  overflow-wrap:anywhere
}
.contact-card small {
  color:var(--muted)
}
footer {
  background:var(--blue);
  color:#e4e8ed;
  padding:38px 28px
}
.footer-inner {
  max-width:var(--width);
  margin:auto;
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:32px;
  font-size:.83rem
}
footer nav,footer .footer-inner>div:last-child {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px
}
footer a {
  overflow-wrap:anywhere
}
.footer-brand {
  font-family:'Playfair Display',Georgia,serif;
  font-size:1.5rem;
  color:white;
  line-height:1.25;
  margin-bottom:3px
}
.footer-subtitle {
  margin:0;
  line-height:1.45
}
.footer-manifesto {
  margin:17px 0 0;
  line-height:1.55
}
.muted {
  color:#b8c2ce;
  font-size:.75rem;
  margin-top:20px
}
body:not(.js) .nav-item {
  flex-wrap:wrap
}
body:not(.js) .submenu {
  position:static;
  box-shadow:none
}
body:not(.js) .submenu-toggle {
  display:none
}
@media(min-width:1061px) {
  .header-inner {
    flex-wrap:nowrap;
    padding:8px 24px;
    gap:18px
  }
  .brand {
    flex:none;
    gap:8px;
    font-size:clamp(1.25rem,1.7vw,1.55rem)
  }
  .brand img {
    width:76px;
    height:76px
  }
  .js #primary-nav[hidden] {
    display:block!important
  }
}
@media(max-width:1060px) {
  #services .three { grid-template-columns:1fr; }
  #about { gap:28px; }
  .js .nav-toggle {
    display:grid;
    place-items:center;
    width:44px;
    min-height:44px;
    flex:none;
    font-size:1.35rem;
    background:none;
    border:1px solid var(--line)
  }
  #primary-nav {
    width:100%
  }
  .js #primary-nav[hidden] {
    display:none
  }
  .nav-list {
    display:block;
    max-height:min(70vh, calc(100dvh - 110px));
    overflow-y:auto
  }
  .nav-item {
    flex-wrap:wrap;
    border-top:1px solid var(--line);
    justify-content:space-between;
    font-size:1rem
  }
  .nav-item>a {
    flex-grow:1;
    padding:12px 8px
  }
  .nav-item .nav-cta {
    flex-grow:0;
    margin:12px 0
  }
  .submenu {
    position:static;
    width:100%;
    box-shadow:none;
    border:0;
    background:var(--soft)
  }
  .hero {
    grid-template-columns:1fr .6fr;
    gap:20px
  }
  .rings {
    width:200px;
    height:200px
  }
  .three {
    gap:18px
  }
  .three .tile {
    padding:22px
  }
  .contact-layout {
    gap:30px
  }
}
@media(max-width:700px) {
  .service-link { font-size:clamp(.8rem,4vw,.95rem); }
  #services .tile { min-width:0; }
  #about { grid-template-columns:1fr; }
  .about-photo { justify-self:start; }
  html {
    scroll-padding-top:100px
  }
  body {
    font-size:16px
  }
  .hero {
    grid-template-columns:1fr;
    padding-block:48px
  }
  .hero-art {
    display:none
  }
  .hero h1 {
    font-size:2.9rem
  }
  .hero .textlink {
    margin-left:14px
  }
  .section {
    padding-block:46px
  }
  .two,.three,.contact-layout,.resource,.footer-inner {
    grid-template-columns:1fr
  }
  .two {
    gap:0
  }
  .three {
    gap:20px
  }
  .two article {
    padding-block:18px
  }
  .resource {
    gap:20px
  }
  .resource .cta {
    justify-self:start
  }
  .page-hero {
    padding-block:44px
  }
  .review {
    font-size:.6rem
  }
  .prose {
    padding-top:30px
  }
  footer {
    padding-block:30px
  }
  .footer-inner {
    gap:20px
  }
  .end-cta {
    padding-block:45px
  }
  .contact-card {
    padding:24px
  }
  .related-links {
    flex-direction:column
  }
}
/* Services uses the existing typography, surfaces and grid. */
.contact-intro {
  background:var(--paper);
  border-left:3px solid var(--orange);
  padding:20px 24px;
  margin:24px 0 28px;
  max-width:850px
}
.contact-intro .section-label {
  margin-bottom:8px
}
.contact-intro p:not(.section-label) {
  margin-bottom:8px
}
.service-path {
  padding-block:36px 64px
}
.service-opening {
  padding-bottom:30px
}
.service-section {
  padding-block:34px;
  border-top:1px solid var(--line)
}
.service-section > p {
  max-width:850px
}
.service-signals {
  display:grid;
  gap:0 32px;
  padding:0;
  list-style:none;
  margin:24px 0
}
.service-signals li {
  padding:14px 0;
  border-top:1px solid var(--line)
}
.service-signals span {
  display:block
}
.service-options article {
  border:1px solid var(--line);
  padding:24px;
  background:var(--soft)
}
.service-actions {
  display:flex;
  flex-wrap:wrap;
  gap:16px 24px;
  align-items:center;
  margin-top:24px
}
.prose ol li + li {
  margin-top:10px
}
@media(min-width:701px) {
  .service-signals {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
}
@media(prefers-reduced-motion:reduce) {
  * {
    scroll-behavior:auto!important;
    transition:none!important
  }
}

/* Reading rhythm for services, articles and compact screens. */
.prose {
  max-width:76ch;
}
.prose h2 {
  font-size:clamp(1.4rem, 2.9vw, 1.9rem);
  margin-block:1.75em .7em;
  line-height:1.25;
}
.prose h2:first-child {
  margin-top:0;
}
.prose li + li {
  margin-top:.65em;
}
.prose ol,
.prose ul:not(.service-signals) {
  padding-inline-start:1.4em;
  margin-bottom:1.5em;
}
.article-byline {
  font-weight:700;
}
.article-back {
  color:var(--muted);
}
.service-signals strong {
  display:block;
}
.service-path .related-links {
  margin-top:2rem;
  padding-top:1.5rem;
  border-top:1px solid var(--line);
}
.blog-list .tile {
  gap:.5rem;
}
.blog-list .tile .section-label {
  margin-bottom:0;
}
.blog-list .tile h2 {
  margin-bottom:.3em;
}
.blog-list .tile p:last-child {
  margin-bottom:0;
}
.blog-list .tile h2 a {
  text-decoration-thickness:1px;
}
.end-cta {
  padding-block:2.4rem;
}
.cta {
  line-height:1.3;
}
.cta:focus-visible,
.nav-toggle:focus-visible {
  outline-offset:3px;
}
@media(max-width:700px) {
  h2 {
    font-size:clamp(1.4rem, 5.9vw, 1.95rem);
    line-height:1.2;
  }
  h3, .tile h2 {
    font-size:clamp(1.24rem, 5.2vw, 1.55rem);
    line-height:1.25;
  }
  .hero, .section, .container, .prose, .contact {
    padding-inline:clamp(18px, 5vw, 26px);
  }
  .section.container {
    padding:2.1rem clamp(18px, 5vw, 26px);
  }
  .hero {
    padding-block:1.8rem 2.2rem;
  }
  .hero h1 {
    font-size:clamp(1.8rem, 7.2vw, 2.35rem);
    line-height:1.12;
    margin-bottom:.7em;
  }
  .page-hero {
    padding-block:1.8rem 2rem;
  }
  .page-hero h1 {
    font-size:clamp(1.75rem, 6.9vw, 2.35rem);
    line-height:1.14;
  }
  .page-hero .lead {
    margin-top:1rem;
  }
  .eyebrow, .section-label, .num {
    font-size:.875rem;
    line-height:1.35;
    letter-spacing:.07em;
    margin-bottom:.8rem;
  }
  .review, .editor-note, .muted, .contact-card small {
    font-size:.875rem;
    line-height:1.45;
  }
  .review {
    letter-spacing:.025em;
  }
  .lead, .hero .pitch, .hero .textlink, .tile p, .service-link, .cta, .footer-inner {
    font-size:1rem;
  }
  .lead {
    line-height:1.55;
  }
  .hero .textlink {
    margin-left:0;
    display:block;
  }
  .section, .contact, .prose {
    padding-block:2.25rem;
  }
  .prose p {
    margin-bottom:1.15em;
  }
  .header-inner {
    padding-block:6px;
  }
  .brand img {
    width:60px;
    height:60px;
  }
  .brand {
    font-size:clamp(1.04rem, 4.6vw, 1.22rem);
  }
  html {
    scroll-padding-top:90px;
  }
}
@media(min-width:701px) and (max-width:920px) {
  .blog-list {
    grid-template-columns:repeat(2,minmax(0,1fr));
  }
}

/* Header and contact actions for the private v5 review. */
.brand-text { min-width:0; display:grid; gap:5px; }
.brand-tagline {
  color:#E8671A;
  font:700 .65rem/1.2 'DM Sans',sans-serif;
  text-transform:uppercase;
  letter-spacing:.055em;
}
.end-cta p { max-width:37rem; margin:0 auto 1rem; }
.contact-actions,.resource-actions { display:flex; flex-wrap:wrap; gap:.75rem; align-items:flex-start; }
.contact-layout { align-items:start; }
.resource-actions { flex-direction:column; }
.resource h3 { margin-bottom:.5rem; }
.resource p { margin-bottom:0; }
.hero .textlink { margin-left:0; }
@media(max-width:700px) {
  .brand-tagline { font-size:clamp(.54rem, 2.55vw, .65rem); letter-spacing:.035em; }
  .contact-actions { flex-direction:column; }
  .end-cta .cta,.contact-intro .cta,.service-path .cta { padding-inline:15px!important; }
}

.updates {
  max-width: 48rem;
  padding: clamp(1rem, 4vw, 2rem);
  border: 1px solid #d5cec3;
  border-radius: .8rem;
}
.updates-open { font: inherit; cursor: pointer; }
.updates-open:disabled { cursor: default; }
.updates [hidden], .updates .updates-status:empty { display: none; }
.updates #sender-updates { margin-top: 1rem; }
.updates iframe { max-width: 100%; }

/* Approved v5 review adjustments: keep services typography and resource buttons consistent. */
.service-path > p:first-child { font-size:1.08rem; line-height:1.75; }
.service-path h2 { margin-top:1.35em; }
.service-path > p:nth-child(2) { margin-top:1.1rem; }
.resource-actions .cta { width:240px; max-width:100%; text-align:center; }
.resource-actions .resource-word { background:transparent; color:var(--blue); border-color:var(--blue); }
.resource-actions .resource-word:hover { background:var(--orange); color:var(--blue); border-color:var(--orange); }
@media(max-width:700px) {
  .resource-actions .cta { width:100%; }
  .service-path > p:first-child { font-size:1rem; }
}

/* Revisione approvata 14-11-2026: ritmo verticale della homepage.
   Riduce i vuoti fra sezioni, senza comprimere l'interlinea dei paragrafi.
   Le pagine interne mantengono il loro ritmo originale. */
@media (min-width:701px) {
  .home-section.section { padding-top:52px; padding-bottom:52px; }
  .home-section.contact { padding-top:50px; padding-bottom:48px; }
  .home-section .two article { padding-top:20px; padding-bottom:20px; }
}
.home-section .note,
.home-section .section-foot { margin-top:20px; }
/* Il box del primo colloquio deve seguire la larghezza del gruppo di tre servizi. */
#services .contact-intro { max-width:none; width:100%; }
/* CTA conclusiva della homepage: contorno leggibile sul medesimo fondo blu. */
#contact-b .cta { margin-top:.65rem; border:2px solid #fff; }
#contact-b .cta:hover { background:var(--orange); border-color:var(--orange); color:var(--blue); }
@media (max-width:700px) {
  .home-section.section { padding-top:30px; padding-bottom:30px; }
  .home-section.contact { padding-top:34px; padding-bottom:34px; }
  .home-section .note,
  .home-section .section-foot { margin-top:16px; }
  #services .contact-intro { margin-top:18px; margin-bottom:20px; }
}


/* Consolidamento CTA contatti · 14/11/2026.
   Due azioni di pari dimensione, icona in alto e testo leggibile sotto. */
.contact-actions { align-items:stretch; gap:16px; }
.contact-actions .contact-action {
  flex: 0 1 252px;
  width:100%;
  max-width:252px;
  min-height:118px;
  display:flex;
  flex-direction:column;
  justify-content:center;
  align-items:center;
  text-align:center;
  gap:12px;
  line-height:1.4;
  padding:18px 16px !important;
}
.contact-action .contact-icon { width:38px; height:38px; display:block; flex:none; }
.contact-actions .whatsapp,
.contact-actions .whatsapp:visited {
  background:#25D366;
  border-color:#25D366;
  color:#0E1B2E;
}
.contact-actions .whatsapp:hover,
.contact-actions .whatsapp:focus-visible {
  background:#22C55E;
  border-color:#22C55E;
  color:#0E1B2E;
}
.contact-layout .contact-privacy { margin-top:18px; margin-bottom:0; }
@media(max-width:700px) {
  .contact-actions { flex-direction:column; }
  .contact-actions .contact-action { flex-basis:auto; }
}

.footer-contact-label { margin:0; }

.cookie-banner {
  position:fixed;
  inset:auto 1rem 1rem;
  z-index:30;
  max-width:59rem;
  max-height:calc(100dvh - 2rem);
  overflow:auto;
  margin-inline:auto;
  padding:1rem 3.25rem 1rem 1.25rem;
  display:grid;
  grid-template-columns:1fr auto;
  align-items:center;
  gap:.75rem 1.25rem;
  background:var(--paper);
  color:var(--blue);
  border:1px solid var(--blue);
  border-radius:.5rem;
  box-shadow:0 6px 22px #0e1b2e29;
}
.cookie-banner[hidden] { display:none; }
.cookie-banner h2 { margin:0 0 .35rem; font-size:1.2rem; }
.cookie-banner p { margin:0; font-size:.9rem; line-height:1.45; }
.cookie-actions { display:flex; gap:.5rem; }
.cookie-banner button {
  cursor:pointer;
  font:inherit;
  font-size:.9rem;
  font-weight:700;
  min-height:44px;
}
.cookie-actions button {
  min-width:6rem;
  padding:.3rem .75rem;
  border:1px solid var(--blue);
  background:var(--blue);
  color:white;
  border-radius:.25rem;
}
.cookie-actions button:hover { background:var(--orange); color:var(--blue); }
.cookie-close {
  position:absolute;
  top:0;
  right:0;
  width:44px;
  border:0;
  background:transparent;
  color:var(--blue);
}
.cookie-banner :focus-visible { outline:2px solid var(--orange); outline-offset:2px; }
@media (max-width:700px) {
  .cookie-banner { grid-template-columns:1fr; inset:auto .5rem .5rem; }
  .cookie-actions button { flex:1; min-width:0; }
}
