:root{--teal: #008080;--teal-d: #016d6d;--ink: #21302e;--muted: #7c8a86;--line: #e4e9e7;--bg: #f6f8f7;--card: #ffffff;--danger: #d0021b;--shadow: 0 1px 3px rgba(20, 40, 36, .08), 0 6px 20px rgba(20, 40, 36, .06)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,Manrope,Segoe UI,Roboto,sans-serif;color:var(--ink);background:var(--bg);-webkit-font-smoothing:antialiased}button{font:inherit;cursor:pointer}.topbar{display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--card);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:20}.brand{font-weight:700;letter-spacing:.5px;color:var(--teal)}.brand small{color:var(--muted);font-weight:500;letter-spacing:0}.spacer{flex:1}.datenav{display:flex;align-items:center;gap:8px}.datenav .day{font-weight:600;min-width:168px;text-align:center;text-transform:capitalize}.iconbtn{width:36px;height:36px;border-radius:10px;border:1px solid var(--line);background:var(--card);color:var(--ink);font-size:18px;line-height:1}.iconbtn:hover{border-color:var(--teal);color:var(--teal)}.btn{border:none;border-radius:10px;padding:9px 14px;font-weight:600;background:var(--teal);color:#fff}.btn:hover{background:var(--teal-d)}.btn.ghost{background:transparent;color:var(--teal);border:1px solid var(--line)}.btn.ghost:hover{border-color:var(--teal)}.cal{display:grid;grid-template-columns:56px 1fr}.calhead{display:grid;position:sticky;top:61px;z-index:10;background:var(--bg)}.calhead .mh{padding:10px 8px;text-align:center;font-weight:600;border-bottom:1px solid var(--line);border-left:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:8px}.dot{width:10px;height:10px;border-radius:50%}.grid,.timecol{position:relative}.timecol .t{height:60px;font-size:12px;color:var(--muted);text-align:right;padding-right:8px;transform:translateY(-7px)}.cols{position:relative;display:grid}.col{position:relative;border-left:1px solid var(--line)}.hourline{position:absolute;left:0;right:0;height:1px;background:var(--line)}.cell{position:absolute;left:0;right:0;height:60px}.cell:hover{background:#0080800d;cursor:pointer}.offhours{position:absolute;left:0;right:0;background:repeating-linear-gradient(45deg,#eef1f0,#eef1f0 6px,#f6f8f7 6px,#f6f8f7 12px)}.visit{position:absolute;left:4px;right:4px;border-radius:10px;padding:6px 8px;overflow:hidden;color:#fff;box-shadow:var(--shadow);font-size:12.5px;line-height:1.25}.visit .time{font-weight:700;opacity:.95}.visit .name{font-weight:700}.visit .svc{opacity:.92}.visit .st{position:absolute;top:6px;right:8px;font-size:10px;background:#ffffff40;padding:1px 6px;border-radius:6px}.overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#14282466;display:flex;align-items:flex-end;justify-content:center;z-index:50}@media(min-width:640px){.overlay{align-items:center}}.modal{background:var(--card);width:100%;max-width:460px;border-radius:18px 18px 0 0;padding:18px;box-shadow:var(--shadow)}@media(min-width:640px){.modal{border-radius:18px}}.modal h3{margin:0 0 12px}.field{margin-bottom:12px}.field label{display:block;font-size:13px;color:var(--muted);margin-bottom:4px}.field input,.field select{width:100%;padding:11px 12px;border:1px solid var(--line);border-radius:10px;font:inherit;background:#fff}.field input:focus,.field select:focus{outline:none;border-color:var(--teal)}.res{border:1px solid var(--line);border-radius:10px;max-height:160px;overflow:auto;margin-top:6px}.res .r{padding:9px 12px;border-bottom:1px solid var(--line)}.res .r:last-child{border-bottom:none}.res .r:hover{background:#0080800f;cursor:pointer}.res .r small{color:var(--muted)}.modalftr{display:flex;gap:10px;margin-top:16px}.modalftr .btn{flex:1}.err{color:var(--danger);font-size:13px;margin-top:8px}.loading{padding:40px;text-align:center;color:var(--muted)}.pill{font-size:12px;color:var(--muted)}.login-wrap{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px;background:linear-gradient(135deg,#f6f8f7,#e9f0ee)}.login{background:var(--card);width:100%;max-width:360px;padding:28px 24px;border-radius:18px;box-shadow:var(--shadow)}
