:root{--primary-color:#16213e;--secondary-color:#3498db;--accent-color:#e74c3c;--success-color:#2ecc71;--warning-color:#f39c12;--background-color:#f5f7fa;--surface-color:#fff;--text-primary:#2c3e50;--text-secondary:#7f8c8d;--border-color:#e1e8ed;--shadow:0 2px 8px rgba(0,0,0,.1);--shadow-hover:0 6px 12px rgba(0,0,0,.15);--border-radius:8px;--transition:all .3s ease;--sidebar-width:320px}[data-theme="dark"]{--background-color:#121212;--surface-color:#1e1e1e;--text-primary:#fff;--text-secondary:#b0b0b0;--border-color:#333;--shadow:0 2px 8px rgba(0,0,0,.3);--shadow-hover:0 6px 12px rgba(0,0,0,.4)}*{margin:0;padding:0;box-sizing:border-box}body{font-family:"Segoe UI","Roboto","Helvetica","Arial",sans-serif;background-color:var(--background-color);color:var(--text-primary);line-height:1.6;transition:var(--transition)}.app-container{min-height:100vh;display:flex;flex-direction:column}.header{background-color:var(--primary-color);color:#fff;box-shadow:var(--shadow);position:sticky;top:0;z-index:100}.header-content{max-width:1400px;margin:0 auto;padding:1rem 1.5rem;display:flex;justify-content:space-between;align-items:center;gap:1rem}.app-title{font-size:1.5rem;font-weight:600;display:flex;align-items:center;gap:.5rem}.emu-logo{height:2rem;width:auto;object-fit:contain}.header-controls{display:flex;align-items:center;gap:1rem}.search-container{position:relative;min-width:350px}.search-input{width:100%;padding:.75rem 2.5rem .75rem 1rem;border:none;border-radius:var(--border-radius);background-color:rgba(255,255,255,.9);color:var(--text-primary);font-size:.9rem;transition:var(--transition)}.search-input:focus{outline:none;background-color:#fff;box-shadow:0 0 0 2px var(--secondary-color)}.search-icon{position:absolute;right:.75rem;top:50%;transform:translateY(-50%);color:var(--text-secondary)}.export-buttons{display:flex;gap:.5rem}.icon-button{background:none;border:none;color:#fff;font-size:1.2rem;padding:.5rem;border-radius:var(--border-radius);cursor:pointer;transition:var(--transition)}.icon-button:hover{background-color:rgba(255,255,255,.1)}.bg-x-gray{background-color:#efefef}.btn{padding:.75rem 1rem;border:none;border-radius:var(--border-radius);font-size:.9rem;font-weight:500;cursor:pointer;transition:var(--transition);display:inline-flex;align-items:center;gap:.5rem;text-decoration:none}.btn-sm{padding:.5rem .75rem;font-size:.8rem}.btn-primary{background-color:var(--secondary-color);color:#fff}.btn-primary:hover{background-color:#2980b9}.btn-outline{background-color:transparent;color:var(--secondary-color);border:2px solid var(--secondary-color)}.btn-outline:hover{background-color:var(--secondary-color);color:#fff}.main-content{flex:1;display:flex}.content-container{display:flex;width:100%;max-width:1400px;margin:0 auto;gap:2rem;padding:2rem}.sidebar{width:var(--sidebar-width);display:flex;flex-direction:column;gap:1.5rem}.calendar-widget{background-color:var(--surface-color);border-radius:var(--border-radius);padding:1.5rem;box-shadow:var(--shadow)}.calendar-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.calendar-nav-btn{background:none;border:none;font-size:1.2rem;color:var(--text-primary);padding:.5rem;border-radius:var(--border-radius);cursor:pointer;transition:var(--transition);min-width:40px;display:flex;align-items:center;justify-content:center}.calendar-nav-btn:hover{background-color:var(--secondary-color);color:#fff}.month-title{font-size:1.1rem;font-weight:600;color:var(--text-primary);text-align:center;flex:1;margin:0 .5rem}.calendar-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;margin-bottom:1rem;border:1px solid var(--border-color);border-radius:var(--border-radius);overflow:hidden;width:100%;max-width:280px;margin-left:auto;margin-right:auto}.calendar-day-header{text-align:center;padding:.5rem .2rem;font-weight:600;font-size:.75rem;color:var(--text-secondary);background-color:var(--border-color);min-height:32px;display:flex;align-items:center;justify-content:center}.calendar-day{aspect-ratio:1;display:flex;align-items:center;justify-content:center;background-color:var(--surface-color);border:none;cursor:pointer;transition:var(--transition);font-size:.85rem;position:relative;min-height:32px;border-bottom:1px solid var(--border-color);border-right:1px solid var(--border-color)}.calendar-day:nth-child(7n){border-right:none}.calendar-day:hover{background-color:var(--secondary-color);color:#fff}.calendar-day.other-month{color:var(--text-secondary);background-color:var(--background-color)}.calendar-day.selected{background-color:var(--primary-color);color:#fff}.calendar-day.has-exam{background-color:var(--accent-color);color:#fff}.calendar-day.has-exam.selected{background-color:var(--primary-color);box-shadow:inset 0 0 0 2px var(--accent-color)}.calendar-legend{display:flex;flex-direction:column;gap:.5rem;margin-top:1rem}.legend-item{display:flex;align-items:center;gap:.5rem;font-size:.8rem;color:var(--text-secondary)}.legend-dot{width:12px;height:12px;border-radius:50%}.legend-dot.has-exam{background-color:var(--accent-color)}.legend-dot.selected{background-color:var(--primary-color)}.filter-section{background-color:var(--surface-color);border-radius:var(--border-radius);padding:1.5rem;box-shadow:var(--shadow)}.filter-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.filter-header h4{color:var(--text-primary);font-size:1.1rem;font-weight:600}.filter-group{margin-bottom:1.5rem}.filter-group h5{color:var(--text-primary);font-size:.9rem;font-weight:600;margin-bottom:.75rem}.checkbox-group{display:flex;flex-direction:column;gap:.5rem}.checkbox-item{display:flex;align-items:center;gap:.5rem;cursor:pointer;font-size:.85rem;padding:.25rem 0;transition:var(--transition)}.checkbox-item:hover{color:var(--secondary-color)}.checkbox-item input[type="checkbox"]{margin:0;cursor:pointer}.selection-summary{padding-top:1rem;border-top:1px solid var(--border-color);display:flex;flex-direction:column;gap:.75rem}.summary-item{display:flex;align-items:center;gap:.5rem;font-size:.85rem;color:var(--text-secondary)}.summary-item i{color:var(--success-color)}.exam-area{flex:1;display:flex;flex-direction:column}.exam-area-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem;flex-wrap:wrap;gap:1rem}.exam-area-header h2{color:var(--text-primary);font-size:1.8rem;font-weight:600}.exam-stats{display:flex;gap:1rem}.stat-item{display:flex;align-items:center;gap:.5rem;background-color:var(--surface-color);padding:.5rem 1rem;border-radius:var(--border-radius);box-shadow:var(--shadow);font-size:.9rem;color:var(--text-secondary)}.stat-item i{color:var(--secondary-color)}.loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;color:var(--text-secondary);gap:1rem}.loading i{font-size:2rem}.no-exams{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:3rem;color:var(--text-secondary);text-align:center}.no-exams i{font-size:3rem;margin-bottom:1rem;opacity:.5}.exams-list{display:flex;flex-direction:column;gap:1rem;overflow-y:auto;padding-right:.5rem}.date-card{background-color:var(--surface-color);border-radius:var(--border-radius);box-shadow:var(--shadow);overflow:hidden;transition:var(--transition);margin-bottom:1rem}.date-card.expanded{box-shadow:var(--shadow-hover)}.date-header{background-color:var(--primary-color);color:#fff;padding:1rem 1.5rem;cursor:pointer;display:flex;justify-content:space-between;align-items:center;transition:var(--transition)}.date-header:hover{background-color:#1a2549}.date-title{font-size:1.1rem;font-weight:600}.date-info{display:flex;align-items:center;gap:1rem;font-size:.9rem}.exam-count-badge{background-color:rgba(255,255,255,.2);padding:.25rem .5rem;border-radius:12px;font-size:.8rem}.expand-icon{transition:transform .3s ease;font-size:1.2rem}.date-card.expanded .expand-icon{transform:rotate(180deg)}.periods-container{display:none;padding:1.5rem}.date-card.expanded .periods-container{display:block}.period-section{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);margin-bottom:1rem;overflow:hidden;transition:var(--transition)}.period-section.expanded{box-shadow:var(--shadow)}.period-header{background-color:var(--background-color);padding:.75rem 1rem;border-radius:0;margin-bottom:0;display:flex;justify-content:space-between;align-items:center;cursor:pointer;transition:var(--transition);border-bottom:1px solid var(--border-color)}.period-header:hover{background-color:var(--border-color)}.period-title{font-weight:600;color:var(--text-primary);font-size:1rem}.period-time{color:var(--text-secondary);font-size:.9rem}.period-info{display:flex;align-items:center;gap:1rem}.period-count-badge{background-color:var(--secondary-color);color:#fff;padding:.2rem .5rem;border-radius:12px;font-size:.75rem;font-weight:500}.period-expand-icon{transition:transform .3s ease;font-size:1rem;color:var(--text-secondary)}.period-section.expanded .period-expand-icon{transform:rotate(180deg)}.period-exams{display:none;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:1rem;padding:1rem}.period-section.expanded .period-exams{display:grid}.exam-card{background-color:var(--surface-color);border:1px solid var(--border-color);border-radius:var(--border-radius);padding:1rem;transition:var(--transition);position:relative;cursor:pointer}.exam-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-hover)}.exam-card.selected{background-color:#edf9ff}.exam-checkbox{position:absolute;top:1rem;right:1rem;cursor:pointer}.exam-course-code{font-size:1.1rem;font-weight:600;color:var(--text-primary);margin-bottom:.5rem;margin-right:2rem}.exam-department{display:inline-block;background-color:var(--secondary-color);color:#fff;padding:.2rem .6rem;border-radius:12px;font-size:.7rem;font-weight:500;margin-bottom:.75rem}.exam-detail{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:.85rem;color:var(--text-secondary)}.exam-detail i{width:16px;color:var(--secondary-color)}.exam-detail strong{color:var(--text-primary)}.dept-COMP,.dept-CMPE{background-color:#3498db !important}.dept-MATH{background-color:#2ecc71 !important}.dept-PHYS{background-color:#9b59b6 !important}.dept-CHEM{background-color:#e74c3c !important}.dept-BIOL{background-color:#27ae60 !important}.dept-ECON{background-color:#f39c12 !important}.dept-HIST{background-color:#8e44ad !important}.dept-ENG{background-color:#d35400 !important}.dept-PSYC{background-color:#f1c40f !important;color:#333 !important}.dept-ARCH{background-color:#16a085 !important}.dept-MENG{background-color:#c0392b !important}.dept-CIVL{background-color:#2980b9 !important}.dept-EENG{background-color:#7f8c8d !important}.dept-MGMT{background-color:#8e44ad !important}.dept-MRKT{background-color:#e67e22 !important}.dept-ACCT{background-color:#1abc9c !important}.dept-FINA{background-color:#34495e !important}.dept-TOUR{background-color:#f1948a !important}.dept-BNKS{background-color:#2c3e50 !important}.dept-HMSR{background-color:#e91e63 !important}.mobile-search{display:none;background-color:var(--surface-color);padding:1rem;margin-bottom:1rem;border-radius:var(--border-radius);box-shadow:var(--shadow)}.mobile-search .search-container{position:relative;min-width:auto;width:100%}@media(max-width:1200px){:root{--sidebar-width:280px}.search-container{min-width:300px}.calendar-grid{max-width:240px}}@media(max-width:992px){.content-container{flex-direction:column;gap:1.5rem}.sidebar{width:100%;flex-direction:row;gap:1rem}.calendar-widget,.filter-section{flex:1}.calendar-grid{max-width:220px}}@media(max-width:768px){.header-content{flex-direction:column;gap:1rem}.search-container{min-width:100%}.export-buttons{order:-1}.header-controls .search-container{display:none}.mobile-search{display:block}.sidebar{display:none}.content-container{padding:1rem;gap:0}.exam-area-header{flex-direction:column;align-items:stretch;text-align:center}.period-exams{grid-template-columns:1fr}}@media(max-width:480px){.app-title{font-size:1.2rem}.header-content{padding:.75rem 1rem}.export-buttons .btn{padding:.5rem;font-size:.8rem}.mobile-search{padding:.75rem;margin-bottom:.75rem}.content-container{padding:.75rem}.date-header{flex-direction:column;align-items:flex-start;gap:.5rem;padding:.75rem 1rem}.date-info{flex-direction:row;align-items:center;gap:.5rem;width:100%;justify-content:space-between}.period-header{padding:.5rem .75rem}.period-info{flex-direction:column;align-items:flex-end;gap:.25rem}.exam-card{padding:.75rem}.exam-course-code{font-size:1rem;margin-right:1.5rem}}