*{box-sizing:border-box}body{margin:0;font-family:Arial,sans-serif;background:#f4f7f5;color:#17211b}header{background:#006b37;color:#fff;padding:20px 28px}.brand{display:flex;align-items:center;gap:14px}.brand-mark{width:58px;height:58px;border:3px solid #fff;border-radius:50%;display:grid;place-items:center;font-weight:800}.brand b{font-size:30px}.brand small{display:block;font-size:15px}.layout{display:grid;grid-template-columns:320px 1fr;gap:24px;padding:28px;max-width:1500px;margin:auto}.card{background:#fff;border:1px solid #d9e3dd;border-radius:20px;padding:22px;box-shadow:0 8px 25px rgba(0,0,0,.05);margin-bottom:20px}label{display:block;font-weight:700;margin:0 0 8px}select,input{width:100%;padding:14px;border:1px solid #cbd8d0;border-radius:12px;font-size:16px;margin-bottom:16px}.legend div{margin:15px 0}.legend i{display:inline-block;width:16px;height:16px;border-radius:4px;margin-right:10px}.green,.day.disponibile{background:#70cf7a}.yellow,.day.pochi{background:#ffc83d}.red,.day.completo{background:#f26a6a}.gray,.day.chiuso{background:#d7dcda}.month-head{display:flex;align-items:center;justify-content:space-between}.month-head button{border:0;border-radius:12px;padding:12px 18px;font-size:24px}.week,.calendar{display:grid;grid-template-columns:repeat(7,1fr);gap:10px}.week{font-weight:700;text-align:center;margin:18px 0 10px}.day{border:0;border-radius:13px;min-height:82px;padding:10px;cursor:pointer;font-size:18px}.day small{display:block;font-size:11px;margin-top:9px}.first{display:flex;justify-content:space-between;align-items:center;background:#e8f7ed;border:1px solid #a7ddb6;border-radius:15px;padding:16px;margin-top:20px}.btn{background:#00743d;color:#fff;border:0;border-radius:11px;padding:13px 20px;text-decoration:none;font-weight:700;cursor:pointer}.details{scroll-margin-top:15px}.slot,.person{display:flex;justify-content:space-between;align-items:center;width:100%;border-radius:12px;padding:15px;margin:9px 0;border:1px solid #ddd}.slot.free{background:#eaf8ee;border-color:#b8e4c2;cursor:pointer}.slot.busy,.person{background:#fff0f0;border-color:#f4c1c1}.person{display:grid;grid-template-columns:120px 1fr}.person small{grid-column:2}.modal{position:fixed;inset:0;background:rgba(0,0,0,.45);display:grid;place-items:center;padding:15px;z-index:20}.modal-box{background:#fff;border-radius:20px;padding:25px;width:min(520px,100%);max-height:95vh;overflow:auto;position:relative}.close{position:absolute;right:14px;top:10px;border:0;background:none;font-size:30px}.selected{background:#eaf8ee;padding:12px;border-radius:10px;margin-bottom:15px}.hidden{display:none!important}.error{background:#ffe4e4;color:#8a1717;border:1px solid #f2a9a9;padding:14px;border-radius:12px;margin-bottom:15px}.empty{text-align:center;grid-column:1/-1;padding:80px 20px;color:#708078}.confirm{max-width:650px;margin:40px auto;padding:20px}.muted{color:#68756d}
@media(max-width:760px){header{padding:14px 18px}.brand-mark{width:46px;height:46px}.brand b{font-size:24px}.layout{display:block;padding:14px}.legend{display:none}.calendar-card{padding:13px}.week,.calendar{gap:5px}.week{font-size:12px}.day{min-height:58px;padding:6px;font-size:15px}.day small{font-size:9px}.first{display:block}.first .btn{display:block;margin-top:12px;width:100%}.person{grid-template-columns:85px 1fr}.slot{padding:14px 10px}.modal{align-items:end;padding:0}.modal-box{border-radius:22px 22px 0 0;max-height:94vh}.brand small{font-size:12px}}

.geo-head{display:flex;justify-content:space-between;align-items:center;gap:8px}
.geo-btn{border:1px solid #9bc8aa;background:#eaf8ee;color:#006b37;border-radius:10px;padding:8px 10px;font-weight:700;cursor:pointer}
.nearby{margin:10px 0 15px;border:1px solid #d8e4dc;border-radius:12px;overflow:hidden}
.nearby button{display:flex;width:100%;justify-content:space-between;gap:10px;padding:11px;border:0;border-bottom:1px solid #e5ece8;background:#fff;text-align:left;cursor:pointer}
.nearby button:last-child{border-bottom:0}.nearby button:hover{background:#f2faf5}
.nearby small{white-space:nowrap;color:#006b37;font-weight:700}
@media(max-width:760px){.geo-head{align-items:flex-start}.geo-btn{font-size:12px}}

.public-header{display:flex;align-items:center;justify-content:space-between;gap:16px}
.header-actions{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.operator-link,.view-link{display:inline-flex;align-items:center;text-decoration:none;border-radius:10px;padding:9px 12px;font-weight:700}
.operator-link{background:#fff;color:#006b37;border:1px solid rgba(255,255,255,.75)}
.view-link{color:#fff;border:1px solid rgba(255,255,255,.4)}
.mobile-version .layout{display:block;max-width:760px;margin:auto}
.mobile-version aside,.mobile-version section{width:100%}
.mobile-version .calendar-card{padding:12px}
.mobile-version .calendar{gap:5px}
.mobile-version .day{min-height:62px;padding:7px 3px}
.mobile-version .day small{font-size:10px}
.mobile-version .modal-box{width:100%;max-width:none;min-height:100vh;border-radius:0;margin:0}
.mobile-version .details{scroll-margin-top:10px}
@media(max-width:760px){
 .public-header{align-items:flex-start;padding:12px}
 .header-actions{justify-content:flex-end}
 .operator-link,.view-link{font-size:12px;padding:7px 9px}
}

.operator-mode-banner{
    max-width:1180px;margin:12px auto;padding:12px 16px;
    background:#e9f7ef;border:1px solid #a9d7b9;border-radius:12px;
    display:flex;align-items:center;justify-content:space-between;gap:12px
}
.operator-mode-banner div{display:flex;flex-direction:column}
.operator-mode-banner small{color:#456b55;margin-top:3px}
.operator-mode-banner a{
    text-decoration:none;background:#007a3d;color:#fff;padding:9px 12px;
    border-radius:9px;font-weight:700;white-space:nowrap
}
.operator-person{grid-template-columns:105px minmax(180px,1fr) minmax(150px,auto) auto!important}
.status-pill{
    display:inline-block;margin-top:4px;padding:2px 7px;border-radius:999px;
    background:#eef3f0;color:#315b43;font-size:11px;font-weight:700
}
@media(max-width:700px){
 .operator-mode-banner{margin:8px;align-items:flex-start}
 .operator-person{grid-template-columns:1fr!important}
}

.operator-agenda-entry{max-width:1180px;margin:12px auto;display:flex;justify-content:space-between;align-items:center;gap:16px}
.operator-agenda-entry h2,.operator-agenda-entry p{margin:0}.operator-agenda-entry p{margin-top:4px;color:#607068}
.operator-name{color:#fff;font-weight:700}
.operator-wrap{max-width:1280px;margin:18px auto;padding:0 14px}
.operator-toolbar{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;align-items:end;gap:16px}
.month-nav{display:flex;align-items:center;gap:12px}
.month-nav button{border:1px solid #cad8cf;background:#fff;border-radius:9px;padding:9px 12px;cursor:pointer}
.month-nav strong{text-transform:capitalize;min-width:160px;text-align:center}
.operator-grid{display:grid;grid-template-columns:minmax(520px,1.15fr) minmax(390px,.85fr);gap:16px;margin-top:16px}
.operator-calendar .operator-day{min-height:92px;display:flex;flex-direction:column;align-items:flex-start;gap:5px}
.operator-calendar .operator-day.selected{outline:3px solid #007a3d}
.operator-calendar .day-count{font-size:11px;color:#52645a}
.operator-calendar .waiting-count{font-size:10px;background:#fff0c8;color:#7a5600;border-radius:999px;padding:2px 6px}
.operator-day-panel{min-height:520px}
.legend{display:flex;gap:14px;flex-wrap:wrap;margin-bottom:14px;font-size:12px}
.legend span{display:flex;align-items:center;gap:6px}.dot{width:10px;height:10px;border-radius:50%;display:inline-block}
.dot.booking{background:#159455}.dot.waiting{background:#e5a000}
.operator-booking{display:grid;grid-template-columns:72px 1fr 190px;gap:12px;padding:13px;border:1px solid #dce6df;border-left:5px solid #159455;border-radius:12px;margin-bottom:10px;background:#fff}
.operator-booking.is-waiting{border-left-color:#e5a000;background:#fffaf0}
.booking-time{display:flex;flex-direction:column;font-size:18px}.booking-time small{font-size:12px;color:#66776d}
.booking-main h3{margin:0 0 4px}.service-name{font-weight:700;color:#006b37;margin-bottom:5px}
.booking-main p{font-size:12px;background:#f4f7f5;padding:7px;border-radius:7px}
.booking-actions{display:flex;flex-direction:column;gap:9px;align-items:stretch}
.flag-switch{display:flex;gap:8px;align-items:center;font-size:12px;font-weight:700;padding:8px;background:#f1f5f2;border-radius:8px}
.flag-switch input{width:auto}
@media(max-width:900px){
 .operator-toolbar{grid-template-columns:1fr}.operator-grid{grid-template-columns:1fr}
 .operator-booking{grid-template-columns:60px 1fr}.booking-actions{grid-column:1/-1}
}
@media(max-width:600px){
 .operator-agenda-entry{margin:8px;align-items:flex-start;flex-direction:column}
 .operator-calendar .operator-day{min-height:70px}
 .operator-calendar .day-count{font-size:9px}
}

.operator-auto-label{
    font-size:12px;
    font-weight:700;
    color:#315b43;
    background:#fff;
    border:1px solid #b9d9c5;
    border-radius:9px;
    padding:8px 10px;
}
.operator-inline-agenda{
    max-width:1280px;
    margin:18px auto;
}
.operator-inline-head{
    display:flex;
    justify-content:space-between;
    align-items:center;
    gap:16px;
    margin-bottom:16px;
}
.operator-inline-head h2,
.operator-inline-head p{
    margin:0;
}
.operator-inline-head p{
    margin-top:4px;
    color:#607068;
}
.operator-inline-grid{
    display:grid;
    grid-template-columns:minmax(500px,1.1fr) minmax(380px,.9fr);
    gap:18px;
}
@media(max-width:900px){
    .operator-inline-grid{grid-template-columns:1fr}
    .operator-inline-head{align-items:flex-start;flex-direction:column}
}

.classic-operator-page{background:#f2f8f4}
.classic-operator-wrap{
 max-width:1380px;margin:28px auto;padding:0 18px;
 display:grid;grid-template-columns:minmax(650px,1fr) 410px;gap:24px;align-items:start
}
.classic-operator-main,.classic-day{border-radius:24px;padding:24px}
.classic-sede-row label{display:block;font-size:19px;font-weight:800;margin-bottom:9px}
.classic-sede-row select{font-size:18px;padding:15px 16px;border-radius:15px}
.classic-month-head{display:grid;grid-template-columns:62px 1fr 62px;align-items:center;gap:16px;margin:26px 0}
.classic-month-head h1{text-align:center;text-transform:capitalize;margin:0;font-size:34px}
.classic-month-head button{height:58px;border:0;border-radius:18px;background:#e7f6eb;color:#08733b;font-size:38px;cursor:pointer}
.classic-weekdays{margin-bottom:10px;font-size:16px;font-weight:800}
.classic-calendar{gap:10px}
.classic-day-cell{
 min-height:88px;border:1px solid #d9e1e8;border-radius:18px;background:#edf1f5;
 display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
 color:#98a7bb;cursor:pointer
}
.classic-day-cell b{font-size:24px}.classic-day-cell small{font-size:11px;font-weight:800}
.classic-day-cell.with-bookings{background:#ffe3e3;border-color:#ffbaba;color:#932525}
.classic-day-cell.selected{background:#087c40;border-color:#087c40;color:#fff}
.classic-day-cell em{font-style:normal;font-size:10px;font-weight:800;background:#f0a900;color:#fff;padding:2px 6px;border-radius:999px}
.classic-day-title{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:16px}
.classic-day-title h2{text-transform:capitalize;font-size:30px;margin:0}.classic-day-title #dayDate{font-size:17px;color:#68798d}
.duration-badge{background:#f4f4f4;border-radius:8px;padding:5px 9px;font-weight:800;white-space:nowrap}
.sportello-group{margin-bottom:18px}
.sportello-heading{display:flex;justify-content:space-between;align-items:center;background:#087c40;color:#fff;border-radius:999px;padding:8px 13px;margin-bottom:10px;font-weight:800}
.sportello-heading b{background:#fff;color:#087c40;width:24px;height:24px;border-radius:50%;display:grid;place-items:center}
.classic-booking{border:1px solid #ffbcbc;background:#fff1f1;border-radius:18px;padding:15px;margin-bottom:11px}
.classic-booking.waiting{border-color:#f2bf45;background:#fff9e8}
.classic-booking-top{display:flex;justify-content:space-between;gap:12px}
.classic-booking strong{font-size:19px}.classic-booking h3{margin:5px 0 2px;font-size:18px}.classic-service{font-size:13px;font-weight:800;color:#08723b;margin-bottom:5px}
.classic-booking small{display:block;color:#62738a}.classic-booking p{margin:7px 0 0;font-size:12px}
.classic-actions{display:flex;gap:7px}.classic-actions a,.classic-actions button{width:38px;height:38px;border:1px solid #1976ff;border-radius:7px;background:#fff;display:grid;place-items:center;text-decoration:none;cursor:pointer;font-size:18px}
.classic-actions button{border-color:#ff4a56}
.presence-flag{margin-top:11px;background:#fff;border-radius:9px;padding:8px 10px;display:flex;align-items:center;gap:8px;font-weight:800;font-size:12px}
.presence-flag input{width:auto}
@media(max-width:1000px){
 .classic-operator-wrap{grid-template-columns:1fr}
 .classic-day{position:static}
}
@media(max-width:650px){
 .classic-operator-wrap{padding:0 8px;margin:12px auto}
 .classic-operator-main,.classic-day{padding:14px;border-radius:16px}
 .classic-month-head h1{font-size:26px}
 .classic-day-cell{min-height:66px;border-radius:12px}.classic-day-cell b{font-size:19px}.classic-day-cell small{font-size:9px}
}

/* Agenda operatore: evidenza disponibilità delle postazioni */
.postazioni-summary{
 display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:0 0 18px
}
.postazioni-summary>div{
 border:1px solid #d9e3dd;background:#f5f8f6;border-radius:14px;padding:11px;text-align:center
}
.postazioni-summary b{display:block;font-size:24px;line-height:1;color:#20352a}
.postazioni-summary span{display:block;margin-top:5px;font-size:11px;font-weight:800;text-transform:uppercase;color:#6b7c72}
.postazioni-summary .used{background:#fff5e4;border-color:#f2d49a}
.postazioni-summary .used b{color:#aa6800}
.postazioni-summary .free{background:#eaf8ef;border-color:#addcbd}
.postazioni-summary .free b{color:#087c40}
.classic-day-cell{padding:8px!important;justify-content:flex-start!important;align-items:stretch!important;text-align:left}
.classic-day-cell .cell-top{display:flex;align-items:center;justify-content:space-between;width:100%}
.classic-day-cell .cell-top b{font-size:22px}
.classic-day-cell>small{font-size:10px;margin-top:auto}
.classic-day-cell .desk-line{
 display:block;width:100%;font-size:10px;font-weight:800;margin-top:5px;padding-top:5px;border-top:1px solid rgba(0,0,0,.08)
}
.classic-day-cell .desk-line i{font-style:normal;color:#a36a00}
.classic-day-cell .desk-line strong{color:#087c40}
.classic-day-cell.selected .desk-line i,.classic-day-cell.selected .desk-line strong{color:#fff}
.sportello-heading{border-radius:13px!important;padding:11px 13px!important}
.sportello-state{font-size:11px;padding:4px 8px;border-radius:999px;background:#fff}
.sportello-state.busy{color:#8e2d2d}
.sportello-state.free{color:#087c40}
.sportello-group.sportello-free .sportello-heading{background:#087c40}
.free-station-box{
 border:1px dashed #84c99f;background:#eefaf2;border-radius:14px;padding:16px;display:flex;flex-direction:column;gap:4px;color:#16673c
}
.free-station-box b{font-size:17px}.free-station-box small{color:#5b7564}
@media(max-width:650px){
 .postazioni-summary{grid-template-columns:repeat(3,1fr)}
 .postazioni-summary b{font-size:20px}
 .classic-day-cell{min-height:82px!important}
 .classic-day-cell .desk-line{font-size:8px}
}

.week-operator-page{background:#eef6f0}
.week-agenda-wrap{max-width:100%;margin:16px auto;padding:0 14px}
.week-toolbar{display:grid;grid-template-columns:minmax(250px,360px) auto auto 1fr;align-items:end;gap:14px;margin-bottom:14px}
.week-sede label{display:block;font-weight:800;margin-bottom:6px}
.week-sede select{height:48px;border-radius:12px;font-size:16px}
.week-navigation{display:flex;align-items:center;gap:10px}
.week-navigation button{width:44px;height:44px;border:1px solid #c8d8ce;background:#fff;border-radius:11px;font-size:22px;cursor:pointer}
.week-navigation div{display:flex;flex-direction:column;min-width:210px;text-align:center}
.week-navigation small{color:#65786c;margin-top:2px}
.week-legend{display:flex;justify-content:flex-end;gap:14px;flex-wrap:wrap;font-size:12px}
.week-legend span{display:flex;align-items:center;gap:5px}.legend-dot{width:10px;height:10px;border-radius:3px}
.legend-dot.booked{background:#7fbf00}.legend-dot.waiting{background:#d97706}.legend-dot.free{background:#dff3d5}
.week-empty{text-align:center;padding:50px;color:#63766a}
.week-panel{padding:0;overflow:hidden}
.week-scroll{overflow:auto;max-height:calc(100vh - 205px);position:relative}
.week-grid{min-width:max-content}
.week-loading{padding:60px;text-align:center}
.week-canvas{
 display:grid;
 grid-template-columns:76px repeat(var(--cols),var(--col-width));
 grid-template-rows:58px 45px repeat(var(--grid-rows),var(--grid-unit-height));
 position:relative;
 background:#fff
}
.week-corner{grid-column:1;grid-row:1/3;z-index:20;background:#056b36;color:#fff;display:grid;place-items:center;font-weight:900;border-right:1px solid #194f35}
.week-day-header{z-index:15;background:#087a3e;color:#fff;display:flex;justify-content:center;align-items:center;gap:8px;border-right:1px solid rgba(255,255,255,.25);font-size:15px}
.week-day-header span{opacity:.9}
.week-time-spacer{grid-column:1;grid-row:2;background:#056b36;z-index:19}
.week-desk-header{background:#dff0e4;border-right:1px solid #b7cfbd;border-bottom:1px solid #a9c5b1;display:flex;align-items:center;justify-content:center;padding:4px 7px;font-size:12px;font-weight:800;text-align:center;position:sticky;top:58px;z-index:12}
.week-time-label{background:#f4f7f5;border-right:1px solid #ccd8d0;border-bottom:1px solid #d8dfda;display:flex;align-items:flex-start;justify-content:center;padding-top:4px;font-size:11px;font-weight:800;color:#52645a;z-index:11;min-height:0}
.week-slot{border-right:1px dotted #c1cec5;border-bottom:1px dotted #c6d2ca;min-height:0}
.week-slot.open{background:#dff3d5}.week-slot.closed{background:#f1f3f2}
.sticky-top{position:sticky;top:0}.sticky-left{position:sticky;left:0}
.week-appointment{
 z-index:5;margin:2px;border:1px solid #6e9f00;border-left:5px solid #4f8500;border-radius:7px;background:#98d600;
 padding:4px 5px;text-align:left;overflow:hidden;cursor:pointer;color:#152000;box-shadow:0 1px 2px rgba(0,0,0,.15)
}
.week-appointment:hover{filter:brightness(.96);transform:translateY(-1px)}
.week-appointment.waiting{background:#d97706;border-color:#a95000;border-left-color:#843e00;color:#fff}
.week-appointment span,.week-appointment strong,.week-appointment small{display:block;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.week-appointment .appt-time{font-size:11px;font-weight:900}.week-appointment strong{font-size:12px;margin-top:2px}.week-appointment small{font-size:10px}
.week-appointment em{display:inline-block;font-style:normal;font-size:9px;font-weight:900;background:#fff;color:#9a4100;border-radius:999px;padding:1px 5px;margin-top:3px}
.agenda-modal[hidden]{display:none}.agenda-modal{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;padding:18px}
.agenda-modal-backdrop{position:absolute;inset:0;background:rgba(11,28,18,.58)}
.agenda-modal-card{position:relative;z-index:1;background:#fff;border-radius:18px;padding:22px;width:min(520px,100%);box-shadow:0 25px 60px rgba(0,0,0,.28)}
.agenda-modal-close{position:absolute;right:12px;top:10px;border:0;background:#eef3ef;border-radius:50%;width:34px;height:34px;font-size:23px;cursor:pointer}
.modal-status{display:inline-block;background:#e7f5eb;color:#08733b;border-radius:999px;padding:5px 9px;font-size:12px;font-weight:900}
.modal-status.waiting{background:#fff0d9;color:#a24c00}.agenda-modal-card h2{margin:12px 0}
.modal-meta p{margin:7px 0}.modal-actions{display:flex;gap:8px;flex-wrap:wrap;margin-top:18px}.btn.danger{background:#bd2836}.waiting-btn{background:#d97706}
@media(max-width:900px){
 .week-toolbar{grid-template-columns:1fr 1fr}.week-legend{justify-content:flex-start;grid-column:1/-1}
 .week-scroll{max-height:calc(100vh - 260px)}
}
@media(max-width:600px){
 .week-toolbar{grid-template-columns:1fr}.week-navigation{justify-content:space-between}.week-navigation div{min-width:0}
 .week-scroll{max-height:calc(100vh - 300px)}
}

.new-booking-btn{background:#095fa8}
.legend-dot.served{background:#1677c8}
.legend-dot.absent{background:#777}
.week-slot{padding:0;border-top:0;border-left:0;cursor:pointer}
.week-slot.open:hover{background:#bce7ad;box-shadow:inset 0 0 0 2px #159455}
.week-slot.closed{cursor:not-allowed}
.week-appointment.booked{background:#98d600}
.week-appointment.served{background:#3a96d8;border-color:#1466a1;border-left-color:#0b568e;color:#fff}
.week-appointment.absent{background:#8a8f92;border-color:#666;border-left-color:#4d5052;color:#fff}
.week-appointment.served em,.week-appointment.absent em{color:#333}
.status-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:18px}
.status-button{border:0;border-radius:10px;padding:11px 10px;color:#fff;font-weight:800;cursor:pointer}
.status-button.booked{background:#6f9f00}
.status-button.waiting{background:#d97706}
.status-button.served{background:#1677c8}
.status-button.absent{background:#737779}
.modal-status.status-prenotato{background:#edf6da;color:#547800}
.modal-status.status-in_attesa{background:#fff0d9;color:#a24c00}
.modal-status.status-servito{background:#e2f1fc;color:#0d609d}
.modal-status.status-assente{background:#eceeef;color:#555}
.create-booking-card{width:min(760px,100%);max-height:92vh;overflow:auto}
.create-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}
.create-booking-card label{display:flex;flex-direction:column;gap:5px;font-weight:800;font-size:13px;margin-bottom:11px}
.create-booking-card input,.create-booking-card select,.create-booking-card textarea{width:100%;padding:11px;border:1px solid #c8d5cc;border-radius:9px;font:inherit}
.cf-row{display:grid;grid-template-columns:1fr auto;gap:9px;align-items:end}
.btn.secondary{background:#e8eeea;color:#28533b}
.form-error{background:#ffe7e7;color:#9e2630;border:1px solid #f5b5b9;padding:10px;border-radius:9px;margin:8px 0}
@media(max-width:650px){
 .create-grid,.status-actions{grid-template-columns:1fr}
 .cf-row{grid-template-columns:1fr}
}

/* Correzione definitiva colonna orari */
.week-canvas{
 --time-width:58px;
 grid-template-columns:var(--time-width) repeat(var(--cols),var(--col-width)) !important;
}
.week-corner,.week-time-spacer,.week-time-label{
 width:var(--time-width);
 min-width:var(--time-width);
 max-width:var(--time-width);
 box-sizing:border-box;
}
.week-corner{font-size:13px;padding:0 3px;white-space:nowrap;overflow:hidden}
.week-time-label{font-size:10px;padding:4px 2px 0;white-space:nowrap}
#createDeskLockedName{background:#eef7f0;font-weight:800;color:#135b34}

/* Allineamento definitivo griglia agenda:
   ogni elemento riceve grid-column e grid-row direttamente dal JavaScript. */
.week-canvas{grid-auto-flow:row;grid-auto-columns:0;grid-auto-rows:0}
.week-time-label,.week-slot,.week-desk-header{min-width:0;box-sizing:border-box}


/* Feedback evidente per Trova sedi */
.geo-btn-prominent{font-size:14px;padding:11px 15px;box-shadow:0 4px 12px rgba(0,107,55,.16)}
.geo-btn-prominent:hover{transform:translateY(-1px);box-shadow:0 7px 18px rgba(0,107,55,.22)}
.geo-btn-prominent.loading{cursor:wait;opacity:.9}
.geo-btn-prominent:disabled{cursor:wait}
.geo-spinner{display:inline-block;width:15px;height:15px;margin-right:7px;vertical-align:-2px;border:2px solid currentColor;border-right-color:transparent;border-radius:50%;animation:geoSpin .7s linear infinite}
@keyframes geoSpin{to{transform:rotate(360deg)}}
.geo-hint{margin:8px 0 9px;padding:9px 11px;border-radius:9px;background:#f3f8f5;color:#365b45;font-size:13px;line-height:1.35;border:1px solid #d7eadc}
.geo-feedback{display:none;margin:8px 0 10px;padding:11px 12px;border-radius:9px;font-size:14px;line-height:1.4;font-weight:600}
.geo-feedback.info{display:block;background:#eef6ff;color:#1e4d78;border:1px solid #bdd9f2}
.geo-feedback.success{display:block;background:#ecfdf3;color:#17623a;border:1px solid #a7e5bf}
.geo-feedback.error{display:block;background:#fff1f1;color:#9b1c1c;border:1px solid #f3b8b8}
@media(min-width:761px){.geo-head{align-items:center}.geo-btn-prominent{min-width:245px}.geo-hint,.geo-feedback{max-width:100%}}


/* Scheda informativa e ricerca servizi */
.service-search{margin-bottom:8px}.service-count{font-size:12px;color:#64748b;margin:6px 0 10px}
.service-info{margin-top:12px;padding:14px;border:1px solid #b8ddd5;border-radius:12px;background:#f2fbf8;color:#1f2937}
.service-info-head strong{font-size:16px;color:#0f6258}.service-badges{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}
.service-badges span{font-size:12px;font-weight:700;background:#fff;border:1px solid #c9e7df;border-radius:999px;padding:5px 8px}
.service-info details{margin-top:12px;border-top:1px solid #d8ebe6;padding-top:10px}.service-info summary{cursor:pointer;font-weight:700;color:#0f766e}
.service-info dl{margin:10px 0 0}.service-info dl div{display:grid;grid-template-columns:minmax(120px,35%) 1fr;gap:8px;padding:7px 0;border-bottom:1px dashed #d7e7e3}
.service-info dt{font-weight:700}.service-info dd{margin:0;word-break:break-word}
.service-admin-tools{display:flex;gap:10px;flex-wrap:wrap;margin:12px 0}.service-admin-tools input,.service-admin-tools select{max-width:340px}
.service-card-main{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.service-card-code{font-size:12px;background:#eef2f7;padding:4px 7px;border-radius:6px;font-weight:700}
.service-meta{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0}.service-meta span{font-size:12px;padding:4px 7px;border-radius:999px;background:#eef7f5}
.service-extra summary{cursor:pointer;color:#0f766e;font-weight:700;margin:8px 0}.service-extra dl{margin:0}.service-extra dl div{display:grid;grid-template-columns:145px 1fr;gap:8px;padding:4px 0}
@media(max-width:700px){.service-info dl div,.service-extra dl div{grid-template-columns:1fr;gap:2px}}

/* Logo ufficiale CAF */
.planner-brand-logo{display:flex;align-items:center;margin-right:14px}
.planner-brand-logo img{display:block;max-width:165px;max-height:58px;width:auto;height:auto;object-fit:contain}
.booking-official-logo{text-align:center;margin:12px auto 18px}
.booking-official-logo img{max-width:210px;max-height:78px;width:auto;height:auto;object-fit:contain}
@media(max-width:700px){
 .planner-brand-logo img{max-width:130px;max-height:48px}
 .booking-official-logo img{max-width:175px;max-height:65px}
}

/* Associazione servizi / sportelli */
.assoc-toolbar{display:grid;grid-template-columns:minmax(240px,1fr) 220px;gap:10px;margin:14px 0 8px}
.assoc-toolbar input,.assoc-toolbar select{width:100%;padding:11px;border:1px solid #cbd5e1;border-radius:9px;background:#fff}
.assoc-legend{display:flex;flex-wrap:wrap;gap:10px;margin:8px 0 12px;font-size:13px;color:#475569}
.assoc-legend span{background:#f1f5f9;border-radius:999px;padding:6px 10px}
.assoc-checklist{display:grid;gap:8px;max-height:560px;overflow:auto;padding-right:4px}
.assoc-service-row{display:grid;grid-template-columns:minmax(0,1fr) 190px;gap:12px;align-items:center;padding:11px 12px;border:1px solid #dbe4ea;border-radius:10px;background:#fff}
.assoc-main{display:flex;align-items:flex-start;gap:10px;cursor:pointer}
.assoc-main input{margin-top:4px;transform:scale(1.15)}
.assoc-main span{display:flex;flex-direction:column;min-width:0}
.assoc-main small{display:block;color:#64748b;margin-top:3px;white-space:normal}
.assoc-online{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:8px;background:#ecfdf5;color:#166534;font-weight:700;cursor:pointer}
.assoc-online.is-disabled{opacity:.45;cursor:not-allowed;background:#f1f5f9;color:#64748b}
.assoc-online input{transform:scale(1.1)}
@media(max-width:700px){
 .assoc-toolbar,.assoc-service-row{grid-template-columns:1fr}
 .assoc-online{justify-content:flex-start}
}

/* Giorni e orari trascorsi */
.week-slot.past{background:#e4e7e5!important;cursor:not-allowed!important;opacity:.72}
.week-slot.past:hover{box-shadow:none!important}
.week-appointment.past-appointment{background:#8b928e!important;border-color:#676d69!important;border-left-color:#4f5551!important;color:#fff!important}


/* Stati calendario mensile */
.calendar .day.libero,
.day.libero{
    background:#dff5df !important;
    border-color:#69bd73 !important;
    color:#145c22 !important;
}
.calendar .day.parziale,
.day.parziale{
    background:#fff2bf !important;
    border-color:#e3b52e !important;
    color:#765800 !important;
}
.calendar .day.completo,
.day.completo{
    background:#ffdada !important;
    border-color:#dc6666 !important;
    color:#8a1d1d !important;
}
.calendar .day.chiuso,
.day.chiuso{
    background:#ecefed !important;
    border-color:#c6ceca !important;
    color:#6b7470 !important;
}
.calendar .day.passato,
.day.passato{
    opacity:.58;
    cursor:not-allowed !important;
}
.calendar .day small{
    display:block;
    margin-top:5px;
    font-size:11px;
    line-height:1.2;
    font-weight:700;
}

/* Quantità servizio */
.quantity-box{margin-top:14px;padding:13px;border:1px solid #cfe2d5;border-radius:10px;background:#f5fbf7}
.quantity-box label{display:block;margin:0 0 7px;font-weight:800}
.quantity-box select{width:100%;padding:10px;border:1px solid #b9cdc0;border-radius:8px;background:#fff}
.quantity-info{margin-top:8px;font-size:13px;color:#24613c;font-weight:700}
