/* Crescita Imprese — interfaccia a file separati, caratteri grandi e senza grazie. */
:root {
  --ink:#153b3f;
  --accent:#b74620;
  --lime:#e5f0c7;
  --background:#f4f7f3;
  --white:#fff;
  --muted:#4b6363;
  --border:#d4dfd8;
  --soft:#eaf0e6;
  --danger:#9a321d;
  --warning:#805116;
  --font:Arial,Helvetica,sans-serif;
  --sidebar:264px
}
.company-introduction {
  display:flex;
  align-items:center;
  gap:24px;
  padding:28px;
  margin-bottom:28px;
  background:var(--lime);
  border:1px solid var(--border);
  border-radius:16px
}
.company-introduction>div {
  flex:1;
  min-width:0
}
.company-introduction>.button {
  flex-shrink:0
}
@media(max-width:760px) {
  .company-introduction {
    align-items:stretch;
    flex-direction:column;
    padding:22px
  }
}
* {
  box-sizing:border-box
}
html {
  font-size:18px;
  scroll-behavior:smooth
}
body {
  margin:0;
  font:400 18px/1.6 var(--font);
  background:var(--background);
  color:var(--ink)
}
.preserve-lines {white-space:pre-wrap;overflow-wrap:anywhere}
.profile-details {margin:24px 0;padding:20px;border:1px solid var(--border);border-radius:12px}
.profile-details summary {cursor:pointer;font-weight:700;font-size:18px;padding:4px 0 16px}
.contact-trap {position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}
button,input,select,textarea {
  font:inherit;
  color:inherit
}
button,a {
  touch-action:manipulation
}
button {
  cursor:pointer
}
button:disabled {
  cursor:default;
  opacity:.6
}
a {
  color:inherit;
  text-underline-offset:4px
}
img {
  max-width:100%;
  height:auto
}
p {
  margin:0 0 1em
}
h1,h2,h3,h4 {
  line-height:1.3;
  margin:0 0 16px;
  font-weight:700
}
h1 {
  font-size:clamp(29px,3vw,39px);
  letter-spacing:-.035em
}
h2 {
  font-size:27px;
  letter-spacing:-.02em
}
h3 {
  font-size:22px
}
h4 {
  font-size:19px
}
small {
  font-size:16px
}
[hidden] {
  display:none!important
}
:focus-visible {
  outline:3px solid var(--accent);
  outline-offset:4px
}
button,input,select,textarea {
  min-height:48px
}
textarea {
  resize:vertical
}
.skip-link {
  position:absolute;
  left:16px;
  top:-100px;
  padding:12px 20px;
  background:var(--ink);
  color:white;
  z-index:300
}
.skip-link:focus {
  top:12px
}
.app-shell {
  display:flex;
  min-height:100vh
}
.sidebar {
  position:fixed;
  inset:0 auto 0 0;
  width:var(--sidebar);
  background:#fff;
  border-right:1px solid var(--border);
  padding:30px 22px;
  display:flex;
  flex-direction:column;
  z-index:120;
  overflow:auto
}
.brand {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  text-decoration:none;
  gap:5px
}
.brand img {
  width:220px;
  height:63px;
  object-fit:contain;
  object-position:left center
}
.brand span {
  font-size:19px;
  font-weight:700
}
.sidebar-caption {
  font-size:16px;
  color:var(--muted);
  margin:14px 0 28px
}
.sidebar nav {
  display:flex;
  flex-direction:column;
  gap:7px
}
.nav-item {
  display:flex;
  align-items:center;
  gap:12px;
  padding:12px 13px;
  border:0;
  border-radius:7px;
  background:transparent;
  color:var(--muted);
  font-size:18px;
  min-height:51px;
  text-align:left;
  font-weight:500;
  text-decoration:none
}
.nav-item:hover {
  background:var(--background);
  color:var(--ink)
}
.nav-item.active {
  background:var(--ink);
  color:#fff;
  font-weight:700
}
.nav-icon {
  width:25px;
  display:inline-block;
  text-align:center;
  flex-shrink:0;
  font-size:21px
}
.nav-separator {
  height:1px;
  background:var(--border);
  margin:14px 0
}
.sidebar-bottom {
  display:flex;
  align-items:flex-start;
  gap:11px;
  margin-top:auto;
  padding-top:32px;
  font-size:16px;
  color:var(--muted)
}
.sidebar-bottom p {
  margin:0
}
.status-dot {
  width:9px;
  height:9px;
  border-radius:50%;
  background:var(--accent);
  flex-shrink:0;
  margin-top:8px
}
.sidebar-site {
  margin-top:20px;
  font-size:16px;
  color:var(--muted)
}
.app-main {
  margin-left:var(--sidebar);
  width:calc(100% - var(--sidebar));
  min-width:0
}
.topbar {
  height:104px;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  padding:20px 40px;
  background:#fff;
  border-bottom:1px solid var(--border)
}
.workspace-name strong {
  display:block;
  font-size:20px;
  margin-top:4px
}
.eyebrow {
  font-size:16px;
  font-weight:700;
  letter-spacing:.075em;
  line-height:1.4;
  color:var(--accent)
}
.workspace-name .eyebrow {
  color:var(--muted)
}
.topbar-actions {
  display:flex;
  align-items:center;
  gap:16px
}
.button,.icon-button,.chip {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  border:1px solid #98aaa3;
  border-radius:6px;
  min-height:49px;
  padding:11px 18px;
  background:#fff;
  color:var(--ink);
  font-size:18px;
  line-height:1.4;
  font-weight:700;
  text-decoration:none;
  text-align:center
}
.button:hover,.icon-button:hover {
  background:var(--lime)
}
.button-primary {
  background:var(--accent);
  border-color:var(--accent);
  color:white
}
.button-primary:hover {
  background:var(--ink);
  border-color:var(--ink);
  color:white
}
.button-dark {
  background:var(--ink);
  color:white;
  border-color:var(--ink)
}
.button-dark:hover {
  background:#245358;
  color:white
}
.button-subtle {
  background:var(--soft);
  border-color:var(--soft)
}
.button-danger {
  color:var(--danger);
  border-color:#d2a79a
}
.button.small {
  font-size:16px;
  padding:9px 13px
}
.icon-button {
  background:transparent;
  border-color:transparent;
  font-size:17px;
  padding:11px 12px
}
.menu-toggle {
  display:none;
  font-size:25px
}
.count {
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:25px;
  height:25px;
  border-radius:20px;
  background:var(--accent);
  color:#fff;
  font-size:16px;
  padding:0 6px
}
.view-container {
  max-width:1560px;
  margin:auto
}
#main-content {
  padding:36px 40px 45px;
  min-height:calc(100vh - 240px)
}
.page-head {
  display:flex;
  justify-content:space-between;
  align-items:flex-start;
  gap:25px;
  margin-bottom:28px
}
.page-head p {
  color:var(--muted);
  font-size:18px;
  margin-bottom:0;
  max-width:800px
}
.head-actions {
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  flex-shrink:0
}
.section-title {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:20px;
  margin:30px 0 18px
}
.section-title h2 {
  margin:0
}
.text-link {
  display:inline-block;
  border:0;
  background:none;
  padding:8px 0;
  font-size:17px;
  text-decoration:underline;
  text-underline-offset:4px;
  text-align:left;
  font-weight:700;
  cursor:pointer
}
.text-link:hover {
  color:var(--accent)
}
.muted {
  color:var(--muted)
}
.fine-print {
  font-size:16px;
  color:var(--muted);
  line-height:1.7
}
.notice {
  padding:18px 22px;
  border:1px solid #c6d6bc;
  border-left:4px solid var(--accent);
  border-radius:7px;
  background:white;
  margin:0 0 24px;
  font-size:17px
}
.notice.warning {
  background:#fff6e9;
  border-color:#d9bd96;
  color:#72451c
}
.notice.error {
  background:#fff0e9;
  border-color:#d9ada0;
  color:var(--danger)
}
.notice.success {
  background:var(--lime)
}
.notice p:last-child {
  margin:0
}
.notice-actions {
  display:flex;
  gap:15px;
  align-items:center;
  flex-wrap:wrap;
  margin-top:14px
}
.welcome-panel {
  display:grid;
  grid-template-columns:1fr auto;
  gap:28px;
  align-items:center;
  background:var(--ink);
  color:white;
  border-radius:11px;
  padding:32px;
  margin-bottom:28px
}
.welcome-panel .eyebrow {
  color:var(--lime)
}
.welcome-panel h1 {
  font-size:34px;
  margin:12px 0
}
.welcome-panel p {
  color:#e4eee6;
  max-width:760px;
  margin-bottom:0
}
.welcome-panel .button {
  background:var(--lime);
  color:var(--ink);
  border-color:var(--lime)
}
.stats-grid {
  display:grid;
  grid-template-columns:repeat(4,minmax(0,1fr));
  gap:18px;
  margin:22px 0 30px
}
.stat-card {
  padding:22px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:9px
}
.stat-label {
  font-size:16px;
  line-height:1.5;
  color:var(--muted);
  display:block
}
.stat-card strong {
  display:block;
  font-size:34px;
  line-height:1.3;
  margin:9px 0 5px;
  letter-spacing:-.03em
}
.stat-note {
  font-size:16px;
  color:var(--muted)
}
.dashboard-grid {
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(290px,1fr);
  gap:24px
}
.panel {
  background:#fff;
  border:1px solid var(--border);
  border-radius:9px;
  padding:25px;
  min-width:0
}
.panel h2 {
  font-size:24px
}
.panel p:last-child {
  margin-bottom:0
}
.steps-list {
  list-style:none;
  margin:0;
  padding:0
}
.steps-list li {
  display:flex;
  gap:13px;
  padding:17px 0;
  border-bottom:1px solid var(--border)
}
.steps-list li:last-child {
  border:0
}
.step-index {
  width:32px;
  height:32px;
  border-radius:50%;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  flex-shrink:0;
  font-size:16px;
  font-weight:700;
  background:var(--lime);
  margin-top:3px
}
.steps-list strong {
  display:block;
  font-size:18px
}
.steps-list p {
  font-size:16px;
  color:var(--muted);
  margin:4px 0
}
.filters {
  padding:22px;
  background:#fff;
  border:1px solid var(--border);
  border-radius:9px;
  margin-bottom:24px;
  display:grid;
  grid-template-columns:minmax(220px,1.5fr) repeat(3,minmax(140px,1fr));
  gap:18px
}
.filters .field {
  margin:0
}
.filters .profile-filter {
  grid-column:1/-1;
  display:flex;
  align-items:center;
  gap:16px;
  padding-bottom:18px;
  border-bottom:1px solid var(--border)
}
.profile-filter label {
  font-weight:700;
  flex-shrink:0
}
.profile-filter select {
  max-width:500px
}
.filter-summary {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:16px;
  margin-bottom:20px;
  font-size:17px
}
.opportunities-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px
}
.opportunity-card {
  display:flex;
  flex-direction:column;
  border:1px solid var(--border);
  background:white;
  border-radius:10px;
  padding:24px;
  min-width:0
}
.card-topline {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:18px
}
.badge {
  display:inline-flex;
  align-items:center;
  gap:6px;
  max-width:100%;
  padding:5px 9px;
  border-radius:4px;
  font-size:16px;
  line-height:1.4;
  font-weight:700;
  background:var(--soft);
  color:var(--ink)
}
.badge.open,.badge.consistent {
  background:var(--lime);
  color:var(--ink)
}
.badge.upcoming,.badge.needs_review,.badge.pending {
  background:#fff0d8;
  color:#79501c
}
.badge.closed,.badge.excluded,.badge.error {
  background:#f7e5df;
  color:#8b3922
}
.badge.unknown,.badge.disabled {
  background:#edf0ed;
  color:#52665e
}
.card-issuer {
  font-size:16px;
  color:var(--muted);
  margin-bottom:8px
}
.opportunity-card h3 {
  font-size:24px;
  margin-bottom:12px;
  overflow-wrap:anywhere
}
.card-summary {
  font-size:18px;
  line-height:1.65;
  color:var(--muted);
  margin-bottom:18px
}
.tag-list {
  display:flex;
  flex-wrap:wrap;
  gap:8px;
  margin:0 0 18px
}
.tag {
  display:inline-block;
  background:#f0f4ed;
  color:#435c50;
  padding:5px 9px;
  border-radius:5px;
  font-size:16px;
  line-height:1.45
}
.card-facts {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px;
  padding:17px 0;
  border-top:1px solid var(--border);
  border-bottom:1px solid var(--border);
  margin-top:auto
}
.card-facts dt {
  font-size:16px;
  color:var(--muted);
  margin-bottom:4px
}
.card-facts dd {
  margin:0;
  font-size:18px;
  font-weight:700;
  overflow-wrap:anywhere
}
.matching-summary {
  padding:16px 0;
  font-size:17px;
  line-height:1.6
}
.matching-summary p {
  margin:7px 0 0;
  font-size:16px;
  color:var(--muted)
}
.card-actions {
  display:flex;
  align-items:center;
  gap:14px;
  justify-content:space-between;
  flex-wrap:wrap;
  margin-top:18px
}
.compare-choice {
  display:flex;
  align-items:center;
  gap:8px;
  font-size:16px;
  cursor:pointer
}
.compare-choice input {
  min-height:0;
  width:22px;
  height:22px;
  accent-color:var(--accent)
}
.compare-bar {
  position:sticky;
  bottom:15px;
  z-index:30;
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:18px;
  box-shadow:0 4px 30px #153b3f24;
  background:var(--ink);
  color:white;
  padding:18px 22px;
  border-radius:8px;
  margin:22px 0
}
.compare-bar .button {
  background:var(--lime);
  border-color:var(--lime);
  color:var(--ink)
}
.empty-state {
  padding:45px 28px;
  background:#fff;
  border:1px dashed #9cb2a4;
  border-radius:10px;
  text-align:center
}
.empty-state h2 {
  font-size:26px
}
.empty-state p {
  max-width:650px;
  margin:0 auto 22px;
  color:var(--muted)
}
.empty-state .empty-icon {
  display:block;
  color:var(--accent);
  font-size:40px;
  margin-bottom:18px
}
.field {
  display:block;
  margin-bottom:19px;
  min-width:0
}
.field label,.field-label {
  display:block;
  font-weight:700;
  font-size:18px;
  line-height:1.5;
  margin-bottom:8px
}
.field input,.field select,.field textarea {
  display:block;
  width:100%;
  padding:12px 13px;
  border:1px solid #93aaa0;
  border-radius:6px;
  background:white;
  font-size:18px;
  line-height:1.6;
  min-width:0
}
.field textarea {
  min-height:110px
}
.field input:disabled,.field select:disabled {
  background:#eef2ec
}
.field .hint {
  display:block;
  font-size:16px;
  color:var(--muted);
  margin-top:7px;
  line-height:1.55
}
.field input::placeholder,.field textarea::placeholder {
  color:#61736a;
  opacity:1
}
.field-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:0 22px
}
.field.wide {
  grid-column:1/-1
}
.check-grid {
  display:flex;
  flex-wrap:wrap;
  gap:11px
}
.check-pill {
  display:flex;
  align-items:center;
  gap:9px;
  border:1px solid var(--border);
  border-radius:6px;
  padding:10px 13px;
  background:#f7f9f3;
  font-size:17px;
  cursor:pointer
}
.check-pill input {
  min-height:0;
  width:22px;
  height:22px;
  accent-color:var(--accent);
  margin:0
}
.check-line {
  display:flex;
  gap:11px;
  align-items:flex-start;
  font-size:17px;
  margin:18px 0;
  cursor:pointer
}
.check-line input {
  width:23px;
  height:23px;
  min-height:0;
  flex-shrink:0;
  margin:3px 0 0;
  accent-color:var(--accent)
}
.form-actions {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:15px;
  border-top:1px solid var(--border);
  padding-top:22px;
  margin-top:26px;
  flex-wrap:wrap
}
.form-actions .right {
  display:flex;
  gap:12px;
  flex-wrap:wrap
}
.form-error {
  color:var(--danger);
  font-size:18px;
  font-weight:700;
  margin:16px 0
}
.form-error:empty {
  display:none
}
.wizard-steps {
  display:flex;
  gap:12px;
  margin:24px 0 28px
}
.wizard-step {
  flex:1;
  padding:10px 0;
  border-bottom:4px solid var(--border);
  color:var(--muted);
  font-size:16px
}
.wizard-step.current {
  border-color:var(--accent);
  color:var(--ink);
  font-weight:700
}
.wizard-step.complete {
  border-color:#90ad68
}
.wizard-step strong {
  font-size:18px;
  margin-right:5px
}
.profile-cards {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:22px
}
.profile-card {
  background:white;
  border:1px solid var(--border);
  border-radius:9px;
  padding:24px
}
.profile-card h3 {
  font-size:24px;
  margin:12px 0
}
.profile-meta {
  color:var(--muted);
  font-size:17px;
  margin-bottom:16px
}
.profile-card dl {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:14px
}
.profile-card dt {
  font-size:16px;
  color:var(--muted)
}
.profile-card dd {
  font-size:18px;
  margin:3px 0 0
}
.row-actions {
  display:flex;
  gap:13px;
  flex-wrap:wrap
}
.table-wrap {
  overflow:auto;
  max-width:100%;
  background:#fff;
  border:1px solid var(--border);
  border-radius:8px
}
.data-table {
  width:100%;
  border-collapse:collapse;
  font-size:17px
}
.data-table th,.data-table td {
  text-align:left;
  vertical-align:top;
  padding:17px 16px;
  border-bottom:1px solid var(--border)
}
.data-table th {
  font-size:16px;
  font-weight:700;
  background:#edf3e6
}
.data-table td strong {
  display:block;
  font-size:18px
}
.data-table td small {
  display:block;
  color:var(--muted);
  margin-top:5px;
  line-height:1.6
}
.data-table tr:last-child td {
  border-bottom:0
}
.data-table .actions-cell {
  white-space:nowrap
}
.data-table .actions-cell button {
  font-size:16px
}
.calendar-toolbar {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin-bottom:20px
}
.calendar-toolbar h2 {
  margin:0;
  text-transform:capitalize
}
.calendar-toolbar div {
  display:flex;
  gap:10px
}
.calendar-grid {
  display:grid;
  grid-template-columns:repeat(7,minmax(0,1fr));
  background:#fff;
  border-top:1px solid var(--border);
  border-left:1px solid var(--border);
  border-radius:8px;
  overflow:hidden
}
.calendar-weekday {
  padding:12px 8px;
  background:#edf3e6;
  border-right:1px solid var(--border);
  border-bottom:1px solid var(--border);
  font-size:16px;
  font-weight:700;
  text-align:center
}
.calendar-day {
  min-height:112px;
  padding:10px 8px;
  border-right:1px solid var(--border);
  border-bottom:1px solid var(--border);
  background:white;
  min-width:0
}
.calendar-day.other {
  background:#f5f7f3;
  color:#7b8a7e
}
.calendar-date {
  display:inline-flex;
  width:29px;
  height:29px;
  align-items:center;
  justify-content:center;
  font-size:17px;
  font-weight:700
}
.calendar-day.today .calendar-date {
  background:var(--accent);
  color:white;
  border-radius:50%
}
.calendar-event {
  display:block;
  width:100%;
  border:0;
  min-height:30px;
  background:var(--lime);
  padding:5px 6px;
  border-radius:4px;
  text-align:left;
  font-size:16px;
  line-height:1.4;
  margin-top:6px;
  overflow-wrap:anywhere
}
.calendar-events-list {
  margin-top:28px
}
.source-grid {
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:18px
}
.source-card {
  background:white;
  border:1px solid var(--border);
  border-radius:9px;
  padding:22px
}
.source-card h3 {
  font-size:22px;
  margin:12px 0
}
.source-card p {
  font-size:17px;
  color:var(--muted)
}
.source-meta {
  display:flex;
  justify-content:space-between;
  gap:15px;
  flex-wrap:wrap;
  font-size:16px;
  border-top:1px solid var(--border);
  padding-top:15px;
  margin-top:18px
}
.source-actions {
  display:flex;
  gap:14px;
  align-items:center;
  flex-wrap:wrap;
  margin-top:16px
}
.assistant-panel {
  background:white;
  border:1px solid var(--border);
  border-radius:10px;
  padding:28px;
  max-width:1060px
}
.assistant-intro {
  max-width:850px
}
.assistant-examples {
  display:flex;
  flex-wrap:wrap;
  gap:10px;
  margin:22px 0
}
.assistant-examples button {
  border:1px solid var(--border);
  background:var(--soft);
  padding:12px 15px;
  border-radius:6px;
  text-align:left;
  font-size:17px;
  min-height:48px
}
.assistant-response {
  border-top:1px solid var(--border);
  padding-top:25px;
  margin-top:25px
}
.assistant-response .answer {
  white-space:pre-wrap;
  line-height:1.8
}
.assistant-response ul {
  padding-left:22px
}
.assistant-response li {
  margin:12px 0
}
.plans-grid {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:20px
}
.plan-card {
  background:#fff;
  border:1px solid var(--border);
  border-radius:9px;
  padding:25px
}
.plan-card.current {
  border:2px solid var(--accent)
}
.plan-card ul {
  padding-left:22px;
  margin:18px 0
}
.plan-card li {
  margin:10px 0
}
.plan-card h3 {
  font-size:25px
}
.logo-preview {
  height:90px;
  max-width:280px;
  object-fit:contain;
  background:#fff;
  padding:12px;
  border:1px solid var(--border);
  border-radius:6px;
  margin:14px 0
}
.settings-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:24px
}
.notification-list {
  list-style:none;
  padding:0;
  margin:0
}
.notification-list li {
  border-bottom:1px solid var(--border);
  padding:20px 0
}
.notification-list li:first-child {
  padding-top:0
}
.notification-list h3 {
  font-size:20px
}
.notification-list p {
  font-size:17px;
  margin:8px 0;
  color:var(--muted)
}
.notification-list .unread {
  border-left:4px solid var(--accent);
  padding-left:15px
}
.notification-meta {
  font-size:16px;
  color:var(--muted)
}
.app-footer {
  display:flex;
  justify-content:space-between;
  align-items:center;
  gap:26px;
  flex-wrap:wrap;
  border-top:1px solid var(--border);
  padding:25px 40px;
  background:white
}
.app-footer>div:first-child strong {
  display:block;
  font-size:18px
}
.app-footer>div:first-child span {
  font-size:16px;
  color:var(--muted);
  display:block;
  margin-top:5px
}
.footer-brands {
  display:flex;
  gap:22px;
  align-items:center
}
.footer-brands img {
  max-width:180px;
  height:50px;
  object-fit:contain
}
.toast {
  position:fixed;
  right:25px;
  bottom:25px;
  max-width:560px;
  padding:19px 23px;
  border:1px solid #789287;
  border-left:5px solid var(--accent);
  border-radius:8px;
  background:#fff;
  box-shadow:0 6px 40px #153b3f25;
  font-size:18px;
  line-height:1.6;
  z-index:450
}
.toast.error {
  border-color:#bb7f69;
  background:#fff4ed;
  color:var(--danger)
}
.loading-panel {
  min-height:350px;
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  text-align:center
}
.loading-panel p {
  color:var(--muted)
}
.loader {
  display:inline-block;
  width:38px;
  height:38px;
  border:4px solid #cdd9bf;
  border-top-color:var(--accent);
  border-radius:50%;
  animation:spin 1s linear infinite;
  margin-bottom:25px
}
@keyframes spin {
  to {
    transform:rotate(360deg)
  }
}
dialog {
  width:calc(100% - 40px);
  max-width:1000px;
  max-height:calc(100vh - 50px);
  padding:28px;
  border:1px solid var(--border);
  border-radius:12px;
  color:var(--ink);
  background:#fff;
  overflow:auto
}
dialog:not([open]) {
  display:none
}
dialog::backdrop {
  background:#153b3f99
}
.dialog-top {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:20px;
  margin-bottom:22px
}
.dialog-top .icon-button {
  width:48px;
  height:48px;
  border:1px solid var(--border);
  background:var(--soft);
  font-size:28px
}
.dialog-top .eyebrow {
  color:var(--muted)
}
dialog h2 {
  font-size:30px;
  margin-bottom:15px
}
.dialog-subtitle {
  color:var(--muted);
  margin-bottom:24px
}
.dialog-section {
  padding-top:22px;
  margin-top:22px;
  border-top:1px solid var(--border)
}
.detail-actions {
  display:flex;
  gap:12px;
  flex-wrap:wrap;
  margin:22px 0
}
.detail-facts {
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:18px;
  margin:23px 0
}
.detail-facts>div {
  background:var(--soft);
  padding:17px;
  border-radius:6px
}
.detail-facts dt {
  font-size:16px;
  color:var(--muted)
}
.detail-facts dd {
  margin:5px 0 0;
  font-size:19px;
  font-weight:700
}
.detail-list {
  padding-left:23px
}
.detail-list li {
  margin:10px 0
}
.checks {
  list-style:none;
  margin:0;
  padding:0
}
.checks li {
  display:flex;
  gap:12px;
  padding:14px 0;
  border-bottom:1px solid var(--border)
}
.check-mark {
  width:29px;
  height:29px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:50%;
  flex-shrink:0;
  font-size:17px;
  font-weight:700;
  background:#fff0d8;
  color:#79501c
}
.check-mark.pass {
  background:var(--lime);
  color:var(--ink)
}
.check-mark.fail {
  background:#f7e5df;
  color:var(--danger)
}
.checks strong {
  display:block;
  font-size:18px
}
.checks p {
  font-size:17px;
  color:var(--muted);
  margin:5px 0
}
.auth-tabs {
  display:flex;
  gap:12px;
  margin-bottom:24px
}
.auth-tabs button {
  flex:1;
  border:1px solid var(--border);
  background:var(--soft);
  padding:13px;
  min-height:50px;
  border-radius:6px;
  font-size:18px
}
.auth-tabs button.active {
  background:var(--ink);
  color:white;
  border-color:var(--ink)
}
.auth-box {
  max-width:580px;
  margin:auto
}
.summary-list {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px
}
.summary-list dt {
  font-size:16px;
  color:var(--muted)
}
.summary-list dd {
  font-size:18px;
  margin:4px 0 0
}
.menu-backdrop {
  position:fixed;
  inset:0;
  background:#153b3f80;
  z-index:110
}
.no-script {
  position:fixed;
  inset:0;
  background:white;
  padding:50px;
  z-index:1000
}
.print-report {
  display:none
}
.long-text {
  white-space:pre-wrap;
  overflow-wrap:anywhere
}
.break-word {
  overflow-wrap:anywhere
}
.setup-shell {
  max-width:900px;
  margin:40px auto;
  padding:0 24px 40px
}
.setup-shell>h1 {
  margin-top:22px
}
.setup-grid {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:20px
}
.setup-label {
  display:block;
  font-size:18px;
  font-weight:700;
  line-height:1.5;
  margin-bottom:9px
}
.setup-input {
  display:block;
  width:100%;
  min-height:52px;
  padding:12px 14px;
  border:1px solid #93aaa0;
  border-radius:6px;
  background:#fff;
  font-size:18px
}
.setup-panel {
  background:#fff;
  border:1px solid var(--border);
  border-radius:9px;
  padding:26px;
  margin:24px 0
}
.setup-shell label small {
  display:block;
  font-size:16px;
  font-weight:400;
  color:var(--muted)
}
@media(max-width:1350px) {
  :root {
    --sidebar:240px
  }
  .sidebar {
    padding:25px 18px
  }
  .brand img {
    width:200px
  }
  .topbar {
    padding:20px 28px
  }
  #main-content {
    padding:30px 28px
  }
  .filters {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .stats-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .dashboard-grid {
    grid-template-columns:1fr
  }
  .app-footer {
    padding:24px 28px
  }
  .workspace-name .eyebrow {
    display:none
  }
}
@media(max-width:1050px) {
  .sidebar {
    transform:translateX(-100%);
    transition:transform .2s;
    width:280px
  }
  .sidebar.open {
    transform:translateX(0)
  }
  .app-main {
    margin-left:0;
    width:100%
  }
  .menu-toggle {
    display:inline-flex
  }
  .topbar {
    height:auto;
    min-height:90px;
    gap:16px
  }
  .workspace-name {
    margin-right:auto
  }
  .topbar-actions {
    gap:9px
  }
  .topbar-actions .button {
    font-size:17px
  }
  .topbar-actions .icon-button {
    font-size:16px
  }
  .opportunities-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
  .welcome-panel {
    padding:28px
  }
  .page-head {
    flex-wrap:wrap
  }
  .head-actions {
    flex-shrink:1
  }
}
@media(max-width:740px) {
  .topbar {
    padding:15px 16px;
    flex-wrap:wrap
  }
  .workspace-name strong {
    font-size:18px
  }
  .topbar-actions {
    margin-left:auto
  }
  .topbar-actions .icon-button {
    font-size:16px;
    padding:8px
  }
  .topbar-actions .button {
    font-size:16px;
    padding:10px 13px
  }
  #main-content {
    padding:26px 16px 30px
  }
  .page-head {
    margin-bottom:22px;
    gap:18px
  }
  .page-head h1 {
    font-size:30px
  }
  .page-head p {
    font-size:18px
  }
  .head-actions {
    width:100%
  }
  .head-actions .button {
    flex:1 1 160px
  }
  .welcome-panel {
    grid-template-columns:1fr;
    padding:25px
  }
  .welcome-panel h1 {
    font-size:30px
  }
  .welcome-panel .button {
    justify-self:start
  }
  .stats-grid {
    gap:12px
  }
  .stat-card {
    padding:18px 15px
  }
  .stat-card strong {
    font-size:29px
  }
  .stat-label,.stat-note {
    font-size:16px
  }
  .opportunities-grid,.profile-cards,.source-grid,.settings-grid,.plans-grid {
    grid-template-columns:1fr
  }
  .filters {
    padding:18px;
    gap:15px;
    grid-template-columns:1fr
  }
  .filters .profile-filter {
    display:block
  }
  .profile-filter label {
    margin-bottom:8px;
    display:block
  }
  .filter-summary {
    align-items:flex-start;
    flex-direction:column
  }
  .opportunity-card {
    padding:22px 19px
  }
  .card-topline {
    align-items:flex-start;
    gap:10px
  }
  .card-topline .badge {
    font-size:16px
  }
  .opportunity-card h3 {
    font-size:24px
  }
  .card-actions .button {
    flex:1 1 130px
  }
  .card-facts {
    grid-template-columns:1fr 1fr
  }
  .field-grid {
    grid-template-columns:1fr
  }
  .field.wide {
    grid-column:auto
  }
  .wizard-steps {
    gap:9px
  }
  .wizard-step {
    font-size:16px
  }
  .wizard-step span {
    display:none
  }
  .wizard-step strong {
    display:block
  }
  .summary-list {
    grid-template-columns:1fr
  }
  .panel {
    padding:22px 18px
  }
  .section-title {
    align-items:flex-start;
    flex-direction:column;
    gap:10px
  }
  .section-title h2 {
    font-size:25px
  }
  .calendar-toolbar {
    align-items:flex-start;
    flex-direction:column
  }
  .calendar-toolbar h2 {
    font-size:26px
  }
  .calendar-grid {
    min-width:620px
  }
  .calendar-scroll {
    overflow:auto
  }
  .calendar-day {
    min-height:110px
  }
  .calendar-event {
    font-size:16px
  }
  .data-table {
    min-width:670px
  }
  .detail-facts {
    grid-template-columns:1fr 1fr
  }
  .compare-bar {
    padding:16px;
    flex-wrap:wrap;
    bottom:10px
  }
  .compare-bar .button {
    flex:1 1 150px
  }
  .app-footer {
    padding:24px 18px
  }
  .footer-brands {
    width:100%;
    gap:18px
  }
  .footer-brands img {
    width:calc(50% - 10px);
    max-width:180px
  }
  .toast {
    left:16px;
    right:16px;
    bottom:16px;
    max-width:none;
    padding:17px
  }
  .assistant-panel {
    padding:23px 18px
  }
  .assistant-examples {
    display:grid;
    grid-template-columns:1fr
  }
  dialog {
    padding:22px 18px;
    width:calc(100% - 24px);
    max-height:calc(100vh - 24px)
  }
  dialog h2 {
    font-size:27px
  }
  .detail-actions .button {
    flex:1 1 150px
  }
  .form-actions {
    align-items:stretch
  }
  .form-actions .right {
    flex:1 1 190px;
    justify-content:flex-end
  }
  .form-actions .button {
    font-size:18px
  }
  .table-wrap {
    border-radius:6px
  }
}
@media(max-width:390px) {
  .topbar-actions {
    width:100%;
    justify-content:space-between
  }
  .workspace-name strong {
    font-size:17px
  }
  .stats-grid {
    grid-template-columns:1fr
  }
  .card-facts,.detail-facts {
    grid-template-columns:1fr
  }
  .button {
    padding:11px 14px
  }
  .card-actions {
    gap:10px
  }
  .filter-summary {
    font-size:16px
  }
}
@media(max-width:740px) {
  .setup-grid {
    grid-template-columns:1fr
  }
  .setup-shell {
    padding:0 16px 30px;
    margin-top:26px
  }
  .setup-panel {
    padding:22px 18px
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  *,*::before,*::after {
    animation:none!important;
    transition:none!important
  }
}
@media print {
  @page {
    margin:15mm
  }
  .sidebar,.topbar,.app-footer,.menu-backdrop,.toast,#system-notice,.head-actions,.filters,.compare-bar,.button,.icon-button,.card-actions,dialog:not(.printable) {
    display:none!important
  }
  .app-main {
    margin:0;
    width:100%
  }
  #main-content {
    padding:0
  }
  .opportunities-grid,.dashboard-grid {
    display:block
  }
  .opportunity-card,.panel,.report-section {
    break-inside:avoid;
    margin-bottom:20px;
    border-color:#a8b9ad
  }
  .card-summary,.fine-print,.data-table,.badge,.tag {
    font-size:16px
  }
  .print-report {
    display:block
  }
  dialog.printable {
    position:static;
    display:block!important;
    max-height:none;
    width:100%;
    max-width:none;
    overflow:visible;
    border:0;
    padding:0
  }
  .dialog-top,.detail-actions {
    display:none!important
  }
  body {
    background:#fff;
    font-size:16px
  }
  .detail-facts {
    grid-template-columns:1fr 1fr
  }
  .calendar-grid {
    min-width:0
  }
  .calendar-event {
    font-size:16px
  }
}

/* 1.7 — Amministrazione essenziale: stessi caratteri e colori del sito pubblico.
 * Tabelle consultabili anche su telefono; nessun foglio o framework esterno. */
.manager-login {max-width:560px}
.manager-table {margin:24px 0}
.table-wrap {max-width:100%;overflow-x:auto;border:1px solid var(--border);border-radius:9px;background:white}
.table-wrap .data-table {margin:0;width:100%;border-collapse:collapse}
.table-wrap .data-table th,.table-wrap .data-table td {padding:18px;vertical-align:top;overflow-wrap:anywhere}
.table-wrap .data-table th {background:#eaf0e6;text-align:left}
.table-wrap .data-table td {border-top:1px solid var(--border)}
.table-wrap .data-table p {margin:8px 0}
.table-wrap .data-table .button {white-space:normal;min-width:130px}
#sync-progress {margin-top:24px}
#dialog-content .data-table {table-layout:fixed;min-width:540px}
#dialog-content .preserve-lines {overflow-wrap:anywhere}
@media(max-width:740px){.manager-table .data-table{min-width:800px}.manager-login{padding:22px 18px}}

/* 1.8 — Stati separati e ricerca mirata.
 * I pulsanti restano su più righe: nessuna barra orizzontale sui telefoni. */
.status-tabs {display:flex;flex-wrap:wrap;gap:9px;margin:0 0 18px}
.status-tab {display:inline-flex;align-items:center;gap:10px;min-height:46px;padding:10px 15px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--ink);font:700 16px/1.3 Arial,sans-serif;cursor:pointer}
.status-tab span {min-width:25px;padding:2px 6px;border-radius:4px;background:var(--soft);font-size:14px}
.status-tab.selected {background:var(--ink);border-color:var(--ink);color:#fff}
.status-tab.selected span {background:var(--lime);color:var(--ink)}
.status-tab:focus-visible {outline:3px solid var(--accent);outline-offset:3px}
.query-context {margin:0 0 20px;color:var(--ink);font-size:17px}
.filter-summary {align-items:flex-start}
.filter-summary span {max-width:650px;color:var(--muted);font-size:15px;line-height:1.5}

/* Scheda compatta: tipografia coerente, nessun titolo o anteprima presi dal menu.
 * Solo l'anteprima visiva è limitata: la scheda aperta mostra il riassunto intero. */
.opportunity-card h2 {font-size:26px;line-height:1.22;margin:4px 0 15px;overflow-wrap:anywhere}
.source-date {font-size:13px;line-height:1.4;color:var(--muted);text-align:right}
.opportunity-summary {color:var(--muted);font-size:17px;line-height:1.6;margin-bottom:18px;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:5;overflow:hidden;overflow-wrap:anywhere}
.opportunity-summary p {margin:0 0 10px}
.card-benefits {padding:15px 17px;margin:0 0 18px;border-left:3px solid var(--accent);border-radius:0 6px 6px 0;background:#f5f7f1;color:var(--ink);font-size:16px;line-height:1.5}
.card-benefits strong {font-size:16px}
.card-benefits ul {margin:9px 0;padding-left:20px}
.card-benefits li+li {margin-top:8px}
.card-benefits .fine-print {display:block;margin-top:8px;font-size:13px}
.ranking-reasons {list-style:none;padding:0;margin:15px 0 0;font-size:14px;color:var(--muted)}
.ranking-reasons li {margin:5px 0}
.ranking-reasons li::before {content:'✓';color:#486435;font-weight:700;margin-right:8px}
.requirement-note {padding:9px 12px;background:#fff0d8;border-radius:5px;color:#79501c;font-size:14px;line-height:1.5;margin:13px 0 0}
.opportunity-card>.button {margin-top:auto}

/* Testi ufficiali: paragrafi veri e interruzioni di riga, anche nei riferimenti.
 * Nessun white-space:nowrap o altezza fissa nella scheda dettagliata. */
.detail-heading {display:flex;align-items:center;flex-wrap:wrap;gap:15px;margin-bottom:15px}
.detail-heading .card-issuer {margin:0}
.detail-summary {padding:20px 23px;background:#f2f5ee;border-radius:8px;margin:23px 0;line-height:1.7;overflow-wrap:anywhere}
.detail-summary p:last-child {margin-bottom:0}
.official-section {margin:26px 0;line-height:1.7;overflow-wrap:anywhere}
.evidence-item {padding:17px 0;border-bottom:1px solid var(--border);overflow-wrap:anywhere}
.evidence-item p {margin:9px 0;line-height:1.65}
.evidence-item a {font-size:15px}
.badge.suspended {background:#f7e5df;color:#8b3922}
@media(max-width:740px){.status-tab{padding:9px 11px;font-size:14px;gap:7px}.status-tabs{gap:7px}.filter-summary{flex-direction:column;gap:7px}.opportunity-card h2{font-size:23px}.detail-summary{padding:17px}.card-topline{align-items:flex-start}.source-date{max-width:140px}}
