:root{font-family:PingFang SC,Noto Sans SC,Inter,system-ui,sans-serif;color:#302e28;background:#f5f3ee;font-synthesis:none;--green: #486648;--green-dark: #344a34;--green-soft: #e9efe5;--gold: #b48a4f;--brown: #302c24;--cream: #f5f3ee;--line: #e5dfd4;--muted: #817b70;--red: #b63b2f}*{box-sizing:border-box}body{margin:0;min-width:1180px;min-height:100vh;-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}.login-page{min-height:100vh;display:grid;place-items:center;padding:40px;background:var(--brown)}.login-panel{width:408px;padding:38px 42px 42px;border-radius:10px;background:#fff;box-shadow:0 24px 70px #110f0c47;text-align:center}.login-panel>img{width:104px;height:104px;border-radius:10px;object-fit:cover}.login-panel h1{margin:19px 0 6px;font-family:Songti SC,STSong,serif;font-size:25px;font-weight:600;letter-spacing:4px}.login-panel>p{margin:0;color:var(--muted);font-size:11px;letter-spacing:2px}.login-panel form{display:grid;gap:15px;margin-top:30px;text-align:left}.login-panel label{display:grid;gap:7px;color:#625d54;font-size:11px}.login-panel input{height:41px;padding:0 12px}.login-panel button{width:100%;height:42px;margin-top:3px}.login-panel button:disabled{cursor:wait;opacity:.65}.login-error{padding:9px 11px;border:1px solid rgba(182,59,47,.15);border-radius:5px;background:#fbefed;color:var(--red);font-size:11px}.admin-shell{display:grid;grid-template-columns:196px 1fr;min-height:100vh}.sidebar{position:fixed;inset:0 auto 0 0;width:196px;background:var(--brown);color:#d8c9ad;padding:16px 10px;display:flex;flex-direction:column}.brand-mark{width:110px;height:110px;object-fit:cover;margin:0 auto 12px;border-radius:10px}.sidebar nav{display:flex;flex-direction:column;gap:7px;overflow:auto}.sidebar nav button{min-height:48px;border:0;border-radius:7px;background:transparent;color:#d7cfbf;display:flex;align-items:center;gap:12px;padding:0 17px;font-size:15px;cursor:pointer}.sidebar nav button svg{width:17px;height:17px}.sidebar nav button.active{background:#5c704f;color:#fff}.sidebar-foot{margin-top:auto;text-align:center;font-size:11px;color:#857d70}.workspace{grid-column:2;min-width:0}.topbar{height:64px;background:#fff;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 24px;position:sticky;top:0;z-index:10}.topbar>div{display:flex;align-items:center;gap:9px}.topbar h1{font-size:17px;margin:0}.admin-user{justify-self:end}.admin-user span{font-size:11px;color:var(--muted)}.admin-user img{width:30px;height:30px;border-radius:50%;object-fit:cover}.admin-user b{font-size:12px}.logout-button{border:0;background:transparent;color:#49453e;font-size:11px;cursor:pointer}.logout-button:hover{color:var(--red)}.workspace-body{padding:20px;max-width:1520px;margin:auto;font-size:14px}.workspace-body :is(p,span,label,button,input,select,textarea,td,th,li){font-size:max(13px,1em)}.api-state{position:fixed;top:72px;right:24px;z-index:15;padding:9px 14px;border-radius:6px;background:var(--green-dark);color:#fff;font-size:11px;box-shadow:0 8px 22px #302c242e}.api-state.error{background:var(--red)}.panel,.metric,.info-block,.linked-card{background:#fff;border:1px solid rgba(98,76,44,.1);border-radius:8px;box-shadow:0 4px 14px #372c1c0d}.metric-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px}.metric{display:flex;align-items:center;gap:14px;padding:17px}.metric>i{width:43px;height:43px;border-radius:50%;background:#f3ecdf;color:var(--gold);display:grid;place-items:center}.metric div{display:grid;grid-template-columns:1fr auto;flex:1}.metric span{font-size:12px;color:var(--muted)}.metric b{grid-row:2;font:26px serif;margin:4px 0}.metric small{grid-row:3;font-size:10px;color:var(--muted)}.dash-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:14px;margin-top:14px}.dash-grid>.panel{padding:16px;min-height:275px}.panel-title{display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:10px}.panel-title h2{font-size:14px;margin:0}.panel-title button{border:0;background:transparent;color:var(--muted);font-size:10px;display:flex;align-items:center}.line-chart{height:185px;display:flex;align-items:flex-end;gap:18px;padding:20px 18px 0;border-bottom:1px solid var(--line)}.line-chart span{flex:1;background:var(--green);min-width:16px;position:relative}.line-chart span i{position:absolute;top:-18px;width:100%;text-align:center;font-style:normal;font-size:9px;color:var(--green)}.axis{display:flex;justify-content:space-around;font-size:9px;color:var(--muted);padding-top:7px}.income-total{width:130px;height:130px;border:18px solid #574a37;border-radius:50%;float:left;margin:28px 25px 10px 10px;display:flex;flex-direction:column;align-items:center;justify-content:center}.income-total b{font-size:10px}.income-total strong{font-size:15px}.legend{display:grid;grid-template-columns:12px 1fr 80px 40px;align-items:center;font-size:11px;margin:16px 0}.legend i{width:8px;height:8px;border-radius:50%;background:var(--green)}.legend:nth-of-type(3) i{background:var(--gold)}.workload>div:not(.panel-title){display:grid;grid-template-columns:75px 1fr 30px;align-items:center;gap:8px;margin:18px 0;font-size:11px}.workload i{height:13px;background:#eee;display:block}.workload i b{height:100%;background:var(--green);display:block}.recent>button{border:0;border-bottom:1px solid var(--line);background:transparent;width:100%;display:grid;grid-template-columns:48px 65px 100px 1fr 55px;gap:8px;text-align:left;padding:11px 0;font-size:10px;cursor:pointer}.recent strong{color:var(--green)}.filters-panel{display:grid;grid-template-columns:1.1fr .75fr .85fr 1.4fr 72px 72px;gap:12px;padding:14px;margin-bottom:14px}.filters-panel label{display:flex;flex-direction:column;gap:6px;font-size:10px;color:var(--muted)}input,select,textarea{border:1px solid var(--line);border-radius:5px;background:#fff;padding:8px;color:#3d3932}.primary,.secondary,.danger{border:0;border-radius:5px;padding:9px 16px;cursor:pointer}.primary{background:var(--green);color:#fff}.secondary{background:#f1ede5;color:#5f594f}.danger{background:var(--red);color:#fff}.danger:disabled{opacity:.45}.filters-panel>button{align-self:end}.table-card{overflow:hidden}.table-card table,.transaction table,.customer-detail-grid table{width:100%;border-collapse:collapse;font-size:10px}.table-card th,.table-card td,.transaction th,.transaction td,.customer-detail-grid th,.customer-detail-grid td{padding:11px 9px;border-bottom:1px solid var(--line);text-align:left}.table-card th,.transaction th,.customer-detail-grid th{background:#f3f0e9;color:#6a6358;font-weight:600}.table-card td small,.table-card td b{display:block}.table-card td small{color:var(--muted);margin-top:4px}.table-card footer{padding:14px;text-align:right;font-size:11px;color:var(--muted)}.table-card footer span{background:var(--green);color:#fff;padding:6px 9px;border-radius:4px}.text-button{border:0;background:transparent;color:var(--green);cursor:pointer}.status{font-size:9px;border-radius:10px;padding:5px 8px;background:#eef0ec;color:#536650;white-space:nowrap}.status-服务中,.status-待核销{background:#f8eadb;color:#b46333}.status-已完成,.status-已支付{background:#e7efe3;color:#466742}.status-已退款{background:#eee;color:#777}.detail-layout{display:grid;grid-template-columns:1fr 300px;gap:14px}.detail-heading{display:flex;align-items:center;gap:12px;margin-bottom:14px}.detail-heading button{border:0;background:transparent;color:var(--green)}.detail-heading h2{margin:0;font-size:16px;flex:1}.info-block{padding:14px;margin-bottom:12px}.info-block h2{font-size:13px;margin:0 0 12px;border-bottom:1px solid var(--line);padding-bottom:9px}.info-block>div{display:grid;grid-template-columns:repeat(2,1fr);gap:12px 28px}.info-block p{display:grid;grid-template-columns:95px 1fr;margin:0;font-size:10px}.info-block p span{color:var(--muted)}.linked-card{width:100%;border:1px solid rgba(98,76,44,.1);display:grid;grid-template-columns:50px 1fr 20px;align-items:center;gap:12px;text-align:left;padding:13px;margin-bottom:12px;cursor:pointer}.linked-card img{width:48px;height:48px;border-radius:50%;object-fit:cover}.linked-card h3{margin:0 0 4px}.linked-card em,.customer-overview em{font-style:normal;background:#eee1c7;color:#876635;padding:3px 6px;border-radius:8px;font-size:9px}.linked-card p,.linked-card span{font-size:10px;margin:3px 0;color:var(--muted)}.order-link{width:100%;border:1px solid rgba(98,76,44,.1);display:grid;grid-template-columns:120px 1fr 20px;padding:14px;text-align:left;cursor:pointer}.action-side{padding:15px;align-self:start}.action-side h2,.customer-actions h2{font-size:13px;border-bottom:1px solid var(--line);padding-bottom:9px}.action-side>button{width:100%;border:1px solid var(--green);background:#fff;color:var(--green);padding:8px;margin-bottom:8px;border-radius:4px}.action-side>button.warn{background:var(--gold);color:#fff;border-color:var(--gold)}.timeline-event{display:grid;grid-template-columns:16px 1fr;position:relative;padding:9px 0 9px 8px}.timeline-event i{width:8px;height:8px;border-radius:50%;border:2px solid var(--green);margin-top:3px}.timeline-event b{font-size:10px}.timeline-event span{grid-column:2;font-size:9px;color:var(--muted)}.order-summary{padding:16px;display:grid;grid-template-columns:1fr 100px 80px;align-items:center}.order-summary>div{display:flex;gap:12px}.order-summary img{width:88px;height:58px;object-fit:cover;border-radius:5px}.order-summary section{display:flex;flex-direction:column;gap:5px}.order-summary span{font-size:10px;color:var(--muted)}.order-summary>strong{font-size:23px;color:#bc4936}.pay-grid{display:grid;grid-template-columns:1fr 1fr 1.2fr;gap:12px;margin:12px 0}.pay-grid article{padding:18px;display:grid;grid-template-columns:30px 1fr;align-items:center}.pay-grid b{grid-column:2;font-size:20px}.total-pay{text-align:center}.transaction{padding:15px;margin-bottom:12px}.order-actions{padding:14px;display:grid;grid-template-columns:1fr auto auto;gap:10px;align-items:center;margin-bottom:12px}.order-actions span{font-size:10px;color:var(--muted);display:block;margin-top:5px}.customer-overview{display:grid;grid-template-columns:72px 1fr repeat(4,120px);gap:12px;align-items:center;padding:16px}.customer-overview>img{width:70px;height:70px;border-radius:50%;object-fit:cover}.customer-overview h2{margin:0}.customer-overview p,.customer-overview span{font-size:10px;color:var(--muted)}.customer-overview article{border-left:1px solid var(--line);text-align:center;display:flex;flex-direction:column}.customer-overview article span{font-size:10px}.customer-overview article b{font-size:20px;margin-top:7px}.customer-detail-grid{display:grid;grid-template-columns:1fr 280px;gap:12px;margin-top:12px}.customer-detail-grid>section,.customer-actions{padding:15px}.tab-row{display:flex;gap:30px;border-bottom:1px solid var(--line);padding-bottom:10px;margin-bottom:12px;font-size:11px}.tab-row b{color:var(--green);border-bottom:2px solid var(--green);padding-bottom:9px}.customer-actions>div{display:flex;gap:7px;flex-wrap:wrap}.customer-actions>div span{background:var(--green-soft);color:var(--green);padding:6px 9px;border-radius:12px;font-size:9px}.customer-actions button,.customer-actions select,.customer-actions textarea{width:100%;margin-bottom:8px}.customer-actions button{border:1px solid var(--green);background:#fff;color:var(--green);padding:8px;border-radius:4px}.customer-actions button.danger{background:var(--red);color:#fff;border-color:var(--red)}.risk-title{color:var(--red)}.module-placeholder{text-align:center;padding:80px 20px}.module-placeholder>svg{width:50px;height:50px;color:var(--gold)}.module-placeholder p{color:var(--muted)}.distribution-module{display:flex;flex-direction:column;gap:18px}.distribution-section{padding:22px;overflow-x:auto}.distribution-section table{width:100%;margin-top:16px;border-collapse:collapse}.staff-schedule-dialog{width:min(860px,calc(100vw - 40px));max-height:calc(100vh - 56px);overflow:auto}.schedule-dialog-heading{display:flex;justify-content:space-between;align-items:flex-start;gap:20px}.schedule-dialog-heading p{margin:5px 0 0;color:var(--muted)}.schedule-summary{display:grid;grid-template-columns:130px 1fr;gap:8px 14px;padding:16px;border-radius:14px;background:#f7f4ed}.schedule-inline-form{display:grid;grid-template-columns:1.2fr 1fr 1fr 1.8fr auto;align-items:end;gap:12px;padding-top:18px;border-top:1px solid #e9e1d5}.schedule-inline-form h3{margin:0;font-size:15px}.schedule-inline-form label{margin:0}@media(max-width:900px){.schedule-inline-form{grid-template-columns:1fr 1fr}.schedule-inline-form h3{grid-column:1 / -1}}.management-module{display:grid;gap:14px}.module-heading{display:flex;align-items:center;justify-content:space-between}.module-heading h2{margin:0 0 5px;font-size:20px}.module-heading p{margin:0;color:var(--muted);font-size:11px}.module-heading button{display:inline-flex;align-items:center;gap:7px}.module-heading-actions{display:flex;gap:8px}.catalog-create-dialog{max-height:min(88vh,760px);overflow-y:auto}.module-filter{display:flex;align-items:end;justify-content:space-between;padding:14px 16px}.module-filter label{width:min(420px,60%)}.module-filter input{width:100%;margin-top:6px}.module-filter>span{color:var(--muted);font-size:11px}.management-module td{max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#1917138c;z-index:20;display:grid;place-items:center}.refund-dialog{width:440px;max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow-y:auto;box-sizing:border-box;background:#fff;border-radius:10px;padding:28px;box-shadow:0 20px 60px #00000040}.refund-dialog>svg{width:36px;height:36px;color:var(--red)}.refund-dialog h2{margin:10px 0}.refund-dialog p{font-size:12px;color:var(--muted);line-height:1.7}.refund-dialog label{font-size:11px}.refund-dialog textarea{width:100%;height:90px;display:block;margin:8px 0 16px}.service-edit-dialog{display:grid;gap:12px}.service-edit-dialog label{display:grid;gap:6px}.service-edit-dialog input,.service-edit-dialog select{width:100%}.service-edit-dialog .business-hours-input{min-height:150px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px}.form-error{margin:0;color:#a72a24;font-size:13px}.calendar-page{position:relative}.calendar-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:24px;margin-bottom:18px}.calendar-heading>div:first-child>span{color:var(--gold);font-size:11px;letter-spacing:2px}.calendar-heading h2{margin:4px 0 3px;font-family:Songti SC,STSong,serif;font-size:25px}.calendar-heading p{margin:0;color:var(--muted);font-size:12px}.calendar-navigation,.calendar-view-switch{display:flex;align-items:center;gap:6px}.calendar-view-switch{margin-left:8px;padding:3px;border:1px solid var(--line);border-radius:8px;background:#fff}.calendar-view-switch button{min-width:62px;padding:7px 10px;border:0;border-radius:6px;background:transparent;color:var(--muted);cursor:pointer}.calendar-view-switch button.active{background:var(--green);color:#fff;box-shadow:0 3px 10px #344a3433}.calendar-filters{grid-template-columns:150px minmax(260px,1fr) auto auto}.calendar-result-count{align-self:end;padding-bottom:10px;color:var(--muted);font-size:12px}.calendar-shell{min-height:560px;overflow:hidden}.calendar-list-table{overflow-x:auto}.calendar-list-table table{min-width:1040px}.staff-detail-grid{display:grid;grid-template-columns:minmax(280px,.8fr) minmax(360px,1.2fr);gap:16px;margin-bottom:16px}.staff-profile-form,.staff-leave-form{display:grid;gap:12px;padding:20px}.staff-profile-form h3,.staff-leave-form h3,.staff-leave-history h3{margin:0 0 6px;color:var(--ink)}.staff-leave-history h3{padding:18px 18px 8px}.staff-profile-form label,.staff-leave-form label{display:grid;gap:6px;color:var(--muted);font-size:11px}.leave-conflict{margin:0;padding:10px;border:1px solid #e7b6aa;border-radius:6px;background:#fff4f0;color:var(--red)}@media(max-width:900px){.staff-detail-grid{grid-template-columns:1fr}}.calendar-timeline-scroll{overflow-x:auto}.calendar-timeline{display:grid;grid-template-columns:62px repeat(var(--calendar-columns),minmax(132px,1fr));min-width:calc(62px + var(--calendar-columns) * 132px)}.calendar-corner,.calendar-day-head{min-height:66px;padding:11px 12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);background:#fbfaf7}.calendar-corner{display:grid;place-items:center;padding:0;color:#aaa398;font-size:9px}.calendar-day-head span,.calendar-day-head small{display:block;color:var(--muted);font-size:10px}.calendar-day-head b{display:block;margin:3px 0;font-family:Songti SC,STSong,serif;font-size:16px}.calendar-day-head.today{background:#f5efdf}.calendar-day-head.today b{color:var(--green-dark)}.calendar-hours{position:relative;height:1020px;border-right:1px solid var(--line);background:#fbfaf7}.calendar-hours span{display:block;height:68px;padding:4px 8px 0 0;color:#999186;font-size:9px;text-align:right;transform:translateY(-8px)}.calendar-day-column{position:relative;height:1020px;border-right:1px solid var(--line);background:#fff}.calendar-day-column.today{background:#b48a4f09}.calendar-hour-line{display:block;height:68px;border-bottom:1px solid #eeeae2}.calendar-hour-line:after{content:"";display:block;border-bottom:1px dashed #f2eee7;transform:translateY(34px)}.calendar-event{position:absolute;left:5px;right:5px;z-index:2;display:grid;grid-template-columns:auto 1fr;align-content:start;gap:2px 7px;padding:7px 8px;overflow:hidden;border:0;border-left:3px solid var(--gold);border-radius:6px;background:#f8f0df;color:var(--brown);text-align:left;cursor:pointer}.calendar-event:hover,.calendar-event:focus-visible{box-shadow:0 5px 16px #302c2424;outline:2px solid rgba(72,102,72,.25)}.calendar-event time,.calendar-event em{color:var(--muted);font-size:9px;font-style:normal}.calendar-event strong{overflow:hidden;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.calendar-event span{grid-column:1 / -1;overflow:hidden;font-size:10px;text-overflow:ellipsis;white-space:nowrap}.calendar-event em{grid-column:1 / -1}.calendar-status-arrived,.calendar-status-in-service{border-left-color:var(--green);background:#eaf0e7}.calendar-status-completed{border-left-color:#849484;background:#edf0eb}.calendar-status-cancelled{border-left-color:var(--red);background:#f7e9e6}.calendar-status-pending-payment{border-left-color:#9b9488;background:#f0eee9}.month-calendar{display:grid;grid-template-columns:repeat(7,minmax(120px,1fr))}.month-weekday{padding:12px;border-bottom:1px solid var(--line);border-right:1px solid var(--line);background:#fbfaf7;color:var(--muted);font-size:10px;text-align:center}.month-day{position:relative;min-height:126px;padding:10px;border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#fff;text-align:left;cursor:pointer}.month-day.outside{background:#faf9f6;color:#aaa398}.month-date-button{display:grid;width:24px;height:24px;place-items:center;padding:0;border:0;border-radius:50%;background:transparent;color:inherit;cursor:pointer}.month-day.today>.month-date-button{display:grid;width:24px;height:24px;place-items:center;border-radius:50%;background:var(--green);color:#fff}.month-summary{display:grid;gap:2px;margin:8px 0 5px}.month-summary b{font-size:10px}.month-summary small,.month-more{color:var(--muted);font-size:9px;font-style:normal}.month-day .calendar-event.compact{position:static;display:flex;gap:5px;margin-top:4px;padding:4px 5px}.month-day .calendar-event.compact em{display:none}.appointment-drawer{position:fixed;top:64px;right:0;bottom:0;z-index:18;width:390px;padding:26px;overflow-y:auto;border-left:1px solid var(--line);background:#fffdfa;box-shadow:-18px 0 50px #27231d29;animation:drawer-in .18s ease-out}@keyframes drawer-in{0%{transform:translate(28px);opacity:0}}.appointment-drawer header{display:flex;justify-content:space-between;gap:20px}.appointment-drawer header span{color:var(--gold);font-size:10px;letter-spacing:2px}.appointment-drawer h2{margin:5px 0 16px;font-family:Songti SC,STSong,serif}.appointment-drawer header button{width:32px;height:32px;border:1px solid var(--line);border-radius:50%;background:#fff;cursor:pointer}.appointment-drawer dl{margin:24px 0;border-top:1px solid var(--line)}.appointment-drawer dl div{padding:13px 0;border-bottom:1px solid var(--line)}.appointment-drawer dt{margin-bottom:5px;color:var(--muted);font-size:10px}.appointment-drawer dd{margin:0;font-size:12px;line-height:1.6}.appointment-drawer footer{display:flex;justify-content:flex-end;gap:9px}.calendar-empty{min-height:520px;display:grid;place-content:center;justify-items:center;gap:10px;color:var(--muted)}.calendar-empty svg{width:30px;height:30px;color:var(--gold)}@media(max-width:760px){body{min-width:0}.calendar-heading{align-items:flex-start;flex-direction:column}.calendar-navigation{flex-wrap:wrap}.appointment-drawer{top:0;width:min(390px,100vw)}.month-calendar{min-width:760px}}.refund-dialog>div{display:flex;justify-content:flex-end;gap:10px}@media(max-width:1250px){.metric-grid{grid-template-columns:repeat(2,1fr)}.customer-overview{grid-template-columns:72px 1fr repeat(2,110px)}.customer-overview article:nth-last-child(-n+2){display:none}}
