.hub{display:flex;flex-direction:column;min-height:100vh}.hub-barra{display:flex;align-items:center;justify-content:space-between;gap:var(--sp-4);padding:var(--sp-3) var(--sp-7);background:var(--side-bg);color:var(--side-fg)}.hub-marchio{display:flex;align-items:center;gap:var(--sp-3)}.hub-marchio .cmc-logo{--logo-h: 34px}.hub-nome{font-size:var(--fs-md);font-weight:600;color:var(--text-on-dark)}.hub-corpo{flex:1;width:100%;max-width:1040px;margin:0 auto;padding:56px var(--sp-6) var(--sp-8)}.hub-intro{margin-bottom:var(--sp-6)}.portal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:var(--sp-4)}.portal-card{display:flex;flex-direction:column;gap:var(--sp-2);padding:var(--sp-6);background:var(--surface);border:1px solid var(--border);border-top:3px solid var(--accent);border-radius:var(--radius-lg);color:var(--text);text-decoration:none;transition:border-color .15s,box-shadow .15s}.portal-card:hover{border-color:var(--accent);box-shadow:var(--shadow-md);text-decoration:none}.portal-card:focus-visible{outline-offset:3px}.portal-icon{display:inline-flex;align-items:center;justify-content:center;width:48px;height:48px;margin-bottom:var(--sp-2);border-radius:var(--radius-lg);background:var(--accent-soft);color:var(--accent-text)}.portal-icon svg{width:24px;height:24px}.portal-name{font-size:var(--fs-lg);font-weight:700;letter-spacing:-.01em}.portal-desc{flex:1;font-size:var(--fs);line-height:1.5;color:var(--muted)}.portal-apri{display:inline-flex;align-items:center;gap:6px;margin-top:var(--sp-3);font-size:var(--fs-sm);font-weight:600;color:var(--accent-text)}.portal-apri svg{width:16px;height:16px;transition:transform .15s}.portal-card:hover .portal-apri svg{transform:translate(3px)}.hub-piede{padding:var(--sp-5) var(--sp-6);font-size:var(--fs-xs);color:var(--muted);text-align:center}.portal-ruolo{align-self:flex-start;padding:2px 8px;border-radius:var(--radius-pill);background:var(--accent-soft);color:var(--accent-text);font-size:var(--fs-xs);font-weight:600}.hub-attesa{padding:56px var(--sp-6);color:var(--muted);text-align:center}.hub-nav{display:flex;gap:var(--sp-1);margin-right:auto;margin-left:var(--sp-6)}.hub-nav-voce,.hub-icona,.hub-utente-pulsante{display:inline-flex;align-items:center;gap:var(--sp-2);height:34px;padding:0 var(--sp-3);border:0;border-radius:var(--radius);background:transparent;color:var(--side-fg);font-family:inherit;font-size:var(--fs-sm);font-weight:500;text-decoration:none;cursor:pointer}.hub-nav-voce svg,.hub-icona svg{width:16px;height:16px;color:var(--side-muted)}.hub-nav-voce:hover,.hub-icona:hover,.hub-utente-pulsante:hover{background:var(--side-hover);color:var(--text-on-dark);text-decoration:none}.hub-nav-voce.active{background:var(--side-active);color:var(--text-on-dark)}.hub-nav-voce.active svg{color:var(--text-on-dark)}.hub-icona{width:34px;justify-content:center;padding:0}.hub-azioni{display:flex;align-items:center;gap:var(--sp-2)}.hub-utente{position:relative}.hub-avatar{display:inline-flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:50%;background:var(--side-active);color:var(--text-on-dark);font-size:11px;font-weight:700;text-transform:uppercase}.hub-utente-freccia{width:14px;height:14px;color:var(--side-muted)}.hub-menu{position:absolute;top:calc(100% + 6px);right:0;z-index:var(--z-topbar);min-width:240px;padding:var(--sp-1);border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-md)}.hub-menu-intestazione{display:flex;flex-direction:column;gap:2px;margin-bottom:var(--sp-1);padding:var(--sp-2) var(--sp-3) var(--sp-3);border-bottom:1px solid var(--border);color:var(--text);font-size:var(--fs-sm)}.hub-menu-intestazione span{color:var(--muted);font-size:var(--fs-xs)}.hub-menu-voce{display:flex;align-items:center;gap:var(--sp-2);width:100%;padding:var(--sp-2) var(--sp-3);border:0;border-radius:var(--radius);background:transparent;color:var(--text-2);font-family:inherit;font-size:var(--fs-sm);text-align:left;cursor:pointer}.hub-menu-voce svg{width:16px;height:16px;color:var(--muted)}.hub-menu-voce:hover{background:var(--surface-hover);color:var(--text)}.hub-intestazione{display:flex;flex-wrap:wrap;align-items:flex-start;justify-content:space-between;gap:var(--sp-4);margin-bottom:var(--sp-5)}.hub-indietro{display:inline-flex;align-items:center;gap:6px;margin-bottom:var(--sp-3);color:var(--muted);font-size:var(--fs-sm)}.hub-indietro svg{width:14px;height:14px}.hub-sotto{display:block;margin-top:2px;color:var(--muted);font-size:var(--fs-xs);font-weight:400;line-height:1.45}.hub-corpo .alert{margin-bottom:var(--sp-4)}.hub-filtri{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-4);margin-bottom:var(--sp-4)}.hub-cerca{position:relative;flex:1;min-width:240px;max-width:420px}.hub-cerca svg{position:absolute;top:50%;left:10px;width:16px;height:16px;transform:translateY(-50%);color:var(--muted);pointer-events:none}.hub-cerca .form-input{padding-left:34px}.hub-spunta{display:flex;align-items:flex-start;gap:var(--sp-2);color:var(--text-2);font-size:var(--fs-sm);cursor:pointer}.hub-spunta input{width:16px;height:16px;margin-top:2px;accent-color:var(--accent)}.hub-riga-link{cursor:pointer}.hub-riga-spenta td{color:var(--muted)}.hub-badge-spazio{margin-left:var(--sp-2)}.hub-portali-badge{display:flex;flex-wrap:wrap;gap:var(--sp-1)}.hub-badge-portale{--b-bg: var(--accent-soft);--b-fg: var(--accent-text);--b-dot: var(--accent)}.hub-stato{display:inline-flex;align-items:center;gap:6px;font-size:var(--fs-sm)}.hub-stato svg{width:16px;height:16px}.hub-stato-ok{color:var(--tone-success-fg)}.hub-stato-attesa{color:var(--tone-warning-fg)}.hub-scheda{display:flex;flex-direction:column;gap:var(--sp-4)}.hub-bordo-sopra{border-top:1px solid var(--border)}.hub-password-provvisoria code{padding:2px 8px;border-radius:var(--radius-sm);background:var(--surface);color:var(--text);font-size:var(--fs-md);letter-spacing:.05em}.hub-password-provvisoria .btn{margin-left:var(--sp-2);vertical-align:middle}.hub-griglia-portali{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:var(--sp-3)}.hub-riquadro-portale{border:1px solid var(--border);border-top:3px solid var(--border-strong);border-radius:var(--radius-lg);background:var(--surface)}.hub-riquadro-portale.abilitato{border-top-color:var(--accent)}.hub-riquadro-testa{display:flex;align-items:center;gap:var(--sp-3);padding:var(--sp-3) var(--sp-4);cursor:pointer}.hub-riquadro-testa input{width:18px;height:18px;accent-color:var(--accent)}.hub-riquadro-portale:not(.abilitato) .hub-icona-piccola{background:var(--surface-2);color:var(--muted)}.hub-icona-piccola{width:32px;height:32px;margin:0}.hub-icona-piccola svg{width:16px;height:16px}.hub-riquadro-corpo{display:flex;flex-direction:column;gap:var(--sp-3);padding:0 var(--sp-4) var(--sp-4)}.hub-aziende{display:flex;flex-direction:column;gap:var(--sp-2);margin:0;padding:0;border:0}.hub-avviso-campo{color:var(--tone-warning-fg);font-size:var(--fs-xs)}.hub-azioni-scheda{display:flex;gap:var(--sp-3)}.hub-gruppo-campi+.hub-gruppo-campi{border-top:1px solid var(--border)}.hub-gruppo-titolo{margin-bottom:var(--sp-3);font-size:var(--fs-xs);font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--muted)}.hub-campo-largo{grid-column:1 / -1}.hub-nota-loghi{margin:0 0 var(--sp-4)}.hub-griglia-loghi{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));gap:var(--sp-4)}.hub-riquadro-logo{display:flex;flex-direction:column;gap:var(--sp-3);padding:var(--sp-3);border:1px solid var(--border);border-radius:var(--radius-lg)}.hub-logo-anteprima{display:flex;align-items:center;justify-content:center;height:120px;padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius);background:#fff}.hub-logo-anteprima[data-sfondo=scuro]{background:var(--side-bg)}.hub-logo-anteprima img{max-width:100%;max-height:100%;object-fit:contain}.hub-logo-testo{display:flex;flex-direction:column;flex:1;font-size:var(--fs-sm)}.hub-logo-azioni{display:flex;flex-wrap:wrap;gap:var(--sp-2)}.hub-zona-azioni{margin-top:var(--sp-6)}.hub-elenco-azioni{display:flex;flex-direction:column;gap:var(--sp-4)}.hub-azione{display:flex;align-items:center;gap:var(--sp-3)}.hub-azione-icona{display:inline-flex;color:var(--muted)}.hub-azione-icona svg{width:20px;height:20px}.hub-azione-testo{flex:1;color:var(--text);font-size:var(--fs-sm)}.auth-card .alert{margin-bottom:var(--sp-4);line-height:1.55}.auth-card .btn-secondario{border-color:var(--border-strong);background:var(--surface);color:var(--text)}.auth-card .btn-secondario:hover{border-color:var(--border-strong);background:var(--surface-hover)}.accesso-nota{margin:var(--sp-4) 0 var(--sp-2);color:var(--muted);font-size:var(--fs-xs);line-height:1.5}.accesso-qr{display:flex;justify-content:center;margin-bottom:var(--sp-2);padding:var(--sp-4);border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff}.accesso-qr canvas{display:block;width:200px;height:200px;image-rendering:pixelated}.accesso-chiave,.accesso-codici span{padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);color:var(--text);font-variant-numeric:tabular-nums;letter-spacing:.08em;text-align:center;word-break:break-all}.accesso-chiave{margin-bottom:var(--sp-4)}.accesso-codici{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--sp-2)}.campo-password{margin-bottom:var(--sp-3)}.campo-password-riga{position:relative}.campo-password-riga input{padding-right:40px}.auth-card .campo-password-riga input{margin-bottom:0}.campo-password-occhio{position:absolute;top:50%;right:6px;display:flex;padding:6px;transform:translateY(-50%);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--muted);cursor:pointer}.campo-password-occhio:hover{background:var(--surface-hover);color:var(--text)}.campo-password-requisiti{margin-top:6px;color:var(--muted);font-size:var(--fs-xs)}@media print{.auth-card .btn{display:none}}@media(max-width:760px){.hub-barra{flex-wrap:wrap;padding:var(--sp-3) var(--sp-4)}.hub-nome,.hub-utente-nome{display:none}.hub-nav{order:3;width:100%;margin:0}.hub-corpo{padding:var(--sp-7) var(--sp-4) var(--sp-6)}.hub-azione{flex-wrap:wrap}.hub-azione .btn{width:100%}}
