/* Shared visual language. Operational behaviour and custom role colours stay intact. */
:root{--bg:#161715;--surface:#1f211e;--raised:#282b26;--line:#3c4037;--ink:#f0ece3;--muted:#b6baad;--cream:#eee5d5;--accent:#e0cda5;--positive:#b1c9ac;--amber:#ddbd83;--error:#f0afa2;color-scheme:dark;background:var(--bg);color:var(--ink);font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',sans-serif;font-size:16px}html,body{background:var(--bg);color:var(--ink)}body{line-height:1.45}button,input,select,textarea{font-family:inherit}button,a,input,select,textarea,summary{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}button:disabled{cursor:default}.sample,.dev-banner{background:#23251f;color:#b8b49f;padding:6px 12px;font-size:9px;letter-spacing:1.2px}header{padding-bottom:20px;border-color:var(--line)}.brand-surface{display:inline-flex;align-items:center;justify-content:center;background:var(--cream);padding:9px 11px;border-radius:3px;flex-shrink:0}.official-logo{width:156px;height:auto;display:block}.location{font-size:9px;letter-spacing:2.5px;color:var(--muted);margin:9px 0 0}.staff-label{font-size:10px;line-height:1.7;color:var(--muted)}h1{font-family:Georgia,'Times New Roman',serif;font-weight:400;letter-spacing:-.65px}h1 em{color:var(--accent)}.eyebrow{color:#bdb498;letter-spacing:1.5px;font-size:10px}button{border-radius:7px}button,.staff-panel button,.request-card button{background:var(--raised);border-color:#4a5043;color:var(--ink)}button:hover{background:#35392f}.primary,.staff-panel .gold-button{background:var(--accent);color:#22251c;border-color:var(--accent)}.primary:hover,.staff-panel .gold-button:hover{background:#efe0bf}input,select,textarea,.staff-panel input,.staff-panel select,.staff-panel textarea{background:#181b16;border-color:#53594a;color:var(--ink);border-radius:6px}a{color:var(--accent)}.panel,.staff-panel,.request-card{background:var(--surface);border-color:var(--line);border-radius:10px}.muted,.small-note,small{color:var(--muted)}.notification-inbox{margin:8px 0}.notification-inbox summary{min-height:36px;font-size:12px;color:var(--muted)}.inbox-item{background:var(--surface);border-color:var(--line)}.pending-badge,.inbox-count{background:#5c5036;color:#f1d7a6;font-size:11px;height:20px;min-width:20px}.context-panel{background:#282d24;border-color:#454f3c;color:var(--ink);padding:14px}.context-panel h3{font-size:14px}.context-panel p{margin:6px 0}.context-panel ul{margin:8px 0}.request-status{display:inline-block;font-size:10px;letter-spacing:1px;border-radius:4px;padding:3px 7px;background:#3d3425;color:#e5c993}.request-status.approved{background:#29382a;color:#bdd3b4}.request-status.declined{background:#33342f;color:#c7c7bb}.request-card h3{font-size:16px}.private-note{background:#292b25;border-left:2px solid #837b65}.private-note strong{font-size:11px;letter-spacing:.7px;color:var(--muted);text-transform:uppercase}.private-note p{margin:7px 0 0}.warning,#message:not(.success),#staff-message:not(.success){background:#362320;border-color:#a2685e;color:#f2c0b6}.warning strong{display:block}.warning>span{display:block;font-size:12px;margin-top:4px}.warning p{margin:6px 0 0;font-size:13px}#message.success,#staff-message.success{background:#253126;border-color:#4e674a;color:#c4d9bb}.na-warning{background:#352f23;border-color:#75613f;color:#e8cea0}dialog{background:var(--surface);border-color:#6b6654;border-radius:12px;box-shadow:0 20px 70px #0008;line-height:1.6}dialog h2{font-family:Georgia,serif;font-weight:400;font-size:25px}dialog .actions{margin-top:22px}dialog button{min-height:44px}.actual-hours{color:var(--muted);border-color:var(--line);font-size:11px}.actual-label{color:var(--amber);font-size:9px}.actual-line{flex-wrap:wrap;gap:4px}.actual-line strong{color:var(--ink)}
/* Staff: narrow reading width and compact role groups, never an editing grid. */
body:has(#staff-login) main{max-width:800px;padding:24px 22px 32px}.account-bar{margin-top:12px;color:var(--muted);font-size:12px}.account-bar button{border:0;background:none;color:var(--muted);padding:6px 0;min-height:44px}.staff-tabs{position:sticky;top:0;z-index:5;background:var(--bg);padding:7px 0;margin:4px 0 18px;gap:4px}.staff-tabs button{background:transparent;border-radius:0;min-height:46px;color:var(--muted);font-size:11px;letter-spacing:.5px;border-bottom:2px solid var(--line)}.staff-tabs button[aria-pressed=true]{background:transparent;color:var(--cream);border-bottom-color:var(--accent)}.intro{margin:20px 0}.intro h1{font-size:29px}.week-toggle{background:#252922;border:1px solid var(--line);padding:3px;border-radius:8px}.week-toggle button{font-size:11px;letter-spacing:1px;min-height:42px;border-radius:5px}.week-toggle button[aria-pressed=true]{background:var(--cream);color:#24271f;box-shadow:none}.week-meta{margin:18px 0 14px}.week-meta h2{font-size:15px;font-weight:500}.published{border:0;background:#2a3629;color:var(--positive);font-size:10px;padding:4px 8px}#days{gap:4px}#days button{background:#22261f;border-radius:7px;min-height:65px;padding:8px 0 11px}#days button[aria-pressed=true]{background:var(--cream);color:#22261c}#days button span{font-size:10px;margin-bottom:4px}#days button strong{font-size:19px;font-weight:500}#days button.today{border-color:#b29f74}.day-heading{margin:23px 0 14px}.day-heading h2{font-size:26px}.day-heading>span{font-size:11px}.day-heading .eyebrow{font-size:9px;margin-bottom:4px;color:#bdaf8f}#services{gap:14px;align-items:start}.service{background:var(--surface);border-color:var(--line);border-radius:10px}.service-head{background:#282c25;padding:12px 15px;border-color:var(--line)}.service-head h3{font:22px Georgia,serif}.service-head h3 span{font:16px sans-serif;color:#cbb78d;margin-right:8px}.service-head>span{font-size:11px;color:var(--muted)}.staff-role{padding:12px 15px 10px;border-bottom:1px solid #34392f}.staff-role:last-child{border-bottom:0}.staff-role h4{color:var(--role-colour);font-size:10px;font-weight:650;letter-spacing:1.5px;text-transform:uppercase;margin:0 0 4px;display:flex;align-items:center;gap:7px}.staff-role h4:before{content:'';width:5px;height:5px;border-radius:50%;background:var(--role-colour)}.staff-role .shift{border:0;padding:3px 0 3px 12px;min-height:28px;gap:10px}.staff-role .name{font-size:16px;font-weight:500;overflow-wrap:anywhere}.staff-role .time{font-size:14px;color:#c4c7bb}.staff-role .actual-hours{margin-top:6px}footer{margin-top:20px}.updated{font-size:11px;color:var(--muted)}.footnote{color:#a5ac9d;font-size:10px}details{border-color:var(--line)}.staff-panel{margin:18px 0;padding:18px}.staff-panel h2{margin:0 0 18px;font-size:18px}.staff-panel form{gap:14px}.staff-panel label{font-size:13px}#na-view>h1{font-size:30px}.request-history{margin-top:24px}.request-history h2{font-size:19px}.request-card{padding:15px}#staffing-context{overflow-wrap:anywhere}#staffing-context .warning{margin:0}#staffing-context h3{letter-spacing:.6px}body:has(#staff-login) .empty{padding:20px 15px;font-size:13px}
/* Admin: compact operational controls and explicit exception hierarchy. */
body:has(#workspace) main{max-width:1480px;padding:22px 28px 45px}body:has(#workspace) header{gap:20px}header>span{letter-spacing:1.6px;color:var(--muted)}.workspace-heading{margin:22px 0 19px}.workspace-heading h1{font-size:29px}.workspace-heading .eyebrow{margin:0 0 4px}.tabs{gap:6px;margin-bottom:16px;padding-bottom:8px;border-color:var(--line)}.tabs button{background:none;border:0;border-bottom:2px solid transparent;border-radius:0;color:var(--muted);padding:9px 13px}.tabs button[aria-current=page]{background:none;border-color:var(--accent);color:var(--ink)}.toolbar h2{font-size:18px}.week-nav button{font-size:12px}.state-strip{background:#252a22;border:1px solid var(--line);border-left:3px solid #bba777;border-radius:8px;padding:14px 16px;gap:16px;margin-bottom:15px}.state-strip strong{font-size:14px;color:var(--accent)}.state-strip p{font-size:12px;color:var(--muted);margin-top:5px}.actions button{font-size:12px}.day-cell{background:#21261f;border-color:var(--line);min-height:112px;padding:10px;gap:5px;border-radius:7px}.day-cell.selected{background:#343a2c;border-color:#c6b184}.day-cell.conflict{border-color:#b57467}.day-cell .unavailable-count{color:#c9b387}.day-cell .day-name{font-size:11px}.day-date{font-size:23px}.day-cell small{font-size:10px}.detail-heading h2{font-size:25px}#day-detail{margin-top:21px}.service-card{border-color:var(--line);border-radius:9px;margin:14px 0}.service-heading{background:#2a3026;padding:12px 15px}.service-heading h3{font:23px Georgia,serif}.role-sections{background:var(--line)}.role-section{background:var(--surface);padding:14px 15px}.role-section h4{font-size:10px;letter-spacing:1.4px;color:#d3ccb8;margin-bottom:8px}.role-section h4>span{font-size:10px;color:var(--muted)}.assignment-row{border-color:#333a2d;min-height:41px;font-size:15px}.assignment-row strong{color:var(--ink);font-weight:500}.assignment-row>div>span{font-size:13px;color:var(--muted)}.assignment-actions button{color:#b9beaf;font-size:11px;min-height:38px;padding:6px}.assignment-warning{border-left:2px solid #d99b8d;padding-left:8px}.assignment-warning .needs-review{color:var(--error)}.assignment-accepted .needs-review{color:#cdb789;font-weight:400;font-size:10px}.add-staff{color:#bfb498;background:none;font-size:12px;min-height:44px}.add-staff:hover{background:none;color:var(--cream)}.override-info{display:flex;align-items:center;gap:10px;border:1px solid #504936;background:#29281f;border-radius:6px;color:#d5bc8a;padding:0 13px;min-height:44px;font-size:12px;margin-bottom:15px}.override-info button{border:0;background:none;text-decoration:underline;color:#e0c99e;padding:6px;font-size:12px;min-height:42px}.override-detail{padding:14px 0;border-bottom:1px solid var(--line);font-size:14px}.override-detail p{margin:5px 0;color:#d5bc8a;font-size:13px}#close-overrides{margin-top:20px}.staff-picker{background:#282e23;border-color:#756c53;padding:12px;border-radius:8px}.staff-candidate{background:#1d231a;border-color:#444d3b;min-height:51px}.staff-candidate.selected{background:#38412f;outline-color:#d0bb91}.candidate-status{gap:4px 8px}.status-tag{font-size:10px}.status-tag.danger{color:#edb3a5}.time-chips button{border-radius:5px;font-size:11px;min-height:44px}.time-chips button[aria-pressed=true]{background:var(--cream);color:#24271f}.audit{background:none;border:0;padding:14px 0}.audit h2{font-size:15px;color:var(--muted)}.audit-row{border-color:var(--line);font-size:12px}.audit-row strong{font-weight:500}.requests-layout{grid-template-columns:280px minmax(0,1fr);gap:18px}.request-list-item{background:#252a21;border-color:var(--line);padding:12px}.request-list-item.selected{background:#34392b;border-color:#aa9872}.request-list-item .request-status{justify-self:start}.request-list-item strong{font-size:15px}#admin-request-detail h2{font:28px Georgia,serif;margin:4px 0 8px}#admin-request-detail>p{margin:8px 0;font-size:14px}#admin-request-detail h3{font-size:12px;letter-spacing:.5px;margin:20px 0 10px}#admin-request-detail ul{padding-left:20px;font-size:13px}.coverage-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.coverage-card{background:#283225;border:1px solid #3d4a36;padding:9px 12px;border-radius:6px;display:grid;grid-template-columns:1fr auto;align-items:center;gap:2px 10px}.coverage-card span{font-size:12px}.coverage-card strong{font-size:22px;font-weight:500;color:#c5d4bb}.coverage-card.zero{background:#3b2521;border-color:#995f55}.coverage-card.zero strong{color:#efb3a7}.coverage-card.low{background:#3b3425;border-color:#77623f}.coverage-card.low strong{color:#e2c28b}.coverage-card small{grid-column:1/-1;font-size:9px;letter-spacing:.7px}.coverage-grid+p.muted{font-size:11px}#admin-request-detail .actions{margin-top:22px}.record{border-color:var(--line)}
@media(max-width:850px){.requests-layout{grid-template-columns:1fr}.state-strip{align-items:flex-start}.coverage-card{padding:9px}.header-actions{gap:12px}}@media(max-width:650px){body:has(#staff-login) main{padding:18px 16px 28px}header{padding-bottom:16px}.official-logo{width:144px}.brand-surface{padding:8px 10px}.intro{margin:15px 0}.intro h1{font-size:27px}#services{grid-template-columns:1fr}.staff-tabs{margin-bottom:12px}.staff-tabs button{font-size:10px}.week-meta h2{font-size:14px}.day-heading h2{font-size:25px}.staff-panel{padding:16px}body:has(#workspace) main{padding:16px 14px 35px}.workspace-heading{margin:18px 0}.workspace-heading h1{font-size:26px}.tabs{gap:0}.tabs button{padding:8px;font-size:11px}.state-strip{padding:12px}.state-strip .actions{gap:6px}.state-strip .actions button{font-size:11px;padding:9px}.header-actions{margin-left:0;justify-content:space-between;width:100%}.week-grid{grid-template-columns:repeat(7,minmax(64px,1fr))}.day-cell{padding:8px 6px;min-height:110px}.day-cell .day-name{font-size:10px}.role-sections{grid-template-columns:1fr}.assignment-actions button{min-height:44px;min-width:38px}.coverage-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.form-pair{grid-template-columns:1fr}}@media(min-width:651px){#services:has(>.service:only-child){grid-template-columns:1fr}.staff-role .shift{max-width:100%}}@media(max-width:370px){.staff-tabs button{font-size:9px;letter-spacing:0}.week-meta{gap:5px}.week-meta h2{font-size:13px}.intro h1{font-size:25px}.staff-role{padding:11px 13px}}
.account-bar #staff-inbox{margin-left:auto;margin-right:15px}.account-bar .notification-inbox{position:relative;margin:0}.account-bar .notification-inbox[open]{position:absolute;z-index:8;left:16px;right:16px;top:145px;padding:14px;background:var(--surface);border:1px solid var(--line);border-radius:8px;box-shadow:0 12px 30px #0007}.account-bar .notification-inbox summary{min-height:44px}.account-bar .notification-inbox[open] summary{min-height:30px}.account-bar .inbox-count{min-width:18px;height:18px;font-size:10px}
.state-strip[data-state=published]{border-left-color:#95ad88}.state-strip[data-state=published] #draft-state{color:#bdd0b2}
/* Fedele's brand direction: black, red and restrained green. */
:root{--bg:#111212;--surface:#1b1d1d;--raised:#252828;--line:#393e3d;--ink:#f5f3ef;--muted:#b7bfbb;--cream:#f2f0ea;--accent:#d71920;--positive:#a9cfb8;--amber:#ddbd83;--error:#f0afa2}html,body{background:var(--bg)}.sample,.dev-banner{background:#1c2020;color:#a9b1ad}.brand-surface{background:#f2f0ea}.intro h1 em{color:#f2f0ea}.eyebrow{color:#aebbb4}.primary,.staff-panel .gold-button{background:#ce1720;color:#fff;border-color:#ce1720}.primary:hover,.staff-panel .gold-button:hover{background:#e2212a;color:#fff}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline-color:#f05a60}a{color:#eceeea}.staff-panel a{color:#e6ebe7}.week-toggle{background:#212525;border-color:var(--line)}.week-toggle button[aria-pressed=true]{background:#ce1720;color:#fff}.staff-tabs button[aria-pressed=true]{color:#fff;border-bottom-color:#df252d}.tabs button[aria-current=page]{color:#fff;border-color:#df252d}#days button{background:#202424}#days button[aria-pressed=true]{background:#ce1720;color:#fff}#days button.today{border-color:#58856c}#days button.today:after{background:#7ebf9b}#days button.today[aria-pressed=true]:after{background:#fff}.day-heading .eyebrow{color:#9ab5a6}.published{background:#20372b;color:#b2d4bf}.service-head,.service-heading{background:#252c29}.service-head h3 span{color:#a5b9ac}.staff-role{border-color:#323936}.staff-role .time{color:#c0c8c3}.staff-role .actual-hours{border-color:var(--line)}#refresh{color:#d8ded9}.clock{color:#a0b8aa}.footnote{color:#a1aaa4}.staff-panel input,.staff-panel select,.staff-panel textarea,input,select,textarea{background:#141818;border-color:#4b5650}.context-panel{background:#222d26;border-color:#3e5145}.private-note{background:#242929;border-left-color:#667b6b}.request-card.highlight{border-color:#bf3038}.request-card button,.staff-panel button:not(.gold-button){background:#262d29;border-color:#465449;color:#edf1eb}.notification-inbox[open]{background:var(--surface)}.day-cell{background:#202525;border-color:#3c4541}.day-cell.selected{background:#322123;border-color:#d34850}.day-cell.today .day-date{color:#b9d7c5}.day-cell.conflict{border-color:#d18c7e}.state-strip{background:#222827;border-color:#3e4642;border-left-color:#77867e}.state-strip strong{color:#e1e7e2}.state-strip[data-state=published]{border-left-color:#538a68}.state-strip[data-state=published] #draft-state{color:#b2d4bf}.role-sections{background:#39433c}.role-section h4{color:#d5dfd8}.role-section{background:var(--surface)}.assignment-row{border-color:#343d36}.add-staff{color:#bbc9c0}.add-staff:hover{color:#fff}.staff-picker{background:#252d29;border-color:#627768}.staff-candidate{background:#1a211e;border-color:#414f47}.staff-candidate.selected{background:#303c33;outline-color:#80a68c}.time-chips button[aria-pressed=true]{background:#ce1720;color:#fff}.time-chips button{background:#252d28;border-color:#4b5a50}.request-list-item{background:#222925;border-color:#3e4b42}.request-list-item.selected{background:#2a3830;border-color:#6a8c75}.coverage-card{background:#25342b;border-color:#405745}.coverage-card strong{color:#bed6c4}.coverage-card.low{background:#3b3425;border-color:#77623f}.coverage-card.low strong{color:#e2c28b}.coverage-card.zero{background:#3b2521;border-color:#995f55}.coverage-card.zero strong{color:#efb3a7}.override-info{background:#29281f;border-color:#504936;color:#d5bc8a}.override-info button{color:#e0c99e}.override-detail p{color:#d5bc8a}dialog{border-color:#617066}.status-tag{color:#b8d0bf}.status-tag.caution,.status-tag.pending{color:#e1c58c}.status-tag.danger{color:#efb4ab}.request-status.approved{background:#223a2a;color:#b8d6bf}.request-status.declined{background:#323838;color:#c5ceca}#normal-pattern{border-color:#5e7263}#message.success,#staff-message.success{background:#203629;border-color:#4b7658;color:#c5e0cb}
/* Mobile refinement: neutral charcoal surfaces; brand red is reserved for actions/selection. */
:root{--bg:#111213;--surface:#1c1e20;--raised:#27292c;--line:#383b3f;--ink:#f5f3ef;--muted:#b8bbc0;--cream:#f2f0ec}
.sample,.dev-banner{background:#1c1e20;color:#afb2b8}.eyebrow,.location,.staff-label,.footnote{color:var(--muted)}
button,.staff-panel button:not(.gold-button),.request-card button{background:var(--raised);border-color:#46494e;color:var(--ink)}button:hover{background:#33363a}
.primary,.staff-panel .gold-button{background:#ce1720;border-color:#ce1720;color:#fff}.primary:hover,.staff-panel .gold-button:hover{background:#e2212a}
input,select,textarea,.staff-panel input,.staff-panel select,.staff-panel textarea{background:#151719;border-color:#4b4f54;color:var(--ink)}
.week-toggle,#days button,.day-cell,.request-list-item{background:#222427}.service-head,.service-heading{background:#27292c}.service-head h3 span,.staff-role .time{color:#bec1c6}
.staff-role,.assignment-row{border-color:#34373b}.context-panel,.private-note,.staff-picker{background:#25272a;border-color:#45494e}.private-note{border-left-color:#737981}
.staff-panel label,.inbox-item,.role-section h4,.assignment-actions button,.add-staff,.audit-row,.record,.context-panel{color:var(--ink)}
.staff-candidate{background:#1c1e20;border-color:#464a50}.staff-candidate.selected,.request-list-item.selected{background:#342125;border-color:#d34850;outline-color:#d34850}
.time-chips button{background:#27292c;border-color:#4b4e54}.time-chips button[aria-pressed=true],.week-toggle button[aria-pressed=true],#days button[aria-pressed=true]{background:#ce1720;color:#fff}
.role-sections{background:var(--line)}.state-strip{background:#242629;border-color:#41454a;border-left-color:#7e838b}.state-strip strong{color:var(--ink)}
.pending-badge,.inbox-count{background:#373b41;color:#f3f4f5}.request-status:not(.approved):not(.declined){background:#35383d;color:#d6d9de}dialog{border-color:#555b62}
.coverage-card:not(.low):not(.zero){background:#25272a;border-color:#45494e}.coverage-card:not(.low):not(.zero) strong{color:#d8e0dc}
.add-staff{background:none}.add-staff:hover{background:none;color:#fff}.staff-tabs button{background:transparent}.account-bar button{background:none}.override-info button{background:none;color:#e0c99e}
body:has(#staff-login) .account-bar{position:relative}body:has(#staff-login) .account-bar .notification-inbox[open]{top:0;left:0;right:0}
@media(max-width:650px){
 body:has(#staff-login) main{padding:10px 16px max(24px,env(safe-area-inset-bottom))}
 body:has(#staff-login) header{padding-bottom:8px;min-height:56px;gap:12px}
 body:has(#staff-login) .brand-surface{padding:4px 7px}
 body:has(#staff-login) .official-logo{width:144px}
 body:has(#staff-login) .location{margin:3px 0 0;font-size:8px;letter-spacing:2px;line-height:1.2}
 body:has(#staff-login) .staff-label{font-size:9px;line-height:1.35}
 body:has(#staff-login) .account-bar{margin-top:0;min-height:44px}
 body:has(#staff-login) .account-bar button{padding:6px 8px;min-height:44px}
 body:has(#staff-login) .staff-tabs{padding:0;margin:0 0 7px}
 body:has(#staff-login) .staff-tabs button{min-height:44px;padding:8px 4px}
 body:has(#staff-login) .intro{margin:7px 0 10px}
 body:has(#staff-login) .intro h1{font-size:23px;line-height:1.18;letter-spacing:-.45px}
 body:has(#staff-login) .week-toggle button{min-height:44px}
 body:has(#staff-login) .week-meta{margin:10px 0}
 body:has(#staff-login) #days{gap:3px}
 body:has(#staff-login) #days button{min-height:60px;padding:7px 0 10px}
 body:has(#staff-login) .day-heading{margin:14px 0 10px}
 body:has(#staff-login) .day-heading h2{font-size:23px;line-height:1.2}
}
/* viewport-fit=cover includes the iOS status region. Inset the page once,
   and keep sticky Staff navigation below it when the page is scrolled. */
body:has(#staff-login){padding-top:env(safe-area-inset-top,0px);padding-left:env(safe-area-inset-left,0px);padding-right:env(safe-area-inset-right,0px)}
body:has(#staff-login) .staff-tabs{top:env(safe-area-inset-top,0px)}
@media(max-width:650px){
 /* Read-only roster groups: comfortable separation with closely grouped employees. */
 body:has(#staff-login) .staff-role{padding:8px 15px}
 body:has(#staff-login) .staff-role h4{line-height:1.2;margin-bottom:4px}
 body:has(#staff-login) .staff-role .shift{padding:0 0 0 12px;min-height:24px}
 body:has(#staff-login) .staff-role .name{font-size:17px;font-weight:550;line-height:1.35;color:var(--ink)}
}

/* Amber conveys a small warning cue, never the colour of explanatory prose. */
.override-info{background:var(--surface);border-color:var(--line);border-left:2px solid var(--amber);color:var(--ink)}
.override-info button,.override-detail p{color:var(--ink)}
.override-detail{color:var(--ink)}.override-detail small{color:var(--muted)}
.assignment-accepted .needs-review{color:var(--muted)}
.assignment-accepted .needs-review:before{content:'';display:inline-block;width:5px;height:5px;margin-right:6px;border-radius:50%;background:var(--amber);vertical-align:middle}
.na-warning,#connection{background:var(--surface);border-color:var(--line);border-left:2px solid var(--amber);color:var(--ink)}
.coverage-card.low{background:var(--surface);border-color:var(--line);border-left:2px solid var(--amber)}
.coverage-card.low strong{color:var(--ink)}
.identity,.candidate-status,.day-cell .unavailable-count,.record small,.audit-row,.actual-hours,.actual-label{color:var(--muted)}
#normal-pattern{background:var(--surface);border-color:var(--line)}
/* Employee management is separate from the approved roster builder. */
.employee-toolbar{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.employee-toolbar h2{margin:0}.employee-record{display:flex;justify-content:space-between;align-items:center;gap:14px;padding:16px 0;border-bottom:1px solid var(--line)}.employee-record small{display:block;margin-top:4px}.access-badge{display:inline-block;font-size:10px;letter-spacing:.7px;padding:4px 7px;border-radius:4px;background:var(--raised);color:var(--muted)}.access-badge.active{background:#20372b;color:var(--positive)}.employee-dialog{width:min(700px,calc(100% - 24px));max-height:90dvh;overflow:auto;padding:22px}.employee-dialog form{display:grid;gap:15px}.employee-dialog fieldset{border:1px solid var(--line);border-radius:7px;padding:14px;min-width:0}.employee-dialog legend{color:var(--ink);font-size:14px}.employee-dialog label{display:grid;gap:6px;font-size:13px}.employee-dialog input,.employee-dialog select,.employee-dialog textarea{width:100%;min-width:0;min-height:44px;padding:9px;font:inherit}.employee-dialog .check-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.employee-dialog .check-grid label,.employee-dialog .check{display:flex;align-items:center;gap:8px;min-height:44px}.employee-dialog input[type=checkbox]{width:20px;min-height:20px}.employee-dialog .actions{display:flex;flex-wrap:wrap;gap:8px}.employee-dialog button,.employee-record button{min-height:44px}.employee-detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.employee-dialog .availability-row{display:grid;grid-template-columns:1fr 1fr;gap:12px;align-items:center;margin:6px 0}.employee-dialog .rule-row{background:var(--raised);border-radius:6px;padding:12px;margin:10px 0;display:grid;gap:10px}.employee-dialog .invite-link{overflow-wrap:anywhere;font-size:12px}.employee-dialog .message-link{display:inline-flex;align-items:center;min-height:44px;padding:8px 12px;background:var(--raised);border:1px solid var(--line);border-radius:7px;text-decoration:none}.invitation-page{padding:env(safe-area-inset-top,0px) env(safe-area-inset-right,0px) env(safe-area-inset-bottom,0px) env(safe-area-inset-left,0px)}.invitation-page main{max-width:600px}.invitation-page .staff-panel h1{font-size:27px}.invitation-page input{font-size:16px}#install-welcome{border-left:2px solid var(--accent)}@media(max-width:650px){.employee-detail-grid{grid-template-columns:1fr}.employee-dialog .check-grid{grid-template-columns:1fr 1fr}.employee-dialog{padding:16px}.invitation-page main{padding:16px}.employee-record{align-items:flex-start}.employee-record .row-actions{flex-wrap:wrap}}

/* NA presentation only: success green is scoped to the confirmation card. */
.staff-panel.na-success-card{border:1px solid #65b486;box-shadow:0 0 18px #65b48612;background:var(--surface)}
.na-success-card #na-form-title{display:none}
.na-success-heading{display:flex;align-items:center;gap:12px;margin-bottom:18px}
.na-success-tick{display:inline-flex;align-items:center;justify-content:center;flex:0 0 48px;width:48px;height:48px;border-radius:50%;background:#65b486;color:#101b14;font:700 29px/1 system-ui}
.na-success-label{color:#85d1a6;font-size:12px;font-weight:750;letter-spacing:1.3px}
#na-success h3{font-size:21px;line-height:1.3;margin:0 0 12px}
#na-success p{line-height:1.6}
#na-success button{min-height:44px;margin:6px 8px 0 0}
#na-success #view-sent-request{background:var(--accent);border-color:var(--accent);color:#fff}
#na-success #another-request{background:var(--raised);border:1px solid var(--line);color:var(--ink)}
#admin-request-detail .na-request-summary{display:block;padding:0 0 16px;margin:0;border-bottom:1px solid var(--line)}
.na-request-summary .eyebrow{margin:0 0 10px}
#admin-request-detail .na-request-summary h2{font-size:27px;line-height:1.2;margin:0 0 12px}
.na-request-summary .na-request-dates{font-size:21px;font-weight:650;line-height:1.4;margin:0 0 12px}
.na-request-period{display:flex;align-items:center;flex-wrap:wrap;gap:10px 16px}
.na-request-period strong{font-size:12px;letter-spacing:1px;background:var(--raised);padding:6px 9px;border-radius:5px}
.na-request-period span{font-size:14px;color:var(--ink)}
.na-request-summary .na-request-capabilities{font-size:12px;margin:12px 0 0}
.request-list-item .request-list-dates{font-weight:600;color:var(--ink);line-height:1.5}
@media(max-width:650px){.na-request-summary .na-request-dates{font-size:19px}#admin-request-detail .na-request-summary h2{font-size:25px}}

/* Shift requests use the existing dark surfaces and action colours. */
.change-grid{display:grid;grid-template-columns:minmax(220px,1fr) minmax(0,2fr);gap:20px;margin-top:20px}.change-detail{min-width:0;background:#171919;padding:20px;border:1px solid #383c3c;border-radius:14px}.change-comparison{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin:20px 0}.change-comparison section{background:#202424;padding:14px;border-radius:10px}.change-assignment{display:grid;gap:5px;padding:10px 0;line-height:1.5}.change-assignment span{color:#d2d7d3;font-size:.9rem}.change-error,.compose-error{color:#ffacaa}.change-workspace select{max-width:100%}.change-compose{max-width:620px;width:calc(100% - 30px)}.change-compose .request-list-item{width:100%}.shift-change-action{grid-column:1/-1;justify-self:start;padding:9px 12px!important;margin-top:6px;font-size:.8rem!important;min-height:44px}.staff-tabs{overflow-x:auto}.staff-tabs button{flex-shrink:0}.change-detail .check-label{display:flex;gap:10px;padding:12px 0}.change-detail input[type=checkbox]{width:20px;height:20px;flex-shrink:0}.change-success{color:#8bcca0}#access-label{font-size:.85rem;color:#d5dcd7}
@media(max-width:700px){.change-grid,.change-comparison{grid-template-columns:1fr}.change-detail{padding:16px}.change-workspace h2{font-size:1.3rem}.account-bar{flex-wrap:wrap}.change-detail .actions{display:flex;flex-wrap:wrap;gap:8px}.change-detail .actions button{min-height:44px}.change-list{display:grid;gap:8px}.change-compose{max-height:90dvh;overflow:auto}}
.change-workspace .request-list-item,.change-compose .request-list-item{display:flex;flex-direction:column;align-items:flex-start;gap:7px;text-align:left;background:#202424;border:1px solid #414848;border-radius:10px;padding:14px;margin:8px 0;color:#f2f4f2;font:inherit;line-height:1.5;width:100%}.change-compose .request-list-item strong{font-size:1rem}.change-compose .request-list-item small{color:#a8cbb0;font-size:.8rem}.change-workspace .request-list-item.selected{border-color:#c95252;background:#2d2022}.change-count{display:block;color:#b6bebb;font-size:.82rem;font-weight:400;line-height:1.5;margin-top:5px}

.request-segments{display:flex;gap:8px;padding:8px 0 18px}.request-segments button{flex:1;min-height:46px;background:#202424;border:1px solid #414848;color:#f2f4f2;border-radius:9px;padding:10px;font:inherit}.request-segments button[aria-pressed=true]{border-color:#d55151;background:#392326}.request-segments span{display:inline-block;min-width:20px;padding:1px 5px;border-radius:10px;background:#363c3a;margin-left:4px;font-size:.8rem}.refresh-icon{display:inline-block}#refresh[data-state=loading] .refresh-icon{animation:roster-spin .8s linear infinite}#refresh[data-state=success]{color:#8dcc9e}#refresh-feedback{color:#efaaaa;font-size:.85rem;min-height:1.2em}#refresh-feedback:empty{display:none}@keyframes roster-spin{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){#refresh[data-state=loading] .refresh-icon{animation-duration:2s}}

/* Shared Staff / Manager monthly NA calendar. */
.month-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;margin:20px 0 12px}.month-nav h2{font:600 19px/1.3 inherit;margin:0}.month-nav button{min-width:44px;min-height:44px;font-size:26px}.month-weekdays,.month-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));gap:4px}.month-weekdays{color:#a5aaa7;text-align:center;font-size:11px;margin-bottom:8px}.month-cell{position:relative;display:flex;align-items:center;flex-direction:column;justify-content:flex-start;gap:4px;min-width:0;min-height:76px;padding:8px 2px!important;border:1px solid #343837;background:#1b1e1d;color:#eee;border-radius:9px;font-size:14px}.month-cell strong{font-size:15px}.month-cell small{font-size:10px;white-space:nowrap}.month-cell[aria-pressed=true]{border-color:#df4246;background:#392023}.month-cell.in-range{background:#402326;border-color:#9f373c}.calendar-add{font-size:20px;line-height:22px;color:#d5d9d6}.own-dots{display:flex;gap:4px;min-height:5px}.own-dots i{width:5px;height:5px;border-radius:50%;background:#d9a54b}.own-dots i.approved{background:#76bf92}.approved{color:#76bf92}.pending{color:#d9a54b}.calendar-legend{font-size:12px;color:#aab0ac;display:flex;gap:7px;align-items:center}.na-date-sheet{box-sizing:border-box;width:min(560px,100%);max-width:100%;max-height:90dvh;margin:auto auto 0;padding:20px 18px calc(20px + env(safe-area-inset-bottom));background:#151817;color:#eee;border:1px solid #414744;border-radius:20px 20px 0 0;overflow-y:auto}.na-date-sheet::backdrop{background:#0009}.na-date-sheet #close-na-sheet{float:right;min-width:44px;min-height:44px;font-size:25px}.na-date-sheet h2{font-size:22px}.na-date-sheet .staff-panel{padding:14px 0;border:0;background:transparent}.na-date-sheet .context-panel{padding:10px 0}.na-date-sheet select,.na-date-sheet input,.na-date-sheet textarea{box-sizing:border-box;width:100%}#na-range-toggle{margin-bottom:12px;min-height:44px}#own-date-requests .request-card{padding:12px}.day-summary{display:block;font-size:9px!important;line-height:1.4;color:#aab1ad;white-space:nowrap;letter-spacing:0!important}.day-summary span{display:block}.day-summary.working{color:#eee;font-weight:600}#days button{padding-left:2px;padding-right:2px;min-width:0;height:auto;min-height:83px}#days button[aria-pressed=true] .day-summary{color:#fff}
.selected-na-range{border-left:3px solid #d0444b;background:#342124;padding:12px;border-radius:8px;font-weight:600}.month-nav h2{font-family:inherit;font-size:19px;font-weight:600;line-height:1.3}.na-date-sheet label{display:block;margin:12px 0}.na-date-sheet button{min-height:44px}#na-range-fields{display:grid;grid-template-columns:1fr 1fr;gap:10px}#na-range-fields[hidden]{display:none}

/* Shared selected-state and status semantics for Staff and Admin. */
:root{--status-approved:#8ed5a6;--status-approved-bg:#20372b;--status-declined:#ff9ca3;--status-declined-bg:#402429;--status-pending:#f0c66d;--status-pending-bg:#3b3120;--status-neutral:#b9c0c4;--selected-ink:#fff}
button[aria-pressed=true],nav button[aria-pressed=true],.request-segments button[aria-pressed=true],.month-cell[aria-pressed=true],.day-cell.selected,.staff-candidate.selected,.request-list-item.selected{color:var(--selected-ink)}
button[aria-pressed=true] :is(strong,small,span),.day-cell.selected :is(.day-date,.day-name,small),.staff-candidate.selected>strong,.request-list-item.selected>strong{color:var(--selected-ink)}
.request-status{background:#2b3033;color:var(--status-neutral)}
.request-status.approved,.status-tag.approved{background:var(--status-approved-bg);color:var(--status-approved)}
.request-status.declined,.request-status.rejected,.status-tag.declined,.status-tag.rejected{background:var(--status-declined-bg);color:var(--status-declined)}
.request-status.request-status.pending,.request-status.pending_recipient,.request-status.awaiting_manager,.status-tag.pending{background:var(--status-pending-bg);color:var(--status-pending)}
.request-status.neutral{background:#2b3033;color:var(--status-neutral)}
.approved,.notification-subject.approved,.success{color:var(--status-approved)}
.declined,.rejected,.notification-subject.declined{color:var(--status-declined)}
.pending,.notification-subject.pending{color:var(--status-pending)}
.pending-badge{background:var(--status-pending-bg);color:var(--status-pending)}
.own-dots{gap:6px;min-height:11px;align-items:center}.own-dots i{width:10px;height:10px;background:var(--status-pending);border:1px solid #fff5;box-shadow:0 0 0 2px #1118}.own-dots i.approved{background:var(--status-approved)}
.calendar-legend .pending{color:var(--status-pending);font-size:17px}.calendar-legend .approved{color:var(--status-approved);font-size:17px}
.inbox-item,.inbox-item.read{opacity:1;background:var(--surface);padding:16px;margin:12px 0;border-color:var(--line);gap:8px}.inbox-item .notification-subject{font-size:14px;font-weight:700;line-height:1.4}.inbox-item .notification-details{color:var(--ink);font-size:13px;line-height:1.6}.inbox-item .notification-reason{color:var(--ink);border-top:1px solid var(--line);padding-top:9px;font-size:13px;white-space:pre-wrap}.inbox-item small{color:var(--status-neutral);font-size:11px}.inbox-item.unread{border-left:3px solid #a8b0b5}.inbox-item.read{border-left:3px solid transparent}
#days button.today:after{content:none}#days .today-label{font-size:9px;line-height:1.2;letter-spacing:.2px;color:var(--ink);font-weight:700}#days button.today{position:relative}#days button[aria-pressed=true] .today-label{color:var(--selected-ink)}

/* Staff date-sheet polish only; keep range controls and privacy context intact. */
#na-date-sheet .approved-away-list{list-style:none;margin:10px 0;padding:0}#na-date-sheet .approved-away-list li{margin:7px 0;padding:0}
#na-date-sheet #na-range-toggle{background:transparent;border:0;box-shadow:none;color:var(--muted);font-size:12px;font-weight:500;min-height:44px;padding:9px 0;margin:0;text-align:left;text-decoration:underline;text-underline-offset:3px}
#na-date-sheet #na-range-toggle:hover{color:var(--ink);background:transparent}
#na-date-sheet #close-na-sheet{width:44px;height:44px;min-width:44px;min-height:44px;padding:0;display:inline-grid;place-items:center;font:400 22px/1 -apple-system,BlinkMacSystemFont,sans-serif;color:var(--ink);background:transparent;border:0;border-radius:50%;box-shadow:none}
#na-date-sheet #close-na-sheet:hover{background:#ffffff0b}#na-date-sheet #close-na-sheet:focus-visible{outline:2px solid #c8cecb;outline-offset:1px}

/* Existing weekly strip: readable compact service/count and personal start lines. */
#days{grid-template-columns:repeat(7,minmax(0,1fr))}
#days .day-summary{font-size:10px!important;line-height:1.25;letter-spacing:-.15px!important;color:#c1c6ca;margin-top:4px}
#days .day-summary span{font-size:inherit;line-height:inherit;margin:0;letter-spacing:inherit}
#days .day-summary.working{color:#f5f3ef;font-weight:500}
#days .tile-start{font-weight:650;font-variant-numeric:tabular-nums;margin-top:1px}
#days button[aria-pressed=true] .day-summary{color:#fff}

@media(max-width:390px){#days .day-summary:not(.working){font-size:9.5px!important;letter-spacing:-.25px!important}}

.push-controls{padding:12px 0;max-width:420px}.push-controls h3{margin:10px 0 6px}.push-controls .actions{display:flex;flex-wrap:wrap;gap:8px}.push-controls button{min-height:44px}.push-controls [data-push-enable]{background:var(--red,#b3292c);color:#fff}

.published-change-card{padding:12px;margin:12px 0;border:1px solid var(--line);border-radius:8px;background:var(--surface)}.published-change-card h3{font-size:12px;letter-spacing:1px}.published-change-card p{margin:6px 0}#override-dialog{max-height:90dvh;overflow:auto}
