:root{--ink:#111827;--night:#0b1220;--orange:#ec430f;--cream:#f3f0e9;--paper:#fff;--mist:#e7e5df;--soft:#f8f7f3;--muted:#667085;--green:#087a55;--red:#b42318;--blue:#255fbd}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:Arial,"Helvetica Neue",sans-serif;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}.shell{width:min(1240px,calc(100% - 48px));margin:auto}a{color:inherit}.brand-header{height:82px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #cfd1d4}.brand{display:flex;align-items:center;gap:12px;text-decoration:none}.brand-mark{width:42px;height:42px;display:grid;place-items:center;background:var(--night);color:#fff;font-size:.86rem;font-weight:900;border-left:5px solid var(--orange)}.brand-copy{display:flex;flex-direction:column}.brand-copy strong{font-size:.87rem;letter-spacing:.08em;text-transform:uppercase}.brand-copy small{font-size:.63rem;color:#747b86;margin-top:3px}.secure-pill{font-size:.67rem;text-transform:uppercase;letter-spacing:.08em;font-weight:800}.secure-pill span,.availability i,.live-state i{display:inline-block;width:7px;height:7px;background:var(--green);margin-right:7px}.booking-layout{display:grid;grid-template-columns:minmax(310px,.72fr) minmax(610px,1.28fr);padding:70px 0 100px}.booking-intro{padding:15px 55px 0 0;border-right:1px solid #c8c9c8}.eyebrow,.step-kicker{display:block;color:var(--orange);font-size:.62rem;letter-spacing:.2em;text-transform:uppercase;font-weight:900}.booking-intro h1{font-size:clamp(3rem,5.2vw,5.45rem);line-height:.91;letter-spacing:-.065em;margin:24px 0 30px;max-width:680px}.booking-intro>p{font-family:Georgia,serif;font-size:1.08rem;line-height:1.62;color:#515865;max-width:540px}.trust-list{margin-top:45px;border-top:1px solid #c8c9c8}.trust-list>div{display:grid;grid-template-columns:48px 1fr;align-items:center;min-height:72px;border-bottom:1px solid #c8c9c8}.trust-list>div>span{font-size:.59rem;font-weight:900;color:var(--orange)}.trust-list p{margin:0;display:flex;flex-direction:column;gap:4px}.trust-list strong{font-size:.78rem;text-transform:uppercase;letter-spacing:.06em}.trust-list small{font-size:.72rem;color:#747b86}.support-card{margin-top:35px;padding:15px 0;border-top:3px solid var(--night);display:flex;justify-content:space-between;gap:15px;font-size:.7rem}.support-card span{color:#737a85}.support-card a{font-weight:900;text-decoration:none}.booking-card{background:#fff;border:1px solid var(--night);margin-left:55px;align-self:start;position:relative}.booking-card:before{content:"";position:absolute;left:-1px;right:-1px;top:-1px;height:7px;background:var(--orange)}.step-header{display:flex;align-items:flex-start;justify-content:space-between;padding:37px 38px 25px;border-bottom:1px solid #d9dadd}.step-header h2{font-size:1.8rem;letter-spacing:-.045em;margin:7px 0 0}.steps{display:flex;gap:5px;margin-top:6px}.steps i{display:block;width:34px;height:3px;background:#d6d8dc}.steps i.active{background:var(--orange)}.month-row{height:66px;padding:0 28px;display:flex;align-items:center;justify-content:space-between}.month-row strong{text-transform:uppercase;letter-spacing:.07em;font-size:.76rem}.icon-btn{width:34px;height:34px;border:1px solid #cfd2d7;background:#fff;cursor:pointer;font-size:1.4rem}.weekdays,.date-grid{display:grid;grid-template-columns:repeat(7,1fr);margin-inline:28px}.weekdays{border:1px solid #dadce0;border-bottom:0}.weekdays span{text-align:center;padding:9px 0;border-right:1px solid #e2e3e6;color:#7f8793;font-size:.56rem;text-transform:uppercase;font-weight:900}.date-grid{border-left:1px solid #dadce0;border-top:1px solid #dadce0}.date-grid button,.calendar-blank{aspect-ratio:1;border:0;border-right:1px solid #dadce0;border-bottom:1px solid #dadce0;background:#fff;color:#253044;font-size:.74rem;font-weight:800}.date-grid button.available{cursor:pointer}.date-grid button.available:hover{box-shadow:inset 0 0 0 2px var(--orange)}.date-grid button.closed{color:#aeb3ba;background:repeating-linear-gradient(135deg,#f1f1ee,#f1f1ee 5px,#e7e7e2 5px,#e7e7e2 6px)}.date-grid button.selected{background:var(--night);color:#fff;box-shadow:inset 5px 0 var(--orange)}.calendar-blank{background:#f6f6f4}.selected-day{display:flex;justify-content:space-between;align-items:end;margin:30px 28px 0;padding-top:22px;border-top:3px solid var(--night)}.selected-day>div{display:flex;flex-direction:column;gap:5px}.selected-day span{color:#7a818c;font-size:.62rem;text-transform:uppercase;letter-spacing:.06em}.selected-day strong{font-size:.9rem}.availability{color:var(--green)!important;font-weight:900}.time-grid{display:grid;grid-template-columns:repeat(3,1fr);margin:17px 28px 26px;border-left:1px solid #cfd2d7;border-top:1px solid #cfd2d7}.time-grid button{padding:13px;border:0;border-right:1px solid #cfd2d7;border-bottom:1px solid #cfd2d7;background:#fff;color:#374151;cursor:pointer;font-size:.73rem;font-weight:850}.time-grid button.selected{background:var(--orange);color:#fff}.primary,.secondary,.danger{min-height:48px;border:0;padding:0 22px;text-transform:uppercase;letter-spacing:.07em;font-size:.7rem;font-weight:900;cursor:pointer}.primary{background:var(--night);color:#fff}.primary:hover{background:var(--orange)}.primary:disabled{background:#9ca3af;cursor:not-allowed}.secondary{background:#fff;color:var(--night);border:1px solid var(--night)}.danger{background:#fff;color:var(--red);border:1px solid #f2b8b5}.booking-card>.primary,#calendarStep>.primary{margin:0 28px;width:calc(100% - 56px)}.form-note{text-align:center;color:#8b929d;font-size:.62rem;margin:13px 0 28px}.details-form{padding:30px 28px 15px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:17px}.stack,.form-grid label{display:grid;gap:7px;font-size:.66rem;font-weight:850;text-transform:uppercase;letter-spacing:.05em}.form-grid .full{grid-column:1/-1}.form-grid input,.form-grid textarea,.stack input,.field{width:100%;border:1px solid #c8cbd0;background:#fff;padding:13px;color:var(--ink);outline:0}.form-grid input:focus,.form-grid textarea:focus,.stack input:focus,.field:focus{border-color:var(--orange);box-shadow:inset 4px 0 var(--orange)}.privacy{display:flex!important;grid-template-columns:20px 1fr;align-items:start;text-transform:none!important;font-weight:400!important;line-height:1.5}.privacy input{width:18px;height:18px;padding:0}.form-actions{display:flex;justify-content:flex-end;gap:10px;margin-top:24px}.honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.result-page,.auth-page{min-height:100vh;display:grid;place-items:center;padding:30px;background:var(--cream)}.result-card,.auth-card{width:min(650px,100%);background:#fff;border:1px solid var(--night);border-top:8px solid var(--orange);padding:48px}.result-mark{display:grid;place-items:center;width:48px;height:48px;background:var(--green);color:#fff;font-size:1.4rem;margin-bottom:25px}.result-card h1,.auth-card h1{font-size:2.6rem;letter-spacing:-.055em;margin:10px 0 20px}.result-card>p,.auth-card>p{color:#555e6b;line-height:1.6}.notice{display:grid;gap:7px;background:var(--soft);border-left:5px solid var(--orange);padding:18px;margin:28px 0}.notice span{color:#687180;font-size:.82rem;line-height:1.5}.inline{display:inline-flex;align-items:center;text-decoration:none}.stack{gap:16px;margin-top:28px}.alert{padding:14px 16px;margin:18px 0;font-size:.78rem}.alert.error{background:#fff0f0;border-left:5px solid var(--red);color:#8e1c14}.alert.success{background:#edf9f3;border-left:5px solid var(--green);color:#075d41}
.admin-body{background:#edece8}.admin-shell{min-height:100vh;display:grid;grid-template-columns:224px 1fr}.sidebar{background:var(--night);color:#fff;padding:24px 14px 17px;display:flex;flex-direction:column;border-right:5px solid var(--orange);position:sticky;top:0;height:100vh}.admin-brand{display:flex;gap:10px;align-items:center;padding:0 7px 25px;border-bottom:1px solid #273143}.admin-brand .brand-mark{width:36px;height:36px;border-left:4px solid var(--orange);background:#fff;color:var(--night)}.admin-brand>div{display:flex;flex-direction:column}.admin-brand strong{font-size:.74rem;letter-spacing:.08em}.admin-brand small{font-size:.58rem;color:#8490a3;margin-top:3px}.sidebar nav{display:grid;padding:20px 0;flex:1}.sidebar nav a{border-bottom:1px solid #202b3d;color:#9ba6b7;padding:13px 9px;text-decoration:none;font-size:.72rem;font-weight:750}.sidebar nav a.active,.sidebar nav a:hover{color:#fff;background:#121d30;box-shadow:inset 3px 0 var(--orange)}.sidebar nav p{font-size:.54rem;text-transform:uppercase;letter-spacing:.18em;color:#5e6a7d;margin:24px 9px 3px}.sidebar-footer{border-top:1px solid #273143;padding-top:17px;display:grid;gap:8px;font-size:.65rem}.sidebar-footer a{color:#aab3c1;text-decoration:none}.admin-main{min-width:0}.admin-topbar{height:64px;background:#fff;border-bottom:1px solid #cfd1d4;display:flex;align-items:center;gap:18px;padding:0 27px;position:sticky;top:0;z-index:10}.mobile-menu{display:none}.global-search{height:35px;min-width:250px;max-width:480px;display:flex;align-items:center;gap:8px;border-bottom:1px solid #9ca3af}.global-search input{border:0;outline:0;background:transparent;width:100%;font-size:.72rem}.top-actions{display:flex;gap:8px;margin-left:auto}.button-small{display:inline-grid;place-items:center;min-height:36px;padding:0 14px;border:1px solid var(--night);background:#fff;color:var(--night);text-decoration:none;font-size:.64rem;text-transform:uppercase;font-weight:850}.button-small.accent{background:var(--orange);border-color:var(--orange);color:#fff}.admin-content{padding:30px;max-width:1500px;margin:auto}.page-heading{display:flex;align-items:end;justify-content:space-between;border-bottom:3px solid var(--night);padding-bottom:22px}.page-heading h1{font-size:2.5rem;letter-spacing:-.055em;margin:8px 0 4px}.page-heading p{margin:0;color:#737b87;font-family:Georgia,serif;font-size:.88rem}.metric-grid{display:grid;grid-template-columns:repeat(4,1fr);margin-bottom:30px;border-left:1px solid #c7c9cc}.metric-grid article{padding:20px 19px;border-right:1px solid #c7c9cc;border-bottom:1px solid #c7c9cc}.metric-grid span{font-size:.57rem;color:#737b86;text-transform:uppercase;letter-spacing:.07em;font-weight:850}.metric-grid strong{display:block;font-size:1.9rem;letter-spacing:-.05em;margin:9px 0 3px}.metric-grid small{font-size:.58rem;color:#89909a}.dashboard-grid{display:grid;grid-template-columns:minmax(580px,1.6fr) minmax(280px,.55fr);border:1px solid var(--night)}.panel{background:#fff;padding:25px}.appointments-panel{border-right:1px solid var(--night)}.panel-head{display:flex;align-items:end;justify-content:space-between;padding-bottom:17px;border-bottom:1px solid #cfd1d4}.panel-head h2{font-size:1.2rem;margin:5px 0 0}.panel-head a{font-size:.62rem;font-weight:850;text-transform:uppercase;text-decoration:none}.appointment{display:grid;grid-template-columns:65px 40px 1fr auto auto;gap:13px;align-items:center;min-height:90px;border-bottom:1px solid #d9dadd}.appointment.today{background:#fff5f0;margin:0 -25px;padding:0 25px;border-left:5px solid var(--orange)}.appointment-time{display:flex;flex-direction:column}.appointment-time strong{font-size:.9rem}.appointment-time small{font-size:.56rem;color:#98a0ab}.avatar{width:34px;height:34px;display:grid;place-items:center;font-size:.59rem;font-weight:900;border:1px solid var(--orange);background:#fff1eb;color:#b9360e}.appointment-person strong{font-size:.75rem}.appointment-person small{display:block;color:#727b88;font-size:.63rem;margin:4px 0}.appointment-person p{display:flex;gap:12px;margin:0;color:#9299a4;font-size:.55rem}.status{padding:5px 8px;font-size:.54rem;font-weight:900;text-transform:uppercase;border:1px solid currentColor}.status.pending{color:#ba3a12}.status.attended{color:var(--green)}.status.no_show{color:var(--red)}.row-actions{display:flex;gap:7px}.row-actions button{border:0;background:none;font-size:.62rem;font-weight:850;text-transform:uppercase;cursor:pointer}.row-actions .edit{color:var(--blue)}.row-actions .delete{color:var(--red)}.quick-panel{background:var(--soft)}.quick-list{display:grid;margin-top:15px}.quick-list a{padding:13px 0;border-bottom:1px solid #d4d6d9;text-decoration:none;font-size:.7rem;font-weight:800}.data-panel{background:#fff;border:1px solid var(--night);padding:25px}.table-wrap{overflow:auto}.data-table{width:100%;border-collapse:collapse;font-size:.72rem}.data-table th{text-align:left;background:var(--night);color:#fff;padding:12px;text-transform:uppercase;font-size:.58rem;letter-spacing:.06em}.data-table td{padding:12px;border-bottom:1px solid #ddd;vertical-align:top}.settings-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.settings-card{background:#fff;border:1px solid var(--night);padding:24px}.settings-card h2{margin:0 0 18px}.settings-card form{display:grid;gap:13px}.settings-card label{display:grid;gap:6px;font-size:.64rem;font-weight:850;text-transform:uppercase}.settings-card input,.settings-card textarea,.settings-card select{border:1px solid #c8cbd0;padding:12px;width:100%}.settings-card .wide{grid-column:1/-1}.dialog{position:fixed;inset:0;background:rgba(11,18,32,.65);display:grid;place-items:center;padding:20px;z-index:50}.dialog[hidden]{display:none}.dialog-card{width:min(700px,100%);max-height:90vh;overflow:auto;background:#fff;border-top:7px solid var(--orange);padding:27px}.dialog-card h2{margin-top:0}.dialog-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:20px}
@media(max-width:1050px){.booking-layout{grid-template-columns:1fr;padding-top:45px}.booking-intro{border-right:0;border-bottom:1px solid #c8c9c8;padding:0 0 45px}.booking-card{margin:45px 0 0}.trust-list{display:grid;grid-template-columns:repeat(3,1fr)}.trust-list>div{padding:10px}.dashboard-grid{grid-template-columns:1fr}.appointments-panel{border-right:0;border-bottom:1px solid var(--night)}.metric-grid{grid-template-columns:repeat(2,1fr)}}
@media(max-width:760px){.shell{width:min(100% - 24px,680px)}.brand-header{height:68px}.brand-copy small,.secure-pill{display:none}.booking-layout{padding:28px 0 55px}.booking-intro{padding-bottom:28px}.booking-intro h1{font-size:2.8rem}.booking-intro>p{font-size:.94rem}.trust-list{display:block;margin-top:28px}.support-card{display:none}.booking-card{margin-top:28px}.step-header{padding:28px 17px 18px}.step-header h2{font-size:1.35rem}.steps i{width:18px}.month-row{padding:0 14px}.weekdays,.date-grid{margin-inline:14px}.selected-day{margin-inline:14px;align-items:flex-start}.time-grid{margin:15px 14px 22px;grid-template-columns:repeat(2,1fr)}.booking-card>.primary,#calendarStep>.primary{margin-inline:14px;width:calc(100% - 28px)}.details-form{padding-inline:14px}.form-grid{grid-template-columns:1fr}.form-grid .full{grid-column:auto}.form-actions{display:grid;grid-template-columns:1fr 1fr}.result-card,.auth-card{padding:28px 20px}.admin-shell{display:block}.sidebar{display:none;position:fixed;z-index:30;width:250px}.sidebar.open{display:flex}.admin-topbar{padding:0 12px}.mobile-menu{display:block;border:0;background:none;font-size:1.2rem}.global-search{min-width:0;flex:1}.top-actions .button-small:not(.accent){display:none}.admin-content{padding:19px 12px}.page-heading h1{font-size:1.7rem}.page-heading p,.live-state{display:none}.metric-grid{grid-template-columns:repeat(2,1fr)}.metric-grid article{padding:14px 11px}.quick-panel{display:none}.panel{padding:15px}.appointment{grid-template-columns:48px 32px 1fr auto;gap:7px}.appointment.today{margin:0 -15px;padding:0 15px}.appointment-person p,.appointment>.status{display:none}.row-actions{grid-column:3/-1}.settings-grid{grid-template-columns:1fr}.settings-card .wide{grid-column:auto}}
@media(max-width:760px){.auth-page{min-height:100svh;display:flex;align-items:flex-start;justify-content:center;padding:24px 12px}.auth-card{width:100%;max-width:520px;margin:auto 0}.auth-card h1{font-size:clamp(2rem,11vw,2.6rem);overflow-wrap:anywhere}.auth-card .stack input{min-height:50px;font-size:16px}.auth-card .primary{width:100%}}
@media(prefers-reduced-motion:reduce){*{scroll-behavior:auto!important;transition:none!important}}

.device-list{margin-top:24px;padding-top:20px;border-top:1px solid #d7d9dd}.device-list h3{margin:0 0 12px;font-size:.78rem;letter-spacing:.08em;text-transform:uppercase}.device-row{display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 0;border-top:1px solid #e2e3e6}.device-row:first-of-type{border-top:0}.device-row>div{display:flex;flex-direction:column;gap:5px}.device-row strong{font-size:.82rem}.device-row span,.device-empty{font-size:.68rem;color:#747b86}.device-row form{margin:0}.device-row .danger{min-height:38px;padding:0 14px}@media(max-width:560px){.device-row{align-items:flex-start;flex-direction:column}.device-row form,.device-row .danger{width:100%}}

/* Calendario pubblico compatto, centrato e visibile subito anche nell'iframe Joomla. */
.booking-layout{display:block;max-width:1080px;padding:17px 0 82px}
.booking-intro{max-width:920px;margin:0 auto 14px;padding:0;text-align:center;border-right:0}
.booking-intro h1{font-size:clamp(1.65rem,2.25vw,2.15rem);line-height:1.04;letter-spacing:-.035em;margin:7px auto 9px;max-width:900px}
.booking-intro>p{margin-left:auto;margin-right:auto;max-width:850px;font-size:.86rem;line-height:1.38}
.trust-list{display:none}
.support-card{max-width:650px;margin:28px auto 0}
.booking-card{width:min(860px,100%);margin:0 auto}
.brand-header{height:54px}
@media(max-width:760px){.brand-header{height:54px}.booking-layout{padding:13px 0 70px}.booking-intro{margin-bottom:13px;padding-bottom:0;border-bottom:0}.booking-intro h1{font-size:1.43rem;line-height:1.08;margin:6px auto 8px}.booking-intro>p{font-size:.79rem;line-height:1.34}.booking-card{width:100%;margin-top:0}}

/* Identità grafica configurabile per attività. */
.brand-logo{display:block;max-width:230px;max-height:46px;width:auto;height:auto;object-fit:contain}
.admin-brand-logo{display:block;max-width:185px;max-height:54px;width:auto;height:auto;object-fit:contain}
.auth-logo{display:block;max-width:220px;max-height:72px;width:auto;height:auto;object-fit:contain;margin:0 auto 26px}
.settings-divider{border-top:3px solid var(--night);padding-top:20px;margin-top:8px}
.settings-divider h2{margin:7px 0 0}
.primary{background:var(--button-color,var(--night))}
@media(max-width:760px){.brand-logo{max-width:175px;max-height:40px}.admin-brand-logo{max-width:155px}.auth-logo{max-width:185px;max-height:60px;margin-bottom:20px}}


/* Area nota cliente: aperta e comoda anche su telefono. */
.result-card textarea[name="notes"]{display:block;width:100%;min-height:8.5rem;field-sizing:content;resize:none;border:0;border-left:4px solid var(--orange);border-bottom:1px solid #c8cbd0;background:repeating-linear-gradient(to bottom,#faf9f6 0,#faf9f6 31px,#e3e0d9 32px);padding:0 18px;line-height:32px;outline:0;box-shadow:none}
.result-card textarea[name="notes"]:focus{border-left-color:var(--night);border-bottom-color:var(--orange);background-color:#fff}

/* Modifica appuntamento: stesso calendario della prenotazione pubblica. */
.manage-card{width:min(860px,100%);margin-block:18px}
.manage-calendar{border:1px solid #d4d6da;margin:4px 0 12px;padding-bottom:2px;background:#fff}
.manage-calendar-heading{padding:24px 28px 4px}
.manage-calendar-heading h2{font-size:1.45rem;letter-spacing:-.035em;margin:6px 0}
.manage-calendar-heading p{margin:0;color:#747b86;font-family:Georgia,serif;font-size:.82rem;text-transform:none;letter-spacing:0;font-weight:400}
.manage-calendar .month-row{border-top:1px solid #e0e1e3;margin-top:18px}
.manage-calendar .selected-day{margin-top:24px}
@media(max-width:760px){.manage-card{margin-block:0}.manage-calendar{margin-inline:-6px}.manage-calendar-heading{padding:22px 14px 3px}.manage-calendar .month-row{padding-inline:14px}.manage-calendar .weekdays,.manage-calendar .date-grid{margin-inline:14px}.manage-calendar .selected-day{margin-inline:14px}.manage-calendar .time-grid{margin-inline:14px;grid-template-columns:repeat(2,1fr)}}
