:root{font-family:Inter,"PingFang SC","Microsoft YaHei",system-ui,sans-serif;color:#26352c;background:#f6f3ed;font-synthesis:none}*{box-sizing:border-box}body{margin:0}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}a{color:inherit}h1,h2,h3,p{margin-top:0}h1,h2,h3{line-height:1.25}p{line-height:1.65}.app-shell{max-width:1420px;margin:auto;padding:0 28px}.skip-link{position:absolute;left:12px;top:-60px;background:#26352c;color:#fff;padding:10px;z-index:10}.skip-link:focus{top:12px}:focus-visible{outline:3px solid #d47827;outline-offset:3px}.topbar{min-height:84px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ddd8cb}.brand{display:flex;align-items:center;gap:12px}.brand-mark{display:grid;place-items:center;width:38px;height:38px;border-radius:10px;background:#274b39;color:#fff;font-size:19px;font-weight:800}.brand strong{display:block;font-size:16px;letter-spacing:.03em}.brand small{display:block;margin-top:2px;color:#708074;font-size:11px;letter-spacing:.13em}.topbar-note{color:#738074;font-size:13px}.hero{display:flex;align-items:end;justify-content:space-between;gap:24px;padding:47px 0 38px}.eyebrow,.section-kicker{font-weight:800;font-size:11px;letter-spacing:.18em;color:#b46c35;text-transform:uppercase;margin-bottom:12px}.hero h1{font-size:clamp(30px,4vw,48px);letter-spacing:-.04em;margin-bottom:13px}.hero-copy{max-width:690px;color:#647167;font-size:15px;margin:0}.hero-aside{display:flex;align-items:center;gap:10px;white-space:nowrap;color:#476353;font-size:12px;font-weight:700;padding-bottom:6px}.hero-aside b{color:#c8a990}.panel,.review-section{background:#fff;border:1px solid #e5e2d9;border-radius:18px;box-shadow:0 9px 30px rgba(46,58,45,.035)}.setup-panel{padding:28px}.section-head{display:flex;align-items:start;justify-content:space-between;gap:22px}.section-head h2{font-size:24px;letter-spacing:-.03em;margin:0 0 7px}.muted{color:#718077;font-size:13px;margin:0}.week-picker{min-width:255px}.week-picker>label,.approval label{display:block;color:#4d5d50;font-size:12px;font-weight:700;margin-bottom:7px}.week-picker input{width:100%;min-height:40px;padding:7px 10px;border:1px solid #cfd6cb;border-radius:8px;background:#fff;color:#26352c}.week-nav{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:8px;font-size:12px}.week-nav strong{white-space:nowrap}.text-button{background:transparent;border:0;color:#326b48;font-weight:700;padding:6px 2px}.text-button:hover{text-decoration:underline}.holiday-head{display:flex;align-items:baseline;gap:13px;margin-top:27px}.holiday-head h3{font-size:15px;margin:0}.holiday-head p{font-size:12px;color:#718077;margin:0}.holiday-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:10px;margin-top:13px}.holiday-card{min-width:0;padding:12px;border:1px solid #e1e5dd;border-radius:10px;background:#fbfcf8}.holiday-card label{display:block;font-size:12px;font-weight:700;margin-bottom:8px}.holiday-card label span{display:block;color:#819084;font-size:11px;font-weight:400;margin-top:2px}.holiday-card select{width:100%;min-height:36px;border:1px solid #d2d9d0;border-radius:7px;background:#fff;color:#2b3d30;padding:6px;font-size:12px}.setup-actions{display:flex;justify-content:space-between;gap:12px;margin-top:22px}.button{display:inline-flex;align-items:center;justify-content:center;gap:10px;border-radius:9px;padding:11px 16px;min-height:42px;font-size:13px;font-weight:800;transition:background .15s,transform .15s}.button:hover:not(:disabled){transform:translateY(-1px)}.button-primary{background:#28543c;border:1px solid #28543c;color:#fff}.button-primary:hover:not(:disabled){background:#1d422d}.button-secondary{background:#fff;border:1px solid #cbd7ce;color:#31573d}.button-secondary:hover:not(:disabled){background:#f0f5ef}.workspace{margin-top:43px}.workspace-heading{align-items:end;margin-bottom:18px}.toolbar{display:flex;gap:9px}.empty-state,.checks-empty{text-align:center;border:1px dashed #ccd5c9;border-radius:17px;background:#f9faf6;padding:48px 20px;color:#68786b}.empty-icon{width:48px;height:48px;border-radius:12px;background:#e8eee5;display:grid;place-items:center;margin:0 auto 12px;color:#42664a;font-size:28px}.empty-state h3{color:#293d30;margin-bottom:5px}.empty-state p{font-size:13px;margin:0}.legend{display:flex;flex-wrap:wrap;gap:8px 20px;color:#68796b;font-size:12px;margin:0 0 15px}.legend>span{display:inline-flex;align-items:center;gap:6px}.legend-dot{display:inline-block;width:10px;height:10px;border-radius:3px}.legend-dot.morning{background:#9cb4a2}.legend-dot.afternoon{background:#315a43}.legend-dot.closer{background:#f1ca54}.schedule-list{display:grid;gap:13px}.day-card{background:#fff;border:1px solid #e2e6dd;border-radius:15px;overflow:hidden;box-shadow:0 3px 15px rgba(36,64,41,.025)}.day-card-head{display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fafbf7;padding:14px 18px;border-bottom:1px solid #e6e9e1}.day-title{display:flex;align-items:center;gap:11px}.day-number{display:grid;place-items:center;width:38px;height:38px;border-radius:9px;background:#e9efe7;color:#31503a;font-weight:800}.day-title h3{font-size:16px;margin:0}.day-title p{font-size:11px;color:#7e8d80;margin:2px 0 0}.day-head-right{display:flex;align-items:center;gap:12px}.day-status{font-size:11px;padding:5px 8px;border-radius:999px;font-weight:800;background:#e4f3e9;color:#267249}.day-status.fail{background:#fce9e5;color:#a94136}.day-status.warn{background:#fff2d8;color:#926525}.day-edit{font-size:12px;padding:7px 10px;min-height:34px}.shift-grid{display:grid;grid-template-columns:1fr 1fr}.shift{padding:16px 18px;min-width:0}.shift+.shift{border-left:1px solid #e7ebe4}.shift-title{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:13px}.shift-title strong{font-size:13px}.shift-title small{font-size:11px;color:#7a887b}.role-row{display:grid;grid-template-columns:54px 1fr;gap:8px;align-items:start;margin:8px 0;font-size:12px}.role-label{color:#768677;padding-top:4px}.person-list{display:flex;flex-wrap:wrap;gap:5px}.person{display:inline-flex;align-items:center;gap:4px;min-height:25px;padding:4px 7px;border-radius:6px;background:#eef3ed;color:#33543d;font-weight:700;line-height:1.2}.person.newcomer{background:#f5f0e4;color:#786640}.person.closer{background:#ffe394;color:#604b16}.person.opener{outline:1px solid #8ca991}.person.empty{background:#fce9e5;color:#a33e34}.person em{font-style:normal;font-size:10px;font-weight:500}.shift-footer{font-size:11px;color:#6e7e71;border-top:1px dashed #e0e7de;padding-top:10px;margin-top:12px}.review-section{padding:28px;margin:42px 0}.checks-empty{margin-top:20px;padding:24px}.check-summary{display:flex;flex-wrap:wrap;gap:12px;margin:20px 0}.summary-card{flex:1;min-width:120px;border-radius:10px;background:#f3f6f0;padding:13px 16px}.summary-card strong{display:block;font-size:23px}.summary-card span{font-size:11px;color:#6c7b6d}.summary-card.fail{background:#fef0ed;color:#a94136}.summary-card.warn{background:#fff6e6;color:#926525}.checks-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.check-item{display:flex;gap:10px;padding:11px 12px;border:1px solid #e5e9e3;border-radius:9px;background:#fff}.check-symbol{display:grid;place-items:center;flex:none;width:20px;height:20px;border-radius:50%;font-size:12px;font-weight:900;background:#e0f0e4;color:#277347}.check-item.fail .check-symbol{background:#fde7e2;color:#b8493d}.check-item.warn .check-symbol{background:#fff0d0;color:#9c6c26}.check-item strong{font-size:12px}.check-item p{font-size:11px;color:#718077;margin:3px 0 0;line-height:1.45}.approval{display:flex;justify-content:space-between;gap:30px;margin-top:22px;padding-top:22px;border-top:1px solid #e7ebe4}.approval>div:first-child{flex:1}.approval h3{font-size:16px;margin-bottom:4px}.approval p{font-size:12px;color:#6c7d6e}.approval textarea{width:100%;max-width:750px;min-height:80px;resize:vertical;border:1px solid #cdd8ce;border-radius:8px;padding:9px;color:#26352c}.approval-action{align-self:end;text-align:right;min-width:160px}.review-state{margin:8px 0 0!important}.review-state.done{color:#1f7143!important;font-weight:700}footer{border-top:1px solid #dddcd3;padding:25px 0 35px;color:#889286;font-size:12px}.toast{position:fixed;bottom:20px;right:20px;max-width:min(400px,calc(100vw - 32px));z-index:30;padding:12px 16px;background:#2b4c38;color:white;border-radius:9px;box-shadow:0 12px 30px #243a2d33;font-size:13px}.toast.error{background:#923d33}.modal{border:0;border-radius:16px;padding:0;width:min(960px,calc(100% - 24px));max-height:calc(100% - 32px);box-shadow:0 20px 70px #14251b42;color:#26352c}.modal::backdrop{background:#14251a77}.modal-shell{padding:24px;overflow:auto;max-height:calc(100vh - 32px)}.modal-head{display:flex;justify-content:space-between;gap:16px}.modal-head h2{margin-bottom:12px;font-size:23px}.icon-button{border:0;background:#eef2ec;border-radius:8px;width:32px;height:32px;font-size:23px;color:#38553f}.availability-table-wrap,.day-edit-table-wrap{overflow:auto;margin-top:17px;border:1px solid #e2e8df;border-radius:9px}.edit-table{width:100%;border-collapse:collapse;min-width:650px}.edit-table th,.edit-table td{padding:8px;border-bottom:1px solid #e8ece6;text-align:left;white-space:nowrap}.edit-table th{font-size:11px;background:#f5f7f3;color:#617363;position:sticky;top:0}.edit-table td{font-size:12px}.edit-table tr:last-child td{border-bottom:0}.edit-table select{min-width:90px;width:100%;border:1px solid #d5ded3;background:#fff;border-radius:6px;padding:6px;color:#26352c;font-size:12px}.edit-table td small{display:block;color:#849084;font-size:10px}.modal-actions{display:flex;justify-content:flex-end;gap:10px;padding-top:17px}.special-shifts{display:grid;grid-template-columns:120px 1fr;align-items:center;gap:10px;margin-top:18px;font-size:12px;font-weight:700}.special-shifts select{border:1px solid #d5ded3;border-radius:7px;padding:8px;color:#26352c;background:#fff}
@media(max-width:950px){.holiday-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.hero-aside{display:none}.checks-list{grid-template-columns:1fr}}@media(max-width:680px){.app-shell{padding:0 15px}.topbar{min-height:67px}.topbar-note{display:none}.hero{padding:34px 0 25px}.setup-panel,.review-section{padding:18px}.section-head{display:block}.week-picker{margin-top:18px}.holiday-head{display:block}.holiday-head p{margin-top:3px}.holiday-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.setup-actions{flex-direction:column}.setup-actions .button{width:100%}.workspace{margin-top:32px}.toolbar{margin-top:14px}.toolbar .button{flex:1}.shift-grid{grid-template-columns:1fr}.shift+.shift{border-left:0;border-top:1px solid #e7ebe4}.day-card-head{padding:11px 12px}.shift{padding:13px}.approval{display:block}.approval-action{margin-top:15px;text-align:left}.approval-action .button{width:100%}.modal-shell{padding:16px}.special-shifts{grid-template-columns:1fr;gap:5px}.special-shifts select{margin-bottom:10px}}
[hidden]{display:none!important}.passed-details{grid-column:1/-1;margin-top:8px}.passed-details summary{cursor:pointer;color:#2d6843;font-weight:800;font-size:13px;padding:11px 12px;border:1px solid #d8e4d8;border-radius:8px;background:#f5f9f4}.passed-list{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin-top:8px}@media(max-width:680px){.passed-list{grid-template-columns:1fr}}
.muted,.hero-copy,.holiday-head p,.day-title p,.shift-title small,.role-label,.shift-footer,.check-item p,.approval p,footer,.empty-state,.checks-empty{color:#586a5d}.eyebrow,.section-kicker{color:#92501f}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}
.view-switch{display:inline-flex;gap:3px;padding:4px;margin:0 0 18px;border:1px solid #dce5da;border-radius:10px;background:#ecf1ea}
.view-switch button{min-height:36px;padding:7px 15px;border:0;border-radius:7px;background:transparent;color:#3c6048;font-size:13px;font-weight:800}
.view-switch button[aria-pressed="true"]{background:#28543c;color:#fff;box-shadow:0 2px 7px #244c3526}
.view-switch button:hover:not([aria-pressed="true"]){background:#dfe8dd}
.quick-view{display:flex;align-items:end;justify-content:space-between;flex-wrap:wrap;gap:12px 22px;margin:0 0 18px;padding:17px 19px;border:1px solid #dbe4d9;border-radius:12px;background:#fff}
.quick-view h3{font-size:15px;margin:0 0 3px}.quick-view p{font-size:12px;color:#586a5d;margin:0}
.quick-fields{display:flex;align-items:end;flex-wrap:wrap;gap:10px}.quick-fields>div{min-width:180px}
.quick-fields label{display:block;margin-bottom:5px;color:#405746;font-size:12px;font-weight:800}
.quick-fields input,.quick-fields select{width:100%;min-height:40px;padding:8px 11px;border:1px solid #b9cbbd;border-radius:8px;background:#fff;color:#26352c}
.quick-fields input::placeholder{color:#68796c}.quick-fields .button{min-height:40px}
.quick-view .filter-summary{flex-basis:100%;padding-top:10px;border-top:1px solid #e7ece6;font-weight:700;color:#405b47}
.filter-empty{padding:28px 20px;border:1px dashed #b9cbbd;border-radius:10px;background:#fafbf8;color:#526657;text-align:center;font-size:13px}
.matrix-head{display:flex;align-items:end;justify-content:space-between;gap:16px;margin:2px 0 13px}
.matrix-head h3{font-size:18px;margin:0 0 4px}.matrix-head p{margin:0}
.group-legend{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 11px}
.group-key{display:inline-flex;align-items:center;padding:5px 10px;border-radius:999px;border:1px solid var(--group-accent);background:var(--group-name);color:#26352c;font-size:12px;font-weight:800}
.group-bar,tr[data-section="bar"]{--group-bg:#f2f7fc;--group-name:#dfecf8;--group-accent:#7097bb}
.group-service,tr[data-section="service"]{--group-bg:#fbf4f8;--group-name:#f2e1ec;--group-accent:#b47c9d}
.group-runner,tr[data-section="runner"]{--group-bg:#f2f8ef;--group-name:#e2f0dc;--group-accent:#7ba46c}
.matrix-scroll{overflow:auto;border:1px solid #d8e0db;border-radius:10px;background:#fff;overscroll-behavior:contain}
.matrix-scroll:focus-visible{outline:3px solid #d47827;outline-offset:3px}
.matrix-table{width:100%;min-width:1540px;border-collapse:separate;border-spacing:0;table-layout:fixed;color:#2c3a35;font-size:12px}
.matrix-table th,.matrix-table td{border-right:1px solid #dce3df;border-bottom:1px solid #dce3df;padding:12px 9px;vertical-align:middle}
.matrix-table tr>:last-child{border-right:0}.matrix-table tbody tr:last-child>*{border-bottom:0}
.matrix-table thead th{position:sticky;top:0;z-index:3;height:58px;background:#344354;color:#fff;text-align:center;font-weight:800;white-space:pre-line;line-height:1.25}
.matrix-table thead th:first-child{left:0;z-index:5}.matrix-table th.matrix-name{width:118px;position:sticky;left:0;z-index:2;text-align:left;font-weight:800;background:#fff}
.matrix-table thead th.matrix-name{z-index:5;background:#344354;color:#fff}
.matrix-table tbody tr[data-section]>td{background:var(--group-bg)}
.matrix-table tbody tr[data-section]>th.matrix-name{background:var(--group-name);border-left:4px solid var(--group-accent)}
.matrix-table tbody tr.section-start>*{border-top:3px solid var(--group-accent)}
.matrix-table tbody td.matrix-shift{width:141px;height:67px;text-align:center;line-height:1.35;white-space:nowrap;font-variant-numeric:tabular-nums}
.matrix-table tbody td.matrix-shift span{display:block}.matrix-table tbody td.matrix-shift span+span{margin-top:3px}
.matrix-table tbody td.matrix-shift.is-off{color:#657568}.matrix-table tbody td.matrix-shift.is-closer{background:#ffe08a;color:#523f13;font-weight:800}
.matrix-table td.matrix-credit{width:92px;text-align:center;font-weight:800;font-variant-numeric:tabular-nums}.matrix-table td.matrix-type{width:74px;text-align:center}
.matrix-table td.matrix-note,.matrix-table th.matrix-note-head{width:245px;text-align:left}.matrix-table td.matrix-note{white-space:normal;line-height:1.45;color:#526356}
.matrix-footnote{margin:12px 2px 0;color:#526356;font-size:12px}
.edit-table tbody tr[data-section]>td{background:var(--group-bg)}
.edit-table tbody tr[data-section]>td:first-child{background:var(--group-name);border-left:4px solid var(--group-accent)}
.edit-table tbody tr.section-start>td{border-top:3px solid var(--group-accent)}
@media(max-width:680px){.view-switch{display:flex;width:100%}.view-switch button{flex:1}.matrix-head{display:block}.matrix-head>p{margin-top:7px}.matrix-table{min-width:1480px}}
@media(max-width:680px){.quick-view{padding:15px}.quick-fields{width:100%}.quick-fields>div{width:100%}.quick-fields .button{width:100%}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation-duration:.01ms!important;scroll-behavior:auto!important;transition-duration:.01ms!important}}
