@import"https://cdnjs.cloudflare.com/ajax/libs/font-awesome/5.15.4/css/all.min.css";/*! tailwindcss v4.1.14 | MIT License | https://tailwindcss.com */@layer properties{@supports ((-webkit-hyphens:none) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-blur:initial;--tw-brightness:initial;--tw-contrast:initial;--tw-grayscale:initial;--tw-hue-rotate:initial;--tw-invert:initial;--tw-opacity:initial;--tw-saturate:initial;--tw-sepia:initial;--tw-drop-shadow:initial;--tw-drop-shadow-color:initial;--tw-drop-shadow-alpha:100%;--tw-drop-shadow-size:initial;--tw-shadow:0 0 #0000;--tw-shadow-color:initial;--tw-shadow-alpha:100%;--tw-inset-shadow:0 0 #0000;--tw-inset-shadow-color:initial;--tw-inset-shadow-alpha:100%;--tw-ring-color:initial;--tw-ring-shadow:0 0 #0000;--tw-inset-ring-color:initial;--tw-inset-ring-shadow:0 0 #0000;--tw-ring-inset:initial;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-offset-shadow:0 0 #0000}}}.collapse{visibility:collapse}.visible{visibility:visible}.sr-only{clip-path:inset(50%);white-space:nowrap;border-width:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.absolute{position:absolute}.fixed{position:fixed}.relative{position:relative}.float-right{float:right}.mx-auto{margin-inline:auto}.ml-auto{margin-left:auto}.block{display:block}.flex{display:flex}.grid{display:grid}.hidden{display:none}.inline-block{display:inline-block}.inline-flex{display:inline-flex}.table{display:table}.min-h-\[600px\]{min-height:600px}.min-h-screen{min-height:100vh}.w-full{width:100%}.flex-1{flex:1}.rotate-180{rotate:180deg}.transform{transform:var(--tw-rotate-x,)var(--tw-rotate-y,)var(--tw-rotate-z,)var(--tw-skew-x,)var(--tw-skew-y,)}.resize{resize:both}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.flex-col{flex-direction:column}.items-baseline{align-items:baseline}.items-center{align-items:center}.items-start{align-items:flex-start}.justify-between{justify-content:space-between}.justify-center{justify-content:center}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.overflow-x-auto{overflow-x:auto}.rounded-full{border-radius:3.40282e38px}.border{border-style:var(--tw-border-style);border-width:1px}.border-4{border-style:var(--tw-border-style);border-width:4px}.border-t{border-top-style:var(--tw-border-style);border-top-width:1px}.border-b{border-bottom-style:var(--tw-border-style);border-bottom-width:1px}.border-solid{--tw-border-style:solid;border-style:solid}.border-r-transparent{border-right-color:#0000}.bg-gradient-to-br{--tw-gradient-position:to bottom right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-gradient-to-r{--tw-gradient-position:to right in oklab;background-image:linear-gradient(var(--tw-gradient-stops))}.bg-clip-text{-webkit-background-clip:text;background-clip:text}.text-center{text-align:center}.text-left{text-align:left}.text-right{text-align:right}.text-transparent{color:#0000}.uppercase{text-transform:uppercase}.italic{font-style:italic}.filter{filter:var(--tw-blur,)var(--tw-brightness,)var(--tw-contrast,)var(--tw-grayscale,)var(--tw-hue-rotate,)var(--tw-invert,)var(--tw-saturate,)var(--tw-sepia,)var(--tw-drop-shadow,)}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-all{transition-property:all;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.transition-colors{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to;transition-timing-function:var(--tw-ease,ease);transition-duration:var(--tw-duration,0s)}.focus\:ring-2:focus{--tw-ring-shadow:var(--tw-ring-inset,)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color,currentcolor);box-shadow:var(--tw-inset-shadow),var(--tw-inset-ring-shadow),var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow)}.focus\:outline-none:focus{--tw-outline-style:none;outline-style:none}:root{--primary-color:#3498db;--primary-dark:#2980b9;--secondary-color:#9b59b6;--accent-color:#e74c3c;--success-color:#27ae60;--warning-color:#f39c12;--info-color:#3498db;--light-bg:#f8f9fa;--dark-bg:#2c3e50;--light-text:#f8f9fa;--dark-text:#2c3e50;--border-color:#dee2e6;--shadow:0 4px 12px #0000001a;--shadow-hover:0 6px 16px #00000026;--border-radius:8px;--transition:all .3s ease;color-scheme:light;color:var(--dark-text);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:#fff;font-family:Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,sans-serif;font-weight:400;line-height:1.6}body{background-color:#f5f7fa;width:100%;min-width:320px;min-height:100vh;margin:0;display:block}*{box-sizing:border-box}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:4px}::-webkit-scrollbar-thumb:hover{background:#a1a1a1}.header-buttons{flex-wrap:wrap;align-items:center;gap:1rem;display:flex}.table-controls{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:1rem 0;display:flex}.results-count{color:#666;margin:0;font-size:.9rem}.page-size-selector{align-items:center;gap:.5rem;font-size:.9rem;display:flex}.page-size-selector label{color:#666;font-weight:500}.page-size-dropdown{border:1px solid var(--border-color);cursor:pointer;transition:var(--transition);background-color:#fff;border-radius:4px;padding:.4rem .8rem;font-size:.9rem}.page-size-dropdown:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 2px #3498db33}.page-size-dropdown:hover{border-color:var(--primary-color)}.bulk-edit-controls{border-radius:var(--border-radius);background-color:#e3f2fd;border:1px solid #2196f3;align-items:center;gap:.5rem;padding:.5rem 1rem;display:flex}.selected-count{color:#1976d2;margin-right:.5rem;font-weight:600}.bulk-edit-button,.clear-selection-button{cursor:pointer;transition:var(--transition);border:none;border-radius:4px;padding:.4rem .8rem;font-size:.875rem}.bulk-edit-button{color:#fff;background-color:#2196f3}.bulk-edit-button:hover{background-color:#1976d2}.clear-selection-button{color:#fff;background-color:#f44336}.clear-selection-button:hover{background-color:#d32f2f}.students-table th:first-child,.students-table td:first-child{text-align:center;width:50px}.students-table input[type=checkbox]{cursor:pointer;width:16px;height:16px;accent-color:var(--primary-color)}.bulk-edit-modal{width:90%;max-width:500px}.bulk-edit-form{flex-direction:column;gap:1rem;margin-bottom:1.5rem;display:flex}.bulk-edit-form .form-group{flex-direction:column;gap:.5rem;display:flex}.bulk-edit-form label{color:var(--dark-text);font-weight:600}.bulk-edit-form select,.bulk-edit-form input[type=text]{border:1px solid var(--border-color);border-radius:var(--border-radius);transition:var(--transition);padding:.75rem;font-size:1rem}.bulk-edit-form select:focus,.bulk-edit-form input[type=text]:focus{border-color:var(--primary-color);outline:none;box-shadow:0 0 0 2px #3498db33}.bulk-edit-actions{justify-content:flex-end;gap:1rem;margin-top:1.5rem;display:flex}.bulk-edit-actions .save-button{background-color:var(--success-color);color:#fff}.bulk-edit-actions .save-button:hover:not(:disabled){background-color:#229954}.bulk-edit-actions .save-button:disabled{cursor:not-allowed;background-color:#bdc3c7}.bulk-edit-actions .cancel-button{color:#fff;background-color:#95a5a6}.bulk-edit-actions .cancel-button:hover{background-color:#7f8c8d}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-blur{syntax:"*";inherits:false}@property --tw-brightness{syntax:"*";inherits:false}@property --tw-contrast{syntax:"*";inherits:false}@property --tw-grayscale{syntax:"*";inherits:false}@property --tw-hue-rotate{syntax:"*";inherits:false}@property --tw-invert{syntax:"*";inherits:false}@property --tw-opacity{syntax:"*";inherits:false}@property --tw-saturate{syntax:"*";inherits:false}@property --tw-sepia{syntax:"*";inherits:false}@property --tw-drop-shadow{syntax:"*";inherits:false}@property --tw-drop-shadow-color{syntax:"*";inherits:false}@property --tw-drop-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-drop-shadow-size{syntax:"*";inherits:false}@property --tw-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-shadow-color{syntax:"*";inherits:false}@property --tw-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-inset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-shadow-color{syntax:"*";inherits:false}@property --tw-inset-shadow-alpha{syntax:"<percentage>";inherits:false;initial-value:100%}@property --tw-ring-color{syntax:"*";inherits:false}@property --tw-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-inset-ring-color{syntax:"*";inherits:false}@property --tw-inset-ring-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}@property --tw-ring-inset{syntax:"*";inherits:false}@property --tw-ring-offset-width{syntax:"<length>";inherits:false;initial-value:0}@property --tw-ring-offset-color{syntax:"*";inherits:false;initial-value:#fff}@property --tw-ring-offset-shadow{syntax:"*";inherits:false;initial-value:0 0 #0000}#root{width:100%;min-height:100vh;padding:0;margin:0;text-align:left}.app{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;min-height:100vh;padding:0;font-family:Segoe UI,system-ui,-apple-system,BlinkMacSystemFont,Roboto,sans-serif;width:100%;background-color:#f5f7fa;margin:0;text-align:left;position:relative}.top-container{display:flex;justify-content:space-between;align-items:center;width:100%;height:80px;background-color:#fff;box-shadow:0 2px 10px #0000001a;border-bottom:1px solid var(--border-color);padding:0 2rem;box-sizing:border-box;position:relative;z-index:100}.top-container>.logo-text{flex:0 0 auto}.mode-controls{display:flex;gap:1rem;flex:0 0 auto;align-items:center;position:relative;top:-5px}.app.logged-in.admin-mode .top-container{justify-content:space-between}.app.logged-in.admin-mode .top-container>.logo-text{position:relative;left:auto;transform:none;margin:0}.app.logged-in.admin-mode .top-container>.mode-controls{position:relative;right:auto;top:auto;transform:none;display:flex;gap:1rem}.app.logged-in.admin-mode .logout-section{position:relative;top:-5px}@media (max-width: 768px){.top-container{padding:0 1rem;height:60px}.app.logged-in.admin-mode .top-container>.mode-controls{right:1rem;gap:.5rem}}.logo-container{flex:0 0 auto;display:flex;align-items:center}.controls-container{display:flex;align-items:center;gap:1rem;flex:0 0 auto}.app>*{flex-shrink:0}.app:not(.logged-in){justify-content:flex-start;align-items:flex-start;padding:0;position:relative;min-height:100vh}.app:not(.logged-in)>.top-container{width:100%;flex:0 0 auto}.app:not(.logged-in)>.login-section{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;max-width:450px;margin:0;box-sizing:border-box}.loading-section{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);width:100%;max-width:450px;margin:0;box-sizing:border-box;text-align:center}.loading-content h2{margin:0 0 .5rem;color:var(--dark-bg);font-weight:700;font-size:1.8rem;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.loading-content p{margin:0;color:#6c757d;font-size:1rem}.fixed-width-container{width:100%;max-width:1200px;margin:0 auto;box-sizing:border-box}.attendance-title{display:none}.login-section{background:white;padding:2.5rem;border-radius:var(--border-radius);box-shadow:var(--shadow);width:100%;max-width:450px;border:1px solid var(--border-color);transition:var(--transition);margin:0}.login-section:hover{box-shadow:var(--shadow-hover)}.login-section{background:white;padding:2.5rem;border-radius:var(--border-radius);box-shadow:var(--shadow);width:100%;max-width:450px;border:1px solid var(--border-color);transition:var(--transition);margin:0;position:relative;overflow:hidden}.login-section:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color))}.login-form{margin-bottom:1.5rem}.form-group{margin-bottom:1.5rem;position:relative}.form-group label{display:block;margin-bottom:.5rem;font-weight:600;color:var(--dark-text);font-size:1rem}.form-group input{width:100%;padding:.85rem 1rem;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:1rem;box-sizing:border-box;transition:var(--transition);background-color:#fff}.password-input{position:relative}.password-input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px #3498db33}.login-button{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;padding:.85rem 1.5rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:1.1rem;transition:var(--transition);font-weight:600;width:100%;box-shadow:0 4px 15px #3498db4d;position:relative;overflow:hidden;z-index:1}.error{color:var(--accent-color);margin-top:1rem;padding:1rem 1.25rem;border-radius:var(--border-radius);background-color:#fdeded;border:1px solid var(--accent-color);font-weight:500;display:flex;align-items:center;gap:.5rem}.error:before{content:"\26a0";font-size:1.2rem}.logout-section{margin:10px 0 0;position:relative;top:-5px}.logout-section button{background:linear-gradient(135deg,var(--accent-color),#c0392b);color:#fff;padding:.5rem 1rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.logout-section button:hover{background:linear-gradient(135deg,#c0392b,#a93226);transform:translateY(-1px);box-shadow:var(--shadow-hover)}.logout-section button:active{transform:translateY(0)}.logout-section button:before{content:"\1f6aa"}@media (max-width: 768px){.logout-section button:before{content:""}.logout-section button{padding:.4rem .8rem;font-size:.8rem}}.tabs{display:flex;width:100%;margin-bottom:2rem;border-bottom:2px solid var(--border-color);background:white;border-radius:var(--border-radius) var(--border-radius) 0 0;box-shadow:0 2px 4px #0000000d;overflow:hidden;max-width:none}.tab{background-color:#f8f9fa;border:none;border-bottom:3px solid transparent;padding:1rem 1.75rem;margin:0;cursor:pointer;font-weight:600;color:#495057;transition:var(--transition);position:relative;font-size:1rem;flex:1;text-align:center}.tab:hover{background-color:#e9ecef;color:var(--dark-text)}.tab.active{background-color:#fff;color:var(--primary-color);border-bottom:3px solid var(--primary-color);font-weight:700}.tab:not(:last-child){border-right:1px solid var(--border-color)}.main-content{display:flex;flex-direction:column;width:100%;min-height:calc(100vh - 80px);padding:1.5rem 1.5rem 3rem;box-sizing:border-box;background:white;overflow:auto;margin:0}.tab-content{display:flex;width:100%;min-height:500px;box-sizing:border-box;padding:1.5rem}.upload-sections,.filters-section,.timetable-section,.students-section,.comparison-section,.mapping-section,.mappings-section,.content-wrapper{width:100%;box-sizing:border-box;margin-left:auto;margin-right:auto;flex-shrink:0;max-width:none}.upload-sections{display:flex;flex-wrap:wrap;gap:2rem;width:100%;margin-bottom:2rem;min-height:400px}.upload-section{flex:1;min-width:300px;box-sizing:border-box}.content-wrapper{width:100%;margin:0 auto;box-sizing:border-box;max-width:none}.upload-sections,.filters-section,.timetable-section,.students-section,.comparison-section,.mapping-section,.mappings-section{width:100%!important;box-sizing:border-box!important;max-width:none!important}.section-header{display:flex;justify-content:space-between;align-items:center;width:100%;margin-bottom:1rem;max-width:none}.section-header h2{margin:0}.refresh-button{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;padding:.65rem 1.25rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.95rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.refresh-button:hover{background:linear-gradient(135deg,var(--primary-dark),#1c6ea4);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.refresh-button:active{transform:translateY(0)}.refresh-button:before{content:"\21bb"}.comparison-section{width:100%;min-height:400px;margin-bottom:2rem;max-width:none}.comparison-section h2{color:#2c3e50;margin-bottom:1rem;border-bottom:2px solid #f39c12;padding-bottom:.5rem}.comparison-split{display:flex;flex-wrap:wrap;gap:2rem;width:100%;margin-bottom:2rem;box-sizing:border-box;max-width:none}.comparison-side{flex:1;min-width:300px;box-sizing:border-box}.comparison-side h2{margin-top:0;margin-bottom:1rem;padding-bottom:.5rem}.timetable-side h2{color:#2c3e50;border-bottom:2px solid #e74c3c}.student-side h2{color:#2c3e50;border-bottom:2px solid #9b59b6}.comparison-column{background-color:#f8f9fa;border-radius:8px;padding:1.5rem;box-shadow:0 2px 8px #0000001a;box-sizing:border-box}.comparison-column h3{margin-top:0;color:#2c3e50;border-bottom:2px solid #3498db;padding-bottom:.5rem}.compact-container{display:flex;flex-direction:column;gap:.25rem;max-height:300px;overflow-y:auto;font-size:.85rem}.compact-row{display:flex;flex-wrap:nowrap;gap:.5rem;padding:.25rem .5rem;border:1px solid #eee;border-radius:3px;background-color:#f8f9fa;align-items:center;font-size:.85rem}.sheet-name-compact{flex:0 0 150px;font-weight:700;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-size:.85rem}.subcategories-compact{display:flex;flex-wrap:wrap;gap:.5rem;flex:1;min-width:0;align-items:center}.subcategory-label{font-weight:700;color:#34495e;margin-right:.25rem;white-space:nowrap;font-size:.8rem}.subcategory-tag-compact{display:inline-block;padding:.15rem .4rem;background-color:#e9f7ff;border:1px solid #3498db;border-radius:8px;font-size:.75rem;color:#3498db;cursor:pointer;transition:all .1s ease;white-space:nowrap;line-height:1}.subcategory-tag-compact:hover{background-color:#d1e9ff}.subcategory-tag-compact.selected{background-color:#3498db;color:#fff;border-color:#2980b9}.compact-container::-webkit-scrollbar{width:6px}.compact-container::-webkit-scrollbar-track{background:#f1f1f1}.compact-container::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.compact-container::-webkit-scrollbar-thumb:hover{background:#555}.comparison-list{list-style-type:none;padding:0;margin:0;max-height:300px;overflow-y:auto}.comparison-list li{padding:.5rem;border-bottom:1px solid #eee}.comparison-list li:last-child{border-bottom:none}.comparison-list li:hover{background-color:#e9f7ff}.comparison-list::-webkit-scrollbar{width:6px}.comparison-list::-webkit-scrollbar-track{background:#f1f1f1}.comparison-list::-webkit-scrollbar-thumb{background:#888;border-radius:3px}.comparison-list::-webkit-scrollbar-thumb:hover{background:#555}.upload-section{background:white;padding:2rem;border-radius:var(--border-radius);box-shadow:var(--shadow);flex:1;min-width:300px;border:1px solid var(--border-color);transition:var(--transition);max-width:none}.upload-section:hover{box-shadow:var(--shadow-hover);transform:translateY(-2px)}.upload-section h2{margin-top:0;color:var(--dark-bg);border-bottom:3px solid var(--success-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem}.upload-section:nth-child(2) h2{border-bottom:3px solid var(--secondary-color)}.upload-section input[type=file]{margin:1rem 0;padding:.85rem;border:2px dashed var(--border-color);border-radius:var(--border-radius);width:100%;font-size:1rem;box-sizing:border-box;background-color:var(--light-bg);transition:var(--transition);cursor:pointer}.upload-section input[type=file]:hover{border-color:var(--primary-color);background-color:#e9f7ff}.upload-section .file-info{margin-top:1rem;padding:1rem;background-color:#e8f5e9;border-radius:var(--border-radius);font-size:.95rem;border:1px solid #c8e6c9}.upload-section .file-info h4{margin-top:0;margin-bottom:.75rem;color:var(--dark-bg);font-weight:600;display:flex;align-items:center;gap:.5rem}.upload-section .file-info h4:before{content:"\1f4c4"}.upload-section .file-list{list-style-type:none;padding-left:0;margin:0;max-height:200px;overflow-y:auto;border-radius:var(--border-radius);background-color:#fff;border:1px solid var(--border-color)}.upload-section .file-list li{padding:.75rem 1rem;border-bottom:1px solid var(--border-color);display:flex;justify-content:space-between;align-items:center;transition:var(--transition)}.upload-section .file-list li:hover{background-color:#f1f8ff}.remove-file-button{background-color:var(--accent-color);color:#fff;border:none;border-radius:50%;width:24px;height:24px;font-size:14px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;line-height:1;box-sizing:border-box;transition:var(--transition);font-weight:700}.remove-file-button:hover{background-color:#c0392b;transform:scale(1.1)}.clear-files-button{background-color:var(--warning-color);color:#fff;border:none;border-radius:var(--border-radius);padding:.5rem 1rem;font-size:.9rem;cursor:pointer;margin-top:1rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.clear-files-button:hover{background-color:#e67e22;transform:translateY(-2px);box-shadow:var(--shadow-hover)}.upload-section button{background:linear-gradient(135deg,var(--success-color),#219653);color:#fff;padding:.85rem 1.5rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:1.1rem;transition:var(--transition);font-weight:600;width:100%;box-shadow:0 2px 4px #0000001a}.upload-section button:hover{background:linear-gradient(135deg,#219653,#1e8449);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.upload-section button:active{transform:translateY(0)}.status{margin-top:1.5rem;padding:1rem 1.25rem;border-radius:var(--border-radius);font-weight:600;background-color:#e8f5e9;border:1px solid #4CAF50;display:flex;align-items:center;gap:.75rem;box-shadow:0 2px 4px #0000000d}.status:before{content:"\2139\fe0f";font-size:1.2rem}.search-section{margin-bottom:1.5rem;padding:1rem;background-color:#f8f9fa;border-radius:8px;box-shadow:0 2px 4px #0000000d}.search-section h2{margin-top:0;margin-bottom:1rem;color:#333;font-size:1.25rem}.search-bar{display:flex;gap:.5rem;align-items:center}.search-input{flex:1;padding:.75rem;border:1px solid #ddd;border-radius:4px;font-size:1rem;transition:border-color .2s}.search-input:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 2px #007bff40}.clear-search-button{padding:.75rem 1.25rem;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.filters .filter-group button{padding:.5rem 1rem;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s;min-width:80px}.filters .filter-group button:hover{background-color:#0069d9}.upload-sections{display:flex;flex-wrap:wrap;gap:2rem;width:100%;margin-bottom:2rem;min-height:400px;box-sizing:border-box;max-width:none}.upload-section{background:white;padding:2.5rem 2rem;border-radius:var(--border-radius);box-shadow:var(--shadow);flex:1;min-width:300px;border:1px solid var(--border-color);transition:var(--transition);max-width:none;position:relative;overflow:hidden}.upload-section:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--primary-color),var(--secondary-color))}.upload-section:hover{box-shadow:var(--shadow-hover);transform:translateY(-5px)}.upload-section h2{margin-top:0;margin-bottom:1.5rem;color:var(--dark-bg);font-weight:700;font-size:1.6rem;position:relative;padding-left:1.5rem}.upload-section h2:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:8px;height:24px;border-radius:4px}.upload-section:nth-child(1) h2:before{background:linear-gradient(135deg,var(--success-color),#219653)}.upload-section:nth-child(2) h2:before{background:linear-gradient(135deg,var(--secondary-color),#8e44ad)}.upload-section input[type=file]{margin:1rem 0;padding:1.5rem;border:2px dashed #d1d8dd;border-radius:12px;width:100%;font-size:1rem;box-sizing:border-box;background:linear-gradient(to bottom,#f8fafc,#ffffff);transition:all .3s ease;cursor:pointer;text-align:center;color:#64748b;position:relative}.upload-section input[type=file]:before{content:"\1f4c1";display:block;font-size:2.5rem;margin-bottom:.5rem;opacity:.7}.upload-section input[type=file]:hover{border-color:var(--primary-color);background:linear-gradient(to bottom,#f0f9ff,#ffffff);transform:scale(1.02)}.upload-section input[type=file]:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #3498db33}.upload-section .file-info{margin-top:1.5rem;padding:1.25rem;background:linear-gradient(135deg,#f8fafc,#ffffff);border-radius:12px;font-size:.95rem;border:1px solid #e2e8f0;box-shadow:0 1px 3px #0000000d}.upload-section .file-info h4{margin-top:0;margin-bottom:1rem;color:var(--dark-bg);font-weight:600;display:flex;align-items:center;gap:.75rem;font-size:1.1rem}.upload-section .file-info h4:before{content:"\1f4c4";font-size:1.2rem}.upload-section .file-list{list-style-type:none;padding-left:0;margin:0;max-height:200px;overflow-y:auto;border-radius:12px;background-color:#fff;border:1px solid #e2e8f0;box-shadow:inset 0 1px 2px #0000000d}.upload-section .file-list li{padding:.85rem 1.25rem;border-bottom:1px solid #edf2f7;display:flex;justify-content:space-between;align-items:center;transition:var(--transition);border-left:3px solid var(--primary-color)}.upload-section .file-list li:last-child{border-bottom:none}.upload-section .file-list li:hover{background-color:#f8fafc;transform:translate(3px)}.file-name{display:flex;align-items:center;gap:.5rem;overflow:hidden}.file-name:before{content:"\1f4c4";font-size:1.1rem}.remove-file-button{background:linear-gradient(135deg,#ff6b6b,#ff5252);color:#fff;border:none;border-radius:50%;width:36px;height:36px;font-size:18px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;flex-shrink:0;line-height:1;box-sizing:border-box;transition:all .3s ease;font-weight:700;box-shadow:0 2px 5px #ff52524d}.remove-file-button:hover{background:linear-gradient(135deg,#ff5252,#ff1744);transform:scale(1.2) rotate(90deg);box-shadow:0 4px 8px #ff525266}.clear-files-button{background:linear-gradient(135deg,#ff9a8b,#ff6b6b);color:#fff;border:none;border-radius:8px;padding:.75rem 1.5rem;font-size:1rem;cursor:pointer;margin-top:1.25rem;transition:all .3s ease;font-weight:600;box-shadow:0 3px 8px #ff6b6b4d;display:flex;align-items:center;gap:.75rem;width:auto;min-width:150px;justify-content:center}.clear-files-button:hover{background:linear-gradient(135deg,#ff6b6b,#ff5252);transform:translateY(-2px);box-shadow:0 5px 15px #ff6b6b66}.clear-files-button:active{transform:translateY(0)}.clear-files-button:before{content:"\1f5d1\fe0f"}.upload-section button{background:linear-gradient(135deg,var(--success-color),#219653);color:#fff;padding:1rem 1.75rem;border:none;border-radius:8px;cursor:pointer;font-size:1.1rem;transition:all .3s ease;width:100%;max-width:300px;box-shadow:0 4px 10px #2e7d324d;text-transform:uppercase;font-weight:600;letter-spacing:.5px;margin-top:1rem;align-self:center}.upload-section button:hover{background:linear-gradient(135deg,#2ecc71,#27ae60);transform:translateY(-3px);box-shadow:0 6px 15px #2ecc7166}.upload-section button:active{transform:translateY(0);box-shadow:0 2px 8px #2e7d324d}.upload-section button:disabled{background:#bdc3c7;transform:none;box-shadow:none;cursor:not-allowed}.status{margin-top:1.5rem;padding:1.25rem 1.5rem;border-radius:8px;font-weight:600;background:linear-gradient(135deg,#e3f2fd,#bbdefb);border:1px solid #90caf9;display:flex;align-items:center;gap:.75rem;box-shadow:0 3px 6px #0000000d;font-size:1rem;color:#0d47a1}.status:first-letter{text-transform:uppercase}.status:before{content:"\2139\fe0f";font-size:1.3rem}.status.success{background:linear-gradient(135deg,#e8f5e9,#c8e6c9);border-color:#a5d6a7;color:#1b5e20}.status.success:before{content:"\2705"}.status.error{background:linear-gradient(135deg,#ffebee,#f8bbd0);border-color:#f48fb1;color:#b71c1c}.status.error:before{content:"\274c"}.edit-input{width:100%;padding:.25rem;border:1px solid #ccc;border-radius:4px;font-size:.9rem}.action-buttons{display:flex;flex-direction:column;gap:.2rem}.edit-button,.save-button,.cancel-button{padding:.25rem .5rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font-size:.8rem;margin-bottom:.2rem}.profile-button{background:linear-gradient(135deg,#6c757d,#495057);color:#fff;border:none;padding:.4rem .8rem;border-radius:4px;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s ease;box-shadow:0 2px 4px #0000001a;display:inline-flex;align-items:center;gap:.3rem}.profile-button:hover{background:linear-gradient(135deg,#5a6268,#343a40);transform:translateY(-1px);box-shadow:0 4px 8px #00000026}.profile-button:active{transform:translateY(0);box-shadow:0 2px 4px #0000001a}.profile-button:before{content:"\1f464";font-size:.8rem}.edit-button{background-color:#007bff;color:#fff}.edit-button:hover{background-color:#0056b3}.save-button{background-color:#28a745;color:#fff}.save-button:disabled{background-color:#6c757d;cursor:not-allowed}.save-button:not(:disabled):hover{background-color:#218838}.cancel-button{background-color:#6c757d;color:#fff}.cancel-button:hover{background-color:#545b62}.save-message{font-size:.75rem;margin-top:.2rem;padding:.2rem;border-radius:4px}.save-message.success{color:#155724;background-color:#d4edda;border:1px solid #c3e6cb}.save-message.error{color:#721c24;background-color:#f8d7da;border:1px solid #f5c6cb}.profile-button,.edit-button,.save-button,.cancel-button{padding:.5rem .75rem;border:1px solid #ccc;border-radius:4px;cursor:pointer;font-size:.9rem;margin-bottom:.3rem;min-width:60px}.action-buttons{display:flex;flex-direction:column;gap:.3rem}.timetable-section{width:100%;min-height:300px;background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);padding:1.5rem;border:1px solid var(--border-color);transition:var(--transition);max-width:none}.timetable-section:hover{box-shadow:var(--shadow-hover)}.timetable-section h2{color:var(--dark-bg);margin-bottom:1rem;border-bottom:3px solid var(--accent-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.75rem}.timetable-section h2:before{content:"\1f4c5"}.results-count{text-align:right;font-style:italic;color:#7f8c8d;margin-bottom:1rem;font-weight:500}.timetable-table{width:100%;border-collapse:separate;border-spacing:0;box-shadow:var(--shadow);background-color:#fff;border-radius:var(--border-radius);overflow:hidden;border:1px solid var(--border-color)}.timetable-table thead{background:linear-gradient(135deg,var(--accent-color),#c0392b);color:#fff}.timetable-table th,.timetable-table td{padding:1rem 1.25rem;text-align:left;border-bottom:1px solid var(--border-color)}.timetable-table th{font-weight:700;text-transform:uppercase;font-size:.85rem;letter-spacing:.5px}.timetable-table td:first-child{width:150px;vertical-align:top;padding-top:1rem}.attendance-checkboxes{display:flex;flex-direction:column;gap:.3rem;align-items:flex-start}.attendance-checkbox{display:flex;align-items:center;cursor:pointer;padding:.2rem .35rem;border-radius:4px;font-size:.85rem;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:.15rem;min-height:24px}.timetable-table tbody tr{transition:var(--transition)}.timetable-table tbody tr:hover{background-color:#f1f8ff}.timetable-table tbody tr:nth-child(even){background-color:#f8f9fa}.timetable-table tbody tr:nth-child(even):hover{background-color:#e9f7ff}.timetable-table tbody tr:last-child td{border-bottom:none}.students-section{width:100%;margin-top:2rem;min-height:300px;background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);padding:1.5rem;border:1px solid var(--border-color);transition:var(--transition);max-width:none}.students-section:hover{box-shadow:var(--shadow-hover)}.students-section h2{color:var(--dark-bg);margin-bottom:1rem;border-bottom:3px solid var(--secondary-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.75rem}.students-section h2:before{content:"\1f465"}.students-table{width:100%;border-collapse:separate;border-spacing:0;box-shadow:var(--shadow);background-color:#fff;border-radius:var(--border-radius);overflow:hidden;border:1px solid var(--border-color)}.students-table thead{background:linear-gradient(135deg,var(--secondary-color),#8e44ad);color:#fff}.students-table th,.students-table td{padding:1rem;text-align:left;border-bottom:1px solid var(--border-color)}.students-table th:nth-child(1),.students-table td:nth-child(1){width:5%}.students-table th:nth-child(2),.students-table td:nth-child(2){width:10%}.students-table th:nth-child(3),.students-table td:nth-child(3){width:8%}.students-table th:nth-child(4),.students-table td:nth-child(4){width:8%}.students-table th:nth-child(5),.students-table td:nth-child(5){width:15%}.students-table th:nth-child(6),.students-table td:nth-child(6){width:5%}.students-table th:nth-child(9),.students-table td:nth-child(9){width:10%}.students-table th:nth-child(10),.students-table td:nth-child(10){width:15%}.students-table th{font-weight:700;text-transform:uppercase;letter-spacing:.5px;font-size:.85rem;position:sticky;top:0;z-index:10}.students-table tbody tr{transition:var(--transition)}.students-table tbody tr:last-child td{border-bottom:none}.filters .filter-group input,.filters .filter-group select,.filters .filter-group button{padding:.75rem;font-size:1rem;min-height:40px;border:1px solid #ddd;border-radius:4px}.filters .filter-group select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml;charset=UTF-8,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23333' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3e%3cpolyline points='6,9 12,15 18,9'%3e%3c/polyline%3e%3c/svg%3e");background-repeat:no-repeat;background-position:right .75rem center;background-size:1rem;padding-right:2.5rem}@media (max-width: 768px){.app{padding:1rem 0}.attendance-title{font-size:2rem}.upload-section,.filters-section,.timetable-section{padding:1rem;margin-bottom:1rem}.filters{flex-direction:column}.filter-group{min-width:auto}}.mapping-section{width:100%;margin-bottom:2rem;background:white;border-radius:var(--border-radius);padding:1.75rem;box-shadow:var(--shadow);border:1px solid var(--border-color);transition:var(--transition);max-width:none}.mapping-section:hover{box-shadow:var(--shadow-hover)}.mapping-section h2{color:var(--dark-bg);margin-top:0;border-bottom:3px solid var(--secondary-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.75rem}.mapping-section h2:before{content:"\1f517"}.mapping-form{display:flex;flex-wrap:wrap;gap:1.5rem;align-items:flex-end;padding:1.5rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color)}.mapping-form .form-group{flex:1;min-width:200px}.create-mapping-button{background:linear-gradient(135deg,var(--secondary-color),#8e44ad);color:#fff;padding:.85rem 1.5rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:1rem;transition:var(--transition);font-weight:600;height:-moz-fit-content;height:fit-content;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.create-mapping-button:hover{background:linear-gradient(135deg,#8e44ad,#7d3c98);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.create-mapping-button:active{transform:translateY(0)}.create-mapping-button:before{content:"\2795"}.selected-tags{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:.75rem;padding:.75rem;background-color:#fff;border-radius:var(--border-radius);border:1px solid var(--border-color);max-height:150px;overflow-y:auto}.mappings-section{width:100%;background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);padding:1.5rem;border:1px solid var(--border-color);transition:var(--transition);max-width:none}.mappings-section:hover{box-shadow:var(--shadow-hover)}.mappings-section h2{color:var(--dark-bg);margin-bottom:1rem;border-bottom:3px solid var(--primary-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.75rem}.mappings-section h2:before{content:"\1f4cb"}.mappings-table{width:100%;border-collapse:separate;border-spacing:0;box-shadow:var(--shadow);background-color:#fff;border-radius:var(--border-radius);overflow:hidden;border:1px solid var(--border-color)}.mappings-table thead{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff}.mappings-table th,.mappings-table td{padding:1rem 1.25rem;text-align:left;border-bottom:1px solid var(--border-color)}.mappings-table th{font-weight:700;text-transform:uppercase;letter-spacing:.5px;font-size:.85rem;position:sticky;top:0;z-index:10}.mappings-table tbody tr{transition:var(--transition)}.mappings-table tbody tr:hover{background-color:#f1f8ff}.mappings-table tbody tr:nth-child(even){background-color:#f8f9fa}.mappings-table tbody tr:nth-child(even):hover{background-color:#e9f7ff}.mappings-table tbody tr:last-child td{border-bottom:none}.delete-mapping-button{background:linear-gradient(135deg,var(--accent-color),#c0392b);color:#fff;padding:.6rem 1.1rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.delete-mapping-button:hover{background:linear-gradient(135deg,#c0392b,#a93226);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.delete-mapping-button:active{transform:translateY(0)}.delete-mapping-button:before{content:"\1f5d1\fe0f"}@media (max-width: 576px){.filters{gap:.25rem}.filter-group label{font-size:.8rem}.filter-group input,.filter-group select,.filter-group button{padding:.4rem;font-size:.85rem;min-height:32px}.filter-group button{margin-top:1.1rem}.mapping-form{flex-direction:column}.mapping-form .form-group{min-width:100%}}.pagination-controls{display:flex;justify-content:center;align-items:center;gap:1rem;margin-top:1.5rem;padding:1rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color)}.pagination-controls button{padding:.5rem 1rem;background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a}.pagination-controls button:hover:not(:disabled){background:linear-gradient(135deg,var(--primary-dark),#1c6ea4);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.pagination-controls button:disabled{background:#cccccc;cursor:not-allowed;transform:none;box-shadow:none}.pagination-controls span{font-weight:600;color:var(--dark-text)}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;justify-content:center;align-items:center;z-index:1000}.modal{background:white;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:90%;max-height:90%;overflow:hidden;display:flex;flex-direction:column}.modal-header{padding:1rem 1.5rem;border-bottom:1px solid #eee;display:flex;justify-content:space-between;align-items:center}.modal-header h2{margin:0;font-size:1.5rem;color:#333}.close-button{background:none;border:none;font-size:1.5rem;cursor:pointer;color:#999;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center}.close-button:hover{color:#333}.modal-body{padding:1.5rem;overflow-y:auto;flex:1}.modal-footer{padding:1rem 1.5rem;border-top:1px solid #eee;display:flex;justify-content:flex-end;gap:1rem}.primary-button{background-color:#007bff;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-weight:500}.primary-button:hover{background-color:#0056b3}.secondary-button{background-color:#6c757d;color:#fff;border:none;padding:.5rem 1rem;border-radius:4px;cursor:pointer;font-weight:500}.secondary-button:hover{background-color:#545b62}.conflicts-list{max-height:60vh;overflow-y:auto}.conflict-item{border:1px solid #ddd;border-radius:6px;padding:1rem;margin-bottom:1rem;background-color:#f9f9f9}.conflict-item h3{margin-top:0;color:#333;border-bottom:1px solid #eee;padding-bottom:.5rem}.conflict-comparison{display:flex;gap:1rem;margin-bottom:1rem}.existing-data,.new-data{flex:1;padding:1rem;border-radius:4px}.conflict-comparison h4{margin-top:0;margin-bottom:.5rem}.conflict-comparison p{margin:.25rem 0;font-size:.9rem}.conflict-actions{display:flex;gap:1rem;justify-content:flex-end}.keep-existing-button,.use-new-button{padding:.5rem 1rem;border:none;border-radius:4px;cursor:pointer;font-weight:500}.keep-existing-button.selected{background-color:#e0a800;box-shadow:0 0 0 2px #fff,0 0 0 4px #ffc107;transform:scale(1.05)}.use-new-button.selected{background-color:#218838;box-shadow:0 0 0 2px #fff,0 0 0 4px #28a745;transform:scale(1.05)}.attendance-toggle{display:flex;justify-content:center}.attendance-button{padding:.25rem .5rem;border:2px solid #ccc;border-radius:4px;background-color:#f5f5f5;cursor:pointer;font-size:.8rem;font-weight:500;transition:all .2s ease;min-width:60px}.attendance-button:hover{background-color:#e0e0e0}.attendance-button.absent{background-color:#ffebee;border-color:#f44336;color:#c62828}.attendance-button.present{background-color:#e8f5e9;border-color:#4caf50;color:#2e7d32}.attendance-button.late{background-color:#fff8e1;border-color:#ffc107;color:#ff8f00}.attendance-button.unset{background-color:#fafafa;border-color:#bdbdbd;color:#757575}.attendance-checkboxes{display:flex;flex-direction:column;gap:.25rem;align-items:flex-start}.attendance-checkbox{display:flex;align-items:center;cursor:pointer;padding:.1rem .25rem;border-radius:4px;font-size:.75rem;position:relative;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-bottom:.1rem;min-height:20px}.attendance-checkbox.absent{color:#c62828}.attendance-checkbox.present{color:#2e7d32}.attendance-checkbox.late{color:#ff8f00}.attendance-checkbox.selected.absent{background-color:#ffebee;border:1px solid #f44336}.attendance-checkbox.selected.present{background-color:#e8f5e9;border:1px solid #4CAF50}.attendance-checkbox.selected.late{background-color:#fff8e1;border:1px solid #ffc107}.attendance-checkbox input{position:absolute;opacity:0;cursor:pointer;height:0;width:0}.checkmark{height:18px;width:18px;background-color:#eee;border-radius:3px;margin-right:.6rem;position:relative;border:1px solid #ccc;flex-shrink:0}.attendance-checkbox:hover input~.checkmark{background-color:#ccc}.attendance-checkbox input:checked~.checkmark{background-color:#2196f3;border-color:#2196f3}.checkmark:after{content:"";position:absolute;display:none}.attendance-checkbox input:checked~.checkmark:after{display:block}.attendance-checkbox .checkmark:after{left:6px;top:2px;width:5px;height:10px;border:solid white;border-width:0 2px 2px 0;transform:rotate(45deg)}.attendance-checkboxes-inline{display:flex;gap:.25rem;margin-left:.5rem}.attendance-checkbox.small{font-size:.8rem;padding:.1rem .25rem}.attendance-checkbox.small .checkmark{height:14px;width:14px;margin-right:.35rem}.mode-display{display:flex;align-items:center;padding:.5rem 1rem;background-color:#e9ecef;border-radius:4px;font-weight:500;color:#495057}.mode-label{font-size:1rem}.attendance-checkbox.small .checkmark:after{left:4px;top:1px;width:4px;height:8px}.scanned-student-item{display:flex;align-items:center;padding:.25rem;margin-bottom:.25rem;background-color:#f9f9f9;border-radius:4px}.student-id{font-weight:500;margin-right:.5rem}.schedule-view-container{width:100%;overflow-x:auto;margin-top:1rem}.schedule-filters{margin-bottom:2rem;padding:1rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color)}.schedule-section{width:100%;min-height:300px;background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);padding:1.5rem;border:1px solid var(--border-color);transition:var(--transition);max-width:none}.schedule-section:hover{box-shadow:var(--shadow-hover)}.schedule-section h2{color:var(--dark-bg);margin-bottom:1rem;border-bottom:3px solid var(--secondary-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.75rem}.schedule-section h2:before{content:"\1f4c5"}.schedule-grid-container{width:100%;overflow-x:auto}.schedule-grid{width:100%;min-width:800px}.schedule-table{width:100%;border-collapse:collapse;box-shadow:var(--shadow);background-color:#fff;border-radius:var(--border-radius);overflow:hidden;border:1px solid var(--border-color);font-size:.9rem}.schedule-table th{background:linear-gradient(135deg,var(--secondary-color),#8e44ad);color:#fff;font-weight:600;text-align:center;padding:1rem .5rem;position:sticky;top:0;z-index:10}.time-header{background:linear-gradient(135deg,var(--accent-color),#c0392b)!important;min-width:100px;text-align:center}.day-header{min-width:140px;text-align:center}.schedule-table td{padding:.75rem .5rem;text-align:center;border-bottom:1px solid var(--border-color);border-right:1px solid var(--border-color);vertical-align:top;min-height:120px;max-width:140px}.schedule-table td:last-child{border-right:none}.schedule-table tr:last-child td{border-bottom:none}.time-cell{background-color:#f8f9fa;font-weight:600;text-align:center;min-width:100px;border-right:2px solid var(--border-color)}.session-cell{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border:1px solid #90caf9;border-radius:4px;padding:.3rem;margin-bottom:.2rem;text-align:left;font-size:.8rem;box-shadow:0 1px 3px #0000001a;transition:var(--transition);cursor:pointer}.session-cell:hover{transform:translateY(-1px);box-shadow:0 2px 6px #00000026;background:linear-gradient(135deg,#bbdefb,#90caf9)}.session-cell .module{font-weight:600;color:#1565c0;margin-bottom:.15rem;font-size:.85rem}.session-cell .classroom{font-weight:500;color:#455a64;font-size:.8rem}.session-cell .staff{color:#546e7a;font-size:.75rem;margin-top:.1rem;font-style:italic}.session-cell .group{color:#607d8b;font-size:.75rem;font-weight:500}.empty-cell{color:#b0bec5;font-style:italic;display:flex;align-items:center;justify-content:center;height:100%}@media (max-width: 768px){.schedule-table{font-size:.8rem}.day-header,.schedule-cell{min-width:100px;padding:.5rem .25rem}.time-cell{min-width:80px;padding:.5rem}.session-cell{padding:.2rem;font-size:.7rem}.session-cell .module{font-size:.8rem}.session-cell .classroom{font-size:.7rem}}@keyframes fadeInUp{0%{opacity:0;transform:translate(-50%,-45%)}to{opacity:1;transform:translate(-50%,-50%)}}.app:not(.logged-in){background:linear-gradient(135deg,#f5f7fa,#c3cfe2)}.app:not(.logged-in)>.top-container{background:rgba(255,255,255,.95);backdrop-filter:blur(10px)}.app:not(.logged-in)>.login-section{animation:fadeInUp .6s ease-out}.login-section{border-radius:16px;box-shadow:0 10px 30px #0000001a;border:none;backdrop-filter:blur(10px)}.login-section:hover{box-shadow:0 15px 40px #00000026}.login-button{box-shadow:0 4px 15px #3498db4d;position:relative;overflow:hidden;z-index:1}.login-button:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:linear-gradient(135deg,var(--primary-dark),var(--primary-color));z-index:-1;opacity:0;transition:opacity .3s ease}.login-button:hover{transform:translateY(-2px);box-shadow:0 6px 20px #3498db66}.login-button:hover:before{opacity:1}.login-button:active{transform:translateY(0)}.login-header{text-align:center;margin-bottom:2rem}.login-header h2{margin:0 0 .5rem;color:var(--dark-bg);font-weight:700;font-size:1.8rem;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.login-header p{margin:0;color:#6c757d;font-size:1rem}.login-footer{text-align:center;margin-top:1.5rem;padding-top:1.5rem;border-top:1px solid var(--border-color)}.login-footer p{margin:0;color:#6c757d;font-size:.85rem}.version-footer{text-align:center;padding:1rem;color:#6c757d;font-size:.75rem;background-color:#f8f9fa;border-top:1px solid #e9ecef;margin-top:auto}.module-view-container{width:100%;overflow-x:auto;margin-top:1rem}.module-filters{margin-bottom:2rem;padding:1rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color);display:flex;gap:1rem;flex-wrap:wrap}.module-filters .filter-group{display:flex;flex-direction:column;gap:.5rem;min-width:200px}.module-filters label{font-weight:600;color:var(--dark-bg);font-size:.9rem}.module-filters select{padding:.5rem;border:1px solid var(--border-color);border-radius:4px;background-color:#fff;font-size:.9rem}.module-list{width:100%}.module-item{background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);margin-bottom:1rem;border:1px solid var(--border-color);overflow:hidden;transition:var(--transition)}.module-item:hover{box-shadow:var(--shadow-hover)}.module-header{display:flex;align-items:center;padding:1rem 1.5rem;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));color:#fff;cursor:pointer;transition:var(--transition);gap:1rem}.module-header:hover{opacity:.9}.module-header .expand-button{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#fff;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:1.1rem;cursor:pointer;transition:var(--transition)}.module-header .expand-button:hover{background:rgba(255,255,255,.3);transform:scale(1.1)}.module-header h3{margin:0;flex:1;font-size:1.2rem;font-weight:600}.module-header .session-count{background:rgba(255,255,255,.2);padding:.25rem .75rem;border-radius:20px;font-size:.85rem;font-weight:500}.module-sessions{padding:0}.module-students{padding:1rem;width:100%}.module-info{background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));color:#fff;padding:1rem 1.5rem;border-radius:var(--border-radius);margin-bottom:1.5rem;text-align:center}.module-info h4{margin:0 0 .5rem;font-size:1.2rem;font-weight:600}.module-info p{margin:0;font-size:.9rem;opacity:.9}.sessions-table{width:100%;border-collapse:collapse;font-size:.9rem}.sessions-table th{background:var(--light-bg);color:var(--dark-bg);font-weight:600;text-align:left;padding:.75rem;border-bottom:2px solid var(--border-color);border-top:1px solid var(--border-color)}.sessions-table td{padding:.75rem;border-bottom:1px solid var(--border-color);vertical-align:middle}.sessions-table tr:hover{background-color:var(--light-bg)}.sessions-table .expand-button{background:var(--secondary-color);border:none;color:#fff;width:25px;height:25px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:.9rem;cursor:pointer;transition:var(--transition)}.sessions-table .expand-button:hover{background:var(--primary-color);transform:scale(1.1)}.attendance-details{background-color:var(--light-bg);padding:0}.attendance-content{padding:1rem;display:flex;flex-direction:column;gap:1.5rem}.attendance-stats{width:100%}.stats-summary{display:flex;flex-wrap:wrap;gap:1rem;align-items:center}.stats-summary span{padding:.5rem 1rem;border-radius:20px;font-size:.85rem;font-weight:600;background:white;border:1px solid var(--border-color)}.present-count{background-color:#d4edda;color:#155724;border-color:#c3e6cb}.late-count{background-color:#fff3cd;color:#856404;border-color:#ffeaa7}.absent-count{background-color:#f8d7da;color:#721c24;border-color:#f5c6cb}.total-count{background-color:#e2e3e5;color:#383d41;border-color:#d6d8db}.no-data{background-color:#e2e3e5;color:#6c757d;border-color:#ced4da;font-style:italic}.session-expired-banner{position:fixed;top:0;left:0;right:0;z-index:1000;background:linear-gradient(135deg,#f8d7da,#f5c6cb);border-bottom:3px solid #dc3545;box-shadow:0 4px 12px #dc35454d;animation:slideDown .3s ease-out}.session-expired-content{display:flex;align-items:center;justify-content:space-between;padding:1rem 2rem;max-width:1200px;margin:0 auto}.session-expired-icon{font-size:1.2rem;margin-right:.75rem}.session-expired-text{flex:1;color:#721c24;font-weight:600;font-size:.95rem}.session-expired-close{background:rgba(220,53,69,.2);border:1px solid rgba(220,53,69,.3);color:#721c24;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.2rem;font-weight:700;cursor:pointer;transition:var(--transition);margin-left:1rem}.session-expired-close:hover{background:rgba(220,53,69,.3);transform:scale(1.1)}@keyframes slideDown{0%{transform:translateY(-100%);opacity:0}to{transform:translateY(0);opacity:1}}.student-list-section,.grouped-students{width:100%}.student-group{margin-bottom:2rem;background:white;border:1px solid var(--border-color);border-radius:var(--border-radius);overflow:hidden}.student-group:last-child{margin-bottom:0}.group-header{margin:0;padding:.75rem 1rem;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));color:#fff;font-size:1rem;font-weight:600;border-bottom:1px solid var(--border-color)}.students-table{width:100%;border-collapse:collapse;font-size:.85rem;background-color:#fff}.students-table th{background:var(--light-bg);color:var(--dark-bg);font-weight:600;text-align:left;padding:.5rem;border-bottom:2px solid var(--border-color);font-size:.8rem}.students-table td{padding:.5rem;border-bottom:1px solid var(--border-color);vertical-align:middle}.students-table tr:nth-child(even){background-color:#f8f9fa}.students-table tr:hover{background-color:var(--light-bg)}.students-table tr.attendance-present{background-color:#d4edda!important;border-left:4px solid #28a745}.students-table tr.attendance-late{background-color:#fff3cd!important;border-left:4px solid #ffc107}.students-table tr.attendance-absent{background-color:#f8d7da!important;border-left:4px solid #dc3545}.section-filters{margin-top:1rem;padding:1rem;background-color:#fff;border-radius:8px;border:1px solid var(--border-color)}.section-filter-label{font-weight:600;margin-bottom:.5rem;color:var(--dark-bg);font-size:.9rem}.module-section-filters{margin-bottom:1rem;padding:.75rem;background-color:#f8f9fa;border-radius:6px;border:1px solid #e9ecef}.module-section-filters .section-filter-label{font-size:.85rem;margin-bottom:.4rem;color:#495057}.section-buttons{display:flex;flex-wrap:wrap;gap:.5rem;align-items:center}.section-button{padding:.4rem .8rem;border:1px solid var(--border-color);border-radius:20px;background-color:#fff;color:var(--dark-bg);cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s ease;min-width:60px}.section-button:hover{background-color:var(--light-bg);border-color:var(--primary-color);transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.section-button.active{background-color:var(--primary-color);color:#fff;border-color:var(--primary-color);box-shadow:0 2px 8px #4a90e24d}.clear-sections-button{padding:.4rem .8rem;border:1px solid #dc3545;border-radius:20px;background-color:#fff;color:#dc3545;cursor:pointer;font-size:.85rem;font-weight:500;transition:all .2s ease;margin-left:.5rem}.clear-sections-button:hover{background-color:#dc3545;color:#fff;transform:translateY(-1px);box-shadow:0 2px 4px #dc354533}.section-button.small{padding:.3rem .6rem;font-size:.8rem;min-width:50px;border-radius:15px}.clear-sections-button.small{padding:.3rem .6rem;font-size:.8rem;border-radius:15px;margin-left:.3rem}.module-details{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;margin:10px 0;padding:15px}.module-info-bar{display:flex;flex-direction:column;gap:12px}.info-row{display:flex;flex-wrap:wrap;gap:20px;align-items:center}.info-item{display:flex;align-items:center;gap:8px;min-width:150px;flex:1}.info-item label{font-weight:600;color:#495057;min-width:80px;font-size:.9rem}.info-item span{color:#212529;font-size:.9rem}.inline-input{padding:6px 10px;border:2px solid #007bff;border-radius:4px;font-size:.9rem;background:white;transition:border-color .2s;min-width:120px}.inline-input:focus{outline:none;border-color:#0056b3;box-shadow:0 0 0 2px #007bff40}.edit-actions{display:flex;gap:8px;align-items:center}.save-button{background:#28a745;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;transition:background-color .2s}.save-button:hover{background:#218838}.cancel-button{background:#6c757d;color:#fff;border:none;padding:6px 12px;border-radius:4px;cursor:pointer;font-size:.85rem;font-weight:500;transition:background-color .2s}.cancel-button:hover{background:#5a6268}.edit-hint{color:#6c757d;font-size:.8rem;font-style:italic}.edit-module-button{background:none;border:none;cursor:pointer;font-size:1.1rem;padding:5px;border-radius:3px;transition:background-color .2s;margin-left:10px}.edit-module-button:hover{background:rgba(0,0,0,.1)}.section-header{background:#f8f9fa;border:1px solid #e9ecef;border-radius:6px;margin-bottom:15px;padding:15px}.student-group-editor{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap;gap:15px;margin-top:10px}.student-group-info{display:flex;align-items:center;gap:8px;flex:1;min-width:200px}.student-group-info label{font-weight:600;color:#495057;font-size:.9rem;min-width:100px}.student-group-text{color:#212529;font-size:.9rem;background:#e9ecef;padding:6px 10px;border-radius:4px;font-family:monospace}.section-edit-actions{display:flex;gap:8px;align-items:center}.edit-section-button{background:none;border:none;cursor:pointer;font-size:1rem;padding:5px;border-radius:3px;transition:background-color .2s}.edit-section-button:hover{background:rgba(0,0,0,.1)}.save-button.small,.cancel-button.small{padding:4px 8px;font-size:.8rem;border-radius:3px}.login-spinner-container{display:flex;align-items:center;justify-content:center;gap:.75rem}.login-spinner{width:20px;height:20px;border:3px solid rgba(255,255,255,.3);border-top:3px solid white;border-radius:50%;animation:login-spin 1s linear infinite}@keyframes login-spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.login-button:disabled{opacity:.8;cursor:not-allowed;transform:none!important;box-shadow:0 4px 15px #3498db4d!important}.login-button:disabled:hover{transform:none!important;box-shadow:0 4px 15px #3498db4d!important}.disable-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.25rem .5rem;border-radius:16px;border:2px solid #e0e0e0;background:#f8f9fa;transition:all .3s ease;font-weight:500;font-size:.85rem;position:relative}.disable-toggle:hover{transform:translateY(-1px);box-shadow:0 2px 6px #0000001a}.toggle-slider{position:relative;width:36px;height:20px;background:#ccc;border-radius:10px;transition:all .3s ease;flex-shrink:0}.toggle-slider:before{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;background:white;border-radius:50%;transition:all .3s ease;box-shadow:0 1px 3px #0003}.disable-toggle.enabled .toggle-slider:before{transform:translate(16px)}.status-text{font-weight:600;min-width:50px;text-align:center;font-size:.8rem}.status-badge{padding:.25rem .5rem;border-radius:12px;font-size:.8rem;font-weight:600;text-align:center}.status-badge.enabled{background:#e8f5e9;color:#2e7d32;border:1px solid #4CAF50}.status-badge.disabled{background:#ffebee;color:#c62828;border:1px solid #f44336}.disable-toggle.toggling{opacity:.7;cursor:not-allowed;pointer-events:none}.disable-toggle.toggling .toggle-slider{animation:pulse 1.5s ease-in-out infinite}@keyframes pulse{0%{opacity:1}50%{opacity:.6}to{opacity:1}}.disable-toggle.toggling .status-text{color:#666}.attendance-actions{margin-bottom:1.5rem;display:flex;justify-content:flex-end}.save-attendance-button{background:linear-gradient(135deg,var(--success-color),#219653);color:#fff;padding:.75rem 1.5rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:1rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.save-attendance-button:hover{background:linear-gradient(135deg,#219653,#1e8449);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.save-attendance-button:active{transform:translateY(0)}.save-attendance-button:before{content:"\1f4be"}.students-table th:nth-child(1),.students-table td:nth-child(1){width:5%;text-align:center}.students-table th:nth-child(2),.students-table td:nth-child(2){width:5%}.students-table th:nth-child(3),.students-table td:nth-child(3){width:10%}.students-table th:nth-child(4),.students-table td:nth-child(4){width:10%}.students-table th:nth-child(5),.students-table td:nth-child(5){width:10%}.students-table th:nth-child(6),.students-table td:nth-child(6){width:15%}.students-table th:nth-child(7),.students-table td:nth-child(7){width:5%}.students-table th:nth-child(8),.students-table td:nth-child(8){width:5%}.students-table th:nth-child(9),.students-table td:nth-child(9){width:20%}input[type=checkbox]{transform:scale(1.5);cursor:pointer;width:20px;height:20px;accent-color:var(--success-color);border-radius:4px}.attendance-view-toggle{margin-bottom:1rem;display:flex;gap:.5rem}.view-toggle-button{background:var(--primary-color-light);color:var(--text-color);padding:.5rem 1rem;border:1px solid var(--border-color);border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;transition:var(--transition)}.view-toggle-button:hover{background:var(--primary-color);color:#fff}.view-toggle-button.active{background:var(--primary-color);color:#fff;border-color:var(--primary-color)}.qr-view,.checkbox-view{display:none}.qr-view.active,.checkbox-view.active{display:block}.attendance-checkboxes{display:flex;flex-direction:column;gap:.25rem}.attendance-checkbox{display:flex;align-items:center;cursor:pointer;font-size:.85rem;padding:.25rem;border-radius:4px;transition:background-color .2s}.attendance-checkbox:hover{background-color:#f0f0f0}.attendance-checkbox input{transform:scale(1.2);margin-right:.25rem}.attendance-checkbox.absent.selected{background-color:#ffebee;color:#c62828}.attendance-checkbox.present.selected{background-color:#e8f5e9;color:#2e7d32}.attendance-checkbox.late.selected{background-color:#fff8e1;color:#f57f17}.auto-refresh-indicator{font-size:.9em;color:#6c757d;font-style:italic;margin-top:8px;animation:pulse 2s infinite;display:flex;align-items:center;gap:.5rem}.auto-refresh-indicator:before{content:"\1f504"}@keyframes pulse{0%{opacity:.6}50%{opacity:1}to{opacity:.6}}.attendance-summary{margin-top:1rem;padding:1rem;background-color:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.attendance-summary h4{margin-bottom:.75rem;color:#495057}.attendance-summary p{margin:.4rem 0;display:flex;align-items:center}.attendance-summary .present-count{color:#2e7d32;font-weight:700}.attendance-summary .late-count{color:#f57f17;font-weight:700}.attendance-summary .absent-count{color:#c62828;font-weight:700}.attendance-summary .total-count{color:#1976d2;font-weight:700;background-color:#e3f2fd;padding:.1rem .4rem;border-radius:4px;margin-left:.3rem}.student-id-card{display:flex;justify-content:space-between;align-items:center;padding:.5rem;margin:.25rem 0;border-radius:4px;background-color:#f8f9fa;border:1px solid #dee2e6}.student-id-card.present{background-color:#e8f5e9;border-color:#c8e6c9}.student-id-card.late{background-color:#fff8e1;border-color:#ffecb3}.student-id-card.absent{background-color:#ffebee;border-color:#ffcdd2}.student-id-with-status{font-size:.9rem}.student-id-card .remove-student-card{background:none;border:none;color:#6c757d;cursor:pointer;font-size:1.2rem;padding:0;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s}.student-id-card .remove-student-card:hover{background-color:#f8f9fa;color:#495057}.student-id-card .remove-student-card:active{background-color:#e9ecef}.present-students-container{max-height:1000px;overflow-y:auto;padding:.5rem;border:1px solid #dee2e6;border-radius:4px;background-color:#fff;position:relative}.student-tooltip{position:fixed;background-color:#333;color:#fff;padding:8px;border-radius:4px;z-index:9999;font-size:12px;box-shadow:0 2px 4px #0003;pointer-events:none;max-width:300px;word-wrap:break-word}.student-tooltip strong{display:block;margin-bottom:4px;font-size:14px}.student-tooltip br{line-height:1.5}.mode-selection{display:flex;gap:.75rem;background:white;border-radius:var(--border-radius);padding:.25rem;border:1px solid var(--border-color);box-shadow:var(--shadow)}.mode-button{padding:.5rem 1rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-weight:600;color:var(--dark-text);background-color:var(--light-bg);transition:var(--transition);font-size:.9rem;box-shadow:0 1px 2px #0000000d;display:flex;align-items:center;justify-content:center;gap:.5rem}.mode-button:hover{background-color:#e9ecef;transform:translateY(-1px);box-shadow:var(--shadow-hover)}.mode-button.active{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;box-shadow:0 2px 4px #00000026}.mode-button.active:hover{background:linear-gradient(135deg,var(--primary-dark),#1c6ea4);transform:translateY(-1px);box-shadow:var(--shadow-hover)}.mode-button.dashboard-button{background:linear-gradient(135deg,#8b5cf6,#6366f1);color:#fff;box-shadow:0 2px 4px #8b5cf64d}.mode-button.dashboard-button:hover{background:linear-gradient(135deg,#7c3aed,#5b21b6);transform:translateY(-2px);box-shadow:0 4px 12px #8b5cf666}.mode-button:first-child:before{content:"\2699\fe0f"}.mode-button:last-child:before{content:"\1f393"}@media (max-width: 768px){.mode-selection{flex-direction:row;width:auto}.mode-button{width:auto;padding:.4rem .8rem;font-size:.8rem}.mode-button:first-child:before{content:""}.mode-button:last-child:before{content:""}}.logo-container{display:flex;align-items:center;justify-content:flex-start}@media (max-width: 768px){.logo-container{justify-content:flex-start}}.logo-text{display:flex;align-items:baseline;font-weight:800;text-align:left;letter-spacing:-.5px;background:white;padding:.5rem 1.5rem;border-radius:var(--border-radius);box-shadow:var(--shadow);border:1px solid var(--border-color)}.logo-mdx{font-size:1.8rem;background:linear-gradient(135deg,#3498db,#9b59b6);-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;margin-right:.3rem}.logo-attendance{font-size:1.3rem;color:#2c3e50}@media (max-width: 768px){.logo-text{padding:.4rem 1rem}.logo-mdx{font-size:1.5rem}.logo-attendance{font-size:1.1rem}}.week-timeline-container{margin:15px 0;padding:15px 20px;background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);border:1px solid var(--border-color);transition:var(--transition);position:relative}.week-timeline-container:hover{box-shadow:var(--shadow-hover)}.week-timeline-container h3{margin:0 0 12px;color:var(--dark-bg);border-bottom:2px solid var(--primary-color);padding-bottom:8px;font-weight:600;font-size:1.3rem;display:flex;align-items:center;gap:10px;justify-content:center;text-align:center}.week-timeline-container h3:before{content:"\1f4c5"}.week-timeline-wrapper{width:100%;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--primary-color) #f1f1f1;text-align:center}.week-timeline-wrapper::-webkit-scrollbar{height:6px}.week-timeline-wrapper::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.week-timeline-wrapper::-webkit-scrollbar-thumb{background-color:var(--primary-color);border-radius:3px}.week-timeline-text{display:flex;flex-wrap:nowrap;gap:15px;padding:5px 0;font-size:.95rem;white-space:nowrap;align-items:flex-start;justify-content:center;margin:0 auto}.week-text-item{cursor:pointer;padding:6px 10px;border-radius:6px;transition:all .2s ease;color:#495057;display:flex;flex-direction:column;align-items:center;gap:2px;min-width:80px}.week-text-item:hover{background-color:#e9f7ff;color:var(--primary-color)}.week-text-item.selected{background-color:var(--primary-color);color:#fff}.week-text-item.has-sessions{color:var(--primary-dark)}.week-text-item.selected.has-sessions{background-color:var(--primary-dark);color:#fff}.week-label-text{font-weight:600;font-size:1rem}.week-text-item.selected .week-label-text{color:#fff}.week-date-text{font-size:.8rem;color:#6c757d}.week-text-item.selected .week-date-text{color:#e9f7ff}.session-count-text{font-weight:600;font-size:.85rem;color:var(--accent-color);margin-top:2px}.week-text-item.selected .session-count-text{color:#ffcccb}.separator{color:#adb5bd;font-weight:400;align-self:center;margin-top:10px}.week-text-item.selected+.separator{color:#dee2e6}@media (max-width: 768px){.week-timeline-container{padding:12px 15px}.week-timeline-container h3{font-size:1.2rem;gap:8px}.week-timeline-text{font-size:.85rem;gap:12px}.week-text-item{padding:5px 8px;min-width:70px}.week-label-text{font-size:.9rem}.week-date-text{font-size:.75rem}.session-count-text{font-size:.8rem}}@media (max-width: 480px){.week-timeline-container{padding:10px 12px}.week-timeline-container h3{font-size:1.1rem;gap:6px}.week-timeline-text{font-size:.8rem;gap:10px}.week-text-item{padding:4px 6px;min-width:60px}.week-label-text{font-size:.85rem}.week-date-text{font-size:.7rem}.session-count-text{font-size:.75rem}.separator{margin-top:8px}}.lecturer-mode{width:100%;max-width:1200px;margin:0 auto;padding:2rem 1rem}.attendance-checkbox.absent.visual-absent{position:relative;background-color:#ffebee;border-color:#f44336;border-width:2px;transform:scale(1.02);box-shadow:0 2px 8px #f443364d}.attendance-checkbox.absent.visual-absent:after{content:"\1f4c5";position:absolute;top:-8px;right:-8px;font-size:12px;background:#f44336;color:#fff;border-radius:50%;width:20px;height:20px;display:flex;align-items:center;justify-content:center;z-index:1;font-weight:700;box-shadow:0 2px 4px #0003}.attendance-checkbox.absent.visual-absent .checkmark{background-color:#ffcdd2;border-color:#f44336;border-width:2px}.attendance-checkbox.absent.visual-absent .checkmark:after{content:"";position:absolute;display:block;left:6px;top:2px;width:5px;height:10px;border:solid #f44336;border-width:0 3px 3px 0;transform:rotate(45deg);z-index:1}.attendance-checkbox.absent.visual-absent:hover{background-color:#ffcdd2;border-color:#d32f2f;transform:scale(1.05);box-shadow:0 4px 12px #f4433666}.attendance-checkbox.absent.visual-absent input[type=checkbox]:checked+.checkmark{background-color:#f44336;border-color:#d32f2f}.attendance-checkbox.absent.visual-absent input[type=checkbox]:checked+.checkmark:after{color:#fff}.attendance-checkbox.absent.visual-absent input[type=checkbox]:not(:checked)+.checkmark:after{opacity:.7}.attendance-checkbox.absent.visual-absent input[type=checkbox]:checked+.checkmark:after{opacity:1}.visual-absent-explanation{background-color:#e7f3ff;border:1px solid #b3d9ff;border-radius:6px;padding:.75rem 1rem;margin-bottom:1rem;color:#0056b3;font-size:.9rem}.visual-absent-explanation p{margin:0;display:flex;align-items:center;gap:.5rem}.visual-absent-explanation strong{color:#004085}.filters{display:flex;flex-wrap:wrap;gap:1rem;margin-top:1.5rem;align-items:flex-end;justify-content:center;padding:1rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color)}.week-timeline-section{margin-bottom:2rem;padding:1.5rem;background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);border:1px solid var(--border-color);transition:var(--transition);max-width:none}.week-timeline-section:hover{box-shadow:var(--shadow-hover)}.week-timeline-section h2{margin-top:0;margin-bottom:1.5rem;color:var(--dark-bg);border-bottom:3px solid var(--primary-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem;display:flex;align-items:center;gap:.75rem;text-align:center;justify-content:center;width:100%}.week-timeline-section h2:before{content:"\1f4c5"}.enhanced-timeline{display:flex;justify-content:center;padding:1.5rem 0;margin:1rem 0;position:relative;flex-wrap:nowrap;gap:0;width:100%;overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--primary-color) #f1f1f1}.enhanced-timeline::-webkit-scrollbar{height:8px}.enhanced-timeline::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.enhanced-timeline::-webkit-scrollbar-thumb{background-color:var(--primary-color);border-radius:4px}.timeline-progress-bar{position:absolute;top:30px;left:0;height:6px;background:linear-gradient(90deg,var(--primary-color),var(--secondary-color));border-radius:3px;z-index:1;box-shadow:0 2px 4px #0000001a}.timeline-week{display:flex!important;flex-direction:column!important;align-items:center!important;justify-content:flex-start!important;padding:2.5rem 1rem 1rem!important;min-width:100px!important;position:relative!important;flex:1 0 auto!important;max-width:none!important;background:white!important;border:2px solid var(--border-color)!important;box-shadow:0 2px 6px #0000000d!important;cursor:pointer!important;border-radius:var(--border-radius)!important;text-align:center!important;margin:0 .25rem!important;box-sizing:border-box!important;transition:all .3s ease!important;transform:none!important;width:auto!important;z-index:2}.timeline-week:first-child{margin-left:0!important}.timeline-week:last-child{margin-right:0!important}.timeline-week:hover{background:#f1f8ff!important;transform:translateY(-5px)!important;box-shadow:var(--shadow-hover)!important;border-color:var(--primary-color)!important}.timeline-week.active{background:linear-gradient(135deg,#e1f0fa,#d1e9ff)!important;border-color:var(--primary-color)!important;box-shadow:0 4px 12px #0000001a!important;transform:translateY(-5px)!important}.timeline-week-marker{position:absolute;top:15px;width:24px;height:24px;background-color:#adb5bd;border-radius:50%;border:4px solid white;z-index:3;box-shadow:0 3px 6px #0003;left:50%;transform:translate(-50%);transition:all .3s ease}.timeline-week.active .timeline-week-marker,.timeline-week.has-sessions .timeline-week-marker{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));transform:translate(-50%) scale(1.2);box-shadow:0 4px 8px #0000004d}.timeline-week:hover .timeline-week-marker{transform:translate(-50%) scale(1.1);box-shadow:0 4px 8px #0000004d}.session-indicator{position:absolute;top:-8px;right:-8px;background:linear-gradient(135deg,var(--accent-color),#c0392b);color:#fff;border-radius:50%;width:26px;height:26px;display:flex;align-items:center;justify-content:center;font-size:.7rem;font-weight:700;z-index:4;box-shadow:0 3px 6px #0003;transition:all .3s ease}.session-indicator:hover{transform:scale(1.1);box-shadow:0 4px 8px #0000004d}.week-label{font-weight:700!important;color:var(--dark-text)!important;margin-bottom:.75rem!important;font-size:1rem!important;text-align:center!important;display:block!important;width:100%!important;box-sizing:border-box!important;transition:color .3s ease}.timeline-week.active .week-label,.timeline-week:hover .week-label{color:var(--primary-dark)!important}.week-date{font-size:.85rem!important;color:#6c757d!important;text-align:center!important;display:block!important;width:100%!important;box-sizing:border-box!important;font-weight:500}.timeline-week.active .week-date,.timeline-week:hover .week-date{color:var(--primary-color)!important;font-weight:600}.lecturer-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.lecturer-header h1{margin:0}.lecturer-controls{display:flex;gap:1rem}.lecturer-content{width:100%;max-width:1200px}.take-attendance-button{background:linear-gradient(135deg,var(--primary-color),var(--primary-dark));color:#fff;padding:.5rem 1rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.9rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.take-attendance-button:hover{background:linear-gradient(135deg,var(--primary-dark),#1c6ea4);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.take-attendance-button:active{transform:translateY(0)}.take-attendance-button:before{content:"\1f4dd"}#lecturer-date-filter{padding:.75rem 1rem;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:.95rem;box-sizing:border-box;background-color:#fff;min-height:42px;transition:var(--transition)}#lecturer-date-filter:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #3498db33}.switch-mode-button{background:linear-gradient(135deg,var(--secondary-color),#8e44ad);color:#fff;padding:.65rem 1.25rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.95rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.switch-mode-button:hover{background:linear-gradient(135deg,#8e44ad,#7d3c98);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.switch-mode-button:active{transform:translateY(0)}.switch-mode-button:before{content:"\1f504"}.lecturer-login-section{background:white;padding:2.5rem;border-radius:var(--border-radius);box-shadow:var(--shadow);width:100%;max-width:450px;border:1px solid var(--border-color);transition:var(--transition)}.lecturer-login-section:hover{box-shadow:var(--shadow-hover)}.lecturer-login-section h2{margin-top:0;color:var(--dark-bg);border-bottom:3px solid var(--primary-color);padding-bottom:.75rem;font-weight:700;font-size:1.75rem;display:flex;align-items:center;gap:.75rem}.lecturer-login-section h2:before{content:"\1f511"}.lecturer-title{font-size:3rem;font-weight:800;text-align:center;margin-bottom:2rem;color:var(--dark-bg);text-shadow:0 2px 4px rgba(0,0,0,.1);letter-spacing:-.5px;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text}.lecturer-mode-content{width:100%;margin:0 auto;padding:1rem 0;box-sizing:border-box;max-width:none}.qr-code-section{background:white;border-radius:var(--border-radius);padding:2rem;margin-top:1.5rem;box-shadow:var(--shadow);border:1px solid var(--border-color);transition:var(--transition)}.qr-code-section:hover{box-shadow:var(--shadow-hover)}.qr-code-section h4{margin-top:0;color:var(--dark-bg);border-bottom:2px solid var(--primary-color);padding-bottom:.75rem;font-weight:700;font-size:1.25rem;display:flex;align-items:center;gap:.75rem}.qr-code-section h4:before{content:"\1f4f1"}.qr-code-container{background:white;border-radius:var(--border-radius);padding:2.5rem;margin-bottom:1.5rem;box-shadow:0 4px 12px #0000001a;display:inline-block;max-width:100%;overflow:auto;border:2px solid var(--border-color);text-align:center}.qr-code-info{margin:1rem 0 .5rem;font-weight:700;color:var(--dark-bg);font-size:1.5rem}.qr-code-timer{margin:.5rem 0;font-style:italic;color:#7f8c8d;font-size:1.2rem;display:flex;align-items:center;justify-content:center;gap:.5rem}.qr-code-timer:before{content:"\23f1\fe0f"}.attendance-layout{display:flex;flex-wrap:wrap;gap:1.5rem;margin-top:1.5rem;justify-content:center;width:100%}.qr-code-column{flex:0 0 auto;min-width:500px;max-width:700px;display:flex;justify-content:center;align-items:flex-start}.student-lists-column{flex:1;min-width:300px;max-width:500px}.qr-code-container canvas{max-width:100%;height:auto;display:block;margin:0 auto}.qr-code-section{margin-top:1.5rem}.qr-code-container{text-align:center;margin-bottom:2rem}.qr-code-container canvas{max-width:100%;height:auto}.attendance-summary{width:100%}.student-id-card{display:inline-flex;align-items:center;background:#e1f0fa;border:1px solid var(--primary-color);border-radius:20px;padding:.75rem 1.25rem;margin:.25rem;font-weight:600;color:var(--primary-dark);transition:all .2s ease;position:relative;font-size:1.1rem}.student-id-card:hover{background:#d1e9ff;transform:translateY(-2px);box-shadow:0 2px 8px #0000001a}.student-id-card.present{background:#e8f5e9;border-color:#4caf50;color:#2e7d32}.student-id-card.absent{background:#ffebee;border-color:#f44336;color:#c62828;text-decoration:line-through}.remove-student-card{background:var(--accent-color);color:#fff;border:none;border-radius:50%;width:20px;height:20px;font-size:12px;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0;margin-left:.5rem;transition:all .2s ease}.remove-student-card:hover{background:#c0392b;transform:scale(1.1)}.scanned-students-container{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;padding:1rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color)}.present-students-container{display:flex;flex-wrap:wrap;gap:.5rem;margin-top:1rem;padding:1rem;background-color:#e8f5e9;border-radius:var(--border-radius);border:1px solid #4CAF50}.present-students-container h5{width:100%;margin-top:0;color:var(--success-color)}.manual-attendance-section{background:white;border-radius:var(--border-radius);padding:1.75rem;margin-bottom:1.5rem;box-shadow:var(--shadow);border:1px solid var(--border-color);transition:var(--transition)}.manual-attendance-section:hover{box-shadow:var(--shadow-hover)}.manual-attendance-section h4{margin-top:0;color:var(--dark-bg);border-bottom:2px solid var(--success-color);padding-bottom:.75rem;font-weight:700;font-size:1.25rem;display:flex;align-items:center;gap:.75rem}.manual-attendance-section h4:before{content:"\2328\fe0f"}.manual-attendance-form{display:flex;gap:1rem;justify-content:center;align-items:center;flex-wrap:wrap;margin-top:1rem}.student-id-input{padding:.85rem 1.25rem;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:1.1rem;min-width:250px;transition:var(--transition)}.student-id-input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #3498db33}.mark-present-button{background:linear-gradient(135deg,var(--success-color),#219653);color:#fff;padding:.85rem 1.5rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:1.1rem;transition:var(--transition);font-weight:600;box-shadow:0 2px 4px #0000001a;display:flex;align-items:center;gap:.5rem}.mark-present-button:hover{background:linear-gradient(135deg,#219653,#1e8449);transform:translateY(-2px);box-shadow:var(--shadow-hover)}.mark-present-button:active{transform:translateY(0)}.mark-present-button:before{content:"\2705"}.attendance-summary{background:white;border-radius:var(--border-radius);padding:1.5rem;margin-bottom:1.5rem;box-shadow:var(--shadow);border:1px solid var(--border-color);transition:var(--transition)}.attendance-summary:hover{box-shadow:var(--shadow-hover)}.attendance-actions{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;padding:1.25rem;background-color:var(--light-bg);border-radius:var(--border-radius);border:1px solid var(--border-color)}.present-count{font-weight:700;color:var(--success-color);font-size:1.25rem;background-color:#e8f5e9;padding:.75rem 1.25rem;border-radius:var(--border-radius);border:1px solid #4CAF50;display:flex;align-items:center;gap:.75rem}.present-count:before{content:"\1f465"}.logged-in-info{display:flex;align-items:center;gap:15px;font-weight:600;color:var(--dark-text)}.logged-in-info span{font-size:1.1rem}.manual-attendance-section{margin:20px 0;padding:15px;background-color:#f8f9fa;border-radius:8px;border:1px solid #dee2e6}.manual-attendance-section h4{margin-top:0;margin-bottom:15px;color:#333;font-size:1.1rem}.manual-attendance-form{display:flex;gap:10px;align-items:center;margin-bottom:15px}.student-id-input{flex:1;padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:1rem;min-width:200px}.mark-present-button{padding:8px 16px;background-color:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:500;transition:background-color .2s}.mark-present-button:hover{background-color:#218838}.scanned-students-list h4{margin-top:20px;margin-bottom:10px;color:#333}.scanned-students-container{display:flex;flex-wrap:wrap;gap:10px;margin-top:10px}.student-id-card{display:flex;align-items:center;padding:8px 12px;background-color:#e9ecef;border-radius:20px;font-size:.9rem;font-weight:500}.student-id-card.present{background-color:#d4edda;border:1px solid #c3e6cb;color:#155724}.remove-student-card{background:none;border:none;color:#dc3545;font-size:1.2rem;font-weight:700;cursor:pointer;margin-left:8px;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%}.remove-student-card:hover{background-color:#f8d7da}.student-search-section{margin-bottom:20px;padding:15px;background-color:#f8f9fa;border-radius:8px;border:1px solid #dee2e6}.session-student-search-section{margin-bottom:15px;padding:12px;background-color:#f8f9fa;border-radius:8px;border:1px solid #dee2e6}.search-results-info{text-align:center;padding:10px;margin-bottom:15px;background-color:#e8f4f8;border-radius:6px;border:1px solid #bee5eb;font-weight:600;color:#2c3e50}.search-bar{display:flex;gap:10px}.search-input{flex:1;padding:10px;border:1px solid #ced4da;border-radius:4px;font-size:1rem}.clear-search-button{padding:10px 15px;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;transition:background-color .2s}.add-student-section{margin-bottom:20px}.add-student-button{padding:10px 20px;background-color:#007bff;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:500;transition:background-color .2s;display:flex;align-items:center;gap:5px}.add-student-button:hover{background-color:#0069d9}.modal-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background-color:#00000080;display:flex;align-items:center;justify-content:center;z-index:1000}.modal{background:white;border-radius:8px;box-shadow:0 4px 20px #00000026;max-width:600px;width:90%;max-height:90vh;overflow-y:auto}.modal-header{display:flex;justify-content:space-between;align-items:center;padding:20px;border-bottom:1px solid #dee2e6}.modal-header h2{margin:0;color:#333;font-size:1.5rem}.close-button{background:none;border:none;font-size:1.8rem;cursor:pointer;color:#6c757d;padding:0;width:30px;height:30px;display:flex;align-items:center;justify-content:center;border-radius:50%}.close-button:hover{background-color:#f8f9fa;color:#333}.modal-body{padding:20px}.form-group{margin-bottom:20px}.form-group label{display:block;margin-bottom:5px;font-weight:500;color:#333}.form-group input{width:100%;padding:10px;border:1px solid #ced4da;border-radius:4px;font-size:1rem;box-sizing:border-box}.form-group input:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff40}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:30px}.students-section h3{margin-top:30px;margin-bottom:15px;color:#333}.students-table{width:100%;border-collapse:collapse;margin-top:10px;background-color:#fff;box-shadow:0 1px 3px #0000001a}.students-table th,.students-table td{padding:12px;text-align:left;border-bottom:1px solid #e0e0e0}.students-table th{background-color:#f5f5f5;font-weight:600;color:#333;text-transform:uppercase;font-size:.85rem;letter-spacing:.5px}.students-table tbody tr:hover{background-color:#f1f8ff}.students-table tbody tr:nth-child(even){background-color:#f8f9fa}.students-table tbody tr:nth-child(even):hover{background-color:#e9f7ff}.filters-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:15px}.filters-header h2{margin:0}.add-session-button{padding:8px 16px;background-color:#28a745;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:500;display:flex;align-items:center;gap:5px;transition:background-color .2s}.add-session-button:hover{background-color:#218838}.search-group{flex:1;min-width:300px}.search-input{width:100%;padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:1rem;box-sizing:border-box}.clear-search-button{padding:8px 12px;background-color:#6c757d;color:#fff;border:none;border-radius:4px;cursor:pointer;font-size:.9rem;transition:background-color .2s}.clear-search-button:hover{background-color:#5a6268}.add-timetable-modal{max-width:800px;width:95%}.add-timetable-form{display:flex;flex-direction:column;gap:20px}.form-row{display:flex;gap:15px}.form-group{flex:1;display:flex;flex-direction:column}.form-group label{margin-bottom:5px;font-weight:500;color:#333}.form-group input,.form-group select{padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:1rem}.form-group input:focus,.form-group select:focus{outline:none;border-color:#007bff;box-shadow:0 0 0 3px #007bff40}.form-actions{display:flex;gap:10px;justify-content:flex-end;margin-top:20px}.form-actions button{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:500;transition:background-color .2s}.form-actions button[type=button]{background-color:#6c757d;color:#fff}.form-actions button[type=button]:hover{background-color:#5a6268}.form-actions button[type=submit]{background-color:#007bff;color:#fff}.form-actions button[type=submit]:hover{background-color:#0069d9}.conflict-resolution-section h3{margin-top:0;color:#dc3545}.conflict-resolution-section p{margin:10px 0}.conflict-comparison{display:flex;gap:20px;margin:20px 0}.existing-data,.new-data{flex:1;padding:15px;border-radius:4px}.existing-data{background-color:#fff3cd;border:1px solid #ffeaa7}.new-data{background-color:#d4edda;border:1px solid #c3e6cb}.conflict-comparison h4{margin-top:0;margin-bottom:15px}.conflict-comparison p{margin:5px 0;font-size:.9rem}.conflict-actions{display:flex;gap:15px;justify-content:center;margin-top:20px}.keep-existing-button,.use-new-button{padding:10px 20px;border:none;border-radius:4px;cursor:pointer;font-size:1rem;font-weight:500;transition:all .2s}.keep-existing-button{background-color:#ffc107;color:#212529}.keep-existing-button:hover{background-color:#e0a800}.use-new-button{background-color:#28a745;color:#fff}.use-new-button:hover{background-color:#218838}.expansion-notifications-container{position:fixed;bottom:20px;right:20px;width:320px;max-height:60vh;overflow-y:auto;z-index:1000;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#fff3cd;border:3px solid #ff6b6b;border-radius:8px;box-shadow:0 2px 8px #0000001a;min-height:60px}.expansion-notifications-container:empty:before{content:"\1f4ca  No sessions expanded yet";display:block;padding:20px;text-align:center;color:#7f8c8d;font-style:italic;font-size:.9rem}.expansion-notifications-container.no-notifications:before{content:"\1f4ca  No sessions expanded yet";display:block;padding:20px;text-align:center;color:#7f8c8d;font-style:italic;font-size:.9rem}.notifications-header{background:linear-gradient(135deg,#2c3e50,#34495e);color:#fff;padding:12px 16px;border-radius:8px 8px 0 0;margin:0;font-size:1rem;font-weight:600;text-align:center;box-shadow:0 2px 8px #00000026}.expansion-notification{background:#f8f9fa;border-bottom:1px solid #e1e8ed;margin-bottom:0;animation:slideInLeft .3s ease-out;transition:all .2s ease}.expansion-notification:last-child{border-bottom:none;border-radius:0 0 8px 8px}.notifications-header+.expansion-notification{border-radius:0}.expansion-notification:hover{box-shadow:0 4px 16px #00000026;transform:translateY(-2px)}@keyframes slideInLeft{0%{transform:translate(-100%);opacity:0}to{transform:translate(0);opacity:1}}.notification-header{display:flex;justify-content:space-between;align-items:center;padding:12px 16px 8px;border-bottom:1px solid #f0f3f7}.session-info{font-size:.95rem;font-weight:600;color:#2c3e50;flex:1}.close-notification{background:none;border:none;font-size:1.2rem;color:#7f8c8d;cursor:pointer;padding:2px;width:24px;height:24px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:all .2s ease;margin-left:8px}.close-notification:hover{background-color:#f8f9fa;color:#e74c3c;transform:scale(1.1)}.notification-details{padding:8px 16px 12px}.detail-row{display:flex;justify-content:space-between;align-items:center;margin-bottom:6px;font-size:.85rem}.detail-row:last-child{margin-bottom:0}.detail-row .label{color:#7f8c8d;font-weight:500;min-width:80px}.detail-row .value{color:#2c3e50;font-weight:400;text-align:right;flex:1}.detail-row.attendance-progress .value{display:flex;align-items:center;gap:2px}.attendance-count{font-weight:700;color:#27ae60;font-size:.9rem}.attendance-separator{color:#95a5a6;font-weight:400}.total-count{font-weight:600;color:#2c3e50}.attendance-label{color:#7f8c8d;font-size:.8rem;margin-left:2px}@media (max-width: 768px){.expansion-notifications-container{position:fixed;top:auto;bottom:20px;right:10px;left:10px;width:auto;max-height:60vh}.form-row{flex-direction:column}.filters-header{flex-direction:column;align-items:flex-start;gap:10px}.add-session-button{align-self:flex-end}}@media (max-width: 480px){.notification-details{padding:6px 12px 10px}.detail-row{font-size:.8rem;margin-bottom:4px}.detail-row .label{min-width:70px}}.timetable-row.current-day-session{background-color:#e9ecef!important;border-left:4px solid #6c757d}.timetable-row.current-day-session:hover{background-color:#dee2e6!important}.timetable-row.current-day-session td{font-weight:600;color:#495057}.session-extraction-section{margin-top:20px;padding:15px;background-color:#f8f9fa;border-radius:8px;border:1px solid #dee2e6;text-align:center}.extract-students-button{background-color:#28a745;color:#fff;border:none;padding:12px 24px;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s ease;display:inline-flex;align-items:center;gap:8px}.extract-students-button:hover{background-color:#218838;transform:translateY(-1px);box-shadow:0 2px 4px #0000001a}.extract-students-button:active{transform:translateY(0);box-shadow:0 1px 2px #0000001a}.section-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem;flex-wrap:wrap;gap:1rem}.section-header h2{margin:0;color:var(--dark-bg);border-bottom:3px solid var(--primary-color);padding-bottom:.75rem;font-weight:700;font-size:1.5rem}.reports-button{background:linear-gradient(135deg,#dc3545,#c82333);color:#fff;padding:.75rem 1.25rem;border:none;border-radius:var(--border-radius);cursor:pointer;font-size:.95rem;font-weight:600;transition:all .3s ease;box-shadow:0 2px 4px #dc354533;display:flex;align-items:center;gap:.5rem;white-space:nowrap}.reports-button:hover{background:linear-gradient(135deg,#c82333,#bd2130);transform:translateY(-2px);box-shadow:0 4px 12px #dc35454d}.reports-button:active{transform:translateY(0);box-shadow:0 2px 6px #dc354533}.reports-button:before{content:"\1f4ca";font-size:1.1rem}.student-status-controls{display:flex;align-items:center;justify-content:center}.disable-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem 1rem;border-radius:20px;border:2px solid #e0e0e0;background:#f8f9fa;transition:all .3s ease;font-weight:500;font-size:.9rem;position:relative}.disable-toggle:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.disable-toggle.enabled{border-color:#4caf50;background:#e8f5e9;color:#2e7d32}.disable-toggle.disabled{border-color:#f44336;background:#ffebee;color:#c62828}.disable-toggle input[type=checkbox]{display:none}.toggle-slider{position:relative;width:44px;height:24px;background:#ccc;border-radius:12px;transition:all .3s ease;flex-shrink:0}.toggle-slider:before{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:white;border-radius:50%;transition:all .3s ease;box-shadow:0 2px 4px #0003}.disable-toggle.enabled .toggle-slider{background:#4CAF50}.disable-toggle.enabled .toggle-slider:before{transform:translate(20px)}.disable-toggle.disabled .toggle-slider{background:#f44336}.status-text{font-weight:600;min-width:60px;text-align:center}.students-table tbody tr.disabled-student-row{background-color:#f5f5f5!important;opacity:.6}.students-table tbody tr.disabled-student-row:hover{background-color:#eee!important}.students-table tbody tr.disabled-student-row td{color:#999!important;font-style:italic}.students-table tbody tr.disabled-student-row td:first-child:before{content:"\1f6ab  ";color:#f44336;font-weight:700}.students-table tbody tr.disabled-student-row .disable-toggle{opacity:1;font-style:normal}.students-table tbody tr.disabled-student-row .disable-toggle .status-text{color:#c62828!important}.students-table tbody tr.disabled-student-row .attendance-checkbox{opacity:.5;cursor:not-allowed!important;pointer-events:none}.students-table tbody tr.disabled-student-row .attendance-checkbox input{cursor:not-allowed!important}.students-table tbody tr.disabled-student-row .attendance-checkbox .checkmark{cursor:not-allowed!important;opacity:.5}.students-table tbody tr.disabled-student{background-color:#f5f5f5!important;opacity:.6}.students-table tbody tr.disabled-student:hover{background-color:#eee!important}.students-table tbody tr.disabled-student td{color:#999!important;font-style:italic}.students-table tbody tr.disabled-student td:first-child:before{content:"\1f6ab  ";color:#f44336;font-weight:700}.students-table tbody tr.disabled-student .disable-toggle{opacity:1;font-style:normal}.students-table tbody tr.disabled-student .disable-toggle .status-text{color:#c62828!important}.students-table tbody tr.disabled-student .attendance-checkbox{opacity:.5;cursor:not-allowed!important;pointer-events:none}.students-table tbody tr.disabled-student .attendance-checkbox input{cursor:not-allowed!important}.students-table tbody tr.disabled-student .attendance-checkbox .checkmark{cursor:not-allowed!important;opacity:.5}.session-status-controls{display:flex;align-items:center;justify-content:center}.session-disable-toggle{display:flex;align-items:center;gap:.5rem;cursor:pointer;padding:.5rem 1rem;border-radius:20px;border:2px solid #e0e0e0;background:#f8f9fa;transition:all .3s ease;font-weight:500;font-size:.9rem;position:relative}.session-disable-toggle:hover{transform:translateY(-1px);box-shadow:0 2px 8px #0000001a}.session-disable-toggle.enabled{border-color:#4caf50;background:#e8f5e9;color:#2e7d32}.session-disable-toggle.disabled{border-color:#f44336;background:#ffebee;color:#c62828}.session-disable-toggle.toggling{opacity:.7;cursor:wait}.session-disable-toggle input[type=checkbox]{display:none}.session-disable-toggle .toggle-slider{position:relative;width:44px;height:24px;background:#ccc;border-radius:12px;transition:all .3s ease;flex-shrink:0}.session-disable-toggle .toggle-slider:before{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;background:white;border-radius:50%;transition:all .3s ease;box-shadow:0 2px 4px #0003}.session-disable-toggle.enabled .toggle-slider{background:#4CAF50}.session-disable-toggle.enabled .toggle-slider:before{transform:translate(20px)}.session-disable-toggle.disabled .toggle-slider{background:#f44336}.session-disable-toggle .status-text{font-weight:600;min-width:60px;text-align:center}.timetable-table tbody tr.disabled-session-row{background-color:#f5f5f5!important;opacity:.6}.timetable-table tbody tr.disabled-session-row:hover{background-color:#eee!important}.timetable-table tbody tr.disabled-session-row td{color:#999!important;font-style:italic}.timetable-table tbody tr.disabled-session-row td:first-child:before{content:"\1f6ab  ";color:#f44336;font-weight:700}.timetable-table tbody tr.disabled-session-expanded{background-color:#f9f9f9!important;opacity:.7}.timetable-table tbody tr.disabled-session-expanded td{color:#999!important}.session-disabled-message{background-color:#fff3cd;border:1px solid #ffeaa7;border-radius:8px;padding:1rem;margin-bottom:1rem;text-align:center}.session-disabled-message p{margin:0;color:#856404;font-weight:600}.timetable-table tbody tr.disabled-session-expanded .attendance-view-toggle,.timetable-table tbody tr.disabled-session-expanded .qr-code-section,.timetable-table tbody tr.disabled-session-expanded .checkbox-view,.timetable-table tbody tr.disabled-session-expanded .student-attendance-checkboxes{opacity:.5;pointer-events:none;filter:grayscale(100%)}.timetable-table tbody tr.disabled-session-expanded .attendance-view-toggle button,.timetable-table tbody tr.disabled-session-expanded .extract-students-button{cursor:not-allowed!important;opacity:.5}.reports-container{padding:20px;max-width:none;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;width:100vw}.range-module-details{contain:style paint}.attendance-report-table{contain:style}.pagination-controls button{transition:all .2s ease}.pagination-controls button:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 2px 4px #0003}.loading-overlay{position:absolute;top:0;left:0;right:0;bottom:0;background:transparent;display:flex;align-items:center;justify-content:center;z-index:1000;transition:opacity .3s ease}.admin-reports-section{background:linear-gradient(135deg,#007bff 0%,#0056b3 100%);color:#fff;padding:25px;border-radius:12px;margin-bottom:30px;box-shadow:0 8px 25px #007bff4d}.admin-header h2{margin:0 0 10px;font-size:24px;font-weight:600}.admin-header p{margin:0 0 20px;opacity:.9;font-size:14px}.admin-controls{display:flex;flex-direction:column;gap:25px}.date-range-selector{display:flex;gap:20px;align-items:end;flex-wrap:wrap}.date-range-selector .filter-group{min-width:200px}.date-range-selector .filter-group label{color:#fff;font-weight:500;margin-bottom:8px}.date-range-selector .filter-group select{padding:10px 15px;border:2px solid rgba(255,255,255,.3);border-radius:6px;font-size:14px;background:rgba(255,255,255,.95);color:#333;min-width:200px;transition:all .3s ease}.date-range-selector .filter-group select:hover{background:white;border-color:#fff9}.quick-filters h4{margin:0 0 15px;font-size:16px;font-weight:500;color:#fff}.filter-buttons{display:flex;gap:12px;flex-wrap:wrap}.quick-filter-btn{padding:10px 18px;border:2px solid rgba(255,255,255,.3);border-radius:25px;background:rgba(255,255,255,.1);color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .3s ease;backdrop-filter:blur(10px)}.quick-filter-btn:hover{background:rgba(255,255,255,.25);border-color:#fff9;transform:translateY(-2px);box-shadow:0 4px 12px #0003}.quick-filter-btn:active{transform:translateY(0)}.create-report-btn{padding:12px 20px;border:2px solid #28a745;border-radius:25px;background:linear-gradient(135deg,#28a745 0%,#20c997 100%);color:#fff;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s ease;box-shadow:0 4px 15px #28a7454d}.create-report-btn:hover{background:linear-gradient(135deg,#218838 0%,#1e7e34 100%);border-color:#1e7e34;transform:translateY(-2px);box-shadow:0 6px 20px #28a74566}.create-report-btn:active{transform:translateY(0)}.admin-report-section{background:white;border-radius:12px;box-shadow:0 8px 25px #0000001a;margin-bottom:30px;overflow:hidden;border:2px solid #667eea}.admin-report-header{background:linear-gradient(135deg,#667eea 0%,#764ba2 100%);color:#fff;padding:20px 25px;display:flex;justify-content:space-between;align-items:flex-start}.admin-report-header h2{margin:0 0 8px;font-size:22px;font-weight:600}.admin-report-meta{display:flex;flex-direction:column;gap:6px;font-size:13px;opacity:.9}.lecturer-selection{padding:20px 25px;background-color:#f8f9fa;border-bottom:1px solid #e9ecef}.lecturer-selection .filter-group{margin:0;min-width:250px}.lecturer-selection label{font-weight:600;color:#495057;margin-bottom:8px}.lecturer-selection select{width:100%;padding:10px 15px;border:2px solid #667eea;border-radius:6px;font-size:14px;background:white;color:#333}.filtered-reports-content{padding:0}.filtered-module-report{border-bottom:1px solid #e9ecef}.filtered-module-report:last-child{border-bottom:none}.filtered-module-header{background-color:#f8f9fa;padding:18px 25px;cursor:pointer;transition:all .3s ease;display:flex;justify-content:space-between;align-items:center;border-left:4px solid transparent;position:relative}.filtered-module-header:hover{background-color:#e9ecef}.filtered-module-header h3{margin:0;color:#2c3e50;font-size:18px;font-weight:600}.filtered-module-summary{display:flex;align-items:center;gap:15px;font-size:13px;color:#6c757d;flex-wrap:wrap}.filtered-module-details{padding:25px;border-top:1px solid #e9ecef}.filtered-module-info{margin-bottom:25px}.filtered-module-info h4,.filtered-student-attendance h4{margin:0 0 15px;color:#495057;font-size:16px;font-weight:600}.reports-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:30px;padding-bottom:20px;border-bottom:2px solid #e9ecef}.reports-header h1{color:#2c3e50;margin:0;font-size:28px}.back-button{background-color:#6c757d;color:#fff;border:none;padding:10px 20px;border-radius:5px;cursor:pointer;font-size:14px;transition:background-color .2s}.back-button:hover{background-color:#5a6268}.reports-filters{display:flex;flex-wrap:wrap;gap:20px;margin-bottom:30px;padding:20px;background-color:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.filter-group{display:flex;flex-direction:column;gap:5px}.filter-group label{font-weight:600;color:#495057;font-size:14px}.filter-group select,.filter-group input{padding:8px 12px;border:1px solid #ced4da;border-radius:4px;font-size:14px;min-width:150px}.custom-date-range{display:flex;gap:15px;flex-wrap:wrap}.week-range-display{display:flex;flex-direction:column;gap:8px;padding:15px;background-color:#f8f9fa;border:1px solid #dee2e6;border-radius:6px}.week-range-display label{font-weight:600;color:#495057;font-size:14px}.week-range-info{display:flex;flex-direction:column;gap:4px}.week-range-info>span:first-child{font-size:16px;font-weight:600;color:#2c3e50}.week-range-info .date-range{font-size:14px;color:#6c757d}.week-range-summary{grid-column:1 / -1;padding:10px 15px;background-color:#e3f2fd;border:1px solid #bbdefb;border-radius:6px;font-size:14px;color:#1565c0;text-align:center;margin-top:10px}.loading,.error{text-align:center;padding:40px;font-size:18px}.loading{color:#6c757d}.error{color:#dc3545;background-color:#f8d7da;border:1px solid #f5c6cb;border-radius:4px}.no-reports{text-align:center;padding:60px 20px;color:#6c757d}.no-reports p{font-size:18px;margin:0}.reports-list{display:flex;flex-direction:column;gap:20px}.report-card{background-color:#fff;border:1px solid #e9ecef;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s}.report-card:hover{box-shadow:0 4px 8px #00000026}.report-header{display:flex;justify-content:space-between;align-items:center;padding:20px;cursor:pointer;background-color:#fff;transition:all .3s ease;border-left:4px solid transparent}.report-header:hover{background-color:#f8f9fa}.report-header.glow-enabled{position:relative;animation:header-glow 3s ease-in-out infinite}.report-header.glow-enabled:before{content:"";position:absolute;top:-3px;left:-3px;right:-3px;bottom:-3px;background:linear-gradient(135deg,rgba(0,123,255,.3),rgba(0,123,255,.15));border-radius:10px;z-index:1;pointer-events:none;box-shadow:0 0 20px #007bff66}.filtered-module-header.glow-enabled{position:relative;animation:header-glow 3s ease-in-out infinite}.filtered-module-header.glow-enabled:before{content:"";position:absolute;top:-3px;left:-3px;right:-3px;bottom:-3px;background:linear-gradient(135deg,rgba(0,123,255,.3),rgba(0,123,255,.15));border-radius:10px;z-index:1;pointer-events:none;box-shadow:0 0 20px #007bff66}.report-header h3{margin:0;color:#2c3e50;font-size:18px;font-weight:600}.report-summary{display:flex;align-items:center;gap:15px}.report-summary span{font-size:14px;color:#6c757d}.expand-icon{font-size:20px;font-weight:700;color:#007bff;margin-left:10px;width:40px;height:40px;border-radius:50%;background:rgba(0,123,255,.1);border:2px solid #007bff;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 2px 4px #007bff33;line-height:1;text-align:center}.expand-icon:hover{background:rgba(0,123,255,.2);transform:scale(1.1);box-shadow:0 4px 8px #007bff4d;position:relative}.expand-icon:hover:after{content:"";position:absolute;top:-4px;left:-4px;right:-4px;bottom:-4px;background:radial-gradient(circle,rgba(0,123,255,.3) 0%,rgba(0,123,255,0) 70%);border-radius:50%;z-index:-1;animation:pulse-glow 2s ease-in-out infinite}.report-details{padding:0 20px 20px;border-top:1px solid #e9ecef}.report-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:25px;margin-bottom:25px}.metric h4{margin:0 0 15px;color:#495057;font-size:16px;font-weight:600}.groups-list{display:flex;flex-wrap:wrap;gap:8px}.group-tag{background-color:#e3f2fd;color:#1976d2;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.dates-list{display:flex;flex-wrap:wrap;gap:8px}.date-tag{background-color:#f3e5f5;color:#7b1fa2;padding:4px 12px;border-radius:16px;font-size:12px;font-weight:500}.more-dates{color:#6c757d;font-style:italic;font-size:12px;padding:4px 12px}.attendance-stats{display:flex;gap:20px}.stat{display:flex;flex-direction:column;align-items:center;padding:10px 15px;border-radius:6px;min-width:80px}.stat.present{background-color:#d4edda;color:#155724}.stat.late{background-color:#fff3cd;color:#856404}.stat.absent{background-color:#f8d7da;color:#721c24}.stat-label{font-size:12px;font-weight:500;margin-bottom:5px}.stat-value{font-size:18px;font-weight:700}.report-actions{display:flex;gap:15px;justify-content:flex-end;padding-top:20px;border-top:1px solid #e9ecef}.export-button,.print-button{padding:8px 16px;border:none;border-radius:4px;cursor:pointer;font-size:14px;font-weight:500;transition:background-color .2s}.export-button{background-color:#28a745;color:#fff}.export-button:hover{background-color:#218838}.print-button{background-color:#17a2b8;color:#fff}.print-button:hover{background-color:#138496}.student-attendance-table{margin-bottom:25px}.student-attendance-table h4{margin:0 0 15px;color:#495057;font-size:16px;font-weight:600}.table-container{border:1px solid #e9ecef;border-radius:8px;background-color:#fff;width:100%;max-height:80vh;overflow:auto}.attendance-report-table{width:100%;border-collapse:collapse;font-size:12px;min-width:100vw}.attendance-report-table th,.attendance-report-table td{padding:8px 12px;text-align:center;border-bottom:1px solid #e9ecef;border-right:1px solid #e9ecef;white-space:nowrap;vertical-align:middle}.attendance-report-table th:last-child,.attendance-report-table td:last-child{border-right:none}.attendance-report-table th{background-color:#f8f9fa;font-weight:600;color:#495057;position:sticky;top:0;z-index:10}.attendance-report-table th.session-header{font-size:9px;max-width:150px;text-align:center;vertical-align:middle;background-color:#e3f2fd;height:auto;min-height:60px;padding:8px 4px;white-space:normal;overflow:hidden;line-height:1.2;word-wrap:break-word}.attendance-report-table tbody tr:hover{background-color:#f8f9fa}.attendance-report-table tbody tr:nth-child(even){background-color:#fdfdfe}.center-text{text-align:center}.good-attendance{color:#155724;font-weight:700}.moderate-attendance{color:#856404;font-weight:700}.poor-attendance{color:#721c24;font-weight:700}.attendance-badge{display:inline-block;padding:2px 6px;border-radius:12px;font-size:10px;font-weight:700;min-width:20px;text-align:center;margin:0 auto}.attendance-badge.present{background-color:#d4edda;color:#155724}.attendance-badge.late{background-color:#fff3cd;color:#856404}.attendance-badge.absent{background-color:#f8d7da;color:#721c24}.attendance-badge.not-part{background-color:#e9ecef;color:#6c757d;font-weight:400}.attendance-report-table th.session-header.disabled{background-color:#f8f9fa;color:#adb5bd;text-decoration:line-through;opacity:.7}.attendance-report-table td.disabled-session{background-color:#f8f9fa;opacity:.6}.attendance-report-table td.disabled-session .attendance-badge{background-color:#dee2e6;color:#868e96;opacity:.5}.low-attendance-cell{background-color:#ffebee!important;font-weight:700;color:#c62828;border:2px solid #f44336;animation:pulse-cell 2s ease-in-out;position:relative}.low-attendance-cell:hover{background-color:#ffcdd2!important;box-shadow:0 0 8px #f4433666}@keyframes pulse-cell{0%{background-color:#fff;transform:scale(1)}50%{background-color:#ffebee;transform:scale(1.02)}to{background-color:#fff;transform:scale(1)}}@keyframes pulse-glow{0%,to{opacity:.8;transform:scale(1)}50%{opacity:1;transform:scale(1.1)}}.report-sections-container{display:flex;flex-direction:column;gap:30px;margin-top:30px}.sections-header{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.sections-header h1{color:#2c3e50;margin:0;font-size:28px}.sections-subtitle{color:#6c757d;margin:0;font-size:16px}.report-section{background:white;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;border:2px solid #e9ecef;transition:all .3s ease}.report-section:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.latest-section{border-color:#28a745;box-shadow:0 6px 20px #28a74533}.latest-section:hover{box-shadow:0 8px 30px #28a7454d}.older-section{border-color:#6c757d;opacity:.9}.older-section:hover{opacity:1;border-color:#5a6268}.section-header{background:white;color:var(--dark-bg);padding:20px 25px;border:1px solid var(--border-color);border-radius:var(--border-radius)}.section-title-section{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.section-title-section h2{margin:0;font-size:22px;font-weight:600}.section-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.section-meta{display:flex;flex-wrap:wrap;gap:20px;align-items:center;font-size:13px;opacity:.9}.section-controls{margin-top:15px;padding-top:15px;border-top:1px solid rgba(255,255,255,.2)}.expand-collapse-btn{padding:8px 16px;border:2px solid rgba(255,255,255,.3);border-radius:25px;background:rgba(255,255,255,.1);color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .3s ease;backdrop-filter:blur(10px)}.expand-collapse-btn:hover{background:rgba(255,255,255,.25);border-color:#fff9;transform:translateY(-1px)}.remove-section-btn{padding:6px 12px;border:2px solid #dc3545;border-radius:20px;background:rgba(220,53,69,.1);color:#ff6b6b;cursor:pointer;font-size:12px;font-weight:500;transition:all .3s ease}.remove-section-btn:hover{background:rgba(220,53,69,.2);border-color:#ff6b6b;color:#fff}.section-content{padding:0}.reports-container .notification-content{display:flex;align-items:flex-start;gap:10px}.reports-container .notification-icon{font-size:16px;margin-top:2px}.module-statistics{background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);padding:15px;border-radius:8px;margin:10px 0;border:1px solid #dee2e6;box-shadow:0 2px 6px #0000000f}.module-statistics.compact{padding:12px}.module-statistics-preview{padding:12px;background-color:#fafafa;border-top:1px solid #e9ecef;border-bottom:1px solid #e9ecef;position:relative}.module-statistics-preview:after{content:"";position:absolute;bottom:-1px;left:50%;transform:translate(-50%);width:0;height:0;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:8px solid #e9ecef;opacity:.6}.stats-overview-compact{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:12px;margin-bottom:15px}.stat-item-compact{background:white;border-radius:6px;padding:8px 12px;border:1px solid #e9ecef;box-shadow:0 1px 3px #0000001a;text-align:center}.stat-label-compact{font-size:10px;color:#6c757d;font-weight:500;text-transform:uppercase;letter-spacing:.3px;display:block;margin-bottom:4px}.stat-value-compact{font-size:16px;font-weight:700;color:#2c3e50;display:block}.stat-value-compact.excellent{color:#28a745}.stat-value-compact.good{color:#ffc107}.stat-value-compact.poor{color:#fd7e14}.stat-value-compact.critical{color:#dc3545}.charts-row-compact{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:15px;margin-bottom:15px}.chart-container-compact{background:white;border-radius:6px;padding:12px;border:1px solid #e9ecef;box-shadow:0 1px 3px #0000000d}.chart-container-compact h5{margin:0 0 8px;color:#495057;font-size:13px;font-weight:600;text-align:center}.pie-chart-container-compact{background:white;border-radius:4px;padding:8px;box-shadow:0 1px 3px #0000001a;border:1px solid #e9ecef}.bar-chart-container-compact{background:white;border-radius:4px;padding:5px;box-shadow:0 1px 3px #0000001a;border:1px solid #e9ecef}.detailed-metrics-compact{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:12px}.metrics-group-compact{background:white;border-radius:6px;padding:12px;border:1px solid #e9ecef;box-shadow:0 1px 3px #0000000d}.metrics-group-compact h5{margin:0 0 8px;color:#495057;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.3px}.metric-list-compact{display:flex;flex-direction:column;gap:6px}.metric-item-compact{display:flex;justify-content:space-between;align-items:center;padding:4px 0;border-bottom:1px solid #f1f3f4}.metric-item-compact:last-child{border-bottom:none}.metric-label-compact{font-size:11px;color:#6c757d;font-weight:500}.metric-value-compact{font-size:12px;font-weight:600;color:#2c3e50}.top-groups-list-compact{display:flex;flex-direction:column;gap:6px}.top-group-compact{display:grid;grid-template-columns:20px 1fr auto auto;gap:6px;align-items:center;padding:6px 8px;background:linear-gradient(135deg,#e8f5e8 0%,#f1f8f1 100%);border-radius:4px;border:1px solid #c3e6c3}.rank-compact{font-size:11px;font-weight:700;color:#28a745;background:#28a745;color:#fff;width:18px;height:18px;border-radius:50%;display:flex;align-items:center;justify-content:center}.group-name-compact{font-size:11px;font-weight:600;color:#2c3e50}.group-avg-compact{font-size:12px;font-weight:700;color:#28a745}.group-size-compact{font-size:10px;color:#6c757d;background:#e9ecef;padding:1px 4px;border-radius:8px}.expand-hint{text-align:center;margin-top:8px;padding:6px 0}.expand-hint-text{font-size:11px;color:#6c757d;font-style:italic;background:linear-gradient(90deg,transparent,rgba(0,123,255,.1),transparent);padding:4px 12px;border-radius:12px;display:inline-block}.no-data-message{text-align:center;color:#6c757d;font-style:italic;margin:0;padding:20px}.module-statistics-preview.hidden-stats{display:none}@media (max-width: 768px){.stats-overview-grid{grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:10px}.charts-row,.metrics-row{grid-template-columns:1fr;gap:15px}.at-risk-student{grid-template-columns:1fr;gap:5px;text-align:center}.top-group{grid-template-columns:30px 1fr auto;gap:8px}.stat-value{font-size:20px}.module-statistics{padding:15px}}.module-header-content{display:flex;justify-content:space-between;align-items:flex-start;width:100%}.module-title-section{flex:1}.module-title-section h3{margin:0 0 8px;color:#2c3e50;font-size:18px;font-weight:600}.module-title-section .filtered-module-summary,.module-title-section .report-summary{display:flex;gap:15px;font-size:13px;color:#6c757d;flex-wrap:wrap;margin:0}.generated-reports-container{display:flex;flex-direction:column;gap:30px;margin-top:30px}.generated-report{background:white;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;border:2px solid #e9ecef;transition:all .3s ease}.generated-report:hover{box-shadow:0 8px 25px #00000026;transform:translateY(-2px)}.latest-report{border-color:#28a745;box-shadow:0 6px 20px #28a74533}.latest-report:hover{box-shadow:0 8px 30px #28a7454d}.older-report{border-color:#6c757d;opacity:.9}.older-report:hover{opacity:1;border-color:#5a6268}.report-badge{display:inline-flex;align-items:center;gap:8px;padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px}.latest-badge{background:linear-gradient(135deg,#28a745 0%,#20c997 100%);color:#fff;box-shadow:0 2px 8px #28a7454d}.older-badge{background:#6c757d;color:#fff}.lecturer-notification{background:linear-gradient(135deg,#e3f2fd 0%,#f3e5f5 100%);border-left:4px solid #2196f3;padding:15px 20px;margin-bottom:20px;border-radius:8px;font-size:14px;color:#1565c0}.lecturer-notification h4{margin:0 0 8px;color:#1565c0;font-size:16px;font-weight:600}.lecturer-notification p{margin:0;line-height:1.5}.report-header.active,.report-header.expanded{background:#ffffff!important;border-left-color:transparent!important;box-shadow:none!important;position:relative;animation:none!important}.report-header.active:before,.report-header.expanded:before,.report-header.active:after,.report-header.expanded:after{display:none!important;content:none!important}.report-header.active:hover,.report-header.expanded:hover{background:#ffffff!important;box-shadow:none!important}.filtered-module-header.active,.filtered-module-header.expanded{background:#ffffff!important;border-left-color:transparent!important;box-shadow:none!important;animation:none!important}.filtered-module-header.active:before,.filtered-module-header.expanded:before,.filtered-module-header.active:after,.filtered-module-header.expanded:after{display:none!important;content:none!important}.filtered-module-header.active:hover,.filtered-module-header.expanded:hover{background:#ffffff!important;box-shadow:none!important}@keyframes glow-pulse{0%,to{opacity:.8;box-shadow:0 0 0 1px #007bff33,0 4px 12px #007bff26}50%{opacity:1;box-shadow:0 0 0 2px #007bff4d,0 6px 20px #007bff40}}.expand-icon.active{background:rgba(0,123,255,.1)!important;border-color:#007bff!important;transform:none!important;box-shadow:0 2px 4px #007bff33!important;animation:none!important}.expand-icon.active:after{display:none!important}.expand-icon.active:hover{background:rgba(0,123,255,.1)!important;transform:none!important;box-shadow:0 2px 4px #007bff33!important}@keyframes icon-glow{0%,to{opacity:.6;transform:scale(1)}50%{opacity:1;transform:scale(1.2)}}@keyframes header-glow{0%,to{opacity:.8;box-shadow:0 0 20px #007bff66}50%{opacity:1;box-shadow:0 0 30px #007bff99}}@keyframes hover-glow{0%,to{opacity:.8;box-shadow:0 0 20px #007bff66}50%{opacity:1;box-shadow:0 0 30px #007bff99}}@media (max-width: 768px){.reports-container{padding:15px}.reports-header{flex-direction:column;gap:15px;align-items:flex-start}.reports-filters,.custom-date-range{flex-direction:column;gap:15px}.report-header{flex-direction:column;gap:10px;align-items:flex-start}.report-summary{width:100%;justify-content:space-between}.report-metrics{grid-template-columns:1fr;gap:20px}.attendance-stats{flex-direction:column;gap:10px}.stat{flex-direction:row;justify-content:space-between;min-width:auto}.report-actions{flex-direction:column;gap:10px}}.report-range-manager{background:rgba(255,255,255,.1);border-radius:12px;padding:20px;margin-top:25px;border:2px solid rgba(255,255,255,.2);backdrop-filter:blur(10px)}.range-manager-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:20px}.range-manager-header h3{margin:0;color:#fff;font-size:18px;font-weight:600}.toggle-range-manager-btn{padding:8px 16px;border:2px solid rgba(255,255,255,.3);border-radius:20px;background:rgba(255,255,255,.1);color:#fff;cursor:pointer;font-size:13px;font-weight:500;transition:all .3s ease;backdrop-filter:blur(10px)}.toggle-range-manager-btn:hover{background:rgba(255,255,255,.25);border-color:#fff9;transform:translateY(-1px)}.range-manager-content{display:flex;flex-direction:column;gap:25px}.add-range-section{background:rgba(255,255,255,.05);border-radius:8px;padding:20px;border:1px solid rgba(255,255,255,.1)}.add-range-section h4{margin:0 0 15px;color:#fff;font-size:16px;font-weight:600}.new-range-form{display:flex;flex-direction:column;gap:15px}.form-row{display:grid;grid-template-columns:2fr 1fr 1fr;gap:15px;align-items:end}.form-group{display:flex;flex-direction:column;gap:8px}.form-group label{color:#fff;font-weight:500;font-size:13px}.form-group input,.form-group select{padding:10px 15px;border:2px solid rgba(255,255,255,.3);border-radius:6px;font-size:14px;background:rgba(255,255,255,.95);color:#333;transition:all .3s ease}.form-group input:hover,.form-group select:hover{background:white;border-color:#fff9}.form-group input:focus,.form-group select:focus{outline:none;border-color:#fffc;box-shadow:0 0 0 3px #ffffff1a}.form-actions{display:flex;gap:12px;justify-content:flex-end}.add-range-btn{padding:10px 20px;border:2px solid #28a745;border-radius:25px;background:linear-gradient(135deg,#28a745 0%,#20c997 100%);color:#fff;cursor:pointer;font-size:14px;font-weight:600;transition:all .3s ease;box-shadow:0 4px 15px #28a7454d}.add-range-btn:hover{background:linear-gradient(135deg,#218838 0%,#1e7e34 100%);border-color:#1e7e34;transform:translateY(-2px);box-shadow:0 6px 20px #28a74566}.reset-form-btn{padding:10px 20px;border:2px solid #6c757d;border-radius:25px;background:#6c757d;color:#fff;cursor:pointer;font-size:14px;font-weight:500;transition:all .3s ease}.reset-form-btn:hover{background:#5a6268;border-color:#545b62;transform:translateY(-2px)}.existing-ranges-section{background:rgba(255,255,255,.05);border-radius:8px;padding:20px;border:1px solid rgba(255,255,255,.1)}.existing-ranges-section h4{margin:0 0 15px;color:#fff;font-size:16px;font-weight:600}.no-ranges-message{color:#fffc;font-style:italic;text-align:center;padding:20px;margin:0}.ranges-list{display:flex;flex-direction:column;gap:12px}.range-item{background:rgba(255,255,255,.1);border-radius:8px;padding:15px;border:2px solid rgba(255,255,255,.2);transition:all .3s ease}.range-item.active{border-color:#28a74580;background:rgba(40,167,69,.1)}.range-item.inactive{border-color:#dc354580;background:rgba(220,53,69,.1);opacity:.8}.range-item:hover{background:rgba(255,255,255,.15);transform:translateY(-1px);box-shadow:0 4px 12px #0003}.range-info{margin-bottom:12px}.range-name{color:#fff;font-size:16px;font-weight:600;margin-bottom:6px}.range-details{display:flex;flex-wrap:wrap;gap:12px;font-size:13px;color:#ffffffe6}.range-weeks,.range-dates{background:rgba(255,255,255,.1);padding:4px 8px;border-radius:12px;border:1px solid rgba(255,255,255,.2)}.range-status{font-weight:600;padding:4px 8px;border-radius:12px;background:rgba(255,255,255,.15);border:1px solid rgba(255,255,255,.25)}.range-actions{display:flex;gap:8px;flex-wrap:wrap;justify-content:flex-end}.toggle-status-btn,.use-range-btn,.delete-range-btn{padding:6px 12px;border:2px solid;border-radius:20px;cursor:pointer;font-size:12px;font-weight:500;transition:all .3s ease;min-width:80px}.toggle-status-btn.activate{border-color:#28a745;background:rgba(40,167,69,.1);color:#28a745}.toggle-status-btn.activate:hover{background:#28a745;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #28a7454d}.toggle-status-btn.deactivate{border-color:#dc3545;background:rgba(220,53,69,.1);color:#fff}.toggle-status-btn.deactivate:hover{background:#dc3545;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #dc35454d}.use-range-btn{border-color:#dc3545;background:rgba(220,53,69,.1);color:#fff}.use-range-btn:hover{background:#007bff;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #007bff4d}.delete-range-btn{border-color:#dc3545;background:rgba(220,53,69,.1);color:#fff}.delete-range-btn:hover{background:#dc3545;color:#fff;transform:translateY(-1px);box-shadow:0 4px 12px #dc35454d}@media (max-width: 768px){.form-row{grid-template-columns:1fr;gap:12px}.range-actions{justify-content:flex-start}.range-details{flex-direction:column;gap:6px}.form-actions{justify-content:stretch;flex-direction:column}.add-range-btn,.reset-form-btn{width:100%}}.report-range-sections-container{display:flex;flex-direction:column;gap:30px;margin-top:30px}.range-sections-header{display:flex;flex-direction:column;gap:10px;margin-bottom:20px}.range-sections-header h1{color:#2c3e50;margin:0;font-size:28px}.range-sections-subtitle{color:#6c757d;margin:0;font-size:16px}.range-section{background:white;border-radius:12px;box-shadow:0 4px 12px #0000001a;overflow:hidden;border:2px solid #007bff;transition:all .3s ease}.range-section:hover{box-shadow:0 8px 25px #007bff26;transform:translateY(-2px);border-color:#0056b3}.range-section-header{background:linear-gradient(135deg,#007bff 0%,#0056b3 100%);color:#fff;padding:20px 25px;display:flex;justify-content:space-between;align-items:flex-start}.range-section-title-section{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.range-section-title-section h2{margin:0;font-size:22px;font-weight:600}.range-section-badge{display:inline-flex;align-items:center;gap:8px}.range-badge{background:rgba(255,255,255,.2);color:#fff;padding:6px 12px;border-radius:20px;font-size:12px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;border:1px solid rgba(255,255,255,.3)}.range-section-meta{display:flex;flex-wrap:wrap;gap:20px;align-items:center;font-size:13px;opacity:.9}.range-section-controls{margin-top:15px;padding-top:15px;border-top:1px solid rgba(255,255,255,.2)}.range-section-content{padding:0}.range-section-loading,.range-section-error,.range-section-no-data{padding:40px 25px;text-align:center}.range-section-modules{display:flex;flex-direction:column;gap:25px;padding:25px}.range-modules-header{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.range-modules-header h3{color:#495057;margin:0;font-size:20px;font-weight:600}.range-modules-subtitle{color:#6c757d;margin:0;font-size:14px}.range-module-report{background:white;border:1px solid #e9ecef;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px #0000001a;transition:box-shadow .2s}.range-module-report:hover{box-shadow:0 4px 8px #00000026}.range-module-header{display:flex;justify-content:space-between;align-items:center;padding:20px;cursor:pointer;background-color:#fff;transition:all .3s ease;border-left:4px solid transparent;position:relative}.range-module-header:hover{background-color:#f8f9fa}.range-module-header h4{margin:0;color:#2c3e50;font-size:18px;font-weight:600}.range-module-summary{display:flex;align-items:center;gap:15px;font-size:13px;color:#6c757d;flex-wrap:wrap}.range-module-details{padding:25px;border-top:1px solid #e9ecef}.range-module-info{margin-bottom:25px}.range-module-info h5{margin:0 0 15px;color:#495057;font-size:16px;font-weight:600}.range-student-attendance{margin-bottom:25px}.range-student-attendance h5{margin:0 0 15px;color:#495057;font-size:16px;font-weight:600}.range-module-header.glow-enabled{position:relative;animation:header-glow 3s ease-in-out infinite}.range-module-header.glow-enabled:before{content:"";position:absolute;top:-3px;left:-3px;right:-3px;bottom:-3px;background:linear-gradient(135deg,rgba(0,123,255,.3),rgba(0,123,255,.15));border-radius:10px;z-index:1;pointer-events:none;box-shadow:0 0 20px #007bff66}.range-module-header.active,.range-module-header.expanded{background:#ffffff!important;border-left-color:transparent!important;box-shadow:none!important;animation:none!important}.range-module-header.active:before,.range-module-header.expanded:before,.range-module-header.active:after,.range-module-header.expanded:after{display:none!important;content:none!important}.range-module-header.active:hover,.range-module-header.expanded:hover{background:#ffffff!important;box-shadow:none!important}.modules-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px;margin-top:20px}.module-card.skeleton{background:#f8f9fa;border:1px solid #e9ecef;border-radius:12px;overflow:hidden;animation:skeleton-pulse 1.5s ease-in-out infinite}.skeleton-header{padding:20px;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid #e9ecef}.skeleton-title{width:200px;height:20px;background:linear-gradient(90deg,#e9ecef 25%,#f8f9fa 50%,#e9ecef 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite;border-radius:4px}.skeleton-badge{width:80px;height:24px;background:linear-gradient(90deg,#e9ecef 25%,#f8f9fa 50%,#e9ecef 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite;border-radius:12px}.skeleton-content{padding:20px;display:flex;flex-direction:column;gap:12px}.skeleton-line{background:linear-gradient(90deg,#e9ecef 25%,#f8f9fa 50%,#e9ecef 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite;border-radius:4px;height:16px}.skeleton-line.short{width:60%}.skeleton-line.medium{width:80%}.skeleton-line.long{width:100%}.skeleton-chart{height:200px;background:linear-gradient(90deg,#e9ecef 25%,#f8f9fa 50%,#e9ecef 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite;border-radius:8px;margin:20px}.skeleton-actions{padding:20px;display:flex;gap:12px;justify-content:flex-end;border-top:1px solid #e9ecef}.skeleton-button{width:100px;height:36px;background:linear-gradient(90deg,#e9ecef 25%,#f8f9fa 50%,#e9ecef 75%);background-size:200% 100%;animation:skeleton-shimmer 2s infinite;border-radius:6px}@keyframes skeleton-pulse{0%{opacity:1}50%{opacity:.7}to{opacity:1}}@keyframes skeleton-shimmer{0%{background-position:-200% 0}to{background-position:200% 0}}.lazy-loading-indicator{display:flex;justify-content:center;align-items:center;padding:20px;color:#6c757d;font-size:14px;gap:8px}.lazy-loading-spinner{width:20px;height:20px;border:2px solid #e9ecef;border-top:2px solid #007bff;border-radius:50%}.search-section-container{background:linear-gradient(135deg,#f8f9fa 0%,#e9ecef 100%);border-radius:12px;padding:25px;margin-bottom:30px;border:1px solid #dee2e6;box-shadow:0 4px 12px #00000014}.search-header{display:flex;flex-direction:column;gap:8px;margin-bottom:20px}.search-header h2{margin:0;color:#2c3e50;font-size:22px;font-weight:600}.search-subtitle{margin:0;color:#6c757d;font-size:14px;line-height:1.4}.search-controls{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-bottom:20px}.search-bar-container{display:flex;flex-direction:column;gap:8px}.search-bar{display:flex;align-items:center;position:relative;border:2px solid #667eea;border-radius:25px;background:white;box-shadow:0 2px 8px #667eea1a;transition:all .3s ease}.search-bar:hover{border-color:#764ba2;box-shadow:0 4px 12px #667eea33;transform:translateY(-1px)}.search-bar:focus-within{border-color:#667eea;box-shadow:0 0 0 3px #667eea1a}.search-input{flex:1;border:none;outline:none;padding:12px 20px;font-size:14px;background:transparent;color:#333}.search-input::-moz-placeholder{color:#999}.search-input::placeholder{color:#999}.clear-search-button{background:linear-gradient(135deg,#dc3545 0%,#c82333 100%);color:#fff;border:none;padding:8px 16px;border-radius:20px;cursor:pointer;font-size:12px;font-weight:600;transition:all .3s ease;margin-right:8px;box-shadow:0 2px 6px #dc354533}.clear-search-button:hover{background:linear-gradient(135deg,#c82333 0%,#bd2130 100%);transform:translateY(-1px);box-shadow:0 4px 8px #dc35454d}.clear-search-button:active{transform:translateY(0)}.search-results-summary{background:linear-gradient(135deg,#e3f2fd 0%,#f3e5f5 100%);border-left:4px solid #667eea;padding:12px 20px;border-radius:8px;font-size:14px;color:#1565c0;animation:slide-in .3s ease}.search-info{display:flex;align-items:center;gap:10px;font-weight:500}.search-info span{background:rgba(102,126,234,.1);padding:4px 10px;border-radius:12px;border:1px solid rgba(102,126,234,.2)}@keyframes slide-in{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.search-controls{grid-template-columns:1fr;gap:15px}.search-header{text-align:center}.search-input{font-size:16px}.clear-search-button{font-size:11px;padding:6px 12px}.search-info{flex-direction:column;align-items:flex-start;gap:8px}}@media (max-width: 480px){.search-section-container{padding:20px;margin-bottom:20px}.search-header h2{font-size:20px}.search-subtitle{font-size:13px}}.section-breakdown-compact{margin-top:15px;padding-top:15px;border-top:1px solid #e9ecef}.section-metrics{display:flex;flex-direction:column;gap:8px}.section-metric-item{display:flex;justify-content:space-between;align-items:center;padding:6px 0;border-bottom:1px solid #f1f3f4}.section-metric-item:last-child{border-bottom:none}.section-name{font-size:.85rem;color:#495057;font-weight:500}.section-stats{font-size:.85rem;color:#6c757d;display:flex;flex-direction:column;gap:2px}.section-rate{font-weight:600;padding:2px 6px;border-radius:3px;font-size:.8rem}.section-rate.excellent{background:#d4edda;color:#155724}.section-rate.good{background:#fff3cd;color:#856404}.section-rate.poor{background:#f8d7da;color:#721c24}.section-details{font-size:.75rem;color:#868e96;font-style:italic}.pagination-controls{display:flex;justify-content:space-between;align-items:center;margin:20px 0;padding:15px;background:#f8f9fa;border-radius:8px;border:1px solid #e9ecef}.pagination-info{font-size:.9rem;color:#6c757d;font-weight:500}.pagination-buttons{display:flex;align-items:center;gap:15px}.pagination-btn{background:#007bff;color:#fff;border:none;padding:8px 16px;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease}.pagination-btn:hover:not(:disabled){background:#0056b3;transform:translateY(-1px)}.pagination-btn:disabled{background:#6c757d;cursor:not-allowed;opacity:.6;transform:none}.page-numbers{display:flex;gap:5px}.page-number{background:#f8f9fa;color:#495057;border:1px solid #dee2e6;padding:6px 10px;border-radius:4px;font-size:.85rem;font-weight:500;cursor:pointer;transition:all .2s ease;min-width:32px;text-align:center}.page-number:hover{background:#e9ecef;border-color:#adb5bd}.page-number.active{background:#007bff;color:#fff;border-color:#007bff}.page-number.active:hover{background:#0056b3}@media (max-width: 768px){.pagination-controls{flex-direction:column;gap:15px;text-align:center}.pagination-buttons{flex-wrap:wrap;justify-content:center}.page-numbers{order:-1;width:100%;justify-content:center}}.view-navigation{margin-bottom:30px;display:flex;justify-content:center}.view-buttons{display:flex;gap:15px;background:white;padding:8px;border-radius:12px;box-shadow:0 4px 20px #0000001a}.view-button{padding:12px 24px;border:none;border-radius:8px;font-size:16px;font-weight:500;cursor:pointer;transition:all .3s ease;background:#f8f9fa;color:#6c757d}.view-button:hover{background:#e9ecef;transform:translateY(-1px)}.view-button.active{background:#007bff;color:#fff;box-shadow:0 4px 15px #007bff4d}.academic-director-section{background:linear-gradient(135deg,#28a745 0%,#20c997 100%);color:#fff;padding:25px;border-radius:12px;margin-bottom:30px;box-shadow:0 8px 25px #28a7454d}.academic-director-header h2{margin:0 0 10px;font-size:24px;font-weight:600}.academic-director-header p{margin:0 0 20px;opacity:.9;font-size:14px}.academic-director-controls{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.director-info{background:rgba(255,255,255,.1);padding:10px 15px;border-radius:6px;font-size:14px;font-weight:500}.head-of-school-section{background:linear-gradient(135deg,#6c757d 0%,#495057 100%);color:#fff;padding:25px;border-radius:12px;margin-bottom:30px;box-shadow:0 8px 25px #6c757d4d}.head-of-school-header h2{margin:0 0 10px;font-size:24px;font-weight:600}.head-of-school-header p{margin:0 0 20px;opacity:.9;font-size:14px}.head-of-school-controls{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.school-info{background:rgba(255,255,255,.1);padding:10px 15px;border-radius:6px;font-size:14px;font-weight:500}.programme-coordinator-section{background:linear-gradient(135deg,#6c757d 0%,#495057 100%);color:#fff;padding:25px;border-radius:12px;margin-bottom:30px;box-shadow:0 8px 25px #6c757d4d}.programme-coordinator-header h2{margin:0 0 10px;font-size:24px;font-weight:600}.programme-coordinator-header p{margin:0 0 20px;opacity:.9;font-size:14px}.programme-coordinator-controls{display:flex;gap:20px;align-items:center;flex-wrap:wrap}.coordinator-info{background:rgba(255,255,255,.1);padding:10px 15px;border-radius:6px;font-size:14px;font-weight:500;color:#fff}.coordinator-info span,.coordinator-info strong{color:#fff}.coordinator-programmes{margin-top:8px;font-size:12px;opacity:.9;color:#fff}.lecturer-selector{display:flex;flex-direction:column;gap:8px;min-width:300px}.lecturer-selector label{font-weight:500;font-size:14px}.lecturer-select-dropdown{padding:10px 15px;border:none;border-radius:6px;font-size:14px;background:rgba(255,255,255,.9);color:#333;min-width:100%}.lecturer-select-dropdown:focus{outline:none;box-shadow:0 0 0 3px #ffffff4d}.academic-programmes-view{width:100%}.leadership-section{background:linear-gradient(135deg,#28a745 0%,#20c997 100%);color:#fff;padding:30px;border-radius:12px;margin-bottom:30px;box-shadow:0 8px 25px #28a74533}.leadership-section h2{margin:0 0 25px;font-size:28px;font-weight:600;text-align:center}.leadership-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:20px}.leadership-card{background:rgba(255,255,255,.15);padding:20px;border-radius:8px;backdrop-filter:blur(10px);border:1px solid rgba(255,255,255,.2)}.leadership-card h3{margin:0 0 12px;font-size:18px;font-weight:600;color:#fff}.leader-name{font-size:16px;font-weight:500;margin:0 0 5px}.leader-email{font-size:14px;opacity:.9;margin:0}.programmes-section{background:white;padding:30px;border-radius:12px;box-shadow:0 4px 20px #0000001a}.programmes-section h2{margin:0 0 30px;font-size:28px;font-weight:600;color:#2c3e50;text-align:center}.school-section{margin-bottom:0}.school-title{font-size:22px;font-weight:600;color:#34495e;margin:0 0 20px;padding-bottom:10px;border-bottom:3px solid #3498db}.programmes-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(400px,1fr));gap:20px}.programme-card{background:#f8f9fa;border-radius:8px;overflow:hidden;border:1px solid #e9ecef;transition:all .3s ease}.programme-card:hover{box-shadow:0 8px 25px #0000001a;transform:translateY(-2px)}.programme-header{padding:20px;cursor:pointer;display:flex;justify-content:space-between;align-items:flex-start;background:white;border-bottom:1px solid #e9ecef}.programme-info h4{margin:0 0 12px;font-size:18px;font-weight:600;color:#2c3e50}.coordinator-info{margin:0;font-size:14px;color:#6c757d;line-height:1.4}.expand-icon{background:#3498db;color:#fff;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-weight:700;font-size:18px;transition:all .3s ease}.programme-header:hover .expand-icon{background:#2980b9}.programme-lecturers{padding:20px;background:#f8f9fa}.programme-lecturers h5{margin:0 0 15px;font-size:16px;font-weight:600;color:#495057}.lecturers-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:10px}.lecturer-item{background:white;padding:12px;border-radius:6px;border-left:4px solid #3498db;font-size:14px;color:#495057;box-shadow:0 2px 8px #0000000d}.no-lecturers{color:#6c757d;font-style:italic;text-align:center;padding:20px;background:white;border-radius:6px;border:1px dashed #ced4da}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;color:#6c757d}.loading-spinner{width:40px;height:40px;border:4px solid #f3f3f3;border-top:4px solid #3498db;border-radius:50%;margin-bottom:20px}.error-container{text-align:center;padding:60px 20px;color:#dc3545}.retry-button{background:#dc3545;color:#fff;border:none;padding:12px 24px;border-radius:6px;cursor:pointer;font-size:14px;margin-top:15px;transition:background-color .3s ease}.retry-button:hover{background:#c82333}@media (max-width: 768px){.view-buttons{flex-direction:column;width:100%}.academic-director-controls,.head-of-school-controls,.programme-coordinator-controls{flex-direction:column;align-items:stretch}.lecturer-selector{min-width:unset}.leadership-grid,.programmes-grid{grid-template-columns:1fr}.programme-card{min-width:unset}.lecturers-grid{grid-template-columns:1fr}.director-info,.school-info,.coordinator-info{text-align:center}}.disabled-student-row{background-color:#f8f9fa!important;opacity:.6!important}.disabled-student-row:hover{background-color:#e9ecef!important}.disabled-student-cell{color:#6c757d!important;font-style:italic}.disabled-student-cell .attendance-badge{opacity:.5;filter:grayscale(100%)}.deployment-status{position:fixed;top:20px;right:20px;background:white;border:1px solid #ddd;border-radius:8px;padding:12px 16px;box-shadow:0 4px 12px #00000026;z-index:1000;display:flex;align-items:center;gap:12px;min-width:250px;transition:all .3s ease;opacity:0;transform:translate(100%)}.deployment-status.visible{opacity:1;transform:translate(0)}.deployment-status.hidden{opacity:0;transform:translate(100%)}.deployment-status.deploying{border-left:4px solid #007bff;background:#f8f9ff}.deployment-status.success{border-left:4px solid #28a745;background:#f8fff9}.deployment-status.error{border-left:4px solid #dc3545;background:#fff8f8}.deployment-status.idle{border-left:4px solid #6c757d;background:#f8f9fa}.status-icon{font-size:20px;flex-shrink:0}.status-text{flex:1}.status-message{font-weight:600;color:#333;margin-bottom:2px}.status-time{font-size:12px;color:#666}.deployment-spinner{width:16px;height:16px;border:2px solid #f3f3f3;border-top:2px solid #007bff;border-radius:50%;animation:spin 1s linear infinite}.status-close{background:none;border:none;font-size:18px;color:#666;cursor:pointer;padding:0;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;transition:background-color .2s}.status-close:hover{background-color:#f0f0f0}@media (max-width: 768px){.deployment-status{right:10px;top:10px;min-width:200px;padding:10px 12px}.status-icon{font-size:16px}.status-message{font-size:14px}.status-time{font-size:11px}}.notifications-feeds-container{display:flex;gap:1rem;position:fixed;bottom:20px;right:20px;z-index:9999;max-width:680px}.expansion-notifications-feed,.failed-attendance-feed{position:static;width:320px;max-height:400px;background:white;border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid #e9ecef;overflow:hidden;animation:slideInUp .3s ease-out}.notifications-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:linear-gradient(135deg,#495057,#343a40);color:#fff;border-bottom:1px solid #e9ecef}.header-left{display:flex;align-items:center;gap:.5rem}.toggle-notifications{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#fff;width:24px;height:24px;border-radius:50%;font-size:.7rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;padding:0}.toggle-notifications:hover{background:rgba(255,255,255,.3);transform:scale(1.1)}.notifications-header h4{margin:0;font-size:.9rem;font-weight:600}.clear-notifications{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#fff;padding:.25rem .75rem;border-radius:15px;font-size:.8rem;cursor:pointer;transition:all .2s ease}.clear-notifications:hover{background:rgba(255,255,255,.3);transform:scale(1.05)}.notifications-feeds-container .expansion-notifications-feed .notification-item{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem 1.25rem;border-bottom:1px solid #f1f3f4;transition:background-color .2s ease;min-height:auto}.notifications-feeds-container .expansion-notifications-feed .notification-item:hover{background-color:#f8f9fa}.notifications-feeds-container .expansion-notifications-feed .notification-item:last-child{border-bottom:none}.notifications-feeds-container .expansion-notifications-feed .notification-content{flex:1;min-width:0}.notifications-feeds-container .expansion-notifications-feed .notification-action{display:block;font-size:.9rem;font-weight:600;color:#2c3e50;margin-bottom:.5rem;line-height:1.4}.notifications-feeds-container .expansion-notifications-feed .notification-details{font-size:.85rem;color:#6c757d;margin-bottom:.35rem;line-height:1.5;word-wrap:break-word}.notifications-feeds-container .expansion-notifications-feed .notification-time{font-size:.8rem;color:#868e96;font-style:italic;margin-top:.25rem}.notifications-feeds-container .failed-attendance-feed .notification-item{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem 1.25rem;border-bottom:1px solid #f1f3f4;transition:background-color .2s ease;min-height:auto}.notifications-feeds-container .failed-attendance-feed .notification-item:hover{background-color:#f8f9fa}.notifications-feeds-container .failed-attendance-feed .notification-item:last-child{border-bottom:none}.notifications-feeds-container .failed-attendance-feed .notification-content{flex:1;min-width:0}.notifications-feeds-container .failed-attendance-feed .notification-action{display:block;font-size:.9rem;font-weight:600;color:#2c3e50;margin-bottom:.25rem}.notifications-feeds-container .failed-attendance-feed .notification-details{font-size:.85rem;color:#6c757d;margin-bottom:.15rem;line-height:1.3}.notifications-feeds-container .failed-attendance-feed .notification-time{font-size:.8rem;color:#868e96;font-style:italic}.attendance-count{display:inline-block;background:linear-gradient(135deg,#e3f2fd,#bbdefb);color:#1565c0;padding:.2rem .6rem;border-radius:12px;font-size:.75rem;font-weight:600;border:1px solid #90caf9;margin-top:.25rem;text-align:center;min-width:-moz-fit-content;min-width:fit-content}.notification-timestamp{font-size:.75rem;color:#adb5bd;font-weight:500;white-space:nowrap;margin-left:.5rem}.notification-item.failed-attendance{border-left:4px solid #dc3545;background:linear-gradient(to right,#fff5f5,#ffffff)}.notification-item.failed-attendance:hover{background:linear-gradient(to right,#fee,#f8f9fa)}.notification-action.failed{color:#dc3545;font-weight:600}.notification-action.failed:before{content:"\274c  ";margin-right:.25rem}.notifications-feeds-container .expansion-notifications-feed .notifications-list,.notifications-feeds-container .failed-attendance-feed .notifications-list{max-height:340px;overflow-y:auto;padding:0;transition:max-height .3s ease-out,opacity .3s ease-out;opacity:1}.notifications-feeds-container .expansion-notifications-feed .notifications-list.collapsed,.notifications-feeds-container .failed-attendance-feed .notifications-list.collapsed{max-height:0;opacity:0;overflow:hidden}.notifications-feeds-container .expansion-notifications-feed .no-notifications{padding:2rem 1.5rem;text-align:center;color:#6c757d}.notifications-feeds-container .expansion-notifications-feed .no-notifications p{margin:0 0 .5rem;font-size:.95rem;font-weight:500}.notifications-feeds-container .expansion-notifications-feed .no-notifications small{font-size:.8rem;color:#adb5bd;font-style:italic}.notifications-feeds-container .failed-attendance-feed .no-notifications{padding:2rem 1.5rem;text-align:center;color:#6c757d}.notifications-feeds-container .failed-attendance-feed .no-notifications p{margin:0 0 .5rem;font-size:.95rem;font-weight:500}.notifications-feeds-container .failed-attendance-feed .no-notifications small{font-size:.8rem;color:#adb5bd;font-style:italic}.notifications-feeds-container .expansion-notifications-feed .notifications-list::-webkit-scrollbar{width:4px}.notifications-feeds-container .expansion-notifications-feed .notifications-list::-webkit-scrollbar-track{background:#f1f1f1}.notifications-feeds-container .expansion-notifications-feed .notifications-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:2px}.notifications-feeds-container .expansion-notifications-feed .notifications-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}.notifications-feeds-container .failed-attendance-feed .notifications-list::-webkit-scrollbar{width:4px}.notifications-feeds-container .failed-attendance-feed .notifications-list::-webkit-scrollbar-track{background:#f1f1f1}.notifications-feeds-container .failed-attendance-feed .notifications-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:2px}.notifications-feeds-container .failed-attendance-feed .notifications-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@keyframes slideInUp{0%{transform:translateY(100%);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes slideDown{0%{transform:translateY(0);opacity:1}to{transform:translateY(100%);opacity:0}}.loading-indicator{display:flex;align-items:center;justify-content:center;padding:1rem;gap:.5rem;color:#6c757d;font-size:.85rem}.loading-spinner{width:16px;height:16px;border:2px solid #e9ecef;border-top:2px solid var(--primary-color, #007bff);border-radius:50%;animation:spin 1s linear infinite}.end-message{text-align:center;padding:1rem;color:#adb5bd;font-style:italic;font-size:.8rem;border-top:1px solid #f1f3f4}.notifications-feeds-container .expansion-notifications-feed .notification-item.unknown-user{opacity:.7;border-left:4px solid #6c757d;background:linear-gradient(to right,#f8f9fa,#ffffff)}.notifications-feeds-container .expansion-notifications-feed .notification-item.unknown-user:hover{opacity:.9;background:linear-gradient(to right,#e9ecef,#ffffff)}.notifications-feeds-container .expansion-notifications-feed .notification-action.unknown-user{color:#6c757d;font-style:italic;font-weight:500}@media (max-width: 768px){.notifications-feeds-container{flex-direction:column;position:fixed;bottom:10px;right:10px;left:10px;max-width:none}.notifications-feeds-container .expansion-notifications-feed,.notifications-feeds-container .failed-attendance-feed{width:auto;max-width:none}.notifications-feeds-container .expansion-notifications-feed .notification-item{padding:.6rem 1rem}.notifications-feeds-container .expansion-notifications-feed .notification-action{font-size:.85rem}.notifications-feeds-container .expansion-notifications-feed .notification-details{font-size:.8rem}.notifications-feeds-container .expansion-notifications-feed .notification-timestamp{display:none}.notifications-feeds-container .failed-attendance-feed .notification-item{padding:.6rem 1rem}.notifications-feeds-container .failed-attendance-feed .notification-action{font-size:.85rem}.notifications-feeds-container .failed-attendance-feed .notification-details{font-size:.8rem}.notifications-feeds-container .failed-attendance-feed .notification-timestamp{display:none}}.failed-attendance-notifications-container{position:fixed;bottom:20px;right:360px;z-index:998}.failed-attendance-feed{position:static;width:320px;max-height:400px;background:white;border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid #e9ecef;overflow:hidden;animation:slideInUpRight .3s ease-out}.failed-attendance-feed .notifications-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:linear-gradient(135deg,#e74c3c,#c0392b);color:#fff;border-bottom:1px solid #e9ecef}.failed-attendance-feed .header-left{display:flex;align-items:center;gap:.5rem}.failed-attendance-feed .toggle-notifications{background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);color:#fff;width:24px;height:24px;border-radius:50%;font-size:.7rem;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;padding:0}.failed-attendance-feed .toggle-notifications:hover{background:rgba(255,255,255,.3);transform:scale(1.1)}.failed-attendance-feed .notifications-header h4{margin:0;font-size:.9rem;font-weight:600}.failed-attendance-notifications-container .failed-attendance-feed .notification-item{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem 1.25rem;border-bottom:1px solid #f1f3f4;transition:background-color .2s ease;min-height:auto}.failed-attendance-notifications-container .failed-attendance-feed .notification-item:hover{background-color:#f8f9fa}.failed-attendance-notifications-container .failed-attendance-feed .notification-item:last-child{border-bottom:none}.failed-attendance-notifications-container .failed-attendance-feed .notification-content{flex:1;min-width:0}.failed-attendance-notifications-container .failed-attendance-feed .notification-action{display:block;font-size:.9rem;font-weight:600;color:#2c3e50;margin-bottom:.5rem;line-height:1.4}.failed-attendance-notifications-container .failed-attendance-feed .notification-details{font-size:.85rem;color:#6c757d;margin-bottom:.35rem;line-height:1.5;word-wrap:break-word}.failed-attendance-notifications-container .failed-attendance-feed .notification-time{font-size:.8rem;color:#868e96;font-style:italic;margin-top:.25rem}.failed-attendance-notifications-container .failed-attendance-feed .notification-timestamp{font-size:.75rem;color:#adb5bd;font-weight:500;white-space:nowrap;margin-left:.5rem}.failed-attendance-feed .notification-item.failed-attendance{border-left:4px solid #dc3545;background:linear-gradient(to right,#fff5f5,#ffffff)}.failed-attendance-feed .notification-item.failed-attendance:hover{background:linear-gradient(to right,#fee,#f8f9fa)}.failed-attendance-feed .notification-action.failed{color:#dc3545;font-weight:600}.failed-attendance-feed .notification-action.failed:before{content:"\274c  ";margin-right:.25rem}.failed-attendance-notifications-container .failed-attendance-feed .notifications-list{max-height:340px;overflow-y:auto;padding:0;transition:max-height .3s ease-out,opacity .3s ease-out;opacity:1}.failed-attendance-notifications-container .failed-attendance-feed .notifications-list.collapsed{max-height:0;opacity:0;overflow:hidden}.failed-attendance-notifications-container .failed-attendance-feed .no-notifications{padding:2rem 1.5rem;text-align:center;color:#6c757d}.failed-attendance-notifications-container .failed-attendance-feed .no-notifications p{margin:0 0 .5rem;font-size:.95rem;font-weight:500}.failed-attendance-notifications-container .failed-attendance-feed .no-notifications small{font-size:.8rem;color:#adb5bd;font-style:italic}.failed-attendance-notifications-container .failed-attendance-feed .notifications-list::-webkit-scrollbar{width:4px}.failed-attendance-notifications-container .failed-attendance-feed .notifications-list::-webkit-scrollbar-track{background:#f1f1f1}.failed-attendance-notifications-container .failed-attendance-feed .notifications-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:2px}.failed-attendance-notifications-container .failed-attendance-feed .notifications-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width: 768px){.failed-attendance-notifications-container{bottom:10px;right:10px;left:auto;max-width:none}.failed-attendance-notifications-container .failed-attendance-feed{width:auto;max-width:none}.failed-attendance-notifications-container .failed-attendance-feed .notification-item{padding:.6rem 1rem}.failed-attendance-notifications-container .failed-attendance-feed .notification-action{font-size:.85rem}.failed-attendance-notifications-container .failed-attendance-feed .notification-details{font-size:.8rem}.failed-attendance-notifications-container .failed-attendance-feed .notification-timestamp{display:none}}@keyframes slideDown{0%{transform:translate(0);opacity:1}to{transform:translate(100%);opacity:0}}.failed-attendance-notifications-container .loading-indicator{display:flex;align-items:center;justify-content:center;padding:1rem;gap:.5rem;color:#6c757d;font-size:.85rem}.failed-attendance-notifications-container .loading-spinner{width:16px;height:16px;border:2px solid #e9ecef;border-top:2px solid #e74c3c;border-radius:50%;animation:spin 1s linear infinite}.failed-attendance-notifications-container .end-message{text-align:center;padding:1rem;color:#adb5bd;font-style:italic;font-size:.8rem;border-top:1px solid #f1f3f4}.reports-notifications-container{position:fixed;bottom:20px;right:700px;width:320px;max-height:400px;z-index:997;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif}.reports-activity-feed{position:static;width:320px;max-height:400px;background:white;border-radius:8px;box-shadow:0 4px 20px #00000026;border:1px solid #e9ecef;overflow:hidden;animation:slideInUpRight .3s ease-out}.reports-activity-feed .notifications-header{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:linear-gradient(135deg,#007bff,#0056b3);color:#fff;border-bottom:1px solid #e9ecef}.reports-activity-feed .header-left{display:flex;align-items:center;gap:.5rem}.reports-activity-feed .toggle-notifications{background:rgba(255,255,255,.2);border:none;border-radius:50%;color:#fff;cursor:pointer;font-size:12px;font-weight:700;width:24px;height:24px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.reports-activity-feed .toggle-notifications:hover{background:rgba(255,255,255,.3);transform:scale(1.05)}.reports-activity-feed h4{margin:0;font-size:14px;font-weight:600}.reports-activity-feed .notifications-list{max-height:350px;overflow-y:auto;transition:all .3s ease}.reports-activity-feed .notifications-list.collapsed{max-height:0;overflow:hidden}.reports-activity-feed .notification-item{display:flex;justify-content:space-between;align-items:flex-start;padding:14px 20px;border-bottom:1px solid #f0f0f0;transition:all .2s ease;position:relative}.reports-activity-feed .notification-item:hover{background:#f8fafc;transform:translate(-2px)}.reports-activity-feed .notification-item:last-child{border-bottom:none}.reports-activity-feed .notification-item.reports-activity{border-left:4px solid #6366f1}.reports-activity-feed .notification-content{flex:1;min-width:0}.reports-activity-feed .notification-action.reports{display:flex;align-items:center;gap:8px;font-weight:600;color:#1a202c;font-size:14px;line-height:1.4;margin-bottom:4px}.reports-activity-feed .action-icon{font-size:16px;flex-shrink:0}.reports-activity-feed .notification-details{font-size:13px;color:#718096;margin-bottom:4px;line-height:1.3}.reports-activity-feed .notification-time{font-size:11px;color:#a0aec0;font-weight:500}.reports-activity-feed .notification-timestamp{font-size:11px;color:#a0aec0;font-weight:500;white-space:nowrap;margin-left:10px;margin-top:2px}.reports-activity-feed .no-notifications{text-align:center;padding:40px 20px;color:#a0aec0}.reports-activity-feed .no-notifications p{margin:0 0 8px;font-size:16px;font-weight:500}.reports-activity-feed .no-notifications small{font-size:13px;color:#cbd5e0}.reports-activity-feed .loading-indicator{display:flex;align-items:center;justify-content:center;padding:20px;color:#718096;font-size:14px;gap:10px}.reports-activity-feed .loading-spinner{width:20px;height:20px;border:2px solid #e2e8f0;border-top:2px solid #6366f1;border-radius:50%;animation:spin 1s linear infinite}.reports-activity-feed .end-message{text-align:center;padding:16px;color:#a0aec0;border-top:1px solid #f0f0f0}.reports-activity-feed .end-message small{font-size:12px;font-style:italic}@keyframes spin{0%{transform:rotate(0)}to{transform:rotate(360deg)}}.reports-activity-feed .notifications-list::-webkit-scrollbar{width:6px}.reports-activity-feed .notifications-list::-webkit-scrollbar-track{background:#f1f1f1;border-radius:3px}.reports-activity-feed .notifications-list::-webkit-scrollbar-thumb{background:#c1c1c1;border-radius:3px}.reports-activity-feed .notifications-list::-webkit-scrollbar-thumb:hover{background:#a8a8a8}@media (max-width: 768px){.reports-notifications-container{position:fixed;top:auto;bottom:20px;right:20px;left:20px;transform:none;width:auto;max-height:50vh;z-index:1001}.reports-activity-feed .notifications-list{max-height:300px}.reports-activity-feed .notification-item{padding:12px 16px}.reports-activity-feed .notification-action.reports{font-size:13px}.reports-activity-feed .notification-details{font-size:12px}}@keyframes slideInUpRight{0%{transform:translate(100%);opacity:0}to{transform:translate(0);opacity:1}}.student-attendance-app{display:flex;justify-content:center;align-items:center;min-height:100vh;background:linear-gradient(135deg,#f5f7fa,#e4edf9);padding:1rem}.attendance-container{background:white;border-radius:var(--border-radius);box-shadow:var(--shadow);padding:2.5rem;width:100%;max-width:550px;text-align:center;border:1px solid var(--border-color);transition:var(--transition)}.attendance-container:hover{box-shadow:var(--shadow-hover)}.attendance-title{font-size:2.25rem;font-weight:800;color:var(--dark-bg);margin-bottom:1.75rem;text-align:center;background:linear-gradient(135deg,var(--primary-color),var(--secondary-color));-webkit-background-clip:text;-webkit-text-fill-color:transparent;background-clip:text;letter-spacing:-.5px;display:flex;align-items:center;justify-content:center;gap:.75rem}.attendance-title:before{content:"\1f393"}.session-info{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border-radius:var(--border-radius);padding:1rem;margin-bottom:1.75rem;font-weight:600;border:1px solid #bbdefb;box-shadow:0 2px 4px #0000000d}.session-info p{margin:0;color:var(--primary-dark);display:flex;align-items:center;justify-content:center;gap:.75rem}.session-info p:before{content:"\1f194"}.attendance-form{display:flex;flex-direction:column;gap:1.75rem}.form-group{display:flex;flex-direction:column;text-align:left}.form-group label{font-weight:600;margin-bottom:.75rem;color:var(--dark-text);font-size:1.1rem;display:flex;align-items:center;gap:.5rem}.form-group label:before{content:"\1f464"}.form-group input{padding:1rem 1.25rem;border:2px solid var(--border-color);border-radius:var(--border-radius);font-size:1.1rem;transition:var(--transition);background-color:#fff;box-shadow:0 2px 4px #0000000d}.form-group input:focus{outline:none;border-color:var(--primary-color);box-shadow:0 0 0 3px #3498db33}.form-group input:disabled{background-color:#f5f5f5;cursor:not-allowed}.submit-button{background:linear-gradient(135deg,var(--success-color),#219653);color:#fff;padding:1.1rem;border:none;border-radius:var(--border-radius);font-size:1.2rem;font-weight:600;cursor:pointer;transition:var(--transition);box-shadow:0 4px 8px #0000001a;display:flex;align-items:center;justify-content:center;gap:.75rem}.submit-button:hover:not(:disabled){background:linear-gradient(135deg,#219653,#1e8449);transform:translateY(-3px);box-shadow:var(--shadow-hover)}.submit-button:disabled{background:linear-gradient(135deg,#95a5a6,#7f8c8d);cursor:not-allowed;transform:none;box-shadow:none}.submit-button:before{content:"\2705"}.message{padding:1.25rem;border-radius:var(--border-radius);margin-top:1.25rem;font-weight:500;font-size:1.05rem;display:flex;align-items:center;gap:.75rem;box-shadow:0 2px 4px #0000000d}.message.error{background-color:#fdeded;color:var(--accent-color);border:1px solid #fccccc}.message.error:before{content:"\26a0\fe0f"}.success-message{background:linear-gradient(135deg,#e8f5e9,#c8e6c9);border-radius:var(--border-radius);padding:2.5rem;margin:1.5rem 0;border:1px solid #c8e6c9;box-shadow:0 4px 8px #0000001a}.success-message h2{color:var(--success-color);margin-top:0;font-size:2rem;display:flex;align-items:center;justify-content:center;gap:.75rem}.success-message p{font-size:1.2rem;margin-bottom:1.75rem;color:#2e7d32;font-weight:500}.return-instructions{background:linear-gradient(135deg,#e3f2fd,#bbdefb);border-radius:var(--border-radius);padding:1.25rem;font-size:1.05rem;color:var(--primary-dark);font-weight:500;border:1px solid #bbdefb;box-shadow:0 2px 4px #0000000d}.return-instructions p{margin:0;display:flex;align-items:center;justify-content:center;gap:.75rem}.return-instructions p:before{content:"\2b05\fe0f"}.instructions{background:linear-gradient(135deg,#fef9e7,#fff9c4);border-radius:var(--border-radius);padding:1.75rem;margin-top:2.25rem;text-align:left;border:1px solid #fff9c4;box-shadow:0 2px 4px #0000000d}.instructions h3{color:var(--warning-color);margin-top:0;font-size:1.3rem;display:flex;align-items:center;gap:.75rem}.instructions h3:before{content:"\2139\fe0f"}.instructions ol{padding-left:1.75rem;margin-bottom:0;font-size:1.05rem}.instructions li{margin-bottom:.75rem;color:#5d4037}.instructions li:last-child{margin-bottom:0}@media (max-width: 600px){.attendance-container{padding:1.75rem}.attendance-title{font-size:1.9rem}.form-group input{padding:.85rem;font-size:1.05rem}.submit-button{padding:.95rem;font-size:1.1rem}}:root{--blue: #5e72e4;--indigo: #5603ad;--purple: #8965e0;--pink: #f3a4b5;--red: #f5365c;--orange: #fb6340;--yellow: #ffd600;--green: #2dce89;--teal: #11cdef;--cyan: #2bffc6;--white: #ffffff;--gray: #6c757d;--gray-dark: #32325d;--light: #ced4da;--lighter: #e9ecef;--primary: #e14eca;--secondary: #f4f5f7;--success: #00f2c3;--info: #1d8cf8;--warning: #ff8d72;--danger: #fd5d93;--default: #344675;--neutral: #ffffff;--darker: black}.tim-icons{display:inline-block;font-style:normal;font-weight:400;font-variant:normal;text-transform:none;line-height:1;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.tim-icons.icon-chart-bar-32:before{content:"\f080"}.tim-icons.icon-sound-wave:before{content:"\f028"}.tim-icons.icon-check-2:before{content:"\f00c"}.tim-icons.icon-calendar-60:before{content:"\f073"}.tim-icons.icon-bell-55:before{content:"\f0f3"}.tim-icons.icon-delivery-fast:before{content:"\f0d1"}.tim-icons.icon-send:before{content:"\f1d8"}.tim-icons.icon-refresh-01:before{content:"\f2f1"}.tim-icons.icon-minimal-left:before{content:"\f104"}.tim-icons.icon-single-02:before{content:"\f007"}body{background-color:#1e1e2f;font-family:Poppins,sans-serif;font-size:.875rem;font-weight:400;line-height:1.5;color:#525f7f;text-align:left}.content{padding:30px 15px;min-height:calc(100vh - 70px);margin-top:70px}.card{background:#27293d;border:0;border-radius:15px;box-shadow:0 10px 30px -15px #0003;margin-bottom:30px}.card-stats{background:#27293d}.card-stats .card-body{padding:15px 15px 0}.card-stats .card-body .numbers{text-align:right;font-size:1.8rem;font-weight:600;color:#e14eca}.card-stats .card-body .numbers p{margin-bottom:0}.card-stats .card-body .numbers .card-category{color:#8898aa;font-size:.875rem;font-weight:400;text-transform:capitalize;margin-bottom:5px}.card-stats .icon-big{font-size:3em;min-height:64px;display:flex;align-items:center;justify-content:center}.card-stats .card-footer{padding:15px;background:transparent;border-top:1px solid rgba(0,0,0,.1)}.card-stats .card-footer .stats{color:#8898aa;font-size:.875rem;font-weight:400}.card-chart{overflow:hidden}.card-chart .card-header{padding:1.25rem 1.5rem;margin-bottom:0;background-color:transparent;border-bottom:1px solid rgba(0,0,0,.1)}.card-chart .card-header h5{margin:0;font-size:.875rem;font-weight:600;color:#8898aa;text-transform:uppercase}.card-chart .card-header .card-title{margin:0;font-size:1.0625rem;font-weight:600;color:#32325d}.card-chart .chart-area{padding:15px;height:245px}.btn{padding:.625rem 1.25rem;font-size:.875rem;font-weight:400;line-height:1.5;border-radius:.25rem;border:1px solid transparent;transition:all .15s ease-in-out}.btn-primary{background-color:#e14eca;border-color:#e14eca;color:#fff}.btn-primary:hover{background-color:#c639a9;border-color:#c639a9;color:#fff}.btn-secondary{background-color:#f4f5f7;border-color:#f4f5f7;color:#525f7f}.btn-secondary:hover{background-color:#e9ecef;border-color:#e9ecef;color:#525f7f}.btn-info{background-color:#11cdef;border-color:#11cdef;color:#fff}.btn-info:hover{background-color:#0da5c0;border-color:#0da5c0;color:#fff}.btn-group .btn-simple{background:transparent;color:#e14eca;border-color:transparent}.btn-group .btn-simple.active{background:#e14eca;color:#fff}.table{color:#525f7f;background:transparent}.table thead th{border-top:none;border-bottom:1px solid #e9ecef;color:#8898aa;font-size:.65rem;font-weight:600;text-transform:uppercase;letter-spacing:1px}.table tbody td{font-size:.875rem;padding:.75rem;vertical-align:middle;border-top:1px solid #e9ecef}.table-responsive{background:transparent}.badge{font-size:.75rem;font-weight:600;padding:.4em .6em;border-radius:.375rem}.badge-success{background-color:#2dce89;color:#fff}.badge-warning{background-color:#fb6340;color:#fff}.badge-danger{background-color:#f5365c;color:#fff}.sp-container{max-width:1200px;margin:0 auto;padding:20px;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background-color:#f3f4f6;min-height:100vh}.sp-loading{display:flex;flex-direction:column;justify-content:center;align-items:center;height:400px;gap:20px}.sp-spinner{width:50px;height:50px;border:4px solid #e5e7eb;border-top-color:#6b7280;border-radius:50%;animation:sp-spin 1s linear infinite}@keyframes sp-spin{to{transform:rotate(360deg)}}.sp-loading p{color:#6b7280;font-size:16px}.sp-error{display:flex;flex-direction:column;align-items:center;justify-content:center;height:400px;gap:15px;text-align:center}.sp-error-icon{width:60px;height:60px;background:#fee2e2;color:#dc2626;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:32px;font-weight:700}.sp-error h2{color:#111827;margin:0}.sp-error p{color:#6b7280;margin:0}.sp-btn{padding:10px 20px;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:all .2s ease}.sp-btn-primary{background:#374151;color:#fff}.sp-btn-primary:hover{background:#1f2937}.sp-header{display:flex;align-items:center;gap:20px;margin-bottom:20px;padding:20px;background:white;border-radius:8px;border:1px solid #e5e7eb}.sp-back-btn{background:#f9fafb;border:1px solid #e5e7eb;padding:10px 16px;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;color:#374151;transition:all .2s ease}.sp-back-btn:hover{background:#f3f4f6;border-color:#d1d5db}.sp-header-info{flex:1}.sp-header-info h1{margin:0;font-size:24px;font-weight:600;color:#111827}.sp-student-id{color:#6b7280;font-size:14px;font-weight:500}.sp-stats-banner{display:grid;grid-template-columns:repeat(5,1fr);gap:15px;margin-bottom:20px}@media (max-width: 900px){.sp-stats-banner{grid-template-columns:repeat(3,1fr)}}@media (max-width: 600px){.sp-stats-banner{grid-template-columns:repeat(2,1fr)}}.sp-stat-card{background:white;padding:20px;border-radius:8px;text-align:center;border:1px solid #e5e7eb;position:relative;overflow:hidden}.sp-stat-value{font-size:32px;font-weight:700;color:#111827;line-height:1.2}.sp-stat-value.sp-present{color:#059669}.sp-stat-value.sp-late{color:#d97706}.sp-stat-value.sp-absent{color:#dc2626}.sp-stat-label{font-size:13px;color:#6b7280;margin-top:5px;font-weight:500}.sp-stat-indicator{position:absolute;bottom:0;left:0;right:0;height:4px}.sp-stat-indicator.good{background:#059669}.sp-stat-indicator.warning{background:#d97706}.sp-stat-indicator.critical{background:#dc2626}.sp-tabs{display:flex;gap:0;background:white;padding:0;border-radius:8px;margin-bottom:20px;border:1px solid #e5e7eb;overflow:hidden}.sp-tab{flex:1;padding:14px 20px;border:none;background:transparent;border-right:1px solid #e5e7eb;cursor:pointer;font-size:14px;font-weight:500;color:#6b7280;transition:all .2s ease}.sp-tab:last-child{border-right:none}.sp-tab:hover{background:#f9fafb;color:#374151}.sp-tab.active{background:#374151;color:#fff}.sp-content{background:white;border-radius:8px;padding:25px;border:1px solid #e5e7eb}.sp-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:20px;margin-bottom:20px}.sp-card:last-child{margin-bottom:0}.sp-card h3{margin:0 0 15px;font-size:16px;font-weight:600;color:#111827;padding-bottom:10px;border-bottom:1px solid #e5e7eb}.sp-details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:15px}@media (max-width: 600px){.sp-details-grid{grid-template-columns:1fr}}.sp-detail{display:flex;flex-direction:column;gap:4px}.sp-detail-label{font-size:12px;color:#6b7280;font-weight:500;text-transform:uppercase;letter-spacing:.5px}.sp-detail-value{font-size:14px;color:#111827;font-weight:500}.sp-progress-container{padding:10px 0}.sp-progress-bar{height:12px;background:#e5e7eb;border-radius:6px;overflow:hidden;margin-bottom:10px}.sp-progress-fill{height:100%;border-radius:6px;transition:width .5s ease}.sp-progress-fill.good{background:#059669}.sp-progress-fill.warning{background:#d97706}.sp-progress-fill.critical{background:#dc2626}.sp-progress-text{text-align:center;font-size:14px;color:#6b7280}.sp-module-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px}.sp-module-item{padding:15px;border-radius:6px;background:white;border:1px solid #e5e7eb;transition:all .2s ease}.sp-module-item:hover{border-color:#d1d5db}.sp-module-item.good{border-left:4px solid #059669}.sp-module-item.warning{border-left:4px solid #d97706}.sp-module-item.critical{border-left:4px solid #dc2626}.sp-module-name{font-size:13px;color:#374151;margin-bottom:5px;line-height:1.3;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.sp-module-rate{font-size:22px;font-weight:700;color:#111827}.sp-module-sessions{font-size:12px;color:#6b7280}.sp-filter-bar{display:flex;align-items:center;gap:12px;margin-bottom:20px;padding-bottom:15px;border-bottom:1px solid #e5e7eb}.sp-filter-bar label{font-size:14px;font-weight:500;color:#374151}.sp-select{padding:8px 12px;border:1px solid #d1d5db;border-radius:6px;font-size:14px;color:#111827;background:white;min-width:200px;cursor:pointer}.sp-select:focus{outline:none;border-color:#9ca3af;box-shadow:0 0 0 2px #9ca3af33}.sp-table-container{overflow-x:auto;border-radius:6px;border:1px solid #e5e7eb}.sp-table{width:100%;border-collapse:collapse;font-size:14px}.sp-table th{background:#f9fafb;padding:12px 15px;text-align:left;font-weight:600;color:#374151;border-bottom:2px solid #e5e7eb;white-space:nowrap}.sp-table td{padding:12px 15px;border-bottom:1px solid #f3f4f6;color:#111827}.sp-table tbody tr:hover{background:#f9fafb}.sp-table tbody tr:last-child td{border-bottom:none}.sp-row-present{border-left:3px solid #059669}.sp-row-late{border-left:3px solid #d97706}.sp-row-absent{border-left:3px solid #dc2626}.sp-no-data{text-align:center;padding:40px 20px!important;color:#6b7280}.sp-status{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:4px;font-size:12px;font-weight:600}.sp-status-present{background:#d1fae5;color:#065f46}.sp-status-late{background:#fef3c7;color:#92400e}.sp-status-absent{background:#fee2e2;color:#991b1b}.sp-status-unknown{background:#f3f4f6;color:#374151}.sp-modules-list{display:flex;flex-direction:column;gap:15px}.sp-module-card{background:#f9fafb;border:1px solid #e5e7eb;border-radius:8px;padding:20px;transition:all .2s ease}.sp-module-card:hover{border-color:#d1d5db}.sp-module-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:15px}.sp-module-title h4{margin:0;font-size:16px;font-weight:600;color:#111827;line-height:1.3}.sp-module-course{display:block;font-size:12px;color:#6b7280;margin-top:4px}.sp-module-percentage{font-size:24px;font-weight:700;padding:5px 12px;border-radius:6px}.sp-module-percentage.good{background:#d1fae5;color:#065f46}.sp-module-percentage.warning{background:#fef3c7;color:#92400e}.sp-module-percentage.critical{background:#fee2e2;color:#991b1b}.sp-module-progress{height:8px;background:#e5e7eb;border-radius:4px;overflow:hidden;margin-bottom:15px}.sp-module-progress-fill{height:100%;border-radius:4px;transition:width .5s ease}.sp-module-progress-fill.good{background:#059669}.sp-module-progress-fill.warning{background:#d97706}.sp-module-progress-fill.critical{background:#dc2626}.sp-module-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:10px}@media (max-width: 500px){.sp-module-stats{grid-template-columns:repeat(2,1fr)}}.sp-module-stat{text-align:center;padding:10px;background:white;border-radius:6px;border:1px solid #e5e7eb}.sp-module-stat-value{display:block;font-size:20px;font-weight:700;color:#111827}.sp-module-stat.present .sp-module-stat-value{color:#059669}.sp-module-stat.late .sp-module-stat-value{color:#d97706}.sp-module-stat.absent .sp-module-stat-value{color:#dc2626}.sp-module-stat-label{display:block;font-size:11px;color:#6b7280;text-transform:uppercase;letter-spacing:.5px;margin-top:2px}.sp-module-alert{margin-top:15px;padding:10px 15px;border-radius:6px;font-size:13px;font-weight:500}.sp-module-alert.warning{background:#fef3c7;color:#92400e;border:1px solid #fcd34d}.sp-module-alert.critical{background:#fee2e2;color:#991b1b;border:1px solid #fca5a5}@media (max-width: 768px){.sp-container{padding:15px}.sp-header{flex-direction:column;align-items:flex-start;gap:15px}.sp-header-info h1{font-size:20px}.sp-stats-banner{grid-template-columns:repeat(2,1fr)}.sp-stat-value{font-size:26px}.sp-tabs{flex-wrap:wrap}.sp-tab{flex:1 1 auto;min-width:100px;border-bottom:1px solid #e5e7eb}.sp-content{padding:15px}.sp-module-header{flex-direction:column;gap:10px}.sp-module-percentage{align-self:flex-start}}.sp-table-container::-webkit-scrollbar{height:8px}.sp-table-container::-webkit-scrollbar-track{background:#f3f4f6;border-radius:4px}.sp-table-container::-webkit-scrollbar-thumb{background:#d1d5db;border-radius:4px}.sp-table-container::-webkit-scrollbar-thumb:hover{background:#9ca3af}.sp-week-selector{display:flex;align-items:center;gap:20px;padding:15px 20px;background:white;border-radius:8px;margin-bottom:20px;box-shadow:0 1px 3px #0000001a;flex-wrap:wrap}.sp-week-control{display:flex;align-items:center;gap:10px}.sp-week-control label{font-size:14px;font-weight:500;color:#374151;white-space:nowrap}.sp-week-control input[type=range]{width:120px;height:6px;-webkit-appearance:none;-moz-appearance:none;appearance:none;background:#e5e7eb;border-radius:3px;outline:none}.sp-week-control input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:18px;height:18px;background:#6b7280;border-radius:50%;cursor:pointer}.sp-week-control input[type=range]::-moz-range-thumb{width:18px;height:18px;background:#6b7280;border-radius:50%;cursor:pointer;border:none}.sp-week-control span{font-size:14px;font-weight:600;color:#1f2937;min-width:20px}.sp-week-range-display{font-size:14px;color:#6b7280;padding:6px 12px;background:#f3f4f6;border-radius:4px;margin-left:auto}.sp-default-btn{padding:8px 16px;background:#6b7280;color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;white-space:nowrap;transition:background .2s}.sp-default-btn:hover{background:#4b5563}.sp-row-disabled{background-color:#f3f4f6!important;color:#9ca3af}.sp-row-disabled td{color:#9ca3af}.sp-row-no-class{background-color:#fef3c7!important;color:#92400e}.sp-row-no-class td{color:#92400e}.sp-status.disabled{background-color:#e5e7eb;color:#6b7280}.sp-status.no-class{background-color:#fcd34d;color:#92400e}
