:root{font-family:Inter,ui-sans-serif,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif;color:#172b3b;background:#f3f6f8;font-synthesis:none}*{box-sizing:border-box}body{margin:0;min-width:320px}button,input,select{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible,select:focus-visible{outline:3px solid #33bfae;outline-offset:2px}#app{display:flex;min-height:100vh}.sidebar{width:238px;flex:none;background:#102839;color:#d8e6ec;padding:26px 17px;display:flex;flex-direction:column;min-height:100vh}.brand{display:flex;align-items:center;gap:11px;font-size:24px;font-weight:800;letter-spacing:-.06em;color:#fff;padding:2px 10px}.brand-mark{display:grid;place-items:center;background:#3ccbb5;color:#102839;border-radius:9px;width:34px;height:34px;font-size:20px;letter-spacing:-.08em}.brand-dot{color:#43d7c0;margin-left:-10px}.workspace-tag{color:#728f9e;font-size:11px;letter-spacing:.16em;font-weight:800;padding:42px 13px 25px}.workspace-tag strong{display:block;letter-spacing:0;font-size:14px;color:#e6f1f4;margin-top:8px}.sidebar nav{display:grid;gap:5px}.nav-item{border:0;background:transparent;color:#a9c0cc;text-align:left;border-radius:9px;padding:13px 14px;font-size:14px;font-weight:650;display:flex;align-items:center;gap:13px}.nav-item:first-letter{font-size:19px}.nav-item:hover,.nav-item.active{background:#204154;color:#fff}.nav-item.active{box-shadow:inset 3px 0 #43d7c0}.sidebar-bottom{margin-top:auto;padding:20px 13px 4px;border-top:1px solid #2d4959}.private-badge{font-weight:750;font-size:13px;color:#bcece4}.sidebar-bottom p{color:#88a2ae;font-size:12px;line-height:1.5;margin:8px 0 16px}.reset-link{border:0;background:none;color:#bdd0d7;padding:0;text-decoration:underline;text-underline-offset:3px;font-size:12px}.main{min-width:0;flex:1}.topbar{height:64px;border-bottom:1px solid #e1e8ec;background:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 31px;color:#80909b;font-size:11px;letter-spacing:.11em;font-weight:800}.topbar span:last-child{font-size:12px;letter-spacing:0;font-weight:600;color:#687f89}.save-dot{display:inline-block;width:7px;height:7px;background:#37b69e;border-radius:50%;margin-right:6px}.main-inner{max-width:1800px;margin:auto;padding:29px 31px 55px}.page-heading{display:flex;justify-content:space-between;gap:20px;align-items:center;margin-bottom:25px}.eyebrow{font-size:11px;color:#269c91;letter-spacing:.16em;font-weight:800;margin-bottom:8px}.page-heading h1{font-size:32px;line-height:1.15;letter-spacing:-.045em;margin:0;color:#172e3d}.page-heading p{color:#70818c;font-size:14px;margin:7px 0 0}.heading-actions{display:flex;align-items:center;gap:10px}.date-label{display:flex;align-items:center;gap:8px;background:#fff;border:1px solid #dce6e9;border-radius:9px;padding:7px 11px;color:#607380;font-size:13px;font-weight:650;white-space:nowrap}.date-label input{border:0;color:#1b3544;background:none;max-width:145px;font-size:13px}.btn{border:1px solid #d9e3e6;border-radius:9px;padding:11px 15px;min-height:39px;font-size:13px;font-weight:750;white-space:nowrap}.btn.primary{color:#fff;background:#166e70;border-color:#166e70;box-shadow:0 4px 12px #176b6c22}.btn.primary:hover{background:#105b5e}.btn.secondary{color:#21515c;background:#fff}.btn.secondary:hover{background:#f0f8f8}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;margin-bottom:31px}.metric{background:#fff;border:1px solid #e2e9eb;border-radius:13px;padding:17px 19px;min-height:115px;box-shadow:0 2px 10px #19374908}.metric>span{display:block;font-size:12px;color:#647b87;font-weight:700}.metric strong{font-size:29px;letter-spacing:-.06em;color:#172f3d;display:block;margin:9px 0 3px;line-height:1}.metric strong small{font-size:17px;color:#8a9aa3;letter-spacing:0}.metric>small{font-size:12px;color:#8a9aa3}.metric.warning{border-top:3px solid #e2a04b}.metric.warning strong{color:#a66520}.metric.danger{border-top:3px solid #d86764}.metric.danger strong{color:#b64d50}.meter{height:5px;background:#e7f0ee;border-radius:5px;overflow:hidden;margin-top:13px}.meter i{height:100%;background:#35baa5;display:block}.section-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:13px}.section-head h2,.table-head h2,.settings-title h2{font-size:18px;letter-spacing:-.025em;margin:0;color:#1c3443}.section-head p,.settings-title p{font-size:12px;color:#80909a;margin:4px 0 0}.legend{font-size:12px;color:#80909a;display:flex;align-items:center;gap:6px}.legend i{width:8px;height:8px;border-radius:50%;display:inline-block}.legend-gap{background:#e5a44e}.legend-good{background:#38b99d;margin-left:10px}.planning-layout{display:grid;grid-template-columns:minmax(0,1fr) 294px;gap:14px;align-items:start}.board-scroll{overflow-x:auto;padding-bottom:7px}.board{display:grid;grid-template-columns:repeat(7,minmax(136px,1fr));gap:8px;min-width:960px}.day-column{min-width:0}.day-heading{display:flex;justify-content:space-between;align-items:baseline;padding:8px 4px 13px;border-bottom:1px solid #dce5e8;margin-bottom:8px}.day-heading strong{font-size:14px}.day-heading span{font-size:11px;color:#8295a0}.shift-card{width:100%;min-height:158px;background:#fff;text-align:left;border:1px solid #e0e8eb;border-radius:10px;margin-bottom:8px;padding:13px 10px;display:block;box-shadow:0 2px 8px #19374906}.shift-card:hover{border-color:#6fbcb4}.shift-card.selected{border:2px solid #238f89;box-shadow:0 4px 14px #1a827520}.shift-card.has-gap{background:#fffdf9}.shift-card.has-conflict{box-shadow:inset 3px 0 #d86764}.card-top{display:flex;justify-content:space-between;gap:3px;align-items:center}.card-top b{font-size:13px}.card-top em{font-size:10px;font-style:normal;border-radius:15px;padding:4px 5px;white-space:nowrap;font-weight:800}.gap-pill{background:#fff0da;color:#a36c27}.ok-pill{background:#e0f5ec;color:#258263}.error-pill{background:#fde7e5;color:#ad5150}.card-time{display:block;color:#8a9ba4;font-size:11px;margin:5px 0 14px}.role-counts{display:grid;gap:6px}.role-count{display:flex;align-items:center;gap:4px;color:#697d88;font-size:11px;line-height:1.2;white-space:nowrap}.role-count i{height:6px;width:6px;border-radius:50%;flex:none}.role-count b{margin-left:auto;color:#384f5d}.role-count.low b{color:#b0732c}.detail-panel{background:#fff;border:1px solid #dde7ea;border-radius:12px;box-shadow:0 6px 25px #1937490c;padding:19px;position:sticky;top:16px}.detail-eyebrow{color:#8ba0a9;font-size:10px;font-weight:800;letter-spacing:.16em}.detail-title{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid #e7edef;padding:9px 0 16px}.detail-title h2{font-size:19px;letter-spacing:-.04em;margin:0}.detail-title p{font-size:12px;color:#79909b;margin:5px 0 0}.detail-title>span{color:#90a5ad}.role-detail{padding:16px 0;border-bottom:1px solid #e7edef}.role-detail-head{display:flex;justify-content:space-between;align-items:center;font-size:12px;font-weight:800;margin-bottom:11px}.role-detail-head>span:first-child{display:flex;align-items:center;gap:8px}.role-dot{display:inline-block;flex:none;width:8px;height:8px;border-radius:50%}.text-warning{color:#a66b29}.need-inline{width:38px;text-align:center;border:1px solid #dce6e9;border-radius:5px;padding:4px 2px;font-size:12px;color:#243d4b;background:#fff}.assignment{display:flex;align-items:center;gap:8px;padding:7px 0}.avatar{width:26px;height:26px;border-radius:50%;background:#e2f0ef;color:#29726f;display:grid;place-items:center;font-size:10px;font-weight:800;flex:none}.assignment-name{font-size:12px;font-weight:650;flex:1;min-width:0}.assignment-name small{display:block;color:#bd554f;font-size:11px;line-height:1.3;margin-top:2px}.assignment.invalid .avatar{background:#fde8e6;color:#ad5150}.icon-button{border:0;background:transparent;color:#8fa0a8;font-size:21px;line-height:1;padding:3px 6px;border-radius:5px}.icon-button:hover{color:#bd554f;background:#fceeee}.empty-role{color:#a0aeb5;font-size:12px;margin:4px 0 10px}.add-row{display:flex;gap:5px;margin-top:9px}.add-row select{min-width:0;width:100%;border:1px solid #dce6e9;border-radius:6px;padding:7px;background:#fff;color:#536b78;font-size:12px}.add-button{border:1px solid #c9e5df;border-radius:6px;background:#ecf8f5;color:#167d74;font-size:18px;width:32px;flex:none}.detail-help{color:#91a2a9;font-size:11px;line-height:1.5;margin:17px 0 0}.content-card{background:#fff;border:1px solid #e0e8eb;border-radius:13px;box-shadow:0 2px 10px #19374908}.table-head{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #e6ecee}.table-head span{font-size:12px;color:#8ca0a9}.table-wrap,.demand-scroll{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px;text-align:left}th{color:#667f8a;font-size:11px;letter-spacing:.05em;text-transform:uppercase;background:#f8fafb}th,td{padding:13px 16px;border-bottom:1px solid #e9eef0;white-space:nowrap}tbody tr:last-child td,tbody tr:last-child th{border-bottom:0}.person-cell{display:inline-flex;align-items:center;gap:9px}.person-cell .avatar{width:30px;height:30px}.tag{display:inline-block;background:#eef4f6;color:#54717d;padding:5px 8px;margin:2px;border-radius:5px;font-size:11px;font-weight:650}.text-button{color:#147b7c;border:0;background:none;font-size:12px;font-weight:750;padding:8px}.text-button:hover{text-decoration:underline}.text-button.destructive{color:#b85750}.settings-grid{display:grid;grid-template-columns:.8fr 1.2fr;gap:14px;margin-bottom:15px}.settings-card,.demand-card{padding:20px}.settings-title{margin-bottom:15px}.settings-row,.shift-setting{display:flex;align-items:center;gap:8px;border-bottom:1px solid #e9eef0;padding:8px 0}.settings-row input,.shift-setting input,.inline-form input,.form-grid input{border:1px solid #dce6e9;border-radius:7px;padding:9px 10px;min-width:0;color:#24404e;background:#fff;font-size:13px}.settings-row input{flex:1}.shift-setting input:first-child{flex:1}.shift-setting input[type=time]{width:112px}.shift-setting span{font-size:12px;color:#95a5ad}.inline-form{display:flex;gap:8px;margin-top:15px}.inline-form input[name=name]{flex:1}.inline-form input[type=time]{width:105px}.demand-table{min-width:720px}.demand-table thead th{text-align:center}.demand-table thead th:first-child{text-align:left}.demand-table thead small{display:block;letter-spacing:0;text-transform:none;font-size:11px;color:#97a8b0;margin-top:3px}.demand-table tbody th{background:#fff;min-width:170px}.demand-shift{display:block;color:#7b929e;font-size:10px}.demand-role{display:flex;align-items:center;gap:7px;font-size:12px;color:#233e4d;text-transform:none;letter-spacing:0;margin-top:4px}.demand-table td{text-align:center}.demand-table input{width:54px;border:1px solid #dce6e9;border-radius:6px;text-align:center;padding:8px 2px;color:#25404e}.modal-backdrop{position:fixed;inset:0;background:#102c3c99;display:grid;place-items:center;padding:15px;z-index:10}.editor{background:#fff;border-radius:14px;width:min(690px,100%);max-height:94vh;overflow-y:auto;box-shadow:0 20px 70px #09243255}.editor-head{display:flex;justify-content:space-between;align-items:start;border-bottom:1px solid #e5ecee;padding:22px 25px 17px}.editor-head h2{margin:0;font-size:23px;letter-spacing:-.04em}.editor form{padding:20px 25px 25px}.form-grid{display:grid;grid-template-columns:1fr 170px;gap:12px}.form-grid label{font-size:12px;color:#52707c;font-weight:750;display:grid;gap:7px}.editor fieldset{border:0;padding:0;margin:22px 0 0}.editor legend{font-size:13px;font-weight:800;margin-bottom:11px}.required{font-weight:500;color:#8ba0aa;font-size:11px;margin-left:5px}.choice-row{display:flex;gap:7px;flex-wrap:wrap}.choice,.shift-choice{font-size:12px;color:#516b78;display:flex;align-items:center;gap:5px;border:1px solid #dfe8ea;border-radius:6px;padding:7px 9px;background:#fbfcfc}.choice input,.shift-choice input,.off-choice input{accent-color:#198f84}.field-hint{color:#8ca0aa;font-size:12px;margin:-3px 0 12px}.availability-grid{border:1px solid #e4ecee;border-radius:8px}.availability-row{display:grid;grid-template-columns:42px 85px 1fr;gap:7px;align-items:center;padding:8px 11px;border-bottom:1px solid #e9eff0}.availability-row:last-child{border-bottom:0}.availability-row strong{font-size:12px}.off-choice{font-size:12px;color:#627b87;white-space:nowrap}.shift-choice{padding:5px 7px}.shift-choice:has(input:disabled){opacity:.45}.editor-footer{border-top:1px solid #e5ecee;margin-top:22px;padding-top:18px;display:flex;justify-content:space-between;align-items:center;gap:10px}.editor-footer>div{display:flex;gap:8px}.toast{position:fixed;right:23px;bottom:23px;color:#fff;background:#173c48;padding:12px 17px;border-radius:9px;box-shadow:0 8px 25px #122d3c44;font-size:13px;z-index:20}@media(max-width:1180px){.planning-layout{grid-template-columns:minmax(0,1fr)}.detail-panel{position:static}.board{min-width:950px}.metrics{grid-template-columns:repeat(2,1fr)}}@media(max-width:760px){#app{display:block}.sidebar{width:100%;min-height:0;padding:12px 16px;display:block}.brand{font-size:20px;padding:0}.workspace-tag,.sidebar-bottom{display:none}.sidebar nav{display:flex;overflow-x:auto;margin-top:12px}.nav-item{white-space:nowrap;font-size:12px;padding:9px}.main-inner{padding:23px 15px 45px}.topbar{padding:0 15px;height:45px}.topbar span:last-child{display:none}.page-heading{display:block}.page-heading h1{font-size:27px}.heading-actions{margin-top:17px;flex-wrap:wrap}.metrics{gap:8px}.metric{padding:13px;min-height:100px}.metric strong{font-size:24px}.section-head{align-items:start}.legend{display:none}.settings-grid{grid-template-columns:1fr}.shift-setting,.inline-form{flex-wrap:wrap}.form-grid{grid-template-columns:1fr}.availability-row{grid-template-columns:35px 1fr}.availability-row .choice-row{grid-column:1 / -1}.editor-head,.editor form{padding-left:17px;padding-right:17px}.editor-footer{align-items:start}.table-head span{display:none}}@media(max-width:440px){.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.date-label{width:100%;justify-content:space-between}.heading-actions .btn{width:100%}}

/* Employee-wide roster and export layout */
.export-actions{flex-wrap:wrap}.overview-summary{display:flex;align-items:center;flex-wrap:wrap;gap:7px;color:#657b87;font-size:13px;margin:-7px 0 16px}.overview-summary strong{color:#1d3d49}.overview-summary .text-warning{color:#a66b29}.overview-summary .text-danger{color:#b64d50}.overview-summary span{color:#aebdc4}.overview-card{overflow:hidden}.overview-table-scroll{overflow-x:auto}.overview-table{min-width:1020px;table-layout:fixed}.overview-table th,.overview-table td{white-space:normal;border-right:1px solid #e9eef0;vertical-align:top}.overview-table thead th{background:#173c48;color:#f4fbfa;text-align:left;font-size:12px;line-height:1.3;letter-spacing:0;text-transform:none}.overview-table thead th:first-child{width:175px}.overview-table thead th:last-child{width:60px;text-align:center}.overview-table thead small{display:block;color:#a9c9cf;font-size:11px;font-weight:500;margin-top:3px}.overview-table tbody th{background:#fff;color:#25404e;font-size:12px;letter-spacing:0;text-transform:none}.overview-table tbody tr:nth-child(even) th,.overview-table tbody tr:nth-child(even) td{background:#fafcfc}.overview-table tbody td{padding:12px 9px}.overview-table .person-cell{white-space:normal}.overview-assignment{border-left:3px solid #3cb6a5;background:#edf8f5;border-radius:3px;padding:7px 6px;margin-bottom:5px;line-height:1.35}.overview-assignment:last-child{margin-bottom:0}.overview-assignment strong{display:block;font-size:12px;color:#244e53;overflow-wrap:anywhere}.overview-assignment span{display:block;font-size:11px;color:#53717a;margin-top:3px;overflow-wrap:anywhere}.overview-assignment.invalid{background:#fff0ec;border-left-color:#dc6a60}.overview-assignment.invalid small{display:block;color:#ad5150;font-size:11px;margin-top:4px;overflow-wrap:anywhere}.off-mark{color:#768e99;font-weight:800;font-size:11px;letter-spacing:.08em}.blank-mark{color:#b7c4c9}.total-cell{text-align:center;color:#26464d;font-size:15px;font-weight:800}.pdf-hint{font-size:12px;color:#869aa4;margin:12px 1px}.empty-overview{padding:20px;color:#718790}@media(max-width:760px){.overview-heading .heading-actions{display:flex;gap:7px}.export-actions .btn{flex:1}.overview-table{min-width:970px}}@media print{@page{size:landscape;margin:11mm}html,body,#app,.main{background:#fff!important;color:#111!important;min-width:0!important;width:100%!important;display:block!important}.sidebar,.topbar,.export-actions,.pdf-hint,.toast{display:none!important}.main-inner{padding:0!important;margin:0!important;max-width:none!important}.page-heading{display:block!important;margin:0 0 8mm!important}.page-heading h1{font-size:19pt!important;color:#132f3b!important}.page-heading p{font-size:9pt!important;color:#455!important}.eyebrow{font-size:9pt!important}.overview-summary{font-size:9pt!important;margin:0 0 5mm!important}.overview-card{border:0!important;box-shadow:none!important;overflow:visible!important}.overview-table-scroll{overflow:visible!important}.overview-table{width:100%!important;min-width:0!important;table-layout:fixed!important;font-size:8pt!important}.overview-table thead{display:table-header-group}.overview-table th,.overview-table td{padding:4px!important;border:1px solid #bfc9cd!important;break-inside:avoid;overflow-wrap:anywhere}.overview-table thead th{background:#e7f0f1!important;color:#173c48!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.overview-table thead small{color:#42616a!important;font-size:7pt!important}.overview-table thead th:first-child{width:36mm!important}.overview-table thead th:last-child{width:13mm!important}.overview-table tbody tr{break-inside:avoid;page-break-inside:avoid}.overview-table .avatar{display:none!important}.overview-assignment{padding:1px 0 1px 3px!important;margin:0 0 2px!important;border-left:2px solid #379c8f!important;background:none!important}.overview-assignment strong,.overview-assignment span,.overview-assignment small{font-size:7.3pt!important;color:#172e3d!important}.overview-assignment.invalid{border-left-color:#ba4e47!important}.total-cell{font-size:9pt!important}}

/* Seniority, scheduled hours, and overtime */
.form-grid{grid-template-columns:minmax(0,1fr) 150px 145px}.rank-badge{display:inline-grid;place-items:center;width:25px;height:25px;flex:none;border-radius:7px;background:#e6f3f1;color:#246f6a;font-size:12px;font-weight:800}.seniority-cell{display:flex;align-items:center;gap:9px}.rank-actions{display:inline-flex;gap:2px}.rank-button{border:1px solid #dce8e9;border-radius:5px;background:#fff;color:#256f70;width:27px;height:27px;font-size:15px;line-height:1}.rank-button:hover:not(:disabled){background:#e9f5f3}.rank-button:disabled{opacity:.35;cursor:default}.overview-table{min-width:1150px}.overview-table thead th:first-child{width:185px}.overview-table thead th:nth-last-child(2){width:76px;text-align:center}.overview-table thead th:last-child{width:96px;text-align:center}.overview-table .person-cell{display:flex;align-items:center;gap:8px}.overview-table .total-cell{white-space:nowrap}.overtime-total{color:#a36520}.overtime-total small{display:block;color:#977755;font-size:10px;font-weight:600;white-space:normal;margin-top:3px}.overview-assignment.overtime{border-left-color:#e1a047;background:#fff6e9}.ot-mark{display:inline-block;font-style:normal;font-size:10px;font-weight:800;letter-spacing:.04em;line-height:1;border-radius:4px;padding:3px 4px;color:#965d13;background:#ffebc8;vertical-align:middle;margin-left:3px}.roster-method{font-size:12px;color:#758d97;line-height:1.5;margin:14px 1px 4px}.pdf-hint{margin-top:5px}@media(max-width:760px){.form-grid{grid-template-columns:1fr}.overview-table{min-width:1080px}}@media print{.overview-table .rank-badge{display:inline!important;background:none!important;color:#173c48!important;width:auto!important;height:auto!important;margin-right:3px!important}.overview-table thead th:first-child{width:35mm!important}.overview-table thead th:nth-last-child(2){width:16mm!important}.overview-table thead th:last-child{width:18mm!important}.overview-table .total-cell{white-space:normal!important;font-size:8pt!important}.overtime-total small{font-size:6.5pt!important}.ot-mark{font-size:6.5pt!important;padding:1px 2px!important}.overview-assignment.overtime{border-left-color:#c48b37!important}.roster-method{font-size:7.5pt!important;color:#455!important;margin-top:3mm!important}.pdf-hint{display:none!important}}

/* Separate time segments within a shift */
.segment-assignment{align-items:flex-start;border-bottom:1px solid #edf1f2;padding:10px 0}.segment-assignment .avatar{margin-top:2px}.segment-body{min-width:0;flex:1}.segment-body .assignment-name{display:block}.segment-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:7px;margin-top:8px}.segment-controls label{display:grid;gap:4px;color:#718690;font-size:11px;font-weight:700}.segment-controls input,.segment-controls select{min-width:0;width:100%;padding:6px 4px;border:1px solid #dce6e9;border-radius:6px;background:#fff;color:#27424f;font-size:12px}.segment-controls label:last-child{grid-column:1/-1}.segment-hours{display:block;color:#42766e;font-size:11px;font-weight:750;margin-top:6px}.segment-add{display:grid;gap:8px;border:1px dashed #bddbd6;background:#f6fbfa;border-radius:8px;padding:10px;margin-top:10px}.segment-add>select{width:100%;min-width:0;padding:8px;border:1px solid #dce6e9;border-radius:6px;background:#fff;color:#415d69;font-size:12px}.segment-add .segment-controls{margin:0}.segment-add-button{width:100%;text-align:center}.role-detail-head{gap:8px;align-items:flex-start}.role-detail-head>span:last-child{text-align:right;line-height:1.6}.detail-help{font-size:12px}
.segment-add{margin:16px 0 4px}.segment-add>strong{font-size:14px;color:#1c4450}.segment-add>label{display:grid;gap:5px;color:#526e79;font-size:12px;font-weight:750}.segment-add>label select{width:100%;min-width:0;padding:8px;border:1px solid #dce6e9;border-radius:6px;background:#fff;color:#25404e;font-size:13px}.segment-add>small{color:#718b94;font-size:11px;line-height:1.4}.segment-body .segment-controls label:first-child{grid-column:1/-1}.segment-body .segment-controls label:nth-child(3){grid-column:2}.segment-body .segment-controls label:last-child{grid-column:1/-1}
.need-inline{width:58px}.role-detail-head{flex-wrap:wrap}.role-detail-head>span:last-child{text-align:left}.demand-table input{width:68px;font-size:13px}.metric strong small{font-size:15px}
.role-count{display:grid;grid-template-columns:6px minmax(0,1fr) auto;white-space:normal;align-items:start}.role-count i{margin-top:4px}.role-count b{margin-left:3px;white-space:nowrap}
.segment-add>label input{width:100%;min-width:0;padding:8px;border:1px solid #dce6e9;border-radius:6px;background:#fff;color:#25404e;font-size:13px}
/* A role keeps the same color on the board, assignments, roster, and exports. */
.role-count{background:color-mix(in srgb,var(--role-color) 10%,white);border-radius:4px;padding:3px 4px}.role-count i,.role-detail-head .role-dot{background:var(--role-color)}
.segment-assignment{border-left:3px solid var(--role-color);background:color-mix(in srgb,var(--role-color) 9%,white);border-radius:4px;padding-left:7px;padding-right:3px;margin-bottom:4px}.segment-assignment.invalid{outline:1px solid #dfaaa6}
.overview-assignment,.overview-assignment.overtime{border-left-color:var(--role-color);background:color-mix(in srgb,var(--role-color) 11%,white)}.overview-assignment strong::before{content:"";display:inline-block;width:8px;height:8px;margin-right:5px;border-radius:50%;background:var(--role-color);vertical-align:middle}.overview-assignment.invalid{background:#fff0ec;border-left-color:#dc6a60}
.settings-row input.role-color-input{flex:0 0 38px;width:38px;height:34px;padding:3px;border-radius:7px;cursor:pointer}
@media print{.overview-assignment{border-left-color:var(--role-color)!important}.overview-assignment.invalid{border-left-color:#ba4e47!important}.overview-assignment strong::before{-webkit-print-color-adjust:exact;print-color-adjust:exact}}
/* Employee status in the seniority roster and editor. */
.team-card table{min-width:900px}.status-badge{display:inline-block;border-radius:5px;padding:5px 8px;font-size:12px;font-weight:750;white-space:nowrap}.status-badge.full-time{background:#e5f4ed;color:#236044}.status-badge.part-time{background:#fff1d9;color:#87590e}.status-badge.casual{background:#edf0fa;color:#4b5685}.status-badge.unset{background:#f1f3f5;color:#596b72}
.overview-table .overview-name{display:inline-flex;flex-direction:row;align-items:center;gap:5px;min-width:0;overflow-wrap:anywhere}.overview-table .overview-name strong{min-width:0}.overview-table .employment-tag{flex:none}.employment-tag{display:inline-block;border-radius:4px;padding:2px 6px;font-size:10px;font-weight:850;line-height:1.2;letter-spacing:.04em}.employment-tag.ft{background:#fce8eb;color:#ab2f42}.employment-tag.pt{background:#e5efff;color:#235bab}@media print{.employment-tag.ft{background:#fce8eb!important;color:#ab2f42!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.employment-tag.pt{background:#e5efff!important;color:#235bab!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}}
.pt-rank{display:block;margin-top:4px;color:#87590e;font-size:11px;font-weight:750}
.brand{position:relative;display:block;width:100%;padding:0}.sidebar-logo{display:block;width:100%;height:auto}.sidebar-logo-light{filter:brightness(0) invert(1)}.sidebar-logo-green{position:absolute;inset:0;clip-path:polygon(31% 0,100% 0,100% 55%,44% 55%,44% 64%,31% 64%);pointer-events:none}
.employee-field{display:grid;gap:6px;min-width:0;color:#526e79;font-size:13px;font-weight:700}.employee-picker{position:relative;min-width:0}.employee-search{width:100%;min-width:0;min-height:39px;padding:8px 10px;border:1px solid #dce6e9;border-radius:7px;background:#fff;color:#24404e;font-size:14px}.employee-options{position:absolute;top:calc(100% + 4px);left:0;right:0;z-index:8;max-height:250px;overflow-y:auto;padding:4px;background:#fff;border:1px solid #cbdde0;border-radius:8px;box-shadow:0 10px 24px #173c4826}.employee-options[hidden],.employee-options [hidden]{display:none!important}.employee-options button{display:flex;align-items:center;justify-content:space-between;gap:8px;width:100%;padding:9px 10px;border:0;border-radius:5px;background:transparent;text-align:left;color:#24404e;font-size:13px}.employee-options button:hover,.employee-options button[aria-selected="true"]{background:#eaf6f3;color:#145c59}.employee-options small{color:#ad5150;font-size:11px;white-space:nowrap}.employee-empty{padding:10px;color:#718690;font-size:12px}.segment-add .employee-field{font-size:12px}.vacation-form .employee-field{flex:1 1 180px}.vacation-form .employee-field>label{display:block;flex:none}
.publication-state{margin:-13px 0 19px;padding:10px 13px;border:1px solid #cde7df;border-radius:8px;background:#eff9f5;color:#246959;font-size:13px;font-weight:700}.publication-state.pending{border-color:#efd9af;background:#fff8e9;color:#946224}.publish-button:disabled{opacity:.55;cursor:default}@media(max-width:760px){.heading-actions .publish-button{width:100%}}
.published-meta{margin:-12px 0 21px;color:#356d68;font-size:13px;font-weight:750}.login-dialog{max-width:430px}.login-dialog form{display:grid;gap:15px}.login-dialog form label,.coordinator-card label{display:grid;gap:6px;color:#526e79;font-size:13px;font-weight:750}.login-dialog form input,.coordinator-card input{width:100%;min-height:40px;padding:9px 10px;border:1px solid #dce6e9;border-radius:7px;background:#fff;color:#24404e}.login-dialog .editor-footer{margin-top:2px;justify-content:flex-end}.coordinator-card{padding:20px;margin-bottom:16px}.coordinator-card h2{font-size:18px;margin:0 0 15px}.coordinator-card form{display:grid;grid-template-columns:repeat(3,minmax(0,1fr)) auto;align-items:end;gap:10px}.coordinator-card p{font-size:12px;color:#718690;margin:12px 0 0}@media(max-width:900px){.coordinator-card form{grid-template-columns:1fr 1fr}.coordinator-card form .btn{align-self:end}}@media(max-width:760px){.sidebar .sidebar-bottom{display:block;margin-top:10px;padding:9px 0 0}.sidebar-bottom p{display:none}.coordinator-card form{grid-template-columns:1fr}}
.form-grid{grid-template-columns:minmax(0,1fr) minmax(0,1fr)}.form-grid select{border:1px solid #dce6e9;border-radius:7px;padding:9px 10px;min-width:0;color:#24404e;background:#fff;font-size:13px}
@media(max-width:760px){.form-grid{grid-template-columns:1fr}}
.generation-note{font-size:13px;line-height:1.5;color:#647b87;margin:-17px 1px 24px}
.minimum-warning{border-left:3px solid #dc9944;background:#fff4e4;color:#7b4b1d;border-radius:5px;padding:10px 12px;margin:0 0 20px;font-size:13px;line-height:1.45}

/* Annual vacations and weekly vacation indicators. */
.vacation-form-card,.vacation-card,.vacation-list{margin-bottom:16px}.vacation-form-card{padding:20px}.vacation-form-card h2{margin:0 0 14px;font-size:18px}.vacation-form-card p{font-size:13px;color:#718690;margin:12px 0 0}.vacation-form{display:flex;align-items:end;gap:10px;flex-wrap:wrap}.vacation-form label{display:grid;gap:6px;font-size:13px;font-weight:700;color:#526e79;flex:1 1 160px}.vacation-form input,.vacation-form select{width:100%;min-height:39px;padding:8px;border:1px solid #dce6e9;border-radius:7px;background:#fff;color:#24404e}.vacation-form .btn{height:39px}.vacation-scroll{overflow-x:auto}.vacation-grid{min-width:1050px}.vacation-grid th,.vacation-grid td{padding:11px 9px;border-right:1px solid #edf1f2}.vacation-grid th:first-child{position:sticky;left:0;z-index:1;background:#f8fafb;min-width:155px}.vacation-grid tbody th:first-child{background:#fff;color:#25404e;font-size:13px;text-transform:none;letter-spacing:0}.vacation-grid tbody tr:nth-child(even) th:first-child{background:#fafcfc}.vacation-grid td{min-width:69px;white-space:normal}.vacation-chip{display:block;background:#ffe4e4;border-left:3px solid #c8414e;color:#8c2731;padding:5px 3px;margin:2px 0;border-radius:3px;font-size:12px;font-weight:800;white-space:nowrap}.vacation-period{display:flex;align-items:center;gap:14px;flex-wrap:wrap;padding:11px 20px;border-bottom:1px solid #e9eef0;font-size:13px}.vacation-period:last-child{border-bottom:0}.vacation-period strong{min-width:170px}.vacation-period span{flex:1;color:#5e7782}.vacation-period>div{display:flex;gap:5px}.vacation-empty{padding:4px 20px 20px;color:#758d97;font-size:13px}.overview-table tbody td.vacation-day,.overview-table tbody tr:nth-child(even) td.vacation-day{background:#ffebeb}.vacation-mark{display:block;background:#c8404e;color:#fff;border-radius:4px;padding:5px;font-size:11px;font-weight:800;letter-spacing:.035em;text-align:center;margin-bottom:6px}.overview-table .vacation-day .overview-assignment{background:#fff5f4}.overview-table .vacation-day .overview-assignment.invalid{border-left-color:#c8404e}
@media print{.overview-table tbody td.vacation-day,.overview-table tbody tr:nth-child(even) td.vacation-day{background:#ffebeb!important;-webkit-print-color-adjust:exact;print-color-adjust:exact}.vacation-mark{background:#c8404e!important;color:#fff!important;-webkit-print-color-adjust:exact;print-color-adjust:exact;font-size:7pt!important}}

/* Separate leave colors on the employee overview and its print layout. */
.overview-table .leave-vacation{--leave-cell:#ffe7e9;--leave-mark:#b72f41;--leave-card:#fff6f6}
.overview-table .leave-loa{--leave-cell:#efe9fa;--leave-mark:#6444a0;--leave-card:#f8f5fd}
.overview-table .leave-maternity{--leave-cell:#e1f4f3;--leave-mark:#116f78;--leave-card:#f4fbfb}
.overview-table .leave-rdo{--leave-cell:#fff0d8;--leave-mark:#965213;--leave-card:#fff9ed}
.overview-table .leave-medical{--leave-cell:#e1eeff;--leave-mark:#315f9e;--leave-card:#f5f9ff}
.overview-table .leave-sick{--leave-cell:#ffe8d7;--leave-mark:#a64d20;--leave-card:#fff8f3}
.overview-table .leave-sick-coverage{--leave-cell:#e6f4e8;--leave-mark:#2d7952;--leave-card:#f5fbf6}
.overview-table tbody td.vacation-day,.overview-table tbody tr:nth-child(even) td.vacation-day{background:var(--leave-cell)}
.overview-table .vacation-day .vacation-mark{background:var(--leave-mark)}
.overview-table .vacation-day .overview-assignment{background:var(--leave-card)}
.overview-table .vacation-day .overview-assignment.invalid{border-left-color:var(--leave-mark)}
@media print{.overview-table tbody td.vacation-day,.overview-table tbody tr:nth-child(even) td.vacation-day{background:var(--leave-cell)!important}.overview-table .vacation-day .vacation-mark{background:var(--leave-mark)!important}}

.coordinator-actions,.coordinator-form-actions{display:flex;gap:8px;align-items:center;flex-wrap:wrap}
.coordinator-actions .text-button{white-space:nowrap}
.coordinator-card form .coordinator-form-actions{align-self:end}
.coordinator-editor{margin-top:16px}
.access-status{display:inline-block;padding:5px 9px;border-radius:6px;font-size:12px;font-weight:750}
.access-status.active{color:#146d58;background:#e4f6ee}
.access-status.revoked{color:#9a4949;background:#fdebea}
.coordinator-card .coordinator-form-error{grid-column:1/-1;color:#a43e3e;font-size:13px;margin:0;min-height:1.3em}
.coordinator-card .coordinator-form-error[data-state=working]{color:#54717d}

/* Annual vacation balances live beside the employee name in the leave calendar. */
.vacation-grid{min-width:1450px}
.vacation-balance-help{margin:0;padding:12px 20px;color:#647b87;font-size:12px;line-height:1.5;border-bottom:1px solid #e9eef0}
.vacation-grid .vacation-balance-cell{min-width:125px;background:#f8fbfb;color:#26464d;font-size:12px;font-weight:700;white-space:nowrap}
.vacation-grid tbody tr:nth-child(even) .vacation-balance-cell{background:#f3f8f8}
.entitlement-form{display:flex;align-items:center;gap:3px}
.entitlement-form input,.entitlement-form select{height:34px;border:1px solid #dce6e9;border-radius:5px;background:#fff;color:#24404e;font-size:12px}
.entitlement-form input{width:53px;padding:5px}
.entitlement-form select{width:66px;padding:3px}
.entitlement-form .text-button{padding:5px}
.vacation-grid .vacation-overdrawn,.vacation-grid tbody tr:nth-child(even) .vacation-overdrawn{background:#fff0ee;color:#b33938}

.vacation-section-tabs{display:flex;align-items:center;gap:8px;flex-wrap:wrap;margin:-5px 0 17px;border-bottom:1px solid #dce6e9;padding-bottom:10px}
.vacation-section-tabs button{border:1px solid #d7e5e5;border-radius:8px;background:#fff;color:#446671;font-size:13px;font-weight:750;padding:10px 15px}
.vacation-section-tabs button:hover{background:#eef8f6}
.vacation-section-tabs button.active{border-color:#166e70;background:#e9f5f2;color:#155c5d}
.vacation-section-tabs button span{display:inline-block;margin-left:5px;padding:1px 6px;border-radius:9px;background:#d6eae6;font-size:11px}
@media(max-width:760px){.vacation-section-tabs button{flex:1;white-space:nowrap;padding:10px 8px}.vacation-list .table-head{gap:8px}.vacation-list .table-head .btn{padding:8px 10px}}

.vacation-selection-help{margin:15px 0 0!important;color:#718690;font-size:12px}
.vacation-employee-periods{margin-top:16px;padding-top:14px;border-top:1px solid #e5ecee}
.vacation-employee-periods h3{margin:0 0 8px;color:#274856;font-size:14px}
.vacation-employee-periods p{margin:6px 0 0;color:#718690;font-size:12px}
.vacation-employee-period{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid #edf1f2;color:#45636e;font-size:13px}
.vacation-employee-period-actions{display:flex;align-items:center;gap:6px;flex-shrink:0}
.vacation-employee-period:last-child{border-bottom:0}
.leave-lookup-card{margin-bottom:16px}
.leave-lookup-results{overflow:hidden}
.leave-lookup-table{min-width:690px}
.leave-lookup-table tbody th{background:#fff;color:#25404e;font-size:13px;letter-spacing:0;text-transform:none}
.leave-type-label{display:inline-block;padding:5px 9px;border-radius:5px;font-size:12px;font-weight:750}
.leave-type-label.leave-vacation{background:#ffe7e9;color:#b72f41}
.leave-type-label.leave-loa{background:#efe9fa;color:#6444a0}
.leave-type-label.leave-maternity{background:#e1f4f3;color:#116f78}
.leave-type-label.leave-rdo{background:#fff0d8;color:#965213}
.leave-type-label.leave-medical{background:#e1eeff;color:#315f9e}
.leave-type-label.leave-sick{background:#ffe8d7;color:#a64d20}
.leave-type-label.leave-sick-coverage{background:#e6f4e8;color:#2d7952}
.vacation-chip.leave-medical{background:#e1eeff;border-left-color:#315f9e;color:#315f9e}
.vacation-chip.leave-sick{background:#ffe8d7;border-left-color:#a64d20;color:#a64d20}
.vacation-chip.leave-sick-coverage{background:#e6f4e8;border-left-color:#2d7952;color:#2d7952}
.vacation-rules-help{margin:0 0 16px;color:#526e79;font-size:13px;line-height:1.55}
.vacation-rules-card{padding:20px;margin-bottom:16px}
.vacation-rules-card h2{margin:0 0 14px;font-size:18px}
.vacation-rules-card .table-wrap{margin-top:18px}
.vacation-rules-card .vacation-rules-week-help{margin:12px 0 0;color:#718690;font-size:12px}
.vacation-rules-table{min-width:560px}
.vacation-rules-table tbody th{color:#25404e;font-size:13px;text-transform:none;letter-spacing:0}
.vacation-rules-table .vacation-rule-over{color:#b33938;font-weight:750}
body.vacation-limit-open{overflow:hidden}
.vacation-limit-backdrop{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:20px;background:rgba(13,34,44,.66);backdrop-filter:blur(4px)}
.vacation-limit-dialog{width:min(520px,100%);max-height:calc(100dvh - 40px);overflow:auto;border:1px solid #f3dfb8;border-top:5px solid #e7a333;border-radius:19px;background:linear-gradient(180deg,#fffaf0 0,#fff 160px);padding:30px;box-shadow:0 26px 80px rgba(8,29,37,.38);text-align:center}
.vacation-limit-icon{display:grid;place-items:center;width:76px;height:76px;margin:0 auto 16px;border-radius:50%;background:#fff0cc;color:#d7861d;box-shadow:0 0 0 8px #fff8e9}
.vacation-limit-icon svg{width:43px;height:43px}
.vacation-limit-kicker{color:#a76518;font-size:11px;font-weight:850;letter-spacing:.15em}
.vacation-limit-dialog h2{margin:8px 0 13px;color:#173241;font-size:26px;letter-spacing:-.04em;line-height:1.18}
.vacation-limit-dialog p{margin:0;color:#5c7380;font-size:14px;line-height:1.55}
.vacation-limit-dialog p strong{color:#213e4b}
.vacation-limit-list{list-style:none;padding:0;margin:22px 0 17px;border:1px solid #f1dfbb;border-radius:11px;background:#fffaf0;text-align:left}
.vacation-limit-list li{display:flex;align-items:center;justify-content:space-between;gap:15px;padding:13px 16px;color:#34515d;font-size:13px;font-weight:700}
.vacation-limit-list li+li{border-top:1px solid #f1e6d2}
.vacation-limit-list strong{color:#a8621c;white-space:nowrap}
.vacation-limit-list small{color:#7c8d96;font-size:12px;font-weight:650}
.vacation-entitlement-warning span small,.vacation-entitlement-warning strong small{display:block;margin-top:5px;line-height:1.45}
.vacation-entitlement-warning strong small{color:#b44b3b}
.vacation-limit-dialog .vacation-limit-question{font-weight:700;color:#2c4853}
.vacation-limit-dialog .generation-warning-question{margin-top:22px}
.reset-schedule-button{color:#aa3b43;background:#fff;border-color:#eab8bb}
.reset-schedule-button:hover:not(:disabled){background:#fff0f0;border-color:#d56b70}
.reset-schedule-button:disabled{opacity:.48;cursor:not-allowed}
.reset-schedule-dialog{border-color:#f0c9c9;border-top-color:#ca4b51;background:linear-gradient(180deg,#fff7f7 0,#fff 160px)}
.reset-schedule-dialog .vacation-limit-icon{background:#fde5e6;color:#c94c54;box-shadow:0 0 0 8px #fff1f2}
.reset-schedule-dialog .vacation-limit-kicker{color:#ac474b}
.reset-schedule-dialog .reset-schedule-proceed{background:#b9434b}.reset-schedule-dialog .reset-schedule-proceed:hover{background:#993239}
.reset-schedule-dialog .reset-schedule-cancel{background:#5a737e}.reset-schedule-dialog .reset-schedule-cancel:hover{background:#425e69}
.team-actions{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:8px;align-items:center}.team-actions .btn{text-decoration:none;white-space:nowrap}.team-import-help{margin:-12px 0 17px;color:#657e89;font-size:12px;line-height:1.5}.visually-hidden{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.team-import-errors{max-height:240px;overflow:auto;text-align:left;margin:18px 0 0;padding:14px 18px 14px 34px;background:#fff6f2;border:1px solid #f0d7ce;border-radius:10px;color:#8a4538;font-size:12px;line-height:1.5}.team-import-errors li+li{margin-top:7px}@media(max-width:760px){.team-actions{justify-content:flex-start;width:100%}}
.team-search-bar{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;padding:18px 20px;border-bottom:1px solid #e9eef0}.team-search-bar label{font-size:13px;font-weight:750;color:#526e79}.team-search-bar input{flex:1 1 220px;max-width:440px;min-height:40px;border:1px solid #dce6e9;border-radius:8px;padding:9px 12px;background:#fff;color:#24404e}.team-search-bar span{font-size:12px;color:#68818b}.team-card tr[hidden]{display:none!important}.team-row-actions{display:flex;gap:11px;align-items:center;white-space:nowrap}.team-row-actions .destructive{color:#b34149}.team-row-actions .destructive:hover{text-decoration:underline}#team-search-empty td{padding:22px;text-align:center;color:#718690;font-size:13px}
.vacation-limit-actions{display:flex;gap:11px;margin-top:23px}
.vacation-limit-actions button{flex:1;min-height:46px;padding:11px 13px;border:0;border-radius:9px;color:#fff;font-size:13px;font-weight:800;box-shadow:0 5px 14px rgba(20,40,42,.13)}
.vacation-limit-cancel{background:#c74950}.vacation-limit-cancel:hover{background:#aa353d}
.vacation-limit-proceed{background:#158451}.vacation-limit-proceed:hover{background:#0e6940}
@media(max-width:440px){.vacation-limit-dialog{padding:27px 19px}.vacation-limit-list li{align-items:start;flex-direction:column;gap:3px}}
.overview-week-label select{border:0;background:transparent;color:#1b3544;max-width:220px;min-height:26px;font-size:13px;font-weight:650}
@media(max-width:760px){.overview-week-label{width:100%;justify-content:space-between}.overview-week-label select{max-width:min(65vw,270px)}}
.archive-search-card,.archive-results{margin-bottom:16px}
.archive-results tbody tr.archive-result-active td{background:#eaf6f3}
.archive-schedule{margin-top:28px;padding-top:20px;border-top:1px solid #dce6e9;scroll-margin-top:20px}
.archive-error{color:#ac3e3e!important;font-weight:700}
@media print{.archive-heading,.archive-search-card,.archive-results{display:none!important}.archive-schedule{margin:0!important;padding:0!important;border:0!important}}

.topbar-status{display:flex;flex-direction:column;align-items:flex-end;gap:4px;white-space:nowrap}
.topbar-status span{font-size:12px;letter-spacing:0;font-weight:600;color:#687f89}
.topbar-status .reset-link{color:#166e70;font-size:12px;font-weight:700}
@media(max-width:760px){.topbar{height:68px;gap:12px}.topbar>span:first-child{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar-status{flex:none}.topbar .topbar-status span{display:block}}

.period-tabs{display:inline-flex;gap:4px;padding:4px;margin-bottom:18px;border:1px solid #d5e6e4;border-radius:11px;background:#eaf3f1}
.period-tabs button{border:0;border-radius:8px;padding:10px 23px;background:transparent;color:#4d6970;font-weight:800;cursor:pointer}
.period-tabs button.active{background:#fff;color:#12666b;box-shadow:0 2px 8px #183c481c}
.monthly-help{margin:-8px 0 18px;color:#58757d;font-size:13px;line-height:1.55}
.monthly-controls{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px 20px;margin-bottom:18px;color:#385862}
.monthly-add{display:flex;align-items:end;flex-wrap:wrap;gap:12px}
.monthly-add label{display:flex;flex-direction:column;gap:5px;font-size:12px;font-weight:700;color:#4a6973}
.monthly-add input,.monthly-add select{min-height:39px;border:1px solid #cbdcde;border-radius:7px;padding:7px 10px;background:white;color:#1b3544}
.monthly-add .employee-field{min-width:195px}
.monthly-add .employee-picker{min-width:195px}
.monthly-week{margin-bottom:18px;overflow:hidden}
.monthly-week h2{margin:0;padding:17px 20px;border-bottom:1px solid #e4ecee;font-size:17px;color:#1d3d4a}
.monthly-week h2 small{margin-left:9px;font-size:12px;font-weight:650;color:#69838b}
.monthly-scroll{overflow-x:auto}
.monthly-table{width:100%;border-collapse:collapse;min-width:890px}
.monthly-table th,.monthly-table td{padding:10px;border-bottom:1px solid #e7eff0;text-align:left;vertical-align:top}
.monthly-table thead th{background:#f0f7f5;color:#3b6370;font-size:12px;white-space:nowrap}
.monthly-table thead small{display:block;margin-top:3px;color:#6c858c;font-size:11px}
.monthly-table tbody th{position:sticky;left:0;z-index:1;min-width:180px;background:#fff;color:#284754;font-size:12px}
.monthly-rank{display:inline-grid;place-items:center;width:24px;height:24px;margin-right:5px;border-radius:50%;background:#e2efed;color:#236c71;font-size:11px}
.monthly-table tbody th small{color:#b6434d;font-weight:800}
.monthly-table tbody th small:not(:empty){margin-left:3px}
.monthly-table td{min-width:115px;font-size:12px;color:#43616a}
.monthly-shift{position:relative;display:flex;flex-direction:column;gap:3px;border-left:3px solid #147c78;border-radius:6px;padding:7px 8px;background:#e9f6f3;color:#28545a;line-height:1.2}
.monthly-shift strong{color:#145d62}
.monthly-shift b{font-size:13px}
.monthly-off{color:#9caeb2;font-weight:600}
.monthly-leave{display:inline-block;padding:4px 6px;border-radius:5px;font-size:11px;font-weight:800}
.monthly-leave.leave-vacation{background:#ffe7e9;color:#b72f41}.monthly-leave.leave-loa{background:#efe9fa;color:#6444a0}.monthly-leave.leave-maternity{background:#e1f4f3;color:#116f78}.monthly-leave.leave-rdo{background:#fff0d8;color:#965213}
.monthly-leave.leave-medical{background:#e1eeff;color:#315f9e}.monthly-leave.leave-sick{background:#ffe8d7;color:#a64d20}.monthly-leave.leave-sick-coverage{background:#e6f4e8;color:#2d7952}
.monthly-remove{position:absolute;right:3px;top:2px;border:0;background:transparent;color:#9c4550;font-size:18px;cursor:pointer}
.monthly-table .monthly-total{min-width:65px;font-weight:800;color:#176b6b}
.monthly-backdrop{position:fixed;inset:0;z-index:60;display:grid;place-items:center;background:#0d222ca8;padding:20px;backdrop-filter:blur(4px)}
.monthly-dialog{border-top-color:#e7a333}.monthly-dialog .vacation-limit-symbol{display:grid;place-items:center;width:68px;height:68px;margin:0 auto 15px;border-radius:50%;background:#fff0cc;color:#c67c18;font-size:37px;font-weight:800}
.monthly-dialog .monthly-confirm{background:#158451}.monthly-dialog .monthly-cancel{background:#c74950;color:#fff;border:0}
@media(max-width:950px){.monthly-controls{align-items:start;flex-direction:column}.monthly-add{width:100%}}
@media print{.period-tabs,.monthly-add,.monthly-remove,.monthly-controls,.monthly-help{display:none!important}.monthly-week{break-inside:avoid;box-shadow:none}.monthly-table{min-width:0;font-size:10px}}
.monthly-full-month .monthly-scroll{max-height:calc(100vh - 270px);overflow:auto}
.monthly-full-month .monthly-table{width:max-content;min-width:100%}
.monthly-full-month .monthly-table thead th{position:sticky;top:0;z-index:2}
.monthly-full-month .monthly-table thead th:first-child{left:0;z-index:4}
.monthly-full-month .monthly-table tbody th{z-index:3}
.monthly-full-month .monthly-table th:last-child{position:sticky;right:0;z-index:3;min-width:88px;background:#e8f3f0}
.monthly-full-month .monthly-table tbody td:last-child{position:sticky;right:0;z-index:2;background:#f4faf8;box-shadow:-2px 0 5px #173c4812}
.monthly-full-month .monthly-table thead th:last-child{z-index:4}
@media print{.monthly-full-month .monthly-scroll{max-height:none;overflow:visible}.monthly-full-month .monthly-table{width:100%;min-width:0;table-layout:fixed;font-size:6pt}.monthly-full-month .monthly-table th,.monthly-full-month .monthly-table td{position:static!important;min-width:0!important;width:auto!important;padding:2px!important}.monthly-full-month .monthly-table th:first-child{width:32mm!important}.monthly-full-month .monthly-table th:last-child{width:12mm!important}.monthly-full-month .monthly-shift{padding:1px!important;border-left-width:1px}.monthly-full-month .monthly-shift span,.monthly-full-month .monthly-shift b,.monthly-full-month .monthly-shift strong{font-size:5pt}.monthly-full-month .monthly-rank{display:none}}
.monthly-needs-card{overflow:hidden;margin-bottom:20px}
.monthly-needs-card .table-head{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:17px 20px}
.monthly-needs-card .table-head h2{margin:0 0 3px;color:#244750;font-size:18px}
.monthly-needs-card .table-head span{font-size:12px;color:#65808a}
.monthly-needs-actions{display:flex;gap:8px;flex-wrap:wrap}
.monthly-needs-hint{margin:0;padding:10px 20px;background:#f2f8f6;color:#54737c;font-size:12px;line-height:1.5}
.monthly-needs-hint.error{background:#fff0ef;color:#aa393e;font-weight:700}
.monthly-needs-scroll{max-height:65vh;overflow:auto}
.monthly-needs-table{border-collapse:collapse;width:100%;min-width:550px}
.monthly-needs-table th,.monthly-needs-table td{padding:9px 13px;border-bottom:1px solid #e8eff0;text-align:left}
.monthly-needs-table thead th{position:sticky;top:0;z-index:2;background:#eaf4f2;color:#2b6266;font-size:12px;white-space:nowrap}
.monthly-needs-table thead small{display:block;color:#68838c;font-size:10px;font-weight:600;margin-top:3px}
.monthly-needs-table tbody th{position:sticky;left:0;z-index:1;background:white;color:#33545f;white-space:nowrap;font-size:12px}
.monthly-needs-table tbody tr:nth-child(even) th,.monthly-needs-table tbody tr:nth-child(even) td{background:#fafcfc}
.monthly-needs-table td input{width:100%;max-width:130px;min-width:75px;height:36px;padding:7px 9px;border:1px solid #cbdde0;border-radius:7px;background:#fff;color:#203f4d;font-weight:700}
.monthly-needs-table .monthly-need-total{font-size:12px;font-weight:800;color:#176a69;white-space:nowrap}
@media(max-width:760px){.monthly-needs-card .table-head{align-items:flex-start;flex-direction:column}.monthly-needs-actions{width:100%}.monthly-needs-actions .btn{flex:1}}
.department-context{display:flex;align-items:center;gap:12px;width:max-content;max-width:100%;margin:0 0 17px;padding:9px 13px;border:1px solid #d5e7e3;border-radius:9px;background:#f2f8f6;color:#28555d;font-size:13px}
.department-context label{font-weight:800}
.department-context select{min-width:190px;max-width:55vw;min-height:36px;padding:6px 9px;border:1px solid #bed7d4;border-radius:7px;background:white;color:#1c414b;font-weight:750}
.department-context strong{color:#165e60}
.coordinator-card select{width:100%;min-height:40px;padding:9px 10px;border:1px solid #dce6e9;border-radius:7px;background:#fff;color:#24404e}
.coordinator-card .coordinator-departments{grid-column:1/-1;min-width:0;margin:0;padding:12px 14px;border:1px solid #dce6e9;border-radius:8px}
.coordinator-departments legend{padding:0 5px;color:#526e79;font-size:13px;font-weight:750}
.department-choices{display:flex;gap:8px;flex-wrap:wrap}
.coordinator-card .department-choices label{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;border:1px solid #dce6e9;border-radius:8px;background:#f7faf9;cursor:pointer}
.coordinator-card .department-choices input{width:17px;min-height:17px;height:17px;accent-color:#087760}
.coordinator-delete-confirm{background:#b43f48!important}
.coordinator-delete-confirm:hover{background:#932e38!important}
.department-action-backdrop .department-action-confirm{background:#b43f48}
.department-action-backdrop .department-action-confirm:hover{background:#932e38}
.coordinator-actions button:disabled{opacity:.45;cursor:not-allowed}
.settings-row .role-start-setting,.inline-form .role-start-setting{display:grid;gap:3px;flex:0 0 125px;color:#526e79;font-size:11px;font-weight:750}
.role-start-setting input[type=time]{width:100%;min-width:0;min-height:34px;padding:5px 7px;border:1px solid #dce6e9;border-radius:7px;background:#fff;color:#24404e}
.role-start-label,.role-count small{color:#426b70;font-size:11px;font-weight:750;white-space:nowrap}
.role-day-start{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin:0 0 10px 15px;color:#526e79;font-size:11px;font-weight:750}
.role-day-start input{width:112px;min-height:32px;padding:4px 6px;border:1px solid #dce6e9;border-radius:7px;background:#fff;color:#24404e;font-size:12px}
.role-day-start small{width:100%;color:#8a9ca5;font-weight:500}
@media print{.department-context{border:0;background:none;padding:0;margin:0 0 3mm}.department-context select{appearance:none;border:0;padding:0;min-height:0;font-weight:800}}
