/* Interfaccia Nodus: stile condiviso, senza dipendenze dal framework. */
:root {
  color-scheme: light;
  --ink: #172b38;
  --muted: #526674;
  --surface: #ffffff;
  --canvas: #f4f7f8;
  --line: #d9e2e6;
  --nav: #152d3b;
  --nav-muted: #b9cbd4;
  --accent: #106e65;
  --accent-dark: #08554f;
  --accent-soft: #e4f2ee;
  --danger: #a12d35;
  --radius: 14px;
  font: 17px/1.5 "Segoe UI", system-ui, sans-serif;
  color: var(--ink);
  background: var(--canvas);
}
* { box-sizing: border-box; }
body { margin: 0; min-width: 320px; }
button, input, select, textarea { font: inherit; }
a { color: var(--accent); text-underline-offset: 3px; }
button, a, input, select { -webkit-tap-highlight-color: transparent; }
:focus-visible { outline: 3px solid #cf830b; outline-offset: 4px; }
h1, h2, p { margin-top: 0; }
h1 { font-size: clamp(1.8rem, 3vw, 2.3rem); line-height: 1.2; letter-spacing: -.035em; }
h2 { font-size: 1.3rem; letter-spacing: -.02em; }
.muted { color: var(--muted); }
.eyebrow { color: var(--accent); font-size: .78rem; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; }
.brand { display: flex; align-items: center; gap: 12px; font-size: 1.6rem; font-weight: 700; letter-spacing: -.04em; }
.brand-mark { display: grid; place-items: center; width: 42px; height: 42px; background: var(--accent); border-radius: 12px; color: #fff; font-size: 1.3rem; }
.app-shell { display: grid; grid-template-columns: 270px minmax(0, 1fr); min-height: 100dvh; }
.sidebar { background: var(--nav); color: #fff; padding: 32px 20px 20px; display: flex; flex-direction: column; gap: 30px; position: sticky; top: 0; height: 100dvh; }
.sidebar .brand { padding: 0 10px; }
.workspace-label { padding: 0 12px; color: var(--nav-muted); font-size: .76rem; letter-spacing: .1em; text-transform: uppercase; }
.navigation { display: flex; flex-direction: column; gap: 7px; }
.nav-link { display: flex; align-items: center; gap: 14px; min-height: 52px; padding: 12px 15px; border-radius: 10px; color: #dce6eb; text-decoration: none; font-weight: 500; }
.nav-link:hover { background: #233e4d; color: #fff; }
.nav-link[aria-current="page"] { background: #285348; color: #fff; box-shadow: inset 3px 0 #80ceae; }
.icon { width: 22px; height: 22px; flex-shrink: 0; stroke: currentColor; fill: none; stroke-width: 1.7; stroke-linecap: round; stroke-linejoin: round; }
.sidebar-account { margin-top: auto; padding: 18px 10px 0; border-top: 1px solid #39515f; }
.sidebar-account p { overflow-wrap: anywhere; margin: 7px 0 13px; color: var(--nav-muted); font-size: .8rem; }
.role-badge { display: inline-block; border-radius: 6px; padding: 4px 8px; background: #2b4857; font-size: .7rem; font-weight: 700; letter-spacing: .06em; }
.logout { color: #e3ebef; background: transparent; border: 1px solid #516874; border-radius: 8px; min-height: 44px; padding: 8px 16px; cursor: pointer; width: 100%; }
.logout:hover { background: #294653; }
.main { min-width: 0; }
.topbar { min-height: 86px; padding: 18px 42px; display: flex; align-items: center; justify-content: space-between; gap: 18px; background: var(--surface); border-bottom: 1px solid var(--line); }
.topbar-label { font-size: .88rem; color: var(--muted); }
.local-status { display: inline-flex; align-items: center; gap: 8px; color: var(--muted); font-size: .8rem; }
.local-status::before { content: ""; width: 7px; height: 7px; border-radius: 50%; background: var(--accent); }
.content { max-width: 1400px; margin: 0 auto; padding: 42px; }
.page-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 24px; margin-bottom: 30px; }
.page-heading h1 { margin-bottom: 10px; }
.page-heading p { margin-bottom: 0; max-width: 650px; }
.card { background: var(--surface); border: 1px solid var(--line); border-radius: var(--radius); }
.card-heading { padding: 22px 26px; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: center; gap: 18px; }
.card-heading h2 { margin: 0; font-size: 1.05rem; }
.count { padding: 3px 10px; border-radius: 20px; background: var(--accent-soft); color: var(--accent-dark); font-size: .8rem; }
.empty-state { padding: 66px 24px; text-align: center; max-width: 590px; margin: 0 auto; }
.empty-icon { display: grid; place-items: center; width: 64px; height: 64px; border-radius: 18px; background: var(--accent-soft); color: var(--accent); margin: 0 auto 22px; }
.empty-icon .icon { width: 30px; height: 30px; }
.empty-state h2 { margin-bottom: 10px; }
.empty-state p { color: var(--muted); margin-bottom: 0; }
.button { display: inline-flex; align-items: center; justify-content: center; gap: 10px; padding: 12px 20px; min-height: 48px; border: 1px solid transparent; border-radius: 9px; background: var(--accent); color: #fff; font-weight: 600; cursor: pointer; text-decoration: none; }
.button:hover { background: var(--accent-dark); color: #fff; }
.button-secondary { border-color: var(--line); background: #fff; color: var(--ink); }
.button-secondary:hover { background: var(--canvas); color: var(--ink); }
.field { margin-bottom: 22px; }
.field label { display: block; font-size: .92rem; font-weight: 600; margin-bottom: 8px; }
.field input, .field select, .field textarea { width: 100%; min-height: 52px; border: 1px solid #a9bcc6; border-radius: 9px; background: #fff; color: var(--ink); padding: 12px 14px; }
.field textarea { min-height: 110px; resize: vertical; }
.settings-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 24px; align-items: start; }
.settings-form { padding: 26px; }
.profile-example { margin-top: 0; margin-bottom: 24px; }
.settings-form > .field-help { margin-bottom: 20px; }
.settings-role { color: var(--ink); background: #dfe8ec; }
.password-help ul { padding-left: 20px; }
.chat-layout { display: grid; grid-template-columns: 280px minmax(0,1fr); height: calc(100dvh - 330px); min-height: 500px; max-height: 720px; overflow: hidden; }
.chat-directory { border-right: 1px solid var(--line); overflow-y: auto; background: #fafcfc; }
.chat-directory-heading { padding: 20px; border-bottom: 1px solid var(--line); }
.chat-directory-heading h2 { font-size: 1rem; margin-bottom: 14px; }
.chat-directory-heading input { width: 100%; min-height: 44px; border: 1px solid var(--line); border-radius: 8px; padding: 9px 10px; font-size: .86rem; }
.chat-contact { display: flex; flex-direction: column; gap: 6px; padding: 18px 20px; border-bottom: 1px solid var(--line); text-decoration: none; color: var(--ink); }
.chat-contact:hover { background: #f0f6f4; }
.chat-contact.is-selected { background: var(--accent-soft); box-shadow: inset 3px 0 var(--accent); }
.contact-label { font-size: .95rem; font-weight: 600; overflow-wrap: anywhere; }
.contact-state { display: flex; align-items: center; gap: 7px; font-size: .76rem; color: var(--muted); }
.presence-dot { width: 8px; height: 8px; border-radius: 50%; background: #8d9ca5; display: inline-block; flex-shrink: 0; }
.presence-dot.is-online { background: #198359; }
.contact-preview { font-size: .82rem; color: var(--muted); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.contact-empty { padding: 20px; font-size: .9rem; }
.chat-conversation { display: flex; flex-direction: column; min-height: 0; min-width: 0; }
.chat-peer { display: flex; align-items: center; justify-content: space-between; gap: 16px; padding: 20px 24px; border-bottom: 1px solid var(--line); }
.chat-peer h2 { font-size: 1rem; margin-bottom: 7px; overflow-wrap: anywhere; }
.chat-history { flex: 1; min-height: 0; padding: 22px; background: #f6f9fa; overflow-y: auto; }
.chat-messages, .ticket-messages { display: flex; flex-direction: column; gap: 16px; }
.message-bubble { padding: 14px 18px; max-width: 88%; border: 1px solid var(--line); border-radius: 12px 12px 12px 3px; background: #fff; align-self: flex-start; min-width: 100px; }
.message-own { align-self: flex-end; background: var(--accent-soft); border-color: #c5ded4; border-radius: 12px 12px 3px 12px; }
.message-author { color: var(--accent-dark); font-size: .78rem; font-weight: 700; margin-bottom: 6px; overflow-wrap: anywhere; }
.message-body { white-space: pre-wrap; overflow-wrap: anywhere; margin: 0 0 8px; }
.message-time { display: block; font-size: .7rem; color: var(--muted); text-align: right; }
.chat-compose { padding: 18px 22px; border-top: 1px solid var(--line); background: #fff; }
.chat-compose textarea { width: 100%; min-height: 80px; max-height: 220px; resize: vertical; border: 1px solid #a9bcc6; border-radius: 9px; padding: 12px 14px; }
.chat-compose-actions { display: flex; align-items: center; justify-content: space-between; gap: 15px; margin-top: 10px; }
.chat-compose-actions .field-help { margin: 0; font-size: .72rem; }
.chat-start { margin: 40px 0; text-align: center; font-size: .9rem; }
.history-button { display: block; margin: 0 auto 20px; font-size: .8rem; }
.chat-mobile-back { display: none; }
.ticket-thread { max-width: 950px; }
.ticket-messages { padding: 26px; background: #f6f9fa; }
.ticket-readonly { padding: 20px 26px; margin: 0; border-top: 1px solid var(--line); }
.practice-tickets { margin-top: 26px; }
@media (max-width: 1000px) { .settings-grid { grid-template-columns: 1fr; } .chat-layout { grid-template-columns: 240px minmax(0,1fr); } }
@media (max-width: 760px) {
  .settings-form { padding: 22px 20px; }
  .chat-layout { display: block; height: auto; min-height: 350px; max-height: none; }
  .chat-directory { border-right: 0; max-height: 500px; }
  .chat-layout.has-peer .chat-directory { display: none; }
  .chat-layout:not(.has-peer) .chat-conversation { display: none; }
  .chat-conversation { min-height: 540px; height: 72dvh; }
  .chat-peer { padding: 16px; }
  .chat-peer .field-kind { display: none; }
  .chat-mobile-back { display: block; padding: 14px 16px; font-size: .85rem; border-bottom: 1px solid var(--line); }
  .chat-history, .ticket-messages { padding: 16px; }
  .message-bubble { max-width: 95%; padding: 12px 14px; }
  .chat-compose { padding: 14px 16px; }
  .chat-compose-actions { align-items: flex-end; }
  .chat-compose-actions .field-help { max-width: 120px; }
  .chat-compose-actions .button { padding: 10px 14px; font-size: .86rem; }
  .practice-tickets .card-heading { flex-wrap: wrap; }
}
.field input[aria-invalid="true"] { border-color: var(--danger); }
.field input[type="checkbox"] { width: 22px; min-height: 22px; height: 22px; accent-color: var(--accent); }
.field .checkbox-label { display: flex; align-items: center; gap: 12px; min-height: 44px; }
.account-type { padding-bottom: 18px; border-bottom: 1px solid var(--line); }
.table-action { min-height: 44px; padding: 8px 14px; }
.account-actions { display: flex; flex-direction: column; align-items: flex-start; gap: 8px; }
.completion-dialog { width: min(620px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); overflow: auto; padding: 28px; border: 1px solid var(--line); border-radius: 18px; color: var(--ink); background: white; box-shadow: 0 20px 70px #132b3659; }
.completion-dialog::backdrop { background: #102c3b99; }
.completion-dialog h2 { margin-top: 0; }
.completion-dialog .form-actions { flex-wrap: wrap; }
.completion-dialog button:disabled { cursor: not-allowed; opacity: .55; }
.count-inactive { background: #eef0f2; color: var(--muted); }
[hidden] { display: none !important; }
.practice-filters { padding: 24px; margin-bottom: 26px; }
.filter-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 18px; }
.filter-grid .field { margin-bottom: 8px; }
.field select:disabled { opacity: 1; background: #eef2f4; color: #596a75; cursor: not-allowed; }
.practice-table { font-size: .88rem; }
.practice-table th, .practice-table td { padding: 17px 12px; }
.practice-table th { white-space: nowrap; }
.practice-table td { vertical-align: middle; }
.practice-table td:first-child { min-width: 160px; }
.practice-table .tax-code { white-space: nowrap; letter-spacing: .01em; }
.table-caption { display: block; color: var(--muted); font-size: .78rem; margin-top: 5px; }
.tax-code { font-variant-numeric: tabular-nums; font-weight: 600; letter-spacing: .035em; overflow-wrap: anywhere; }
.practice-status { display: inline-flex; align-items: center; min-height: 30px; padding: 5px 10px; border-radius: 7px; font-size: .8rem; font-weight: 600; white-space: nowrap; }
.status-sent { color: #15516d; background: #e5f2fa; }
.status-suspended { color: #955314; background: #fff0d8; }
.status-working { color: #1e5b72; background: #e3f1f3; }
.status-accepted { color: #145b42; background: #e0f2e8; }
.pagination { display: flex; justify-content: space-between; gap: 20px; align-items: center; padding: 20px; border-top: 1px solid var(--line); font-size: .85rem; }
.pagination > div { display: flex; gap: 10px; }
.status-legend { margin-top: 24px; color: var(--muted); font-size: .88rem; }
.status-legend summary { cursor: pointer; padding: 12px 0; font-weight: 600; color: var(--ink); }
.status-legend dl { margin-top: 0; }
.status-legend dl > div { display: grid; grid-template-columns: 140px minmax(0, 1fr); gap: 20px; padding: 10px 0; }
.status-legend dt { font-weight: 600; color: var(--ink); }
.status-legend dd { margin: 0; }
.practice-topbar { display: flex; align-items: center; justify-content: space-between; gap: 20px; padding: 22px 36px; background: var(--surface); border-bottom: 1px solid var(--line); }
.practice-workspace { max-width: 1500px; margin: 0 auto; padding: 36px; }
.practice-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 26px; margin-bottom: 26px; }
.practice-meta { display: flex; flex-wrap: wrap; gap: 20px; margin: -12px 0 28px; font-size: .85rem; color: var(--muted); }
.practice-data { margin: 0; padding: 4px 26px; }
.practice-data > div { padding: 20px 0; border-bottom: 1px solid var(--line); }
.practice-data > div:last-child { border-bottom: 0; }
.practice-data dt { color: var(--muted); font-size: .85rem; margin-bottom: 8px; }
.practice-data dd { margin: 0; overflow-wrap: anywhere; }
.practice-value { white-space: pre-wrap; }
.required-label { display: inline-block; margin-left: 8px; padding: 2px 6px; border-radius: 4px; background: var(--accent-soft); color: var(--accent-dark); font-size: .7rem; }
.document-list { padding: 0 26px; margin: 0; list-style: none; }
.document-list li { display: flex; align-items: center; gap: 18px; padding: 24px 0; border-bottom: 1px solid var(--line); }
.document-list li:last-child { border-bottom: 0; }
.document-icon { width: 44px; height: 44px; display: grid; place-items: center; background: var(--accent-soft); color: var(--accent); border-radius: 9px; flex-shrink: 0; }
.document-info { flex: 1; min-width: 0; }
.document-info h3 { font-size: 1rem; margin: 0 0 5px; overflow-wrap: anywhere; }
.document-info p { color: var(--muted); font-size: .85rem; margin: 0; overflow-wrap: anywhere; }
.practice-notice { padding: 16px 20px; border: 1px solid var(--line); background: var(--surface); border-radius: 10px; margin-bottom: 24px; }
button:disabled { cursor: not-allowed; opacity: .65; }
.common-fields { border: 1px solid #c5dfd5; border-radius: 11px; background: #f0f8f5; padding: 20px; margin-bottom: 24px; }
.common-fields h3 { margin: 0 0 8px; font-size: 1rem; }
.common-fields p { font-size: .85rem; margin: 0 0 16px; }
.common-field-labels { display: flex; flex-wrap: wrap; gap: 10px; }
.common-field-labels > span { padding: 7px 10px; border: 1px solid #c7ded5; border-radius: 7px; background: #fff; font-size: .82rem; }
.common-field-labels strong { color: var(--accent-dark); margin-left: 8px; font-size: .7rem; }
@media (max-width: 1100px) { .filter-grid { grid-template-columns: 1fr 1fr; } }
@media (max-width: 760px) {
  .practice-filters { padding: 20px; }
  .practice-table, .practice-table tbody, .practice-table tr { display: block; width: 100%; }
  .practice-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0,0,0,0); }
  .practice-table tr { padding: 16px 20px; border-bottom: 1px solid var(--line); }
  .practice-table tr:last-child { border-bottom: 0; }
  .practice-table td { display: grid; grid-template-columns: 110px minmax(0, 1fr); gap: 8px 12px; border: 0; padding: 8px 0; }
  .practice-table td:first-child { min-width: 0; }
  .practice-table td::before { content: attr(data-label); color: var(--muted); font-size: .8rem; font-weight: 500; }
  .practice-table td > .table-caption { grid-column: 2; margin: 0; }
  .filter-grid { grid-template-columns: 1fr; gap: 14px; }
  .practice-topbar { padding: 16px 20px; }
  .practice-topbar .brand { font-size: 1.2rem; gap: 8px; }
  .practice-topbar .brand-mark { width: 34px; height: 34px; }
  .practice-topbar .button { font-size: .8rem; padding: 10px 12px; }
  .practice-workspace { padding: 28px 20px; }
  .practice-detail-grid { grid-template-columns: 1fr; gap: 20px; }
  .practice-meta { flex-direction: column; gap: 8px; }
  .practice-documents .card-heading { flex-direction: column; align-items: stretch; }
  .practice-data, .document-list { padding-left: 20px; padding-right: 20px; }
  .document-list li { flex-wrap: wrap; gap: 12px; }
  .document-info { flex-basis: calc(100% - 60px); }
  .document-list .button { margin-left: 56px; }
  .status-legend dl > div { grid-template-columns: 1fr; gap: 5px; }
  .pagination { flex-direction: column; align-items: flex-start; }
}
.catalog-summary { display: flex; gap: 24px; color: var(--muted); margin: -6px 0 26px; font-size: .9rem; }
.catalog-summary strong { color: var(--ink); }
.category-card { margin-bottom: 24px; }
.category-title { display: flex; align-items: center; gap: 14px; }
.category-title .empty-icon { margin: 0; width: 45px; height: 45px; border-radius: 11px; }
.category-title .icon { width: 24px; height: 24px; }
.category-title .muted { font-size: .8rem; }
.quiet-link { font-size: .9rem; font-weight: 600; }
.service-list { padding: 0 26px; }
.service-item { padding: 24px 0; border-bottom: 1px solid var(--line); }
.service-item:last-child { border-bottom: 0; }
.service-item-heading { display: flex; gap: 20px; align-items: center; justify-content: space-between; }
.service-item h3 { margin: 0 0 5px; font-size: 1.1rem; }
.service-item p { margin: 0; font-size: .85rem; }
.category-empty { padding: 26px 0; margin: 0; }
.category-footer { border-top: 1px solid var(--line); padding: 18px 26px; font-size: .9rem; }
.service-details { margin-top: 15px; font-size: .9rem; }
.service-details summary { color: var(--accent); cursor: pointer; padding: 8px 0; font-weight: 600; }
.configured-fields { list-style: none; padding: 6px 0 0; margin: 0; }
.configured-fields li { display: flex; align-items: center; gap: 12px; padding: 12px 0; }
.configured-fields li > span:first-of-type { flex: 1; overflow-wrap: anywhere; }
.configured-fields li { flex-wrap:wrap; }
.service-item-actions { display:flex; flex-wrap:wrap; gap:8px; }
.configured-fields .catalog-node { display:block; }
.catalog-field-row { display:flex; align-items:center; flex-wrap:wrap; gap:12px; }
.catalog-field-label { flex:1; overflow-wrap:anywhere; }
.catalog-linked-fields { margin:12px 0 0 22px; padding-left:18px; border-left:3px solid var(--accent-soft); }
.service-item .catalog-condition { margin:8px 0 0 34px; color:var(--accent-dark); font-size:.85rem; }
.field-kind { padding: 3px 9px; border-radius: 5px; background: var(--canvas); color: var(--muted); font-size: .8rem; }
.wizard-steps { display: flex; list-style: none; gap: 26px; padding: 0; margin: 0 0 26px; }
.wizard-steps li { color: var(--muted); display: flex; align-items: center; gap: 10px; font-size: .9rem; }
.wizard-steps span { width: 30px; height: 30px; display: grid; place-items: center; border-radius: 50%; background: #e2e8eb; font-weight: 700; }
.wizard-steps .is-active { color: var(--accent); font-weight: 600; }
.wizard-steps .is-active span { background: var(--accent); color: white; }
.service-wizard { max-width: 850px; }
.wizard-panel { padding: 30px; margin-bottom: 24px; }
.wizard-panel > h2 { margin-bottom: 12px; }
.wizard-panel > .muted { margin-bottom: 26px; }
.editor-field { border: 1px solid var(--line); border-radius: 11px; padding: 20px; margin-bottom: 16px; background: #fafcfc; }
.editor-field-heading { display: flex; align-items: center; justify-content: space-between; gap: 20px; margin-bottom: 18px; }
.editor-field h3 { margin: 0; font-size: .92rem; }
.remove-field { min-height: 44px; padding: 8px 10px; border: 0; border-radius: 7px; background: transparent; color: var(--danger); font-size: .85rem; font-weight: 600; cursor: pointer; }
.remove-field:hover { background: #fff0f0; }
.editor-field-grid { display: grid; grid-template-columns: minmax(0, 1.5fr) minmax(150px, 1fr); gap: 20px; }
.editor-field .field { margin-bottom: 0; }
.delete-input { display: none; }
.field-add-actions { display: flex; flex-wrap: wrap; gap: 12px; }
.editor-status { font-size: .85rem; margin: 14px 0 0; }
.wizard-footer { border-top: 1px solid var(--line); margin-top: 26px; padding-top: 22px; align-items: center; }
@media (max-width: 760px) {
  .wizard-panel { padding: 22px 18px; }
  .wizard-steps { gap: 15px; }
  .wizard-steps li { font-size: .8rem; }
  .wizard-steps span { width: 27px; height: 27px; }
  .editor-field { padding: 16px; }
  .editor-field-grid { grid-template-columns: 1fr; gap: 18px; }
  .category-card .card-heading { align-items: flex-start; }
  .category-card .quiet-link { font-size: .78rem; text-align: right; max-width: 100px; }
  .service-list { padding: 0 20px; }
  .category-footer { padding: 18px 20px; }
}
.field-help { color: var(--muted); font-size: .82rem; margin: 7px 0 0; }
.error, .success { padding: 14px 18px; border-radius: 9px; margin-bottom: 22px; }
.error { background: #fff0f0; border: 1px solid #e6b5bb; color: #862831; }
.success { background: var(--accent-soft); border: 1px solid #aed5c9; color: var(--accent-dark); }
.form-card { padding: 28px; max-width: 640px; }
.password-wrap { position: relative; }
.password-wrap input { padding-right: 95px; }
.password-toggle { position: absolute; right: 5px; top: 5px; min-height: 42px; padding: 7px 10px; border: 0; border-radius: 6px; background: transparent; color: var(--accent); font-size: .84rem; font-weight: 600; cursor: pointer; }
.password-toggle:hover { background: var(--accent-soft); }
.login-page { min-height: 100dvh; display: grid; grid-template-columns: minmax(320px, .9fr) minmax(460px, 1.1fr); }
.login-intro { background: var(--nav); color: #fff; padding: 52px clamp(32px, 6vw, 90px); display: flex; flex-direction: column; justify-content: space-between; gap: 50px; }
.login-intro h1 { font-size: clamp(2.4rem, 4.5vw, 3.8rem); max-width: 560px; }
.login-intro p { color: #c7d7df; max-width: 440px; }
.login-note { border-top: 1px solid #39515f; padding-top: 22px; font-size: .84rem; }
.login-panel { display: grid; place-items: center; padding: 48px 30px; }
.login-form { width: 100%; max-width: 440px; }
.login-form h1 { font-size: 2rem; margin: 12px 0; }
.login-form > .muted { margin-bottom: 32px; }
.login-form .button { width: 100%; margin-top: 5px; }
.login-footer { margin-top: 28px; font-size: .8rem; color: var(--muted); text-align: center; }
.menu-toggle { display: none; align-items: center; gap: 8px; border: 1px solid var(--line); border-radius: 8px; background: #fff; color: var(--ink); min-height: 44px; padding: 8px 12px; cursor: pointer; }
.table-scroll { overflow: auto; }
.client-table .tax-code { white-space: nowrap; }
.client-table .table-caption { overflow-wrap: anywhere; max-width: 250px; }
table { border-collapse: collapse; width: 100%; text-align: left; }
th, td { padding: 17px 24px; border-bottom: 1px solid var(--line); }
th { font-size: .8rem; color: var(--muted); background: #fafcfc; }
td { font-size: .9rem; }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 100; transform: translateY(-200%); padding: 12px 18px; background: #fff; border: 2px solid var(--accent); border-radius: 8px; }
.skip-link:focus { transform: translateY(0); }
.menu-backdrop { position: fixed; inset: 0; z-index: 25; border: 0; background: #10293880; cursor: pointer; }
.menu-backdrop[hidden] { display: none; }
.account-details { margin: 0; padding: 8px 26px; }
.account-details > div { display: grid; grid-template-columns: 120px minmax(0, 1fr); gap: 20px; padding: 20px 0; border-bottom: 1px solid var(--line); }
.account-details > div:last-child { border-bottom: 0; }
.account-details dt { color: var(--muted); }
.account-details dd { margin: 0; overflow-wrap: anywhere; }
.field-errors { color: var(--danger); font-size: .85rem; margin-top: 8px; }
.error ul, .field-errors ul { padding-left: 20px; margin: 0; }
.form-actions { display: flex; flex-wrap: wrap; gap: 12px; padding-top: 8px; }
.sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; }
.intro-kicker { font-size: .8rem; letter-spacing: .16em; }
.login-illustration { background: #1d3948; border: 1px solid #496775; padding: 22px; border-radius: 18px; margin-top: 36px; max-width: 380px; transform: rotate(-3deg); box-shadow: 0 18px 40px #08182340; }
.illustration-line { height: 7px; width: 110px; background: #91b4bd; border-radius: 8px; margin-bottom: 24px; }
.illustration-row { display: flex; gap: 14px; align-items: center; border-top: 1px solid #42606d; padding: 18px 0 0; margin-top: 18px; }
.illustration-row > span { width: 30px; height: 32px; background: #8bc6b4; border-radius: 5px; }
.illustration-row > div { flex: 1; }
.illustration-row i { display: block; height: 5px; width: 75%; background: #a5bbc5; border-radius: 5px; margin: 7px 0; }
.illustration-row i + i { width: 50%; background: #587685; }
.illustration-row b { display: grid; place-items: center; width: 24px; height: 24px; border-radius: 50%; background: #355f52; color: #afe0cd; font-size: .8rem; }
@media (max-width: 1000px) {
  .app-shell { grid-template-columns: 235px minmax(0, 1fr); }
  .content { padding: 30px 26px; }
  .topbar { padding: 18px 26px; }
  .login-page { grid-template-columns: minmax(280px, .8fr) minmax(420px, 1.2fr); }
  .login-intro { padding: 40px 30px; }
}
@media (max-width: 760px) {
  .app-shell { display: block; }
  .sidebar { position: fixed; z-index: 30; width: min(300px, 88vw); left: 0; top: 0; transform: translateX(-100%); visibility: hidden; }
  .sidebar[data-open="true"] { transform: translateX(0); visibility: visible; }
  .menu-toggle { display: inline-flex; }
  .topbar { min-height: 74px; padding: 14px 20px; }
  .topbar-label { display: none; }
  .content { padding: 28px 20px; }
  .page-heading { flex-direction: column; gap: 18px; }
  .card-heading { padding: 20px; }
  .empty-state { padding: 46px 20px; }
  .login-page { display: block; }
  .login-intro { padding: 24px; gap: 20px; }
  .login-intro h1, .login-intro > div:not(:first-child), .login-note { display: none; }
  .login-panel { padding: 38px 24px; }
  .form-card { padding: 22px; }
  th, td { padding: 14px 18px; }
}
[hidden] { display: none !important; }
.notification-badge { display: inline-flex; align-items: center; justify-content: center; min-width: 22px; height: 22px; padding: 0 6px; background: #c62c3c; color: #fff; border-radius: 999px; font-size: .75rem; font-weight: 700; vertical-align: middle; }
.nav-link .notification-badge { margin-left: auto; }
.top-notifications { display: flex; gap: 16px; margin-left: auto; align-items: center; }
.top-notifications a { display: flex; gap: 6px; align-items: center; text-decoration: none; font-weight: 650; min-height: 42px; }
.has-unread { animation: notification-pulse 2.4s ease-in-out infinite; }
@keyframes notification-pulse { 50% { box-shadow: inset 0 0 0 2px #d94b5c80; } }
.identity-form-grid { display: grid; grid-template-columns: repeat(2,minmax(0,1fr)); gap: 24px; padding: 26px; }
.practice-form { display: grid; gap: 24px; }
.client-match:not(:empty) { padding: 16px 26px; background: var(--accent-soft); }
.client-match .button { margin: 8px; }
.document-upload { padding: 0 26px 26px; }
.document-upload .checkbox-label { margin-bottom: 14px; }
.checkbox-label { display: flex; gap: 10px; align-items: center; padding: 12px 0; cursor: pointer; }
.checkbox-label input[type=checkbox] { width: 22px; height: 22px; flex: 0 0 22px; }
.ticket-files { padding: 0 28px 20px; margin: 0; list-style: none; overflow-wrap: anywhere; }
.ticket-files a { display: inline-block; padding: 10px 0; }
.ticket-type-card, .sound-settings { padding: 26px; margin-top: 24px; }
.sound-settings input[type=range] { padding: 0; }
.error-event { padding: 24px; border-bottom: 1px solid var(--line); overflow-wrap: anywhere; }
.error-event pre { white-space: pre-wrap; }
.button-danger { background: #b42332; }
.practice-topbar { flex-wrap: wrap; gap: 12px; }
@media (max-width:760px) { .identity-form-grid { grid-template-columns:1fr; padding:20px; } .document-upload { padding:0 20px 20px; } .top-notifications { gap:12px; } .chat-contact .notification-badge { align-self:flex-start; } }
@media (prefers-reduced-motion:reduce) { .has-unread { animation:none; outline:2px solid #d94b5c80; } }
.practice-status-menu { display:flex; flex-wrap:wrap; align-items:center; gap:8px; max-width:100%; }
.practice-status-select { min-height:52px; max-width:100%; border:1px solid var(--line); padding:12px 14px; font:inherit; font-size:.85rem; cursor:pointer; }
@media (max-width:760px) { .topbar { flex-wrap:wrap; gap:8px; } .top-notifications { flex-wrap:wrap; } }
.report-states { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 18px; margin: 22px 0; }
.report-state { border-radius: 22px; padding: 24px 20px; min-height: 172px; border-top: 5px solid #168678; }
.report-state h2 { font-size: 17px; margin: 0 0 20px; }
.report-state strong { display: block; font-size: 44px; line-height: 1; letter-spacing: -1px; }
.report-state p { font-size: 13px; color: var(--muted); margin: 14px 0 0; }
.report-state-sent { border-color: #4380ae; } .report-state-suspended { border-color: #c57927; } .report-state-working { border-color: #18897e; } .report-state-accepted { border-color: #398950; }
.report-update { color: var(--muted); font-size: 14px; }
.report-section { border-radius: 22px; margin: 24px 0; overflow: hidden; }
.report-presence-totals, .report-user-presence { display: inline-flex; align-items: center; gap: 8px; white-space: nowrap; }
.report-empty { padding: 26px; margin: 0; color: var(--muted); }
.report-pagination { padding: 18px 24px; }
@media (max-width: 1100px) { .report-states { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 650px) { .report-states { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; } .report-state { padding: 20px 16px; } .report-section .card-heading { flex-wrap: wrap; } }
.report-error-list { max-height: 250px; overflow: auto; }
.report-error-list .error-event { padding: 18px 26px; }
.report-error-list .error-event h3 { font-size: 16px; margin: 0 0 8px; }
.report-error-list .error-event p { font-size: 14px; }
.service-download-field .field-label { display: block; font-weight: 600; margin-bottom: 8px; }
.service-download-field .button { width: fit-content; }
.field-add-panel { margin-top: 20px; padding: 18px; border: 1px dashed #9fb8c2; border-radius: 12px; background: #f7fafb; }
.field-add-question { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 10px 14px; align-items: end; }
.editor-add-button { flex: 0 0 48px; width: 48px; height: 48px; padding: 0; }
.editor-add-button .icon { width: 24px; height: 24px; }
.help-sections { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 28px; }
.help-sections a { min-height: 48px; display: inline-flex; align-items: center; padding: 12px 22px; border: 1px solid var(--line); border-radius: 10px; background: white; color: var(--ink); text-decoration: none; font-weight: 650; }
.help-sections a[aria-current="page"] { background: var(--accent); color: white; border-color: var(--accent); }
.help-heading { margin-bottom: 24px; }
.help-heading h2 { margin-bottom: 8px; }
.help-layout { display: grid; grid-template-columns: minmax(230px, 300px) minmax(0, 1fr); gap: 24px; align-items: start; }
.help-index { padding: 24px; }
.help-index h3 { margin: 0 0 14px; }
.help-index ol { padding-left: 22px; margin: 0; }
.help-index a { display: block; padding: 8px 2px; color: var(--accent-dark); text-underline-offset: 3px; }
.help-guides { display: grid; gap: 14px; min-width: 0; }
.help-topic { scroll-margin-top: 24px; overflow-wrap: anywhere; }
.help-topic:target { border-color: var(--accent); }
.help-topic summary { display: flex; align-items: center; gap: 12px; padding: 20px; font-size: 1.05rem; font-weight: 650; cursor: pointer; list-style: none; border-radius: var(--radius); }
.help-topic summary::-webkit-details-marker { display: none; }
.help-topic summary::after { content: "+"; margin-left: auto; font-size: 24px; flex-shrink: 0; color: var(--accent-dark); }
.help-topic[open] > summary::after { content: "−"; }
.help-number { flex: 0 0 32px; height: 32px; display: grid; place-items: center; border-radius: 50%; background: var(--accent-soft); color: var(--accent-dark); font-size: .85rem; }
.help-body { border-top: 1px solid var(--line); padding: 22px 26px; }
.help-body > p:first-child { margin-top: 0; }
.help-body ol { padding-left: 24px; }
.help-body li { padding-left: 4px; margin-bottom: 16px; line-height: 1.7; }
.help-note { background: var(--accent-soft); border-left: 3px solid var(--accent); border-radius: 6px; padding: 16px; line-height: 1.65; }
@media (max-width: 1000px) { .help-layout { grid-template-columns: minmax(0, 1fr); } }
.field-add-question label { grid-column: 1 / -1; font-weight: 650; }
.field-add-question select { min-height: 48px; border: 1px solid #a9bcc6; border-radius: 9px; background: white; padding: 10px 12px; }
.editor-field-actions { display: flex; align-items: center; gap: 6px; }
.editor-question-label { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 8px; }
.editor-question-label label { margin-bottom: 0; }
.answer-option { display: grid; grid-template-columns: minmax(120px, 1fr) auto auto; align-items: center; gap: 8px; margin: 10px 0; }
.answer-option input, .answer-branch input, .answer-branch-tools select { min-height: 44px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 8px; background: white; font: inherit; max-width: 100%; }
.answer-branch { margin-top: 16px; padding: 18px; border: 1px solid #b9d8ce; border-left: 4px solid var(--accent); border-radius: 10px; background: #f0f8f5; }
.answer-branch[hidden], .answer-dependent-field[hidden] { display: none; }
.answer-branch-title { margin: 0 0 12px; font-size: 1rem; }
.answer-branch-tools { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 14px 0; }
.answer-branch .field-help input { display: block; width: 100%; margin: 8px 0; }
.answer-branch-rows > .editor-field:last-child { margin-bottom: 0; }
.answer-dependent-field { margin-left: 16px; padding-left: 16px; border-left: 2px solid #c5dfd5; }
@media (max-width: 760px) { .answer-option { grid-template-columns: 1fr; } .answer-branch { padding: 12px; } }
.move-field { width: 40px; min-height: 40px; border: 1px solid var(--line); border-radius: 8px; background: white; color: var(--ink); cursor: pointer; font-weight: 700; }
.move-field:disabled { opacity: .35; cursor: default; }
.editor-help-row, .editor-options, .editor-condition { margin-top: 18px; }
.editor-condition { padding: 16px; border-radius: 10px; background: #eef7f4; border-left: 4px solid var(--accent); }
.editor-condition-title { margin: 0; font-weight: 700; }
.editor-section { border-color: #84b8aa; background: #f2faf7; }
.conditional-service-section { margin: 24px -4px 0; padding: 22px 20px 4px; border: 1px solid #b9d8ce; border-radius: 13px; background: #f7fbfa; }
.conditional-section-heading { padding-bottom: 4px; margin-bottom: 20px; border-bottom: 1px solid #d6e8e2; }
.conditional-section-heading h3 { margin: 0 0 6px; font-size: 1.15rem; }
.conditional-section-heading .eyebrow { margin-bottom: 4px; }
.choice-list { display: grid; gap: 9px; }
.choice-list > div label, .choice-list label { display: flex; align-items: center; gap: 10px; min-height: 44px; margin: 0; padding: 8px 12px; border: 1px solid var(--line); border-radius: 9px; background: white; cursor: pointer; }
.choice-list input[type="radio"], .choice-list input[type="checkbox"] { width: 22px; min-height: 22px; height: 22px; flex: 0 0 22px; padding: 0; accent-color: var(--accent); }
.module-download-link { display: inline-block; margin-top: 10px; }
@media (max-width: 760px) {
  .editor-field-heading { align-items: flex-start; }
  .editor-field-actions { flex-wrap: wrap; justify-content: flex-end; }
  .conditional-service-section { margin-left: 0; margin-right: 0; padding: 18px 14px 2px; }
}
.model-upload-control { display: flex; align-items: center; flex-wrap: wrap; gap: 12px; }
.model-upload-button { position: relative; overflow: hidden; cursor: pointer; }
.model-upload-button:focus-within { outline: 3px solid #2563eb; outline-offset: 3px; }
.model-upload-button .model-file-input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }
.model-upload-control [data-model-file-name] { overflow-wrap: anywhere; min-width: 0; }
.editor-field { scroll-margin-top: 100px; }
.service-error-summary { margin-bottom: 24px; }
.service-error-summary h2 { color: inherit; margin-top: 0; }
.service-error-summary li { margin-block: 8px; overflow-wrap: anywhere; }
.upload-selection-list { list-style: none; padding: 0; margin: 12px 0; display: grid; gap: 8px; }
.upload-selection-list[hidden] { display: none; }
.upload-selection-list li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 12px; border: 1px solid var(--line); border-radius: 10px; }
.upload-selection-list li span { min-width: 0; overflow-wrap: anywhere; }
.upload-remove { flex: 0 0 36px; width: 36px; height: 36px; display: inline-grid; place-items: center; border: 1px solid currentColor; border-radius: 8px; background: transparent; color: inherit; font-size: 24px; cursor: pointer; }
.upload-remove:hover { background: rgba(150, 150, 150, .15); }
.service-field-group .field-help { white-space: pre-line; }
.report-states { grid-template-columns: repeat(6, minmax(0, 1fr)); }
@media (max-width: 1200px) { .report-states { grid-template-columns: repeat(3, minmax(0, 1fr)); } }
@media (max-width: 650px) { .report-states { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.pdf-pages { display: grid; justify-items: center; gap: 24px; margin: 24px 0; }
.pdf-sheet { max-width: 100%; border: 1px solid var(--line); background: white; box-shadow: 0 4px 22px #122d3b12; }
.pdf-sheet canvas { display: block; width: 100%; height: auto; max-width: 850px; }
@media print {
 body:has(.pdf-pages) .sidebar, body:has(.pdf-pages) .topbar, body:has(.pdf-pages) .page-heading, body:has(.pdf-pages) [data-pdf-notice], body:has(.pdf-pages) .menu-backdrop, body:has(.pdf-pages) .skip-link { display: none !important; }
 body:has(.pdf-pages), body:has(.pdf-pages) .main, body:has(.pdf-pages) .content, body:has(.pdf-pages) .app-shell { display: block; margin: 0; padding: 0; background: white; }
 .pdf-pages { display: block; margin: 0; } .pdf-sheet { border: 0; box-shadow: none; break-after: page; } .pdf-sheet:last-child { break-after: auto; }
 .pdf-sheet canvas { width: 100%; max-width: 100%; }
}

.status-rejected { color: #9b2235; background: #ffe2e8; }
.report-state-rejected { border-color: #c9344e; }
.practice-status-wrap { display: inline-flex; align-items: center; gap: 7px; flex-wrap: wrap; }
.practice-status-wrap a { text-decoration: none; }
.practice-receipts { scroll-margin-top: 100px; }
.practice-rejection { margin-bottom: 24px; border-left: 4px solid #c9344e; padding: 20px; }
.multi-text-rows { display: grid; gap: 14px; margin-bottom: 14px; }
.multi-text-label { display: block; font-size: .9rem; color: var(--muted); margin-bottom: 7px; }
.multi-text-control { display: flex; align-items: center; gap: 10px; min-width: 0; }
.multi-text-control > input, .multi-text-control > .copy-value { flex: 1; min-width: 0; width: 100%; }
.multi-text-control .upload-remove { flex-shrink: 0; }
.multi-text [data-multi-text-notice]:empty { display: none; }

/* Anagrafica clienti, esiti e statistiche degli operatori. */
.registry-documents { padding:26px; display:grid; gap:20px; min-width:0; }
.registry-documents .button { justify-self:start; white-space:normal; }
.registry-documents input[type="file"] { max-width:100%; min-width:0; }
.outcome-notes { margin-bottom:24px; }
.outcome-note { padding:22px 26px; border-top:1px solid var(--line); overflow-wrap:anywhere; }
.outcome-note h3 { margin:0 0 8px; }
.analytics-totals { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:18px; margin-bottom:24px; }
.analytics-totals .card { padding:22px; display:grid; gap:8px; }
.analytics-totals strong { font-size:2rem; line-height:1.1; }
.analytics-overview { padding:26px; margin-bottom:24px; }
.analytics-overview .analytics-chart { max-width:600px; }
.analytics-centers { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,440px),1fr)); gap:22px; margin-bottom:24px; }
.analytics-center { padding:24px; min-width:0; overflow-wrap:anywhere; }
.analytics-center header { border-bottom:1px solid var(--line); margin-bottom:20px; }
.analytics-center h3 { margin:0 0 6px; }
.analytics-center h4 { margin:24px 0 16px; }
.analytics-chart { display:flex; align-items:center; gap:24px; min-width:0; }
.analytics-donut { width:160px; height:160px; flex:0 0 160px; }
.analytics-donut-number { fill:var(--ink); font:700 24px 'Segoe UI',sans-serif; }
.analytics-donut-caption { fill:var(--muted); font:12px 'Segoe UI',sans-serif; }
.analytics-legend { list-style:none; padding:0; margin:0; flex:1; min-width:0; display:grid; gap:9px; font-size:.88rem; }
.analytics-legend li { display:grid; grid-template-columns:10px minmax(0,1fr) auto; align-items:center; gap:10px; }
.analytics-dot { width:10px; height:10px; border-radius:50%; }
.analytics-error-count { padding:14px 0; border-bottom:1px solid var(--line); margin:12px 0; }
.analytics-service { margin-bottom:18px; }
.analytics-service > div:first-child { display:flex; justify-content:space-between; gap:16px; }
.analytics-service > div:first-child span { flex-shrink:0; }
.analytics-service p { margin:5px 0; }
.analytics-bar { height:9px; background:var(--line); border-radius:8px; overflow:hidden; }
.analytics-bar span { height:100%; display:block; background:var(--accent); border-radius:8px; }
.analytics-explanation { padding:0 26px; }
.analytics-admins { margin:28px 0 20px; }
.analytics-pagination { margin:18px 0 30px; }
.client-table td[data-label="Azioni"] .button { margin:4px; white-space:normal; }
@media (max-width:900px) { .analytics-totals { grid-template-columns:repeat(2,minmax(0,1fr)); } }
@media (max-width:560px) {
 .analytics-chart { gap:14px; flex-direction:column; align-items:stretch; }
 .analytics-donut { align-self:center; }
 .analytics-center,.analytics-overview,.registry-documents { padding:18px; }
 .analytics-totals { gap:12px; } .analytics-totals .card { padding:16px; }
 .analytics-totals span { font-size:.85rem; }
 .client-table thead,.analytics-admin-table thead { display:none; }
 .client-table,.client-table tbody,.analytics-admin-table,.analytics-admin-table tbody { display:block; width:100%; }
 .client-table tr,.analytics-admin-table tr { display:block; padding:14px 18px; border-bottom:1px solid var(--line); }
 .client-table td,.analytics-admin-table td { display:block; padding:8px 0; border:0; white-space:normal; overflow-wrap:anywhere; }
 .client-table td::before,.analytics-admin-table td::before { content:attr(data-label); display:block; font-size:.78rem; color:var(--muted); margin-bottom:4px; }
 .client-table .tax-code { white-space:normal; }
}

/* Prenotazione esclusiva delle pratiche tra ADMIN. */
.last-worked { color:var(--muted); font-size:.9rem; margin:8px 0 12px; overflow-wrap:anywhere; }
.last-worked strong { color:var(--ink); font-weight:600; }
.practice-table .last-worked { max-width:240px; white-space:normal; }
.practice-lock-warning { max-width:850px; margin:30px auto; padding:clamp(22px,5vw,48px); text-align:center; overflow-wrap:anywhere; }
.practice-lock-warning h1 { margin-bottom:18px; }
.practice-lock-icon { width:64px; height:64px; display:grid; place-items:center; margin:0 auto 24px; background:#f4d76a; color:#17202d; border-radius:50%; font-size:2rem; font-weight:800; }
.practice-lock-title { font-weight:700; letter-spacing:.025em; }
.practice-lock-operator { font-size:clamp(1.4rem,4vw,2rem); font-weight:700; color:var(--accent); }
.practice-lock-warning .form-actions { justify-content:center; }
.practice-access-dialog p { overflow-wrap:anywhere; }

.service-cost-form{display:flex;align-items:flex-end;flex-wrap:wrap;gap:12px;margin:12px 0 20px}.service-cost-form .field{margin:0;width:180px;max-width:100%}.service-cost-form .button{margin-bottom:0}.service-price{margin-bottom:24px}

.compliance-notice { border-inline-start:4px solid #d99b28; }
.missing-document { display:inline-block; border:1px solid #c98b22; border-radius:999px; padding:4px 10px; font-size:.8rem; font-weight:700; }
