:root{--bg:#f4f7fb;--card:#fff;--text:#142039;--muted:#58677e;--line:#dce3ed;--blue:#245fda;--purple:#7549c7;--soft:#edf3ff;--input:#f9fbfe;--amber:#92590b;--ambersoft:#fff7e6;--red:#b42336;--redsoft:#fff0f2;color-scheme:light}
[data-theme=dark]{--bg:#0f172a;--card:#152036;--text:#f1f5fb;--muted:#a5b2c8;--line:#2c3a52;--blue:#80aaff;--purple:#bd9bf5;--soft:#192f50;--input:#111c30;--amber:#f6c66d;--ambersoft:#342a1b;--red:#ff9fa9;--redsoft:#382330;color-scheme:dark}
*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--text);font:16px/1.6 'Plus Jakarta Sans',sans-serif}button,input,textarea,select{font:inherit}button{cursor:pointer}button:disabled{opacity:.45;cursor:default}a{color:var(--blue)}[hidden]{display:none!important}button,a,input,select,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible,summary:focus-visible{outline:3px solid var(--blue);outline-offset:2px}h1,h2{font-family:'DM Serif Display',serif;font-weight:400;line-height:1.16}h1{font-size:38px;letter-spacing:-.6px;margin:8px 0}h1 em{color:var(--blue);font-weight:400}h2{font-size:27px;margin:8px 0 18px}h3{font-size:16px;margin:20px 0 12px}p{margin:12px 0}small,.small{font-size:13px}.muted,small{color:var(--muted)}.eyebrow{font-size:12px;font-weight:800;letter-spacing:1.5px;color:var(--blue)}
.tool-header{min-height:74px;padding:0 max(24px,calc((100vw - 1280px)/2));display:flex;align-items:center;justify-content:space-between;gap:20px;background:var(--card);border-bottom:1px solid var(--line)}.tool-header img{display:block;object-fit:contain}.tool-header nav{display:flex;gap:28px;align-items:center}.tool-header a{font-size:13px;font-weight:700;color:var(--text);text-decoration:none}.tool-header .tool-label{text-transform:uppercase;letter-spacing:1.5px;color:var(--muted);padding-right:28px;border-right:1px solid var(--line)}.theme{height:38px;width:38px;border-radius:50%;border:1px solid var(--line);background:var(--input);color:var(--text);display:grid;place-items:center}.theme svg{height:19px;width:19px}.sun{display:none}[data-theme=dark] .sun{display:block}[data-theme=dark] .moon{display:none}
main{max-width:1328px;margin:auto;padding:28px 24px 0}.intro{margin-bottom:24px}.intro p{color:var(--muted);margin:6px 0}.workspace{background:var(--card);border:1px solid var(--line);border-radius:12px;box-shadow:0 10px 35px #243c6807}.toolbar,.week-toolbar{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px 22px;flex-wrap:wrap}.toolbar{border-bottom:1px solid var(--line)}.week-toolbar{padding-block:16px}.week-picker{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.week-picker label{margin:0;font-weight:600}.week-picker input{width:160px;padding:7px 9px}.week-picker>span{font-size:13px}.segmented{display:flex;padding:4px;background:var(--input);border:1px solid var(--line);border-radius:8px;gap:4px}.segmented button{font-size:14px;border:0;border-radius:5px;padding:8px 14px;background:transparent;color:var(--muted);font-weight:700}.segmented button[aria-pressed=true]{background:var(--soft);color:var(--blue)}.actions{display:flex;gap:10px;align-items:center;flex-wrap:wrap}.primary,.secondary,.text-button{font-size:14px;font-weight:700;padding:10px 15px;border-radius:6px;line-height:1.5;text-decoration:none}.primary{background:#2563eb;color:#fff;border:1px solid #2563eb}.primary:hover{background:#1d4ed8}.secondary{background:var(--card);color:var(--text);border:1px solid var(--line)}.secondary:hover{background:var(--input)}.text-button{border:0;background:none;color:var(--muted);padding:8px}.text-button:hover{color:var(--blue);background:var(--soft)}.badge{font-size:12px;padding:3px 10px;border:1px solid var(--line);border-radius:30px;color:var(--muted)}label{font-size:14px;font-weight:600;display:block;margin-bottom:6px}input,select,textarea{padding:10px 11px;border:1px solid var(--line);border-radius:6px;background:var(--input);color:var(--text);width:100%;min-width:0;font-size:14px}input[type=checkbox]{width:18px;height:18px;accent-color:var(--blue);flex-shrink:0}input[aria-invalid=true]{border-color:var(--red);background:var(--redsoft)}textarea{resize:vertical;min-height:160px;font-family:monospace;font-size:14px}.check{display:flex;gap:10px;align-items:center;font-weight:500;margin:18px 0}
.week-grid{padding:0 22px}.rota-table{width:100%;border-collapse:separate;border-spacing:0;table-layout:fixed}.rota-table th{text-align:left;font-size:13px;color:var(--muted);font-weight:600;padding:12px 7px;border-block:1px solid var(--line);background:var(--input)}.rota-table th:first-child{width:180px;border-radius:6px 0 0 0;padding-left:12px}.rota-table th:last-child{width:103px;text-align:right;border-radius:0 6px 0 0}.rota-table th span{color:var(--text);font-weight:700;margin-left:6px}.rota-table td{padding:13px 6px;border-bottom:1px solid var(--line);vertical-align:top}.rota-table td.employee-cell{padding-left:6px;padding-top:16px}.employee-name{display:flex;align-items:center;gap:2px}.employee-name input{font-weight:700;background:transparent;border-color:transparent;padding:6px;font-size:14px}.employee-name input:hover,.employee-name input:focus{border-color:var(--line);background:var(--input)}.employee-department{display:block;padding-left:7px;overflow-wrap:anywhere}.row-menu,.cell-details{border:0;color:var(--muted);background:transparent;font-size:19px;border-radius:4px;flex-shrink:0;width:26px;min-height:30px;line-height:1;padding:0}.row-menu:hover,.cell-details:hover{color:var(--blue);background:var(--soft)}.cell-entry{position:relative;display:flex;align-items:center}.cell-entry input{background:transparent;border-color:transparent;padding:7px 4px;width:100%;font-size:14px;font-variant-numeric:tabular-nums;letter-spacing:-.35px;border-radius:5px}.cell-entry input::placeholder{color:#8c99af}.cell-entry input:hover,.cell-entry input:focus{border-color:var(--line);background:var(--input)}.cell-details{position:absolute;right:0;top:37px;min-height:22px;width:23px;font-size:18px;opacity:.45}.rota-day:hover .cell-details,.rota-day:focus-within .cell-details,.cell-details.has-shift{opacity:1}.cell-meta{font-size:12px;display:block;min-height:24px;margin:1px 22px 0 4px;color:var(--muted);line-height:1.4}.cell-error .cell-entry input{border-color:var(--red);background:var(--redsoft)}.cell-error .cell-meta{color:var(--red)}.cell-rest .cell-meta{color:var(--amber);font-weight:600}.row-total{text-align:right;padding-top:20px!important}.row-total strong{font-size:15px;white-space:nowrap;display:block;color:var(--blue)}.row-total small{font-size:12px;display:block}.mobile-day,.mobile-total-label{display:none}.mobile-picker{padding:0 22px 18px}.mobile-picker label{font-size:13px;color:var(--muted)}.person-navigation{display:flex;gap:8px;max-width:400px}.person-navigation select{flex:1;font-size:16px}.person-navigation button{font-size:22px;padding:3px 14px}.grid-footer{display:flex;align-items:center;gap:16px;padding:10px 22px 20px;flex-wrap:wrap}.grid-footer>span{margin-left:auto}.entry-help{position:relative;font-size:13px;color:var(--muted);width:100%}.entry-help summary{font-weight:500;font-size:13px;text-align:right;cursor:pointer}.entry-help p{max-width:850px;margin-left:auto}.scope-note{margin:0 28px 16px}#entry-status{margin:0 28px}#entry-status:empty{display:none}.totals-strip{position:sticky;bottom:0;z-index:2;display:flex;align-items:center;gap:25px;padding:20px 24px;background:var(--soft);border-block:1px solid var(--line);flex-wrap:wrap}.main-total{display:grid;grid-template-columns:auto auto;column-gap:18px;align-items:center}.main-total>span{font-size:14px;font-weight:700}.main-total strong{font-family:'DM Serif Display',serif;font-size:32px;color:var(--blue);font-weight:400;line-height:1.2;grid-row:1/3;grid-column:2}.main-total small{font-size:12px}.total-secondary{display:flex;flex-direction:column;font-size:14px}.totals-strip>.text-button{margin-left:auto}.alert-button{font-size:13px;font-weight:700;padding:8px 12px;border-radius:6px;border:1px solid var(--amber);background:var(--ambersoft);color:var(--amber)}.alert-button.error{color:var(--red);background:var(--redsoft);border-color:var(--red)}.totals-note{font-size:13px;color:var(--muted);padding:12px 24px;margin:0;background:var(--input);border-bottom:1px solid var(--line)}.utility-bar{display:flex;align-items:center;gap:8px;padding:9px 16px;flex-wrap:wrap}.utility-bar #handoff{margin-left:auto;color:var(--blue);font-size:13px}.under-rota{display:flex;justify-content:space-between;align-items:center;gap:16px;flex-wrap:wrap;margin:18px 0 38px;font-size:13px;color:var(--muted)}.under-rota p{margin:0}.under-rota a{color:var(--muted);text-underline-offset:3px}.breakdown{padding:24px;border-bottom:1px solid var(--line)}.summary-grid{display:grid;grid-template-columns:1fr auto;gap:30px}.table-wrap{overflow:auto;max-height:450px}.table-wrap table{width:100%;border-collapse:collapse;font-size:14px}.table-wrap th,.table-wrap td{padding:12px 10px;text-align:right;border-bottom:1px solid var(--line)}.table-wrap th{color:var(--muted);font-weight:600}.table-wrap td:first-child,.table-wrap th:first-child{text-align:left}.dep-row{display:flex;justify-content:space-between;gap:24px;font-size:14px;padding:12px 0;border-bottom:1px solid var(--line)}.days{display:grid;grid-template-columns:repeat(7,1fr);gap:12px}.day{font-size:13px;color:var(--muted);padding:12px;background:var(--input);border-radius:6px}.day strong{display:block;color:var(--text);font-size:14px;margin-top:6px}.bar{height:4px;background:var(--line);border-radius:4px;overflow:hidden;margin-top:12px}.bar i{display:block;height:100%;background:var(--blue)}
.faq{max-width:940px;margin:0 auto 28px;padding:24px 0;border-top:1px solid var(--line)}.faq h2{font-size:25px}.faq details{padding:15px 0;border-bottom:1px solid var(--line);font-size:14px}.faq details p{color:var(--muted)}summary{cursor:pointer;font-weight:600}.faq>.small{margin-top:22px}footer{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;font-size:13px;padding:0 0 30px}footer a{color:var(--muted)}
dialog{width:min(650px,calc(100vw - 28px));max-height:90dvh;overflow:auto;padding:26px;border:1px solid var(--line);border-radius:12px;background:var(--card);color:var(--text);box-shadow:0 25px 100px #0003}dialog::backdrop{background:#0b153c80;backdrop-filter:blur(3px)}dialog p{font-size:14px}dialog>.actions{margin-top:20px}.section-head{display:flex;justify-content:space-between;align-items:start;gap:16px}.section-head h2{margin:3px 0 20px}.day-editor{display:grid;grid-template-columns:1fr 1fr 1.25fr auto;align-items:end;gap:10px;margin:12px 0;padding:16px 0;border-bottom:1px solid var(--line)}.day-editor label{font-size:13px;margin:0}.day-editor input{margin-top:7px;font-size:16px}.day-editor .text-button{font-size:12px;padding:10px 2px}.error-message{color:var(--red);font-size:14px}.error-message:empty{display:none}#copy-days{margin-top:24px;border-top:1px solid var(--line);padding-top:18px;font-size:14px}.day-choices{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0}.day-choice{display:flex;align-items:center;gap:5px;border:1px solid var(--line);padding:8px;border-radius:5px;font-size:13px}.day-choice input{margin:0;width:16px;height:16px}#person-dialog>div[id$=wrap]{margin-top:16px}#person-dialog>input{font-size:16px}.extra-person{border-top:1px solid var(--line);padding:16px 0;display:grid;gap:10px;grid-template-columns:repeat(3,minmax(0,1fr))}.extra-person>strong{grid-column:1/-1;font-size:14px}.extra-person label{font-size:13px;font-weight:500}.extra-person input{margin-top:5px}.check-card{padding:16px;border:1px solid var(--line);border-radius:8px;margin:12px 0;background:var(--input);font-size:14px}.check-card.rest{background:var(--ambersoft);color:var(--amber);border-color:var(--amber)}.check-card.error{background:var(--redsoft);color:var(--red);border-color:var(--red)}.check-card p{margin:6px 0}.text-link{font-size:14px;font-weight:700;text-underline-offset:4px}.lower-actions{border-top:1px solid var(--line);padding-top:16px}
.import-panel{width:min(1160px,calc(100vw - 28px))}.import-tabs{width:fit-content;margin-bottom:20px}.import-grid{max-width:800px;margin:0 auto}.import-grid>div{width:100%}.upload-box{padding:24px;border:1px dashed var(--line);border-radius:8px;background:var(--input)}.upload-box p{font-size:13px;color:var(--muted)}.import-panel details{margin:15px 0;font-size:14px}.import-panel details p{color:var(--muted)}.import-panel .actions{margin:16px 0}.import-panel textarea{min-height:180px}.import-panel #layout{max-width:360px}#source-image{max-height:350px;max-width:100%;object-fit:contain;display:block;margin-top:16px}#upload-status{font-size:14px;color:var(--blue)}#upload-status:empty{display:none}#import-review{border-top:1px solid var(--line);padding-top:20px;margin-top:20px}.error-list{color:var(--red);font-size:14px}.import-rota{width:100%;border-collapse:collapse;table-layout:fixed;font-size:13px}.import-rota th,.import-rota td{padding:7px 3px;text-align:left;border-bottom:1px solid var(--line)}.import-rota th{overflow-wrap:anywhere}.import-rota label{margin:0}.import-rota label>span{display:none}.import-rota input{font-size:13px;padding:8px 4px}.review-grid h3{font-size:15px}
@media(max-width:1100px){.rota-table{display:block}.rota-table thead{display:none}.rota-table tbody,.rota-table tr{display:block}.rota-table td{display:block}.rota-table .employee-cell{padding:8px 0 16px;border-bottom:1px solid var(--line)}.employee-name input{font-size:18px;padding:7px 9px}.row-menu{font-size:24px;min-width:40px;min-height:40px}.rota-table .rota-day{display:flex;align-items:center;padding:8px 2px;gap:16px}.mobile-day{display:flex;gap:6px;align-items:baseline;font-size:14px;font-weight:700;width:74px;flex-shrink:0}.mobile-day small{font-size:13px;font-weight:400}.cell-content{flex:1;min-width:0;display:flex;gap:15px;align-items:center}.cell-entry{flex:1}.cell-entry input{font-size:16px;padding:10px 8px}.cell-details{position:static;opacity:1;width:40px;height:40px;flex-shrink:0;font-size:23px}.cell-meta{min-height:0;margin:0;width:120px;font-size:13px}.rota-table .row-total{display:flex;gap:10px;align-items:center;padding:14px 0!important;text-align:left}.row-total strong{margin-left:auto;font-size:18px}.mobile-total-label{display:block;font-size:14px;font-weight:700}.row-total small{font-size:13px}.grid-footer>span{display:none}.entry-help{width:auto;margin-left:auto}.entry-help p{max-width:600px}.entry-help[open]{width:100%}.summary-grid{grid-template-columns:1fr}.import-rota,.import-rota tbody,.import-rota tr{display:block}.import-rota thead{display:none}.import-rota tr{margin-bottom:20px}.import-rota th{display:block;background:var(--soft);padding:10px}.import-rota td{display:block;padding:6px 0}.import-rota label{display:flex;gap:15px;align-items:center}.import-rota label>span{display:block;width:40px;flex-shrink:0}.import-rota input{font-size:16px;padding:9px}.import-rota td:has(input[value=""]){opacity:.7}}
@media(max-width:640px){main{padding:22px 14px 0}.tool-header{min-height:66px;padding:0 18px}.tool-header nav{gap:14px}.tool-header .tool-label{display:none}.tool-header img{width:120px}h1{font-size:33px}.intro{margin-bottom:20px}.intro p{font-size:14px}.toolbar{padding:14px;gap:12px}.toolbar>.actions{width:100%;justify-content:space-between}.toolbar>.segmented{width:100%}.segmented button{flex:1}.week-toolbar{padding:14px;gap:8px}.week-picker{gap:8px;align-items:center}.week-picker label{font-size:13px}.week-picker input{width:149px;font-size:14px}.week-picker>span{display:none}.week-toolbar>.actions{margin-left:auto}.week-grid{padding:0 14px}.mobile-picker{padding:0 14px 12px}.mobile-picker .person-navigation{max-width:none}.mobile-day{width:53px;gap:4px}.rota-table .rota-day{gap:7px;padding:6px 0}.cell-content{display:block}.cell-entry input{font-size:16px;padding:8px}.cell-meta{font-size:12px;margin:0 45px 2px 9px;width:auto}.cell-meta:empty{display:none}.grid-footer{padding:10px 14px 16px;gap:8px}.entry-help summary{font-size:12px}.totals-strip{padding:16px 14px;gap:12px}.main-total{column-gap:16px;flex:1}.main-total strong{font-size:30px}.total-secondary{display:none}.totals-strip>.text-button{font-size:13px;padding:6px 0}.alert-button{order:3;width:100%;padding:8px}.utility-bar{padding:10px;gap:5px}.utility-bar #handoff{width:100%;margin-left:0;text-align:left;font-size:13px}.utility-bar #save-indicator{margin-left:auto;font-size:12px}.under-rota{margin:16px 0 30px;font-size:12px;gap:9px}.breakdown{padding:16px}.days{grid-template-columns:repeat(4,1fr);gap:8px}.day{padding:8px}.day strong{font-size:12px}.faq{padding:20px 4px}.faq h2{font-size:24px}.faq details{font-size:14px}.faq .eyebrow{font-size:11px}footer{font-size:12px;gap:12px}dialog{padding:20px;max-height:92dvh}dialog h2{font-size:25px}.day-editor{grid-template-columns:1fr 1fr;gap:12px}.day-editor label:nth-child(3){grid-column:1}.day-editor .text-button{justify-self:start;font-size:13px}.day-editor input{min-height:45px}.extra-person{grid-template-columns:1fr}.extra-person label{font-size:14px}.extra-person input{font-size:16px}.import-tabs{width:100%}.import-tabs button{font-size:13px;padding:8px}.day-choice{padding:7px}.totals-note{padding:12px 14px}}
@media print{body{background:#fff;color:#000}.tool-header,.toolbar,.week-toolbar,.mobile-picker,.week-grid,.grid-footer,.utility-bar,.under-rota,.faq,footer,dialog,#entry-status,.scope-note,.alert-button,#breakdown-toggle{display:none!important}main{max-width:none;padding:0}.intro p{display:none}.workspace{box-shadow:none;border:0}.totals-strip{position:static;background:#fff;color:#000;border:1px solid #ccc}.breakdown[hidden]{display:block!important}.table-wrap{max-height:none;overflow:visible}.summary-grid{grid-template-columns:1fr}.days{grid-template-columns:repeat(7,1fr)}.main-total strong{color:#000}.totals-note{display:block!important}.totals-note:empty{display:none!important}}
/* Optional detail stays discoverable without competing with the rota. */
.options-button{display:flex;align-items:center;gap:10px;text-align:left;padding:9px 13px;border:1px solid var(--blue);border-radius:8px;background:var(--soft);color:var(--blue);font-size:14px;font-weight:700;line-height:1.35}.options-button small{display:block;font-size:12px;color:var(--muted);font-weight:500;margin-top:3px}.options-icon{display:grid;place-items:center;font-size:24px;width:27px;height:27px}.options-button:hover{box-shadow:0 0 0 2px var(--soft)}.extra-person{grid-template-columns:repeat(2,minmax(0,1fr))}.extra-person .extra-name{font-weight:700}.extra-person input{font-size:15px}#add-person-options{margin-top:6px}#options-status:empty{display:none}.shift-handles{display:flex;gap:4px;flex-wrap:wrap;margin:2px 4px 0}.shift-handle{display:inline-flex;gap:4px;align-items:center;min-height:24px;padding:1px 5px;border:1px solid transparent;border-radius:4px;color:var(--muted);background:transparent;cursor:grab;font-size:11px;font-variant-numeric:tabular-nums;line-height:1.2}.shift-handle>span:first-child{font-size:19px}.shift-handle:hover,.shift-handle:focus{border-color:var(--line);background:var(--input);color:var(--blue)}.shift-handle:active{cursor:grabbing}.drag-word{font-size:12px}.rota-day.drop-target{background:var(--soft);outline:2px dashed var(--blue);outline-offset:-2px;border-radius:5px}.entry-notice{display:flex;align-items:center;gap:8px;padding:0 22px}.entry-notice #entry-status{margin:0}.entry-notice:has(#entry-status:empty){display:none}.entry-notice #undo-transfer{color:var(--blue)}.hours-explainer{max-width:940px;margin:0 auto 32px;padding:28px;background:var(--card);border:1px solid var(--line);border-radius:12px}.hours-explainer p{font-size:16px;color:var(--muted);line-height:1.8}.hours-explainer .text-link{display:inline-block;margin-top:8px}.print-heading{display:none}
@media(max-width:1100px){.cell-content{flex-wrap:wrap}.shift-handles{width:100%;margin-top:-8px}.shift-handle{font-size:13px}.drag-word{font-size:13px}}
@media(pointer:coarse){.shift-handle{display:none}}
@media(max-width:640px){.week-toolbar>.actions{width:100%;margin:4px 0 0}.options-button{width:100%;padding:9px 12px}.options-button>span:last-child{display:flex;align-items:center;justify-content:space-between;gap:12px;flex:1}.options-button small{font-size:11px;margin:0;max-width:145px}.extra-person{grid-template-columns:1fr}.extra-person input{font-size:16px}.hours-explainer{padding:20px}.hours-explainer h2{font-size:25px}.hours-explainer p{font-size:15px}.entry-notice{padding:0 14px;align-items:flex-start}.shift-handles{margin:2px 4px}.entry-notice #entry-status{font-size:12px}}
@media print{.print-heading{display:block;margin:0 0 22px}.print-heading img{display:block;width:160px;height:auto;margin:0 0 16px}.print-heading h1{font-family:'Plus Jakarta Sans',sans-serif;font-size:19px;font-weight:800;letter-spacing:0;line-height:1.35}.print-heading p{font-size:13px;margin-top:10px}.intro,.hours-explainer,.entry-notice,#all-checks{display:none!important}.print-heading img{print-color-adjust:exact;-webkit-print-color-adjust:exact}}
#new-template{margin:20px 0;padding:18px 0;border-block:1px solid var(--line)}#new-template>label{margin-top:15px}.template-load>label{margin-top:15px}.template-load .actions{margin-top:16px}#bulk-breaks-toggle{margin:5px 0 14px}.bulk-shift-list{max-height:340px;overflow:auto;margin:12px 0;border-top:1px solid var(--line)}.bulk-shift{display:flex;align-items:center;gap:12px;padding:12px 4px;border-bottom:1px solid var(--line);font-size:14px;font-weight:400}.bulk-shift>span{display:flex;flex-direction:column}.bulk-shift small{font-size:12px}.bulk-shift input{flex-shrink:0}#bulk-minutes{max-width:160px}.hours-formula{padding:16px;background:var(--soft);border-radius:7px;color:var(--text)!important}.hours-explainer h3{font-size:17px;margin:25px 0 8px}.hours-explainer a{text-underline-offset:3px}@media(max-width:640px){#templates-toggle{font-size:13px}.utility-bar #save-indicator{width:100%;margin:0 8px}.bulk-shift-list{max-height:40dvh}}
