:root{--bg-main:#f8fafc;--bg-surface:#fff9;--bg-surface-hover:#ffffffd9;--bg-card:#ffffff73;--bg-card-hover:#ffffffb3;--border-light:#0f172a14;--border-focus:#06b6d466;--text-primary:#0f172a;--text-secondary:#475569;--text-muted:#64748b;--text-red:#f81120;--color-cyan:#0891b2;--color-teal:#0d9488;--color-green:#16a34a;--color-blue:#2563eb;--color-amber:#d97706;--color-rose:#e11d48;--glow-cyan:#0891b21a;--glow-teal:#0d94881a;--glow-green:#16a34a1a;--glow-blue:#2563eb1a;--bg-input:#ffffffd9;--bg-tab-bar:#0f172a0a;--bg-tab-active:#ffffffe6;--bg-shift-card:#ffffffb3;--bg-panel-subtle:#0f172a05;--border-subtle:#0f172a0d;--bg-table-header:#edf2f7;--bg-table-header-today:#e2e8f0;--bg-today-col:#0f172a09;--font-sans:"Inter", system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif;--font-display:"Outfit", var(--font-sans);--transition-fast:.15s ease;--transition-normal:.25s cubic-bezier(.4, 0, .2, 1);--transition-slow:.4s cubic-bezier(.4, 0, .2, 1)}.dark-theme{--bg-main:#090d16;--bg-surface:#0f172a99;--bg-surface-hover:#0f172ad9;--bg-card:#0f172a73;--bg-card-hover:#0f172ab3;--border-light:#ffffff14;--border-focus:#06b6d499;--text-primary:#f8fafc;--text-secondary:#cbd5e1;--text-muted:#94a3b8;--text-red:#ff6b6b;--color-cyan:#22d3ee;--color-teal:#2dd4bf;--color-green:#4ade80;--color-blue:#60a5fa;--color-amber:#fbbf24;--color-rose:#fb7185;--glow-cyan:#22d3ee26;--glow-teal:#2dd4bf26;--glow-green:#4ade8026;--glow-blue:#60a5fa26;--bg-input:#0f172ad9;--bg-tab-bar:#ffffff0d;--bg-tab-active:#0f172af2;--bg-shift-card:#0f172a99;--bg-panel-subtle:#ffffff05;--border-subtle:#ffffff0f;--bg-table-header:#1e293b;--bg-table-header-today:#334155;--bg-today-col:#ffffff0a}body.dark-theme{background-image:radial-gradient(at 0 0,#06b6d41a 0,#0000 50%),radial-gradient(at 50% 100%,#14b8a60f 0,#0000 50%),radial-gradient(at 100% 0,#3b82f60f 0,#0000 50%)}.dark-theme ::-webkit-scrollbar-thumb{background:#ffffff26}.dark-theme ::-webkit-scrollbar-thumb:hover{background:#ffffff4d}.theme-toggle-switch{background:var(--bg-tab-bar);border:1px solid var(--border-light);cursor:pointer;width:56px;height:28px;transition:all var(--transition-normal);border-radius:9999px;outline:none;flex-shrink:0;justify-content:space-between;align-items:center;padding:4px 6px;display:flex;position:relative}.theme-toggle-switch:hover{border-color:var(--color-cyan);box-shadow:0 0 8px var(--glow-cyan)}.theme-icon{z-index:1;transition:transform var(--transition-normal), color var(--transition-normal)}.theme-icon.sun{color:var(--color-amber)}.theme-icon.moon{color:var(--text-muted)}.theme-toggle-thumb{width:22px;height:22px;transition:transform var(--transition-normal), background-color var(--transition-normal);background:#fff;border-radius:50%;position:absolute;top:2px;left:2px;box-shadow:0 2px 4px #00000026}.dark-theme .theme-toggle-thumb{background:#1e293b;transform:translate(28px)}.dark-theme .theme-icon.sun{color:var(--text-muted)}.dark-theme .theme-icon.moon{color:var(--color-cyan)}*{box-sizing:border-box;margin:0;padding:0}body{background-color:var(--bg-main);color:var(--text-primary);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-image:radial-gradient(at 0 0,#06b6d41f 0,#0000 50%),radial-gradient(at 50% 100%,#14b8a614 0,#0000 50%),radial-gradient(at 100% 0,#3b82f614 0,#0000 50%);background-attachment:fixed;min-height:100vh;overflow-x:hidden}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--bg-main)}::-webkit-scrollbar-thumb{background:#0f172a1a;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#0f172a40}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em;font-weight:600}h1{font-size:2.25rem;line-height:1.2}h2{font-size:1.75rem}p{color:var(--text-secondary);line-height:1.6}.glass-panel,.glass-panel-interactive{background:var(--bg-card);-webkit-backdrop-filter:blur(16px);border:1px solid var(--border-light);transition:border-color var(--transition-fast), background-color var(--transition-fast);border-radius:16px;box-shadow:0 8px 32px #0f172a0f}.glass-panel:hover,.glass-panel-interactive:hover{background:var(--bg-card-hover)}.glass-panel-interactive{cursor:pointer;transition:transform var(--transition-normal), border-color var(--transition-fast), box-shadow var(--transition-normal), background-color var(--transition-fast)}.glass-panel-interactive:hover{border-color:#06b6d440;transform:translateY(-2px);box-shadow:0 12px 40px #0f172a1a}.app-container{flex-direction:column;max-width:1400px;min-height:100vh;margin:0 auto;padding:24px;display:flex}.btn-primary{background:linear-gradient(135deg, var(--color-cyan), var(--color-teal));color:#fff;font-weight:600;font-family:var(--font-display);cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);border:none;border-radius:8px;align-items:center;gap:8px;padding:12px 24px;display:inline-flex;box-shadow:0 4px 14px #06b6d433}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 6px 20px #06b6d459}.btn-primary:active{transform:translateY(1px)}.btn-primary:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.btn-secondary{background:var(--bg-panel-subtle);color:var(--text-white);border:1px solid var(--border-light);font-weight:500;font-family:var(--font-sans);cursor:pointer;transition:background-color var(--transition-fast), border-color var(--transition-fast);border-radius:8px;align-items:center;gap:8px;padding:12px 24px;display:inline-flex}.btn-secondary:hover{background:#0f172a0f;border-color:#0f172a26}.btn-danger{background:linear-gradient(135deg, var(--color-rose), #f43f5e);color:#fff;font-weight:600;font-family:var(--font-display);cursor:pointer;transition:transform var(--transition-fast), box-shadow var(--transition-fast), opacity var(--transition-fast);border:none;border-radius:8px;align-items:center;gap:8px;padding:12px 24px;display:inline-flex;box-shadow:0 4px 14px #e11d4833}.btn-danger:hover{transform:translateY(-1px);box-shadow:0 6px 20px #e11d4859}.btn-danger:active{transform:translateY(1px)}.btn-danger:disabled{opacity:.5;cursor:not-allowed;box-shadow:none;transform:none}.btn-icon{background:var(--bg-panel-subtle);border:1px solid var(--border-light);color:var(--text-primary);cursor:pointer;width:40px;height:40px;transition:background-color var(--transition-fast), border-color var(--transition-fast);border-radius:8px;justify-content:center;align-items:center;display:inline-flex}.btn-icon:hover{background:#0f172a0f;border-color:#0f172a26}.form-input{background:var(--bg-input);border:1px solid var(--border-light);color:var(--text-primary);font-family:var(--font-sans);width:100%;transition:border-color var(--transition-fast), box-shadow var(--transition-fast);border-color:#0f172a26;border-radius:8px;padding:12px 16px;font-size:1rem}.form-input:focus{border-color:var(--color-cyan);outline:none;box-shadow:0 0 0 3px #06b6d426}.form-input::placeholder{color:var(--text-muted)}.tab-bar{background:var(--bg-tab-bar);border:1px solid var(--border-light);border-radius:12px;width:fit-content;padding:4px;display:flex}.tab-btn{color:var(--text-secondary);font-weight:500;font-family:var(--font-display);cursor:pointer;transition:color var(--transition-fast), background-color var(--transition-fast);background:0 0;border:none;border-radius:8px;align-items:center;gap:8px;padding:8px 16px;display:flex}.tab-btn:hover{color:var(--text-primary)}.tab-btn.active{background:var(--bg-tab-active);color:var(--color-cyan);box-shadow:0 2px 4px #0f172a0a}@keyframes pulse-glow{0%,to{box-shadow:0 0 15px #06b6d44d}50%{box-shadow:0 0 25px 5px #06b6d480}}.pulse-border{animation:2s ease-in-out infinite pulse-glow}.grid-cols-1-3{grid-template-columns:350px 1fr;gap:24px;display:grid}@media (width<=900px){.grid-cols-1-3{grid-template-columns:1fr}}.desktop-weekly-view{display:block}.mobile-weekly-view{display:none}@media (width<=1024px){.desktop-weekly-view{display:none}.mobile-weekly-view{flex-direction:column;gap:16px;display:flex}.weekly-control-panel{flex-direction:column!important;justify-content:center!important;align-items:center!important}.weekly-carousel{justify-content:center!important;width:100%!important;margin:0 auto!important}}.roster-days-grid{grid-template-columns:repeat(7,1fr);gap:16px;width:100%;display:grid}@media (width<=1200px){.roster-days-grid{grid-template-columns:repeat(4,1fr)}}@media (width<=768px){.roster-days-grid{grid-template-columns:repeat(2,1fr)}}@media (width<=480px){.roster-days-grid{grid-template-columns:1fr}}.user-profile-clickable{transition:transform var(--transition-fast), opacity var(--transition-fast)}.user-profile-clickable:hover{transform:translateY(-1px)}.user-profile-clickable:hover .user-name{color:var(--color-cyan)!important}.user-profile-clickable:hover img{box-shadow:0 0 12px var(--color-cyan)}.user-profile-clickable img{transition:box-shadow var(--transition-fast), border-color var(--transition-fast)}.app-header{border-radius:16px;grid-template-columns:1fr auto;grid-template-areas:"logo profile""nav nav";align-items:center;gap:16px;margin-bottom:24px;padding:18px 24px;display:grid}.logo-group-class{grid-area:logo;align-items:center;gap:12px;display:flex}.user-profile-class{grid-area:profile;justify-self:end;align-items:center;gap:12px;display:flex}.app-nav{border-top:1px solid var(--border-light);flex-wrap:wrap;grid-area:nav;justify-content:center;align-items:center;gap:8px;width:100%;padding-top:14px;display:flex}.user-profile-text{flex-direction:column;align-items:flex-end;display:flex}@media (width<=768px){.app-header{border-radius:12px;grid-template-columns:1fr auto;grid-template-areas:"logo profile""nav nav";align-items:center;gap:16px;padding:16px;display:grid}.logo-group-class{grid-area:logo;align-items:center;gap:12px;display:flex}.user-profile-class{grid-area:profile;justify-self:end;align-items:center;gap:12px;display:flex}.logo-title-group h2{font-size:1.05rem!important}.logo-title-group p{font-size:.72rem!important}.user-profile-text{display:none!important}.app-nav{border-top:1px solid var(--border-light);flex-direction:column;grid-area:nav;gap:8px;width:100%;margin-top:0;padding-top:12px;display:flex}.app-nav .tab-btn{flex:auto;justify-content:flex-start;width:100%;padding:10px 14px;font-size:.9rem}}@keyframes shake{0%,to{transform:translate(0)}20%,60%{transform:translate(-6px)}40%,80%{transform:translate(6px)}}.shake-animation{animation:.4s ease-in-out shake}.notification-toast{-webkit-backdrop-filter:blur(12px);z-index:11000;background:#0f172af2;border:1.5px solid #0891b273;border-radius:12px;flex-direction:column;gap:6px;width:340px;max-width:calc(100vw - 48px);padding:16px;animation:.35s cubic-bezier(.16,1,.3,1) slide-in-toast;display:flex;position:fixed;bottom:24px;right:24px;box-shadow:0 20px 25px -5px #00000073,0 10px 10px -5px #00000059}.notification-toast-header{border-bottom:1px solid #ffffff1a;justify-content:space-between;align-items:center;padding-bottom:6px;display:flex}.notification-toast-title{font-family:var(--font-display);color:#06b6d4;align-items:center;gap:8px;font-size:.95rem;font-weight:700;display:flex}.notification-toast-close{color:var(--text-muted);cursor:pointer;transition:color var(--transition-fast);background:0 0;border:none;padding:0 4px;font-size:1.35rem;line-height:1}.notification-toast-close:hover{color:#fff}.notification-toast-body{color:#f1f5f9;white-space:pre-wrap;font-size:.85rem;line-height:1.4}@keyframes slide-in-toast{0%{opacity:0;transform:translateY(100px)scale(.9)}to{opacity:1;transform:translateY(0)scale(1)}}.print-only-header{display:none}@media print{@page{size:A4 landscape;margin:20mm 4mm 3mm}*,:before,:after{-webkit-print-color-adjust:exact!important;print-color-adjust:exact!important;box-shadow:none!important;text-shadow:none!important}html,body,#root,.app-container{color:#0f172a!important;background:#fff!important;width:100%!important;height:auto!important;margin:0!important;padding:0!important;font-size:7.5pt!important;overflow:visible!important}header,footer,nav,.app-header,.navbar,.tab-bar,.weekly-control-panel,.no-print,.mobile-weekly-view,.no-print-btn,button,.disclaimer-overlay,.glass-modal{opacity:0!important;pointer-events:none!important;width:0!important;height:0!important;margin:0!important;padding:0!important;display:none!important}.weekly-print-wrapper{zoom:.68!important;page-break-inside:avoid!important;break-inside:avoid!important;page-break-after:avoid!important;break-after:avoid!important;width:100%!important;margin:0!important;padding:0!important;display:block!important}.desktop-weekly-view,.weekly-table-panel{width:100%!important;box-shadow:none!important;-webkit-backdrop-filter:none!important;backdrop-filter:none!important;background:0 0!important;border:none!important;margin:0!important;padding:0!important;display:block!important;overflow:visible!important}.print-only-header{border-bottom:2px solid #0f172a!important;justify-content:space-between!important;align-items:flex-end!important;width:100%!important;margin-bottom:4px!important;padding-bottom:2px!important;display:flex!important}.print-header-content{align-items:baseline!important;gap:12px!important;display:flex!important}.print-title{color:#0f172a!important;font-size:1.3rem!important;font-weight:800!important;line-height:1!important;font-family:var(--font-display), sans-serif!important;margin:0!important}.print-commencing{color:#334155!important;margin:0!important;font-size:.95rem!important;font-weight:600!important}.print-header-meta{color:#0891b2!important;font-size:.85rem!important;font-weight:600!important}table{border-collapse:collapse!important;table-layout:fixed!important;width:100%!important;min-width:0!important;margin-bottom:4px!important}th,td{vertical-align:top!important;word-wrap:break-word!important;border:1px solid #cbd5e1!important;padding:1px 2px!important;overflow:visible!important}th{color:#0f172a!important;text-align:center!important;background-color:#f1f5f9!important;padding:2px 1px!important;font-size:7.5pt!important;font-weight:700!important}th:first-child,td:first-child{text-align:center!important;background-color:#f8fafc!important;width:60px!important;font-size:7pt!important}th div,td div,span{color:#0f172a!important}div[style*=borderLeftWidth]{box-shadow:none!important;background:#f8fafc!important;border:1px solid #cbd5e1!important;border-left-width:2px!important;border-radius:2px!important;margin-bottom:1px!important;padding:1px 2px!important;font-size:6.8pt!important;line-height:1.1!important}div[style*=borderLeftWidth] span{font-size:6.8pt!important}.weekly-leave-panel{-webkit-backdrop-filter:none!important;backdrop-filter:none!important;box-shadow:none!important;page-break-inside:avoid!important;break-inside:avoid!important;background:#f8fafc!important;border:1px solid #cbd5e1!important;border-radius:4px!important;margin-top:4px!important;padding:4px 6px!important;display:block!important}.weekly-leave-panel h3{color:#0f172a!important;margin:0 0 3px!important;font-size:8.5pt!important;font-weight:700!important}.weekly-leave-panel div[style*=gridTemplateColumns],.weekly-leave-panel div[style*=leaveGrid]{grid-template-columns:repeat(auto-fill,minmax(130px,1fr))!important;gap:3px!important;display:grid!important}.weekly-leave-panel div[style*=justifyContent]{background:#fff!important;border:1px solid #e2e8f0!important;border-radius:3px!important;padding:2px 4px!important;font-size:6.5pt!important}table,tbody,tr{page-break-inside:avoid!important;break-inside:avoid!important}}
