/* Sistema visivo per schermi Full HD. Caricato dopo i fogli di pagina, solo a schermo.
   Existing layout/interaction and printed documents keep their own rules.
   Full HD: 240px navigation, 32px gutters, 40px controls, 32px row actions. */
:root {
  --ink: #213b40;
  --muted: #586f74;
  --paper: #f3f6f6;
  --line: #dce5e6;
  --forest: #246f78;
  --brand: #246f78;
  --brand-2: #357f88;
  --brand-grad: #246f78;
  --teal-deep: #173e45;
  --teal-dark: #173e45;
  --mint: #e6f1f1;
  --surface-soft: #f0f5f5;
  --success: #28604e;
  --warning: #895b13;
  --danger: #9d382b;
  --focus: #996018;
  --sidebar: 240px;
  --mono: "Manrope", ui-sans-serif, system-ui, sans-serif;
  --shadow-float: 0 8px 28px rgb(23 62 69 / 12%);
  --shadow-dialog: 0 20px 70px rgb(23 62 69 / 22%);
}

html { scroll-behavior: auto; }
html.scroll-restore-pending .app-main { visibility: hidden; }
body { background: var(--paper); font: 14px/1.5 "Manrope", ui-sans-serif, system-ui, sans-serif; }
body::before { display: none; }
.app-main { padding: 30px 32px 64px; }
.app-main > *, .head-actions, .panel, .form-section { min-width: 0; }
.app-main h1, .page-head h1, .calendar-workspace .page-head h1 {
  font-family: "Manrope", sans-serif; font-size: 30px; line-height: 1.2;
  font-weight: 750; letter-spacing: -.035em; margin: 0;
}
.app-main h2, .app-main h3, .app-main h4 { font-family: "Manrope", sans-serif; }
.panel-head h2, .balance-main-chart .panel-head h2 { font-size: 18px; line-height: 1.35; }
.page-head { align-items: center; margin-bottom: 24px; gap: 16px; }
.eyebrow, th, .balance-card > span, .availability-toolbar label, .bulk-document-actions label, .billing-generation-actions label, .due-actions-menu summary, .mileage-controls label, .invoice-label, .month-corner, .month-day small, .summary-month-weekdays span, .summary-month-day > header span, .access-status-badge, .h24-badge, .operator-event-action button, button.operator-event-action, .client-event-assign, .client-event-remove, .client-event-unavailable, .client-event-reorganize {
  text-transform: none; letter-spacing: 0;
}
.eyebrow { display: inline-block; font-size: 11px; line-height: 1.4; margin-bottom: 6px; color: var(--muted); }
.panel-head .eyebrow { margin-bottom: 3px; }

/* The menu remains an accordion; flat selection and stable hit areas. */
.sidebar { background: var(--teal-deep); border-right: 0; padding: 25px 16px 18px; box-shadow: none; }
.sidebar::after, .sidebar nav a::before { display: none; }
.brand { gap: 10px; margin: 0 8px 25px; letter-spacing: 0; }
.brand-logo { width: 68px; filter: none; }
.brand span strong { font-size: 26px; letter-spacing: -.04em; }
.brand small { color: #c0d4d6; font-size: 10px; }
.sidebar nav a { min-height: 36px; padding: 8px 11px; border-radius: 7px; font-size: 12px; line-height: 1.4; transition: background-color 120ms; }
.sidebar nav a.nav-primary { min-height: 40px; font-size: 13px; white-space: normal; }
.sidebar nav a:hover { transform: none; background: #28525a; box-shadow: none; }
.sidebar nav.nav-planning a.active, .sidebar nav a.active {
  background: #e4f2f2; color: #173e45; box-shadow: none; font-weight: 750;
}
.sidebar nav details.nav-group > summary.nav-group-toggle { min-height: 36px; padding: 7px 10px; margin: 8px 0 2px; font-size: 12px; color: #c7dadd; }
.sidebar nav { scrollbar-width: none; }
.sidebar nav::-webkit-scrollbar { width: 0; height: 0; }
.nav-group-panel { padding-left: 7px; }
.nav-group-panel::before { left: 8px; background: #3b6066; }
details.nav-group.has-active > summary.nav-group-toggle .nav-group-caret { background: #365b62; color: white; box-shadow: none; }
.sidebar-user { border-color: #3b6066; font-size: 12px; }
.sidebar-user a { color: #d0e3e5; }
.mobile-header { background: var(--teal-deep); }
.sidebar-edge-trigger { background: transparent; box-shadow: none; }

/* Standard controls: border parity avoids primary/secondary size drift. */
.button, .button.primary, .button.ghost {
  min-height: var(--control-min-height); border-width: 1px; border-style: solid;
  border-radius: 7px; padding: 9px 15px; font-size: 13px; font-weight: 700;
  line-height: 20px; box-shadow: none; letter-spacing: 0; gap: 7px;
  transition: background-color 120ms, border-color 120ms;
}
.button.primary { background: var(--forest); border-color: var(--forest); color: white; }
.button.ghost { background: white; border-color: #bcced0; color: var(--teal-deep); }
.button.primary:hover:not(:disabled):not(.is-disabled) { background: var(--teal-deep); border-color: var(--teal-deep); transform: none; box-shadow: none; }
.button.ghost:hover:not(:disabled):not(.is-disabled) { background: var(--mint); transform: none; box-shadow: none; }
.button.small, .button.small.primary, .button.small.ghost { min-height: 32px; padding: 5px 11px; font-size: 12px; line-height: 20px; }
.button.danger { color: var(--danger); border-color: #cd9b95; background: white; }
.button::after { display: none; }
.link-button { min-height: 32px; padding: 5px 4px; line-height: 22px; font-size: 12px; }
.head-actions, .form-actions, .inline-actions, .card-actions, .email-config-actions,
.billing-home-primary-actions { align-items: center; gap: 8px; }
.head-actions > form, .form-actions > form, .card-actions > form, .inline-actions > form { display: flex; align-items: center; margin: 0; gap: 8px; }
.head-actions { justify-content: flex-end; }
.form-actions { margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }
.control, .model-form :is(input, select, textarea), .compact-form :is(input, select, textarea),
.field :is(input, select, textarea) { border-radius: 7px; font-size: 13px; line-height: 20px; }
.control:not(textarea), .model-form input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.model-form select, .compact-form input:not([type=checkbox]):not([type=radio]):not([type=hidden]),
.compact-form select, .field input:not([type=checkbox]):not([type=radio]):not([type=hidden]), .field select {
  min-height: var(--control-min-height); padding: 9px 11px;
}
.field :is(input[type=checkbox], input[type=radio]) { min-height: 18px; width: 18px; height: 18px; padding: 0; accent-color: var(--forest); }
.model-form, .panel.model-form { max-width: 1200px; gap: 18px; }
.form-section { padding: 20px; }
.field > label, .model-form label { font-size: 12px; line-height: 1.5; font-weight: 700; }
.field small, .form-warning { line-height: 1.5; }
:is(a, button, input, select, textarea, summary):focus-visible { outline: 2px solid var(--focus); outline-offset: 3px; }

.panel, .balance-dashboard .panel, .person-card, .configuration-card, .form-section, .workspace-notice, .configuration-summary {
  border-color: var(--line); border-radius: 10px; background: white; box-shadow: none;
}
.panel { padding: 20px; margin-bottom: 20px; }
.panel.flush { padding: 0; }
.panel-head { margin-bottom: 16px; }
.person-card:hover, .configuration-card:hover, .panel:hover { transform: none; box-shadow: none; }
.person-main h2, :where(.client-directory-results, .operator-directory-results) .person-main h2 {
  color: var(--ink); font: 750 18px/1.4 "Manrope", sans-serif;
}
:where(.client-directory-results, .operator-directory-results) .person-card,
.client-directory-results.list-view .person-card, .operator-directory-results.list-view .person-card {
  box-shadow: none; border: 1px solid var(--line); border-radius: 10px; padding: 18px;
}
:where(.client-directory-results, .operator-directory-results) .card-actions { border-color: var(--line); gap: 12px; padding-top: 10px; }
.client-directory-results .person-card.client {
  border: 1px solid var(--line);
  box-shadow: inset 4px 0 var(--client-color);
}
.card-grid { gap: 16px; }
.timeline-row { padding: 13px 4px; gap: 16px; }
.timeline-row time { font-size: 13px; font-variant-numeric: tabular-nums; }
.status, .document-state, .sdi-state { border-radius: 5px; font-size: 11px; line-height: 1.4; padding: 4px 7px; }
.table-wrap { max-width: 100%; overflow-x: auto; }
table { font-size: 13px; }
th { background: #f0f5f5; color: var(--muted); font-size: 12px; letter-spacing: 0; }
th, td { padding: 11px 13px; vertical-align: middle; }
.report-table td, .invoice-lines td, .money-in, .money-out { font-variant-numeric: tabular-nums; }
.balance-detail-table { font-size: 12px; }
.balance-detail-table th, .balance-detail-table td { text-align: right; padding: 11px 13px; }
.balance-detail-table td:nth-child(2) { text-align: right; }
.balance-detail-table th:first-child { text-align: left; }

/* Toolbars: controls share a baseline; labels remain above their fields. */
.client-list-toolbar, .document-list-toolbar, .billing-client-toolbar,
.due-period-filter, .availability-toolbar, .report-toolbar, .calendar-summary-toolbar,
.calendar-command-bar, .balance-filters, .billing-generation-actions, .bulk-document-actions { gap: 10px; margin-top: 0;
}
.toolbar, .availability-toolbar, .report-toolbar, .billing-generation-actions,
.bulk-document-actions, .due-period-filter { align-items: flex-end; }
.toolbar :is(label, .field), .availability-toolbar label { min-width: 0; }
.view-switch { gap: 2px; padding: 2px; border: 1px solid #b9cdd0; border-radius: 8px; background: #eef3f3; box-shadow: none; }
.view-switch .button { min-height: 34px; padding: 0 14px; border: 0; background: transparent; box-shadow: none; font-size: 12px; }
.view-switch .button.primary, .view-switch .button.active { background: var(--teal-deep); color: white; box-shadow: none; }
.view-switch .button.ghost:not(.primary):not(.active) { border: 0; background: transparent; box-shadow: none; }
.view-switch .button:not(.primary):not(.active):hover { background: white; }

/* Page families retain the same visual hierarchy across their own layouts. */
.planning-home, .billing-home, .balance-dashboard { max-width: none; }
.planning-home .panel, .billing-home .panel { background: white; }
.planning-home-summary, .billing-home-summary { background: white; border-color: var(--line); border-radius: 10px; box-shadow: none; }
.planning-home-stat { min-height: 112px; padding: 18px 22px; }
.billing-home-summary-item { min-height: 118px; justify-content: flex-start; padding: 18px 22px; }
.planning-home-stat.is-today { background: #e6f1f1; }
.planning-home-stat.is-today:hover { background: #d9ebeb; }
.planning-home-stat.is-today > span, .planning-home-stat.is-today > small { color: var(--muted); }
.planning-home-stat.is-today > strong { color: var(--teal-deep); }
.planning-home-stat > strong, .billing-home-summary-item > strong { font-family: "Manrope", sans-serif; font-size: 30px; letter-spacing: -.03em; }
.planning-home-count, .billing-home-task-count, .billing-home-sdi-detail b, .billing-home-status { font-family: "Manrope", sans-serif; font-variant-numeric: tabular-nums; }
.planning-home > .panel, .billing-home-work-grid > .panel { border-radius: 10px; box-shadow: none; }
.planning-home-section-head, .billing-home-work-grid .billing-home-panel-head { padding: 18px 22px; }
.planning-home-section-head h2, .billing-home-work-grid .billing-home-panel-head h2 { font-size: 18px; }
.planning-home .planning-home-agenda-list .timeline-row { min-height: 62px; padding-block: 11px; }
.billing-home-primary-actions .button { min-height: 40px; padding: 9px 15px; }
.balance-dashboard .balance-kpis { gap: 12px; }
.balance-dashboard .balance-kpis .balance-card,
.balance-dashboard .balance-kpis .balance-card:first-child { min-height: 118px; padding: 18px 20px; background: white; border: 1px solid var(--line); border-radius: 10px; box-shadow: none; color: var(--ink); }
.balance-dashboard .balance-kpis .balance-card strong { font-size: 30px; line-height: 1.3; letter-spacing: -.03em; }
.balance-dashboard .balance-kpis .balance-card small { color: var(--muted); opacity: 1; font-size: 11px; }
.balance-dashboard .balance-kpis .balance-card.expense { color: var(--ink); }
.balance-dashboard .balance-kpis .balance-card.total { background: #eef6f1; color: var(--success); border-color: #bfd9cd; }
.balance-dashboard .balance-kpis .balance-card.total.negative { background: #fff2ef; color: var(--danger); border-color: #e3c0b9; }
.balance-chart-grid { height: 224px; }
.balance-chart-bars { height: 172px; }
.balance-chart-bars i[style="height:0%"] { min-height: 0; }
.balance-cost-item > div:first-child, .balance-cost-item strong { font-size: 12px; }
.balance-operations { margin: 24px 0; }
.balance-note { max-width: 58ch; }
.ledger-list article { align-items: center; gap: 12px; }
.access-calendar, .workspace-preview { top: 20px; }
.workspace-ready[data-workspace="availability"] :is(.availability-full-day-form, .availability-weekly-fields) > .field { border-radius: 8px; background: #f8fbfb; }
.calendar-period-nav .button, .calendar-period-picker input, .calendar-search input { min-height: 40px; }
.calendar-period-nav .button { min-width: 40px; padding: 9px 10px; }
.calendar-today { font-size: 12px; }
.calendar-board-surface, .calendar-workspace .month-grid { box-shadow: none; border-color: var(--line); }
.calendar-shell.calendar-board-surface { overflow-x: auto; }
.calendar-workspace .month-grid > .month-day, .calendar-workspace .month-grid > .month-corner { background: #edf4f4; }
@media (min-width: 761px) {
  .calendar-workspace .month-person { background: white; }
}
.operator-calendar-workspace .calendar-command-bar { background: white; box-shadow: none; border-color: var(--line); }
.operator-calendar-workspace .button.primary { background: var(--forest); border: 1px solid var(--forest); box-shadow: none; }
.operator-calendar-workspace .button.primary:hover { background: var(--teal-deep); border-color: var(--teal-deep); box-shadow: none; }
.operator-calendar-workspace .button.ghost { color: var(--teal-deep); border-color: #bcced0; background: white; }
.operator-calendar-workspace .view-switch .button { border: 0; }
.operator-event:hover, .client-event:hover { transform: none; box-shadow: none; }
.summary-event span { line-height: 1.5; }
.availability-event small { font-size: 11px; }
.operator-event-action button, button.operator-event-action, .client-event-assign, .client-event-remove,
.client-event-reorganize, .client-event-unavailable { min-height: 28px; font-size: 11px; }
.access-status-badge {
  max-width: 100%; min-height: 14px; align-items: center; justify-content: center;
  box-sizing: border-box; padding: 2px 5px; font-size: 8px; line-height: 1.2;
  vertical-align: middle; white-space: nowrap;
}
.month-cell .client-event.coverage-uncovered,
.operator-event.opportunity { border: 2px dashed #b42318; }
.month-cell .client-event.coverage-partial { border: 2px dashed #b7791f; }
.client-event.has-provisional:not(.coverage-uncovered):not(.coverage-partial),
.operator-event.has-provisional,
.week-event.has-provisional,
.summary-event.has-provisional { border: 2px dashed #6f42a6; }
.dialog, .calendar-detail-dialog { border-radius: 12px; box-shadow: var(--shadow-dialog); }
.dialog-head { align-items: center; }
.dialog-close { min-width: 36px; min-height: 36px; }
.dialog-close:hover { transform: none; }
.filo-launcher { width: 48px; min-width: 48px; height: 48px; background: var(--forest); box-shadow: var(--shadow-float); }
.filo-launcher:hover { transform: none; background: var(--teal-deep); box-shadow: var(--shadow-float); }
.filo-overlay { border-radius: 12px; }
.filo-overlay-head { background: var(--teal-deep); }
.filo-app-header { background: var(--teal-deep); box-shadow: none; }
.filo-operation { background: white; box-shadow: none; }
.filo-welcome h1 { font: 750 30px/1.25 "Manrope", sans-serif; }
.filo-composer textarea { border-radius: 10px; font-size: 14px; }
.filo-message-user p, .filo-message-result dt, .filo-operation dt { text-transform: none; letter-spacing: 0; }
.login-card { border-radius: 12px; box-shadow: none; }
.login-card .product-label { text-transform: none; letter-spacing: 0; }
.login-card h2 { font-size: 30px; }
.login-card .stack-form input:not([type=radio]):not([type=hidden]) { min-height: 40px; padding: 9px 11px; border-radius: 7px; font-size: 14px; }
.login-destination-tile { min-height: 56px; border-radius: 7px; }
@media (min-width: 761px) {
  .login-card { padding: 36px 40px; align-self: center; }
}

/* No decorative motion. Positioning transforms on drawers/dialogs are kept. */
.app-main *, .app-main *::before, .app-main *::after,
.sidebar *, .sidebar *::before, .sidebar *::after,
.filo-launcher, .filo-launcher * { animation: none !important; }

@media (min-width: 1600px) {
  .client-directory-results:not(.list-view), .operator-directory-results:not(.list-view) { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
@media (max-width: 1200px) {
  .app-main { padding-inline: 24px; }
  .access-calendar { position: static; }
}
@media (max-width: 760px) {
  .app-main { padding: 22px 16px 70px; }
  .app-main h1, .page-head h1, .calendar-workspace .page-head h1 { font-size: 26px; }
  .page-head { align-items: flex-start; gap: 16px; margin-bottom: 20px; }
  .head-actions { justify-content: flex-start; width: 100%; }
  .head-actions > .button, .head-actions > form { flex: 1 1 auto; }
  .head-actions > form > .button { width: 100%; }
  .button, .button.small, .button.small.primary, .button.small.ghost, .view-switch .button, .link-button, .calendar-period-nav .button, .billing-home-primary-actions .button { min-height: 44px; padding: 10px 12px; }
  .control:not(textarea), .field select, .field input:not([type=checkbox]):not([type=radio]):not([type=hidden]) { min-height: 44px; font-size: 16px; }
  .calendar-period-picker input, .calendar-search input { min-height: 44px; }
  .sidebar nav a, .sidebar nav details.nav-group > summary.nav-group-toggle { min-height: 44px; }
  .panel, .form-section { padding: 16px; }
  .panel.flush { padding: 0; }
  .balance-dashboard .balance-kpis .balance-card,
  .balance-dashboard .balance-kpis .balance-card:first-child { padding: 14px; min-height: 108px; }
  .balance-dashboard .balance-kpis .balance-card strong { font-size: 23px; }
  .balance-insights-row { grid-template-columns: minmax(0, 1fr); }
  .balance-note { text-align: left; }
  .model-form { max-width: 100%; }
  .filo-launcher { width: 46px; min-width: 46px; height: 46px; }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
}

/* ===== Barre comandi e riquadri senza cornice (prima un file a parte, unito senza modifiche nello stesso ordine di cascata). ===== */

.client-list-toolbar, .document-list-toolbar, .billing-client-toolbar, .due-period-filter, .availability-toolbar, .report-toolbar, .calendar-summary-toolbar, .calendar-command-bar, .calendar-workspace .calendar-command-bar, .calendar-workspace:not(.operator-calendar-workspace) .calendar-command-bar, .access-calendar .calendar-command-bar, .calendar-board-toolbar, .balance-filters, .billing-generation-actions, .bulk-document-actions, .configuration-card-actions, .invoice-editor-save {
  border: 0;
  border-radius: 0;
  padding: 0;
  background: transparent;
  box-shadow: none;
}

/* Preserve readable rhythm once the outer padding has gone. */
.client-list-toolbar,
.document-list-toolbar,
.billing-client-toolbar,
.due-period-filter,
.availability-toolbar,
.report-toolbar,
.calendar-summary-toolbar,
.calendar-command-bar,
.calendar-workspace .calendar-command-bar,
.calendar-workspace:not(.operator-calendar-workspace) .calendar-command-bar,
.access-calendar .calendar-command-bar,
.calendar-board-toolbar,
.balance-filters {
  gap: 10px 14px;
}

.configuration-card-actions {
  min-height: 0;
  margin: 12px 20px 16px;
}

.invoice-editor-save {
  flex-wrap: wrap;
}

.planning-home-admin-summary {
  margin-top: 0;
}

.planning-home-client-warning {
  display: grid;
  grid-template-columns: minmax(260px, .8fr) minmax(320px, 1.2fr);
  gap: 18px 32px;
  margin: 0 0 17px;
  border-block: 1px solid #ead7aa;
  padding: 18px 4px;
}

.planning-home-client-warning h2 {
  margin: 3px 0 5px;
  font-size: 18px;
}

.planning-home-client-warning p {
  margin: 0;
  color: var(--muted);
  font-size: 12px;
}

.planning-home-client-warning ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  align-content: start;
  gap: 7px 18px;
  margin: 0;
  padding: 0;
  list-style: none;
}

.planning-home-client-warning a {
  color: var(--brand);
  font-weight: 750;
}

/* Le due colonne chiedono almeno 612 px: con il menu fisso di un telefono in orizzontale
   (contenuto ~600 px) uscivano dallo schermo e il telefono rimpiccioliva la pagina. */
.planning-home { container-type: inline-size; }
@container (max-width: 640px) {
  .planning-home-client-warning,
  .planning-home-client-warning ul {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (max-width: 760px) {
  .calendar-command-bar {
    position: static;
    padding: 0;
  }

  .planning-home-client-warning,
  .planning-home-client-warning ul {
    grid-template-columns: minmax(0, 1fr);
  }
}

.calendar-shell :is(.month-day, .month-cell).is-today, .week-column.is-today, .summary-month-day.is-today, .availability-day.is-today, .exchange-calendar-day.is-today { background: var(--mint); }

.calendar-shell :is(.month-day, .month-cell).is-today { box-shadow: inset 1px 0 #8dbcb9, inset -1px 0 #8dbcb9; }

.calendar-shell .month-day.is-today strong,
.week-column.is-today > header strong,
.summary-month-day.is-today > header strong,
.availability-day.is-today .availability-day-head > strong,
.exchange-calendar-day.is-today .exchange-calendar-date {
  width: fit-content;
  padding: 0 6px;
  border-radius: 6px;
  background: var(--teal-deep);
  color: var(--white);
}
