/* sito.pdf — visual redesign v2 */
.issue1-section{padding:72px 0;border-top:1px solid var(--line-soft)}
.issue1-section .wrap{display:flex;flex-direction:column;gap:20px}
.issue1-flow{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:8px 0 0;padding:0;list-style:none;counter-reset:flow}
.issue1-flow li{counter-increment:flow;position:relative;min-height:190px;padding:76px 22px 24px;border:1px solid var(--line);border-radius:14px;background:linear-gradient(180deg,#171d22,#11161a);display:flex;flex-direction:column;gap:8px}
.issue1-flow li::before{content:counter(flow);position:absolute;top:22px;left:22px;width:38px;height:38px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:var(--accent);color:#0b0e10;font-size:16px;font-weight:800;box-shadow:0 0 0 6px rgba(255,106,43,.1)}
.issue1-flow strong{font-size:17px}.issue1-flow span{font-size:14px;color:var(--muted)}

.issue1-carousel{position:relative;margin:24px 0 0;background:#0d1114;border-top:1px solid var(--line-soft);border-bottom:1px solid var(--line-soft)}
.issue1-carousel[data-carousel-ready="true"]{min-height:var(--carousel-height,auto)}
.carousel-slide{display:none;padding:70px 0 38px;border:0;min-height:0}
.issue1-carousel[data-carousel-ready="true"] .carousel-slide{min-height:var(--carousel-slide-height,auto)}
.carousel-slide.is-active{display:block}
.carousel-slide .lead{max-width:860px}
.issue1-grid,.issue1-platform-areas{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:8px}
.tone-orange{--card-accent:#ff6a2b}.tone-blue{--card-accent:#3b82f6}.tone-mint{--card-accent:#10b981}.tone-violet{--card-accent:#a855f7}.tone-sky{--card-accent:#06b6d4}

.issue1-usecase{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin:10px 0 0;padding:0;list-style:none}
.carousel-controls{display:flex;align-items:center;justify-content:center;gap:16px;padding:10px var(--pad) 30px;background:#0d1114}
.carousel-arrow{width:38px;height:38px;border:1px solid #3b444c;border-radius:50%;background:#171d22;color:#f4f4f5;font-size:18px;cursor:pointer}
.carousel-arrow:hover{border-color:var(--accent);color:var(--accent);background:#1c1714}
.carousel-dots{display:flex;align-items:center;gap:8px}
.carousel-dots button{width:8px;height:8px;padding:0;border:0;border-radius:50%;background:#59616a;cursor:pointer}
.carousel-dots button.is-active{width:24px;border-radius:999px;background:var(--accent)}

.aig-dialog{width:min(860px,calc(100vw - 32px));max-height:84vh;padding:0;border:1px solid var(--line);border-radius:16px;background:var(--surface);color:var(--text);overflow:hidden}
.aig-dialog::backdrop{background:rgba(0,0,0,.72)}
.aig-dialog-head{display:flex;align-items:center;gap:14px;padding:18px 22px;border-bottom:1px solid var(--line)}
.aig-dialog-head h2{margin:0}
.aig-dialog-body{padding:18px 22px 22px;overflow:auto;max-height:62vh}
.aig-dialog-body>p:first-of-type{margin-top:0}
.aig-dialog-body p,.aig-dialog-body li{color:var(--muted)}
.dialog-visual{display:flex;width:44px;height:44px;flex:0 0 44px;align-items:center;justify-content:center;margin:0;border-radius:11px;background:var(--dialog-icon-bg,rgba(255,106,43,.14));color:var(--dialog-icon-color,var(--accent));border:1px solid var(--dialog-icon-border,rgba(255,106,43,.32))}
.dialog-visual svg{width:26px;height:26px}
.aig-dialog-body h3{margin:14px 0 8px}.aig-dialog-body ul{margin-top:6px}
.aig-dialog-footer{display:flex;justify-content:flex-end;padding:14px 22px;border-top:1px solid var(--line)}
.aig-dialog-footer .aig-dialog-close{width:auto;height:44px;min-width:112px;border:0;background:var(--accent-strong);color:#fff;font-size:15px;border-radius:8px;padding:0 22px;cursor:pointer}
.legal-link{border:0;background:none;padding:0;color:var(--dim);font:inherit;cursor:pointer}.legal-link:hover{color:var(--text)}

.integration-section{background:#101519}
/* Titolo architettura: forzato su una sola riga su desktop. */
.h2--flow{font-size:min(2.75vw,34px);white-space:nowrap}
.laws li:first-child{border-top:0}.laws li:last-child{border-bottom:0}
@media(max-width:700px){.h2--flow{font-size:clamp(19px,4.2vw,25px);white-space:normal}}
@media(max-width:960px){.issue1-grid,.issue1-platform-areas{grid-template-columns:1fr 1fr}.issue1-flow,.issue1-usecase{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.issue1-grid,.issue1-platform-areas,.issue1-flow,.issue1-usecase{grid-template-columns:1fr}.carousel-slide{padding:52px 0 28px}.carousel-controls{padding-bottom:24px}.aig-dialog-footer{padding:14px 16px}}

/* PDF feedback 2026-09-26 */
.scope-icon{color:#ff8a52!important;background:rgba(255,106,43,.18)!important;border-color:rgba(255,106,43,.45)!important}
.feat-icon{color:#ff8a52!important;background:rgba(255,106,43,.18)!important;border-color:rgba(255,106,43,.45)!important}
.integration-section{background:#101519}


/* AIGConsulting homepage: native document Scroll Snap.
   Sections remain in the natural flow; long sections are never cropped.
   The introduction and its four pillars form a single presentation pane. */
:root{--home-fp-header:calc(76px + env(safe-area-inset-top,0px))}
.home-fp-nav{display:none}
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active{
    scroll-snap-type:y mandatory;
    scroll-padding-top:var(--home-fp-header)
  }
  html.home-fp-active body{overflow-x:clip}
  html.home-fp-active .home-fp-intro,
  html.home-fp-active main>section,
  html.home-fp-active main>.issue1-carousel,
  html.home-fp-active body>.site-footer{
    min-height:calc(100vh - var(--home-fp-header));
    min-height:calc(100dvh - var(--home-fp-header));
    height:auto;
    scroll-snap-align:start;
    scroll-snap-stop:normal
  }
  html.home-fp-active .home-fp-intro{
    display:flex;
    flex-direction:column;
    justify-content:center;
    border-bottom:1px solid var(--line-soft)
  }
  html.home-fp-active .home-fp-intro .hero{
    flex:1 0 auto;
    display:flex;
    align-items:center;
    min-height:0;
    width:100%
  }
  html.home-fp-active .home-fp-intro .hero>.wrap{
    min-height:0;
    padding-top:clamp(22px,4dvh,46px);
    padding-bottom:clamp(14px,2dvh,30px)
  }
  html.home-fp-active .home-fp-intro .hero-visual img{
    max-height:clamp(320px,61dvh,660px);
    object-fit:contain
  }
  html.home-fp-active .home-fp-intro .pillars{flex:0 0 auto}
  html.home-fp-active .home-fp-intro .pillars>.wrap{
    padding-top:clamp(14px,2.5dvh,28px);
    padding-bottom:clamp(18px,3dvh,35px)
  }
  html.home-fp-active main>section{
    display:flex;
    align-items:center;
    padding-top:clamp(34px,5dvh,64px);
    padding-bottom:clamp(34px,5dvh,64px)
  }
  html.home-fp-active main>section>.wrap{width:100%}
  html.home-fp-active main>.issue1-carousel{
    padding-top:clamp(25px,3.5dvh,45px);
    padding-bottom:clamp(20px,3dvh,34px)
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide{
    padding-top:clamp(20px,3.5dvh,55px);
    padding-bottom:clamp(12px,2dvh,28px)
  }
  html.home-fp-active main>.issue1-carousel .carousel-controls{padding-bottom:clamp(16px,2dvh,28px)}
  html.home-fp-active body>.site-footer{display:flex;align-items:center}
  html.home-fp-active body>.site-footer>.wrap{width:100%}
  html.home-fp-active .home-fp-nav{
    display:flex;
    position:fixed;
    z-index:48;
    top:50%;
    right:clamp(8px,1.5vw,25px);
    transform:translateY(-50%);
    flex-direction:column;
    align-items:center;
    gap:clamp(5px,.65dvh,10px);
    padding:11px 5px;
    border:1px solid rgba(145,154,164,.22);
    border-radius:999px;
    background:rgba(12,16,19,.82);
    backdrop-filter:blur(14px)
  }
  .home-fp-nav button{
    position:relative;
    display:grid;
    place-items:center;
    width:25px;
    height:25px;
    padding:0;
    background:transparent;
    border:0;
    border-radius:50%;
    color:var(--muted);
    cursor:pointer
  }
  .home-fp-nav button::before{
    content:"";
    width:8px;
    height:8px;
    border:1px solid #77828d;
    border-radius:50%;
    background:#65707a;
    transition:background .18s,transform .18s,border-color .18s
  }
  .home-fp-nav button[aria-current="location"]::before{
    background:var(--accent);
    border-color:var(--accent);
    transform:scale(1.4)
  }
  .home-fp-nav button::after{
    content:attr(data-label);
    position:absolute;
    top:50%;
    right:calc(100% + 9px);
    transform:translate(5px,-50%);
    padding:6px 10px;
    border:1px solid var(--line);
    border-radius:6px;
    background:#171d22;
    color:var(--text);
    font:600 12px/1.3 var(--font);
    white-space:nowrap;
    opacity:0;
    pointer-events:none;
    transition:opacity .18s,transform .18s
  }
  .home-fp-nav button:hover::after,
  .home-fp-nav button:focus-visible::after{
    opacity:1;
    transform:translate(0,-50%)
  }
  .home-fp-nav button:focus-visible{
    outline:2px solid var(--accent);
    outline-offset:2px
  }
}
@media(prefers-reduced-motion:reduce){
  html.home-fp-active{scroll-behavior:auto}
  .home-fp-nav button::before,.home-fp-nav button::after{transition:none}
}
/* Small laptop windows, tablets and touch devices use ordinary page scrolling.
   Carousel controls, semantic links and text remain available unchanged. */
@media(max-width:1100px),(max-height:640px),(pointer:coarse){
  .home-fp-nav{display:none!important}
  .home-fp-intro{display:block}
}


/* Safe centering keeps the top of an overflowing slide reachable via scroll. */
/* Homepage viewport-fit slides — 20/10/2026.
   A desktop slide occupies precisely the usable viewport below the sticky header.
   Compact content before offering an internal overflow scroll; never silently clip. */
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active .home-fp-intro,
  html.home-fp-active main>section,
  html.home-fp-active main>.issue1-carousel,
  html.home-fp-active body>.site-footer{
    box-sizing:border-box;
    height:calc(100vh - var(--home-fp-header));
    height:calc(100dvh - var(--home-fp-header));
    min-height:0;
    max-height:calc(100dvh - var(--home-fp-header));
    overflow:hidden;
    scroll-snap-align:start;
    scroll-snap-stop:always;
  }
  html.home-fp-active .home-fp-intro{
    display:grid;
    grid-template-rows:minmax(0,1fr) auto;
    align-items:stretch;
  }
  html.home-fp-active .home-fp-intro>.hero{
    display:flex;
    align-items:center;
    min-height:0;
    overflow:hidden;
  }
  html.home-fp-active .home-fp-intro>.hero>.wrap{
    min-height:0;
    height:100%;
    max-height:100%;
    padding-top:clamp(8px,1.5dvh,28px);
    padding-bottom:clamp(8px,1.5dvh,28px);
    gap:clamp(8px,1.2vw,24px);
  }
  html.home-fp-active .hero h1{font-size:clamp(29px,4.6dvh,55px)}
  html.home-fp-active .hero-copy{gap:clamp(8px,1.5dvh,17px)}
  html.home-fp-active .hero-copy .lead{font-size:clamp(12px,1.7dvh,17px)}
  html.home-fp-active .hero-visual{margin-left:0}
  html.home-fp-active .hero-visual img{max-height:clamp(200px,53dvh,550px);width:100%;object-fit:contain}
  html.home-fp-active .home-fp-intro>.pillars{min-height:0;max-height:100%}
  html.home-fp-active .home-fp-intro>.pillars>.wrap{
    padding-top:clamp(8px,1.25dvh,20px);
    padding-bottom:clamp(8px,1.5dvh,22px);
    gap:8px;
  }
  html.home-fp-active .pillar{font-size:clamp(11px,1.5dvh,14px)}
  html.home-fp-active .pillar svg{width:clamp(22px,3dvh,30px);height:auto}

  html.home-fp-active main>section{
    padding:clamp(12px,2.2dvh,34px) 0;
    align-items:stretch;
    justify-content:center;
  }
  html.home-fp-active main>section>.wrap{
    display:grid;
    align-content:safe center;
    width:100%;
    min-height:0;
    height:100%;
    max-height:100%;
    overflow-x:hidden;
    overflow-y:auto;
    scrollbar-width:thin;
    overscroll-behavior:auto;
  }
  html.home-fp-active .platform>.wrap,
  html.home-fp-active .consulting>.wrap,
  html.home-fp-active .trust>.wrap{align-content:safe center}
  html.home-fp-active .platform .wrap{gap:clamp(14px,2.5vw,34px);grid-template-columns:minmax(0,320px) minmax(0,1fr)}
  html.home-fp-active .consulting .wrap{grid-template-columns:minmax(0,400px) minmax(0,1fr);gap:clamp(16px,3vw,45px)}
  html.home-fp-active .h2,
  html.home-fp-active .platform-intro h2{font-size:clamp(24px,3.8dvh,40px);line-height:1.12}
  html.home-fp-active .approach-title h2{font-size:clamp(21px,3dvh,30px)}
  html.home-fp-active .platform-intro .sub{font-size:clamp(15px,2.4dvh,22px)}
  html.home-fp-active .lead{font-size:clamp(12px,1.8dvh,15px);line-height:1.5}
  html.home-fp-active .eyebrow{font-size:11px}
  html.home-fp-active .btn{min-height:clamp(34px,5dvh,44px);padding:0 16px;font-size:clamp(12px,1.7dvh,14px)}
  html.home-fp-active .platform-intro,
  html.home-fp-active .consulting-intro{gap:clamp(8px,1.5dvh,15px)}
  html.home-fp-active .platform-intro .cta{margin-top:4px}
  html.home-fp-active .modules,
  html.home-fp-active .offers,
  html.home-fp-active .feats{gap:clamp(7px,1dvh,13px)}
  html.home-fp-active .card{padding:clamp(9px,1.3dvh,15px);column-gap:10px;row-gap:6px}
  html.home-fp-active .card__icon{width:clamp(32px,4.4dvh,43px);height:clamp(32px,4.4dvh,43px);border-radius:9px}
  html.home-fp-active .card__icon svg{width:clamp(19px,2.6dvh,24px);height:auto}
  html.home-fp-active .card__title{font-size:clamp(12px,1.75dvh,15px)}
  html.home-fp-active .card__subtitle{font-size:clamp(10px,1.45dvh,12px)}
  html.home-fp-active .card__body{
    font-size:clamp(11px,1.5dvh,13px);
    line-height:1.4;
    -webkit-line-clamp:2;
    line-clamp:2;
    min-height:calc(2 * 1.4em);
    max-height:calc(2 * 1.4em);
  }
  html.home-fp-active .steps{margin-top:clamp(15px,2.7dvh,35px);gap:clamp(8px,1.2vw,18px)}
  html.home-fp-active .step{gap:clamp(7px,1dvh,12px)}
  html.home-fp-active .step .dot{width:clamp(33px,5dvh,48px);height:clamp(33px,5dvh,48px)}
  html.home-fp-active .steps::before{top:clamp(16px,2.5dvh,24px)}
  html.home-fp-active .step p{font-size:clamp(11px,1.6dvh,13px)}
  html.home-fp-active .in-action-head{margin-bottom:clamp(12px,2.2dvh,30px);gap:20px}
  html.home-fp-active .screen{padding:6px;box-shadow:0 20px 35px -24px rgba(255,106,43,.25)}
  html.home-fp-active .screen img{max-height:clamp(150px,35dvh,370px);object-fit:contain}
  html.home-fp-active .scope{margin-top:clamp(12px,2dvh,24px);gap:10px}
  html.home-fp-active .panel{padding:clamp(14px,2.6dvh,28px);gap:clamp(8px,1.4dvh,15px)}
  html.home-fp-active .panel h3{font-size:clamp(19px,2.7dvh,26px)}
  html.home-fp-active .laws li{padding:clamp(6px,1dvh,11px) 0}
  html.home-fp-active .laws small{font-size:clamp(10px,1.35dvh,12px)}
  html.home-fp-active .laws li>span{font-size:clamp(10px,1.35dvh,12px)}
  html.home-fp-active .panel>.card__body{margin-top:8px!important}
  html.home-fp-active .issue1-section .wrap{gap:clamp(9px,1.5dvh,16px)}
  html.home-fp-active .issue1-flow,
  html.home-fp-active .issue1-usecase{gap:clamp(8px,1.2vw,14px);margin-top:clamp(10px,2dvh,18px)}
  html.home-fp-active .issue1-flow li{
    min-height:0;padding:clamp(50px,7dvh,68px) 14px clamp(12px,2dvh,22px);
    gap:5px;
  }
  html.home-fp-active .issue1-flow li::before{top:12px;left:14px;width:30px;height:30px}
  html.home-fp-active .issue1-flow li strong{font-size:clamp(12px,1.8dvh,15px)}
  html.home-fp-active .issue1-flow li span{font-size:clamp(11px,1.5dvh,13px)}
  html.home-fp-active .issue1-grid,
  html.home-fp-active .issue1-platform-areas{gap:clamp(7px,1dvh,12px)}

  html.home-fp-active main>.issue1-carousel[data-carousel-ready]{
    min-height:0;
  }
  html.home-fp-active main>.issue1-carousel{
    display:flex;
    flex-direction:column;
    justify-content:center;
    padding:clamp(10px,1.8dvh,25px) 0;
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide{
    min-height:0;
    height:auto;
    padding:0;
  }
  html.home-fp-active main>.issue1-carousel[data-carousel-ready] .carousel-slide{
    min-height:0;
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide.is-active{
    display:block;
    min-height:0;
    flex:0 1 auto;
    max-height:calc(100% - 45px);
    overflow-x:hidden;
    overflow-y:auto;
    overscroll-behavior:auto;
    scrollbar-width:thin;
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide>.wrap{
    padding-top:clamp(6px,1.3dvh,16px);
    padding-bottom:clamp(6px,1.3dvh,16px);
  }
  html.home-fp-active main>.issue1-carousel .carousel-controls{
    flex:0 0 auto;
    min-height:45px;
    padding:6px var(--pad) 0;
  }
  html.home-fp-active .carousel-arrow{width:34px;height:34px}
  html.home-fp-active body>.site-footer{
    display:flex;
    align-items:center;
    padding:clamp(12px,2.5dvh,32px) 0;
  }
  html.home-fp-active body>.site-footer>.wrap{
    display:block;
    width:100%;
    max-height:100%;
    overflow-y:auto;
    overscroll-behavior:auto;
    scrollbar-width:thin;
  }
  html.home-fp-active .foot-grid{gap:clamp(12px,2vw,26px)}
  html.home-fp-active .foot-col{gap:clamp(5px,.85dvh,9px);font-size:clamp(11px,1.55dvh,13px)}
  html.home-fp-active .foot-brand{gap:clamp(8px,1.4dvh,15px)}
  html.home-fp-active .foot-legal{margin-top:clamp(15px,3dvh,28px);padding-top:clamp(8px,1.4dvh,16px)}

  html.home-fp-active main p.lead,
  html.home-fp-active .step p,
  html.home-fp-active .issue1-flow li span,
  html.home-fp-active .laws small{
    display:-webkit-box;
    -webkit-box-orient:vertical;
    -webkit-line-clamp:3;
    line-clamp:3;
    overflow:hidden;
  }
  html.home-fp-active main .home-fp-text-truncated{
    cursor:zoom-in;
    outline-offset:3px;
  }
  html.home-fp-active main .home-fp-text-truncated:focus-visible{
    outline:2px solid var(--accent)
  }
  /* Use internal scrolling instead of text that becomes unreadably tiny. */
  html.home-fp-active main>section>.wrap:focus-visible,
  html.home-fp-active .carousel-slide.is-active:focus-visible{outline:2px solid var(--accent)}
}
@media (min-width:1101px) and (min-height:641px) and (max-height:740px) and (pointer:fine){
  html.home-fp-active .hero-visual img{max-height:44dvh}
  html.home-fp-active .home-fp-intro>.pillars>.wrap{padding-top:8px;padding-bottom:8px}
  html.home-fp-active .in-action-head{margin-bottom:10px}
  html.home-fp-active .steps{margin-top:12px}
  html.home-fp-active .card{padding:9px}
  html.home-fp-active .card__body{-webkit-line-clamp:2;line-clamp:2}
}


@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active .h2--flow{white-space:normal;font-size:clamp(20px,3.4dvh,34px)}
  html.home-fp-active .issue1-grid .card__body{min-height:0}
}
.home-fp-detail{
  width:min(680px,calc(100vw - 32px));
  max-height:min(82dvh,850px);
  padding:0;
  border:1px solid var(--line);
  border-radius:16px;
  background:var(--surface);
  color:var(--text);
  box-shadow:0 28px 90px rgba(0,0,0,.45);
}
.home-fp-detail::backdrop{background:rgba(0,0,0,.75)}
.home-fp-detail__inner{padding:clamp(18px,3vw,32px)}
.home-fp-detail__head{display:flex;gap:14px;align-items:flex-start;justify-content:space-between}
.home-fp-detail__head h2{margin:0;font-size:clamp(21px,3vw,27px)}
.home-fp-detail__head button{
  flex:0 0 40px;width:40px;height:40px;
  color:var(--text);background:var(--surface-2);
  border:1px solid var(--line);border-radius:50%;
  font-size:25px;cursor:pointer;
}
.home-fp-detail__text{margin:18px 0 0;line-height:1.7;color:var(--muted);max-height:calc(82dvh - 135px);overflow:auto}


/* Full-page visual rebalancing — screen-shot driven correction, 2026-10-20.
   Fit the *composition* to the slide; do not shrink everything to tiny text.
   The fixed viewport bounds, snap, mobile fallback and accessible expanders
   remain owned by the preceding rules. */
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active{
    --wrap:min(1640px,calc(100vw - 120px));
    --pad:clamp(28px,3vw,62px);
    --home-fp-gap:clamp(12px,2.1dvh,26px);
    --home-fp-body-size:clamp(14px,1.75dvh,17px);
  }
  /* Prevent the fullscreen dot navigation from overlapping content. */
  html.home-fp-active main>section>.wrap,
  html.home-fp-active main>.issue1-carousel .wrap,
  html.home-fp-active .home-fp-intro>.hero>.wrap,
  html.home-fp-active body>.site-footer>.wrap{padding-right:calc(var(--pad) + 28px)}

  html.home-fp-active main>section{
    padding:clamp(20px,3.2dvh,42px) 0;
  }
  html.home-fp-active main>section>.wrap{
    align-content:stretch;
    align-items:stretch;
    gap:var(--home-fp-gap);
  }
  html.home-fp-active .h2,
  html.home-fp-active .platform-intro h2{
    font-size:clamp(32px,4.9dvh,49px);
    line-height:1.1;
  }
  html.home-fp-active .approach-title h2{font-size:clamp(30px,4.2dvh,42px)}
  html.home-fp-active .lead,
  html.home-fp-active .in-action-head .lead{
    font-size:var(--home-fp-body-size);
    line-height:1.55;
  }
  html.home-fp-active .eyebrow{font-size:clamp(12px,1.5dvh,14px)}
  html.home-fp-active .btn{
    min-height:clamp(42px,5.4dvh,54px);
    padding:0 clamp(16px,1.8vw,25px);
    font-size:clamp(14px,1.7dvh,16px);
  }
  html.home-fp-active .card{
    padding:clamp(14px,2dvh,24px);
    column-gap:clamp(12px,1.3vw,18px);
    row-gap:clamp(8px,1.4dvh,16px);
    align-content:safe center;
    min-width:0;
  }
  html.home-fp-active .card__icon{
    width:clamp(40px,5.8dvh,56px);
    height:clamp(40px,5.8dvh,56px);
  }
  html.home-fp-active .card__icon svg{width:clamp(23px,3dvh,27px);height:auto}
  html.home-fp-active .card__title{font-size:clamp(15px,1.9dvh,18px);line-height:1.35}
  html.home-fp-active .card__subtitle{font-size:clamp(13px,1.6dvh,15px);line-height:1.4}
  html.home-fp-active .card__body{
    font-size:clamp(13.5px,1.7dvh,16px);
    line-height:1.5;
    min-height:3em;
    max-height:3em;
    -webkit-line-clamp:2;
    line-clamp:2;
  }

  /* Hero: restore an expressive, readable opening composition. */
  html.home-fp-active .home-fp-intro>.hero>.wrap{
    align-items:center;
    gap:clamp(25px,3vw,60px);
    padding-top:clamp(14px,2dvh,30px);
    padding-bottom:clamp(14px,2dvh,30px);
  }
  html.home-fp-active .hero h1{font-size:clamp(36px,5.7dvh,68px)}
  html.home-fp-active .hero-copy{gap:clamp(12px,2dvh,24px)}
  html.home-fp-active .hero-copy .lead{font-size:clamp(15px,2dvh,19px)}
  html.home-fp-active .hero-visual img{max-height:clamp(240px,56dvh,580px)}
  html.home-fp-active .home-fp-intro>.pillars>.wrap{
    padding-top:clamp(12px,1.9dvh,23px);
    padding-bottom:clamp(12px,2dvh,25px);
    gap:clamp(10px,1.2vw,20px);
  }
  html.home-fp-active .pillar{font-size:clamp(13px,1.7dvh,16px)}
  html.home-fp-active .pillar svg{width:clamp(26px,4dvh,36px)}

  /* Platform and consulting: let card grids use most of the slide height. */
  html.home-fp-active .platform>.wrap,
  html.home-fp-active .consulting>.wrap,
  html.home-fp-active .trust>.wrap{
    align-content:stretch;
    align-items:center;
  }
  html.home-fp-active .platform>.wrap{
    grid-template-columns:minmax(0,.34fr) minmax(0,.66fr);
    gap:clamp(25px,4vw,70px);
  }
  html.home-fp-active .platform-intro{gap:clamp(14px,2dvh,28px)}
  html.home-fp-active .platform-intro .sub{font-size:clamp(19px,2.65dvh,27px)}
  html.home-fp-active .modules{
    align-self:center;
    height:min(68dvh,600px);
    min-height:0;
    grid-template-rows:repeat(2,minmax(0,1fr));
    gap:clamp(13px,2dvh,22px);
  }
  html.home-fp-active .consulting>.wrap{
    grid-template-columns:minmax(0,.38fr) minmax(0,.62fr);
    gap:clamp(35px,4.5vw,80px);
  }
  html.home-fp-active .consulting-intro{gap:clamp(16px,2.4dvh,27px)}
  html.home-fp-active .offers{
    align-self:center;
    height:min(66dvh,570px);
    grid-template-rows:repeat(2,minmax(0,1fr));
    gap:clamp(14px,2dvh,24px);
  }
  html.home-fp-active .modules .card,
  html.home-fp-active .offers .card{height:100%}

  /* Governance timeline: top introduction + lower six-column process. */
  html.home-fp-active .approach>.wrap{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:minmax(0,.85fr) minmax(0,1.15fr);
    gap:clamp(20px,4dvh,58px);
    align-items:stretch;
  }
  html.home-fp-active .approach-head{
    align-self:center;
    gap:clamp(12px,2dvh,25px);
    justify-content:center;
  }
  html.home-fp-active .approach-head .kicker{font-size:clamp(12px,1.55dvh,15px)}
  html.home-fp-active .approach-head .lead{
    max-width:850px;
    font-size:clamp(15px,1.9dvh,18px)
  }
  html.home-fp-active .steps{
    align-self:stretch;
    align-items:center;
    gap:clamp(18px,2vw,36px);
    margin:0;
  }
  html.home-fp-active .steps::before{top:calc(50% - clamp(48px,7dvh,78px))}
  html.home-fp-active .step{gap:clamp(10px,1.65dvh,18px)}
  html.home-fp-active .step .dot{
    width:clamp(54px,7.5dvh,76px);
    height:clamp(54px,7.5dvh,76px);
  }
  html.home-fp-active .step .dot svg{width:clamp(24px,3.2dvh,32px);height:auto}
  html.home-fp-active .step h3{font-size:clamp(12px,1.55dvh,15px);line-height:1.45}
  html.home-fp-active .step p{
    max-width:240px;
    font-size:clamp(13.5px,1.75dvh,16px);
    line-height:1.5;
  }

  /* Platform in action: image and six cards must occupy the middle AND lower
     areas of the slide, not shrink to a small block at its centre. */
  html.home-fp-active .in-action>.wrap{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto minmax(0,1.1fr) minmax(0,.82fr);
    align-content:stretch;
    gap:clamp(12px,2dvh,22px);
  }
  html.home-fp-active .in-action-head{
    margin:0;
    align-items:center;
    gap:clamp(18px,3vw,50px);
  }
  html.home-fp-active .in-action-head>div{gap:clamp(8px,1.2dvh,15px)}
  html.home-fp-active .in-action-head .lead{max-width:600px}
  html.home-fp-active .screen{
    min-height:0;
    height:100%;
    overflow:hidden;
    padding:clamp(6px,1dvh,12px);
    display:flex;
    align-items:center;
    justify-content:center;
  }
  html.home-fp-active .screen img{
    width:100%;
    height:100%;
    max-height:none;
    object-fit:contain;
  }
  html.home-fp-active .scope{
    min-height:0;
    margin:0;
    grid-template-rows:repeat(2,minmax(0,1fr));
    gap:clamp(10px,1.5dvh,18px);
  }
  html.home-fp-active .scope .card{
    height:100%;
    min-height:0;
    padding:clamp(10px,1.6dvh,19px);
    row-gap:clamp(5px,.9dvh,11px);
  }
  html.home-fp-active .scope .card__icon{
    width:clamp(35px,4.5dvh,45px);
    height:clamp(35px,4.5dvh,45px);
  }

  /* Regulations panel: make the side-by-side blocks comparable in height. */
  html.home-fp-active .trust>.wrap{
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:clamp(18px,2.4vw,35px);
  }
  html.home-fp-active .trust .panel{
    height:min(71dvh,650px);
    overflow:auto;
    justify-content:space-evenly;
    padding:clamp(22px,3dvh,40px);
    gap:clamp(14px,2dvh,26px);
  }
  html.home-fp-active .trust .panel h3{font-size:clamp(24px,3.2dvh,34px)}
  html.home-fp-active .laws li{padding:clamp(9px,1.5dvh,18px) 0}
  html.home-fp-active .laws small,
  html.home-fp-active .laws li>span{font-size:clamp(13px,1.65dvh,15px)}
  html.home-fp-active .feats{gap:clamp(12px,2dvh,22px)}

  /* Carousels: active slide fills the height; controls stay at the bottom.
     Content is spread intentionally instead of centred in a tiny blob. */
  html.home-fp-active main>.issue1-carousel{
    justify-content:stretch;
    gap:0;
    padding:clamp(14px,2.3dvh,29px) 0 clamp(10px,1.5dvh,22px);
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide.is-active{
    display:flex;
    flex-direction:column;
    flex:1 1 auto;
    min-height:0;
    max-height:none;
    overflow-x:hidden;
    overflow-y:auto;
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide>.wrap{
    display:flex;
    flex-direction:column;
    flex:1 0 auto;
    min-height:100%;
    justify-content:space-evenly;
    gap:clamp(12px,2dvh,25px);
    padding-top:clamp(12px,2.4dvh,27px);
    padding-bottom:clamp(12px,2.4dvh,27px);
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide .h2{
    font-size:clamp(30px,4.3dvh,45px);
  }
  html.home-fp-active .issue1-grid,
  html.home-fp-active .issue1-platform-areas{
    flex:1 1 auto;
    min-height:0;
    grid-auto-rows:minmax(0,1fr);
    align-content:stretch;
    gap:clamp(13px,2dvh,22px);
    margin-top:clamp(6px,1.2dvh,16px);
  }
  html.home-fp-active .issue1-usecase{
    flex:1 1 auto;
    min-height:0;
    grid-auto-rows:minmax(0,1fr);
    gap:clamp(12px,2dvh,22px);
  }
  html.home-fp-active main>.issue1-carousel .carousel-controls{
    padding-top:clamp(8px,1.3dvh,16px);
    min-height:48px;
  }
  html.home-fp-active .issue1-section .lead{max-width:1080px}

  /* Footer must remain readable when placed in the last snap viewport. */
  html.home-fp-active .foot-col{font-size:clamp(13px,1.65dvh,15px)}
  html.home-fp-active .foot-col h3{font-size:clamp(14px,1.8dvh,16px)}
}
@media (min-width:1101px) and (min-height:641px) and (max-height:740px) and (pointer:fine){
  html.home-fp-active .in-action>.wrap{grid-template-rows:auto minmax(0,1fr) minmax(0,1.1fr)}
  html.home-fp-active .in-action-head .lead{font-size:14px}
  html.home-fp-active .scope .card{padding:10px}
  html.home-fp-active .approach>.wrap{gap:14px}
  html.home-fp-active .modules{height:min(67dvh,480px)}
  html.home-fp-active .offers{height:min(66dvh,470px)}
}


/* 20 October 2026: per-slide layout corrections from four Product Owner screenshots.
   Scope every change to its named slide to avoid renewed global compression. */
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  /* One screen for the product screenshot, a separate screen for the 6 features. */
  html.home-fp-active main>section.in-action-visual>.wrap{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto minmax(0,1fr);
    align-content:stretch;
    gap:clamp(16px,2.5dvh,30px);
  }
  html.home-fp-active .in-action-visual .screen{
    min-height:0;
    height:100%;
    max-height:100%;
    overflow:hidden;
  }
  html.home-fp-active .in-action-visual .screen img{
    width:100%;
    height:100%;
    max-height:none;
    object-fit:contain;
  }
  html.home-fp-active main>section.in-action-capabilities>.wrap{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto minmax(0,1fr);
    align-content:stretch;
    gap:clamp(20px,3dvh,40px);
  }
  html.home-fp-active .in-action-capabilities .scope{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-rows:repeat(2,minmax(0,1fr));
    align-self:stretch;
    height:100%;
    min-height:0;
    margin:0;
    gap:clamp(14px,2dvh,25px);
  }
  html.home-fp-active .in-action-capabilities .scope .card{
    min-height:0;
    height:100%;
    padding:clamp(14px,2.25dvh,25px);
    align-content:safe center;
    row-gap:clamp(10px,1.5dvh,18px);
  }
  html.home-fp-active .in-action-capabilities .scope .card__body{
    font-size:clamp(14px,1.75dvh,17px);
    line-height:1.55;
  }
  /* Workflow: no giant blank gap above the title, no text stranded at the
     top of oversized cards; 4 balanced, readable steps in one composition. */
  html.home-fp-active main>section.flow-section>.wrap{
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:stretch;
    gap:clamp(20px,4dvh,45px);
    overflow-y:auto;
  }
  html.home-fp-active .flow-section .flow-heading{
    display:flex;
    flex-direction:column;
    gap:clamp(10px,1.5dvh,20px);
    align-items:flex-start;
    flex:0 0 auto;
  }
  html.home-fp-active .flow-section .flow-heading>.h2{
    font-size:clamp(35px,5dvh,51px);
    line-height:1.12;
  }
  html.home-fp-active .flow-section .flow-heading>.lead{
    max-width:1200px;
    font-size:clamp(15px,1.8dvh,18px);
    line-height:1.55;
  }
  html.home-fp-active .flow-section .issue1-flow{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    align-items:stretch;
    flex:0 0 auto;
    width:100%;
    margin:0;
    gap:clamp(14px,2vw,28px);
  }
  html.home-fp-active .flow-section .issue1-flow li{
    min-height:clamp(250px,38dvh,340px);
    max-height:none;
    padding:clamp(58px,9dvh,80px) clamp(17px,2vw,28px) clamp(18px,2.8dvh,30px);
    display:flex;
    flex-direction:column;
    justify-content:center;
    align-items:flex-start;
    gap:clamp(10px,1.6dvh,18px);
  }
  html.home-fp-active .flow-section .issue1-flow li::before{
    top:clamp(13px,2dvh,22px);
    left:clamp(17px,2vw,28px);
    width:clamp(35px,5dvh,47px);
    height:clamp(35px,5dvh,47px);
  }
  html.home-fp-active .flow-section .issue1-flow strong{
    font-size:clamp(18px,2.45dvh,23px);
  }
  html.home-fp-active .flow-section .issue1-flow li span{
    font-size:clamp(14px,1.77dvh,17px);
    line-height:1.55;
    display:block;
    overflow:visible;
    -webkit-line-clamp:unset;
    line-clamp:unset;
  }
  /* Architecture: content, not padding, should occupy the six tall cards.
     Earlier global 2-line clamp is intentionally overridden here only. */
  html.home-fp-active #percorso-piattaforma .issue1-platform-areas{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-rows:repeat(2,minmax(0,1fr));
    grid-auto-rows:minmax(0,1fr);
    flex:1 1 auto;
    min-height:0;
    height:auto;
    align-content:stretch;
    gap:clamp(14px,2dvh,24px);
  }
  html.home-fp-active #percorso-piattaforma .issue1-platform-areas .card{
    min-height:0;
    height:100%;
    padding:clamp(18px,2.4dvh,30px);
    grid-template-rows:auto minmax(0,1fr);
    align-content:stretch;
    align-items:start;
    row-gap:clamp(12px,1.8dvh,20px);
  }
  html.home-fp-active #percorso-piattaforma .issue1-platform-areas .card__body{
    min-height:0;
    max-height:none;
    font-size:clamp(14px,1.72dvh,16px);
    line-height:1.55;
    display:block;
    -webkit-line-clamp:unset;
    line-clamp:unset;
    overflow:visible;
  }
  /* Banking/insurance always has two visual rows, including transparent and
     clearly labelled slots for applications not yet defined. */
  html.home-fp-active #verticali-finanza .issue1-grid{
    grid-template-columns:repeat(3,minmax(0,1fr));
    grid-template-rows:repeat(2,minmax(190px,1fr));
    grid-auto-rows:minmax(190px,1fr);
    flex:1 1 auto;
    align-content:stretch;
    min-height:0;
    gap:clamp(14px,2dvh,24px);
  }
  html.home-fp-active #verticali-finanza .issue1-grid .card{
    min-height:0;
    padding:clamp(18px,2.4dvh,29px);
    align-content:safe center;
  }
  html.home-fp-active #verticali-finanza .finance-placeholder{
    border-style:dashed;
    border-color:color-mix(in srgb,var(--line) 75%,#74808a);
    background:rgba(21,27,32,.46);
    color:var(--dim);
    align-content:safe center;
    opacity:.72;
  }
  html.home-fp-active #verticali-finanza .finance-placeholder .card__body{
    max-height:none;
    min-height:0;
    -webkit-line-clamp:unset;
    line-clamp:unset;
    font-size:clamp(13.5px,1.7dvh,15px);
    line-height:1.5;
    overflow:visible;
  }
}
.finance-placeholder__mark{
  grid-area:icon;
  display:grid;
  place-items:center;
  width:clamp(42px,5dvh,52px);
  height:clamp(42px,5dvh,52px);
  border:1px dashed var(--dim);
  border-radius:11px;
  font-size:27px;
  line-height:1;
  color:var(--dim);
}
.finance-placeholder{
  border-style:dashed;
  opacity:.8;
}
.finance-placeholder .card__title{color:var(--muted)}
.finance-placeholder .card__body{color:var(--dim)}
/* Phones/tablets retain normal document flow; do not force inaccessible
   fullscreen card heights or three-column layouts outside desktop snap. */
@media(max-width:1100px),(max-height:640px),(pointer:coarse){
  .in-action-visual .screen{height:auto}
  .in-action-capabilities .scope{margin-top:clamp(18px,3vw,36px)}
  .flow-section .flow-heading{display:flex;flex-direction:column;gap:12px}
  .flow-section .issue1-flow li{justify-content:flex-start}
}


/* 20/10/2026: all card bodies use their available space.
   Shared background follows the dark raised-surface style of Controller and
   AIGovernance; never force 2/3-line truncation when more room is available. */
body > main .card:not(.finance-placeholder){
  background:linear-gradient(155deg,#1c2329 0%,var(--surface) 53%,#141a1f 100%);
  border-color:#30383f;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.025);
}
body > main .card:not(.finance-placeholder) .card__title,
body > main .card:not(.finance-placeholder) .card__subtitle{
  white-space:normal;
  overflow:visible;
  text-overflow:clip;
  overflow-wrap:break-word;
}
body > main .card:not(.finance-placeholder) .card__body{
  display:block;
  -webkit-line-clamp:unset;
  line-clamp:unset;
  min-height:0;
  max-height:none;
  overflow:visible;
  font-size:clamp(14px,1.8dvh,16px);
  line-height:1.5;
}
/* Panels are editorial content too: never retain the old three-line crop
   outside a card just because they share the card body typography. */
body > main .panel > .card__body{
  display:block;
  -webkit-line-clamp:unset;
  line-clamp:unset;
  min-height:0;
  max-height:none;
  overflow:visible;
}
/* Keep the decorative Controller artwork subordinate to readable copy. */
body > main .card:not(.finance-placeholder)::before{opacity:.36}
body > main .card:not(.finance-placeholder) > .site-card-shade{
  background:linear-gradient(90deg,#1b2026 0%,rgba(27,32,38,.98) 37%,rgba(27,32,38,.9) 70%,rgba(27,32,38,.55) 100%);
}
body > main .finance-placeholder{
  visibility:hidden!important;
  background:transparent!important;
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  pointer-events:none!important;
  opacity:0!important;
}
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active body > main .card:not(.finance-placeholder){
    grid-template-rows:min-content minmax(0,1fr);
    align-content:stretch;
    align-items:start;
    row-gap:clamp(12px,1.6dvh,22px);
  }
  html.home-fp-active body > main .card:not(.finance-placeholder) .card__body{
    display:block;
    -webkit-line-clamp:unset;
    line-clamp:unset;
    min-height:0;
    max-height:100%;
    overflow:hidden;
    align-self:stretch;
    font-size:clamp(14px,1.8dvh,16px);
    line-height:1.5;
  }
  /* The six capabilities are ordinary cards too, not an exception to the
     no-arbitrary-ellipsis rule. */
  html.home-fp-active .in-action-capabilities .scope .card__body,
  html.home-fp-active #percorso-piattaforma .issue1-platform-areas .card__body,
  html.home-fp-active main>.issue1-carousel .card__body{
    display:block;
    -webkit-line-clamp:unset;
    line-clamp:unset;
    min-height:0;
    max-height:100%;
    overflow:hidden;
  }
}
/* Text wraps freely on compact/touch viewports: no fixed card heights. */
@media (max-width:1100px),(max-height:640px),(pointer:coarse){
  body > main .card:not(.finance-placeholder) .card__body{
    display:block;
    -webkit-line-clamp:unset;
    line-clamp:unset;
    min-height:0;
    max-height:none;
    overflow:visible;
  }
}


/* Scenario PA: keep seven cards above carousel controls at desktop snap sizes.
   The carousel reserves space for its controls; this slide divides the
   remaining area into an introduction and two equally sized card rows.
   Descriptions may truncate inside each card, never the card itself. */
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active main>.issue1-carousel #caso-uso-pa.carousel-slide.is-active{
    flex:1 1 0;
    min-height:0;
    max-height:none;
    overflow:hidden;
  }
  html.home-fp-active main>.issue1-carousel #caso-uso-pa.carousel-slide>.wrap{
    display:grid;
    grid-template-columns:minmax(0,1fr);
    grid-template-rows:auto auto auto minmax(0,1fr);
    flex:1 1 auto;
    min-height:0;
    height:100%;
    max-height:100%;
    justify-content:stretch;
    align-content:stretch;
    overflow:hidden;
    gap:clamp(8px,1.4dvh,16px);
    padding-top:clamp(8px,1.4dvh,18px);
    padding-bottom:clamp(8px,1.4dvh,18px);
  }
  html.home-fp-active #caso-uso-pa .issue1-usecase{
    display:grid;
    grid-template-columns:repeat(4,minmax(0,1fr));
    grid-template-rows:repeat(2,minmax(0,1fr));
    grid-auto-rows:minmax(0,1fr);
    flex:none;
    align-items:stretch;
    min-height:0;
    height:100%;
    max-height:100%;
    margin:0;
    padding:0;
    gap:clamp(10px,1.5dvh,17px);
    overflow:hidden;
  }
  html.home-fp-active #caso-uso-pa .issue1-usecase>.card{
    box-sizing:border-box;
    min-width:0;
    min-height:0;
    height:100%;
    max-height:100%;
    overflow:hidden;
    padding:clamp(11px,1.65dvh,19px);
    display:grid;
    grid-template-columns:auto minmax(0,1fr);
    grid-template-areas:"icon head" "body body";
    grid-template-rows:min-content minmax(0,1fr);
    align-content:stretch;
    align-items:start;
    column-gap:clamp(10px,1.2vw,15px);
    row-gap:clamp(8px,1.1dvh,13px);
  }
  html.home-fp-active #caso-uso-pa .issue1-usecase>.card .card__body{
    display:block;
    min-width:0;
    min-height:0;
    height:100%;
    max-height:100%;
    align-self:stretch;
    overflow:hidden;
    -webkit-line-clamp:unset;
    line-clamp:unset;
    font-size:clamp(13px,1.7dvh,16px);
    line-height:1.48;
  }
  html.home-fp-active #caso-uso-pa .issue1-usecase>.card .card__header{
    min-width:0;
    align-self:center;
  }
}
/* Below the desktop full-page breakpoint the page stays in natural flow:
   no fixed two-row viewport constraint and no hidden scenario description. */


/* All card backgrounds, artwork and shade now belong to shared-card-art.css. */
/* Process steps retain a small context diagram; parent governance panels remain plain. */
body > main .issue1-flow li{
  background-image:
    linear-gradient(90deg,rgba(27,32,38,.96) 0%,rgba(27,32,38,.86) 48%,rgba(27,32,38,.54) 100%),
    url('/assets/aig-modules/factory.svg');
  background-position:center,right center;
  background-size:cover,75% auto;
  background-repeat:no-repeat;
}
/* A parent panel must not carry a second illustration over its children.
   Keep the opaque panel surface and draw artwork only on its leaf cards. */
body > main .trust .panel{
  background-image:none;
}




/* Product screenshots: independent three-frame carousel inside the existing
   "La piattaforma in esercizio" full-page slide. Six capability cards remain
   a separate top-level slide and are not part of this carousel. */
.in-action-visual .platform-showcase{
  box-sizing:border-box;
  display:grid;
  grid-template-columns:minmax(0,1fr);
  grid-template-rows:minmax(0,1fr) auto;
  width:100%;
  min-width:0;
  min-height:0;
  gap:clamp(8px,1.5dvh,16px);
  padding:clamp(8px,1dvh,12px);
  margin:0;
  overflow:hidden;
}
.in-action-visual .platform-showcase__viewport{
  display:grid;
  grid-template-columns:minmax(0,1fr);
  place-items:center;
  min-width:0;
  min-height:0;
  width:100%;
  aspect-ratio:2048 / 980;
  overflow:hidden;
}
.in-action-visual .platform-showcase__viewport .platform-showcase__slide{
  display:block;
  grid-area:1 / 1;
  width:100%;
  height:100%;
  max-width:100%;
  max-height:100%;
  object-fit:contain;
  border-radius:8px;
}
.in-action-visual .platform-showcase__viewport .platform-showcase__slide[hidden]{
  display:none!important;
}
.in-action-visual .platform-showcase__controls{
  display:flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  min-height:38px;
  gap:clamp(12px,1.5vw,18px);
}
.in-action-visual .platform-showcase__arrow{
  display:grid;
  place-items:center;
  flex:none;
  width:38px;
  height:38px;
  padding:0;
  border:1px solid #3b444c;
  border-radius:50%;
  background:#171d22;
  color:#f4f4f5;
  font:400 18px/1 'Plus Jakarta Sans',system-ui,sans-serif;
  cursor:pointer;
}
.in-action-visual .platform-showcase__arrow:hover{
  border-color:var(--accent);
  color:var(--accent);
  background:#1c1714;
}
.in-action-visual .platform-showcase__dots{
  display:flex;
  align-items:center;
  gap:9px;
}
.in-action-visual .platform-showcase__dot{
  flex:none;
  width:9px;
  height:9px;
  padding:0;
  border:0;
  border-radius:999px;
  background:#59616a;
  cursor:pointer;
}
.in-action-visual .platform-showcase__dot.is-active{
  width:25px;
  background:var(--accent);
}
.in-action-visual .platform-showcase__arrow:focus-visible,
.in-action-visual .platform-showcase__dot:focus-visible,
.in-action-visual .platform-showcase:focus-visible{
  outline:2px solid var(--accent);
  outline-offset:3px;
}
.in-action-visual .platform-showcase__status{
  position:absolute;
  width:1px;
  height:1px;
  padding:0;
  margin:-1px;
  overflow:hidden;
  clip-path:inset(50%);
  white-space:nowrap;
}
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active .in-action-visual .platform-showcase{
    display:grid;
    grid-template-rows:minmax(0,1fr) auto;
  }
  html.home-fp-active .in-action-visual .platform-showcase__viewport{
    height:100%;
    aspect-ratio:auto;
  }
  html.home-fp-active .in-action-visual .platform-showcase__viewport .platform-showcase__slide{
    /* Fit the entire source screenshot in the available stage. A fixed-width
       image here exceeded the stage height and the viewport cropped its edge. */
    width:100%;
    height:100%;
    min-width:0;
    min-height:0;
    max-height:100%;
    max-width:100%;
    align-self:stretch;
    object-fit:contain;
  }
}
@media (max-width:1100px),(max-height:640px),(pointer:coarse){
  .in-action-visual .platform-showcase{
    height:auto;
    grid-template-rows:auto auto;
  }
  .in-action-visual .platform-showcase__viewport{
    height:auto;
  }
  .in-action-visual .platform-showcase__viewport .platform-showcase__slide{
    height:auto;
    max-height:none;
  }
}

/* Homepage hero: keep the original wireframe brain, but not the outdated
   perspective-transformed screenshot embedded in the legacy composite.
   The live product PNG is an independent, flat, entirely visible image. */
.hero-visual--flat{
  position:relative;
  isolation:isolate;
  aspect-ratio:2112 / 970;
  min-width:0;
}
.hero-visual--flat .hero-wireframe,
html.home-fp-active .home-fp-intro .hero-visual--flat .hero-wireframe{
  position:absolute;
  inset:0;
  display:block;
  width:100%;
  height:100%;
  max-height:none;
  object-fit:fill;
  clip-path:inset(0 67% 0 0);
  -webkit-mask-image:linear-gradient(90deg,#000 0%,#000 23%,transparent 32%),linear-gradient(180deg,transparent 0%,#000 8%,#000 92%,transparent 100%);
  -webkit-mask-composite:source-in;
  mask-image:linear-gradient(90deg,#000 0%,#000 23%,transparent 32%),linear-gradient(180deg,transparent 0%,#000 8%,#000 92%,transparent 100%);
  mask-composite:intersect;
  transform:none;
  pointer-events:none;
}
.hero-visual--flat .hero-flat-screen{
  position:absolute;
  z-index:1;
  top:50%;
  right:0;
  /* The product view is useful only when it remains legible. Let it use the
     visual column while preserving its native 2048:972 ratio: never crop it
     to manufacture a decorative composition. */
  width:100%;
  height:auto;
  aspect-ratio:2048 / 972;
  min-width:0;
  margin:0;
  padding:0;
  overflow:visible;
  transform:translateY(-50%);
  border:1px solid #343b42;
  border-radius:0;
  background:#141619;
  box-shadow:0 18px 48px rgba(0,0,0,.38);
}
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  /* Keep a clear three-line title while allowing the live interface to retain
     its full native ratio and remain entirely visible. */
  html.home-fp-active .home-fp-intro>.hero>.wrap{
    grid-template-columns:minmax(0,.84fr) minmax(0,1.16fr);
    gap:clamp(18px,2.2vw,38px);
  }
  html.home-fp-active .home-fp-intro .hero h1{
    font-size:clamp(32px,4.05dvh,42px);
    line-height:1.08;
  }
  html.home-fp-active .home-fp-intro .hero-copy{
    z-index:3;
    gap:clamp(13px,1.8dvh,18px);
  }
  html.home-fp-active .home-fp-intro .hero-copy .lead{
    max-width:none;
    font-size:clamp(15px,2dvh,18px);
    line-height:1.45;
    text-wrap:pretty;
  }
  /* The wireframe is scaled independently and aligned to the live interface.
     It grows toward the copy, so the screen stays fully visible and uncut. */
  html.home-fp-active .home-fp-intro .hero-visual--flat{
    z-index:1;
    overflow:visible;
  }
  html.home-fp-active .home-fp-intro .hero-visual--flat .hero-wireframe{
    z-index:0;
    inset:auto auto 50% -31%;
    width:175%;
    height:auto;
    aspect-ratio:2112 / 970;
    /* Discard the one-pixel artefact at the outside edge of the source artwork.
       This scales with the illustration and leaves the brain itself intact. */
    clip-path:inset(0 0 0 .75%);
    object-fit:contain;
    opacity:.8;
    transform:translateY(50%);
  }
  html.home-fp-active .home-fp-intro .hero-visual--flat .hero-flat-screen{
    z-index:2;
  }
}
.hero-visual--flat .hero-flat-screen > img,
html.home-fp-active .home-fp-intro .hero-visual--flat .hero-flat-screen > img{
  position:relative;
  display:block;
  width:100%;
  height:auto;
  max-width:100%;
  max-height:none;
  aspect-ratio:2048 / 972;
  object-fit:contain;
  object-position:center;
  border:0;
  border-radius:0;
  -webkit-mask-image:none;
  -webkit-mask-composite:source-over;
  mask-image:none;
  mask-composite:add;
  clip-path:none;
  transform:none;
}
.hero-visual--flat .hero-video-play{
  position:absolute;
  z-index:2;
  inset:50% auto auto 50%;
  display:grid;
  place-items:center;
  width:clamp(48px,5vw,80px);
  height:clamp(48px,5vw,80px);
  padding:0;
  transform:translate(-50%,-50%);
  border:2px solid var(--accent);
  border-radius:50%;
  background:rgba(9,13,17,.78);
  color:#fff;
  cursor:pointer;
  box-shadow:0 10px 30px rgba(0,0,0,.4);
  transition:background .18s ease,border-color .18s ease,scale .18s ease;
}
.hero-visual--flat .hero-video-play svg{
  width:42%;
  height:42%;
  margin-left:5%;
}
.hero-visual--flat .hero-video-play:hover{
  border-color:#ff925e;
  background:rgba(229,83,27,.92);
  scale:1.05;
}
.hero-visual--flat .hero-video-play:focus-visible{
  outline:3px solid #fff;
  outline-offset:4px;
}
.hero-video-dialog{
  width:min(500px,calc(100vw - 36px));
  padding:0;
  border:1px solid #444b52;
  border-radius:14px;
  background:#171d22;
  color:var(--text);
  box-shadow:0 24px 80px rgba(0,0,0,.7);
}
.hero-video-dialog::backdrop{background:rgba(0,0,0,.75)}
.hero-video-dialog__inner{
  position:relative;
  display:flex;
  flex-direction:column;
  gap:16px;
  padding:32px;
}
.hero-video-dialog h2{font-size:clamp(21px,3vw,27px);line-height:1.25}
.hero-video-dialog p{color:var(--muted)}
.hero-video-dialog__inner>.btn{align-self:flex-start}
.hero-video-dialog__close{
  position:absolute;
  top:12px;
  right:12px;
  width:36px;
  height:36px;
  border:1px solid var(--line);
  border-radius:50%;
  background:#202830;
  color:#fff;
  font-size:25px;
  line-height:1;
  cursor:pointer;
}
@media (max-width:960px){
  .hero-visual--flat .hero-flat-screen{width:80%}
  .hero-visual--flat .hero-video-play{width:58px;height:58px}
}
@media (max-width:600px){
  .hero-visual--flat .hero-flat-screen{width:87%}
  .hero-visual--flat .hero-video-play{width:44px;height:44px}
  .hero-video-dialog__inner{padding:25px}
}
@media (prefers-reduced-motion:reduce){
  .hero-visual--flat .hero-video-play{transition:none}
}

/* Full-page reading surfaces: retain one scrolling owner (the page), never
   draw nested scrollbars inside editorial cards or the carousel viewport.
   Long descriptions are shortened by site.js and remain available in dialog. */
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active .trust .panel,
  html.home-fp-active .trust .panel .card,
  html.home-fp-active main>.issue1-carousel .carousel-slide.is-active,
  html.home-fp-active main>.issue1-carousel .carousel-slide>.wrap,
  html.home-fp-active main>.issue1-carousel .issue1-grid .card,
  html.home-fp-active main>.issue1-carousel .issue1-platform-areas .card{
    overflow-y:hidden;
    scrollbar-width:none;
  }
  html.home-fp-active .trust .panel > .card__body,
  html.home-fp-active .trust .panel .card__body,
  html.home-fp-active main>.issue1-carousel .card__body{
    min-height:0;
    max-height:100%;
    overflow:hidden;
    overflow-wrap:break-word;
  }
  html.home-fp-active .trust .panel > .card__body,
  html.home-fp-active main>.issue1-carousel .card__body{
    font-size:clamp(14px,1.75dvh,16px);
    line-height:1.4;
  }
  html.home-fp-active .trust .panel > .card__body{align-self:stretch}
}

/* Desktop viewport correction: prevent the carousel content flex item from
   forcing two card rows below the fixed controls. Cards may shorten their
   descriptions, but the complete card boxes must remain on screen. */
@media (min-width:1101px) and (min-height:641px) and (pointer:fine){
  html.home-fp-active main>.issue1-carousel .carousel-slide.is-active{
    min-height:0;
    overflow:hidden;
  }
  html.home-fp-active main>.issue1-carousel .carousel-slide.is-active>.wrap{
    box-sizing:border-box;
    flex:1 1 0;
    height:100%;
    min-height:0;
    max-height:100%;
    justify-content:flex-start;
    overflow:hidden;
  }
  html.home-fp-active main>.issue1-carousel .issue1-grid,
  html.home-fp-active main>.issue1-carousel .issue1-platform-areas{
    flex:1 1 0;
    min-height:0;
    height:auto;
    grid-template-rows:repeat(2,minmax(0,1fr));
    overflow:hidden;
  }
  html.home-fp-active main>.issue1-carousel .issue1-grid>.card,
  html.home-fp-active main>.issue1-carousel .issue1-platform-areas>.card{
    box-sizing:border-box;
    min-height:0;
    max-height:100%;
    overflow:hidden;
  }
  /* Preserve original two-column law rows: reference on the right,
     copy on the left. Avoid grid tracks smaller than their content. */
  html.home-fp-active .trust .panel:has(>.laws){
    display:flex;
    flex-direction:column;
    justify-content:flex-start;
    gap:clamp(7px,1dvh,12px);
    padding:clamp(12px,1.7dvh,20px);
  }
  html.home-fp-active .trust .panel>.laws{
    display:flex;
    flex-direction:column;
    flex:1 1 auto;
    min-height:0;
    justify-content:space-between;
  }
  html.home-fp-active .trust .panel>.laws>li{
    display:flex;
    flex-direction:row;
    justify-content:space-between;
    align-items:flex-start;
    flex:0 1 auto;
    min-height:0;
    gap:clamp(8px,1vw,18px);
    padding:clamp(4px,.6dvh,8px) 0;
  }
  html.home-fp-active .trust .panel>.laws>li>div{
    min-width:0;
    flex:1 1 auto;
  }
  html.home-fp-active .trust .panel>.laws>li>span{
    position:static;
    flex:0 0 33%;
    max-width:33%;
    text-align:right;
    align-self:flex-start;
    font-size:clamp(11px,1.5dvh,14px);
    line-height:1.35;
  }
  html.home-fp-active .trust .panel>.laws small{
    display:block;
    font-size:clamp(12px,1.5dvh,14px);
    line-height:1.32;
  }
}
