/* =====================================================================
   POSA — foglio di stile unico (scritto da Luna S.r.l.)
   Stile «Zara»: bianco, nero e grigio, nessun colore d'accento, nessun
   angolo arrotondato, Helvetica Neue leggero (Inter come ripiego),
   etichette in maiuscoletto spaziato, filetti da 1 px, pulsanti neri
   rettangolari, griglie a due colonne con 2 px di spazio.
   Sostituisce posa.css e sequora-compat.css; carica per ultimo.
   ===================================================================== */

/* ---------- 1. Parametri ---------- */
:root {
  --ink: #111111; --ink-deep: #000000; --text: #1d1d1d;
  --muted: #545454; --faint: #6a6a6a;
  --accent: #111111; --verde: #111111; --ambra: #5a5a5a; --acciaio: #2e2e2e; --allarme: #111111;
  --linea: #d9d9d9; --linea-forte: #111111; --velo: #f4f4f4; --bordo-campo: #808080;
  --surface: #ffffff; --canvas: #ffffff;
  --sans: "Helvetica Neue", Helvetica, Inter, Arial, sans-serif; --disp: var(--sans);
  --glass-fill: #ffffff; --glass-brd: 1px solid var(--linea); --glass-border: 1px solid var(--linea);
  --radius-pill: 0; --radius-sm: 0; --radius-md: 0; --radius-lg: 0; --radius-container: 0; --radius-overlay: 0;
  --elevation-1: none; --elevation-2: none; --elevation-3: none; --elevation-overlay: none;
  --control-rest: none; --control-raised: none; --control-hover: none; --primary-shadow: none;
  --gutter: 40px; --altezza-testata: 60px;
}

/* ---------- 2. Base ---------- */
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: #fff; color: var(--text); font: 300 14px/1.55 var(--sans); -webkit-font-smoothing: antialiased; }
[hidden] { display: none !important; }
a { color: inherit; }
img { max-width: 100%; }
h1, h2, h3, h4 { font-family: var(--sans); color: var(--ink); }
:focus-visible { outline: 2px solid #000; outline-offset: 2px; }
.visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }

/* niente angoli tondi, ombre o vetro: vale anche per le pagine con stili propri */
*, *::before, *::after { border-radius: 0 !important; box-shadow: none !important; text-shadow: none !important; -webkit-backdrop-filter: none !important; backdrop-filter: none !important; }

/* ---------- 3. Elementi comuni ---------- */
.lz-label, .cap { font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; color: var(--muted); margin: 0; }
.lz-h1, .h1 { margin: 0; font: 300 clamp(26px, 3.6vw, 40px)/1.1 var(--sans); letter-spacing: -.01em; color: var(--ink); }
.h2 { margin: 0; font: 300 24px/1.2 var(--sans); }
.h3 { margin: 0; font: 400 12px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.lz-sotto, .lead { margin: 8px 0 0; color: var(--muted); font-size: 14px; max-width: 64ch; }
.lz-nota { margin: 8px 0; font-size: 13px; color: var(--muted); }
.lz-nota a, .q-nota a { text-decoration: underline; text-underline-offset: 3px; }
.tabular { font-variant-numeric: tabular-nums; }

.lz-testata { display: flex; justify-content: space-between; align-items: flex-end; gap: 24px; flex-wrap: wrap; padding: 0 0 24px; border-bottom: 1px solid var(--ink); }
.lz-testata-titoli { min-width: 0; }
.lz-testata-azioni { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.lz-indietro { display: inline-block; margin: 0 0 18px; font: 400 10px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .16em; text-decoration: none; color: var(--ink); }
.lz-indietro:hover { text-decoration: underline; text-underline-offset: 4px; }
.lz-testata .lz-h1 { margin-top: 8px; }

.lz-link { display: inline-block; padding: 0; background: none; border: 0; color: var(--ink); font: 400 10.5px/1.4 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.lz-link:hover { text-decoration-thickness: 2px; }

.lz-btn, .g-btn, .btn, .btn-filled, .btn-primary, .cp-azione, .acc-btn, .action-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 44px; padding: 0 24px; background: var(--ink); color: #fff; border: 1px solid var(--ink); font: 400 11px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: none; cursor: pointer; transition: background .15s, color .15s; width: auto; }
.lz-btn:hover, .g-btn:hover, .btn:hover, .btn-filled:hover, .btn-primary:hover, .cp-azione:hover, .acc-btn:hover, .action-btn:hover { background: #fff; color: var(--ink); opacity: 1; }
.lz-btn.ghost, .g-btn.secondary, .g-btn:not(.primary), .btn.ghost, .btn-outline, .cp-azione.ghost, .acc-btn.ghost, .secondary { background: #fff; color: var(--ink); border-color: var(--ink); }
.lz-btn.ghost:hover, .g-btn.secondary:hover, .g-btn:not(.primary):hover, .btn.ghost:hover, .btn-outline:hover, .cp-azione.ghost:hover, .acc-btn.ghost:hover, .secondary:hover { background: var(--ink); color: #fff; }
/* 29/10/2026: i pulsanti pieni del vecchio foglio (innovhub.css, due classi) avevano testo grigio o nero sul fondo
   nero (preventivo, portale dell'impresa: «Chat del cantiere» non si leggeva). Testo bianco; «Carica foto» centrato. */
.action-btn.primary, .action-btn.photo, .action-btn.sal, .action-btn.doc, .action-btn.chat, .action-btn.whatsapp { color: #fff; border-color: var(--ink); }
.action-btn.primary:hover, .action-btn.photo:hover, .action-btn.sal:hover, .action-btn.doc:hover, .action-btn.chat:hover, .action-btn.whatsapp:hover { color: var(--ink); }
.main label.action-btn, label.action-btn { display: inline-flex; margin: 0; font: 400 11px/1.2 var(--sans); letter-spacing: .14em; color: #fff; }
.main label.action-btn:hover, label.action-btn:hover { color: var(--ink); }
.lz-btn.sm, .g-btn.sm, .btn.sm, .acc-btn.sm { min-height: 36px; padding: 0 16px; font-size: 10px; }
.lz-btn.xs { min-height: 32px; padding: 0 12px; font-size: 10px; }
.lz-btn.blocco { display: flex; width: 100%; margin-bottom: 8px; }
.lz-btn.attivo { background: var(--ink); color: #fff; }
.lz-btn svg, .g-btn svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 1.5; }
.btn-link { background: none; border: 0; color: var(--ink); text-decoration: underline; text-underline-offset: 4px; min-height: 0; padding: 8px 0; width: auto; text-transform: none; letter-spacing: 0; font-size: 13px; }

.lz-tag, .pill, .g-chip, .acc-chip, .acc-tag, .princ, .accst, .phase-pill { display: inline-block; padding: 3px 8px; border: 1px solid var(--ink); background: #fff; color: var(--ink); font: 400 9.5px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .12em; white-space: nowrap; }
.lz-tag.pieno, .g-chip.ok, .g-chip:not(.neutral):not(.soft):not(.ok), .acc-chip { background: var(--ink); color: #fff; }
.g-chip.neutral, .g-chip.soft, .lz-tag.vuoto, .acc-tag.off, .pill { background: #fff; color: var(--muted); border-color: var(--linea); }
.lz-tag.pieno { border-color: var(--ink); }

.lz-q { display: inline-block; width: 8px; height: 8px; flex: none; background: var(--ink); }
.lz-q.vuoto { background: #fff !important; border: 1px solid var(--ink); }
.lz-q.pieno { background: var(--ink) !important; }

.lz-riga-azioni { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; margin-top: 16px; }
.lz-riga-azioni form, .sp-voce-az form, .rb-azioni form, .cd-azioni form { margin: 0; }

.lz-avviso { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 14px 18px; border: 1px solid var(--ink); flex-wrap: wrap; }
.lz-avviso p { margin: 0; }
.lz-avviso form { margin: 0; }

/* ---------- 4. Campi ---------- */
.lz-campo { margin: 0 0 18px; min-width: 0; }
.lz-campo > label, .lz-campo > .lz-label { display: block; margin: 0 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
input[type=text], input[type=search], input[type=email], input[type=number], input[type=date], input[type=time], input[type=password], input[type=tel], input[type=url], select, textarea { font-family: var(--sans); }
.lz-campo input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]), .lz-campo select, .lz-campo textarea,
.lz-modal input:not([type=checkbox]):not([type=radio]):not([type=file]):not([type=hidden]), .lz-modal select, .lz-modal textarea,
.main input[type=text], .main input[type=search], .main input[type=email], .main input[type=number], .main input[type=date], .main input[type=time], .main input[type=password], .main select, .main textarea,
.form-control, .pill-input {
  display: block; width: 100%; min-height: 44px; margin: 0; padding: 10px 12px; background: #fff; color: var(--ink);
  border: 1px solid var(--bordo-campo); font: 300 16px/1.4 var(--sans); text-align: left; letter-spacing: 0; }
.lz-campo textarea, .lz-modal textarea, .main textarea { min-height: 96px; resize: vertical; line-height: 1.5; }
.lz-campo input:focus, .lz-campo select:focus, .lz-campo textarea:focus, .lz-modal input:focus, .lz-modal select:focus, .lz-modal textarea:focus,
.main input:focus, .main select:focus, .main textarea:focus, .form-control:focus, .pill-input:focus { border-color: var(--ink); outline: 2px solid var(--ink); outline-offset: 1px; box-shadow: none; }
::placeholder { color: #767676; opacity: 1; }
select, .lz-campo select, .lz-modal select, .main select, select.form-control {
  -webkit-appearance: none; appearance: none; padding-right: 36px;
  background: #fff url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2 4l4 4 4-4' fill='none' stroke='%23111' stroke-width='1.3'/%3E%3C/svg%3E") no-repeat right 12px center / 12px; }
input[type=checkbox], input[type=radio] { width: 18px; height: 18px; accent-color: #111; flex: none; margin: 0; }
input[type=file] { font: 300 13px var(--sans); max-width: 100%; }
.lz-spunta { display: flex; align-items: center; gap: 10px; margin: 6px 0 14px; font-size: 13px; color: var(--text); cursor: pointer; }
.lz-cols { display: grid; column-gap: 16px; }
.lz-cols.due { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.lz-cols.tre { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.lz-cols.quattro { grid-template-columns: repeat(4, minmax(0, 1fr)); }
.lz-cols.tre-larga { grid-template-columns: 1.5fr 1fr 1fr; }
.lz-cols .doppia { grid-column: span 2; }
.lz-campo.stretto { max-width: 340px; }

/* ---------- 5. Schede, scelte, linguette, menu ---------- */
.lz-tabs { display: flex; gap: 28px; flex-wrap: wrap; }
.lz-tabs a { display: inline-block; padding: 14px 0 12px; border-bottom: 2px solid transparent; font: 400 11px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: none; color: var(--muted); }
.lz-tabs a:hover { color: var(--ink); }
.lz-tabs a.on, .lz-tabs a[aria-current] { color: var(--ink); border-bottom-color: var(--ink); }
.lz-scelta, .g-seg, .filt { display: inline-flex; border: 1px solid var(--ink); background: #fff; }
.lz-scelta a, .lz-scelta button, .g-seg a, .g-seg button, .filt a { display: inline-flex; align-items: center; min-height: 36px; padding: 0 16px; background: #fff; color: var(--ink); border: 0; font: 400 10px/1 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: none; cursor: pointer; }
.lz-scelta a.on, .lz-scelta button.on, .g-seg a.on, .g-seg button.on, .filt a.on { background: var(--ink); color: #fff; }

.lz-menu { position: relative; }
.lz-menu-lista { display: none; position: absolute; right: 0; top: calc(100% + 4px); min-width: 230px; padding: 10px 0; background: #fff; border: 1px solid var(--ink); z-index: 70; text-align: left; }
.lz-menu.aperto .lz-menu-lista { display: block; }
.lz-menu-lista .lz-label { display: block; padding: 4px 16px 8px; }
.lz-menu-lista a, .lz-menu-lista button { display: block; width: 100%; padding: 11px 16px; background: none; border: 0; text-align: left; font: 300 14px/1.3 var(--sans); color: var(--ink); text-decoration: none; cursor: pointer; }
.lz-menu-lista a:hover, .lz-menu-lista button:hover { background: var(--velo); }
.lz-menu-lista .on { font-weight: 500; }
.lz-menu-lista hr { border: 0; border-top: 1px solid var(--linea); margin: 6px 0; }

/* ---------- 6. Finestre ---------- */
.lz-modal, .ntf-modal, .day-modal, .rub-modal, .acc-modal, .tl-modal, .tlx-modal, .pp-modal { position: fixed; inset: 0; z-index: 100; display: none; align-items: flex-start; justify-content: center; padding: 6vh 16px; background: rgba(255,255,255,.9); overflow-y: auto; }
.lz-modal.open, .lz-modal.show, .ntf-modal.open, .day-modal.open, .rub-modal.open, .acc-modal.show, .tl-modal.show, .tlx-modal.open, .tlx-modal.show, .pp-modal.show { display: flex; }
.lz-modal-card { position: relative; width: min(520px, 100%); margin: 0 auto; padding: 28px; background: #fff; border: 1px solid var(--ink); }
.lz-modal-card.wide { width: min(780px, 100%); }
.lz-modal-card.stretta { width: min(440px, 100%); }
.lz-modal-testa { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin: 0 0 22px; padding-bottom: 14px; border-bottom: 1px solid var(--ink); }
.lz-modal-testa h2 { margin: 0; font: 300 24px/1.2 var(--sans); }
.lz-modal-testa p { margin: 6px 0 0; font-size: 13px; color: var(--muted); }
.lz-modal-piede { display: flex; gap: 8px; align-items: center; justify-content: flex-end; margin-top: 22px; }
.lz-spazio { flex: 1; }
.lz-x { flex: none; width: 36px; height: 36px; padding: 0; background: #fff; border: 1px solid var(--ink); color: var(--ink); font: 300 22px/1 var(--sans); cursor: pointer; }
.lz-x:hover { background: var(--ink); color: #fff; }
.lz-x.flot { position: absolute; top: 12px; right: 12px; z-index: 2; }
.rub-modal-card, .ntf-card, .day-modal-card, .acc-card, .tl-mcard, .tlx-card, .pp-mcard { position: relative; width: min(640px, 100%); margin: 0 auto; background: #fff; border: 1px solid var(--ink); padding: 24px; }
.rub-modal-body { padding: 0; }
.rub-modal-x { position: absolute; top: 12px; right: 12px; width: 36px; height: 36px; background: #fff; border: 1px solid var(--ink); font-size: 20px; cursor: pointer; }
.rub-modal .lz-modal-card, #rubModalBody { padding: 0; }
#rubModalBody h2 { margin: 0 40px 4px 0; font: 300 26px/1.2 var(--sans); }
#rubModalBody .sub { margin: 0 0 18px; color: var(--muted); font-size: 13px; }
#rubModalBody .grid, .grid.cols2, .grid.cols3 { display: grid; gap: 0 16px; }
#rubModalBody .cols2, .grid.cols2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
#rubModalBody .cols3, .grid.cols3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
#rubModalBody label { display: block; margin: 12px 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
#rubModalBody input:not([type=checkbox]):not([type=hidden]), #rubModalBody select, #rubModalBody textarea { width: 100%; }
#rubModalBody .btn.accent { background: var(--ink); color: #fff; }
.rep-row { margin-bottom: 8px; }
.rep-grid { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; }
.rep-grid input, .rep-grid select { margin: 0; flex: 1 1 140px; min-width: 0; width: auto; }
.rep-rm, .rep-add { min-height: 44px; padding: 0 14px; background: #fff; color: var(--ink); border: 1px solid var(--ink); font: 400 11px var(--sans); text-transform: uppercase; letter-spacing: .1em; cursor: pointer; }
.rep-rm:hover, .rep-add:hover { background: var(--ink); color: #fff; }
.rep-add { margin-top: 6px; }
.sch-sec { margin-top: 22px; padding-top: 16px; border-top: 1px solid var(--linea); }
.sch-sec h3 { margin: 0 0 10px; font: 400 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.sch-appart { display: flex; gap: 18px; flex-wrap: wrap; }
.sch-appart label { display: flex !important; align-items: center; gap: 8px; margin: 0 !important; font: 300 14px var(--sans) !important; text-transform: none !important; letter-spacing: 0 !important; color: var(--text) !important; }
.notarow { display: flex; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--linea); }
.nota-data { font-size: 11px; color: var(--muted); }

/* ---------- 7. Guscio dell'app (menù in alto su PC, barra in basso su telefono) ---------- */
body.sb { display: block; background: #fff; }
body.sb .g-app { display: block; width: 100%; max-width: none; min-height: 100vh; margin: 0; padding: 0; }
body.sb .g-app > .g-side { position: sticky; top: 0; left: auto; bottom: auto; transform: none; width: auto; height: auto; min-height: var(--altezza-testata); display: flex; flex-direction: row; align-items: stretch; gap: 28px; padding: 0 var(--gutter); background: #fff; border: 0; border-bottom: 1px solid var(--ink); overflow: visible; z-index: 60; }
body.sb .g-brand { display: flex; align-items: center; margin: 0; padding: 0; height: auto; flex: none; }
.pz-wm { font: 500 16px/1 var(--sans); letter-spacing: .44em; text-transform: uppercase; text-decoration: none; color: var(--ink); margin-right: -.44em; }
body.sb .g-collapse { display: none; }
body.sb .g-nav { display: flex; flex-direction: row; gap: 0; flex: 1; min-width: 0; overflow-x: auto; scrollbar-width: none; }
body.sb .g-nav::-webkit-scrollbar { display: none; }
body.sb .g-nav a { display: flex; align-items: center; height: auto; margin: 0; padding: 0 13px; border: 0; border-bottom: 2px solid transparent; background: none; color: var(--ink); font: 400 10.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .13em; text-decoration: none; white-space: nowrap; }
body.sb .g-nav a svg { display: none; }
body.sb .g-nav a .lbl { flex: none; }
body.sb .g-nav a:hover { background: none; border-bottom-color: var(--linea); }
body.sb .g-nav a.on { background: none; font-weight: 500; border-bottom-color: var(--ink); }
body.sb .g-nav .pz-solo-menu { display: none; }
body.sb .g-badge { margin-left: 6px; min-width: 18px; height: 18px; padding: 0 5px; display: inline-grid; place-items: center; background: var(--ink); color: #fff; font: 500 10px/1 var(--sans); }
body.sb .pz-dx { display: flex; align-items: center; gap: 14px; margin-left: auto; flex: none; }
body.sb .g-bell { position: relative; top: auto; right: auto; width: 40px; height: 40px; display: grid; place-items: center; background: none; border: 0; text-decoration: none; }
body.sb .g-bell svg { width: 19px; height: 19px; stroke: var(--ink); fill: none; stroke-width: 1.3; }
body.sb .g-bell .cnt { position: absolute; top: 2px; right: 0; min-width: 17px; height: 17px; padding: 0 4px; display: grid; place-items: center; background: var(--ink); color: #fff; font: 500 10px/1 var(--sans); border: 0; }
body.sb .g-bell:hover { background: var(--velo); }
body.sb .g-foot { position: relative; display: flex; align-items: center; gap: 10px; margin: 0; padding: 0; border: 0; cursor: pointer; white-space: nowrap; }
body.sb .g-foot .av { width: 30px; height: 30px; display: grid; place-items: center; background: var(--ink); color: #fff; font: 500 12px/1 var(--sans); overflow: hidden; }
body.sb .g-foot .av img { width: 100%; height: 100%; object-fit: cover; }
body.sb .g-foot .nm { font: 400 12px/1.2 var(--sans); color: var(--ink); }
body.sb .g-foot .rl { display: none; }
body.sb .g-usermenu { position: absolute; left: auto; right: 0; top: calc(100% + 6px); bottom: auto; min-width: 200px; display: none; padding: 8px 0; background: #fff; border: 1px solid var(--ink); z-index: 90; }
body.sb .g-foot { align-self: center; }
body.sb .g-foot.open .g-usermenu { display: block; }
body.sb .g-usermenu a, body.sb .g-usermenu button { display: block; width: 100%; padding: 11px 16px; background: none; border: 0; color: var(--ink); font: 300 14px/1.2 var(--sans); text-align: left; text-decoration: none; cursor: pointer; }
body.sb .g-usermenu a:hover, body.sb .g-usermenu button:hover { background: var(--velo); }

body.sb .g-app > .main { display: flex; flex-direction: column; gap: 32px; width: 100%; max-width: 1320px; margin: 0 auto; padding: 40px var(--gutter) 120px; overflow: visible; min-width: 0; }
body.sb .g-app > .main > * { min-width: 0; }
.main h1 { color: var(--ink); }
.main h2 { color: var(--ink); }

.msgs { display: flex; flex-direction: column; gap: 8px; }
.msg { padding: 12px 16px; border: 1px solid var(--ink); background: #fff; font-size: 13px; }
.msg.error, .msg.warning { background: var(--ink); color: #fff; }

.pz-tabbar { display: none; }
.sq-nav-overlay { display: none !important; }

/* ---------- 8. Assistente a comparsa e notifiche ---------- */
.g-fab { position: fixed; right: 24px; bottom: 24px; width: 54px; height: 54px; display: grid; place-items: center; background: var(--ink); border: 1px solid var(--ink); cursor: pointer; z-index: 80; }
.g-fab svg { width: 22px; height: 22px; stroke: #fff; fill: none; stroke-width: 1.3; }
.g-fab .fb { position: absolute; right: calc(100% + 8px); top: 50%; transform: translateY(-50%); padding: 6px 10px; background: #fff; border: 1px solid var(--ink); color: var(--ink); font: 400 9px/1 var(--sans); text-transform: uppercase; letter-spacing: .14em; white-space: nowrap; }
/* 2/11/2026 (giro del flusso): sotto i 1600 px la scritta «Assistente» copriva i pulsanti a destra
   (Revoca negli Accessi, l'anteprima del cartiglio): compare solo passandoci sopra */
@media (max-width: 1599px) { .g-fab .fb { opacity: 0; pointer-events: none; transition: opacity .15s; } .g-fab:hover .fb, .g-fab:focus-visible .fb { opacity: 1; } }
.sq-chat { position: fixed; right: 24px; bottom: 90px; width: 380px; max-width: calc(100vw - 32px); display: none; flex-direction: column; background: #fff; border: 1px solid var(--ink); z-index: 85; }
.sq-chat.open { display: flex; }
.sq-chat-head { display: flex; align-items: center; gap: 10px; padding: 12px 14px; background: var(--ink); color: #fff; }
.sq-chat-avatar { width: 30px; height: 30px; display: grid; place-items: center; border: 1px solid #fff; flex: none; }
.sq-chat-avatar svg { width: 16px; height: 16px; stroke: #fff; fill: none; stroke-width: 1.3; }
.sq-chat-name { font: 400 11px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.sq-chat-ctx { font-size: 11px; color: #d0d0d0; }
.sq-chat-cfg { margin-left: auto; width: 32px; height: 32px; display: grid; place-items: center; color: #fff; text-decoration: none; }
.sq-chat-cfg + .sq-chat-cfg { margin-left: 0; }
.sq-chat-cfg svg { width: 16px; height: 16px; stroke: currentColor; fill: none; stroke-width: 1.3; }
.sq-chat-x { width: 32px; height: 32px; background: none; border: 1px solid #fff; color: #fff; font-size: 18px; cursor: pointer; }
.sq-chat-body { padding: 14px; max-height: 380px; overflow-y: auto; display: flex; flex-direction: column; gap: 10px; }
.sq-chat-bubble { max-width: 90%; align-self: flex-start; padding: 10px 12px; border: 1px solid var(--linea); font-size: 13px; line-height: 1.5; }
.sq-chat-bubble.me { align-self: flex-end; background: var(--ink); color: #fff; border-color: var(--ink); }
.sq-chat-bubble ul { margin: 6px 0; padding-left: 18px; }
.sq-dots { display: inline-flex; gap: 4px; align-items: center; height: 12px; }
.sq-dots i { width: 6px; height: 6px; background: var(--ink); animation: sqdot 1s infinite; }
.sq-dots i:nth-child(2) { animation-delay: .18s; } .sq-dots i:nth-child(3) { animation-delay: .36s; }
@keyframes sqdot { 0%, 100% { opacity: .25; } 45% { opacity: 1; } }
.sq-chat-azioni { display: flex; flex-direction: column; gap: 6px; align-self: flex-start; }
.sq-az { display: flex; align-items: center; gap: 8px; padding: 6px 10px; border: 1px solid var(--ink); font-size: 12px; }
.sq-az svg { width: 13px; height: 13px; stroke: currentColor; }
.sq-az-refresh, .pz-azione-chat { min-height: 32px; padding: 0 12px; background: #fff; border: 1px solid var(--ink); color: var(--ink); font: 400 10px var(--sans); text-transform: uppercase; letter-spacing: .12em; cursor: pointer; }
.sq-az-refresh:hover, .pz-azione-chat:hover { background: var(--ink); color: #fff; }
.sq-chat-sugg { display: flex; flex-direction: column; gap: 6px; margin-top: 10px; }
.sq-chat-sugg button { text-align: left; padding: 10px 12px; background: #fff; border: 1px solid var(--linea); color: var(--ink); font: 300 13px var(--sans); cursor: pointer; }
.sq-chat-sugg button:hover { border-color: var(--ink); }
.sq-chat-input { display: flex; gap: 8px; padding: 12px 14px; border-top: 1px solid var(--linea); }
.sq-chat-input input { flex: 1; min-width: 0; min-height: 40px; margin: 0; padding: 8px 12px; border: 1px solid var(--bordo-campo); background: #fff; font: 300 16px var(--sans); }
.sq-chat-input button { width: 40px; height: 40px; background: var(--ink); border: 0; cursor: pointer; display: grid; place-items: center; flex: none; }
.sq-chat-input button svg { width: 15px; height: 15px; stroke: #fff; fill: none; stroke-width: 1.6; }

.ntf-modal { align-items: flex-start; justify-content: flex-end; padding: 70px 24px 24px; background: rgba(255,255,255,.6); }
.ntf-card { width: min(420px, 100%); margin: 0; padding: 0; display: flex; flex-direction: column; max-height: min(72vh, 640px); }
.ntf-head { display: flex; justify-content: space-between; align-items: center; gap: 10px; padding: 14px 18px; border-bottom: 1px solid var(--ink); }
.ntf-title { font: 400 11px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.ntf-actions { display: flex; align-items: center; gap: 8px; }
.ntf-all { min-height: 32px; padding: 0 10px; background: #fff; border: 1px solid var(--ink); color: var(--ink); font: 400 9.5px var(--sans); text-transform: uppercase; letter-spacing: .1em; cursor: pointer; }
.ntf-all:hover { background: var(--ink); color: #fff; }
.ntf-close { width: 32px; height: 32px; background: #fff; border: 1px solid var(--ink); font-size: 18px; cursor: pointer; }
.ntf-list { overflow-y: auto; flex: 1; }
.ntf-row { display: flex; align-items: flex-start; gap: 12px; padding: 14px 18px; border-bottom: 1px solid var(--linea); transition: opacity .2s; }
.ntf-row.ntf-out { opacity: 0; }
.ntf-dot { width: 8px; height: 8px; margin-top: 6px; flex: none; background: var(--ink); }
.ntf-body { flex: 1; min-width: 0; text-decoration: none; color: inherit; }
.ntf-t { display: block; font: 400 13px/1.4 var(--sans); }
.ntf-s { display: block; margin-top: 2px; font-size: 12px; color: var(--muted); }
.ntf-x { width: 32px; height: 32px; display: grid; place-items: center; background: #fff; border: 1px solid var(--ink); cursor: pointer; flex: none; }
.ntf-x svg { width: 13px; height: 13px; stroke: var(--ink); fill: none; stroke-width: 1.6; }
.ntf-x:hover { background: var(--ink); } .ntf-x:hover svg { stroke: #fff; }
.ntf-empty { display: flex; align-items: center; justify-content: center; gap: 10px; padding: 32px 16px; color: var(--muted); font-size: 13px; }
.ntf-empty svg { width: 20px; height: 20px; stroke: var(--muted); fill: none; }
.ntf-foot { padding: 12px 18px; border-top: 1px solid var(--linea); }
.ntf-foot a { font: 400 10.5px var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--ink); }

/* pagina caricata dentro il pannello laterale: niente cornice */
html.in-pannello body.sb .g-app > .g-side, html.in-pannello .pz-tabbar, html.in-pannello .g-fab, html.in-pannello .sq-chat, html.in-pannello .pz-briciole { display: none !important; }
html.in-pannello body.sb .g-app > .main { padding: 24px 20px 40px; max-width: none; }

/* ---------- 9. Dove sono (briciole) ---------- */
.pz-briciole { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; padding: 0 0 14px; margin: -8px 0 0; border-bottom: 1px solid var(--linea); font: 400 10px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.pz-bric-via, .pz-bric-sez { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.pz-briciole a { text-decoration: none; color: var(--muted); } .pz-briciole a:hover { color: var(--ink); text-decoration: underline; }
.pz-bric-via a:last-of-type { color: var(--ink); }
.pz-bric-sez a.on { color: var(--ink); border-bottom: 1px solid var(--ink); }

/* ---------- 10. Scheda del cantiere ---------- */
.cd-barra { display: flex; flex-direction: column; gap: 20px; }
.cd-azioni { display: flex; flex-wrap: wrap; gap: 8px; justify-content: flex-end; align-items: center; }
.cd-fasi { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(120px, 1fr)); gap: 2px; }
.cd-fase { display: flex; flex-direction: column; justify-content: space-between; gap: 10px; min-height: 68px; padding: 12px 14px; border: 1px solid var(--linea); text-decoration: none; color: var(--muted); }
.cd-fase-n { font: 400 10px/1 var(--sans); letter-spacing: .16em; }
.cd-fase-t { font: 400 13px/1.25 var(--sans); }
.cd-fase.fatta { background: var(--ink); border-color: var(--ink); color: #fff; }
.cd-fase.fatta .cd-fase-n { color: #d6d6d6; }
.cd-fase.corso { border: 2px solid var(--ink); padding: 11px 13px; color: var(--ink); font-weight: 500; }
.cd-fase.da-fare:hover { border-color: var(--ink); color: var(--ink); }

.cd-linguette { display: flex; align-items: center; gap: 20px; flex-wrap: wrap; border-bottom: 1px solid var(--linea); }
.cd-suggerimento { display: none; margin-left: auto; font-size: 12px; color: var(--muted); }
.cd-linguette.modifica .cd-suggerimento { display: inline; }
.cd-modifica { margin-left: auto; margin-bottom: 6px; }
.cd-linguette.modifica .cd-modifica { margin-left: 0; }

.cd-schede { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; align-items: start; }
.cd-s { position: relative; min-width: 0; padding: 26px; background: #fff; border: 1px solid var(--linea); }
.cd-s.larga { grid-column: 1 / -1; }
.cd-s-testa { display: flex; justify-content: space-between; align-items: flex-start; gap: 16px; margin: 0 0 18px; }
.cd-s.condizionale .cd-s-testa { padding-right: 30px; }
.cd-s-testa h2 { margin: 0; font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.cd-s-testa p { margin: 4px 0 0; font-size: 12px; color: var(--muted); }
.cd-s-nascondi { position: absolute; top: 10px; right: 10px; width: 28px; height: 28px; background: #fff; border: 1px solid var(--linea); color: var(--muted); font-size: 16px; line-height: 1; cursor: pointer; }
.cd-s-nascondi:hover { border-color: var(--ink); color: var(--ink); }
.cd-s-attrezzi { display: none; position: absolute; right: 8px; bottom: 8px; gap: 2px; }
.cd-schede.modifica .cd-s-attrezzi { display: flex; }
.cd-schede.modifica .cd-s-nascondi { display: none; }
.cd-s-attrezzi button { width: 32px; height: 32px; background: #fff; border: 1px solid var(--ink); font: 400 14px/1 var(--sans); cursor: pointer; }
.cd-s-attrezzi button:hover { background: var(--ink); color: #fff; }
.cd-schede.modifica .cd-s { outline: 1px dashed var(--ink); outline-offset: -6px; cursor: grab; padding-bottom: 46px; }
.cd-s.in-volo { opacity: .35; }
.cd-scorciatoie { list-style: none; margin: 0 0 16px; padding: 0; display: grid; gap: 2px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
.cd-scorciatoie a { display: flex; align-items: flex-end; min-height: 84px; padding: 14px; border: 1px solid var(--linea); text-decoration: none; font: 400 14px/1.25 var(--sans); position: relative; }
.cd-scorciatoie a:hover { border-color: var(--ink); background: var(--velo); }
.cd-scorciatoie .n { position: absolute; top: 12px; left: 14px; font: 400 10px/1 var(--sans); letter-spacing: .16em; color: var(--muted); }
.cd-riga { display: flex; align-items: baseline; gap: 10px; margin: 0; padding: 10px 0; border-bottom: 1px solid var(--linea); font-size: 13px; }
.cd-riga:last-child { border-bottom: 0; }
.cd-riga .lz-q { position: relative; top: -1px; }
.cd-riga em { margin-left: auto; font-style: normal; font-size: 11px; color: var(--muted); white-space: nowrap; }
.cd-riga.tenue { color: var(--muted); }
.cd-testo { margin: 0 0 12px; font-size: 13.5px; line-height: 1.6; }
.cd-voce { padding: 10px 0; border-bottom: 1px solid var(--linea); }
.cd-voce-t { margin: 0; font: 400 14px/1.35 var(--sans); }
.cd-voce-m { margin: 3px 0 0; font-size: 12px; color: var(--muted); }
.cd-foto { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }
.cd-foto a { display: block; aspect-ratio: 4 / 3; overflow: hidden; background: var(--velo); }
.cd-foto img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cd-dati { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 20px; margin: 0; }
.cd-dati > div { padding: 10px 0; border-bottom: 1px solid var(--linea); min-width: 0; }
.cd-dati dt { font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.cd-dati dt label { font: inherit; letter-spacing: inherit; text-transform: inherit; color: inherit; }
.cd-dati dd { margin: 4px 0 0; font-size: 14px; overflow-wrap: anywhere; }
.cd-dati form { margin: 0; }
.cd-dati select { min-height: 38px; font-size: 14px; padding-top: 6px; padding-bottom: 6px; }
.cd-evento { display: flex; align-items: center; gap: 10px; width: 100%; padding: 12px 0; background: none; border: 0; border-bottom: 1px solid var(--linea); text-align: left; font: 300 14px/1.35 var(--sans); color: var(--ink); cursor: pointer; }
.cd-evento:hover { background: var(--velo); }
.cd-evento .t { flex: 1; min-width: 0; } .cd-evento small { color: var(--muted); font-size: 12px; }
.cd-evento .m { font-size: 12px; color: var(--muted); white-space: nowrap; }
.cd-nuovo { margin-top: 14px; }
.cd-nuovo summary { cursor: pointer; font: 400 10.5px/1.4 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: underline; text-underline-offset: 4px; list-style: none; }
.cd-nuovo summary::-webkit-details-marker { display: none; }
.cd-nuovo form { margin-top: 14px; }
.cd-aggiungi { position: relative; }
.cd-aggiungi-btn { display: flex; align-items: center; gap: 18px; width: 100%; padding: 20px 24px; background: #fff; border: 1px solid var(--ink); text-align: left; color: var(--ink); font: 300 14px/1.4 var(--sans); cursor: pointer; }
.cd-aggiungi-btn:hover { background: var(--velo); }
.cd-aggiungi-btn .piu { font: 200 30px/1 var(--sans); }
.cd-aggiungi-btn strong { display: block; font-weight: 500; font-size: 11px; text-transform: uppercase; letter-spacing: .14em; }
.cd-aggiungi-btn small { display: block; margin-top: 3px; font-size: 12px; color: var(--muted); }
.cd-aggiungi-lista { display: none; position: absolute; left: 0; top: calc(100% + 4px); min-width: 260px; padding: 8px 0; background: #fff; border: 1px solid var(--ink); z-index: 30; }
.cd-aggiungi-lista.aperto { display: block; }
.cd-aggiungi-lista button { display: block; width: 100%; padding: 11px 16px; background: none; border: 0; text-align: left; font: 300 14px var(--sans); cursor: pointer; }
.cd-aggiungi-lista button:hover { background: var(--velo); }
.cd-aggiungi-lista .lz-nota { padding: 4px 16px; }

/* immagine di apertura e le quattro sezioni */
.pz-pj { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 2px; }
.pz-pj-l { min-width: 0; }
.pz-hero { position: relative; aspect-ratio: 4 / 3; background: var(--velo); overflow: hidden; display: grid; place-items: center; }
.pz-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pz-hero.vuoto { border: 1px solid var(--linea); }
.pz-tag { font: 400 10px/1.4 var(--sans); text-transform: uppercase; letter-spacing: .16em; color: var(--muted); text-align: center; padding: 0 16px; }
/* copertina scelta dallo studio (21/10/2026) */
.pz-hero-scegli { position: absolute; inset: 0; z-index: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px; background: none; border: 0; cursor: pointer; }
.pz-hero-scegli:hover .pz-tag, .pz-hero-scegli:focus-visible .pz-tag { color: var(--ink); }
.pz-hero-scegli .pz-piu { font: 300 34px/1 var(--sans); color: var(--ink); }
.pz-hero-scegli .pz-tag-o { letter-spacing: .12em; }
.pz-cambia { position: absolute; top: 12px; right: 12px; z-index: 2; padding: 9px 12px; background: #fff; border: 1px solid var(--ink); font: 400 10px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; cursor: pointer; }
.pz-dlg { margin: auto; width: min(560px, calc(100vw - 32px)); max-height: calc(100vh - 48px); padding: 20px; border: 1px solid var(--ink); background: #fff; color: var(--ink); }
.pz-dlg::backdrop { background: rgba(0, 0, 0, .45); }
.pz-dlg-testa { display: flex; justify-content: space-between; align-items: center; margin-bottom: 16px; font: 400 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.pz-dlg-x { background: none; border: 0; font-size: 24px; line-height: 1; cursor: pointer; padding: 0 4px; }
.pz-dlg-tel { display: block; padding: 14px 16px; background: var(--ink); color: #fff; text-align: center; font: 400 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; cursor: pointer; }
.pz-dlg-tel span { color: #fff; }
.pz-dlg-tel .attesa, .pz-dlg-tel.invio .si { display: none; }
.pz-dlg-tel.invio .attesa { display: inline; }
.pz-dlg-sotto { margin: 20px 0 10px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; color: var(--muted); }
.pz-dlg-griglia { display: grid; grid-template-columns: repeat(auto-fill, minmax(110px, 1fr)); gap: 4px; }
.pz-dlg-griglia button { padding: 0; border: 2px solid transparent; background: var(--velo); aspect-ratio: 4 / 3; cursor: pointer; }
.pz-dlg-griglia button.sel { border-color: var(--ink); }
.pz-dlg-griglia img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pz-dlg-auto { margin-top: 12px; background: none; border: 0; padding: 0; text-decoration: underline; font: 400 12px/1.4 var(--sans); cursor: pointer; }
.pz-dlg-vuoto { font: 400 13px/1.5 var(--sans); color: var(--muted); }
.pz-bk { position: absolute; top: 12px; left: 12px; width: 40px; height: 40px; display: grid; place-items: center; background: #fff; border: 1px solid var(--ink); z-index: 2; }
.pz-bk svg { width: 18px; height: 18px; stroke: var(--ink); fill: none; stroke-width: 1.4; }
.pz-badge { position: absolute; left: 12px; bottom: 12px; padding: 5px 10px; background: #fff; border: 1px solid var(--ink); font: 400 10px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; z-index: 2; }
.pz-cnt { position: absolute; right: 12px; bottom: 12px; padding: 5px 10px; background: var(--ink); color: #fff; font: 400 10px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .12em; z-index: 2; }
.pz-head { padding: 24px 4px 0; }
.pz-head h1 { margin: 0; font: 300 clamp(26px, 3vw, 36px)/1.15 var(--sans); }
.pz-head p { margin: 8px 0 0; font-size: 13.5px; color: var(--muted); }
.pz-head .st { margin-top: 12px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.pz-pj-r { min-width: 0; padding: 0 0 0 28px; }
.pz-tabs { display: flex; gap: 0; border-bottom: 1px solid var(--ink); }
.pz-tabs button { flex: 1; min-height: 48px; padding: 0 12px; background: #fff; border: 0; color: var(--muted); font: 400 10.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .14em; cursor: pointer; }
.pz-tabs button:hover { color: var(--ink); }
.pz-tabs button.on { background: var(--ink); color: #fff; }
.pz-rows { display: flex; flex-direction: column; }
.pz-row { display: flex; align-items: center; justify-content: space-between; gap: 18px; width: 100%; padding: 16px 4px; background: none; border: 0; border-bottom: 1px solid var(--linea); text-align: left; text-decoration: none; color: var(--ink); cursor: pointer; font: inherit; }
.pz-row:hover { background: var(--velo); }
.pz-row .l { font: 400 15px/1.3 var(--sans); }
.pz-row .d { margin-top: 3px; font-size: 12.5px; color: var(--muted); }
.pz-row .r { display: flex; align-items: center; gap: 10px; flex: none; font: 400 10px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .12em; color: var(--muted); text-align: right; }
.pz-row .r.ok, .pz-row .r.al { color: var(--ink); }
.pz-row .r svg { width: 14px; height: 14px; stroke: currentColor; fill: none; stroke-width: 1.4; }
.pz-pannello-velo { position: fixed; inset: 0; background: rgba(255,255,255,.7); z-index: 110; display: none; }
.pz-pannello-velo.on { display: block; }
.pz-pannello { position: fixed; top: 0; right: 0; bottom: 0; width: min(760px, 92vw); background: #fff; border-left: 1px solid var(--ink); z-index: 120; display: none; flex-direction: column; }
.pz-pannello.on { display: flex; }
.pz-pannello-testa { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 18px; border-bottom: 1px solid var(--ink); }
.pz-pannello-testa .t { font: 400 11px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.pz-pannello-testa a, .pz-pannello-testa button { margin-left: 14px; background: none; border: 0; padding: 0; color: var(--ink); font: 400 10.5px var(--sans); text-transform: uppercase; letter-spacing: .12em; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
.pz-pannello iframe { flex: 1; width: 100%; border: 0; background: #fff; }

/* ---------- 11. Scheda progetto ---------- */
.sp-cartella { min-width: 0; }
.sp-linguette { display: flex; flex-wrap: wrap; align-items: stretch; border-bottom: 1px solid var(--ink); }
.sp-linguette button { min-height: 48px; padding: 0 24px; background: #fff; border: 0; color: var(--muted); font: 400 10.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .14em; cursor: pointer; }
.sp-linguette button:hover { color: var(--ink); }
.sp-linguette button.on { background: var(--ink); color: #fff; }
.sp-conteggio { margin-left: auto; align-self: center; font-size: 12px; color: var(--muted); }
.sp-pane { padding: 32px 0 0; }
.sp-blocco { min-width: 0; margin: 0 0 40px; padding: 0; border: 0; }
.sp-blocco > legend { float: left; width: 100%; display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 0 0 12px; margin: 0 0 22px; border-bottom: 1px solid var(--ink); font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.sp-blocco > legend + * { clear: both; }
.sp-blocco-testa { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 0 0 12px; margin-bottom: 8px; border-bottom: 1px solid var(--ink); }
.sp-blocco-testa h2 { margin: 0; font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.sp-matita { padding: 0; background: none; border: 0; color: var(--ink); font: 400 10.5px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
body.editing .sp-matita { visibility: hidden; }
.sp-calcolato { display: flex; align-items: center; min-height: 44px; padding: 0 12px; background: var(--velo); border: 1px solid var(--linea); color: var(--muted); font-size: 15px; }
.sp-mappa { height: 240px; margin-top: 4px; border: 1px solid var(--linea); }
.sp-bloccabile[inert] input:not([type=checkbox]):not([type=hidden]), .sp-bloccabile[inert] select, .sp-bloccabile[inert] textarea { background: var(--velo); border-color: var(--linea); color: var(--ink); }
.sp-bloccabile[inert] .sp-unita-scelta { opacity: .85; }
body:not(.editing) .sp-salva { display: none; }
.sp-salva { margin: 4px 0 40px; }
.sp-elenco { list-style: none; margin: 0; padding: 0; }
.sp-voce { display: flex; align-items: center; gap: 16px; padding: 16px 0; border-bottom: 1px solid var(--linea); }
.sp-voce-testo { flex: 1; min-width: 0; }
.sp-voce-nome { margin: 0; font: 400 15px/1.35 var(--sans); overflow-wrap: anywhere; }
.sp-voce-meta { margin: 3px 0 0; font-size: 12.5px; color: var(--muted); }
.sp-voce-az { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; justify-content: flex-end; flex: none; }
.sp-sigla { width: 42px; height: 42px; display: grid; place-items: center; flex: none; background: var(--ink); color: #fff; font: 400 12px/1 var(--sans); letter-spacing: .08em; }
.sp-soggetto { border-bottom: 1px solid var(--linea); }
.sp-soggetto .sp-voce { border-bottom: 0; }
.sp-accessi { margin: 0 0 16px 58px; border: 1px solid var(--linea); }
.sp-accessi summary { display: flex; align-items: center; gap: 10px; padding: 11px 14px; list-style: none; cursor: pointer; font: 400 10.5px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.sp-accessi summary::-webkit-details-marker { display: none; }
.sp-accessi summary::after { content: "+"; margin-left: auto; font-size: 16px; }
.sp-accessi[open] summary::after { content: "–"; }
.sp-accessi-corpo { padding: 4px 14px 18px; }
.sp-accessi-corpo form { margin: 0 0 8px; }
.sp-permessi { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 6px 18px; margin: 10px 0; }
.sp-permessi .lz-spunta { margin: 0; }
.sp-carica { display: grid; gap: 4px 16px; grid-template-columns: 1fr 1fr auto; align-items: end; margin-top: 20px; padding: 18px; border: 1px dashed var(--ink); }
.sp-carica .lz-campo { margin: 0; }
.sp-carica.sopra { background: var(--velo); }
.sp-carica .sp-suggerimento { grid-column: 1 / -1; }
.sp-suggerimento { margin: 0; font-size: 12px; color: var(--muted); }
.sp-unita-scelta { display: flex; align-items: flex-start; gap: 14px; padding: 14px 16px; margin: 0 0 2px; border: 1px solid var(--linea); cursor: pointer; }
.sp-unita-scelta strong { display: block; font-weight: 400; font-size: 14px; }
.sp-unita-scelta small { display: block; margin-top: 2px; color: var(--muted); font-size: 12px; }
.sp-riepilogo { margin: 4px 0 0; font-size: 13px; color: var(--muted); }
.auto { display: inline-block; margin-left: 4px; padding: 1px 6px; border: 1px solid var(--linea); font: 400 9px/1.4 var(--sans); letter-spacing: .12em; color: var(--muted); }

/* ---------- 12. Contabilità di cantiere ---------- */
.q-sintesi { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 2px; }
.q-riquadro { padding: 26px; border: 1px solid var(--linea); min-width: 0; }
.q-cifra { display: flex; align-items: baseline; gap: 14px; margin: 14px 0 22px; }
.q-cifra span { font: 200 52px/1 var(--sans); letter-spacing: -.02em; }
.q-cifra span.spento { color: var(--faint); }
.q-cifra small { font-size: 13px; color: var(--muted); }
.q-barra { margin: 0 0 14px; }
.q-barra-t { display: flex; justify-content: space-between; gap: 12px; margin-bottom: 6px; font-size: 12.5px; }
.q-barra-t span:last-child { color: var(--muted); font-variant-numeric: tabular-nums; white-space: nowrap; }
.q-pista { display: block; position: relative; height: 6px; background: #e6e6e6; }
.q-pista i { display: block; height: 100%; background: var(--ink); }
.q-pista.corta { display: inline-block; width: 80px; height: 5px; vertical-align: middle; }
.q-sezione { padding-top: 22px; border-top: 1px solid var(--ink); min-width: 0; }
.q-sezione-testa { display: flex; justify-content: space-between; align-items: center; gap: 16px; flex-wrap: wrap; margin-bottom: 18px; }
.q-sezione-testa h2 { margin: 0; font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.q-controlli { display: flex; align-items: center; gap: 16px; flex-wrap: wrap; }
.q-avanz { display: inline-flex; align-items: center; gap: 10px; margin: 0; font-size: 12.5px; color: var(--muted); }
.q-avanz b { color: var(--ink); font-weight: 500; }
.q-avanz-cella { display: inline-flex; align-items: center; gap: 8px; justify-content: flex-end; }
.q-scorri { overflow-x: auto; }
.q-tabella { width: 100%; min-width: 840px; border-collapse: collapse; font-variant-numeric: tabular-nums; }
.q-tabella th { padding: 10px 12px; border-bottom: 1px solid var(--ink); text-align: right; font: 400 9.5px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .12em; color: var(--muted); vertical-align: bottom; }
.q-tabella td, .q-tabella tbody th { padding: 13px 12px; border-bottom: 1px solid var(--linea); text-align: right; font: 300 13.5px/1.4 var(--sans); color: var(--text); text-transform: none; letter-spacing: 0; vertical-align: top; white-space: nowrap; }
.q-tabella .sx, .q-tabella thead th:first-child, .q-tabella tbody th, .q-tabella tfoot th { text-align: left; }
.q-tabella td.sx { white-space: normal; }
.q-tabella tbody th b { font-weight: 500; color: var(--ink); }
.q-tabella small { display: block; margin-top: 2px; font-size: 11px; color: var(--muted); white-space: normal; }
.q-tabella small.blocca { display: block; }
.q-tabella td.evid { font-weight: 500; color: var(--ink); }
.q-tabella .q-spento { color: var(--faint); }
.q-tabella tfoot th, .q-tabella tfoot td { border-top: 1px solid var(--ink); border-bottom: 0; font-weight: 500; color: var(--ink); padding-top: 14px; }
.q-tabella tfoot th { font: 500 10px/1.3 var(--sans); letter-spacing: .14em; text-transform: uppercase; }
.q-blocco { display: flex !important; gap: 10px; align-items: flex-start; white-space: normal !important; }
.q-blocco > span { display: block; }
.q-segno { width: 9px; height: 9px; flex: none; margin-top: 5px; background: var(--ink); border: 1px solid var(--ink); }
.q-segno.base { background: #fff; }
.q-segno.t1 { background: #111; } .q-segno.t2 { background: #3a3a3a; } .q-segno.t3 { background: #5e5e5e; }
.q-segno.t4 { background: #858585; } .q-segno.t5 { background: #a8a8a8; border-color: #a8a8a8; } .q-segno.t6 { background: #c9c9c9; border-color: #c9c9c9; }
.q-aliq { display: inline-block; margin-left: 6px; padding: 1px 6px; border: 1px solid var(--ink); font: 400 9.5px/1.4 var(--sans); letter-spacing: .08em; }
.q-aliq.forte { background: var(--ink); color: #fff; }
.q-quota { display: inline-block; margin-left: 4px; padding: 0 5px; border: 1px solid var(--linea); font-size: 10.5px; color: var(--muted); }
.q-base { display: inline-block; margin-left: 4px; padding: 1px 5px; border: 1px solid var(--ink); font: 400 8.5px/1.3 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.q-matita { margin-left: 4px; padding: 0; background: none; border: 0; font: 400 9px var(--sans); letter-spacing: .12em; text-transform: uppercase; text-decoration: underline; text-underline-offset: 3px; color: var(--ink); cursor: pointer; }
.q-stato { display: inline-block; width: 12px; height: 12px; border: 1px solid var(--ink); vertical-align: middle; flex: none; background: #fff; }
.q-stato.ok { background: var(--ink); }
.q-stato.med, .q-stato.amber { background: linear-gradient(135deg, var(--ink) 50%, #fff 50%); }
.q-stato.no { background: linear-gradient(45deg, transparent 44%, var(--ink) 44%, var(--ink) 56%, transparent 56%), linear-gradient(135deg, transparent 44%, var(--ink) 44%, var(--ink) 56%, transparent 56%); }
.q-avviso { display: flex; align-items: flex-start; gap: 12px; margin: 0 0 16px; padding: 12px 14px; border: 1px solid var(--ink); font-size: 13px; }
.q-avviso p { margin: 0; }
.q-avviso .q-stato { margin-top: 3px; }
.q-inline { display: inline; margin: 0; }
.q-nota { margin: 18px 0 0; padding-top: 12px; border-top: 1px solid var(--linea); font-size: 12px; line-height: 1.6; color: var(--muted); }
.q-nota.grande { padding: 4px 0; border: 0; margin: 0 0 8px; font-size: 14px; color: var(--text); }
.q-nota form { display: inline; margin-left: 8px; }
.q-proposti { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; margin-bottom: 16px; }
.q-filtri { display: grid; grid-template-columns: 2fr 1fr; gap: 0 16px; max-width: 680px; }
.q-vuoto { margin: 0 0 24px; font-size: 14px; line-height: 1.8; color: var(--muted); }
.q-importo, .main input.q-importo { width: 130px !important; min-height: 38px; padding: 6px 10px; text-align: right; font-size: 14px; font-variant-numeric: tabular-nums; }
.q-tecniche { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 14px 0 0; padding-top: 14px; border-top: 1px solid var(--linea); font-size: 13px; }
.q-tecniche label { font-size: 13px; }
.q-tecniche small { color: var(--muted); font-size: 12px; }
.q-anteprima { margin: 4px 0 16px; padding: 10px 12px; background: var(--velo); font-size: 12.5px; font-variant-numeric: tabular-nums; }
.q-dic-testo, .main textarea.q-dic-testo { min-height: 160px; font-size: 14px; line-height: 1.6; }
.q-dic .lz-campo { margin-bottom: 14px; }
.pp-addbonus { margin-top: 22px; padding-top: 14px; border-top: 1px solid var(--linea); }
.pp-addbonus summary { cursor: pointer; list-style: none; font: 400 10.5px/1.4 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: underline; text-underline-offset: 4px; }
.pp-addbonus summary::-webkit-details-marker { display: none; }
.pp-addform { margin-top: 14px; }
.pp-addform .row { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 12px 14px; }
.pp-addform label { display: block; margin: 0 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.pp-addform .hint { margin: 10px 0; font-size: 12px; color: var(--muted); }
.pp-addform .g-btn { margin-top: 6px; }

/* ---------- 13. Messaggi ---------- */
.ms-ricerca { max-width: 520px; margin: 0; }
.ms-cantiere { border: 1px solid var(--linea); }
.ms-cantiere-testa { display: flex; align-items: center; gap: 14px; padding: 16px 20px; border-bottom: 1px solid var(--ink); }
.ms-cantiere-testa h2 { margin: 0; flex: 1; min-width: 0; font: 400 16px/1.3 var(--sans); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ms-sigla, .ms-icona { width: 44px; height: 44px; display: grid; place-items: center; flex: none; font: 400 12px/1 var(--sans); letter-spacing: .08em; }
.ms-sigla { background: var(--ink); color: #fff; }
.ms-icona { border: 1px solid var(--ink); }
.ms-riga.fissata .ms-icona { background: var(--ink); color: #fff; }
.ms-riga { display: flex; align-items: center; gap: 16px; padding: 16px 20px; border-bottom: 1px solid var(--linea); text-decoration: none; color: inherit; }
.ms-riga:last-child { border-bottom: 0; }
.ms-riga:hover { background: var(--velo); }
.ms-testo { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 4px; }
.ms-riga-alta, .ms-riga-bassa { display: flex; align-items: center; gap: 10px; min-width: 0; }
.ms-riga-alta strong { font-weight: 500; font-size: 14px; }
.ms-riga-alta time { margin-left: auto; font-size: 11.5px; color: var(--muted); white-space: nowrap; }
.ms-anteprima { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; font-size: 13px; color: var(--muted); }
.ms-anteprima b { font-weight: 500; color: var(--ink); }
.ms-riga.nuovi .ms-anteprima { color: var(--ink); }
.ms-riga.nuovi .ms-riga-alta time { color: var(--ink); font-weight: 500; }
.cl-un { min-width: 20px; height: 20px; padding: 0 6px; display: inline-grid; place-items: center; flex: none; background: var(--ink); color: #fff; font: 500 11px/1 var(--sans); }
.ms-vuoto { padding: 28px 0; text-align: center; color: var(--muted); font-size: 13px; }

/* ---------- 14. Nuovo cantiere ---------- */
.nc-modulo { max-width: 720px; }
.nc-gruppo { min-width: 0; margin: 0 0 34px; padding: 0; border: 0; }
.nc-gruppo > legend { float: left; width: 100%; padding: 0 0 10px; margin: 0 0 20px; border-bottom: 1px solid var(--ink); font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.nc-gruppo > legend + * { clear: both; }
.nc-mappa { height: 240px; margin-top: 12px; border: 1px solid var(--linea); }
.nc-fine { margin-top: 32px; }

/* ---------- 15. Rubrica ---------- */
.rb-pagina { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 56px; align-items: start; }
.rb-filtri { display: flex; flex-wrap: wrap; border-bottom: 1px solid var(--ink); }
.rb-filtri a, .rb-filtri span { display: inline-flex; align-items: center; gap: 8px; min-height: 44px; padding: 0 16px; text-decoration: none; color: var(--muted); font: 400 10.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .13em; }
.rb-filtri a:hover { color: var(--ink); }
.rb-filtri b { font-weight: 400; color: var(--faint); }
.rb-filtri .on { background: var(--ink); color: #fff; } .rb-filtri .on b { color: #d0d0d0; }
.rb-filtri .a-parte { margin-left: auto; }
.rb-soggetto { display: flex; align-items: flex-start; gap: 16px; padding: 18px 0; border-bottom: 1px solid var(--linea); }
.rb-sigla { width: 44px; height: 44px; display: grid; place-items: center; flex: none; background: var(--ink); color: #fff; font: 400 12px/1 var(--sans); letter-spacing: .08em; }
.rb-dati { flex: 1; min-width: 0; }
.rb-dati p { margin: 0; overflow-wrap: anywhere; }
.rb-nome { font: 400 16px/1.35 var(--sans); }
.rb-meta { margin-top: 3px !important; font-size: 12.5px; color: var(--muted); }
.rb-contatti { margin-top: 2px !important; font-size: 12px; color: var(--faint); }
.rb-ruoli { display: flex; gap: 6px; flex-wrap: wrap; margin-top: 8px !important; }
.rb-azioni { display: flex; gap: 6px; flex-wrap: wrap; justify-content: flex-end; flex: none; max-width: 260px; }
.rb-lato { position: sticky; top: 84px; }
.rb-nuovo { padding-top: 16px; border-top: 1px solid var(--ink); }
.rb-nuovo h2 { margin: 0 0 8px; }
.lf-empty, .lf-empty-tr td { padding: 20px 8px; text-align: center; color: var(--muted); font-size: 13px; }
.lf-fade { opacity: 0; }

/* ---------- 16. Progetti e cruscotto ---------- */
.ho-fascia { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding-bottom: 22px; border-bottom: 1px solid var(--ink); }
.ho-marchio { margin: 0; font: 200 clamp(28px, 4vw, 44px)/1 var(--sans); letter-spacing: .42em; text-transform: uppercase; }
.ho-studio { display: flex; align-items: center; gap: 14px; }
.ho-logo { display: grid; place-items: center; min-width: 120px; height: 56px; padding: 0 12px; border: 1px solid var(--linea); font: 400 9.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.ho-logo img { max-height: 48px; max-width: 160px; display: block; }
.ho-titolo { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin: 0 0 16px; }
.ho-titolo h2 { margin: 0; font: 300 clamp(26px, 3vw, 34px)/1.1 var(--sans); }
.ho-filtri { display: flex; flex-wrap: wrap; margin: 0 0 20px; }
.ho-filtri button { min-height: 40px; padding: 0 18px; margin-right: -1px; background: #fff; border: 1px solid var(--ink); color: var(--ink); font: 400 10.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .13em; cursor: pointer; }
.ho-filtri button.on { background: var(--ink); color: #fff; }
.ho-tessere { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 2px; }
.ho-tessera { display: flex; flex-direction: column; text-decoration: none; color: var(--ink); background: #fff; }
.ho-foto { position: relative; aspect-ratio: 4 / 5; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 12px; padding: 20px; background: var(--velo); text-align: center; overflow: hidden; }
.ho-foto img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: opacity .2s; }
.ho-tessera:hover .ho-foto img { opacity: .88; }
.ho-nome-grande { font: 300 22px/1.2 var(--sans); overflow-wrap: anywhere; }
.ho-didascalia { display: flex; flex-direction: column; gap: 2px; padding: 12px 2px 18px; }
.ho-didascalia strong { font: 500 12px/1.35 var(--sans); text-transform: uppercase; letter-spacing: .08em; }
.ho-didascalia span, .ho-didascalia em { font-size: 12px; font-style: normal; color: var(--muted); }
.ho-didascalia em { color: var(--ink); } .ho-didascalia em.tenue { color: var(--muted); }
.ho-tessera.nuovo .ho-foto { background: #fff; border: 1px dashed var(--ink); }
.ho-piu { font: 200 64px/1 var(--sans); }
.ho-cruscotto { margin-top: 12px; }
.ho-numeri { display: flex; flex-direction: column; gap: 14px; align-items: flex-start; width: 100%; }
.ho-cifre { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 2px; width: 100%; margin: 0; }
.ho-cifre > div { display: flex; flex-direction: column-reverse; justify-content: flex-end; gap: 10px; padding: 22px 18px; border: 1px solid var(--linea); }
.ho-cifre dd { margin: 0; font: 200 clamp(30px, 3.4vw, 44px)/1 var(--sans); }
.ho-cifre dt { font: 400 9.5px/1.4 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.ho-coppia { display: grid; grid-template-columns: 1fr 1.25fr; gap: 2px; align-items: stretch; }
.ho-terna { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 2px; align-items: stretch; }
.ho-scheda { display: flex; flex-direction: column; min-width: 0; padding: 26px; border: 1px solid var(--linea); background: #fff; }
.ho-scheda-testa { display: flex; justify-content: space-between; align-items: flex-start; gap: 14px; margin: 0 0 18px; }
.ho-scheda-testa h3 { margin: 0; font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.ho-scheda-testa p { margin: 4px 0 0; font-size: 12px; color: var(--muted); }
.main textarea.note-sheet { flex: 1; min-height: 224px; padding: 0; border: 0; background: repeating-linear-gradient(to bottom, transparent 0, transparent 31px, #e2e2e2 31px, #e2e2e2 32px); font: 300 14px/32px var(--sans); resize: vertical; outline-offset: 4px; }
.ho-settimana { list-style: none; margin: 0 0 16px; padding: 0; display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 2px; }
.ho-settimana .giorno { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; width: 100%; aspect-ratio: 1; padding: 0; background: #fff; border: 1px solid var(--linea); color: var(--muted); font: 400 9.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .1em; }
.ho-settimana .giorno b { font: 400 17px/1.1 var(--sans); color: var(--ink); letter-spacing: 0; }
.ho-settimana .giorno.impegni { border-color: var(--ink); cursor: pointer; }
.ho-settimana .giorno.impegni::after { content: ""; width: 14px; height: 2px; margin-top: 3px; background: currentColor; }
.ho-settimana .giorno.oggi { background: var(--ink); border-color: var(--ink); color: #fff; }
.ho-settimana .giorno.oggi b { color: #fff; }
.ho-appuntamenti, .ho-voci { list-style: none; margin: 0; padding: 0; }
.ho-appuntamenti li > a, .ho-appuntamenti li > div { display: flex; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--linea); text-decoration: none; color: inherit; font-size: 13.5px; }
.ho-appuntamenti li:last-child > a, .ho-appuntamenti li:last-child > div { border-bottom: 0; }
.ho-appuntamenti .t { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ho-appuntamenti .q { font-size: 12px; color: var(--muted); white-space: nowrap; }
.ho-voci li > a, .ho-voci li > div { display: flex; align-items: center; gap: 14px; padding: 12px 0; border-bottom: 1px solid var(--linea); text-decoration: none; color: inherit; }
.ho-voci li:last-child > a, .ho-voci li:last-child > div { border-bottom: 0; }
.ho-voci a:hover { background: var(--velo); }
.ho-voci .sigla { width: 36px; height: 36px; display: grid; place-items: center; flex: none; background: var(--ink); color: #fff; font: 400 11px/1 var(--sans); letter-spacing: .08em; }
.ho-voci .testo { flex: 1; min-width: 0; display: flex; flex-direction: column; }
.ho-voci strong { font-weight: 400; font-size: 14px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ho-voci small { font-size: 12px; color: var(--muted); }
.ho-importi { margin: 0; }
.ho-importi > div { padding: 14px 0; border-bottom: 1px solid var(--linea); }
.ho-importi > div:last-child { border-bottom: 0; }
.ho-importi dt { font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.ho-importi dd { margin: 4px 0 0; font: 200 28px/1.1 var(--sans); font-variant-numeric: tabular-nums; }
.ho-evento { display: flex; flex-direction: column; gap: 3px; margin: 0 0 2px; padding: 12px 14px; border: 1px solid var(--linea); text-decoration: none; color: var(--ink); }
a.ho-evento:hover { border-color: var(--ink); background: var(--velo); }
.ho-evento span { font-size: 12px; color: var(--muted); } .ho-evento em { font: 400 10px var(--sans); text-transform: uppercase; letter-spacing: .12em; font-style: normal; }
.ho-menu-tag { display: none; position: absolute; z-index: 150; max-height: 220px; overflow-y: auto; background: #fff; border: 1px solid var(--ink); }
.ho-menu-tag .voce { padding: 10px 12px; font-size: 14px; cursor: pointer; }
.ho-menu-tag .voce:hover { background: var(--velo); }
.ho-menu-tag small { margin-left: 6px; font: 400 9.5px var(--sans); text-transform: uppercase; letter-spacing: .12em; color: var(--muted); }

/* ---------- 17. Componenti ereditati dalle altre pagine (stesso linguaggio, niente colore) ---------- */
body { background: #fff; color: var(--text); }
.card, .g-card, .info-card, .project-card, .bonus-card, .timeline-card, .sch-card, .kpi-card, .cp-card, .acc-sec { background: #fff; border: 1px solid var(--linea); padding: 24px; margin-bottom: 0; }
.g-card.lg { padding: 26px; }
.bonus-card { background: var(--velo); }
.card-title, .info-card-title, .cp-card-title, .sch-card-title, .project-name, .bonus-title { margin: 0 0 12px; font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; color: var(--ink); display: block; }
.card-subtitle, .project-type { font-size: 12px; color: var(--muted); }
.sub { color: var(--muted); font-size: 13px; }
.empty, .cp-empty { color: var(--muted); font-size: 13px; padding: 10px 0; }
.g-head { display: flex; justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 16px; }
.g-inner { padding: 0; background: none; }
.g-type { width: 34px; height: 34px; display: grid; place-items: center; flex: none; background: #fff; border: 1px solid var(--ink); }
.g-type svg { width: 16px; height: 16px; stroke: var(--ink); fill: none; stroke-width: 1.3; }
.g-row { display: flex; align-items: center; gap: 12px; padding: 10px 0; border-bottom: 1px solid var(--linea); }
.g-row:last-child { border-bottom: 0; }
.g-row .dot { width: 8px; height: 8px; background: var(--ink); flex: none; }
.g-row .t { font-size: 14px; } .g-row .m { margin-left: auto; font-size: 12px; color: var(--muted); }
.g-field { display: flex; align-items: center; gap: 10px; min-height: 44px; padding: 0 12px; background: #fff; border: 1px solid var(--bordo-campo); color: var(--text); }
.g-field svg { width: 16px; height: 16px; stroke: var(--faint); fill: none; stroke-width: 1.4; flex: none; }
.g-field input { flex: 1; min-width: 0; border: 0 !important; outline: 0; background: transparent !important; min-height: 0 !important; padding: 0 !important; font: 300 16px var(--sans); }
.backdot { width: 40px; height: 40px; display: grid; place-items: center; flex: none; background: #fff; border: 1px solid var(--ink); text-decoration: none; }
.backdot svg { width: 18px; height: 18px; stroke: var(--ink); fill: none; stroke-width: 1.4; }
.titlerow { display: flex; align-items: center; gap: 16px; }
.top { display: flex; justify-content: space-between; align-items: flex-start; gap: 20px; }
.topline { display: flex; justify-content: space-between; align-items: flex-end; gap: 16px; flex-wrap: wrap; padding-bottom: 22px; border-bottom: 1px solid var(--ink); margin-bottom: 8px; }
.page-title, .project-title { margin: 0; font: 300 clamp(26px, 3.4vw, 36px)/1.15 var(--sans); }
.page-subtitle, .project-subtitle { margin: 8px 0 0; font-size: 14px; color: var(--muted); }
.main .h1, .main h1 { font-weight: 300; font-size: clamp(26px, 3.6vw, 40px); color: var(--ink); margin: 0; }
.main .lz-h1, .main h1.lz-h1 { font: 300 clamp(26px, 3.6vw, 40px)/1.1 var(--sans); letter-spacing: -.01em; margin-top: 8px; }
.main h2 { font-weight: 400; margin-bottom: 0; }
.main h3 { font-weight: 400; margin-bottom: 0; }
.main label { display: block; margin: 0 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.main label.lz-spunta, .main label.sp-unita-scelta, .main label.q-lab, .main .pp-addform label, .main .q-tecniche label { display: flex; margin: 6px 0 14px; font: 300 13px/1.4 var(--sans); text-transform: none; letter-spacing: 0; color: var(--text); }
.main label.sp-unita-scelta { margin: 0 0 2px; font-size: 14px; }
.main .pp-addform label { display: block; margin: 0 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.main .q-tecniche label { display: inline; margin: 0; font-size: 13px; }
.main .sch-appart label { margin: 0; }
.main .lz-campo > label { display: block; margin: 0 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.main table { border-collapse: collapse; }
.main table thead th { background: none; padding: 10px 12px; border-bottom: 1px solid var(--ink); font: 400 9.5px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .12em; color: var(--muted); text-align: left; }
.main table tbody td { padding: 12px; border-bottom: 1px solid var(--linea); }
.main .q-tabella thead th, .main .q-tabella tbody th, .main .q-tabella td { }
.main .q-tabella thead th { text-align: right; } .main .q-tabella thead th:first-child, .main .q-tabella thead th.sx { text-align: left; }
.main .q-tabella tbody td { padding: 13px 12px; border-bottom: 1px solid var(--linea); text-align: right; white-space: nowrap; }
.main .q-tabella tbody td.sx { text-align: left; white-space: normal; }
.main .q-tabella tbody th { padding: 13px 12px; border-bottom: 1px solid var(--linea); text-align: left; background: none; font: 300 13.5px/1.4 var(--sans); text-transform: none; letter-spacing: 0; color: var(--text); white-space: normal; }
.main .q-tabella tfoot th, .main .q-tabella tfoot td { border-top: 1px solid var(--ink); border-bottom: 0; padding: 14px 12px 8px; text-align: right; }
.main .q-tabella tfoot th { text-align: left; }
.main .q-tabella thead th { border-bottom: 1px solid var(--ink); }
.grid { display: grid; gap: 16px; } .grid.cols2 { grid-template-columns: repeat(2, minmax(0, 1fr)); } .grid.cols3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.kpi-number, .fin-number { font: 200 40px/1 var(--sans); }
.kpi-label { font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.error, .errorlist li, .alert-error { color: var(--ink); }
.alert { padding: 14px 16px; margin-bottom: 18px; border: 1px solid var(--ink); background: #fff; color: var(--ink); font-size: 14px; }
.alert-error { background: var(--ink); color: #fff; }
.errorlist { list-style: none; margin: 6px 0 0; padding: 0; text-align: left; font-size: 12.5px; }
.ob-caption, .card-foot, .muted-link { color: var(--muted); }
.card-foot a, .muted-link a { color: var(--ink); text-decoration: underline; text-underline-offset: 3px; font-weight: 400; }
.info { font-size: 13px; color: var(--muted); }
.link-a { display: inline-flex; align-items: center; gap: 6px; font-size: 13px; text-decoration: underline; text-underline-offset: 3px; }
.link-a svg { width: 14px; height: 14px; stroke: currentColor; fill: none; }
.sh-x { width: 36px; height: 36px; display: grid; place-items: center; flex: none; background: #fff; border: 1px solid var(--ink); cursor: pointer; }
.sh-x svg { width: 16px; height: 16px; stroke: var(--ink); fill: none; stroke-width: 1.4; }
.tl-mhead { display: flex; justify-content: space-between; align-items: center; margin-bottom: 14px; padding-bottom: 12px; border-bottom: 1px solid var(--ink); }
.tl-mhead h4 { margin: 0; font: 300 22px var(--sans); }

/* accessi del cantiere (pannello caricato nella finestra) */
.acc-sec { border: 0; border-top: 1px solid var(--linea); padding: 18px 0; }
.acc-sec:first-child { border-top: 0; padding-top: 0; }
.acc-h { margin-bottom: 12px; font: 500 11px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.acc-tabs { display: flex; gap: 0; margin-bottom: 14px; }
.acc-tab { padding: 9px 18px; border: 1px solid var(--ink); margin-right: -1px; background: #fff; color: var(--ink); font: 400 10.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .12em; text-decoration: none; }
.acc-tab.on { background: var(--ink); color: #fff; }
.acc-lb { display: block; margin: 14px 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.acc-card input.acc-inp, .acc-card input.acc-link, .acc-pop input[type=email], .acc-pop input[type=text] { max-width: 420px; }
.acc-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; }
.acc-perm { display: flex; align-items: center; gap: 10px; padding: 9px 12px; border: 1px solid var(--linea); font-size: 13px; cursor: pointer; }
.acc-btn { margin-top: 14px; }
.acc-btn.sm { margin-top: 0; }
.acc-row { display: flex; gap: 14px; align-items: center; padding: 14px 0; border-bottom: 1px solid var(--linea); }
.acc-who { font-size: 14px; }
.acc-mail { margin-left: 6px; color: var(--muted); font-size: 12px; }
.acc-tags { display: flex; flex-wrap: wrap; gap: 4px; margin-top: 6px; }
.acc-acts { display: flex; flex-direction: column; gap: 6px; flex: none; }
.acc-acts form { margin: 0; }
.acc-empty { color: var(--muted); font-size: 13px; padding: 8px 0; }

/* ---------- 18. Pagine di accesso e di avvio ---------- */
body.pz-auth { background: #fff; }
.auth-layout { background: #fff !important; }
.auth-content { padding: 48px 20px; }
.auth-brand { margin-bottom: 36px; }
.auth-header { color: var(--ink); }
.auth-header h1 { font: 300 clamp(26px, 4vw, 36px)/1.15 var(--sans); letter-spacing: -.01em; }
.auth-header h2 { font: 300 28px/1.2 var(--sans); }
.auth-header p { color: var(--muted); font-size: 14px; }
.auth-card { width: 100%; max-width: 460px; padding: 36px 32px; background: #fff; border: 1px solid var(--ink); }
.auth-card.wide { max-width: 640px; }
.ob-steps { display: flex; justify-content: center; gap: 6px; margin-bottom: 12px; }
.ob-dot { width: 24px; height: 3px; background: var(--linea); }
.ob-dot.on { background: var(--ink); }
.ob-caption { font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .16em; }
.form-label { display: block; margin: 0 0 6px; font: 400 10px/1.3 var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; margin-bottom: 16px; }
.form-group { margin-bottom: 16px; }
.form-row > .form-group { margin-bottom: 0; }
.form-control, .pill-input { text-align: left; }
.form-control::placeholder, .pill-input::placeholder { text-align: left; }
.auth-card .btn { width: 100%; }
.consent-row { display: flex; align-items: flex-start; gap: 10px; margin-bottom: 10px; font-size: 13px; color: var(--text); }
.alert-success, .alert-warning { background: #fff; color: var(--ink); }
.pz-invito { text-align: left; }

/* ---------- 19. Portali (committente e impresa) ---------- */
body.portale { display: block; background: #fff; color: var(--text); }
.ptopbar { position: sticky; top: 0; z-index: 60; display: flex; align-items: center; justify-content: space-between; gap: 16px; min-height: 58px; padding: 0 24px; background: #fff; color: var(--ink); border-bottom: 1px solid var(--ink); }
.ptopbar-logo { position: absolute; left: 50%; transform: translateX(-50%); display: flex; align-items: center; }
.ptopbar-user { display: flex; align-items: center; gap: 14px; font-size: 12px; color: var(--ink); }
.ptopbar-user button, .ptopbar-user .logout { color: var(--ink); font: 400 10.5px/1 var(--sans) !important; text-transform: uppercase; letter-spacing: .13em; text-decoration: underline; text-underline-offset: 4px; }
.ptopbar-badge, .ptopbar-badge.committente, .ptopbar-badge.impresa { padding: 3px 8px; border: 1px solid var(--ink); background: #fff; color: var(--ink); font: 400 9px/1.3 var(--sans); letter-spacing: .12em; text-transform: uppercase; }
.cp-user-nome, .pz-portale-nome { font: 400 12px var(--sans); color: var(--ink); }
.pz-cli-home { width: 40px; height: 40px; display: grid; place-items: center; background: #fff; border: 1px solid var(--ink); color: var(--ink); }
.pz-cli-home svg { width: 18px; height: 18px; stroke: var(--ink); fill: none; stroke-width: 1.4; }
.cp-bell { position: relative; width: 40px; height: 40px; display: grid; place-items: center; background: #fff; border: 1px solid var(--ink); color: var(--ink); cursor: pointer; }
.cp-bell:hover { background: var(--ink); color: #fff; }
.cp-bell-badge { position: absolute; top: -6px; right: -6px; min-width: 18px; height: 18px; padding: 0 4px; display: grid; place-items: center; background: var(--ink); color: #fff; font: 500 10px/1 var(--sans); border: 1px solid #fff; }
.pmain, .cp-main { width: 100%; max-width: 1080px; margin: 0 auto; padding: 32px 24px 110px; }
.cp-main { display: flex; flex-direction: column; gap: 24px; }
.welcome { margin: 0; font: 300 clamp(26px, 4vw, 38px)/1.15 var(--sans); color: var(--ink); }
.welcome-sub { margin: 4px 0 0; font-size: 14px; color: var(--muted); }
.cp-nav { display: flex; gap: 26px; overflow-x: auto; border-bottom: 1px solid var(--linea); scrollbar-width: none; }
.cp-nav::-webkit-scrollbar { display: none; }
.cp-nav-item { flex: none; padding: 14px 0 12px; background: none; border: 0; border-bottom: 2px solid transparent; color: var(--muted); font: 400 10.5px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; text-decoration: none; }
.cp-nav-item:hover { color: var(--ink); }
.cp-nav-item.active { background: none; color: var(--ink); border-bottom-color: var(--ink); }
.cp-card { padding: 24px; }
.cp-grid { gap: 2px; }
.cp-progress, .progress-bar { height: 6px; background: #e6e6e6; overflow: hidden; }
.cp-progress-fill, .progress-fill, .project-card .progress-fill { height: 100%; background: var(--ink); }
.phase-pill { background: #fff; color: var(--muted); border-color: var(--linea); }
.phase-pill.done { background: var(--velo); color: var(--ink); } .phase-pill.current { background: var(--ink); color: #fff; border-color: var(--ink); }
.cp-fab-wrap { position: fixed; right: 20px; bottom: 20px; display: flex; flex-direction: column; gap: 8px; z-index: 70; }
.cp-fab { width: 52px; height: 52px; display: grid; place-items: center; background: var(--ink); color: #fff; border: 1px solid var(--ink); cursor: pointer; }
.cp-fab svg { width: 22px; height: 22px; stroke: currentColor; }
.cp-fab:hover { background: #fff; color: var(--ink); }
.cp-pop { position: fixed; right: 20px; bottom: 90px; width: 380px; max-width: calc(100vw - 32px); background: #fff; border: 1px solid var(--ink); z-index: 90; display: flex; flex-direction: column; }
.cp-pop[hidden] { display: none; }
.cp-pop-head { display: flex; justify-content: space-between; align-items: center; padding: 12px 14px; background: var(--ink); color: #fff; font: 400 11px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .14em; }
.cp-pop-x { width: 30px; height: 30px; background: none; border: 1px solid #fff; color: #fff; font-size: 18px; cursor: pointer; }
.cp-pop iframe { width: 100%; height: 420px; border: 0; }

/* app cliente: schermata di apertura */
.pz-band { display: flex; justify-content: space-between; align-items: center; gap: 20px; padding-bottom: 20px; border-bottom: 1px solid var(--ink); }
.pz-band > div { display: flex; align-items: center; gap: 14px; }
.pz-wm2 { font: 200 clamp(26px, 4vw, 40px)/1 var(--sans); letter-spacing: .42em; text-transform: uppercase; }
.pz-logo { display: grid; place-items: center; min-width: 110px; height: 52px; padding: 0 12px; border: 1px solid var(--linea); font: 400 9.5px var(--sans); text-transform: uppercase; letter-spacing: .14em; color: var(--muted); }
.pz-logo img { max-height: 44px; display: block; }
/* 2/11/2026 (giro del flusso): al telefono logo e nome dello studio vanno a capo, non oltre il bordo */
@media (max-width: 600px) { .pz-band, .pz-band > div { flex-wrap: wrap; min-width: 0; } }
.pz-sec { display: flex; justify-content: space-between; align-items: baseline; gap: 16px; margin-bottom: 14px; }
.pz-sec h2 { margin: 0; font: 300 28px/1.15 var(--sans); }
.pz-conta { font: 400 10px var(--sans); text-transform: uppercase; letter-spacing: .16em; color: var(--muted); }
.pz-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 2px; }
.pz-tile { display: flex; flex-direction: column; text-decoration: none; color: var(--ink); background: #fff; }
.pz-tile .im { position: relative; aspect-ratio: 4 / 5; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 10px; padding: 16px; text-align: center; background: var(--velo); overflow: hidden; }
.pz-tile .im img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pz-tile .n { font: 400 13px/1.35 var(--sans); }
.pz-tile .im .n { font: 300 20px/1.2 var(--sans); }
.pz-tile .cap { padding: 10px 2px 16px; } .pz-tile .cap .n { font: 500 12px/1.35 var(--sans); text-transform: uppercase; letter-spacing: .08em; }
.pz-tile .m, .pz-tile .s { font-size: 12px; color: var(--muted); }
.pz-tile.qui .im { outline: 2px solid var(--ink); outline-offset: -2px; }
.pz-cli-pj { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 2px; margin-top: 8px; }
.pz-cli-hero { position: relative; aspect-ratio: 4 / 3; display: grid; place-items: center; background: var(--velo); overflow: hidden; }
.pz-cli-hero img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.pz-cli-hero.vuoto { border: 1px solid var(--linea); }
.pz-cli-menu { padding-left: 28px; min-width: 0; }
.pz-cli-menu .pz-head { text-align: left !important; padding: 0 0 18px; }

/* portale impresa */
body.impresa { background: #fff; color: var(--text); }
body.impresa .sidebar { width: 210px; background: #fff; color: var(--ink); border-right: 1px solid var(--ink); gap: 4px; padding: 20px 14px; }
body.impresa .logo { background: none; border: 0; padding: 0 6px 18px; margin: 0; justify-content: flex-start; color: var(--ink); }
body.impresa .btn-primary, body.impresa .btn-secondary { width: 100%; min-height: 40px; background: var(--ink); color: #fff; }
body.impresa .nav-item { padding: 12px 8px; background: none; color: var(--muted); font: 400 10.5px/1.2 var(--sans); text-transform: uppercase; letter-spacing: .13em; border-bottom: 1px solid var(--linea); text-decoration: none; }
body.impresa .nav-item svg { stroke: currentColor; }
body.impresa .nav-item:hover { background: var(--velo); color: var(--ink); }
body.impresa .nav-item.active { background: none; color: var(--ink); font-weight: 500; border-bottom-color: var(--ink); }
body.impresa .sidebar-bottom { border-top: 1px solid var(--ink); padding-top: 14px; }
body.impresa .user-avatar { width: 32px; height: 32px; background: var(--ink); color: #fff; display: grid; place-items: center; font: 400 12px var(--sans); }
body.impresa .user-name { color: var(--ink); font: 400 12px var(--sans); }
body.impresa .role-badge { display: inline-block; margin-top: 2px; padding: 2px 6px; border: 1px solid var(--ink); background: #fff; color: var(--ink); font: 400 8.5px/1.3 var(--sans); letter-spacing: .12em; }
body.impresa .logout { margin-top: 10px; background: none; border: 0; color: var(--ink); font: 400 10.5px var(--sans); text-transform: uppercase; letter-spacing: .12em; text-decoration: underline; text-underline-offset: 4px; cursor: pointer; }
body.impresa .mtopbar { background: #fff; color: var(--ink); border-bottom: 1px solid var(--ink); }
body.impresa .hamburger { color: var(--ink); }
body.impresa .main { padding: 36px 40px 100px; }
.pz-imp-copertina { background: var(--velo); }
.cantiere-box, .cantiere-dl { border: 1px solid var(--linea); background: #fff; padding: 22px; }
.cantiere-name { font: 400 18px var(--sans); color: var(--ink); }
.next-item { border-bottom: 1px solid var(--linea); padding: 10px 0; } .next-date { font: 400 10px var(--sans); text-transform: uppercase; letter-spacing: .12em; color: var(--muted); }

/* righe di elenco con ricerca morbida */
.subj, .cs-row, .lf-row, tr.lf-tr { transition: opacity .18s ease; }

/* ---------- 20. Telefono e schermi piccoli ---------- */
@media (max-width: 1100px) {
  .cd-schede, .q-sintesi, .ho-coppia, .ho-terna { grid-template-columns: 1fr; }
  .ho-cifre { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .cd-scorciatoie { grid-template-columns: 1fr; }
  .cd-scorciatoie a { min-height: 56px; align-items: center; padding-left: 44px; }
  .rb-pagina { grid-template-columns: 1fr; gap: 28px; }
  .rb-lato { position: static; order: -1; }
  .pz-pj, .pz-cli-pj { grid-template-columns: 1fr; }
  .pz-pj-r { padding: 8px 0 0; } .pz-cli-menu { padding: 20px 0 0; }
  .sp-carica { grid-template-columns: 1fr; }
}
@media (max-width: 1000px) {
  :root { --gutter: 20px; --altezza-testata: 54px; }
  body.sb .g-app > .g-side { gap: 12px; min-height: var(--altezza-testata); padding: 0 var(--gutter); align-items: center; }
  body.sb .g-brand { flex: 1; justify-content: space-between; }
  body.sb .g-collapse { display: grid; place-items: center; width: 40px; height: 40px; margin-left: 12px; background: none; border: 1px solid var(--ink); order: 2; }
  body.sb .g-collapse svg { width: 18px; height: 18px; stroke: var(--ink); fill: none; stroke-width: 1.4; }
  body.sb .g-nav { display: none; }
  body.sb.nav-open .g-nav { display: flex; flex-direction: column; position: fixed; top: var(--altezza-testata); left: 0; right: 0; bottom: 58px; padding: 8px var(--gutter) 24px; background: #fff; overflow-y: auto; z-index: 65; }
  body.sb.nav-open .g-nav a, body.sb.nav-open .g-nav .pz-solo-menu { display: flex; height: 56px; padding: 0; border: 0; border-bottom: 1px solid var(--linea); font-size: 13px; letter-spacing: .14em; }
  body.sb.nav-open .g-nav a.on { border-bottom-color: var(--ink); }
  body.sb .g-foot .txt { display: none; }
  body.sb .pz-dx { gap: 4px; }
  body.sb .g-app > .main { padding: 24px var(--gutter) 120px; gap: 28px; }
  .pz-tabbar { display: flex; position: fixed; left: 0; right: 0; bottom: 0; height: 58px; z-index: 70; background: #fff; border-top: 1px solid var(--ink); }
  .pz-tabbar a, .pz-tabbar button { position: relative; flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 4px; padding: 0; background: none; border: 0; color: var(--muted); text-decoration: none; font: 400 8.5px/1 var(--sans); text-transform: uppercase; letter-spacing: .1em; cursor: pointer; }
  .pz-tabbar svg { width: 20px; height: 20px; stroke: currentColor; fill: none; stroke-width: 1.3; }
  .pz-tabbar .on { color: var(--ink); box-shadow: inset 0 2px 0 var(--ink) !important; }
  .pz-pallino { position: absolute; top: 10px; left: calc(50% + 8px); width: 7px; height: 7px; background: var(--ink); }
  .g-fab { bottom: 74px; right: 14px; width: 48px; height: 48px; } .g-fab .fb { display: none; }
  .sq-chat { right: 12px; left: 12px; width: auto; bottom: 130px; }
  .ptopbar { padding: 0 14px; } .ptopbar-logo { position: static; transform: none; margin-right: auto; margin-left: 12px; }
  .cp-user-nome { display: none; }
  .pz-cli-tabbar { display: flex; }
  .cp-main, .pmain { padding: 22px 16px 110px; }
  .cp-fab-wrap { bottom: 74px; right: 14px; }
  .cp-pop { bottom: 140px; right: 12px; left: 12px; width: auto; }
  body.impresa .main { padding: 20px 16px 100px; }
  body.impresa .sidebar { width: 260px; }
}
@media (max-width: 700px) {
  .lz-cols.due, .lz-cols.tre, .lz-cols.quattro, .lz-cols.tre-larga, .form-row, .grid.cols2, .grid.cols3, #rubModalBody .cols2, #rubModalBody .cols3 { grid-template-columns: 1fr; }
  .lz-cols .doppia { grid-column: auto; }
  .lz-modal, .rub-modal { padding: 0; }
  .lz-modal-card, .lz-modal-card.wide, .lz-modal-card.stretta, .rub-modal-card { min-height: 100vh; width: 100%; border: 0; padding: 22px 18px 32px; }
  .ho-cifre dd { font-size: 32px; }
  .ho-fascia { flex-direction: column; align-items: flex-start; }
  .ho-tessere, .pz-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .ho-foto { padding: 12px; } .ho-nome-grande { font-size: 17px; }
  .cd-s, .ho-scheda, .q-riquadro { padding: 20px 16px; }
  .cd-dati { grid-template-columns: 1fr; }
  .cd-foto { grid-template-columns: repeat(2, 1fr); }
  .cd-fasi { grid-template-columns: repeat(2, 1fr); }
  .sp-voce { flex-wrap: wrap; } .sp-voce-az { justify-content: flex-start; flex: 1 1 100%; }
  .sp-accessi { margin-left: 0; }
  .sp-linguette button { flex: 1; padding: 0 8px; } .sp-conteggio { display: none; }
  .rb-soggetto { flex-wrap: wrap; } .rb-azioni { max-width: none; justify-content: flex-start; flex: 1 1 100%; }
  .q-filtri { grid-template-columns: 1fr; }
  .q-cifra span { font-size: 42px; }
  .ms-riga { padding: 14px 14px; gap: 12px; } .ms-icona, .ms-sigla { width: 40px; height: 40px; }
  .lz-testata { align-items: flex-start; }
  .pz-tabs button { padding: 0 4px; font-size: 9.5px; letter-spacing: .08em; }
  .pz-row { gap: 10px; } .pz-row .r { max-width: 110px; }
  .auth-card { padding: 28px 20px; }
  .ntf-modal { padding: 0; } .ntf-card { width: 100%; max-height: 100vh; min-height: 100vh; border: 0; }
  .cd-linguette { gap: 12px; } .lz-tabs { gap: 18px; }
  .cd-azioni { justify-content: flex-start; }
}
@media (prefers-reduced-motion: reduce) { * { animation: none !important; transition: none !important; } }
