.course-card-green{--card-from:#003d1a;--card-to:#001a0a;--card-accent:#22e065;--bar-color:#22e065}.course-card-blue{--card-from:#0c2340;--card-to:#050f1c;--card-accent:#1890ff;--bar-color:#1890ff}.course-card-orange{--card-from:#3d2800;--card-to:#1a1000;--card-accent:#ffb741;--bar-color:#ffb741}.course-card-red{--card-from:#3d0d00;--card-to:#1a0500;--card-accent:#e05252;--bar-color:#e05252}.course-card-purple{--card-from:#1e0a3d;--card-to:#0d0520;--card-accent:#8b5cf6;--bar-color:#8b5cf6}.course-card-gray{--card-from:#232323;--card-to:#141414;--card-accent:#9ca3af;--bar-color:#9ca3af}.course-card-completed{--card-from:#1c1c1c;--card-to:#111;--card-accent:#4b5563;--bar-color:#4b5563;filter:grayscale(.6);opacity:.75}.course-card{background:linear-gradient(145deg, var(--card-from) 0%, var(--card-to) 100%);z-index:0;border:1px solid #ffffff0f;border-radius:20px;flex-direction:column;padding:0;transition:transform .25s,box-shadow .25s;display:flex;position:relative;overflow:hidden}.course-card:hover{transform:translateY(-4px);box-shadow:0 20px 48px #00000080}.course-card-completed:hover{box-shadow:none;transform:none}.course-card-glow-upcoming:after{content:"";filter:blur(32px);z-index:-1;pointer-events:none;background:linear-gradient(100deg,#0000 15%,#ec489973 42%,#db27778c 50%,#ec489959 58%,#0000 78%);position:absolute;inset:-30% -15%}.course-card:before{content:"";background:radial-gradient(circle, var(--card-accent) 0%, transparent 70%);opacity:.12;pointer-events:none;border-radius:50%;width:120px;height:120px;position:absolute;top:0;right:0;transform:translate(30%,-30%)}.course-card-header{justify-content:space-between;align-items:center;padding:1.25rem 1.25rem .75rem;display:flex}.course-card-date{color:#ffffff59;letter-spacing:.04em;font-size:.72rem}.course-card-body{flex:1;padding:0 1.25rem 1.25rem}.course-card-title{color:#fff;letter-spacing:-.02em;margin-bottom:.2rem;font-size:1.2rem;font-weight:800;line-height:1.2}.course-card-subtitle{color:#fff6;margin-bottom:1rem;font-size:.8rem}.course-progress-label{color:#ffffff80;text-transform:uppercase;letter-spacing:.08em;margin-bottom:.5rem;font-size:.72rem;font-weight:700}.course-progress-track{background:#ffffff14;border-radius:999px;height:6px;margin-bottom:.3rem;overflow:hidden}.course-progress-fill{background:var(--bar-color);border-radius:999px;height:100%;transition:width .8s cubic-bezier(.4,0,.2,1)}.course-progress-value{text-align:right;color:var(--card-accent);font-size:.8rem;font-weight:700}.course-meta{flex-wrap:wrap;gap:.5rem;margin-top:1rem;display:flex}.course-meta-tag{color:#ffffff8c;background:#ffffff0f;border:1px solid #ffffff14;border-radius:8px;align-items:center;gap:.3rem;padding:.25rem .6rem;font-size:.7rem;display:inline-flex}.course-description{color:#ffffff61;-webkit-line-clamp:3;-webkit-box-orient:vertical;margin-top:.75rem;font-size:.8rem;line-height:1.6;display:-webkit-box;overflow:hidden}.course-card-footer{border-top:1px solid #ffffff0d;justify-content:space-between;align-items:center;gap:.75rem;padding:.9rem 1.25rem;display:flex}.course-countdown{color:#ffffff8c;white-space:nowrap;background:#ffffff0f;border:1px solid #ffffff14;border-radius:999px;padding:.35rem 1rem;font-size:.75rem;font-weight:500}.course-countdown.upcoming{color:var(--card-accent);border-color:var(--card-accent);background:#ffffff08}.course-countdown-timer{background:#ffffff08;border:1px solid #ffffff14;border-radius:14px;align-items:stretch;margin-top:.9rem;padding:.7rem .5rem;display:flex}.cdt-unit{flex-direction:column;flex:1;justify-content:center;align-items:center;padding:0 .4rem;display:flex;position:relative}.cdt-unit:not(:first-child):before{content:"";background:#ffffff1a;width:1px;position:absolute;top:15%;bottom:15%;left:0}.cdt-value{color:var(--card-accent);letter-spacing:.02em;font-variant-numeric:tabular-nums;font-size:1.3rem;font-weight:300;line-height:1}.cdt-label{color:#fff6;text-transform:uppercase;letter-spacing:.06em;margin-top:.3rem;font-size:.6rem;font-weight:600}.status-badge{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;align-items:center;gap:.35rem;padding:.25rem .75rem;font-size:.68rem;font-weight:700;display:inline-flex}.status-badge-dot{border-radius:50%;flex-shrink:0;width:6px;height:6px}.status-ongoing{color:#01c3a8;background:#01c3a81f}.status-ongoing .status-badge-dot{background:#01c3a8;animation:2s infinite pulseDot}.status-completed{color:#9ca3af;background:#6b72801f}.status-completed .status-badge-dot{background:#9ca3af}.status-upcoming{color:#ec4899;background:#ec489929;animation:1.8s ease-in-out infinite pulseGlow}.status-upcoming .status-badge-dot{background:#ec4899;animation:1.4s infinite pulseDot}@keyframes pulseDot{0%,to{opacity:1;transform:scale(1)}50%{opacity:.5;transform:scale(1.4)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 6px #ec489933}50%{box-shadow:0 0 18px #ec48998c}}.prereq-list{flex-direction:column;gap:.3rem;margin-top:.6rem;display:flex}.prereq-item{color:#fff6;align-items:center;gap:.4rem;font-size:.72rem;display:flex}.prereq-item:before{content:"";background:var(--card-accent);border-radius:50%;flex-shrink:0;width:4px;height:4px}.course-filters{flex-wrap:wrap;gap:.5rem;display:flex}.filter-tab{cursor:pointer;color:#ffffff73;white-space:nowrap;background:#ffffff08;border:1px solid #ffffff1a;border-radius:999px;padding:.45rem 1.1rem;font-size:.8rem;font-weight:600;transition:all .2s}.filter-tab:hover{color:#fff;border-color:#ffffff40}.filter-tab.active-all{color:#fff;background:#ffffff14;border-color:#fff3}.filter-tab.active-ongoing{color:#01c3a8;background:#01c3a81f;border-color:#01c3a8}.filter-tab.active-completed{color:#9ca3af;background:#6b72801f;border-color:#9ca3af}.filter-tab.active-upcoming{color:#ec4899;background:#ec489924;border-color:#ec4899}.course-card{cursor:pointer}.course-modal-overlay{z-index:999;-webkit-backdrop-filter:blur(16px);background:#030303b3;justify-content:center;align-items:center;padding:1.5rem;animation:.2s overlayIn;display:flex;position:fixed;inset:0}@keyframes overlayIn{0%{opacity:0}to{opacity:1}}.course-modal{background:linear-gradient(160deg, var(--card-from) 0%, var(--card-to) 100%);scrollbar-width:thin;scrollbar-color:#ffffff1a transparent;border:1px solid #ffffff14;border-radius:24px;width:100%;max-width:680px;max-height:90vh;animation:.28s cubic-bezier(.34,1.56,.64,1) modalIn;position:relative;overflow-y:auto}@keyframes modalIn{0%{opacity:0;transform:scale(.92)translateY(20px)}to{opacity:1;transform:scale(1)translateY(0)}}.course-modal:before{content:"";background:radial-gradient(circle, var(--card-accent) 0%, transparent 70%);opacity:.1;pointer-events:none;border-radius:50%;width:200px;height:200px;position:absolute;top:0;right:0;transform:translate(30%,-30%)}.modal-close{color:#fff9;cursor:pointer;z-index:10;background:#ffffff0d;border:1px solid #ffffff1f;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;transition:all .2s;display:flex;position:absolute;top:1rem;right:1rem}.modal-close:hover{color:#fff;background:#ffffff1f;border-color:#ffffff40}.modal-header{padding:2rem 2rem 1.25rem}.modal-status-row{justify-content:space-between;align-items:center;margin-bottom:1.25rem;display:flex}.modal-title{color:#fff;letter-spacing:-.03em;margin-bottom:.5rem;font-size:1.75rem;font-weight:800;line-height:1.15}.modal-meta-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:.75rem;margin:1.5rem 0;display:grid}.modal-meta-item{background:#ffffff0a;border:1px solid #ffffff12;border-radius:14px;padding:.9rem 1rem}.modal-meta-label{color:#ffffff4d;text-transform:uppercase;letter-spacing:.1em;margin-bottom:.35rem;font-size:.65rem;font-weight:700}.modal-meta-value{color:var(--card-accent);font-size:1rem;font-weight:700}.modal-body{padding:0 2rem 2rem}.modal-section-title{text-transform:uppercase;letter-spacing:.1em;color:#ffffff4d;margin-bottom:.75rem;font-size:.7rem;font-weight:700}.modal-description{color:#fff9;margin-bottom:1.75rem;font-size:.9rem;line-height:1.8}.modal-prereq-list{flex-direction:column;gap:.5rem;margin-bottom:1.75rem;display:flex}.modal-prereq-item{color:#ffffff8c;background:#ffffff08;border:1px solid #ffffff0f;border-radius:10px;align-items:center;gap:.6rem;padding:.6rem .9rem;font-size:.85rem;display:flex}.modal-prereq-dot{background:var(--card-accent);border-radius:50%;flex-shrink:0;width:6px;height:6px}.modal-progress-bar{background:#ffffff12;border-radius:999px;height:8px;margin-bottom:.4rem;overflow:hidden}.modal-progress-fill{background:var(--bar-color);border-radius:999px;height:100%}.modal-cta{border-top:1px solid #ffffff0f;flex-wrap:wrap;gap:.75rem;padding-top:1.25rem;display:flex}.modal-btn-primary{background:var(--card-accent);color:#000;cursor:pointer;border:none;border-radius:12px;flex:1;min-width:160px;height:48px;font-size:.9rem;font-weight:700;transition:opacity .2s,transform .2s}.modal-btn-primary:hover{opacity:.85;transform:translateY(-1px)}.modal-btn-primary:disabled{opacity:.35;cursor:not-allowed;transform:none}.modal-btn-secondary{color:#ffffff8c;cursor:pointer;background:0 0;border:1px solid #ffffff1f;border-radius:12px;height:48px;padding:0 1.5rem;font-size:.88rem;font-weight:500;transition:all .2s}.modal-btn-secondary:hover{color:#fff;border-color:#ffffff4d}.modal-duration-badge{background:#ffffff0a;border:1px solid #ffffff14;border-radius:14px;align-items:center;gap:.6rem;margin-bottom:1.25rem;padding:.75rem 1.25rem;display:flex}.modal-duration-text{color:var(--card-accent);letter-spacing:-.03em;font-size:1.5rem;font-weight:800}.modal-duration-sub{color:#ffffff59;font-size:.78rem;font-weight:500}.modal-curriculum{flex-direction:column;gap:.5rem;margin-bottom:1.75rem;display:flex}.modal-curriculum-item{background:#ffffff08;border:1px solid #ffffff0f;border-radius:12px;align-items:center;gap:.85rem;padding:.65rem .9rem;transition:background .2s;display:flex}.modal-curriculum-item:hover{background:#ffffff0f}.modal-curriculum-week{background:#ffffff12;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:28px;height:28px;display:flex}.modal-curriculum-num{color:var(--card-accent);font-size:.72rem;font-weight:700}.modal-curriculum-content{flex-direction:column;gap:.1rem;display:flex}.modal-curriculum-label{color:#ffffff4d;text-transform:uppercase;letter-spacing:.08em;font-size:.65rem;font-weight:700}.modal-curriculum-topic{color:#fffc;font-size:.88rem;font-weight:600}.modal-note{color:#ffffffa6;background:#fbbf240f;border:1px solid #fbbf2433;border-radius:12px;align-items:flex-start;gap:.6rem;margin-bottom:1.75rem;padding:.85rem 1rem;font-size:.82rem;line-height:1.6;display:flex}.modal-note-icon{color:#fbbf24;flex-shrink:0;margin-top:.1rem}.modal-notify-msg{color:#ffffff73;text-align:center;margin:.6rem 0 0;font-size:.78rem}.modal-notify-msg.modal-notify-error{color:#f87171}.modal-guide-panel{background:#ffffff0a;border:1px solid #ffffff14;border-radius:14px;margin-top:.85rem;padding:1rem 1.1rem;animation:.25s guideDown}.modal-guide-panel p{color:#ffffffa6;margin:0 0 .85rem;font-size:.85rem;line-height:1.65}.modal-guide-link{color:var(--card-accent);align-items:center;gap:.4rem;font-size:.82rem;font-weight:700;text-decoration:none;display:inline-flex}.modal-guide-link:hover{text-decoration:underline}@keyframes guideDown{0%{opacity:0;transform:translateY(-8px)}to{opacity:1;transform:translateY(0)}}@media (max-width:640px){.course-modal-overlay{align-items:flex-end;padding:0;overflow:hidden}.course-modal{border-radius:24px 24px 0 0;width:100%;max-width:100%;max-height:92vh;margin:0;animation:.3s cubic-bezier(.34,1.2,.64,1) modalInMobile;overflow-x:hidden}@keyframes modalInMobile{0%{opacity:0;transform:translateY(40px)}to{opacity:1;transform:translateY(0)}}.modal-header,.modal-body{overflow-x:hidden}.modal-meta-grid{grid-template-columns:1fr 1fr}.modal-cta{flex-direction:column}.modal-btn-primary,.modal-btn-secondary{text-align:center;width:100%}}.modal-video-panel{background:#ffffff0a;border:1px solid #ffffff14;border-radius:14px;margin-top:.85rem;padding:.75rem;animation:.25s guideDown}.modal-video-frame{aspect-ratio:16/9;background:#000;border-radius:10px;width:100%;position:relative;overflow:hidden}.modal-video-frame iframe{border:0;width:100%;height:100%;position:absolute;inset:0}.modal-video-link{color:var(--card-accent);margin-top:.7rem;font-size:.8rem;font-weight:700;text-decoration:none;display:inline-block}.modal-video-link:hover{text-decoration:underline}
