:root{--bg:#f5f6f8;--card:#fff;--ink:#1f2430;--ink-2:#6b7280;--brand:#2f6df6;--brand-weak:#e8effe;--ok:#16a34a;--warn:#d97706;--bad:#dc2626;--line:#e5e7eb;--radius:14px}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--ink);-webkit-font-smoothing:antialiased;font:17px/1.65 -apple-system,PingFang SC,Microsoft YaHei,sans-serif}#app{max-width:560px;min-height:100vh;margin:0 auto}.topbar{z-index:10;background:var(--card);border-bottom:1px solid var(--line);padding:12px 16px;position:sticky;top:0}.topbar .brand{font-size:19px;font-weight:700}.topbar nav{gap:6px;margin-top:10px;display:flex;overflow-x:auto}.topbar nav a{color:var(--ink-2);background:var(--bg);white-space:nowrap;border-radius:999px;flex-shrink:0;padding:9px 16px;font-size:16px;text-decoration:none}.topbar nav a.router-link-active{background:var(--brand-weak);color:var(--brand);font-weight:600}.page{padding:16px 16px 110px}.card{background:var(--card);border-radius:var(--radius);border:1px solid var(--line);margin-bottom:14px;padding:16px}.card h3{margin:0 0 10px;font-size:19px}.muted{color:var(--ink-2);font-size:15px}.small{font-size:14px}.row{align-items:center;gap:10px;display:flex}.between{justify-content:space-between;align-items:center;gap:8px;display:flex}.wrap{flex-wrap:wrap}.gap4{gap:6px}.mt8{margin-top:10px}.mt12{margin-top:14px}button,.btn{background:var(--brand);color:#fff;cursor:pointer;border:none;border-radius:12px;min-height:48px;padding:13px 22px;font-family:inherit;font-size:17px}button.ghost{background:var(--bg);color:var(--ink)}button.danger{background:var(--bad)}button.ok{background:var(--ok)}button:disabled{opacity:.45}button.sm{border-radius:10px;min-height:40px;padding:9px 16px;font-size:15px}input,select,textarea{border:1px solid var(--line);color:var(--ink);background:#fff;border-radius:12px;min-width:0;min-height:48px;padding:12px 14px;font-family:inherit;font-size:16px}input[type=checkbox]{width:22px;min-width:22px;height:22px;min-height:auto}input[type=time]{min-height:44px}label.field{color:var(--ink-2);margin-bottom:12px;font-size:15px;display:block}label.field input,label.field select,label.field textarea{width:100%;margin-top:6px;display:block}.tag{background:var(--bg);color:var(--ink-2);border-radius:999px;padding:5px 12px;font-size:14px;display:inline-block}.tag.ok{color:var(--ok);background:#e7f6ec}.tag.warn{color:var(--warn);background:#fdf1e2}.tag.bad{color:var(--bad);background:#fdeaea}.tag.brand{background:var(--brand-weak);color:var(--brand)}.tabs{gap:10px;margin-bottom:14px;display:flex}.tabs button{background:var(--bg);color:var(--ink-2)}.tabs button.active{background:var(--brand);color:#fff}.slotgrid .datehead{margin:14px 0 8px;font-size:17px;font-weight:600}.slotgrid .chips{flex-wrap:wrap;gap:10px;display:flex}.chip{border:1px solid var(--line);color:var(--ink);text-align:center;cursor:pointer;background:#fff;border-radius:12px;min-width:104px;min-height:58px;padding:10px 12px;font-size:16px}.chip .p{color:var(--ink-2);margin-top:2px;font-size:14px}.chip.selected{border-color:var(--brand);background:var(--brand-weak);color:var(--brand);font-weight:600}.chip.selected .p{color:var(--brand)}.chip.disabled{opacity:.4}.chip.closed{background:#f3f4f6;text-decoration:line-through}.chip.booked{color:var(--bad);cursor:not-allowed;background:#fdecea}.paybar{background:var(--card);border-top:1px solid var(--line);width:100%;max-width:560px;padding:12px 16px calc(12px + env(safe-area-inset-bottom));z-index:20;align-items:center;gap:14px;display:flex;position:fixed;bottom:0;left:50%;transform:translate(-50%)}.paybar .total{font-size:19px;font-weight:700}.paybar .total small{color:var(--ink-2);font-size:14px;font-weight:400}.modal-mask{z-index:30;background:#00000059;align-items:flex-end;display:flex;position:fixed;inset:0}.modal{background:var(--card);width:100%;max-width:560px;padding:20px 18px calc(20px + env(safe-area-inset-bottom));border-radius:18px 18px 0 0;margin:0 auto}.modal h3{margin:0 0 12px;font-size:19px}.modal .actions{flex-direction:column;gap:10px;margin-top:14px;display:flex}.modal .actions button{width:100%}.codebox{text-align:center;border:2px dashed var(--brand);border-radius:var(--radius);margin:12px 0;padding:22px}.codebox .code{letter-spacing:1px;color:var(--brand);font-size:30px;font-weight:800}table.simple{border-collapse:collapse;width:100%;font-size:15px}table.simple th,table.simple td{text-align:left;border-bottom:1px solid var(--line);padding:9px 6px}.empty{text-align:center;color:var(--ink-2);padding:40px 0;font-size:16px}.error{color:var(--bad);margin-top:8px;font-size:15px}
