/*
 * Oraculum — Operatore-ente (porting Platform→RAG)
 *
 * Stili dei componenti riusabili (Wave 1) e delle pagine /ente/*.
 * Solo classi prefissate `oc-` + design token di oraculum-tokens.css.
 * Niente Tailwind, niente stili inline.
 */

/* ════════════════════ Componenti riusabili ════════════════════ */

/* ─── FondoBadge (parità CD .oc-fondo) ─── */
.oc-fondo-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px var(--oc-space-2);
  border-radius: var(--oc-radius-sm);
  font-size: 10px;
  font-weight: 600;
  font-family: var(--oc-font-mono);
  letter-spacing: 0.06em;
  text-transform: uppercase;
  line-height: 1.3;
  white-space: nowrap;
  background: var(--oc-badge-altro-bg);
  color: var(--oc-badge-altro-fg);
}
.oc-fondo-badge .oc-fondo-dot { width: 5px; height: 5px; border-radius: 50%; background: currentColor; opacity: 0.7; }
.oc-fondo-fesr      { background: var(--oc-badge-fesr-bg);      color: var(--oc-badge-fesr-fg); }
.oc-fondo-fse       { background: var(--oc-badge-fse-bg);       color: var(--oc-badge-fse-fg); }
.oc-fondo-pnrr      { background: var(--oc-badge-pnrr-bg);      color: var(--oc-badge-pnrr-fg); }
.oc-fondo-feasr     { background: var(--oc-badge-feasr-bg);     color: var(--oc-badge-feasr-fg); }
.oc-fondo-psp       { background: var(--oc-badge-psp-bg);       color: var(--oc-badge-psp-fg); }
.oc-fondo-nazionale { background: var(--oc-badge-nazionale-bg); color: var(--oc-badge-nazionale-fg); }
.oc-fondo-regionali { background: var(--oc-badge-regionali-bg); color: var(--oc-badge-regionali-fg); }
.oc-fondo-altro     { background: var(--oc-badge-altro-bg);     color: var(--oc-badge-altro-fg); }

/* ─── ScadenzaAlert (parità CD .oc-scadenza) ─── */
.oc-scadenza-alert {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px var(--oc-space-2);
  border-radius: var(--oc-radius-sm);
  font-size: var(--oc-text-xs);
  font-weight: 600;
  font-family: var(--oc-font-mono);
  letter-spacing: 0.02em;
  line-height: 1.3;
  white-space: nowrap;
}
.oc-scadenza-alert .oc-scad-dot {
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  flex: 0 0 auto;
}
.oc-scad-normale { background: #E8F4EC; color: #046642; }
.oc-scad-in_scadenza { background: #FFF4D6; color: var(--oc-warning); }
.oc-scad-urgente { background: #FCE2E6; color: var(--oc-danger); }
.oc-scad-scaduto { background: #E9ECEF; color: var(--oc-text-4); }

/* ─── CompatibilitaStars ─── */
.oc-compat-stars {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  color: var(--oc-gold);
}
.oc-compat-stars .oc-star { width: 15px; height: 15px; display: block; }
.oc-compat-stars .oc-star-empty { color: var(--oc-border-2); }

/* ─── Stato badge (parità CD .badge pill) ─── */
.oc-stato-badge {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: var(--oc-text-xs);
  font-weight: 600;
  line-height: 1.3;
  padding: 3px var(--oc-space-2);
  border-radius: var(--oc-radius-sm);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}
.oc-stato-aperto      { background: #D8F2E6; color: var(--oc-success); }
.oc-stato-in_scadenza { background: #FFF4D6; color: var(--oc-warning); }
.oc-stato-in_apertura { background: #FFF4D6; color: var(--oc-warning); }
.oc-stato-chiuso      { background: #E9ECEF; color: var(--oc-text-3); }
.oc-stato-altro       { background: #E9ECEF; color: var(--oc-text-3); }

/* ─── BandoCard (parità CD .oc-bando) ─── */
.oc-bando-card {
  border: 1px solid var(--oc-border);
  border-radius: var(--oc-radius-lg);
  background: var(--oc-gradient-card);
  padding: 16px 18px;
  box-shadow: var(--oc-shadow-sm);
  display: flex;
  flex-direction: column;
  gap: 10px;
  transition: box-shadow var(--oc-transition), border-color var(--oc-transition);
}
.oc-bando-card:hover {
  box-shadow: 0 4px 12px rgba(42, 90, 145, 0.08);
  border-color: var(--oc-accent);
}
.oc-bando-card-row {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: var(--oc-space-4);
}
.oc-bando-card-main { flex: 1 1 auto; min-width: 0; }
.oc-bando-card-tags {
  display: flex;
  align-items: center;
  gap: 6px;
  flex-wrap: wrap;
}
.oc-bando-card-ente {
  font-family: var(--oc-font-mono);
  font-size: 10.5px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--oc-text-3);
}
.oc-bando-card-title {
  font-family: var(--oc-font-serif);
  font-size: var(--oc-text-lg);
  font-weight: 600;
  color: var(--oc-text);
  margin: 0;
  letter-spacing: -0.005em;
  line-height: 1.3;
}
.oc-bando-card-desc {
  font-size: 13px;
  color: var(--oc-text-2);
  margin: 0;
  line-height: 1.55;
}
.oc-bando-card-meta {
  display: flex;
  align-items: center;
  gap: 14px;
  flex-wrap: wrap;
  padding-top: 10px;
  border-top: 1px dashed var(--oc-border);
  font-size: 12px;
  color: var(--oc-text-3);
}
.oc-bando-card-meta .k {
  font-family: var(--oc-font-mono);
  font-size: 10px;
  letter-spacing: 0.04em;
  text-transform: uppercase;
  color: var(--oc-text-4);
}
.oc-bando-card-meta .v { color: var(--oc-text); font-weight: 600; }
.oc-bando-card-foot {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 10px;
  margin-top: 2px;
}
.oc-bando-card-action {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  flex: 0 0 auto;
  padding: 6px var(--oc-space-3);
  font-size: 13px;
  font-weight: 600;
  font-family: var(--oc-font-sans);
  border-radius: var(--oc-radius);
  border: none;
  background: linear-gradient(180deg, #3973B6 0%, #2A5A91 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.20), 0 1px 2px rgba(31, 71, 120, 0.30);
  color: #fff;
  cursor: pointer;
  transition: filter var(--oc-transition);
}
.oc-bando-card-action:hover:not(:disabled) {
  filter: brightness(0.96);
}
.oc-bando-card-action:disabled,
.oc-bando-card-action[aria-pressed="true"] {
  background: var(--oc-bg-3);
  box-shadow: none;
  color: var(--oc-text-3);
  cursor: not-allowed;
}
.oc-bando-card-action svg { flex: 0 0 auto; }
.oc-bando-card-compat {
  display: flex;
  align-items: center;
  gap: 6px;
  margin-top: var(--oc-space-2);
}
.oc-bando-card-compat-label {
  font-family: var(--oc-font-mono);
  font-size: var(--oc-text-xs);
  color: var(--oc-text-3);
  letter-spacing: 0.02em;
}
/* "nel corpus" — segnale che il bando è indicizzato (parità CD .oc-bando-corpus) */
.oc-bando-corpus {
  display: inline-flex; align-items: center; gap: 4px; margin-left: auto;
  font-family: var(--oc-font-mono); font-size: 9.5px; font-weight: 600;
  letter-spacing: 0.05em; text-transform: uppercase; white-space: nowrap;
  color: var(--oc-accent-dark); background: var(--oc-accent-light);
  padding: 2px 7px; border-radius: 3px;
}
.oc-bando-corpus svg { flex: 0 0 auto; }


/* ════════════════════ Chrome area operatore ════════════════════ */
.oc-ente-page {
  margin: 0;
  background: #FAFAF7;
  color: var(--oc-text);
  font-family: var(--oc-font-sans);
  font-size: var(--oc-text-base);
}

.oc-ente-topbar {
  position: sticky;
  top: 0;
  z-index: 40;
  background: var(--oc-primary);
  color: #fff;
  box-shadow: var(--oc-shadow-sm);
}
.oc-ente-topbar-inner {
  max-width: 1400px;
  margin: 0 auto;
  display: flex;
  align-items: center;
  gap: var(--oc-space-5);
  padding: var(--oc-space-3) var(--oc-space-5);
}
.oc-ente-brand { display: flex; align-items: center; gap: var(--oc-space-2); text-decoration: none; color: #fff; }
.oc-ente-brand-mark {
  width: 34px; height: 34px; border-radius: var(--oc-radius);
  display: grid; place-items: center; font-weight: 700;
  background: var(--oc-gradient-brand); color: #fff; font-family: var(--oc-font-serif);
}
.oc-ente-brand-title { font-weight: 700; line-height: 1.1; }
.oc-ente-brand-sub { font-size: var(--oc-text-xs); opacity: 0.75; }
.oc-ente-nav { display: flex; align-items: center; gap: 2px; flex: 1 1 auto; flex-wrap: wrap; }
.oc-ente-nav-item {
  padding: 6px var(--oc-space-3); border-radius: var(--oc-radius);
  color: rgba(255,255,255,0.82); text-decoration: none; font-size: var(--oc-text-sm);
  font-weight: 600; transition: background var(--oc-transition), color var(--oc-transition);
}
.oc-ente-nav-item:hover { background: rgba(255,255,255,0.10); color: #fff; }
.oc-ente-nav-active { background: rgba(255,255,255,0.16); color: #fff; }
.oc-ente-topbar-right { margin-left: auto; }
.oc-ente-back { color: rgba(255,255,255,0.82); text-decoration: none; font-size: var(--oc-text-sm); font-weight: 600; }
.oc-ente-back:hover { color: #fff; }

/* ════════ Chrome PA — EnteHeader (GovStrip + app-header + breadcrumb), parità CD ════════ */
.oc-eh-gov { background: linear-gradient(180deg, #EEF1F4 0%, #E4E8EC 100%); border-bottom: 1px solid var(--oc-border); font-size: 12px; color: var(--oc-text-2); }
.oc-eh-gov-inner { max-width: 1400px; margin: 0 auto; padding: 6px var(--oc-space-6); display: flex; align-items: center; justify-content: space-between; }
.oc-eh-gov a { color: var(--oc-primary); text-decoration: none; }
.oc-eh-gov a:hover { text-decoration: underline; }
.oc-eh-gov-links { display: flex; align-items: center; gap: var(--oc-space-4); }
.oc-eh-dim { color: var(--oc-text-3); }

.oc-eh-appbar { position: sticky; top: 0; z-index: 40; background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFD 100%); border-bottom: 1px solid var(--oc-border); box-shadow: 0 1px 0 rgba(23,50,77,0.02); }
.oc-eh-appbar-inner { max-width: 1400px; margin: 0 auto; padding: 12px var(--oc-space-6); display: flex; align-items: center; justify-content: space-between; gap: var(--oc-space-5); }
.oc-eh-brand { display: flex; align-items: center; gap: 14px; white-space: nowrap; text-decoration: none; }
.oc-eh-mark { width: 40px; height: 40px; flex: none; display: block; object-fit: contain; }
.oc-eh-brand-text { display: flex; flex-direction: column; }
.oc-eh-name { font-size: 17px; font-weight: 700; color: var(--oc-text); line-height: 1.1; }
.oc-eh-sub { font-size: 12px; color: var(--oc-text-3); margin-top: 1px; }
.oc-eh-appbar-spacer { flex: 1 1 auto; }
.oc-eh-identity { display: flex; align-items: center; gap: var(--oc-space-2); white-space: nowrap; }
.oc-eh-avatar { width: 32px; height: 32px; border-radius: 50%; flex: none; background: linear-gradient(135deg, #2A5C8A 0%, #1B3A5C 100%); color: #fff; display: flex; align-items: center; justify-content: center; font-size: 13px; font-weight: 700; }
.oc-eh-identity-text { display: flex; flex-direction: column; line-height: 1.2; }
.oc-eh-identity-name { font-size: 13px; font-weight: 600; color: var(--oc-text); }
.oc-eh-identity-role { font-size: 11.5px; color: var(--oc-text-3); margin-top: 1px; }
.oc-eh-breadcrumb { max-width: 1400px; margin: 0 auto; padding: 14px var(--oc-space-6) 0; display: flex; align-items: center; gap: 6px; font-family: var(--oc-font-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--oc-text-3); flex-wrap: wrap; }
.oc-eh-breadcrumb a { color: var(--oc-text-3); text-decoration: none; }
.oc-eh-breadcrumb a:hover { color: var(--oc-accent); }
/* Sezione-nav operatore (2026-06-17) — barra sezioni sotto l'appbar (il chrome
   CD-parity aveva perso i link tra Sportello/Bandi/Censimento/Notifiche). */
.oc-eh-sections { max-width: 1400px; margin: 0 auto; padding: 8px var(--oc-space-6) 0; display: flex; align-items: center; gap: 4px; flex-wrap: wrap; }
.oc-eh-section { padding: 8px 14px; border-radius: 8px 8px 0 0; font-size: 13.5px; font-weight: 600; color: var(--oc-text-2); text-decoration: none; border-bottom: 2px solid transparent; transition: background .12s, color .12s, border-color .12s; }
.oc-eh-section:hover { background: rgba(23,50,77,0.04); color: var(--oc-primary); }
.oc-eh-section.is-active { color: var(--oc-primary); border-bottom-color: var(--oc-accent); }
.oc-eh-breadcrumb .sep { color: var(--oc-border-2); }
.oc-eh-breadcrumb .cur { color: var(--oc-primary); font-weight: 600; }
@media (max-width: 767px) {
  .oc-eh-identity-text { display: none; }
}

/* ════════ Dialog overlay (parità CD share-modal) — cb2/cb3/cs3/no2 ════════ */
.oc-dlg-overlay { position: fixed; inset: 0; z-index: 80; background: rgba(11,31,54,0.45); backdrop-filter: blur(2px); display: flex; align-items: center; justify-content: center; padding: var(--oc-space-5); }
.oc-dlg-overlay[hidden] { display: none; }
.oc-dlg { width: 540px; max-width: 100%; max-height: 90vh; overflow: auto; background: var(--oc-bg); color: var(--oc-text); border-radius: 10px; padding: 28px 32px 24px; box-shadow: 0 24px 64px rgba(0,0,0,0.30), 0 4px 12px rgba(0,0,0,0.10); }
.oc-dlg-eye { font-family: var(--oc-font-mono); font-size: 11px; letter-spacing: 0.08em; text-transform: uppercase; color: var(--oc-primary); font-weight: 500; margin-bottom: 8px; }
.oc-dlg-title { font-family: var(--oc-font-serif); font-size: 24px; font-weight: 500; letter-spacing: -0.005em; line-height: 1.25; color: var(--oc-text); margin: 0; }
.oc-dlg-sub { font-size: 13.5px; color: var(--oc-text-2); line-height: 1.55; margin: 8px 0 22px; }
.oc-dlg-foot { display: flex; align-items: center; justify-content: flex-end; gap: var(--oc-space-2); margin-top: 18px; padding-top: 16px; border-top: 1px solid var(--oc-border); flex-wrap: wrap; }
.oc-dlg-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.oc-dlg-grid .full { grid-column: 1 / -1; }
.oc-dlg-grid .oc-field { margin-bottom: 0; }
@media (max-width: 560px) { .oc-dlg-grid { grid-template-columns: 1fr; } }
.oc-chip-pick { padding: 6px 11px; border-radius: 14px; border: 1px solid var(--oc-border); background: var(--oc-bg); font-size: 12px; color: var(--oc-text-2); cursor: pointer; font-family: var(--oc-font-sans); }
.oc-chip-pick.on { background: var(--oc-accent-light); border-color: var(--oc-accent); color: var(--oc-accent-dark); font-weight: 600; }
/* Interessi sportello: chip multi-toggle (CD oc-chip-multi) */
.oc-chip-multi { display: flex; flex-wrap: wrap; gap: 8px; }

.oc-ente-head { padding: var(--oc-space-6) 0 var(--oc-space-3); }
.oc-ente-eyebrow { font-family: var(--oc-font-mono); font-size: var(--oc-text-xs); text-transform: uppercase; letter-spacing: 0.10em; color: var(--oc-accent); font-weight: 600; }
.oc-ente-title { font-family: var(--oc-font-serif); font-size: var(--oc-text-2xl); font-weight: 500; margin: 0; color: var(--oc-text); }
.oc-ente-sub { color: var(--oc-text-2); font-size: 13.5px; margin: 0; }
/* famCB — testata con azioni + CTA wizard (parità CD cb1/cb4/cb_empty) */
.oc-ente-head-row { display: flex; align-items: flex-end; justify-content: space-between; gap: var(--oc-space-4); flex-wrap: wrap; }
.oc-ente-head-actions { display: flex; align-items: center; gap: var(--oc-space-2); flex-wrap: wrap; }
.oc-sportello-noresult-actions { display: flex; gap: var(--oc-space-2); justify-content: center; flex-wrap: wrap; margin-top: var(--oc-space-4); }
.oc-detail-cta-wizard { margin-left: auto; }
/* famCS cs4 — CTA "Notifica all'azienda" sotto ogni bando compatibile (loop censimento→notifica) */
.oc-azienda-match-cta { display: flex; justify-content: flex-end; margin-top: var(--oc-space-2); }

/* cb4 — bando-come-documento (titolo serif + meta mono + dati essenziali inline-edit + articoli) */
.oc-doc-title { font-family: var(--oc-font-serif); font-size: 26px; font-weight: 600; color: var(--oc-text); line-height: 1.25; margin: var(--oc-space-2) 0 var(--oc-space-1); }
.oc-doc-meta { font-family: var(--oc-font-mono); font-size: var(--oc-text-xs); letter-spacing: 0.04em; text-transform: uppercase; color: var(--oc-text-3); margin-bottom: var(--oc-space-5); }
.oc-detail-actions { margin-left: auto; display: flex; gap: var(--oc-space-2); }
.oc-essentials-head { display: flex; align-items: center; justify-content: space-between; gap: var(--oc-space-3); padding: var(--oc-space-4) var(--oc-space-5); border-bottom: 1px solid var(--oc-border); }
.oc-essentials-title { font-size: var(--oc-text-md); font-weight: 600; margin: 0; }
.oc-essentials-hint { font-size: var(--oc-text-xs); color: var(--oc-text-3); }
.oc-essentials-body { padding: var(--oc-space-2) var(--oc-space-5) var(--oc-space-4); }
.oc-ess-row { display: grid; grid-template-columns: 220px 1fr; gap: var(--oc-space-4); align-items: baseline; padding: var(--oc-space-2) 0; border-bottom: 1px solid var(--oc-bg-2); }
.oc-ess-row:last-child { border-bottom: none; }
.oc-ess-key { font-size: var(--oc-text-sm); color: var(--oc-text-3); }
.oc-ess-val { font-size: var(--oc-text-sm); color: var(--oc-text); font-weight: 500; }
.oc-editable { cursor: pointer; border-bottom: 1px dotted var(--oc-accent); display: inline-block; min-width: 44px; border-radius: 2px; }
.oc-editable:hover, .oc-editable:focus { background: var(--oc-accent-light); outline: none; }
.oc-editable-input { font: inherit; padding: 3px 7px; border: 1px solid var(--oc-accent); border-radius: 5px; width: 100%; max-width: 340px; box-sizing: border-box; }
.oc-doc-tags-row { display: flex; flex-wrap: wrap; gap: var(--oc-space-5); margin: var(--oc-space-4) 0; font-size: var(--oc-text-sm); color: var(--oc-text-2); }
.oc-doc-tag .k { font-size: var(--oc-text-xs); text-transform: uppercase; letter-spacing: 0.04em; color: var(--oc-text-4); margin-right: 5px; }
.oc-articoli-list { padding: 0 var(--oc-space-5) var(--oc-space-2); display: flex; flex-direction: column; }
.oc-articolo-item { border-bottom: 1px solid var(--oc-bg-2); }
.oc-articolo-item:last-child { border-bottom: none; }
.oc-articolo-item > summary { padding: var(--oc-space-3) 0; cursor: pointer; font-size: var(--oc-text-sm); font-weight: 600; color: var(--oc-text); list-style: none; }
.oc-articolo-item > summary::-webkit-details-marker { display: none; }
.oc-articolo-item > summary::before { content: "\25B8  "; color: var(--oc-accent); }
.oc-articolo-item[open] > summary::before { content: "\25BE  "; }
.oc-articolo-corpo { padding: 0 0 var(--oc-space-3) var(--oc-space-4); font-size: var(--oc-text-sm); color: var(--oc-text-2); line-height: 1.6; white-space: pre-wrap; }
.oc-articoli-count { font-weight: 400; color: var(--oc-text-3); }
@media (max-width: 600px) { .oc-ess-row { grid-template-columns: 1fr; gap: 2px; } .oc-detail-actions { margin-left: 0; } }

/* ════════════════════ Form generico ════════════════════ */
.oc-field { margin-bottom: var(--oc-space-4); }
.oc-field > label, .oc-field-label { display: block; font-size: 12px; font-weight: 600; color: var(--oc-text-2); margin-bottom: var(--oc-space-1); }
.oc-field-opt { font-weight: 400; color: var(--oc-text-4); }
.oc-field input[type="text"], .oc-field input[type="email"], .oc-field input[type="tel"],
.oc-field input[type="number"], .oc-field input[type="date"], .oc-field select, .oc-field textarea {
  width: 100%; box-sizing: border-box; padding: 9px 12px;
  border: 1.5px solid var(--oc-border); border-radius: 5px;
  font-size: 13.5px; font-family: var(--oc-font-sans); background: var(--oc-bg); color: var(--oc-text);
  transition: border-color var(--oc-transition), box-shadow var(--oc-transition);
}
.oc-field input:focus, .oc-field select:focus, .oc-field textarea:focus {
  outline: none; border-color: var(--oc-accent);
  box-shadow: 0 0 0 3px var(--oc-accent-light);
}
.oc-radio-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--oc-space-2); }
.oc-radio-pill {
  display: flex; align-items: center; gap: var(--oc-space-2); padding: 7px var(--oc-space-3);
  border: 1px solid var(--oc-border); border-radius: var(--oc-radius); cursor: pointer;
  font-size: var(--oc-text-sm); transition: background var(--oc-transition);
}
.oc-radio-pill:hover { background: var(--oc-bg-2); }
.oc-check-list { display: flex; flex-direction: column; gap: 6px; }
.oc-check-item { display: flex; align-items: center; gap: var(--oc-space-2); font-size: var(--oc-text-sm); cursor: pointer; }

/* ════════════════════ Bottoni ════════════════════ */
.oc-btn {
  display: inline-flex; align-items: center; justify-content: center; gap: 6px;
  padding: 8px var(--oc-space-4); border-radius: 4px; border: 1px solid transparent;
  font-size: var(--oc-text-base); font-weight: 600; font-family: var(--oc-font-sans); line-height: 1.2;
  cursor: pointer; text-decoration: none; transition: background var(--oc-transition), opacity var(--oc-transition);
}
.oc-btn:disabled { opacity: 0.5; cursor: not-allowed; }
.oc-btn-primary { background: linear-gradient(180deg, #2A5C8A 0%, #1B3A5C 100%); color: #fff; box-shadow: inset 0 1px 0 rgba(255,255,255,0.18), 0 1px 2px rgba(16,40,72,0.28); }
.oc-btn-primary:hover:not(:disabled) { background: linear-gradient(180deg, #234E76 0%, #13294B 100%); }
.oc-btn-ghost { background: transparent; color: var(--oc-text-2); border-color: transparent; }
.oc-btn-ghost:hover { background: var(--oc-bg-2); color: var(--oc-text); }
.oc-btn-danger { background: var(--oc-danger); color: #fff; }
.oc-btn-danger:hover:not(:disabled) { filter: brightness(0.94); }
.oc-btn-block { width: 100%; }
.oc-btn-sm { padding: 5px var(--oc-space-3); font-size: 13px; }

/* ════════════════════ Sportello tri-colonna ════════════════════ */
.oc-sportello { max-width: 1400px; margin: 0 auto; padding: 0 var(--oc-space-5) var(--oc-space-10); }
.oc-sportello-grid {
  display: grid; grid-template-columns: 1fr 2fr 1fr; gap: 0; align-items: start;
}
/* Colonne full-bleed a contatto (parità CD .oc-sp-col) — niente card/border */
.oc-sportello-col {
  padding: 22px 24px;
}
.oc-sportello-profile { background: linear-gradient(180deg, #F6F8FA 0%, #EEF2F5 100%); border-right: 1px solid var(--oc-border); }
.oc-sportello-results { background: #FAFAF7; }
.oc-sportello-cart { background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFD 100%); border-left: 1px solid var(--oc-border); }
.oc-sportello-profile, .oc-sportello-cart { position: sticky; top: 76px; }
/* col-title (parità CD .oc-sp-coltitle) */
.oc-sportello-col-title {
  font-family: var(--oc-font-mono); font-size: 10.5px; font-weight: 600;
  letter-spacing: 0.08em; text-transform: uppercase; color: var(--oc-text-3); margin: 0;
}
.oc-sportello-col-hint { font-size: var(--oc-text-sm); color: var(--oc-text-3); margin: 0 0 var(--oc-space-4); }

.oc-sportello-results-head, .oc-sportello-cart-head {
  display: flex; align-items: center; justify-content: space-between;
  padding-bottom: 10px; border-bottom: 1px solid var(--oc-border); margin-bottom: 16px;
}
.oc-sportello-count { font-size: var(--oc-text-sm); color: var(--oc-text-3); }
/* CTA primarie sportello (parità CD .btn-primary scoped, gradient accent #3973B6→#2A5A91) */
.oc-sportello .oc-btn-primary {
  background: linear-gradient(180deg, #3973B6 0%, #2A5A91 100%);
  box-shadow: inset 0 1px 0 rgba(255, 255, 255, 0.20), 0 1px 2px rgba(31, 71, 120, 0.30);
}
.oc-sportello .oc-btn-primary:hover:not(:disabled) {
  background: linear-gradient(180deg, #2F66A6 0%, #244E80 100%);
}
.oc-sportello-results-list { display: flex; flex-direction: column; gap: var(--oc-space-3); min-height: 200px; }
.oc-sportello-results-inner { display: flex; flex-direction: column; gap: var(--oc-space-3); }
.oc-sportello-result { display: flex; flex-direction: column; }
.oc-sportello-reasons {
  list-style: none; margin: -2px 0 0; padding: var(--oc-space-2) var(--oc-space-3);
  display: flex; flex-wrap: wrap; gap: 6px;
  background: var(--oc-bg-2); border: 1px solid var(--oc-border);
  border-top: none; border-radius: 0 0 var(--oc-radius-lg) var(--oc-radius-lg);
}
.oc-sportello-reasons li {
  font-size: var(--oc-text-xs); color: var(--oc-success); background: color-mix(in srgb, var(--oc-success) 10%, transparent);
  padding: 2px var(--oc-space-2); border-radius: var(--oc-radius-pill);
}
.oc-sportello-noresult { text-align: center; padding: var(--oc-space-10) var(--oc-space-5); color: var(--oc-text-3); }
.oc-sportello-noresult-icon { color: var(--oc-text-4); margin-bottom: var(--oc-space-2); }
.oc-sportello-noresult-title { font-weight: 600; color: var(--oc-text-2); margin: 0 0 var(--oc-space-1); }
.oc-sportello-noresult-sub { font-size: var(--oc-text-sm); margin: 0; }

/* Empty-state (parità CD .oc-empty) — usato dallo sportello (oc-sportello-empty*)
   e riusabile dalle liste famCB via la famiglia generica .oc-empty*. */
.oc-empty, .oc-sportello-empty {
  display: flex; flex-direction: column; align-items: center; text-align: center;
  padding: 56px 32px; background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFD 100%);
  border: 1px dashed var(--oc-border-2); border-radius: 10px;
}
.oc-empty-glyph, .oc-sportello-empty-glyph {
  width: 56px; height: 56px; border-radius: 14px; flex: none; margin-bottom: 16px;
  background: var(--oc-accent-light); color: var(--oc-accent);
  display: flex; align-items: center; justify-content: center;
}
.oc-empty-title, .oc-sportello-empty-title {
  font-family: var(--oc-font-serif); font-size: 19px; font-weight: 500; color: var(--oc-text); margin: 0 0 6px;
}
.oc-empty-body, .oc-sportello-empty-body {
  font-size: 13.5px; color: var(--oc-text-2); line-height: 1.6; max-width: 420px; margin-bottom: 18px;
}
.oc-empty-actions { display: flex; gap: 10px; }

/* Carrello — count (parità CD .oc-sp-coltitle .n) + item (parità CD .oc-cart-*) */
.oc-sportello-cart-count {
  background: var(--oc-accent); color: #fff; border-radius: 10px;
  min-width: 20px; height: 20px; display: inline-flex; align-items: center; justify-content: center; font-size: 10.5px; font-weight: 700; padding: 0 6px;
}
.oc-sportello-cart-list { display: flex; flex-direction: column; margin-bottom: var(--oc-space-4); }
.oc-sportello-cart-empty { font-size: var(--oc-text-sm); color: var(--oc-text-3); margin: 0; padding: var(--oc-space-4) 0; text-align: center; }
.oc-cart-item { display: flex; gap: 10px; align-items: flex-start; padding: 11px 0; border-bottom: 1px dashed var(--oc-border); }
.oc-cart-item:last-child { border-bottom: none; }
.oc-cart-num {
  width: 22px; height: 22px; border-radius: 5px; flex: none;
  background: var(--oc-accent-light); color: var(--oc-accent-dark);
  font-family: var(--oc-font-mono); font-size: 11px; font-weight: 700;
  display: flex; align-items: center; justify-content: center;
}
.oc-cart-body { flex: 1; min-width: 0; }
.oc-cart-title { font-size: var(--oc-text-sm); font-weight: 600; color: var(--oc-text); line-height: 1.3; }
.oc-cart-meta { font-family: var(--oc-font-mono); font-size: 10px; color: var(--oc-text-3); margin-top: 2px; }
.oc-cart-x {
  width: 24px; height: 24px; min-width: 24px; min-height: 24px; padding: 2px;
  border: none; background: transparent; color: var(--oc-text-4);
  cursor: pointer; border-radius: 4px; flex: none;
  display: inline-flex; align-items: center; justify-content: center;
}
.oc-cart-x:hover { background: var(--oc-bg-3); color: var(--oc-danger); }
.oc-sportello-cart-foot { border-top: 1px solid var(--oc-border); padding-top: var(--oc-space-4); }
.oc-sportello-save-status { font-size: var(--oc-text-sm); color: var(--oc-text-2); margin-top: var(--oc-space-2); }
.oc-sportello-save-status a { color: var(--oc-accent); font-weight: 600; }
.oc-sportello-cart-micro { font-family: var(--oc-font-mono); font-size: var(--oc-text-xs); color: var(--oc-text-3); text-align: center; margin: var(--oc-space-2) 0 0; }

/* Responsive: <1024 → 2 col (cart full-width sotto) · <768 → 1 col + cart bottom-sheet */
@media (max-width: 1023px) {
  .oc-sportello-grid { grid-template-columns: 1fr 1.6fr; }
  .oc-sportello-cart { grid-column: 1 / -1; position: static; }
}
@media (max-width: 767px) {
  .oc-sportello-grid { grid-template-columns: 1fr; }
  .oc-sportello-profile { position: static; }
  .oc-sportello-cart {
    position: fixed; left: 0; right: 0; bottom: 0; z-index: 50;
    border-radius: var(--oc-radius-lg) var(--oc-radius-lg) 0 0;
    max-height: 45vh; overflow: auto; box-shadow: var(--oc-shadow-lg); margin: 0;
  }
  .oc-sportello-results { padding-bottom: 0; }
  body[data-page="sportello"] { padding-bottom: 30vh; }
}

/* ════════════════════ Report stampabile ════════════════════ */
.oc-report-toolbar {
  max-width: 900px; margin: var(--oc-space-5) auto 0; padding: 0 var(--oc-space-5);
  display: flex; justify-content: space-between; gap: var(--oc-space-3);
}
/* Foglio stampabile (parità CD): backdrop grigio (.oc-report-page sul body) +
   foglio bianco 794px centrato (.oc-report sul main). */
.oc-report-page { background: #E9ECEF; display: flex; align-items: flex-start; justify-content: center; padding: var(--oc-space-10); }
.oc-report { width: 794px; max-width: 100%; margin: 0; background: var(--oc-bg); border-radius: 4px; padding: 56px 64px; box-shadow: 0 8px 32px rgba(23,50,77,0.14); }
.oc-report-head { display: flex; justify-content: space-between; align-items: flex-start; gap: var(--oc-space-6); border-bottom: 2px solid var(--oc-primary); padding-bottom: 18px; margin-bottom: var(--oc-space-6); }
.oc-report-brand { display: flex; align-items: center; gap: var(--oc-space-3); }
.oc-report-brand-mark { width: 52px; height: 52px; border-radius: 50%; display: grid; place-items: center; font-size: 0; color: transparent; background: linear-gradient(135deg, #2A5C8A 0%, #1B3A5C 100%); background-image: url('/static/img/brand/oraculum-mark-96.png'); background-size: 64%; background-position: center; background-repeat: no-repeat; font-family: var(--oc-font-serif); }
.oc-report-brand-title { font-weight: 700; }
.oc-report-brand-sub { font-family: var(--oc-font-mono); font-size: 10.5px; letter-spacing: 0.06em; text-transform: uppercase; color: var(--oc-text-3); }
.oc-report-meta { font-size: var(--oc-text-sm); color: var(--oc-text-2); text-align: right; }
.oc-report-meta div { margin-bottom: 2px; }
.oc-report-section { margin-bottom: var(--oc-space-6); }
.oc-report-h2 { font-family: var(--oc-font-serif); font-size: var(--oc-text-lg); border-bottom: 1px solid var(--oc-border); padding-bottom: var(--oc-space-1); margin: 0 0 var(--oc-space-3); }
.oc-report-count { color: var(--oc-text-3); font-weight: 400; }
.oc-report-profile { display: grid; grid-template-columns: 1fr 1fr; gap: var(--oc-space-2) var(--oc-space-5); margin: 0; }
.oc-report-profile div { display: flex; gap: var(--oc-space-2); }
.oc-report-profile dt { font-weight: 600; color: var(--oc-text-3); min-width: 110px; }
.oc-report-profile dd { margin: 0; color: var(--oc-text); }
.oc-report-bandi { display: flex; flex-direction: column; gap: var(--oc-space-3); }
.oc-report-bando { border: 1px solid var(--oc-border); border-radius: var(--oc-radius); padding: var(--oc-space-4); break-inside: avoid; }
.oc-report-bando-head { display: flex; gap: var(--oc-space-2); margin-bottom: var(--oc-space-2); }
.oc-report-bando-title { font-family: var(--oc-font-serif); font-size: var(--oc-text-lg); font-weight: 600; color: var(--oc-text); margin: 0 0 var(--oc-space-1); }
.oc-report-bando-desc { font-size: 13px; color: var(--oc-text-2); line-height: 1.55; margin: 0 0 var(--oc-space-2); }
.oc-report-bando-meta { display: block; font-family: var(--oc-font-mono); font-size: 11.5px; color: var(--oc-accent-dark); margin-top: 7px; }
.oc-report-empty { color: var(--oc-text-3); }
.oc-report-foot { padding-top: var(--oc-space-3); margin-top: var(--oc-space-6); font-family: var(--oc-font-mono); font-size: 10px; letter-spacing: 0.03em; line-height: 1.6; color: var(--oc-text-4); }
/* famSP report — titolo oggetto-first + lettera + bandi numerati (parità CD sp4) */
.oc-report-title { font-family: var(--oc-font-serif); font-size: 24px; font-weight: 600; color: var(--oc-text); line-height: 1.25; margin: 0 0 8px; }
.oc-report-letter { font-size: 13.5px; line-height: 1.6; color: var(--oc-text-2); max-width: 560px; margin: 0 0 16px; }
.oc-report-bandi { list-style: none; padding: 0; }
.oc-report-bando { display: flex; gap: var(--oc-space-3); align-items: flex-start; padding-bottom: 16px; border-bottom: 1px solid var(--oc-border); }
.oc-report-bando-num { font-family: var(--oc-font-serif); font-size: 20px; font-weight: 600; color: var(--oc-accent-dark); line-height: 1; flex: 0 0 auto; }
.oc-report-bando-body { flex: 1 1 auto; min-width: 0; }

@media print {
  .oc-no-print { display: none !important; }
  body { background: #fff; }
  .oc-report-page { background: #fff; display: block; padding: 0; }
  .oc-report { border: none; box-shadow: none; width: 100%; max-width: 100%; margin: 0; padding: 0; }
  .oc-report-bando { break-inside: avoid; }
}

/* ─── Storico: sezione sessioni sportello ─── */
.oc-storico-section { margin-bottom: var(--oc-space-5); }
.oc-storico-section-title {
  font-size: var(--oc-text-sm); font-weight: 700; text-transform: uppercase;
  letter-spacing: 0.06em; color: var(--oc-text-3); margin: var(--oc-space-4) 0 var(--oc-space-2);
}

/* ════════════════════ Pagine /ente CRUD (bandi, censimento) ════════════════════ */
.oc-ente-main { max-width: 1400px; margin: 0 auto; padding: 0 var(--oc-space-6) var(--oc-space-10); }
.oc-ente-narrow { max-width: 820px; }
.oc-ente-back-link { display: inline-block; margin: var(--oc-space-4) 0; color: var(--oc-accent); text-decoration: none; font-size: var(--oc-text-sm); font-weight: 600; }
.oc-ente-back-link:hover { text-decoration: underline; }

/* Pannello collassabile (details) */
.oc-panel { background: var(--oc-bg); border: 1px solid var(--oc-border); border-radius: var(--oc-radius-lg); margin-bottom: var(--oc-space-5); overflow: hidden; }
.oc-panel-summary { padding: var(--oc-space-4) var(--oc-space-5); font-weight: 600; cursor: pointer; color: var(--oc-primary); list-style: none; }
.oc-panel-summary::-webkit-details-marker { display: none; }
.oc-panel-summary::before { content: "▸ "; color: var(--oc-accent); }
details[open] > .oc-panel-summary::before { content: "▾ "; }
.oc-panel-h3 { font-size: var(--oc-text-md); margin: 0 0 var(--oc-space-3); }
.oc-panel-hint { font-size: var(--oc-text-sm); color: var(--oc-text-3); margin: 0 0 var(--oc-space-3); }
.oc-bandi-new-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--oc-space-5); padding: 0 var(--oc-space-5) var(--oc-space-5); }
.oc-bandi-new-form { border: 1px solid var(--oc-border); border-radius: var(--oc-radius); padding: var(--oc-space-4); }
.oc-field-row { display: grid; grid-template-columns: 1fr 1fr; gap: var(--oc-space-3); }
.oc-field-req { color: var(--oc-danger); }
.oc-form-status { font-size: var(--oc-text-sm); color: var(--oc-text-2); margin-top: var(--oc-space-2); }
.oc-form-status-error { color: var(--oc-danger); }

/* Filtri */
.oc-bandi-filters { display: flex; gap: var(--oc-space-2); flex-wrap: wrap; margin-bottom: var(--oc-space-3); }
.oc-bandi-filters input[type="text"] { flex: 1 1 240px; padding: 8px var(--oc-space-3); border: 1px solid var(--oc-border); border-radius: var(--oc-radius); font-size: var(--oc-text-base); }
.oc-bandi-filters select { padding: 8px var(--oc-space-3); border: 1px solid var(--oc-border); border-radius: var(--oc-radius); font-size: var(--oc-text-sm); background: var(--oc-bg); }

/* Lista bandi */
.oc-bandi-count { font-size: var(--oc-text-sm); color: var(--oc-text-3); margin-bottom: var(--oc-space-3); }
.oc-bandi-list { display: grid; grid-template-columns: 1fr 1fr; gap: var(--oc-space-4); align-items: start; }
@media (max-width: 900px) { .oc-bandi-list { grid-template-columns: 1fr; } }
.oc-bandi-item { display: flex; flex-direction: column; }
.oc-bandi-item-actions {
  display: flex; align-items: center; gap: var(--oc-space-2); flex-wrap: wrap;
  padding: var(--oc-space-2) var(--oc-space-3);
  background: var(--oc-bg-2); border: 1px solid var(--oc-border); border-top: none;
  border-radius: 0 0 var(--oc-radius-lg) var(--oc-radius-lg);
}
.oc-bandi-readonly { font-size: var(--oc-text-xs); color: var(--oc-text-3); font-style: italic; }
.oc-bandi-rag { font-size: var(--oc-text-xs); color: var(--oc-success); margin-left: auto; }

/* Dettaglio */
.oc-detail { background: var(--oc-bg); border: 1px solid var(--oc-border); border-radius: var(--oc-radius-lg); padding: var(--oc-space-6); }
.oc-detail-tags { display: flex; align-items: center; gap: var(--oc-space-2); flex-wrap: wrap; margin-bottom: var(--oc-space-3); }
.oc-detail-owner { font-size: var(--oc-text-xs); color: var(--oc-accent); font-weight: 600; }
.oc-detail-title { font-family: var(--oc-font-serif); font-size: 24px; font-weight: 600; margin: 0 0 var(--oc-space-2); }
/* cs4 — header dettaglio azienda: avatar + riga meta mono (parità CD) */
.oc-detail-avatar {
  width: 56px; height: 56px; border-radius: 50%; flex: none;
  background: linear-gradient(135deg, #2A5C8A 0%, #1B3A5C 100%); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--oc-font-serif); font-size: 20px; font-weight: 500;
}
.oc-detail-meta-mono {
  font-family: var(--oc-font-mono); font-size: 11px; letter-spacing: 0.04em;
  text-transform: uppercase; color: var(--oc-text-3);
}
.oc-detail-desc { color: var(--oc-text-2); margin: 0 0 var(--oc-space-4); }
.oc-detail-grid { display: grid; grid-template-columns: 1fr 1fr; gap: var(--oc-space-3) var(--oc-space-5); margin: 0; }
.oc-detail-grid div { display: flex; flex-direction: column; gap: 2px; }
.oc-detail-grid dt { font-size: var(--oc-text-xs); text-transform: uppercase; letter-spacing: 0.04em; color: var(--oc-text-4); }
.oc-detail-grid dd { margin: 0; color: var(--oc-text); }
.oc-detail-link { margin-top: var(--oc-space-4); }
.oc-detail-link a { color: var(--oc-accent); font-weight: 600; text-decoration: none; }
.oc-detail-edit-actions { display: flex; gap: var(--oc-space-2); margin-top: var(--oc-space-2); }

@media (max-width: 767px) {
  .oc-bandi-new-grid { grid-template-columns: 1fr; }
  .oc-detail-grid { grid-template-columns: 1fr; }
}

/* ════════════════════ Censimento (tabella + dettaglio) ════════════════════ */
.oc-table-wrap { overflow-x: auto; border: 1px solid var(--oc-border); border-radius: var(--oc-radius-lg); background: var(--oc-bg); box-shadow: var(--oc-shadow-sm); }
.oc-table { width: 100%; border-collapse: collapse; font-size: var(--oc-text-sm); }
.oc-table thead th {
  text-align: left; padding: 13px 18px; background: linear-gradient(180deg, #F6F8FB 0%, #EDF1F5 100%);
  font-family: var(--oc-font-mono); font-size: 10.5px; text-transform: uppercase; letter-spacing: 0.06em; color: var(--oc-text-3);
  border-bottom: 1px solid var(--oc-border);
}
.oc-table tbody td { padding: 13px 18px; border-bottom: 1px solid var(--oc-border); vertical-align: middle; }
.oc-table tbody tr:last-child td { border-bottom: none; }
.oc-table tbody tr:hover { background: #FAFBFD; }
/* Modello grid-div CD (.oc-table-row) + avatar — adottabile dal template censimento */
.oc-table-row { display: grid; align-items: center; padding: 13px 18px; border-bottom: 1px solid var(--oc-border); }
.oc-table-row:last-child { border-bottom: none; }
.oc-table-row.head {
  background: linear-gradient(180deg, #F6F8FB 0%, #EDF1F5 100%);
  font-family: var(--oc-font-mono); font-size: 10.5px; font-weight: 600; letter-spacing: 0.06em;
  text-transform: uppercase; color: var(--oc-text-3);
}
.oc-table-row:not(.head):hover { background: #FAFBFD; }
.oc-table-avatar {
  width: 32px; height: 32px; border-radius: 50%; flex: none;
  background: linear-gradient(135deg, #2A5C8A 0%, #1B3A5C 100%); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-family: var(--oc-font-serif); font-size: 12px; font-weight: 500;
}
.oc-table-link { color: var(--oc-primary); font-weight: 600; text-decoration: none; }
.oc-table-link:hover { text-decoration: underline; }
.oc-table-actions { display: flex; gap: var(--oc-space-2); justify-content: flex-end; white-space: nowrap; }

.oc-tag-ok { font-size: var(--oc-text-xs); font-weight: 600; color: var(--oc-success); background: color-mix(in srgb, var(--oc-success) 12%, transparent); padding: 2px var(--oc-space-2); border-radius: var(--oc-radius-pill); }
.oc-tag-neutral { font-size: var(--oc-text-xs); font-weight: 600; color: var(--oc-accent); background: color-mix(in srgb, var(--oc-accent) 12%, transparent); padding: 2px var(--oc-space-2); border-radius: var(--oc-radius-pill); }
.oc-tag-muted { font-size: var(--oc-text-xs); font-weight: 600; color: var(--oc-text-3); background: var(--oc-bg-3); padding: 2px var(--oc-space-2); border-radius: var(--oc-radius-pill); }

.oc-csv-errors { margin: var(--oc-space-2) 0 0; padding-left: var(--oc-space-5); font-size: var(--oc-text-xs); color: var(--oc-warning); max-height: 160px; overflow: auto; }

/* Dettaglio azienda: 2 colonne (anagrafica + match) */
.oc-detail-cols { display: grid; grid-template-columns: 1.2fr 1fr; gap: var(--oc-space-5); align-items: start; }
.oc-detail-match { position: sticky; top: 76px; }
@media (max-width: 1023px) {
  .oc-detail-cols { grid-template-columns: 1fr; }
  .oc-detail-match { position: static; }
}

/* ════════════════════ Notifiche (stati) ════════════════════ */
.oc-notif-stato { display: inline-flex; align-items: center; gap: 5px; font-family: var(--oc-font-mono); font-size: 10px; font-weight: 600; padding: 2px var(--oc-space-2); border-radius: var(--oc-radius-sm); text-transform: uppercase; letter-spacing: 0.05em; }
.oc-notif-pip { width: 5px; height: 5px; border-radius: 50%; background: currentColor; flex: 0 0 auto; }
.oc-notif-pending { color: var(--oc-warning); background: #FFF4D6; }
.oc-notif-inviata { color: var(--oc-accent-dark); background: var(--oc-accent-light); }
.oc-notif-letta { color: #046642; background: #D8F2E6; }
.oc-notif-errore { color: var(--oc-danger); background: #FCE2E6; }
.oc-notif-err { color: var(--oc-danger); }

/* ════════════════════ Admin dashboard ════════════════════ */
.oc-admin-cards { display: grid; grid-template-columns: repeat(3, 1fr); gap: var(--oc-space-4); margin-bottom: var(--oc-space-5); }
.oc-admin-card { background: var(--oc-bg); border: 1px solid var(--oc-border); border-radius: var(--oc-radius-lg); padding: 20px 22px; box-shadow: var(--oc-shadow-sm); position: relative; overflow: hidden; }
.oc-admin-card::before { content: ""; position: absolute; top: 0; left: 0; right: 0; height: 3px; background: linear-gradient(90deg, var(--oc-accent) 0%, var(--oc-accent-dark) 100%); }
.oc-admin-card-value { font-size: 38px; font-weight: 500; color: var(--oc-text); font-family: var(--oc-font-serif); line-height: 1; letter-spacing: -0.02em; }
.oc-admin-card-label { font-family: var(--oc-font-mono); font-size: 10.5px; font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; color: var(--oc-text-3); margin-top: var(--oc-space-2); }
.oc-admin-card-sub { font-size: 11.5px; color: var(--oc-text-4); margin-top: 5px; }
.oc-admin-links-grid { display: flex; flex-wrap: wrap; gap: var(--oc-space-2); padding: 0; }
.oc-admin-links .oc-ente-eyebrow { display: block; margin-bottom: var(--oc-space-3); }
.oc-admin-denied { text-align: center; padding: var(--oc-space-12) var(--oc-space-5); }
.oc-admin-denied .oc-btn { margin-top: var(--oc-space-4); }
@media (max-width: 767px) { .oc-admin-cards { grid-template-columns: 1fr 1fr; } }

/* ════════════════════ Ingresso area operatore (header chat) ════════════════════ */
.oc-header-ente-link {
  display: inline-flex; align-items: center; gap: 6px;
  padding: 6px var(--oc-space-3); border-radius: var(--oc-radius-pill);
  background: var(--oc-primary); color: #fff;
  font-size: var(--oc-text-sm); font-weight: 600; text-decoration: none;
  white-space: nowrap; transition: background var(--oc-transition);
}
.oc-header-ente-link:hover { background: var(--oc-primary-hover); color: #fff; }
.oc-header-ente-link svg { flex: 0 0 auto; }
@media (max-width: 640px) { .oc-header-ente-link span { display: none; } }

/* ac1 — Collegamenti rapidi come card con icona (parità CD dashboard) */
.oc-quicklinks { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; margin-top: 12px; }
@media (max-width: 900px) { .oc-quicklinks { grid-template-columns: 1fr 1fr; } }
@media (max-width: 560px) { .oc-quicklinks { grid-template-columns: 1fr; } }
.oc-quicklink { display: flex; flex-direction: column; background: linear-gradient(180deg, #FFFFFF 0%, #FAFBFD 100%); border: 1px solid var(--oc-border); border-radius: 8px; padding: 18px; text-decoration: none; box-shadow: 0 1px 2px rgba(23, 50, 77, 0.04); transition: border-color var(--oc-transition), box-shadow var(--oc-transition); }
.oc-quicklink:hover { border-color: var(--oc-accent); box-shadow: 0 3px 12px rgba(42, 90, 145, 0.08); }
.oc-quicklink-ico { width: 38px; height: 38px; border-radius: 9px; background: var(--oc-accent-light); color: var(--oc-accent); display: flex; align-items: center; justify-content: center; margin-bottom: 12px; }
.oc-quicklink-title { font-size: 14.5px; font-weight: 600; color: var(--oc-text); }
.oc-quicklink-desc { font-size: 12px; color: var(--oc-text-3); margin-top: 4px; line-height: 1.5; }
.oc-quicklink-go { margin-top: 10px; font-size: 12px; font-weight: 600; color: var(--oc-accent); }
.oc-admin-sys-links { display: flex; flex-wrap: wrap; gap: var(--oc-space-5); margin-top: 16px; font-size: 13px; }
.oc-admin-sys-links a { color: var(--oc-text-3); text-decoration: none; font-weight: 600; }
.oc-admin-sys-links a:hover { color: var(--oc-accent); }

/* ═══════════════════ Home operatore — Hub goal-oriented (CD «Oraculum — Home / Hub») ═══════════════════ */
.oc-hub{max-width:1100px;margin:0 auto;padding:28px 24px 64px;font-family:"Titillium Web",system-ui,-apple-system,sans-serif;color:#1f2a37}
.oc-hub-eyebrow{display:inline-block;font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase;color:#7c8a9a}
/* Hero */
.oc-hub-hero{position:relative;overflow:hidden;border-radius:18px;padding:40px 40px 36px;margin-bottom:30px;
  background:linear-gradient(135deg,#16324f 0%,#1B3A5C 55%,#234a73 100%);color:#fff;box-shadow:0 18px 44px -22px rgba(16,40,66,.55)}
.oc-hub-hero::after{content:"";position:absolute;right:-60px;top:-60px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(circle,rgba(195,150,45,.16),transparent 70%);pointer-events:none}
.oc-hub-hero .oc-hub-eyebrow{color:#bcd0e6}
.oc-hub-title{font-family:"Lora",Georgia,serif;font-size:40px;line-height:1.08;font-weight:600;margin:10px 0 12px}
.oc-hub-lead{font-size:17px;line-height:1.5;color:#dbe6f1;max-width:60ch;margin:0}
/* Bande */
.oc-hub-band{margin:30px 0}
.oc-hub-band-label{font-size:12px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:#8493a3;margin:0 0 14px}
.oc-hub-grid{display:grid;gap:18px}
.oc-hub-grid-primary{grid-template-columns:repeat(2,1fr)}
.oc-hub-grid-secondary{grid-template-columns:repeat(2,1fr)}
/* Card */
.oc-hub-card{display:flex;flex-direction:column;gap:6px;background:#fff;border:1px solid #e3e9f0;border-radius:16px;
  padding:22px 22px 18px;text-decoration:none;color:inherit;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease;
  box-shadow:0 2px 10px -6px rgba(16,40,66,.18)}
.oc-hub-card:hover{transform:translateY(-3px);box-shadow:0 16px 36px -18px rgba(16,40,66,.4);border-color:#cdd9e6}
.oc-hub-card-primary{border-left:3px solid #C3962D;padding-top:24px}
.oc-hub-card-ico{width:34px;height:34px;color:#2A5A91;margin-bottom:4px}
.oc-hub-card-ico svg{width:100%;height:100%}
.oc-hub-step{font-size:10.5px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#a07a1f}
.oc-hub-card:not(.oc-hub-card-primary) .oc-hub-step{color:#8493a3}
.oc-hub-card-goal{font-family:"Lora",Georgia,serif;font-size:20px;line-height:1.22;font-weight:600;color:#15324f;margin:2px 0 2px}
.oc-hub-card-primary .oc-hub-card-goal{font-size:22px}
.oc-hub-card-tool{font-size:12.5px;color:#5b6b7b;font-weight:600;margin:0}
.oc-hub-card-desc{font-size:14px;line-height:1.5;color:#46535f;margin:4px 0 2px;flex:1}
.oc-hub-card-go{display:inline-flex;align-items:center;gap:7px;font-size:13.5px;font-weight:700;color:#2A5A91;margin-top:8px}
.oc-hub-card-go svg{width:16px;height:16px;transition:transform .18s ease}
.oc-hub-card:hover .oc-hub-card-go svg{transform:translateX(4px)}
/* Numeri */
.oc-hub-numbers{margin:34px 0 8px;background:#f6f8fb;border:1px solid #e7edf3;border-radius:16px;padding:24px}
.oc-hub-numbers-head{display:flex;justify-content:space-between;align-items:flex-end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.oc-hub-numbers-title{font-family:"Lora",Georgia,serif;font-size:21px;font-weight:600;color:#15324f;margin:6px 0 2px}
.oc-hub-numbers-sub{font-size:13.5px;color:#5b6b7b;margin:0;max-width:54ch}
.oc-hub-numbers-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:#2A5A91;text-decoration:none;white-space:nowrap}
.oc-hub-numbers-link svg{width:15px;height:15px;transition:transform .18s ease}
.oc-hub-numbers-link:hover svg{transform:translateX(3px)}
.oc-hub-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px}
.oc-hub-stat{background:#fff;border:1px solid #e7edf3;border-radius:12px;padding:16px 16px 14px;text-align:left}
.oc-hub-stat-n{display:block;font-family:"Roboto Mono",ui-monospace,monospace;font-size:32px;font-weight:600;color:#15324f;line-height:1}
.oc-hub-stat-k{display:block;font-size:12.5px;color:#5b6b7b;margin-top:8px;font-weight:600}
/* Superficie pubblica */
.oc-hub-public{margin:30px 0 8px;border:1px dashed #d3deea;border-radius:16px;padding:22px 24px;background:#fcfdff}
.oc-hub-public-title{font-family:"Lora",Georgia,serif;font-size:19px;font-weight:600;color:#15324f;margin:6px 0 4px}
.oc-hub-public-sub{font-size:13.5px;color:#5b6b7b;margin:0 0 14px;max-width:70ch}
.oc-hub-public-links{display:grid;grid-template-columns:repeat(2,1fr);gap:14px}
.oc-hub-public-link{display:flex;flex-direction:column;gap:3px;background:#fff;border:1px solid #e3e9f0;border-radius:12px;padding:14px 16px;text-decoration:none;color:inherit;transition:border-color .18s ease,transform .18s ease}
.oc-hub-public-link:hover{border-color:#cdd9e6;transform:translateY(-2px)}
.oc-hub-public-link strong{font-size:14.5px;color:#15324f}
.oc-hub-public-link span{font-size:12.5px;color:#6a7889}
/* Legenda */
.oc-hub-legend{margin:30px 0 8px}
.oc-hub-legend-title{font-family:"Lora",Georgia,serif;font-size:18px;font-weight:600;color:#15324f;margin:0 0 14px}
.oc-hub-legend-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.oc-hub-legend-col{background:#fff;border:1px solid #e7edf3;border-radius:12px;padding:16px}
.oc-hub-legend-h{display:block;font-size:11px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:#a07a1f;margin-bottom:8px}
.oc-hub-legend-col p{font-size:13px;line-height:1.5;color:#46535f;margin:4px 0}
.oc-hub-legend-col b{color:#15324f}
/* Footer */
.oc-hub-foot{margin-top:28px;padding-top:18px;border-top:1px solid #e7edf3;font-size:12.5px;color:#8493a3;text-align:center}
/* Micro-trend contatori «+N questa settimana» (delta 7gg, ancorato a dati reali) */
.oc-hub-stat-trend{display:block;margin-top:9px;font-family:"Roboto Mono",ui-monospace,monospace;font-size:11px;font-weight:600;letter-spacing:.02em;color:#9a7d2e}
.oc-hub-stat-trend.is-flat{color:#9aa7b4;font-weight:500}
/* Responsive */
@media (max-width:820px){
  .oc-hub-grid-primary,.oc-hub-grid-secondary,.oc-hub-public-links{grid-template-columns:1fr}
  .oc-hub-stats{grid-template-columns:repeat(2,1fr)}
  .oc-hub-legend-grid{grid-template-columns:1fr}
  .oc-hub-title{font-size:32px}
  .oc-hub-hero{padding:30px 24px}
}

/* ───────────────────────────────────────────────────────────────
   Modale «Collabora» — pairing sessione condivisa (companion onboarding).
   Riusa il chrome CD .share-* (caricato da oraculum-copilot.css, prima di
   questo file); qui solo overlay full-viewport + QR reale + pannello esiti.
   ─────────────────────────────────────────────────────────────── */
.oc-hub-collab-overlay{position:fixed;inset:0;z-index:1000;background:rgba(11,31,54,.5);backdrop-filter:blur(3px);display:flex;align-items:center;justify-content:center;padding:24px}
.oc-hub-collab-overlay[hidden]{display:none}
.oc-hub-collab-modal{max-width:480px;width:100%;max-height:92vh;overflow:auto}
.oc-hub-collab-x{position:absolute;top:14px;right:16px;width:30px;height:30px;border:none;background:transparent;color:#8595a6;font-size:24px;line-height:1;cursor:pointer;border-radius:6px}
.oc-hub-collab-x:hover{background:#f0f3f7;color:#15324f}
.oc-hub-collab-qr{width:240px;height:240px;border-radius:8px;background:#fff;display:block;box-shadow:0 1px 3px rgba(0,0,0,.08),inset 0 0 0 1px #e7edf3}
.oc-hub-collab-muted{font-size:12px;color:#5b6b7b}
.oc-hub-collab-pending{color:#9aa7b4;font-style:italic}
.oc-hub-collab-ok{width:54px;height:54px;margin:4px auto 10px;border-radius:50%;background:#eaf6ee;color:#1f9d57;display:flex;align-items:center;justify-content:center}
.oc-hub-collab-ok svg{width:28px;height:28px}
.oc-hub-collab-ok-ttl{text-align:center;font-family:"Lora",Georgia,serif;font-size:21px;font-weight:600;color:#15324f;margin:0}
.oc-hub-collab-fields{margin:0 0 4px;display:flex;flex-direction:column;gap:10px;border:1px solid #e7edf3;border-radius:8px;padding:14px 16px;background:#f8fafc}
.oc-hub-collab-fields > div{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.oc-hub-collab-fields dt{font-size:12px;color:#5b6b7b;font-weight:600}
.oc-hub-collab-fields dd{margin:0;font-size:14px;color:#15324f;font-weight:600;text-align:right}
@media (max-width:520px){
  .oc-hub-collab-qr{width:200px;height:200px}
}

/* Sportello — nota «profilo precompilato dalla sessione companion» (gold = signal cooperazione) */
.oc-sportello-prefill-note{display:flex;align-items:center;gap:8px;margin:0 0 14px;padding:9px 12px;font-size:12.5px;line-height:1.4;color:#7a5e16;background:#fbf6e9;border:1px solid #ecd9a6;border-radius:8px}
.oc-sportello-prefill-note svg{flex:none;color:#9a7d2e}
