@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}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;min-height:100vh;display:flex}::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:0 0}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:99px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}.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-sticky-staff{z-index:20;border-right:1px solid var(--border-light);background:#fff;align-items:center;gap:4px;width:100px;min-width:100px;padding:4px 6px;display:flex;position:sticky;left:0;box-shadow:4px 0 8px #0000000d}.nhs-staff-row:nth-child(2n) .nhs-sticky-staff{background-color:#fafbfc}.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{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:1000;box-shadow:var(--shadow-lg);background:#fff;border-radius:8px;flex-direction:column;gap:2px;min-width:130px;padding:4px;animation:.15s ease-out fadeSlideIn;display:flex;position:absolute;top:60%;left:50%;transform:translate(-50%)}.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{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;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:1px solid var(--border-light);box-shadow:var(--shadow-sm);z-index:50;background:#ffffffe6;border-radius:4px;gap:1px;padding:1px 3px;transition:all .2s cubic-bezier(.4,0,.2,1);display:flex;position:absolute;top:1px;right:1px;transform:translateY(-2px)}.nhs-shift-card:hover .shift-actions{opacity:1;transform:translateY(0)}.action-btn{cursor:pointer;background:0 0;border:none;border-radius:3px;justify-content:center;align-items:center;padding:2px 4px;transition:background .1s;display:flex}.action-btn:hover{background:#0000000d}.action-btn.edit{color:#3b82f6;font-size:10px}.action-btn.delete{color:#ef4444;font-size:14px;font-weight:800}.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:60px;min-width:60px;padding:3px}.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}}.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}.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{background:#fff;box-shadow:2px 0 4px #0000000d;z-index:90!important;position:sticky!important;left:0!important}.dedicated-print-layout{display:none}@media print{@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}body,.main-layout{background:#fff!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;padding-top:20px;background:#fff!important}.dedicated-print-layout h2{color:#1e3a8a!important;-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important}}
