/*
 * nset.it — one stylesheet for the whole site.
 *
 * Ported from the redesign prototype `nset-redesign.html`, which is NOT in this
 * repository — `materiali/` is gitignored, so that name resolves only if a
 * local copy happens to exist. The durable address, from the brief, is
 * https://claude.ai/artifact/RxNDF1UCkj2EkTGD66uFkA — use it rather than a
 * local file if you are checking whether this still matches the design.
 *
 * Its own notes say the prototype's code is the source and that classes and tokens
 * may be taken as they are. They were: the declarations below are the
 * prototype's, verbatim, so that a difference between the site and the
 * prototype is a difference somebody chose rather than one that crept in while
 * retyping.
 *
 * What was NOT taken, because it only existed to render the prototype: the
 * `.proto` page-switcher bar, the `.doc` / `pre.brief` / `.sw` styles of its
 * development-notes page, the `.ph` placeholder bars that stood in for legal
 * text, and `.notice`. The real legal pages carry real text and use `.legal`.
 *
 * What was ADDED, because the prototype has no equivalent: the consent banner
 * at the end of this file. The prototype shows the three buttons on its cookie
 * page but never the bar itself.
 *
 * Three things to know before changing it:
 *
 *   1. COLOURS ARE TOKENS, and there are three theme blocks, not two. `:root`
 *      is light; `@media (prefers-color-scheme: dark)` is guarded with
 *      `:root:not([data-theme="light"])` so an explicit light choice beats the
 *      system; `:root[data-theme="dark"]` repeats the dark values so an
 *      explicit dark choice wins too. A value defined in only one of the three
 *      is wrong in at least one state. The theme button writes `data-theme` and
 *      localStorage — see assets/site.js.
 *
 *   2. THE PLATE IS THREE NESTED ELEMENTS and has to stay that way:
 *      `.plate > .pb.c16 > .pi.c16`. The 1px border is the `.pb` gradient
 *      showing through, the bevel is `clip-path`, and the shadow is a
 *      `filter: drop-shadow` on the OUTER element because a clip-path would cut
 *      a box-shadow off. Collapse the nesting and you lose the border, the
 *      bevel or the shadow.
 *
 *   3. FONTS ARE SELF-HOSTED, from assets/fonts/. Not a performance choice:
 *      the prototype linked fonts.googleapis.com, and /privacy/ and /cookie/
 *      say in writing that this site loads no fonts from external servers. See
 *      assets/fonts/LICENSES.md. Each page links fonts.css before this file.
 *
 * The display face is used at widths the fallback cannot reach — `font-stretch`
 * 62% to 85% — so a missing Archivo does not degrade, it changes the design.
 * That is the one visual dependency on a file rather than on a rule.
 */


/* Layout: pagine a colonna unica (max 1280px), blocchi come piastre di chitina smussate; temi chiaro e scuro con arancione primario */
:root{
  --orange:#FF6A13;
  --bg:#F4F1EA; --text:#16130F; --body:#3A362E; --muted:#5F594D; --line:#D6D0C3; --setae:#C9C2B3; --deco:#CFC8B9;
  --ink:#A83F06; --stroke:#C2500C; --on-accent:#16130F; --proto:#E8E3D8; --code:#EBE6DC; --wing-op:.55;
  --plate-edge:linear-gradient(180deg,#FFFFFF 0%,#D9D3C6 60%,#C4BDAE 100%);
  --plate-bg:linear-gradient(180deg,#FFFFFF 0%,#FAF8F3 55%,#F0ECE3 100%);
  --plate-inset:inset 0 1px 0 #FFFFFF, inset 0 -10px 24px rgba(120,90,50,.06);
  --sh-plate:drop-shadow(0 10px 14px rgba(70,45,20,.16)) drop-shadow(0 2px 3px rgba(70,45,20,.12));
  --well:radial-gradient(90% 90% at 40% 30%,#FFFFFF,#E6E1D6);
  --well-inset:inset 0 3px 8px rgba(70,45,20,.18), inset 0 -1px 0 #FFFFFF;
  --insect-fill:#FFF4EA; --insect-shadow:drop-shadow(5px 8px 3px rgba(70,45,20,.28)); --pin:#16130F;
  --mark-shadow:0 1px 0 #FFFFFF, 0 18px 30px rgba(70,45,20,.18); --h2-shadow:none;
  --btn1-sh:drop-shadow(0 8px 10px rgba(120,50,0,.28)) drop-shadow(0 0 14px rgba(255,106,19,.25));
  --btn2-edge:linear-gradient(180deg,#FFFFFF,#C4BDAE); --btn2-bg:linear-gradient(180deg,#FFFFFF,#EEEAE1);
  --btn2-gloss:inset 0 1px 0 #FFFFFF; --sh-btn2:drop-shadow(0 4px 5px rgba(70,45,20,.18));
  --f-display:'Archivo','Arial Narrow',system-ui,sans-serif; --f-mono:'JetBrains Mono',ui-monospace,'SFMono-Regular',Menlo,monospace;
  color-scheme:light;
}
@media (prefers-color-scheme: dark){ :root:not([data-theme="light"]){
  --bg:#0E0F10; --text:#ECEDEE; --body:#C3C7CB; --muted:#9BA1A7; --line:#2B2E31; --setae:#34383C; --deco:#4A4F54;
  --ink:#FF6A13; --stroke:#FF6A13; --on-accent:#0E0F10; --proto:#16181A; --code:#16181A; --wing-op:.9;
  --plate-edge:linear-gradient(180deg,#44494E 0%,#23262A 40%,#1B1D20 100%);
  --plate-bg:linear-gradient(180deg,#1B1D20 0%,#141517 55%,#111213 100%);
  --plate-inset:inset 0 1px 0 rgba(255,255,255,.07), inset 0 -10px 24px rgba(0,0,0,.35);
  --sh-plate:drop-shadow(0 12px 18px rgba(0,0,0,.55));
  --well:radial-gradient(90% 90% at 40% 30%,#17181A,#0A0B0C);
  --well-inset:inset 0 3px 10px rgba(0,0,0,.85), inset 0 -1px 0 rgba(255,255,255,.05);
  --insect-fill:#1A1C1F; --insect-shadow:drop-shadow(5px 8px 3px rgba(0,0,0,.75)) drop-shadow(0 0 8px rgba(255,106,19,.22)); --pin:#ECEDEE;
  --mark-shadow:0 1px 0 rgba(255,255,255,.10), 0 2px 0 rgba(0,0,0,.6), 0 24px 40px rgba(0,0,0,.7); --h2-shadow:0 10px 24px rgba(0,0,0,.6);
  --btn1-sh:drop-shadow(0 8px 10px rgba(0,0,0,.6)) drop-shadow(0 0 16px rgba(255,106,19,.28));
  --btn2-edge:linear-gradient(180deg,#4A4F54,#23262A); --btn2-bg:linear-gradient(180deg,#1E2023,#141517);
  --btn2-gloss:inset 0 1px 0 rgba(255,255,255,.07); --sh-btn2:drop-shadow(0 5px 6px rgba(0,0,0,.55));
  color-scheme:dark;
}}
:root[data-theme="dark"]{
  --bg:#0E0F10; --text:#ECEDEE; --body:#C3C7CB; --muted:#9BA1A7; --line:#2B2E31; --setae:#34383C; --deco:#4A4F54;
  --ink:#FF6A13; --stroke:#FF6A13; --on-accent:#0E0F10; --proto:#16181A; --code:#16181A; --wing-op:.9;
  --plate-edge:linear-gradient(180deg,#44494E 0%,#23262A 40%,#1B1D20 100%);
  --plate-bg:linear-gradient(180deg,#1B1D20 0%,#141517 55%,#111213 100%);
  --plate-inset:inset 0 1px 0 rgba(255,255,255,.07), inset 0 -10px 24px rgba(0,0,0,.35);
  --sh-plate:drop-shadow(0 12px 18px rgba(0,0,0,.55));
  --well:radial-gradient(90% 90% at 40% 30%,#17181A,#0A0B0C);
  --well-inset:inset 0 3px 10px rgba(0,0,0,.85), inset 0 -1px 0 rgba(255,255,255,.05);
  --insect-fill:#1A1C1F; --insect-shadow:drop-shadow(5px 8px 3px rgba(0,0,0,.75)) drop-shadow(0 0 8px rgba(255,106,19,.22)); --pin:#ECEDEE;
  --mark-shadow:0 1px 0 rgba(255,255,255,.10), 0 2px 0 rgba(0,0,0,.6), 0 24px 40px rgba(0,0,0,.7); --h2-shadow:0 10px 24px rgba(0,0,0,.6);
  --btn1-sh:drop-shadow(0 8px 10px rgba(0,0,0,.6)) drop-shadow(0 0 16px rgba(255,106,19,.28));
  --btn2-edge:linear-gradient(180deg,#4A4F54,#23262A); --btn2-bg:linear-gradient(180deg,#1E2023,#141517);
  --btn2-gloss:inset 0 1px 0 rgba(255,255,255,.07); --sh-btn2:drop-shadow(0 5px 6px rgba(0,0,0,.55));
  color-scheme:dark;
}
body{background:var(--bg);color:var(--text);font-family:var(--f-display);font-size:16px;overflow-x:hidden}
*{box-sizing:border-box}
a{color:inherit}
h1,h2,h3{text-wrap:balance}
.wrap{max-width:1280px;margin:0 auto;padding-left:max(24px,env(safe-area-inset-left,0px));padding-right:max(24px,env(safe-area-inset-right,0px))}
.mono{font-family:var(--f-mono)}
.eyebrow{font-family:var(--f-mono);font-size:12px;letter-spacing:.08em;color:var(--muted);text-transform:uppercase}
.mark{display:block;font-size:clamp(80px,13vw,200px);line-height:.8;font-weight:900;font-stretch:62%;text-transform:uppercase;letter-spacing:-.02em;text-shadow:var(--mark-shadow)}
.mark.xl{font-size:clamp(120px,22vw,320px)}
.mark .dot{color:var(--orange)}
.h1sub{display:block;font-size:44px;line-height:.95;font-weight:800;font-stretch:70%;text-transform:uppercase;max-width:680px}
.h2{margin:0;font-size:48px;line-height:.95;font-weight:800;font-stretch:70%;text-transform:uppercase;text-shadow:var(--h2-shadow)}
.h3{margin:0;font-size:28px;line-height:1;font-weight:800;font-stretch:72%;text-transform:uppercase}
.txt{margin:0;font-size:16px;line-height:1.55;color:var(--body);max-width:62ch}
.lead{font-size:19px}
.num{font-family:var(--f-mono);font-size:13px;letter-spacing:.06em;color:var(--ink)}
.sechead{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:baseline;gap:4px 12px;margin-bottom:32px}
.sec{padding-block:64px 0}
/* piastre e teche */
.plate{filter:var(--sh-plate)}
.pb{padding:1px;background:var(--plate-edge);height:100%}
.pi{background:var(--plate-bg);box-shadow:var(--plate-inset);height:100%}
.c16{clip-path:polygon(16px 0,calc(100% - 16px) 0,100% 16px,100% calc(100% - 16px),calc(100% - 16px) 100%,16px 100%,0 calc(100% - 16px),0 16px)}
.c10{clip-path:polygon(10px 0,calc(100% - 10px) 0,100% 10px,100% calc(100% - 10px),calc(100% - 10px) 100%,10px 100%,0 calc(100% - 10px),0 10px)}
.c8{clip-path:polygon(8px 0,calc(100% - 8px) 0,100% 8px,100% calc(100% - 8px),calc(100% - 8px) 100%,8px 100%,0 calc(100% - 8px),0 8px)}
.well{background:var(--well);box-shadow:var(--well-inset)}
.ins{color:var(--stroke);fill:var(--insect-fill);stroke:currentColor;filter:var(--insect-shadow);overflow:visible}
.setae{height:9px;background:repeating-linear-gradient(105deg,transparent 0 6px,var(--setae) 6px 7px)}
.suture{height:13px;background:radial-gradient(circle at 50% 0,transparent 10px,var(--line) 10.5px,var(--line) 11.5px,transparent 12px) 0 0/24px 13px repeat-x}
.grid-cards{display:flex;flex-wrap:wrap;gap:14px}
.grid-cards>*{flex:1 1 260px;min-width:0}
.card-in{padding:26px 24px;display:flex;flex-direction:column;gap:14px}
/* link e bottoni */
.navlink{display:inline-flex;align-items:center;min-height:44px;padding:0 12px;text-decoration:none;color:var(--text)}
.navlink:hover{color:var(--ink)}
.navlink[aria-current="page"]{box-shadow:inset 0 -3px 0 var(--orange)}
a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:4px}
/*
 * Skip link. Absent from the prototype, present on the site before the
 * redesign, and the first thing a keyboard user meets — so it is kept.
 */
.skip{position:absolute;left:-9999px;z-index:100;display:inline-flex;align-items:center;min-height:44px;padding:0 16px;background:var(--bg);color:var(--text);border:1px solid var(--ink);font-family:var(--f-mono);font-size:13px;text-transform:uppercase;letter-spacing:.04em;text-decoration:none}
.skip:focus{left:16px;top:16px}
.lift{transition:transform .15s ease}
.lift:hover{transform:translateY(-2px)}
.lift:active{transform:translateY(1px)}
.btns{display:flex;flex-wrap:wrap;gap:14px;align-items:center}
.btn1{display:inline-flex;text-decoration:none;filter:var(--btn1-sh);border:0;padding:0;background:none;cursor:pointer;font:inherit}
.btn1>span{display:flex;flex:1;align-items:stretch;min-height:54px;clip-path:polygon(12px 0,100% 0,100% calc(100% - 12px),calc(100% - 12px) 100%,0 100%,0 12px);background:linear-gradient(180deg,#FF9452 0%,#FF6A13 42%,#E2560A 100%);box-shadow:inset 0 1px 0 rgba(255,230,210,.55),inset 0 -2px 0 rgba(90,30,0,.35);color:var(--on-accent);font-weight:800;font-stretch:85%;font-size:17px;text-transform:uppercase;letter-spacing:.04em}
.btn1 .lb{display:flex;flex:1;align-items:center;justify-content:center;padding:0 22px 0 26px}
.btn1 .ar{display:flex;align-items:center;padding:0 18px;background:rgba(14,15,16,.14);box-shadow:inset 1px 0 0 rgba(14,15,16,.4),inset 2px 0 0 rgba(255,220,190,.35)}
.btn1.dark{filter:drop-shadow(0 10px 14px rgba(60,20,0,.55))}
.btn1.dark>span{background:linear-gradient(180deg,#26292D 0%,#141517 50%,#0B0C0D 100%);box-shadow:inset 0 1px 0 rgba(255,255,255,.14);color:#ECEDEE;min-height:58px;font-size:18px}
.btn1.dark .ar{color:#FF6A13;background:rgba(255,255,255,.04);box-shadow:inset 1px 0 0 rgba(0,0,0,.8),inset 2px 0 0 rgba(255,255,255,.08)}
/* bottone secondario: le due piastre interne riempiono sempre il bottone (correzione mobile) */
.btn2{display:inline-flex;text-decoration:none;filter:var(--sh-btn2);border:0;padding:0;background:none;cursor:pointer;font:inherit;color:var(--text)}
.btn2>span{display:flex;flex:1;padding:1px;background:var(--btn2-edge)}
.btn2>span>span{display:flex;flex:1;align-items:center;justify-content:center;gap:10px;min-height:52px;padding:0 20px;background:var(--btn2-bg);box-shadow:var(--btn2-gloss);font-family:var(--f-mono);font-size:13px;letter-spacing:.04em;text-transform:uppercase;white-space:nowrap}
.btn2.sm>span>span{min-height:44px;padding:0 16px}
.bead{display:inline-block;flex:0 0 auto;width:7px;height:7px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#FFD2B5,#FF6A13 50%,#8A3200)}
/* header */
.hdr{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:72px}
.brand{display:inline-flex;align-items:center;gap:12px;min-height:44px;text-decoration:none;color:var(--text);font-family:var(--f-mono);font-size:13px;letter-spacing:.04em;text-transform:uppercase}
.nav-desk{display:flex;align-items:center;font-family:var(--f-mono);font-size:13px;letter-spacing:.04em;text-transform:uppercase}
.iconbtn{display:inline-flex;align-items:center;justify-content:center;min-width:44px;min-height:44px;border:0;background:none;color:var(--text);cursor:pointer;font-family:var(--f-mono);font-size:13px;letter-spacing:.04em;text-transform:uppercase;gap:8px;padding:0 10px}
.iconbtn:hover{color:var(--ink)}
.menu-btn{display:none}
#menu-panel{border-top:1px solid var(--line)}
#menu-panel a{display:flex;align-items:center;justify-content:space-between;min-height:56px;border-bottom:1px solid var(--line);text-decoration:none;font-size:30px;font-weight:800;font-stretch:70%;text-transform:uppercase}
#menu-panel a[aria-current="page"]{color:var(--ink)}
/* hero */
.hero{position:relative}
.hero{overflow:hidden}
/*
 * The hero background: a wing, drawn very large, bled off the left and masked
 * so it fades in rather than starting at an edge. Added to the prototype on
 * 19 Oct 2026, after the rest of the redesign had already been ported — so if
 * you are comparing this file against a prototype that has no `.hero-wings`,
 * yours is the older one.
 *
 * `--wing-op` differs per theme (.55 light, .9 dark) because the same grey at
 * the same opacity reads as dirt on paper and as nothing at all on black.
 * `overflow:hidden` on `.hero` above is what keeps it from widening the page;
 * it also clips the 10px overhang of `.antenna` on the product pages, which is
 * how the prototype has it.
 */
.hero-wings{position:absolute;left:26%;top:52%;width:min(1320px,105vw);height:auto;transform:translateY(-50%) rotate(-5deg);color:var(--setae);opacity:var(--wing-op);pointer-events:none;-webkit-mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.35) 30%,#000 55%);mask-image:linear-gradient(90deg,transparent 0,rgba(0,0,0,.35) 30%,#000 55%)}
.hero-in{position:relative;padding-block:56px 80px;display:flex;flex-wrap:wrap;align-items:flex-end;gap:40px 56px}
.hero-main{flex:999 1 560px;min-width:0;display:flex;flex-direction:column;gap:28px}
.hero h1{margin:0;display:flex;flex-direction:column;gap:22px}
.teca{flex:1 1 300px;max-width:380px;min-width:0}
.antenna{position:absolute;top:18px;right:-10px;width:260px;height:auto;opacity:.6;color:var(--setae);pointer-events:none}
/* prodotti in home */
.prow{display:block;text-decoration:none;color:var(--text)}
.prow .pi{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:16px 28px;padding:22px 28px 22px 22px}
.prow .fringe{position:absolute;left:0;right:0;bottom:0;height:6px;background:repeating-linear-gradient(100deg,transparent 0 7px,var(--line) 7px 8px)}
.prow .lft{flex:1 1 440px;min-width:0;display:flex;align-items:center;gap:24px}
.prow .rgt{flex:1 1 340px;min-width:0;display:flex;justify-content:space-between;align-items:center;gap:16px}
.pname{font-size:clamp(48px,6vw,84px);line-height:.9;font-weight:800;font-stretch:66%;text-transform:uppercase;text-shadow:var(--h2-shadow)}
.pwell{position:relative;flex:0 0 132px;height:116px;display:flex;align-items:center;justify-content:center}
.seg-ar{flex:0 0 auto;display:flex;align-items:center;justify-content:center;width:52px;height:52px;clip-path:polygon(8px 0,100% 0,100% calc(100% - 8px),calc(100% - 8px) 100%,0 100%,0 8px);background:linear-gradient(180deg,#FF9452,#FF6A13 45%,#E2560A);color:#0E0F10;font-size:22px;font-weight:800;box-shadow:inset 0 1px 0 rgba(255,230,210,.55)}
.tag{display:inline-flex;align-items:center;padding:3px 8px;background:#E9E2D2;color:#2A261D;font-family:var(--f-mono);font-size:11px;letter-spacing:.04em;box-shadow:0 2px 4px rgba(0,0,0,.35);transform:rotate(-1.5deg)}
.ants{padding-top:56px;display:flex;align-items:center;gap:28px;overflow:hidden;color:var(--deco)}
.ants svg{flex:0 0 auto}
/* schermate */
.bar{display:flex;align-items:center;gap:8px;height:34px;padding:0 14px;border-bottom:1px solid var(--line)}
.bar .url{flex:1;max-width:320px;height:16px;margin:0 auto;border-radius:8px;background:var(--line)}
.screen{display:block;width:100%;height:auto}
.shot-a{margin:0;display:flex;flex-wrap:wrap;align-items:center;gap:20px 40px}
.shot-a>.plate{flex:999 1 640px;min-width:0}
.shot-a>figcaption{flex:1 1 260px;min-width:0}
.shot-row{display:flex;flex-wrap:wrap;gap:48px 40px;margin-top:56px;align-items:flex-start}
.shot-phone{flex:1 1 300px;max-width:380px;min-width:0;margin:0;display:flex;flex-direction:column;gap:20px}
.shot-wide{flex:999 1 560px;min-width:0;margin:0;display:flex;flex-direction:column;gap:20px}
figcaption{display:flex;flex-direction:column;gap:10px}
/* passi */
.steps{list-style:none;margin:0;padding:0;display:flex;flex-wrap:wrap;gap:8px}
.steps>li{flex:1 1 280px;min-width:0}
.steps .pi{padding:24px;display:flex;gap:20px;align-items:flex-start}
.stepn{font-size:72px;line-height:.8;font-weight:900;font-stretch:62%;color:var(--ink)}
/* faq */
.faq details{border-bottom:1px solid var(--line)}
.faq summary{display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:60px;cursor:pointer;list-style:none;font-size:22px;font-weight:800;font-stretch:75%;text-transform:uppercase}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-family:var(--f-mono);color:var(--ink);font-size:20px}
.faq details[open] summary::after{content:"−"}
.faq details p{margin:0 0 20px}
/* fascia cta */
.cta{position:relative;overflow:hidden;background:linear-gradient(180deg,#FF7A2A 0%,#FF6A13 40%,#EE5E0C 100%);color:#0E0F10}
.cta .sc-top,.cta .sc-bot{position:absolute;left:0;right:0;height:12px}
.cta .sc-top{top:0;background:radial-gradient(circle at 50% 0,var(--bg) 11px,transparent 11.5px) 0 0/24px 12px repeat-x}
.cta .sc-bot{bottom:0;background:radial-gradient(circle at 50% 100%,var(--bg) 11px,transparent 11.5px) 0 0/24px 12px repeat-x}
.cta .om{position:absolute;inset:0;width:100%;height:100%;opacity:.12}
.cta .wing{position:absolute;right:-60px;top:50%;width:900px;height:auto;transform:translateY(-50%) rotate(-8deg);opacity:.28}
.cta-in{position:relative;padding-block:88px;display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:32px}
.cta h2{margin:0 0 16px;font-size:clamp(44px,6vw,84px);line-height:.9;font-weight:800;font-stretch:68%;text-transform:uppercase;text-shadow:0 1px 0 rgba(255,220,190,.45)}
.cta p{margin:0;font-size:19px;line-height:1.5;max-width:540px}
/* altri prodotti */
.other{display:block;text-decoration:none;color:var(--text)}
.other .pi{display:flex;align-items:center;gap:20px;padding:16px 20px 16px 16px}
.other .w{flex:0 0 88px;height:76px;display:flex;align-items:center;justify-content:center}
/* contatti */
.mail{display:flex;flex-wrap:wrap;align-items:center;gap:10px 16px;padding:14px 16px;background:var(--code);font-family:var(--f-mono);font-size:16px;user-select:all;word-break:break-all}
.ai .pi{display:flex;flex-wrap:wrap;gap:28px 48px;align-items:center;padding:32px 28px}
.ai .l{flex:1 1 380px;min-width:0;display:flex;flex-direction:column;gap:14px}
.ai .r{flex:1 1 340px;min-width:0;display:flex;flex-direction:column;gap:10px}
.chat{display:flex;flex-direction:column;padding:0;overflow:hidden}
.chat-h{display:flex;align-items:center;gap:10px;padding:12px 16px;border-bottom:1px solid var(--line);font-family:var(--f-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.chat-h .on{width:8px;height:8px;border-radius:50%;background:#2FA866;margin-left:auto}
.chat-b{display:flex;flex-direction:column;gap:12px;padding:18px 16px}
.msg{display:flex;flex-direction:column;gap:4px;max-width:85%}
.msg.u{align-self:flex-end;align-items:flex-end}
.msg.a{align-self:flex-start;align-items:flex-start}
.who{font-family:var(--f-mono);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}
.bub{padding:12px 16px;font-size:15px;line-height:1.45}
.msg.u .bub{background:var(--text);color:var(--bg);border-radius:16px 16px 4px 16px}
.msg.a .bub{background:linear-gradient(180deg,#FF9452,#FF6A13 50%,#E2560A);color:#16130F;border-radius:16px 16px 16px 4px}
.chat-f{display:flex;align-items:center;gap:10px;margin:0 16px 16px;padding:10px 10px 10px 16px;border:1px solid var(--line);border-radius:22px;color:var(--muted);font-size:14px}
.chat-f .send{margin-left:auto;display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:#FF6A13;color:#16130F;font-weight:800}
.hexlist{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:14px}
.hexlist li{display:flex;gap:14px;align-items:flex-start;font-size:17px;line-height:1.45;color:var(--body)}
.hexlist svg{flex:0 0 auto;margin-top:3px;color:var(--stroke)}
/* pagine legali */
code{font-family:var(--f-mono);font-size:.88em;background:var(--code);padding:1px 5px}
.legal{display:flex;flex-wrap:wrap;gap:32px 48px;align-items:flex-start;padding-block:48px 80px}
.legal aside{flex:1 1 260px;min-width:0;max-width:340px}
.legal article{flex:999 1 560px;min-width:0}
.toc{list-style:none;margin:0;padding:0;display:flex;flex-direction:column}
.toc a{display:flex;min-height:44px;align-items:center;text-decoration:none;color:var(--body);font-size:15px;border-bottom:1px solid var(--line)}
/*
 * 44px, not the prototype's 40. The prototype's code is the reference and was
 * taken as-is everywhere else, but its own notes also say every control is at
 * least 44px high, and an index entry is a control. Where the stated rule and
 * the sample disagree, the rule wins — this is the only place they did.
 */
.toc a:hover{color:var(--ink)}
.legal h2{margin:40px 0 14px;font-size:30px;line-height:1;font-weight:800;font-stretch:72%;text-transform:uppercase}
.legal h3{margin:24px 0 10px;font-size:20px;font-weight:800;font-stretch:80%}
/*
 * Real prose inside a legal page.
 *
 * The prototype never styled this: its privacy and cookie pages used `.ph`
 * placeholder bars, so paragraphs, lists and definition lists had no rules at
 * all and would have fallen back to browser defaults in the display face. The
 * brief asks for new layout with the current text, and this is the half of
 * "new layout" that only appears once the text is in.
 */
.legal article p,.legal article li,.legal article dd{font-size:16px;line-height:1.55;color:var(--body);max-width:72ch}
.legal article p{margin:0 0 14px}
.legal article ul{margin:0 0 18px;padding-left:20px;display:flex;flex-direction:column;gap:8px}
.legal article dl{margin:0 0 18px}
.legal article dt{margin-top:18px;font-weight:800;font-stretch:80%;color:var(--text)}
.legal article dd{margin:6px 0 0}
.legal article a{color:var(--ink)}
/*
 * A control that has to read as a link inside a sentence.
 *
 * The privacy notice says "write to our email address", and the brief says the
 * address appears neither as text nor in the HTML. So that link is a button
 * composing the address in JavaScript — but it sits mid-paragraph and must not
 * look like a button. The sentence is unchanged; only its mechanism is.
 *
 * Consequence, stated because it is a real one: with scripting off, the notice
 * has no working contact route.
 */
.linklike{border:0;padding:0;background:none;font:inherit;color:var(--ink);text-decoration:underline;cursor:pointer}
.legal article strong{color:var(--text)}
.legal article>p:first-of-type{font-size:19px}
.tbl-wrap{overflow-x:auto;margin:14px 0}
table{border-collapse:collapse;width:100%;min-width:520px;font-size:15px}
th,td{text-align:left;padding:12px 14px;border-bottom:1px solid var(--line);vertical-align:top}
th{font-family:var(--f-mono);font-size:12px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);font-weight:500}
footer .ft{display:flex;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding-block:24px 28px;font-family:var(--f-mono);font-size:13px;color:var(--muted)}
footer nav{display:flex;flex-wrap:wrap;margin-left:-8px}
footer .navlink{padding:0 8px;color:var(--muted)}
@media (max-width:760px){
  .nav-desk{display:none}
  .menu-btn{display:inline-flex}
}
@media (min-width:761px){ #menu-panel{display:none!important} }
@media (max-width:640px){
  .wrap{padding-left:max(16px,env(safe-area-inset-left,0px));padding-right:max(16px,env(safe-area-inset-right,0px))}
  .e-tag{display:none}
  .hero-in{padding-block:28px 48px;gap:36px}
  .h1sub{font-size:30px}
  .mark.xl{margin-top:-6px}
  .btns{flex-direction:column;align-items:stretch}
  .btns>.btn1,.btns>.btn2{display:flex;width:100%}
  .jump{display:grid;grid-template-columns:1fr;gap:10px}
  .jump>.btn2{display:flex;width:100%}
  .teca{max-width:300px;margin:0 auto}
  .sec{padding-block:44px 0}
  .h2{font-size:38px}
  .prow .pi{padding:18px;gap:14px}
  .pwell{flex-basis:84px;height:84px}
  .pwell svg{width:72px;height:auto}
  .pname{font-size:44px}
  .prow .seg-ar{display:none}
  .shot-phone{max-width:300px;margin:0 auto}
  .ants{display:none}
  .hero-wings{left:-30%;top:40%;width:170vw;-webkit-mask-image:none;mask-image:none;opacity:calc(var(--wing-op) * .6)}
  .cta-in{padding-block:56px 64px}
  .cta .btn1{display:flex;width:100%}
  .cta .wing{width:520px;top:24px;right:-180px;transform:rotate(-8deg);opacity:.14}
  footer .ft{flex-direction:column;align-items:flex-start}
  .consent .wrap{padding-block:16px;gap:14px}
  .consent-actions{flex-direction:column;align-items:stretch;width:100%}
  .consent-actions .btn2{display:flex;width:100%}
}
@media (prefers-reduced-motion: reduce){ .lift{transition:none} .lift:hover,.lift:active{transform:none} html{scroll-behavior:auto} }

/* ── Consent banner ─────────────────────────────────────────────────────────
 *
 * Not in the prototype: it shows the three buttons on the cookie page, and the
 * notes require them to be of EQUAL prominence — "pari evidenza". So all three
 * are `.btn2`, the same component at the same size, and none is `.btn1`. An
 * earlier version of this site had a filled accept button on the right; that
 * was reverted deliberately on 19 Oct 2026 when the prototype's rule replaced
 * it. If you are about to make accepting look easier than refusing, that is
 * the decision you are reversing.
 *
 * Hidden in the markup and revealed by assets/consent.js, which also loads
 * Google Tag Manager and loads it only after a yes. With scripting off there is
 * no bar and no analytics, which is the correct pair rather than a degradation.
 */
.consent{position:fixed;inset-inline:0;bottom:0;z-index:90;background:var(--bg);border-top:1px solid var(--line)}
.consent[hidden]{display:none}
.consent .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:18px 32px;padding-block:20px}
.consent-text{flex:999 1 520px;min-width:0;display:flex;flex-direction:column;gap:8px}
.consent-actions{flex:1 1 auto;display:flex;flex-wrap:wrap;gap:10px}
.consent-actions .btn2{flex:1 1 auto}
.consent .btn2[hidden]{display:none}
.consent-panel{flex:1 1 100%;display:flex;flex-direction:column;gap:14px;padding-top:4px;border-top:1px solid var(--line)}
.consent-panel[hidden]{display:none}
.consent-panel label{display:flex;gap:12px;align-items:flex-start;font-size:15px;line-height:1.45;color:var(--body)}
.consent-panel input{flex:0 0 auto;margin-top:3px;width:18px;height:18px;accent-color:var(--orange)}
.consent-note{display:block;color:var(--muted);font-size:13px}
