/* ===========================================================
   Centro Psicodiagnostico Italiano — site.css
   =========================================================== */
:root{
  --brand:        #15b4d6;   /* cyan del logo */
  --brand-2:      #34c8e0;   /* cyan chiaro */
  --brand-dark:   #0f87a6;   /* teal scuro */
  --navy:         #2c4a63;   /* blu navy "Dauno" */
  --green:        #6fc04a;   /* verde foglia */
  --ink:          #233b4f;   /* testi scuri = navy */
  --body:         #50657a;
  --muted:        #8aa0b0;
  --bg:           #ffffff;
  --bg-alt:       #eef9fc;   /* azzurrino tenue */
  --line:         #dbeef4;
  --shadow-sm:    0 4px 16px rgba(21,120,150,.07);
  --shadow:       0 16px 48px rgba(21,120,150,.12);
  --shadow-lg:    0 30px 70px rgba(21,120,150,.18);
  --radius:       18px;
  --radius-lg:    26px;
  --grad:         linear-gradient(120deg,#34c8e0 0%,#15b4d6 50%,#0f87a6 100%);
}

*{ scroll-behavior:smooth; }
html{ scroll-padding-top:84px; }
body{
  font-family:'Inter',system-ui,-apple-system,sans-serif;
  color:var(--body);
  background:var(--bg);
  line-height:1.65;
  overflow-x:hidden;
}
h1,h2,h3,h4,h5,h6,.navbar-brand{ font-family:'Plus Jakarta Sans',sans-serif; color:var(--ink); font-weight:800; letter-spacing:-.02em; }
h2{ font-size:clamp(1.7rem,3.4vw,2.6rem); line-height:1.15; }
a{ text-decoration:none; }
.text-brand{ color:var(--brand)!important; }
.text-gradient{ background:var(--grad); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }

/* ---------- Buttons ---------- */
.btn{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:700; border-radius:50px; padding:.65rem 1.4rem; transition:.25s ease; }
.btn-lg{ padding:.85rem 1.8rem; }
.btn-brand{ background:var(--grad); color:#fff; border:none; box-shadow:0 10px 26px rgba(21,180,214,.35); }
.btn-brand:hover{ color:#fff; transform:translateY(-2px); box-shadow:0 16px 34px rgba(21,180,214,.45); }
.btn-outline-brand{ border:2px solid var(--brand); color:var(--brand); background:transparent; }
.btn-outline-brand:hover{ background:var(--brand); color:#fff; transform:translateY(-2px); }
.btn-soft{ background:var(--bg-alt); color:var(--brand); border:1px solid var(--line); }
.btn-soft:hover{ background:#d6f3f9; color:var(--brand-dark); }
.btn-ghost{ background:transparent; color:var(--body); border:1px solid var(--line); }
.btn-ghost:hover{ background:var(--bg-alt); color:var(--ink); }
.btn-ghost:disabled{ opacity:.4; }
.btn-outline-light{ border:2px solid rgba(255,255,255,.6); color:#fff; }
.btn-outline-light:hover{ background:#fff; color:var(--brand); }

/* ---------- Navbar ---------- */
.site-nav{ background:rgba(255,255,255,.85); backdrop-filter:blur(14px); border-bottom:1px solid transparent; padding:.7rem 0; transition:.3s; }
.site-nav.scrolled{ box-shadow:var(--shadow-sm); border-bottom-color:var(--line); padding:.45rem 0; }
.brand-logo{ height:46px; width:auto; transition:.3s; }
.site-nav.scrolled .brand-logo{ height:40px; }
.brand-text{ font-size:1.05rem; font-weight:700; color:var(--ink); line-height:1.1; }
.brand-text strong{ color:var(--brand); }
.site-nav .nav-link{ font-weight:600; color:var(--ink); padding:.5rem .9rem; border-radius:10px; transition:.2s; }
.site-nav .nav-link:hover{ color:var(--brand); background:var(--bg-alt); }
.navbar-toggler{ border:none; padding:.35rem; }
.navbar-toggler:focus{ box-shadow:none; }

/* ---------- Hero (sfondo video) ---------- */
.hero{ position:relative; padding:11rem 0 7rem; overflow:hidden; min-height:88vh; display:flex; align-items:center; background:#1c3142; }
.hero-video{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; z-index:0; }
.hero-overlay{ position:absolute; inset:0; z-index:1;
  background:linear-gradient(100deg, rgba(20,45,62,.92) 0%, rgba(20,45,62,.72) 45%, rgba(15,135,166,.32) 100%); }
.hero .container{ position:relative; z-index:2; }
.badge-pill{ display:inline-flex; align-items:center; gap:.5rem; background:rgba(255,255,255,.12); border:1px solid rgba(255,255,255,.28); color:#fff; font-weight:600; font-size:.85rem; padding:.45rem 1rem; border-radius:50px; backdrop-filter:blur(6px); }
.hero-title{ font-size:clamp(2.3rem,5.2vw,3.8rem); line-height:1.08; margin:1.2rem 0; color:#fff; text-shadow:0 2px 24px rgba(0,0,0,.25); }
.hero-title .text-gradient{ background:linear-gradient(120deg,#5fe0f4,#34c8e0); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent; }
.hero-lead{ font-size:1.18rem; color:rgba(255,255,255,.88); max-width:560px; margin-bottom:2rem; }
.hero-cta{ display:flex; gap:1rem; flex-wrap:wrap; margin-bottom:2rem; }
.hero-trust{ display:flex; align-items:center; gap:.8rem; color:rgba(255,255,255,.8); font-size:.95rem; }
.hero-trust strong{ color:#fff; }
.stars{ color:#ffc83d; }
.btn-glass{ background:rgba(255,255,255,.14); color:#fff; border:2px solid rgba(255,255,255,.5); backdrop-filter:blur(6px); }
.btn-glass:hover{ background:#fff; color:var(--brand-dark); transform:translateY(-2px); }

/* ---------- Trust bar ---------- */
.trustbar{ background:var(--bg-alt); padding:2.4rem 0; border-top:1px solid var(--line); border-bottom:1px solid var(--line); }
.stat{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-size:2.2rem; color:var(--brand); }
.stat-suf{ color:var(--brand-2); }
.stat-label{ color:var(--muted); font-size:.9rem; font-weight:500; }

/* ---------- Sections ---------- */
.section{ padding:5.5rem 0; }
.section-alt{ background:var(--bg-alt); }
.section-head{ max-width:680px; margin:0 auto 3rem; }
.kicker{ display:inline-block; font-weight:700; letter-spacing:.08em; text-transform:uppercase; font-size:.8rem; color:var(--brand); margin-bottom:.7rem; }
.kicker-light{ color:#cdeef6; }
.section-sub{ font-size:1.08rem; color:var(--body); }

/* ---------- Step cards ---------- */
.step-card{ position:relative; background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:2rem 1.5rem; height:100%; box-shadow:var(--shadow-sm); transition:.3s; }
.step-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); border-color:#cdeef6; }
.step-num{ position:absolute; top:-16px; right:18px; width:34px; height:34px; border-radius:50%; background:var(--grad); color:#fff; font-weight:800; display:flex; align-items:center; justify-content:center; font-size:.95rem; box-shadow:0 6px 16px rgba(21,180,214,.4); }
.step-icon{ font-size:2.1rem; color:var(--brand); margin-bottom:1rem; display:block; }
.step-card h5{ margin-bottom:.5rem; }
.step-card p{ font-size:.95rem; margin:0; }

/* ---------- Service cards ---------- */
.service-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:2rem; height:100%; transition:.3s; }
.service-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
.service-ico{ width:58px; height:58px; border-radius:16px; display:flex; align-items:center; justify-content:center; font-size:1.6rem; margin-bottom:1.2rem; color:#fff; }
.ico-violet{ background:linear-gradient(135deg,#7b6cf6,#5b4bdb); }
.ico-blue{ background:linear-gradient(135deg,#4aa9ff,#2b7fff); }
.ico-green{ background:linear-gradient(135deg,#34d399,#10b981); }
.ico-amber{ background:linear-gradient(135deg,#fbbf24,#f59e0b); }
.ico-pink{ background:linear-gradient(135deg,#fb7185,#f43f5e); }
.ico-teal{ background:linear-gradient(135deg,#2dd4bf,#0d9488); }
.service-card h5{ margin-bottom:.6rem; }
.service-card p{ font-size:.95rem; }
.link-arrow{ color:var(--brand); font-weight:600; font-size:.92rem; display:inline-flex; align-items:center; gap:.4rem; transition:.2s; }
.link-arrow:hover{ gap:.7rem; color:var(--brand-dark); }

/* ---------- Check list ---------- */
.check-list{ list-style:none; padding:0; margin:1.4rem 0; }
.check-list li{ display:flex; align-items:center; gap:.7rem; padding:.4rem 0; font-weight:500; color:var(--ink); }
.check-list i{ color:var(--brand); font-size:1.15rem; }
.small-note{ font-size:.85rem; color:var(--muted); }
.small-note i{ color:var(--brand); }

/* ---------- Test widget ---------- */
.test-widget{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); box-shadow:var(--shadow); overflow:hidden; }
.test-head{ padding:1.4rem 1.6rem; border-bottom:1px solid var(--line); }
.test-counter{ font-size:.85rem; color:var(--muted); font-weight:600; }
.test-progress{ height:7px; border-radius:50px; background:var(--bg-alt); }
.test-progress .progress-bar{ background:var(--grad); transition:width .4s ease; }
.test-body{ padding:1.8rem 1.6rem; min-height:240px; }
.test-question{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:700; font-size:1.2rem; color:var(--ink); margin-bottom:1.4rem; }
.test-options{ display:flex; flex-direction:column; gap:.6rem; }
.test-opt{ display:flex; align-items:center; gap:.8rem; padding:.85rem 1.1rem; border:1.5px solid var(--line); border-radius:14px; cursor:pointer; transition:.2s; font-weight:500; color:var(--body); }
.test-opt:hover{ border-color:var(--brand-2); background:var(--bg-alt); }
.test-opt.selected{ border-color:var(--brand); background:#f3f0ff; color:var(--ink); }
.test-opt .dot{ width:20px; height:20px; border-radius:50%; border:2px solid var(--line); flex:0 0 auto; transition:.2s; }
.test-opt.selected .dot{ border-color:var(--brand); background:var(--brand); box-shadow:inset 0 0 0 3px #fff; }
.test-foot{ display:flex; justify-content:space-between; padding:1.2rem 1.6rem; border-top:1px solid var(--line); background:var(--bg-alt); }
.test-result{ padding:2.5rem 1.6rem; text-align:center; }
.result-ring{ width:120px; height:120px; border-radius:50%; margin:0 auto 1.2rem; display:flex; align-items:center; justify-content:center; font-family:'Plus Jakarta Sans',sans-serif; font-size:2.2rem; font-weight:800; color:var(--brand); background:conic-gradient(var(--brand) var(--p,0%),var(--bg-alt) 0); position:relative; }
.result-ring::before{ content:""; position:absolute; inset:10px; border-radius:50%; background:#fff; }
.result-ring span{ position:relative; z-index:1; }

/* ---------- Team ---------- */
.team-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius); padding:2rem 1.5rem; text-align:center; height:100%; transition:.3s; }
.team-card:hover{ transform:translateY(-6px); box-shadow:var(--shadow); }
.team-avatar{ width:78px; height:78px; border-radius:50%; margin:0 auto 1rem; background:linear-gradient(135deg,var(--c1),var(--c2)); color:#fff; font-family:'Plus Jakarta Sans',sans-serif; font-weight:800; font-size:1.5rem; display:flex; align-items:center; justify-content:center; }
.team-card h5{ margin-bottom:.2rem; font-size:1.1rem; }
.team-role{ color:var(--brand); font-weight:600; font-size:.85rem; display:block; margin-bottom:.8rem; }
.team-card p{ font-size:.9rem; margin:0; }

/* ---------- Booking / calendar ---------- */
.booking-card{ background:#fff; border:1px solid var(--line); border-radius:var(--radius-lg); padding:1.8rem; box-shadow:var(--shadow-sm); height:100%; }
.cal-header{ display:flex; align-items:center; justify-content:space-between; margin-bottom:1.2rem; }
.cal-title{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:700; font-size:1.15rem; color:var(--ink); text-transform:capitalize; }
.cal-nav{ width:38px; height:38px; border-radius:50%; border:1px solid var(--line); background:#fff; color:var(--brand); transition:.2s; }
.cal-nav:hover{ background:var(--brand); color:#fff; }
.cal-weekdays{ display:grid; grid-template-columns:repeat(7,1fr); gap:.3rem; margin-bottom:.5rem; }
.cal-weekdays span{ text-align:center; font-size:.75rem; font-weight:700; color:var(--muted); text-transform:uppercase; }
.cal-grid{ display:grid; grid-template-columns:repeat(7,1fr); gap:.3rem; }
.cal-day{ aspect-ratio:1; border-radius:12px; border:1px solid transparent; background:transparent; color:var(--ink); font-weight:600; font-size:.95rem; display:flex; align-items:center; justify-content:center; cursor:pointer; position:relative; transition:.15s; }
.cal-day.empty{ cursor:default; }
.cal-day.disabled{ color:#cfcde0; cursor:not-allowed; }
.cal-day.available:hover{ background:var(--bg-alt); border-color:var(--brand-2); }
.cal-day.available::after{ content:""; position:absolute; bottom:6px; width:5px; height:5px; border-radius:50%; background:var(--brand); }
.cal-day.selected{ background:var(--grad); color:#fff; }
.cal-day.selected::after{ background:#fff; }
.legend-dot{ display:inline-block; width:7px; height:7px; border-radius:50%; background:var(--brand); margin-right:.3rem; vertical-align:middle; }

.slots-card h5{ font-size:1.1rem; }
.slots-grid{ display:grid; grid-template-columns:repeat(3,1fr); gap:.55rem; min-height:120px; }
.slot{ padding:.6rem; border:1.5px solid var(--line); border-radius:12px; background:#fff; color:var(--ink); font-weight:600; font-size:.9rem; cursor:pointer; transition:.2s; }
.slot:hover{ border-color:var(--brand-2); background:var(--bg-alt); }
.slot.selected{ background:var(--grad); color:#fff; border-color:transparent; }
.slots-empty{ grid-column:1/-1; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.5rem; color:var(--muted); padding:1.5rem 0; }
.slots-empty i{ font-size:1.8rem; }
.booking-form .form-control{ border-radius:12px; border:1.5px solid var(--line); padding:.7rem 1rem; }
.booking-form .form-control:focus{ border-color:var(--brand); box-shadow:0 0 0 .2rem rgba(21,180,214,.12); }
.book-confirm{ margin-top:1rem; background:#eafaf1; color:#0d9488; border-radius:12px; padding:.9rem 1rem; font-weight:600; display:flex; align-items:center; gap:.6rem; }

/* ---------- Join (psychologists) ---------- */
.join-section{ padding:5.5rem 0; }
.join-wrap{ background:var(--grad); border-radius:var(--radius-lg); padding:3.2rem; box-shadow:var(--shadow-lg); position:relative; overflow:hidden; }
.join-wrap::before{ content:""; position:absolute; width:300px; height:300px; border-radius:50%; background:rgba(255,255,255,.08); top:-100px; right:-60px; }
.join-lead{ color:#e3f7fb; font-size:1.1rem; margin-bottom:1.4rem; }
.join-list{ list-style:none; padding:0; margin:0; }
.join-list li{ display:flex; align-items:center; gap:.7rem; color:#fff; padding:.4rem 0; font-weight:500; }
.join-list i{ color:#d6f7c8; font-size:1.2rem; }
.join-card{ background:#fff; border-radius:var(--radius); padding:2rem; box-shadow:var(--shadow); position:relative; z-index:1; }
.join-card .form-control,.join-card .form-select{ border-radius:12px; border:1.5px solid var(--line); padding:.7rem 1rem; }
.join-card .form-control:focus,.join-card .form-select:focus{ border-color:var(--brand); box-shadow:0 0 0 .2rem rgba(21,180,214,.12); }
.join-confirm{ margin-top:1rem; color:#0d9488; font-weight:700; }

/* ---------- FAQ ---------- */
.faq-accordion .accordion-item{ border:1px solid var(--line); border-radius:14px!important; margin-bottom:.8rem; overflow:hidden; }
.faq-accordion .accordion-button{ font-family:'Plus Jakarta Sans',sans-serif; font-weight:700; color:var(--ink); padding:1.1rem 1.3rem; }
.faq-accordion .accordion-button:not(.collapsed){ background:var(--bg-alt); color:var(--brand); box-shadow:none; }
.faq-accordion .accordion-button:focus{ box-shadow:none; }
.faq-accordion .accordion-button::after{ background-image:none; content:"\F64D"; font-family:"bootstrap-icons"; transition:.2s; }
.faq-accordion .accordion-body{ color:var(--body); }

/* ---------- Final CTA ---------- */
.final-cta{ padding:2rem 0 5rem; }
.final-cta-box{ background:linear-gradient(135deg,#2c4a63,#0f87a6); border-radius:var(--radius-lg); padding:3.5rem 2rem; text-align:center; color:#fff; box-shadow:var(--shadow-lg); }
.final-cta-box h2{ color:#fff; }
.final-cta-box p{ color:#cdeef6; font-size:1.15rem; max-width:520px; margin:.6rem auto 1.8rem; }

/* ---------- Footer ---------- */
.site-footer{ background:#1c3142; color:#a9a6c4; padding:4rem 0 2rem; }
.site-footer .brand-text{ font-size:1rem; }
.footer-text{ font-size:.92rem; max-width:300px; margin:1rem 0; }
.social{ display:flex; gap:.6rem; }
.social a{ width:38px; height:38px; border-radius:10px; background:rgba(255,255,255,.07); color:#fff; display:flex; align-items:center; justify-content:center; transition:.2s; }
.social a:hover{ background:var(--brand); transform:translateY(-3px); }
.site-footer h6{ color:#fff; font-weight:700; margin-bottom:1rem; font-size:.95rem; }
.site-footer ul{ list-style:none; padding:0; margin:0; }
.site-footer ul li{ margin-bottom:.55rem; }
.site-footer a{ color:#a9a6c4; transition:.2s; font-size:.92rem; }
.site-footer a:hover{ color:#fff; }
.contact-list li{ display:flex; align-items:center; gap:.6rem; }
.contact-list i{ color:var(--brand-2); }
.site-footer hr{ border-color:rgba(255,255,255,.1); margin:2.5rem 0 1.5rem; }
.footer-bottom{ display:flex; justify-content:space-between; flex-wrap:wrap; gap:.6rem; font-size:.85rem; }

/* ---------- FAB ---------- */
.fab{ position:fixed; bottom:24px; right:24px; width:58px; height:58px; border-radius:50%; background:var(--grad); color:#fff; display:flex; align-items:center; justify-content:center; font-size:1.4rem; box-shadow:0 12px 30px rgba(21,180,214,.45); z-index:1030; transition:.25s; }
.fab:hover{ color:#fff; transform:scale(1.08); }

/* ---------- Reveal animation ---------- */
.reveal{ opacity:0; transform:translateY(28px); transition:opacity .7s ease, transform .7s ease; }
.reveal.in{ opacity:1; transform:none; }

/* ---------- Responsive ---------- */
@media (max-width:991px){
  .site-nav{ padding:.5rem 0; }
  /* menu mobile ancorato in alto, a tutta larghezza sotto la navbar */
  .site-nav .navbar-collapse{
    position:fixed;
    top:62px; left:0; right:0;
    background:#fff;
    border-top:1px solid var(--line);
    border-radius:0 0 20px 20px;
    padding:1rem 1.2rem 1.4rem;
    box-shadow:var(--shadow);
    max-height:calc(100vh - 62px);
    overflow-y:auto;
  }
  .site-nav .navbar-nav{ gap:.15rem!important; }
  .site-nav .nav-link{ padding:.7rem .9rem; font-size:1.05rem; border-bottom:1px solid var(--line); border-radius:0; }
  .site-nav .nav-link:hover{ background:transparent; }
  .site-nav .navbar-nav .btn{ width:100%; margin:.4rem 0 0; padding:.7rem; }
  .site-nav .navbar-nav .btn-soft{ margin-top:.7rem; }
  .hero{ padding:8rem 0 4rem; min-height:auto; }
  .join-wrap{ padding:2.2rem 1.5rem; }
}
@media (max-width:575px){
  .slots-grid{ grid-template-columns:repeat(2,1fr); }
  .footer-bottom{ flex-direction:column; }
}
@media (prefers-reduced-motion:reduce){
  .reveal{ opacity:1; transform:none; transition:none; }
  *{ scroll-behavior:auto; }
}
