:root{--bg:#f7f9fd;--panel:#fff;--panel2:#f1f5fb;--text:#162036;--muted:#6f7d92;--line:#dde5f0;--nav:#091525;--nav2:#10233b;--accent:#1f7aff;--accent2:#0d65e8;--green:#18b870;--amber:#f5a524;--violet:#8c5cf6;--red:#e84b5f;--shadow:0 16px 45px rgba(25,45,80,.08);--input:#fbfcff}
:root[data-theme="dark"]{--bg:#08111f;--panel:#101d30;--panel2:#14233a;--text:#f2f7ff;--muted:#94a6bf;--line:#253a56;--nav:#07111f;--nav2:#0c1c31;--accent:#3c8cff;--accent2:#69a6ff;--green:#2bd484;--amber:#ffbb45;--violet:#a778ff;--red:#ff6b7b;--shadow:0 18px 48px rgba(0,0,0,.26);--input:#0c1728}
*{box-sizing:border-box}html,body{min-height:100%}body{margin:0;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;background:radial-gradient(circle at 75% -10%,rgba(43,112,211,.09),transparent 28%),var(--bg);color:var(--text)}a{color:inherit;text-decoration:none}button,input,select,textarea{font:inherit}.shell{display:grid;grid-template-columns:240px minmax(0,1fr);min-height:100vh}.sidebar{background:linear-gradient(180deg,var(--nav),#07101d 70%);color:#fff;padding:22px 14px;display:flex;flex-direction:column;gap:26px;border-right:1px solid rgba(255,255,255,.05);position:sticky;top:0;height:100vh;z-index:20}.brand{display:flex;align-items:center;gap:12px;padding:0 8px}.brandmark{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(145deg,rgba(60,140,255,.18),rgba(60,140,255,.04));border:1px solid rgba(93,170,255,.28)}.brandmark svg{width:31px;height:31px;fill:none;stroke:#6bb0ff;stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}.brandtext{display:flex;flex-direction:column;line-height:1.1}.brandtext strong{font-size:18px}.brandtext small{font-size:10px;color:#a9bad0;margin-top:5px}.sidebar nav{display:flex;flex-direction:column;gap:6px}.sidebar nav a{display:flex;align-items:center;gap:11px;padding:12px 13px;border-radius:10px;color:#d7e4f5;font-weight:600;font-size:14px}.sidebar nav a span{width:18px;text-align:center;color:#a9c7ee;font-size:18px}.sidebar nav a:hover{background:rgba(255,255,255,.07)}.sidebar nav a.active{background:linear-gradient(90deg,#1764d6,#247ceb);box-shadow:0 10px 26px rgba(26,103,218,.28);color:#fff}.sidebar nav a.active span{color:#fff}.sidebar-bottom{margin-top:auto;display:flex;align-items:center;gap:8px}.theme-btn{flex:1;border:1px solid rgba(255,255,255,.12);background:rgba(255,255,255,.05);color:#fff;border-radius:10px;padding:10px 12px;cursor:pointer;display:flex;align-items:center;gap:8px}.sidebar-version{font-size:11px;color:#70849f}.main{min-width:0}.topbar{height:68px;background:color-mix(in srgb,var(--panel) 92%,transparent);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);display:flex;align-items:center;padding:0 28px;gap:12px;position:sticky;top:0;z-index:10}.top-title{font-weight:750}.top-spacer{flex:1}.top-theme{border:0;background:transparent;color:var(--text);font-size:21px;cursor:pointer}.avatar{width:34px;height:34px;border-radius:50%;background:linear-gradient(145deg,#2576db,#1450a3);display:grid;place-items:center;color:#fff;font-weight:800}.avatar.large{width:42px;height:42px}.top-user{display:flex;flex-direction:column;font-size:12px}.top-user small{color:var(--muted);margin-top:2px}.menu-btn{display:none;background:none;border:0;font-size:22px;color:var(--text);cursor:pointer}.content{padding:28px;max-width:1540px;margin:0 auto}.dashboard-hero{display:flex;justify-content:space-between;align-items:center;gap:20px;margin-bottom:24px}.dashboard-hero.compact{margin-bottom:20px}.dashboard-hero h1{margin:3px 0 4px;font-size:31px;letter-spacing:-.03em}.dashboard-hero p{margin:0;color:var(--muted)}.eyebrow{display:block;color:var(--accent2);font-size:11px;font-weight:800;letter-spacing:.09em;margin-bottom:4px}.card{background:linear-gradient(180deg,color-mix(in srgb,var(--panel) 98%,white 2%),var(--panel));border:1px solid var(--line);border-radius:15px;padding:20px;box-shadow:var(--shadow)}.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:15px;margin-bottom:18px}.metric-card{position:relative;overflow:hidden;border-radius:14px;padding:19px 19px 17px;display:flex;justify-content:space-between;gap:12px;color:#fff;min-height:120px;border:1px solid rgba(255,255,255,.14);box-shadow:var(--shadow)}.metric-card:after{content:"";position:absolute;width:130px;height:130px;border-radius:50%;right:-55px;bottom:-70px;background:rgba(255,255,255,.09)}.metric-blue{background:linear-gradient(135deg,#0c4f91,#0d78b8)}.metric-amber{background:linear-gradient(135deg,#72500a,#9c6909)}.metric-green{background:linear-gradient(135deg,#0b633c,#078853)}.metric-violet{background:linear-gradient(135deg,#432276,#6541a4)}.metric-card span{font-size:13px;color:rgba(255,255,255,.84)}.metric-card strong{display:block;font-size:32px;line-height:1;margin:9px 0 8px}.metric-card small{font-size:11px;color:rgba(255,255,255,.66)}.metric-icon{font-size:35px;opacity:.86;align-self:center;z-index:1}.dashboard-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px}.panel h2{margin:3px 0 0;font-size:18px}.section-title{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.section-title>a{font-size:12px;color:var(--accent2);font-weight:700}.recent-panel{grid-column:1/-1}.status-layout{display:grid;grid-template-columns:190px 1fr;align-items:center;gap:24px;min-height:225px}.donut{width:164px;height:164px;border-radius:50%;display:grid;place-items:center;background:conic-gradient(var(--green) 0 calc(var(--signed)*1%),var(--accent) calc(var(--signed)*1%) calc((var(--signed) + var(--pending))*1%),#8397b4 calc((var(--signed) + var(--pending))*1%) calc((var(--signed) + var(--pending) + var(--draft))*1%),var(--line) 0);position:relative;margin:auto}.donut:after{content:"";position:absolute;inset:28px;border-radius:50%;background:var(--panel)}.donut>div{z-index:1;text-align:center}.donut strong{display:block;font-size:29px}.donut span{font-size:11px;color:var(--muted)}.legend{display:flex;flex-direction:column;gap:14px}.legend>div{display:grid;grid-template-columns:12px 1fr auto;gap:9px;align-items:center;font-size:13px}.dot{width:9px;height:9px;border-radius:50%;display:block}.dot-draft{background:#8397b4}.dot-pending{background:var(--accent)}.dot-signed{background:var(--green)}.dot-other{background:var(--line)}.bar-list{display:flex;flex-direction:column;gap:16px;margin-top:22px}.bar-head{display:flex;justify-content:space-between;font-size:13px;margin-bottom:7px}.bar-head strong{font-size:12px}.bar-track{height:10px;background:var(--panel2);border-radius:999px;overflow:hidden}.bar-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#2589ff,#5aa5ff)}.recent-list{margin-top:12px}.recent-row{display:grid;grid-template-columns:34px 1fr auto auto;gap:12px;align-items:center;padding:12px 4px;border-bottom:1px solid var(--line)}.recent-row:last-child{border-bottom:0}.recent-row:hover{background:color-mix(in srgb,var(--accent) 5%,transparent)}.recent-row>div{display:flex;flex-direction:column}.recent-row small{color:var(--muted);margin-top:3px}.activity-icon{width:31px;height:31px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 13%,transparent);color:var(--accent2)}.recent-hours{font-size:12px;color:var(--muted)}.badge{display:inline-flex;padding:5px 9px;border-radius:999px;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent2);font-size:11px;font-weight:800}.status-firmato{background:color-mix(in srgb,var(--green) 15%,transparent);color:var(--green)}.status-inviato,.status-visualizzato{background:color-mix(in srgb,var(--amber) 15%,transparent);color:var(--amber)}.btn{display:inline-flex;align-items:center;justify-content:center;border:1px solid var(--line);background:var(--panel);color:var(--text);padding:10px 15px;border-radius:9px;font-weight:750;cursor:pointer}.btn:hover{filter:brightness(1.04)}.btn.primary{background:linear-gradient(135deg,#237af2,#1265df);border-color:#267af0;color:#fff;box-shadow:0 8px 22px rgba(31,122,255,.2)}.btn.big{padding:12px 19px}.btn.small{padding:8px 11px;font-size:12px}.btn.danger{color:var(--red);border-color:color-mix(in srgb,var(--red) 35%,var(--line))}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:20px}.grid3{display:grid;grid-template-columns:1.15fr 1fr .85fr;gap:16px}.form{display:flex;flex-direction:column;gap:17px}.form h2{margin:0}.form label{display:flex;flex-direction:column;gap:7px;font-weight:700;font-size:13px}.form input,.form select,.form textarea{width:100%;border:1px solid var(--line);background:var(--input);color:var(--text);border-radius:9px;padding:11px 12px;outline:none}.form input:focus,.form select:focus,.form textarea:focus{border-color:var(--accent);box-shadow:0 0 0 3px color-mix(in srgb,var(--accent) 15%,transparent)}.form textarea{resize:vertical;line-height:1.45}.report-form{max-width:1180px}.form-section{margin-top:2px}.field-title{display:block;font-size:13px;font-weight:800;margin-bottom:8px}.mode-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.mode-card{display:flex!important;flex-direction:row!important;align-items:center;gap:12px!important;border:1px solid var(--line);border-radius:11px;padding:14px;background:var(--input);cursor:pointer}.mode-card.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--input));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 10%,transparent)}.mode-card input{display:none}.mode-card>span:last-child{display:flex;flex-direction:column;gap:3px}.mode-card small{color:var(--muted);font-weight:500}.radio-dot{width:18px;height:18px;border:2px solid var(--muted);border-radius:50%;position:relative;flex:0 0 auto}.mode-card.active .radio-dot{border-color:var(--accent)}.mode-card.active .radio-dot:after{content:"";position:absolute;inset:3px;border-radius:50%;background:var(--accent)}.hours-layout{display:grid;grid-template-columns:1.6fr .8fr;gap:18px;align-items:end}.time-panel{border:1px solid var(--line);border-radius:12px;padding:15px;background:color-mix(in srgb,var(--panel2) 65%,transparent)}.time-panel.hidden{display:none}.time-pair{display:flex;align-items:flex-end;gap:8px}.time-pair label{min-width:92px;max-width:130px;flex:1}.time-pair label span{font-size:11px;color:var(--muted);font-weight:650}.time-pair input{font-size:18px;font-weight:800;text-align:center}.time-colon{font-size:24px;font-weight:800;padding-bottom:8px}.detailed-times{display:grid;grid-template-columns:1fr 1fr;gap:22px}.rounding-field small{color:var(--muted);font-weight:500;line-height:1.35}.date-wrap{position:relative}.date-wrap input{padding-right:38px}.date-wrap span{position:absolute;right:12px;top:50%;transform:translateY(-50%);pointer-events:none;color:var(--accent2)}.signature-preview-block{display:grid;grid-template-columns:1.3fr 1fr auto;gap:15px;align-items:center;border-top:1px solid var(--line);padding-top:17px}.signature-preview-block small{display:block;color:var(--muted);line-height:1.4}.signature-preview{min-height:72px;border:1px dashed var(--line);border-radius:10px;background:#fff;display:grid;place-items:center;padding:8px;color:#77849a;font-size:12px}.signature-preview img{max-height:58px;max-width:100%;object-fit:contain}.actions{display:flex;justify-content:flex-end;gap:10px}.form-actions{padding-top:4px}.list{display:flex;flex-direction:column}.list-row{display:flex;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid var(--line)}.list-row small{display:block;color:var(--muted);margin-top:4px}.table-wrap{overflow:auto}table{width:100%;border-collapse:collapse;min-width:900px}th,td{text-align:left;padding:13px;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:10px;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}td{font-size:13px}.tech-layout{display:grid;grid-template-columns:360px 1fr;gap:18px;align-items:start}.technician-list{display:flex;flex-direction:column;gap:12px;margin-top:10px}.technician-card{display:grid;grid-template-columns:1.2fr 1fr minmax(210px,.9fr) auto;gap:12px;align-items:center;border:1px solid var(--line);border-radius:12px;padding:12px;background:color-mix(in srgb,var(--panel2) 45%,transparent)}.tech-info{display:flex;align-items:center;gap:11px}.tech-info>div:last-child{display:flex;flex-direction:column}.tech-info small{color:var(--muted);margin-top:3px}.tech-signature{height:58px;border-radius:8px;background:#fff;border:1px solid #e3e8ef;display:grid;place-items:center;padding:6px;color:#7d8797;font-size:11px}.tech-signature img{max-width:100%;max-height:45px;object-fit:contain}.signature-upload{display:flex;gap:7px;align-items:center}.signature-upload input{max-width:155px;font-size:11px}.empty-state{color:var(--muted);font-size:13px;padding:24px 8px}.overlay{display:none}
@media(max-width:1100px){.kpis{grid-template-columns:1fr 1fr}.dashboard-grid{grid-template-columns:1fr}.recent-panel{grid-column:auto}.grid3{grid-template-columns:1fr 1fr}.grid3>label:last-child{grid-column:1/-1}.tech-layout{grid-template-columns:1fr}.technician-card{grid-template-columns:1fr 1fr}.hours-layout{grid-template-columns:1fr}.signature-preview-block{grid-template-columns:1fr 1fr}.signature-preview-block>.btn{grid-column:1/-1;justify-self:start}}
@media(max-width:820px){.shell{display:block}.sidebar{position:fixed;left:-260px;width:240px;transition:left .2s}.menu-open .sidebar{left:0}.overlay{position:fixed;inset:0;background:rgba(0,0,0,.48);z-index:15}.menu-open .overlay{display:block}.menu-btn{display:block}.top-user{display:none}.content{padding:18px}.dashboard-grid,.grid2,.grid3{grid-template-columns:1fr}.grid3>label:last-child{grid-column:auto}.mode-grid{grid-template-columns:1fr}.detailed-times{grid-template-columns:1fr}.signature-preview-block{grid-template-columns:1fr}.signature-preview-block>.btn{grid-column:auto}.status-layout{grid-template-columns:150px 1fr}.donut{width:138px;height:138px}.technician-card{grid-template-columns:1fr}.signature-upload{flex-wrap:wrap}}
@media(max-width:560px){.topbar{height:58px;padding:0 14px}.content{padding:14px}.dashboard-hero{align-items:flex-start;flex-direction:column}.dashboard-hero h1{font-size:25px}.dashboard-hero>.btn{width:100%}.kpis{grid-template-columns:1fr 1fr;gap:9px}.metric-card{padding:14px;min-height:108px}.metric-card strong{font-size:27px}.metric-card small{display:none}.metric-icon{font-size:28px}.card{padding:14px;border-radius:12px}.status-layout{grid-template-columns:1fr}.legend{margin-top:4px}.recent-row{grid-template-columns:32px 1fr auto}.recent-row .recent-hours{display:none}.recent-row .badge{grid-column:2/4;justify-self:start}.time-pair label{min-width:0}.actions{flex-direction:column-reverse}.actions .btn{width:100%}.signature-upload input{max-width:100%;width:100%}.top-theme{margin-left:auto}.avatar{display:none}}

/* v0.2.1 - dettaglio, azioni archivio e PDF */
.table-link{color:var(--accent2);font-weight:800}.table-link:hover{text-decoration:underline}.row-actions{display:flex;gap:6px;align-items:center}.icon-action{height:31px;min-width:31px;padding:0 8px;border:1px solid var(--line);border-radius:8px;background:var(--panel2);display:inline-flex;align-items:center;justify-content:center;font-size:11px;font-weight:850;color:var(--text)}.icon-action:hover{border-color:var(--accent);color:var(--accent2);background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}.hero-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap;justify-content:flex-end}.report-detail-grid{display:grid;grid-template-columns:1.4fr .75fr;gap:18px;margin-bottom:18px}.report-summary h2,.pdf-card h2,.signature-detail h2{margin:3px 0 0}.detail-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0;margin-top:18px;border:1px solid var(--line);border-radius:12px;overflow:hidden}.detail-list>div{padding:15px;border-bottom:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 40%,transparent);display:flex;flex-direction:column;gap:5px}.detail-list>div:nth-child(odd){border-right:1px solid var(--line)}.detail-list>div:nth-last-child(-n+2){border-bottom:0}.detail-list span{font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:800}.detail-list strong{font-size:14px}.pdf-card{display:flex;flex-direction:column}.pdf-visual{flex:1;min-height:220px;border:1px dashed var(--line);border-radius:13px;margin-top:18px;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:22px;background:color-mix(in srgb,var(--panel2) 38%,transparent)}.pdf-icon{width:64px;height:78px;border-radius:8px 8px 12px 8px;background:linear-gradient(145deg,#ff5c68,#d92f44);display:grid;place-items:center;color:#fff;font-size:14px;font-weight:900;box-shadow:0 12px 28px rgba(214,47,68,.2);margin-bottom:13px}.pdf-visual small{max-width:260px;color:var(--muted);line-height:1.45;margin-top:7px}.pdf-actions{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-top:15px}.description-card{margin-bottom:18px}.description-text{white-space:pre-wrap;line-height:1.65;font-size:14px;margin-top:12px;padding:16px;border-radius:11px;border:1px solid var(--line);background:color-mix(in srgb,var(--panel2) 40%,transparent);min-height:100px}.signature-detail{display:grid;grid-template-columns:.7fr 1.3fr;gap:20px;align-items:center}.signature-large{min-height:115px;background:#fff;border:1px solid #e2e8f0;border-radius:12px;display:grid;place-items:center;padding:12px;color:#77849a}.signature-large img{max-height:90px;max-width:100%;object-fit:contain}
@media(max-width:980px){.report-detail-grid{grid-template-columns:1fr}.hero-actions{justify-content:flex-start}.signature-detail{grid-template-columns:1fr}.detail-list{grid-template-columns:1fr}.detail-list>div:nth-child(odd){border-right:0}.detail-list>div:nth-last-child(-n+2){border-bottom:1px solid var(--line)}.detail-list>div:last-child{border-bottom:0}}
@media(max-width:560px){.hero-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.hero-actions .btn{width:100%}.pdf-actions{grid-template-columns:1fr}}

/* v0.3.0 - anagrafica clienti, tipologia ore, contratti e firme allineate a sinistra */
.clients-layout{display:grid;grid-template-columns:390px 1fr;gap:18px;align-items:start}.compact-grid{gap:10px}.form label small,.muted-copy{color:var(--muted);font-weight:500;line-height:1.4}.client-list{display:flex;flex-direction:column;gap:9px;margin-top:14px}.client-row{display:grid;grid-template-columns:42px 1fr auto 24px;gap:12px;align-items:center;padding:13px;border:1px solid var(--line);border-radius:11px;background:color-mix(in srgb,var(--panel2) 45%,transparent)}.client-row:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 6%,var(--panel))}.client-avatar{width:42px;height:42px;border-radius:11px;display:grid;place-items:center;background:linear-gradient(145deg,#1d75e6,#134d9d);color:#fff;font-weight:900}.client-main{display:flex;flex-direction:column;gap:4px}.client-main small{color:var(--muted)}.client-contract{display:flex;flex-direction:column;align-items:flex-end;gap:4px}.client-contract span{font-size:10px;text-transform:uppercase;color:var(--muted);font-weight:800}.client-contract strong{font-size:12px}.client-chevron{font-size:24px;color:var(--muted)}
.client-master-form{margin-bottom:18px}.contract-highlight{border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line));background:color-mix(in srgb,var(--accent) 7%,var(--panel2));padding:15px;border-radius:12px}.client-subgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.managed-list{display:flex;flex-direction:column;gap:8px;margin:14px 0}.managed-row{display:flex;justify-content:space-between;align-items:center;gap:10px;border:1px solid var(--line);border-radius:10px;padding:11px 12px;background:color-mix(in srgb,var(--panel2) 42%,transparent)}.managed-row>div{display:flex;flex-direction:column;gap:3px}.managed-row small{color:var(--muted)}.inline-add-form{display:grid;grid-template-columns:1.15fr .9fr .8fr auto;gap:8px;margin-top:12px}.inline-add-form input,.inline-add-form select{border:1px solid var(--line);background:var(--input);color:var(--text);border-radius:9px;padding:10px}.user-add{grid-template-columns:.7fr .7fr 1.2fr auto}.compact-empty{padding:10px 0}
.hour-type-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}.hour-type-card{display:flex!important;flex-direction:row!important;align-items:center;gap:10px!important;border:1px solid var(--line);border-radius:11px;padding:13px;background:var(--input);cursor:pointer;min-height:82px}.hour-type-card input{display:none}.hour-type-card>span:last-child{display:flex;flex-direction:column;gap:3px}.hour-type-card small{color:var(--muted);font-size:11px}.hour-type-card.active{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--input));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 9%,transparent)}.hour-type-icon{width:34px;height:34px;flex:0 0 34px;border-radius:9px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent2);font-weight:900;font-size:17px}.contract-notice{margin-top:10px;border:1px solid color-mix(in srgb,var(--green) 35%,var(--line));border-radius:10px;padding:11px 13px;background:color-mix(in srgb,var(--green) 7%,var(--panel2));display:grid;grid-template-columns:auto auto 1fr;gap:10px;align-items:center}.contract-notice>span{font-size:11px;text-transform:uppercase;color:var(--muted);font-weight:800}.contract-notice strong{color:var(--green)}.contract-notice small{color:var(--muted)}.contract-notice.warning{border-color:color-mix(in srgb,var(--amber) 45%,var(--line));background:color-mix(in srgb,var(--amber) 8%,var(--panel2))}.contract-notice.warning strong{color:var(--amber)}.contract-notice.hidden{display:none}
.signatures-left-card{display:flex;flex-direction:column;align-items:flex-start;gap:18px}.signature-stack-item{width:min(460px,100%)}.signature-stack-item>strong{display:block;margin:4px 0 9px}.signature-left-box{width:100%;min-height:100px;background:#fff;border:1px solid #e2e8f0;border-radius:11px;padding:10px;display:flex;align-items:center;justify-content:flex-start;color:#77849a}.signature-left-box img{max-height:78px;max-width:300px;object-fit:contain;object-position:left center}.signature-left-box.pending-signature{min-height:76px}.hour-type-badge{display:inline-flex;padding:5px 8px;border-radius:999px;font-size:10px;font-weight:800;background:color-mix(in srgb,var(--accent) 12%,transparent);color:var(--accent2)}.hour-warranty{background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green)}.hour-package{background:color-mix(in srgb,var(--violet) 14%,transparent);color:var(--violet)}.hour-contract{background:color-mix(in srgb,var(--amber) 14%,transparent);color:var(--amber)}.table-sub{display:block;color:var(--muted);margin-top:4px;font-size:10px}
@media(max-width:1150px){.hour-type-grid{grid-template-columns:1fr 1fr}.clients-layout{grid-template-columns:1fr}.client-subgrid{grid-template-columns:1fr}.inline-add-form,.user-add{grid-template-columns:1fr 1fr}.inline-add-form .btn,.user-add .btn{grid-column:1/-1;justify-self:start}}
@media(max-width:700px){.hour-type-grid{grid-template-columns:1fr}.client-row{grid-template-columns:42px 1fr 20px}.client-contract{grid-column:2/3;align-items:flex-start}.client-chevron{grid-column:3;grid-row:1/3}.inline-add-form,.user-add{grid-template-columns:1fr}.inline-add-form .btn,.user-add .btn{grid-column:auto;width:100%}.contract-notice{grid-template-columns:1fr}.signatures-left-card{padding:14px}}

/* v0.4.0 workflow firma */
.send-report-card,.audit-card,.signed-summary-card{margin-top:18px}.send-report-card .muted{margin:0 0 16px}.recipient-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:10px;margin:14px 0}.recipient-choice{display:flex;align-items:center;gap:12px;padding:13px;border:1px solid var(--border);border-radius:12px;background:var(--surface-2)}.recipient-choice input{width:18px;height:18px}.recipient-choice span{display:flex;flex-direction:column;gap:2px}.recipient-choice small,.muted{color:var(--muted)}.recipient-extra input{width:100%}.empty-inline{padding:10px 12px;border-radius:10px;background:rgba(245,158,11,.09);margin-bottom:12px}.audit-timeline{display:grid;gap:0}.audit-event{display:flex;gap:14px;position:relative;padding:8px 0 18px 4px}.audit-event:after{content:"";position:absolute;left:9px;top:23px;bottom:-2px;width:1px;background:var(--border)}.audit-event:last-child:after{display:none}.audit-dot{width:12px;height:12px;border-radius:50%;background:#2f7cf6;box-shadow:0 0 0 4px rgba(47,124,246,.14);margin-top:4px;z-index:1}.audit-event div{display:flex;flex-direction:column;gap:4px}.audit-event small{color:var(--muted)}.signed-summary-card{display:flex;align-items:center;gap:18px}.signed-mark,.success-icon{display:grid;place-items:center;width:54px;height:54px;border-radius:50%;background:#18b66a;color:white;font-size:30px;font-weight:800}.signed-summary-card h2{margin:4px 0}.signed-summary-card code{font-size:11px;color:var(--muted);word-break:break-all}.typed-signature{font-family:"Brush Script MT","Segoe Script",cursive;font-size:38px;color:#0b2446}.public-sign-body{margin:0;background:#eef4f9;color:#0a1d39;font-family:Inter,system-ui,-apple-system,"Segoe UI",sans-serif;min-height:100vh}.public-sign-shell{width:min(720px,100%);margin:0 auto;padding:18px 16px 48px}.public-sign-header{display:flex;justify-content:space-between;align-items:center;padding:12px 4px 20px}.public-sign-header img{width:118px;height:auto}.public-sign-header div{display:flex;flex-direction:column;text-align:right;color:#536b87}.public-sign-header strong{color:#0b2446;font-size:18px}.public-report-card,.public-sign-form,.public-sign-success{background:white;border:1px solid #dbe7f1;border-radius:20px;padding:22px;box-shadow:0 10px 30px rgba(25,57,91,.07);margin-bottom:16px}.public-report-card h1{font-size:23px;margin:0 0 16px}.public-report-meta{display:grid;grid-template-columns:1fr 1fr;gap:10px}.public-report-meta>div{background:#f5f9fc;border-radius:12px;padding:12px;display:flex;flex-direction:column;gap:4px}.public-report-meta span,.public-description span{font-size:12px;color:#6b7e94}.public-description{margin:16px 0;padding:15px;background:#f9fbfd;border-radius:12px}.public-description p{white-space:pre-wrap;line-height:1.5;margin:6px 0 0}.wide{display:block;width:100%;text-align:center;box-sizing:border-box}.signature-method-tabs{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin:18px 0 10px}.method-tab{border:1px solid #cfdeeb;background:#f6fafe;color:#14375f;padding:12px;border-radius:11px;font-weight:700;cursor:pointer}.method-tab.active{background:#1268da;color:white;border-color:#1268da}.signature-panel{position:relative;border:1px solid #cbdce9;border-radius:14px;background:white;overflow:hidden;margin-bottom:16px}.signature-panel.hidden{display:none}.signature-panel canvas{display:block;width:100%;height:190px;touch-action:none}.clear-sign{position:absolute;right:10px;bottom:10px;border:0;background:#edf3f8;padding:7px 10px;border-radius:8px;cursor:pointer}.typed-preview{height:150px;display:flex;align-items:center;justify-content:center;font-family:"Brush Script MT","Segoe Script",cursive;font-size:48px;color:#0a2343}.acceptance{display:flex;gap:10px;align-items:flex-start;line-height:1.35;margin:15px 0}.acceptance input{width:19px;height:19px;flex:0 0 auto}.sign-submit{font-size:16px;padding:14px}.privacy-note{display:block;text-align:center;color:#718096;margin-top:10px}.public-sign-success{text-align:center;padding:38px 24px}.public-sign-success .success-icon{margin:0 auto 16px}.public-sign-success h1{margin:0 0 8px}.public-sign-success p{color:#60758e;margin-bottom:22px}
@media(max-width:600px){.public-sign-shell{padding:8px 10px 36px}.public-sign-header img{width:94px}.public-sign-header span{font-size:11px}.public-report-card,.public-sign-form{padding:16px;border-radius:16px}.signature-panel canvas{height:160px}.typed-preview{font-size:38px}.recipient-grid{grid-template-columns:1fr}}
.settings-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:18px}.settings-tabs a{padding:11px 15px;border:1px solid var(--border);border-radius:10px;text-decoration:none;color:var(--muted);background:var(--panel)}.settings-tabs a.active{color:#fff;background:#0c67d8;border-color:#2a8cff}.settings-grid{display:grid;grid-template-columns:minmax(0,1.4fr) minmax(300px,.8fr);gap:16px}.panel{background:var(--panel);border:1px solid var(--border);border-radius:14px;padding:20px}.panel-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.panel-title h2{margin:0}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}.form-grid label{display:flex;flex-direction:column;gap:7px}.span2{grid-column:1/-1}.check{flex-direction:row!important;align-items:center}.security-note{margin-top:18px;padding:12px;border-radius:10px;background:rgba(20,126,255,.08);border:1px solid rgba(20,126,255,.25);font-size:.9rem;color:var(--muted)}.pill.ok{background:rgba(16,185,129,.14);color:#41d999;border-color:rgba(16,185,129,.3)}.kv{display:grid;grid-template-columns:130px 1fr;gap:10px 14px}.break{word-break:break-all}.pwa-preview{display:flex;align-items:center;gap:18px}.pwa-preview img{width:96px;height:96px;border-radius:22px;box-shadow:0 8px 28px rgba(0,0,0,.2)}.notice.success{margin-bottom:16px;padding:12px 14px;border-radius:10px;background:rgba(16,185,129,.12);border:1px solid rgba(16,185,129,.28);color:#4ade9a}@media(max-width:900px){.settings-grid{grid-template-columns:1fr}.form-grid{grid-template-columns:1fr}.span2{grid-column:auto}.kv{grid-template-columns:1fr}}

/* v0.5.0 autenticazione */
.auth-body{min-height:100vh;margin:0;background:radial-gradient(circle at 72% 5%,rgba(45,132,255,.18),transparent 32%),#07111f;color:#eef5ff;font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;display:grid;place-items:center;padding:20px}.auth-shell{width:min(470px,100%)}.auth-card{background:linear-gradient(180deg,#101e32,#0c182a);border:1px solid #263c59;border-radius:22px;padding:30px;box-shadow:0 28px 80px rgba(0,0,0,.38)}.auth-card.auth-wide{width:min(620px,calc(100vw - 32px));margin-left:50%;transform:translateX(-50%)}.auth-logo{display:flex;align-items:center;gap:16px;margin-bottom:28px}.auth-logo img{width:105px;height:auto}.auth-logo div{display:flex;flex-direction:column}.auth-logo strong{font-size:19px}.auth-logo small{color:#8fa5c0}.auth-card h1{margin:0 0 8px;font-size:28px}.auth-card>p{color:#9fb1c8;line-height:1.5;margin:0 0 22px}.auth-form{display:grid;gap:15px}.auth-form label{display:grid;gap:7px;font-size:13px;font-weight:700;color:#dce8f8}.auth-form input,.inline-security-form input{width:100%;border:1px solid #2c4361;background:#091525;color:#f4f8ff;border-radius:11px;padding:13px 14px;outline:none}.auth-form input:focus,.inline-security-form input:focus{border-color:#3b8cff;box-shadow:0 0 0 3px rgba(59,140,255,.14)}.auth-submit{width:100%;justify-content:center;margin-top:4px}.auth-error{padding:11px 13px;border-radius:10px;background:rgba(232,75,95,.13);border:1px solid rgba(255,107,123,.35);color:#ff98a6;margin:0 0 16px}.auth-foot{text-align:center;color:#647c98;font-size:11px;margin-top:24px}.auth-step{display:inline-flex;padding:5px 9px;border-radius:999px;background:rgba(60,140,255,.12);color:#69a6ff;font-weight:800;font-size:11px;margin-bottom:14px}.security-hint{background:rgba(60,140,255,.08);border:1px solid rgba(60,140,255,.24);padding:11px 13px;border-radius:10px;color:#a9bdd5;font-size:12px;margin-bottom:16px}.totp-setup{display:grid;grid-template-columns:190px 1fr;gap:22px;align-items:center;margin:18px 0}.totp-setup img{width:190px;height:190px;border-radius:14px;background:#fff;padding:8px}.totp-setup div{display:flex;flex-direction:column;gap:9px}.totp-setup code{word-break:break-all;padding:10px;border-radius:9px;background:#091525;color:#70b4ff}.totp-setup small{color:#8fa5c0}.recovery-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:18px 0 24px}.recovery-grid code{padding:12px;border:1px solid #29415f;background:#091525;border-radius:9px;text-align:center;font-size:16px;letter-spacing:.08em}.auth-link{display:block;text-align:center;margin-top:18px;color:#75adff;font-size:13px}.top-user a{color:var(--accent2)}.security-grid{display:grid;gap:14px}.security-feature{display:grid;grid-template-columns:auto 1fr auto;gap:16px;align-items:center}.security-feature h2{margin:0 0 5px;font-size:18px}.security-feature p{margin:0;color:var(--muted);line-height:1.5}.security-feature small{display:block;color:var(--muted);margin-top:7px}.security-icon{width:48px;height:48px;border-radius:13px;background:color-mix(in srgb,var(--accent) 12%,var(--panel2));display:grid;place-items:center;color:var(--accent2);font-size:20px;font-weight:900}.security-icon.ok{background:color-mix(in srgb,var(--green) 12%,var(--panel2));color:var(--green)}.inline-security-form{display:grid;grid-template-columns:minmax(180px,260px) auto;gap:10px;align-items:center}.notice.error{margin-bottom:16px;padding:12px 14px;border-radius:10px;background:rgba(232,75,95,.12);border:1px solid rgba(232,75,95,.28);color:var(--red)}@media(max-width:600px){.auth-card{padding:23px 18px}.auth-card.auth-wide{width:100%;transform:none;margin-left:0}.totp-setup{grid-template-columns:1fr}.totp-setup img{margin:auto}.recovery-grid{grid-template-columns:1fr}.security-feature{grid-template-columns:auto 1fr}.security-feature>.pill{grid-column:2}.inline-security-form{grid-template-columns:1fr}}

/* v0.5.1 mobile stability, attachments and Passkey */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;overflow-x:hidden}body{overflow-x:hidden}.shell,.main,.content{min-width:0;max-width:100%}img,svg,video,canvas{max-width:100%}.inline-form{display:inline-flex;margin:0}.link-danger{border:0;background:transparent;color:var(--red);font:inherit;font-weight:750;cursor:pointer;padding:5px 7px}.attachments-card{margin-top:18px}.attachment-upload-form{display:grid;grid-template-columns:1fr 1fr auto;gap:12px;align-items:stretch;margin:15px 0 20px}.attachment-pick{position:relative;display:flex;flex-direction:column;gap:3px;align-items:flex-start;padding:15px;border:1px dashed color-mix(in srgb,var(--accent) 45%,var(--line));border-radius:12px;background:color-mix(in srgb,var(--accent) 5%,var(--panel));cursor:pointer;min-width:0}.attachment-pick input{position:absolute;inset:0;opacity:0;cursor:pointer}.attachment-pick small{color:var(--muted)}.attachment-big-icon{font-size:24px}.attachment-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px}.attachment-item{display:grid;grid-template-columns:88px 1fr;gap:12px;padding:12px;border:1px solid var(--line);border-radius:12px;background:var(--panel2);min-width:0}.attachment-preview{width:88px;height:76px;border-radius:9px;background:var(--panel);display:grid;place-items:center;overflow:hidden;color:var(--accent2);font-weight:900}.attachment-preview img{width:100%;height:100%;object-fit:cover}.attachment-meta{display:flex;flex-direction:column;gap:7px;min-width:0}.attachment-meta strong{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.attachment-meta small{color:var(--muted)}.attachment-meta>div{display:flex;gap:6px;flex-wrap:wrap}.passkey-card{padding:22px}.passkey-actions{display:grid;grid-template-columns:minmax(180px,340px) auto;gap:10px;margin:15px 0}.passkey-actions input{border:1px solid var(--line);background:var(--input);color:var(--text);border-radius:9px;padding:11px 12px;min-width:0}.passkey-status{min-height:20px;color:var(--muted)}.passkey-status.error{color:var(--red)}.passkey-list{display:grid;gap:8px;margin-top:12px}.passkey-list>div{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:11px;border:1px solid var(--line);border-radius:10px}.passkey-list span{display:flex;flex-direction:column;gap:3px}.passkey-list small{color:var(--muted)}.auth-divider{display:flex;align-items:center;gap:10px;color:#7288a3;margin:17px 0}.auth-divider:before,.auth-divider:after{content:"";height:1px;background:#29415f;flex:1}.passkey-login{width:100%;justify-content:center;background:#102640;color:#dcecff}.auth-passkey-status{min-height:18px;color:#a9bdd5;text-align:center;margin-top:8px;font-size:12px}
@media(max-width:700px){.content{padding:16px 12px}.topbar{padding:0 12px}.top-user{display:none}.dashboard-hero{align-items:flex-start}.dashboard-hero h1{font-size:25px}.card{padding:15px}.attachment-upload-form{grid-template-columns:1fr}.attachment-grid{grid-template-columns:1fr}.attachment-item{grid-template-columns:72px 1fr}.attachment-preview{width:72px;height:68px}.passkey-actions{grid-template-columns:1fr}.form input,.form select,.form textarea,.auth-form input,.inline-security-form input,.passkey-actions input,input,select,textarea{font-size:16px!important}.public-sign-shell{width:100%;max-width:720px}.public-report-meta{grid-template-columns:1fr}.signature-method-tabs{grid-template-columns:1fr 1fr}.typed-preview{font-size:36px}.shell{grid-template-columns:1fr}.main{width:100vw;max-width:100vw}}

.danger-icon{border:0;color:var(--red);background:transparent;cursor:pointer;font-size:20px}

/* v0.6.0 multi-tecnico e accessi separati */
.multi-tech-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:12px}.multi-tech-card{border:1px solid var(--line);border-radius:14px;background:var(--panel2);padding:14px;opacity:.72;transition:.18s ease}.multi-tech-card.selected{border-color:color-mix(in srgb,var(--accent) 65%,var(--line));box-shadow:0 0 0 2px color-mix(in srgb,var(--accent) 12%,transparent);opacity:1}.tech-check{display:flex!important;flex-direction:row!important;align-items:center;gap:11px;cursor:pointer}.tech-check>input{width:19px!important;height:19px;flex:0 0 auto}.tech-check>span:last-child{display:flex;flex-direction:column;gap:2px}.tech-check small{color:var(--muted)}.per-tech-hours{margin-top:13px;padding-top:12px;border-top:1px solid var(--line);display:grid;gap:10px}.per-tech-hours.disabled{pointer-events:none;opacity:.36}.per-tech-hours.aggregate-hidden{display:none}.tech-mode-row{display:flex;gap:16px;flex-wrap:wrap}.tech-mode-row label{display:flex!important;flex-direction:row!important;align-items:center;gap:6px}.tech-mode-row input{width:17px!important;height:17px}.tech-time-total,.tech-time-detailed,.aggregate-time{display:grid;grid-template-columns:1fr 1fr;gap:10px}.tech-time-total label,.tech-time-detailed label,.aggregate-time label{display:grid;gap:5px}.aggregate-panel{border:1px solid color-mix(in srgb,var(--accent) 28%,var(--line));border-radius:13px;padding:15px;background:color-mix(in srgb,var(--accent) 4%,var(--panel2))}.compact-modes{margin:10px 0 12px}.tech-account-box{border-top:1px solid var(--line);padding-top:12px;margin-top:4px;display:grid;gap:8px}.tech-account-box small{color:var(--muted)}.team-detail-list{display:grid;gap:8px}.team-detail-row{display:flex;justify-content:space-between;gap:16px;padding:8px 0;border-bottom:1px solid var(--line)}.team-detail-row:last-child{border-bottom:0}.team-detail-row small{color:var(--muted)}
@media(max-width:700px){.multi-tech-grid{grid-template-columns:1fr}.tech-time-total,.tech-time-detailed,.aggregate-time{grid-template-columns:1fr 1fr}.multi-tech-card{padding:12px}}

/* v0.6.5 - allegati direttamente in creazione/modifica rapporto */
.inline-attachment-section{margin-top:6px;padding:18px;border:1px solid var(--line);border-radius:14px;background:color-mix(in srgb,var(--panel2) 55%,transparent)}
.inline-attachment-section .section-title{margin-bottom:8px}.inline-attachment-section p{margin:0 0 14px}
.inline-attachment-picks{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:11px}
.selected-attachments{display:flex;flex-wrap:wrap;gap:8px;min-height:36px;margin-top:12px;padding:10px;border-radius:10px;background:color-mix(in srgb,var(--panel2) 70%,transparent);border:1px solid var(--line)}
.selected-file{display:flex;align-items:center;gap:7px;min-width:0;max-width:100%;padding:7px 9px;border-radius:9px;background:var(--panel);border:1px solid var(--line)}
.selected-file span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:260px}.selected-file small{color:var(--muted);white-space:nowrap}.selected-file b{font-size:17px}
.existing-attachments-mini{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:12px}.existing-attachments-mini a{display:grid;grid-template-columns:26px 1fr auto;align-items:center;gap:7px;padding:9px 10px;border:1px solid var(--line);border-radius:9px;background:var(--panel)}.existing-attachments-mini strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-size:12px}.existing-attachments-mini small{color:var(--muted);font-size:11px}
@media(max-width:760px){.inline-attachment-picks{grid-template-columns:1fr}.selected-file{width:100%}.selected-file span{max-width:none;flex:1}.inline-attachment-section{padding:14px}}
.public-attachments-card{background:white;border:1px solid #dbe7f1;border-radius:20px;padding:22px;box-shadow:0 10px 30px rgba(25,57,91,.07);margin-bottom:16px}.public-attachments-head{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:16px}.public-attachments-head h2{margin:3px 0 0;font-size:20px}.public-attachments-head .eyebrow{font-size:11px;font-weight:800;letter-spacing:.08em;text-transform:uppercase;color:#1672d9}.attachment-count{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 11px;border-radius:999px;background:#edf5fd;color:#145b9f;font-size:12px;font-weight:800}.public-attachments-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.public-attachment-item{min-width:0;border:1px solid #dce8f2;border-radius:14px;background:#f9fbfd;overflow:hidden}.public-photo-link{display:block;aspect-ratio:16/10;background:#eaf2f8;overflow:hidden}.public-photo-link img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .2s ease}.public-photo-link:hover img{transform:scale(1.02)}.public-attachment-info{padding:12px;display:flex;flex-direction:column;gap:5px;min-width:0}.public-attachment-info strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.public-attachment-info span{font-size:11px;color:#71859b}.public-attachment-actions{display:flex;gap:8px;margin-top:5px}.public-attachment-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 11px;border-radius:9px;background:#edf4fb;color:#155da8;text-decoration:none;font-size:12px;font-weight:800}.public-doc-icon{margin:16px 16px 0;width:54px;height:54px;border-radius:13px;display:grid;place-items:center;background:#e9f3ff;color:#1567bb;font-weight:900;font-size:12px}.public-doc-icon.pdf{background:#fff0f0;color:#c73939}@media(max-width:600px){.public-attachments-card{padding:16px;border-radius:16px}.public-attachments-grid{grid-template-columns:1fr}.public-attachments-head{align-items:flex-start}.attachment-count{flex:0 0 auto}.public-photo-link{aspect-ratio:16/9}}

/* v0.6.8 dashboard clienti + portale firma documento-first */
.client-hours-list .bar-head>span{display:flex;flex-direction:column;gap:2px;min-width:0}.client-hours-list .bar-head>span>strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.client-hours-list .bar-head small{font-size:10px;color:var(--muted);font-weight:500}.public-sign-shell-wide{width:min(980px,100%)}.public-document-card{background:#fff;border:1px solid #dbe7f1;border-radius:20px;padding:20px;box-shadow:0 10px 30px rgba(25,57,91,.07);margin-bottom:16px}.public-document-head{display:flex;justify-content:space-between;align-items:flex-start;gap:16px;margin-bottom:14px}.public-document-head h1{font-size:22px;margin:2px 0 4px}.public-document-head p{margin:0;color:#6b7e94;font-size:13px}.public-status-chip{display:inline-flex;align-items:center;justify-content:center;min-height:30px;padding:0 12px;border-radius:999px;background:#eef4fb;color:#46637e;font-size:11px;font-weight:800}.public-status-chip.signed{background:#e7f8ef;color:#087a44}.public-pdf-frame-wrap{border:1px solid #d5e2ed;border-radius:14px;overflow:hidden;background:#eef4f8}.public-pdf-frame{display:block;width:100%;height:760px;border:0;background:white}.public-document-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:13px}.compact-success{display:flex;align-items:center;gap:14px;text-align:left;padding:18px 20px}.compact-success .success-icon{margin:0;flex:0 0 auto}.compact-success h2{margin:0 0 3px}.compact-success p{margin:0}.public-attachments-list-card{padding:20px}.public-attachment-list{display:grid;gap:9px}.public-attachment-row{display:grid;grid-template-columns:58px minmax(0,1fr) auto;gap:12px;align-items:center;border:1px solid #dce8f2;border-radius:13px;padding:11px 12px;background:#f9fbfd}.public-file-type{width:52px;height:42px;border-radius:10px;display:grid;place-items:center;font-size:10px;font-weight:900;letter-spacing:.04em;background:#edf4fb;color:#155da8}.public-file-type.photo{background:#e8f7f2;color:#08795e}.public-file-type.pdf{background:#fff0f0;color:#bd3030}.public-file-main{display:flex;flex-direction:column;gap:3px;min-width:0}.public-file-main strong{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.public-file-main span{font-size:11px;color:#71859b}.public-file-actions{display:flex;gap:7px;flex-wrap:wrap;justify-content:flex-end}.public-file-actions a{display:inline-flex;align-items:center;justify-content:center;min-height:34px;padding:0 11px;border-radius:9px;border:1px solid #d4e2ee;background:#fff;color:#155da8;font-size:12px;font-weight:800;text-decoration:none}.public-file-actions a:last-child{background:#edf4fb}.public-attachments-grid,.public-photo-link,.public-doc-icon{display:none!important}
@media(max-width:700px){.public-sign-shell-wide{padding:8px 8px 30px}.public-document-card,.public-attachments-list-card{padding:13px;border-radius:15px}.public-document-head{align-items:flex-start}.public-document-head h1{font-size:19px}.public-pdf-frame{height:62vh;min-height:460px}.public-document-actions{display:grid;grid-template-columns:1fr 1fr}.public-document-actions .btn{width:100%;justify-content:center}.public-attachment-row{grid-template-columns:48px minmax(0,1fr);padding:10px}.public-file-type{width:44px;height:40px}.public-file-actions{grid-column:1/-1;justify-content:stretch}.public-file-actions a{flex:1}.compact-success{align-items:flex-start}.compact-success .success-icon{width:42px;height:42px;font-size:23px}}

/* v0.7.1 - portale cliente, report mensili e automazione */
.public-document-card-full{padding:22px}.public-report-pages{display:grid;gap:14px;background:#dfe8f0;border:1px solid #d3e0eb;border-radius:14px;padding:14px}.public-report-page-link{display:block;text-decoration:none}.public-report-page{display:block;width:100%;height:auto;background:#fff;box-shadow:0 3px 14px rgba(19,45,72,.14);border-radius:3px}.public-pdf-frame-wrap,.public-pdf-frame{display:none!important}.public-attachment-list{gap:14px}.public-attachment-row{padding:14px 15px;gap:15px}.public-file-main{gap:5px}.public-file-main strong{font-size:14px;color:#081a38;font-weight:850}.public-file-main span{font-size:12px}.public-file-actions{gap:10px}.public-file-actions a{color:#076bd6;background:transparent!important;border:0;padding:0 2px;min-height:auto;font-size:13px;font-weight:850;text-decoration:none}.public-file-actions a:hover{text-decoration:underline}.public-file-actions a+a{padding-left:10px;border-left:1px solid #cddae6}.notice-card{margin-bottom:14px;padding:12px 14px;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));background:color-mix(in srgb,var(--accent) 8%,var(--panel));border-radius:12px}.monthly-filter-card{margin-bottom:14px}.monthly-filter-form{display:grid;grid-template-columns:minmax(190px,240px) minmax(240px,1fr) auto;gap:12px;align-items:end}.monthly-filter-form label{display:grid;gap:6px}.monthly-filter-form label span{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.monthly-kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:14px}.monthly-kpi{padding:16px;border:1px solid var(--line);background:var(--panel);border-radius:14px;display:flex;flex-direction:column;gap:4px}.monthly-kpi span{font-size:11px;color:var(--muted);font-weight:700}.monthly-kpi strong{font-size:25px}.monthly-kpi small{font-size:10px;color:var(--muted)}.monthly-kpi.billable{border-color:color-mix(in srgb,#22c55e 45%,var(--line));background:color-mix(in srgb,#22c55e 8%,var(--panel))}.monthly-actions-card,.monthly-mail-card{display:flex;align-items:center;justify-content:space-between;gap:18px;margin-bottom:14px}.monthly-actions-card h2,.monthly-mail-card h2{margin:4px 0}.monthly-actions-card p,.monthly-mail-card p{margin:0;color:var(--muted)}.monthly-actions{display:flex;gap:9px;flex:0 0 auto}.monthly-client-card{margin-bottom:14px}.monthly-client-head{display:flex;justify-content:space-between;align-items:center;gap:14px;margin-bottom:12px}.monthly-client-head h2{margin:3px 0}.monthly-client-totals{display:flex;gap:16px;flex-wrap:wrap}.monthly-client-totals span{font-size:12px;color:var(--muted)}.monthly-client-totals strong{color:var(--text);font-size:15px;margin-left:4px}.monthly-client-totals .billable-text strong{color:#22c55e}.monthly-table{width:100%;border-collapse:collapse}.monthly-table th,.monthly-table td{padding:10px 9px;border-bottom:1px solid var(--line);text-align:left;font-size:12px}.monthly-table th{font-size:10px;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.monthly-table a{color:var(--accent);font-weight:800}.hour-type-pill{display:inline-flex;padding:5px 8px;border-radius:999px;background:var(--panel2);font-size:10px;font-weight:800}.hour-type-pill.billable{background:color-mix(in srgb,#22c55e 16%,var(--panel2));color:#22c55e}.monthly-mail-form{display:grid;grid-template-columns:minmax(260px,1fr) auto;gap:10px;min-width:min(620px,55%)}
@media(max-width:760px){.public-document-card-full{padding:12px}.public-report-pages{padding:6px;gap:9px;border-radius:10px}.public-attachment-row{grid-template-columns:48px minmax(0,1fr);padding:13px 12px}.public-file-actions{grid-column:2;justify-content:flex-start}.public-file-actions a{flex:0 0 auto}.public-document-head{display:block}.public-status-chip{margin-top:8px}.monthly-filter-form{grid-template-columns:1fr}.monthly-kpis{grid-template-columns:1fr 1fr}.monthly-actions-card,.monthly-mail-card,.monthly-client-head{align-items:flex-start;flex-direction:column}.monthly-actions{width:100%}.monthly-actions .btn{flex:1}.monthly-mail-form{width:100%;min-width:0;grid-template-columns:1fr}.monthly-client-totals{gap:10px}.monthly-table{min-width:650px}}
/* v0.7.1 - reportistica, controlli dark, automazione */
.monthly-hero-filter{display:grid;grid-template-columns:52px 1fr;gap:14px;align-items:center;background:linear-gradient(135deg,color-mix(in srgb,var(--accent) 8%,var(--panel)),var(--panel))}.monthly-filter-icon{width:48px;height:48px;border-radius:14px;background:linear-gradient(135deg,#087fd0,#28a7e8);display:grid;place-items:center;color:#fff;font-size:24px;font-weight:900;box-shadow:0 10px 24px rgba(8,127,208,.22)}
html[data-theme="dark"] .monthly-dark-control{background:#07111f!important;color:#f4f8fc!important;border-color:#263b54!important;color-scheme:dark}html[data-theme="dark"] select.monthly-dark-control option{background:#07111f;color:#f4f8fc}html[data-theme="light"] .monthly-dark-control{background:#fff;color:#071c36;color-scheme:light}
.monthly-kpi{position:relative;overflow:hidden}.monthly-kpi:after{content:"";position:absolute;width:74px;height:74px;border-radius:50%;right:-20px;bottom:-38px;background:rgba(255,255,255,.06)}.monthly-kpi.blue{border-color:color-mix(in srgb,#168bd4 45%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,#168bd4 14%,var(--panel)),var(--panel))}.monthly-kpi.cyan{border-color:color-mix(in srgb,#27a8e8 40%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,#27a8e8 12%,var(--panel)),var(--panel))}.monthly-kpi.violet{border-color:color-mix(in srgb,#8459d1 36%,var(--line));background:linear-gradient(135deg,color-mix(in srgb,#8459d1 12%,var(--panel)),var(--panel))}.monthly-kpi>span{font-weight:850}.monthly-document-card{border-left:4px solid var(--accent)}.monthly-client-card{border-top:2px solid color-mix(in srgb,var(--accent) 55%,transparent)}
.auto-report-card{margin-top:14px;border:1px solid color-mix(in srgb,var(--accent) 32%,var(--line));background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 5%,var(--panel)),var(--panel))}.auto-report-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.auto-report-head h2{margin:4px 0}.auto-report-head p{margin:0;color:var(--muted)}.auto-report-grid{display:grid;grid-template-columns:1fr 180px 180px;gap:13px;align-items:end}.auto-report-grid>label{display:grid;gap:6px}.auto-report-grid>label>span{font-size:11px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.auto-report-grid .check{display:flex;align-items:center;gap:8px;min-height:42px}.auto-toggle{grid-column:1/-1}.auto-total-recipients{grid-column:1/3}.auto-report-actions{display:flex;justify-content:flex-end}.auto-report-status{margin:14px 0 10px;padding:10px 12px;border-radius:10px;background:var(--panel2);color:var(--muted);font-size:12px}
@media(max-width:760px){.monthly-hero-filter{grid-template-columns:1fr}.monthly-filter-icon{display:none}.auto-report-grid{grid-template-columns:1fr}.auto-toggle,.auto-total-recipients{grid-column:auto}.auto-report-head{flex-direction:column}.monthly-kpis{grid-template-columns:1fr 1fr}}

/* v0.7.2 - allineamento PDF mensile e controlli coerenti col tema */
html[data-theme="dark"] .monthly-dark-control{background:var(--input)!important;color:var(--text)!important;border-color:var(--line)!important;color-scheme:dark}
html[data-theme="dark"] select.monthly-dark-control option{background:#0c1728;color:#f2f7ff}
html[data-theme="light"] .monthly-dark-control{background:var(--input)!important;color:var(--text)!important;border-color:var(--line)!important;color-scheme:light}

/* v0.9.0 operations */
.filter-panel{margin-bottom:18px}.filter-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px}.filter-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.toolbar{display:flex;gap:10px;align-items:center;margin-top:15px;flex-wrap:wrap}.toolbar-spacer{flex:1}.status-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-bottom:18px}.status-grid.system{grid-template-columns:repeat(3,minmax(0,1fr))}.status-card{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:18px;display:flex;flex-direction:column;gap:6px}.status-card>span{font-size:12px;text-transform:uppercase;letter-spacing:.08em;color:var(--muted)}.status-card>strong{font-size:22px}.status-card>small{color:var(--muted);overflow-wrap:anywhere}.status-ok{color:#22c55e}.status-ko{color:#ef4444}.status-warn{color:#f59e0b}.danger-note{border:1px solid rgba(245,158,11,.35);background:rgba(245,158,11,.08);border-radius:12px;padding:12px;margin:14px 0;color:var(--text)}.restore-form{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.restore-form input{min-width:145px}.security-admin-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}.notice.ok{padding:12px 14px;border-radius:12px;background:rgba(34,197,94,.12);border:1px solid rgba(34,197,94,.35);margin-bottom:16px}.table-sub{display:block;color:var(--muted);margin-top:3px}
@media(max-width:980px){.filter-grid,.status-grid.system{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:680px){.filter-grid,.filter-grid.two,.status-grid,.status-grid.system{grid-template-columns:1fr}.toolbar-spacer{display:none}.restore-form{align-items:stretch}.restore-form input,.restore-form button{width:100%}}
.mini-password-reset{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.mini-password-reset input{min-width:220px}.audit-secondary{margin-top:18px}


/* v1.0.0 dashboard finale: 3 pannelli compatti + colori stato */
.dashboard-grid.dashboard-grid-3{grid-template-columns:repeat(3,minmax(0,1fr));align-items:stretch}
.dashboard-grid-3>.panel:not(.recent-panel){min-height:315px}
.dashboard-grid-3 .status-layout.compact-status{grid-template-columns:132px minmax(0,1fr);gap:18px;min-height:230px}
.dashboard-grid-3 .donut{width:126px;height:126px}
.dashboard-grid-3 .donut:after{inset:22px}
.dashboard-grid-3 .donut strong{font-size:24px}
.status-donut{background:conic-gradient(
  #1fa463 0 calc(var(--signed)*1%),
  #e69a2b calc(var(--signed)*1%) calc((var(--signed) + var(--draft))*1%),
  #8b5cf6 calc((var(--signed) + var(--draft))*1%) calc((var(--signed) + var(--draft) + var(--sent))*1%),
  #2f80ed calc((var(--signed) + var(--draft) + var(--sent))*1%) calc((var(--signed) + var(--draft) + var(--sent) + var(--viewed))*1%),
  #e55353 calc((var(--signed) + var(--draft) + var(--sent) + var(--viewed))*1%) 100%
)}
.compact-legend{gap:10px}
.dot-signed{background:#1fa463}.dot-draft{background:#e69a2b}.dot-sent{background:#8b5cf6}.dot-viewed{background:#2f80ed}.dot-other{background:#e55353}
.dashboard-small-bars{gap:13px;margin-top:18px}.dashboard-small-bars .bar-head{margin-bottom:5px}
.hour-summary-list{display:flex;flex-direction:column;gap:20px;margin-top:22px}
.hour-summary-row{display:flex;flex-direction:column;gap:7px}.hour-summary-head{display:flex;align-items:center;justify-content:space-between;gap:12px;font-size:13px}.hour-summary-head>span{display:flex;align-items:center;gap:8px;min-width:0}.hour-summary-head strong{font-size:13px;white-space:nowrap}
.hour-type-dot{width:9px;height:9px;border-radius:50%;display:inline-block;flex:0 0 9px}.hour-type-billable{background:#1fa463}.hour-type-warranty{background:#e69a2b}.hour-type-package{background:#2f80ed}.hour-type-contract{background:#8b5cf6}
.hour-fill-billable{background:#1fa463}.hour-fill-warranty{background:#e69a2b}.hour-fill-package{background:#2f80ed}.hour-fill-contract{background:#8b5cf6}
@media(max-width:1250px){.dashboard-grid.dashboard-grid-3{grid-template-columns:1fr 1fr}.dashboard-grid-3>.hours-summary-panel{grid-column:1/-1}.dashboard-grid-3>.recent-panel{grid-column:1/-1}}
@media(max-width:820px){.dashboard-grid.dashboard-grid-3{grid-template-columns:1fr}.dashboard-grid-3>.hours-summary-panel,.dashboard-grid-3>.recent-panel{grid-column:auto}.dashboard-grid-3 .status-layout.compact-status{grid-template-columns:120px 1fr}}
@media(max-width:560px){.dashboard-grid-3 .status-layout.compact-status{grid-template-columns:1fr}.dashboard-grid-3 .donut{width:136px;height:136px}}


/* v1.0.1 - controlli coerenti con il tema dark in tutte le viste amministrative */
html[data-theme="dark"] .content input:not([type="checkbox"]):not([type="radio"]),
html[data-theme="dark"] .content select,
html[data-theme="dark"] .content textarea {
  background:var(--input);
  color:var(--text);
  border:1px solid var(--line);
  color-scheme:dark;
}
html[data-theme="dark"] .content input:not([type="checkbox"]):not([type="radio"])::placeholder,
html[data-theme="dark"] .content textarea::placeholder {
  color:var(--muted);
  opacity:1;
}
html[data-theme="dark"] .content select option {
  background:var(--input);
  color:var(--text);
}
html[data-theme="dark"] .content input[type="date"]::-webkit-calendar-picker-indicator,
html[data-theme="dark"] .content input[type="time"]::-webkit-calendar-picker-indicator {
  filter:invert(1);
  opacity:.8;
}
html[data-theme="dark"] .content input[type="file"]::file-selector-button {
  background:var(--panel2);
  color:var(--text);
  border:1px solid var(--line);
  border-radius:7px;
  padding:7px 10px;
  margin-right:9px;
  cursor:pointer;
}


/* v1.1.0 - Area privata clienti */
.portal-admin-notice{margin:12px 0;padding:11px 13px;border-radius:10px;background:color-mix(in srgb,var(--green) 12%,var(--panel));border:1px solid color-mix(in srgb,var(--green) 35%,var(--line));color:var(--text);font-size:12px;font-weight:700}.client-user-admin-row{border:1px solid var(--line);border-radius:12px;padding:12px;background:color-mix(in srgb,var(--panel2) 45%,transparent);display:grid;gap:11px}.client-user-admin-head{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.client-user-admin-head>div{display:flex;flex-direction:column;gap:3px}.client-user-admin-head small{color:var(--muted)}.client-user-admin-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.inline-check{display:inline-flex!important;flex-direction:row!important;align-items:center;gap:7px!important;color:var(--muted);font-size:12px!important;font-weight:650!important}.inline-check input{width:auto!important}.client-user-create{display:grid;grid-template-columns:.8fr .8fr 1.2fr 1.1fr auto auto;gap:8px;align-items:center;margin-top:12px}.client-user-create input{border:1px solid var(--line);background:var(--input);color:var(--text);border-radius:9px;padding:10px;min-width:0}.client-portal-body{margin:0;min-height:100vh;background:radial-gradient(circle at 75% -10%,rgba(43,112,211,.12),transparent 28%),var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif}.client-portal-top{height:70px;display:flex;align-items:center;justify-content:space-between;gap:15px;padding:0 max(18px,calc((100vw - 1180px)/2));background:color-mix(in srgb,var(--panel) 94%,transparent);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:10;backdrop-filter:blur(14px)}.client-portal-brand{display:flex;align-items:center;gap:11px}.client-portal-brand>div:last-child{display:flex;flex-direction:column;gap:2px}.client-portal-brand small{color:var(--muted);font-size:11px}.portal-shield{width:42px;height:42px;border-radius:12px;background:linear-gradient(145deg,#1566cc,#2c8df1);display:grid;place-items:center;color:#fff;font-weight:900;font-size:12px;box-shadow:0 9px 22px rgba(23,108,210,.25)}.client-portal-user{display:flex;align-items:center;gap:14px;font-size:13px}.client-portal-user a{color:var(--accent2);font-weight:800}.client-portal-main{width:min(1180px,calc(100% - 32px));margin:0 auto;padding:28px 0 44px}.client-portal-hero{display:grid;grid-template-columns:minmax(0,1fr) 150px 170px;gap:14px;align-items:stretch;margin-bottom:18px}.client-portal-hero>div:first-child{background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:22px}.client-portal-hero h1{margin:4px 0;font-size:29px}.client-portal-hero p{margin:0;color:var(--muted)}.portal-stat{background:linear-gradient(145deg,color-mix(in srgb,var(--accent) 13%,var(--panel)),var(--panel));border:1px solid color-mix(in srgb,var(--accent) 30%,var(--line));border-radius:16px;padding:18px;display:flex;flex-direction:column;justify-content:center}.portal-stat strong{font-size:26px}.portal-stat span{font-size:11px;color:var(--muted);margin-top:5px}.client-portal-list{display:grid;gap:10px}.client-report-card{display:grid;grid-template-columns:46px minmax(0,1fr) 26px;gap:14px;align-items:center;padding:16px;border:1px solid var(--line);border-radius:14px;background:var(--panel);box-shadow:var(--shadow)}.client-report-card:hover{border-color:color-mix(in srgb,var(--accent) 60%,var(--line));transform:translateY(-1px)}.client-report-icon{width:42px;height:42px;border-radius:12px;background:color-mix(in srgb,var(--green) 16%,transparent);color:var(--green);display:grid;place-items:center;font-weight:900;font-size:20px}.client-report-main>div:first-child{display:flex;gap:9px;align-items:center}.client-report-main h2{font-size:15px;margin:7px 0 5px}.client-report-main p{margin:0 0 7px;color:var(--muted);font-size:13px;line-height:1.45}.client-report-main small{color:var(--muted)}.status-chip-client{font-size:10px;font-weight:850;padding:4px 7px;border-radius:999px;background:color-mix(in srgb,var(--green) 14%,transparent);color:var(--green)}.client-report-arrow{font-size:28px;color:var(--muted)}.client-portal-empty{padding:40px 20px;text-align:center;border:1px dashed var(--line);border-radius:14px;background:var(--panel);display:flex;flex-direction:column;gap:6px}.client-portal-empty span{color:var(--muted)}.client-report-detail-head{display:flex;justify-content:space-between;gap:18px;align-items:center;margin-bottom:17px}.client-report-detail-head h1{font-size:30px;margin:4px 0}.client-report-detail-head p{margin:0;color:var(--muted)}.client-detail-actions{display:flex;gap:8px}.client-report-summary{display:grid;grid-template-columns:repeat(4,1fr);gap:0;margin-bottom:14px;padding:0}.client-report-summary>div{padding:17px;border-right:1px solid var(--line);display:flex;flex-direction:column;gap:5px}.client-report-summary>div:last-child{border-right:0}.client-report-summary small{color:var(--muted);font-size:10px;text-transform:uppercase;letter-spacing:.05em}.client-description,.client-attachments{margin-bottom:14px}.client-description h2{margin:4px 0 12px}.client-description p{white-space:pre-wrap;line-height:1.55;margin:0}.client-attachment-list{display:grid;gap:9px;margin-top:14px}.client-attachment-row{display:grid;grid-template-columns:48px minmax(0,1fr) auto;gap:12px;align-items:center;padding:12px;border:1px solid var(--line);border-radius:11px;background:var(--panel2)}.client-attachment-row>div:nth-child(2){display:flex;flex-direction:column;gap:3px;min-width:0}.client-attachment-row strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.client-attachment-row small{color:var(--muted)}.client-file-icon{width:44px;height:44px;border-radius:10px;display:grid;place-items:center;background:color-mix(in srgb,var(--accent) 14%,transparent);color:var(--accent2);font-weight:900;font-size:10px}.client-file-actions{display:flex;gap:10px}.client-file-actions a{color:var(--accent2);font-size:12px;font-weight:850}.auth-card .client-portal-brand{margin-bottom:20px}@media(max-width:1050px){.client-user-create{grid-template-columns:1fr 1fr}.client-user-create .inline-check,.client-user-create .btn{grid-column:auto}.client-portal-hero{grid-template-columns:1fr 1fr}.client-portal-hero>div:first-child{grid-column:1/-1}}@media(max-width:700px){.client-portal-top{padding:0 12px}.client-portal-user span{display:none}.client-portal-main{width:min(100% - 20px,1180px);padding-top:16px}.client-portal-hero{grid-template-columns:1fr 1fr}.client-portal-hero>div:first-child{padding:17px}.portal-stat{padding:14px}.client-report-card{grid-template-columns:42px minmax(0,1fr);padding:13px}.client-report-arrow{display:none}.client-report-detail-head{align-items:flex-start;flex-direction:column}.client-detail-actions{width:100%;display:grid;grid-template-columns:1fr 1fr}.client-report-summary{grid-template-columns:1fr 1fr}.client-report-summary>div:nth-child(2){border-right:0}.client-report-summary>div:nth-child(-n+2){border-bottom:1px solid var(--line)}.client-attachment-row{grid-template-columns:44px minmax(0,1fr)}.client-file-actions{grid-column:2}.client-user-create{grid-template-columns:1fr}.client-user-admin-head{flex-direction:column}.client-user-admin-actions{align-items:stretch;flex-direction:column}.mini-password-reset{display:grid!important;grid-template-columns:1fr}.mini-password-reset input,.mini-password-reset button{width:100%}}


/* v1.1.1 - Area privata: fix dettaglio, allegati evidenti, tema light/dark */
.client-theme-toggle{
  width:38px;height:38px;border-radius:10px;border:1px solid var(--line);
  background:var(--panel2);color:var(--text);display:inline-grid;place-items:center;
  cursor:pointer;font-size:17px;line-height:1
}
.client-theme-toggle:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}
.client-theme-toggle-floating{position:fixed;right:18px;top:18px;z-index:20}
.client-report-main small{display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.client-attachment-indicator{display:inline-flex;align-items:center;gap:4px;color:var(--muted);font-weight:650}
.client-attachment-indicator.has-files{color:var(--accent2);font-weight:850}
.client-paperclip{font-size:15px;line-height:1;filter:saturate(.9)}
html[data-theme="light"] .client-portal-body{
  background:radial-gradient(circle at 75% -10%,rgba(43,112,211,.10),transparent 28%),var(--bg)
}
html[data-theme="light"] .client-portal-top{background:color-mix(in srgb,var(--panel) 96%,transparent)}
html[data-theme="light"] .client-report-card,
html[data-theme="light"] .client-portal-hero>div:first-child,
html[data-theme="light"] .portal-stat,
html[data-theme="light"] .client-report-summary,
html[data-theme="light"] .client-description,
html[data-theme="light"] .client-attachments{box-shadow:0 12px 34px rgba(25,45,80,.07)}
html[data-theme="light"] .client-auth-body{
  background:radial-gradient(circle at 72% 5%,rgba(45,132,255,.10),transparent 32%),#eef4fb;
  color:#162036
}
html[data-theme="light"] .client-auth-body .auth-card{
  background:linear-gradient(180deg,#ffffff,#f7faff);
  border-color:#d9e5f2;
  box-shadow:0 24px 70px rgba(25,45,80,.12);
  color:#162036
}
html[data-theme="light"] .client-auth-body .auth-card>p,
html[data-theme="light"] .client-auth-body .auth-logo small{color:#6f7d92}
html[data-theme="light"] .client-auth-body .auth-form label{color:#24344f}
html[data-theme="light"] .client-auth-body .auth-form input{
  background:#fbfcff;color:#162036;border-color:#d6e1ee
}
html[data-theme="light"] .client-auth-body .security-hint{
  background:#f1f6fd;border-color:#d5e3f3;color:#526782
}
@media(max-width:700px){
  .client-portal-user{gap:9px}
  .client-theme-toggle{width:36px;height:36px}
  .client-theme-toggle-floating{right:12px;top:12px}
}


/* v1.1.2 - visualizzatore universale documenti/mobile */
html.doc-viewer-open,body.doc-viewer-open{overflow:hidden!important;overscroll-behavior:none}
.doc-viewer{position:fixed;inset:0;z-index:10000;display:none}
.doc-viewer.open{display:block}
.doc-viewer-backdrop{position:absolute;inset:0;background:rgba(0,0,0,.72);backdrop-filter:blur(4px)}
.doc-viewer-shell{position:absolute;inset:12px;display:grid;grid-template-rows:auto minmax(0,1fr);background:var(--bg);border:1px solid var(--line);border-radius:16px;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.48)}
.doc-viewer-toolbar{min-height:62px;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;padding:10px 12px;background:var(--panel);border-bottom:1px solid var(--line);position:relative;z-index:2}
.doc-viewer-title{font-weight:850;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}
.doc-viewer-actions{display:flex;align-items:center;gap:8px}
.doc-viewer-btn{min-height:40px;display:inline-flex;align-items:center;justify-content:center;gap:7px;padding:8px 12px;border-radius:9px;border:1px solid var(--line);background:var(--panel2);color:var(--text);font-weight:800;font-size:13px;cursor:pointer;text-decoration:none}
.doc-viewer-btn:hover{border-color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--panel2))}
.doc-viewer-close{background:color-mix(in srgb,var(--red) 8%,var(--panel2));border-color:color-mix(in srgb,var(--red) 25%,var(--line))}
.doc-viewer-stage{min-height:0;overflow:auto;background:#d7dee7;display:grid;place-items:center}
html[data-theme="dark"] .doc-viewer-stage{background:#050b13}
.doc-viewer-frame{width:100%;height:100%;min-height:0;border:0;background:#fff}
.doc-viewer-image{display:block;max-width:100%;max-height:100%;object-fit:contain;margin:auto;padding:12px}
@media(max-width:700px){
  .doc-viewer-shell{inset:0;border-radius:0;border:0}
  .doc-viewer-toolbar{min-height:58px;grid-template-columns:auto minmax(0,1fr) auto;padding:max(8px,env(safe-area-inset-top)) 8px 8px}
  .doc-viewer-title{font-size:13px}
  .doc-viewer-btn{min-height:38px;padding:7px 9px;font-size:12px}
  .doc-viewer-btn span:first-child{font-size:16px}
  .doc-viewer-actions{gap:5px}
  .doc-viewer-image{padding:8px}
}
@media(max-width:430px){
  .doc-viewer-btn span:last-child{display:none}
  .doc-viewer-btn{width:40px;padding:7px}
  .doc-viewer-actions .doc-viewer-btn{width:40px}
}
@media print{
  .doc-viewer-toolbar,.doc-viewer-backdrop{display:none!important}
}


/* v1.1.3 - fix scala PDF/documenti su iOS/mobile */
.doc-viewer-shell{
  width:auto;
  max-width:calc(100vw - 24px);
  max-height:calc(100dvh - 24px);
}
.doc-viewer-stage{
  width:100%;
  max-width:100%;
  min-width:0;
  min-height:0;
  overflow:hidden;
  position:relative;
}
.doc-viewer-frame-wrap{
  width:100%;
  height:100%;
  min-width:0;
  min-height:0;
  max-width:100%;
  overflow:auto;
  -webkit-overflow-scrolling:touch;
  overscroll-behavior:contain;
}
.doc-viewer-frame{
  display:block;
  width:1px!important;
  min-width:100%!important;
  max-width:100%!important;
  height:100%!important;
  min-height:100%!important;
  border:0;
  margin:0;
  padding:0;
}
@media(max-width:700px){
  .doc-viewer-shell{
    width:100vw;
    max-width:100vw;
    height:100dvh;
    max-height:100dvh;
    inset:0;
  }
  .doc-viewer-stage,
  .doc-viewer-frame-wrap{
    width:100vw;
    max-width:100vw;
  }
  .doc-viewer-frame{
    width:1px!important;
    min-width:100vw!important;
    max-width:100vw!important;
  }
}

/* v1.1.4 - PDF renderizzati a pagine responsive, niente viewer nativo iOS */
.doc-viewer-stage{overflow:auto!important;display:block!important;padding:0}
.doc-viewer-pdf-pages{width:100%;max-width:100%;display:flex;flex-direction:column;align-items:center;gap:12px;padding:12px;margin:0 auto}
.doc-viewer-pdf-page{width:min(100%,980px);max-width:100%;background:#fff;box-shadow:0 4px 18px rgba(0,0,0,.18);overflow:hidden}
.doc-viewer-pdf-page img{display:block;width:100%!important;max-width:100%!important;height:auto!important;margin:0;padding:0;object-fit:contain}
.doc-viewer-loading,.doc-viewer-error{min-height:220px;width:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;padding:24px;color:var(--text);text-align:center}
.doc-viewer-error span{color:var(--muted);font-size:13px}
@media(max-width:700px){
  .doc-viewer-pdf-pages{width:100vw;max-width:100vw;padding:6px;gap:7px}
  .doc-viewer-pdf-page{width:calc(100vw - 12px);max-width:calc(100vw - 12px)}
}


/* v1.1.5 - sfondo login PC/tablet, box vetro, smartphone senza immagine */
@media (min-width:701px) {
  body.auth-body.rapporti-login-background {
    min-height:100dvh;
    background:
      linear-gradient(rgba(4,12,24,.20),rgba(4,12,24,.20)),
      url("/static/tnn-rapporti-login.png") center center / cover no-repeat fixed !important;
  }

  body.auth-body.rapporti-login-background .auth-shell {
    min-height:100dvh;
  }

  body.auth-body.rapporti-login-background .rapporti-login-card {
    background:rgba(8,20,36,.72);
    border:1px solid rgba(130,177,232,.28);
    box-shadow:0 28px 80px rgba(0,0,0,.48);
    -webkit-backdrop-filter:blur(14px) saturate(120%);
    backdrop-filter:blur(14px) saturate(120%);
  }

  html[data-theme="light"] body.auth-body.rapporti-login-background .rapporti-login-card {
    background:rgba(255,255,255,.78);
    border:1px solid rgba(255,255,255,.60);
    box-shadow:0 28px 80px rgba(0,0,0,.28);
    -webkit-backdrop-filter:blur(14px) saturate(115%);
    backdrop-filter:blur(14px) saturate(115%);
  }
}

@media (max-width:700px) {
  body.auth-body.rapporti-login-background {
    background:
      radial-gradient(circle at 72% 5%,rgba(45,132,255,.18),transparent 32%),
      #07111f !important;
    background-attachment:scroll !important;
  }

  html[data-theme="light"] body.auth-body.rapporti-login-background {
    background:#f4f7fb !important;
  }

  body.auth-body.rapporti-login-background .rapporti-login-card {
    -webkit-backdrop-filter:none;
    backdrop-filter:none;
  }
}


/* v1.1.6 - logout PWA/mobile e refresh meno invasivo */
.sidebar-bottom{
  flex-wrap:wrap;
}
.sidebar-logout{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:7px;
  min-height:39px;
  padding:8px 11px;
  border:1px solid rgba(255,255,255,.12);
  background:rgba(255,255,255,.05);
  color:#fff;
  border-radius:10px;
  font-size:12px;
  font-weight:750;
}
.sidebar-logout:hover{
  background:rgba(255,255,255,.10);
}
.mobile-logout{
  display:none;
  width:36px;
  height:36px;
  border-radius:9px;
  align-items:center;
  justify-content:center;
  border:1px solid var(--line);
  background:var(--panel2);
  color:var(--text);
  font-size:18px;
  font-weight:800;
}
@media(max-width:820px){
  .mobile-logout{
    display:inline-flex;
  }
  .sidebar-bottom{
    display:grid;
    grid-template-columns:1fr auto;
    gap:8px;
  }
  .sidebar-bottom .theme-btn{
    width:100%;
  }
  .sidebar-bottom .sidebar-logout{
    min-width:74px;
  }
  .sidebar-version{
    grid-column:1/-1;
    padding-left:2px;
  }
}

/* v1.1.7 - centratura reale box login PC/tablet */
@media (min-width:701px) {
  body.auth-body.rapporti-login-background .auth-shell {
    width:100%;
    min-height:100dvh;
    display:flex;
    align-items:center;
    justify-content:center;
    padding:24px;
    box-sizing:border-box;
  }
  body.auth-body.rapporti-login-background .rapporti-login-card {
    margin:0 auto;
  }
}
