/* 正式版补充样式（在 admin.css 之上） */
.boot{display:grid;place-items:center;min-height:100vh;color:var(--muted)}
.auth{min-height:100vh;display:grid;place-items:center;background:linear-gradient(135deg,#0A1A3F,#24395c);padding:20px}
.auth form{background:#fff;border-radius:16px;padding:30px;width:min(420px,100%);display:grid;gap:12px;box-shadow:0 20px 60px #0006}
.auth .logos{display:flex;gap:14px;justify-content:center;margin-bottom:6px}.auth .logos img{height:44px;max-width:140px;object-fit:contain}
.auth h1{font-size:20px;margin:4px 0 0;text-align:center}.auth p{margin:0;color:var(--muted);font-size:14px;text-align:center}
.err{color:#b42318;font-size:14px;min-height:20px}
.sync{font-size:12px;color:#8a8f98;margin-left:8px;white-space:nowrap}.sync.on{color:#1f9d55}.sync.wait{color:#c27c0e}
.tabs{display:flex;gap:6px;flex-wrap:wrap;margin-bottom:14px}.tabs button{border-radius:999px}
button.on{background:var(--navy);color:#fff;border-color:var(--navy)}
button.ghost{background:transparent;border-color:transparent}
button:disabled{opacity:.55;cursor:wait}
.st{display:inline-block;font-size:12px;padding:2px 8px;border-radius:999px;background:#eef2f6;white-space:nowrap}
.st.pending{background:#fff1d5;color:#925f08}.st.confirmed{background:#e6effb;color:#1d4f91}.st.arrived{background:#e8f5ec;color:#287245}.st.completed{background:#ececec;color:#555}.st.cancelled,.st.no_show{background:#fde8ea;color:#b42318}
.skgrid{max-height:55vh;overflow:auto;border:1px solid var(--line);border-radius:10px;padding:4px 12px;margin:10px 0}
.skrow{display:grid;grid-template-columns:auto 1fr 84px auto;gap:8px;align-items:center;padding:5px 0;border-bottom:1px solid #f1f3f5;font-size:14px}
.skrow input[type=checkbox]{width:auto}.skrow input[type=number]{padding:5px 8px}
.skcat{font-size:12px;font-weight:700;color:var(--muted);margin:12px 0 4px}
.cklist{display:flex;gap:14px;flex-wrap:wrap}.cklist label{display:flex;gap:6px;align-items:center}.cklist input{width:auto}
.mono{font-family:ui-monospace,Menlo,monospace;font-size:12px;word-break:break-all}
.right{text-align:right}
.newcust{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:6px}
.calbar .calseg button img{height:18px}
.grpi{margin-left:auto;font-size:12px}
.appt .st2{font-size:11px;font-weight:700;color:#a1146c}
.avatar.big{width:66px;height:66px;font-size:26px;display:grid;place-items:center;margin:0 auto 6px;border-radius:50%;background:#eef2f6}
.sktabs button img{width:24px;height:24px;border-radius:50%;object-fit:cover;vertical-align:middle;margin-right:4px}
.filter{display:grid;grid-template-columns:repeat(3,minmax(0,220px));gap:10px;margin-bottom:12px}
@media(max-width:700px){.filter{grid-template-columns:1fr}}
/* 按服务类别着色（Fresha 式）；待确认＝虚线框，已完成/未到＝灰 */
.appt.cat-nails{background:#F5A3DD;box-shadow:inset 0 0 0 1px #e58ccb}.appt.cat-massage{background:#FFD3A3;box-shadow:inset 0 0 0 1px #f0b56f}.appt.cat-hair{background:#CDBDF4;box-shadow:inset 0 0 0 1px #ac96e6}.appt.cat-lash{background:#A9D8F5;box-shadow:inset 0 0 0 1px #7dbde6}.appt.cat-brow{background:#BFE6CF;box-shadow:inset 0 0 0 1px #8fcfa9}.appt.cat-wax{background:#F6E08E;box-shadow:inset 0 0 0 1px #e1c55a}.appt.cat-pmu{background:#F5B7B7;box-shadow:inset 0 0 0 1px #e38f8f}
.appt.s-pending{opacity:.85;box-shadow:inset 0 0 0 2px #a1146c;border:0;background-image:repeating-linear-gradient(135deg,rgba(255,255,255,.35) 0 6px,transparent 6px 12px)}
.appt.s-completed,.appt.s-no_show{filter:grayscale(.75);opacity:.7}
.calkey .kc{display:inline-block;width:14px;height:10px;border-radius:3px;margin-left:8px}.calkey .kc.cat-nails{background:#F5A3DD}.calkey .kc.cat-massage{background:#FFD3A3}.calkey .kc.cat-hair{background:#CDBDF4}.calkey .kc.cat-lash{background:#A9D8F5}.calkey .kc.cat-brow{background:#BFE6CF}.calkey .kc.cat-wax{background:#F6E08E}.calkey .kc.cat-pmu{background:#F5B7B7}
.resed{display:grid;gap:6px;margin:6px 0 12px}.resrow{display:grid;grid-template-columns:1fr 1fr 90px;gap:6px}
.resbox .resrow{display:grid;grid-template-columns:160px 90px 1fr auto;gap:6px;margin-bottom:6px}.resbox .cklist label{font-size:13px}
