/* V10: shared visual foundation. Keeps the lively neon identity while making
   every route read as part of one deliberate, calm system. */
:root{--site-width:1440px;--site-gutter:clamp(24px,4vw,56px);--section-gap:clamp(58px,8vw,108px)}
main{overflow:hidden}
.page-hero,.article,.collection-grid,.ideas-layout,.contact-layout,.download-state{width:min(calc(100% - (var(--site-gutter) * 2)),var(--site-width));max-width:none}
.page-hero{margin-top:clamp(28px,4vw,54px)}
.page-hero:after{right:clamp(18px,3vw,34px)}
.section{padding-top:var(--section-gap);padding-bottom:var(--section-gap)}
.section+.section{padding-top:0}
.main-nav--v7 .nav-panel{width:min(286px,calc(100vw - 36px))}
.main-nav--v7 .nav-panel>p{font-size:.72rem}
.main-nav--v7 .nav-panel>a{min-height:53px}

/* Home is a welcome page, not a catalogue. The important status is present
   without creating another destination competing with the update centre. */
.route-home .hero{min-height:clamp(505px,58vw,655px)}
.route-home .start-here{margin-top:clamp(42px,6vw,78px)}
.route-home .gippittino-welcome{margin-top:clamp(28px,4vw,48px)}
.home-status-ribbon{display:grid;grid-template-columns:auto minmax(0,1fr) auto;gap:18px;align-items:center;width:min(calc(100% - (var(--site-gutter) * 2)),var(--site-width));margin:clamp(30px,4vw,48px) auto 0;padding:19px 22px;border:1px solid rgba(98,227,255,.32);border-radius:18px;background:linear-gradient(105deg,rgba(7,49,90,.82),rgba(28,16,91,.81));box-shadow:0 14px 38px rgba(0,0,0,.22)}
.home-status-ribbon__lamp{width:13px;height:13px;border-radius:50%;background:#69f1bd;box-shadow:0 0 0 5px rgba(105,241,189,.12),0 0 19px rgba(105,241,189,.76)}
.home-status-ribbon p{margin:0;color:#c4dce9;font-size:.88rem;line-height:1.5}.home-status-ribbon b{color:#fff}.home-status-ribbon a{color:#78eaff;font-size:.8rem;font-weight:900;text-decoration:none;white-space:nowrap}.home-status-ribbon a:hover{text-decoration:underline}

/* Give long information pages a predictable rhythm. */
.route-cos-e-gippittinoagentai .static-prose,.route-sicurezza .static-prose{margin-top:30px;margin-bottom:clamp(64px,9vw,118px)}
.static-prose h2{margin-top:clamp(32px,5vw,54px);scroll-margin-top:106px}.static-prose h2:first-child{margin-top:0}.static-prose p,.static-prose li{line-height:1.75}
.hub-page{min-height:calc(100vh - 72px)}
.hub-grid{margin-top:18px}.hub-note{margin-bottom:0}

/* Every public area now inherits the same readable frame. Earlier heroes used
   a viewport-based offset inside a constrained container: on wide monitors it
   pulled Gippittino toward the text. The mascot now stays in its own corner. */
.route-cantiere .cantiere-project-hub,.route-cantiere .cantiere-calendar,.route-cantiere .cantiere-diary-link,.route-cantiere .status-explainer,.route-cantiere .cantiere-map,.route-versioni .content-grid,.route-software .work-categories,.route-software .software-catalog-shell,.route-software .work-spotlight,.route-software .software-list-section,.route-piazza .piazza-rooms,.route-piazza .weekly-question,.route-piazza .piazza-note,.route-idee .ideas-layout,.route-regali .collection-grid,.route-contatti .contact-layout{width:min(calc(100% - (var(--site-gutter) * 2)),var(--site-width));max-width:none;margin-right:auto;margin-left:auto}

/* The Cantiere status board is deliberately a full-width stage, never a card.
   Keeping it out of the shared card frame prevents the three states from
   collapsing into a narrow column on wide displays. */
.route-cantiere .status-board{width:100vw;max-width:100vw;margin:clamp(58px,8vw,108px) calc(50% - 50vw) 0;padding:clamp(54px,7vw,88px) max(var(--site-gutter),calc((100vw - var(--site-width))/2));box-sizing:border-box}
.route-cantiere .status-board-heading,.route-cantiere .status-columns{width:100%;max-width:var(--site-width);margin-right:auto;margin-left:auto}
.route-cantiere .status-columns{grid-template-columns:repeat(3,minmax(0,1fr))}
.route-versioni .content-grid,.route-regali .collection-grid{padding-right:0;padding-left:0}
.route-idee .ideas-layout,.route-contatti .contact-layout{padding-bottom:clamp(66px,9vw,118px)}
.route-cantiere .world-hero,.route-versioni .world-hero,.route-piazza .world-hero{padding-right:max(var(--site-gutter),calc((100% - var(--site-width))/2));padding-left:max(var(--site-gutter),calc((100% - var(--site-width))/2))}
.route-software .software-catalog-shell{padding-right:0;padding-left:0}

/* Cantiere: fluid from wide screens down to a phone, without fixed columns. */
.route-cantiere .cantiere-calendar{width:min(calc(100% - (var(--site-gutter) * 2)),var(--site-width));margin:clamp(28px,4vw,54px) auto;padding:clamp(22px,3.8vw,54px)}
.route-cantiere .cantiere-calendar__timeline>li{grid-template-columns:clamp(86px,8vw,128px) minmax(0,1fr);gap:clamp(14px,2vw,26px)}
.route-cantiere .cantiere-calendar__timeline:before{left:calc(clamp(86px,8vw,128px) / 2)}
.route-cantiere .cantiere-calendar time{min-height:clamp(96px,9vw,132px)}
.route-cantiere .cantiere-calendar__timeline article{padding:clamp(19px,2.1vw,30px)}

/* Compact utility pages need room for words first. Gippittino remains a soft
   background presence rather than sitting above headings or form labels. */
.route-idee .page-hero.compact,.route-regali .page-hero.compact,.route-contatti .page-hero.compact{min-height:300px;padding-right:clamp(36px,8vw,92px)}
.route-idee .page-hero.compact:after,.route-regali .page-hero.compact:after,.route-contatti .page-hero.compact:after{right:-106px;bottom:-102px;width:270px;height:325px;opacity:.22;filter:saturate(.9) contrast(.96)}
.route-idee .page-hero h1,.route-regali .page-hero h1,.route-contatti .page-hero h1{max-width:14ch}
.route-software .software-page-hero{min-height:365px;padding-right:clamp(235px,30vw,430px);padding-bottom:62px;background:radial-gradient(circle at 84% 27%,rgba(89,99,255,.26),transparent 19rem),linear-gradient(115deg,rgba(5,17,43,.98),rgba(10,40,96,.85))}
.route-software .software-page-hero:after{right:clamp(22px,4vw,52px);bottom:-22px;opacity:.9}
.route-software .software-page-hero h1{max-width:10ch}
.route-cantiere .page-hero,.route-versioni .page-hero,.route-piazza .page-hero{min-height:350px;padding-bottom:62px}

/* Strong motion remains optional: visitors who prefer reduced motion receive
   the same layout and information without decorative movement. */
@media (prefers-reduced-motion:reduce){*,*:before,*:after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}
@media (max-width:800px){:root{--site-gutter:18px}.route-home .hero{min-height:0}.home-status-ribbon{grid-template-columns:auto minmax(0,1fr);gap:13px;padding:18px}.home-status-ribbon a{grid-column:2;justify-self:start}.page-hero{margin-top:22px}.page-hero:after{right:14px}.route-software .software-page-hero{min-height:315px;padding-right:clamp(180px,34vw,270px)}.route-software .software-page-hero:after{right:16px;opacity:.72}.route-idee .page-hero.compact,.route-regali .page-hero.compact,.route-contatti .page-hero.compact{min-height:255px;padding-right:30px}.route-idee .page-hero.compact:after,.route-regali .page-hero.compact:after,.route-contatti .page-hero.compact:after{right:-105px;opacity:.14}.section{padding-top:64px;padding-bottom:64px}}
@media (max-width:680px){.route-cantiere .cantiere-calendar{margin-right:auto;margin-left:auto;padding:25px 19px;border-radius:21px}.route-cantiere .cantiere-calendar__head{display:block}.route-cantiere .cantiere-calendar__badge{width:104px;margin-top:20px}.route-cantiere .cantiere-calendar__timeline{gap:20px}.route-cantiere .cantiere-calendar__timeline:before{display:none}.route-cantiere .cantiere-calendar__timeline>li{display:block}.route-cantiere .cantiere-calendar time{grid-template-columns:auto auto auto;justify-content:start;gap:8px;min-height:0;margin-bottom:10px;padding:10px 13px}.route-cantiere .cantiere-calendar time b{font-size:1.15rem}.route-cantiere .cantiere-calendar time span,.route-cantiere .cantiere-calendar time small{margin:0}.route-cantiere .cantiere-calendar__timeline article{padding:21px 19px}.route-cantiere .cantiere-calendar__timeline ul{display:grid;gap:7px}.route-cantiere .cantiere-calendar__timeline ul li{border-radius:10px}}
@media (max-width:700px){.route-cantiere .status-board{padding-top:48px;padding-bottom:48px}.route-cantiere .status-columns{grid-template-columns:1fr}}


