:root{--bg: #f3f7fb;--panel: #ffffff;--text: #10233f;--muted: #6d7d92;--blue: #0a66d8;--blue-soft: #d8ecff;--green: #17a672;--orange: #f39b28;--border: #dce7f2;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:var(--text);background:var(--bg)}*{box-sizing:border-box}body{margin:0;background:var(--bg)}button,input,select{font:inherit}button{cursor:pointer}.login-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:24px;background:linear-gradient(180deg,#f7fbff,#eef6ff);overflow:hidden}.login-card{width:min(100%,420px);background:var(--panel);border:1px solid var(--border);border-radius:20px;padding:34px;box-shadow:0 18px 42px #1f43701f}.login-logo{display:block;width:260px;max-width:100%;margin:0 auto 28px}.login-heading{text-align:center;margin-bottom:24px}.login-card h1{margin:0 0 6px;font-size:30px;line-height:1.1}.login-card p{color:var(--muted);margin:0;font-size:14px;font-weight:750}label{display:grid;gap:8px;font-size:13px;font-weight:750;color:#3f5269}input,select{width:100%;border:1px solid var(--border);border-radius:12px;padding:12px 13px;background:#fbfdff;color:var(--text)}.login-card label{margin-bottom:16px}.primary{border:0;border-radius:12px;background:var(--blue);color:#fff;font-weight:850;padding:12px 16px;text-decoration:none;display:inline-flex;justify-content:center}.error{background:#fff1f0;color:#a83429;border-radius:12px;padding:10px;margin-bottom:14px}.app-shell{min-height:100vh;display:grid;grid-template-columns:250px minmax(0,1fr);background:#eef5fc}.sidebar{position:sticky;top:0;height:100vh;background:#fff;border-right:1px solid var(--border);padding:22px 16px}.logo{width:218px;max-width:100%;margin-bottom:28px}.sidebar nav{display:grid;gap:7px}.sidebar button,.top-actions button,.bottom-nav button{border:0;background:transparent;color:#42566e}.sidebar button{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:12px;font-weight:750;text-align:left}.sidebar button.active,.sidebar button:hover{background:var(--blue-soft);color:var(--blue)}.workspace{width:100%;max-width:1600px;margin:0 auto;padding:28px 32px 34px;min-width:0}.topbar{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.eyebrow{color:var(--blue);font-weight:850;font-size:13px}.topbar h2{margin:2px 0 0;font-size:28px}.top-actions{display:flex;align-items:center;gap:10px}.top-actions button,.avatar{min-height:40px;display:inline-flex;align-items:center;gap:8px;border-radius:12px;background:#fff;border:1px solid var(--border);padding:0 12px;font-weight:750;box-shadow:0 8px 22px #274c7e0f}.card{background:var(--panel);border:1px solid rgba(190,209,229,.82);border-radius:20px;box-shadow:0 14px 36px #224f8214}.kpi-grid{display:grid;grid-template-columns:repeat(7,minmax(118px,1fr));gap:12px;margin-bottom:18px}.kpi{padding:14px 15px 15px;min-height:92px;display:grid;align-content:space-between;border-top:4px solid var(--blue)}.kpi-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.kpi-head svg{color:currentColor;opacity:.82}.kpi span{color:var(--muted);font-size:12px;font-weight:800;line-height:1.2}.kpi strong{font-size:clamp(20px,1.55vw,27px);line-height:1.05;letter-spacing:0}.kpi.blue{border-top-color:var(--blue);color:var(--blue)}.kpi.orange{border-top-color:var(--orange);color:#bd6900}.kpi.green{border-top-color:var(--green);color:var(--green)}.kpi.navy{border-top-color:#16416f;color:#16416f}.kpi strong{color:var(--text)}.dashboard-grid{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(330px,.92fr);gap:18px;align-items:start}.dashboard-main-column,.dashboard-side-column{display:grid;gap:18px;min-width:0}.dashboard-side-column{align-content:start}.calendar-card,.chart-card,.apartments-card{padding:18px}.card-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.card h3{margin:0 0 14px;font-size:18px;line-height:1.2}.card-title h3{margin:0}.card-title span,.apartment-row span{color:var(--blue);background:#e7f2ff;border:1px solid #c4dcf7;border-radius:999px;padding:5px 9px;font-size:11px;font-weight:850;white-space:nowrap}.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:7px}.day{min-height:68px;border:1px solid #dfeaf6;border-radius:13px;padding:8px;display:grid;grid-template-rows:auto 1fr auto;align-content:start;background:#fbfdff;overflow:hidden}.day b{font-size:13px;color:#173456}.day small{color:#50657c;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;align-self:center;font-size:11px;font-weight:750}.day.booked{background:#edf7ff;border-color:#a8cff8}.day.cleaning{box-shadow:inset 0 -3px 0 var(--orange)}.day-badge{display:inline-flex;width:fit-content;max-width:100%;border-radius:999px;padding:2px 6px;font-size:10px;font-style:normal;font-weight:850;color:#a45a00;background:#fff2df;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.day-badge.in-corso{background:var(--blue-soft);color:var(--blue)}.day-badge.completata{background:#ddf8ee;color:#087a52}.stack-card{padding:18px}.list-row,.mini-row,.apartment-row,.table-row{display:flex;align-items:center;justify-content:space-between;gap:12px;border-top:1px solid #edf2f7;padding:11px 0}.list-row:first-of-type,.mini-row:first-of-type,.apartment-row:first-of-type{border-top:0}.cleaning-row{justify-content:flex-start;align-items:center}.cleaning-row div{min-width:0}.list-row strong,.apartment-row strong{display:block;color:#15304f}small{color:var(--muted)}.status{border-radius:999px;padding:6px 9px;font-size:11px;font-weight:850;white-space:nowrap}.status.da-fare{background:#fff2df;color:#a45a00}.status.in-corso{background:var(--blue-soft);color:var(--blue)}.status.completata{background:#ddf8ee;color:#087a52}.money{display:block;font-size:31px;line-height:1;margin-bottom:12px;color:#10233f}.mini-row span{color:#52677e;font-weight:750}.mini-row b{color:#122a47;font-variant-numeric:tabular-nums}.chart-card{min-height:306px}.bars{height:238px;display:flex;align-items:end;gap:5px;border-bottom:1px solid var(--border);padding:14px 2px 0;background:linear-gradient(180deg,#d8ecff57,#fff0);border-radius:14px 14px 0 0}.bar-day{flex:1;height:100%;display:flex;align-items:end;gap:2px;min-width:7px}.bar-day i,.bar-day em,.bar-day b{display:block;width:33%;min-height:3px;border-radius:5px 5px 0 0}.bar-day i{background:#0a66d8}.bar-day em{background:#f39b28}.bar-day b{background:#17a672}.legend{display:flex;gap:14px;color:var(--muted);font-size:12px;font-weight:850;margin-top:12px}.legend span{display:inline-flex;align-items:center;gap:6px}.legend span:before{content:"";width:9px;height:9px;border-radius:999px;background:#0a66d8}.legend span:nth-child(2):before{background:#f39b28}.legend span:nth-child(3):before{background:#17a672}.apartments-card{padding-bottom:12px}.apartment-row{justify-content:flex-start;padding:10px 0}.apartment-row svg{color:var(--blue);flex:0 0 auto}.apartment-row div{flex:1;min-width:0}.apartment-row .active-badge{color:#087a52;background:#ddf8ee;border-color:#bcebdc;text-transform:capitalize}.apartment-row button{border:1px solid #c4dcf7;border-radius:10px;background:#f6fbff;color:var(--blue);padding:7px 10px;font-size:12px;font-weight:850}.crud-layout,.report-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:18px;align-items:start}.form-card,.table-card,.settings-card{padding:20px}.form-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:16px}.check{display:flex;align-items:center;gap:10px;align-self:end;min-height:44px}.check input{width:auto}.table-list{display:grid}.table-row strong{display:block}.table-row button{border:1px solid var(--border);border-radius:10px;background:#f8fbff;color:var(--blue);padding:8px 10px;font-weight:800}.link-button{margin-top:18px}.bottom-nav{display:none}@media (max-width: 1180px){.workspace{padding:24px}.kpi-grid{grid-template-columns:repeat(4,minmax(130px,1fr))}.dashboard-grid,.crud-layout,.report-grid{grid-template-columns:1fr}.dashboard-side-column{grid-template-columns:repeat(2,minmax(0,1fr))}.chart-card{grid-column:1 / -1}}@media (max-width: 780px){.login-page{padding:16px}.login-card{padding:26px 20px}.login-logo{width:230px;margin-bottom:24px}.login-card h1{font-size:28px}.app-shell{grid-template-columns:1fr;padding-bottom:70px}.sidebar{display:none}.workspace{padding:16px}.topbar{align-items:flex-start;gap:14px}.topbar h2{font-size:25px}.top-actions .avatar{display:none}.kpi-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.kpi{min-height:88px;padding:13px}.dashboard-side-column{grid-template-columns:1fr}.calendar-card{overflow-x:auto}.calendar-grid{min-width:680px}.day{min-height:64px}.chart-card{min-height:280px}.bars{height:220px}.apartment-row{flex-wrap:wrap}.form-grid{grid-template-columns:1fr}.table-row{align-items:flex-start;flex-wrap:wrap}.bottom-nav{position:fixed;left:0;right:0;bottom:0;display:grid;grid-template-columns:repeat(4,1fr);background:#fff;border-top:1px solid var(--border);z-index:20}.bottom-nav button{padding:14px 6px;color:var(--blue);font-weight:850}}.page-stack{display:grid;gap:18px}.page-tools{display:flex;align-items:end;justify-content:space-between;gap:14px;flex-wrap:wrap;background:#fff;border:1px solid rgba(190,209,229,.82);border-radius:20px;padding:18px;box-shadow:0 14px 36px #224f8214}.page-tools h3{margin:0 0 4px;font-size:20px}.page-tools p{margin:0;color:var(--muted);font-weight:650}.page-tools label{min-width:170px}.page-tools .primary{min-height:43px;align-items:center}.report-kpis{grid-template-columns:repeat(4,minmax(160px,1fr))}.data-table{display:grid}.data-row{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto auto;align-items:center;gap:12px;border-top:1px solid #edf2f7;padding:12px 0}.data-row:first-child{border-top:0}.data-row strong{display:block;color:#15304f}.data-row b{font-variant-numeric:tabular-nums;color:#10233f}.data-row button,.data-row select,.detail-actions button,.modal-title button{border:1px solid #c4dcf7;border-radius:10px;background:#f6fbff;color:var(--blue);padding:8px 10px;font-size:12px;font-weight:850}.detail-hero{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:20px}.detail-hero h3{margin:0 0 5px;font-size:24px}.detail-hero p{margin:0 0 7px;color:#52677e}.detail-actions{display:flex;align-items:center;justify-content:flex-end;gap:9px;flex-wrap:wrap}.detail-actions .primary{color:#fff;border-color:var(--blue)}.detail-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(320px,.75fr);gap:18px;align-items:start}.detail-grid .calendar-card{grid-row:span 2}.active-badge,.success-message{color:#087a52;background:#ddf8ee;border:1px solid #bcebdc;border-radius:999px;padding:6px 10px;font-size:12px;font-weight:850;text-transform:capitalize}.success-message{width:fit-content;border-radius:12px}.empty-state{color:var(--muted);margin:0;font-weight:650}.breakable{overflow-wrap:anywhere}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;padding:18px;background:#10233f57}.modal-card{width:min(760px,100%);max-height:min(86vh,820px);overflow:auto;background:#fff;border:1px solid var(--border);border-radius:22px;padding:20px;box-shadow:0 28px 80px #10233f3d}.modal-title{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}.modal-title h3{margin:0}.modal-form{display:grid;gap:16px}textarea{width:100%;min-height:92px;resize:vertical;border:1px solid var(--border);border-radius:12px;padding:12px 13px;background:#fbfdff;color:var(--text);font:inherit}.table-card h3{margin-bottom:12px}@media (max-width: 1180px){.detail-grid{grid-template-columns:1fr}.detail-grid .calendar-card{grid-row:auto}.data-row{grid-template-columns:minmax(220px,1fr) auto auto}}@media (max-width: 780px){.page-tools{align-items:stretch}.page-tools label,.page-tools button{width:100%}.report-kpis{grid-template-columns:repeat(2,minmax(0,1fr))}.data-row{grid-template-columns:1fr;align-items:start}.detail-hero{align-items:flex-start;flex-direction:column}.detail-actions{justify-content:flex-start}.detail-actions button,.detail-actions .primary{width:100%;justify-content:center}.modal-card{padding:16px}}
