*{box-sizing:border-box}body{margin:0;background:#f3f5f2;color:#17312d;font:15px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}button,input,select{font:inherit}button{border:0;cursor:pointer;background:#163b35;color:white;border-radius:8px;padding:9px 14px}button:disabled{cursor:not-allowed;opacity:.7}button.secondary{background:#edf2f0;color:#35574f;border:1px solid #d7e1dd}button.danger{background:#fff0ee;color:#a53730;border:1px solid #efd0cc}.loading-screen,.fatal{min-height:100vh;display:grid;place-items:center;color:#60746f}.topbar{height:70px;background:#163b35;color:white;display:flex;align-items:center;padding:0 clamp(16px,4vw,54px);gap:13px}.brand,.auth-brand>span,.install-brand>span{width:40px;height:40px;border-radius:11px;background:#ec8e4d;display:grid;place-items:center;font-size:20px;font-weight:800}.topbar h1,.topbar p{margin:0}.topbar h1{font-size:18px}.topbar p{font-size:12px;color:#b9cbc7}.account{margin-left:auto;display:flex;align-items:center;gap:9px}.account button{background:#ffffff10;padding:7px 9px}.role,.status{display:inline-flex;padding:4px 9px;border-radius:999px;font-size:12px;font-weight:700}.role.admin{background:#e8e5fa;color:#53459b}.role.lead,.status.approved{background:#dcf1e8;color:#176452}.role.employee{background:#edf0ef;color:#60716d}.topbar .role{border:1px solid #ffffff22;color:white}.topbar .admin{background:#7664bb}.topbar .lead{background:#247561}.topbar .employee{background:#ffffff18}.workspace{padding:25px clamp(14px,3vw,44px) 55px}.toolbar{display:flex;justify-content:space-between;align-items:end;margin-bottom:16px}.toolbar small{color:#718680;font-weight:700}.month{display:flex;align-items:center;gap:5px}.month h2{margin:2px 0 0;font-size:27px;min-width:160px;text-align:center}.month button{background:transparent;color:#34554d;font-size:28px;padding:0 10px}.groups{display:grid;grid-template-columns:repeat(4,1fr);gap:9px;margin-bottom:15px}.groups button{display:flex;justify-content:space-between;background:white;color:#61736e;border:1px solid #dce4df;padding:11px 14px}.groups button.active{background:#163b35;color:white;border-color:#163b35}.groups small{opacity:.7}.panel{background:white;border:1px solid #dce4df;border-radius:12px;overflow:hidden;box-shadow:0 3px 18px #17312d0a}.tabs{display:flex;overflow:auto;border-bottom:1px solid #dce4df;padding:8px 18px 0}.tabs button{background:transparent;color:#647772;border-radius:0;padding:11px 16px;white-space:nowrap}.tabs button.active{color:#173b35;border-bottom:3px solid #2c7162;font-weight:700}#content{padding:20px;min-height:430px}.sheet-title{text-align:center;margin-bottom:12px}.sheet-title h3,.sheet-title p{margin:0}.sheet-title h3{font-size:18px}.sheet-title p{font-size:13px;color:#768884}.legend{display:flex;gap:7px;align-items:center;flex-wrap:wrap;margin-bottom:10px;font-size:12px}.legend span,.code-item>span{padding:4px 8px;border-radius:5px;font-weight:700}.code-rest{background:#fff0ef!important;color:#d73838!important}.code-bed{background:#e6f2ee!important;color:#245f53!important}.code-tech{background:#eae8fa!important;color:#554b9a!important}.code-post{background:#fff3dc!important;color:#8b5e18!important}.code-number{background:#eef1f0!important;color:#3f514d!important}.roster-wrap,.table-wrap,.summary-wrap,.coverage-wrap{overflow:auto;border:1px solid #dce4df;border-radius:10px}.roster,.data-table,.summary table,.coverage-wrap table{border-collapse:separate;border-spacing:0;min-width:100%;width:max-content;font-size:13px}.roster th,.roster td,.data-table th,.data-table td,.summary th,.summary td,.coverage-wrap th,.coverage-wrap td{border-right:1px solid #e5ebe8;border-bottom:1px solid #e5ebe8;padding:5px 8px;text-align:center}.roster thead th{position:sticky;top:0;background:#f5f8f6;z-index:2;min-width:48px}.roster th small,.coverage-wrap th small{display:block;font-weight:400}.roster .sticky{position:sticky;left:0;background:white;z-index:3;min-width:112px;text-align:left}.roster thead .sticky{background:#f5f8f6;z-index:4}.roster tbody .sticky small{color:#82928e}.weekend{color:#d94747}.shift{width:45px;min-height:36px;padding:3px;border-radius:4px;font-size:12px}.shift.empty{background:white;color:#aebbb7;border:1px dashed #d6dfdc}.shift.no-entry{box-shadow:inset 0 -4px 0 #df443c}.shift.linked{background:#edf1f6!important;color:#42546b!important;border:1px solid #bdc9d7;font-size:10px}.sum{background:#f8faf9;font-weight:700}.empty-row{height:100px;color:#788984}.summary{margin-top:20px;padding-top:15px;border-top:1px solid #e0e7e4}.summary h3{font-size:16px;margin:0 0 10px}.summary h3 small{font-weight:400;color:#788984;margin-left:8px}.summary th,.summary td{min-width:64px;height:40px}.summary th:first-child{position:sticky;left:0;background:#f7faf8;min-width:110px;text-align:left}.coverage-wrap{max-height:500px}.coverage-wrap th,.coverage-wrap td{min-width:92px;height:58px}.coverage-wrap td b,.coverage-wrap td span,.coverage-wrap td em{display:block;font-style:normal}.coverage-wrap td.partial{background:#fff3ad;color:#755500}.coverage-wrap td.missing{background:#ffd7d3;color:#9d2a21}.coverage-wrap td.covered{background:#f5faf8}.yellow,.red{display:inline-block;width:10px;height:10px;border-radius:2px}.yellow{background:#fff0a8}.red{background:#ffd5d1}.empty-box{padding:25px;text-align:center;border:1px dashed #d6dfdc;color:#74857f}.section-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:17px}.section-head h3,.section-head p{margin:0}.section-head h3{font-size:18px}.section-head p{color:#778883;font-size:13px}.data-table{width:100%}.data-table th{text-align:left;background:#f4f7f5}.data-table td{text-align:left}.data-table td small{display:block;color:#778883}.data-table td i{font-style:normal;background:#eaf2ef;padding:2px 6px;border-radius:5px;margin-left:5px}.actions{text-align:right!important;white-space:nowrap}.actions button{padding:6px 9px;margin-left:4px}.status.awaiting_peer{background:#fff2dc;color:#8c5815}.status.awaiting_lead{background:#e8edf8;color:#415f98}.status.rejected{background:#fbe7e5;color:#a23b34}.code-list{display:flex;gap:10px;flex-wrap:wrap}.code-item{display:flex;align-items:center;border:1px solid #dfe7e4;border-radius:8px;overflow:hidden}.code-item.required{border-color:#dfaa55;background:#fffaf0}.code-item label{font-size:12px;padding:0 10px}.code-item button{background:white;color:#a23b34;padding:8px 12px;border-left:1px solid #e3e8e6;border-radius:0}.auth-shell,.install-page{min-height:100vh;display:grid;place-items:center;padding:22px;background:radial-gradient(circle at 20% 10%,#e4f0eb 0,transparent 38%),#f3f5f2}.auth-card,.install-card{width:min(440px,100%);background:white;border:1px solid #dbe4e0;border-radius:18px;padding:30px;box-shadow:0 18px 50px #17312d18}.auth-brand,.install-brand{display:flex;gap:13px;align-items:center;margin-bottom:24px}.auth-brand h1,.auth-brand p,.install-brand h1,.install-brand p{margin:0}.auth-brand h1,.install-brand h1{font-size:21px}.auth-brand p,.install-brand p{font-size:13px;color:#74857f}.auth-card label,.install-form label,.modal-card>label,.modal-card form>label{display:grid;gap:5px;margin:11px 0;font-weight:650}.auth-card input,.install-form input,.modal input,.modal select{width:100%;border:1px solid #cedbd6;border-radius:8px;padding:10px 11px;background:white;color:#17312d}.auth-card>button,.auth-card form>button,.install-form>button{width:100%;margin-top:10px}.form-error,.error-banner{background:#fff0ee;color:#9d352e;padding:10px 12px;border-radius:8px;margin:10px 0}.install-form h2{font-size:15px;margin:20px 0 4px;border-bottom:1px solid #e1e8e5;padding-bottom:6px}.modal{border:0;background:transparent;padding:16px;max-width:none}.modal::backdrop{background:#0d28235c;backdrop-filter:blur(2px)}.modal-card{width:min(520px,calc(100vw - 32px));max-height:90vh;overflow:auto;background:white;border-radius:14px;padding:22px;box-shadow:0 20px 70px #102d2755}.modal-card header h3,.modal-card header p{margin:0}.modal-card header p{color:#758681;font-size:13px}.modal-card footer{display:flex;justify-content:flex-end;gap:8px;margin-top:17px}.periods{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:17px 0 10px}.periods button{background:white;color:#526962;border:1px solid #d6e0dc}.periods button.active{background:#edf7f4;color:#174c40;border-color:#287462}.preset{display:grid;grid-template-columns:repeat(6,1fr);gap:7px;margin:10px 0}.preset button{padding:8px 4px}.switch-row{display:flex!important;justify-content:space-between;align-items:center;border:1px solid #ead8d4;background:#fff8f6;padding:10px 12px;border-radius:8px}.switch-row small{display:block;color:#806d68}.switch-row input{width:auto}.team-checks{display:grid;grid-template-columns:1fr 1fr;gap:7px}.team-checks label{display:flex!important;gap:7px;align-items:center;border:1px solid #d9e2df;padding:9px;border-radius:7px;margin:0!important}.team-checks input{width:auto}.toast{position:fixed;z-index:99;top:18px;left:50%;transform:translateX(-50%);background:#173d35;color:white;padding:10px 16px;border-radius:9px;box-shadow:0 8px 30px #102d2740}.toast.error{background:#a53b34}
.calendar-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:18px}.calendar-head h3,.calendar-head p{margin:0}.calendar-head p{color:#758681;font-size:13px}.calendar-head>span{background:#edf5f2;color:#285d51;border-radius:9px;padding:7px 12px;font-weight:700}.calendar-week,.my-calendar{display:grid;grid-template-columns:repeat(7,1fr)}.calendar-week{border:1px solid #dce4df;border-bottom:0;border-radius:10px 10px 0 0;background:#f5f8f6}.calendar-week b{text-align:center;padding:9px 4px}.my-calendar{border-left:1px solid #dce4df;border-top:1px solid #dce4df}.calendar-day{min-height:104px;border-right:1px solid #dce4df;border-bottom:1px solid #dce4df;padding:8px;display:flex;flex-direction:column;gap:5px;background:white}.calendar-day.blank{background:#f7f9f8}.calendar-day.today{box-shadow:inset 0 0 0 2px #2b7564}.calendar-day.has-shift{background:#fbfdfc}.day-number{font-size:17px;font-weight:800}.calendar-day strong{align-self:flex-start;padding:4px 8px;border-radius:5px;font-size:15px}.calendar-day strong.no-entry{box-shadow:inset 0 -4px 0 #df443c}.calendar-day small{color:#6c807a}.day-off{color:#b1bcb9;font-size:12px}.audit-filter{display:grid;grid-template-columns:1fr 1fr 1fr auto;gap:10px;align-items:end;margin-bottom:18px;padding:14px;background:#f6f9f7;border:1px solid #dce4df;border-radius:10px}.audit-filter label{display:grid;gap:5px;font-size:13px;font-weight:700}.audit-filter input,.audit-filter select{width:100%;border:1px solid #cedbd6;border-radius:8px;padding:9px 10px;background:white}.audit-table{min-width:980px}.audit-table td:last-child small{display:block;color:#758681;margin-top:4px}.old-value,.new-value{display:inline-block;border-radius:5px;padding:3px 7px}.old-value{background:#f4eeee;color:#7c4c4c}.new-value{background:#e7f3ee;color:#245e51}.change-arrow{margin:0 6px;color:#82918d}
@media(max-width:760px){.account>b{display:none}.account button{font-size:0;padding:8px}.account button:after{content:'•••';font-size:14px}.workspace{padding:16px 10px 40px}.groups{display:flex;overflow:auto}.groups button{min-width:110px}.toolbar .secondary{display:none}#content{padding:14px}.sheet-title{text-align:left}.preset{grid-template-columns:repeat(4,1fr)}.section-head{align-items:flex-start}.data-table{min-width:760px}.topbar{padding:0 12px}.topbar h1{font-size:16px}.topbar p{display:none}.calendar-head p{display:none}.calendar-day{min-height:82px;padding:5px}.calendar-day strong{font-size:12px;padding:3px 4px}.calendar-day small{font-size:10px}.day-off{display:none}.audit-filter{grid-template-columns:1fr 1fr}.audit-filter label:nth-child(3),.audit-filter button{grid-column:span 2}}
