*{box-sizing:border-box}body{margin:0;font:15px/1.5 system-ui,Arial;background:#f4f6f9;color:#1b2430}header{background:#101827;color:#fff;padding:18px 4%;display:flex;justify-content:space-between;align-items:center;gap:20px}header strong{font-size:20px}header small{display:block;color:#aeb8c8}nav{display:flex;flex-wrap:wrap;gap:12px}nav a{color:#fff;text-decoration:none;font-size:14px}main{max-width:1180px;margin:25px auto;padding:0 18px;min-height:75vh}.lang{text-align:right}.lang a{font-size:12px;margin-left:7px;color:#445}.card{background:#fff;border:1px solid #dde3eb;border-radius:12px;padding:20px;margin:18px 0;box-shadow:0 5px 18px #16213e0b}.narrow{max-width:520px}.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:15px}.stat{background:#fff;border-radius:12px;padding:24px;border:1px solid #dde3eb}.stat b{font-size:34px;display:block}.stat span{color:#687385}form label{display:block;margin:10px 0}input,select,button{font:inherit;padding:10px 12px;border:1px solid #cbd3df;border-radius:8px}input,select{width:100%;background:#fff}button,.button{background:#14213d;color:#fff;border:0;cursor:pointer;text-decoration:none;display:inline-block;padding:10px 14px;border-radius:8px}.danger{background:#a4161a}.inline{display:grid;grid-template-columns:2fr 1.3fr 1fr auto;gap:10px;align-items:end}.formgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:12px}.wide{grid-column:span 3}table{width:100%;border-collapse:collapse;background:#fff;border-radius:12px;overflow:hidden}th,td{padding:11px;border-bottom:1px solid #e5e9ef;text-align:left}th{background:#eef2f7}.flash{background:#e8f7ee;border:1px solid #b9e5c8;padding:12px;border-radius:8px}.error{background:#fff0f0;border:1px solid #efb4b4;padding:12px;border-radius:8px}.toolbar{display:flex;gap:10px;margin-bottom:15px}footer{text-align:center;padding:25px;color:#778}@media(max-width:800px){header{display:block}nav{margin-top:14px}.grid{grid-template-columns:1fr}.inline,.formgrid{grid-template-columns:1fr}.wide{grid-column:auto}table{display:block;overflow-x:auto}}@media print{header,.lang,.toolbar,footer{display:none}main{margin:0;max-width:none}body{background:#fff}}
/* Excel-style weekly roster */
.grid-toolbar{align-items:center;flex-wrap:wrap}.grid-toolbar strong{margin-right:auto}.secondary{background:#4b5563}.roster-help{font-size:14px}.roster-help span{color:#667085}.excel-wrap{overflow:auto;border:1px solid #cfd6df;border-radius:10px;background:#fff;box-shadow:0 8px 24px #10203a12}.excel-grid{min-width:1450px;border-collapse:separate;border-spacing:0;border-radius:0}.excel-grid th,.excel-grid td{border-right:1px solid #d9dee7;border-bottom:1px solid #d9dee7;padding:0;text-align:center}.excel-grid thead th{position:sticky;top:0;z-index:4;background:#e7edf5;padding:10px 6px}.excel-grid .sticky-col{position:sticky;left:0;z-index:3;background:#fff}.excel-grid thead .sticky-col{z-index:6;background:#dce5f0}.employee-col{min-width:180px}.role-col{min-width:135px}.employee-name{padding:12px!important;text-align:left!important}.role-cell{padding:8px!important;text-align:left!important;font-size:13px}.role-cell small,.day-head small,.total-hours small{display:block;color:#667085}.day-head{min-width:150px}.weekend{background-color:#faf3e8!important}.shift-cell{padding:6px!important;vertical-align:top;min-width:150px;transition:.15s}.shift-select{font-weight:800;text-align:center;padding:6px;width:100%;border-radius:5px}.time-row{display:flex;align-items:center;gap:3px;margin-top:5px}.time-row input{padding:5px 2px;font-size:12px;min-width:0}.cell-note{margin-top:5px;padding:5px;font-size:12px}.code-f{background:#fff7cc!important}.code-m{background:#e7f2ff!important}.code-s{background:#eadfff!important}.code-b{background:#ffe5cc!important}.code-k{background:#dff6e5!important}.code-o{background:#eef1f4!important}.code-u{background:#dcecff!important}.code-kr{background:#ffdede!important}.total-col{min-width:80px}.total-hours{background:#f6f8fb;padding:8px!important}.total-hours b{font-size:18px;display:block}.save-bar{position:sticky;bottom:0;background:#f4f6f9e8;padding:14px 0;text-align:right;backdrop-filter:blur(5px)}
@media(max-width:800px){.excel-wrap{margin-left:-18px;margin-right:-18px;border-radius:0}.grid-toolbar strong{width:100%;order:-1}.employee-col{min-width:145px}.day-head,.shift-cell{min-width:135px}}
@media print{@page{size:landscape;margin:7mm}.excel-grid{min-width:100%;font-size:9px}.excel-wrap{overflow:visible;border:0;box-shadow:none}.shift-cell{min-width:0}.shift-cell input,.shift-cell select{border:0;background:transparent;padding:1px}.cell-note{display:none}.save-bar,.roster-help{display:none}.excel-grid .sticky-col,.excel-grid thead th{position:static}.day-head{min-width:0}}
.occupancy-strip{display:grid;grid-template-columns:180px repeat(7,minmax(135px,1fr)) 90px;min-width:1250px;background:#eef3f8;border:1px solid #cfd8e3;border-bottom:0}.occ-label,.occ-day,.occ-total{padding:10px;border-right:1px solid #cfd8e3}.occ-day{display:grid;grid-template-columns:1fr 1fr;gap:3px;font-size:12px}.occ-day b{grid-column:1/-1;font-size:13px}.occ-day span{white-space:nowrap}.rules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:14px}.rule-card{background:#fff;border:1px solid #d9e1ea;border-radius:10px;padding:14px;display:flex;align-items:center;justify-content:space-between;gap:14px}.rule-card span{display:flex;flex-direction:column}.rule-card small{color:#64748b;margin-top:4px}.rule-card input{width:90px}.status-ok{color:#087443}.status-warn{color:#b45309}.status-danger{color:#b91c1c}.cell-warning{box-shadow:inset 0 0 0 2px #ef4444}.employee-name small{display:block;font-weight:400;color:#64748b}.autosave-indicator{font-size:12px;color:#64748b}.metric-pills{display:flex;gap:8px;flex-wrap:wrap}.metric-pill{padding:6px 9px;border-radius:999px;background:#edf2f7;font-size:12px}.print-title{display:none}@media print{header,.lang,h1,.toolbar,.roster-help,.save-bar,footer{display:none!important}.print-title{display:block}.excel-wrap{overflow:visible}.occupancy-strip,.excel-grid{min-width:0;width:100%;font-size:9px}.shift-cell input,.shift-cell select{border:0;background:transparent;padding:0}.cell-note{display:none}.time-row{font-size:8px}}

/* v1.3 Manager Operations Dashboard */
.manager-toolbar{display:flex;gap:10px;align-items:center;flex-wrap:wrap;margin-bottom:18px}.manager-toolbar>strong{margin-right:auto}.publish-form{display:flex;gap:10px;align-items:center;margin:0}.publication{font-weight:700;padding:7px 10px;border-radius:999px;font-size:12px;text-transform:uppercase}.publication.published{background:#dcfce7;color:#166534}.publication.draft{background:#fef3c7;color:#92400e}.manager-kpis{display:grid;grid-template-columns:repeat(4,minmax(140px,1fr));gap:12px;margin-bottom:18px}.kpi{background:#fff;border:1px solid #dbe2ea;border-radius:14px;padding:16px;box-shadow:0 3px 12px rgba(15,23,42,.05)}.kpi span{display:block;color:#64748b;font-size:12px;text-transform:uppercase;letter-spacing:.04em}.kpi b{display:block;font-size:27px;margin-top:6px}.kpi.danger{border-color:#fecaca;background:#fff7f7}.kpi.warn{border-color:#fde68a;background:#fffbeb}.kpi.ok{border-color:#bbf7d0}.dashboard-columns{display:grid;grid-template-columns:minmax(0,1.6fr) minmax(300px,.9fr);gap:16px}.table-scroll{overflow:auto}.ops-table{width:100%;border-collapse:collapse}.ops-table th,.ops-table td{padding:11px 9px;border-bottom:1px solid #e5e7eb;text-align:left}.ops-table td small{display:block;color:#64748b}.risk{display:inline-block;padding:5px 9px;border-radius:999px;font-size:12px;font-weight:700}.risk-low{background:#dcfce7;color:#166534}.risk-medium{background:#fef3c7;color:#92400e}.risk-high{background:#ffedd5;color:#9a3412}.risk-critical{background:#fee2e2;color:#991b1b}.text-danger{color:#b91c1c;font-weight:800}.text-ok{color:#15803d;font-weight:800}.alert-list,.compact-list{display:grid;gap:8px}.alert-item,.compact-list>div{display:flex;justify-content:space-between;gap:12px;padding:10px;border:1px solid #fee2e2;background:#fff7f7;border-radius:9px}.compact-list>div{border-color:#e5e7eb;background:#f8fafc}.alert-item span,.compact-list span{color:#64748b;font-size:13px;text-align:right}.empty-ok{padding:14px;background:#f0fdf4;color:#166534;border-radius:9px}@media(max-width:900px){.manager-kpis{grid-template-columns:repeat(2,minmax(130px,1fr))}.dashboard-columns{grid-template-columns:1fr}}@media(max-width:520px){.manager-kpis{grid-template-columns:1fr 1fr}.kpi{padding:12px}.kpi b{font-size:21px}.manager-toolbar .button,.manager-toolbar button{font-size:12px;padding:8px}}
