:root{--bg:#f4f5f8;--surface:#fff;--border:#e3e6ec;--line:#eef0f4;--text:#16181d;--text-2:#555b66;--muted:#8a909c;--primary:#2a78d6;--primary-ink:#fff;--sidebar:#141a2b;--sidebar-2:#1e2640;--good:#1f9d55;--bad:#d64545;--warn:#e39b1b;--st-pending:#f0a020;--st-confirmed:#3b6fe0;--st-checked_in:#2fa05a;--st-checked_out:#9aa1ad;--st-cancelled:#c9ccd2;--radius:10px;color:var(--text);background:var(--bg);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px}*{box-sizing:border-box}body{margin:0}h1,h2,h3{margin:0;font-weight:650}h1{font-size:20px}h2{font-size:17px}h3{color:var(--text-2);margin-bottom:10px;font-size:14px}button{font:inherit;cursor:pointer}input,select,textarea{font:inherit;color:inherit;border:1px solid var(--border);background:#fff;border-radius:8px;width:100%;padding:7px 10px}input:focus,select:focus,textarea:focus{outline:2px solid color-mix(in srgb, var(--primary) 35%, transparent);border-color:var(--primary)}input[type=checkbox]{width:auto}textarea{resize:vertical}.row{align-items:center;display:flex}.row.wrap{flex-wrap:wrap}.between{justify-content:space-between}.gap{gap:12px}.gap-sm{gap:6px}.muted{color:var(--muted)}.small{font-size:12px}.bad{color:var(--bad)}.good{color:var(--good)}.num{text-align:right;white-space:nowrap}.hint{color:var(--muted);margin:4px 0 10px;font-size:12px}.hint.center{text-align:center;margin-top:10px}.empty{color:var(--muted);text-align:center;padding:24px}.btn{border:1px solid var(--border);color:var(--text);white-space:nowrap;background:#fff;border-radius:8px;padding:7px 14px;font-weight:550}.btn:hover{background:#f7f8fa}.btn:disabled{opacity:.5;cursor:default}.btn-primary{background:var(--primary);border-color:var(--primary);color:var(--primary-ink)}.btn-primary:hover{background:color-mix(in srgb, var(--primary) 88%, #000)}.btn-success{background:var(--good);border-color:var(--good);color:#fff}.btn-success:hover{background:color-mix(in srgb, var(--good) 88%, #000)}.btn-danger{color:var(--bad);border-color:color-mix(in srgb, var(--bad) 40%, #fff)}.btn-ghost{background:0 0;border-color:#0000}.btn-sm{padding:4px 10px;font-size:12px}.btn-block{width:100%;padding:10px}.icon-btn{color:var(--muted);background:0 0;border:0;border-radius:6px;padding:2px 6px;font-size:18px;line-height:1}.icon-btn:hover{background:var(--line);color:var(--text)}.link{color:var(--primary);text-align:left;background:0 0;border:0;padding:0}.link.light{color:#aab3c8}.seg{background:var(--line);border-radius:8px;padding:2px;display:inline-flex}.seg button{color:var(--text-2);background:0 0;border:0;border-radius:6px;padding:5px 12px;font-weight:550}.seg button.on{color:var(--text);background:#fff;box-shadow:0 1px 2px #00000014}.seg-sm button{padding:3px 8px;font-size:12px}.shell{min-height:100vh;display:flex}.sidebar{background:var(--sidebar);color:#dfe4ef;flex-direction:column;flex-shrink:0;width:230px;height:100vh;display:flex;position:sticky;top:0}.brand{border-bottom:1px solid var(--sidebar-2);align-items:center;gap:10px;padding:18px 16px;display:flex}.brand b{color:#fff;font-size:14px;display:block}.brand small{color:#8c96ad;font-size:11px}.logo{flex-shrink:0;width:34px;height:34px;display:block}.logo.big{width:64px;height:64px}.wordmark{letter-spacing:-.5px;font-weight:800}.wordmark span{color:#f6a12b}.sidebar nav{flex-direction:column;flex:1;gap:2px;padding:10px 8px;display:flex}.sidebar nav button{color:#c3cad9;text-align:left;background:0 0;border:0;border-radius:8px;align-items:center;gap:10px;padding:9px 12px;display:flex}.sidebar nav button:hover{background:var(--sidebar-2);color:#fff}.sidebar nav button.on{background:var(--sidebar-2);color:#fff;font-weight:600}.nav-icon{text-align:center;opacity:.8;width:18px}.sidebar-foot{border-top:1px solid var(--sidebar-2);justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.me b{color:#fff;font-size:13px;display:block}.me small{color:#8c96ad;font-size:11px}.main{flex-direction:column;flex:1;min-width:0;display:flex}.topbar{justify-content:space-between;align-items:center;padding:16px 24px 0;display:flex}.page{padding:16px 24px 32px}.toolbar{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:12px;display:flex}.toolbar-title{text-transform:capitalize;margin-left:8px}.toolbar input[type=date],.toolbar select{width:auto}.search{width:260px!important}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);min-width:0;padding:16px}.card.narrow{max-width:640px}.card-bad{border-color:color-mix(in srgb, var(--bad) 40%, #fff)}.cols2{grid-template-columns:repeat(auto-fit,minmax(420px,1fr));gap:16px;margin-bottom:16px;display:grid}.kpis{grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:12px;margin-bottom:16px;display:grid}.kpi{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);padding:12px 14px}.kpi-label{color:var(--muted);font-size:12px}.kpi-value{margin-top:4px;font-size:22px;font-weight:700}.kpi-warn .kpi-value{color:var(--warn)}.kpi-bad .kpi-value{color:var(--bad)}.table{border-collapse:collapse;width:100%}.table th{text-align:left;color:var(--muted);border-bottom:1px solid var(--border);padding:8px;font-size:12px;font-weight:550}.table td{border-bottom:1px solid var(--line);vertical-align:middle;padding:9px 8px}.table tr:last-child td{border-bottom:0}.table.compact td{padding:6px 8px}.table tr.clickable{cursor:pointer}.table tr.clickable:hover td{background:#f8f9fb}.table-scroll{max-height:360px;overflow:auto}.badge{color:#fff;white-space:nowrap;border-radius:99px;padding:2px 8px;font-size:12px;font-weight:600;display:inline-block}.badge.st-pending{background:var(--st-pending)}.badge.st-confirmed{background:var(--st-confirmed)}.badge.st-checked_in{background:var(--st-checked_in)}.badge.st-checked_out{background:var(--st-checked_out)}.badge.st-cancelled{background:var(--st-cancelled);color:var(--text-2)}.tag-bad{color:var(--bad);margin-left:6px;font-size:11px;font-weight:600}.field{flex-direction:column;gap:4px;min-width:0;margin-bottom:10px;display:flex}.field-label{color:var(--text-2);font-size:12px;font-weight:550}.grid2{grid-template-columns:1fr 1fr;gap:0 12px;display:grid}.check{align-items:center;gap:8px;margin:6px 0 14px;display:flex}.tabs{border-bottom:1px solid var(--border);gap:4px;margin-bottom:16px;display:flex}.tabs button{color:var(--text-2);background:0 0;border:0;border-bottom:2px solid #0000;margin-bottom:-1px;padding:9px 14px;font-weight:550}.tabs button.on{color:var(--primary);border-bottom-color:var(--primary)}.modal-backdrop{z-index:50;background:#0f142373;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:14px;flex-direction:column;width:520px;max-width:100%;max-height:calc(100vh - 40px);display:flex;box-shadow:0 20px 60px #00000040}.modal-wide{width:860px}.modal-head{border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;padding:16px 20px;display:flex}.modal-body{padding:16px 20px;overflow:auto}.modal-foot{border-top:1px solid var(--line);flex-wrap:wrap;justify-content:space-between;gap:12px;padding:12px 20px;display:flex}.booking-form{grid-template-columns:1fr 1fr;gap:0 24px;display:grid}.booking-form section{min-width:0}.booking-form .span2{border-top:1px solid var(--line);grid-column:1/-1;padding-top:14px}.guest-name-wrap{position:relative}.suggest{border:1px solid var(--border);z-index:5;background:#fff;border-radius:8px;margin-top:-6px;position:absolute;top:100%;left:0;right:0;overflow:hidden;box-shadow:0 8px 24px #0000001f}.suggest button{text-align:left;border:0;border-bottom:1px solid var(--line);background:#fff;width:100%;padding:8px 10px;display:block}.suggest button:hover{background:#f4f7fd}.money-row{gap:28px;margin-bottom:10px;display:flex}.money-row div{flex-direction:column;display:flex}.money-row b{font-size:18px}.pay-form input{width:140px}.pay-form select{width:160px}.toasts{z-index:100;flex-direction:column;gap:8px;display:flex;position:fixed;bottom:20px;right:20px}.toast{color:#fff;background:#1f2533;border-radius:8px;max-width:380px;padding:10px 16px;box-shadow:0 6px 20px #0003}.toast-error{background:var(--bad)}.auth{grid-template-columns:1fr 1fr;min-height:100vh;display:grid}.auth-side{background:radial-gradient(circle at 20% 20%, #2b3a78, var(--sidebar) 60%);color:#fff;flex-direction:column;justify-content:center;gap:14px;padding:64px;display:flex}.auth-side h1{font-size:40px}.auth-side p{color:#c9d1e6;max-width:420px;font-size:18px}.auth-side li{color:#c9d1e6;margin:6px 0}.auth-card{border:1px solid var(--border);background:#fff;border-radius:14px;flex-direction:column;place-self:center;gap:6px;width:380px;max-width:calc(100% - 32px);padding:28px;display:flex}.auth-card h2{margin-bottom:10px}.auth-card .link{text-align:center;margin-top:8px}.grid-page{flex-direction:column;height:calc(100vh - 44px);display:flex}.legend{color:var(--text-2);flex-wrap:wrap;gap:12px;font-size:12px;display:flex}.legend span{align-items:center;gap:5px;display:inline-flex}.dot{border-radius:3px;width:10px;height:10px;display:inline-block}.dot.st-pending{background:var(--st-pending)}.dot.st-confirmed{background:var(--st-confirmed)}.dot.st-checked_in{background:var(--st-checked_in)}.dot.st-checked_out{background:var(--st-checked_out)}.dot-debt{background:var(--bad);border-radius:50%}.grid-scroll{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex:1;overflow:auto}.grid-inner{position:relative}.grid-head{z-index:4;border-bottom:1px solid var(--border);background:#fff;display:flex;position:sticky;top:0}.grid-label{z-index:3;border-right:1px solid var(--border);white-space:nowrap;background:#fff;flex-shrink:0;align-items:center;gap:6px;width:170px;padding:0 10px;display:flex;position:sticky;left:0;overflow:hidden}.grid-label.corner{z-index:5;color:var(--muted);font-size:12px}.grid-cols{display:flex}.col-h{border-left:1px solid var(--line);flex-direction:column;flex-shrink:0;justify-content:center;align-items:center;height:44px;font-size:12px;display:flex}.col-h small{color:var(--muted);text-transform:capitalize;font-size:10px}.col-h.we small,.col-h.we b{color:var(--bad)}.col-h.today{background:#eaf2fd}.col-h.today b{color:var(--primary)}.col-h.hour{align-items:stretch}.col-h.hour b{text-align:center}.quarters{height:6px;margin-top:6px;display:flex}.quarters i{border-left:1px solid var(--border);flex:1}.grid-body{position:relative}.grid-overlay{pointer-events:none;z-index:0;position:absolute;top:0;bottom:0}.ov-we{background:#d6454509;position:absolute;top:0;bottom:0}.ov-today{background:#2a78d60f;position:absolute;top:0;bottom:0}.now-line{background:var(--bad);opacity:.7;z-index:2;width:2px;position:absolute;top:0;bottom:0}.grid-row{border-bottom:1px solid var(--line);height:34px;display:flex}.grid-row.ooo .track{background-color:#00000009}.cat-row{background:#f8f9fb;height:28px}.cat-row .grid-label{color:var(--text-2);background:#f8f9fb;font-size:12px;font-weight:650}.track{-webkit-user-select:none;user-select:none;touch-action:none;flex-shrink:0;position:relative}.track.lines-day,.track.lines-hour{background-image:linear-gradient(to right, var(--line) 1px, transparent 1px);cursor:cell}.unit-name{font-weight:600}.clean-dot{border-radius:50%;flex-shrink:0;width:8px;height:8px}.c-clean.clean-dot{background:var(--good)}.c-dirty.clean-dot{background:var(--bad)}.c-inspect.clean-dot{background:var(--warn)}.free{text-align:center;color:#fff;border-radius:5px;min-width:22px;padding:1px 4px;font-size:11px;font-weight:700;position:absolute;top:5px;transform:translate(-50%)}.free.ok{background:var(--good)}.free.none{background:var(--bad)}.selection{border:1px dashed var(--primary);pointer-events:none;background:#2a78d62e;border-radius:6px;position:absolute;top:3px;bottom:3px}.bar{color:#fff;cursor:grab;z-index:1;white-space:nowrap;touch-action:none;border-radius:7px;align-items:center;gap:5px;padding:0 10px 0 8px;font-size:12px;font-weight:600;display:flex;position:absolute;top:4px;bottom:4px;overflow:hidden;box-shadow:0 1px 2px #0000001f}.bar.clip-l{border-top-left-radius:0;border-bottom-left-radius:0}.bar.st-pending{background:var(--st-pending)}.bar.st-confirmed{background:var(--st-confirmed)}.bar.st-checked_in{background:var(--st-checked_in)}.bar.st-checked_out{background:var(--st-checked_out)}.bar.dragging{opacity:.85;z-index:10;cursor:grabbing;box-shadow:0 6px 18px #00000040}.bar-text{text-overflow:ellipsis;overflow:hidden}.bar-debt{background:var(--bad);border-radius:50%;flex-shrink:0;width:8px;height:8px;box-shadow:0 0 0 2px #fff}.bar-resize{cursor:ew-resize;width:8px;position:absolute;top:0;bottom:0;right:0}.bar-resize:hover{background:#ffffff59}.chip{background:var(--line);border-radius:99px;padding:3px 10px;font-size:12px;font-weight:600;display:inline-block}.chip.c-clean{color:#157a40;background:#e3f5ea}.chip.c-dirty{color:#b42f2f;background:#fde7e7}.chip.c-inspect{color:#9a6510;background:#fdf1dc}.hk-group{margin-bottom:20px}.hk-grid{grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:12px;display:grid}.hk-card{border:1px solid var(--border);border-left:4px solid var(--good);border-radius:var(--radius);background:#fff;flex-direction:column;gap:10px;padding:12px;display:flex}.hk-card.c-dirty{border-left-color:var(--bad)}.hk-card.c-inspect{border-left-color:var(--warn)}.hk-card.ooo{opacity:.6}.hk-top{align-items:center;gap:8px;display:flex}.hk-top b{font-size:16px}.hk-top .chip{margin-left:auto}.hk-info{min-height:36px;font-size:13px}.unit-group{margin-bottom:18px}.unit-chips{flex-wrap:wrap;gap:8px;display:flex}.unit-chip{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:8px;align-items:center;gap:4px;padding:5px 4px 5px 10px;display:flex}.unit-chip:hover{border-color:var(--primary)}.unit-chip.ooo{background:#fafafa}.chart{gap:8px;display:flex}.chart-axis{color:var(--muted);text-align:right;flex-direction:column;justify-content:space-between;min-width:44px;font-size:11px;display:flex;transform:translateY(-6px)}.chart-plot{border-bottom:1px solid var(--border);flex:1;position:relative}.chart-grid{border-top:1px solid var(--line);position:absolute;left:0;right:0}.chart-cols{align-items:flex-end;gap:2px;display:flex;position:absolute;inset:0}.chart-hit{flex:1;justify-content:center;align-items:flex-end;height:100%;display:flex;position:relative}.chart-col{background:var(--primary);border-radius:4px 4px 0 0;width:100%;max-width:18px;min-height:1px}.chart-col.on{background:#1c5fae}.chart-x{color:var(--muted);margin-top:4px;font-size:10px;position:absolute;top:100%}.chart-tip{border:1px solid var(--border);white-space:nowrap;z-index:3;pointer-events:none;background:#fff;border-radius:8px;padding:6px 10px;position:absolute;bottom:calc(100% + 6px);left:50%;transform:translate(-50%);box-shadow:0 4px 14px #0000001f}.chart-hit:hover .chart-tip{display:block}.hbar-cell{width:40%}.hbar{background:var(--primary);border-radius:0 4px 4px 0;min-width:2px;height:10px}@media (width<=900px){.sidebar{width:64px}.brand div,.sidebar nav button{font-size:0}.nav-icon{font-size:16px}.sidebar-foot{display:none}.auth{grid-template-columns:1fr}.auth-side{display:none}.booking-form,.cols2{grid-template-columns:1fr}}
