:root{
  --navy:#16253d;--navy2:#1f3352;--gold:#c9a45c;--bg:#f3f5f9;--card:#fff;--line:#dfe4ec;--txt:#1d2735;--mut:#6b778a;
  --acc:#0f7c8c;--acc2:#0b6170;--red:#c0392b;--warn:#b7791f;
  --st-quote:#a9b4c4;--st-option:#e6a23c;--st-confirmed:#2f80ed;--st-checkedin:#27ae60;--st-checkedout:#8e9aaf;--st-cancelled:#c0392b;--st-noshow:#7f1d1d;
  --hk-clean:#27ae60;--hk-dirty:#e67e22;--hk-inspected:#2f80ed;--hk-occupied:#8e44ad;
  font:14px/1.4 system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;color:var(--txt)
}
*{box-sizing:border-box}
body{margin:0;background:var(--bg)}
button,input,select,textarea{font:inherit;color:inherit}
input,select,textarea{border:1px solid var(--line);border-radius:6px;padding:6px 8px;background:#fff;min-width:0}
input:focus,select:focus,textarea:focus,button:focus-visible,a:focus-visible,[tabindex]:focus-visible{outline:2px solid var(--acc);outline-offset:1px}
a{color:var(--acc)}
#dz-root{display:grid;grid-template-columns:210px 1fr;grid-template-rows:56px 1fr;height:100vh}

/* barra superiore */
.dz-top{grid-column:1/-1;display:flex;align-items:center;gap:12px;padding:0 16px;background:var(--navy);color:#fff}
.dz-brand{display:flex;align-items:center;gap:8px;min-width:190px}
.dz-brand small{color:#9fb0c8;font-size:12px}
.dz-logo{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:8px;background:var(--gold);color:var(--navy);font-weight:800}
.dz-search{flex:1;max-width:420px;background:var(--navy2);border-color:#2c446a;color:#fff}
.dz-search::placeholder{color:#8ea2c0}
.dz-user{margin-left:auto;display:flex;gap:12px;align-items:center;font-size:13px}
.dz-user a{color:var(--gold)}
.dz-burger{display:none;background:none;border:0;color:#fff;font-size:22px;cursor:pointer}

/* menu laterale */
.dz-nav{background:#fff;border-right:1px solid var(--line);padding:10px 8px;overflow:auto}
.dz-nav a{display:flex;gap:10px;align-items:center;padding:9px 10px;border-radius:8px;color:var(--txt);text-decoration:none;margin-bottom:2px}
.dz-nav a:hover{background:#eef2f7}
.dz-nav a.on{background:var(--navy);color:#fff}
.dz-nav .ic{width:20px;text-align:center;color:var(--acc)}
.dz-nav a.on .ic{color:var(--gold)}
.dz-main{overflow:auto;padding:16px 20px 40px;min-width:0}

/* elementi comuni */
.dz-pagehead{display:flex;flex-wrap:wrap;align-items:center;gap:12px;margin-bottom:12px}
.dz-pagehead h1{font-size:20px;margin:0 12px 0 0}
.dz-tools{display:flex;flex-wrap:wrap;gap:6px;align-items:center}
.dz-btn{border:1px solid var(--line);background:#fff;border-radius:6px;padding:6px 12px;cursor:pointer;white-space:nowrap}
.dz-btn:hover{border-color:var(--acc)}
.dz-btn:disabled{opacity:.5;cursor:not-allowed}
.dz-btn.dz-primary{background:var(--acc);border-color:var(--acc);color:#fff}
.dz-btn.dz-primary:hover{background:var(--acc2)}
.dz-btn.danger{color:var(--red)}
.dz-btn.sm{padding:3px 8px;font-size:12px}
.dz-sec{background:var(--card);border:1px solid var(--line);border-radius:10px;padding:14px 16px;margin-bottom:14px}
.dz-sec h2{font-size:15px;margin:0 0 10px}
.dz-sec.two{display:grid;grid-template-columns:1fr 1fr;gap:24px}
.warnbox{border-color:#f0c36d;background:#fff8e8;padding:8px 12px;border-radius:8px;margin:8px 0}
.muted{color:var(--mut);font-size:12px}
.empty{color:var(--mut);padding:16px;text-align:center}
.warn{color:var(--warn);font-weight:600}
.ok{color:var(--hk-clean);font-weight:600}
.tag{display:inline-block;font-size:11px;background:#eef2f7;border-radius:10px;padding:1px 7px;margin-left:6px}
.pill{display:inline-block;border-radius:10px;padding:2px 9px;font-size:12px;color:#fff;background:var(--st-confirmed)}
.r{text-align:right}
.n{width:90px}
.scroll-x{overflow-x:auto}
.kpis{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:10px;margin-bottom:14px}
.kpi{background:#fff;border:1px solid var(--line);border-radius:10px;padding:12px}
.kpi b{display:block;font-size:22px}
.kpi span{color:var(--mut);font-size:12px}

.dz-table{width:100%;border-collapse:collapse;background:#fff}
.dz-table th{font-size:12px;color:var(--mut);text-align:left;font-weight:600;border-bottom:1px solid var(--line);padding:7px 8px;white-space:nowrap}
.dz-table td{border-bottom:1px solid #eef1f5;padding:7px 8px;vertical-align:middle}
.dz-table tr.click{cursor:pointer}
.dz-table tr.click:hover td{background:#f5f8fc}
.dz-table tr.pay td{color:var(--acc2)}
.dz-table tr.dim td{opacity:.5}
.dz-table tfoot td{font-weight:600}
.dz-table tfoot tr.tot td{font-size:16px;border-top:2px solid var(--txt)}
.dz-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin-bottom:12px}
.dz-filters input[type=search]{min-width:240px}

/* stati */
.st-quote{--c:var(--st-quote)}.st-option{--c:var(--st-option)}.st-confirmed{--c:var(--st-confirmed)}.st-checkedin{--c:var(--st-checkedin)}
.st-checkedout{--c:var(--st-checkedout)}.st-cancelled{--c:var(--st-cancelled)}.st-noshow{--c:var(--st-noshow)}
.pill[class*=st-]{background:var(--c)}
.dz-legend{display:flex;flex-wrap:wrap;gap:12px;align-items:center;font-size:12px;margin-bottom:8px}
.dz-legend span[class*=st-]::before{content:"";display:inline-block;width:12px;height:12px;border-radius:3px;background:var(--c);margin-right:5px;vertical-align:-2px}
.dz-legend .hint{color:var(--mut);margin-left:auto}
.dz-zoom{display:flex;align-items:center;gap:4px;color:var(--mut)}

/* planning */
.dz-plan-wrap{background:#fff;border:1px solid var(--line);border-radius:10px;overflow:auto;max-height:calc(100vh - 160px);user-select:none}
.dz-plan{display:grid;position:relative;min-width:max-content}
.dz-plan .ph{position:sticky;top:0;z-index:3;background:#f8fafc;border-bottom:1px solid var(--line);border-right:1px solid #eef1f5;text-align:center;font-size:12px;padding:3px 0}
.dz-plan .ph.corner,.dz-plan .ph.occ-l{left:0;z-index:5;text-align:left;padding:6px 8px;font-weight:600;text-transform:capitalize}
.dz-plan .ph.occ,.dz-plan .ph.occ-l{top:42px}
.dz-plan .ph.day{height:42px;display:flex;flex-direction:column;justify-content:center;position:sticky}
.dz-plan .ph.day small{color:var(--mut);font-size:10px}
.dz-plan .ph.day i{position:absolute;top:1px;left:2px;font-size:9px;font-style:normal;color:var(--acc);font-weight:700}
.dz-plan .ph.we{background:#f0f3f8}
.dz-plan .ph.today{background:var(--navy);color:#fff}
.dz-plan .ph.today small{color:var(--gold)}
.dz-plan .ph.occ{font-size:11px;display:flex;justify-content:center;gap:4px}
.dz-plan .ph.occ small{color:var(--hk-clean)}
.dz-plan .type-row{position:sticky;left:0;background:#eef2f7;font-size:12px;font-weight:700;padding:4px 8px;color:var(--navy2);border-bottom:1px solid var(--line)}
.dz-plan .room{position:sticky;left:0;z-index:2;background:#fff;border-right:1px solid var(--line);border-bottom:1px solid #eef1f5;height:34px;display:flex;align-items:center;gap:6px;padding:0 8px}
.dz-plan .room small{color:var(--mut);font-size:11px}
.dz-plan .room .hkdot{margin-left:auto;width:9px;height:9px;border-radius:50%;background:var(--hk-clean)}
.dz-plan .room.hk-dirty .hkdot{background:var(--hk-dirty)}.dz-plan .room.hk-inspected .hkdot{background:var(--hk-inspected)}.dz-plan .room.hk-occupied .hkdot{background:var(--hk-occupied)}
.dz-plan .room.ooo{background:repeating-linear-gradient(45deg,#fff,#fff 6px,#fde8e8 6px,#fde8e8 12px)}
.lane{position:relative;display:grid;grid-template-columns:repeat(auto-fill,var(--cw));height:34px;border-bottom:1px solid #eef1f5}
.lane .cell{border-right:1px solid #f0f2f6;height:100%;cursor:cell}
.lane .cell.we{background:#fafbfd}
.lane .cell.today{background:#eef6f8}
.lane.drop{background:#e9f7f9}
.bar{position:absolute;top:4px;height:26px;border-radius:5px;background:var(--c);color:#fff;font-size:12px;display:flex;align-items:center;gap:4px;padding:0 6px;overflow:hidden;cursor:grab;box-shadow:0 1px 2px rgba(0,0,0,.15);z-index:1;transform-origin:left}
.bar .nm{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1}
.bar .px{font-size:10px;background:rgba(0,0,0,.18);border-radius:8px;padding:0 5px}
.bar .rs{position:absolute;right:0;top:0;bottom:0;width:8px;cursor:ew-resize}
.bar.st-quote{color:#24303f;background:repeating-linear-gradient(45deg,#dfe5ee,#dfe5ee 6px,#cfd7e3 6px,#cfd7e3 12px)}
.bar.st-option{background:repeating-linear-gradient(45deg,#e6a23c,#e6a23c 8px,#d8922b 8px,#d8922b 16px)}
.bar.owes::after{content:"€";position:absolute;right:10px;font-weight:800;color:#ffe08a}
.bar.dragging{opacity:.85;z-index:10;cursor:grabbing;box-shadow:0 4px 12px rgba(0,0,0,.3)}
.bar.ghost{background:rgba(15,124,140,.35);border:1px dashed var(--acc);pointer-events:none}

/* modale */
.dz-overlay{position:fixed;inset:0;background:rgba(14,22,36,.45);display:grid;place-items:start center;padding:40px 12px;overflow:auto;z-index:50}
.dz-modal{background:#fff;border-radius:12px;width:min(520px,100%);box-shadow:0 20px 60px rgba(0,0,0,.3)}
.dz-modal.wide{width:min(980px,100%)}
.dz-modal header{display:flex;align-items:center;justify-content:space-between;padding:12px 16px;border-bottom:1px solid var(--line)}
.dz-modal h2{font-size:16px;margin:0}
.dz-x{border:0;background:none;font-size:24px;cursor:pointer;line-height:1;color:var(--mut)}
.dz-modal-body{padding:16px}
.dz-form h3{font-size:13px;text-transform:uppercase;letter-spacing:.04em;color:var(--mut);margin:14px 0 8px}
.dz-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px}
.dz-field{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--mut)}
.dz-field input,.dz-field select,.dz-field textarea{color:var(--txt);font-size:14px}
.dz-field.full,.dz-grid fieldset.full{grid-column:1/-1}
.dz-grid fieldset{border:1px solid var(--line);border-radius:8px;display:flex;flex-wrap:wrap;gap:12px}
.dz-check{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--txt)}
.dz-actions{display:flex;flex-wrap:wrap;gap:8px;justify-content:flex-end;margin-top:14px}
.dz-actions.left{justify-content:flex-start;margin:10px 0}
.dz-inline{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:6px;align-items:center}
.dz-inline input:not(.n){flex:1;min-width:140px}
.dz-quote{margin-top:10px;padding:8px 10px;background:#f3f8f9;border-radius:8px}
.dz-suggest{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.dz-suggest button{border:1px dashed var(--acc);background:#f3fafb;border-radius:6px;padding:3px 8px;cursor:pointer;font-size:12px}
.dz-card-head{display:flex;flex-wrap:wrap;gap:12px;align-items:center;padding-bottom:6px}
.dz-card-head .due{margin-left:auto;font-weight:700}
.due.neg{color:var(--red)}.due.pos{color:var(--hk-clean)}
.dz-tabs{display:flex;gap:2px;border-bottom:1px solid var(--line);margin-top:6px}
.dz-tabs button{border:0;background:none;padding:8px 14px;cursor:pointer;border-bottom:2px solid transparent;color:var(--mut)}
.dz-tabs button.on{border-bottom-color:var(--acc);color:var(--txt);font-weight:600}
.dz-pane{padding-top:12px}

/* governante */
.hk-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px}
.hk-card{background:#fff;border:1px solid var(--line);border-left:5px solid var(--hk-clean);border-radius:8px;padding:10px;display:flex;flex-direction:column;gap:6px}
.hk-card.hk-dirty{border-left-color:var(--hk-dirty)}.hk-card.hk-inspected{border-left-color:var(--hk-inspected)}.hk-card.hk-occupied{border-left-color:var(--hk-occupied)}
.hk-card.ooo{background:#fdf1f1}
.hk-n{display:flex;justify-content:space-between;align-items:baseline}.hk-n b{font-size:18px}
.hk-b{display:flex;flex-wrap:wrap;gap:4px}
.kpi.hk-clean b{color:var(--hk-clean)}.kpi.hk-dirty b{color:var(--hk-dirty)}.kpi.hk-inspected b{color:var(--hk-inspected)}.kpi.hk-occupied b{color:var(--hk-occupied)}
.hk{font-size:12px;font-weight:600}.hk.hk-clean{color:var(--hk-clean)}.hk.hk-dirty{color:var(--hk-dirty)}.hk.hk-inspected{color:var(--hk-inspected)}.hk.hk-occupied{color:var(--hk-occupied)}

/* tariffe e grafici */
.rategrid td.c{text-align:center;font-size:12px}
.rategrid td.c small{display:block;color:var(--hk-clean)}
.rategrid td.full small{color:var(--red)}
.rategrid th.we{background:#f0f3f8}
.bars{display:flex;align-items:flex-end;gap:2px;height:160px;border-bottom:1px solid var(--line)}
.bars .b{flex:1;display:flex;flex-direction:column;justify-content:flex-end;align-items:center;height:100%}
.bars .b i{width:100%;background:var(--acc);border-radius:3px 3px 0 0;min-height:1px}
.bars .b small{font-size:9px;color:var(--mut)}
.hbar{display:grid;grid-template-columns:110px 1fr 100px;gap:8px;align-items:center;margin-bottom:6px;font-size:13px}
.hbar i{height:10px;background:var(--gold);border-radius:5px}
.hbar b{text-align:right}

/* notifiche */
.dz-toast{position:fixed;right:16px;bottom:16px;background:var(--navy);color:#fff;padding:10px 16px;border-radius:8px;z-index:99;box-shadow:0 6px 20px rgba(0,0,0,.25);transition:opacity .4s}
.dz-toast.err{background:var(--red)}
.dz-toast.out{opacity:0}

/* login */
.dz-login-body{display:grid;place-items:center;min-height:100vh;background:linear-gradient(135deg,var(--navy),#0c1626)}
.dz-login{background:#fff;padding:28px;border-radius:14px;width:min(360px,92vw);display:flex;flex-direction:column;gap:12px;box-shadow:0 20px 60px rgba(0,0,0,.4)}
.dz-login label{display:flex;flex-direction:column;gap:4px;font-size:13px;color:var(--mut)}
.dz-login .dz-check{flex-direction:row}
.dz-brand-big{display:flex;gap:12px;align-items:center;margin-bottom:6px}
.dz-brand-big .dz-logo{width:44px;height:44px;font-size:22px}
.dz-brand-big strong{display:block;font-size:22px}
.dz-brand-big small{color:var(--mut)}
.dz-alert{background:#fdecea;color:var(--red);padding:8px 10px;border-radius:6px;margin:0}
.dz-link{font-size:12px;text-align:center}

@media (max-width:820px){
  #dz-root{grid-template-columns:1fr}
  .dz-burger{display:block}
  .dz-brand{min-width:0}.dz-brand small,.dz-user span{display:none}
  .dz-search{display:none}
  .dz-top .dz-btn{padding:6px 8px;font-size:12px}
  .dz-nav{position:fixed;top:56px;left:0;bottom:0;width:230px;z-index:40;transform:translateX(-100%);transition:transform .2s}
  body.nav-open .dz-nav{transform:none;box-shadow:0 0 40px rgba(0,0,0,.3)}
  .dz-main{padding:12px 12px 40px}
  .dz-sec.two{grid-template-columns:1fr}
  .dz-legend .hint{display:none}
}
@media print{.dz-top,.dz-nav,.dz-tools,.hk-b{display:none}#dz-root{display:block}}