/* Inter, il carattere del sito aziendale (licenza SIL OFL in vendor/inter) */
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../vendor/inter/inter-latin-wght-normal.woff2) format("woff2");
  unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:"Inter";font-style:normal;font-weight:100 900;font-display:swap;src:url(../vendor/inter/inter-latin-ext-wght-normal.woff2) format("woff2");
  unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}

:root{
  --brand:#2091C1;--brand2:#8BC01D;--io:#2091C1;
  --bg:#EEF2F5;--bg2:#FFFFFF;--bg3:#F4F7F9;--fill:rgba(120,120,128,.16);--fill2:rgba(118,118,128,.12);
  --label:#1E2226;--label2:rgba(60,60,67,.6);--label3:rgba(60,60,67,.3);--sep:rgba(60,60,67,.29);
  --bar:rgba(249,249,249,.82);--segon:#fff;
  --blue:#1A7DAB;--green:#5C870E;--orange:#FF9500;--red:#FF3B30;--indigo:#5856D6;--teal:#30B0C7;--cyan:#32ADE6;
  --purple:#AF52DE;--pink:#FF2D55;--brown:#A2845E;--gray:#8E8E93;--mint:#00C7BE;--yellow:#FFCC00;
  --font:"Inter",-apple-system,BlinkMacSystemFont,"SF Pro Text","SF Pro Display","Helvetica Neue",system-ui,"Segoe UI",Roboto,Arial,sans-serif;
  color-scheme:light dark;box-sizing:border-box;
  padding-top:env(safe-area-inset-top,0px);padding-bottom:env(safe-area-inset-bottom,0px);
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0B0D12;--bg2:#171A21;--bg3:#20242D;--fill:rgba(120,120,128,.36);--fill2:rgba(118,118,128,.24);
  --label:#fff;--label2:rgba(235,235,245,.6);--label3:rgba(235,235,245,.3);--sep:rgba(84,84,88,.65);
  --bar:rgba(28,28,30,.82);--segon:#636366;
  --blue:#2B8FC0;--green:#76A81A;--io:#5CC0EA;--orange:#FF9F0A;--red:#FF453A;--indigo:#5E5CE6;--teal:#40CBE0;--cyan:#64D2FF;
  --purple:#BF5AF2;--pink:#FF375F;--brown:#AC8E68;--gray:#98989D;--mint:#63E6E2;--yellow:#FFD60A}}
:root[data-theme="dark"]{
  --bg:#0B0D12;--bg2:#171A21;--bg3:#20242D;--fill:rgba(120,120,128,.36);--fill2:rgba(118,118,128,.24);
  --label:#fff;--label2:rgba(235,235,245,.6);--label3:rgba(235,235,245,.3);--sep:rgba(84,84,88,.65);
  --bar:rgba(28,28,30,.82);--segon:#636366;
  --blue:#2B8FC0;--green:#76A81A;--io:#5CC0EA;--orange:#FF9F0A;--red:#FF453A;--indigo:#5E5CE6;--teal:#40CBE0;--cyan:#64D2FF;
  --purple:#BF5AF2;--pink:#FF375F;--brown:#AC8E68;--gray:#98989D;--mint:#63E6E2;--yellow:#FFD60A}
html{scroll-padding-top:env(safe-area-inset-top,0px)}
*,*::before,*::after{box-sizing:inherit}
html,body{height:100%;margin:0}
body{background:var(--bg);color:var(--label);font-family:var(--font);font-size:17px;line-height:1.3;letter-spacing:-.41px;
  -webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overflow-x:hidden}
button{font:inherit;color:inherit;letter-spacing:inherit;border:0;background:none;padding:0;cursor:pointer;text-align:inherit}
a{color:var(--blue);text-decoration:none}
input,textarea,select{font:inherit;letter-spacing:inherit;color:var(--label)}
/* niente zoom col doppio tocco, e campi da almeno 16 px così l'iPhone non ingrandisce al tocco */
html{touch-action:manipulation;-webkit-text-size-adjust:100%;text-size-adjust:100%}
input,textarea,select{font-size:max(16px,1em)}
@media (max-width:359px){.nav-lbl{display:none}.nav{gap:6px;padding-left:12px;padding-right:12px}}
:focus-visible{outline:3px solid color-mix(in srgb,var(--blue) 60%,transparent);outline-offset:2px;border-radius:10px}
.tnum{font-variant-numeric:tabular-nums}
.t-lt{font-size:34px;line-height:41px;font-weight:700;letter-spacing:.37px}
.t-1{font-size:28px;line-height:34px;font-weight:700;letter-spacing:.36px}
.t-2{font-size:22px;line-height:28px;font-weight:700;letter-spacing:.35px}
.t-3{font-size:20px;line-height:25px;font-weight:600;letter-spacing:.38px}
.t-h{font-size:17px;font-weight:600}
.t-sub{font-size:15px;line-height:20px;letter-spacing:-.24px}
.t-fn{font-size:13px;line-height:18px;letter-spacing:-.08px}
.l2{color:var(--label2)}.l3{color:var(--label3)}
.grow{flex:1;min-width:0}

/* liste raggruppate (inset grouped) */
.sec{margin:0 16px 30px}
.sec-h{padding:0 16px 7px;font-size:13px;line-height:18px;color:var(--label2)}
.sec-f{padding:7px 16px 0;font-size:13px;line-height:18px;color:var(--label2)}
.grp{background:var(--bg2);border-radius:12px;overflow:hidden}
.grp>*{position:relative}
.grp>*+*::before{content:"";position:absolute;top:0;left:var(--sepl,16px);right:0;border-top:.5px solid var(--sep)}
.grp.ics{--sepl:58px}.grp.avs{--sepl:68px}.grp.mgrp{--sepl:84px}
.row{display:flex;align-items:center;gap:12px;min-height:44px;padding:11px 16px;width:100%;text-align:left}
.row.col{flex-direction:column;align-items:stretch;gap:10px}
button.row:active,a.row:active,label.row:active{background:var(--fill2)}
a.row{color:var(--label)}
.chev{color:var(--label3);display:flex}
.kv-v{color:var(--label2);text-align:right;max-width:62%}
.ic{width:30px;height:30px;border-radius:7px;display:grid;place-items:center;color:#fff;flex-shrink:0}
.ic.lg{width:48px;height:48px;border-radius:12px}.ic.xl{width:64px;height:64px;border-radius:16px}
.av{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:#fff;font-weight:600;font-size:15px;flex-shrink:0}
.pill{display:inline-flex;align-items:center;gap:4px;min-height:24px;padding:2px 9px;border-radius:12px;font-size:13px;font-weight:600;
  background:color-mix(in srgb,var(--c) 16%,transparent);color:var(--c);white-space:nowrap}
.tcol{width:50px;flex-shrink:0;font-size:15px;line-height:20px;font-weight:600}
.pad{padding:0 16px 20px}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:50px;padding:0 20px;border-radius:14px;
  font-size:17px;font-weight:600;background:var(--c,var(--blue));color:#fff;width:100%}
.btn.tint{background:color-mix(in srgb,var(--c,var(--blue)) 15%,transparent);color:var(--c,var(--blue))}
.btn.sm{min-height:34px;padding:0 14px;border-radius:17px;font-size:15px;width:auto;flex-shrink:0}
.btn:active,.big:active{opacity:.7}
.btnrow{display:flex;gap:10px;padding:12px 16px}
.tbtn{color:var(--blue);font-size:17px;min-height:44px;padding:0 8px;display:inline-flex;align-items:center;gap:2px}
.seg{display:flex;background:var(--fill2);border-radius:9px;padding:2px;gap:2px}
.seg button{flex:1;border-radius:7px;min-height:30px;padding:4px 6px;font-size:13px;font-weight:500;text-align:center}
.seg button.on{background:var(--segon);font-weight:600;box-shadow:0 3px 8px rgba(0,0,0,.12),0 3px 1px rgba(0,0,0,.04)}
.switch{appearance:none;-webkit-appearance:none;width:51px;height:31px;border-radius:16px;background:var(--fill);position:relative;flex-shrink:0;cursor:pointer;transition:background .2s;margin:0}
.switch::after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 3px 8px rgba(0,0,0,.15),0 3px 1px rgba(0,0,0,.06);transition:transform .2s}
.switch:checked{background:var(--green)}.switch:checked::after{transform:translateX(20px)}
.fld{flex:1;border:0;background:none;outline:none;text-align:right;min-width:0;color:var(--label2);padding:0}
select.fld{appearance:none;-webkit-appearance:none;color:var(--blue);cursor:pointer}
.fld.left{text-align:left;color:var(--label)}
.ta{display:block;width:100%;border:0;background:none;resize:vertical;min-height:84px;outline:none;padding:12px 16px}
input[type=range]{width:100%;accent-color:var(--blue)}
.stepper{display:flex;align-items:center;background:var(--fill2);border-radius:9px;height:32px;flex-shrink:0}
.stepper button{width:38px;height:32px;font-size:20px;display:grid;place-items:center}
.stepper span{min-width:54px;text-align:center;font-size:15px;font-weight:600}
.dnav{display:flex;align-items:center;margin-bottom:12px}
.note-box{display:flex;gap:12px;align-items:flex-start;padding:14px 16px;border-radius:12px;background:color-mix(in srgb,var(--c) 14%,var(--bg2));color:var(--label)}
.note-box>svg{color:var(--c);flex-shrink:0;margin-top:2px}
.empty{text-align:center;padding:48px 24px;display:grid;justify-items:center;gap:8px}
.rank{width:28px;height:28px;border-radius:50%;display:grid;place-items:center;font-weight:700;font-size:15px;color:#fff;flex-shrink:0;background:var(--c)}
.av-hero{display:flex;gap:14px;align-items:center;padding:0 4px}

/* app operatore */
.op{max-width:560px;margin:0 auto;padding:8px 20px 36px;min-height:100%}
.op .sec{margin-left:0;margin-right:0}
.op-top{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px 0 18px}
.op-nav{min-height:44px;display:flex;align-items:center}
.card{background:var(--bg2);border-radius:24px;padding:22px}
.addr{display:flex;gap:6px;align-items:flex-start;color:var(--label2);margin-top:8px}
.addr svg{flex-shrink:0;margin-top:1px}
.stack>*+*{margin-top:12px}
.big{display:flex;align-items:center;gap:16px;width:100%;min-height:76px;padding:10px 20px;border-radius:20px;font-size:20px;font-weight:600;text-align:left;letter-spacing:.2px}
.big .bi{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;flex-shrink:0}
.big .bi svg{width:26px;height:26px}
.big.primary{min-height:116px;background:var(--blue);color:#fff;font-size:27px;font-weight:700}
.big.primary .bi{width:68px;height:68px;border-radius:17px;background:rgba(255,255,255,.2)}
.big.primary .bi svg{width:40px;height:40px}
.big.tint{background:var(--bg2);color:var(--label)}
.big.tint .bi{background:var(--c);color:#fff}
.big.fill{background:var(--c);color:#fff;min-height:68px}
.big.fill .bi{background:rgba(255,255,255,.22)}
.big.conf{background:var(--green);color:#fff;justify-content:center;min-height:88px;font-size:25px;font-weight:700;margin-top:22px}
.mrow{display:flex;align-items:center;gap:16px;padding:14px 16px;min-height:80px}
.mrow .bi{width:52px;height:52px;border-radius:13px;background:var(--c);color:#fff;display:grid;place-items:center;flex-shrink:0}
.xbox{display:flex;gap:14px;align-items:flex-start;background:color-mix(in srgb,var(--orange) 15%,var(--bg2));border:1.5px solid color-mix(in srgb,var(--orange) 50%,transparent);border-radius:20px;padding:18px;margin:0 0 28px}
.xbox .bi{width:48px;height:48px;border-radius:12px;background:var(--orange);color:#fff;display:grid;place-items:center;flex-shrink:0}
.facts{display:flex;gap:32px;margin:14px 0 24px}
.dock{position:fixed;left:0;right:0;bottom:0;z-index:20;padding:12px 20px calc(env(safe-area-inset-bottom,0px) + 12px);
  background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);border-top:.5px solid var(--sep)}
.dock-in{max-width:520px;margin:0 auto;display:grid;gap:10px}
.flow{max-width:560px;margin:0 auto;padding:8px 20px 40px}
.dots{display:flex;gap:6px;justify-content:center;margin:4px 0 22px}
.dots i{width:8px;height:8px;border-radius:4px;background:var(--fill);transition:width .2s}
.dots i.on{background:var(--blue);width:24px}.dots i.done{background:var(--blue)}
.q{font-size:30px;line-height:36px;font-weight:700;margin:0 0 22px;letter-spacing:.3px}
.tiles{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.tile{background:var(--bg2);border-radius:22px;min-height:156px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px 10px;font-size:18px;font-weight:600;text-align:center;line-height:1.2}
.tile .bi{width:68px;height:68px;border-radius:17px;display:grid;place-items:center;color:#fff;background:var(--c)}
.tile .bi svg{width:36px;height:36px}
.tile:active{opacity:.7}
.sumr{display:flex;align-items:center;gap:14px;margin-top:10px}
.thumb{width:100%;max-height:220px;object-fit:cover;border-radius:16px;margin-top:12px;display:block}

/* schermate piene e scanner */
.fs{position:fixed;inset:0;z-index:80;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;color:#fff;background:var(--c);
  padding:calc(env(safe-area-inset-top,0px) + 24px) 28px calc(env(safe-area-inset-bottom,0px) + 24px)}
.fs .mark{width:136px;height:136px;border-radius:50%;background:rgba(255,255,255,.22);display:grid;place-items:center;margin-bottom:28px;animation:pop .4s cubic-bezier(.2,.9,.3,1.3)}
.fs .mark svg{width:78px;height:78px}
.fs .mark path{stroke-dasharray:44;stroke-dashoffset:44;animation:draw .45s .12s ease-out forwards}
.fs .big-time{font-size:64px;line-height:1;font-weight:700;margin-top:18px;letter-spacing:1px}
.fs-actions{width:100%;max-width:420px;margin-top:40px}
.big.fsw{background:#fff;color:var(--c);justify-content:center}
.big.fsg{background:rgba(255,255,255,.22);color:#fff;justify-content:center}
@keyframes pop{from{transform:scale(.55);opacity:0}}
@keyframes draw{to{stroke-dashoffset:0}}
.scan{position:fixed;inset:0;z-index:70;color:#fff;display:flex;flex-direction:column;background:radial-gradient(ellipse at 50% 35%,#3a3a3c 0%,#111 70%)}
.scan-top{padding:calc(env(safe-area-inset-top,0px) + 6px) 10px 0}
.vf{position:relative;width:min(66vw,270px);aspect-ratio:1;margin:18px auto 18px}
.vf i{position:absolute;width:46px;height:46px;border:0 solid #fff}
.vf .a{top:0;left:0;border-top-width:5px;border-left-width:5px;border-top-left-radius:20px}
.vf .b{top:0;right:0;border-top-width:5px;border-right-width:5px;border-top-right-radius:20px}
.vf .c{bottom:0;left:0;border-bottom-width:5px;border-left-width:5px;border-bottom-left-radius:20px}
.vf .d{bottom:0;right:0;border-bottom-width:5px;border-right-width:5px;border-bottom-right-radius:20px}
.vf .line{position:absolute;left:10%;right:10%;height:3px;border-radius:2px;background:#30D158;box-shadow:0 0 16px #30D158;animation:sweep 2.2s ease-in-out infinite alternate}
@keyframes sweep{from{top:10%}to{top:90%}}
.scan-sheet{margin-top:auto;background:rgba(44,44,46,.88);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:22px 22px 0 0;
  padding:16px 12px calc(env(safe-area-inset-bottom,0px) + 14px);max-height:46vh;overflow:auto}
.srow{display:flex;align-items:center;gap:12px;width:100%;min-height:56px;padding:8px 10px;border-radius:12px;color:#fff;text-align:left}
.srow:active{background:rgba(255,255,255,.1)}
.srow small{display:block;font-size:13px;color:rgba(235,235,245,.6)}
.srow .qm{width:40px;height:40px;border-radius:10px;background:#fff;color:#000;display:grid;place-items:center;flex-shrink:0}

/* dashboard */
.shell{min-height:100%}
.side{display:none}
.main{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 90px)}
.main-in{max-width:880px;margin:0 auto}
.nav{position:sticky;top:0;z-index:15;display:flex;align-items:center;justify-content:flex-end;min-height:44px;padding:0 8px;
  background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px)}
.lt-wrap{padding:4px 16px 14px;display:flex;align-items:flex-end;justify-content:space-between;gap:12px}
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:flex;background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);
  border-top:.5px solid var(--sep);padding-bottom:env(safe-area-inset-bottom,0px)}
.tab{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;padding:7px 0 6px;font-size:10px;font-weight:500;color:var(--gray);position:relative;letter-spacing:.1px;text-align:center}
.tab.on{color:var(--blue)}
.badge{position:absolute;top:2px;left:calc(50% + 6px);min-width:18px;height:18px;border-radius:9px;background:var(--red);color:#fff;font-size:12px;font-weight:600;display:grid;place-items:center;padding:0 5px}
.sitem{display:flex;align-items:center;gap:12px;min-height:44px;padding:0 12px;border-radius:10px;font-size:17px;width:100%;text-align:left}
.sitem:hover{background:var(--fill2)}
.sitem.on{background:var(--blue);color:#fff}
.sbadge{background:var(--red);color:#fff;border-radius:10px;font-size:13px;min-width:22px;height:22px;padding:0 6px;display:grid;place-items:center;font-weight:600}
.sitem.on .sbadge{background:#fff;color:var(--blue)}
.qrbox{display:grid;justify-items:center;gap:10px;padding:22px 16px}
.chips{display:flex;gap:4px;flex-wrap:wrap;justify-content:flex-end}
.chips .ic{width:24px;height:24px;border-radius:6px}
.chips .ic svg{width:15px;height:15px}
@media (min-width:900px){
  .shell{display:grid;grid-template-columns:270px 1fr}
  .side{display:flex;flex-direction:column;gap:2px;position:sticky;top:0;height:100vh;padding:24px 12px;background:var(--bg2);border-right:.5px solid var(--sep);overflow:auto}
  .tabbar,.mob-only{display:none!important}
  .main{padding:16px 16px 40px}
}

/* sheet */
.sbg{position:fixed;inset:0;z-index:60;background:rgba(0,0,0,.35);display:flex;align-items:flex-end;justify-content:center;animation:fade .2s}
.sheet{background:var(--bg);width:100%;max-width:680px;max-height:calc(100% - 36px);overflow:auto;border-radius:14px 14px 0 0;
  padding-bottom:calc(env(safe-area-inset-bottom,0px) + 28px);animation:up .32s cubic-bezier(.2,.8,.2,1);overscroll-behavior:contain}
.sh-h{position:sticky;top:0;z-index:3;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:58px;padding:6px 8px 0;
  background:var(--bar);-webkit-backdrop-filter:saturate(180%) blur(20px);backdrop-filter:saturate(180%) blur(20px);margin-bottom:14px}
.sh-h .ttl{font-size:17px;font-weight:600;text-align:center;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:52vw}
.grab{position:absolute;top:6px;left:50%;width:36px;height:5px;border-radius:3px;background:var(--label3);transform:translateX(-50%)}
@keyframes up{from{transform:translateY(48px);opacity:.4}}
@keyframes fade{from{opacity:0}}
@media (min-width:900px){.sbg{align-items:center}.sheet{border-radius:16px;max-height:86vh}.grab{display:none}}
#toast{position:fixed;top:calc(env(safe-area-inset-top,0px) + 12px);left:0;right:0;z-index:100;display:flex;justify-content:center;pointer-events:none;padding:0 16px}
.toast{background:var(--bar);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);border-radius:24px;padding:12px 18px;box-shadow:0 8px 32px rgba(0,0,0,.18);
  font-size:15px;font-weight:600;display:flex;gap:10px;align-items:center;max-width:520px;animation:up .3s}
.toast svg{flex-shrink:0;color:var(--c)}
.login{max-width:640px;margin:0 auto;padding:20px 0 40px}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.fs .mark path{stroke-dashoffset:0}}

/* ===================== LIQUID GLASS (HIG, iOS 26) ===================== */
:root{--glass-bg:rgba(255,255,255,.56);--glass-sheen:rgba(255,255,255,.55);--glass-hi:rgba(255,255,255,.9);--glass-edge:rgba(255,255,255,.6);
  --glass-shadow:0 10px 30px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.06);--spring:cubic-bezier(.3,1.5,.5,1)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--glass-bg:rgba(48,48,52,.5);--glass-sheen:rgba(255,255,255,.1);--glass-hi:rgba(255,255,255,.22);--glass-edge:rgba(255,255,255,.12);--glass-shadow:0 10px 30px rgba(0,0,0,.5)}}
:root[data-theme="dark"]{--glass-bg:rgba(48,48,52,.5);--glass-sheen:rgba(255,255,255,.1);--glass-hi:rgba(255,255,255,.22);--glass-edge:rgba(255,255,255,.12);--glass-shadow:0 10px 30px rgba(0,0,0,.5)}
/* materiale: solo nel livello dei controlli, mai nel contenuto */
.glass{background:linear-gradient(180deg,var(--glass-sheen),transparent 55%),var(--glass-bg);
  -webkit-backdrop-filter:blur(18px) saturate(190%);backdrop-filter:blur(18px) saturate(190%);
  box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 0 0 .5px var(--glass-edge),var(--glass-shadow)}
/* dinamismo: i controlli rispondono al tocco con una molla */
.glass,.gbtn,.btn,.big,.tile,.seg button,.tab,.sitem,.srow,button.row{transition:transform .4s var(--spring),background-color .2s}
.gbtn:active,.btn:active,.big:active,.tile:active,.tab:active,.sitem:active{transform:scale(.95);opacity:1}
/* pulsanti di vetro nelle barre: cerchi e capsule da 44 pt */
.gbtn{height:44px;min-width:44px;padding:0 16px;border-radius:22px;display:inline-flex;align-items:center;justify-content:center;gap:4px;font-size:17px;font-weight:500;color:var(--label);flex-shrink:0}
.gbtn.circle{padding:0;width:44px}
.gbtn svg{color:var(--label)}
.gbtn.prom{background:linear-gradient(180deg,rgba(255,255,255,.3),transparent 60%),var(--blue);color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 6px 18px color-mix(in srgb,var(--blue) 40%,transparent)}
.gbtn.prom svg{color:#fff}
/* effetto bordo di scorrimento al posto delle barre piene */
.nav,.op-nav,.sh-h{background:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;isolation:isolate}
.nav::before,.op-nav::before,.sh-h::before{content:"";position:absolute;left:0;right:0;top:0;bottom:-18px;z-index:-1;pointer-events:none;
  background:linear-gradient(var(--bg) 35%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  -webkit-mask-image:linear-gradient(#000 50%,transparent);mask-image:linear-gradient(#000 50%,transparent)}
.nav{top:env(safe-area-inset-top,0px);gap:8px;padding:8px 16px;min-height:60px}
.op-nav{position:sticky;top:env(safe-area-inset-top,0px);z-index:10;margin:0 -20px;padding:8px 20px;min-height:60px}
/* tab bar: capsula fluttuante, staccata dai bordi */
.tabwrap{position:fixed;left:0;right:0;bottom:0;z-index:30;pointer-events:none;padding:18px 21px calc(env(safe-area-inset-bottom,0px) + 14px);
  background:linear-gradient(to top,var(--bg) 25%,transparent)}
.tabbar{position:static;max-width:440px;margin:0 auto;border-radius:32px;padding:5px;pointer-events:auto;border-top:0!important;gap:2px}
.tab{border-radius:27px;padding:7px 2px 6px;color:var(--label)}
.tab.on{color:var(--blue);background:var(--fill2)}
.badge{top:1px}
.main{padding-bottom:calc(env(safe-area-inset-bottom,0px) + 120px)}
/* forme concentriche: contenitori più tondi, controlli a capsula */
.grp{border-radius:26px}
.row{min-height:52px;padding:13px 18px}
.grp>*+*::before{left:var(--sepl,18px)}
.grp.ics{--sepl:62px}.grp.avs{--sepl:72px}.grp.mgrp{--sepl:88px}
.ic{border-radius:9px}.ic.lg{border-radius:14px}.ic.xl{border-radius:20px}
.card{border-radius:34px;padding:24px}
.btn,.btn.sm{border-radius:999px}
.btn{min-height:52px}
.btn.sm{min-height:36px}
.seg{border-radius:999px;padding:3px}
.seg button{border-radius:999px;min-height:32px}
.seg button.on{box-shadow:0 2px 8px rgba(0,0,0,.14),inset 0 1px 0 rgba(255,255,255,.6)}
.stepper{border-radius:999px;height:36px}.stepper button{height:36px}
.note-box{border-radius:22px}
.big{border-radius:999px;padding:10px 24px 10px 12px}
.big .bi{border-radius:50%;width:54px;height:54px}
.big.primary{padding:12px 28px 12px 14px}
.big.primary .bi{border-radius:50%;width:88px;height:88px}
.big.primary,.big.fill,.big.conf{background-image:linear-gradient(180deg,rgba(255,255,255,.28),transparent 58%);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 10px 26px color-mix(in srgb,var(--c,var(--blue)) 38%,transparent)}
.big.conf{--c:var(--green);padding:10px 24px}
.tile{border-radius:30px}.tile .bi{border-radius:22px}
.mrow .bi{border-radius:16px}
.xbox{border-radius:30px}
.thumb{border-radius:26px}
/* dock della scheda: nessuna barra, solo sfumatura sotto i controlli */
.dock{background:linear-gradient(to top,var(--bg) 55%,transparent)!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;border-top:0!important;padding-top:34px}
/* sheet: flottante, con angoli concentrici al telefono */
.sbg{padding:0 8px calc(env(safe-area-inset-bottom,0px) + 8px)}
.sheet{border-radius:38px;padding-bottom:20px;background:color-mix(in srgb,var(--bg) 94%,transparent);-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);box-shadow:0 20px 60px rgba(0,0,0,.25)}
.sh-h{padding:14px 14px 0;min-height:70px;margin-bottom:10px}
.sh-h>div:last-child{display:flex;justify-content:flex-end}
.grab{top:6px}
/* notifiche e selettori data */
.toast{border-radius:999px;background:linear-gradient(180deg,var(--glass-sheen),transparent 55%),var(--glass-bg);-webkit-backdrop-filter:blur(18px) saturate(190%);backdrop-filter:blur(18px) saturate(190%);box-shadow:inset 0 1px 0 var(--glass-hi),inset 0 0 0 .5px var(--glass-edge),var(--glass-shadow)}
.dnav{border-radius:999px;padding:4px;margin-bottom:14px;min-height:56px}
.dnav .tbtn{width:48px;height:48px;justify-content:center;border-radius:50%;padding:0}
/* scanner: controlli di vetro sopra la "fotocamera" */
.scan-top{padding:calc(env(safe-area-inset-top,0px) + 10px) 16px 0}
.scan .gbtn{background:linear-gradient(180deg,rgba(255,255,255,.18),transparent 60%),rgba(120,120,128,.38);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);box-shadow:inset 0 1px 0 rgba(255,255,255,.25)}
.scan .gbtn svg{color:#fff}
.scan-sheet{margin:auto 8px calc(env(safe-area-inset-bottom,0px) + 8px);border-radius:34px;padding:16px 12px 12px;
  background:linear-gradient(180deg,rgba(255,255,255,.1),transparent 40%),rgba(44,44,48,.62);box-shadow:inset 0 1px 0 rgba(255,255,255,.18)}
.srow{border-radius:22px}.srow .qm{border-radius:50%}
.sitem{border-radius:999px}
@media (min-width:900px){
  .shell{grid-template-columns:290px 1fr}
  .side{margin:10px;top:10px;height:calc(100vh - 20px);border-radius:30px;border-right:0!important;
    background:linear-gradient(180deg,var(--glass-sheen),transparent 55%),var(--glass-bg)!important}
  .tabwrap{display:none}
  .sbg{padding:24px}.sheet{border-radius:30px}
  .nav{min-height:44px}
}

/* ===================== SFONDO E SUPERFICI ===================== */
:root{--amb:16%;--surf-shadow:0 1px 2px rgba(16,24,40,.05),0 8px 24px rgba(16,24,40,.06)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){--amb:26%;--surf-shadow:inset 0 0 0 .5px rgba(255,255,255,.07),0 8px 24px rgba(0,0,0,.25)}}
:root[data-theme="dark"]{--amb:26%;--surf-shadow:inset 0 0 0 .5px rgba(255,255,255,.07),0 8px 24px rgba(0,0,0,.25)}
html{background:var(--bg)}
body{background:transparent}
body::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:
  radial-gradient(70vmax 45vmax at -5% -10%,color-mix(in srgb,var(--blue) var(--amb),transparent),transparent 70%),
  radial-gradient(55vmax 40vmax at 105% 10%,color-mix(in srgb,var(--brand) var(--amb),transparent),transparent 70%),
  radial-gradient(65vmax 45vmax at 50% 110%,color-mix(in srgb,var(--brand2) calc(var(--amb) * .7),transparent),transparent 70%),
  var(--bg)}
.grp,.card,.tile,.big.tint{box-shadow:var(--surf-shadow)}
.nav::before,.op-nav::before,.sh-h::before{background:linear-gradient(color-mix(in srgb,var(--bg) 72%,transparent) 30%,transparent)}
/* rimbalzo verso il basso in cima alla pagina (iPhone): la zona che si scopre mostra lo sfondo fisso dell'app, che in
   cima ha le sfumature azzurre più forti e faceva vedere una fascia netta sotto la barra di stato. In cima lo sfondo
   parte dallo stesso colore della barra di stato e sfuma nelle tonalità azzurre più in basso */
@media (max-width:899px){
  body::after{content:"";position:fixed;left:0;right:0;top:0;height:calc(env(safe-area-inset-top,0px) + 260px);z-index:-1;pointer-events:none;
    background:linear-gradient(var(--bg) 60%,transparent)}
}
.tabwrap{background:linear-gradient(to top,color-mix(in srgb,var(--bg) 80%,transparent) 15%,transparent)}
.dock{background:linear-gradient(to top,color-mix(in srgb,var(--bg) 90%,transparent) 50%,transparent)!important}
.brand{display:grid;place-items:center;color:#fff;flex-shrink:0;background:linear-gradient(145deg,#2091C1 15%,#1B9AA6 55%,#6FAE1C);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45),0 10px 24px rgba(32,145,193,.32)}
.hero{display:flex;flex-direction:column;align-items:center;text-align:center;padding:40px 24px 34px}
/* ===================== PROGRAMMAZIONE ===================== */
.ctl{display:flex;flex-wrap:wrap;gap:10px;padding:0 16px 14px;align-items:center}
.ctl .seg{flex:1 1 260px}
.selp{appearance:none;-webkit-appearance:none;height:40px;border-radius:20px;padding:0 36px 0 16px;border:0;font-size:15px;font-weight:500;color:var(--label);max-width:100%;
  background:var(--bg2) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%238E8E93' stroke-width='3' stroke-linecap='round'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E") no-repeat right 14px center;box-shadow:var(--surf-shadow);cursor:pointer}
.pnav{display:flex;align-items:center;gap:6px;padding:0 16px 14px}
.pnav .dnav{flex:1;margin:0}
.cal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:3px;padding:10px}
.cal .wd{text-align:center;font-size:12px;font-weight:600;color:var(--label2);padding:4px 0}
.cday{min-height:56px;border-radius:14px;padding:5px 2px;display:flex;flex-direction:column;align-items:center;gap:4px;min-width:0}
.cday .n{width:30px;height:30px;border-radius:50%;display:grid;place-items:center;font-size:15px;font-weight:500}
.cday.out{opacity:.35}
.cday.today .n{background:var(--blue);color:#fff;font-weight:700}
.cday.sel{background:color-mix(in srgb,var(--blue) 13%,transparent)}
.cday.fest .n{color:var(--red)}.cday.today.fest .n{color:#fff}
.cday.ass{background:color-mix(in srgb,var(--purple) 18%,transparent)}
.dots2{display:flex;flex-wrap:wrap;gap:3px;justify-content:center;max-width:44px}
.dots2 i{width:7px;height:7px;border-radius:4px;background:var(--c)}
.cchips{display:none}
@media (min-width:900px){
  .cday{min-height:104px;align-items:stretch;padding:6px}
  .cday .n{align-self:flex-start;width:28px;height:28px;font-size:14px}
  .cday .dots2{display:none}
  .cchips{display:flex;flex-direction:column;gap:2px}
  .cchip{font-size:11px;line-height:15px;padding:1px 6px;border-radius:6px;background:color-mix(in srgb,var(--c) 16%,transparent);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;border-left:3px solid var(--c);text-align:left}
}
.cbar{width:5px;align-self:stretch;border-radius:3px;background:var(--c);flex-shrink:0}
.lbl{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.4px;padding:2px 7px;border-radius:6px;color:#fff;background:var(--c);vertical-align:2px;margin-left:6px}
.mini{display:inline-flex;gap:6px;color:var(--label2);vertical-align:-3px;margin-left:6px}
.travel{display:flex;align-items:center;gap:8px;padding:7px 18px 7px 80px;font-size:13px;color:var(--label2)}
.travel.free{color:var(--green)}
.legend{display:flex;flex-wrap:wrap;gap:6px 14px;padding:0 20px 20px;font-size:13px;color:var(--label2)}
.legend span{display:inline-flex;align-items:center;gap:6px}
.legend i{width:10px;height:10px;border-radius:5px;background:var(--c)}
.scroll-x{overflow-x:auto;margin:0 16px 30px;border-radius:26px;background:var(--bg2);box-shadow:var(--surf-shadow)}
.tl{display:grid;grid-template-columns:54px repeat(var(--n),minmax(150px,1fr));min-width:max-content}
.tl-h{padding:12px 8px;font-size:14px;font-weight:600;display:flex;gap:8px;align-items:center;border-bottom:.5px solid var(--sep);min-height:62px}
.tl-h .av{width:30px;height:30px;font-size:12px}
.tl-col{position:relative;border-left:.5px solid var(--sep)}
.tl-col.ass{background:repeating-linear-gradient(135deg,color-mix(in srgb,var(--purple) 14%,transparent) 0 8px,transparent 8px 16px)}
.tl-hr{position:absolute;left:0;right:0;border-top:.5px solid var(--sep)}
.tl-lab{position:absolute;right:8px;font-size:11px;color:var(--label2);transform:translateY(-50%)}
.blk{position:absolute;left:5px;right:5px;border-radius:12px;padding:6px 8px;font-size:12px;line-height:15px;overflow:hidden;text-align:left;
  background:color-mix(in srgb,var(--c) 18%,var(--bg2));border-left:4px solid var(--c);color:var(--label)}
.blk b{display:block;font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.nowline{position:absolute;left:0;right:0;border-top:2px solid var(--red);z-index:2}
.mx{display:grid;grid-template-columns:180px repeat(7,minmax(128px,1fr));min-width:max-content}
.mx>div{border-top:.5px solid var(--sep);border-left:.5px solid var(--sep);padding:8px;min-height:70px}
.mx .mh{font-size:13px;font-weight:600;min-height:0;border-top:0;color:var(--label2)}
.mx .mh.today{color:var(--blue)}
.mx .mo{border-left:0;display:flex;flex-direction:column;gap:6px;justify-content:center}
.mx .cell.over{background:color-mix(in srgb,var(--blue) 14%,transparent)}
.mx .cell.ass{background:color-mix(in srgb,var(--purple) 14%,transparent)}
.load{height:6px;border-radius:3px;background:var(--fill);overflow:hidden}
.load i{display:block;height:100%;border-radius:3px;background:var(--c)}
.chip{display:block;width:100%;text-align:left;font-size:12px;line-height:15px;padding:5px 7px;border-radius:10px;margin-bottom:4px;
  background:color-mix(in srgb,var(--c) 16%,var(--bg2));border-left:4px solid var(--c)}
.chip[draggable=true]{cursor:grab}
/* operatore: accesso, PIN, tab */
.onb{max-width:520px;margin:0 auto;padding:28px 24px 40px;min-height:100%;display:flex;flex-direction:column}
.onb .grow{flex:1}
.how{display:flex;gap:16px;align-items:center;padding:16px 18px}
.how .ic{width:52px;height:52px;border-radius:50%}
.pin-dots{display:flex;gap:20px;justify-content:center;margin:26px 0 34px}
.pin-dots i{width:16px;height:16px;border-radius:50%;border:2px solid var(--label2)}
.pin-dots i.on{background:var(--label);border-color:var(--label)}
.keys{display:grid;grid-template-columns:repeat(3,82px);gap:16px 26px;justify-content:center}
.key{width:82px;height:82px;border-radius:50%;font-size:32px;font-weight:400;display:grid;place-items:center}
.key.blank{visibility:hidden}
.shake{animation:shake .4s}
@keyframes shake{20%,60%{transform:translateX(-10px)}40%,80%{transform:translateX(10px)}}
.optab .tab{font-size:12px;padding:8px 0 7px;gap:4px}
.optab{max-width:480px!important}
.banner{display:flex;gap:12px;align-items:center;padding:14px 18px;border-radius:22px;background:color-mix(in srgb,var(--orange) 16%,var(--bg2));margin-bottom:14px;width:100%;text-align:left;box-shadow:var(--surf-shadow)}
.banner .ic{background:var(--orange)}
.coll{display:flex;align-items:center;gap:8px;margin-top:14px;flex-wrap:wrap}
.av.sm{width:30px;height:30px;font-size:12px}
.dotp{width:9px;height:9px;border-radius:5px;background:var(--c);display:inline-block}
.statbig{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-bottom:28px}
.statbig>div{background:var(--bg2);border-radius:22px;padding:14px;box-shadow:var(--surf-shadow)}
/* procedura modifica serie e moduli */
.wchips{display:flex;gap:6px;flex-wrap:wrap}
.wchip{width:42px;height:42px;border-radius:50%;background:var(--fill2);font-weight:600;font-size:14px;display:grid;place-items:center}
.wchip.on{background:var(--blue);color:#fff}
.tchips{display:flex;gap:8px;flex-wrap:wrap}
.tchip{display:inline-flex;align-items:center;gap:6px;min-height:38px;padding:0 14px 0 6px;border-radius:19px;background:var(--fill2);font-size:15px}
.tchip.on{background:color-mix(in srgb,var(--blue) 16%,transparent);color:var(--blue);font-weight:600}
.tchip .ic{width:26px;height:26px;border-radius:50%}
.tchip .ic svg{width:15px;height:15px}
.opt{display:flex;gap:14px;align-items:center;width:100%;padding:16px 18px;text-align:left}
.opt .radio{width:24px;height:24px;border-radius:50%;border:2px solid var(--label3);flex-shrink:0;display:grid;place-items:center}
.opt.on .radio{border-color:var(--blue);background:var(--blue);color:#fff}
.dchips{display:flex;gap:6px;flex-wrap:wrap}
.dchips span{font-size:13px;padding:4px 10px;border-radius:12px;background:var(--fill2)}
.cbx{width:24px;height:24px;border-radius:50%;border:2px solid var(--label3);flex-shrink:0;display:grid;place-items:center}
.cbx.on{background:var(--blue);border-color:var(--blue);color:#fff}
.back-h{padding:6px 16px 0}
.grp.cal>*+*::before{display:none}
.main-in{max-width:1180px}
.nav::before{left:-50vw!important;right:-50vw!important}

/* ===================== RESPONSIVE: correzioni ===================== */
/* la colonna del contenuto non deve allargarsi oltre lo schermo (griglia con sidebar) */
.main{min-width:0;overflow-x:clip}
/* niente scorrimento orizzontale della pagina: la sfumatura della barra resta dentro il contenuto */
html,body{max-width:100%}
.op,.flow,.onb,.login{overflow-x:clip}
/* tastierino PIN: si adatta anche a 320 px */
.keys{--k:min(82px,22vw);grid-template-columns:repeat(3,var(--k));gap:min(16px,3.5vw) min(26px,6vw)}
.key{width:var(--k);height:var(--k);font-size:calc(var(--k)*.39)}
.pin-dots{margin:min(26px,4vh) 0 min(34px,5vh)}
/* riquadri numerici: testo che non va a capo sui telefoni stretti */
.statbig>div{min-width:0}
.statbig .t-2{font-size:clamp(18px,5.6vw,22px);white-space:nowrap}
@media (max-width:360px){.statbig{gap:8px}.statbig>div{padding:12px 10px}}
/* testi lunghi: vanno a capo invece di uscire dai bordi */
.t-lt,.t-1,.q{overflow-wrap:anywhere;hyphens:auto}
.kv-v{overflow-wrap:anywhere}
@media (max-width:360px){.t-lt{font-size:30px;line-height:36px}.q{font-size:26px;line-height:32px}.big.primary{font-size:24px;min-height:104px}.big.primary .bi{width:72px;height:72px}.big{font-size:18px}}
/* planning su telefono: nomi e orari restano fissi mentre si scorre di lato */
.tl-corner,.tl-hours{position:sticky;left:0;z-index:4;background:var(--bg2)}
.mx>.mh:first-child,.mx>.mo{position:sticky;left:0;z-index:4;background:var(--bg2)}
@media (max-width:600px){.mx{grid-template-columns:116px repeat(7,minmax(112px,1fr))}.mx .mo .t-fn{font-size:11px}
 .tl{grid-template-columns:46px repeat(var(--n),minmax(132px,1fr))}}
/* tablet: i due pulsanti della scheda affiancati, sheet più leggibile */
@media (min-width:700px){.dock-in{grid-template-columns:1fr 1fr}.op.has-dock{padding-bottom:150px!important}}
/* telefono in orizzontale o schermi bassi */
@media (max-height:560px){
 .dock{padding-top:18px}.dock-in{grid-template-columns:1fr 1fr;gap:8px}.dock .big.fill{min-height:56px;font-size:17px}.dock .big .bi{width:40px;height:40px}
 .op.has-dock{padding-bottom:110px!important}
 .fs{justify-content:flex-start;overflow:auto}
 .fs .mark{width:80px;height:80px;margin-bottom:12px}.fs .mark svg{width:46px;height:46px}.fs .big-time{font-size:44px;margin-top:8px}
 .fs-actions{margin-top:16px;display:grid;grid-template-columns:1fr 1fr;gap:10px}.fs-actions.stack>*+*{margin-top:0}
 .vf{width:min(66vw,270px,34vh);margin:8px auto}
 .scan-sheet{max-height:52vh}
 .big.primary{min-height:84px}.big.conf{min-height:64px;margin-top:14px}
 .tiles .tile{min-height:112px}
 .tabwrap{padding-top:8px;padding-bottom:calc(env(safe-area-inset-bottom,0px) + 6px)}
}
/* note di accesso nella card del prossimo cantiere */
.access{margin-top:14px;display:grid;gap:8px}
.access .arow{display:flex;gap:10px;align-items:flex-start;font-size:15px;line-height:20px}
.access .arow .ic{width:26px;height:26px;border-radius:50%}
.access .arow .ic svg{width:15px;height:15px}

/* ===================== APP REALE ===================== */
.login-wrap{min-height:100%;display:flex;align-items:center;justify-content:center;padding-inline:16px}
.login-wrap .login{width:100%;max-width:520px;padding-block:24px}
.login-wrap .sec{margin-left:0;margin-right:0}.login-wrap .pad{padding:0}
.big-av{width:88px!important;height:88px!important;font-size:32px!important;margin:0 auto}
.vf{overflow:hidden;border-radius:22px;background:#000}
.vf video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.vf i,.vf .line{z-index:2}
.codqr{flex:1;min-width:0;height:44px;border-radius:22px;border:0;padding:0 16px;font-size:18px;letter-spacing:2px;text-transform:uppercase;background:rgba(255,255,255,.14);color:#fff}
.codqr::placeholder{color:rgba(235,235,245,.5);letter-spacing:0;text-transform:none}
.codqr2{letter-spacing:1px;text-transform:uppercase}
.scan-sheet form.srow{padding:4px}
.qrimg{width:200px;height:200px;display:grid;place-items:center;background:#fff;border-radius:14px}
.qrimg svg{width:200px;height:200px}
.sel{user-select:all;-webkit-user-select:all}
body.busy::after{content:"";position:fixed;left:0;right:0;top:0;height:3px;z-index:200;background:linear-gradient(90deg,transparent,var(--blue),transparent);background-size:50% 100%;background-repeat:no-repeat;animation:busy 1s linear infinite}
@keyframes busy{from{background-position:-50% 0}to{background-position:150% 0}}
.stepper button:disabled{opacity:.3}
.btn:disabled{opacity:.5}
.row select.fld{color:var(--blue)}
.big.tint .bi svg{width:26px;height:26px}
.wchips{gap:8px}
.fs{overflow-y:auto}
@media (max-width:420px){.tab span{font-size:10px}.tabbar .tab{padding-left:0;padding-right:0}}

/* marchio: «Io» in rosso */
.io{color:var(--io)}

/* ---------- registro pubblico delle pulizie (QR senza accesso) ---------- */
.reg{max-width:480px;margin:0 auto;padding:28px 16px 40px;display:flex;flex-direction:column;gap:18px}
.reg-h{display:flex;align-items:center;gap:14px}
.reg-h .brand{flex:none}
.reg-c{background:var(--bg2);border-radius:20px;padding:16px 14px 18px;display:flex;flex-direction:column;gap:10px}
.reg-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:0 2px 4px}
.reg-b{width:40px;height:40px;border-radius:50%;display:grid;place-items:center;color:var(--blue);background:var(--fill2)}
.reg-b:disabled{color:var(--label3);background:none;cursor:default}
.reg-g{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:6px;text-align:center}
.reg-wd span{font-size:12px;font-weight:600;color:var(--label2);text-transform:uppercase;letter-spacing:.4px}
.reg-d{position:relative;aspect-ratio:1;max-width:100%;border-radius:50%;display:grid;place-items:center;font-variant-numeric:tabular-nums;font-size:16px}
.reg-d b{font-weight:500}
.reg-d.fut{color:var(--label3)}
.reg-d.oggi{box-shadow:inset 0 0 0 2px var(--blue)}
.reg-d.ok{background:var(--green);color:#fff}
.reg-d.ok b{font-weight:700}
.reg-d.ok svg{position:absolute;top:2px;right:2px;width:13px;height:13px;background:var(--bg2);color:var(--green);border-radius:50%;padding:1px}
.reg-sum{display:flex;align-items:center;gap:8px;color:var(--label2);padding:6px 2px 0}
.reg-dot{width:12px;height:12px;border-radius:50%;background:var(--green);flex:none}
.reg-note{margin:0;padding:0 4px;line-height:1.45}
.reg-acc{display:flex;align-items:center;justify-content:center;gap:8px;color:var(--blue);font-size:15px;padding:12px;border-radius:12px;margin-top:4px}
.login .reg-acc{margin:14px auto 0}

/* pannello già aperto che si aggiorna: niente animazione di riapertura */
.sbg.fermo,.sbg.fermo .sheet{animation:none}
/* barra di scorrimento del pannello, dentro gli angoli arrotondati (mouse) */
@media (hover:hover) and (pointer:fine){
  .sheet::-webkit-scrollbar{width:14px}
  .sheet::-webkit-scrollbar-track{background:transparent;margin-block:34px}
  .sheet::-webkit-scrollbar-thumb{background:color-mix(in srgb,var(--label) 20%,transparent);border-radius:99px;border:4px solid transparent;background-clip:padding-box;min-height:48px}
  .sheet::-webkit-scrollbar-thumb:hover{background-color:color-mix(in srgb,var(--label) 34%,transparent)}
  .sheet::-webkit-scrollbar-button,.sheet::-webkit-scrollbar-corner{display:none;background:transparent}
  @supports not selector(::-webkit-scrollbar){.sheet{scrollbar-width:thin;scrollbar-color:color-mix(in srgb,var(--label) 24%,transparent) transparent}}
}

/* ore settimanali rispetto al contratto (scheda persona) */
.wk{padding:14px 16px 6px;display:flex;flex-direction:column;gap:10px}
.wk-cap{min-height:20px;color:var(--label2)}
.wk-cap b{color:var(--label);font-weight:600}
.wk-plot{position:relative;height:132px;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;align-items:end;border-bottom:1px solid var(--sep)}
.wk-col{position:relative;height:100%;display:flex;align-items:flex-end;justify-content:center;border-radius:8px 8px 0 0;cursor:pointer}
.wk-col:hover,.wk-col.on{background:var(--fill2)}
.wk-bar{display:block;width:min(26px,70%);border-radius:4px 4px 0 0;background:color-mix(in srgb,var(--blue) 70%,var(--bg2))}
.wk-bar.over{background:var(--orange)}
.wk-bar.abs{background:repeating-linear-gradient(135deg,var(--gray) 0 3px,color-mix(in srgb,var(--gray) 35%,var(--bg2)) 3px 6px)}
.wk-ref{position:absolute;left:0;right:0;border-top:1.5px dashed var(--label2);pointer-events:none;z-index:1}
.wk-x{display:grid;grid-template-columns:repeat(8,minmax(0,1fr));gap:6px;text-align:center;font-size:11px;color:var(--label2);font-variant-numeric:tabular-nums}
.wk-x span{display:flex;flex-direction:column;line-height:1.25;font-size:12px}
.wk-x small{font-size:10.5px;text-transform:lowercase}
.wk-x .on{color:var(--label);font-weight:600}
.wk-sum{align-items:flex-start}
.wk-sum .wk-dot{width:10px;height:10px;border-radius:50%;flex:none;margin-top:5px}
.wk-leg{display:flex;flex-wrap:wrap;gap:4px 14px;font-size:12px;color:var(--label2)}
.wk-leg span{display:inline-flex;align-items:center;gap:6px}
.wk-leg i{width:10px;height:10px;border-radius:3px;display:inline-block}
.wk-leg .lg-ref{width:16px;height:0;border-radius:0;border-top:1.5px dashed var(--label2)}
.wk-leg .lg-abs{background:repeating-linear-gradient(135deg,var(--gray) 0 2px,color-mix(in srgb,var(--gray) 35%,var(--bg2)) 2px 4px)}

/* desktop: la sfumatura sotto la barra in alto parte dal bordo della pagina e copre tutta la larghezza
   (prima era dentro la colonna del contenuto: lasciava uno stacco sopra e si interrompeva a sinistra) */
@media (min-width:900px){
  .main{padding-top:0}
  .nav{padding-top:24px}
  .nav::before{display:none}
  .shell::before{content:"";position:fixed;left:0;right:0;top:0;height:96px;z-index:14;pointer-events:none;
    background:linear-gradient(color-mix(in srgb,var(--bg) 72%,transparent) 30%,transparent);
    -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
    -webkit-mask-image:linear-gradient(#000 50%,transparent);mask-image:linear-gradient(#000 50%,transparent)}
  .side{z-index:20}
}

/* scelta del tema */
:root[data-theme="light"]{color-scheme:light}
:root[data-theme="dark"]{color-scheme:dark}
.row .seg-tema{flex:1}
.seg-tema button{flex:1;min-height:36px;justify-content:center;text-align:center}
.cambio-tema,.cambio-tema *,.cambio-tema *::before{transition:background-color .3s ease,color .3s ease,border-color .3s ease,box-shadow .3s ease!important}
@media (prefers-reduced-motion:reduce){.cambio-tema,.cambio-tema *,.cambio-tema *::before{transition:none!important}}

/* recupero: scelta di chi lo fa */
.rec-op{align-items:flex-start;cursor:pointer}
.rec-op input[type=radio]{width:20px;height:20px;margin:2px 4px 0 0;accent-color:var(--blue);flex:none}
.rec-op .pill{vertical-align:1px}

/* posizione: suggerimenti, cartina, segnaposto */
.pos{display:grid;gap:10px;padding:4px 16px 14px}
.pos-sugg{display:grid;border-radius:14px;background:var(--bg3);overflow:hidden;box-shadow:inset 0 0 0 .5px var(--sep)}
.pos-s{display:flex;gap:10px;align-items:flex-start;padding:11px 12px;text-align:left;font-size:15px;line-height:1.3;width:100%}
.pos-s+.pos-s{border-top:.5px solid var(--sep)}
button.pos-s:hover,button.pos-s:focus-visible{background:var(--fill2)}
.pos-s>svg{color:var(--red);flex:none;margin-top:1px}
.pos-r1{display:block;font-weight:600}
.pos-r2{display:block;font-size:13px}
.pos-map{height:240px;max-width:100%;border-radius:16px;overflow:hidden;background:var(--fill2);isolation:isolate;z-index:0}
.pos-err{display:grid;place-items:center;height:100%;padding:16px;text-align:center}
.pos-bar{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.pos-bar .btn{display:inline-flex;align-items:center;gap:6px}
.pos-vicino{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;line-height:1.35;color:var(--label2);padding:10px 12px;border-radius:12px;background:color-mix(in srgb,var(--blue) 10%,var(--bg2))}
.pos-vicino b{color:var(--label);font-weight:600}
.pos-pin{background:none;border:0}
.pos-pin span{position:absolute;left:3px;top:2px;width:24px;height:24px;border-radius:50% 50% 50% 0;background:var(--red);transform:rotate(-45deg);border:2.5px solid #fff;box-shadow:0 3px 8px rgba(0,0,0,.35)}
.pos-pin span::after{content:"";position:absolute;left:6px;top:6px;width:7px;height:7px;border-radius:50%;background:#fff}
.leaflet-container{font:inherit;background:var(--fill2)}
.leaflet-container a{color:var(--blue)}
.leaflet-bar{border:0!important;box-shadow:0 2px 8px rgba(0,0,0,.18)!important;border-radius:10px!important;overflow:hidden}
.leaflet-bar a{background:var(--bg2)!important;color:var(--label)!important;border-bottom-color:var(--sep)!important;width:32px!important;height:32px!important;line-height:32px!important}
.leaflet-control-attribution{background:color-mix(in srgb,var(--bg2) 82%,transparent)!important;color:var(--label2)!important;font-size:10px!important;border-radius:8px 0 0 0}
.pos [hidden]{display:none!important}

/* editor servizio: programma per giorno */
.turno{gap:8px}
.turno-r{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr) minmax(0,.9fr) auto auto;gap:8px;align-items:end}
.turno-g{text-align:left;font-weight:600;min-width:0}
.turno-c{display:flex;flex-direction:column;gap:2px;min-width:0}
.turno-c .fld{text-align:left;min-width:0;width:100%}
.turno-c b{font-size:17px;line-height:36px}
.turno-o{line-height:1.5}
.turno-p{display:grid;gap:8px;padding:10px;border-radius:12px;background:var(--bg3)}
.turno-pr{display:flex;align-items:center;gap:8px}
.lnk{color:var(--blue);font-size:inherit;display:inline;padding:0;text-decoration:underline;text-underline-offset:2px}
.tchip.sm{min-height:32px;font-size:14px;padding:0 12px 0 6px}
.gbtn.circle.sm{width:32px;height:32px;min-height:32px}
.mans-g{display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.mans-g .tchip{padding:0 12px}
.row.ant{min-height:52px}
@media (max-width:480px){
  .turno-r{grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;grid-template-areas:"g g x" "i o f"}
  .turno-r .turno-g{grid-area:g}
  .turno-r>label:nth-of-type(1){grid-area:i}
  .turno-r>label:nth-of-type(2){grid-area:o}
  .turno-r>div.turno-c{grid-area:f}
  .turno-r>.gbtn{grid-area:x}
}

/* cartina in tema scuro: stesse mappe OpenStreetMap, scurite */
.pos-map.scuro .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.9) contrast(.9) saturate(.8)}

/* editor servizio: tabella posti × giorni */
.pchips{display:flex;gap:6px;flex-wrap:wrap}
.pchip{min-height:40px;padding:0 14px;border-radius:20px;background:var(--fill2);font-size:15px;font-weight:600;display:inline-flex;align-items:center;justify-content:center;gap:6px}
.pchip.on{background:var(--blue);color:#fff}
.sv-r{gap:8px}
.tpg-w{overflow-x:auto;padding:12px 12px 8px}
.tpg{display:grid;grid-template-columns:44px repeat(var(--n),minmax(88px,1fr));gap:6px;align-items:stretch}
.tpg-op{display:flex;align-items:center;gap:6px;min-height:44px;padding:4px 8px 4px 4px;border-radius:22px;background:var(--fill2);font-size:14px;font-weight:600;min-width:0;color:var(--label)}
.tpg-op.on{box-shadow:0 0 0 2px var(--blue)}
.tpg-op svg{flex:none;opacity:.55}
.tpg-n{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left}
.tpg-g{display:flex;align-items:center;font-size:15px}
.tpg-c{min-height:54px;border-radius:14px;background:color-mix(in srgb,var(--blue) 12%,transparent);color:var(--label);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;padding:4px}
.tpg-c b{font-size:17px}
.tpg-c span{font-size:12px;color:var(--label2)}
.tpg-c.off{background:var(--fill2);color:var(--label3);font-size:18px}
.tpg-c.sel{box-shadow:0 0 0 2.5px var(--blue);background:color-mix(in srgb,var(--blue) 20%,transparent)}
.tpg-c.off.sel{background:var(--fill2)}
.tpg-ed{display:grid;gap:10px;margin:4px 12px 12px;padding:14px;border-radius:16px;background:var(--bg3)}
.tpg-az{display:flex;gap:8px;flex-wrap:wrap}
.tpg-az .btn{flex:1 1 auto;min-height:42px}
.tpg-ch{display:grid;gap:4px}
.tpg-p{display:flex;align-items:center;gap:10px;min-height:52px;padding:6px 10px;border-radius:12px;text-align:left;color:var(--label)}
.tpg-p .grow{display:flex;flex-direction:column;min-width:0}
.tpg-p.on{background:color-mix(in srgb,var(--blue) 12%,transparent)}
.tpg-p svg{color:var(--blue)}
.tpg-ko{color:var(--orange)}
.assg-t{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
.assg-c{display:flex;flex-direction:column;gap:4px;min-width:0}
.stp{display:flex;align-items:center;gap:4px;background:var(--bg2);border-radius:14px;padding:3px}
.stp .fld{flex:1;min-width:0;width:100%;text-align:center;font-weight:700;font-size:17px;background:transparent;color:var(--label)}
.stp-b{width:38px;height:38px;flex:none;border-radius:11px;background:var(--fill2);font-size:20px;font-weight:700;display:grid;place-items:center;color:var(--label)}
.stp input[type=time]::-webkit-calendar-picker-indicator{display:none}
@media (max-width:480px){.assg-t{grid-template-columns:minmax(0,1fr)}.stp .fld{font-size:19px}}
/* sostituzione guidata */
.sw-pass{display:flex;gap:6px}
.sw-pass span{flex:1;height:4px;border-radius:2px;background:var(--fill)}
.sw-pass span.on{background:var(--blue)}
/* planning: filtro, striscia della settimana, agenda, mese */
.pl-f{display:flex;gap:8px;overflow-x:auto;padding:0 16px 14px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.pl-f::-webkit-scrollbar{display:none}
.pl-f .tchip{flex:none;white-space:nowrap}
.pl-f .tchip .av{width:24px;height:24px;font-size:10px}
.pl-oggi-on{opacity:.55}
.pl-h{display:flex;align-items:center;gap:8px}
.ell{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wstrip{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:0 16px 14px}
.wday{display:flex;flex-direction:column;align-items:center;gap:2px;padding:7px 0 8px;border-radius:16px;color:var(--label)}
.wday span{font-size:12px;font-weight:600;color:var(--label2)}
.wday b{font-size:18px;line-height:22px}
.wday i{width:6px;height:6px;border-radius:3px;background:var(--c)}
.wday.today b{color:var(--blue)}
.wday.on{background:var(--blue);color:#fff}.wday.on span,.wday.on b{color:#fff}.wday.on i{box-shadow:0 0 0 1.5px #fff}
:root{--clear:transparent}
.pl-tel .sec-h,.pl-dh{width:100%}
.pl-dh{display:flex;justify-content:space-between;align-items:center;gap:8px;text-align:left;font:inherit;color:inherit;text-transform:inherit;letter-spacing:inherit}
.pl-dh .l2{display:inline-flex;align-items:center;gap:4px;text-transform:none}
.pl-today{color:var(--blue);font-weight:700}
.pl-carico{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;padding:0 16px 16px}
.pl-ci{display:flex;align-items:center;gap:8px;padding:10px;border-radius:16px;background:var(--bg2);box-shadow:var(--surf-shadow);text-align:left;color:var(--label);min-width:0}
.pl-ci .grow{display:flex;flex-direction:column;gap:5px;min-width:0}
.pl-ci .t-fn:last-child{text-align:right;line-height:1.25}
.mcal-w{padding:0 12px 16px}
/* storico delle ore dell'operatore: un mese come calendario */
.stc-top{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 16px 12px}
.stc-top .gbtn[disabled]{opacity:.3}
.stc-stat{margin:0 16px 14px;gap:8px}
.stc-stat>div{padding:12px;border-radius:18px}
.stc-stat .t-2{font-size:clamp(17px,5vw,21px)}
.stc{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;margin:0 16px 18px;padding:10px 8px;border-radius:22px;background:var(--bg2);box-shadow:var(--surf-shadow)}
.stc-h{text-align:center;font-size:12px;font-weight:600;color:var(--label2);padding-bottom:4px}
.stc-c{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:54px;padding:5px 1px;border-radius:12px;color:var(--label);min-width:0;background:none;border:0;font:inherit}
.stc-c[disabled]{color:var(--label3,var(--label2));cursor:default}
.stc-n{font-size:15px;font-weight:600;width:26px;height:26px;display:grid;place-items:center;border-radius:13px}
.stc-o{font-size:12px;font-weight:700;color:var(--green);min-height:15px}
.stc-c.lav{background:color-mix(in srgb,var(--green) 9%,transparent)}
.stc-c.att{background:color-mix(in srgb,var(--orange) 12%,transparent)}
.stc-c.att .stc-o{color:var(--orange)}
.stc-c.oggi .stc-n{background:var(--blue);color:#fff}
.stc-c.sel{box-shadow:inset 0 0 0 2px var(--blue)}
.mcal{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px;padding:10px 8px;border-radius:24px;background:var(--bg2);box-shadow:var(--surf-shadow)}
.mcal-h{text-align:center;font-size:12px;font-weight:600;color:var(--label2);padding-bottom:4px}
.mc{display:flex;flex-direction:column;align-items:center;gap:2px;min-height:62px;padding:6px 2px;border-radius:12px;color:var(--label);min-width:0}
.mc-n{font-size:16px;font-weight:600;width:28px;height:28px;display:grid;place-items:center;border-radius:14px}
.mc.today .mc-n{background:var(--blue);color:#fff}
.mc.fuori{opacity:.35}
.mc.ko{background:color-mix(in srgb,var(--red) 9%,transparent)}
.mc-info{font-size:12px;font-weight:600;color:var(--label2);min-height:15px}
.mc-dots{display:flex;gap:3px;min-height:6px}
.mc-dots i{width:6px;height:6px;border-radius:3px;background:var(--c)}
.mc-ant{display:none}
.mc:active{background:var(--fill2)}
.pl-desk{display:none}
@media (min-width:900px){
  .pl-desk{display:block}.pl-tel{display:none}
  .mcal-w{padding:0 16px 18px}
  .mc{align-items:stretch;min-height:118px;padding:6px;text-align:left;border:.5px solid var(--sep);border-radius:12px}
  .mc-n{width:auto;height:auto;place-items:start;font-size:14px;padding:2px 6px;justify-self:start;align-self:flex-start;border-radius:10px}
  .mc-info,.mc-dots{display:none}
  .mc-ant{display:flex;flex-direction:column;gap:3px;margin-top:4px;min-width:0}
  .mc-l{display:block;font-size:12px;line-height:15px;padding:3px 6px;border-radius:7px;background:color-mix(in srgb,var(--c) 14%,transparent);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
  .mc-piu{font-size:12px;padding-left:6px}
  .mx .mh{background:none;border-radius:0;text-align:left;font:inherit;font-size:13px;font-weight:600}
}
.reg-t{color:var(--label);margin-top:2px;overflow-wrap:anywhere}
/* giornate parziali (ferie, permessi, malattia) */
.pz-m,.pz{text-align:left;width:100%}
.pz-r{width:22px;height:22px;flex:none;border-radius:11px;box-shadow:inset 0 0 0 2px var(--label3)}
.pz-m.on .pz-r{box-shadow:inset 0 0 0 7px var(--blue)}
.pz-c{width:28px;height:28px;flex:none;border-radius:14px;display:grid;place-items:center;background:var(--fill2);color:var(--label2)}
.pz.on .pz-c{background:var(--green);color:#fff}
.pz-si{color:var(--green)}
.pz-p{gap:8px}
/* lavori non in programma: sempre ben visibili */
.riga-lib{background:color-mix(in srgb,var(--pink) 8%,transparent)}
.pill-lib{background:var(--pink);color:#fff}
/* scelta dopo il QR (lavori di oggi e da fare entro) */
.scelte{display:grid;gap:10px;width:100%;max-width:420px;margin-top:22px}
.scelta{display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:18px;background:rgba(255,255,255,.16);color:#fff;text-align:left;font:inherit}
.scelta .grow{display:flex;flex-direction:column;gap:2px;min-width:0}
.scelta b{font-size:17px}
.scelta small{font-size:14px;opacity:.85}
.sc-c{width:30px;height:30px;flex:none;border-radius:15px;display:grid;place-items:center;box-shadow:inset 0 0 0 2px rgba(255,255,255,.7);color:transparent}
.scelta.on{background:#fff;color:var(--c)}
.scelta.on .sc-c{background:var(--c);box-shadow:none;color:#fff}
.scelta:disabled{opacity:.55}

/* ===================== PRIVACY (pagina intera, si legge anche senza accesso) ===================== */
.priv{max-width:720px;margin:0 auto;padding:max(16px,env(safe-area-inset-top,0px)) 16px 48px}
.priv-top{display:flex;align-items:center;gap:12px;margin:8px 0 18px}
.priv-top h1{margin:0;font-size:26px;line-height:32px;font-weight:700;letter-spacing:-.2px}
.priv-card{background:var(--bg2);border-radius:18px;padding:20px;margin-bottom:14px;box-shadow:0 1px 2px rgba(0,0,0,.04)}
.priv-card h2{margin:0 0 8px;font-size:19px;line-height:25px;font-weight:700;letter-spacing:-.1px}
.priv-card p{margin:0 0 10px;font-size:16px;line-height:1.55;letter-spacing:-.1px}
.priv-card p:last-child{margin-bottom:0}
.priv-card a{color:var(--blue);text-decoration:underline;text-underline-offset:2px;overflow-wrap:anywhere}
.priv-card .btn{margin-top:6px;text-decoration:none}
.priv-card .btn+.btn{margin-top:10px}
.priv-copy section+section{border-top:1px solid var(--sep);margin-top:16px;padding-top:16px}
.priv-nota{margin-top:16px!important;padding-top:14px;border-top:1px solid var(--sep);font-size:14px!important;color:var(--label2)}
.priv-sub{margin-top:4px;font-size:14px;line-height:19px;color:var(--label2)}
.priv-push{text-align:center}
.priv-push p{text-align:left}
.priv-push-ico{width:72px;height:72px;margin:6px auto 14px;border-radius:22px;display:grid;place-items:center;color:#fff;background:linear-gradient(135deg,var(--brand),var(--brand2))}
.priv-avviso{background:color-mix(in srgb,var(--blue) 10%,var(--bg2))}
.priv-copy p{hyphens:auto;-webkit-hyphens:auto}
@media (min-width:600px){.priv-copy p{text-align:justify}}

/* tempo a rotelle (ore e minuti) */
.dur-row select.dur{flex:0 0 auto;width:auto;min-width:5.2em;text-align:center;text-align-last:center}
.dur-row select.dur+select.dur{margin-left:8px}

/* entrata e uscita (sql/031): tempo trascorso, promemoria dopo l'entrata, riepilogo di «Ho finito» */
.in-corso{margin-top:14px;padding:12px 14px;border-radius:18px;background:color-mix(in srgb,var(--indigo) 12%,transparent)}
.in-corso .t-1{color:var(--indigo)}
.fs-avviso{display:flex;gap:12px;align-items:flex-start;text-align:left;margin-top:26px;max-width:420px;padding:14px 16px;border-radius:20px;background:rgba(255,255,255,.22);font-size:17px;line-height:1.35}
.fs-avviso svg{flex:0 0 auto}
.fine-box{width:100%;max-width:420px;margin-top:22px;padding:8px 18px 14px;border-radius:22px;background:rgba(255,255,255,.18);text-align:left}
.fine-r{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 0;font-size:19px;border-bottom:1px solid rgba(255,255,255,.25)}
.fine-r b{font-size:24px}
.fine-r.tot{border-bottom:0}
.fine-step{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;padding:10px 0;border-bottom:1px solid rgba(255,255,255,.25)}
.fine-step button{height:48px;border-radius:14px;background:rgba(255,255,255,.22);color:#fff;font-size:19px;font-weight:700;font-variant-numeric:tabular-nums}

/* zone dello stesso cantiere (sql/033): le altre zone di oggi nella scheda dell'operatore */
.card .zl{display:flex;flex-wrap:wrap;gap:6px;margin-top:12px}
.card .zl .z{font-size:14px;font-weight:600;padding:4px 10px;border-radius:999px;background:var(--fill2)}

/* ricerca negli elenchi e archivio */
.cerca{display:flex;align-items:center;gap:8px;margin:0 16px 16px;padding:10px 12px;border-radius:12px;background:var(--fill2);color:var(--label3)}
.cerca .fld{font-size:17px;color:var(--label)}
.cerca .fld::-webkit-search-cancel-button{cursor:pointer}
[data-elenco] [hidden]{display:none!important}
.chev{transition:transform .2s}
/* durante la ricerca: niente linea sopra la prima riga visibile del gruppo */
.grp>[hidden]~*:not([hidden])::before{display:block}
.grp>[hidden]+*:not([hidden])::before{display:none}
.grp>:not([hidden])~[hidden]+*:not([hidden])::before{display:block}

/* calendario nella pagina */
.calp{gap:8px}
.cal-h{display:flex;align-items:center;width:100%;font-size:16px}
.cal-h .l2{font-weight:400}
.cal-m{display:flex;align-items:center;width:100%;gap:8px;font-weight:600;text-align:center}
.cal-m .gbtn.circle{width:36px;height:36px}
.cal-g{display:grid;grid-template-columns:repeat(7,1fr);gap:2px;width:100%}
.cal-g i{font-style:normal;font-size:12px;font-weight:600;color:var(--label3);text-align:center;padding:2px 0}
.cal-g button{text-align:center;padding:0;height:40px;border:0;border-radius:10px;background:none;color:var(--label);font:inherit;font-size:16px;font-variant-numeric:tabular-nums;cursor:pointer}
.cal-g button.dom{color:var(--red)}
.cal-g button.oggi{box-shadow:inset 0 0 0 1.5px var(--blue)}
.cal-g button.sel{background:color-mix(in srgb,var(--blue) 16%,transparent);border-radius:0}
.cal-g button.ini,.cal-g button.fin{background:var(--blue);color:#fff;border-radius:10px}
.cal-g button.sel.ini:not(.fin){border-radius:10px 0 0 10px}
.cal-g button.sel.fin:not(.ini){border-radius:0 10px 10px 0}
.cal-g button:disabled{opacity:.28;cursor:default}
@media (hover:hover){.cal-g button:not(:disabled):hover{background:var(--fill2)}.cal-g button.ini:hover,.cal-g button.fin:hover{background:var(--blue)}}
button.cal-h{border:0;background:none;padding:0;font:inherit;color:inherit;text-align:left;cursor:pointer}
.calp .lnk{font-size:15px}
.calp{align-items:stretch}
.calp .cal-in{width:100%;display:flex;flex-direction:column;gap:8px}
.cal-m .grow{text-align:center}

/* scelte senza tendine, orari e numeri a pulsanti */
.scelta .tchip{padding:0 14px}
.scelta .tchip.on{background:var(--blue);color:#fff}
.scp .psv{font-size:17px;margin-top:2px;color:var(--label)}
.scp .psv.vuota{color:var(--blue)}
/* pagina di scelta (cantieri, clienti, persone): ricerca in alto e alfabeto sul bordo */
.psc{position:fixed;inset:0;z-index:70;background:var(--bg);display:flex;flex-direction:column;padding-top:env(safe-area-inset-top,0px);animation:entra .26s cubic-bezier(.2,.8,.2,1)}
@keyframes entra{from{transform:translateX(36px);opacity:.3}}
.psc-h{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;min-height:56px;padding:6px 8px 4px}
.psc-h .gbtn{justify-self:start;padding:0 10px 0 4px;color:var(--blue)}
.psc-h .gbtn svg{color:var(--blue)}
.psc-h .ttl{font-size:17px;font-weight:600;text-align:center;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:56vw}
.psc-c{margin:4px 16px 10px}
.psc-rec{display:flex;gap:8px;align-items:center;overflow-x:auto;padding:0 16px 10px;scrollbar-width:none}
.psc-rec .tchip{flex:none;padding:0 14px;white-space:nowrap;background:var(--bg2)}
.psc-rec .tchip.on{background:var(--blue);color:#fff}
.psc.cercando .psc-rec,.psc.cercando .psc-idx,.psc.cercando .psc-let{display:none}
.psc-l{flex:1;overflow:auto;overscroll-behavior:contain;padding:0 16px calc(env(safe-area-inset-bottom,0px) + 24px);position:relative}
.psc-l.con-idx{padding-right:30px}
.psc-g{background:var(--bg2);border-radius:18px;overflow:hidden;margin-bottom:12px}
.psc-g[hidden],.psc-r[hidden]{display:none}
.psc-let{font-size:13px;font-weight:700;color:var(--label2);padding:8px 16px 4px;background:var(--bg3)}
.psc-r{display:flex;align-items:center;gap:10px;width:100%;min-height:52px;padding:9px 16px;text-align:left;position:relative}
.psc-r+.psc-r::before{content:"";position:absolute;top:0;left:16px;right:0;border-top:.5px solid var(--sep)}
.psc-n{font-size:17px}
.psc-r svg{opacity:0;color:var(--blue);flex:none}
.psc-r.on{background:color-mix(in srgb,var(--blue) 9%,transparent)}
.psc-r.on .psc-n{color:var(--blue);font-weight:600}
.psc-r.on svg{opacity:1}
.psc-r mark{background:color-mix(in srgb,var(--yellow) 45%,transparent);color:inherit;border-radius:3px}
.psc-vuoto{text-align:center;color:var(--label2);padding:30px 0}
.psc-idx{position:absolute;right:2px;top:50%;transform:translateY(-38%);display:flex;flex-direction:column;align-items:center;padding:6px 4px;touch-action:none;user-select:none;-webkit-user-select:none;cursor:pointer}
.psc-idx span{font-size:12px;font-weight:700;color:var(--blue);line-height:1;padding:3px 7px}
.psc-bolla{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);width:76px;height:76px;border-radius:20px;background:rgba(0,0,0,.6);color:#fff;font-size:36px;font-weight:700;display:grid;place-items:center;pointer-events:none}
.psc-bolla[hidden]{display:none}
.num .num-v{min-width:64px;text-align:center}
.dot{width:34px;height:34px;border-radius:50%;background:var(--c);box-shadow:inset 0 0 0 2px rgba(255,255,255,.35)}
.dot.on{box-shadow:0 0 0 3px var(--bg2),0 0 0 5px var(--c)}
.ichip{width:38px;height:38px;border-radius:50%;display:grid;place-items:center;background:var(--fill2);color:var(--label2)}
.ichip.on{background:var(--c);color:#fff}
.scelta .tchip:not(.on),.row .tchips .tchip:not(.on){color:var(--label)}

/* orario a rullo */
.orap .ora-in{display:flex;align-items:center;gap:12px;width:100%}
.ora-t{flex:1;display:flex;flex-direction:column;gap:2px;min-width:0}
.ora-az{display:flex;gap:14px}
.ora-az .lnk{font-size:15px}
.rullo{position:relative;display:flex;align-items:center;flex:none;height:108px}
.rul-band{position:absolute;left:0;right:0;top:36px;height:36px;border-radius:10px;background:var(--fill2);pointer-events:none}
.rul-c{position:relative;height:108px;width:58px;overflow-y:auto;scroll-snap-type:y mandatory;scrollbar-width:none;overscroll-behavior:contain;outline:none;
  -webkit-mask-image:linear-gradient(transparent,#000 28%,#000 72%,transparent);mask-image:linear-gradient(transparent,#000 28%,#000 72%,transparent)}
.rul-c::-webkit-scrollbar{display:none}
.rul-c:focus-visible{box-shadow:inset 0 0 0 2px var(--blue);border-radius:10px}
.rul-p{height:36px}
.rul-i{height:36px;display:grid;place-items:center;font-size:21px;font-variant-numeric:tabular-nums;color:var(--label3);scroll-snap-align:center;cursor:pointer;user-select:none}
.rul-i.on{color:var(--label);font-weight:600}
.rul-sep{position:relative;font-size:21px;font-weight:600;padding:0 2px}
.rullo.vuoto .rul-i.on{color:var(--label3);font-weight:400}

/* «Nuovo lavoro»: in programma / fuori programma (lavoro.js, sql/049) */
.seg-l{display:flex;background:var(--fill2);border-radius:14px;padding:3px;gap:3px}
.seg-l button{flex:1;padding:8px 4px;border-radius:11px;text-align:center;font-size:15px;font-weight:600;color:var(--label);line-height:1.2}
.seg-l button small{display:block;font-size:12px;font-weight:500;color:var(--label2)}
.seg-l button.on{background:var(--bg2);box-shadow:0 1px 3px rgba(0,0,0,.12)}
.seg-l button.off{opacity:.45;cursor:default}
.seg-l button svg{vertical-align:-2px}
/* fasce di ognuno: orari a pulsante, il rullo si apre sotto quello toccato */
.lv-p .grow{min-width:0}
.lv-ph{display:flex;justify-content:space-between;gap:8px;align-items:baseline}
.lv-ph span{font-size:14px;font-weight:700;color:var(--label2)}
.lv-fx{display:flex;align-items:center;gap:6px;margin-top:7px}
.lv-t{min-width:64px;padding:6px 10px;border-radius:10px;background:var(--fill2);font-weight:600;font-variant-numeric:tabular-nums;text-align:center;font-size:16px}
.lv-t.on{background:var(--blue);color:#fff}
.lv-x{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;color:var(--red)}
.lv-rullo{margin:8px 0 2px;border-radius:14px;background:var(--bg3)}
.lv-rullo .row{padding-left:12px;padding-right:12px}
.lv-az{display:flex;gap:18px;margin-top:8px}
.lv-az .lnk{display:inline-flex;align-items:center;gap:4px;font-size:15px;font-weight:600}
.lv-tot b{color:var(--blue);font-size:18px}
/* vista del lavoro: le barre di ognuno sulla giornata */
.lv-top{display:flex;align-items:flex-start;gap:12px}
.lv-pills{display:flex;flex-wrap:wrap;gap:6px;margin-top:-6px;margin-bottom:12px}
.lv-barre{margin:0 16px 12px;padding:12px 14px}
.lv-barre>*+*::before{display:none}
.lv-ax{position:relative;height:16px;margin-left:66px;margin-right:56px;font-size:11px;color:var(--label2)}
.lv-ax span{position:absolute;transform:translateX(-50%)}
.lv-r{display:grid;grid-template-columns:58px 1fr 48px;gap:8px;align-items:center;margin:8px 0}
.lv-n{font-size:13px;font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.lv-tl{position:relative;height:28px;background:var(--fill2);border-radius:9px}
.lv-b{position:absolute;top:0;bottom:0;border-radius:9px}
.lv-pz{position:absolute;top:6px;bottom:6px;border:1.5px dashed var(--label3);border-radius:7px;display:flex;align-items:center;justify-content:center;font-size:10px;color:var(--label2);font-weight:600;overflow:hidden}
.lv-o{font-size:13px;font-weight:700;text-align:right}
.lv-o small{display:block;font-weight:500;color:var(--label2);font-size:11px}
.lv-totale{display:flex;justify-content:space-between;align-items:center;background:color-mix(in srgb,var(--blue) 9%,transparent);border-radius:16px;padding:12px 16px;font-size:15px}
.lv-totale b{color:var(--blue);font-size:18px}
