/* =========================================================
   TODO E20 — stylesheet di progetto
   Estratto dall'HTML statico e adattato per WordPress.

   Tutti i selettori sono scopati sotto .todo-page per non
   entrare in conflitto con Astra e con i widget Elementor.
   Applica la classe .todo-page al container Elementor piu'
   esterno (o al wrapper del contenuto) e la classe
   .todo-body al <body> della pagina.
   ========================================================= */

:root {
    --bg:#0A0710;
    --bg-panel:#100B1C;
    --bg-panel-2:#150E24;
    --violet:#5A34C4;
    --violet-soft:#8A66E8;
    --magenta:#E23F86;
    --magenta-soft:#FF77B0;
    --teal:#49D6C6;
    --text:#F4F1FB;
    --text-dim:#B4A9CE;
    --text-mute:#A79BC7;
    --line:rgba(244,241,251,0.10);
    --line-strong:rgba(244,241,251,0.18);
    --glass:rgba(255,255,255,0.035);
    --glass-hover:rgba(255,255,255,0.06);
    --magenta-deep:#B31E6B;
    --cream:#F1F1F8;
    --ink-dark:#1B1330;
    --ink-soft:#5B4F72;
    --ink-mute:#6E6289;
    --radius:14px;
    --leaf-url:url('../img/leaf-texture.jpg');
    --font-display:'Montserrat', sans-serif;
    --sans:'Montserrat', -apple-system, BlinkMacSystemFont, sans-serif;
    --mono:'Montserrat', sans-serif;
    --ease:cubic-bezier(.22,.68,0,1);
  }
.todo-page * {margin:0; padding:0; box-sizing:border-box;}
html {scroll-behavior:smooth;}
@media (prefers-reduced-motion: reduce) {
  html {scroll-behavior:auto;}
  .todo-page * {animation-duration:0.01ms !important; animation-iteration-count:1 !important; transition-duration:0.01ms !important; scroll-behavior:auto !important;}
}
body.todo-body {font-family:var(--sans);
    background:var(--bg);
    color:var(--text-dim);
    line-height:1.65;
    font-size:16px;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
    position:relative;}
.todo-page img {max-width:100%; display:block;}
.todo-page a {color:inherit;}
.todo-page ul {list-style:none;}
.todo-page button {font-family:inherit; cursor:pointer;}
.todo-page .skip-link {position:absolute; left:-999px; top:0;
    background:var(--magenta); color:#fff; padding:14px 22px;
    z-index:1000; font-family:var(--mono); font-size:14px; border-radius:0 0 8px 0;}
.todo-page .skip-link:focus {left:0; top:0;}
.todo-page :focus-visible {outline:2px solid var(--teal); outline-offset:3px;}
.todo-page .wrap {max-width:1200px; margin:0 auto; padding:0 32px; position:relative; z-index:2;}
.todo-page section {padding:88px 0; position:relative; overflow:hidden;}
.todo-page #protocollo {padding-bottom:24px;}
.todo-page #manifesto .section-head {margin-bottom:28px;}
.todo-page #chi-siamo {padding-bottom:40px;}
.todo-page #faq {padding-top:88px;}
.todo-page /* ---------- FAQ ---------- */
  .faq-list {border-top:1px solid var(--line); max-width:none;}
.todo-page .faq-item {border-bottom:1px solid var(--line);}
.todo-page .faq-question {width:100%; display:flex; align-items:center; justify-content:space-between; gap:20px;
    background:none; border:none; text-align:left; cursor:pointer;
    padding:24px 4px; font-family:var(--sans); font-weight:700; font-size:1.02rem; color:var(--text);}
.todo-page .faq-toggle {flex-shrink:0; width:30px; height:30px; border-radius:50%; border:1px solid var(--line-strong);
    display:flex; align-items:center; justify-content:center;
    font-family:var(--font-display); font-size:1.1rem; color:var(--teal);
    transition:transform .3s var(--ease), background .3s var(--ease), color .3s var(--ease);}
.todo-page .faq-item.open .faq-toggle {transform:rotate(135deg); background:var(--teal); color:var(--bg);}
.todo-page .faq-answer {max-height:0; overflow:hidden; transition:max-height .35s var(--ease), opacity .3s var(--ease);
    opacity:0;}
.todo-page .faq-answer p {padding:0 4px 24px; margin:0; max-width:68ch;}
.todo-page .faq-item.open .faq-answer {opacity:1;}
.todo-page .eyebrow {font-family:var(--mono); font-size:clamp(12px,1.6vw,14px); letter-spacing:.22em; text-transform:uppercase;
    color:#fff; display:flex; align-items:center; gap:10px; margin-bottom:20px;}
.todo-page .eyebrow::before {content:""; width:22px; height:1px; background:#fff;}
.todo-page h1, .todo-page h2, .todo-page h3, .todo-page h4 {font-family:var(--font-display); font-weight:700; line-height:1.06; letter-spacing:-0.01em; color:var(--magenta);}
.todo-page h2 {font-size:clamp(2rem, 4vw, 3.1rem); margin-bottom:22px;}
.todo-page h3 {font-size:1.3rem; margin-bottom:10px;}
.todo-page p {color:var(--text-dim); max-width:60ch;}
.todo-page strong {color:var(--text); font-weight:600;}
.todo-page .cursor {display:inline-block; width:.45ch; background:var(--magenta-soft); animation:blink 1.05s steps(1) infinite;}
@keyframes blink { 50%{opacity:0;} }
.todo-page .reveal-line {overflow:hidden; display:block;}
.todo-page .reveal-word {display:inline-block; transform:translateY(110%); opacity:0; transition:transform .7s var(--ease), opacity .7s var(--ease);}
.todo-page .reveal.is-in .reveal-word {transform:translateY(0); opacity:1;}
.todo-page .fade-up {opacity:0; transform:translateY(26px); transition:opacity .7s var(--ease), transform .7s var(--ease);}
.todo-page .fade-up.is-in {opacity:1; transform:translateY(0);}
.todo-page /* ---------- floating orbs (signature motif, .todo-page tech-innovation) ---------- */
  .orb {position:absolute; border-radius:50%; filter:blur(55px); pointer-events:none; z-index:0; opacity:.55;}
.todo-page .orb-violet {background:radial-gradient(circle, var(--violet) 0%, transparent 70%);}
.todo-page .orb-magenta {background:radial-gradient(circle, var(--magenta) 0%, transparent 70%);}
.todo-page .orb-teal {background:radial-gradient(circle, var(--teal) 0%, transparent 70%);}
.todo-page .orb-float {animation:floatOrb 12s ease-in-out infinite;}
@keyframes floatOrb { 0%,100%{ transform:translate(0,0);} 50%{ transform:translate(24px,-30px);} }
.todo-page /* ---------- feather / leaf image motif ---------- */
  .leaf-bg {position:absolute; inset:0; z-index:0;
    background-image:var(--leaf-url);
    background-size:cover; background-position:center;}
.todo-page .leaf-watermark {position:absolute; z-index:0; background-image:var(--leaf-url);
    background-size:cover; background-position:center;
    opacity:.14; filter:saturate(1.3);
    -webkit-mask-image:radial-gradient(circle, black 0%, transparent 72%);
    mask-image:radial-gradient(circle, black 0%, transparent 72%);}
.todo-page /* ---------- Header ---------- */
  header {position:fixed; top:0; left:0; right:0; z-index:100;}
.todo-page .nav {display:flex; align-items:center; justify-content:space-between;
    margin:18px 32px; padding:12px 12px 12px 22px;
    background:rgba(16,11,28,0.9); backdrop-filter:blur(16px);
    border:1px solid var(--line); border-radius:999px;
    max-width:1136px; margin-left:auto; margin-right:auto;}
.todo-page .logo {display:flex; align-items:center; gap:10px; font-family:var(--font-display); font-weight:900; letter-spacing:-.01em; font-size:1.02rem; color:var(--text); text-decoration:none;}
.todo-page .logo svg {width:28px; height:28px;}
.todo-page .logo img {width:28px; height:28px; object-fit:contain; display:block;}
.todo-page .nav-links {display:flex; gap:28px; font-size:12.5px; font-weight:600; letter-spacing:.06em; text-transform:uppercase;}
.todo-page .nav-links a {text-decoration:none; color:var(--text-dim); position:relative; padding:4px 0; transition:color .25s var(--ease);}
.todo-page .nav-links a::after {content:""; position:absolute; left:0; bottom:-2px; width:0; height:1px;
    background:var(--teal); transition:width .3s var(--ease);}
.todo-page .nav-links a:hover, .todo-page .nav-links a:focus-visible {color:var(--text);}
.todo-page .nav-links a:hover::after, .todo-page .nav-links a:focus-visible::after {width:100%;}
.todo-page .nav-links a.active {color:var(--text);}
.todo-page .nav-links a.active::after {width:100%; background:var(--magenta-soft);}
.todo-page .nav-cta {font-family:var(--mono); font-size:12.5px; letter-spacing:.03em;
    color:#fff; background:linear-gradient(120deg, var(--magenta-deep), var(--violet));
    padding:10px 20px; border-radius:999px; text-decoration:none; white-space:nowrap;
    transition:transform .25s var(--ease), filter .25s var(--ease), background .35s var(--ease), color .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease);
    box-shadow:0 4px 16px rgba(226,63,134,.35);
    border:1px solid transparent;}
.todo-page .nav-cta:hover {transform:translateY(-2px); filter:brightness(1.1);}
.todo-page .nav.at-hero .nav-cta {background:transparent; color:var(--text); border:1px solid var(--line-strong); box-shadow:none;}
.todo-page .nav.at-hero .nav-cta:hover {border-color:var(--magenta-soft);}
.todo-page .nav-toggle {display:none;}
@media (max-width:860px) {
  .todo-page .nav-links {display:none;}
  .todo-page .nav-toggle {display:block; background:none; border:1px solid var(--line-strong); color:var(--text); width:38px; height:38px; border-radius:10px;}
}
.todo-page /* ---------- Hero ---------- */
  .hero {min-height:100vh; display:flex; flex-direction:column; justify-content:center;
    padding-top:120px; padding-bottom:60px;}
.todo-page .hero-bg {position:absolute; inset:0; z-index:0; overflow:hidden;}
.todo-page .hero-bg .leaf-bg {opacity:.85; background-position:center 30%;
    animation:heroKenBurns 26s ease-in-out infinite alternate;}
@keyframes heroKenBurns {
    0%{ transform:scale(1); }
    100%{ transform:scale(1.09); }
  }
.todo-page .hero-bg::after {content:""; position:absolute; inset:0;
    background:
      linear-gradient(180deg, rgba(10,7,16,0.18) 0%, rgba(10,7,16,.4) 48%, rgba(10,7,16,.82) 78%, var(--bg) 100%),
      linear-gradient(90deg, rgba(10,7,16,.58) 0%, rgba(10,7,16,.08) 40%);}
.todo-page .hero-grain {position:absolute; inset:0; z-index:1; pointer-events:none;
    opacity:.05; mix-blend-mode:overlay;
    background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");}
.todo-page .hero-light-sweep {position:absolute; inset:-15%; z-index:1; pointer-events:none;
    mix-blend-mode:screen;
    opacity:.7;
    filter:blur(60px);
    background:conic-gradient(from 0deg,
      transparent 0deg,
      rgba(226,63,134,.9) 30deg,
      transparent 80deg,
      transparent 180deg,
      rgba(90,52,196,.85) 240deg,
      transparent 300deg,
      transparent 360deg);
    -webkit-mask-image:radial-gradient(ellipse 60% 60% at center, transparent 40%, black 65%, transparent 100%);
    mask-image:radial-gradient(ellipse 60% 60% at center, transparent 40%, black 65%, transparent 100%);
    animation:heroLightRotate 10s linear infinite;
    transform-origin:center center;}
@keyframes heroLightRotate {
    from{ transform:rotate(0deg); }
    to{ transform:rotate(360deg); }
  }
.todo-page .hero-inner {position:relative; z-index:2; max-width:760px;}
.todo-page .hero .wrap {margin-left:0; max-width:100%; padding-left:clamp(24px, 5vw, 64px);}
.todo-page .hero h1 {font-size:clamp(2.4rem, 6.2vw, 5.4rem); font-weight:700; margin-bottom:20px;
    color:#fff; text-shadow:0 2px 24px rgba(10,7,16,.5);}
.todo-page .hero h1 span.accent {background:linear-gradient(180deg,
      var(--magenta-deep) 0%,
      var(--magenta-soft) 18%,
      #ffd9ec 32%,
      var(--violet-soft) 48%,
      var(--magenta-deep) 68%,
      var(--magenta-soft) 84%,
      var(--magenta-deep) 100%);
    background-size:auto 260%;
    -webkit-background-clip:text; background-clip:text; color:transparent;
    animation:heroGradientShift 8s ease-in-out infinite;}
@keyframes heroGradientShift {
    0%{ background-position:50% 0%; }
    100%{ background-position:50% 260%; }
  }
.todo-page .hero h1 .serif-lead {font-family:'Playfair Display', serif; font-weight:700; font-style:italic;}
.todo-page .hero-title-block {display:inline-flex; flex-direction:column; align-items:center;}
@media (min-width:641px) {
  .todo-page .hero .hero-sub {margin-top:20px;}
  .todo-page .hero-ctas {margin-top:16px;}
}
.todo-page .hero .tagline {font-family:var(--mono); letter-spacing:.22em; text-transform:uppercase;
    font-size:clamp(12px,1.6vw,14px); color:#fff; opacity:.92; margin-bottom:22px;
    text-shadow:0 2px 16px rgba(10,7,16,.6);
    text-align:center;}
.todo-page .hero .hero-sub {max-width:none; width:min(90vw, 720px); font-size:1.32rem; line-height:1.5; color:var(--text-dim);
    margin-bottom:38px; text-shadow:0 2px 18px rgba(10,7,16,.55); white-space:normal;}
.todo-page .hero-ctas {display:flex; gap:16px; flex-wrap:wrap;}
.todo-page .btn {font-family:var(--mono); font-size:13.5px; letter-spacing:.02em; padding:16px 28px;
    border-radius:999px; text-decoration:none; display:inline-flex; align-items:center; gap:10px;
    transition:transform .25s var(--ease), filter .25s var(--ease), border-color .25s var(--ease), background .25s var(--ease);
    position:relative; overflow:hidden;}
.todo-page .btn::before {content:""; position:absolute; top:0; left:-60%; width:40%; height:100%;
    background:linear-gradient(120deg, transparent, rgba(255,255,255,.35), transparent);
    transform:skewX(-20deg); transition:left .55s var(--ease);}
.todo-page .btn:hover::before {left:130%;}
.todo-page .btn-primary {background:linear-gradient(120deg, var(--magenta-deep), var(--violet)); color:#fff;}
.todo-page .btn-primary:hover {transform:translateY(-2px); filter:brightness(1.1);}
.todo-page .btn-ghost {border:1px solid var(--line-strong); color:var(--text);}
.todo-page .btn-ghost:hover {border-color:var(--teal); transform:translateY(-2px);}
.todo-page .scroll-cue {position:absolute; bottom:38px; left:32px; z-index:2;
    font-family:var(--mono); font-size:11px; letter-spacing:.14em; color:var(--text-mute);
    display:flex; align-items:center; gap:10px; text-transform:uppercase;}
.todo-page .scroll-cue .line {width:32px; height:1px; background:var(--text-mute); animation:pulseW 2.4s ease-in-out infinite;}
@keyframes pulseW { 0%,100%{width:32px;} 50%{width:14px;} }
.todo-page /* ---------- Chat/avatar affordance (Luna AI) ---------- */
  .chat-orb {position:fixed; z-index:200; bottom:28px; right:28px;
    display:flex; flex-direction:row-reverse; align-items:center; gap:14px;
    text-decoration:none; color:var(--text);}
.todo-page .chat-orb-btn {position:relative; width:66px; height:66px; border-radius:50%; flex-shrink:0;
    display:flex; align-items:center; justify-content:center;
    background:linear-gradient(145deg, var(--violet-soft), var(--violet));
    border:1px solid rgba(255,255,255,.25);
    box-shadow:0 10px 30px rgba(0,0,0,.45), 0 0 0 1px rgba(255,255,255,.05) inset;
    transition:transform .3s var(--ease);}
.todo-page .chat-orb-btn svg {width:36px; height:36px; color:#fff; position:relative; z-index:1;}
.todo-page .chat-orb-ring {position:absolute; inset:-10px; border-radius:50%;
    border:1.5px solid var(--teal); opacity:.6;
    animation:orbPing 2.6s ease-out infinite;}
@keyframes orbPing {
    0%{ transform:scale(.82); opacity:.65; }
    70%{ transform:scale(1.28); opacity:0; }
    100%{ transform:scale(1.28); opacity:0; }
  }
.todo-page .chat-orb-label {font-family:var(--mono); font-weight:600; font-size:12px; letter-spacing:.03em;
    text-align:right; line-height:1.4; color:var(--text);
    background:var(--glass); border:1px solid var(--line-strong); backdrop-filter:blur(10px);
    padding:9px 14px; border-radius:12px; white-space:nowrap;}
.todo-page .chat-orb:hover .chat-orb-btn {transform:scale(1.08);}
.todo-page .back-to-top {position:fixed; bottom:28px; left:28px; z-index:200;
    width:48px; height:48px; border-radius:50%;
    background:rgba(16,11,28,.85); backdrop-filter:blur(10px);
    border:1px solid var(--line-strong);
    display:flex; align-items:center; justify-content:center;
    color:var(--text); cursor:pointer;
    opacity:0; visibility:hidden; transform:translateY(12px);
    transition:opacity .3s var(--ease), transform .3s var(--ease), visibility .3s, border-color .3s var(--ease);}
.todo-page .back-to-top.show {opacity:1; visibility:visible; transform:translateY(0);}
.todo-page .back-to-top:hover {border-color:var(--teal); color:var(--teal);}
.todo-page .back-to-top svg {width:20px; height:20px;}
@media (max-width:640px) {
  .todo-page .chat-orb {bottom:18px; right:18px;}
  .todo-page .chat-orb-label {display:none;}
  .todo-page .hero h1 {font-size:clamp(3.2rem, 16vw, 4.4rem); line-height:1.02; margin-bottom:0;}
  .todo-page .hero-inner {max-width:100%;}
  .todo-page .hero .tagline {font-size:clamp(13px, 4vw, 16px); letter-spacing:.2em; white-space:nowrap;
      margin-top:-4px; margin-bottom:20px;}
  .todo-page .hero-title-block {align-items:flex-start;}
  .todo-page .hero-title-block .tagline {text-align:left;}
}
.todo-page /* ---------- generic section head ---------- */
  .section-head {max-width:700px; margin-bottom:64px; position:relative; z-index:2;}
.todo-page #protocollo .section-head {max-width:none;}
.todo-page #protocollo .section-head p {max-width:none;}
.todo-page .protocol-head-grid {display:grid; grid-template-columns:.95fr 1.05fr; gap:50px; align-items:center;
    max-width:100%;}
.todo-page .protocol-brain {position:relative; overflow:visible;}
.todo-page .protocol-brain img {width:100%; height:auto; display:block;
    animation:brainSpin 16s linear infinite, brainPulse 4.5s ease-in-out infinite, brainGlow 6s ease-in-out infinite;
    transform-origin:center center;}
@keyframes brainSpin {
    0%{ transform:translateY(0) scale(1.56) rotate(-3deg); }
    50%{ transform:translateY(-16px) scale(1.62) rotate(3deg); }
    100%{ transform:translateY(0) scale(1.56) rotate(-3deg); }
  }
@keyframes brainPulse {
    0%,100%{ opacity:.92; }
    50%{ opacity:1; }
  }
@keyframes brainGlow {
    0%{ filter:drop-shadow(0 0 16px rgba(226,63,134,.35)); }
    33%{ filter:drop-shadow(0 0 26px rgba(90,52,196,.45)); }
    66%{ filter:drop-shadow(0 0 28px rgba(73,214,198,.4)); }
    100%{ filter:drop-shadow(0 0 16px rgba(226,63,134,.35)); }
  }
@media (max-width:860px) {
  .todo-page .protocol-head-grid {grid-template-columns:1fr;}
  .todo-page .protocol-brain {order:-1; max-width:320px; margin:0 auto;}
}
.todo-page .section-alt {background:var(--bg-panel);}
.todo-page .finanza-bg {position:relative;
    background-image:
      linear-gradient(180deg, rgba(16,11,28,.55) 0%, rgba(16,11,28,.88) 60%, var(--bg-panel) 100%),
      url('../img/finanza-bg.jpg');
    background-size:cover;
    background-position:center;}
.todo-page /* ---------- Light module (white/cream section, .todo-page for visual variety) ---------- */
  .section-light {background:var(--cream); color:var(--ink-soft);}
.todo-page .section-light .eyebrow {color:var(--magenta-deep);}
.todo-page .section-light .eyebrow::before {background:var(--magenta-deep);}
.todo-page .section-light h1, .todo-page .section-light h2, .todo-page .section-light h3, .todo-page .section-light h4 {color:var(--magenta-deep);}
.todo-page .section-light p {color:var(--ink-soft);}
.todo-page .section-light .service-card, .todo-page .section-light .review-card {background:#fff; border-color:rgba(27,19,48,.10);}
.todo-page .section-light .service-card:hover, .todo-page .section-light .review-card:hover {background:#fff; border-color:rgba(27,19,48,.22);}
.todo-page .section-light .service-card h4, .todo-page .section-light .review-who b {color:var(--ink-dark);}
.todo-page .section-light .service-card p {color:var(--ink-soft);}
.todo-page .section-light .card-icon {color:#fff;
    background:linear-gradient(135deg, var(--magenta), var(--violet));
    box-shadow:0 6px 16px rgba(90,52,196,.25);}
.todo-page .section-light .stars {color:var(--magenta-deep);}
.todo-page .section-light .review-who span, .todo-page .section-light .review-note {color:var(--ink-mute);}
.todo-page .section-light .review-note {border-color:rgba(27,19,48,.14);}
.todo-page .section-light .btn-ghost {border-color:rgba(27,19,48,.22); color:var(--ink-dark);}
.todo-page .section-light .btn-ghost:hover {border-color:var(--magenta-deep);}
.todo-page /* ---------- Manifesto / risk grid ---------- */
  .manifesto-grid {display:block; position:relative; z-index:2;}
.todo-page .manifesto-grid p {margin-bottom:16px; max-width:none;}
.todo-page .manifesto-text {max-width:none; margin-bottom:48px;}
.todo-page .risk-grid {display:grid; grid-template-columns:repeat(3,1fr); gap:1px;}
.todo-page .risk-card {background:var(--glass); border:1px solid var(--line); padding:24px 22px;
    transition:background .3s var(--ease), transform .3s var(--ease), border-color .3s var(--ease);}
.todo-page .risk-card:hover {background:var(--glass-hover); border-color:var(--line-strong); transform:translateY(-3px);}
.todo-page .card-icon {display:flex; align-items:center; justify-content:center; width:42px; height:42px;
    border-radius:50%; margin-bottom:16px; color:#fff;
    background:linear-gradient(135deg, var(--magenta), var(--violet));
    box-shadow:0 6px 16px rgba(90,52,196,.35);
    animation:cardIconPulse 4.5s ease-in-out infinite;}
@keyframes cardIconPulse {
    0%,100%{ box-shadow:0 6px 16px rgba(90,52,196,.35); }
    50%{ box-shadow:0 6px 22px rgba(226,63,134,.55); }
  }
.todo-page .card-icon svg {width:20px; height:20px;}
.todo-page .service-card .card-icon {color:#fff; background:linear-gradient(135deg, var(--magenta), var(--violet));}
.todo-page .risk-card h4 {font-family:var(--sans); font-weight:700; font-size:.92rem; margin-bottom:8px; color:var(--text);}
.todo-page .risk-card p {font-size:.86rem; margin:0;}
@media (max-width:860px) {
  .todo-page .risk-grid {grid-template-columns:1fr 1fr;}
}
@media (max-width:560px) {
  .todo-page .risk-grid {grid-template-columns:1fr;}
}
.todo-page /* ---------- Mente / AI ---------- */
  .mente-grid {display:grid; grid-template-columns:1.05fr .95fr; gap:70px; align-items:stretch; position:relative; z-index:2;}
.todo-page .mente-grid p {margin-bottom:16px;}
.todo-page .helix-wrap {position:relative; height:100%; min-height:520px; display:flex; align-items:center; justify-content:center;
    overflow:hidden; border-radius:var(--radius);}
.todo-page .dna-photo {width:100%; height:100%; object-fit:cover; object-position:center;
    filter:drop-shadow(0 0 40px rgba(138,66,214,.35));
    -webkit-mask-image:
      linear-gradient(to right, transparent 0%, black 14%, black 86%, transparent 100%),
      linear-gradient(to bottom, transparent 0%, black 14%, black 86%, transparent 100%);
    -webkit-mask-composite: source-in;
    mask-image:
      linear-gradient(to right, transparent 0%, black 14%, black 86%, transparent 100%),
      linear-gradient(to bottom, transparent 0%, black 14%, black 86%, transparent 100%);
    mask-composite: intersect;}
@media (max-width:900px) {
  .todo-page .mente-grid {grid-template-columns:1fr;}
  .todo-page .helix-wrap {height:340px; min-height:0;}
}
.todo-page /* ---------- Protocollo (ex "metodo") ---------- */
  .protocol-callout {display:inline-flex; align-items:center; gap:10px; padding:10px 18px;
    border:1px solid var(--line-strong); border-radius:999px; font-family:var(--mono);
    font-size:12px; color:var(--teal); margin-bottom:24px; background:var(--glass);}
.todo-page .protocol-list {position:relative; z-index:2;}
@media (min-width:761px) {
  .todo-page .protocol-list {padding-left:34px;}
  .todo-page .protocol-list::before {content:""; position:absolute; top:24px; bottom:24px; left:5px; width:2px;
      background:linear-gradient(var(--teal), var(--magenta-soft)); opacity:.4;}
  .todo-page .protocol-row::before {content:""; position:absolute; left:-34px; top:34px; width:12px; height:12px;
      border-radius:50%; background:var(--bg); border:2px solid var(--teal);}
}
.todo-page .protocol-row {display:grid; grid-template-columns:90px 1fr 2fr; gap:32px; padding:32px;
    border:1px solid var(--line); border-radius:var(--radius); align-items:start;
    background:var(--glass); margin-bottom:14px; position:relative;
    transition:border-color .3s var(--ease), background .3s var(--ease), transform .3s var(--ease);}
.todo-page .protocol-row:hover {border-color:var(--line-strong); background:var(--glass-hover); transform:translateX(4px);}
.todo-page .protocol-num {font-family:var(--mono); font-size:.95rem; color:var(--magenta-soft); padding-top:4px;}
.todo-page .protocol-title span {font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--text-mute); display:block; margin-bottom:6px;}
.todo-page .protocol-title h3 {font-size:1.15rem; margin:0;}
.todo-page .protocol-body p {margin:0; max-width:60ch; font-size:.94rem;}
@media (max-width:760px) {
  .todo-page .protocol-row {grid-template-columns:1fr; gap:10px;}
}
.todo-page /* ---------- Approach quote ---------- */
  .visual-divider {padding:0; line-height:0; overflow:hidden;}
.todo-page .visual-divider img {width:100%; height:clamp(192px, 26vw, 408px); object-fit:cover; object-position:center;
    display:block; filter:saturate(1.05);}
.todo-page .visual-divider img.divider-brain-focus {object-position:68% 40%;}
.todo-page .visual-divider.divider-large img {height:clamp(250px, 34vw, 530px);}
.todo-page .visual-divider.has-quote {position:relative;}
.todo-page .visual-divider.has-quote img {filter:saturate(1.05) brightness(.75);}
.todo-page .divider-quote-overlay {position:absolute; inset:0; display:flex; align-items:center; justify-content:center;
    padding:0 24px;
    background:linear-gradient(90deg, rgba(10,7,16,.35) 0%, rgba(10,7,16,.15) 50%, rgba(10,7,16,.35) 100%);}
.todo-page .divider-quote {font-family:var(--font-display); font-weight:700; text-align:center; color:#fff;
    font-size:clamp(1.15rem, 2.6vw, 2rem); line-height:1.35; max-width:820px;
    text-shadow:0 2px 20px rgba(0,0,0,.6); margin:0;}
.todo-page .visual-divider.has-overlay {position:relative;}
.todo-page .divider-overlay {position:absolute; inset:0;
    background:
      linear-gradient(180deg, var(--bg) 0%, transparent 14%, transparent 86%, var(--bg) 100%),
      linear-gradient(90deg, rgba(10,7,16,.68) 0%, rgba(10,7,16,.45) 45%, rgba(10,7,16,.72) 100%);}
.todo-page .approach {position:relative;}
.todo-page .approach-inner {max-width:800px; position:relative; z-index:2;}
.todo-page .approach blockquote {font-family:var(--font-display); font-size:clamp(1.5rem,3vw,2.2rem); line-height:1.28; margin-bottom:26px; color:var(--text); font-weight:600;}
.todo-page .approach cite {font-family:var(--mono); font-size:12.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--teal); font-style:normal;}
.todo-page /* ---------- Servizi plus ---------- */
  .services-grid {display:grid; grid-template-columns:repeat(3,1fr); gap:16px; position:relative; z-index:2;}
.todo-page .service-card {background:var(--glass); border:1px solid var(--line); border-radius:var(--radius);
    padding:30px 26px; transition:background .3s var(--ease), transform .3s var(--ease), border-color .3s var(--ease);}
.todo-page .service-card:hover {background:var(--glass-hover); transform:translateY(-4px); border-color:var(--line-strong);}
.todo-page .service-card h4 {font-family:var(--sans); font-weight:700; font-size:.98rem; margin-bottom:10px; color:var(--text);}
.todo-page .service-card p {font-size:.88rem; margin:0;}
@media (max-width:900px) {
  .todo-page .services-grid {grid-template-columns:1fr 1fr;}
}
@media (max-width:560px) {
  .todo-page .services-grid {grid-template-columns:1fr;}
}
.todo-page /* ---------- Finanza agevolata: real diagram from the brochure ---------- */
  .finanza-head-grid {display:grid; grid-template-columns:1.1fr .9fr; gap:50px; align-items:center;
    max-width:100%;}
.todo-page .finanza-brain-img {position:relative;}
.todo-page .finanza-brain-img img {width:100%; height:auto; display:block;
    filter:drop-shadow(0 0 30px rgba(73,214,198,.18)) brightness(.82) saturate(.9);
    opacity:.85;
    -webkit-mask-image:radial-gradient(ellipse 80% 80% at center, black 55%, transparent 100%);
    mask-image:radial-gradient(ellipse 80% 80% at center, black 55%, transparent 100%);}
@media (max-width:860px) {
  .todo-page .finanza-head-grid {grid-template-columns:1fr;}
  .todo-page .finanza-brain-img {order:-1; max-width:340px; margin:0 auto;}
}
.todo-page .finance-diagram-img {max-width:820px; margin:0 auto 56px;}
.todo-page .finance-diagram-img img {width:100%; display:block;}
.todo-page /* ---------- Finanza agevolata: flanking layout ---------- */
  .finance-flank-grid {display:grid; grid-template-columns:1fr auto 1fr; gap:28px; align-items:center;
    position:relative; z-index:2;}
.todo-page .finance-flank-col {display:flex; flex-direction:column; gap:18px;}
.todo-page .finance-flank-img {width:min(560px, 42vw);}
.todo-page .finance-flank-img img {width:100%; display:block;}
@media (max-width:900px) {
  .todo-page .finance-flank-grid {grid-template-columns:1fr;}
  .todo-page .finance-flank-img {width:min(480px, 85vw); margin:0 auto; order:-1;}
}
.todo-page /* ---------- Finanza agevolata cycle ---------- */
  .cycle-card {border:1px solid var(--line); border-radius:var(--radius); padding:28px 22px; background:var(--glass);
    transition:border-color .3s var(--ease), transform .3s var(--ease);}
.todo-page .cycle-card:hover {border-color:var(--line-strong); transform:translateY(-4px);}
.todo-page .cycle-card .num {font-family:var(--font-display); color:var(--magenta-soft); font-size:1.6rem; margin-bottom:14px; display:block; font-weight:700;}
.todo-page .cycle-card h4 {font-family:var(--sans); font-weight:700; font-size:.88rem; text-transform:uppercase; letter-spacing:.04em; margin-bottom:10px; color:var(--text);}
.todo-page .cycle-card p {font-size:.86rem; margin:0;}
.todo-page /* ---------- Stats ---------- */
  .stats-grid {display:grid; grid-template-columns:repeat(4,1fr); gap:20px; text-align:center; position:relative; z-index:2;}
.todo-page .stat b {display:block; font-family:var(--font-display); font-size:clamp(2.2rem,4.4vw,3.4rem); font-weight:700;
    background:linear-gradient(120deg, var(--text), var(--violet-soft)); -webkit-background-clip:text; background-clip:text; color:transparent; line-height:1;}
.todo-page .stat span {font-family:var(--mono); font-size:11.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--text-mute);}
@media (max-width:760px) {
  .todo-page .stats-grid {grid-template-columns:1fr 1fr; row-gap:36px;}
}
.todo-page /* ---------- Reviews ---------- */
  .reviews-grid {display:grid; grid-template-columns:repeat(3,1fr); gap:20px; position:relative; z-index:2;}
.todo-page .review-card {background:var(--glass); border:1px solid var(--line); border-radius:var(--radius);
    padding:28px 26px; display:flex; flex-direction:column; gap:16px;}
.todo-page .stars {color:var(--teal); font-size:.9rem; letter-spacing:2px;}
.todo-page .review-card p {font-size:.96rem; color:var(--text-dim); margin:0;}
.todo-page .review-who {display:flex; flex-direction:column; font-size:.82rem;}
.todo-page .review-who b {font-family:var(--sans); font-weight:700; color:var(--text);}
.todo-page .review-who span {color:var(--text-mute); font-family:var(--mono); font-size:.74rem; letter-spacing:.03em;}
.todo-page .review-note {margin-top:32px; font-size:.8rem; font-family:var(--mono); color:var(--text-mute); border-top:1px dashed var(--line); padding-top:18px; position:relative; z-index:2;}
@media (max-width:900px) {
  .todo-page .reviews-grid {grid-template-columns:1fr;}
}
.todo-page /* ---------- Blog ---------- */
  .blog-grid {display:grid; grid-template-columns:repeat(3,1fr); gap:20px; position:relative; z-index:2;}
.todo-page .blog-card {background:var(--glass); border:1px solid var(--line); border-radius:var(--radius);
    display:flex; flex-direction:column; text-decoration:none; color:var(--text-dim); overflow:hidden;
    transition:transform .3s var(--ease), border-color .3s var(--ease);}
.todo-page .blog-card:hover {transform:translateY(-4px); border-color:var(--line-strong);}
.todo-page .blog-thumb {height:140px; position:relative; overflow:hidden; background:linear-gradient(135deg, var(--violet), var(--magenta));}
.todo-page .blog-thumb span {position:absolute; bottom:12px; left:16px; font-family:var(--mono); font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:#fff;}
.todo-page .blog-body {padding:22px 22px 26px;}
.todo-page .blog-body .meta {font-family:var(--mono); font-size:11px; color:var(--text-mute); letter-spacing:.05em; margin-bottom:10px; text-transform:uppercase;}
.todo-page .blog-body h3 {font-size:1.08rem; margin-bottom:10px;}
.todo-page .blog-body p {font-size:.86rem; margin:0;}
.todo-page .blog-cta {text-align:center; margin-top:48px; position:relative; z-index:2;}
@media (max-width:900px) {
  .todo-page .blog-grid {grid-template-columns:1fr;}
}
.todo-page /* ---------- About / founders ---------- */
  .about-grid {display:grid; grid-template-columns:.85fr 1.15fr; gap:60px; align-items:center; position:relative; z-index:2;}
.todo-page .founder-mark {aspect-ratio:4/5; border:1px solid var(--line); border-radius:var(--radius);
    background:var(--glass); display:flex; align-items:center; justify-content:center; position:relative; overflow:hidden;}
.todo-page .founder-mark img {width:100%; height:100%; object-fit:cover; object-position:top center; position:relative; z-index:0;}
.todo-page .founder-mark::before {content:""; position:absolute; inset:0; z-index:1; background:radial-gradient(circle at 30% 20%, rgba(226,63,134,.18), transparent 55%); pointer-events:none;}
.todo-page .about-grid h4 {font-family:var(--mono); font-size:.78rem; letter-spacing:.08em; text-transform:uppercase; color:var(--magenta-soft); margin-top:22px; margin-bottom:10px;}
@media (max-width:860px) {
  .todo-page .about-grid {grid-template-columns:1fr;}
}
.todo-page /* ---------- Contact ---------- */
  .contact {text-align:center;}
.todo-page .contact-inner {position:relative; z-index:2; max-width:660px; margin:0 auto;}
.todo-page .contact h2 {margin-bottom:24px;}
.todo-page .contact-ctas {display:flex; gap:16px; justify-content:center; flex-wrap:wrap; margin-top:8px;}
.todo-page /* ---------- Footer ---------- */
  footer {background:var(--bg-panel-2); border-top:1px solid var(--line); padding:52px 0 28px;}
.todo-page .footer-top {display:flex; justify-content:space-between; align-items:flex-start; flex-wrap:wrap; gap:32px; padding-bottom:36px; border-bottom:1px solid var(--line);}
.todo-page .footer-logo {font-family:var(--font-display); font-weight:700; font-size:1.3rem; color:var(--text); margin-bottom:8px;}
.todo-page .footer-col h5 {font-family:var(--mono); font-size:11px; letter-spacing:.1em; text-transform:uppercase; color:var(--text); margin-bottom:14px;}
.todo-page .footer-col ul {display:flex; flex-direction:column; gap:9px; font-size:.86rem;}
.todo-page .footer-col a {text-decoration:none; color:var(--text-dim); transition:color .2s var(--ease);}
.todo-page .footer-col a:hover {color:var(--text);}
.todo-page .social-row {display:flex; gap:12px; margin-top:14px;}
.todo-page .social-row a {width:38px; height:38px; border:1px solid var(--line-strong); border-radius:50%;
    display:flex; align-items:center; justify-content:center; color:var(--text);
    transition:background .25s var(--ease), border-color .25s var(--ease);}
.todo-page .social-row a:hover {background:var(--magenta); border-color:var(--magenta);}
.todo-page .social-row svg {width:16px; height:16px;}
.todo-page .footer-bottom {display:flex; justify-content:space-between; flex-wrap:wrap; gap:12px; padding-top:24px; font-size:.76rem; color:var(--text-mute); font-family:var(--mono);}
.todo-page .footer-bottom a {color:var(--text-mute); text-decoration:underline;}
.todo-page ::selection {background:var(--magenta); color:#fff;}
.todo-page .skip-link, .todo-page .eyebrow, .todo-page .nav-cta, .todo-page .hero .tagline, .todo-page .btn, .todo-page .scroll-cue, .todo-page .protocol-callout, .todo-page .protocol-num, .todo-page .protocol-title span, .todo-page .approach cite, .todo-page .stat span, .todo-page .review-who span, .todo-page .review-note, .todo-page .blog-thumb span, .todo-page .blog-body .meta, .todo-page .about-grid h4, .todo-page .footer-col h5, .todo-page .footer-bottom {font-weight:600;}

/* =========================================================
   COMPAT ELEMENTOR / ASTRA
   Aggiunte non presenti nell'HTML originale.
   I container Elementor sono <div class="e-con">, non <section>:
   applica la classe .todo-section al container per ottenere
   lo stesso padding verticale delle sezioni originali.
   ========================================================= */

.todo-page .todo-section{ padding:88px 0; position:relative; overflow:hidden; }
.todo-page .todo-section > .e-con-inner{ max-width:1200px; margin:0 auto; padding:0 32px; }

/* Elementor imposta un max-width sui container "boxed": lo neutralizziamo
   dove usiamo il .wrap originale */
.todo-page .e-con.todo-full > .e-con-inner{ max-width:none; padding:0; }

/* Astra aggiunge margini ai titoli: li azzeriamo dentro la pagina */
.todo-page .entry-content > *:first-child{ margin-top:0; }
.todo-page .elementor-widget-container > h1,
.todo-page .elementor-widget-container > h2,
.todo-page .elementor-widget-container > h3,
.todo-page .elementor-widget-container > h4{ margin-top:0; }

/* Il contatore Elementor riusa lo stile .stat */
.todo-page .elementor-counter-number-wrapper{
  font-family:var(--font-display); font-weight:800;
  font-size:clamp(2.2rem,5vw,3.4rem); color:var(--magenta-soft);
}

/* Ancora mancante nell'HTML originale: la sezione contatti
   non aveva id="contatti" pur essendo linkata dal menu */
.todo-page #contatti{ scroll-margin-top:90px; }
.todo-page [id]{ scroll-margin-top:90px; }

/* ---------------------------------------------------------
   Blog loop via shortcode [todoe20_blog]
   L'HTML originale aveva thumb solo a gradiente: qui la
   featured image, quando c'e', copre il gradiente.
   --------------------------------------------------------- */
.todo-page .blog-thumb img{
  position:absolute; inset:0;
  width:100%; height:100%;
  object-fit:cover;
  z-index:0;
  transition:transform .5s var(--ease);
}
.todo-page .blog-card:hover .blog-thumb img{ transform:scale(1.05); }

/* velo scuro per tenere leggibile l'etichetta categoria sopra la foto */
.todo-page .blog-thumb::after{
  content:""; position:absolute; inset:0; z-index:1;
  background:linear-gradient(180deg, transparent 45%, rgba(10,7,16,.72) 100%);
  pointer-events:none;
}
.todo-page .blog-thumb span{ z-index:2; }

.todo-page .blog-empty{
  padding:24px; border:1px dashed var(--line-strong); border-radius:var(--radius);
  color:var(--text-mute); font-family:var(--mono); font-size:.85rem; text-align:center;
}


/* ---------------------------------------------------------
   Icone social nel footer via CSS background (SVG data-URI)
   Evita la rimozione di <svg> inline da parte del sanitizzatore
   contenuti di WordPress quando si salva da Elementor/editor.
   --------------------------------------------------------- */
.todo-page .social-row a.icon-instagram { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f4f1fb' stroke-width='1.6'%3E%3Crect x='3' y='3' width='18' height='18' rx='5'/%3E%3Ccircle cx='12' cy='12' r='4'/%3E%3Ccircle cx='17.2' cy='6.8' r='1'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: center; background-size: 16px 16px; }
.todo-page .social-row a.icon-linkedin { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f4f1fb' stroke-width='1.6'%3E%3Crect x='3' y='3' width='18' height='18' rx='3'/%3E%3Cline x1='7.5' y1='10' x2='7.5' y2='17'/%3E%3Ccircle cx='7.5' cy='6.8' r='1'/%3E%3Cpath d='M11.5 17v-4.5c0-1.4 1-2.2 2.2-2.2 1.2 0 2 .8 2 2.2V17'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: center; background-size: 16px 16px; }
.todo-page .social-row a.icon-facebook { background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23f4f1fb' stroke-width='1.6'%3E%3Ccircle cx='12' cy='12' r='9'/%3E%3Cpath d='M14 8.5h-1.5c-1 0-1.5.6-1.5 1.6V12h3l-.4 3h-2.6v6'/%3E%3C/svg%3E"); background-repeat: no-repeat; background-position: center; background-size: 16px 16px; }




/* ---------------------------------------------------------
   Sfondo su <html> per evitare il "lampo nero" durante il
   rimbalzo elastico dello scroll (overscroll) sopra la pagina.
   --------------------------------------------------------- */
html:has(body.todo-body) { background: #0A0710; }


/* ---------------------------------------------------------
   faq-toggle-fix: il glifo "+" testuale non si centra bene
   nel cerchio con font serif. Lo nascondiamo e disegniamo
   l'icona con pseudo-elementi CSS, sempre perfettamente
   centrati. La rotazione esistente su .open lo trasforma
   comunque in una "X" come prima.
   --------------------------------------------------------- */
.todo-page .faq-toggle { font-size:0; position:relative; }
.todo-page .faq-toggle::before,
.todo-page .faq-toggle::after {
  content:''; position:absolute; top:50%; left:50%;
  background:currentColor; transition:background .3s var(--ease);
}
.todo-page .faq-toggle::before { width:12px; height:1.5px; transform:translate(-50%, -50%); }
.todo-page .faq-toggle::after { width:1.5px; height:12px; transform:translate(-50%, -50%); }

/* ---------------------------------------------------------
   Nascondi il pulsante "torna su" nativo di Astra (posizionato
   a destra, coperto dal chat orb) sulla landing TODO E20: usiamo
   il nostro back-to-top personalizzato, gia' posizionato a
   sinistra (vedi .back-to-top piu' sopra in questo file).
   --------------------------------------------------------- */
body.todo-body #ast-scroll-top { display:none !important; }


/* ---------------------------------------------------------
   protocol-timeline-active: la sezione Protocollo diventa una
   timeline interattiva. Lo step al centro dello schermo si
   illumina (pallino pieno + bordo teal) mentre gli altri si
   affievoliscono leggermente, dando un effetto "spotlight"
   durante lo scroll. Vedi todoe20.js per il toggle di .is-active.
   --------------------------------------------------------- */
.todo-page .protocol-row { transition:border-color .35s var(--ease), background .35s var(--ease), transform .35s var(--ease), opacity .35s var(--ease); }
.todo-page .protocol-row:hover { opacity:1; }
@media (min-width:761px) {
  .todo-page .protocol-row { opacity:.6; }
  .todo-page .protocol-row.is-active { opacity:1; border-color:var(--teal); background:var(--glass-hover); }
  .todo-page .protocol-row::before { transition:background .3s var(--ease), box-shadow .3s var(--ease), transform .3s var(--ease); }
  .todo-page .protocol-row.is-active::before { background:var(--teal); box-shadow:0 0 0 5px rgba(73,214,198,.22); transform:scale(1.25); }
}


/* ---------------------------------------------------------
   protocol-fill-line: la linea della timeline Protocollo si
   "compone" progressivamente durante lo scroll, sincronizzata
   con lo step attualmente in evidenza (vedi todoe20.js).
   La ::before diventa il "binario" spento, la ::after è il
   segmento colorato che cresce dall'alto.
   --------------------------------------------------------- */
@media (min-width:761px) {
  .todo-page .protocol-list::before { background:var(--line-strong); opacity:.35; }
  .todo-page .protocol-list::after {
    content:""; position:absolute; top:24px; left:5px; width:2px; height:var(--protocol-fill, 0px);
    background:linear-gradient(var(--teal), var(--magenta-soft));
    transition:height .2s var(--ease);
  }
}

/* ---------------------------------------------------------
   protocol-dot-hover-fix: sullo hover la card si sposta di
   4px (effetto esistente) trascinando con se' il pallino, che
   cosi' si disallinea dalla linea ferma. Compensiamo lo
   spostamento solo sul pallino, cosi' resta ancorato alla linea.
   --------------------------------------------------------- */
.todo-page .protocol-row:hover::before { transform:translateX(-4px); }
.todo-page .protocol-row.is-active:hover::before { transform:translateX(-4px) scale(1.25); }


/* ---------------------------------------------------------
   Disattiva il rimbalzo elastico (overscroll) sopra/sotto la
   pagina: elimina alla radice qualunque "spazio" o lampo che
   potrebbe comparire durante il bounce dello scroll, invece
   di limitarsi a mascherarne il colore di sfondo.
   --------------------------------------------------------- */
html:has(body.todo-body), body.todo-body { overscroll-behavior-y: none; }


/* ---------------------------------------------------------
   protocol-line-stacking-fix: la ::after (segmento colorato)
   e' l'ultimo elemento dipinto nella .protocol-list, quindi
   finiva sopra ai pallini delle righe. Portiamo la linea
   dietro e le righe (con i pallini) sopra.
   --------------------------------------------------------- */
@media (min-width:761px) {
  .todo-page .protocol-list::before,
  .todo-page .protocol-list::after { z-index:0; }
  .todo-page .protocol-row { z-index:1; }
}


/* ---------------------------------------------------------
   blockquote-italic-fix: Astra applica font-style:italic di
   default a tutti i <blockquote>. La citazione in Mindset deve
   restare in stile normale (solo il font, niente obliquo).
   --------------------------------------------------------- */
.todo-page .approach blockquote { font-style:normal; }


/* ---------------------------------------------------------
   iubenda-header-fix: il documento Privacy/Cookie Policy
   generato da Iubenda include un proprio <header class="main-header">
   con position:fixed, che collide con il nostro header fisso.
   Lo riportiamo al flusso normale della pagina.
   --------------------------------------------------------- */
.todo-page #iub-pp-container header,
  .todo-page #iub-cs-container header { position:static !important; top:auto !important; box-shadow:none !important; }
  .todo-page #iub-pp-container button.close-dialog,
  .todo-page #iub-cs-container button.close-dialog { position:static !important; }


/* ---------------------------------------------------------
   Blog: articolo singolo, archivio e paginazione.
   L'articolo vero e proprio vive dentro .entry-content: qui
   ripristiniamo una tipografia da lettura (i titoli/liste/link
   del resto del sito sono tarati per le sezioni marketing,
   troppo grandi/senza pallini/senza colore per un corpo testo).
   --------------------------------------------------------- */
.todo-page .article-single { max-width:760px; padding-top:70px; padding-bottom:110px; }
.todo-page .article-single .eyebrow a { color:var(--teal); text-decoration:none; }
.todo-page .article-single .eyebrow a:hover { text-decoration:underline; }
.todo-page .article-single h1 { font-size:clamp(2rem,5vw,3.2rem); margin-bottom:16px; }
.todo-page .article-single > p.meta { font-family:var(--mono); font-size:.85rem; color:var(--text-mute); margin-bottom:36px; }
.todo-page .article-cover { border-radius:var(--radius-lg,20px); overflow:hidden; margin-bottom:40px; }
.todo-page .article-cover img { width:100%; height:auto; }

.todo-page .entry-content { color:var(--text-dim); font-size:1.05rem; line-height:1.75; max-width:68ch; }
.todo-page .entry-content > * + * { margin-top:22px; }
.todo-page .entry-content h2 { font-size:1.7rem; line-height:1.25; margin-top:48px; color:var(--magenta); }
.todo-page .entry-content h3 { font-size:1.3rem; line-height:1.3; margin-top:36px; color:var(--text); }
.todo-page .entry-content ul,
.todo-page .entry-content ol { list-style:revert; padding-left:1.4em; }
.todo-page .entry-content li + li { margin-top:8px; }
.todo-page .entry-content a { color:var(--teal); text-decoration:underline; text-underline-offset:3px; }
.todo-page .entry-content a:hover { color:var(--magenta-soft); }
.todo-page .entry-content strong { color:var(--text); }
.todo-page .entry-content blockquote { border-left:3px solid var(--teal); padding-left:22px; color:var(--text); font-size:1.15rem; }
.todo-page .entry-content img { border-radius:14px; margin:8px 0; }
.todo-page .entry-content code { font-family:var(--mono); font-size:.9em; background:var(--bg-panel); padding:.15em .4em; border-radius:6px; }
.todo-page .entry-content pre { background:var(--bg-panel); padding:20px; border-radius:14px; overflow-x:auto; }
.todo-page .entry-content hr { border:none; border-top:1px solid var(--line); margin:40px 0; }

/* Archivio blog: griglia + paginazione */
.todo-page .blog-archive-todoe20 .blog-grid { margin-top:48px; }
.todo-page .blog-pagination { display:flex; justify-content:center; align-items:center; gap:10px; margin-top:56px; font-family:var(--mono); }
.todo-page .blog-pagination .page-numbers { display:inline-flex; align-items:center; justify-content:center; min-width:38px; height:38px; padding:0 10px; border-radius:999px; border:1px solid var(--line-strong); color:var(--text-dim); text-decoration:none; font-size:.9rem; transition:border-color .25s var(--ease), color .25s var(--ease), background .25s var(--ease); }
.todo-page .blog-pagination .page-numbers:hover { border-color:var(--teal); color:var(--text); }
.todo-page .blog-pagination .page-numbers.current { background:var(--teal); border-color:var(--teal); color:var(--bg); }
.todo-page .blog-pagination .page-numbers.dots { border:none; }


/* ---------------------------------------------------------
   blog-shortcode-wrap-fix: in Home la sezione Blog e' divisa
   fra tre widget Elementor (head HTML + widget Shortcode +
   chiusura HTML). Il widget Shortcode vive quindi FUORI dal
   .wrap che conteneva la griglia, e la griglia si allarga a
   tutta pagina. Qui gli ridiamo lo stesso contenimento di .wrap.
   --------------------------------------------------------- */
.todo-page .elementor-widget-shortcode .blog-grid,
.todo-page .elementor-widget-shortcode .blog-cta,
.todo-page .elementor-widget-shortcode .blog-empty {
  max-width:1200px; margin-left:auto; margin-right:auto; padding-left:32px; padding-right:32px;
}
@media (max-width:760px) {
  .todo-page .elementor-widget-shortcode .blog-grid,
  .todo-page .elementor-widget-shortcode .blog-cta,
  .todo-page .elementor-widget-shortcode .blog-empty { padding-left:20px; padding-right:20px; }
}


/* ---------------------------------------------------------
   blog-archive-bottom-space: sull'archivio /blog/ il <main>
   non aveva spazio inferiore e le card finivano attaccate
   (anzi, leggermente sotto) al footer.
   --------------------------------------------------------- */
.todo-page.blog-archive-todoe20 main.todo-page,
body.blog-archive-todoe20 main.todo-page { padding-bottom:120px; }


/* ---------------------------------------------------------
   footer-ai-notice: informativa AI Act (Reg. UE 2024/1689).
   Deve restare sempre visibile (niente accordion) ma senza
   competere col resto del footer: testo piccolo e attenuato,
   sopra la barra del copyright.
   --------------------------------------------------------- */
.todo-page .footer-ai-notice {
  font-size:.72rem; line-height:1.65; color:var(--text-mute); max-width:none;
  margin-top:26px; padding-top:0; border-top:none;
}
@media (max-width:760px) { .todo-page .footer-ai-notice { font-size:.7rem; } }

/* Footer su mobile: le colonne flex si stringevano troppo e
   testi lunghi (es. "Scarica la brochure") venivano troncati.
   Sotto i 760px passiamo a due colonne piene, poi a una sola. */
@media (max-width:760px) {
  .todo-page .footer-top { gap:28px 24px; }
  .todo-page .footer-top > * { flex:1 1 calc(50% - 12px); min-width:0; }
}
@media (max-width:480px) {
  .todo-page .footer-top > * { flex:1 1 100%; }
}


/* ---------------------------------------------------------
   scroll-cue-interactive: lo "Scorri" nella hero era un <div>
   decorativo; ora e' un <a> verso la sezione successiva.
   Su mobile lo nascondiamo: cade fuori dalla viewport e non
   serve, visto che li' si scorre naturalmente col dito.
   --------------------------------------------------------- */
.todo-page a.scroll-cue { text-decoration:none; cursor:pointer; transition:color .25s var(--ease), opacity .25s var(--ease); }
.todo-page a.scroll-cue:hover { color:var(--teal); }
.todo-page a.scroll-cue:hover .line { background:var(--teal); }
.todo-page a.scroll-cue:focus-visible { outline:2px solid var(--teal); outline-offset:6px; border-radius:4px; }
@media (max-width:760px) { .todo-page .scroll-cue { display:none; } }


/* ---------------------------------------------------------
   nav-mobile-breathing-room: su schermi stretti la pillola
   dell'header arrivava a filo dei bordi. Il margine laterale
   ora cresce in modo graduale con la larghezza dello schermo
   (min 10px), invece di passare di colpo da 0 a 32px.
   L'icona del menu diventa tonda, coerente con la pillola
   e con i pulsanti social del footer.
   --------------------------------------------------------- */
@media (max-width:860px) {
  .todo-page .nav { margin-left:clamp(10px, 3vw, 32px); margin-right:clamp(10px, 3vw, 32px); }
  .todo-page .nav-toggle { border-radius:50%; display:flex; align-items:center; justify-content:center; line-height:1; }
}
