.planning-calendar {
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: 14px;
  min-width: 0;
  max-width: 100%;
}

.planning-calendar > *,
#planning-calendar-view,
.planning-week-panel,
.planning-month-panel,
.planning-year-panel {
  min-width: 0;
  max-width: 100%;
}

.planning-topbar,
.planning-controls,
.planning-control-actions,
.planning-filters,
.planning-form-grid,
.planning-mini-form,
.planning-run-list article,
.planning-backlog-list article,
.planning-day-row,
.planning-event-actions {
  display: flex;
  align-items: center;
  gap: 10px;
}

.planning-topbar,
.planning-controls {
  justify-content: space-between;
}

.planning-controls { flex-wrap: wrap; }
.planning-control-actions { min-width: 0; }

.planning-topbar h1,
.planning-controls h2 {
  margin-bottom: 3px;
}

.planning-topbar p,
.planning-controls p {
  margin: 0;
  color: var(--muted);
}

.planning-focus-banner {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 14px;
  padding: 13px 15px;
  border-left: 6px solid var(--brand-2);
  border-radius: 9px;
  background: #eef6fb;
}

.planning-focus-banner > div {
  display: grid;
  gap: 3px;
}

.planning-focus-banner small,
.planning-focus-banner span {
  color: var(--muted);
}

.planning-control-actions {
  justify-content: flex-end;
  flex-wrap: wrap;
}

.planning-view-switch .active {
  border-color: var(--brand-2);
  background: #e5eff7;
  color: var(--brand-2);
}

.planning-kpis {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 12px;
}

.planning-kpis .card {
  min-height: 96px;
}

.planning-kpis span,
.planning-kpis strong {
  display: block;
}

.planning-exceptions {
  border-left: 6px solid var(--warn);
}

.planning-exception-list {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 8px;
}

.planning-exception-list > button {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: 9px;
  padding: 10px;
  border: 1px solid #dce6eb;
  border-radius: 8px;
  background: #fff;
  color: var(--ink);
  text-align: left;
}

.planning-exception-list > button:hover:not(:disabled) {
  border-color: #b8ccd8;
  background: #fbfdfe;
  color: var(--ink);
}

.planning-exception-list > button > span:nth-child(2) {
  display: grid;
  gap: 2px;
  min-width: 0;
}

.planning-exception-list small {
  color: var(--muted);
}

.planning-exception-list i {
  color: var(--brand-2);
  font-size: 12px;
  font-style: normal;
  font-weight: 700;
}

.planning-kpis strong {
  margin-top: 8px;
  font-size: 1.55rem;
}

.planning-filters,
.planning-form-grid {
  align-items: end;
  flex-wrap: wrap;
}

.planning-filters label,
.planning-form-grid label,
.planning-mini-form label {
  min-width: 145px;
  flex: 1 1 145px;
}

.planning-filters { gap: 8px; }
.planning-filters label { min-width: 130px; flex-basis: 130px; }
.planning-filters select { padding-right: 24px; }

.planning-check {
  display: flex;
  align-items: center;
  gap: 7px;
}

.planning-check input {
  width: auto;
}

.planning-manager-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 12px;
}

.planning-manager-grid > .panel {
  min-width: 0;
}

.planning-people-panel .section-title {
  margin-bottom: 12px;
}

.planning-people-list {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(310px, 1fr));
  gap: 12px;
}

.planning-person-card {
  display: grid;
  gap: 10px;
  padding: 14px;
  border: 1px solid #dbe5ea;
  border-left: 7px solid var(--resource-color, #526a78);
  border-radius: 10px;
  background: #fff;
}

.planning-person-card.planning-person-warn {
  background: #fffaf0;
}

.planning-person-card.planning-person-danger {
  background: #fff4f4;
}

.planning-person-head {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 10px;
}

.planning-person-head strong,
.planning-person-head small {
  display: block;
}

.planning-person-meter {
  height: 9px;
  overflow: hidden;
  border-radius: 999px;
  background: #e5edf1;
}

.planning-person-meter span {
  display: block;
  height: 100%;
  border-radius: inherit;
  background: var(--resource-color, #526a78);
}

.planning-person-stats {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: 8px;
  margin: 0;
}

.planning-person-stats div {
  padding: 8px;
  border-radius: 8px;
  background: #f3f7f9;
}

.planning-person-stats dt {
  color: var(--muted);
  font-size: .76rem;
}

.planning-person-stats dd {
  margin: 3px 0 0;
  font-weight: 800;
}

.planning-person-settings {
  border-top: 1px solid #dbe5ea;
  padding-top: 8px;
}

.planning-person-settings .planning-form-grid {
  margin: 12px 0 8px;
}

.planning-person-settings .planning-form-grid .wide {
  flex-basis: 100%;
}

.danger-text {
  color: #a12424;
}

.planning-run-list,
.planning-backlog-list {
  display: grid;
  gap: 8px;
  margin-top: 12px;
}

.planning-run-list article,
.planning-backlog-list article {
  justify-content: space-between;
  padding: 10px;
  border: 1px solid #d9e4ea;
  border-radius: 9px;
  background: #fff;
}

.planning-run-list article > div,
.planning-backlog-list article > div {
  display: grid;
  gap: 3px;
  min-width: 0;
}

.planning-run-list small,
.planning-backlog-list small {
  color: var(--muted);
}

.planning-event {
  position: relative;
  display: grid;
  gap: 5px;
  min-width: 0;
  padding: 9px;
  border: 1px solid #dbe5ea;
  border-left: 5px solid var(--resource-color, #526a78);
  border-radius: 8px;
  background: #fff;
  box-shadow: 0 2px 8px rgba(29, 54, 68, 0.06);
}

.planning-event[draggable="true"] {
  cursor: grab;
}

.planning-event strong,
.planning-event small {
  overflow-wrap: anywhere;
}

.planning-event small {
  color: var(--muted);
}

.planning-event-time {
  color: var(--brand-2);
  font-size: 0.78rem;
  font-weight: 800;
}

.planning-event-warn {
  background: #fffaf0;
}

.planning-event-danger {
  border-color: #d73d3d;
  background: #fff5f5;
}

.planning-event.is-complete {
  opacity: 0.68;
}

.planning-event.is-complete strong {
  text-decoration: line-through;
}

.planning-event.is-locked::after {
  content: "\1F512";
  position: absolute;
  top: 7px;
  right: 7px;
}

.planning-event-actions {
  align-items: stretch;
  flex-wrap: wrap;
}

.planning-event-actions button {
  padding: 5px 8px;
  font-size: 0.76rem;
}

.planning-modal-backdrop {
  position: fixed;
  z-index: 1200;
  inset: 0;
  display: grid;
  place-items: center;
  padding: 18px;
  background: rgba(16, 42, 61, .56);
  backdrop-filter: blur(2px);
}

.planning-completion-dialog {
  width: min(760px, 100%);
  max-height: calc(100vh - 36px);
  overflow: auto;
  padding: 20px;
  border-radius: 12px;
  background: #fff;
  box-shadow: 0 24px 70px rgba(16, 42, 61, .3);
}

.planning-completion-dialog > .section-title {
  align-items: flex-start;
  margin-bottom: 14px;
}

.planning-completion-dialog h2,
.planning-completion-dialog p {
  margin: 3px 0 0;
}

.planning-completion-dialog p,
.planning-completion-dialog small {
  color: var(--muted);
}

.planning-completion-summary {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 8px;
  margin-bottom: 14px;
}

.planning-completion-summary > div {
  display: grid;
  gap: 3px;
  padding: 10px;
  border: 1px solid #dde7ec;
  border-radius: 8px;
  background: #f7fafb;
}

.planning-completion-form {
  display: grid;
  gap: 12px;
}

.planning-completion-form > label {
  display: grid;
  gap: 5px;
}

.planning-completion-options {
  display: grid;
  gap: 8px;
  padding: 12px;
  border-radius: 9px;
  background: #f4f8fa;
}

.planning-completion-note {
  padding: 11px;
  border-left: 4px solid var(--brand-2);
  background: #eef6fb;
  color: #294f68;
  line-height: 1.45;
}

.planning-completion-actions {
  display: flex;
  justify-content: flex-end;
  gap: 8px;
}

.planning-event-editor {
  margin-top: 3px;
  border-top: 1px solid #e1e8ec;
  padding-top: 6px;
}

.planning-mini-form {
  align-items: end;
  flex-wrap: wrap;
  margin-top: 8px;
  padding: 8px;
  border-radius: 7px;
  background: #f6f9fb;
}

.planning-mini-form input,
.planning-mini-form select {
  min-width: 0;
}

.planning-month-weekdays,
.planning-month-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(135px, 1fr));
  gap: 7px;
  min-width: 980px;
}

.planning-month-panel {
  overflow-x: auto;
}

.planning-month-weekdays {
  margin-bottom: 7px;
  text-align: center;
}

.planning-month-day {
  min-height: 155px;
  padding: 8px;
  border: 1px solid #dce5ea;
  border-radius: 8px;
  background: #f8fbfc;
}

.planning-month-day.is-empty {
  background: #f2f5f6;
}

.planning-month-day.is-today,
.planning-week-heading.is-today {
  outline: 2px solid var(--brand-2);
  outline-offset: -2px;
}

.planning-month-day > header {
  display: flex;
  justify-content: space-between;
  margin-bottom: 7px;
}

.planning-month-day .planning-event {
  margin-top: 6px;
  padding: 6px;
}

.planning-month-day .planning-event .chips,
.planning-month-day .planning-event-actions,
.planning-month-day .planning-event-editor {
  display: none;
}

.planning-week-panel,
.planning-year-panel {
  overflow-x: auto;
}

.planning-week-grid {
  display: grid;
  grid-template-columns: 185px repeat(7, minmax(190px, 1fr));
  min-width: 1550px;
  border-top: 1px solid #dbe5ea;
  border-left: 1px solid #dbe5ea;
}

.planning-week-heading,
.planning-week-resource,
.planning-week-day {
  min-width: 0;
  padding: 9px;
  border-right: 1px solid #dbe5ea;
  border-bottom: 1px solid #dbe5ea;
}

.planning-week-heading {
  position: sticky;
  top: 0;
  z-index: 2;
  background: #edf4f7;
  text-align: center;
}

.planning-week-resource {
  border-left: 6px solid var(--resource-color, #526a78);
  background: #f8fbfc;
}

.planning-week-resource strong,
.planning-week-resource small {
  display: block;
}

.planning-week-day {
  display: grid;
  align-content: start;
  gap: 8px;
  min-height: 140px;
}

.planning-empty-slot {
  color: #8a979e;
  font-size: 0.82rem;
}

.is-drop-target {
  background: #e7f6ef !important;
  outline: 2px dashed #1d8b62;
  outline-offset: -4px;
}

.planning-day-timeline {
  display: grid;
  gap: 10px;
}

.planning-day-row {
  align-items: stretch;
  border: 1px solid #dbe5ea;
  border-radius: 9px;
  overflow: hidden;
}

.planning-day-row > header {
  flex: 0 0 190px;
  padding: 12px;
  border-left: 7px solid var(--resource-color, #526a78);
  background: #f4f8fa;
}

.planning-day-row > header strong,
.planning-day-row > header small {
  display: block;
}

.planning-day-events {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: 9px;
  flex: 1;
  padding: 9px;
}

.planning-year-grid {
  display: grid;
  grid-template-columns: 210px repeat(12, minmax(105px, 1fr));
  min-width: 1500px;
  border-top: 1px solid #dbe5ea;
  border-left: 1px solid #dbe5ea;
}

.planning-year-heading,
.planning-year-resource,
.planning-year-cell {
  padding: 9px;
  border-right: 1px solid #dbe5ea;
  border-bottom: 1px solid #dbe5ea;
}

.planning-year-heading {
  background: #edf4f7;
  text-align: center;
  text-transform: capitalize;
}

.planning-year-resource {
  border-left: 6px solid var(--resource-color, #526a78);
  font-weight: 800;
}

.planning-year-cell {
  display: grid;
  gap: 3px;
  text-align: center;
}

.planning-year-cell.is-warn {
  background: #fff7de;
}

.planning-year-cell.is-over {
  background: #ffe8e8;
  color: #a12424;
}

.planning-person-dot {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-right: 6px;
  border-radius: 50%;
  background: var(--resource-color, #526a78);
}

.planning-list-panel .planning-event {
  min-width: 260px;
}

@media (max-width: 1100px) {
  .planning-kpis,
  .planning-manager-grid,
  .planning-exception-list {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

@media (max-width: 760px) {
  .planning-topbar,
  .planning-controls,
  .planning-day-row,
  .planning-focus-banner {
    align-items: stretch;
    flex-direction: column;
  }

  .planning-control-actions {
    justify-content: flex-start;
  }

  .planning-kpis,
  .planning-manager-grid {
    grid-template-columns: 1fr;
  }

  .planning-filters > *,
  .planning-form-grid > * {
    flex-basis: 100%;
  }

  .planning-day-row > header {
    flex-basis: auto;
  }

  .planning-person-stats {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .planning-completion-summary {
    grid-template-columns: 1fr;
  }

  .planning-completion-actions button {
    flex: 1;
  }
}
/* Prenotazione autonoma: griglia confinata, task e pannello condiviso. */
.ap-calendar-layout{display:grid;grid-template-columns:minmax(0,1fr) 310px;gap:16px;align-items:start}
.ap-grid-scroll{max-width:100%;overflow:auto;max-height:72vh;border:1px solid #dce3e9;border-radius:12px;background:#fff}
.ap-time-grid{display:grid;grid-template-columns:52px repeat(var(--ap-days),minmax(105px,1fr));min-width:720px}
.ap-time-label,.ap-grid-corner{padding:8px 4px;background:#f7f9fb;font-size:12px;position:sticky;left:0;z-index:2;border-bottom:1px solid #e4e9ee}
.ap-day-head,.ap-grid-corner{position:sticky;top:0;z-index:3;background:#eef3f7;padding:12px 6px;font-weight:700;font-size:12px}
.ap-grid-cell{min-height:42px;border-left:1px solid #e3e9ef;border-bottom:1px solid #e3e9ef;position:relative;padding:2px}
.ap-grid-cell.is-unavailable{background:repeating-linear-gradient(135deg,#f4f6f8,#f4f6f8 5px,#eef1f4 5px,#eef1f4 6px)}
.ap-grid-cell.is-free{background:#fff}.ap-grid-cell.is-drop-target{outline:3px solid #2c718c;outline-offset:-3px}
.ap-cell-book{border:0!important;background:transparent!important;color:#456372!important;font-size:11px!important;padding:5px!important;width:100%;height:100%;text-align:left}
.ap-cell-state{display:block;font-size:9px;color:#6c7882;padding:5px}.ap-grid-event{display:flex!important;flex-direction:column;gap:3px;text-align:left;width:100%;font-size:11px!important;white-space:normal;background:#e8f1f9!important;color:#183a53!important;border:1px solid #a9c4d7!important;border-left:4px solid var(--resource-color,#526a78)!important;padding:6px!important;border-radius:5px!important}
.ap-grid-event small,.ap-grid-event span{font-size:10px}.ap-grid-event:focus,.ap-cell-book:focus{outline:3px solid #ba7000;outline-offset:-2px}
.ap-filters{display:flex;flex-wrap:wrap;gap:12px;align-items:end;margin:14px 0}.ap-filters label{display:flex;flex-direction:column;gap:5px;min-width:170px;flex:1}
.ap-filters select{width:100%}.ap-balances{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px;margin:16px 0}
.ap-balances>div{padding:13px;border-radius:9px;background:#eef4f7}.ap-balances small{display:block;color:#4d606d;font-size:12px}.ap-balances strong{display:block;margin-top:5px;font-size:20px}
.ap-task-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:13px 0;border-bottom:1px solid #e4e9ee}.ap-task-row>div:first-child{flex:1}.ap-task-row small,.ap-task-row span{display:block;font-size:12px;margin-top:4px}.ap-task-row button{flex-shrink:0}.ap-backlog .ap-task-row{flex-wrap:wrap}.ap-backlog .ap-task-row>div{flex-basis:100%}.ap-backlog{max-height:72vh;overflow:auto;contain:paint}.ap-help{font-size:12px;color:#526474}
.ap-panel-backdrop{position:fixed;inset:0;background:#182b3d70;z-index:10050;display:flex;justify-content:flex-end}.ap-task-panel{width:min(640px,100vw);height:100%;overflow:auto;background:#fff;padding:24px;box-shadow:-10px 0 35px #0002;color:#172e42}
.ap-task-panel form{display:flex;flex-direction:column;gap:14px}.ap-task-panel label{display:flex;flex-direction:column;gap:6px;font-size:14px}.ap-task-panel input,.ap-task-panel select,.ap-task-panel textarea{width:100%;min-height:42px;padding:9px;border:1px solid #b6c4d0;border-radius:6px;font:inherit;box-sizing:border-box}.ap-task-panel .ap-check{flex-direction:row;align-items:center}.ap-check input{width:20px;min-height:20px}
.ap-panel-save{position:sticky;bottom:0;background:white;padding:16px 0;border-top:1px solid #dae2e9;z-index:1}.ap-panel-save button{width:100%;min-height:44px}.ap-session{padding:14px 0;border-bottom:1px solid #e1e7ed;display:flex;gap:8px;flex-wrap:wrap}.ap-session strong{flex-basis:100%}.ap-budget{padding:12px;background:#f0f5f9;border-radius:8px;margin-bottom:15px}.ap-field-error{color:#a22525;font-weight:600}.ap-event-list{display:grid;gap:10px}.ap-workspace details{margin:15px 0}.ap-task-panel details{margin:16px 0}.ap-task-panel summary{cursor:pointer}
@media(max-width:1150px){.ap-calendar-layout{grid-template-columns:minmax(0,1fr)}.ap-backlog{max-height:400px}.ap-balances{grid-template-columns:repeat(2,minmax(0,1fr))}.ap-task-row{flex-wrap:wrap}.ap-task-panel{padding:16px}}

.ap-time-grid .ap-grid-cell{height:42px;min-height:42px;max-height:42px;box-sizing:border-box}.ap-time-grid .ap-grid-event{position:absolute;top:2px;left:2px;right:2px;width:calc(100% - 4px);height:calc(var(--ap-duration,1) * 42px - 4px);z-index:2;overflow:hidden}.ap-time-grid .ap-grid-event small,.ap-time-grid .ap-grid-event span{font-size:10px}.ap-time-grid .ap-day-head{z-index:4}

.ap-resize-handle{display:block;position:absolute;bottom:0;left:0;right:0;height:15px;cursor:ns-resize;text-align:center;background:#dce6f1;color:#143352}.ap-resource-heading{position:sticky;left:0;background:white;padding:.5rem}.ap-panel-save{z-index:5}.ap-grid-event{padding-bottom:16px}.ap-grid-scroll{max-height:75vh}

/* Accesso operativo distinto dalla prenotazione, in commessa e calendario. */
.ap-task-actions{display:flex;flex-direction:column;align-items:stretch;gap:8px;max-width:230px;min-width:165px}.ap-task-actions button{white-space:normal;text-align:center}.ap-panel-navigation{display:flex;gap:10px;margin:16px 0;flex-wrap:wrap}.ap-panel-navigation button{flex:1}.ap-task-panel-operation{width:min(960px,100vw)}.ap-operation{margin-top:12px}.ap-linked-session{padding:12px;background:#eef4f7;border-radius:8px;display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap}.ap-back-operation{margin-bottom:16px}.ap-operation .fcc-host{min-width:0}.ap-task-panel-operation .fcc-item-card{min-width:0}.ap-task-row .ap-task-actions{flex-basis:auto}
@media(max-width:600px){.ap-task-row .ap-task-actions{flex-basis:100%;max-width:none;flex-direction:column}.ap-task-panel-operation{padding:14px;box-sizing:border-box}.ap-panel-navigation button{min-height:44px}}

/* Navigazione anno → mese → giorno, accessibile anche da tastiera. */
.planning-calendar .planning-date-button {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 4px;
  width: 100%;
  min-height: 34px;
  padding: 6px;
  border: 0;
  border-radius: 5px;
  background: transparent;
  color: inherit;
  font: inherit;
  text-transform: inherit;
  cursor: pointer;
  box-shadow: none;
}
.planning-calendar .planning-date-button:hover { background: #dcebf3; }
.planning-calendar .planning-date-button:focus-visible { outline: 3px solid #2c718c; outline-offset: -2px; }
.planning-month-day:not(.is-empty) { cursor: pointer; }
.planning-month-day > header .planning-date-button { font-weight: 700; }
.planning-year-heading .planning-date-button { justify-content: center; }
.planning-year-cell .planning-date-button { flex-direction: column; justify-content: center; height: 100%; }

/* Keep the time grid scrollable while the backlog follows the page. */
.ap-calendar-layout { grid-template-columns: minmax(0, 1fr) clamp(360px, 29vw, 420px); }
.ap-backlog { max-height: none; overflow: visible; contain: none; }
.ap-cell-state { font-size: 11px; line-height: 1.35; }
.ap-cell-book { font-size: 12px !important; line-height: 1.35; }
.ap-task-row small,.ap-task-row span { font-size: var(--text-caption); line-height: 1.45; }
.ap-backlog .ap-task-row > div:first-child {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  gap: 4px;
  min-width: 0;
}
.ap-backlog .ap-task-row > div:first-child strong { overflow-wrap: anywhere; }
.ap-backlog .ap-task-row > div:nth-child(2) { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 7px; min-width: 0; }
.ap-backlog .ap-task-row > div:nth-child(2) small { flex-basis: 100%; }
.ap-backlog .ap-task-row .chip { display: inline-flex; width: fit-content; max-width: 100%; margin-top: 0; }
.ap-backlog .ap-task-actions { width: 100%; max-width: none; min-width: 0; flex-direction: row; flex-wrap: wrap; }
.ap-backlog .ap-task-actions button { flex: 1 1 180px; min-height: 44px; }
.ap-backlog-more { width: 100%; min-height: 44px; margin-top: 14px; }
.ap-backlog > details > summary { cursor: pointer; min-height: 44px; }

@media (max-width: 1350px) {
  .ap-calendar-layout { grid-template-columns: minmax(0, 1fr); }
}
