@import "https://fonts.googleapis.com/css2?family=Heebo:wght@400;500;600;700;800;900&display=swap";:root{font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Heebo,Segoe UI,Arial,sans-serif}body{min-width:320px;min-height:100vh;margin:0}:root{--navy:#14213d;--navy-soft:#233554;--blue:#2f6feb;--blue-hover:#245bc2;--cyan:#3bb7a5;--bg:#f5f7fb;--card:#fff;--text:#172033;--muted:#748097;--border:#e3e8f1;--danger:#d04444;--shadow:0 12px 32px #1c2a4614}*{box-sizing:border-box}button,input,select{font:inherit}button{cursor:pointer}.app-shell{background:var(--bg);min-height:100vh;color:var(--text)}.topbar{background:var(--navy);color:#fff;align-items:center;gap:42px;height:74px;padding:0 clamp(22px,4vw,64px);display:flex;box-shadow:0 4px 18px #0f1a312e}.brand{align-items:center;gap:12px;min-width:max-content;display:flex}.brand-mark{background:linear-gradient(135deg,#5ad5c2,#2f6feb);border-radius:12px;place-items:center;width:40px;height:40px;font-size:23px;font-weight:900;display:grid}.brand>div:last-child{flex-direction:column;display:flex}.brand strong{font-size:19px;line-height:1.15}.brand span{color:#aeb9ce;font-size:11px}.topbar nav{align-self:stretch;align-items:stretch;gap:4px;display:flex}.topbar nav button{color:#b7c1d4;background:0 0;border:0;padding:0 17px;font-size:14px;font-weight:700;position:relative}.topbar nav button:hover,.topbar nav button.active{color:#fff}.topbar nav button.active:after{content:"";background:#54ceb8;border-radius:5px 5px 0 0;height:3px;position:absolute;bottom:0;left:17px;right:17px}.header-actions{gap:7px;margin-right:auto;display:flex}main{width:min(1540px,100% - 48px);margin:0 auto;padding:42px 0 70px}.page-heading{justify-content:space-between;align-items:flex-end;gap:24px;margin-bottom:30px;display:flex}.eyebrow{color:var(--blue);letter-spacing:.04em;margin-bottom:6px;font-size:12px;font-weight:800;display:block}h1,h2,h3,p{margin-top:0}h1{letter-spacing:-.035em;margin-bottom:8px;font-size:clamp(30px,3vw,42px)}.page-heading p{color:var(--muted);margin-bottom:0}.heading-actions{flex-wrap:wrap;gap:10px;display:flex}.button{border:1px solid #0000;border-radius:9px;min-height:42px;padding:0 18px;font-weight:750;transition:all .16s}.button.primary{background:var(--blue);color:#fff;box-shadow:0 6px 15px #2f6feb33}.button.primary:hover{background:var(--blue-hover);transform:translateY(-1px)}.button.secondary{border-color:var(--border);color:var(--text);background:#fff}.button.ghost{color:#d9e1ef;background:#ffffff0f;border-color:#ffffff2e}.button.small{min-height:34px;padding:0 11px;font-size:12px}.stats{grid-template-columns:repeat(3,1fr);gap:16px;margin-bottom:18px;display:grid}.stats article{border:1px solid var(--border);background:var(--card);border-radius:13px;padding:20px 24px;position:relative;overflow:hidden;box-shadow:0 4px 16px #1c2a4609}.stats article:after{content:"";background:var(--cyan);width:4px;height:100%;position:absolute;top:0;right:0}.stats span,.stats small{color:var(--muted);font-size:12px;display:block}.stats strong{margin:3px 0;font-size:27px;display:block}.stats em{color:#a3acbb;font-size:18px;font-style:normal}.card{border:1px solid var(--border);background:var(--card);border-radius:13px;box-shadow:0 5px 18px #1c2a460b}.week-controls{justify-content:center;align-items:center;gap:20px;margin-bottom:18px;padding:14px;display:flex}.week-controls>div{text-align:center;min-width:290px}.week-controls span,.week-controls strong{display:block}.week-controls span{color:var(--muted);margin-bottom:2px;font-size:11px}.week-controls input{border:1px solid var(--border);color:var(--text);background:#fff;border-radius:7px;padding:8px 11px}.icon-button{border:1px solid var(--border);width:34px;height:34px;color:var(--navy);background:#fff;border-radius:50%;font-size:25px;line-height:1}.schedule-grid{grid-template-columns:repeat(7,minmax(185px,1fr));align-items:start;gap:10px;padding-bottom:10px;display:grid;overflow-x:auto}.day-card{border:1px solid var(--border);background:#fff;border-radius:11px;min-height:430px;overflow:hidden}.day-card>header{border-bottom:1px solid var(--border);background:#fafbfd;justify-content:space-between;align-items:center;padding:14px 13px;display:flex}.day-card header strong,.day-card header span{display:block}.day-card header strong{font-size:14px}.day-card header span{color:var(--muted);font-size:11px}.day-card header em{color:var(--blue);background:#eaf1ff;border-radius:20px;padding:3px 7px;font-size:10px;font-style:normal;font-weight:750}.day-shifts{padding:8px}.shift-block{background:#fff;border:1px solid #e7ebf2;border-radius:9px;margin-bottom:8px;padding:11px}.shift-title,.shift-title>div{align-items:center;display:flex}.shift-title{justify-content:space-between;gap:7px;margin-bottom:10px}.shift-title>div{gap:6px}.shift-title strong{font-size:12px}.shift-title time{color:var(--muted);direction:ltr;font-size:10px;font-weight:650}.shift-dot{background:var(--cyan);border-radius:50%;width:6px;height:6px}.grouped-shift{background:#f9fbff;border-color:#b7d0f8}.shift-period{color:#2356ad;margin-bottom:6px;font-size:11px;font-weight:700}.shift-continuation{color:var(--muted);margin-bottom:9px;font-size:10px}.shift-continuation span{display:block}.grouped-help{color:#2356ad;background:#eaf1ff;border-radius:8px;margin:18px 0 0;padding:12px;font-size:12px;line-height:1.8}.schedule-help{margin:0 0 18px}.slot-lock{border:1px solid var(--border);color:#59667d;background:#fff;border-radius:6px;width:100%;margin-bottom:8px;padding:5px;font-size:10px}.slot-lock.locked{color:#76520d;background:#fff6dd;border-color:#e4c57c}.active-days small{color:var(--muted);margin-top:6px;font-size:10px;display:block}.assigned-list{gap:6px;display:grid}.assigned-worker{background:#f6f8fc;border-radius:7px;align-items:center;gap:7px;padding:6px;display:flex}.assigned-worker>div{flex:1;min-width:0}.assigned-worker strong,.assigned-worker small{text-overflow:ellipsis;white-space:nowrap;display:block;overflow:hidden}.assigned-worker strong{font-size:11px}.assigned-worker small{color:var(--muted);font-size:9px}.assigned-worker button{color:#9da6b6;background:0 0;border:0;font-size:17px}.avatar{color:#2555a4;background:#dce8ff;border-radius:7px;flex:none;place-items:center;width:25px;height:25px;font-size:11px;font-weight:850;display:grid}.avatar.large{border-radius:13px;width:48px;height:48px;font-size:20px}.shift-block select{color:#66748c;background:#fff;border:1px dashed #bfc9d9;border-radius:7px;width:100%;margin-top:7px;padding:6px;font-size:10px}.full-badge{color:#238a78;text-align:center;margin-top:7px;font-size:9px;font-weight:750;display:block}.empty-day{color:var(--muted);text-align:center;padding:28px 8px;font-size:12px}.management-grid{grid-template-columns:repeat(3,1fr);gap:18px;display:grid}.worker-card{padding:21px}.worker-card-header{border-bottom:1px solid var(--border);align-items:center;gap:12px;padding-bottom:17px;display:flex}.worker-card-header>div:nth-child(2){flex:1}.worker-card h3{margin-bottom:3px;font-size:17px}.worker-card p{color:var(--muted);margin:0;font-size:12px}.card-actions{gap:6px;display:flex}.card-actions button{border:1px solid var(--border);color:#59667d;background:#fff;border-radius:6px;padding:6px 9px;font-size:11px}.card-actions button.danger{color:var(--danger)}.worker-card dl{grid-template-columns:1fr 1fr;gap:10px;margin:16px 0;display:grid}.worker-card dl div{background:#f7f9fc;border-radius:8px;padding:10px}.worker-card dt{color:var(--muted);font-size:10px}.worker-card dd{margin:3px 0 0;font-size:12px;font-weight:700}.availability-row{margin-top:13px}.availability-row>span{color:var(--muted);margin-bottom:6px;font-size:10px;font-weight:700;display:block}.availability-row>div{flex-wrap:wrap;gap:5px;display:flex}.availability-row b,.active-days b{border-radius:5px;padding:4px 7px;font-size:9px}.availability-row b.preferred{color:#167965;background:#e1f7f1}.availability-row b.excluded{color:#b63a3a;background:#fdecec}.availability-row i{color:#a0a9b8;font-size:11px;font-style:normal}.shift-settings-list{gap:12px;display:grid}.shift-setting-card{grid-template-columns:auto 1.2fr 1fr 1fr 2fr auto;align-items:center;gap:24px;padding:20px 22px;display:grid}.shift-index{width:38px;height:38px;color:var(--blue);background:#eaf1ff;border-radius:10px;place-items:center;font-weight:850;display:grid}.shift-setting-card span,.shift-setting-card strong{display:block}.shift-setting-card span{color:var(--muted);margin-bottom:5px;font-size:10px}.shift-setting-card strong{font-size:13px}.active-days>div{flex-wrap:wrap;gap:4px;display:flex}.active-days b{color:#59667c;background:#eef2f8}.modal-backdrop{z-index:20;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0c152794;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.modal{background:#fff;border-radius:15px;width:min(650px,100%);max-height:calc(100vh - 40px);padding:26px;overflow-y:auto;box-shadow:0 25px 70px #030b1b47}.modal.compact{width:min(560px,100%)}.modal-header{justify-content:space-between;align-items:flex-start;margin-bottom:22px;display:flex}.modal-header span{color:var(--blue);font-size:11px;font-weight:800}.modal-header h2{margin:4px 0 0;font-size:25px}.modal-header>button{color:#677287;background:#f0f3f8;border:0;border-radius:50%;width:33px;height:33px;font-size:22px}.form-grid{grid-template-columns:1fr 1fr;gap:14px;display:grid}.form-grid label span{color:#56637a;margin-bottom:6px;font-size:11px;font-weight:750;display:block}.form-grid input,.form-grid select{border:1px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:8px;outline:0;padding:11px 12px}.form-grid input:focus,.form-grid select:focus{border-color:var(--blue);box-shadow:0 0 0 3px #2f6feb1a}.full-width{grid-column:1/-1}.eligible-workers{border:1px solid var(--border);border-radius:8px;margin:20px 0 0;padding:14px}.eligible-workers legend{font-size:13px;font-weight:750}.eligible-workers>label>span{margin-bottom:6px;font-size:12px;display:block}.eligible-workers select{border:1px solid var(--border);width:100%;color:var(--text);background:#fff;border-radius:7px;padding:10px}.eligible-worker-list{gap:8px;max-height:200px;margin-top:12px;display:grid;overflow-y:auto}.eligible-worker-list label{align-items:center;gap:8px;font-size:13px;display:flex}.eligible-worker-list input{accent-color:var(--blue)}.eligible-workers p{margin:10px 0 0;font-size:11px;line-height:1.6}.day-picker{border:0;margin:22px 0 0;padding:0}.day-picker legend{color:#455168;margin-bottom:10px;font-size:12px;font-weight:800}.day-picker legend small{color:var(--muted);margin-top:2px;font-size:10px;font-weight:400;display:block}.day-picker>div{grid-template-columns:repeat(7,1fr);gap:6px;display:grid}.day-picker button{border:1px solid var(--border);color:#5e6a80;background:#fff;border-radius:7px;min-height:38px;font-size:10px;font-weight:700}.day-picker button.preferred{color:#147461;background:#e3f7f2;border-color:#5fc3ad}.day-picker button.excluded{color:#a33;background:#fdefef;border-color:#ed9999}.day-picker button.active{color:#2356ad;background:#eaf1ff;border-color:#759fee}.modal-actions{border-top:1px solid var(--border);justify-content:flex-end;gap:9px;margin-top:25px;padding-top:18px;display:flex}.validation-message{color:var(--danger);margin:8px 0 0;font-size:11px}.toast{z-index:30;color:#fff;box-shadow:var(--shadow);background:#183c34;border-radius:9px;padding:12px 20px;font-size:13px;font-weight:700;position:fixed;bottom:24px;left:50%;transform:translate(-50%)}.toast.error{background:#7d2727}@media (width<=1050px){.topbar{gap:18px}.header-actions{display:none}.management-grid{grid-template-columns:repeat(2,1fr)}.shift-setting-card{grid-template-columns:auto 1fr 1fr}.active-days{grid-column:2/-1}}@media (width<=720px){.topbar{flex-wrap:wrap;height:auto;padding:13px 18px 0}.topbar nav{order:2;width:100%;height:48px;overflow-x:auto}.topbar nav button{flex:1;min-width:max-content}main{width:min(100% - 28px,1540px);padding-top:28px}.page-heading{flex-direction:column;align-items:stretch}.heading-actions,.page-heading>.button{align-self:stretch}.heading-actions .button,.page-heading>.button{flex:1}.stats{grid-template-columns:1fr}.week-controls{flex-wrap:wrap}.week-controls>div{min-width:200px}.week-controls input{order:2;width:100%}.management-grid{grid-template-columns:1fr}.shift-setting-card{grid-template-columns:auto 1fr}.shift-setting-card>div:not(.shift-index):not(.card-actions){grid-column:2}.shift-setting-card .card-actions{grid-column:1/-1;justify-content:flex-end}.form-grid{grid-template-columns:1fr}.full-width{grid-column:auto}.day-picker>div{grid-template-columns:repeat(4,1fr)}}
