:root{
  --bg:#E9EDE8;
  --panel:#FFFFFF;
  --ink:#26312B;
  --muted:#5F6E64;
  --line:#D3DBD3;
  --accent:#3F5D50;
  --accent-ink:#F3F6F2;
  --radius:6px;
}
*{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;}
html, body{overflow-x:hidden;}
body{
  margin:0;
  background:var(--bg);
  color:var(--ink);
  font-family:'Work Sans', sans-serif;
  font-size:15px;
  line-height:1.5;
  padding:clamp(16px,4vw,32px) clamp(12px,4vw,24px) 60px;
}
h1,h2,h3{
  font-family:'Fraunces', serif;
  font-weight:600;
  margin:0 0 4px;
  letter-spacing:-0.01em;
}
.wrap{width:100%;max-width:1600px;margin:0 auto;}
header.page{margin-bottom:24px;}
header.page h1{font-size:clamp(1.5rem,5vw,2.1rem);}
header.page p{color:var(--muted);max-width:60ch;margin:6px 0 0;}
.layout{display:grid;grid-template-columns:1fr;gap:16px;align-items:start;}
@media (min-width:960px){
  .layout{grid-template-columns:minmax(260px,320px) 1fr;gap:24px;}
}
.panel{
  background:var(--panel);
  border:1px solid var(--line);
  border-radius:var(--radius);
  padding:16px 16px 18px;
  margin-bottom:16px;
}
@media (min-width:600px){
  .panel{padding:18px 18px 20px;margin-bottom:20px;}
}
.panel h2{font-size:1.05rem;}
.cal-month-label{font-family:'Work Sans',sans-serif;font-weight:500;font-size:0.85rem;color:var(--muted);}
.panel .hint{color:var(--muted);font-size:0.85rem;margin:2px 0 12px;}
.row{display:flex;align-items:center;gap:8px 10px;margin-bottom:10px;flex-wrap:wrap;position:relative;}
.drag-handle{flex:none;width:22px;height:30px;display:flex;align-items:center;justify-content:center;color:var(--muted);cursor:grab;touch-action:none;font-size:1rem;user-select:none;border-radius:4px;}
.drag-handle:hover{background:#f2f0ea;}
.row.dragging{position:relative;z-index:20;box-shadow:0 4px 14px rgba(0,0,0,.12);background:#fff;border-radius:4px;}
.row.dragging .drag-handle{cursor:grabbing;}
.row input[type=text]{flex:1 1 110px;min-width:90px;}
.row-meta{display:flex;align-items:center;gap:10px;flex:none;margin-left:auto;}
.mini-check{display:flex;align-items:center;gap:3px;font-size:0.72rem;color:var(--muted);cursor:pointer;flex:none;user-select:none;}
.mini-check input{margin:0;}
input[type=text], input[type=time], select, input[type=month]{
  font-family:'Work Sans', sans-serif;
  font-size:0.92rem;
  padding:6px 8px;
  border:1px solid var(--line);
  border-radius:4px;
  background:#fff;
  color:var(--ink);
}
input[type=color]{
  width:30px;height:30px;padding:0;border:1px solid var(--line);border-radius:4px;background:none;cursor:pointer;flex:none;
}
button{
  font-family:'Work Sans', sans-serif;
  font-size:0.88rem;
  font-weight:500;
  cursor:pointer;
  border-radius:4px;
  border:1px solid var(--line);
  background:#fff;
  color:var(--ink);
  padding:7px 12px;
}
button.primary{background:var(--accent);color:var(--accent-ink);border-color:var(--accent);}
button.icon{padding:4px 8px;font-size:0.85rem;flex:none;min-height:32px;min-width:32px;}
button:hover{filter:brightness(0.97);}
button.icon:hover{background:#f2f0ea;}
.add-line{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap;}
.add-line input[type=text]{flex:1 1 140px;min-width:90px;}
label.check{display:flex;align-items:center;gap:8px;font-size:0.9rem;margin-top:10px;cursor:pointer;}
.swatch{width:16px;height:16px;border-radius:3px;flex:none;display:inline-block;border:1px solid rgba(0,0,0,.15);}
.chip{display:inline-flex;align-items:center;gap:5px;font-size:0.8rem;padding:2px 7px;border-radius:100px;color:#fff;white-space:nowrap;}
.tpl-card{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:16px 16px 18px;margin-bottom:18px;}
.tpl-card-head{display:flex;align-items:center;justify-content:space-between;gap:10px 14px;margin-bottom:12px;flex-wrap:wrap;}
.week-card{border:1px solid var(--line);border-radius:6px;padding:10px 12px 12px;margin-top:12px;background:#FAFBF9;}
.week-card-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;flex-wrap:wrap;}
.week-card-head .week-range{font-size:0.82rem;color:var(--muted);flex:1 1 auto;}
.table-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch;margin:0 -2px;}
table.grid{border-collapse:collapse;width:100%;min-width:620px;table-layout:fixed;}
table.grid th, table.grid td{border:1px solid var(--line);padding:6px;vertical-align:top;}
table.grid th{font-weight:500;font-size:0.8rem;color:var(--muted);text-align:left;background:#F7F8F5;}
table.grid th.band-col{width:110px;}
table.grid td.band-label{font-size:0.8rem;color:var(--muted);background:#F7F8F5;}
table.grid td.band-label b{color:var(--ink);font-weight:500;display:block;font-size:0.85rem;}
table.grid select{width:100%;font-size:0.82rem;padding:5px 4px;}
.band-row-actions{display:flex;gap:4px;margin-top:14px;}
.month-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:16px;}
.month-controls input[type=month]{flex:1 1 160px;}
.cal{border-collapse:collapse;width:100%;min-width:820px;table-layout:fixed;}
.cal th{font-size:0.78rem;color:var(--muted);font-weight:500;padding:4px 2px;text-align:left;}
.cal th.band-legend-col{width:78px;}
.cal td{border:1px solid var(--line);vertical-align:top;min-height:92px;height:auto;padding:5px;font-size:0.75rem;}
.cal td.out{background:#F5F6F3;color:#b8bfb7;}
.cal td.band-legend{background:#F7F8F5;padding:5px 4px;}
.cal .daynum{font-size:0.8rem;font-weight:500;margin-bottom:4px;}
.day-assign{display:flex;flex-direction:column;gap:3px;}
.cal-select{width:100%;font-size:0.64rem;padding:2px 3px;border-radius:3px;line-height:1.3;}
.band-legend-item{font-size:0.62rem;padding:2px 3px;border:1px solid transparent;border-radius:3px;line-height:1.3;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.pill{display:inline-block;padding:1px 5px;border-radius:3px;color:#fff;font-size:0.68rem;line-height:1.4;}
.busy-toggle{width:100%;min-height:32px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--muted);font-size:1rem;line-height:1;cursor:pointer;padding:6px 4px;}
.busy-toggle:hover{filter:brightness(0.97);}
.busy-toggle.is-busy{background:#F3E3DE;border-color:#E7C9BD;color:#8A4A34;}
.busy-toggle-chip{width:auto;min-height:34px;display:inline-flex;align-items:center;gap:6px;padding:6px 11px;border-radius:100px;font-size:0.78rem;}
.busy-toggle-chip .chip-label{white-space:nowrap;}

/* Vista agenda (mobile) del calendario mensile, alternativa alla tabella */
.cal-agenda{display:none;flex-direction:column;gap:10px;}
.cal-day-card{border:1px solid var(--line);border-radius:8px;padding:12px 14px;background:#fff;}
.cal-day-card.out{background:#F5F6F3;}
.cal-day-card.today{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent) inset;}
.cal-day-card-head{display:flex;align-items:baseline;gap:8px;margin-bottom:8px;flex-wrap:wrap;}
.cal-day-name{font-family:'Fraunces',serif;font-weight:600;font-size:1rem;}
.cal-day-num{color:var(--muted);font-size:0.85rem;}
.today-badge{margin-left:auto;font-size:0.7rem;background:var(--accent);color:var(--accent-ink);padding:2px 9px;border-radius:100px;}
.cal-band-row{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:7px 0;border-bottom:1px solid var(--line);flex-wrap:wrap;}
.cal-band-row:last-child{border-bottom:none;}
.cal-band-label{font-size:0.85rem;color:var(--ink);}
.cal-band-label small{display:block;color:var(--muted);font-size:0.72rem;font-weight:400;}
.cal-band-control{flex:1 1 140px;max-width:220px;}
.cal-band-control .cal-select{font-size:0.85rem;padding:6px 8px;width:100%;}

/* Vista agenda (mobile) delle settimane di disponibilità, alternativa alla tabella */
.week-agenda{display:none;flex-direction:column;}
.week-day-block{padding:8px 0;border-bottom:1px solid var(--line);}
.week-day-block:last-child{border-bottom:none;}
.week-day-head{font-size:0.85rem;font-weight:500;margin-bottom:6px;display:flex;align-items:baseline;gap:6px;}
.week-day-toggles{display:flex;flex-wrap:wrap;gap:6px;}

@media (max-width:699px){
  .cal-table-wrap{display:none;}
  .cal-agenda{display:flex;}
  .week-card .table-scroll{display:none;}
  .week-agenda{display:flex;}
}
@media print{
  .cal-table-wrap{display:block !important;}
  .cal-agenda{display:none !important;}
}
.legend{display:flex;flex-wrap:wrap;gap:18px;margin-top:16px;font-size:0.82rem;color:var(--muted);}
.legend .grp{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.status{font-size:0.78rem;color:var(--muted);margin-top:6px;}
.top-actions{display:flex;flex-direction:column;gap:8px;margin-bottom:14px;}
.top-actions button{width:100%;}
@media (min-width:520px){
  .top-actions{flex-direction:row;justify-content:flex-end;}
  .top-actions button{width:auto;}
}
.print-only{display:none;}
.range-bar{display:flex;justify-content:space-between;font-size:0.78rem;color:var(--muted);margin-top:4px;}
.range-bar b{color:var(--ink);}
input[type=range]{width:100%;accent-color:var(--accent);}
.warning{color:#B23B3B;font-size:0.8rem;margin:8px 0 0;}
@media print{
  @page{ size: A4 landscape; margin: 6mm; }
  .no-print{display:none !important;}
  .print-only{display:inline;}
  *{ -webkit-print-color-adjust:exact !important; print-color-adjust:exact !important; color-adjust:exact !important; }
  body{background:#fff;padding:0;}
  .wrap{max-width:none;width:100%;margin:0;}
  .panel .hint{display:none;}
  header.page{display:none;}
  .panel, .tpl-card{border:1px solid #ccc;box-shadow:none;}
  .panel{padding:0;margin-bottom:0;border:none;}
  .tpl-card{page-break-inside:avoid;break-inside:avoid;margin-bottom:14px;}
  .layout{grid-template-columns:1fr;gap:0;}
  .table-scroll{overflow:visible;}
  table.grid, .cal{font-size:9px;min-width:0;}
  table.grid th, table.grid td{padding:3px 4px;}
  table.grid thead, .cal thead{display:table-header-group;}
  .cal th.band-legend-col{width:50px;}
  .band-legend-item{font-size:7.5px;padding:1px 2px;}
  .cal td{height:auto;min-height:44px;padding:2px;}
  .cal tr{page-break-inside:avoid;break-inside:avoid;}
  .pill{font-size:8px;padding:1px 4px;}
  .legend{font-size:9px;margin-top:6px;}
}
