/*! 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}}}.visible{visibility:visible}.fixed{position:fixed}.relative{position:relative}.container{width:100%}.block{display:block}.flex{display:flex}.grid{display:grid}.inline-block{display:inline-block}.table{display:table}.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}.border{border-style:var(--tw-border-style);border-width:1px}.uppercase{text-transform:uppercase}.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)}*{box-sizing:border-box;margin:0;padding:0}:root{--primary:#dc3545;--primary-dark:#b02a37;--primary-light:#e35d6a;--secondary:#ff6b35;--background:#f5f7fa;--surface:#fff;--text-primary:#1a1a1a;--text-secondary:#666;--text-light:#999;--border:#e0e0e0;--shadow:#0000001a;--success:#28a745;--warning:#ffc107;--danger:#dc3545;--info:#17a2b8}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;background-color:var(--background);color:var(--text-primary);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif}#root{min-height:100vh}a{color:var(--primary);text-decoration:none}a:hover{color:var(--primary-dark)}button{font-family:inherit}@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}.layout{display:flex;min-height:100vh}.sidebar{width:240px;background:linear-gradient(180deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;display:flex;flex-direction:column;box-shadow:2px 0 10px var(--shadow);position:fixed;height:100vh;overflow-y:auto;overflow-x:hidden;transition:width .3s ease;scrollbar-width:none;-ms-overflow-style:none}.sidebar::-webkit-scrollbar{display:none}.sidebar.collapsed{width:64px}.sidebar-header{padding:.75rem;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;gap:.5rem;height:64px}.sidebar.collapsed .sidebar-header{padding:.75rem;height:64px}.header-content{display:flex;align-items:center;justify-content:flex-start;width:100%;position:relative}.sidebar.collapsed .header-content{justify-content:flex-start}.toggle-btn{background:transparent;border:none;color:#fff;width:32px;height:32px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;font-size:1rem;flex-shrink:0;position:absolute;right:0;opacity:.8}.toggle-btn:hover{background:#ffffff1a;opacity:1;transform:scale(1.05)}.toggle-btn:active{transform:scale(.95)}.toggle-btn-collapsed{background:transparent;border:none;color:#fffc;width:100%;display:flex;align-items:center;padding:1rem 1.125rem;cursor:pointer;transition:all .2s ease}.toggle-btn-collapsed:hover{background:#ffffff1a;color:#fff}.toggle-btn-collapsed:active{transform:scale(.98)}.sidebar-logo{height:40px;width:auto;-o-object-fit:contain;object-fit:contain;max-width:100%}.sidebar.collapsed .sidebar-logo{height:40px}.app-title{font-size:1.75rem;font-weight:700;margin:0;white-space:nowrap;transition:none;line-height:1;display:flex;align-items:center;justify-content:flex-start;height:32px}.sidebar.collapsed .app-title{font-size:1.75rem}.app-title span{color:var(--secondary)}.app-subtitle{font-size:.875rem;margin:.5rem 0 0;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.nav-links{flex:1;padding:1rem 0}.nav-link{display:flex;align-items:center;gap:1rem;padding:.875rem 1.5rem;color:#fffc;text-decoration:none;transition:padding .3s ease,gap .3s ease;font-size:.938rem;font-weight:500;white-space:nowrap}.sidebar.collapsed .nav-link{padding:1rem 1.125rem;gap:0}.nav-link:hover{background:#ffffff1a;color:#fff}.nav-link.active{background:#ffffff26;color:#fff;border-right:3px solid var(--secondary)}.nav-icon{font-size:1.25rem;width:1.5rem;height:1.5rem;min-width:1.5rem;min-height:1.5rem;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;line-height:1}.sidebar-footer{padding:0;border-top:1px solid rgba(255,255,255,.1)}.sidebar.collapsed .sidebar-footer{padding:0}.profile-link{display:flex;align-items:center;gap:.75rem;padding:.75rem .5rem;border-radius:8px;transition:background .2s ease,gap .3s ease;text-decoration:none}.sidebar.collapsed .profile-link{gap:0}.profile-link:hover{background:#ffffff1a}.profile-avatar{width:40px;height:40px;border-radius:50%;background:var(--secondary);display:flex;align-items:center;justify-content:center;font-weight:600;font-size:.875rem;color:#fff;flex-shrink:0}.profile-info{flex:1;min-width:0}.profile-name{font-weight:600;color:#fff;font-size:.875rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.profile-id{font-size:.75rem;color:#ffffffb3;margin-top:.125rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.main-content{margin-left:240px;flex:1;padding:2rem;height:100vh;overflow-y:auto;transition:margin-left .3s ease;scrollbar-width:none;-ms-overflow-style:none}.main-content::-webkit-scrollbar{display:none}.sidebar.collapsed~.main-content{margin-left:64px}@media (max-width: 768px){.sidebar{width:70px}.app-subtitle,.nav-link span:not(.nav-icon),.profile-info{display:none}.sidebar-header{padding:1.5rem .5rem}.app-title{font-size:1.5rem;text-align:center}.nav-link{justify-content:center;padding:1rem .5rem}.main-content{margin-left:70px;padding:1rem}.profile-link{justify-content:center;padding:.75rem 0}}.course-detail-page{max-width:1200px;margin:0 auto;padding:2rem;min-height:100vh}.back-button{background:#fff;border:1px solid var(--border);border-radius:12px;padding:.75rem 1.5rem;font-size:.875rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;margin-bottom:1.5rem}.back-button:hover{background:var(--background);color:var(--primary);border-color:var(--primary)}.course-detail-header{background:#fff;border-radius:16px;padding:2rem;margin-bottom:2rem;box-shadow:0 4px 12px #00000014}.course-detail-title-section{display:flex;flex-direction:column;gap:.75rem}.course-detail-code{font-size:2rem;font-weight:900;color:var(--primary);margin:0}.course-detail-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0}.course-detail-meta{display:flex;gap:1.5rem;flex-wrap:wrap}.meta-item{font-size:.875rem;color:var(--text-secondary);display:flex;align-items:center;gap:.5rem}.course-detail-tabs{background:#fff;border-radius:16px;padding:.5rem;margin-bottom:2rem;display:flex;gap:.5rem;box-shadow:0 2px 8px #0000000f;overflow-x:auto;position:sticky;top:0;z-index:100}.tab-button{flex:1;padding:.875rem 1.5rem;background:transparent;border:none;border-radius:12px;font-size:.875rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;white-space:nowrap}.tab-button:hover{background:var(--background);color:var(--text-primary)}.tab-button.active{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff}.course-detail-content{background:transparent;border-radius:0;padding:0;box-shadow:none}.tab-content{animation:fadeIn .3s ease}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.section-heading{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-bottom:1.5rem}.overview-section{margin-bottom:2.5rem}.course-description{font-size:1rem;line-height:1.6;color:var(--text-secondary)}.overview-stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-bottom:2.5rem}.overview-stat-card{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:12px;padding:1.5rem;text-align:center}.stat-icon{font-size:2rem;margin-bottom:.75rem}.stat-value{font-size:2.5rem;font-weight:900;color:var(--text-primary);margin-bottom:.5rem}.stat-label{font-size:.875rem;color:var(--text-secondary)}.announcements-preview{display:flex;flex-direction:column;gap:1rem}.announcement-preview-card{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:12px;padding:1.25rem;display:flex;justify-content:space-between;align-items:center}.announcement-preview-title{font-size:.875rem;font-weight:600;color:var(--text-primary)}.announcement-preview-date{font-size:.75rem;color:var(--text-secondary)}.grades-summary{display:grid;grid-template-columns:repeat(2,1fr);gap:1.5rem;margin-bottom:2.5rem}.grade-card{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);border-radius:16px;padding:2rem;text-align:center;color:#fff}.grade-card.current{background:linear-gradient(135deg,#84fab0,#8fd3f4);color:var(--text-primary)}.grade-card-label{font-size:.875rem;font-weight:500;opacity:.9;margin-bottom:1rem}.grade-card-value{font-size:3.5rem;font-weight:900;line-height:1;margin-bottom:.5rem}.grade-card-value.excellent{color:#28a745}.grade-card-value.good{color:#5cb85c}.grade-card-value.average{color:#ffc107}.grade-card-value.poor{color:#fd7e14}.grade-card-value.fail{color:#dc3545}.grade-card-sublabel{font-size:.75rem;opacity:.75}.assignments-list{display:flex;flex-direction:column;gap:1rem}.assignment-grade-card{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:12px;padding:1.5rem;display:flex;justify-content:space-between;align-items:center;transition:transform .2s ease,box-shadow .2s ease}.assignment-grade-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.assignment-grade-left{display:flex;align-items:center;gap:1rem;flex:1}.assignment-status-dot{width:12px;height:12px;border-radius:50%;flex-shrink:0}.assignment-status-dot.graded{background:#28a745}.assignment-status-dot.pending{background:#ffc107}.assignment-status-dot.not-submitted{background:#999}.assignment-grade-info{flex:1}.assignment-grade-title{font-size:1rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem}.assignment-grade-meta{display:flex;gap:1rem;align-items:center}.meta-badge{background:#e9d5ff;color:#7c3aed;padding:.25rem .75rem;border-radius:20px;font-size:.75rem;font-weight:600}.meta-text{font-size:.75rem;color:var(--text-secondary)}.assignment-grade-right{text-align:right}.grade-display{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem}.grade-display-value{font-size:1.5rem;font-weight:900}.grade-display-percent{font-size:.75rem;color:var(--text-secondary);font-weight:600}.status-badge{padding:.5rem 1rem;border-radius:8px;font-size:.75rem;font-weight:600}.status-badge.pending{background:#fff3cd;color:#856404}.status-badge.not-submitted{background:#e0e0e0;color:var(--text-secondary)}.assignment-detail-card{background:#fff;border-radius:16px;padding:1rem;transition:all .2s ease;border-left:4px solid #f5576c;margin-bottom:.75rem}.assignment-detail-card:hover{box-shadow:0 8px 20px #0000001f}.assignment-detail-header{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem;margin-bottom:.75rem}.assignment-detail-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0;line-height:1.3}.assignment-type-badge{color:var(--text-primary);font-size:.75rem;font-weight:700;text-transform:uppercase;flex-shrink:0}.assignment-detail-meta{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:.75rem;color:var(--text-secondary);margin-bottom:.75rem;font-weight:500}.assignment-detail-meta .meta-separator{color:var(--text-secondary);opacity:.5;margin:0 .25rem}.due-date{color:#fd7e14;font-weight:600}.submission-info{background:#fff;border-radius:8px;padding:1rem;margin-top:1rem}.submission-status{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.status-text{font-weight:600}.status-text.submitted{color:#06c}.status-text.graded{color:#28a745}.submission-grade{font-size:1rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.submission-feedback{margin-top:1rem;padding-top:1rem;border-top:1px solid var(--border)}.feedback-label{font-size:.75rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;margin-bottom:.5rem}.feedback-text{font-size:.875rem;line-height:1.6;color:var(--text-primary)}.materials-list{display:flex;flex-direction:column;gap:1rem}.material-card{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:12px;padding:1.5rem;display:flex;align-items:center;gap:1.5rem;transition:transform .2s ease,box-shadow .2s ease}.material-card:hover{transform:translateY(-2px);box-shadow:0 4px 12px #0000001a}.material-icon{width:48px;height:48px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.material-info{flex:1}.material-title{font-size:1rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem}.material-meta{display:flex;gap:1rem;font-size:.75rem;color:var(--text-secondary)}.material-type{font-weight:600}.material-download-btn{background:var(--primary);color:#fff;padding:.75rem 1.5rem;border-radius:8px;font-size:.875rem;font-weight:600;text-decoration:none;transition:background .2s ease}.material-download-btn:hover{background:var(--primary-dark)}.announcements-list{display:flex;flex-direction:column;gap:1.5rem}.announcement-card{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:12px;padding:1.5rem}.announcement-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1rem}.announcement-title{font-size:1.125rem;font-weight:700;color:var(--text-primary);margin:0}.announcement-date{font-size:.75rem;color:var(--text-secondary)}.announcement-content{font-size:.875rem;line-height:1.6;color:var(--text-primary)}.empty-state-small{text-align:center;padding:3rem 2rem}.empty-icon-small{width:60px;height:60px;background:var(--background);border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2rem;margin:0 auto 1rem}.timeline-layout{display:flex;gap:2rem;min-height:600px}.timeline-minimap{flex:0 0 200px;background:#fff;border-radius:16px;padding:1.5rem;position:sticky;top:6rem;height:-moz-fit-content;height:fit-content;max-height:calc(100vh - 200px);overflow-y:auto}.minimap-title{font-size:.875rem;font-weight:700;color:var(--text-primary);margin:0 0 1.5rem;text-transform:uppercase;letter-spacing:.05em}.minimap-sections{display:flex;flex-direction:column;gap:.45rem}.minimap-week{display:flex;flex-direction:column;gap:.5rem}.minimap-week-label{font-size:.75rem;font-weight:600;color:var(--text-secondary)}.minimap-items{display:flex;flex-direction:column;gap:.5rem}.minimap-item{display:flex;align-items:center;gap:.625rem;cursor:pointer;padding:.375rem .5rem;border-radius:6px;transition:background .2s ease}.minimap-item:hover{background:#667eea1a}.minimap-item-dot{width:10px;height:10px;border-radius:50%;flex-shrink:0}.minimap-item.lesson .minimap-item-dot{background:var(--primary)}.minimap-item.assignment .minimap-item-dot{background:#f5576c}.minimap-item-label{font-size:.75rem;font-weight:600;color:var(--text-primary);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.timeline-main{flex:1;min-width:0}.timeline-container{position:relative}.timeline-week-badge{font-size:.875rem;font-weight:700;color:var(--primary);margin-bottom:1rem;margin-top:1rem;display:flex;align-items:center;gap:1rem}.timeline-week-badge:after{content:"";flex:1;height:1px;background:#dc354533}.timeline-week-badge:first-child{margin-top:0}.timeline-item{margin-bottom:.75rem;position:relative}.timeline-item-card{flex:1;background:#fff;border-radius:16px;padding:1rem;transition:all .2s ease;border-left:4px solid transparent}.timeline-item-card.past{opacity:.5;background:#f5f7fa}.timeline-item-card.lesson{border-left-color:var(--primary)}.timeline-item-card.assignment{border-left-color:#f5576c}.timeline-item-card:hover{box-shadow:0 8px 20px #0000001f}.timeline-item-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem}.timeline-item-main-content{flex:1;min-width:0}.timeline-item-actions{display:flex;gap:.5rem;flex-shrink:0;align-items:flex-start}.action-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.75rem;border:none;background:transparent;font-size:.625rem;font-weight:700;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;gap:.375rem;min-width:64px}.action-btn:hover{box-shadow:none}.action-btn.primary{color:var(--primary)}.action-btn.primary:hover{background:transparent;box-shadow:none;transform:translateY(-2px)}.action-btn.secondary{color:var(--text-secondary)}.action-btn.secondary:hover{color:var(--primary);transform:translateY(-2px)}.action-btn-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.action-btn-icon svg{width:100%;height:100%}.timeline-item-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:.75rem;color:var(--text-secondary);margin-bottom:.75rem;font-weight:500}.timeline-item-type-badge{color:var(--text-primary);font-size:.75rem;font-weight:700;text-transform:uppercase}.timeline-item-metadata .status-cancelled{color:#dc3545;font-weight:700}.timeline-item-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0;line-height:1.3}.timeline-item-expanded{padding-top:.75rem}.timeline-item-description{font-size:.875rem;line-height:1.6;color:var(--text-secondary);margin:0 0 .5rem}.timeline-item-instructor{display:flex;align-items:center;gap:1rem;margin-bottom:.5rem;padding:.5rem;background:transparent;border-radius:12px}.instructor-avatar{width:48px;height:48px;border-radius:50%;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);display:flex;align-items:center;justify-content:center;font-size:1.5rem;flex-shrink:0}.instructor-info{flex:1}.instructor-name{font-size:.875rem;font-weight:700;color:var(--text-primary);margin-bottom:.25rem}.instructor-department{font-size:.75rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.timeline-quick-actions{display:flex;flex-wrap:wrap;gap:.75rem}.quick-action-btn:hover{color:var(--primary);transform:translateY(-2px)}.item-detail-view{max-width:900px;margin:0 auto}.item-detail-header{margin-bottom:2rem}.item-detail-type-badge{display:inline-block;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;padding:.5rem 1rem;border-radius:20px;font-size:.875rem;font-weight:700;margin-bottom:1rem}.item-detail-title{font-size:2rem;font-weight:900;color:var(--text-primary);margin:0;line-height:1.2}.item-detail-body{display:flex;flex-direction:column;gap:2rem}.item-detail-section{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:16px;padding:2rem}.item-detail-section h3{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0 0 1rem}.item-detail-section h4{font-size:1rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem}.item-detail-description{font-size:1rem;line-height:1.6;color:var(--text-secondary);margin:0 0 1.5rem}.item-detail-meta{display:flex;flex-direction:column;gap:1rem}.meta-row{display:flex;justify-content:space-between;align-items:center;padding:.75rem 0;border-bottom:1px solid rgba(0,0,0,.06)}.meta-row:last-child{border-bottom:none}.meta-label{font-size:.875rem;font-weight:600;color:var(--text-secondary)}.meta-value{font-size:.875rem;font-weight:600;color:var(--text-primary)}.meta-value.status-completed{color:#28a745}.meta-value.status-cancelled{color:#dc3545}.meta-value.status-scheduled{color:#06c}.submission-status-display{display:flex;gap:1.5rem;align-items:center;margin-bottom:1rem}.grade-large{font-size:2.5rem;font-weight:900;color:var(--primary)}.feedback-display{background:#fff;border-radius:12px;padding:1.5rem;margin-top:1rem}.feedback-display h4{margin-bottom:1rem}.feedback-display p{margin:0;font-size:.875rem;line-height:1.6;color:var(--text-primary)}@media (max-width: 768px){.course-detail-page{padding:1rem}.course-detail-header{padding:1.5rem}.course-detail-code{font-size:1.5rem}.course-detail-title{font-size:1.25rem}.course-detail-tabs{overflow-x:auto;scrollbar-width:none}.course-detail-tabs::-webkit-scrollbar{display:none}.overview-stats-grid,.grades-summary{grid-template-columns:1fr}.assignment-grade-card,.assignment-detail-card,.material-card{flex-direction:column;align-items:flex-start}.assignment-grade-left{width:100%}.assignment-grade-right{width:100%;text-align:left}.material-download-btn{width:100%;text-align:center}.timeline-item-card{padding:1rem}.timeline-item-title{font-size:1rem}.timeline-item-metadata{font-size:.7rem}.timeline-item-header-row{flex-direction:column;gap:1rem}.timeline-item-actions{width:100%;justify-content:flex-end}.action-btn{font-size:.625rem;padding:.5rem;min-width:56px}.action-btn-icon{width:20px;height:20px}.expand-btn{font-size:.625rem;padding:.5rem;min-width:56px}.expand-icon{width:20px;height:20px}.quick-action-btn{font-size:.625rem;padding:.5rem;min-width:56px}.quick-action-icon{width:20px;height:20px}.timeline-layout{flex-direction:column;gap:1rem}.timeline-minimap{flex:none;position:relative;top:0;max-height:200px}.minimap-sections{flex-direction:row;overflow-x:auto;gap:1rem}.minimap-week{min-width:100px}}.dashboard-widget{background:#fff;border-radius:16px;box-shadow:0 4px 12px #00000014;overflow:hidden;display:flex;flex-direction:column;border:1px solid #e0e0e0;transition:all .3s ease;height:450px}.widget-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem 1.5rem .75rem;border-bottom:none;background:transparent}.widget-title{font-size:1rem;font-weight:700;color:var(--text-primary);margin:0;text-transform:uppercase;letter-spacing:.05em;font-size:.875rem}.widget-link-btn{background:transparent;border:none;color:var(--primary);font-size:.875rem;font-weight:600;cursor:pointer;transition:all .2s ease;display:flex;align-items:center;gap:.25rem}.widget-link-btn:hover{color:var(--primary-dark);transform:translate(2px)}.widget-body{flex:1;padding:1.5rem;overflow-y:auto;min-height:0}.widget-body.centered{display:flex;flex-direction:column;align-items:center;justify-content:center}.widget-empty{text-align:center;padding:3rem 2rem}.widget-empty-icon{font-size:3rem;margin-bottom:1rem;opacity:.5}.widget-empty-text{font-size:.875rem;color:var(--text-secondary)}.compact-timeline-list{display:flex;flex-direction:column;gap:.75rem}.compact-timeline-item{display:flex;align-items:flex-start;gap:1rem;padding:1rem;background:#f5f7fa;border-radius:12px;cursor:pointer;transition:all .2s ease;border-left:3px solid transparent}.compact-timeline-item:hover{background:#e8eef3}.compact-item-marker{width:12px;height:12px;border-radius:50%;margin-top:4px;flex-shrink:0}.compact-item-marker.lesson{background:var(--primary)}.compact-timeline-item.compact-timeline-item:has(.compact-item-marker.lesson){border-left-color:var(--primary)}.compact-item-marker.assignment{background:#f5576c}.compact-timeline-item.compact-timeline-item:has(.compact-item-marker.assignment){border-left-color:#f5576c}.compact-item-content{flex:1;min-width:0}.compact-item-title{font-size:.875rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem;line-height:1.3;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.compact-item-meta{font-size:.75rem;color:var(--text-secondary);display:flex;flex-wrap:wrap;align-items:center;gap:.5rem}.compact-meta-badge{font-weight:600;color:var(--text-primary)}.gpa-circle-container{position:relative;width:200px;height:200px;margin:2rem auto}.dashboard-widget.grades-widget .gpa-circle-container{width:280px;height:280px}.gpa-circle{width:100%;height:100%;transform:rotate(-90deg)}.gpa-circle-bg{fill:none;stroke:#e0e0e0;stroke-width:10}.gpa-circle-progress{fill:none;stroke:var(--primary);stroke-width:10;stroke-linecap:round;transition:stroke-dasharray .8s ease}.gpa-value-container{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);text-align:center}.gpa-value{font-size:3.5rem;font-weight:900;line-height:1;margin-bottom:.5rem}.gpa-label{font-size:.875rem;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.1em}.gpa-details{width:100%;display:flex;flex-direction:column;gap:1rem;padding:1.5rem;background:#f5f7fa;border-radius:12px}.gpa-detail-item{display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.gpa-detail-label{font-weight:600;color:var(--text-secondary)}.gpa-detail-value{font-weight:700;color:var(--text-primary)}.compact-assignments-list{display:flex;flex-direction:column;gap:.75rem}.compact-assignment-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:#f5f7fa;border-radius:12px;cursor:pointer;transition:all .2s ease;gap:1rem}.compact-assignment-item:hover{background:#e8eef3}.compact-assignment-left{display:flex;align-items:center;gap:1rem;flex:1;min-width:0}.compact-assignment-icon{width:40px;height:40px;background:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;flex-shrink:0}.compact-assignment-info{flex:1;min-width:0}.compact-assignment-title{font-size:.875rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.compact-assignment-meta{font-size:.75rem;color:var(--text-secondary);display:flex;align-items:center;gap:.5rem;flex-wrap:wrap}.compact-assignment-due{color:#fd7e14;font-weight:600}.compact-assignment-right{display:flex;flex-direction:column;align-items:flex-end;gap:.25rem;flex-shrink:0}.compact-assignment-weight{font-size:1.25rem;font-weight:900;color:var(--primary);line-height:1}.compact-assignment-points{font-size:.75rem;color:var(--text-secondary);font-weight:600}.grade-composition-table-container{display:flex;flex-direction:column;gap:2rem}.category-table{background:#fff;border:1px solid #d0d0d0;border-radius:8px;overflow:hidden}.category-table-header{padding:1rem 1.5rem;background:#f8f8f8;border-bottom:2px solid #d0d0d0;display:flex;justify-content:space-between;align-items:center}.category-table-header h4{margin:0;font-size:1rem;font-weight:700;color:var(--text-primary);text-transform:uppercase;letter-spacing:.05em}.category-summary{font-size:.875rem;color:var(--text-secondary);display:flex;gap:.75rem;align-items:center}.assignments-table{width:100%;border-collapse:collapse}.assignments-table thead{background:#fafafa}.assignments-table th{padding:.75rem 1rem;text-align:left;font-size:.75rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid #d0d0d0}.assignments-table tbody tr{border-bottom:1px solid #e8e8e8}.assignments-table tbody tr:last-child{border-bottom:none}.assignments-table tbody tr:hover{background:#fafafa}.assignments-table td{padding:1rem;font-size:.875rem;color:var(--text-primary)}.col-assignment{width:35%;font-weight:600}.col-weight{width:10%;text-align:center}.col-due{width:15%}.col-status{width:12%}.col-score{width:13%;text-align:center}.col-contribution{width:15%;text-align:right;font-weight:600}.status-badge-table{display:inline-block;padding:.25rem .75rem;border-radius:4px;font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.025em;border:1px solid}.status-badge-table.graded{background:#d4edda;color:#155724;border-color:#c3e6cb}.status-badge-table.submitted{background:#cce5ff;color:#004085;border-color:#b8daff}.status-badge-table.overdue{background:#f8d7da;color:#721c24;border-color:#f5c6cb}.status-badge-table.upcoming{background:#fff3cd;color:#856404;border-color:#ffeeba}.grade-composition-layout{display:flex;gap:2rem;align-items:flex-start}.grade-composition-layout .grade-composition-table-container{flex:1;min-width:0}.grade-total-widget{flex:0 0 320px;background:#fff;border:1px solid #d0d0d0;border-radius:16px;overflow:hidden;position:sticky;top:2rem}.grade-total-header{padding:1rem 1.5rem;background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff;border-bottom:2px solid var(--primary-dark)}.grade-total-header h4{margin:0;font-size:1rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em}.grade-total-widget .gpa-circle-container{margin:1.5rem auto}.grade-total-table{padding:0 1rem 1rem}.total-summary-table{width:100%;border-collapse:collapse;border:1px solid #d0d0d0;border-radius:8px;overflow:hidden}.total-summary-table thead{background:#fafafa}.total-summary-table th{padding:.5rem .75rem;text-align:left;font-size:.65rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.025em;border-bottom:1px solid #d0d0d0}.total-summary-table th:first-child{padding-left:.5rem}.total-summary-table th:last-child{text-align:right;padding-right:.5rem}.total-summary-table tbody tr{border-bottom:1px solid #e8e8e8}.total-summary-table tbody tr:last-child{border-bottom:none}.total-summary-table td{padding:.5rem .75rem;font-size:.75rem;color:var(--text-primary)}.total-summary-table td:first-child{padding-left:.5rem}.total-summary-table td:nth-child(2){text-align:center}.total-summary-table td:last-child{text-align:right;font-weight:600;padding-right:.5rem;font-size:.7rem}.total-summary-table .total-row{background:#f8f8f8;font-weight:700;border-top:2px solid #d0d0d0}.total-summary-table .total-row td{font-weight:900;color:var(--primary)}.grade-stats-list{display:flex;flex-direction:column;gap:.75rem;padding:1rem;background:#f5f7fa;margin:0 1rem 1rem;border-radius:8px}.grade-stat-item{display:flex;justify-content:space-between;align-items:center;font-size:.875rem}.stat-item-label{font-weight:600;color:var(--text-secondary)}.stat-item-value{font-weight:700;color:var(--text-primary)}@media (max-width: 1200px){.dashboard-grid{grid-template-columns:1fr}.dashboard-widget{height:300px}.category-table-header{flex-direction:column;align-items:flex-start;gap:.75rem}.assignments-table{font-size:.75rem}.assignments-table th,.assignments-table td{padding:.5rem}.col-assignment{width:40%}.col-weight,.col-due,.col-status,.col-score,.col-contribution{width:auto}.grade-composition-layout{flex-direction:column}.grade-total-widget{flex:none;position:relative;top:0;width:100%}.grade-total-widget .gpa-circle-container{width:160px;height:160px}}.materials-tab-content{display:flex;flex-direction:column;gap:1.5rem}.materials-header-section{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 2px 8px #0000000f}.materials-search-bar{display:flex;gap:1rem;margin-bottom:1rem}.materials-search-input{flex:1;padding:.875rem 1.25rem;border:2px solid #e5e7eb;border-radius:12px;font-size:.938rem;transition:all .2s ease}.materials-search-input:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px #667eea1a}.materials-filter-toggle-btn{padding:.875rem 1.5rem;background:#fff;border:2px solid #e5e7eb;border-radius:12px;font-size:.875rem;font-weight:600;color:var(--text-primary);cursor:pointer;transition:all .2s ease;white-space:nowrap}.materials-filter-toggle-btn:hover{background:#f9fafb;border-color:var(--primary)}.materials-progress-section{padding-top:1rem;border-top:1px solid #e5e7eb}.materials-progress-label{font-size:.875rem;font-weight:600;color:var(--text-secondary);margin-bottom:.75rem}.materials-progress-bar{width:100%;height:12px;background:#e5e7eb;border-radius:6px;overflow:hidden}.materials-progress-fill{height:100%;background:linear-gradient(90deg,var(--primary) 0%,#10b981 100%);transition:width .3s ease;border-radius:6px}.materials-filters-section{background:#fff;border-radius:16px;padding:1.5rem;box-shadow:0 2px 8px #0000000f}.filter-row{display:flex;gap:1.5rem;flex-wrap:wrap}.filter-group{display:flex;align-items:center;gap:.75rem;flex:1;min-width:200px}.filter-label{font-size:.875rem;font-weight:600;color:var(--text-secondary);white-space:nowrap}.filter-select{flex:1;padding:.625rem 1rem;border:2px solid #e5e7eb;border-radius:8px;font-size:.875rem;background:#fff;cursor:pointer;transition:all .2s ease}.filter-select:focus{outline:none;border-color:var(--primary)}.materials-content-area{display:flex;flex-direction:column;gap:2rem}.materials-group{display:flex;flex-direction:column;gap:1rem}.materials-group-header{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem;padding-bottom:.75rem;border-bottom:2px solid #e5e7eb}.material-card-wrapper{animation:fadeInUp .3s ease}@keyframes fadeInUp{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}@media (max-width: 768px){.materials-search-bar,.filter-row{flex-direction:column}.filter-group{width:100%;min-width:unset}}.course-badge{display:inline-block;padding:.25rem .5rem;background:var(--primary);color:#fff;border-radius:6px;font-size:.65rem;font-weight:700;margin-right:.5rem}.page{max-width:1400px;margin:0 auto}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:2rem}.page-title{font-size:2rem;font-weight:700;color:var(--text-primary);margin:0}.page-subtitle{font-size:1rem;color:var(--text-secondary);margin:.5rem 0 0}.weather{display:flex;align-items:center;gap:.5rem;background:#fff;padding:.75rem 1.25rem;border-radius:12px;box-shadow:0 2px 8px var(--shadow)}.weather-icon{font-size:1.5rem}.weather-temp{font-size:1.125rem;font-weight:600;color:var(--text-primary)}.dashboard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px var(--shadow)}.stat-card{background:#fff;border-radius:12px;padding:1.5rem;box-shadow:0 2px 8px var(--shadow);display:flex;align-items:center;gap:1rem}.stat-icon{width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.5rem}.stat-value{font-size:1.75rem;font-weight:700;color:var(--text-primary)}.stat-label{font-size:.875rem;color:var(--text-secondary);margin-top:.25rem}.schedule-card,.deadlines-card,.quick-actions-card,.announcements-card{grid-column:span 2}.card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:1.25rem}.card-title{font-size:1.25rem;font-weight:600;color:var(--text-primary);margin:0}.badge{background:var(--primary);color:#fff;padding:.25rem .75rem;border-radius:20px;font-size:.813rem;font-weight:500}.view-all{color:var(--primary);font-size:.875rem;font-weight:500;text-decoration:none}.view-all:hover{color:var(--primary-dark)}.schedule-list{display:flex;flex-direction:column;gap:1rem}.schedule-item{display:flex;align-items:center;gap:1rem;padding:1rem;background:var(--background);border-radius:8px}.schedule-time{font-weight:600;color:var(--primary);font-size:.875rem;min-width:90px}.schedule-details{flex:1}.schedule-course{font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.schedule-room{font-size:.875rem;color:var(--text-secondary)}.schedule-code{font-weight:600;color:var(--text-secondary);font-size:.875rem}.deadline-list{display:flex;flex-direction:column;gap:1rem}.deadline-item{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--background);border-radius:8px}.deadline-title{font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.deadline-course{font-size:.875rem;color:var(--text-secondary)}.deadline-badge{padding:.375rem .875rem;border-radius:20px;font-size:.813rem;font-weight:500;background:var(--info);color:#fff}.deadline-badge.urgent{background:var(--danger)}.quick-actions{display:grid;grid-template-columns:repeat(2,1fr);gap:.75rem}.action-btn{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--background);border:none;border-radius:8px;cursor:pointer;transition:all .2s ease;font-size:.875rem;font-weight:500;color:var(--text-primary)}.action-btn:hover{background:var(--primary);color:#fff;transform:translateY(-2px);box-shadow:0 4px 12px var(--shadow)}.action-icon{font-size:1.25rem}.announcements-list{display:flex;flex-direction:column;gap:1rem}.announcement-item{display:flex;gap:1rem;padding:1rem;background:var(--background);border-radius:8px}.announcement-icon{font-size:1.5rem}.announcement-content{flex:1}.announcement-title{font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.announcement-text{font-size:.875rem;color:var(--text-secondary);margin-bottom:.5rem}.announcement-time{font-size:.75rem;color:var(--text-light)}@media (max-width: 1200px){.dashboard-grid{grid-template-columns:repeat(2,1fr)}.schedule-card,.deadlines-card,.quick-actions-card,.announcements-card{grid-column:span 2}}@media (max-width: 768px){.dashboard-grid{grid-template-columns:1fr}.stat-card,.schedule-card,.deadlines-card,.quick-actions-card,.announcements-card{grid-column:span 1}.page-header{flex-direction:column;align-items:flex-start;gap:1rem}}.course-selector-wrapper{position:relative;width:100%}.course-selector-header{display:flex;flex-direction:column;gap:.5rem;position:relative}.course-selector-toggle{position:absolute;top:0;right:0;display:flex;align-items:center;gap:.5rem;padding:.75rem 1.25rem;background:#fff;border:2px solid var(--border);border-radius:12px;font-size:.875rem;font-weight:600;color:var(--text-primary);cursor:pointer;transition:all .2s ease}.course-selector-toggle:hover{background:var(--background);border-color:var(--primary);color:var(--primary)}.dropdown-arrow{font-size:.75rem;transition:transform .2s ease}.course-selector-dropdown{position:absolute;top:calc(100% + .5rem);right:0;min-width:400px;max-height:500px;overflow-y:auto;background:#fff;border:1px solid var(--border);border-radius:12px;box-shadow:0 8px 24px #0000001f;z-index:1000;animation:dropdownSlideIn .2s ease}@keyframes dropdownSlideIn{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.course-selector-option{padding:1rem 1.25rem;cursor:pointer;transition:background .15s ease;border-bottom:1px solid var(--border)}.course-selector-option:last-child{border-bottom:none}.course-selector-option:hover{background:#f5f7fa}.course-selector-option.active{background:#e8eef3}.course-option-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.25rem}.course-option-code{font-size:.875rem;font-weight:700;color:var(--primary);text-transform:uppercase}.check-icon{color:var(--primary);font-weight:700}.course-option-title{font-size:.875rem;font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.course-option-meta{font-size:.75rem;color:var(--text-secondary)}.course-selector-divider{height:1px;background:var(--border);margin:.5rem 0}@media (max-width: 768px){.course-selector-toggle{position:static;margin-top:1rem;width:100%}.course-selector-dropdown{right:auto;left:0;width:100%;min-width:unset}}.material-timeline-item{margin-bottom:.75rem;position:relative}.material-timeline-card{flex:1;background:#fff;border-radius:16px;padding:1rem;transition:all .2s ease;border-left:4px solid #10b981}.material-timeline-card.accessed{opacity:.85;background:#f0fdf4}.material-timeline-card:hover{box-shadow:0 8px 20px #0000001f}.material-timeline-header-row{display:flex;justify-content:space-between;align-items:flex-start;gap:1.5rem}.material-timeline-main-content{flex:1;min-width:0}.material-timeline-actions{display:flex;gap:.5rem;flex-shrink:0;align-items:flex-start}.material-timeline-metadata{display:flex;align-items:center;flex-wrap:wrap;gap:.5rem;font-size:.75rem;color:var(--text-secondary);margin-bottom:.75rem;font-weight:500}.material-timeline-type-badge{color:var(--text-primary);font-size:.75rem;font-weight:700;text-transform:uppercase}.material-status-text{font-weight:700;text-transform:uppercase}.material-status-text.required{color:#dc3545}.material-status-text.optional{color:#06c}.material-accessed-badge{color:#10b981;font-weight:700}.meta-separator{color:var(--text-secondary);opacity:.5;margin:0 .25rem}.material-timeline-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin:0;line-height:1.3}.expand-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.75rem;border:none;background:transparent;font-size:.625rem;font-weight:700;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;gap:.375rem;min-width:64px}.expand-btn:hover{color:var(--primary);transform:translateY(-2px)}.expand-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.expand-icon svg{width:100%;height:100%}.material-timeline-expanded{padding-top:.75rem}.material-timeline-description{font-size:.875rem;line-height:1.6;color:var(--text-secondary);margin:0 0 1rem}.material-availability-section{margin-bottom:1rem;padding:.75rem 1rem;background:#f9fafb;border-radius:8px;border:1px solid #e5e7eb}.availability-row{display:flex;align-items:center;gap:.5rem;font-size:.875rem;color:#374151;font-weight:500;margin-bottom:.5rem}.availability-icon{font-size:1.125rem}.availability-text{font-weight:600}.material-meta-info{font-size:.813rem;color:#6b7280;margin-top:.25rem}.material-linked-items{margin-bottom:1rem}.linked-label{font-size:.813rem;color:#6b7280;font-weight:600;margin-bottom:.5rem;display:block}.linked-tags{display:flex;gap:.5rem;flex-wrap:wrap}.linked-tag{padding:.375rem .75rem;background:#dbeafe;color:#1e40af;border-radius:6px;font-size:.75rem;font-weight:600;text-decoration:none;transition:all .2s ease;border:1px solid #93c5fd}.linked-tag:hover{background:#bfdbfe;border-color:#60a5fa}.material-quick-actions{display:flex;flex-wrap:wrap;gap:.75rem}.quick-action-btn{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:.75rem;border:none;background:transparent;font-size:.625rem;font-weight:700;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;gap:.375rem;min-width:64px}.quick-action-btn:hover:not(:disabled){color:var(--primary);transform:translateY(-2px)}.quick-action-btn:disabled{opacity:.4;cursor:not-allowed}.quick-action-btn.primary{color:var(--primary)}.quick-action-btn.primary:hover{color:var(--primary-dark)}.quick-action-icon{width:24px;height:24px;display:flex;align-items:center;justify-content:center}.quick-action-icon svg{width:100%;height:100%}@media (max-width: 768px){.material-timeline-card{padding:1rem}.material-timeline-title{font-size:1rem}.material-timeline-metadata{font-size:.7rem}.material-timeline-header-row{flex-direction:column;gap:1rem}.material-timeline-actions{width:100%;justify-content:flex-end}.expand-btn{font-size:.625rem;padding:.5rem;min-width:56px}.expand-icon{width:20px;height:20px}.quick-action-btn{font-size:.625rem;padding:.5rem;min-width:56px}.quick-action-icon{width:20px;height:20px}}.calendar-page{max-width:100%;padding:0;height:100%;display:flex;flex-direction:column}.calendar-container{background:#fff;border-radius:12px;box-shadow:0 2px 8px var(--shadow);overflow:hidden;display:flex;flex-direction:column;flex:1;min-height:0}.calendar-header{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 2rem;border-bottom:1px solid var(--border);background:var(--surface);height:64px}.calendar-title-section{display:flex;align-items:center;justify-content:flex-start}.calendar-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0}.calendar-navigation{display:flex;align-items:center;gap:.5rem;justify-self:center}.nav-btn{background:transparent;border:1px solid var(--border);color:var(--text-primary);width:36px;height:36px;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease}.nav-btn:hover{background:var(--background);border-color:var(--primary)}.today-btn{background:var(--primary);color:#fff;border:none;padding:.5rem 1rem;border-radius:6px;font-weight:500;cursor:pointer;transition:all .2s ease}.today-btn:hover{background:var(--primary-dark)}.calendar-view-switcher{display:flex;gap:.5rem;background:var(--background);padding:.25rem;border-radius:8px;justify-self:end}.view-btn{background:transparent;border:none;padding:.5rem 1rem;border-radius:6px;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .2s ease}.view-btn.active{background:#fff;color:var(--primary);box-shadow:0 1px 3px #0000001a}.view-btn:hover:not(.active){color:var(--text-primary)}.calendar-content{padding:2rem;flex:1;overflow-y:auto;min-height:0;scrollbar-width:none;-ms-overflow-style:none}.calendar-content::-webkit-scrollbar{display:none}.month-view{width:100%}.weekday-header{display:grid;grid-template-columns:repeat(7,1fr);background:var(--border);border:1px solid var(--border);border-bottom:none}.weekday-label{background:var(--background);padding:.75rem;text-align:center;font-weight:600;font-size:.875rem;color:var(--text-secondary);border-right:1px solid var(--border)}.weekday-label:last-child{border-right:none}.month-grid{display:grid;grid-template-columns:repeat(7,1fr);background:var(--border);border:1px solid var(--border)}.day-cell{background:#fff;min-height:120px;max-height:120px;padding:.5rem;cursor:pointer;transition:all .2s ease;display:flex;flex-direction:column;border-right:1px solid var(--border);border-bottom:1px solid var(--border);overflow:hidden;position:relative}.day-cell:nth-child(7n){border-right:none}.day-cell:hover{background:var(--background)}.day-cell.other-month{background:#fafafa}.day-cell.other-month .day-number{color:var(--text-light)}.day-cell.today{background:#fff8f0}.day-cell.today .day-number{background:var(--primary);color:#fff;width:28px;height:28px;border-radius:50%;display:flex;align-items:center;justify-content:center}.day-number{font-weight:600;font-size:.875rem;color:var(--text-primary);margin-bottom:.5rem;flex-shrink:0}.day-events{display:flex;flex-direction:column;gap:0;flex:1;overflow:hidden;min-height:0}.day-event-badge{padding:2px 0;border-radius:3px;font-size:.75rem;color:var(--text-primary);font-weight:400;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;cursor:pointer;transition:background-color .2s ease;margin:0;line-height:1;display:flex;align-items:center;gap:4px}.day-event-badge:hover{background-color:var(--background)}.day-event-dot{width:6px;height:6px;border-radius:50%;flex-shrink:0}.day-event-badge .day-event-title{overflow:hidden;text-overflow:ellipsis;margin:0;line-height:1;font-weight:400}.day-event-more{font-size:.75rem;color:var(--text-secondary);font-weight:500;margin-top:2px}.event-card{background:#fff;border-left:3px solid var(--primary);border-radius:4px;padding:.75rem;box-shadow:0 1px 3px #0000001a;cursor:pointer;transition:all .2s ease}.event-card:hover{box-shadow:0 2px 8px #00000026;transform:translateY(-1px)}.event-card-time{display:flex;align-items:center;gap:.5rem;font-size:.813rem;color:var(--text-secondary);font-weight:500;margin-bottom:.25rem}.event-icon{font-size:1rem}.event-card-title{font-weight:600;color:var(--text-primary);margin-bottom:.25rem}.event-card-location{font-size:.813rem;color:var(--text-secondary)}.coming-soon{text-align:center;padding:4rem 2rem;color:var(--text-secondary);font-size:1.125rem}.week-view{width:100%}.week-header{display:grid;grid-template-columns:80px repeat(7,1fr);gap:1px;background:var(--border);margin-bottom:1px}.time-column-header{background:var(--background)}.week-day-header{background:var(--background);padding:.75rem;text-align:center;transition:background-color .2s ease}.week-day-header:hover{background:#e8e8e8}.week-day-name{font-size:.75rem;color:var(--text-secondary);font-weight:600;text-transform:uppercase;margin-bottom:.25rem}.week-day-date{font-size:1.25rem;font-weight:700;color:var(--text-primary)}.week-grid-container{display:grid;grid-template-columns:80px 1fr;border:1px solid var(--border);background:#fff;overflow-y:auto;max-height:600px}.week-time-column{border-right:1px solid var(--border)}.time-slot{height:60px;padding:.5rem;font-size:.75rem;color:var(--text-secondary);border-bottom:1px solid var(--border);text-align:right}.week-days-grid{display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border)}.week-day-column{position:relative;background:#fff}.week-day-hours{position:absolute;inset:0}.hour-slot{height:60px;border-bottom:1px solid #f0f0f0}.week-day-events{position:relative;height:100%;pointer-events:none}.week-event{position:absolute;left:2px;right:2px;border-radius:4px;padding:.5rem;color:#fff;font-size:.75rem;overflow:hidden;cursor:pointer;pointer-events:auto;transition:all .2s ease;box-shadow:0 1px 3px #0003}.week-event:hover{transform:scale(1.02);box-shadow:0 2px 8px #0000004d;z-index:10}.week-event-title{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.week-event-location{font-size:.688rem;opacity:.9;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.day-view{width:100%}.day-view-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:var(--background);border-radius:8px;margin-bottom:1.5rem}.day-view-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0}.day-view-count{font-size:.875rem;color:var(--text-secondary);font-weight:500}.day-view-grid{display:grid;grid-template-columns:100px 1fr;border:1px solid var(--border);border-radius:8px;overflow-y:auto;background:#fff;max-height:600px}.day-time-column{border-right:1px solid var(--border);background:var(--background)}.day-time-slot{height:80px;padding:.5rem;border-bottom:1px solid var(--border);display:flex;align-items:flex-start;justify-content:flex-end}.day-time-label{font-size:.813rem;color:var(--text-secondary);font-weight:500}.day-events-column{position:relative}.day-hours-grid{position:absolute;inset:0}.day-hour-slot{height:80px;border-bottom:1px solid #f5f5f5}.day-events-container{position:relative;height:100%;padding:0 .5rem}.day-event{position:absolute;left:.5rem;right:.5rem;border-radius:6px;padding:.75rem;color:#fff;cursor:pointer;transition:all .2s ease;box-shadow:0 2px 4px #0003;overflow:hidden}.day-event:hover{transform:translate(4px);box-shadow:0 4px 12px #0000004d;z-index:10}.day-event-time{font-size:.813rem;font-weight:600;margin-bottom:.5rem;opacity:.95}.day-event-title{font-size:1rem;font-weight:700;margin-bottom:.5rem}.day-event-location{font-size:.813rem;margin-bottom:.25rem;opacity:.9}.day-event-description{font-size:.813rem;opacity:.9;margin-top:.5rem;line-height:1.4}.day-view-empty{text-align:center;padding:4rem 2rem}.empty-icon{font-size:3rem;margin-bottom:1rem}.empty-message{font-size:1.125rem;color:var(--text-secondary);font-weight:500}.agenda-view{width:100%}.agenda-header{display:flex;justify-content:space-between;align-items:center;padding:1.5rem;background:var(--background);border-radius:8px;margin-bottom:1.5rem}.agenda-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin:0}.agenda-count{font-size:.875rem;color:var(--text-secondary);font-weight:500}.agenda-list{display:flex;flex-direction:column;gap:2rem}.agenda-day-section{background:#fff;border-radius:8px;overflow:hidden;box-shadow:0 2px 4px var(--shadow)}.agenda-day-header{padding:1rem 1.5rem;background:var(--background);border-bottom:2px solid var(--border)}.agenda-day-header.today{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);color:#fff}.agenda-day-label{font-size:1.25rem;font-weight:700;margin-bottom:.25rem}.agenda-day-date{font-size:.875rem;opacity:.8}.agenda-day-events{display:flex;flex-direction:column}.agenda-event{display:grid;grid-template-columns:4px 100px 1fr auto;gap:1rem;padding:1.25rem;border-bottom:1px solid var(--border);cursor:pointer;transition:all .2s ease}.agenda-event:last-child{border-bottom:none}.agenda-event:hover{background:var(--background)}.agenda-event-indicator{width:4px;border-radius:2px}.agenda-event-time{display:flex;flex-direction:column;gap:.25rem}.agenda-event-start{font-size:1rem;font-weight:600;color:var(--text-primary)}.agenda-event-duration{font-size:.75rem;color:var(--text-secondary)}.agenda-event-details{flex:1}.agenda-event-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem}.agenda-event-icon{font-size:1.25rem}.agenda-event-title{font-size:1rem;font-weight:600;color:var(--text-primary)}.agenda-event-course{font-size:.813rem;color:var(--text-secondary);background:var(--background);padding:.125rem .5rem;border-radius:4px}.agenda-event-location{font-size:.875rem;color:var(--text-secondary);margin-bottom:.25rem}.agenda-event-description{font-size:.875rem;color:var(--text-secondary);line-height:1.5}.agenda-event-type{display:flex;align-items:center}.type-badge{padding:.25rem .75rem;border-radius:12px;font-size:.75rem;font-weight:600;text-transform:capitalize}.agenda-empty{text-align:center;padding:4rem 2rem;background:#fff;border-radius:8px}.empty-hint{font-size:.875rem;color:var(--text-light);margin-top:.5rem}.event-preview-modal{position:fixed;background:#fff;border-radius:8px;box-shadow:0 4px 16px #00000026;width:320px;z-index:1000;animation:fadeIn .2s ease;overflow:hidden;border:1px solid var(--border)}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.event-preview-header{display:flex;justify-content:space-between;align-items:flex-start;padding:1rem;border-bottom:1px solid var(--border);background:var(--background)}.event-preview-title-row{display:flex;align-items:center;gap:.75rem;flex:1}.event-preview-icon{font-size:1.25rem}.event-preview-title{font-size:1rem;font-weight:700;color:var(--text-primary);margin:0}.event-preview-close{background:transparent;border:none;color:var(--text-secondary);cursor:pointer;padding:.25rem;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.event-preview-close:hover{background:var(--border);color:var(--text-primary)}.event-preview-body{padding:1rem;display:flex;flex-direction:column;gap:.875rem}.event-preview-detail{display:flex;flex-direction:column;gap:.25rem}.event-preview-label{font-size:.688rem;font-weight:600;text-transform:uppercase;color:var(--text-secondary);letter-spacing:.5px}.event-preview-value{font-size:.875rem;color:var(--text-primary);line-height:1.5}.event-preview-type-badge{display:inline-block;padding:.25rem .5rem;border-radius:8px;font-size:.75rem;font-weight:600;text-transform:capitalize}.week-all-day-section{display:grid;grid-template-columns:80px repeat(7,1fr);gap:1px;border:1px solid var(--border);border-bottom:none;background:var(--border)}.week-all-day-label{padding:.5rem;font-size:.75rem;font-weight:600;color:var(--text-secondary);text-align:right;background:var(--background)}.week-all-day-events{grid-column:2 / -1;display:grid;grid-template-columns:repeat(7,1fr);gap:1px;background:var(--border)}.week-all-day-column{background:#fff;padding:.5rem;display:flex;flex-direction:column;gap:4px;min-height:40px;min-width:0}.week-all-day-event{padding:4px 8px;border-radius:4px;color:#fff;font-size:.75rem;font-weight:500;cursor:pointer;transition:opacity .2s ease;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;line-height:1.2}.week-all-day-event:hover{opacity:.9}.day-all-day-section{background:var(--background);padding:1.5rem;border-radius:8px;margin-bottom:1.5rem}.day-all-day-label{font-size:.875rem;font-weight:600;color:var(--text-secondary);margin-bottom:.75rem;text-transform:uppercase;letter-spacing:.5px}.day-all-day-list{display:flex;flex-direction:column;gap:.5rem}.day-all-day-event{padding:.75rem 1rem;border-radius:6px;color:#fff;cursor:pointer;transition:all .2s ease}.day-all-day-event:hover{transform:translate(4px);box-shadow:0 2px 8px #0003}.day-all-day-event-title{font-weight:600;font-size:1rem;margin-bottom:.25rem}.day-all-day-event-location{font-size:.875rem;opacity:.9}@media (max-width: 1024px){.calendar-header{flex-direction:column;gap:1rem;align-items:stretch}.calendar-title-section{justify-content:space-between}.calendar-view-switcher{justify-content:center}.week-grid-container{grid-template-columns:60px 1fr}.time-slot{font-size:.688rem;padding:.25rem}}@media (max-width: 768px){.calendar-content{padding:1rem}.day-cell{min-height:80px;padding:.25rem}.weekday-label{font-size:.75rem;padding:.5rem}.day-number{font-size:.75rem}.day-event-badge{font-size:.688rem;padding:1px 4px}.agenda-event{grid-template-columns:4px 80px 1fr}.agenda-event-type{display:none}.day-view-grid{grid-template-columns:70px 1fr}}.grades-page{max-width:1400px;margin:0 auto;padding:2rem;background:linear-gradient(135deg,#f5f7fa,#e8eef3);min-height:100vh}.grades-header{margin-bottom:2rem}.grades-title{font-size:2.5rem;font-weight:800;color:var(--text-primary);margin:0 0 2rem}.stats-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-bottom:2.5rem}.stat-card-gradient{background:linear-gradient(135deg,#4158d0,#c850c0);border-radius:16px;padding:1.75rem;color:#fff;box-shadow:0 8px 24px #0000001f;transition:transform .3s ease,box-shadow .3s ease}.stat-card-gradient:hover{transform:translateY(-4px);box-shadow:0 12px 32px #0000002e}.stat-card-gradient.blue{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%)}.stat-card-gradient.purple{background:linear-gradient(135deg,#a8edea,#fed6e3);color:var(--text-primary)}.stat-card-gradient.green{background:linear-gradient(135deg,#84fab0,#8fd3f4);color:var(--text-primary)}.stat-card-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.stat-card-label{font-size:.875rem;font-weight:500;opacity:.9}.stat-icon-circle{width:32px;height:32px;background:#fff3;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1rem}.stat-card-value{font-size:3.5rem;font-weight:900;line-height:1;letter-spacing:-.02em}.stat-card-sublabel{font-size:.75rem;opacity:.75;margin-top:.5rem}.courses-section{margin-bottom:2rem}.section-title{font-size:1.5rem;font-weight:700;color:var(--text-primary);margin-bottom:1.5rem}.courses-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem}.course-card{background:#fff;border-radius:16px;padding:1.75rem;box-shadow:0 4px 12px #00000014;border:1px solid #e0e0e0;transition:all .3s ease;cursor:pointer}.course-card:hover{border-color:var(--primary);box-shadow:0 8px 24px #dc354533;transform:translateY(-2px)}.course-card-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:1.25rem}.course-code{font-size:1.25rem;font-weight:700;color:var(--text-primary);transition:color .2s ease}.course-card:hover .course-code{color:var(--primary)}.course-title{font-size:.875rem;color:var(--text-secondary);margin-top:.25rem;line-height:1.4}.ects-badge{background:#e3f2fd;color:#1976d2;padding:.375rem .875rem;border-radius:20px;font-size:.75rem;font-weight:600;white-space:nowrap}.grades-display{background:linear-gradient(135deg,#f5f7fa,#e8eef3);border-radius:12px;padding:1.25rem;margin-bottom:1.25rem}.grades-row{display:flex;align-items:center;justify-content:space-around;gap:1rem}.grade-item{flex:1;text-align:center}.grade-label{font-size:.75rem;font-weight:500;color:var(--text-secondary);margin-bottom:.5rem}.grade-value{font-size:2.5rem;font-weight:900;line-height:1}.grade-value.excellent{color:#28a745}.grade-value.good{color:#5cb85c}.grade-value.average{color:#ffc107}.grade-value.poor{color:#fd7e14}.grade-value.fail{color:#dc3545}.grade-sublabel{font-size:.75rem;color:var(--text-light);margin-top:.25rem}.view-assignments-btn{width:100%;padding:.875rem;background:#f5f7fa;border:none;border-radius:12px;font-size:.875rem;font-weight:600;color:var(--text-secondary);cursor:pointer;transition:all .2s ease;display:flex;align-items:center;justify-content:center;gap:.5rem}.view-assignments-btn:hover{background:#e3f2fd;color:#1976d2}.assignments-modal{position:fixed;inset:0;background:#0009;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:1000;display:flex;align-items:center;justify-content:center;padding:1.5rem}.modal-content{background:#fff;border-radius:24px;max-width:900px;width:100%;max-height:85vh;overflow:hidden;box-shadow:0 24px 48px #0000004d}.modal-header{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-dark) 100%);padding:2rem;color:#fff}.modal-header-content{display:flex;justify-content:space-between;align-items:flex-start}.modal-title{font-size:2rem;font-weight:900;margin:0 0 .25rem}.modal-subtitle{font-size:.875rem;opacity:.9}.modal-close-btn{background:#fff3;border:none;color:#fff;width:40px;height:40px;border-radius:50%;cursor:pointer;transition:background .2s ease;font-size:1.5rem;display:flex;align-items:center;justify-content:center}.modal-close-btn:hover{background:#ffffff4d}.modal-body{padding:2rem;overflow-y:auto;max-height:calc(85vh - 120px);background:#f5f7fa}.assignments-list{display:flex;flex-direction:column;gap:1.25rem}.assignment-card{background:#fff;border-radius:16px;padding:1.75rem;box-shadow:0 2px 8px #0000000f;border:1px solid #e0e0e0;transition:box-shadow .2s ease}.assignment-card:hover{box-shadow:0 4px 16px #0000001f}.assignment-content{display:flex;align-items:flex-start;justify-content:space-between;gap:1.5rem}.assignment-left{flex:1}.assignment-header{display:flex;align-items:flex-start;gap:1rem;margin-bottom:1rem}.assignment-status-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:1.25rem;font-weight:700;flex-shrink:0}.assignment-status-icon.graded{background:#d4edda;color:#28a745}.assignment-status-icon.pending{background:#cce5ff;color:#06c}.assignment-status-icon.not-submitted{background:#f5f7fa;color:#999}.assignment-info{flex:1}.assignment-title{font-size:1.125rem;font-weight:700;color:var(--text-primary);margin:0 0 .5rem}.assignment-meta{display:flex;flex-wrap:wrap;align-items:center;gap:.75rem;font-size:.75rem}.assignment-type-badge{background:#e9d5ff;color:#7c3aed;padding:.25rem .75rem;border-radius:20px;font-weight:600}.assignment-meta-item{color:var(--text-secondary)}.assignment-due{color:#fd7e14;font-weight:600}.assignment-grade-box{background:linear-gradient(135deg,#d4edda,#c3f0ca);border-radius:12px;padding:1.25rem;text-align:center;min-width:120px}.assignment-grade-value{font-size:2.5rem;font-weight:900;line-height:1}.assignment-grade-details{font-size:.75rem;color:var(--text-secondary);margin-top:.5rem}.assignment-grade-percent{font-size:.75rem;font-weight:700;color:#28a745;margin-top:.5rem}.assignment-status-badge{background:#06c;color:#fff;padding:.75rem 1.25rem;border-radius:12px;font-size:.875rem;font-weight:700;box-shadow:0 2px 8px #0066cc4d}.assignment-status-badge.not-submitted{background:#e0e0e0;color:var(--text-secondary);box-shadow:none}.assignment-feedback{margin-top:1.25rem;padding-top:1.25rem;border-top:1px solid #e0e0e0}.feedback-header{display:flex;align-items:center;gap:.5rem;margin-bottom:.75rem}.feedback-label{font-size:.75rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.feedback-content{background:#e3f2fd;padding:1.25rem;border-radius:12px;font-size:.875rem;color:var(--text-primary);line-height:1.6}.empty-state{text-align:center;padding:4rem 2rem}.empty-icon{width:80px;height:80px;background:#f5f7fa;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:2.5rem;margin:0 auto 1.5rem}.empty-title{font-size:1.25rem;font-weight:700;color:var(--text-primary);margin-bottom:.5rem}.empty-text{font-size:.875rem;color:var(--text-secondary)}@media (max-width: 1200px){.stats-grid,.courses-grid{grid-template-columns:repeat(2,1fr)}}@media (max-width: 768px){.stats-grid,.courses-grid{grid-template-columns:1fr}.grades-page{padding:1rem}.stat-card-value{font-size:2.5rem}.modal-body{padding:1rem}.assignment-content{flex-direction:column}.assignment-grade-box{width:100%}}.placeholder-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:500px;background:#fff;border-radius:12px;padding:3rem;box-shadow:0 2px 8px var(--shadow);text-align:center}.placeholder-icon{font-size:5rem;margin-bottom:1.5rem}.placeholder-title{font-size:2rem;font-weight:700;color:var(--text-primary);margin:0 0 1rem}.placeholder-description{font-size:1.125rem;color:var(--text-secondary);margin:0 0 2rem;max-width:500px}.placeholder-badge{background:linear-gradient(135deg,var(--primary) 0%,var(--primary-light) 100%);color:#fff;padding:.75rem 2rem;border-radius:25px;font-weight:600;font-size:.938rem;box-shadow:0 4px 12px var(--shadow)}.top-tab-bar{position:sticky;top:0;z-index:100;background:var(--surface);border-bottom:1px solid var(--border);overflow:hidden;height:52px;-moz-user-select:none;user-select:none;-webkit-user-select:none;touch-action:pan-y}.tab-bar-track{display:flex;align-items:center;height:100%;gap:20px;cursor:grab;will-change:transform}.tab-bar-track:active{cursor:grabbing}.tab-spacer{width:120px;flex-shrink:0}.tab-item{display:flex;align-items:center;justify-content:center;padding:12px 16px;background:none;border:none;cursor:pointer;position:relative;flex-shrink:0;min-width:-moz-fit-content;min-width:fit-content;-webkit-tap-highlight-color:transparent;outline:none}.tab-label{font-size:14px;font-weight:600;text-transform:uppercase;letter-spacing:.5px;line-height:1;white-space:nowrap;transition:color .2s ease;color:var(--text-secondary)}.tab-label.active{color:var(--primary);font-weight:700}.tab-item:has(.active){color:var(--primary)}.swipeable-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;will-change:transform;touch-action:pan-y}.swipeable-content>*{min-height:100%}.global-bottom-nav{position:fixed;bottom:0;left:0;right:0;height:56px;background:var(--surface);border-top:1px solid var(--border);display:flex;justify-content:space-around;align-items:center;padding-bottom:env(safe-area-inset-bottom);z-index:1000;box-shadow:0 -2px 8px var(--shadow)}.nav-item{display:flex;flex-direction:column;align-items:center;gap:2px;padding:8px 12px;text-decoration:none;color:var(--text-secondary);transition:all .2s ease;min-width:60px;flex:1;max-width:80px;-webkit-user-select:none;-moz-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}.nav-item.active{color:var(--primary)}.nav-item .nav-icon{display:flex;align-items:center;justify-content:center;transition:transform .2s ease}.nav-item .nav-icon svg{width:22px;height:22px}.nav-item.active .nav-icon{transform:scale(1.15)}.nav-label{font-size:10px;font-weight:600;text-transform:uppercase;line-height:1;letter-spacing:.3px}.nav-item:active{opacity:.6}.mobile-layout{display:flex;flex-direction:column;height:100vh;overflow:hidden;background:var(--background)}.mobile-content{flex:1;overflow-y:auto;overflow-x:hidden;-webkit-overflow-scrolling:touch;padding-bottom:56px}.swipeable-content{padding-bottom:56px}@media (max-width: 768px){.sidebar{display:none!important}.main-content{margin-left:0!important;padding:0!important}.dashboard-grid{grid-template-columns:1fr!important;gap:1rem!important;padding:16px!important}.dashboard-widget{width:100%!important}.widget-header{padding:.75rem .75rem .375rem!important}.widget-link-btn{font-size:.75rem!important;padding:.25rem .5rem!important}.widget-body{padding:.75rem!important}.dashboard-widget.grades-widget{height:500px!important}.mobile-content{scrollbar-width:none;-ms-overflow-style:none}.mobile-content::-webkit-scrollbar{display:none}.widget-body{scrollbar-width:none!important;-ms-overflow-style:none!important}.widget-body::-webkit-scrollbar{display:none!important}.course-detail-page{padding-top:0!important}.course-detail-tabs,.back-button{display:none!important}.timeline-layout{grid-template-columns:1fr!important}.timeline-minimap{display:none!important}.timeline-main{width:100%!important}.assignments-list{padding:1rem!important}.assignment-detail-card,.assignment-card{width:100%!important}.compact-timeline-item,.compact-assignment-item{padding:.75rem!important}.page{padding-bottom:0!important}.page-header{padding:1rem!important;margin-bottom:0!important}.tab-content{padding:0!important}.course-detail-header{display:flex!important;flex-direction:row!important;align-items:center!important;justify-content:space-between!important;gap:.5rem!important;margin-top:12px!important}.course-selector-wrapper{width:auto!important;flex-shrink:0!important}.course-detail-meta{display:flex!important;flex-direction:column!important;align-items:flex-end!important;gap:.25rem!important;font-size:.75rem!important}.course-selector-header{flex-direction:column!important;align-items:flex-start!important;gap:.5rem!important}.course-detail-code,.course-detail-title{display:inline!important;margin-right:.5rem!important}.course-selector-toggle{position:relative!important;font-size:.75rem!important;margin-top:.5rem!important;width:auto!important;flex-shrink:0!important;padding:.375rem .75rem!important}button,.nav-link,.tab-item{min-height:44px!important}.page-title{font-size:1.5rem!important}.page-subtitle{font-size:.875rem!important}.timeline-item-card{margin-bottom:.75rem!important}.timeline-item-title{font-size:.95rem!important}.timeline-item-metadata{font-size:.7rem!important;flex-wrap:wrap!important}.timeline-item-header-row{flex-direction:row!important;align-items:flex-start!important;gap:1rem!important}.timeline-item-actions{width:auto!important;flex-shrink:0!important}.assignments-table{font-size:.8rem!important}.assignments-table th,.assignments-table td{padding:.5rem .25rem!important}@media (max-width: 480px){.col-contribution{display:none!important}}.materials-content-area{padding:1rem!important}.course-selector-dropdown{max-height:60vh!important}}@media (max-width: 768px) and (orientation: landscape){.mobile-header{height:50px!important}.top-tab-bar{height:42px!important}.global-bottom-nav{height:48px!important}}
