: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)}.nav{display:flex;gap:4px;margin-left:18px}.navtab{padding:7px 16px;border-radius:9px;border:1px solid transparent;background:transparent;color:var(--muted);font-size:14px;font-weight:600;cursor:pointer}.navtab:hover{color:var(--ink);background:#0080800f}.navtab.on{color:var(--teal);background:#0080801a}.wh-wrap{max-width:1240px;margin:0 auto;padding:20px 20px 60px}.wh-stats{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:18px}.wh-stat{background:var(--card);border:1px solid var(--line);border-radius:14px;padding:12px 18px;box-shadow:var(--shadow);min-width:120px}.wh-stat b{display:block;font-size:24px;color:var(--teal);line-height:1.1}.wh-stat span{font-size:12px;color:var(--muted)}.wh-stat.warn b{color:#c8791a}.wh-stat.mini{min-width:84px;padding:10px 14px}.wh-stat.mini b{font-size:18px;color:var(--ink)}.wh-filters{display:flex;gap:10px;align-items:center;margin-bottom:14px;flex-wrap:wrap}.wh-search{flex:1;min-width:220px;padding:9px 14px;border:1px solid var(--line);border-radius:10px;font-size:14px}.wh-filters select{padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;background:var(--card)}.wh-search:focus,.wh-filters select:focus{outline:none;border-color:var(--teal)}.wh-toggle{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--muted);cursor:pointer;padding:8px 12px;border:1px solid var(--line);border-radius:10px}.wh-toggle.on{color:#c8791a;border-color:#e6c79a;background:#fdf6ec}.wh-count{font-size:13px;color:var(--muted)}.wh-table{background:var(--card);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:var(--shadow)}.wh-th,.wh-tr{display:grid;grid-template-columns:76px 1.4fr 1.6fr 1fr 84px 84px 74px;align-items:center;gap:10px;padding:10px 16px}.wh-th{background:#eef3f2;font-size:11px;text-transform:uppercase;letter-spacing:.4px;color:var(--muted);font-weight:700;position:sticky;top:61px;z-index:5}.wh-tr{border-top:1px solid var(--line);font-size:13.5px;cursor:pointer}.wh-tr:hover{background:#0080800b}.wh-tr.tv{background:#fdf8f0}.wh-tr.tv:hover{background:#f9f0e0}.wh-code{font-family:ui-monospace,monospace;font-size:12px;color:var(--muted)}.wh-sup{color:var(--ink);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wh-our{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wh-our i{color:var(--muted);font-weight:400}.wh-brand{font-size:12px;color:var(--muted)}.wh-brand small{opacity:.7}.wh-th .r,.wh-tr .r{text-align:right}.wh-badge{display:inline-block;font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.3px;background:#f0c069;color:#5c3a06;padding:2px 7px;border-radius:6px;margin-right:6px;vertical-align:middle}.wh-empty{padding:40px;text-align:center;color:var(--muted)}.drawer-bg{position:fixed;top:0;right:0;bottom:0;left:0;background:#14282459;z-index:40;display:flex;justify-content:flex-end}.drawer{width:460px;max-width:92vw;height:100%;background:var(--card);box-shadow:-8px 0 30px #14282426;display:flex;flex-direction:column;animation:slidein .18s ease}@keyframes slidein{0%{transform:translate(30px);opacity:.6}to{transform:none;opacity:1}}.drawer-head{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;border-bottom:1px solid var(--line)}.drawer-head .pill{margin-left:8px;font-size:11px}.drawer-body{padding:18px 20px;overflow-y:auto;flex:1}.drawer-foot{padding:14px 20px;border-top:1px solid var(--line);display:flex;gap:10px;justify-content:flex-end}.wh-hint{background:#fdf6ec;color:#8a5a12;font-size:13px;padding:10px 20px;border-bottom:1px solid #f0e2c8}.frow{display:flex;gap:12px}.frow .field{flex:1}.drawer .field{margin-bottom:14px}.drawer .field label{display:block;font-size:12px;color:var(--muted);margin-bottom:5px}.drawer .field input,.drawer .field textarea,.drawer .field select{width:100%;padding:9px 12px;border:1px solid var(--line);border-radius:10px;font-size:14px;font-family:inherit;box-sizing:border-box}.drawer .field input:focus,.drawer .field textarea:focus,.drawer .field select:focus{outline:none;border-color:var(--teal)}.drawer .field input:disabled,.drawer .field textarea:disabled{background:#f6f8f7;color:var(--muted)}.wh-flags{display:flex;flex-direction:column;gap:9px;margin-top:4px}.wh-flags label{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--ink)}
