.home-container{background-color:#fafafa;padding:1.25rem}.class-status-card{box-shadow:0 4px 15px #0000000a;margin-bottom:1.5rem;padding:.75rem}.card-label{background-color:#fff;border-radius:12px;box-shadow:0 2px 8px #0000000f;color:#666;font-size:.75rem;font-weight:500;left:16px;padding:.25rem .75rem;position:absolute;top:-10px}.class-content{padding-top:1.25rem}.section-label{font-size:.75rem;font-weight:500;margin-bottom:.75rem}.program-header{align-items:center;margin-bottom:1.5rem;padding:0 .5rem}.program-icon-container{align-items:center;background-color:#000;border-radius:12px;color:#fff;display:flex;flex-shrink:0;font-size:1rem;font-weight:700;height:50px;justify-content:center;margin-right:1rem;position:relative;width:50px}.program-code{letter-spacing:.05em}.semester-badge{box-shadow:0 1px 3px #0000001a;font-size:.7rem;font-weight:700;height:20px;width:20px}.program-details{flex:1 1}.program-name{color:#333;font-size:1.1rem;font-weight:600;margin:0 0 .25rem}.section-label{color:#666;font-size:.85rem}.semester-progress{margin-bottom:1.5rem;padding:0 .5rem}.progress-header{margin-bottom:1rem}.progress-label,.progress-percentage{font-size:.85rem}.progress-bar-wrapper{position:relative}.progress-track{border-radius:2px;margin-bottom:1.5rem}.progress-fill{background-color:#000;border-radius:2px}.milestones{justify-content:space-between;margin-top:-1.5rem}.milestone{width:60px}.milestone-dot{height:12px;margin-bottom:8px;transition:background-color .3s ease;width:12px}.milestone-dot.active{background-color:#000}.milestone-label{font-size:.75rem;text-align:center}.cr-info{margin:0 .5rem;padding:.75rem .5rem}.cr-avatar{background-color:#eee;border-radius:50%;margin-right:.75rem;overflow:hidden}.cr-label{color:#666;font-size:.7rem}.cr-name{color:#333;font-size:.9rem}.navigation-section{margin-bottom:1.5rem}.navigation-section .section-label{color:#666;font-size:.85rem;margin-bottom:.75rem;margin-left:.5rem}.navigation-tiles{grid-gap:.75rem;gap:.75rem;grid-template-columns:1fr}.nav-tile{align-items:center;border-radius:14px;box-shadow:0 4px 12px #0000000a;padding:1.25rem;transition:all .2s ease}.nav-tile:hover{box-shadow:0 6px 16px #0000000f;transform:translateY(-2px)}.tile-icon{background-color:#f9f9f9;border-radius:12px;color:#000;height:48px;margin-right:1rem;width:48px}.tile-icon svg{height:22px;width:22px}.tile-content h2{font-size:1.1rem;margin:0 0 .25rem}.tile-content p{font-size:.85rem}.creator-credit{color:#888;font-family:monospace;font-size:.75rem;margin-top:auto;padding:.75rem 0;text-align:center}.semester-timeline-section{box-shadow:0 4px 15px #0000000a;margin-bottom:2rem;padding:1.5rem 1rem}.semester-timeline-section .section-label{color:#333;font-size:.9rem;font-weight:500;margin-bottom:1.25rem;margin-left:.5rem}.timeline-container{padding-left:2rem}.timeline-line{left:10px}.timeline-event{margin-bottom:1.5rem;padding-bottom:.5rem;transition:all .3s ease}.timeline-event:last-child{margin-bottom:0}.timeline-dot{background-color:#eee;border:2px solid #fff;height:16px;left:-2rem;top:.25rem;transition:all .3s ease;width:16px;z-index:1}.timeline-event.past .timeline-dot{background-color:#000}.timeline-event.today .timeline-dot{background-color:#000;box-shadow:0 0 0 4px #0000001a;transform:scale(1.2)}.timeline-content{padding-left:.5rem}.timeline-date{color:#666;font-size:.8rem;margin-bottom:.2rem}.timeline-title{color:#333;font-size:.95rem}.timeline-event.past .timeline-title{color:#000}.timeline-event.today .timeline-title{color:#000;font-weight:600}@media (min-width:600px){.navigation-tiles{grid-template-columns:repeat(2,1fr)}}@media (max-width:480px){.home-container{gap:20px;padding:16px 12px}.class-status-card{border-radius:12px;margin-bottom:16px;padding:16px}.program-header{gap:12px;margin-bottom:20px}.program-icon-container{height:44px;width:44px}.program-name{font-size:18px}.section-label{font-size:14px}.navigation-tiles{gap:12px}.nav-tile{padding:14px}.tile-icon{height:36px;margin-right:12px;width:36px}.tile-content h2{font-size:16px}.tile-content p{font-size:12px}}@media (max-width:360px){.home-container{padding:12px 8px}.program-name{font-size:16px}.section-label{font-size:12px}.nav-tile{padding:12px}.tile-icon{height:32px;width:32px}}body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,Fira Sans,Droid Sans,Helvetica Neue,sans-serif;margin:0}code{font-family:source-code-pro,Menlo,Monaco,Consolas,Courier New,monospace}.App{margin:0 auto;max-width:100%;overflow-x:hidden;padding-bottom:20px}.App-header{align-items:center;background-color:var(--color-white);box-shadow:var(--shadow-sm);color:var(--color-text);display:flex;justify-content:space-between;padding:.75rem 1rem;position:sticky;top:0;width:100%;z-index:10}.App-header h1{font-size:1.5rem;font-weight:500;margin:0}.app-title{cursor:default;margin-left:0;overflow:hidden;text-align:center;text-overflow:ellipsis;white-space:nowrap}.login-button{margin-left:auto;white-space:nowrap}.login-button,button{background-color:var(--color-primary);border:none;border-radius:4px;color:var(--color-white);cursor:pointer;font-size:.9rem;padding:.5rem 1rem}main{max-width:100%;overflow-x:hidden;padding:1rem;width:100%}.deliverables-list{display:flex;flex-direction:column;gap:.75rem;width:100%}.empty-deliverables{color:var(--color-text-secondary);padding:32px 16px;text-align:center}.empty-deliverables p{font-size:.9rem;margin-top:8px}@media (min-width:768px){.App{max-width:800px}}.deliverables-actions,.deliverables-container{max-width:100%;width:100%}@media (max-width:480px){.App-header h1{font-size:1.3rem}.app-header-content{justify-content:space-between}main{padding:.75rem}}.session-error{background-color:#f8f9fa;border:1px solid #e0e0e0;border-radius:var(--border-radius);box-shadow:var(--shadow-sm);margin:2rem auto;max-width:500px;padding:2rem;text-align:center}.session-error h3{color:var(--color-warning);font-size:1.2rem;margin-bottom:1rem}.session-error p{color:var(--color-text);font-size:.95rem;margin-bottom:1.5rem}.session-error button{background-color:var(--color-primary);border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.9rem;margin-top:.5rem;padding:.75rem 1.5rem;transition:background-color .2s ease}.loading{color:var(--color-text-secondary);font-size:1.1rem;padding:2rem;text-align:center}.modal-backdrop{padding:10px;z-index:100}.modal-content{background-color:var(--color-white);border-radius:var(--border-radius);box-shadow:var(--shadow-md);max-width:520px;overflow-x:hidden}.modal-content h2{color:var(--color-text);font-size:1.2rem;font-weight:500}.form-group{margin-bottom:16px;width:100%}label{color:var(--color-text);display:block;font-size:.9rem;font-weight:500;margin-bottom:8px}.form-input,.form-select,.form-textarea{background-color:var(--color-white);border:1px solid var(--color-border);color:var(--color-text);font-size:.95rem;max-width:100%}.form-input:focus,.form-select:focus,.form-textarea:focus{border-color:var(--color-border);outline:none}.deliverable-form .form-group,.deliverable-form .form-row{margin-bottom:16px;width:100%}.deliverable-form .form-row{grid-gap:16px;display:grid;gap:16px;grid-template-columns:1fr 1fr}.deliverable-form label{color:var(--color-text);display:block;font-size:.9rem;font-weight:500;margin-bottom:8px}.deliverable-form .form-input,.deliverable-form .form-select,.deliverable-form .form-textarea{background-color:var(--color-white);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text);font-size:.95rem;max-width:100%;padding:10px 12px;width:100%}.deliverable-form .form-input:focus,.deliverable-form .form-select:focus,.deliverable-form .form-textarea:focus{border-color:var(--color-border);outline:none}.deliverable-form .form-textarea{min-height:120px;resize:vertical}.file-upload{border:1px dashed var(--color-border);border-radius:4px;padding:16px;text-align:center;transition:all .2s ease;width:100%}.file-upload-label{color:var(--color-text-secondary);display:flex;flex-direction:column}.file-input{height:0;opacity:0;position:absolute;width:0}.file-info{color:var(--color-text-secondary);font-size:.85rem;margin-top:12px;word-break:break-word}.file-info .uploading{color:var(--color-primary);font-weight:500;padding-left:20px;position:relative}.file-info .uploading:before{animation:spin 1s linear infinite;border:2px solid var(--color-primary);border-radius:50%;border-top:2px solid #0000;content:"";height:12px;left:0;margin-top:-6px;position:absolute;top:50%;width:12px}.loading-select{background-color:var(--color-hover);border:1px solid var(--color-border);color:var(--color-text-secondary);width:100%}.error-message{background-color:var(--color-warning-bg);border-radius:4px;color:var(--color-warning);padding:12px;word-break:break-word}.form-actions{width:100%}.btn-primary{background-color:var(--color-primary);color:var(--color-white);font-size:.9rem}.btn-secondary{background-color:var(--color-hover);border:1px solid var(--color-border);color:var(--color-text);font-size:.9rem}.success-message{background-color:#d5f5e3;color:#2ecc71}.success-message,.warning-message{border-radius:4px;font-size:.9rem;margin-top:16px;padding:12px}.warning-message{background-color:#fef5e7;color:#f39c12}.view-deliverable-modal{max-width:520px;width:100%}.view-deliverable-header{margin-bottom:24px}.view-deliverable-header h2{margin-bottom:8px}.deliverable-meta-tags{display:flex;flex-wrap:wrap;gap:12px}.attachment-tag,.submitter-tag{align-items:center;background-color:#f1f3f4;border-radius:16px;color:#5f6368;display:inline-flex;font-size:.8rem;gap:6px;padding:4px 8px}.detail-grid,.view-deliverable-details{margin-bottom:24px}.detail-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(auto-fill,minmax(200px,1fr))}.detail-item{display:flex;flex-direction:column}.detail-label{color:#5f6368;font-size:.85rem;margin-bottom:4px}.detail-value{font-weight:500}.view-deliverable-attachments h3,.view-deliverable-description h3{border-bottom:1px solid #f0f0f0;font-size:1.1rem;margin-bottom:12px;padding-bottom:8px}.view-deliverable-description{margin-bottom:24px}.attachments-list{list-style:none;padding:0}.attachment-item{align-items:center;display:flex;gap:8px;margin-bottom:8px}.attachment-icon{color:#5f6368}.attachment-link{color:var(--color-primary);text-decoration:none}.modal-actions{display:flex;gap:12px;justify-content:flex-end}.debug-info{font-size:.8rem;margin-top:10px}.debug-info details{margin-top:5px}.debug-info summary{color:#666;cursor:pointer}.debug-info pre{background-color:#f8f8f8;border-radius:4px;font-family:monospace;font-size:.7rem;line-height:1.3;margin-top:5px;overflow-x:auto;padding:10px;white-space:pre-wrap}.checkbox-container{align-items:center;display:flex;margin-bottom:16px}.checkbox-label{align-items:center;cursor:pointer;display:flex;-webkit-user-select:none;user-select:none}.checkbox-input{cursor:pointer;height:18px;margin-right:8px;width:18px}.checkbox-text{font-size:.95rem}.recurrence-options{background-color:#1a73e80d;border-left:3px solid var(--color-primary);border-radius:4px;margin-bottom:16px;padding:10px}.radio-label{align-items:center;cursor:pointer;display:flex;margin-bottom:8px}.radio-label input[type=radio]{cursor:pointer;margin-right:8px}.radio-text{font-size:.95rem}.mobile-modal-backdrop{align-items:flex-end;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;opacity:1;position:fixed;right:0;top:0;transition:opacity var(--animation-speed-normal) var(--ease-out-cubic);z-index:1000}.mobile-modal-backdrop.closing{opacity:0}.mobile-modal-container{animation:slide-up var(--animation-speed-normal) var(--ease-out-cubic) forwards;background-color:#fff;border-top-left-radius:12px;border-top-right-radius:12px;display:flex;flex-direction:column;max-height:90vh;overflow:hidden;transform:translateY(0);transition:transform var(--animation-speed-normal) var(--ease-out-cubic);width:100%}@keyframes slide-up{0%{transform:translateY(100%)}to{transform:translateY(0)}}.mobile-modal-container.closing{transform:translateY(100%)}.mobile-modal-container.full-height{height:90vh}.mobile-modal-header{align-items:center;background-color:#fff;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px}.mobile-modal-back-button{align-items:center;background:none;border:none;color:#333;cursor:pointer;display:flex;padding:0}.mobile-modal-title{color:#333;flex:1 1;font-size:1.1rem;font-weight:600;margin:0;text-align:center}.mobile-modal-spacer{width:24px}.mobile-modal-content{-webkit-overflow-scrolling:touch;flex:1 1;overflow-y:auto;padding:16px}.mobile-modal-footer{background-color:#fff;border-top:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px}.mobile-modal-footer button{flex:1 1;margin:0 8px}.mobile-modal-footer button:first-child{margin-left:0}.mobile-modal-footer button:last-child{margin-right:0}.modal-backdrop{align-items:center;animation:fade-in var(--animation-speed-normal) var(--ease-out-cubic) forwards;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:1000}@keyframes fade-in{0%{opacity:0}to{opacity:1}}.modal-content{animation:scale-in var(--animation-speed-normal) var(--ease-out-cubic) forwards;background-color:#fff;border-radius:8px;box-shadow:0 4px 12px #00000026;max-height:90vh;max-width:90%;overflow-y:auto;padding:24px;transform-origin:center center;width:100%}@keyframes scale-in{0%{opacity:0;transform:scale(.95)}to{opacity:1;transform:scale(1)}}.form-modal{max-width:520px;width:100%}.modal-content h2{color:#333;font-size:1.5rem;margin-bottom:24px;margin-top:0}.form-group,.form-row{margin-bottom:20px}.form-row{display:flex;gap:16px}.form-row .form-group{flex:1 1;margin-bottom:0}.form-group label{color:#333;display:block;font-weight:500;margin-bottom:8px}.form-input,.form-select,.form-textarea{border:1px solid #ddd;border-radius:4px;font-size:1rem;padding:10px 12px;width:100%}.form-textarea{min-height:100px;resize:vertical}.form-actions{display:flex;gap:12px;justify-content:flex-end;margin-top:24px}.btn-primary{background-color:#000;border:none;border-radius:4px;color:#fff}.btn-primary,.btn-secondary{cursor:pointer;font-weight:500;padding:10px 16px}.btn-secondary{background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;color:#333}.error-message{color:#e53935;font-size:.9rem;margin-top:16px}.file-upload{margin-top:8px}.file-upload-label{align-items:center;background-color:#f5f5f5;border:1px solid #ddd;border-radius:4px;color:#333;cursor:pointer;display:inline-flex;font-size:.9rem;gap:8px;padding:8px 12px}.file-input{display:none}.file-info{color:#666;font-size:.9rem;margin-top:8px}.uploading{color:#1a73e8}.loading-select{background-color:#f9f9f9;border:1px solid #ddd;border-radius:4px;color:#666;font-size:.9rem;padding:10px 12px}.bottom-sheet-backdrop{align-items:flex-end;background-color:#0000;bottom:0;display:flex;justify-content:center;left:0;opacity:0;pointer-events:none;position:fixed;right:0;top:0;transition:background-color var(--animation-speed-slow) var(--ease-out-cubic);z-index:1000}.bottom-sheet-backdrop.visible{background-color:#0006;opacity:1;pointer-events:auto}.bottom-sheet{background-color:#fff;border-top-left-radius:12px;border-top-right-radius:12px;box-shadow:0 -2px 10px #0000001a;display:flex;flex-direction:column;max-height:70vh;max-width:500px;overflow:hidden;transform:translateY(100%);transition:transform var(--animation-speed-slow) var(--ease-out-cubic);width:100%}.bottom-sheet.visible{transform:translateY(0)}.bottom-sheet-header{align-items:center;background-color:#fff;border-bottom:1px solid #f0f0f0;display:flex;justify-content:space-between;padding:16px;position:relative}.bottom-sheet-title{color:#333;flex:1 1;font-size:1rem;font-weight:600;text-align:center}.bottom-sheet-cancel,.bottom-sheet-done{background:#0000;border:none;color:#666;cursor:pointer;font-size:.9rem;padding:4px 8px}.bottom-sheet-done{color:#000;font-weight:500}.bottom-sheet-content{-webkit-overflow-scrolling:touch;flex:1 1;overflow-y:auto;padding:8px 0}.option-list{display:flex;flex-direction:column;width:100%}.option-item{align-items:center;background:#0000;border:none;border-bottom:1px solid #f5f5f5;color:#333;cursor:pointer;display:flex;font-size:1rem;justify-content:space-between;padding:16px;text-align:left;transition:background-color .2s}.option-item:last-child{border-bottom:none}.option-item.selected{font-weight:500}.check-icon{color:#000;margin-left:8px}.deliverable-card{background-color:#fff;border:1px solid #f0f0f0;border-radius:12px;box-shadow:0 1px 3px #00000014;margin-bottom:16px;max-width:800px;overflow:hidden;width:100%}.deliverable-card-header{align-items:center;border-bottom:1px solid #0000;cursor:pointer;display:flex;justify-content:space-between;padding:14px 16px;width:100%}.deliverable-card.expanded .deliverable-card-header{border-bottom-color:#f0f0f0}.deliverable-icon-title{align-items:center;display:flex;flex:1 1;gap:10px;min-width:0;overflow:hidden}.type-icon{align-items:center;color:#555;display:flex;flex-shrink:0}.deliverable-title{color:#333;flex-shrink:1;font-size:.95rem;font-weight:500;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.deliverable-meta{color:#777;flex-shrink:0;gap:12px}.attachment-icon,.deliverable-meta,.submitter-icon{align-items:center;display:flex}.deadline-date{font-size:.8rem}.expand-button{align-items:center;background:none;border:none;color:#777;cursor:pointer;display:flex;padding:0}.deliverable-card-content{word-wrap:break-word;color:#444;font-size:.9rem;overflow-wrap:break-word;padding:16px;word-break:break-word}.detail-row{display:flex;flex-wrap:wrap;margin-bottom:8px}.detail-label{color:#555;flex-shrink:0;font-weight:500;width:100px}.detail-value{flex:1 1;min-width:0;overflow-wrap:break-word}.detail-description{word-wrap:break-word;border-top:1px solid #f0f0f0;line-height:1.5;margin-top:16px;overflow-wrap:break-word;padding-top:12px}.detail-description h3{color:#333;font-size:1.1rem;font-weight:500;margin-bottom:12px}.detail-description p{margin-bottom:12px}.detail-description ul{list-style-type:disc;margin-bottom:16px;margin-left:20px}.detail-description li{margin-bottom:8px;padding-left:4px}.detail-attachments{border-top:1px solid #f0f0f0;margin-top:16px;padding-top:12px}.detail-attachments h4{color:#555;font-size:.9rem;margin-bottom:8px}.detail-attachments ul{list-style:none;padding:0}.detail-attachments li{align-items:center;display:flex;gap:6px;margin-bottom:6px}.detail-attachments a,.detail-attachments li{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word}.detail-attachments a{color:#1a73e8;text-decoration:none}.small-icon{color:#777;flex-shrink:0}.admin-actions{border-top:none;display:flex;flex-wrap:wrap;gap:8px;margin-top:0;padding-top:0}.delete-button,.edit-button{border-radius:4px;cursor:pointer;font-size:.8rem;padding:6px 12px}.delete-button{background-color:#fce8e6;border:1px solid #fad2cf;color:#ea4335}.date-group{margin-bottom:24px;width:100%}.date-header{border-bottom:1px solid #eee;color:#5f6368;font-size:.9rem;font-weight:500;margin-bottom:12px;padding-bottom:6px}.date-header.past{color:#80868b}.deliverables-section{margin-bottom:32px;width:100%}.section-title{color:#202124;font-size:1.1rem;font-weight:500;margin-bottom:16px}.past-section .section-title{color:#5f6368}.no-deliverables-message{color:#80868b;font-size:.9rem;padding:16px;text-align:center}.deliverables-actions{display:flex;justify-content:space-between;margin-bottom:16px;width:100%}.filter-toggle-btn{background-color:#f1f3f4;border:1px solid #dadce0;border-radius:4px;color:#5f6368;font-size:.85rem;padding:8px 16px;width:100%}.filter-toggle-btn.active{background-color:#e8f0fe;border-color:#d2e3fc;color:#1a73e8}.add-deliverable-btn{background-color:#1a73e8;border:none;border-radius:4px;color:#fff;font-size:.85rem;padding:8px 16px}@media (max-width:480px){.deliverable-meta{gap:8px}.deadline-date{font-size:.75rem}.detail-label{width:80px}.detail-label,.detail-value{font-size:.85rem}.creator-tag-small{font-size:.7rem;padding:1px 6px}.deliverable-icon-title{flex-wrap:wrap;gap:6px}}.deliverable-actions{align-items:center;border-top:1px solid #f0f0f0;display:flex;justify-content:space-between;margin-top:16px;max-width:800px;padding-top:16px;width:100%}@media (max-width:480px){.delete-button,.edit-button,.share-button,.view-button{align-items:center;background-color:#f1f3f4;border:1px solid #dadce0;border-radius:4px;color:#202124;display:flex;font-size:.75rem;gap:6px;padding:6px 8px}.action-buttons-left,.action-buttons-right{display:flex;gap:4px}.delete-button svg,.edit-button svg,.share-button svg,.view-button svg{flex-shrink:0;height:16px;width:16px}.delete-button span,.edit-button span,.share-button span,.view-button span{line-height:1}}.share-button,.view-button{align-items:center;border-radius:4px;cursor:pointer;display:flex;font-size:.8rem;gap:6px;padding:6px 12px;position:relative}.view-button{background-color:#f1f3f4;border:1px solid #dadce0;color:#202124}.share-button{background-color:#e8f0fe;border:1px solid #d2e3fc;color:#1a73e8}.share-confirmation{animation:fadeInOut 2s ease-in-out;background-color:#323232;border-radius:4px;color:#fff;font-size:.75rem;left:50%;padding:4px 10px;position:absolute;top:-30px;transform:translateX(-50%);white-space:nowrap}.creator-tag-small{align-items:center;color:#666;display:flex;font-size:.75rem;margin-left:10px;max-width:150px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.creator-icon{height:12px;margin-right:4px;width:12px}.creator-tag{align-items:center;background-color:#f1f3f4;border-radius:16px;color:#5f6368;display:inline-flex;font-size:.8rem;gap:6px;padding:4px 8px}.creator-row{color:#666}.creator-value{font-weight:500}@media (max-width:600px){.creator-tag-small{display:none}}@keyframes fadeInOut{0%{opacity:0;transform:translateX(-50%) translateY(10px)}20%{opacity:1;transform:translateX(-50%) translateY(0)}80%{opacity:1;transform:translateX(-50%) translateY(0)}to{opacity:0;transform:translateX(-50%) translateY(-5px)}}.share-button-active{background-color:#e8f4e8!important;border-color:#b5d6b5!important;color:#2c7a2c!important}.share-tooltip{animation:fadeInOut 2s ease-in-out;background:#333;border-radius:4px;box-shadow:0 2px 8px #0003;color:#fff;font-size:.85rem;left:50%;padding:6px 12px;position:absolute;top:-40px;transform:translateX(-50%);white-space:nowrap;z-index:10}.mobile-form{padding:16px}.mobile-form-group{margin-bottom:24px}.mobile-form-label{color:#333;display:block;font-size:.95rem;font-weight:600;margin-bottom:10px}.mobile-form-input,.mobile-form-select,.mobile-form-textarea{-webkit-tap-highlight-color:transparent!important;appearance:none;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 2px #00000008;color:#333;font-size:1rem;padding:14px 16px;width:100%}.mobile-form-input:focus,.mobile-form-select:focus,.mobile-form-textarea:focus{border-color:#e2e8f0;box-shadow:none;outline:none}.mobile-select-button{-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none;align-items:center;appearance:none!important;-webkit-appearance:none!important;-moz-appearance:none!important;background:#fff;border:1px solid #e2e8f0;border-radius:10px;box-shadow:0 1px 2px #00000008;color:#333;display:flex;font-size:1rem;justify-content:space-between;outline:none;padding:14px 16px;position:relative;text-align:left;-webkit-user-select:none;user-select:none;width:100%}.mobile-select-button:after{display:none}.mobile-select-button:active{background-color:#00000005}.mobile-segmented-control{-webkit-tap-highlight-color:transparent!important;background:#f8fafc;border:1px solid #e2e8f0;border-radius:10px;display:flex;gap:4px;padding:4px}.mobile-segmented-option{-webkit-tap-highlight-color:transparent!important;-webkit-touch-callout:none;background:none;border:none;border-radius:8px;color:#666;flex:1 1;font-size:1rem;outline:none;padding:12px 16px;-webkit-user-select:none;user-select:none}.mobile-segmented-option.active{-webkit-tap-highlight-color:transparent;background:#fff;box-shadow:0 1px 3px #00000008;color:#333;font-weight:500}.admin-management,.course-management{max-width:100%;overflow-x:hidden;padding:1rem 0;width:100%}.section-header{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:1.5rem;width:100%}.section-header h2{color:var(--color-text);font-size:1.3rem;font-weight:500;margin:0}.data-table{-webkit-overflow-scrolling:touch;background-color:var(--color-white);border-collapse:collapse;border-radius:var(--border-radius);box-shadow:var(--shadow-sm);display:block;margin-bottom:2rem;overflow:hidden;overflow-x:auto;width:100%}.data-table td,.data-table th{border-bottom:1px solid var(--color-border);padding:12px 15px;text-align:left;white-space:normal;word-break:break-word}.data-table th{background-color:#f8f9fa;color:var(--color-text);font-weight:500;position:sticky;top:0;z-index:1}.data-table tr:last-child td{border-bottom:none}.action-buttons{display:flex;flex-wrap:wrap;gap:8px}.action-buttons button{font-size:.8rem;padding:.25rem .5rem;white-space:nowrap}button.delete{background-color:var(--color-warning-bg);border:1px solid var(--color-warning-bg);color:var(--color-warning)}.current-user{background-color:#f8f9fa}.checkbox-group{align-items:center;display:flex}.checkbox-group input[type=checkbox]{margin-right:.5rem;width:auto}.admin-form .form-group{margin-bottom:16px;width:100%}.admin-form label{display:block;font-weight:500;margin-bottom:8px}.admin-form input,.admin-form select{border:1px solid var(--color-border);border-radius:4px;padding:8px 12px;width:100%}@media (max-width:767px){.section-header{align-items:flex-start;flex-direction:column}.section-header button{width:100%}.data-table{font-size:.9rem}.data-table td,.data-table th{padding:10px 12px}.action-buttons{flex-direction:column;gap:5px}.action-buttons button{width:100%}}.filters-container{background-color:var(--color-white);border:1px solid var(--color-border);border-radius:var(--border-radius);box-shadow:var(--shadow-sm);margin-bottom:1rem;max-width:100%;overflow:hidden;padding:1rem;width:100%}.filters-header{align-items:center;display:flex;flex-wrap:wrap;gap:10px;justify-content:space-between;margin-bottom:1rem;width:100%}.filters-header h3{color:var(--color-text);font-size:1.1rem;font-weight:500;margin:0}.reset-button{background-color:var(--color-hover);border:1px solid var(--color-border);border-radius:4px;color:var(--color-text-secondary);font-size:.8rem;padding:.3rem .75rem;white-space:nowrap}.filters-grid{grid-gap:1rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fill,minmax(200px,1fr));width:100%}.filter-group{display:flex;flex-direction:column;width:100%}.filter-group label{color:var(--color-text-secondary);font-size:.9rem;font-weight:500;margin-bottom:.5rem}.filter-group select{background-color:var(--color-white);border:1px solid var(--color-border);border-radius:4px;font-size:.9rem;max-width:100%;padding:.5rem;width:100%}.filter-group select:focus{border-color:var(--color-primary);outline:none}@media (max-width:600px){.filters-grid{grid-template-columns:1fr}.filters-header{align-items:flex-start;flex-direction:column}.reset-button{margin-top:8px;text-align:center;width:100%}}@media (max-width:480px){.filters-container{padding:12px}}.hamburger-button{align-items:center;background:#0000;border:none;border-radius:4px;color:var(--color-text);cursor:pointer;display:flex;flex-shrink:0;justify-content:center;margin-left:2px;margin-right:16px;padding:8px}.drawer{-webkit-overflow-scrolling:touch;background-color:#fff;bottom:0;box-shadow:0 0 10px #0000001a;display:flex;flex-direction:column;left:0;max-width:280px;overflow-x:hidden;overflow-y:auto;position:fixed;top:0;transform:translateX(-100%);transition:transform .3s ease;width:75%;z-index:1000}.drawer.open{transform:translateX(0)}.drawer-overlay{background-color:#00000080;bottom:0;left:0;position:fixed;right:0;top:0;z-index:999}.drawer-header{border-bottom:1px solid var(--color-border);justify-content:flex-end;padding:16px}.close-drawer,.drawer-header{align-items:center;display:flex}.close-drawer{background:#0000;border:none;color:var(--color-text-secondary);cursor:pointer;justify-content:center;padding:4px}.user-info{border-bottom:1px solid var(--color-border);gap:12px;overflow:hidden;padding:16px}.user-avatar,.user-info{align-items:center;display:flex}.user-avatar{background-color:#111;border-radius:50%;color:#fff;flex-shrink:0;font-size:1.2rem;font-weight:500;height:40px;justify-content:center;width:40px}.user-details{display:flex;flex-direction:column;overflow:hidden}.username{color:var(--color-text);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.role{color:var(--color-text-secondary);font-size:.8rem}.drawer-nav{border-top:1px solid var(--color-border);display:flex;flex:1 1;flex-direction:column;overflow-x:hidden;overflow-y:auto;padding:0 0 16px}.nav-item{align-items:center;background:#0000;border:none;color:var(--color-text);cursor:pointer;display:flex;font-size:.95rem;gap:12px;overflow:hidden;padding:12px 16px;text-align:left;transition:background-color .2s ease;width:100%}.nav-item.active{background-color:#0000000d;border-left:3px solid #111;color:#111;padding-left:13px}.nav-item.add-item{color:var(--color-primary);margin-bottom:8px;padding-left:32px}.nav-item.logout{color:var(--color-warning);margin-top:auto}.drawer-footer{border-top:1px solid var(--color-border);font-size:.8rem;padding:16px}.drawer-auth,.drawer-footer{color:var(--color-text-secondary);text-align:center}.drawer-auth{padding:24px 16px}.app-header-content{align-items:center;display:flex;width:100%}.header-right{align-items:center;display:flex;margin-left:auto;margin-right:10px}.app-title{margin-left:auto;margin-right:auto}@supports (padding:max(0px)){.drawer{padding:max(16px,env(safe-area-inset-top)) max(16px,env(safe-area-inset-right)) max(16px,env(safe-area-inset-bottom)) max(16px,env(safe-area-inset-left))}}@media (max-width:480px){.drawer{max-width:260px;width:80%}.nav-item{font-size:.9rem;padding:10px 14px}.user-avatar{font-size:1rem;height:36px;width:36px}}.header-center{align-items:center;display:flex;gap:12px;margin-left:auto;margin-right:auto}.header-logo{height:38px;margin-right:4px;position:relative;top:1px;width:38px}.drawer-login-button{background-color:#111;border:none;border-radius:4px;color:#fff;cursor:pointer;font-size:.9rem;margin:16px 0;padding:.75rem 1.5rem;transition:background-color var(--transition-speed) ease;width:100%}.drawer-auth{padding:8px 16px}.markdown-editor-container{background:#fff;border:1px solid #e2e8f0;border-radius:8px;overflow:hidden;width:100%}.markdown-toolbar{background-color:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;flex-wrap:wrap;gap:4px;padding:8px;width:100%}.markdown-toolbar button{align-items:center;background-color:#fff;border:1px solid #e2e8f0;border-radius:6px;color:#64748b;cursor:pointer;display:inline-flex;flex-shrink:0;font-size:.875rem;height:32px;justify-content:center;min-width:32px;padding:0 8px;transition:all .2s}.markdown-toolbar button:active{background-color:#e2e8f0}.markdown-toolbar button.preview-toggle{background-color:#f8fafc;color:#0f172a;margin-left:auto}.markdown-toolbar button.preview-toggle.active{background-color:#e2e8f0;border-color:#cbd5e1;color:#fff}.markdown-textarea{border:none;color:#0f172a;font-family:inherit;font-size:.875rem;line-height:1.5;max-height:400px;min-height:150px;padding:12px;resize:vertical;width:100%}.markdown-textarea:focus{outline:none}.markdown-preview{background-color:#fff;color:#0f172a;font-size:.875rem;line-height:1.5;max-height:400px;min-height:150px;overflow-wrap:break-word;overflow-x:hidden;overflow-y:auto;padding:12px;width:100%;word-break:break-word}.markdown-preview h1,.markdown-preview h2,.markdown-preview h3{font-weight:500;margin-bottom:.5em;margin-top:1em}.markdown-preview h1{font-size:1.5rem}.markdown-preview h2{font-size:1.3rem}.markdown-preview h3{font-size:1.1rem}.markdown-preview p{margin-bottom:1em}.markdown-preview ol,.markdown-preview ul{margin-bottom:1em;margin-left:20px;padding-left:20px}.markdown-preview li{margin-bottom:.5em}.markdown-preview blockquote{border-left:4px solid #e0e0e0;color:#757575;font-style:italic;margin-left:0;padding-left:16px}.markdown-help{background-color:#f8f9fa;border-top:1px solid var(--color-border);color:var(--color-text-secondary);font-size:.8rem;padding:8px}@media (max-width:600px){.markdown-toolbar{flex-wrap:wrap;gap:3px;padding:6px}.markdown-toolbar button{font-size:.8rem;height:28px;min-width:28px;padding:0 6px}.markdown-help{display:none}}@media (max-width:640px){.mobile-markdown-editor-container{background:#fff;border-radius:12px;overflow:hidden}.mobile-markdown-toolbar{-webkit-overflow-scrolling:touch;background-color:#f8fafc;border-bottom:1px solid #e2e8f0;display:flex;gap:2px;overflow-x:auto;padding:8px;scrollbar-width:none}.mobile-markdown-toolbar::-webkit-scrollbar{display:none}.mobile-markdown-toolbar button{align-items:center;background-color:#fff;border:1px solid #e2e8f0;border-radius:8px;color:#64748b;display:flex;flex:0 0 auto;font-size:1rem;height:36px;justify-content:center;min-width:36px;padding:0}.mobile-markdown-toolbar button.mobile-preview-toggle{background-color:#f8fafc;color:#0f172a;margin-left:auto;padding:0 12px}.mobile-markdown-toolbar button.mobile-preview-toggle.active{background-color:#e2e8f0;border-color:#cbd5e1}.mobile-markdown-textarea{border:none;width:100%}.mobile-markdown-preview,.mobile-markdown-textarea{color:#0f172a;font-size:1rem;line-height:1.5;min-height:120px;padding:12px}}.markdown-content{word-wrap:break-word;line-height:1.5;overflow-wrap:break-word;width:100%;word-break:break-word}.markdown-content h1,.markdown-content h2,.markdown-content h3{font-weight:500;margin-bottom:.5em;margin-top:1em}.markdown-content h1{font-size:1.5rem}.markdown-content h2{font-size:1.3rem}.markdown-content h3{font-size:1.1rem}.markdown-content p{margin-bottom:1em}.markdown-content ol,.markdown-content ul{margin-bottom:1em;margin-left:20px;padding-left:20px}.markdown-content li{margin-bottom:.5em}.markdown-content blockquote{border-left:4px solid #e0e0e0;color:#757575;font-style:italic;margin-left:0;padding-left:16px}.markdown-content a{color:var(--color-primary);text-decoration:none}.markdown-content a:hover{text-decoration:underline}.markdown-content img{border-radius:4px;display:block;height:auto;margin:1em 0;max-width:100%}@media (max-width:600px){.markdown-content h1{font-size:1.3rem}.markdown-content h2{font-size:1.2rem}.markdown-content h3{font-size:1rem}}.progress-track{border-radius:3px;height:6px!important;margin:24px 0 36px;overflow:visible}.marker-dot{box-shadow:0 1px 2px #0000000d;height:12px;transform:translateY(-50%);transition:all .2s ease;width:12px;z-index:2}.marker-dot.active{box-shadow:0 1px 3px #0003}.marker-label{font-size:12px;margin-top:16px}.today-indicator{flex-direction:column;transform:translate(-50%,-50%);z-index:3}.today-pulse{animation:pulse 2s infinite;border:2px solid #fff;box-shadow:0 0 0 4px #0000001a;height:12px;width:12px}.today-label{color:#111;font-weight:600;position:absolute;top:-24px;white-space:nowrap}.vertical-timeline-section{background-color:#fff;border-radius:16px;box-shadow:0 2px 8px #0000000f;margin-bottom:24px;padding:28px 24px}.vertical-timeline{height:320px;margin-left:16px;padding:24px 0;position:relative}.timeline-track{background:linear-gradient(180deg,#111 0,#111 50%,#e8e8e8 0,#e8e8e8);background:linear-gradient(to bottom,#111 0,#111 var(--progress,50%),#e8e8e8 var(--progress,50%),#e8e8e8 100%);border-radius:1px;bottom:0;left:0;position:absolute;top:0;width:2px}.timeline-checkpoint{display:flex;flex-direction:column;justify-content:center;min-height:40px;padding-left:32px;position:absolute;transform:translateY(-50%)}.timeline-checkpoint:nth-child(2){top:0}.timeline-checkpoint:nth-child(3){top:33.3%}.timeline-checkpoint:nth-child(4){top:66.6%}.timeline-checkpoint:nth-child(5){top:100%}.today-checkpoint{display:flex;flex-direction:column;justify-content:center;min-height:40px;padding-left:32px;position:absolute;transform:translateY(-50%);z-index:5}.checkpoint-connector{background-color:#e8e8e8;height:2px;left:0;position:absolute;top:50%;transform:translateY(-50%);transition:background-color .3s ease;width:24px}.checkpoint-dot{background-color:#fff;border:2px solid #ddd;border-radius:50%;height:12px;left:0;position:absolute;top:50%;transform:translate(-6px,-50%);transition:all .3s ease;width:12px;z-index:2}.checkpoint-content{display:flex;flex-direction:column;gap:4px}.checkpoint-date{color:#777;font-size:13px}.checkpoint-title{color:#333;font-size:15px;font-weight:500}.timeline-checkpoint.past .checkpoint-dot{background-color:#111;border-color:#111}.timeline-checkpoint.past .checkpoint-connector{background-color:#111}.timeline-checkpoint.current .checkpoint-dot{background-color:#111;border-color:#111;box-shadow:0 0 0 4px #1111111a;height:14px;transform:translate(-7px,-50%);width:14px}.timeline-checkpoint.current .checkpoint-title{color:#111;font-weight:600}.today-checkpoint .checkpoint-dot.today-dot{animation:pulse 2s infinite;background-color:#555;border-color:#555;box-shadow:0 0 0 4px #5555551a}.today-checkpoint .checkpoint-title.today-title{color:#555;font-weight:600}@media (min-width:768px){.vertical-timeline{height:360px;margin-left:24px}.timeline-checkpoint{padding-left:48px}.checkpoint-connector{width:40px}.progress-track{margin:30px 0 42px}.marker-label{font-size:14px;margin-top:20px}}@media (max-width:480px){.vertical-timeline-section{border-radius:12px;padding:20px 16px}.vertical-timeline{height:280px;margin-left:12px;padding:16px 0}.timeline-checkpoint{padding-left:24px}.checkpoint-connector{width:18px}.checkpoint-title{font-size:14px}.checkpoint-date{font-size:12px}.progress-track{height:4px!important;margin:20px 0 32px}.marker-dot{height:10px;width:10px}.marker-label{font-size:10px;margin-top:14px}.today-pulse{height:10px;width:10px}.today-label{font-size:10px;top:-20px}.milestone-markers{overflow:visible}}@media (max-width:360px){.vertical-timeline{height:240px;margin-left:10px}.timeline-checkpoint{padding-left:20px}.checkpoint-connector{width:16px}.checkpoint-title{font-size:13px}.checkpoint-date{font-size:11px}.marker-label{font-size:9px}}.class-status-card{background:#fff;border-radius:20px;box-shadow:0 2px 8px #0000000f;margin-bottom:20px;padding:24px}.program-header{display:flex;gap:20px;margin-bottom:28px}.program-icon{background:#111;border-radius:14px;height:56px;width:56px}.program-icon span{color:#fff;font-size:16px;font-weight:600}.semester-badge{background:#fff;bottom:-6px;box-shadow:0 2px 4px #0000001a;color:#111;font-size:13px;height:22px;right:-6px;width:22px}.header-content{display:flex;flex-direction:column;gap:6px}.program-title{color:#111;font-size:24px;margin:0}.section-text{color:#666;font-size:16px}.cr-badge{background:#f5f5f5;border-radius:100px;color:#666;display:inline-flex;font-size:14px;margin-top:4px;padding:6px 12px}.semester-status{display:flex;flex-direction:column;gap:12px}.status-header{align-items:center;color:#666;display:flex;font-size:16px;justify-content:space-between}.progress-percent{color:#111;font-weight:600}.timeline-wrapper{padding:0 4px}.timeline{display:flex;flex-direction:column;gap:8px}.progress-fill{background:#111;left:0;position:absolute;top:0}.timeline-dates{font-size:14px}@media (min-width:768px){.class-status-card{padding:28px}.program-icon{height:64px;width:64px}.program-title{font-size:28px}.section-text{font-size:18px}.program-header{margin-bottom:36px}}@media (max-width:480px){.class-status-card{border-radius:16px;padding:20px 16px}.program-header{gap:12px;margin-bottom:24px}.program-icon{border-radius:12px;height:48px;width:48px}.semester-badge{font-size:12px;height:20px;width:20px}.program-title{font-size:20px}.section-text{font-size:14px}.cr-badge{font-size:12px;padding:4px 10px}.status-header{font-size:14px}.timeline-dates{font-size:12px}}.semester-progress-minimal{margin-top:8px}.progress-header{font-size:13px;margin-bottom:16px}.progress-label{color:#555;font-weight:500}.progress-percentage{color:#111;font-weight:600}.minimal-timeline{padding:0 4px;position:relative}.timeline-line{background-color:#eee;border-radius:2px;height:4px;margin-bottom:32px;overflow:visible;position:relative}.timeline-progress{border-radius:2px;height:100%;left:0;transition:width .5s ease}.today-indicator{top:50%;transform:translateY(-50%);z-index:2}.today-pulse{background-color:#111;box-shadow:0 0 0 2px #fff;height:10px;position:relative;width:10px}.today-pulse,.today-pulse:after{border-radius:50%;transform:translate(-50%,-50%)}.today-pulse:after{animation:pulse 2s infinite;background-color:#0000001a;content:"";height:18px;left:50%;position:absolute;top:50%;width:18px}@keyframes pulse{0%{opacity:.8;transform:translate(-50%,-50%) scale(.5)}70%{opacity:0;transform:translate(-50%,-50%) scale(1.2)}to{opacity:0;transform:translate(-50%,-50%) scale(1.2)}}.milestone-markers{height:100%;left:0;position:absolute;top:0;width:100%}.milestone-marker{align-items:center;display:flex;flex-direction:column;position:absolute;top:0;transform:translateX(-50%)}.marker-dot{background-color:#fff;border:2px solid #ddd;height:8px;margin-bottom:8px;position:relative;top:-2px;transition:all .3s ease;width:8px}.marker-dot.active{background-color:#111;border-color:#111}.marker-label{color:#555;font-size:11px;font-weight:500;position:relative;top:8px;white-space:nowrap}.timeline-dates{color:#777;font-size:11px;margin-top:4px}@media (max-width:480px){.class-status-card{padding:20px}.card-header{margin-bottom:20px}.program-name{font-size:16px}.section-and-cr{align-items:flex-start;flex-direction:column;font-size:12px;gap:4px}.marker-label{font-size:10px}}.semester-timeline{margin-top:8px}.timeline-header{align-items:center;display:flex;justify-content:space-between;margin-bottom:16px}.timeline-label{color:#666;font-size:14px}.progress-value{color:#111;font-size:14px;font-weight:600}.timeline-container{padding:0 8px}.timeline-track{background:#eee;border-radius:2px;height:4px;margin-bottom:24px;position:relative}.progress-bar{background:#111;border-radius:2px;height:100%;left:0;position:absolute;top:0;transition:width .3s ease}.today-marker{top:50%;transform:translate(-50%,-50%)}.marker-dot{background:#111;border:2px solid #fff;border-radius:50%;box-shadow:0 1px 3px #0003;height:10px;width:10px}.milestone-dots{height:100%;left:0;position:absolute;top:0;width:100%}.milestone-dot{background:#fff;border:2px solid #ddd;top:50%;transform:translate(-50%,-50%)}.milestone-dot.active{background:#111;border-color:#111}.dot-label{color:#666;font-size:12px;left:50%;position:absolute;text-transform:capitalize;top:16px;transform:translateX(-50%);white-space:nowrap}.timeline-dates{color:#666;display:flex;font-size:13px;justify-content:space-between}@media (max-width:480px){.class-status-card{padding:20px}.program-details{align-items:flex-start;flex-direction:column;gap:4px}.cr-info,.progress-value,.section-label,.timeline-label{font-size:13px}.dot-label{font-size:11px}}.schedule-page{background-color:#fff;display:flex;flex-direction:column;height:100vh;padding:24px}.date-navigator,.header-container{margin-bottom:24px}.header-container{align-items:baseline;display:flex;width:100%}.month-title{color:#111;font-size:24px;font-weight:600;white-space:nowrap}.dates-grid-container{gap:4px;width:100%}.dates-grid-container,.week-nav-button{align-items:center;display:flex;justify-content:center}.week-nav-button{background:#0000;border:none;color:#666;cursor:pointer;font-size:20px;height:100%;opacity:.6;padding:8px;transition:opacity .2s ease}.week-nav-button:hover{opacity:1}.dates-grid{background:#fff;border:1px solid #eaeaea;border-radius:24px;flex:1 1;padding:8px}.date-button,.dates-grid{display:flex;justify-content:center}.date-button{align-items:center;background:#0000;border:none;border-radius:20px;cursor:pointer;flex:1 1;flex-direction:column;min-height:72px;min-width:48px;padding:12px 24px;position:relative}.date-button:hover{background-color:#fafafa}.date-button.selected{background-color:#f5f5f5}.today-dot{background:#111;height:4px;position:absolute;top:2px;width:4px}.day-name{color:#666;font-size:12px;margin-bottom:4px;text-transform:uppercase}.day-number{color:#111;font-size:15px;font-weight:500}.schedule-header{border-bottom:1px solid #eaeaea;margin-bottom:24px;padding:16px 0}.schedule-title-row{align-items:center;display:flex;gap:8px}.date-text{color:#111;font-size:18px;font-weight:500;line-height:1}.reset-button{align-items:center;background:#0000;border:none;color:#666;cursor:pointer;display:flex;font-size:16px;height:24px;justify-content:center;margin-top:1px;opacity:.6;padding:0;width:24px}.reset-button:hover{opacity:1}.schedule-content{background:#fff;border:1px solid #eaeaea;border-radius:12px;flex:1 1;overflow-y:auto;padding:24px}.events-container{display:flex;flex-direction:column;gap:16px}.event-row{align-items:flex-start;display:flex;gap:24px}.event-time-indicator{color:#666;flex-shrink:0;font-size:13px;padding-top:16px;text-align:right;width:80px}.event-card{background:#fff;border:1px solid #eaeaea;border-radius:12px;flex-grow:1;padding:16px;transition:all .2s ease}.event-card:hover{border-color:#ddd;box-shadow:0 2px 4px #00000008}.event-content{display:flex;flex-direction:column;gap:8px}.event-title{color:#111;font-size:15px}.event-location,.event-time{color:#666;font-size:13px}.event-course{color:#1a73e8;font-size:12px;margin-top:4px}.time-gap{align-items:center;display:flex;margin:8px 0;padding:8px 0 8px 104px}.gap-line{background:#eaeaea;flex-grow:1;height:1px;margin-right:12px}.gap-duration{color:#999;flex-shrink:0;font-size:12px}.loading-indicator{color:#666;font-size:14px;text-align:center}.error-message{background-color:#ffebee;border-radius:8px;color:#c62828;font-size:14px;margin:20px 0;padding:16px}.no-events-message{color:#666;font-size:14px;font-style:italic;padding:40px;text-align:center}.add-event-button{align-items:center;background-color:var(--color-primary);border-radius:28px;bottom:24px;box-shadow:0 2px 10px #0003;color:#fff;cursor:pointer;display:flex;font-size:24px;height:56px;justify-content:center;position:fixed;right:24px;transition:transform .2s ease,background-color .2s ease;width:56px;z-index:10}.add-event-button:hover{background-color:var(--color-primary-hover);transform:scale(1.05)}.event-actions{display:flex;gap:8px;margin-top:12px}.edit-button{background-color:#f1f3f4;border:1px solid #dadce0;border-radius:4px;color:#202124;cursor:pointer;font-size:.8rem;padding:4px 10px}.edit-button:hover{background-color:#e8eaed}.edit-options{border-top:1px solid var(--color-border);margin-top:16px;padding-top:16px}.radio-group{display:flex;flex-direction:column;gap:8px;margin-top:8px}.checkbox-label,.radio-label{align-items:center;cursor:pointer;display:flex;font-size:.9rem;gap:8px}.checkbox-label input[type=checkbox],.radio-label input[type=radio]{margin:0}@media (max-width:768px){.schedule-page{padding:16px}.header-container{margin-bottom:16px}.month-title{font-size:22px;line-height:1.2}.dates-grid-container{-webkit-overflow-scrolling:touch;margin:0 -16px;overflow-x:auto;padding:0 16px}.dates-grid{min-width:min-content;width:100%}.date-button{min-height:64px;padding:10px 16px}.date-text{font-size:16px}.schedule-content{padding:16px}.event-row{gap:16px}.event-time-indicator{width:70px}.time-gap{padding-left:86px}.add-event-button{bottom:16px;font-size:20px;height:48px;right:16px;width:48px}.checkbox-label,.radio-label{font-size:.85rem}}@media (max-width:480px){.schedule-page{padding:12px}.month-title{font-size:20px}.dates-grid-container{margin:0 -12px;padding:0 12px}.date-button{min-height:60px;min-width:40px;padding:8px 12px}.day-name{font-size:11px}.day-number{font-size:14px}.date-text{font-size:15px}.schedule-content{padding:12px}.event-row{gap:12px}.event-time-indicator{font-size:12px;width:60px}.time-gap{padding-left:72px}.event-title{font-size:14px}.event-location,.event-time{font-size:12px}.gap-duration{font-size:11px}}.floating-action-button{align-items:center;background-color:#111;border:none;border-radius:50%;bottom:2rem;box-shadow:0 4px 8px #0003;color:#fff;cursor:pointer;display:flex;height:56px;justify-content:center;position:fixed;right:2rem;transition:transform var(--animation-speed-fast) var(--ease-out-cubic),box-shadow var(--animation-speed-fast) var(--ease-out-cubic),background-color var(--animation-speed-fast) var(--ease-out-cubic);width:56px;z-index:100}.floating-action-button:active{transform:scale(.95)}.floating-action-button svg{height:24px;width:24px}.fab-backdrop{align-items:center;background-color:#00000080;bottom:0;display:flex;justify-content:center;left:0;position:fixed;right:0;top:0;z-index:999}.fab-menu{animation:fab-menu-appear var(--animation-speed-normal) var(--ease-out-cubic) forwards;background-color:#fff;border-radius:8px;bottom:6rem;box-shadow:0 4px 12px #00000026;overflow:hidden;position:fixed;right:2rem;width:250px}@keyframes fab-menu-appear{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}.fab-backdrop{animation:fade-in var(--animation-speed-normal) var(--ease-out-cubic) forwards}.fab-menu-header{align-items:center;border-bottom:1px solid var(--color-border);display:flex;justify-content:space-between;padding:12px 16px}.fab-menu-header h3{color:var(--color-text);font-size:1rem;font-weight:500;margin:0}.fab-close{align-items:center;background:none;border:none;color:var(--color-text-secondary);cursor:pointer;display:flex;font-size:1.2rem;justify-content:center;padding:4px}.fab-menu-options{max-height:60vh;overflow-y:auto;padding:8px 0}.fab-option{background:none;border:none;color:var(--color-text);cursor:pointer;font-size:.95rem;overflow:hidden;padding:12px 16px;position:relative;text-align:left;transition:background-color var(--animation-speed-fast) var(--ease-out-cubic);width:100%}.fab-option:active:after{animation:ripple var(--animation-speed-normal) var(--ease-out-cubic) forwards;background-color:#0000000d;border-radius:50%;content:"";height:100px;left:50%;opacity:1;position:absolute;top:50%;transform:translate(-50%,-50%) scale(0);width:100px}@keyframes ripple{to{opacity:0;transform:translate(-50%,-50%) scale(3)}}@media (max-width:600px){.floating-action-button{bottom:1.5rem;height:48px;right:1.5rem;width:48px}.fab-menu{bottom:5rem;right:1.5rem;width:220px}}.analytics-dashboard{background-color:#fafafa;border-radius:8px;padding:24px;width:100%}.analytics-header{align-items:center;display:flex;flex-wrap:wrap;gap:16px;justify-content:space-between;margin-bottom:24px}.analytics-header h2{font-size:1.5rem;font-weight:600;margin:0}.date-range-selector{align-items:center;display:flex;gap:12px}.date-range-selector label{margin-bottom:0;white-space:nowrap}.date-range-selector select{background-color:#fff;border:1px solid #e0e0e0;border-radius:4px;padding:8px 12px}.refresh-button{align-items:center;background-color:#f5f5f5;border:1px solid #e0e0e0;border-radius:4px;color:#333;cursor:pointer;display:flex;height:32px;justify-content:center;transition:all .2s ease;width:32px}.refresh-button:hover{background-color:#e0e0e0}.analytics-grid{grid-gap:24px;display:grid;gap:24px;grid-template-columns:repeat(auto-fill,minmax(400px,1fr));width:100%}.analytics-card{background-color:#fff;border-radius:8px;box-shadow:0 2px 4px #0000000d;overflow:hidden;padding:20px}.analytics-card h3{border-bottom:1px solid #f0f0f0;color:#333;font-size:1.1rem;font-weight:500;margin:0 0 16px;padding-bottom:12px}.chart-container{height:300px;width:100%}.no-data-message{align-items:center;color:#999;display:flex;font-style:italic;height:100%;justify-content:center;padding:20px;text-align:center}.metrics-grid{grid-gap:16px;display:grid;gap:16px;grid-template-columns:repeat(2,1fr)}.metric-card{background-color:#f9f9f9;border-radius:8px;box-shadow:0 1px 2px #0000000d;padding:16px;text-align:center}.metric-value{color:#333;font-size:1.8rem;font-weight:600;margin-bottom:8px}.metric-label{color:#666;font-size:.85rem}.loading-indicator{align-items:center;display:flex;flex-direction:column;justify-content:center;padding:40px;width:100%}.loading-spinner{animation:spin 1s linear infinite;border:3px solid #f3f3f3;border-radius:50%;border-top-color:#333;height:40px;margin-bottom:16px;width:40px}.loading-message{color:#666}@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}@media (max-width:768px){.analytics-dashboard{padding:16px}.analytics-grid{grid-template-columns:1fr}.analytics-header{align-items:flex-start;flex-direction:column}.date-range-selector{width:100%}.date-range-selector select{flex:1 1}}*{box-sizing:border-box;margin:0;padding:0}body,html{-webkit-text-size-adjust:none;background-color:#f8f9fa;color:#333;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;overflow-x:hidden;width:100%}.home-container{background-color:#f8f9fa;display:flex;flex-direction:column;gap:10px;max-width:100%;min-height:100vh;padding:10px}.class-status-card{background-color:#fff;border-radius:16px;box-shadow:0 1px 3px #00000014;padding:18px 18px 18px 20px;position:relative}.compact-header{display:flex;flex-direction:column;gap:16px}.icon-and-info{align-items:center;display:flex;gap:12px}.icon-wrapper{flex-shrink:0;margin-left:2px;position:relative}.program-icon{background-color:#111;border-radius:12px;color:#fff;font-size:14px;height:48px;width:48px}.program-icon,.semester-badge{align-items:center;display:flex;font-weight:600;justify-content:center}.semester-badge{background-color:#fff;border-radius:50%;bottom:-4px;box-shadow:0 1px 2px #0000001a;color:#000;font-size:10px;height:18px;position:absolute;right:-4px;width:18px}.header-content{flex:1 1;min-width:0}.program-title{color:#222;font-size:16px;font-weight:600;margin:0 0 4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.meta-info{color:#666;display:flex;flex-wrap:wrap;font-size:12px;gap:8px}.cr-badge,.section-text{align-items:center;background-color:#eee;border-radius:4px;display:flex;font-size:11px;font-weight:500;gap:4px;line-height:1.4;padding:2px 6px}.meta-icon{color:#777;flex-shrink:0}.inline-progress{align-items:center;display:flex;gap:10px;margin-bottom:6px;margin-top:12px}.cr-info{background-color:#f8f8f8;border:1px solid #eaeaea;border-radius:10px;gap:18px;margin-top:26px;padding:14px 18px}.cr-icon{background-color:#fff;border-radius:50%;box-shadow:0 1px 3px #0000001a;color:#333;flex-shrink:0;padding:10px}.cr-text{color:#444;font-size:15px;font-weight:500;line-height:1.3}.progress-bar{background-color:#e9e9e9;flex:1 1;height:6px;overflow:hidden}.progress-bar,.progress-fill{border-radius:3px}.progress-text{color:#444;font-size:12px;font-weight:600;text-align:right;width:30px}.mini-timeline{margin-bottom:12px;margin-top:6px;padding:0 24px}.milestone-track{height:42px;padding-top:18px;position:relative}.milestone-track:before{background-color:#e9e9e9;content:"";right:0}.milestone-progress,.milestone-track:before{height:2px;left:0;position:absolute;top:18px}.milestone-progress{background-color:#111;z-index:1}.milestone{width:30px}.milestone-dot{background-color:#e9e9e9;border:2px solid #fff;left:50%;margin-bottom:6px;position:absolute;top:-4px;transform:translateX(-50%);z-index:2}.milestone-label{font-size:10px;position:relative;top:10px}.today-marker{flex-direction:column;transform:translateX(-50%);z-index:3}.today-dot{background-color:#333;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 2px #0000001a;height:8px;margin-bottom:6px;width:8px}.today-label{font-size:9px}.semester-progress{padding:0 12px}.progress-header{display:flex;justify-content:space-between;margin-bottom:14px}.progress-label{color:#666;font-size:14px}.progress-percentage{color:#333;font-size:14px;font-weight:500}.progress-bar-wrapper{padding:0 12px}.progress-track{background-color:#eee;border-radius:4px;height:4px;margin-bottom:28px;overflow:hidden;position:relative}.progress-track:after,.progress-track:before{content:"";height:100%;position:absolute;top:0;width:12px;z-index:1}.progress-track:before{background:linear-gradient(90deg,#fafafa,#0000);left:0}.progress-track:after{background:linear-gradient(270deg,#fafafa,#0000);right:0}.progress-fill{background-color:#111;border-radius:4px;height:100%}.milestones{display:flex;height:40px;position:relative}.milestone{align-items:center;display:flex;flex-direction:column;gap:8px;position:absolute;transform:translateX(-50%)}.milestone-dot{background-color:#ddd;border-radius:50%;height:8px;transition:background-color .2s ease;width:8px}.milestone-dot.active{background-color:#111}.milestone-label{color:#666;font-size:12px;font-weight:500;white-space:nowrap}.cr-info{background-color:#f9f9f9;border-radius:12px;gap:16px;padding:16px}.cr-avatar,.cr-info{align-items:center;display:flex}.cr-avatar{flex-shrink:0;height:40px;justify-content:center;opacity:.85;width:40px}.cr-details{display:flex;flex-direction:column;gap:6px}.cr-label{color:#777;font-size:12px}.cr-name{color:#222;font-size:15px;font-weight:600}.navigation-section{padding:0}.section-heading{color:#444;font-size:16px;font-weight:600;margin-bottom:12px;padding-left:2px}.navigation-tiles{grid-gap:10px;display:grid;gap:10px;grid-template-columns:1fr 1fr}.nav-tile{align-items:flex-start;background-color:#fff;border-radius:16px;box-shadow:0 1px 3px #00000014;cursor:pointer;display:flex;gap:12px;padding:18px;transition:transform .15s ease,box-shadow .15s ease}.nav-tile:active{background-color:#fafafa;transform:scale(.98)}.tile-icon{align-items:center;background-color:#f5f5f5;border-radius:8px;display:flex;flex-shrink:0;height:32px;justify-content:center;width:32px}.tile-icon svg{color:#444;height:16px;width:16px}.tile-content{flex:1 1}.tile-content h2{color:#333;font-size:14px;font-weight:600;margin:0 0 4px}.tile-content p{color:#666;font-size:12px;line-height:1.3;margin:0}.events-section{background:#fff;border-radius:16px;box-shadow:0 1px 3px #00000014;padding:18px}.events-heading{color:#333;font-size:16px;font-weight:600;margin-bottom:16px}.events-timeline{padding-left:50px;position:relative}.timeline-line{background-color:#e0e0e0;bottom:0;left:16px;top:0;width:2px;z-index:1}.timeline-progress{background-color:#111;left:16px;position:absolute;top:0;width:2px;z-index:2}.event-item{align-items:center;display:flex;margin-bottom:28px;min-height:32px;padding-bottom:0;padding-left:40px;position:relative}.event-item:last-child{margin-bottom:0}.event-date{align-items:center;background:#fff;border-radius:12px;display:flex;flex-direction:column;height:100%;justify-content:center;left:-34px;padding:2px 0;position:absolute;top:0;width:32px;z-index:4}.event-month{color:#888;font-size:10px;font-weight:500;text-transform:uppercase}.event-day{color:#333;font-size:14px;font-weight:600}.event-connector{height:2px;left:17px;top:50%;transform:translateY(-50%);width:20px;z-index:1}.event-connector,.event-connector:before{background-color:#e0e0e0;position:absolute}.event-connector:before{border:1px solid #fff;border-radius:50%;content:"";height:6px;left:-3px;top:-2px;width:6px}.event-item.past .event-connector,.event-item.past .event-connector:before{background-color:#111}.event-details{gap:12px;height:100%}.event-details,.event-icon{align-items:center;display:flex}.event-icon{background-color:#f5f5f5;border-radius:8px;color:#666;flex-shrink:0;height:32px;justify-content:center;width:32px}.event-name{display:flex;flex-direction:column}.event-title{color:#333;font-size:14px;font-weight:500;line-height:1.3}.event-item.past .event-dot{background-color:#111}.event-item.today .event-dot{background-color:#ff3b30;box-shadow:0 0 0 2px #ff3b3033}.event-item.today .event-title{color:#ff3b30;font-weight:600}.today-indicator{left:0;width:100%;z-index:10}.today-indicator,.today-marker{align-items:center;display:flex;position:absolute}.today-marker{height:16px;justify-content:center;left:-26px;width:16px;z-index:5}.today-marker:before{background-color:#333;border:2px solid #fff;border-radius:50%;box-shadow:0 0 0 2px #0000001a;content:"";height:8px;width:8px}.today-line{background-color:#0003;height:1px;left:-50px;position:absolute;right:0;z-index:3}.today-label{background-color:#fff;border-radius:4px;box-shadow:0 1px 2px #0000001a;color:#333;font-size:12px;font-weight:500;padding:2px 8px;position:relative;z-index:6}.semester-timeline-section{background-color:#fff;border-radius:16px;box-shadow:0 2px 8px #0000000f;padding:28px 24px}.timeline-container{margin-top:20px;padding-left:28px;position:relative}.timeline-line{background-color:#e8e8e8;bottom:8px;left:4px;position:absolute;top:8px;width:1px}.timeline-event{margin-bottom:24px;padding-bottom:4px;position:relative}.timeline-dot{background-color:#111;border-radius:50%;box-shadow:0 0 0 2px #fff;height:8px;left:-28px;position:absolute;top:8px;width:8px}.timeline-today .timeline-dot{background-color:#555;height:10px;left:-29px;top:7px;width:10px}.timeline-date{color:#777;font-size:13px;margin-bottom:6px}.timeline-title{color:#222;font-size:15px;font-weight:500}.timeline-today-label{color:#555;font-size:14px;font-weight:500}.warqa-footer{display:flex;flex-direction:column;gap:4px;margin-top:auto;padding:16px 0 8px;text-align:center}.warqa-signature{align-items:center;color:#888;display:flex;font-size:9.6px;gap:6px;justify-content:center}.warqa-arabic{color:#666;font-size:12.8px}.warqa-meaning,.warqa-pronunciation{color:#888;font-family:monospace;font-size:9.6px}.warqa-meaning{font-style:normal;font-weight:400}.warqa-credit{color:#999;font-size:8.8px;margin-top:4px}.warqa-english{font-family:monospace;font-weight:400}.warqa-arabic-name{color:#777;font-size:10.4px;font-weight:500;margin-left:4px}@media (max-width:480px){.home-container{gap:10px;padding:10px}.navigation-tiles{gap:10px;grid-template-columns:1fr}.nav-tile{grid-gap:8px;display:grid;gap:8px;grid-template-columns:auto 1fr;grid-template-rows:auto auto;padding:18px}.tile-icon{align-self:center;grid-row:1/3;margin-right:4px}.tile-content{grid-column:2;padding-top:2px}.tile-content h2{margin-bottom:2px}.tile-content p{grid-column:2;grid-row:2}.events-timeline{padding-left:40px}.event-date{left:-40px}.event-connector{left:17px}.event-icon{height:28px;width:28px}.event-title{font-size:13px}.cr-info{margin-top:22px;padding:12px}.cr-icon{padding:8px}.cr-text{font-size:14px}}@media (max-width:359px){.mini-timeline{padding:0 3px}.milestone-label{font-size:9px}.navigation-tiles{gap:8px}.nav-tile{padding:10px}.tile-icon{height:28px;width:28px}.tile-content h2{font-size:12px}.events-timeline{padding-left:32px}.event-date{font-size:9px;left:-32px}.event-dot{left:-22px}.event-day{font-size:12px}}
/*# sourceMappingURL=main.9b57a2fb.css.map*/