:root{
    --blue:#35556d;
    --blue-dark:#223a49;
    --blue-mid:#486a80;
    --blue-tint:#eff3f5;
    --blue-line:#dde5e9;
    --white:#ffffff;
    --ink:#20323c;
    --ink-soft:#566b78;
    --maxw:1180px;
  }

  *{margin:0;padding:0;box-sizing:border-box;}

  html{scroll-behavior:smooth;scroll-padding-top:90px;}

  body{
    cursor: url(img/cursorecasablu.svg), auto;
    font-family:'Poppins',sans-serif;
    color:var(--ink);
    background:var(--white);
    font-weight:400;
    line-height:1.65;
    -webkit-font-smoothing:antialiased;
  }

  img,svg{display:block;max-width:100%;}

  a{color:inherit;text-decoration:none;}

  .wrap{
    max-width:var(--maxw);
    margin:0 auto;
    padding:0 40px;
  }

  h1,h2,h3{
    font-weight:500;
    color:var(--blue-dark);
    letter-spacing:-0.01em;
  }

  h2{
    font-size:clamp(28px,3.2vw,38px);
    margin-bottom:18px;
  }

  p{color:var(--ink-soft);}

  .btn{
    display:inline-flex;
    align-items:center;
    gap:8px;
    padding:14px 30px;
    border-radius:2px;
    font-size:15px;
    font-weight:500;
    letter-spacing:0.01em;
    transition:background .25s ease, color .25s ease, border-color .25s ease;
    cursor:pointer;
    border:1px solid transparent;
  }

  .btn-primary{
    background:var(--blue);
    color:var(--white);
  }
  .btn-primary:hover{background:var(--blue-dark);}

  .btn-ghost{
    border-color:var(--blue);
    color:var(--blue);
  }
  .btn-ghost:hover{background:var(--blue);color:var(--white);}

  /* NAV */
  header{
    position:fixed;
    top:0;left:0;right:0;
    z-index:100;
    padding:20px 0;
    background:var(--white);
    box-shadow:0 1px 0 var(--blue-line);
    transition:padding .3s ease, box-shadow .3s ease;
  }
  header .wrap{
    display:flex;
    align-items:center;
    justify-content:space-between;
  }
  header.scrolled{
    padding:12px 0;
    box-shadow:0 2px 12px rgba(34,58,73,0.08);
  }
  .logo{
    display:block;
    line-height:0;
  }
  .logo img{
    height:46px;
    width:auto;
    transition:height .3s ease;
  }
  header.scrolled .logo img{height:40px;}

  nav ul{
    display:flex;
    gap:40px;
    list-style:none;
  }
  nav a{
    font-size:15px;
    color:var(--blue-dark);
    position:relative;
    padding-bottom:4px;
  }
  nav a::after{
    content:"";
    position:absolute;
    left:0;bottom:0;
    width:0;height:1px;
    background:var(--blue);
    transition:width .25s ease;
  }
  nav a:hover::after{width:100%;}

  .nav-toggle{
    display:none;
    flex-direction:column;
    justify-content:center;
    align-items:center;
    width:44px;height:44px;
    margin-right:-10px;
    gap:5px;
    cursor:pointer;
    background:none;
    border:none;
  }
  .nav-toggle span{
    width:24px;height:1.5px;
    background:var(--blue-dark);
  }

  /* HERO */
  .hero{
    --hero-overlay-start:rgba(25,44,57,.90);
    --hero-overlay-mid:rgba(25,44,57,.68);
    --hero-overlay-end:rgba(25,44,57,.20);
    min-height:762px;
    display:flex;
    align-items:center;
    padding:150px 0 110px;
    background:var(--blue);
    overflow:hidden;
    cursor:url(img/cursorecasabianco.svg), auto;
  }
  .hero h1{color:var(--white);}
  .hero p{color:#eef4f7;}
  .hero .btn-primary{
    background:var(--white);
    color:var(--blue-dark);
  }
  .hero .btn-primary:hover{
    background:var(--blue-tint);
  }
  .hero .btn-ghost{
    border-color:var(--white);
    color:var(--white);
  }
  .hero .btn-ghost:hover{
    background:var(--white);
    color:var(--blue);
  }
  .hero-bg{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    max-width:none;
    object-fit:cover;
    object-position:center 40%;
    z-index:0;
  }
  .hero::before{
    content:"";
    position:absolute;
    inset:0;
    z-index:1;
    background:linear-gradient(90deg,var(--hero-overlay-start) 0%,var(--hero-overlay-mid) 52%,var(--hero-overlay-end) 100%);
  }
  .hero .wrap{
    width:100%;
    position:relative;
    z-index:2;
  }
  .hero .hero-label{
    font-size:15px;
    font-weight:500;
    color:#eef4f7;
    margin-bottom:10px;
    max-width:none;
  }
  .hero-text{opacity:0;transform:translateY(16px);animation:rise .9s ease forwards .15s;}
  @keyframes rise{to{opacity:1;transform:translateY(0);}}

  .hero h1{
    font-size:clamp(34px,4.6vw,54px);
    line-height:1.15;
    font-weight:500;
    margin-bottom:24px;
    max-width:820px;
  }
  .hero p{
    font-size:17px;
    max-width:660px;
    margin-bottom:36px;
  }
  .hero-actions{display:flex;gap:16px;flex-wrap:wrap;}

  /* CHI SIAMO */
  .about{padding:120px 0;}
  .about .wrap{
    display:grid;
    grid-template-columns:0.85fr 1.15fr;
    gap:70px;
    align-items:stretch;
  }
  .about-intro{display:flex;min-height:0;}
  .about-label{
    font-size:15px;
    color:var(--blue-mid);
    font-weight:500;
    margin-bottom:6px;
  }
  .about-photo{
    flex:1;
    overflow:hidden;
    border-radius:2px;
  }
  .about-photo img{
    position:absolute;
    inset:0;
    width:100%;
    height:100%;
    object-fit:cover;
    object-position:center bottom;
    display:block;
    transition:transform .6s ease;
  }
  .about-photo:hover img{transform:scale(1.03);}
  .about-copy p{
    font-size:16px;
    max-width:560px;
    margin-bottom:18px;
  }
  .about-copy p:last-child{margin-bottom:0;}
  .about-quote{
    border-left:2px solid var(--blue);
    padding-left:22px;
    margin-top:32px;
    font-size:17px;
    color:var(--blue-dark);
    font-weight:500;
    max-width:480px;
  }

  /* SERVIZI */
  .services{padding:120px 0;background:var(--blue-tint);}
  .services-head{max-width:560px;margin-bottom:64px;}
  .services-list{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    column-gap:64px;
  }
  .service{
    border-bottom:1px solid var(--blue-line);
  }
  .service:nth-last-child(-n+2){border-bottom:none;}

  .service-header{
    display:flex;
    align-items:center;
    gap:18px;
    width:100%;
    padding:22px 0;
    background:none;
    border:none;
    text-align:left;
    font-family:inherit;
    color:inherit;
    cursor:pointer;
  }
  .service-icon{
    width:24px;height:24px;
    flex-shrink:0;
    color:var(--blue);
  }
  .service-heading{font-size:inherit;font-weight:inherit;margin:0;}
  .service-title{
    flex:1;
    font-size:16px;
    font-weight:500;
    color:var(--blue-dark);
  }
  .accordion-chevron{
    width:16px;height:16px;
    flex-shrink:0;
    color:var(--blue-mid);
    transition:transform .3s ease;
  }
  .service.open .accordion-chevron{
    transform:rotate(180deg);
  }

  .service-panel{
    display:grid;
    grid-template-rows:0fr;
    transition:grid-template-rows .3s ease;
  }
  .service.open .service-panel{
    grid-template-rows:1fr;
  }
  .service-panel-inner{
    overflow:hidden;
    visibility:hidden;
    transition:visibility 0s linear .3s;
  }
  .service.open .service-panel-inner{
    visibility:visible;
    transition-delay:0s;
  }
  .service-panel-inner p{
    font-size:14px;
    margin:0;
    padding:0 26px 22px 42px;
  }

  /* FAQ */
  .faq{padding:120px 0;background:var(--blue-tint);}
  .faq-head{max-width:560px;margin-bottom:48px;}
  .faq-list{grid-template-columns:1fr;max-width:820px;}
  .faq-list .service:nth-last-child(-n+2){border-bottom:1px solid var(--blue-line);}
  .faq-list .service:last-child{border-bottom:none;}
  .faq-list .service-panel-inner p{padding-left:0;}

  /* IMMOBILI (portali) */
  .portals{padding:120px 0;background:var(--blue-tint);}
  .portals-head{max-width:560px;margin-bottom:56px;}
  .portals-grid{
    display:grid;
    grid-template-columns:repeat(2,1fr);
    gap:1px;
    background:var(--blue-line);
    border:1px solid var(--blue-line);
  }
  .portal-card{
    position:relative;
    display:flex;
    flex-direction:column;
    gap:20px;
    background:var(--white);
    padding:40px 36px 34px;
    overflow:hidden;
    transition:background .35s ease, box-shadow .35s ease;
  }
  .portal-card::after{
    content:"";
    position:absolute;
    left:50%;bottom:0;
    width:0;height:0;
    border-left:24px solid transparent;
    border-right:24px solid transparent;
    border-bottom:0 solid var(--blue);
    transform:translateX(-50%);
    transition:border-bottom-width .4s cubic-bezier(.22,.61,.36,1);
  }
  .portal-card:hover{box-shadow:0 10px 26px rgba(34,58,73,0.09);}
  .portal-card:hover::after{border-bottom-width:14px;}
  .portal-card-icon{
    width:30px;height:30px;
    color:var(--blue);
    transition:transform .35s cubic-bezier(.22,.61,.36,1);
  }
  .portal-card:hover .portal-card-icon{transform:translateY(-3px);}
  .portal-card-body h3{
    font-size:19px;
    margin-bottom:8px;
  }
  .portal-card-body p{
    font-size:15px;
    margin:0;
    max-width:340px;
  }
  .portal-card-cta{
    margin-top:auto;
    display:inline-flex;
    align-items:center;
    gap:8px;
    font-size:14px;
    font-weight:500;
    color:var(--blue);
  }
  .portal-card-cta svg{
    width:16px;height:16px;
    transition:transform .3s ease;
  }
  .portal-card:hover .portal-card-cta svg{transform:translateX(4px);}

  /* RECENSIONI */
  .reviews{padding:120px 0;background:var(--white);}
  .reviews-top{
    display:flex;
    align-items:flex-end;
    justify-content:space-between;
    gap:32px;
    margin-bottom:48px;
  }
  .reviews-head{max-width:560px;}
  .reviews-controls{display:flex;gap:10px;flex-shrink:0;}
  .reviews-arrow{
    width:46px;height:46px;
    display:flex;
    align-items:center;
    justify-content:center;
    background:var(--white);
    color:var(--blue);
    border:1px solid var(--blue-line);
    border-radius:50%;
    cursor:pointer;
    transition:background .25s ease, color .25s ease, border-color .25s ease, opacity .25s ease;
  }
  .reviews-arrow svg{width:18px;height:18px;}
  .reviews-arrow:hover:not(:disabled){
    background:var(--blue);
    color:var(--white);
    border-color:var(--blue);
  }
  .reviews-arrow:disabled{opacity:.35;cursor:default;}
  .reviews-track{
    --gap:24px;
    display:flex;
    gap:var(--gap);
    overflow-x:auto;
    scroll-snap-type:x mandatory;
    scrollbar-width:none;
    -webkit-overflow-scrolling:touch;
  }
  .reviews-track::-webkit-scrollbar{display:none;}
  .reviews-track:focus-visible{outline:2px solid var(--blue);outline-offset:6px;}
  .review{
    flex:0 0 calc((100% - 2*var(--gap))/3);
    scroll-snap-align:start;
    display:flex;
    flex-direction:column;
    gap:20px;
    background:var(--white);
    border:1px solid var(--blue-line);
    padding:36px 30px 30px;
  }
  .review-stars{display:flex;gap:3px;}
  .review-stars svg{width:18px;height:18px;fill:#e2a82b;}
  .review blockquote{flex:1;}
  .review blockquote p{
    font-size:15px;
    line-height:1.7;
    color:var(--ink);
  }
  .review figcaption{
    display:flex;
    align-items:center;
    gap:14px;
    padding-top:20px;
    border-top:1px solid var(--blue-line);
  }
  .review-avatar{
    width:38px;height:38px;
    flex-shrink:0;
    border-radius:50%;
    background:var(--blue);
    color:var(--white);
    display:flex;
    align-items:center;
    justify-content:center;
    font-size:15px;
    font-weight:500;
  }
  .review-author{display:flex;flex-direction:column;line-height:1.4;}
  .review-author strong{font-size:15px;font-weight:500;color:var(--blue-dark);}
  .review-author small{font-size:13px;color:var(--ink-soft);}
  .reviews-link{
    display:inline-block;
    margin-top:32px;
    font-size:14px;
    font-weight:500;
    color:var(--blue);
    border-bottom:1px solid var(--blue-line);
    padding-bottom:2px;
    transition:border-color .2s ease;
  }
  .reviews-link:hover{border-color:var(--blue);}

  /* DOVE SIAMO */
  .location{
    padding:120px 0;
    background:var(--blue-dark);
    color:var(--white);
    cursor:url(img/cursorecasabianco.svg), auto;
  }
  .location .wrap{
    display:grid;
    grid-template-columns:0.85fr 1.15fr;
    gap:70px;
    align-items:center;
  }
  .location h2{color:var(--white);}
  .location-label{
    font-size:15px;
    color:#9fb6c4;
    font-weight:500;
    margin-bottom:6px;
  }
  .location p{color:#c3d1d9;}
  .location-detail{
    display:flex;
    gap:16px;
    margin-top:28px;
  }
  .location-detail:first-of-type{margin-top:36px;}
  .location-detail-icon{
    width:20px;height:20px;
    flex-shrink:0;
    margin-top:3px;
  }
  .location-detail h3{
    font-size:15px;
    font-weight:500;
    color:var(--white);
    margin-bottom:3px;
  }
  .location-detail p{font-size:15px;}

  .map-embed{
    width:100%;
    aspect-ratio:4/3.3;
    border:1px solid #3c5a6c;
    overflow:hidden;
    background:#264456;
  }
  .map-embed iframe{
    width:100%;
    height:100%;
    border:0;
    display:block;
  }
  .btn-map{
    margin-top:36px;
    border-color:var(--white);
    color:var(--white);
  }
  .btn-map:hover{
    background:var(--white);
    color:var(--blue-dark);
  }

  /* CONTATTI */
  .contact{padding:120px 0;}
  .contact .wrap{
    display:grid;
    grid-template-columns:1fr 0.85fr;
    gap:70px;
  }
  .contact-info-item{
    display:flex;
    gap:16px;
    margin-bottom:28px;
  }
  .contact-info-icon{
    width:20px;height:20px;
    flex-shrink:0;
    margin-top:3px;
    color:var(--blue);
  }
  .contact-info-item h3{
    font-size:15px;
    font-weight:500;
    color:var(--blue-dark);
    margin-bottom:3px;
  }
  .contact-info-item p{font-size:15px;}

  form{display:flex;flex-direction:column;gap:20px;}
  .field{display:flex;flex-direction:column;gap:8px;}
  .field label{font-size:13px;color:var(--blue-dark);font-weight:500;}
  .field input,.field textarea{
    font-family:'Poppins',sans-serif;
    font-size:15px;
    padding:13px 14px;
    border:1px solid var(--blue-line);
    border-radius:2px;
    background:var(--white);
    color:var(--ink);
    outline:none;
    transition:border-color .2s ease;
  }
  .field input:focus,.field textarea:focus{border-color:var(--blue);}
  .field textarea{resize:vertical;min-height:120px;}
  form .btn{align-self:flex-start;}
  .form-note{font-size:13px;color:var(--ink-soft);margin-top:-4px;}

  /* FOOTER */
  footer{
    position:relative;
    padding:36px 0 28px;
    border-top:1px solid var(--blue-line);
  }
  .footer-top{
    display:flex;
    justify-content:space-between;
    align-items:center;
    flex-wrap:wrap;
    gap:16px;
    margin-bottom:20px;
  }
  .footer-legal{
    padding-top:16px;
    border-top:1px solid var(--blue-line);
  }
  .footer-legal p{
    font-size:12.5px;
    color:var(--ink-soft);
    line-height:1.6;
  }
  .footer-legal p:first-child{margin-bottom:4px;}
  footer .wrap{
    display:block;
  }
  footer p{font-size:13px;color:var(--ink-soft);}
  footer .logo-footer img{height:44px;}
  .footer-links{display:flex;gap:24px;}
  .footer-links a{
    font-size:13px;
    color:var(--ink-soft);
    text-decoration:none;
    border-bottom:1px solid transparent;
    padding-bottom:2px;
    transition:color .2s ease, border-color .2s ease;
  }
  .footer-links a:hover{
    color:var(--blue);
    border-color:var(--blue);
  }

  .contact-intro{
    margin-bottom:36px;
    max-width:420px;
  }
  .contact-info-item a{
    transition:color .2s ease;
  }
  .contact-info-item a:hover{color:var(--blue);}

  /* CHECKBOX PRIVACY */
  .field-check{
    display:flex;
    align-items:flex-start;
    gap:10px;
  }
  .field-check input{
    width:16px;height:16px;
    margin-top:3px;
    flex-shrink:0;
    accent-color:var(--blue);
    cursor:pointer;
  }
  .field-check label{
    font-size:13px;
    color:var(--ink-soft);
    line-height:1.5;
  }
  .field-check a{
    color:var(--blue);
    text-decoration:underline;
    text-underline-offset:2px;
  }

  /* PAGINA PRIVACY */
  .page-hero{
    padding:160px 0 70px;
    background:var(--blue);
    cursor:url(img/cursorecasabianco.svg), auto;
  }
  .page-hero h1{
    color:var(--white);
    font-size:clamp(30px,4vw,44px);
    font-weight:500;
    line-height:1.2;
  }
  .page-hero .page-label{
    font-size:15px;
    color:#9fb6c4;
    font-weight:500;
    margin-bottom:6px;
  }
  .page-hero .page-updated{
    color:#d7e4eb;
    font-size:14px;
    margin-top:14px;
  }

  .legal{padding:80px 0 110px;}
  .legal .wrap{max-width:820px;}
  .legal h2{
    font-size:22px;
    margin-top:48px;
    margin-bottom:14px;
    padding-top:26px;
    border-top:1px solid var(--blue-line);
  }
  .legal h2:first-of-type{
    margin-top:0;
    padding-top:0;
    border-top:none;
  }
  .legal h3{
    font-size:16px;
    font-weight:500;
    margin-top:24px;
    margin-bottom:8px;
  }
  .legal p{
    font-size:15px;
    margin-bottom:14px;
  }
  .legal ul{
    margin:0 0 16px 20px;
    color:var(--ink-soft);
    font-size:15px;
  }
  .legal li{margin-bottom:8px;}
  .legal a{
    color:var(--blue);
    text-decoration:underline;
    text-underline-offset:2px;
  }
  .legal-note{
    border-left:2px solid var(--blue);
    padding:4px 0 4px 22px;
    margin:28px 0;
    color:var(--blue-dark);
    font-size:15px;
  }
  .legal-table{
    width:100%;
    border-collapse:collapse;
    margin:18px 0 24px;
    font-size:14px;
  }
  .legal-table th,.legal-table td{
    text-align:left;
    padding:12px 14px;
    border:1px solid var(--blue-line);
    vertical-align:top;
  }
  .legal-table th{
    background:var(--blue-tint);
    color:var(--blue-dark);
    font-weight:500;
  }
  .legal-table td{color:var(--ink-soft);}
  .back-link{
    display:inline-block;
    margin-top:44px;
    font-size:14px;
    color:var(--blue);
  }
  .back-link:hover{text-decoration:underline;}

  /* RESPONSIVE */
  

  
  /* ---------- LINEA DEL TETTO (motivo preso dal logo) ---------- */
  .hero{position:relative;}
  .roofline{
    z-index:3;
    position:absolute;
    left:0;right:0;bottom:-1px;
    width:100%;
    height:60px;
    display:block;
  }

  /* ---------- RIVELAZIONE ALL'INGRESSO ---------- */
  [data-reveal]{
    opacity:0;
    transform:translateY(22px);
    transition:opacity .7s cubic-bezier(.22,.61,.36,1),
               transform .7s cubic-bezier(.22,.61,.36,1);
  }
  [data-reveal].is-visible{
    opacity:1;
    transform:none;
  }
  

  /* ---------- ACCORDION: marcatore a tetto ---------- */
  .service-header{
    position:relative;
    transition:padding-left .3s cubic-bezier(.22,.61,.36,1);
  }
  .service-header::before{
    content:"";
    position:absolute;
    left:-14px;
    top:50%;
    width:2px;
    height:0;
    background:var(--blue);
    transform:translateY(-50%);
    transition:height .3s cubic-bezier(.22,.61,.36,1);
  }
  .service-header:hover{padding-left:6px;}
  .service.open .service-header{padding-left:6px;}
  .service.open .service-header::before{height:26px;}
  .service-header:hover .service-title{color:var(--blue);}
  .service-title{transition:color .25s ease;}
  .service-icon{transition:transform .3s cubic-bezier(.22,.61,.36,1);}
  .service.open .service-icon{transform:translateY(-1px) scale(1.08);}

  /* ---------- CONTATTI: tre azioni ---------- */
  .contact .wrap{
    display:block;
  }
  .contact-head{
    max-width:620px;
    margin-bottom:56px;
  }
  .contact-intro{
    margin-bottom:0;
    max-width:560px;
  }
  .contact-actions{
    display:grid;
    grid-template-columns:repeat(3,1fr);
    gap:1px;
    background:var(--blue-line);
    border:1px solid var(--blue-line);
  }
  .contact-action{
    position:relative;
    display:block;
    background:var(--white);
    padding:38px 32px 34px;
    overflow:hidden;
    transition:background .35s ease;
  }
  /* il tetto sale dal basso all'hover */
  .contact-action::after{
    content:"";
    position:absolute;
    left:50%;
    bottom:0;
    width:0;
    height:0;
    border-left:24px solid transparent;
    border-right:24px solid transparent;
    border-bottom:0 solid var(--blue);
    transform:translateX(-50%);
    transition:border-bottom-width .4s cubic-bezier(.22,.61,.36,1);
  }
  .contact-action:hover{background:var(--blue-tint);}
  .contact-action:hover::after{border-bottom-width:14px;}
  .contact-action-icon{
    width:24px;height:24px;
    color:var(--blue);
    margin-bottom:22px;
    transition:transform .35s cubic-bezier(.22,.61,.36,1);
  }
  .contact-action:hover .contact-action-icon{transform:translateY(-3px);}
  .contact-action h3{
    font-size:15px;
    font-weight:500;
    color:var(--blue-mid);
    margin-bottom:10px;
  }
  .contact-action-value{
    font-size:17px;
    color:var(--blue-dark);
    font-weight:500;
    line-height:1.4;
    margin-bottom:8px;
    word-break:break-word;
  }
  .contact-action-note{
    font-size:13px;
    color:var(--ink-soft);
    margin:0;
  }

  /* ---------- FOTO: rivelazione a tendina ---------- */
  .about-photo{position:relative;}
  .about-photo::before{
    content:"";
    position:absolute;
    inset:0;
    background:var(--blue);
    z-index:2;
    transform-origin:top;
    transition:transform .9s cubic-bezier(.77,0,.18,1) .15s;
  }
  .about-intro.is-visible .about-photo::before{transform:scaleY(0);}

  /* ---------- ACCESSIBILITA TASTIERA ---------- */
  a:focus-visible,
  button:focus-visible{
    outline:2px solid var(--blue);
    outline-offset:3px;
  }
  .hero a:focus-visible,
  .location a:focus-visible,
  .location button:focus-visible{
    outline-color:var(--white);
  }
  .sr-only{
    position:absolute;
    width:1px;height:1px;
    padding:0;margin:-1px;
    overflow:hidden;
    clip:rect(0,0,0,0);
    white-space:nowrap;
    border:0;
  }
  .skip-link{
    position:fixed;
    top:8px;left:8px;
    z-index:200;
    padding:12px 18px;
    background:var(--blue-dark);
    color:var(--white);
    font-size:15px;
    transform:translateY(-200%);
  }
  .skip-link:focus{transform:translateY(0);}

@media (max-width:900px){
    .wrap{padding:0 24px;}
    .hero .wrap,
    .about .wrap,
    .location .wrap,
    .contact .wrap{
      grid-template-columns:1fr;
      gap:44px;
    }
    .services-list{grid-template-columns:1fr;}
    .service:nth-last-child(-n+2){border-bottom:1px solid var(--blue-line);}
    .service:last-child{border-bottom:none;}
    .portals-grid{grid-template-columns:1fr;}
    .review{flex-basis:calc((100% - var(--gap))/2);}
    .reviews-top{margin-bottom:36px;}
    .hero{min-height:0;padding:150px 0 80px;}
    .hero-bg,
    .hero::before{display:none;}
    .about,.services,.faq,.portals,.reviews,.location,.contact{padding:80px 0;}

    .nav-toggle{display:flex;}
    .logo img{height:38px;}
    header.scrolled .logo img{height:34px;}
    footer .logo-footer img{height:40px;}
    nav{
      display:none;
      position:absolute;
      top:100%;left:0;right:0;
      background:var(--white);
      border-top:1px solid var(--blue-line);
      box-shadow:0 8px 20px rgba(34,58,73,0.08);
    }
    nav.open{display:block;}
    nav ul{
      flex-direction:column;
      gap:0;
      padding:8px 24px 16px;
    }
    nav li{border-bottom:1px solid var(--blue-line);}
    nav li:last-child{border-bottom:none;}
    nav a{display:block;padding:14px 0;}

    .footer-top{
      flex-direction:column;
      align-items:flex-start;
      gap:14px;
    }
    .contact-actions{grid-template-columns:1fr;}
    .contact-action{padding:30px 24px 28px;}
    .contact-head{margin-bottom:36px;}
    .roofline{height:34px;}
    .about-photo{height:auto;aspect-ratio:4/5;}
  }

@media (max-width:620px){
    .reviews-top{flex-wrap:wrap;align-items:flex-start;}
    .review{flex-basis:88%;padding:30px 24px 26px;}
  }

@media (max-width:760px){
    .contact-actions{
      display:flex;
      flex-direction:column;
      gap:0;
      border:none;
      background:none;
    }
    .contact-action{
      display:flex;
      align-items:flex-start;
      gap:16px;
      padding:20px 4px;
      border-bottom:1px solid var(--blue-line);
      -webkit-tap-highlight-color:transparent;
    }
    .contact-action:first-child{padding-top:4px;}
    .contact-action:last-child{border-bottom:none;}
    .contact-action::after{display:none;}
    .contact-action-icon{
      width:20px;height:20px;
      flex-shrink:0;
      margin:3px 0 0;
    }
    .contact-action-body{
      min-width:0;
      flex:1;
    }
    .contact-action:hover .contact-action-icon{transform:none;}
    .contact-action:hover{background:none;}
    .contact-action:active{background:var(--blue-tint);}
    .contact-action h3{
      font-size:13px;
      margin-bottom:4px;
    }
    .contact-action-value{
      font-size:16px;
      margin-bottom:4px;
    }
    .contact-action-note{font-size:12.5px;}
  }

@media (prefers-reduced-motion:reduce){
    [data-reveal]{opacity:1;transform:none;transition:none;}
    *,*::before,*::after{
      animation-duration:.01ms !important;
      animation-iteration-count:1 !important;
      transition-duration:.01ms !important;
    }
  }
