:root{--ink:#172033;--muted:#697386;--brand:#2667ff;--green:#047857;--red:#b42318;--paper:#fff;--bg:#f5f7fb;--line:#e3e7ef}*{box-sizing:border-box}body{margin:0;font:14px/1.5 system-ui,-apple-system,"Microsoft YaHei",sans-serif;color:var(--ink);background:var(--bg)}button,input,select,textarea{font:inherit}button{cursor:pointer;border:0;border-radius:9px;padding:9px 13px;background:var(--brand);color:#fff;font-weight:650}button.ghost{background:#eef2ff;color:#2846a3}button.danger{background:#fff0f0;color:var(--red)}button:disabled{opacity:.55;cursor:not-allowed}.shell{max-width:1280px;margin:auto;padding:22px}.top{display:flex;align-items:center;gap:14px;margin-bottom:18px}.brand{font-size:23px;font-weight:800;letter-spacing:-.8px}.brand span{color:var(--brand)}.spacer{flex:1}.nav{display:flex;gap:8px;overflow:auto;padding-bottom:4px}.nav button{background:transparent;color:var(--muted);white-space:nowrap}.nav button.active{background:#e7eeff;color:#1747ba}.card{background:var(--paper);border:1px solid var(--line);border-radius:14px;padding:18px;box-shadow:0 3px 12px #19203909}.grid{display:grid;grid-template-columns:repeat(4,1fr);gap:13px}.metric b{display:block;font-size:26px;margin-top:5px}.metric label{color:var(--muted)}.section{margin-top:17px}.section h2{font-size:17px;margin:0 0 12px}.toolbar{display:flex;gap:9px;align-items:center;flex-wrap:wrap;margin-bottom:12px}.toolbar .spacer{min-width:8px}table{border-collapse:collapse;width:100%;background:#fff}th,td{text-align:left;padding:10px;border-bottom:1px solid var(--line);white-space:nowrap}th{font-size:12px;color:var(--muted)}.table-wrap{overflow:auto;border:1px solid var(--line);border-radius:12px}.tag{display:inline-block;padding:3px 8px;border-radius:99px;font-size:12px;font-weight:700;background:#eef2ff;color:#34479a}.tag.in_house{background:#e6f7ef;color:#047857}.tag.completed{background:#e7f5fe;color:#126a98}.tag.cancelled{background:#f8e7e7;color:#b42318}.tag.pending{background:#fff3d4;color:#8c6100}.reminders{display:grid;grid-template-columns:1fr 1fr;gap:13px}.reminder{padding:14px;border-radius:12px}.checkin{background:#eaf2ff;border-left:5px solid #2667ff}.checkout{background:#fff0ed;border-left:5px solid #ec5d42}.calendar{display:grid;grid-template-columns:70px repeat(var(--days),minmax(76px,1fr));overflow:auto}.cal-cell{min-height:46px;border-right:1px solid var(--line);border-bottom:1px solid var(--line);padding:5px;font-size:12px}.cal-head{background:#f8fafc;color:var(--muted);position:sticky;top:0}.book{display:block;border-radius:5px;padding:2px 4px;background:#dce8ff;color:#1747ba;overflow:hidden;text-overflow:ellipsis}.book.in_house{background:#c9f0df;color:#07583d}.book.completed{background:#d8effa;color:#146487}.book.cancelled{background:#f4dada;color:#a82a22;text-decoration:line-through}.empty{color:var(--muted);padding:22px;text-align:center}.modal{position:fixed;inset:0;background:#17203380;display:grid;place-items:center;padding:18px;z-index:8}.modal.hidden{display:none}.dialog{width:min(720px,100%);max-height:calc(100dvh - 36px);overflow:auto;background:#fff;border-radius:16px;padding:21px}.dialog h2{margin:0 0 15px}.form{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.field{display:grid;gap:5px}.field.full{grid-column:1/-1}.field label{font-size:12px;color:var(--muted)}input,select,textarea{padding:9px 10px;border:1px solid #cdd5df;border-radius:8px;color:var(--ink);background:white}.actions{display:flex;justify-content:flex-end;gap:9px;margin-top:18px}.login{width:min(430px,100%);margin:10vh auto}.login .card{padding:28px}.login h1{margin:0 0 5px}.login p{color:var(--muted)}.notice{padding:10px 13px;background:#fff8df;border-radius:9px;color:#795400;margin:10px 0}#toast{position:fixed;bottom:20px;left:50%;transform:translateX(-50%);background:#172033;color:#fff;padding:10px 15px;border-radius:9px;opacity:0;pointer-events:none;transition:.2s;z-index:10}#toast.show{opacity:1}@media(max-width:760px){.shell{padding:14px}.top{flex-wrap:wrap}.top .spacer{display:none}.grid{grid-template-columns:1fr 1fr}.reminders{grid-template-columns:1fr}.form{grid-template-columns:1fr}.dialog{padding:17px}.nav{width:100%}th,td{padding:8px}.brand{font-size:20px}}
