:root{--navy:#102f43;--navy2:#1c455b;--teal:#087b70;--mint:#e2f3ed;--bg:#f4f7f7;--ink:#192e3a;--muted:#5d717b;--line:#dce5e8;--orange:#91501d;--orangebg:#fff0dd;--red:#a73742;--redbg:#ffeded;--blue:#3e5c94;--bluebg:#eaf0fc;--shadow:0 6px 22px #102f4306}
*{box-sizing:border-box}body{margin:0;color:var(--ink);background:var(--bg);font:14px/1.5 -apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}button,input,select,textarea{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}button,a{touch-action:manipulation}button{cursor:pointer}button:disabled{opacity:.45;cursor:not-allowed}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid #229c8e;outline-offset:3px}a{color:var(--teal)}h1,h2,h3,p{margin-top:0}h1{font-size:30px;letter-spacing:-1.1px;line-height:1.15;margin-bottom:8px}h2{font-size:17px;letter-spacing:-.3px;margin-bottom:4px}h3{font-size:14px;margin-bottom:5px}small,.muted{color:var(--muted)}.brand{font-size:27px;font-weight:850;letter-spacing:-1.3px;color:var(--navy)}.brand b{color:var(--teal)}.initial{padding:18vh 20px;text-align:center}.initial p{margin-top:20px;color:var(--muted)}.eyebrow{text-transform:uppercase;letter-spacing:1.5px;font-size:10px;font-weight:800;color:var(--teal);margin-bottom:10px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:40px;padding:9px 14px;border-radius:9px;background:white;border:1px solid var(--line);font-size:12px;font-weight:750;color:var(--ink);text-decoration:none}.btn:hover{background:#edf4f2}.btn.primary{background:var(--teal);color:#fff;border-color:var(--teal)}.btn.primary:hover{background:#086a62}.btn.danger{color:var(--red);border-color:#edc2c7;background:#fff5f5}.btn.small{min-height:35px;padding:6px 10px;font-size:11px}.btn.icon{width:40px;padding:0;font-size:20px}.actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.row{display:flex;align-items:center;justify-content:space-between;gap:14px}.badge{display:inline-flex;align-items:center;gap:5px;font-size:10px;font-weight:750;padding:4px 8px;border-radius:6px;background:#edf2f4;color:#49616b;white-space:nowrap}.badge.good{background:var(--mint);color:#086356}.badge.warn{background:var(--orangebg);color:var(--orange)}.badge.bad{background:var(--redbg);color:var(--red)}.badge.info{background:var(--bluebg);color:var(--blue)}.sub{font-size:12px;color:var(--muted);margin-bottom:0}.spacer{margin-top:20px}.hidden{display:none!important}.textbtn{border:0;background:none;padding:5px 0;font-size:12px;font-weight:750;color:var(--teal);text-decoration:none}.avatar{display:grid;place-items:center;flex:none;height:35px;width:35px;border-radius:50%;background:#e3eeed;color:var(--navy);font-size:11px;font-weight:800}.avatar.big{height:48px;width:48px;font-size:16px}.empty{padding:40px 22px;text-align:center;color:var(--muted)}.empty strong{display:block;color:var(--ink);font-size:16px;margin-bottom:8px}.card{background:#fff;border:1px solid var(--line);border-radius:13px;box-shadow:var(--shadow);overflow:hidden}.cardhead{padding:17px 20px;border-bottom:1px solid var(--line)}.cardhead .sub{font-size:11px}.cardbody{padding:20px}.notice{border:1px solid #c4ddd7;background:#edf8f3;color:#285c50;padding:12px 16px;border-radius:9px;font-size:12px;line-height:1.6}.notice.warning{border-color:#ecd4b0;background:#fff8ec;color:#7b501d}.notice.error{border-color:#efbdc4;background:var(--redbg);color:var(--red)}.metrics{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:22px 0}.metric{border:1px solid var(--line);border-radius:12px;background:#fff;padding:16px 18px}.metric strong{font-size:26px;font-weight:780;line-height:1.1;display:block;letter-spacing:-1px}.metric span{display:block;font-size:11px;color:var(--muted);margin-top:7px}.metric .green{color:var(--teal)}.metric .orange{color:var(--orange)}.gridtwo{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:18px}.shell{display:grid;grid-template-columns:232px minmax(0,1fr);min-height:100vh}.sidebar{background:var(--navy);color:#dbe8ed;display:flex;flex-direction:column;padding:28px 16px;position:sticky;top:0;height:100vh}.sidebar .brand{padding:0 12px 3px;color:white}.sidebar .brand b{color:#89d9c9}.sidebar .brandnote{color:#a0bac6;font-size:10px;letter-spacing:1.8px;text-transform:uppercase;margin:0 12px 35px}.navlist{display:grid;gap:6px}.navitem{display:flex;align-items:center;gap:12px;width:100%;border:0;border-radius:9px;background:transparent;padding:12px;color:#c1d2db;text-align:left;font-size:12px;font-weight:650}.navitem:hover{background:#24495e}.navitem.active{background:#265469;color:white}.navitem .symbol{font-size:18px;width:22px;color:#99dcce}.count{margin-left:auto;background:#e8f6f0;color:#176258;padding:1px 6px;border-radius:5px;font-size:10px;font-weight:800}.sidebottom{margin-top:auto;padding:22px 12px 0;border-top:1px solid #335268;font-size:11px;color:#adc5cf}.sidebottom strong{color:#fff;display:block;margin:4px 0 9px}.main{padding:23px 32px 38px;min-width:0;max-width:1720px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:34px;gap:10px}.topbar .crumb{font-size:11px;color:var(--muted)}.profile{display:flex;align-items:center;gap:10px;font-size:12px;font-weight:700}.profile .role{display:block;font-size:10px;color:var(--muted);font-weight:500}.header{display:flex;justify-content:space-between;align-items:flex-end;gap:12px}.weeknav{display:flex;align-items:center;gap:10px}.weeknav strong{font-size:12px;min-width:142px;text-align:center}.schedulewrap{overflow:auto;max-height:70vh}.schedule{width:100%;border-collapse:separate;border-spacing:0;min-width:1000px;table-layout:fixed}.schedule th,.schedule td{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}.schedule th:last-child,.schedule td:last-child{border-right:0}.schedule tr:last-child td{border-bottom:0}.schedule thead th{background:#f8fafa;padding:12px 8px;text-align:center;font-size:11px;position:sticky;top:0;z-index:2}.schedule thead th:first-child{width:198px;text-align:left;padding-left:16px;left:0;z-index:4}.schedule th small{display:block;font-weight:500;font-size:10px;margin-top:2px}.schedule .person{position:sticky;left:0;z-index:1;background:white;padding:12px 14px}.person-inner{display:flex;align-items:center;gap:9px}.person-inner strong{font-size:11px;display:block}.person-inner small{font-size:10px;display:block}.schedule td:not(.person){padding:5px;height:74px}.shiftbtn{width:100%;border:1px solid transparent;border-radius:7px;text-align:left;padding:9px 9px;min-height:60px;background:#edf1f2;color:var(--muted);position:relative;font-weight:750;font-size:11px}.shiftbtn:hover{border-color:currentColor;filter:brightness(.98)}.shiftbtn small{font-size:9px;color:inherit;display:block;margin-top:4px;font-variant-numeric:tabular-nums;font-weight:500}.shift-F{background:#e0f2eb;color:#126957}.shift-S{background:#fff0dd;color:#91501d}.shift-N{background:#e7edf9;color:#445e99}.shift-U{background:#e8e8f7;color:#6251a2}.shift-A{background:#fbe7e9;color:#a73742}.shift-O{background:#f1f4f5;color:#6d808a}.changed::after{content:'';position:absolute;right:6px;top:6px;height:6px;width:6px;border-radius:50%;background:currentColor;box-shadow:0 0 0 2px #fff9}.legend{display:flex;gap:17px;align-items:center;flex-wrap:wrap;padding:13px 18px;background:#fff;font-size:10px;color:var(--muted);border-top:1px solid var(--line)}.legend i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--teal);margin-right:5px}.listrow{display:flex;align-items:flex-start;gap:12px;padding:15px 20px;border-bottom:1px solid var(--line)}.listrow:last-child{border:0}.listrow .grow{flex:1;min-width:0}.listrow p{margin:5px 0 0;font-size:12px;color:var(--muted)}.listrow strong{font-size:12px}.dot{width:8px;height:8px;flex:none;border-radius:50%;margin-top:5px;background:var(--teal)}.dot.warn{background:#c68a3a}.dot.bad{background:var(--red)}.request{padding:20px;border-bottom:1px solid var(--line)}.request:last-child{border:0}.request .row{align-items:flex-start}.request h3{font-size:14px}.request p{font-size:12px;color:var(--muted);margin:7px 0}.request .requestnote{background:#f6f8f9;border-radius:7px;padding:10px 12px;color:var(--ink);white-space:pre-wrap;overflow-wrap:anywhere}.request .actions{margin-top:12px}.tablewrap{overflow:auto}.teamtable{width:100%;min-width:690px;border-collapse:collapse;font-size:12px}.teamtable th{text-align:left;background:#f8fafa;padding:13px 18px;font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.5px}.teamtable td{padding:14px 18px;border-top:1px solid var(--line)}.filters{display:flex;gap:8px;margin:21px 0;flex-wrap:wrap}.filter{border:1px solid var(--line);background:white;color:var(--muted);border-radius:8px;padding:9px 13px;font-size:11px;font-weight:750}.filter.active{background:var(--mint);border-color:#c3e1d7;color:var(--teal)}.auditrow{padding:14px 20px;border-bottom:1px solid var(--line);font-size:12px}.auditrow:last-child{border:0}.auditrow small{display:block;margin-top:4px}.loginpage{min-height:100vh;display:grid;grid-template-columns:1fr 1fr}.loginintro{padding:55px max(32px,8vw);background:var(--navy);color:white;display:flex;flex-direction:column;justify-content:center}.loginintro .brand{color:white;font-size:34px}.loginintro .brand b{color:#91decf}.loginintro .eyebrow{color:#9fd8cb;margin-top:70px}.loginintro h1{font-size:clamp(32px,4.3vw,56px);line-height:1.12;letter-spacing:-2px;max-width:450px;margin:8px 0 23px}.loginintro p{color:#bfd0d7;font-size:15px;line-height:1.75;max-width:400px}.loginsteps{margin-top:35px;display:grid;gap:17px;font-size:12px;color:#d6e8e8}.loginsteps span{display:inline-grid;place-items:center;width:27px;height:27px;border:1px solid #517668;border-radius:50%;color:#98ddca;margin-right:12px}.loginpanel{padding:40px;display:grid;place-items:center}.loginbox{width:100%;max-width:375px}.loginbox h2{font-size:25px}.loginbox .sub{margin:10px 0 28px;font-size:13px}.loginbox .btn{width:100%;margin-top:9px;min-height:46px}.loginbox .notice{margin-top:24px}.form{display:grid;gap:16px}.form label{display:grid;gap:6px;font-size:12px;font-weight:700}.form input,.form select,.form textarea{width:100%;padding:11px 12px;border:1px solid #cad8dd;border-radius:8px;background:white;color:var(--ink);min-height:43px}.form input:focus,.form textarea:focus,.form select:focus{border-color:var(--teal)}.form textarea{min-height:88px;resize:vertical}.form .two{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form .check{display:flex;align-items:flex-start;font-weight:500;line-height:1.5}.form .check input{width:17px;min-height:17px;margin:2px 5px 0 0;accent-color:var(--teal)}.form .hint{font-size:11px;color:var(--muted);font-weight:400}.errorline{font-size:12px;color:var(--red);margin:0;min-height:0}.errorline:empty{display:none}dialog{border:0;border-radius:16px;padding:0;width:min(500px,calc(100% - 30px));box-shadow:0 24px 80px #0b2c4755;color:var(--ink);max-height:90vh;overflow:auto}dialog::backdrop{background:#08283f88;backdrop-filter:blur(2px)}.modal{padding:25px}.modal .row{margin-bottom:16px}.modal h2{font-size:21px}.modal .actions{margin-top:24px;justify-content:flex-end}.modal .notice{margin-bottom:18px}.modal .form .actions{margin-top:4px}.toast{position:fixed;bottom:28px;left:50%;transform:translate(-50%,15px);background:var(--navy);color:#fff;padding:13px 20px;border-radius:10px;box-shadow:0 8px 25px #102f4340;max-width:min(600px,90%);z-index:100;opacity:0;pointer-events:none;transition:.2s;font-size:12px}.toast.show{opacity:1;transform:translate(-50%,0)}.toast.error{background:#8f2733}.mobilepage{width:min(650px,100%);margin:0 auto;min-height:100vh;padding:24px 22px 108px}.mobiletop{margin-bottom:25px}.mobiletop .brand{font-size:24px}.greeting{margin:20px 0;display:flex;align-items:center;gap:12px}.greeting h1{font-size:25px;letter-spacing:-.7px;margin:0 0 4px}.greeting .sub{font-size:11px}.hero{background:linear-gradient(125deg,#103348,#20566b);color:#fff;padding:22px;border-radius:15px}.hero .eyebrow{color:#a5e2d2}.hero h2{font-size:24px;color:white;margin:7px 0}.hero p{color:#c7e3e9;font-size:12px;margin:0}.hero .row{margin-top:18px;padding-top:17px;border-top:1px solid #ffffff2b}.hero .badge{background:#ffffff20;color:#fff}.quick{display:grid;grid-template-columns:repeat(3,1fr);gap:9px;margin:17px 0 25px}.quick button{border:1px solid var(--line);background:white;padding:14px 5px;border-radius:10px;font-size:11px;color:var(--ink);font-weight:750}.quick span{display:block;font-size:21px;color:var(--teal);margin-bottom:6px}.sectiontitle{margin:25px 0 12px}.sectiontitle h2{font-size:16px}.dayrow{display:flex;align-items:center;gap:16px;border-bottom:1px solid var(--line);padding:15px 18px}.dayrow:last-child{border:0}.daydate{min-width:34px;text-align:center;font-size:10px;color:var(--muted)}.daydate strong{display:block;color:var(--ink);font-size:18px}.dayinfo{flex:1;font-size:12px;font-weight:750}.dayinfo small{display:block;font-size:11px;font-weight:450;margin-top:3px}.dayrow.today{background:#f1faf6}.mobilepage .metrics{grid-template-columns:1fr 1fr;gap:10px}.bottomnav{position:fixed;bottom:0;left:50%;transform:translateX(-50%);width:min(650px,100%);display:flex;background:#fff;border-top:1px solid var(--line);padding:8px 9px calc(8px + env(safe-area-inset-bottom));z-index:5}.bottomnav button{flex:1;border:0;background:none;color:var(--muted);font-size:10px;font-weight:700;min-height:47px}.bottomnav span{display:block;font-size:19px;margin-bottom:2px}.bottomnav button.active{color:var(--teal)}.mobilepage .request{padding:17px}.mobilepage .weeknav{margin:16px 0}.mobilepage .weeknav strong{flex:1}.mobilepage .notice{margin:17px 0}.statline{display:flex;justify-content:space-between;padding:14px 0;border-bottom:1px solid var(--line);font-size:12px}.statline:last-child{border:0}.printonly{display:none}
@media(min-width:1700px){.main{padding-left:45px;padding-right:45px}.schedule td:not(.person){height:84px}.shiftbtn{min-height:65px}}
@media(max-width:1120px){.shell{grid-template-columns:195px minmax(0,1fr)}.main{padding:20px}.sidebar{padding:25px 10px}.header{align-items:flex-start;flex-direction:column}.gridtwo{grid-template-columns:1fr}.metrics{gap:8px}.metric{padding:14px}.metric strong{font-size:24px}}
@media(max-width:750px){.loginpage{grid-template-columns:1fr}.loginintro{padding:30px}.loginintro .eyebrow{margin-top:30px}.loginintro h1{font-size:33px;letter-spacing:-1px}.loginintro p{margin-bottom:0}.loginsteps{display:none}.loginpanel{padding:30px 24px 45px}.shell{display:block}.sidebar{position:relative;height:auto;padding:17px}.sidebar .brand{padding-left:4px}.sidebar .brandnote,.sidebottom{display:none}.navlist{display:flex;overflow:auto;gap:4px;margin-top:15px}.navitem{padding:10px;white-space:nowrap;width:auto}.navitem .symbol{display:none}.main{padding:20px 14px 35px}.topbar{margin-bottom:23px}.topbar .crumb{font-size:10px}.profile .role{display:none}.profile{font-size:11px}.header h1{font-size:26px}.metrics{grid-template-columns:1fr 1fr}.cardhead{padding:15px}.cardhead.row{flex-wrap:wrap}.weeknav strong{min-width:130px}.cardbody{padding:16px}.request .row{gap:8px}.mobilepage{padding:20px 16px 108px}.mobilepage .row.mobiletop{gap:5px}.mobiletop .badge{font-size:9px}.btn{min-height:43px}.schedulewrap{max-height:65vh}.loginintro .brand{font-size:27px}}
/* Simple workflow: two primary destinations, readable controls, secondary tools on demand. */
body{font-size:16px}
h1{font-size:30px;letter-spacing:-.8px}h2{font-size:19px}h3{font-size:16px}
.sub,.hint{font-size:14px;color:var(--muted)}
.btn,.btn.small{min-height:44px;font-size:14px;padding:10px 15px}
.btn.icon{width:44px;min-width:44px;padding:0;font-size:24px}
.badge{font-size:12px}.textbtn{font-size:14px;min-height:44px;padding:10px 0}
.shell{grid-template-columns:205px minmax(0,1fr)}
.sidebar{padding:28px 14px}.sidebar .brandnote{margin-bottom:40px}
.navitem{min-height:48px;font-size:16px;padding:12px;text-decoration:none}
.count{font-size:12px}.sidebottom{font-size:12px}
.moremenu{margin-top:28px;color:#c1d2db}
summary{cursor:pointer;font-size:14px;min-height:44px;padding:12px 0;font-weight:650}
summary:focus-visible{outline:3px solid #229c8e;outline-offset:3px;border-radius:4px}
.moremenu summary{font-size:13px;padding:12px}.moremenu .navitem{font-size:13px}
.main{padding:24px 28px 38px}.topbar{margin-bottom:30px}
.topbar .crumb{font-size:13px}.profile{font-size:14px}.profile .role{font-size:12px}
.header{align-items:center}.header .eyebrow{display:none}
.weeknav{gap:8px}.weeknav strong{font-size:15px;min-width:160px}
.releasebar{margin:24px 0 18px;padding:18px 20px;border:1px solid #c9ded7;background:#edf7f2;border-radius:12px}
.releasebar strong{display:block;font-size:15px;margin-bottom:3px}.releasebar .btn{flex-shrink:0}
.schedule{min-width:1090px}.schedulewrap{max-height:none}
.schedule thead th{font-size:14px;padding:12px 8px}.schedule thead th:first-child{width:190px}
.schedule th small{font-size:13px}.schedule .person{text-align:left;font-weight:400}
.person-inner strong{font-size:14px}.person-inner small{font-size:12px;margin-top:3px}
.schedule td:not(.person){height:76px;padding:6px}
.shiftbtn{font-size:14px;padding:9px;min-height:62px}.shiftbtn small{font-size:12px}
.legend{font-size:12px;padding:14px 18px}.changed::after{width:7px;height:7px}
.planhint{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:12px 2px;font-size:14px;color:var(--muted)}
.planhint.blocking{color:var(--red)}
.listrow strong,.listrow p,.notice,.request p,.auditrow,.form label,.errorline{font-size:14px}
.request h3{font-size:17px}.request .actions{gap:10px;margin-top:18px}
.request .approvalnote{color:var(--teal);font-weight:650}
.filter{font-size:14px;min-height:44px}.filters{margin:24px 0 16px}
.teamtable{font-size:14px}.teamtable th{font-size:12px}
.form input,.form select,.form textarea{font-size:16px;min-height:46px}
.form .hint{font-size:13px;margin-bottom:0}.form .check{gap:6px;min-height:32px}
.form .check input{width:21px;min-height:21px;margin:1px 4px 0 0;flex-shrink:0}
.form .actions>.btn{flex:1}.modal{padding:24px}.modal h2{font-size:23px}
.optionalnote>label{margin-top:6px}.warningdetails{margin-top:8px}
.warningdetails p{padding-top:10px;border-top:1px solid #ecd4b0;margin-bottom:0}
.requestchoices{display:grid;gap:12px}.requestchoices .btn{min-height:60px;justify-content:space-between;font-size:16px}
.requestchoices .btn span{font-size:23px;color:var(--teal)}
.loginpage{display:grid;grid-template-columns:1fr;background:var(--bg)}
.loginpanel{padding:40px 20px}.loginbox{max-width:420px;padding:32px;background:white;border:1px solid var(--line);border-radius:16px}
.loginbox .brand{margin-bottom:34px}.loginbox h1{font-size:29px}.loginbox .sub{font-size:15px;margin:10px 0 28px}
.loginbox .btn{min-height:48px}.loginbox .hint{font-size:13px}.demolabel{font-size:12px;color:var(--muted);margin:26px 0 0}
.formfield{display:grid;gap:6px}.passwordwrap{position:relative}
.form .passwordwrap input{min-height:48px;padding-right:56px}
.password-toggle{position:absolute;right:2px;top:2px;display:grid;place-items:center;width:44px;height:44px;border:0;border-radius:6px;background:transparent;color:var(--teal)}
.password-toggle:hover{background:var(--mint)}.password-toggle svg{width:24px;height:24px;pointer-events:none}
.password-toggle .eye-slash{display:none}.password-toggle[data-visible="true"] .eye-slash{display:block}
.mobilepage{width:min(600px,100%);padding:24px 22px 110px}.mobiletop{margin-bottom:24px}
.mobiletop .brand{font-size:26px}.greeting{margin:0 0 22px}.greeting h1{font-size:28px}.greeting .sub{font-size:14px}
.employee-action{margin-bottom:26px}.employee-action>.btn{width:100%;min-height:48px;font-size:16px}
.employee-action .sub{text-align:center;font-size:12px;margin-top:9px}
.mobilepage .weeknav{margin:0 0 18px;gap:6px}.mobilepage .weeknav strong{min-width:0;font-size:14px;white-space:nowrap}
.mobilepage .weeknav .btn.small{padding:10px;font-size:13px}
.nextduty{padding:16px 18px;background:#e6f2ec;border:1px solid #c9ded7;border-radius:12px;margin-bottom:16px}
.nextduty .sub{font-size:12px;color:#356050}.nextduty h2{font-size:18px;color:#124e40;margin:5px 0 4px;line-height:1.45}
.nextduty p{font-size:14px;color:#356050;margin:0}
.dayrow{padding:12px 17px;gap:20px;min-height:74px}.daydate{font-size:13px;min-width:34px}.daydate strong{font-size:20px}
.dayinfo{font-size:16px}.dayinfo small{font-size:14px;margin-top:2px}
.bottomnav{width:min(600px,100%);gap:8px;padding:8px 12px calc(8px + env(safe-area-inset-bottom))}
.bottomnav button{font-size:15px;min-height:48px;border-radius:9px}.bottomnav button.active{background:var(--mint);color:#075e54}
.bottomnav .count{display:inline-block;margin-left:6px;font-size:12px}.accountdetails{margin-top:12px}
.accountdetails h1{font-size:19px}.accountdetails .eyebrow{display:none}.accountdetails .notice{font-size:13px}
.statline{font-size:13px;gap:20px}.statline strong{text-align:right}
.toast{font-size:14px;bottom:90px}
.block{display:block}.periodcontrols{margin:22px 0 18px}.periodcontrols .filters{margin:0 0 14px}
.periodnav{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.periodnav>strong{font-size:18px;min-width:200px;text-align:center}
.monthjump{margin-left:auto;display:flex;gap:8px;align-items:center;font-size:13px;color:var(--muted)}
.monthjump input{border:1px solid var(--line);border-radius:8px;background:white;padding:9px;min-height:44px;font-size:14px;color:var(--ink)}
.planningtools{background:white;border:1px solid var(--line);border-radius:12px;padding:14px 16px}
.shiftpalette{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin-bottom:12px}.shiftpalette .btn{font-size:13px;padding:9px 12px}
.shiftpalette .selected,.cellchoices .selected{box-shadow:0 0 0 2px var(--navy);border-color:var(--navy)}
.planningtools .row{align-items:center}.planningtools .row .btn{flex:none}
.autoplan{border-color:#89bcae;background:#f4faf7}.autoplan h2{font-size:21px;margin-bottom:7px}.autoplan .row{align-items:center;gap:20px}.autoplan .row>.btn{flex:none;min-width:150px}
.manualtools{margin-top:14px}.manualtools summary{cursor:pointer;min-height:32px;font-weight:650}.manualtools summary .sub{font-weight:400}.manualtools:not([open]){padding-block:10px}
.shift-WF{background:#e9e0f9;color:#563c7d}.absenceboard .roster-cell:disabled{opacity:1;cursor:default}.absenceboard .roster-cell:empty{background:transparent}.absenceboard .roster-cell:empty:hover{background:#d9eee5}
.suggestion-summary{margin:18px 0;max-height:35vh;overflow:auto}.suggestion-summary caption{text-align:left;font-weight:650;padding:10px 0}.suggestion-summary .teamtable{min-width:570px}.suggestion-summary th,.suggestion-summary td{font-size:12px}
dialog:has(.suggestion-summary){width:min(880px,calc(100% - 30px))}.suggestion-summary .teamtable tbody th{font-weight:600;text-transform:none;background:white}.suggestion-summary .teamtable th,.suggestion-summary .teamtable td{padding:10px 12px}.suggestion-summary{max-height:42vh}
@media(max-width:750px){.autoplan .row{align-items:stretch;flex-direction:column}.autoplan .actions>.btn{flex:1 1 45%}.autoplan h2{font-size:19px}.manualtools summary .sub{display:block;margin-top:4px}.employee-action .actions>.btn{flex:1 1 45%}}
.monthboard{margin-top:20px}.monthboard .cardhead h2{text-transform:capitalize;font-size:20px}
.planner-scroll{overflow:auto;max-height:75vh}.roster{border-collapse:separate;border-spacing:0;width:100%;table-layout:fixed;min-width:1164px}
.roster th,.roster td{border-right:1px solid var(--line);border-bottom:1px solid var(--line)}
.roster th:last-child,.roster td:last-child{border-right:0}.roster tbody tr:last-child>*{border-bottom:0}
.roster thead th{font-size:12px;text-align:center;background:#f8faf9;padding:8px 0;position:sticky;top:0;z-index:2}
.roster thead th span,.roster thead th strong{display:block}.roster thead th strong{font-size:14px}
.roster .namecol{width:172px;position:sticky;left:0;background:white;z-index:1;text-align:left;padding:10px 12px}
.roster thead .namecol{z-index:3;background:#f8faf9}.roster .namecol strong{font-size:13px;display:block}.roster .namecol small{font-size:10px;display:block;margin-top:2px;font-weight:400}
.roster td{padding:3px 2px;height:51px}.roster .weekend{background:#eef3f5}.roster .currentday{background:#d9eee5;color:#075f51}
.roster-cell{border:1px solid transparent;border-radius:5px;width:100%;min-height:39px;font-size:14px;font-weight:750;padding:6px 0;position:relative}
.roster-cell:hover{border-color:var(--navy);filter:brightness(.96)}.roster-cell[draggable="true"]{cursor:grab}
.roster-cell:active{cursor:grabbing}.roster-cell.changed::after{width:4px;height:4px;right:2px;top:2px}
.roster-cell small{display:block;color:inherit;font-size:11px;margin-top:3px;font-weight:400}
.roster-cell.unplanned{background:white;border:1px dashed #ccd9dc;color:#687f8a;font-weight:500}
.roster.weekly{min-width:1040px}.roster.weekly td{padding:5px}.roster.weekly .roster-cell{padding:9px;min-height:60px;font-size:14px}
.cellchoices{display:grid;grid-template-columns:1fr 1fr;gap:12px}.cellchoices .btn{min-height:68px;display:block;font-size:16px}
.cellchoices small{display:block;color:inherit;font-size:12px;font-weight:400;margin-top:4px}
.stationcards{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:16px;margin-top:24px}
.main .navitem{font-size:14px}.sidebar .navitem{font-size:14px}.sidebar .brandnote{margin-bottom:24px}.sidebar .moremenu{margin-top:20px}
@media(pointer:coarse){.roster.compact{min-width:1536px}.roster-cell{min-height:44px}}
@media(max-width:750px){.periodnav>strong{min-width:0;font-size:16px;flex:1}.monthjump{width:100%;margin:4px 0 0}.monthjump input{flex:1}.periodcontrols .filters .btn{flex:1}.planningtools .row{flex-wrap:wrap}.monthboard .cardhead{align-items:flex-start;flex-direction:column;gap:4px}.cellchoices .btn{font-size:15px}.sidebar .navlist{flex-wrap:wrap;overflow:visible}.sidebar .navitem{flex:1 0 30%;font-size:12px;padding:9px}.roster .namecol{width:145px}}
@media(max-width:1120px){.main{padding:22px}.header{align-items:flex-start;flex-direction:column;gap:20px}}
@media(max-width:750px){
 .shell{display:block}.sidebar{height:auto;position:relative;padding:16px}.sidebar .brand{font-size:25px}
 .navlist{gap:8px;margin-top:14px}.navitem{flex:1;justify-content:center;min-height:46px}.navitem .count{margin-left:4px}
 .moremenu{margin-top:6px}.moremenu summary{min-height:40px;padding:9px 4px}.moremenu nav{display:grid;grid-template-columns:1fr 1fr;gap:4px}
 .moremenu .navitem{justify-content:flex-start}.sidebottom{display:none}.main{padding:20px 16px 32px}
 .topbar{margin-bottom:24px}.topbar .crumb{display:none}.profile{width:100%;justify-content:space-between;font-size:14px}
 .header{gap:18px}.header .weeknav{width:100%;gap:6px}.weeknav strong{min-width:0;flex:1;font-size:14px}
 .weeknav .btn.small{padding:10px;font-size:13px}.releasebar{align-items:stretch;flex-direction:column;padding:16px;margin-top:20px}
 .releasebar .btn{width:100%}.releasebar .sub{font-size:13px}.planhint{align-items:flex-start;flex-direction:column;gap:0}
 .mobilepage{padding:22px 16px 110px}.mobilepage .request .row{flex-wrap:wrap}.mobilepage .request .actions>.btn{flex:1}
 .modal{padding:20px}.modal h2{font-size:21px}.modal .actions{gap:8px}.modal .actions .btn{padding:10px 12px}
 .loginbox{padding:28px 22px}.loginbox .brand{margin-bottom:28px}.loginpanel{padding:24px 16px}
}
@media print{.sidebar,.topbar,.actions,.weeknav button,.bottomnav,.btn,dialog,.toast,.releasebar,.planhint,.accountdetails{display:none!important}.shell{display:block}.main{padding:0}.schedulewrap{overflow:visible;max-height:none}.schedule{min-width:0;font-size:8px}.schedule th:first-child{width:140px}.shiftbtn{font-size:9px;padding:5px;min-height:45px}.metrics{margin:10px 0}.card{box-shadow:none}.gridtwo{display:none}}
