:root{--bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#697386;--line:#e4e8f0;--green:#e5f7eb;--green-t:#176b38;--yellow:#fff4c8;--yellow-t:#795c00;--red:#ffe4e4;--red-t:#a62929;--blue:#eaf1ff;--blue-t:#2354a6;--dark:#172033;--shadow:0 2px 12px #1720330f}*{box-sizing:border-box}html{background:var(--bg)}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}button,input,select,textarea{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}.app-header{background:var(--dark);color:#fff;z-index:30;justify-content:space-between;align-items:center;gap:16px;padding:16px 24px;display:flex;position:sticky;top:0}.brand{font-size:20px;font-weight:800}.user-line{color:#dce2ee;text-align:right;font-size:14px}.app-main{max-width:1320px;margin:24px auto;padding:0 18px 44px}.top-nav{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:18px;display:flex}.nav-group{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.admin-nav{border-left:1px solid var(--line);margin-left:auto;padding-left:14px}.admin-label{color:var(--muted);margin-right:2px;font-size:12px;font-weight:800}.logout-form{margin-left:0}.nav-button,.btn{border:1px solid var(--line);background:var(--card);cursor:pointer;border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:10px 15px;font-weight:700;transition:all .15s;display:inline-flex}.nav-button:hover,.btn:hover{transform:translateY(-1px);box-shadow:0 2px 8px #17203314}.nav-button.disabled{opacity:.5;cursor:not-allowed}.nav-button small{font-weight:600}.btn.primary{background:var(--dark);color:#fff;border-color:var(--dark)}.btn.wide{width:100%}.btn:disabled{opacity:.55;cursor:not-allowed;box-shadow:none;transform:none}.btn.small{padding:6px 9px;font-size:12px}.danger-outline{color:var(--red-t);background:#fff;border-color:#efb0b0}.card{background:var(--card);border:1px solid var(--line);box-shadow:var(--shadow);border-radius:15px;min-width:0;margin-bottom:18px;padding:20px}.section-top{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}h1{margin:0 0 6px;font-size:27px;line-height:1.15}h2{margin:0 0 14px;font-size:19px}.muted{color:var(--muted)}.small{font-size:12px}.controls-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.month-label{text-align:center;text-transform:capitalize;min-width:150px}select,input,textarea{border:1px solid var(--line);color:var(--text);background:#fff;border-radius:9px;padding:9px 10px}select:focus,input:focus,textarea:focus{outline-offset:1px;outline:2px solid #9ebcff}.alert{border:1px solid var(--line);border-radius:10px;margin-top:12px;padding:11px 13px;font-size:14px}.alert.success{background:var(--green);color:#155b31;border-color:#b7e5c5}.alert.warning{background:#fff7dc;border-color:#f0d78c}.alert.danger{background:var(--red);color:#8d2020;border-color:#efb3b3}.alert.info{background:var(--blue);color:#244a88;border-color:#c8d8ff}.alert select{margin-left:8px}.toolbar{flex-wrap:wrap;gap:8px;margin:14px 0;display:flex}.stats{gap:12px;margin-top:14px;display:grid}.stats.four{grid-template-columns:repeat(4,minmax(0,1fr))}.stats.three{grid-template-columns:repeat(3,minmax(0,1fr))}.stat{border:1px solid var(--line);border-radius:11px;padding:13px}.stat span{color:var(--muted);font-size:13px}.stat b{margin-top:4px;font-size:25px;display:block}.calendar{border:1px solid var(--line);border-bottom:0;border-right:0;border-radius:11px;grid-template-columns:repeat(7,minmax(0,1fr));width:100%;display:grid;overflow:hidden}.dow{color:var(--muted);border-right:1px solid var(--line);border-bottom:1px solid var(--line);background:#f1f4f8;padding:9px;font-size:12px;font-weight:800}.day{border:0;border-right:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;flex-direction:column;gap:12px;min-width:0;min-height:100px;padding:8px;display:flex;overflow:hidden}.day:hover{background:#fbfcff}.day.empty{cursor:default;background:#fafbfc}.day.weekend{background:#fafcff}.day.locked{cursor:not-allowed;opacity:.78}.num{font-weight:800}.holiday{color:var(--red-t)}.status-pill{text-overflow:ellipsis;white-space:nowrap;border-radius:8px;width:max-content;max-width:100%;padding:5px 7px;font-size:12px;font-weight:800;display:block;overflow:hidden}.status-pill.yes{background:var(--green);color:var(--green-t)}.status-pill.pref{background:var(--yellow);color:var(--yellow-t)}.status-pill.no{background:var(--red);color:var(--red-t)}.status-pill.empty-status{color:var(--muted);background:#eef1f5}.legend-line{color:var(--muted);margin-top:12px;font-size:13px}.notes{resize:vertical;width:100%;min-height:105px}.note-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-top:10px;display:flex}.toast-inline{background:var(--dark);color:#fff;z-index:20;text-align:center;border-radius:10px;max-width:760px;margin:12px auto;padding:11px 14px;position:sticky;bottom:14px;box-shadow:0 10px 30px #17203338}.modal{z-index:100;background:#1720337a;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.modal-card{background:#fff;border-radius:15px;width:100%;max-width:480px;padding:20px;box-shadow:0 18px 60px #00000040}.modal-head{justify-content:space-between;align-items:center;gap:12px;display:flex}.modal-head button{cursor:pointer;background:0 0;border:0;font-size:26px}.choice-list{gap:9px;margin-top:16px;display:grid}.choice-list button{border:1px solid var(--line);text-align:left;cursor:pointer;background:#fff;border-radius:10px;padding:13px;font-weight:800}.choice-list button:hover{background:#f7f9fc}.modal-actions{justify-content:flex-end;gap:8px;margin-top:16px;display:flex}.note-text{white-space:pre-wrap;line-height:1.5}.table-wrap{width:100%;overflow:auto}.table{border-collapse:collapse;width:100%;font-size:13px}.table th,.table td{border-bottom:1px solid var(--line);text-align:center;white-space:nowrap;padding:9px}.table th:first-child,.table td:first-child{text-align:left}.table th{z-index:1;background:#fafbfc;position:sticky;top:0}.danger-row{background:snow}.red-text{color:var(--red-t)}.detail-cell{min-width:220px;text-align:left!important;white-space:normal!important}.note-list{gap:8px;display:grid}.note-row{border:1px solid var(--line);border-radius:10px;justify-content:space-between;align-items:center;gap:10px;padding:9px 10px;display:flex}.note-row.unread{background:#fff9e7;border-color:#ebd184}.note-link{cursor:pointer;text-align:left;background:0 0;border:0;font-weight:500}.note-row.unread .note-link{font-weight:800}.employee-cards{gap:14px;display:grid}.employee-card,.new-user-card{border:1px solid var(--line);background:#fbfcfe;border-radius:13px;padding:15px}.employee-card.inactive{opacity:.62}.employee-card-head{justify-content:space-between;align-items:center;gap:10px;margin-bottom:12px;display:flex}.role-badge{border-radius:999px;padding:5px 8px;font-size:11px;font-weight:800}.role-badge.admin{color:#294b9e;background:#e7edff}.role-badge.employee{color:#5b6678;background:#edf1f5}.settings-grid{grid-template-columns:minmax(120px,.85fr) minmax(180px,1.2fr) 95px minmax(150px,1fr) minmax(170px,1.15fr) 95px 135px 120px;align-items:end;gap:10px;display:grid}.add-grid{grid-template-columns:repeat(3,minmax(180px,1fr))}.field{gap:5px;min-width:0;display:grid}.field span{color:var(--muted);font-size:11px;font-weight:800}.field input,.field select{width:100%;min-width:0}.employee-actions{border-top:1px solid var(--line);justify-content:flex-end;gap:8px;margin-top:13px;padding-top:12px;display:flex}.login-shell{background:radial-gradient(circle at top,#eef3ff 0,#f5f7fb 45%);place-items:center;min-height:100vh;padding:24px;display:grid}.login-card{border:1px solid var(--line);background:#fff;border-radius:18px;width:min(430px,100%);padding:28px;box-shadow:0 20px 60px #1720331f}.login-brand{color:#4a5f86;margin-bottom:20px;font-size:15px;font-weight:900}.form-stack{gap:13px;margin-top:20px;display:grid}@media (max-width:1050px){.settings-grid{grid-template-columns:repeat(4,minmax(140px,1fr))}.add-grid{grid-template-columns:repeat(2,minmax(180px,1fr))}}@media (max-width:820px){.stats.four,.stats.three{grid-template-columns:repeat(2,minmax(0,1fr))}.user-line,.calendar{font-size:12px}.day{min-height:88px;padding:6px}.status-pill{font-size:10px}.admin-nav{border-left:0;width:100%;margin-left:0;padding-left:0}.logout-form{margin-left:auto}}@media (max-width:620px){.app-header{flex-direction:column;align-items:flex-start;padding:14px 16px}.user-line{text-align:left}.app-main{margin-top:16px;padding:0 10px 30px}.card{padding:14px}.stats.four,.stats.three,.settings-grid,.add-grid{grid-template-columns:1fr 1fr}.day{min-height:76px}.status-pill{padding:4px 5px}.month-label{min-width:115px}.note-footer{flex-direction:column;align-items:stretch}.note-footer .btn{width:100%}}@media (max-width:430px){.settings-grid,.add-grid,.stats.four,.stats.three{grid-template-columns:1fr}.calendar{overflow-x:auto}.day{min-height:72px}.num{font-size:12px}.status-pill{white-space:normal;line-height:1.1}.section-top{align-items:stretch}.controls-row{width:100%}}.account-nav{margin-left:0}.account-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:16px;display:grid}.account-item{border:1px solid var(--line);background:#fbfcfe;border-radius:11px;min-width:0;padding:13px}.account-item span{color:var(--muted);margin-bottom:5px;font-size:11px;font-weight:800;display:block}.account-item strong{overflow-wrap:anywhere;display:block}.account-note{border-top:1px solid var(--line);color:var(--muted);margin-top:14px;padding-top:13px;font-size:13px}.login-link{text-align:center;color:#365a98;padding:3px;font-size:13px;font-weight:700;display:block}.login-link:hover{text-decoration:underline}.audit-table td{vertical-align:top}.audit-details{flex-wrap:wrap;gap:5px;min-width:250px;display:flex}.audit-detail-chip{color:#455064;background:#f3f5f8;border:1px solid #e1e5eb;border-radius:7px;align-items:center;gap:4px;padding:4px 6px;font-size:11px;line-height:1.25;display:inline-flex}.audit-detail-chip b{color:#222d40}.audit-table .detail-cell{min-width:260px;max-width:460px}@media (max-width:820px){.account-nav{margin-left:auto}.audit-table .detail-cell{min-width:220px}.account-grid{grid-template-columns:1fr 1fr}}@media (max-width:620px){.account-grid{grid-template-columns:1fr}.account-nav{width:100%;margin-left:0}.account-nav .nav-button,.account-nav .logout-form,.account-nav .logout-form .nav-button{flex:1}.audit-details{min-width:180px}}.admin-dropdown{position:relative}.admin-dropdown>summary{list-style:none}.admin-dropdown>summary::-webkit-details-marker{display:none}.admin-menu{border:1px solid var(--line);z-index:60;background:#fff;border-radius:10px;min-width:190px;padding:6px;position:absolute;top:calc(100% + 7px);right:0;box-shadow:0 12px 30px #17203329}.admin-menu a{border-radius:7px;padding:10px 11px;font-weight:700;display:block}.admin-menu a:hover{background:#f3f5f9}.vacation-toolbar{flex-wrap:wrap;align-items:center;gap:8px;margin:14px 0;display:flex}.vacation-calendar .day{gap:7px;min-height:116px}.vacation-day{background:#f9fbff}.vacation-day.weekend{background:#f6f8fb}.vacation-day.vacation-conflict{background:#fff7f7;box-shadow:inset 0 0 0 2px #e39a9a}.vacation-day.vacation-selected{outline:2px dashed var(--dark);outline-offset:-3px}.vacation-people{gap:5px;width:100%;display:grid}.vacation-entry{border:1px solid #0000;border-radius:7px;justify-content:space-between;align-items:center;gap:5px;min-width:0;padding:4px 6px;font-size:clamp(9px,.72vw,11.5px);line-height:1.15;display:flex}.vacation-entry.high{color:#8f2020;background:#ffe5e5;border-color:#f0b3b3}.vacation-entry.low{color:#765700;background:#fff3c9;border-color:#edd88b}.vacation-entry b{text-overflow:ellipsis;white-space:nowrap;min-width:0;overflow:hidden}.vacation-entry small{white-space:nowrap;font-size:clamp(8px,.62vw,10px);font-weight:800}.conflict-badge{color:#9d2626;background:#ffe0e0;border-radius:6px;width:max-content;max-width:100%;padding:3px 6px;font-size:10.5px;font-weight:800;display:inline-block}.conflict-list{gap:6px;font-size:14px;display:grid}.vacation-usage-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:10px;margin-top:15px;display:grid}.usage-card{border:1px solid var(--line);background:#fbfcfe;border-radius:10px;padding:11px}.usage-card strong{display:block}.usage-card span{color:var(--muted);margin-top:4px;font-size:12px;display:block}.progress{background:#edf0f5;border-radius:20px;height:8px;margin-top:8px;overflow:hidden}.progress i{background:#5a9f75;height:100%;display:block}.year-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;display:grid}.year-month{border:1px solid var(--line);background:#fbfcfe;border-radius:12px;min-width:0;padding:12px}.year-month-head{justify-content:space-between;align-items:center;gap:8px;margin-bottom:9px;display:flex}.year-month-head h3{text-transform:capitalize;margin:0;font-size:15px}.conflict-pill{color:#9d2626;white-space:nowrap;background:#ffe3e3;border-radius:999px;padding:4px 7px;font-size:10px;font-weight:800}.year-month-line{border-top:1px solid #edf0f5;grid-template-columns:minmax(72px,.65fr) minmax(0,1.7fr);align-items:start;gap:8px;padding:6px 0;display:grid}.year-month-line:first-of-type{border-top:0}.year-month-line>b{text-overflow:ellipsis;white-space:nowrap;font-size:12px;overflow:hidden}.range-chips{flex-wrap:wrap;gap:4px;display:flex}.range-chip{border:1px solid #0000;border-radius:6px;padding:3px 5px;font-size:10px;font-weight:700}.range-chip.high{color:#8f2020;background:#ffe5e5}.range-chip.low{color:#765700;background:#fff3c9}.range-chip.conflicted{border-color:#d76f6f;box-shadow:inset 0 0 0 1px #d76f6f}.stat small{color:var(--muted);margin-top:3px;display:block}@media (max-width:1000px){.year-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.vacation-calendar .day{min-height:105px}.vacation-entry{padding:3px 4px;font-size:9px}.vacation-entry small{font-size:8px}}@media (max-width:680px){.year-grid{grid-template-columns:1fr}.vacation-calendar .day{min-height:90px}.admin-menu{left:0;right:auto}.vacation-toolbar .btn{flex:auto}.year-month-line{grid-template-columns:75px minmax(0,1fr)}}.deadline-settings-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-top:14px;display:grid}.settings-panel{border:1px solid var(--line);background:#fbfcfe;border-radius:13px;min-width:0;padding:15px}.settings-panel h3{margin:0 0 6px}.compact-form-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-top:12px;display:grid}.vacation-window-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-panel-actions{border-top:1px solid var(--line);justify-content:flex-end;margin-top:13px;padding-top:12px;display:flex}@media (max-width:850px){.deadline-settings-grid{grid-template-columns:1fr}}@media (max-width:620px){.compact-form-grid,.vacation-window-grid{grid-template-columns:1fr}.settings-panel-actions .btn{width:100%}}.summary-nav-button{color:#284c84;background:#eef3ff;border-color:#cbd7ed;box-shadow:inset 0 0 0 1px #4869a00a}.summary-nav-button:hover{background:#e7eefb;border-color:#b9c8e2}.deadline-settings-grid{grid-template-columns:minmax(300px,420px) minmax(430px,600px);justify-content:start;align-items:start;gap:12px}.settings-panel{padding:13px}.service-deadline-panel{max-width:420px}.vacation-deadline-panel{max-width:600px}.service-deadline-grid{grid-template-columns:130px 145px;justify-content:start}.vacation-window-grid{grid-template-columns:175px 135px;justify-content:start;max-width:330px}.deadline-day-field input{max-width:105px}.deadline-time-field input{max-width:125px}.deadline-date-field input{max-width:165px}.settings-panel-actions{justify-content:flex-start;margin-top:11px;padding-top:10px}.roster-upload{border:1px solid var(--line);background:#fbfcfe;border-radius:12px;margin-top:15px;padding:14px}.roster-upload-grid{grid-template-columns:150px minmax(240px,1fr) minmax(260px,1.15fr) auto;align-items:end;gap:10px;margin-bottom:8px;display:grid}.roster-upload-button{white-space:nowrap}.roster-list{gap:9px;margin-top:12px;display:grid}.roster-row{border:1px solid var(--line);background:#fbfcfe;border-radius:12px;grid-template-columns:42px minmax(0,1fr) auto;align-items:center;gap:12px;padding:12px;display:grid}.roster-icon{background:#eef2f7;border-radius:10px;place-items:center;width:42px;height:42px;font-size:21px;display:grid}.roster-main{min-width:0}.roster-heading{flex-wrap:wrap;align-items:center;gap:9px;display:flex}.roster-heading strong{font-size:14px}.roster-month{color:#385988;text-transform:capitalize;background:#edf2fb;border-radius:999px;padding:3px 7px;font-size:10.5px;font-weight:800;display:inline-flex}.roster-meta{color:var(--muted);overflow-wrap:anywhere;margin-top:4px;font-size:11.5px}.roster-actions{align-items:center;gap:7px;display:flex}.empty-state{text-align:center;color:var(--muted);background:#fafbfd;border:1px dashed #cfd6e1;border-radius:11px;padding:22px}@media (max-width:1050px){.deadline-settings-grid{grid-template-columns:minmax(0,420px) minmax(0,1fr)}.roster-upload-grid{grid-template-columns:150px minmax(220px,1fr) minmax(240px,1fr)}.roster-upload-button{grid-column:3;justify-self:end}}@media (max-width:850px){.deadline-settings-grid{grid-template-columns:minmax(0,600px)}.service-deadline-panel,.vacation-deadline-panel{max-width:100%}.roster-upload-grid{grid-template-columns:1fr 1fr}.roster-file-field{grid-column:1/-1}.roster-upload-button{grid-column:auto;justify-self:start}.roster-row{grid-template-columns:38px minmax(0,1fr)}.roster-actions{grid-column:2;justify-content:flex-start}}@media (max-width:620px){.service-deadline-grid,.vacation-window-grid{grid-template-columns:1fr 1fr;max-width:none}.deadline-day-field input,.deadline-time-field input,.deadline-date-field input{max-width:none}.settings-panel-actions .btn{width:auto}.roster-upload-grid{grid-template-columns:1fr}.roster-file-field{grid-column:auto}.roster-upload-button{justify-self:stretch;width:100%}.roster-row{grid-template-columns:1fr}.roster-icon{display:none}.roster-actions{grid-column:1}.roster-actions .btn{flex:1}}.vacation-entry.mine{outline-offset:1px;outline:2px solid #284c84;box-shadow:0 0 0 3px #284c8424}
