/* =========================================================
   SELF-HOSTED FONTS
   File .woff2 in /fonts (scaricali con fonts/download-fonts.sh).
   Se mancano, parte il fallback di sistema definito in :root.
   ========================================================= */
@font-face{
  font-family:'Anton';
  src:url('../fonts/anton-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Fredoka';
  src:url('../fonts/fredoka-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Fredoka';
  src:url('../fonts/fredoka-500.woff2') format('woff2');
  font-weight:500;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Fredoka';
  src:url('../fonts/fredoka-600.woff2') format('woff2');
  font-weight:600;font-style:normal;font-display:swap;
}
@font-face{
  font-family:'Fredoka';
  src:url('../fonts/fredoka-700.woff2') format('woff2');
  font-weight:700;font-style:normal;font-display:swap;
}
/* latin-ext subset: include la schwa (ə = U+0259) e altri caratteri estesi.
   Dichiarato dopo i blocchi base così vince su quei codepoint. */
@font-face{
  font-family:'Fredoka';
  src:url('../fonts/fredoka-latin-ext-400.woff2') format('woff2');
  font-weight:400;font-style:normal;font-display:swap;
  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:'Fredoka';
  src:url('../fonts/fredoka-latin-ext-500.woff2') format('woff2');
  font-weight:500;font-style:normal;font-display:swap;
  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:'Fredoka';
  src:url('../fonts/fredoka-latin-ext-600.woff2') format('woff2');
  font-weight:600;font-style:normal;font-display:swap;
  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:'Fredoka';
  src:url('../fonts/fredoka-latin-ext-700.woff2') format('woff2');
  font-weight:700;font-style:normal;font-display:swap;
  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;
}

/* =========================================================
   ENZA E BASTA — minimal chef site
   Palette: warm white #fbf7ef · red #b51f24 · deep red #7f1117
   ========================================================= */

:root{
  color-scheme:only light;

  --violet:#7f1117;
  --amethyst:#b51f24;
  --grape:#d8cfc3;
  --rose:#b51f24;
  --saffron:#fbf7ef;

  /* light tints */
  --rose-tint:#f4ebe3;
  --rose-tint-2:#eadbd1;
  --saffron-tint:#fbf7ef;
  --grape-tint:#f1ece5;
  --paper:#fbf7ef;

  --sidebar-w:268px;

  --display:'Anton','Haettenschweiler','Arial Narrow',Impact,sans-serif;
  --sans:'Fredoka','Trebuchet MS','Segoe UI',system-ui,-apple-system,sans-serif;

  --shadow-hard:3px 3px 0 rgba(127,17,23,.82);
  --shadow-hard-sm:2px 2px 0 rgba(127,17,23,.82);
  --radius-ui:6px;
  --radius-panel:8px;
  --radius-photo:10px;
}

*{box-sizing:border-box;}
html{
  scroll-behavior:smooth;
  scroll-padding-top:88px;
  background:var(--paper);
}
body{
  margin:0;
  font-family:var(--sans);
  color:var(--violet);
  background:var(--paper);
  font-size:18px;
  line-height:1.6;
  overflow-x:hidden;
}
input,textarea,select,button{color-scheme:only light;}
img{max-width:100%;display:block;}
a{color:inherit;}

/* When menu open on desktop, push content right */
@media (min-width:980px){
  body.menu-open .content{margin-left:var(--sidebar-w);}
  .content{transition:margin-left .35s cubic-bezier(.2,.8,.2,1);}
}

/* ---------- Skip link ---------- */
.skip-link{
  position:fixed;left:8px;top:-60px;z-index:200;
  background:var(--violet);color:#fff;padding:10px 16px;border-radius:var(--radius-ui);
  text-decoration:none;font-weight:600;transition:top .2s;
}
.skip-link:focus{top:8px;}

/* =========================================================
   SIDE MENU
   ========================================================= */
.side-menu{
  position:fixed;top:0;left:0;z-index:120;
  width:var(--sidebar-w);height:100%;
  background:var(--violet);
  color:#fff;
  padding:26px 22px 22px;
  display:flex;flex-direction:column;
  border-right:4px solid var(--saffron);
  transform:translateX(0);
  transition:transform .35s cubic-bezier(.2,.8,.2,1);
  overflow-y:auto;
}
body.menu-closed .side-menu{transform:translateX(-105%);}

.menu-close{
  align-self:flex-end;
  background:var(--rose);color:#fff;border:3px solid #fff;
  width:42px;height:42px;border-radius:6px;
  display:grid;place-items:center;cursor:pointer;
  transition:transform .2s, background .2s;
}
.menu-close:hover{transform:translateY(-1px);background:var(--saffron);color:var(--violet);}

.side-brand{
  display:block;
  width:100%;
  margin:16px 0 30px;
  padding:10px;
}
.side-brand img{
  width:100%;
  height:auto;
  display:block;
}

.side-lang-toggle{
  align-self:flex-start;
  margin:0 0 22px;
  background:var(--paper);
  border:2px solid var(--saffron);
  border-radius:30px;
  padding:6px 8px;
  display:flex;
  align-items:center;
  gap:8px;
  font-family:var(--display);
  font-size:1rem;
  color:var(--violet);
  box-shadow:3px 3px 0 var(--rose);
  opacity:0;
  transform:translateY(-10px) scale(.96);
  transition:opacity .24s ease .16s, transform .24s ease .16s;
}
body.menu-open .side-lang-toggle{
  opacity:1;
  transform:translateY(0) scale(1);
}
.side-lang-toggle button{
  background:none;
  border:none;
  cursor:pointer;
  font:inherit;
  color:var(--grape);
  padding:5px 11px;
  border-radius:20px;
  line-height:1;
}
.side-lang-toggle button.is-active{
  background:var(--rose);
  color:#fff;
}

.side-links{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px;flex:1;}
.side-links a{
  display:flex;align-items:center;gap:14px;
  padding:12px 14px;border-radius:var(--radius-ui);
  text-decoration:none;font-weight:600;font-size:1.08rem;
  transition:background .2s, transform .2s;
}
.side-links a:hover,.side-links a:focus{background:rgba(255,255,255,.10);transform:translateX(4px);}
.side-links .ico{
  width:38px;height:38px;flex:0 0 38px;border-radius:5px;
  background:var(--ico);color:var(--violet);
  display:grid;place-items:center;
  border:2px solid var(--violet);
}
/* dark icon needs light glyph */
.side-links .ico[style*="--ico:var(--violet)"]{color:var(--saffron);border-color:var(--saffron);}

.side-foot{margin-top:18px;border-top:1px dashed rgba(255,255,255,.3);padding-top:14px;font-size:.92rem;}
.side-foot a{color:var(--saffron);text-decoration:none;font-weight:600;}
.side-socials{display:flex;flex-direction:column;gap:10px;}
.side-socials a{
  display:inline-flex;align-items:center;gap:10px;
  color:var(--saffron);text-decoration:none;font-weight:600;
}
.side-socials a:hover,.side-socials a:focus{text-decoration:underline;}
.side-socials svg{flex:0 0 auto;}
.menu-scrim{
  position:fixed;inset:0;background:rgba(127,17,23,.45);z-index:110;border:0;
}

/* ---------- Hamburger ---------- */
.hamburger{
  position:fixed;top:28px;left:30px;z-index:130;
  width:54px;height:54px;border-radius:12px;
  background:var(--violet);border:0;
  cursor:pointer;display:none;flex-direction:column;gap:5px;
  align-items:center;justify-content:center;
  box-shadow:3px 3px 0 var(--amethyst);
}
.hamburger span{display:block;width:24px;height:3px;background:var(--paper);border-radius:3px;}
body.menu-closed .hamburger{display:flex;}

/* =========================================================
   LANGUAGE TOGGLE
   ========================================================= */
.lang-toggle{
  position:fixed;top:30px;right:30px;z-index:130;
  background:var(--paper);border:2px solid var(--violet);
  border-radius:30px;padding:6px 8px;
  display:flex;align-items:center;gap:8px;
  font-family:var(--display);font-size:1rem;
  box-shadow:var(--shadow-hard-sm);
  transition:opacity .2s ease, transform .25s ease, box-shadow .15s;
}
body.menu-open .lang-toggle{
  opacity:0;
  pointer-events:none;
  transform:translateY(-8px) scale(.96);
}
.lang-toggle button{
  background:none;border:none;cursor:pointer;
  font:inherit;color:var(--grape);padding:5px 11px;border-radius:20px;line-height:1;
}
.lang-toggle button.is-active{background:var(--rose);color:#fff;}

/* =========================================================
   SHARED TYPE / BUTTONS
   ========================================================= */
.section-title{
  font-family:var(--display);
  text-transform:uppercase;
  font-size:clamp(2.6rem,7vw,5rem);
  line-height:.92;
  margin:.1em 0 .25em;
  color:var(--paper);
  -webkit-text-stroke:2px var(--violet);
  paint-order:stroke fill;
  text-shadow:2px 2px 0 rgba(127,17,23,.82);
}
.section-title.light{
  color:var(--saffron);
  -webkit-text-stroke:2px #000;
  text-shadow:2px 2px 0 #000;
}
.eyebrow{
  font-weight:700;letter-spacing:2px;text-transform:uppercase;
  font-size:.82rem;color:var(--rose);margin:0;
}
.eyebrow.light{color:var(--saffron);}

.btn{
  display:inline-flex;align-items:center;justify-content:center;
  font-family:var(--sans);font-weight:700;text-transform:none;
  letter-spacing:0;font-size:1rem;line-height:1.2;
  padding:13px 22px;border-radius:var(--radius-ui);
  border:2px solid var(--btn-border);
  background:var(--btn-bg);
  text-decoration:none;cursor:pointer;
  box-shadow:2px 2px 0 var(--btn-shadow);
  transition:transform .15s, box-shadow .15s, background .15s, color .15s;
}
.btn:hover,.btn:focus{transform:translateY(-1px);box-shadow:3px 3px 0 var(--btn-shadow);}
.btn:active{transform:translate(1px,1px);box-shadow:1px 1px 0 var(--btn-shadow);}
.btn-dark{--btn-bg:var(--violet);--btn-shadow:var(--rose);color:var(--saffron);}
.btn-pink{--btn-bg:var(--rose);--btn-shadow:var(--violet);color:#fff;}
.btn-dark,.btn-pink{--btn-border:var(--violet);}
.btn-outline{--btn-bg:transparent;--btn-shadow:var(--violet);--btn-border:var(--violet);color:var(--violet);}
.btn-outline:hover,.btn-outline:focus{--btn-bg:var(--violet);color:var(--saffron);}

.visually-hidden{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* ---------- playful motion ---------- */
@keyframes jiggle{
  0%,100%{transform:none;}
  20%{transform:translateX(-2px);}
  40%{transform:translateX(2px);}
  60%{transform:translateX(-1px);}
  80%{transform:translateX(1px);}
}
.jiggle{animation:jiggle .5s ease;}
@keyframes stickerShake{
  0%,100%{transform:rotate(-10deg);}
  25%{transform:rotate(-13deg) translateX(-2px);}
  50%{transform:rotate(-7deg) translateX(2px);}
  75%{transform:rotate(-11deg) translateX(-1px);}
}
.sticker.jiggle{animation:stickerShake .55s ease;}

@media (hover:hover) and (min-width:980px){
  .tag-row li{transition:transform .15s;}
  .tag-row li:hover{transform:translateY(-1px);}
  .socials a:hover{transform:translateY(-1px);}
  .sticker:hover{transform:rotate(-10deg) translateY(-1px);}
  .contact-list a:hover{transform:translateX(2px);display:inline-block;}
}

/* decorative svg helpers */
.deco{position:absolute;pointer-events:none;}
.dots{
  width:84px;height:84px;
  background:transparent;
}

/* =========================================================
   HERO
   ========================================================= */
.hero{
  position:relative;overflow:hidden;
  background:var(--paper);
  padding:0;
  min-height:min(840px,100vh);
}
.hero-inner{
  width:100%;max-width:none;margin:0 auto;
  position:relative;z-index:2;
  display:grid;
  grid-template-columns:minmax(0,1.22fr) minmax(420px,1fr);
  gap:0;
  align-items:stretch;
  min-height:min(840px,100vh);
}
.hero-text{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  justify-content:center;
  min-width:0;
  padding:0 64px 0 96px;
}
.kicker{
  display:inline-block;
  background:transparent;color:var(--amethyst);
  font-weight:700;letter-spacing:.16em;font-size:.78rem;
  text-transform:uppercase;
  padding:0;border-radius:0;margin:0 0 22px;
}
.hero-logo-title{
  margin:0;
  width:min(560px,100%);
}
.hero-logo-title img{
  width:100%;
  height:auto;
  display:block;
}
.hero-lead{font-size:1.06rem;line-height:1.55;max-width:480px;margin:30px 0 0;font-weight:500;color:rgba(127,17,23,.86);}
.hero-text .btn{margin-top:30px;padding:16px 30px;font-size:1rem;border-radius:10px;box-shadow:4px 4px 0 var(--amethyst);}

.hero-photo{position:relative;width:100%;max-width:none;margin:0;}
.photo-ring{
  position:absolute;
  left:34px;top:64px;right:96px;bottom:54px;
  width:auto;
  aspect-ratio:auto;
  border-radius:18px;
  background:var(--grape);
  border:3px solid var(--violet);
  transform:rotate(-3deg);
}
.organic-frame{
  position:relative;overflow:hidden;
  border-radius:var(--radius-photo);
  border:4px solid var(--violet);
  background:var(--amethyst);
  aspect-ratio:4/4.4;width:100%;max-width:430px;
  box-shadow:8px 8px 0 var(--violet);
}
.hero-photo .organic-frame{
  position:absolute;
  left:64px;top:44px;right:64px;bottom:74px;
  border-radius:18px;
  aspect-ratio:auto;width:auto;max-width:none;
}
.organic-frame img{width:100%;height:100%;object-fit:cover;}
.frame-alt{border-radius:10px;border-color:var(--rose);}
.frame-blob{border-radius:10px;border-color:var(--saffron);}

.sticker{
  position:absolute;left:18px;bottom:120px;z-index:3;
  width:112px;height:112px;
  display:flex;align-items:center;justify-content:center;
  background:var(--saffron);color:var(--violet);
  font-family:var(--display);font-size:1.65rem;text-transform:uppercase;
  padding:0;border:3px solid var(--violet);border-radius:50%;
  transform:rotate(-10deg);box-shadow:4px 4px 0 var(--violet);
}

.blob{position:absolute;border-radius:50%;pointer-events:none;z-index:0;}
.blob-1{width:200px;height:200px;background:rgba(247,239,228,.30);top:-50px;left:-40px;}
.blob-2{width:130px;height:130px;background:rgba(181,31,36,.10);bottom:30px;right:8%;}
.squiggle-hero{width:180px;bottom:24px;left:5vw;opacity:.85;}
.dots-hero{top:60px;right:6vw;background:transparent;}

/* ---------- title entrance + hero stagger ---------- */
@keyframes titleIn{0%{opacity:0;transform:translateY(42px);}100%{opacity:1;transform:translateY(0);}}
@keyframes emIn{
  0%{opacity:0;transform:translateY(26px) rotate(4deg) scale(.96);}
  60%{opacity:1;transform:translateY(-5px) rotate(-2deg) scale(1.02);}
  100%{opacity:1;transform:translateY(0) rotate(-1deg) scale(1);}
}
@keyframes fadeUp{0%{opacity:0;transform:translateY(18px);}100%{opacity:1;transform:translateY(0);}}

.hero-logo-title{animation:titleIn .7s cubic-bezier(.2,.85,.25,1) both;}
.hero .kicker{animation:fadeUp .5s .05s ease both;}
.hero-lead{animation:fadeUp .6s .55s ease both;}
.hero-text .btn{animation:fadeUp .6s .72s ease both;}
.hero-photo{animation:fadeUp .7s .28s ease both;}

/* ---------- slow floating loop for blobs/shapes ---------- */
@keyframes floaty{0%,100%{transform:translateY(0);}50%{transform:translateY(-16px);}}
@keyframes floatySm{0%,100%{transform:translateY(0);}50%{transform:translateY(-10px);}}
@keyframes stickerFloat{0%,100%{transform:rotate(-10deg) translateY(0);}50%{transform:rotate(-10deg) translateY(-2px);}}
.blob-1{animation:floaty 7s ease-in-out infinite;}
.blob-2{animation:floatySm 9s ease-in-out .6s infinite;}
.blob-3{animation:floaty 11s ease-in-out infinite;}
.sticker{animation:none;}

/* =========================================================
   CHI SONO
   ========================================================= */
.chi-sono{
  position:relative;background:var(--paper);
  padding:104px 6vw;overflow:hidden;
}
.zigzag{width:240px;top:30px;right:6vw;}
.section-grid{
  max-width:1180px;margin:0 auto;
  display:grid;grid-template-columns:.95fr 1.05fr;gap:72px;align-items:center;
}
.chi-photo{position:relative;display:flex;justify-content:center;}
.chi-photo .organic-frame{
  max-width:420px;border-radius:18px;
  border-color:var(--violet);
  background:var(--amethyst);
  box-shadow:8px 8px 0 var(--violet);
}
.chi-photo::before{
  content:"";position:absolute;z-index:0;
  width:min(420px,100%);aspect-ratio:4/4.4;
  background:var(--grape);border:3px solid var(--violet);border-radius:18px;
  transform:translate(-18px,18px) rotate(-3deg);
}
.chi-photo .organic-frame{z-index:1;}
.dash-cluster{
  position:absolute;bottom:-10px;left:-6px;width:80px;height:40px;
  background:var(--grape);
  border-radius:4px;transform:rotate(-8deg);
}
.chi-text{
  background:var(--paper);
  border-left:5px solid var(--amethyst);
  padding-left:34px;
}
.chi-text p{margin:0 0 16px;max-width:58ch;}
.chi-text > .read-more{
  display:flex;
  width:max-content;
  margin:20px auto 0;
}
.chi-text > .chi-cta{
  display:block;
  width:max-content;
  margin:42px auto 0;
}
.squiggle-sm{position:static;display:block;width:140px;margin:0 0 14px;}
.tag-row{list-style:none;display:flex;flex-wrap:wrap;gap:10px;padding:0;margin:22px 0 0;}
.tag-row li{
  background:var(--violet);color:var(--saffron);
  padding:6px 14px;border-radius:6px;font-weight:600;font-size:.9rem;
}
.tag-row li:nth-child(2){background:var(--grape);color:#fff;}
.tag-row li:nth-child(3){background:var(--rose);color:#fff;}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *{transition:none !important;animation:none !important;}
}

/* shrink floating UI (hamburger + lingua) on scroll, mobile only */
.hamburger,.lang-toggle{transition:opacity .2s ease, transform .25s ease, box-shadow .15s;}
@media (max-width:980px){
  body.is-scrolled .hamburger{transform:scale(.8);}
  body.is-scrolled .lang-toggle{transform:scale(.82);transform-origin:top right;}
}

/* =========================================================
   SERVIZI
   ========================================================= */
.servizi{
  background:var(--amethyst);
  background-image:none;
  color:#fff;padding:96px 6vw 108px;
}
.servizi-head{max-width:1120px;margin:0 auto 50px;text-align:left;}
.servizi-head .eyebrow{display:block;}
.servizi-sub{max-width:46ch;margin:10px 0 0;font-size:1.15rem;color:var(--rose-tint);}

.cards{
  max-width:800px;margin:0 auto;
  display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:32px;
  align-items:stretch;
}
.card{
  position:relative;
  background:transparent;color:var(--violet);
  border:0;border-radius:0;overflow:visible;
  display:flex;flex-direction:column;
  padding:0;
  min-height:100%;
  box-shadow:none;
  transition:transform .2s, box-shadow .2s;
}
.card::before{
  content:none;
}
.card:hover{transform:translateY(-2px);}
.card-img{
  position:relative;z-index:1;
  aspect-ratio:1/1;overflow:hidden;
  display:grid;place-items:center;
  background:var(--paper);
  border:4px solid var(--violet);
  border-bottom:0;
  border-radius:8px 8px 0 0;
  box-shadow:5px 5px 0 rgba(127,17,23,.72);
}
.card-img::after{
  content:none;
}
.card-img img{
  width:100%;height:100%;object-fit:cover;
  filter:saturate(.78) contrast(.95);
}
.badge{
  display:none;
}
.card-body{
  position:relative;z-index:2;
  background:var(--paper);
  border:4px solid var(--violet);
  border-top:0;
  border-radius:0 0 8px 8px;
  padding:30px 20px 22px;
  display:flex;flex-direction:column;flex:1;
  box-shadow:5px 5px 0 rgba(127,17,23,.72);
}
.card-body h3{font-family:var(--display);text-transform:uppercase;font-size:1.45rem;line-height:1;margin:0 0 10px;color:var(--violet);}
.card-body p{margin:0;font-size:1rem;color:var(--violet);}
.card-ctas{display:flex;flex-wrap:wrap;gap:9px;margin-top:auto;padding-top:18px;}
.card-cta{
  display:inline-flex;align-items:center;gap:6px;
  font-family:var(--sans);font-weight:700;
  font-size:.92rem;letter-spacing:0;color:var(--violet);
  text-decoration:none;border:2px solid var(--rose);
  background:var(--paper);padding:8px 11px;border-radius:6px;
  transition:transform .15s,background .15s,border-color .15s;
}
.card-cta:hover,.card-cta:focus{transform:translateY(-1px);background:#fff;border-color:var(--violet);}
.card-cta--alt{border-color:var(--amethyst);background:var(--rose-tint);}
.card-cta--alt:hover,.card-cta--alt:focus{border-color:var(--violet);}

/* =========================================================
   BIOGRAFIA
   ========================================================= */
.biografia{
  position:relative;overflow:visible;
  background:var(--paper);color:var(--violet);padding:104px 6vw 116px;
}
.bio-head{max-width:1100px;margin:0 auto 44px;}
.biografia .eyebrow.light{color:var(--amethyst);}
.biografia .section-title.light{
  color:var(--paper);
  -webkit-text-stroke:2px var(--violet);
  text-shadow:2px 2px 0 rgba(127,17,23,.82);
}
.bio-grid{
  max-width:1100px;margin:0 auto;
  display:grid;grid-template-columns:.8fr 1.2fr;gap:64px;align-items:stretch;
}
.bio-photo{position:relative;display:flex;flex-direction:column;align-items:center;gap:18px;}
.bio-photo .organic-frame{
  max-width:330px;aspect-ratio:3/3.4;border-radius:18px;
  border-color:var(--violet);
  background:var(--amethyst);
  box-shadow:8px 8px 0 var(--violet);
}
.dots-bio{position:absolute;bottom:-12px;right:0;background:transparent;}

.timeline{
  --marker-size:24px;
  --line-w:3px;
  list-style:none;margin:0;padding:0;position:relative;align-self:start;
}
.timeline li{position:relative;padding:0 0 48px 54px;}
.timeline li::before{
  content:"";position:absolute;left:0;top:4px;z-index:2;
  width:18px;height:18px;
  background:var(--paper);border:3px solid var(--violet);border-radius:50%;
  transition:background .25s ease, transform .25s ease, box-shadow .25s ease;
}
.timeline li::after{
  content:"";position:absolute;z-index:0;
  left:calc((var(--marker-size) - var(--line-w)) / 2);
  top:calc(4px + var(--marker-size));
  bottom:calc(-1 * var(--marker-size) - 4px);
  width:var(--line-w);background:var(--rose-tint-2);
}
.timeline li:nth-child(2n)::before{background:var(--paper);}
.timeline li.is-active::before{
  background:var(--amethyst);
  transform:scale(1.1);
  box-shadow:0 0 0 6px rgba(181,31,36,.16);
}
.timeline li.is-active .year,
.timeline li.is-active h3{color:var(--amethyst);}
.timeline li:last-child{padding-bottom:0;}
.timeline li:last-child::after{display:none;}
.timeline li > *{position:relative;z-index:1;}
.year{
  font-family:var(--display);color:var(--violet);font-size:1.65rem;
  display:inline-block;margin-bottom:2px;
  transition:color .25s ease;
}
.timeline h3{margin:0 0 6px;font-size:1.15rem;font-weight:800;color:var(--violet);transition:color .25s ease;}
.timeline p{margin:0;color:var(--violet);font-size:1rem;max-width:62ch;}

@media (min-width:981px){
  .bio-photo{
    align-self:stretch;
  }
  .bio-photo .organic-frame{
    position:sticky;
    top:clamp(112px,14vh,168px);
    margin-inline:auto;
  }
}

/* chi sono CTA */
.chi-cta{margin-top:26px;}

/* expand / "Espandi" */
.read-more{
  display:inline-flex;align-items:center;gap:6px;margin:4px 0 0;
  background:none;border:none;cursor:pointer;
  font-family:var(--sans);font-weight:700;text-transform:none;letter-spacing:0;
  font-size:.98rem;color:var(--rose);
  border-bottom:2px solid var(--rose);padding:0 0 2px;
  transition:gap .15s,color .15s,border-color .15s,transform .18s ease;
}
.read-more:hover,.read-more:focus{gap:9px;color:var(--violet);border-color:var(--violet);}
.read-more[aria-expanded="true"]{transform:translateY(1px);}
.more-content[hidden]{display:none;}
.more-content{
  margin-top:16px;overflow:hidden;
  opacity:1;transform:translateY(0);
  transition:max-height .32s ease,opacity .22s ease,transform .32s ease;
}
.more-content.is-collapsed{
  max-height:0;opacity:0;transform:translateY(-6px);margin-top:0;
}
.more-content.is-expanding,.more-content.is-collapsing{will-change:max-height,opacity,transform;}
.more-content > p{margin:0 0 14px;}

/* =========================================================
   CORSI (sotto Il Percorso)
   ========================================================= */
.corsi{
  position:relative;overflow:hidden;
  background:var(--saffron-tint);
  padding:84px 6vw;
}
.corsi-grid{
  max-width:1080px;margin:0 auto;
  display:grid;grid-template-columns:.9fr 1.1fr;gap:50px;align-items:center;
}
.corsi-photo .organic-frame{max-width:360px;border-color:var(--rose);}
.corsi-text .section-title{margin-bottom:.15em;}
.corsi-lead{font-size:1.2rem;margin:0 0 12px;}
.corsi-text p{margin:0 0 10px;}
.corsi-ctas{display:flex;flex-wrap:wrap;gap:14px;margin-top:24px;}

/* =========================================================
   CALENDARIO CORSI (prossimi + passati, carosello)
   ========================================================= */
.corsi-calendario{
  background:var(--amethyst);
  color:#fff;padding:96px 6vw 108px;
}
.carousel{
  position:relative;
  max-width:1120px;margin:0 auto;
  display:flex;align-items:center;gap:16px;
}
.carousel-track{
  flex:1;display:flex;gap:24px;
  overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;
  padding:4px 4px 12px;
  scrollbar-width:none;
}
.carousel-track::-webkit-scrollbar{display:none;}

/* square poster-tiles — deliberately distinct from .card (used elsewhere) */
.corso-tile{
  position:relative;
  flex:0 0 calc((100% - 48px) / 3);
  scroll-snap-align:start;
  aspect-ratio:1/1;overflow:hidden;
  border-radius:10px;
  border:4px solid var(--paper);
  box-shadow:6px 6px 0 rgba(34,14,15,.55);
  background:var(--violet);
  transform:rotate(-1.4deg);
  transition:transform .2s;
  cursor:pointer;
}
.carousel-track .corso-tile:nth-child(even){transform:rotate(1.4deg);}
.corso-tile:hover{transform:rotate(0deg) translateY(-3px);}
.corso-tile:focus-visible{outline:3px solid var(--paper);outline-offset:3px;}
.corso-tile img{
  position:absolute;inset:0;z-index:0;
  width:100%;height:100%;object-fit:cover;
  filter:saturate(.85) contrast(1.02);
}
.corso-tile-scrim{
  position:absolute;inset:0;z-index:1;
  background:linear-gradient(180deg, rgba(127,17,23,0) 38%, rgba(30,10,11,.92) 100%);
}
.corso-tile-tag{
  position:absolute;top:12px;right:12px;z-index:2;
  font-family:var(--display);font-size:.82rem;letter-spacing:.02em;
  background:var(--saffron);color:var(--violet);
  padding:5px 11px;border-radius:20px;
  transform:rotate(4deg);
  box-shadow:2px 2px 0 var(--violet);
}
.corso-tile-ribbon{
  position:absolute;top:12px;left:-6px;z-index:2;
  font-family:var(--display);font-size:.72rem;letter-spacing:.04em;text-transform:uppercase;
  background:var(--violet);color:var(--saffron);
  padding:4px 12px;
  transform:rotate(-4deg);
  box-shadow:2px 2px 0 rgba(0,0,0,.35);
}
.corso-tile--past img{filter:saturate(.4) contrast(1) grayscale(.3);}
.corso-tile-body{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:18px 18px 20px;color:#fff;
}
.corso-tile-body h3{
  font-family:var(--display);text-transform:uppercase;
  font-size:1.3rem;line-height:1.05;margin:0 0 6px;
  text-shadow:2px 2px 0 rgba(0,0,0,.45);
}
.corso-tile-body p{
  margin:0;font-size:.92rem;line-height:1.35;color:var(--rose-tint);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;
}
.corso-tile-meta{
  display:flex;align-items:center;gap:5px;
  margin:8px 0 0;font-size:.82rem;color:var(--saffron);opacity:.9;
}
.corso-tile-meta svg{flex:0 0 auto;}
.carousel-arrow{
  flex:0 0 auto;
  display:grid;place-items:center;
  width:44px;height:44px;border-radius:50%;
  background:var(--paper);color:var(--violet);
  border:2px solid var(--paper);cursor:pointer;
  transition:transform .15s,opacity .15s;
}
.carousel-arrow:hover,.carousel-arrow:focus-visible{transform:translateY(-1px);}
.carousel-arrow:disabled{opacity:.35;cursor:default;transform:none;}
.carousel-arrow[hidden]{display:none;}

/* corso overlay (click on a tile) */
.corso-modal{
  position:fixed;inset:0;z-index:300;
  display:grid;place-items:center;padding:24px;
}
.corso-modal[hidden]{display:none;}
.corso-modal-backdrop{position:absolute;inset:0;background:rgba(20,6,7,.72);}
.corso-modal-panel{
  position:relative;z-index:1;
  width:100%;max-width:520px;max-height:88vh;overflow-y:auto;
  background:var(--paper);color:var(--violet);
  border:4px solid var(--violet);border-radius:12px;
  box-shadow:8px 8px 0 rgba(34,14,15,.55);
}
.corso-modal-panel img{
  width:100%;aspect-ratio:4/3;object-fit:cover;
  border-radius:8px 8px 0 0;
}
.corso-modal-panel img[hidden]{display:none;}
.corso-modal-body{padding:24px 26px 28px;}
.corso-modal-body h3{
  font-family:var(--display);text-transform:uppercase;
  font-size:1.6rem;line-height:1.05;margin:0 0 8px;color:var(--violet);
}
.corso-modal-meta{
  display:flex;align-items:center;gap:6px;flex-wrap:wrap;
  margin:0 0 14px;font-size:.94rem;font-weight:600;color:var(--rose);
}
.corso-modal-meta:empty{display:none;margin:0;}
.corso-modal-body p{margin:0;font-size:1.02rem;line-height:1.55;}
.corso-modal-close{
  position:absolute;top:12px;right:12px;z-index:2;
  width:38px;height:38px;border-radius:50%;
  display:grid;place-items:center;
  background:var(--paper);color:var(--violet);
  border:2px solid var(--violet);cursor:pointer;
  transition:transform .15s;
}
.corso-modal-close:hover,.corso-modal-close:focus-visible{transform:rotate(90deg);}
body.modal-open{overflow:hidden;}

/* =========================================================
   CONTATTI
   ========================================================= */
.contatti{position:relative;background:var(--saffron-tint);padding:88px 6vw 64px;overflow:hidden;}
.contatti-grid{
  max-width:1120px;margin:0 auto;
  display:grid;grid-template-columns:1fr 1.1fr;gap:54px;align-items:start;
}
.contatti-lead{font-size:1.2rem;max-width:34ch;}
.contact-list{list-style:none;padding:0;margin:24px 0;display:flex;flex-direction:column;gap:14px;}
.contact-list li{display:flex;align-items:center;gap:14px;font-size:1.1rem;}
.contact-list a{text-decoration:none;font-weight:600;}
.contact-list a:hover{text-decoration:underline;}
.ci{
  width:40px;height:40px;flex:0 0 40px;border-radius:6px;
  background:var(--ico);color:#fff;display:grid;place-items:center;
  font-size:1.2rem;border:3px solid var(--violet);
}
.ci[style*="--ico:var(--saffron)"]{color:var(--violet);}
.socials{display:flex;gap:12px;flex-wrap:wrap;margin-top:10px;}
.socials a{
  display:inline-flex;align-items:center;gap:8px;
  background:var(--violet);color:var(--saffron);text-decoration:none;
  padding:8px 16px;border-radius:6px;font-weight:600;font-size:.92rem;
  transition:transform .15s;
}
.socials a:hover{transform:translateY(-2px);}
.socials svg{flex:0 0 auto;}
.glyph-check{
  position:absolute;width:1px;height:1px;margin:-1px;padding:0;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}

/* form */
.contact-form{
  background:#fff;border:4px solid var(--violet);border-radius:var(--radius-panel);
  padding:28px;box-shadow:var(--shadow-hard);
  display:grid;grid-template-columns:1fr 1fr;gap:16px;
}
.field{display:flex;flex-direction:column;gap:6px;}
.field-full{grid-column:1/-1;}
.contact-form label{font-weight:600;font-size:.95rem;}
.contact-form input,.contact-form textarea{
  font-family:inherit;font-size:1rem;
  padding:12px 14px;border:2px solid var(--grape);border-radius:5px;
  background:var(--grape-tint);color:var(--violet);resize:vertical;
}
.contact-form input:focus,.contact-form textarea:focus{
  outline:none;border-color:var(--rose);background:#fff;
  box-shadow:0 0 0 3px rgba(127,17,23,.18);
}
.contact-form .btn{grid-column:1/-1;justify-self:start;}
.form-success{
  grid-column:1/-1;margin:0;font-weight:600;
  background:var(--saffron);color:var(--violet);
  border:3px solid var(--violet);border-radius:var(--radius-ui);padding:14px 18px;
}
.mail-fallback{
  grid-column:1/-1;
  display:grid;
  gap:10px;
  padding:16px;
  background:var(--paper);
  border:3px solid var(--grape);
  border-radius:var(--radius-ui);
}
.mail-fallback[hidden]{display:none;}
.mail-fallback-title{
  margin:0;
  font-weight:700;
  color:var(--violet);
}
.mail-fallback-help{margin:0;color:var(--violet);}
.mail-fallback a{font-weight:700;color:var(--rose);}
.mail-fallback label{margin-top:4px;}
.mail-fallback textarea{
  min-height:180px;
  font-size:.92rem;
  line-height:1.45;
  white-space:pre-wrap;
}
.mail-fallback .mail-copy{justify-self:start;}

.footer{
  max-width:1120px;margin:0 auto;padding:26px 6vw;
  border-top:3px dashed var(--violet);
  display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;
  font-weight:600;
}
.foot-squiggle{color:var(--rose);font-size:1.2rem;}
.footer-note{display:flex;flex-direction:column;align-items:flex-end;gap:4px;}
.site-credit{font-size:.78rem;font-weight:500;line-height:1.3;}
.site-credit a{color:var(--rose);font-weight:700;text-decoration:underline;text-underline-offset:3px;}

/* =========================================================
   NEWSLETTER
   ========================================================= */
.newsletter{
  position:relative;overflow:hidden;
  background:var(--violet);color:var(--saffron);
  padding:56px 6vw;text-align:center;
}
.newsletter-inner{max-width:640px;margin:0 auto;}
.newsletter-text .eyebrow{justify-content:center;}
.newsletter-text .section-title{margin-bottom:.15em;}
.newsletter-lead{
  margin:0 auto 22px;max-width:46ch;
  font-size:1.05rem;color:var(--rose-tint);
}
#mc_embed_shell{width:100%;}
.newsletter-form-row{
  display:flex;align-items:stretch;gap:12px;
  background:var(--saffron);border:4px solid var(--saffron);
  border-radius:var(--radius-panel);
  box-shadow:6px 6px 0 var(--rose);
  padding:8px;
}
.newsletter-form-row #mce-EMAIL{
  flex:1 1 auto;min-width:0;
  font-family:inherit;font-size:1rem;
  padding:12px 16px;border:2px solid var(--grape);border-radius:5px;
  background:#fff;color:var(--violet);
}
.newsletter-form-row #mce-EMAIL:focus{
  outline:none;border-color:var(--rose);
  box-shadow:0 0 0 3px rgba(181,31,36,.18);
}
.newsletter-form-row .btn{flex:0 0 auto;}
.newsletter-honeypot{position:absolute;left:-5000px;}
.newsletter-fineprint{margin:14px 0 0;font-size:.85rem;color:var(--rose-tint);}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width:1100px){
  .cards{grid-template-columns:repeat(2,1fr);}
}
@media (max-width:980px){
  /* menu becomes overlay on all sizes; starts closed on small screens via JS */
  html{scroll-padding-top:92px;}
  .hero{min-height:0;padding:86px 6vw 64px;}
  .hero-inner{grid-template-columns:1fr;gap:24px;text-align:center;min-height:0;}
  .hero-text{order:1;align-items:center;padding:0;}
  .hero-logo-title{width:min(420px,100%);}
  .hero-photo{order:2;width:min(320px,100%);height:360px;max-width:none;margin:0 auto;}
  .photo-ring{left:0;top:24px;right:22px;bottom:0;}
  .hero-photo .organic-frame{left:22px;top:0;right:0;bottom:24px;}
  .sticker{left:-18px;bottom:74px;width:88px;height:88px;font-size:1.3rem;}
  .hero-lead{margin-left:auto;margin-right:auto;font-size:1.04rem;line-height:1.45;max-width:34ch;}
  .kicker{margin-top:8px;margin-bottom:18px;}
  .section-grid,.bio-grid,.corsi-grid,.contatti-grid{grid-template-columns:1fr;gap:34px;}
  .section-grid.reverse .chi-photo{order:-1;}
  .bio-photo{position:static;}
  .bio-photo .organic-frame{position:relative;top:auto;}
  .servizi-head{margin-bottom:34px;}
  .chi-sono,.servizi,.corsi-calendario,.biografia,.corsi,.contatti{padding-top:96px;}
  .newsletter{padding:52px 6vw;}
  .chi-text{padding-left:24px;}
  .cards{grid-template-columns:1fr;max-width:390px;}
  .card-img{aspect-ratio:3/4;}
  .card-img img{object-position:center center;}
  .card-body{padding:26px 18px 20px;}
  .timeline li{padding-left:44px;}
  .corsi-text{order:1;}
  .corsi-photo{order:2;}
  .corsi-photo .organic-frame{margin:0 auto;}
  .corsi-ctas{justify-content:flex-start;}
  .corso-tile{flex-basis:calc((100% - 24px) / 2);}
}
@media (max-width:620px){
  body{font-size:17px;}
  .hamburger{top:18px;left:18px;width:48px;height:48px;border-radius:10px;}
  .hamburger span{width:22px;}
  .lang-toggle{top:16px;right:14px;}
  body.is-scrolled .hamburger{
    top:auto;bottom:16px;left:auto;right:16px;
    transform:scale(.82);
    transform-origin:bottom right;
  }
  body.is-scrolled .lang-toggle{
    transform:translateY(-76px) scale(.82);
    transform-origin:top right;
  }
  .hero{padding:82px 5vw 44px;}
  .hero-photo{width:min(270px,100%);height:298px;}
  .hero-logo-title{width:min(310px,100%);}
  .hero-lead{font-size:1rem;line-height:1.42;margin-top:24px;}
  .hero-text .btn{margin-top:24px;min-height:50px;padding:14px 24px;}
  .kicker{font-size:.72rem;line-height:1.45;}
  .sticker{left:-14px;bottom:64px;width:72px;height:72px;font-size:1.08rem;border-width:2px;box-shadow:3px 3px 0 var(--violet);}
  .chi-sono,.servizi,.corsi-calendario,.biografia,.corsi,.contatti{padding-top:88px;padding-bottom:76px;}
  .newsletter{padding:44px 5vw;}
  .newsletter-lead{font-size:.98rem;margin-bottom:20px;}
  .newsletter-form-row{flex-direction:column;}
  .newsletter-form-row .btn{width:100%;}
  .section-grid{gap:28px;}
  .chi-photo .organic-frame{max-width:330px;}
  .chi-photo::before{width:min(330px,100%);}
  .chi-text{padding-left:18px;}
  .servizi,.corsi-calendario{padding-left:5vw;padding-right:5vw;}
  .servizi-head{text-align:left;margin-bottom:28px;}
  .cards{gap:22px;}
  .carousel{gap:10px;}
  .carousel-arrow{width:38px;height:38px;}
  .carousel-track{gap:16px;}
  .corso-tile{flex-basis:100%;transform:none;}
  .carousel-track .corso-tile:nth-child(even){transform:none;}
  .corso-modal-panel{max-height:92vh;}
  .corso-modal-body{padding:20px 20px 24px;}
  .card-body h3{font-size:1.28rem;}
  .card-body p{font-size:.96rem;}
  .bio-grid{gap:28px;}
  .bio-photo{display:none;}
  .corsi-grid{gap:26px;}
  .corsi-photo .organic-frame{max-width:300px;}
  .corsi-text .section-title{max-width:8ch;}
  .corsi-lead{font-size:1.05rem;line-height:1.48;}
  .corsi-text p{font-size:1rem;line-height:1.5;}
  .corsi-ctas{display:grid;grid-template-columns:1fr;gap:12px;margin-top:22px;}
  .corsi-ctas .btn{width:100%;}
  .timeline li{padding:0 0 38px 42px;}
  .year{font-size:1.45rem;}
  .timeline p{font-size:.98rem;}
  .cards{grid-template-columns:1fr;}
  .contact-form{grid-template-columns:1fr;padding:20px;}
  .footer{flex-direction:column;text-align:center;}
  .footer-note{align-items:center;}
  .section-title{text-shadow:2px 2px 0 var(--violet);}
}
@media (max-width:480px){
  .hero{padding:82px 5vw 44px;}
  .section-title{font-size:clamp(2.2rem,11vw,3.2rem);}
}
