@import "https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&display=swap";:root{--primary:#6366f1;--primary-hover:#4f46e5;--primary-dark:#1e1b4b;--primary-light:#eef2ff;--secondary:#f59e0b;--accent:#06b6d4;--bg-main:#f8fafc;--bg-surface:#fff;--bg-surface-glass:#ffffffb3;--bg-dark:#0f172a;--text-primary:#0f172a;--text-secondary:#64748b;--text-light:#f1f5f9;--border-light:#e2e8f0;--border-focus:#6366f1;--shadow-xs:0 1px 2px #0000000a;--shadow-sm:0 1px 3px #0000000f, 0 1px 2px #0000000a;--shadow-md:0 4px 6px -1px #00000012, 0 2px 4px -2px #0000000d;--shadow-lg:0 10px 15px -3px #00000014, 0 4px 6px -4px #0000000d;--shadow-float:0 20px 40px -8px #6366f133;--radius-sm:6px;--radius-md:10px;--radius-lg:14px;--radius-xl:20px;--font-family:"Inter", system-ui, -apple-system, sans-serif;--transition:.15s cubic-bezier(.4, 0, .2, 1)}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;overflow:hidden}body{font-family:var(--font-family);background-color:var(--bg-main);color:var(--text-primary);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:13px;line-height:1.5}#root{flex-direction:column;height:100vh;display:flex}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:#f1f5f9}::-webkit-scrollbar-thumb{background:linear-gradient(180deg, var(--app-accent-light,#818cf8), var(--app-accent,#6366f1));border:2px solid #f1f5f9;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg, var(--app-accent,#6366f1), var(--app-accent-dark,#4f46e5))}*{scrollbar-width:thin;scrollbar-color:var(--app-accent,#6366f1) #f1f5f9}.glass-panel{background:var(--bg-surface-glass);-webkit-backdrop-filter:blur(16px);box-shadow:var(--shadow-sm);border-radius:var(--radius-lg);border:1px solid #ffffff80}.btn-primary{background:linear-gradient(135deg, var(--primary) 0%, var(--primary-hover) 100%);color:#fff;border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;transition:all var(--transition);letter-spacing:.01em;border:none;padding:8px 18px;font-size:12px;font-weight:600;box-shadow:0 1px 3px #6366f14d}.btn-primary:hover{box-shadow:var(--shadow-float);filter:brightness(1.1);transform:translateY(-1px)}.btn-primary:active{transform:translateY(0)}.btn-secondary{color:var(--text-primary);border:1px solid var(--border-light);border-radius:var(--radius-sm);font-family:var(--font-family);cursor:pointer;transition:all var(--transition);background:#fff;padding:8px 18px;font-size:12px;font-weight:500}.btn-secondary:hover{box-shadow:var(--shadow-xs);background:#f8fafc;border-color:#cbd5e1}.input-premium{border:1.5px solid var(--border-light);border-radius:var(--radius-sm);width:100%;font-family:var(--font-family);transition:all var(--transition);color:var(--text-primary);background:#f8fafc;outline:none;padding:9px 12px;font-size:13px}.input-premium:focus{border-color:var(--border-focus);background:#fff;box-shadow:0 0 0 3px #6366f11a}.roster-container{width:100%}.roster-header-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.roster-sticky-header{z-index:100;background:var(--bg-main);margin-bottom:4px;padding:8px 0;position:sticky;top:-24px}.roster-grid-wrapper{border-radius:var(--radius-md);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);background:#fff;overflow:auto}.roster-table{border-collapse:separate;border-spacing:0;table-layout:fixed;width:100%}.nhs-corner-header{background:var(--primary-dark);z-index:30;width:100px;min-width:100px;height:36px;padding:6px 10px;position:sticky;left:0;box-shadow:4px 0 8px #0000001a}.corner-icon-container{color:#fff;justify-content:center;align-items:center;gap:6px;height:100%;font-size:11px;font-weight:600;display:flex}.icon-badge{font-size:16px}.nhs-day-header{border-bottom:2px solid var(--border-light);text-align:left;cursor:pointer;height:36px;transition:background var(--transition);background:#fafbfc;min-width:90px;padding:6px 8px;position:relative}.nhs-day-header:hover{background:var(--primary-light)}.nhs-day-name{color:#94a3b8;text-transform:uppercase;letter-spacing:.05em;margin-bottom:1px;font-size:9px;font-weight:700;display:block}.nhs-day-num{color:var(--text-primary);font-size:17px;font-weight:300;line-height:1.1;display:block}.nhs-staff-row{height:54px}.nhs-staff-row:nth-child(2n) td{background-color:#fafbfc}.nhs-staff-row:nth-child(2n) td.nhs-sticky-staff{background-color:#fff!important}.nhs-sticky-staff{z-index:200;contain:paint;vertical-align:middle;background-color:#fff;border-right:2px solid #94a3b8;width:130px;min-width:130px;padding:0;position:sticky;left:0;overflow:hidden;transform:translateZ(0);box-shadow:5px 0 12px -2px #00000040}.nhs-sticky-staff-inner{box-sizing:border-box;background-color:#fff;align-items:center;gap:4px;width:100%;height:100%;min-height:54px;padding:4px 6px;display:flex}.nhs-staff-row:nth-child(2n) .nhs-sticky-staff .nhs-sticky-staff-inner{background-color:#f1f5f9}.nhs-avatar-circle{background:linear-gradient(135deg,#eef2ff 0%,#e0e7ff 100%);border-radius:50%;justify-content:center;align-items:center;width:26px;min-width:26px;height:26px;font-size:12px;display:flex}.nhs-role-badge{color:#fff;letter-spacing:.02em;text-transform:uppercase;border-radius:4px;flex-shrink:0;margin-right:4px;padding:1px 4px;font-size:8px;font-weight:800;line-height:1.3}.staff-name-text{white-space:nowrap;text-overflow:ellipsis;max-width:65px;overflow:hidden;color:var(--text-primary)!important;font-size:11px!important;font-weight:700!important}.nhs-cell-td{border-bottom:1px solid #e2e8f0;border-right:1px solid #e2e8f0;min-width:90px;padding:0}.nhs-roster-cell{z-index:1;height:100%;min-height:48px;transition:all var(--transition);flex-direction:column;justify-content:center;align-items:stretch;gap:1px;display:flex;position:relative}.striped-empty{background:repeating-linear-gradient(-45deg,#fff,#fff 6px,#f8fafc 6px 12px);border:1px solid #e2e8f0}.quick-add-btn{border:1.5px solid var(--primary);width:20px;height:20px;color:var(--primary);cursor:pointer;opacity:0;z-index:10;box-shadow:var(--shadow-sm);background:#fff;border-radius:50%;justify-content:center;align-items:center;font-size:14px;font-weight:800;transition:all .2s;display:flex;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.nhs-roster-cell:hover .quick-add-btn{opacity:1}.quick-add-btn:hover{background:var(--primary);color:#fff;transform:translate(-50%,-50%)scale(1.1)}.quick-add-menu{border:1px solid var(--border-light);z-index:9999;background:#fff;border-radius:8px;flex-direction:column;gap:2px;min-width:160px;max-height:70vh;padding:4px;animation:.15s ease-out fadeSlideIn;display:flex;position:fixed;overflow-y:auto;box-shadow:0 8px 24px #0000002e}.quick-add-option{cursor:pointer;color:var(--text-primary);border-radius:4px;align-items:center;gap:8px;padding:6px 10px;font-size:11px;font-weight:600;transition:background .1s;display:flex}.quick-add-option:hover{background:var(--primary-light)}.empty-text{color:#c4cad3;-webkit-user-select:none;user-select:none;text-transform:uppercase;letter-spacing:.03em;font-size:9px;font-weight:500}.nhs-shift-card{z-index:1;cursor:grab;text-align:left;width:100%;transition:all var(--transition);border-left:3px solid #00000014;border-radius:0;flex-direction:column;align-items:flex-start;padding:5px 8px;display:flex;position:relative;box-shadow:0 1px 2px #0000000a}.nhs-shift-card:hover{box-shadow:var(--shadow-md);transform:translateY(-1px)}.nhs-shift-card:active{cursor:grabbing;transform:scale(1.02)}.card-time{color:var(--text-primary);font-size:10px;font-weight:700;line-height:1.3}.card-ward{color:#64748b;font-size:9px;line-height:1.2}.card-icon{opacity:.3;font-size:16px;position:absolute;bottom:3px;right:4px}.shift-actions{opacity:0;z-index:50;gap:3px;transition:all .15s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:2px;right:2px;transform:translateY(-2px)}.nhs-shift-card:hover .shift-actions{opacity:1;transform:translateY(0)}.action-btn{cursor:pointer;border:none;border-radius:4px;justify-content:center;align-items:center;width:20px;height:20px;padding:0;font-size:11px;font-weight:900;transition:transform .1s,box-shadow .1s;display:flex;box-shadow:0 1px 3px #00000040}.action-btn:hover{transform:scale(1.15);box-shadow:0 2px 6px #0000004d}.action-btn.edit{color:#fff;background:#2563eb;font-size:10px}.action-btn.edit:hover{background:#1d4ed8}.action-btn.delete{color:#fff;background:#dc2626;font-size:13px;line-height:1}.action-btn.delete:hover{background:#b91c1c}.sick-tag{color:#fff;letter-spacing:.03em;background:#ef4444;border-radius:3px;padding:1px 4px;font-size:7px;font-weight:800;position:absolute;top:-5px;right:-5px}.border-red{border:1px solid #fca5a5}.compact-grid-mode .roster-table{table-layout:auto}.compact-grid-mode .nhs-corner-header,.compact-grid-mode .nhs-sticky-staff{width:80px;min-width:80px;padding:3px 4px}.compact-grid-mode .corner-icon-container span,.compact-grid-mode .card-time,.compact-grid-mode .card-ward,.compact-grid-mode .empty-text{display:none}.compact-grid-mode .nhs-shift-card{border-left:none;justify-content:center;align-items:center;padding:3px}.compact-grid-mode .card-icon{opacity:1;font-size:14px;position:static}.compact-grid-mode .nhs-day-name{font-size:7px}.compact-grid-mode .nhs-day-num{font-size:13px}.compact-grid-mode .nhs-day-header{min-width:36px;height:34px;padding:2px}.compact-grid-mode .nhs-cell-td{min-width:36px;padding:0}.compact-grid-mode .nhs-staff-row{height:36px}.compact-grid-mode .nhs-roster-cell{align-items:stretch;min-height:32px}.compact-grid-mode .nhs-avatar-circle{width:22px;min-width:22px;height:22px;font-size:10px}.compact-grid-mode .nhs-role-badge{padding:1px 3px;font-size:7px}.compact-grid-mode .staff-name-text{max-width:40px;font-size:9px!important}@keyframes pulse-border{0%,to{border-color:var(--primary)}50%{border-color:#0000}}@keyframes fsRingPulse{0%{opacity:.7;transform:scale(.85)}70%{opacity:0;transform:scale(1.55)}to{opacity:0;transform:scale(1.55)}}.fullscreen-pulse-ring{pointer-events:none;border:2px solid #8b5cf6b3;border-radius:10px;animation:1.8s ease-out infinite fsRingPulse;position:absolute;inset:-4px}.fullscreen-pulse-ring-delay{border-color:#a855f780;animation-delay:.9s}@keyframes spin{to{transform:rotate(360deg)}}.glass-panel{animation:.2s ease-out fadeSlideIn}@keyframes fadeSlideIn{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}.staff-directory-page{animation:.2s ease-out fadeSlideIn}.staff-grid-card{transition:all var(--transition)}.staff-grid-card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.staff-list-row:hover{background-color:#f8fafc!important}@keyframes pulsebg{0%{background-color:#eef2ff}50%{background-color:#c7d2fe}to{background-color:#eef2ff}}.highlight-pulse{animation:1.5s ease-in-out infinite pulsebg}.fullscreen-profile-modal{background-color:#fff;box-shadow:none!important;border-radius:0!important}.compliance-alert-banner{color:#991b1b;box-sizing:border-box;background-color:#fee2e2;border-bottom:2px solid #fca5a5;align-items:flex-start;gap:12px;width:100%;padding:14px 24px;display:flex}.profile-section{border-top:1px solid #f1f5f9;padding:18px 0}.profile-section-title{color:#64748b;letter-spacing:.06em;text-transform:uppercase;margin-bottom:14px;font-size:12px;font-weight:700}.required-note{color:#94a3b8;text-transform:none;letter-spacing:0;font-size:11px;font-weight:400}.profile-grid-2{grid-template-columns:1fr 1fr;gap:14px;display:grid}.profile-field{flex-direction:column;gap:5px;display:flex}.profile-field label{color:#475569;font-size:11px;font-weight:700}.profile-field .input-premium:disabled{color:#334155;cursor:default;background-color:#f8fafc;border-color:#e2e8f0}.staff-directory-header{z-index:60!important;background:#1e3a5f!important;position:sticky!important;top:46px!important;box-shadow:0 4px 10px #0003!important}.staff-directory-table-header th{z-index:55!important;color:#fff!important;background:#1e3a5f!important;position:sticky!important;top:110px!important;box-shadow:0 2px 4px #0000001a!important}.roster-grid-wrapper{border-radius:var(--radius-md);border:1px solid var(--border-light);max-height:calc(100vh - 160px);box-shadow:var(--shadow-sm);background:#fff;overflow:auto!important}.rota-full-screen .roster-grid-wrapper{box-shadow:none;border:none;border-radius:0;height:calc(100vh - 20px)!important;max-height:calc(100vh - 20px)!important}.rota-full-screen .card-ward,.rota-full-screen .card-icon,.rota-full-screen .empty-text{display:none!important}.rota-full-screen .nhs-staff-row{height:28px!important}.rota-full-screen .nhs-roster-cell{gap:0!important;min-height:28px!important;padding:1px 2px!important}.rota-full-screen .nhs-shift-card{border-radius:2px!important;margin:0!important;padding:1px 4px!important}.rota-full-screen .card-time{font-size:8.5px!important;line-height:1.2!important}.rota-full-screen .nhs-sticky-staff-inner{gap:3px!important;min-height:28px!important;padding:1px 4px!important}.rota-full-screen .nhs-sticky-staff,.rota-full-screen .nhs-corner-header{width:110px!important}.rota-full-screen .nhs-day-header{padding:1px!important}.rota-full-screen .nhs-day-name{font-size:7px!important}.rota-full-screen .striped-empty{background:#fafafa!important;border:none!important}.rota-full-screen .compact-grid-mode .card-time{white-space:nowrap;overflow:hidden;font-size:7px!important;line-height:1.1!important;display:block!important}.rota-full-screen .compact-grid-mode .nhs-shift-card{min-height:14px!important;padding:1px 2px!important}.rota-full-screen .compact-grid-mode .nhs-staff-row{height:32px!important}.rota-full-screen .compact-grid-mode .nhs-roster-cell,.rota-full-screen .compact-grid-mode .nhs-sticky-staff-inner{min-height:32px!important}.nhs-corner-header,.nhs-day-header{box-shadow:0 2px 4px #0000000d;z-index:105!important;background:#fafbfc!important;position:sticky!important;top:0!important}.nhs-corner-header{z-index:120!important;left:0!important}.nhs-sticky-staff{z-index:200!important;background-color:#fff!important;border-right:3px solid #475569!important;width:160px!important;min-width:160px!important;max-width:160px!important;position:sticky!important;left:0!important;transform:translateZ(0)!important;box-shadow:6px 0 16px -2px #0000004d!important}.nhs-staff-row:nth-child(2n) .nhs-sticky-staff{background-color:#fff!important}.nhs-corner-header{z-index:220!important;background-color:#f1f5f9!important;border-right:2px solid #94a3b8!important;width:130px!important;min-width:130px!important;transform:translateZ(0)!important;box-shadow:5px 0 12px -2px #0000002e,0 2px 4px #0000000d!important}.dedicated-print-layout{display:none}@media print{*{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}@page{size:A4 landscape;margin:5mm}.sidebar,.top-header,.roster-header-controls,.nav-tabs,button,.print-hide,.roster-grid-wrapper{display:none!important}.dedicated-print-layout{display:block!important}.site-banner-bar{page-break-after:always;break-after:page}html,body,.main-layout{background:#fff!important;height:auto!important;margin:0!important;padding:0!important;overflow:visible!important}.traditional-rota-table{border-collapse:collapse;table-layout:fixed;width:100%;font-family:Arial,sans-serif;font-size:8pt}.traditional-rota-table th,.traditional-rota-table td{text-align:center;vertical-align:middle;border:1px solid #000;padding:.5px 1px;line-height:1.1}.col-name{width:14%;font-weight:700;text-align:left!important;padding-left:4px!important}.col-role{width:4%;font-weight:700}.traditional-rota-table th,.traditional-rota-table td{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}.page-break-wrapper{page-break-after:always;background:#fff!important}.dedicated-print-layout h2{color:#1e3a8a!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}@keyframes birthdayBounce{0%,to{transform:translateY(0)rotate(-5deg)}50%{transform:translateY(-3px)rotate(5deg)}}.birthday-cake-icon{filter:drop-shadow(0 0 3px #facc15b3);animation:1.4s ease-in-out infinite birthdayBounce;display:inline-block}
