*{box-sizing:border-box}body{font-family:Arial,sans-serif;background:#f5f7fb;margin:0;color:#0f172a}header{background:#111827;color:white;padding:14px 18px;display:flex;justify-content:space-between;gap:12px;align-items:center;position:sticky;top:0;z-index:2}h1{font-size:22px;margin:0}button{background:#2563eb;color:white;border:0;border-radius:10px;padding:10px 14px;font-weight:700;cursor:pointer;margin:3px}.secondary{background:#64748b}.danger{background:#dc2626}.whatsapp{background:#16a34a}.edit{background:#f59e0b;color:#111827}main{padding:16px}.grid2{display:grid;grid-template-columns:1fr 1fr;gap:16px}.card{background:white;border-radius:16px;padding:16px;box-shadow:0 8px 24px #0001}label{display:block;font-weight:700;margin:10px 0 5px}input,select,textarea{width:100%;padding:10px;border:1px solid #cbd5e1;border-radius:10px;font-size:15px}textarea{min-height:70px}.row{display:flex;gap:8px;align-items:center}.row select{flex:1}.hidden{display:none}.item{border:1px solid #e2e8f0;border-radius:12px;padding:10px;margin:8px 0;background:#fff}.appt{border-left:8px solid #64748b}.muted{color:#64748b;font-size:13px}.chosen .svc{display:flex;justify-content:space-between;align-items:center;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:8px;margin:6px 0}.totale{font-weight:900;background:#ecfeff;border:1px solid #67e8f9;border-radius:10px;padding:10px;margin:10px 0}.err{color:#dc2626;font-weight:800;margin-top:8px}.actions{margin-top:10px}@media(max-width:900px){header{display:block}.grid2{grid-template-columns:1fr}.row{display:block}}
.agenda-only{max-width:980px;margin:0 auto}.modal{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:50;display:flex;align-items:flex-start;justify-content:center;overflow:auto;padding:18px}.modal.hidden{display:none}.modal-card{width:min(760px,100%);margin:20px 0}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.modal-head h2{margin:0}

.request{border-left:8px solid #0ea5e9}.prenota-card{max-width:720px;margin:18px auto}.client-app header{justify-content:center}.big{width:100%;font-size:18px;padding:14px}.ok{color:#16a34a;font-weight:800;margin-top:12px;background:#ecfdf5;border:1px solid #86efac;border-radius:10px;padding:10px}

.payButtons{display:flex;gap:14px;flex-wrap:wrap;margin:8px 0 14px}
.payButtons button{font-size:20px;font-weight:900;padding:18px 34px;border-radius:14px;min-width:190px}
.payButtons .cash{background:#16a34a}
.payButtons .card{background:#2563eb}

.badge{display:inline-block;padding:3px 8px;border-radius:999px;font-size:12px;font-weight:800;margin-left:6px}
.badge.warn{background:#fef3c7;color:#92400e;border:1px solid #f59e0b}
.requestInAgenda{background:#fff7ed;border:1px solid #fed7aa}
.sync{display:inline-block;margin:8px 0 12px;color:#475569;font-size:13px;font-weight:700}
.availability{margin:12px 0;padding:12px;border-radius:12px;border:1px solid #e5e7eb;background:#f8fafc;line-height:1.35}
.availability.ok{background:#ecfdf5;border-color:#86efac;color:#166534}
.availability.err{background:#fef2f2;border-color:#fca5a5;color:#991b1b}
.alternatives{margin-top:10px}
.alternatives button{margin:4px 5px 0 0;padding:8px 12px;border-radius:10px;border:1px solid #cbd5e1;background:white;cursor:pointer}

/* === GRAFICA DEFINITIVA FULLPOS PARRUCCHIERI === */
:root{--navy:#0f172a;--navy2:#111827;--gold:#c9943f;--gold2:#e0b15d;--rose:#ec4899;--turq:#14b8a6;--ink:#0f172a;--soft:#f8fafc;--line:#e2e8f0}
body{font-family:Inter,Segoe UI,Arial,sans-serif;background:linear-gradient(180deg,#f8fafc,#eef2f7);color:var(--ink)}
header,.topbar{background:linear-gradient(90deg,#0b1220,#111827);box-shadow:0 10px 28px #0f172a2b;border-bottom:1px solid #1e293b}
header h1,.brand{letter-spacing:-.02em}.brand{display:flex;align-items:center;gap:12px;font-size:24px}.brand b{color:var(--gold2)}.logo{display:inline-grid;place-items:center;width:44px;height:44px;border:2px solid var(--gold);border-radius:50%;color:var(--gold);font-weight:900}.header-pill{background:#ffffff18;border:1px solid #ffffff22;border-radius:999px;padding:8px 14px;color:#f8fafc;font-weight:700}
button{transition:.15s transform,.15s box-shadow}.gold, header button:first-of-type{background:linear-gradient(135deg,var(--gold),var(--gold2));color:white;box-shadow:0 8px 18px #c9943f40}button:hover{transform:translateY(-1px)}.card{box-shadow:0 12px 35px #0f172a12;border:1px solid #e5e7eb}.premium-card{border-radius:20px;background:rgba(255,255,255,.92);backdrop-filter:blur(8px)}
.booking-shell{max-width:1440px;margin:0 auto;padding:20px}.booking-hero{display:flex;justify-content:space-between;align-items:stretch;overflow:hidden;padding:0;margin-bottom:18px}.booking-hero>div:first-child{padding:34px 28px;min-width:360px}.booking-hero h1{margin:.1rem 0;font-size:34px;letter-spacing:-.04em}.eyebrow{margin:0;color:var(--gold);font-weight:900;text-transform:uppercase;font-size:12px;letter-spacing:.12em}.salon-visual{flex:1;min-height:175px;background:radial-gradient(circle at 30% 25%,#f8e6c8 0 8%,transparent 9%),linear-gradient(115deg,rgba(255,255,255,.8),rgba(255,255,255,.15)),linear-gradient(135deg,#1f2937,#b7792b);position:relative}.salon-visual:after{content:'✂  ✦  ❋';position:absolute;right:36px;bottom:32px;font-size:48px;color:#fff8;letter-spacing:12px}.salon-visual span{position:absolute;inset:24px;border-radius:16px;border:1px solid #ffffff40;background:linear-gradient(90deg,#ffffff1f,#00000012)}
.booking-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:18px}.step-title{display:flex;align-items:center;gap:10px;margin:14px 0 12px}.step-title span{display:grid;place-items:center;width:28px;height:28px;border-radius:50%;background:linear-gradient(135deg,var(--gold),var(--gold2));color:white;font-weight:900}.step-title h2{font-size:20px;margin:0}.operator-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:10px}.operator-card{background:white;color:var(--ink);border:1px solid var(--line);border-radius:16px;display:flex;align-items:center;gap:12px;padding:14px;text-align:left;position:relative;min-height:105px}.operator-card.selected{border-color:var(--gold);box-shadow:0 0 0 3px #c9943f22}.operator-card .avatar{display:grid;place-items:center;width:62px;height:62px;border-radius:50%;color:white;font-weight:900;font-size:20px}.op-info{display:flex;flex-direction:column;gap:3px}.op-info b{font-size:16px}.op-info small{color:var(--gold);font-weight:700}.op-info em{font-style:normal;display:inline-block;background:#fdf2f8;color:#9d174d;border-radius:999px;font-size:12px;padding:4px 8px;width:max-content}.operator-card .check{position:absolute;right:10px;top:10px;background:var(--gold);color:white;border-radius:50%;width:22px;height:22px;display:none;text-align:center;line-height:22px}.operator-card.selected .check{display:block}.add-row{display:grid;grid-template-columns:1fr auto}.modern-chosen .svc,.modern-svc{background:#fff;border:1px solid var(--line);border-radius:14px;padding:12px 14px}.icon-danger{background:#fee2e2!important;color:#991b1b;border-radius:50%;width:34px;height:34px;padding:0;font-size:20px}.empty-service{border:1px dashed #cbd5e1;border-radius:12px;padding:14px;text-align:center}.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:12px 0}.slot{background:white;color:#334155;border:1px solid #cbd5e1;border-radius:10px;font-weight:900;padding:10px 6px}.slot.free{background:#f0fdf4;color:#15803d;border-color:#86efac}.slot.busy{background:#f1f5f9;color:#94a3b8;border-color:#e2e8f0}.slot.active{outline:3px solid #c9943f33;border-color:var(--gold)}.legend{font-size:13px;color:#64748b;margin:8px 0}.dot{display:inline-block;width:12px;height:12px;border-radius:50%;margin:0 5px 0 14px}.okdot{background:#22c55e}.offdot{background:#cbd5e1}.agenda-only{max-width:1120px}.appt{border-radius:16px}.payButtons button.cash,.payButtons button.card{font-size:22px;border-radius:18px;box-shadow:0 10px 20px #0001}.payButtons .cash{background:linear-gradient(135deg,#16a34a,#22c55e)}.payButtons .card{background:linear-gradient(135deg,#2563eb,#3b82f6)}
@media(max-width:1050px){.booking-grid{grid-template-columns:1fr}.operator-grid{grid-template-columns:1fr}.booking-hero{display:block}.salon-visual{min-height:120px}.slots{grid-template-columns:repeat(3,1fr)}}
@media(max-width:720px){header{position:static}.booking-shell{padding:10px}.booking-hero h1{font-size:26px}.add-row{display:block}.slots{grid-template-columns:repeat(2,1fr)}}


/* === FULLPOS Parrucchieri - grafica moderna index/agenda === */
:root{--navy:#0f172a;--navy2:#111827;--gold:#c9943f;--rose:#f8d9df;--mint:#d7f7ef;--paper:#fffaf5;--line:#e7e1d8;--text:#172033;--muted:#667085;--green:#16a34a;--blue:#2563eb;--red:#dc2626;}
body.manager-app{font-family:Inter,Segoe UI,Arial,sans-serif;background:linear-gradient(135deg,#fff7ed 0,#f8fafc 38%,#ecfeff 100%);color:var(--text);min-height:100vh;}
.modern-header{background:rgba(15,23,42,.96);backdrop-filter:blur(12px);border-bottom:1px solid rgba(255,255,255,.08);box-shadow:0 16px 40px rgba(15,23,42,.18);}
.modern-header .brand,.topbar .brand{display:flex;align-items:center;gap:12px;font-size:20px}.modern-header .brand b,.topbar .brand b{color:#f5d48b}.logo{display:inline-grid;place-items:center;width:40px;height:40px;border-radius:16px;background:linear-gradient(135deg,#f6d365,#c9943f);color:#111827;font-weight:900;box-shadow:0 8px 24px rgba(201,148,63,.35)}
.modern-header nav{display:flex;flex-wrap:wrap;gap:7px;justify-content:flex-end}.modern-header nav button{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.12);color:#fff}.modern-header nav button.primary,button.primary{background:linear-gradient(135deg,#f6d365,#c9943f);color:#111827;border:0}.modern-header nav button.small{padding:8px 10px;font-size:13px}
.modern-index{max-width:1240px;margin:0 auto}.hero-dashboard{display:grid;grid-template-columns:1fr 330px;gap:18px;align-items:stretch;margin-bottom:16px;background:linear-gradient(135deg,rgba(255,255,255,.88),rgba(255,250,245,.95));border:1px solid rgba(201,148,63,.22);border-radius:28px;padding:22px;box-shadow:0 20px 60px rgba(15,23,42,.1);position:relative;overflow:hidden}.hero-dashboard:after{content:"";position:absolute;right:20px;bottom:-40px;width:240px;height:180px;background:radial-gradient(circle,#f8d9df,transparent 65%);opacity:.85}.hero-dashboard h1{font-size:42px;line-height:1;margin:4px 0;color:#0f172a}.eyebrow{text-transform:uppercase;letter-spacing:.11em;font-weight:900;color:var(--gold);font-size:12px;margin:0 0 6px}.hero-actions{background:linear-gradient(135deg,#0f172a,#1e293b);color:white;border-radius:22px;padding:16px;position:relative;z-index:1}.hero-actions label{color:#fff;margin-top:0}.hero-actions input{background:#fff;border:0}.sync{display:inline-flex;align-items:center;gap:8px;margin-top:10px;padding:9px 12px;border-radius:999px;background:rgba(22,163,74,.14);color:#bbf7d0;font-weight:800;font-size:13px}.sync:before{content:"";width:9px;height:9px;border-radius:50%;background:#22c55e;box-shadow:0 0 0 5px rgba(34,197,94,.12)}
.stats-row{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-bottom:16px}.stat-card{background:rgba(255,255,255,.88);border:1px solid rgba(226,232,240,.9);border-radius:22px;padding:16px;box-shadow:0 14px 30px rgba(15,23,42,.07)}.stat-card span{display:block;font-size:32px;font-weight:900;color:#0f172a}.stat-card small{color:var(--muted);font-weight:800}.stat-card.warn span{color:#c9943f}.stat-card.ok span{color:#16a34a}
.agenda-layout{display:grid;grid-template-columns:1fr;gap:16px}.agenda-card{border:1px solid rgba(201,148,63,.18);border-radius:26px}.section-head{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px}.section-head h2{margin:0;font-size:24px}.timeline{display:flex;flex-direction:column;gap:12px}.timeline-empty{padding:24px;text-align:center;border:1px dashed #cbd5e1;border-radius:18px;background:#fff}.timeline-card{display:grid;grid-template-columns:94px 1fr auto;gap:14px;align-items:center;border:1px solid #ebe5da;border-left:8px solid #64748b;border-radius:20px;padding:14px 16px;background:linear-gradient(135deg,#fff,#fffaf5);box-shadow:0 10px 24px rgba(15,23,42,.06)}.timeline-card.request{background:linear-gradient(135deg,#fff7ed,#fff);border-color:#f2d3a4}.time-pill{display:grid;place-items:center;min-height:62px;border-radius:18px;background:#0f172a;color:#fff;font-size:20px;font-weight:900}.timeline-main b{font-size:18px}.timeline-main .meta{display:flex;flex-wrap:wrap;gap:7px;margin-top:7px;color:#667085;font-weight:700}.chip{display:inline-flex;align-items:center;gap:5px;padding:6px 9px;border-radius:999px;background:#f1f5f9;color:#334155;font-size:12px;font-weight:900}.chip.req{background:#fff0d0;color:#8a5a00}.chip.ok{background:#dcfce7;color:#166534}.timeline-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.timeline-actions button{margin:0}.badge.warn{background:#fff0d0;color:#8a5a00;border:1px solid #facc15;border-radius:999px;padding:4px 8px;font-weight:900;font-size:12px}.modal-card.modern-form{max-width:840px;border-radius:28px}.form-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.modern-form h3{margin-bottom:6px}.modern-chosen .svc,.modern-svc{border-radius:16px;background:#fff7ed;border-color:#fed7aa}.add-row{align-items:flex-end}.add-row button{white-space:nowrap}.premium-card{border:1px solid rgba(201,148,63,.18)}
.client-app.modern-booking{background:linear-gradient(135deg,#fff7ed,#f8fafc 45%,#ecfeff);}.topbar{background:#0f172a}.booking-shell{max-width:1160px;margin:0 auto}.booking-hero{display:grid;grid-template-columns:1fr 320px;gap:20px;align-items:center}.booking-hero h1{font-size:36px}.salon-visual{height:160px;border-radius:24px;background:linear-gradient(135deg,rgba(15,23,42,.2),rgba(201,148,63,.3)),url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 400"><rect width="800" height="400" fill="%23f7d9d9"/><circle cx="190" cy="190" r="110" fill="%23fff7ed"/><rect x="390" y="80" width="280" height="230" rx="30" fill="%23ffffff"/><path d="M430 300 C480 180 590 180 640 300" stroke="%23c9943f" stroke-width="22" fill="none"/><circle cx="535" cy="145" r="55" fill="%230f172a"/></svg>') center/cover;}.step-title{display:flex;align-items:center;gap:10px;margin:12px 0 6px}.step-title span{display:grid;place-items:center;width:30px;height:30px;border-radius:12px;background:#c9943f;color:#111827;font-weight:900}.step-title h2{margin:0;font-size:20px}.operator-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px}.operator-card{display:flex;align-items:center;gap:10px;text-align:left;background:#fff;border:2px solid #e7e1d8;color:#172033;border-radius:18px;padding:12px;margin:0;position:relative}.operator-card.selected{border-color:#c9943f;background:#fff7ed;box-shadow:0 12px 24px rgba(201,148,63,.17)}.operator-card .avatar{display:grid;place-items:center;width:48px;height:48px;border-radius:18px;color:white;font-weight:900}.operator-card .op-info{display:flex;flex-direction:column;gap:2px}.operator-card small{color:#667085}.operator-card em{font-style:normal;font-size:11px;color:#8a5a00;background:#fff0d0;border-radius:999px;padding:3px 7px;width:max-content}.operator-card .check{margin-left:auto;display:none}.operator-card.selected .check{display:inline-grid;place-items:center;background:#16a34a;color:white;width:24px;height:24px;border-radius:999px}.slots{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin:10px 0}.slot{background:#fff;color:#0f172a;border:1px solid #e2e8f0}.slot.free{background:#dcfce7;color:#166534;border-color:#86efac}.slot.busy{background:#f1f5f9;color:#94a3b8;text-decoration:line-through}.slot.active{outline:3px solid rgba(201,148,63,.35)}.availability{border-radius:16px;padding:12px;margin:10px 0;background:#f8fafc}.availability.ok{background:#dcfce7;color:#166534}.availability.err{background:#fee2e2;color:#991b1b}.big.gold{width:100%;background:linear-gradient(135deg,#f6d365,#c9943f);color:#111827;font-size:17px;padding:14px}.legend{display:flex;gap:8px;align-items:center;color:#667085;font-weight:800}.dot{width:11px;height:11px;border-radius:50%;display:inline-block}.okdot{background:#16a34a}.offdot{background:#94a3b8}
@media(max-width:900px){.hero-dashboard,.booking-hero,.booking-grid{grid-template-columns:1fr}.stats-row{grid-template-columns:1fr}.timeline-card{grid-template-columns:1fr}.timeline-actions{justify-content:flex-start}.form-grid{grid-template-columns:1fr}.operator-grid{grid-template-columns:1fr}.slots{grid-template-columns:repeat(3,1fr)}}

/* Patch vendita banco: importo manuale stile FULLPOS Ristorante */
.banco-modern .manuale-box{background:linear-gradient(135deg,#fff7ed,#ffffff);border:1px solid #f2d3a4;border-radius:22px;padding:16px;margin:12px 0 18px;box-shadow:0 10px 24px rgba(201,148,63,.10)}
.banco-modern .manuale-box h3{margin:0 0 10px;color:#0f172a}.quick-desc{display:flex;gap:8px;flex-wrap:wrap;margin:8px 0 12px}.quick-desc button{background:#fff;color:#7c4a03;border:1px solid #f2d3a4;border-radius:999px;padding:8px 12px}.manuale-grid{display:grid;grid-template-columns:1.4fr .8fr auto;gap:10px;align-items:end}.big-add{height:45px;white-space:nowrap}.keypad{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:10px}.keypad button{font-size:20px;font-weight:900;background:#0f172a;border-radius:14px;padding:14px;color:white}.keypad button.danger{background:#dc2626}.softline{border:0;border-top:1px solid #e7e1d8;margin:18px 0}.totale.grande{font-size:26px;text-align:center;background:#ecfdf5;border-color:#86efac;color:#166534}.banco-modern .payButtons button{min-height:72px;font-size:24px}.banco-modern #banco_righe .svc{background:#fff;border:1px solid #e7e1d8;border-left:6px solid #c9943f}
@media(max-width:900px){.manuale-grid{grid-template-columns:1fr}.keypad{grid-template-columns:repeat(3,1fr)}}

.finish{background:#10b981;color:#fff;border:0;border-radius:12px;padding:9px 12px;font-weight:800;box-shadow:0 8px 18px rgba(16,185,129,.18)}
.finish.cardpay{background:#2563eb;box-shadow:0 8px 18px rgba(37,99,235,.18)}
.timeline-actions{gap:8px;flex-wrap:wrap}

.search-row{display:flex;gap:10px;margin-bottom:14px;align-items:center}
.search-row input{flex:1;min-width:220px}
.search-row button{white-space:nowrap}
@media(max-width:700px){.search-row{flex-direction:column;align-items:stretch}.search-row button{width:100%}}

.saved-client{margin:10px 0 14px}.profile-card{border:1px solid #d7c08b;background:linear-gradient(135deg,#fff8e7,#ffffff);border-radius:16px;padding:14px 16px;box-shadow:0 8px 22px rgba(15,23,42,.08)}.profile-card b{font-size:18px;color:#0f172a}.profile-card span{color:#334155}.profile-actions{display:flex;gap:10px;margin-top:12px;flex-wrap:wrap}.profile-actions button,.save-profile-btn{border:0;border-radius:12px;padding:10px 14px;font-weight:800;background:#2563eb;color:#fff;cursor:pointer}.profile-actions .danger-soft{background:#fee2e2;color:#991b1b}.save-profile-btn{background:#0f172a;margin:4px 0 14px}.client-app .booking-hero .salon-visual{background:linear-gradient(135deg,rgba(201,148,63,.75),rgba(15,23,42,.35)),url('data:image/svg+xml;utf8,<svg xmlns="http://www.w3.org/2000/svg" width="800" height="280"><rect width="800" height="280" fill="%23f4ead9"/><circle cx="650" cy="95" r="70" fill="%23d6a75b"/><rect x="80" y="80" width="180" height="130" rx="22" fill="%23182737"/><rect x="310" y="55" width="120" height="170" rx="18" fill="%23ffffff" opacity=".65"/><rect x="470" y="65" width="90" height="150" rx="16" fill="%23182737" opacity=".8"/></svg>') center/cover no-repeat}

/* Foto operatori */
.op-photo-row{display:flex;gap:12px;align-items:center;margin:8px 0 12px}
.op-photo-preview{width:92px;height:92px;border-radius:22px;object-fit:cover;border:3px solid #f2d3a4;box-shadow:0 10px 24px rgba(15,23,42,.12)}
.op-list-item{display:flex;gap:14px;align-items:center}
.op-list-photo{width:68px;height:68px;border-radius:20px;object-fit:cover;display:inline-grid;place-items:center;color:white;font-weight:900;font-size:20px;flex:0 0 auto}
.op-list-photo.initials{display:inline-grid}
.operator-card .avatar.photo{object-fit:cover;background:#fff;border:2px solid #fff;box-shadow:0 8px 18px rgba(15,23,42,.12)}

.salone-logo-box{align-items:center;justify-content:flex-end;gap:18px;padding:18px 24px;margin:14px 18px;border-radius:24px;background:linear-gradient(135deg,#f8edda,#d1ad6a);box-shadow:0 14px 35px rgba(0,0,0,.10);min-height:120px}
.salone-logo-box img{max-height:95px;max-width:220px;object-fit:contain;border-radius:16px;background:rgba(255,255,255,.65);padding:8px}
.salone-nome{font-size:28px;font-weight:900;color:#1a2234}
.salone-sottotitolo{text-transform:uppercase;letter-spacing:.08em;font-size:13px;font-weight:800;color:#b6812a}


/* FULLPOS prenota.html adattivo Android */
#heroSottotitolo{display:inline-block}
#heroTitolo{display:inline-block;line-height:1.08}
#heroDescrizione{display:inline-block;line-height:1.45}
.salone-logo-box{
  display:flex;
  width:auto;
  box-sizing:border-box;
}
@media(max-width:768px){
  body{overflow-x:hidden}
  .salone-logo-box{
    margin:10px;
    padding:14px;
    min-height:auto;
    justify-content:flex-start;
    align-items:center;
    flex-direction:row;
    gap:12px;
  }
  .salone-logo-box img{
    max-width:96px;
    max-height:72px;
    padding:5px;
    border-radius:12px;
  }
  .salone-nome{font-size:18px;line-height:1.15}
  .salone-sottotitolo{font-size:11px}
  h1,#heroTitolo{
    font-size:clamp(24px,7vw,34px)!important;
    line-height:1.1!important;
    word-break:normal;
  }
  #heroSottotitolo{
    font-size:12px!important;
    letter-spacing:.08em!important;
  }
  #heroDescrizione{
    font-size:14px!important;
    line-height:1.45!important;
  }
  header,.hero,.prenota-hero,.card:first-child{
    max-width:100%;
    box-sizing:border-box;
  }
}
@media(max-width:430px){
  .salone-logo-box{
    flex-direction:column;
    text-align:center;
    align-items:center;
  }
  .salone-logo-box img{
    max-width:150px;
    max-height:90px;
  }
}


/* FULLPOS_REMOVE_DECORATIVE_HERO
   Rimuove il riquadro grafico decorativo a destra dalla pagina prenota.html */
body[data-fullpos-clean-hero="1"] .hero-art,
body[data-fullpos-clean-hero="1"] .hero-graphic,
body[data-fullpos-clean-hero="1"] .hero-image,
body[data-fullpos-clean-hero="1"] .prenota-hero-art,
body[data-fullpos-clean-hero="1"] .booking-hero-art,
body[data-fullpos-clean-hero="1"] .mockup-card,
body[data-fullpos-clean-hero="1"] .phone-art,
body[data-fullpos-clean-hero="1"] .decorative-panel,
body[data-fullpos-clean-hero="1"] .hero-card-right {
  display: none !important;
}

/* se il riquadro era generato come ultimo blocco dentro la prima card/hero */
body[data-fullpos-clean-hero="1"] .hero > div:last-child:not(:only-child),
body[data-fullpos-clean-hero="1"] .prenota-hero > div:last-child:not(:only-child),
body[data-fullpos-clean-hero="1"] .booking-hero > div:last-child:not(:only-child) {
  display: none !important;
}

/* la parte testo occupa tutta la larghezza */
body[data-fullpos-clean-hero="1"] .hero,
body[data-fullpos-clean-hero="1"] .prenota-hero,
body[data-fullpos-clean-hero="1"] .booking-hero {
  grid-template-columns: 1fr !important;
  display: block !important;
}

body[data-fullpos-clean-hero="1"] .hero-text,
body[data-fullpos-clean-hero="1"] .prenota-hero-text,
body[data-fullpos-clean-hero="1"] .booking-hero-text {
  width: 100% !important;
  max-width: 100% !important;
}

/* intestazione più compatta e leggibile su Android */
@media(max-width:768px){
  body[data-fullpos-clean-hero="1"] .card:first-child,
  body[data-fullpos-clean-hero="1"] header,
  body[data-fullpos-clean-hero="1"] .hero,
  body[data-fullpos-clean-hero="1"] .prenota-hero,
  body[data-fullpos-clean-hero="1"] .booking-hero {
    padding: 18px !important;
    border-radius: 18px !important;
  }
}


/* FULLPOS logo dentro Config */
.config-logo-shortcut{
  margin:14px 0 22px;
  padding:16px;
  border:1px solid #e8d8bd;
  border-radius:18px;
  background:linear-gradient(135deg,#fff9ee,#f5ead8);
}
.config-logo-shortcut button{
  background:#d19a3a;
  color:#111827;
  border:0;
  border-radius:12px;
  padding:12px 18px;
  font-weight:800;
  cursor:pointer;
}
.config-logo-head{
  display:flex;
  justify-content:space-between;
  gap:14px;
  align-items:center;
  margin-bottom:14px;
}
.config-logo-frame{
  width:100%;
  min-height:760px;
  border:1px solid #e1e6ef;
  border-radius:20px;
  background:#fff;
}
@media(max-width:768px){
  .config-logo-head{flex-direction:column;align-items:flex-start}
  .config-logo-frame{min-height:900px}
}

/* FULLPOS AUTH */
#authButtonsGestionale{display:inline-flex;gap:8px;margin-left:auto}
#authButtonsGestionale button{border:0;border-radius:10px;padding:10px 12px;font-weight:800;cursor:pointer}
#btnLogoutGestionale{background:#b91c1c;color:#fff}
#btnCambiaPasswordGestionale{background:#e7edf6;color:#111827}
@media(max-width:768px){#authButtonsGestionale{display:flex;width:100%;margin-top:8px}#authButtonsGestionale button{flex:1}}



/* FULLPOS ORARI APPUNTAMENTI */
.grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
.check-row{display:flex;gap:10px;align-items:center;margin-top:24px}
.giorni-box{display:flex;flex-wrap:wrap;gap:10px;margin:10px 0 18px}
.giorni-box label{background:#f5f7fb;border:1px solid #e1e6ef;border-radius:14px;padding:10px 14px;font-weight:800}
.slot-preview{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px}
.slot-preview span{background:#e8f7ef;color:#14532d;border:1px solid #b7e4c7;border-radius:999px;padding:8px 12px;font-weight:800}
@media(max-width:768px){.grid-2{grid-template-columns:1fr}.check-row{margin-top:0}}


/* FULLPOS - nasconde solo la testata grande della pagina prenota.html */
body[data-fullpos-senza-testata-grande="1"] #heroSottotitolo,
body[data-fullpos-senza-testata-grande="1"] #heroTitolo,
body[data-fullpos-senza-testata-grande="1"] #heroDescrizione,
body[data-fullpos-senza-testata-grande="1"] .hero,
body[data-fullpos-senza-testata-grande="1"] .prenota-hero,
body[data-fullpos-senza-testata-grande="1"] .booking-hero,
body[data-fullpos-senza-testata-grande="1"] .hero-text,
body[data-fullpos-senza-testata-grande="1"] .prenota-hero-text,
body[data-fullpos-senza-testata-grande="1"] .booking-hero-text{
  display:none!important;
}

/* riduce eventuale spazio vuoto sopra il modulo, senza toccare il form */
body[data-fullpos-senza-testata-grande="1"] header{
  min-height:0!important;
  padding-top:0!important;
  padding-bottom:0!important;
}


/* FULLPOS PARRUCCHIERI PROFESSIONAL 2.0 */
.professional-page{max-width:1400px;margin:0 auto}.pro-stats{grid-template-columns:repeat(4,minmax(0,1fr))}.pro-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.timing-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.photo-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.photo-grid img,.scheda-preview{width:100%;max-height:320px;object-fit:cover;border-radius:16px;border:1px solid #e7e1d8}.photo-grid figure{margin:0}.photo-grid figcaption{text-align:center;font-weight:800;color:#667085}.technical-card{border:1px solid #eadfcd;border-radius:20px;padding:16px;margin:12px 0;background:linear-gradient(135deg,#fff,#fffaf5)}.incastro-box{background:#f8fafc;border:1px dashed #94a3b8;border-radius:14px;padding:10px;margin:10px 0}.incastro-result{margin-top:8px;padding:10px;border-radius:12px}.incastro-result.ok{background:#dcfce7;color:#166534}.incastro-result.err{background:#fee2e2;color:#991b1b}.low-stock{border-left:7px solid #dc2626!important;background:#fff7f7!important}.danger-badge,.alert-chip{display:inline-block;background:#fee2e2;color:#991b1b;border-radius:999px;padding:4px 8px;font-size:12px;font-weight:900;margin-left:8px}.client-pro{display:flex;justify-content:space-between;gap:14px;align-items:center}.client-actions{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.pay-extended button{min-width:130px!important;font-size:17px!important;padding:14px 18px!important}.pay-extended .voucher{background:#7c3aed}.pay-extended .prepaid{background:#0f766e}.pay-extended .pending{background:#b45309}.report-row{display:flex;justify-content:space-between;gap:16px;padding:12px;border-bottom:1px solid #e7e1d8}.report-row span{text-align:right}.pose-item{border-left:7px solid #14b8a6}.report-filters{display:flex;gap:8px;align-items:end}.report-filters label{min-width:150px}
@media(max-width:1000px){.pro-stats{grid-template-columns:repeat(2,1fr)}.pro-grid{grid-template-columns:1fr}.client-pro{display:block}.client-actions{justify-content:flex-start;margin-top:10px}}
@media(max-width:700px){.pro-stats,.timing-grid,.photo-grid{grid-template-columns:1fr}.report-row{display:block}.report-row span{display:block;text-align:left;margin-top:5px}.report-filters{display:block}.modern-header nav{max-height:none}}

/* FULLPOS PARRUCCHIERI 2.0.1 - HEADER ORDINATO */
.app-header{
  position:sticky;
  top:0;
  z-index:50;
  display:grid;
  grid-template-columns:auto auto minmax(590px,1fr) auto auto;
  align-items:stretch;
  gap:12px;
  width:100%;
  min-height:94px;
  padding:11px 16px;
  background:linear-gradient(90deg,#0b1323 0%,#111b2e 55%,#0d1728 100%);
  border-bottom:1px solid rgba(255,255,255,.09);
  box-shadow:0 12px 34px rgba(15,23,42,.22);
}
.app-header .app-brand{
  min-width:212px;
  padding-right:16px;
  border-right:1px solid rgba(255,255,255,.13);
  align-self:center;
}
.app-header .brand-copy{display:flex;flex-direction:column;line-height:1.08}
.app-header .brand-copy b{font-size:22px;color:#f4ce72;letter-spacing:.01em}
.app-header .brand-copy small{margin-top:5px;font-size:16px;color:#f8fafc;font-weight:700}
.app-header .logo{width:42px;height:42px;border-radius:15px;border:0;color:#111827;background:linear-gradient(135deg,#ffd86b,#d7a53d);box-shadow:0 8px 22px rgba(217,164,60,.32)}
.app-header button,.app-header a{margin:0;text-decoration:none}
.app-header .header-primary{
  align-self:center;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:9px;
  min-width:188px;
  min-height:62px;
  padding:12px 18px;
  border-radius:15px;
  background:linear-gradient(135deg,#ffd869,#dfa93e);
  color:#101827;
  border:1px solid rgba(255,255,255,.22);
  box-shadow:0 10px 22px rgba(214,160,47,.28);
  font-size:15px;
  white-space:nowrap;
}
.app-header .primary-plus{font-size:25px;line-height:1;font-weight:500}
.app-header .header-nav{display:grid;align-items:stretch;gap:6px;min-width:0}
.app-header .main-navigation{grid-template-columns:repeat(8,minmax(64px,1fr));padding-right:12px;border-right:1px solid rgba(255,255,255,.13)}
.app-header .utility-navigation{grid-template-columns:repeat(4,minmax(68px,1fr));padding-right:12px;border-right:1px solid rgba(255,255,255,.13)}
.app-header .nav-tile,.app-header .account-button,.app-header .exit-button{
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:5px;
  min-width:0;
  min-height:70px;
  padding:7px 7px;
  border-radius:13px;
  border:1px solid rgba(255,255,255,.12);
  background:linear-gradient(180deg,rgba(255,255,255,.09),rgba(255,255,255,.055));
  color:#f8fafc;
  font-size:11.5px;
  font-weight:800;
  line-height:1.08;
  text-align:center;
  box-shadow:inset 0 1px 0 rgba(255,255,255,.035);
}
.app-header .nav-tile:hover,.app-header .account-button:hover{background:rgba(255,255,255,.14);box-shadow:0 8px 18px rgba(0,0,0,.13)}
.app-header .nav-tile.active{background:linear-gradient(180deg,#253b5d,#1b2d49);border-color:#4e6b95;box-shadow:inset 0 -3px 0 #e0b15d,0 8px 18px rgba(0,0,0,.12)}
.app-header .utility-tile{background:linear-gradient(180deg,#18395c,#132d49);border-color:rgba(79,141,198,.28)}
.app-header .utility-tile:hover{background:linear-gradient(180deg,#204a75,#173755)}
.app-header .nav-icon{display:grid;place-items:center;width:23px;height:23px;flex:0 0 auto}
.app-header .nav-icon svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}
.app-header .account-navigation{display:grid;grid-template-columns:minmax(76px,1fr) minmax(67px,.82fr);gap:7px;align-items:stretch}
.app-header .account-button{background:linear-gradient(180deg,rgba(255,255,255,.10),rgba(255,255,255,.06))}
.app-header .exit-button{background:linear-gradient(180deg,#d62828,#b91c1c);border-color:#e63a3a;box-shadow:0 8px 18px rgba(185,28,28,.20)}
.app-header .exit-button:hover{background:linear-gradient(180deg,#e33232,#c21f1f)}
.app-header #btnDitronBridge{box-sizing:border-box}

@media(max-width:1740px){
  .app-header{grid-template-columns:auto auto minmax(300px,1fr) auto;min-height:164px}
  .app-header .app-brand{grid-column:1;grid-row:1}
  .app-header .header-primary{grid-column:2;grid-row:1}
  .app-header .utility-navigation{grid-column:3;grid-row:1;border-right:0;padding-right:0;justify-self:end;width:min(100%,390px)}
  .app-header .account-navigation{grid-column:4;grid-row:1}
  .app-header .main-navigation{grid-column:1/-1;grid-row:2;border-right:0;padding-right:0;grid-template-columns:repeat(8,minmax(90px,1fr))}
  .app-header .main-navigation .nav-tile{min-height:58px;flex-direction:row;gap:7px;font-size:12px}
  .app-header .main-navigation .nav-tile br{display:none}
}
@media(max-width:1120px){
  .app-header{grid-template-columns:1fr auto;min-height:auto}
  .app-header .app-brand{grid-column:1;grid-row:1;border-right:0;padding-right:0}
  .app-header .account-navigation{grid-column:2;grid-row:1}
  .app-header .header-primary{grid-column:1;grid-row:2;justify-self:start}
  .app-header .utility-navigation{grid-column:2;grid-row:2;width:auto;grid-template-columns:repeat(4,minmax(72px,1fr))}
  .app-header .main-navigation{grid-column:1/-1;grid-row:3;grid-template-columns:repeat(4,minmax(120px,1fr))}
}
@media(max-width:760px){
  .app-header{position:static;display:grid;grid-template-columns:1fr;padding:10px;gap:9px}
  .app-header .app-brand,.app-header .header-primary,.app-header .main-navigation,.app-header .utility-navigation,.app-header .account-navigation{grid-column:1;grid-row:auto;width:100%;justify-self:stretch}
  .app-header .app-brand{justify-content:center;min-width:0}
  .app-header .header-primary{max-width:none}
  .app-header .main-navigation{grid-template-columns:repeat(2,minmax(0,1fr))}
  .app-header .utility-navigation{grid-template-columns:repeat(2,minmax(0,1fr))}
  .app-header .account-navigation{grid-template-columns:1fr 1fr}
  .app-header .main-navigation .nav-tile,.app-header .nav-tile,.app-header .account-button,.app-header .exit-button{min-height:54px;flex-direction:row;font-size:13px}
  .app-header .nav-tile br,.app-header .account-button br{display:none}
}



/* FULLPOS Parrucchieri 2.0.2 - agenda intelligente, online e promemoria */
.pose-suggestions{display:flex;flex-wrap:wrap;gap:8px;margin-top:10px;padding-top:10px;border-top:1px solid rgba(148,163,184,.24)}
.pose-suggestions small{width:100%;font-weight:700;color:#475569}
.pose-suggestions button{background:#ecfdf5;color:#065f46;border:1px solid #a7f3d0;padding:7px 10px;border-radius:9px;font-size:12px;box-shadow:none}
.pose-suggestions button:hover{background:#d1fae5}
.compact-note{margin-top:8px;font-size:12px}
.reminder-item{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.error-inline{color:#b91c1c;font-weight:700}
.reminder-config,.online-booking-config{grid-column:1/-1}
.reminder-config .form-grid,.online-booking-config .form-grid{align-items:end}
#rem_webhook_box{padding:12px;border:1px dashed #94a3b8;border-radius:12px;background:#f8fafc;margin:10px 0}
.operator-card.first-available{border-style:dashed;background:linear-gradient(135deg,#fffbeb,#fff)}
.operator-card .avatar.first{background:#f6c453;color:#172033}
.booking-mode-note{margin:8px 0}
@media(max-width:900px){.reminder-item{flex-direction:column}.pose-suggestions button{width:100%;text-align:left}}


/* FULLPOS Parrucchieri 2.0.3 - PWA, rete e integrazioni */
.install-pwa-btn{margin-left:auto;background:#c9943f;color:#111827;border:0;border-radius:12px;padding:10px 16px;font-weight:800;box-shadow:0 8px 20px rgba(201,148,63,.25)}
.pwa-offline-notice{position:fixed;left:12px;right:12px;bottom:12px;z-index:1000;background:#991b1b;color:white;padding:12px 16px;border-radius:12px;text-align:center;box-shadow:0 12px 32px rgba(0,0,0,.25)}
.network-info{display:grid;gap:8px;margin:12px 0}.network-row{display:grid;grid-template-columns:minmax(110px,.6fr) minmax(220px,2fr) auto;gap:10px;align-items:center;padding:10px;border:1px solid #e5e7eb;border-radius:10px;background:#f8fafc}.network-row.public{border-color:#c9943f;background:#fffbeb}.network-row code{overflow-wrap:anywhere;white-space:normal}.soecrcom-card input{font-family:Consolas,monospace}.offline-card{max-width:560px;margin:12vh auto;text-align:center;padding:36px}.offline-card .logo{width:72px;height:72px;margin:0 auto 18px;display:grid;place-items:center;border-radius:22px;background:#c9943f;font-size:36px}
@media(max-width:760px){.network-row{grid-template-columns:1fr}.install-pwa-btn{padding:9px 12px}.client-app .topbar{flex-wrap:wrap;gap:8px}.client-app .salone-logo-box{width:100%}}


/* FULLPOS PARRUCCHIERI 2.0.4 - backup e orari dipendenti */
.backup-path-row{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;align-items:end}.backup-path-row input{margin:0}.backup-browser{width:min(900px,94vw);max-height:88vh;overflow:auto}.backup-browser-path{display:flex;gap:12px;align-items:center;margin:12px 0}.backup-browser-path code{overflow-wrap:anywhere}.backup-browser-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;max-height:50vh;overflow:auto;padding:4px}.backup-browser-list button{display:grid;grid-template-columns:auto 1fr;gap:4px 10px;text-align:left;align-items:center;background:#f8fafc;color:#172033;border:1px solid #d9e0eb;box-shadow:none}.backup-browser-list button span{grid-row:1/3;font-size:24px}.backup-browser-list button small{grid-column:2;color:#667085;overflow-wrap:anywhere}.orari-page{display:grid;gap:18px;padding:22px}.operator-hours-toolbar{display:flex;justify-content:space-between;gap:16px;align-items:end;flex-wrap:wrap;margin:14px 0}.operator-hours-toolbar label{min-width:260px}.operator-hours-table-wrap{overflow:auto;border:1px solid #dde3ec;border-radius:14px}.operator-hours-table{width:100%;border-collapse:collapse;min-width:850px}.operator-hours-table th{background:#172033;color:#fff;padding:12px 10px;text-align:left}.operator-hours-table td{padding:10px;border-bottom:1px solid #e5e7eb;background:#fff}.operator-hours-table td:first-child{min-width:150px}.operator-hours-table td:first-child small{display:block;color:#667085;font-weight:400;margin-top:3px}.operator-hours-table input[type=time]{min-width:112px;margin:0}.operator-hours-table input[type=checkbox]{width:20px;height:20px}.operator-hours-table tr.day-off td{background:#f4f5f7;color:#8a94a6}.operator-hours-table tr.day-off input[type=time]{opacity:.45}.danger-soft{background:#fff1f2!important;color:#b42318!important;border:1px solid #fecdd3!important}.warn{color:#b54708}.ok{color:#067647}.err{color:#b42318}@media(max-width:900px){.backup-path-row{grid-template-columns:1fr}.orari-page{padding:10px}.operator-hours-toolbar{align-items:stretch}.operator-hours-toolbar label{min-width:100%}}


/* FULLPOS Parrucchieri 2.0.5 - Magazzino professionale */
.warehouse-top-grid,.warehouse-bottom-grid{align-items:start}.warehouse-stats .danger-stat{border-color:#fecaca;background:#fff7f7}.warehouse-filters{display:flex;gap:10px;flex-wrap:wrap;align-items:center}.warehouse-filters input{min-width:300px;flex:1}.warehouse-filters select{min-width:170px}.warehouse-table-wrap{overflow:auto;max-width:100%}.warehouse-table{width:100%;border-collapse:collapse;min-width:1050px}.warehouse-table th{position:sticky;top:0;background:#172033;color:#fff;text-align:left;padding:11px 10px;font-size:13px;z-index:1}.warehouse-table td{padding:11px 10px;border-bottom:1px solid #e5e7eb;vertical-align:middle}.warehouse-table tr:hover td{background:#f8fafc}.warehouse-table tr.stock-sottoscorta td{background:#fffaf0}.warehouse-table tr.stock-negativo td{background:#fff1f2}.stock-number{font-size:16px}.stock-badge{display:inline-block;margin-top:5px;padding:3px 7px;border-radius:999px;font-size:10px;font-weight:800;letter-spacing:.04em}.stock-badge.regolare{background:#dcfce7;color:#166534}.stock-badge.sottoscorta{background:#fef3c7;color:#92400e}.stock-badge.negativo{background:#fee2e2;color:#991b1b}.compact{padding:7px 9px;margin:2px;font-size:12px}.service-online-row{display:grid;grid-template-columns:minmax(240px,1fr) auto auto;gap:12px;align-items:center;border:1px solid #e5e7eb;border-left:5px solid #94a3b8;border-radius:12px;padding:12px;margin:10px 0;background:#fff}.service-online-row.online{border-left-color:#22c55e}.service-online-row.offline{opacity:.82}.quick-online-toggle,.online-service-check{display:flex;align-items:center;gap:8px;background:#eff6ff;border:1px solid #bfdbfe;border-radius:10px;padding:9px 11px}.quick-online-toggle input,.online-service-check input{width:18px;height:18px}.movement-list{max-height:620px;overflow:auto}.movement-row{display:grid;grid-template-columns:minmax(180px,1fr) 100px 100px;gap:10px;align-items:center;border-bottom:1px solid #e5e7eb;padding:10px 4px}.movement-qty{font-weight:800;text-align:right}.movement-qty.plus{color:#15803d}.movement-qty.minus{color:#b91c1c}.stock-movement-card .big{width:100%}@media(max-width:1150px){.service-online-row{grid-template-columns:1fr}.warehouse-filters input{min-width:220px}}@media(max-width:760px){.warehouse-filters{display:grid;grid-template-columns:1fr}.warehouse-filters input,.warehouse-filters select{min-width:0;width:100%}.movement-row{grid-template-columns:1fr auto}.movement-row>div:last-child{grid-column:1/-1}.warehouse-table{min-width:920px}}

.license-button{min-width:84px}.license-panel-status{padding:14px;border-radius:10px;background:#f5f7fb;margin:12px 0}.license-ok{color:#17643a}.license-error{color:#a12828}.license-config-card{border-left:4px solid #f5c451}

/* FULLPOS Parrucchieri 2.0.7 - Scheda tecnica e storico cliente avanzato */
.compact-hero{padding-bottom:12px}.clienti-advanced-layout{display:grid;grid-template-columns:minmax(360px,.85fr) minmax(520px,1.45fr);gap:18px;align-items:start}.client-form-card,.client-list-card,.technical-form-card,.technical-history-card{min-width:0}.safety-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.safety-grid .safety-field:last-child{grid-column:1/-1}.safety-field textarea{min-height:66px}.danger-field textarea{border-color:#ef4444;background:#fff7f7}.warn-field textarea{border-color:#f59e0b;background:#fffbeb}.check-card{display:flex;align-items:center;gap:8px;border:1px solid var(--border,#dbe2ea);border-radius:10px;padding:12px;background:#f8fafc}.client-advanced-list{display:grid;gap:12px}.client-profile-row{display:flex;justify-content:space-between;gap:18px;align-items:center;border:1px solid #dbe4ee;border-left:5px solid #475569;border-radius:14px;padding:14px;background:#fff}.client-profile-row.has-danger{border-left-color:#dc2626;background:linear-gradient(90deg,#fff7f7,#fff 22%)}.client-profile-main{display:flex;gap:12px;align-items:flex-start;min-width:0}.client-profile-main h3{margin:0 0 4px}.client-avatar{width:46px;height:46px;border-radius:50%;display:grid;place-items:center;flex:0 0 46px;background:#162136;color:#f4c453;font-weight:800}.client-warning-line{display:flex;flex-wrap:wrap;gap:6px;margin-top:8px}.technical-alert{display:inline-flex;gap:4px;align-items:center;border-radius:999px;padding:5px 9px;font-size:.8rem;background:#eef2ff;color:#334155;border:1px solid #cbd5e1}.technical-alert.danger{background:#fee2e2;color:#991b1b;border-color:#fecaca}.technical-alert.warn{background:#fef3c7;color:#92400e;border-color:#fde68a}.technical-alert.test{background:#e0f2fe;color:#075985;border-color:#bae6fd}.technical-alert.ok{background:#dcfce7;color:#166534;border-color:#bbf7d0}.technical-client-banner{display:flex;justify-content:space-between;gap:18px;align-items:center;margin:0 0 18px;padding:14px 16px;border:1px solid #d9e2ec;border-left:6px solid #d9a93e;border-radius:14px;background:linear-gradient(135deg,#fffdf8,#f8fafc)}.technical-client-banner h3{margin:0 0 4px}.technical-last-treatment{text-align:right;max-width:48%}.technical-workspace{display:grid;grid-template-columns:minmax(560px,1.35fr) minmax(390px,.95fr);gap:18px;align-items:start}.technical-side-column{display:grid;gap:18px;min-width:0}.timing-technical-grid{grid-template-columns:repeat(3,1fr)}.formula-panel{margin:18px 0;padding:16px;border:1px solid #d8e0e9;border-radius:14px;background:#f8fafc}.formula-entry-grid{display:grid;grid-template-columns:repeat(5,minmax(110px,1fr));gap:10px}.formula-entry-grid label{min-width:0}.formula-selected-list{display:grid;gap:8px;margin:12px 0}.formula-row{display:flex;justify-content:space-between;gap:12px;align-items:center;border:1px solid #dce4ed;border-radius:12px;padding:10px 12px;background:white}.formula-row b span{display:inline-block;margin-left:6px;border-radius:6px;padding:2px 6px;background:#1e293b;color:#fff}.formula-row em{display:inline-block;margin-left:8px;padding:2px 6px;border-radius:999px;background:#dcfce7;color:#166534;font-size:.72rem;font-style:normal}.formula-row em.neutral{background:#e2e8f0;color:#475569}.compact-chosen .svc{padding:8px 10px}.advanced-photo-grid img,.history-gallery img{cursor:zoom-in}.purchase-habits-list{display:grid;gap:8px}.purchase-habit-row{display:flex;justify-content:space-between;gap:12px;padding:10px;border:1px solid #dce4ed;border-radius:11px;background:#fff}.purchase-habit-row>div:last-child{text-align:right;display:flex;flex-direction:column}.purchase-habit-row.due{border-color:#f59e0b;background:#fffbeb}.purchase-habit-row strong{color:#b45309;font-size:.76rem}.technical-card.advanced{margin-bottom:14px;border-left:5px solid #d9a93e}.technical-detail-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(180px,.75fr);gap:14px}.formula-summary{padding:10px 12px;border-radius:10px;background:#f1f5f9;border:1px solid #dbe4ee}.reaction-note{padding:8px 10px;border-radius:8px;background:#fff7ed;color:#9a3412}.history-gallery{align-content:start}.history-gallery figure{margin:0}.history-gallery img{width:100%;max-height:220px;object-fit:cover;border-radius:10px}.client-history-modal{z-index:1200}.client-history-card{width:min(1180px,96vw);max-height:92vh;overflow:auto}.client-history-summary{display:grid;grid-template-columns:1.2fr 1fr;gap:18px;align-items:center}.summary-profile h3{margin-bottom:4px}.history-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:18px;margin-top:18px}.history-row{display:flex;justify-content:space-between;gap:12px;padding:10px 0;border-bottom:1px solid #e2e8f0}.history-technical-card{border:1px solid #dbe4ee;border-left:4px solid #d9a93e;border-radius:12px;padding:12px;margin-bottom:10px}.history-photo-strip{display:flex;gap:8px}.history-photo-strip img{width:92px;height:92px;object-fit:cover;border-radius:9px;cursor:zoom-in}.client-actions{display:flex;flex-wrap:wrap;gap:6px;justify-content:flex-end}.client-actions button{white-space:nowrap}
@media(max-width:1250px){.clienti-advanced-layout,.technical-workspace{grid-template-columns:1fr}.technical-side-column{grid-template-columns:1fr 1fr}.formula-entry-grid{grid-template-columns:repeat(3,1fr)}.technical-last-treatment{text-align:left;max-width:none}.technical-client-banner{align-items:flex-start;flex-direction:column}}
@media(max-width:800px){.safety-grid,.client-history-summary,.history-grid,.technical-detail-grid,.technical-side-column{grid-template-columns:1fr}.formula-entry-grid{grid-template-columns:1fr 1fr}.client-profile-row{align-items:flex-start;flex-direction:column}.client-actions{justify-content:flex-start}.technical-client-banner{padding:12px}.timing-technical-grid{grid-template-columns:1fr 1fr}.client-history-card{width:98vw}.history-photo-strip img{width:76px;height:76px}}
@media(max-width:520px){.formula-entry-grid,.timing-technical-grid{grid-template-columns:1fr}.client-profile-main{align-items:flex-start}.formula-row,.purchase-habit-row{align-items:flex-start;flex-direction:column}.purchase-habit-row>div:last-child{text-align:left}}


/* FULLPOS Parrucchieri 2.0.12 - Cassa e magazzino professionale */
.advance-cash-box{margin:18px 0;padding:16px;border:1px solid #d9b656;border-radius:14px;background:linear-gradient(135deg,#fff9e8,#fff)}
.advance-cash-box h3{margin:0 0 4px}.advance-grid{display:grid;grid-template-columns:minmax(110px,.7fr) minmax(160px,1fr) minmax(180px,1.4fr) auto;gap:10px;align-items:end}.credit-status{margin:10px 0 0;padding:8px 10px;border-radius:9px;background:#f3f4f6}.credit-status.ok{background:#dcfce7;color:#166534;font-weight:700}
.cash-stock-warning{margin:14px 0;padding:13px;border-radius:12px;border:1px solid #f59e0b;background:#fffbeb;color:#92400e}.cash-stock-warning div{margin-top:5px}
.sale-history{display:flex;justify-content:space-between;gap:12px;align-items:flex-start}.sale-history.sale-error{border-color:#ef4444;background:#fff1f2}
.stock-policy-actions{align-items:center;flex-wrap:wrap}.stock-policy{display:flex;align-items:center;gap:8px;padding:10px 12px;border:1px solid #cbd5e1;border-radius:10px;background:#fff;color:#334155;font-weight:600}
.service-consumption-box{margin:14px 0;padding:14px;border:1px solid #cbd5e1;border-radius:14px;background:#f8fafc}.service-consumption-add{display:grid;grid-template-columns:minmax(220px,1fr) 120px auto;gap:8px;align-items:end}.service-consumption-list{margin-top:10px}.service-consumption-row{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:10px;margin-top:6px;border-radius:10px;background:#fff;border:1px solid #e2e8f0}
@media(max-width:900px){.advance-grid,.service-consumption-add{grid-template-columns:1fr}.sale-history{flex-direction:column}.stock-policy-actions{align-items:stretch}}


/* FULLPOS Parrucchieri 2.0.12 - Report professionali */
.report-page{max-width:1500px}.report-hero{align-items:flex-end}.report-kpis{grid-template-columns:repeat(6,minmax(0,1fr));margin-bottom:16px}.report-kpis .stat-card{min-height:132px;display:flex;flex-direction:column;justify-content:center}.report-kpis .stat-card>span{font-size:clamp(22px,2vw,34px)}.report-kpis .stat-card em{display:block;font-size:12px;font-style:normal;margin-top:7px;line-height:1.35}.report-period-note{padding:10px 14px;border:1px solid #e7e1d8;background:#fff;border-radius:14px;margin:0 0 14px}.delta{display:inline-block;font-weight:800}.delta.positive{color:#15803d}.delta.negative{color:#b91c1c}.delta.neutral{color:#64748b}.report-overview-grid{align-items:stretch}.report-chart{min-height:290px;overflow-x:auto}.chart-bars{height:270px;display:flex;align-items:stretch;gap:8px;min-width:max-content;padding:12px 6px 0}.chart-col{width:62px;display:flex;flex-direction:column;align-items:center;justify-content:flex-end;gap:5px}.chart-value{font-size:10px!important;font-weight:800;white-space:nowrap;writing-mode:vertical-rl;transform:rotate(180deg);max-height:70px}.chart-bar-wrap{height:160px;width:32px;display:flex;align-items:flex-end;background:#f1f5f9;border-radius:9px;overflow:hidden}.chart-bar{display:block;width:100%;background:linear-gradient(180deg,#d6a93d,#1e3a5f);border-radius:9px 9px 0 0;min-height:4px}.chart-col small{font-weight:800;color:#667085;white-space:nowrap}.frequency-grid{display:grid;gap:15px}.frequency-row>div:first-child{display:flex;justify-content:space-between;gap:10px}.frequency-row span{color:#667085}.frequency-track{height:12px;background:#eef2f6;border-radius:999px;overflow:hidden;margin-top:6px}.frequency-track i{display:block;height:100%;background:linear-gradient(90deg,#d6a93d,#16365c);border-radius:inherit}.frequency-summary{display:flex;justify-content:space-between;gap:12px;padding:14px;border-radius:14px;background:#f8fafc;border:1px solid #e2e8f0}.frequency-summary span{color:#667085}.report-table-card{margin-top:16px}.table-scroll{overflow:auto}.report-table{width:100%;border-collapse:collapse;min-width:780px}.report-table th,.report-table td{padding:11px 10px;border-bottom:1px solid #e7e1d8;text-align:right;white-space:nowrap}.report-table th:first-child,.report-table td:first-child{text-align:left}.report-table thead th{position:sticky;top:0;background:#f8fafc;color:#475467;font-size:12px;text-transform:uppercase;letter-spacing:.03em}.report-table tbody tr:hover{background:#fffbf4}.report-empty{text-align:center!important;padding:24px!important}.staff-dot{display:inline-block;width:10px;height:10px;border-radius:50%;margin-right:7px}.margin-pill{display:inline-block;padding:4px 8px;border-radius:999px;background:#dcfce7;color:#166534;font-weight:900}.margin-pill.negative{background:#fee2e2;color:#991b1b}.report-method{margin-top:16px;background:#f8fafc}.report-method p{line-height:1.65;margin-bottom:0}
@media(max-width:1200px){.report-kpis{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.report-kpis{grid-template-columns:repeat(2,1fr)}.report-kpis .stat-card{min-height:112px}.frequency-summary{display:block}.report-filters label{min-width:0}.report-filters button{width:100%;margin-top:6px}}
@media print{.modern-header,.report-filters button,.report-method{display:none!important}.tab{display:none!important}#report{display:block!important}.report-page{max-width:none}.card,.stat-card{box-shadow:none!important;break-inside:avoid}.report-chart{min-height:230px}.chart-bars{height:220px}.report-table{font-size:10px}}

.cost-missing{display:inline-block;margin-left:6px;padding:2px 6px;border-radius:999px;background:#fff1f2;color:#b42318;font-size:10px;font-weight:900}.cost-warning{color:#b42318;font-weight:900}.report-kpis .delta{font-size:12px!important}


/* FULLPOS PARRUCCHIERI 2.0.14 - aggiornamenti integrati */
.update-banner{position:sticky;top:0;z-index:80;display:flex;align-items:center;justify-content:space-between;gap:18px;padding:12px 22px;background:#fff7d6;border-bottom:1px solid #e9c75d;color:#3c3212;box-shadow:0 4px 14px rgba(15,23,42,.12)}
.update-banner>div:first-child{display:flex;flex-direction:column;gap:2px}.update-banner .actions{margin:0;flex-wrap:nowrap}.update-config-card{border:1px solid #d8e0ec;background:linear-gradient(180deg,#fff 0%,#f8fafc 100%)}
.update-status-badge{display:inline-flex;align-items:center;border-radius:999px;padding:7px 12px;font-size:.82rem;font-weight:800;background:#e2e8f0;color:#334155}.update-status-badge.available{background:#fef3c7;color:#92400e}.update-status-badge.current{background:#dcfce7;color:#166534}.update-status-badge.error{background:#fee2e2;color:#991b1b}
.update-version-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.update-version-grid>div{padding:14px;border:1px solid #e2e8f0;border-radius:14px;background:#fff}.update-version-grid small{display:block;color:#64748b;margin-bottom:5px}.update-version-grid b{font-size:1.08rem;color:#0f172a}.check-row{display:flex!important;align-items:center;gap:9px;margin:14px 0}.check-row input{width:auto!important}.update-config-card .softline{margin:20px 0}
@media(max-width:850px){.update-banner{position:relative;align-items:flex-start;flex-direction:column}.update-version-grid{grid-template-columns:1fr}.update-banner .actions{flex-wrap:wrap}}

/* FULLPOS PARRUCCHIERI 2.0.15 - il banner non deve apparire finché il controllo non trova davvero una nuova versione */
.update-banner.hidden{display:none!important}

.update-auto-license{margin:14px 0;padding:13px 15px;border:1px solid #86efac;border-radius:12px;background:#f0fdf4;color:#166534}.update-auto-license b{color:#14532d}

.pwa-install-help{margin-top:12px;padding:12px 14px;border:1px solid #bfdbfe;border-radius:12px;background:#eff6ff;color:#1e3a8a;line-height:1.55}.install-pwa-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px}

.pwa-selected-link{padding:10px 12px;border:1px solid #dbe5f2;border-radius:10px;background:#f8fafc;word-break:break-all}.pwa-selected-link code{font-weight:700;color:#0f4c81}
