*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{-webkit-text-size-adjust:100%;font-size:16px}body{color:#1f2937;background:#f3f4f6;min-height:100vh;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica,Arial,sans-serif;line-height:1.6}a{color:#2563eb;text-decoration:none}a:hover{text-decoration:underline}button,input,select,textarea{font-family:inherit;font-size:1rem}img{max-width:100%;display:block}:root{--blue:#1a3c6e;--blue-mid:#2563eb;--blue-light:#eff6ff;--green:#16a34a;--green-light:#dcfce7;--amber:#d97706;--amber-light:#fef3c7;--red:#dc2626;--red-light:#fee2e2;--text:#1f2937;--muted:#6b7280;--border:#e5e7eb;--surface:#fff;--bg:#f3f4f6;--radius:8px;--radius-lg:12px;--shadow:0 1px 3px #00000014}h1{color:var(--text);font-size:1.5rem;font-weight:600}h2{color:var(--text);font-size:1.2rem;font-weight:600}h3{color:var(--text);font-size:1rem;font-weight:600}.page-subtitle{color:var(--muted);margin-top:4px;font-size:.9rem}.cta-btn{background:var(--blue);color:#fff;border-radius:var(--radius);cursor:pointer;border:none;justify-content:center;align-items:center;gap:8px;min-height:44px;padding:0 20px;font-size:.95rem;font-weight:500;text-decoration:none;transition:background .15s,transform .1s;display:inline-flex}.cta-btn:hover{background:var(--blue-mid)}.cta-btn:active{transform:scale(.98)}.cta-btn:disabled{background:var(--muted);cursor:not-allowed;transform:none}.cta-btn--small{min-height:36px;padding:0 14px;font-size:.85rem}.cta-btn--success{background:var(--green)}.cta-btn--success:hover{background:#15803d}.secondary-btn{min-height:44px;color:var(--blue);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:0 18px;font-size:.9rem;text-decoration:none;transition:background .15s;display:inline-flex}.secondary-btn:hover{background:var(--bg)}.secondary-btn:disabled{opacity:.5;cursor:not-allowed}.secondary-btn--small{min-height:36px;padding:0 12px;font-size:.82rem}.danger-btn{min-height:44px;color:var(--red);border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #fca5a5;justify-content:center;align-items:center;padding:0 18px;font-size:.9rem;transition:background .15s;display:inline-flex}.danger-btn:hover{background:var(--red-light)}.danger-btn:disabled{opacity:.5;cursor:not-allowed}.danger-btn--small{min-height:36px;padding:0 12px;font-size:.82rem}.text-btn{color:var(--blue-mid);cursor:pointer;background:0 0;border:none;padding:4px 0;font-size:.85rem;text-decoration:underline}.text-btn:hover{color:var(--blue)}.icon-btn{cursor:pointer;border-radius:var(--radius);min-width:44px;min-height:44px;color:var(--muted);background:0 0;border:none;justify-content:center;align-items:center;font-size:1rem;transition:background .15s;display:flex}.icon-btn:hover{background:var(--bg)}.back-link{color:var(--muted);cursor:pointer;background:0 0;border:none;align-items:center;gap:4px;margin-bottom:16px;padding:8px 0;font-size:.9rem;display:inline-flex}.back-link:hover{color:var(--text)}.field-group{margin-bottom:16px}.field-group label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:.82rem;font-weight:500;display:block}input[type=text],input[type=email],input[type=password],input[type=number],input[type=url],select,textarea{border:1px solid var(--border);border-radius:var(--radius);width:100%;min-height:44px;color:var(--text);background:#fff;outline:none;padding:0 14px;font-size:.95rem;transition:border-color .15s,box-shadow .15s}textarea{resize:vertical;min-height:100px;padding:10px 14px;line-height:1.6}input:focus,select:focus,textarea:focus{border-color:var(--blue-mid);box-shadow:0 0 0 3px #2563eb1a}input::placeholder,textarea::placeholder{color:#9ca3af}input:disabled,select:disabled,textarea:disabled{background:var(--bg);cursor:not-allowed;opacity:.7}.field-row{grid-template-columns:1fr 1fr;gap:12px;display:grid}.field-error{color:var(--red);margin-top:4px;font-size:.78rem;display:block}.error-banner{background:var(--red-light);color:#991b1b;border-radius:var(--radius);border:1px solid #fca5a5;margin-bottom:14px;padding:10px 14px;font-size:.88rem}.skeleton{border-radius:var(--radius);background:linear-gradient(90deg,#e5e7eb 25%,#f3f4f6 50%,#e5e7eb 75%) 0 0/200% 100%;animation:1.4s infinite shimmer}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}.skeleton--title{width:55%;height:28px;margin-bottom:16px}.skeleton--text{width:80%;height:16px;margin-bottom:8px}.skeleton--card{height:100px;margin-bottom:12px}.skeleton--card.tall{height:200px}.skeleton-card{border-radius:var(--radius-lg);overflow:hidden}.empty-state{text-align:center;color:var(--muted);padding:40px 20px}.empty-state p{margin-bottom:16px}.empty-state-text{color:var(--muted);padding:16px 0;font-size:.9rem}.badge{border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:500;line-height:1.5;display:inline-block}.badge--green{background:var(--green-light);color:#166534}.badge--blue{background:var(--blue-light);color:#1e40af}.badge--amber{background:var(--amber-light);color:#92400e}.badge--gray{color:var(--muted);background:#f3f4f6}.badge--red{background:var(--red-light);color:#991b1b}.status-pill{border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:500;display:inline-block}.status-pill--draft{color:var(--muted);background:#f3f4f6}.status-pill--pending{background:var(--amber-light);color:#92400e}.status-pill--approved{background:var(--green-light);color:#166534}.status-pill--rejected{background:var(--red-light);color:#991b1b}.tag{color:var(--muted);background:#f3f4f6;border-radius:4px;margin-bottom:4px;margin-right:4px;padding:2px 8px;font-size:.75rem;display:inline-block}.progress-bar-track{background:var(--border);border-radius:4px;width:100%;height:8px;margin:6px 0;overflow:hidden}.progress-bar-fill{background:var(--blue-mid);border-radius:4px;height:100%;transition:width .4s}.progress-percent{color:var(--muted);font-size:.8rem}.mini-bar-track{background:var(--border);border-radius:3px;width:100%;height:5px;margin-top:4px;overflow:hidden}.mini-bar-fill{border-radius:3px;height:100%;transition:width .3s}.bottom-nav{border-top:1px solid var(--border);z-index:100;background:#fff;display:flex;position:fixed;bottom:0;left:0;right:0}.nav-item{min-height:56px;color:var(--muted);flex:1;justify-content:center;align-items:center;font-size:.82rem;font-weight:500;text-decoration:none;transition:color .15s;display:flex}.nav-item.active{color:var(--blue-mid)}.nav-item:hover{color:var(--blue)}.cold-start-banner{z-index:1000;color:#fff;text-align:center;background:#1a3c6e;justify-content:center;align-items:center;gap:10px;padding:10px 16px;font-size:.88rem;display:flex;position:fixed;top:0;left:0;right:0}.cold-start-banner--error{background:var(--red)}.cold-start-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.6s linear infinite spin}@keyframes spin{to{transform:rotate(360deg)}}.cold-start-retry{color:#fff;border-radius:var(--radius);cursor:pointer;background:#fff3;border:1px solid #ffffff80;margin-left:8px;padding:4px 12px;font-size:.82rem}.auth-container{border-radius:var(--radius-lg);border:1px solid var(--border);max-width:420px;box-shadow:var(--shadow);background:#fff;margin:48px auto;padding:32px 24px}.auth-container h1{margin-bottom:6px}.auth-subtitle{color:var(--muted);margin-bottom:20px;font-size:.9rem}.forgot-link{text-align:right;color:var(--blue-mid);margin-bottom:12px;font-size:.83rem;display:block}.switch-link{text-align:center;color:var(--muted);margin-top:16px;font-size:.88rem}.switch-link a{color:var(--blue-mid);font-weight:500}.onboard-container{max-width:520px;margin:0 auto;padding:24px 16px 80px}.onboard-steps{align-items:center;gap:0;margin-bottom:24px;display:flex}.onboard-step{flex-direction:column;flex:1;align-items:center;gap:4px;display:flex;position:relative}.onboard-step:not(:last-child):after{content:"";background:var(--border);z-index:0;width:100%;height:2px;position:absolute;top:16px;right:-50%}.onboard-step.completed:after{background:var(--blue-mid)}.step-dot{background:var(--border);width:32px;height:32px;color:var(--muted);z-index:1;border-radius:50%;justify-content:center;align-items:center;font-size:.82rem;font-weight:600;display:flex;position:relative}.onboard-step.active .step-dot{background:var(--blue);color:#fff}.onboard-step.completed .step-dot{background:var(--blue-mid);color:#fff}.step-label{color:var(--muted);font-size:.72rem}.onboard-step.active .step-label{color:var(--blue);font-weight:500}.onboard-card{border-radius:var(--radius-lg);border:1px solid var(--border);box-shadow:var(--shadow);background:#fff;padding:24px}.onboard-card h2{margin-bottom:6px}.onboard-subtitle{color:var(--muted);margin-bottom:20px;font-size:.9rem}.level-options{flex-direction:column;gap:10px;margin-bottom:8px;display:flex}.level-option{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;text-align:left;background:#fff;flex-direction:column;align-items:flex-start;gap:2px;min-height:44px;padding:14px 16px;transition:border-color .15s,background .15s;display:flex}.level-option:hover,.level-option.selected{border-color:var(--blue-mid);background:var(--blue-light)}.level-name{color:var(--text);font-size:.95rem;font-weight:500}.level-desc{color:var(--muted);font-size:.8rem}.onboard-actions{gap:10px;margin-top:20px;display:flex}.onboard-actions .cta-btn{flex:1}.back-btn{min-height:44px;color:var(--muted);border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;background:0 0;padding:0 18px;font-size:.9rem}.onboard-status-screen{text-align:center;border-radius:var(--radius-lg);border:1px solid var(--border);background:#fff;flex-direction:column;justify-content:center;align-items:center;gap:12px;min-height:300px;padding:40px 20px;display:flex}.onboard-spinner{border:4px solid var(--border);border-top-color:var(--blue-mid);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}.onboard-status-screen h2{margin-top:8px}.onboard-status-screen p{color:var(--muted);font-size:.9rem}.dashboard-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.dashboard-greeting{font-size:1.4rem;font-weight:600}.dashboard-subtitle{color:var(--muted);margin-top:4px;font-size:.88rem}.streak-badge{border:1px solid var(--border);border-radius:var(--radius);text-align:center;background:#fff;flex-direction:column;flex-shrink:0;align-items:center;min-width:72px;padding:8px 14px;display:flex}.streak-fire{font-size:1.3rem}.streak-count{color:var(--blue);font-size:1.2rem;font-weight:700;line-height:1.2}.streak-label{color:var(--muted);font-size:.68rem}.progress-overview{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;margin-bottom:16px;padding:16px}.progress-overview-top{color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:.85rem;display:flex}.active-stage-card{border:1px solid var(--blue-mid);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;margin-bottom:20px;padding:20px}.stage-card-top{justify-content:space-between;align-items:center;margin-bottom:10px;display:flex}.stage-order{color:var(--muted);font-size:.8rem}.stage-title{margin-bottom:6px;font-size:1.1rem;font-weight:600}.stage-desc{color:var(--muted);margin-bottom:12px;font-size:.88rem}.stage-meta{color:var(--muted);flex-wrap:wrap;gap:10px;margin-bottom:16px;font-size:.82rem;display:flex}.stage-actions{flex-wrap:wrap;gap:10px;display:flex}.stages-section{margin-top:8px}.stages-section h3{margin-bottom:12px}.stages-list{flex-direction:column;gap:8px;display:flex}.stage-row{border:1px solid var(--border);border-radius:var(--radius);background:#fff;justify-content:space-between;align-items:center;padding:12px 14px;transition:opacity .2s;display:flex}.stage-row.locked{opacity:.5;pointer-events:none}.stage-row.completed{border-color:var(--green-light)}.stage-row-left{align-items:center;gap:12px;display:flex}.stage-dot{background:var(--border);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:32px;height:32px;font-size:.78rem;font-weight:600;display:flex}.stage-dot.active{background:var(--blue-mid);color:#fff}.stage-dot.completed{background:var(--green);color:#fff}.stage-dot.locked{color:var(--muted);background:#f3f4f6}.stage-row-title{font-size:.9rem;font-weight:500}.stage-row-meta{color:var(--muted);margin-top:2px;font-size:.78rem}.stage-badge{border-radius:999px;padding:3px 9px;font-size:.73rem;font-weight:500}.stage-badge.active{background:var(--blue-light);color:#1e40af}.stage-badge.completed{background:var(--green-light);color:#166534}.stage-badge.locked{color:var(--muted);background:#f3f4f6}.search-bar{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;display:flex}.search-input{flex:1;min-width:160px}.search-input--tag{max-width:160px}.search-select{flex-shrink:0;min-width:140px}.search-btn{flex-shrink:0}.course-card{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;flex-direction:column;gap:8px;padding:16px;transition:box-shadow .15s;display:flex}.course-card:hover{box-shadow:0 4px 12px #00000014}.course-tags{flex-wrap:wrap;display:flex}.load-more-wrap{text-align:center;padding:16px 0}.course-detail-container{max-width:700px;margin:0 auto;padding:20px 16px 80px}.course-detail-header{margin-bottom:20px}.course-detail-meta{gap:6px;margin-bottom:8px;display:flex}.course-detail-title{margin-bottom:8px;font-size:1.35rem;font-weight:600}.course-detail-desc{color:var(--muted);font-size:.9rem;line-height:1.6}.course-progress-section{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;margin-bottom:16px;padding:14px 16px}.course-progress-top{color:var(--muted);justify-content:space-between;font-size:.82rem;display:flex}.modules-section h2{margin-bottom:12px}.modules-list{flex-direction:column;gap:10px;list-style:none;display:flex}.module-item{border:1px solid var(--border);border-radius:var(--radius);background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;transition:border-color .15s;display:flex}.module-item--done{border-color:var(--green-light);background:#f0fdf4}.module-item-left{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.module-title{white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:500;overflow:hidden}.module-actions{flex-shrink:0;align-items:center;gap:8px;display:flex}.resource-link{color:var(--blue-mid);font-size:.82rem}.focus-widget{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;margin-bottom:16px;padding:18px;transition:border-color .2s}.focus-widget--active{border-color:var(--blue-mid)}.focus-idle{flex-direction:column;gap:10px;display:flex}.focus-idle-title{font-size:.95rem;font-weight:600}.focus-idle-subtitle{color:var(--muted);font-size:.8rem}.focus-duration-row{flex-wrap:wrap;gap:6px;display:flex}.focus-duration-btn{border:1px solid var(--border);border-radius:var(--radius);cursor:pointer;min-height:36px;color:var(--text);background:#fff;padding:0 12px;font-size:.85rem;transition:all .15s}.focus-duration-btn:hover{border-color:var(--blue-mid);color:var(--blue-mid)}.focus-duration-btn.selected{background:var(--blue);color:#fff;border-color:var(--blue)}.focus-start-btn{width:100%}.focus-active{text-align:center;flex-direction:column;align-items:center;gap:10px;display:flex}.focus-ring-wrap{justify-content:center;align-items:center;width:96px;height:96px;display:flex;position:relative}.focus-ring-time{color:var(--text);font-size:1rem;font-weight:600;position:absolute}.focus-active-label{font-size:.9rem;font-weight:600}.focus-active-note{color:var(--muted);font-size:.8rem}.focus-end-btn{min-height:36px;color:var(--red);border-radius:var(--radius);cursor:pointer;background:0 0;border:1px solid #fca5a5;padding:0 16px;font-size:.85rem;transition:background .15s}.focus-end-btn:hover{background:var(--red-light)}.focus-error{color:var(--red);margin-top:8px;font-size:.82rem}.focus-widget--complete{background:var(--green-light);border-color:#86efac;align-items:center;gap:12px;display:flex}.focus-complete-icon{color:var(--green);font-size:1.3rem}.focus-complete-text{color:#166534;font-size:.9rem;font-weight:500}.progress-container{max-width:700px;margin:0 auto;padding:24px 16px 80px}.progress-container h1{margin-bottom:20px}.streak-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:20px;padding:16px 20px;display:flex}.streak-card-left{align-items:center;gap:12px;display:flex}.streak-fire-large{font-size:1.8rem}.streak-days{font-size:1.1rem;font-weight:600}.streak-last{color:var(--muted);margin-top:2px;font-size:.8rem}.streak-message{color:var(--muted);font-size:.85rem}.deadlines-section{margin-bottom:24px}.deadlines-section h2{margin-bottom:12px}.deadlines-list{flex-direction:column;gap:8px;display:flex}.deadline-item{border:1px solid var(--border);border-radius:var(--radius);background:#fff;justify-content:space-between;align-items:center;gap:12px;padding:12px 14px;display:flex}.deadline-item--urgent{background:var(--red-light);border-color:#fca5a5}.deadline-stage{font-size:.9rem;font-weight:500}.deadline-date{color:var(--muted);margin-top:2px;font-size:.78rem}.deadline-badge{background:var(--bg);color:var(--muted);white-space:nowrap;border-radius:999px;padding:3px 10px;font-size:.75rem;font-weight:500}.deadline-badge--urgent{background:var(--red-light);color:var(--red)}.courses-progress-section h2{margin-bottom:16px}.progress-ring-grid{grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:12px;display:grid}.progress-ring-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;flex-direction:column;align-items:center;gap:8px;padding:16px 12px;text-decoration:none;transition:box-shadow .15s;display:flex}.progress-ring-card:hover{box-shadow:0 4px 12px #00000014}.progress-ring-title{text-align:center;color:var(--text);font-size:.82rem;font-weight:500;line-height:1.4}.progress-ring-meta{color:var(--muted);text-align:center;font-size:.73rem}.chat-shell{height:100vh;max-height:100vh;display:flex;overflow:hidden}.chat-sidebar{border-right:1px solid var(--border);z-index:200;background:#fff;flex-direction:column;flex-shrink:0;width:260px;transition:transform .25s;display:flex;position:fixed;top:0;bottom:0;left:0;transform:translate(-100%)}.chat-sidebar--open{transform:translate(0)}@media (width>=768px){.chat-sidebar{position:relative;transform:none}}.chat-sidebar-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:16px;display:flex}.chat-sidebar-title{font-size:.9rem;font-weight:600}.new-chat-btn{border:1px dashed var(--border);border-radius:var(--radius);color:var(--blue-mid);cursor:pointer;text-align:left;background:0 0;min-height:44px;margin:12px 16px;padding:10px;font-size:.85rem}.new-chat-btn:hover{background:var(--blue-light)}.chat-sidebar-empty{color:var(--muted);padding:16px;font-size:.83rem}.sessions-list{flex:1;list-style:none;overflow-y:auto}.session-item{cursor:pointer;text-align:left;background:0 0;border:none;justify-content:space-between;align-items:center;gap:8px;width:100%;min-height:44px;padding:10px 16px;transition:background .15s;display:flex}.session-item:hover{background:var(--bg)}.session-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;flex:1;font-size:.83rem;overflow:hidden}.session-date{color:var(--muted);flex-shrink:0;font-size:.72rem}.chat-main{background:var(--bg);flex-direction:column;flex:1;min-height:0;display:flex}.chat-header{border-bottom:1px solid var(--border);background:#fff;flex-shrink:0;align-items:center;gap:10px;padding:10px 14px;display:flex}.chat-header-info{flex:1;align-items:center;gap:10px;display:flex}.pola-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.9rem;font-weight:700;display:flex}.pola-avatar--large{width:56px;height:56px;font-size:1.3rem}.pola-avatar--small{width:28px;height:28px;font-size:.75rem}.chat-messages{flex-direction:column;flex:1;gap:14px;padding:20px 16px;display:flex;overflow-y:auto}.chat-welcome{text-align:center;flex-direction:column;align-items:center;gap:10px;padding:32px 20px;display:flex}.chat-welcome h2{margin-top:8px}.chat-welcome p{color:var(--muted);max-width:320px;font-size:.9rem}.chat-loading{justify-content:center;align-items:center;gap:6px;padding:20px;display:flex}.chat-suggestions{flex-direction:column;gap:8px;width:100%;max-width:340px;margin-top:4px;display:flex}.suggestion-btn{border:1px solid var(--border);border-radius:var(--radius);text-align:left;cursor:pointer;min-height:44px;color:var(--text);background:#fff;padding:10px 14px;font-size:.85rem;transition:background .15s,border-color .15s}.suggestion-btn:hover{background:var(--blue-light);border-color:var(--blue-mid)}.chat-bubble-row{align-items:flex-end;gap:8px;display:flex}.chat-bubble-row--user{flex-direction:row-reverse}.chat-bubble{border-radius:16px;max-width:75%;padding:10px 14px;font-size:.9rem;line-height:1.5;position:relative}.chat-bubble--assistant{border:1px solid var(--border);background:#fff;border-bottom-left-radius:4px}.chat-bubble--user{background:var(--blue);color:#fff;border-bottom-right-radius:4px}.bubble-content{white-space:pre-wrap;word-break:break-word}.bubble-time{opacity:.6;text-align:right;margin-top:4px;font-size:.68rem;display:block}.typing-indicator{align-items:center;gap:4px;padding:4px 2px;display:flex}.typing-dot{background:var(--muted);border-radius:50%;width:7px;height:7px;animation:1.2s infinite typing-bounce}.typing-dot:nth-child(2){animation-delay:.2s}.typing-dot:nth-child(3){animation-delay:.4s}@keyframes typing-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}.chat-error{background:var(--red-light);color:#991b1b;border-top:1px solid #fca5a5;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 14px;font-size:.83rem;display:flex}.chat-input-bar{border-top:1px solid var(--border);background:#fff;flex-shrink:0;align-items:flex-end;gap:8px;padding:12px 14px;display:flex}.chat-input{resize:none;border:1px solid var(--border);border-radius:22px;flex:1;min-height:44px;max-height:120px;padding:10px 16px;font-size:.9rem;line-height:1.4;overflow-y:auto}.chat-input:focus{border-color:var(--blue-mid);box-shadow:0 0 0 3px #2563eb1a}.chat-send-btn{background:var(--blue);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;font-size:1.1rem;transition:background .15s,transform .1s;display:flex}.chat-send-btn:hover{background:var(--blue-mid)}.chat-send-btn:active{transform:scale(.95)}.chat-send-btn:disabled{background:var(--muted);cursor:not-allowed;transform:none}.chat-footer-note{text-align:center;color:var(--muted);background:#fff;flex-shrink:0;padding:4px 0 8px;font-size:.72rem}.lecturer-container{max-width:800px;margin:0 auto;padding:24px 16px 40px}.lecturer-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.dashboard-actions{margin-bottom:16px}.lecturer-course-list{flex-direction:column;gap:14px;display:flex}.lecturer-course-card{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;padding:18px 20px}.lecturer-course-card-top{margin-bottom:10px}.lecturer-course-title{margin:6px 0 4px;font-size:1rem;font-weight:600}.lecturer-course-meta{color:var(--muted);font-size:.82rem}.lecturer-course-actions{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-top:14px;padding-top:12px;display:flex}.rejection-notice{background:var(--red-light);border-left:3px solid var(--red);border-radius:0 var(--radius) var(--radius) 0;color:#991b1b;margin:10px 0;padding:10px 14px;font-size:.85rem}.rejection-hint{color:var(--muted);margin-top:4px;font-size:.78rem}.submit-guard-note{color:var(--amber);margin-top:8px;font-size:.8rem}.locked-notice{background:var(--amber-light);border-radius:var(--radius);color:#92400e;border:1px solid #fcd34d;margin-bottom:16px;padding:10px 14px;font-size:.85rem}.notif-wrap{position:relative}.notif-bell{cursor:pointer;background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:1.2rem;display:flex;position:relative}.notif-badge{background:var(--red);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:18px;height:18px;font-size:.65rem;font-weight:700;display:flex;position:absolute;top:6px;right:6px}.notif-dropdown{border:1px solid var(--border);border-radius:var(--radius-lg);z-index:300;background:#fff;width:320px;position:absolute;top:48px;right:0;overflow:hidden;box-shadow:0 8px 24px #0000001f}.notif-dropdown-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;font-size:.9rem;font-weight:600;display:flex}.notif-empty{color:var(--muted);text-align:center;padding:16px;font-size:.83rem}.notif-list{max-height:280px;list-style:none;overflow-y:auto}.notif-item{border-bottom:1px solid var(--border);gap:10px;padding:10px 16px;transition:background .15s;display:flex}.notif-item:hover{background:var(--bg)}.notif-item--unread{background:var(--blue-light)}.notif-icon{flex-shrink:0;margin-top:2px;font-size:.9rem}.notif-title{font-size:.83rem;font-weight:500}.notif-message{color:var(--muted);margin-top:2px;font-size:.78rem}.notif-view-all{text-align:center;padding:10px;font-size:.82rem;display:block}.form-section{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;margin-bottom:20px;padding:20px}.form-section h2{margin-bottom:16px}.section-note{color:var(--muted);margin-bottom:14px;font-size:.82rem}.add-module-form{border-top:1px solid var(--border);margin-top:16px;padding-top:16px}.add-module-form h3{margin-bottom:14px;font-size:.95rem}.stats-grid{grid-template-columns:repeat(2,1fr);gap:12px;margin-bottom:24px;display:grid}@media (width>=480px){.stats-grid{grid-template-columns:repeat(4,1fr)}}.stat-card{border:1px solid var(--border);border-radius:var(--radius);text-align:center;background:#fff;padding:14px 16px}.stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-bottom:6px;font-size:.75rem}.stat-value{color:var(--blue);font-size:1.4rem;font-weight:700}.students-section h2{margin-bottom:4px}.students-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:14px;display:flex}.sort-row{color:var(--muted);align-items:center;gap:8px;font-size:.83rem;display:flex}.sort-row select{width:auto;min-width:120px;min-height:36px}.students-list{flex-direction:column;gap:10px;display:flex}.student-row{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;flex-wrap:wrap;align-items:center;gap:14px;padding:14px 16px;display:flex}.student-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:40px;height:40px;font-size:.9rem;font-weight:700;display:flex}.student-info{flex:1;min-width:120px}.student-name{font-size:.9rem;font-weight:500}.student-email{color:var(--muted);font-size:.78rem}.student-progress{flex:1;min-width:140px}.student-progress-top{color:var(--muted);justify-content:space-between;margin-bottom:4px;font-size:.78rem;display:flex}.student-modules-count{font-size:.72rem}.student-meta{flex-direction:column;flex-shrink:0;align-items:flex-end;gap:2px;display:flex}.student-streak{font-size:.8rem;font-weight:500}.student-last{color:var(--muted);font-size:.72rem}.notif-page-header{justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.notif-page-list{flex-direction:column;gap:10px;display:flex}.notif-page-item{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;padding:16px}.notif-page-item--unread{border-left:3px solid var(--blue-mid)}.notif-page-item-top{justify-content:space-between;align-items:center;gap:8px;margin-bottom:8px;display:flex}.notif-tag{border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:500;display:inline-block}.notif-tag--green{background:var(--green-light);color:#166534}.notif-tag--red{background:var(--red-light);color:#991b1b}.notif-tag--blue{background:var(--blue-light);color:#1e40af}.notif-tag--amber{background:var(--amber-light);color:#92400e}.notif-date{color:var(--muted);font-size:.75rem}.notif-page-title{margin-bottom:4px;font-size:.9rem;font-weight:500}.notif-page-message{color:var(--muted);font-size:.83rem;line-height:1.5}.notif-reason{color:var(--red);margin-top:6px;font-size:.82rem}.pagination-note{text-align:center;color:var(--muted);padding:16px 0 8px;font-size:.78rem}@media (width<=480px){.field-row,.course-grid{grid-template-columns:1fr}.progress-ring-grid{grid-template-columns:repeat(2,1fr)}.chat-bubble{max-width:88%}.auth-container{margin:16px;padding:24px 16px}.onboard-card{padding:16px}.lecturer-course-actions{flex-direction:column}}.navbar{z-index:200;border-bottom:1px solid var(--border);background:#fff;align-items:center;gap:0;height:60px;padding:0 24px;display:flex;position:sticky;top:0;box-shadow:0 1px 4px #0000000f}.navbar-logo{flex-shrink:0;align-items:center;gap:8px;margin-right:32px;text-decoration:none;display:flex}.navbar-logo-icon{background:var(--blue);color:#fff;border-radius:8px;justify-content:center;align-items:center;width:32px;height:32px;font-size:.9rem;font-weight:700;display:flex}.navbar-logo-text{color:var(--blue);font-size:1rem;font-weight:700}.navbar-links{flex:1;align-items:center;gap:4px;display:flex}.navbar-link{border-radius:var(--radius);color:var(--muted);align-items:center;min-height:36px;padding:6px 14px;font-size:.88rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.navbar-link:hover{background:var(--bg);color:var(--text);text-decoration:none}.navbar-link.active{background:var(--blue-light);color:var(--blue-mid)}.navbar-right{align-items:center;gap:12px;margin-left:auto;display:flex}.navbar-streak{background:var(--amber-light);color:#92400e;cursor:default;border-radius:999px;align-items:center;gap:4px;padding:4px 10px;font-size:.82rem;font-weight:600;display:flex}.navbar-streak-count{font-size:.9rem;font-weight:700}.navbar-profile-wrap{position:relative}.navbar-profile-btn{cursor:pointer;background:0 0;border:none;border-radius:50%;align-items:center;padding:4px;display:flex}.navbar-avatar{background:var(--blue);color:#fff;border-radius:50%;justify-content:center;align-items:center;width:36px;height:36px;font-size:.88rem;font-weight:700;display:flex}.navbar-dropdown{border:1px solid var(--border);border-radius:var(--radius-lg);z-index:400;background:#fff;width:200px;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 8px 24px #0000001f}.navbar-dropdown-header{padding:12px 16px}.navbar-dropdown-name{color:var(--text);font-size:.88rem;font-weight:600}.navbar-dropdown-role{color:var(--muted);margin-top:2px;font-size:.75rem}.navbar-dropdown-divider{background:var(--border);height:1px}.navbar-dropdown-item{color:var(--text);align-items:center;min-height:44px;padding:10px 16px;font-size:.85rem;text-decoration:none;transition:background .15s;display:flex}.navbar-dropdown-item:hover{background:var(--bg)}.navbar-dropdown-logout{text-align:left;width:100%;color:var(--red);cursor:pointer;background:0 0;border:none;min-height:44px;padding:10px 16px;font-size:.85rem;transition:background .15s}.navbar-dropdown-logout:hover{background:var(--red-light)}.bottom-nav{display:none}.dashboard-container{max-width:1100px;margin:0 auto;padding:28px 24px 48px}.dashboard-greeting-row{margin-bottom:20px}.dashboard-greeting{font-size:1.5rem}.active-stage-banner{background:var(--blue-light);border-radius:var(--radius-lg);border:1px solid #bfdbfe;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;margin-bottom:28px;padding:16px 20px;display:flex}.active-stage-banner-left{flex-direction:column;gap:4px;display:flex}.active-stage-title{color:var(--blue);font-size:1rem;font-weight:600}.active-stage-meta{color:var(--muted);font-size:.8rem}.section-link{color:var(--blue-mid);font-size:.85rem;text-decoration:none}.course-card{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;flex-direction:column;transition:box-shadow .15s,transform .1s;display:flex;overflow:hidden}.course-card:hover{transform:translateY(-2px);box-shadow:0 4px 16px #0000001a}.course-thumb{background:var(--bg);flex-shrink:0;width:100%;height:140px;overflow:hidden}.course-thumb-img{object-fit:cover;width:100%;height:100%;display:block}.course-thumb-placeholder{color:#fff;background:linear-gradient(135deg,#1a3c6e 0%,#2563eb 100%);justify-content:center;align-items:center;width:100%;height:100%;font-size:2.5rem;font-weight:700;display:flex}.course-card-body{flex-direction:column;flex:1;gap:6px;padding:14px 16px;display:flex}.course-card-top{flex-wrap:wrap;gap:6px;display:flex}.course-title{color:var(--text);font-size:.95rem;font-weight:600;line-height:1.4}.course-description{color:var(--muted);flex:1;font-size:.82rem;line-height:1.5}.course-card-footer{border-top:1px solid var(--border);justify-content:space-between;align-items:center;margin-top:auto;padding-top:8px;display:flex}.course-modules{color:var(--muted);font-size:.75rem}.course-enroll-cta{color:var(--blue-mid);font-size:.82rem;font-weight:500}.course-mini-progress{align-items:center;gap:8px;margin-top:4px;display:flex}.course-detail-banner{object-fit:cover;border-radius:var(--radius-lg);width:100%;height:200px;margin-bottom:16px}.resource-link-btn{background:var(--blue-light);color:var(--blue-mid);border-color:#bfdbfe;font-weight:500}.courses-container{max-width:1100px;margin:0 auto;padding:28px 24px 48px}.courses-header{margin-bottom:20px}.course-grid{grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:18px;margin-bottom:24px;display:grid}@media (width<=640px){.navbar-links{display:none}.course-grid{grid-template-columns:1fr 1fr;gap:12px}.course-thumb{height:100px}.dashboard-container,.courses-container{padding:16px 14px 40px}}@media (width<=400px){.course-grid{grid-template-columns:1fr}}.auth-split{background:#f3f4f6;min-height:100vh;display:flex}.auth-split-left{background:linear-gradient(145deg,#0f2550 0%,#1a3c6e 45%,#1d4ed8 100%);flex-direction:column;flex:1;justify-content:center;min-height:100vh;padding:60px 48px;display:flex;position:relative;overflow:hidden}.auth-split-left:before{content:"";pointer-events:none;background-image:radial-gradient(circle at 20% 20%,#ffffff0f 0%,#0000 50%),radial-gradient(circle at 80% 80%,#2563eb4d 0%,#0000 50%);position:absolute;inset:0}.auth-split-left:after{content:"";pointer-events:none;background-image:radial-gradient(#ffffff14 1px,#0000 1px);background-size:32px 32px;position:absolute;inset:0}.auth-brand-content{z-index:1;max-width:400px;position:relative}.auth-brand-logo{align-items:center;gap:10px;margin-bottom:40px;display:flex}.auth-brand-icon{color:#fff;background:#ffffff26;border:1px solid #ffffff40;border-radius:10px;justify-content:center;align-items:center;width:40px;height:40px;font-size:1.1rem;font-weight:800;display:flex}.auth-brand-name{color:#fff;letter-spacing:-.01em;font-size:1.2rem;font-weight:700}.auth-brand-headline{color:#fff;letter-spacing:-.02em;margin-bottom:16px;font-size:2.4rem;font-weight:700;line-height:1.2}.auth-brand-sub{color:#ffffffb3;margin-bottom:36px;font-size:1rem;line-height:1.6}.auth-brand-stats{gap:28px;display:flex}.auth-stat{flex-direction:column;gap:2px;display:flex}.auth-stat-num{color:#fff;font-size:1.5rem;font-weight:700;line-height:1}.auth-stat-label{color:#ffffff8c;text-transform:uppercase;letter-spacing:.06em;font-size:.75rem}.auth-features-list{color:#ffffffd9;flex-direction:column;gap:12px;font-size:.95rem;line-height:1.5;list-style:none;display:flex}.auth-feature-check{color:#4ade80;background:#22c55e33;border:1px solid #22c55e66;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:20px;height:20px;margin-right:10px;font-size:.7rem;font-weight:700;display:inline-flex}.auth-deco-card{z-index:2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#ffffff1a;border:1px solid #ffffff2e;border-radius:14px;align-items:center;gap:10px;max-width:220px;padding:12px 16px;animation:6s ease-in-out infinite float;display:flex;position:absolute}.auth-deco-card--1{animation-delay:0s;bottom:180px;right:32px}.auth-deco-card--2{animation-delay:2s;bottom:100px;left:32px}.auth-deco-card--3{animation-delay:4s;bottom:32px;right:64px}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}.auth-deco-icon{flex-shrink:0;font-size:1.3rem}.auth-deco-title{color:#fff;font-size:.82rem;font-weight:600}.auth-deco-desc{color:#ffffffa6;margin-top:2px;font-size:.72rem}.auth-split-right{background:#fff;flex-shrink:0;justify-content:center;align-items:center;width:480px;min-height:100vh;padding:40px 32px;display:flex}.auth-form-wrap{width:100%;max-width:380px}.auth-form-header{margin-bottom:28px}.auth-form-title{color:var(--text);letter-spacing:-.02em;margin-bottom:6px;font-size:1.75rem;font-weight:700}.auth-form-subtitle{color:var(--muted);font-size:.9rem}.auth-error-banner{background:var(--red-light);border-radius:var(--radius);color:#991b1b;border:1px solid #fca5a5;align-items:center;gap:8px;margin-bottom:16px;padding:10px 14px;font-size:.88rem;display:flex}.auth-error-dot{background:var(--red);border-radius:50%;flex-shrink:0;width:6px;height:6px}.auth-form{flex-direction:column;gap:4px;display:flex}.field-label-row{justify-content:space-between;align-items:center;margin-bottom:6px;display:flex}.field-label-row label{margin-bottom:0}.forgot-link{color:var(--blue-mid);float:none;margin:0;font-size:.8rem;text-decoration:none}.forgot-link:hover{text-decoration:underline}.password-input-wrap{position:relative}.password-input-wrap input{padding-right:60px}.password-toggle{color:var(--muted);cursor:pointer;background:0 0;border:none;min-height:auto;padding:4px;font-size:.78rem;font-weight:500;position:absolute;top:50%;right:12px;transform:translateY(-50%)}.password-toggle:hover{color:var(--text)}.input-error{border-color:var(--red)!important;box-shadow:0 0 0 3px #dc26261a!important}.auth-submit-btn{color:#fff;border-radius:var(--radius);cursor:pointer;letter-spacing:-.01em;background:#1a3c6e;border:none;justify-content:center;align-items:center;gap:8px;width:100%;min-height:50px;margin-top:8px;font-size:1rem;font-weight:600;transition:background .15s,transform .1s;display:flex}.auth-submit-btn:hover{background:#2563eb}.auth-submit-btn:active{transform:scale(.99)}.auth-submit-btn:disabled{background:var(--muted);cursor:not-allowed;transform:none}.btn-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;flex-shrink:0;width:16px;height:16px;animation:.6s linear infinite spin}.auth-switch{text-align:center;color:var(--muted);margin-top:20px;font-size:.88rem}.auth-switch a{color:var(--blue-mid);font-weight:500}.auth-switch a:hover{text-decoration:underline}@media (width<=768px){.auth-split{flex-direction:column}.auth-split-left{justify-content:flex-start;min-height:220px;padding:36px 24px}.auth-brand-headline{font-size:1.6rem}.auth-deco-card--3{display:none}.auth-deco-card--1{bottom:12px;right:16px}.auth-deco-card--2{display:none}.auth-split-right{width:100%;min-height:auto;padding:32px 24px 48px}.auth-form-wrap{max-width:100%}}.dash-page{background:#f3f4f6;min-height:calc(100vh - 60px)}.dash-hero{background:linear-gradient(135deg,#0f2550 0%,#1a3c6e 50%,#1e4fd8 100%);flex-wrap:wrap;align-items:flex-start;gap:32px;padding:40px 48px;display:flex;position:relative;overflow:hidden}.dash-hero:before{content:"";pointer-events:none;background-image:radial-gradient(#ffffff0f 1px,#0000 1px);background-size:28px 28px;position:absolute;inset:0}.skeleton-hero{align-items:center;min-height:160px}.dash-hero-content{z-index:1;flex:1;min-width:280px;position:relative}.dash-hero-title{color:#fff;letter-spacing:-.02em;margin-bottom:6px;font-size:1.8rem;font-weight:700}.dash-hero-sub{color:#ffffffb8;margin-bottom:24px;font-size:.95rem;line-height:1.5}.dash-hero-stats{flex-wrap:wrap;align-items:center;gap:20px;display:flex}.dash-stat{align-items:center;gap:10px;display:flex}.dash-stat-icon{font-size:1.3rem}.dash-stat-val{color:#fff;font-size:1.4rem;font-weight:700;line-height:1}.dash-stat-label{color:#ffffff8c;text-transform:uppercase;letter-spacing:.05em;margin-top:2px;font-size:.72rem}.dash-stat-divider{background:#fff3;width:1px;height:36px}.dash-hero-stage{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:1;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:14px;flex-shrink:0;min-width:240px;max-width:300px;padding:18px 20px;position:relative}.dash-hero-stage-top{justify-content:space-between;align-items:center;margin-bottom:8px;display:flex}.dash-hero-stage-progress{color:#fff;font-size:.85rem;font-weight:700}.dash-hero-stage-title{color:#fff;margin-bottom:6px;font-size:.95rem;font-weight:600;line-height:1.4}.dash-hero-stage-meta{color:#fff9;margin-top:6px;font-size:.75rem}.dash-hero-stage-link{color:#93c5fd;margin-top:10px;font-size:.82rem;font-weight:500;text-decoration:none;display:inline-block}.dash-hero-stage-link:hover{color:#fff;text-decoration:underline}.dash-body{box-sizing:border-box;grid-template-columns:1fr 300px;gap:24px;width:100%;max-width:1200px;margin:0 auto;padding:28px 48px 48px;display:grid}.dash-main{min-width:0}.dash-sidebar{flex-direction:column;gap:16px;display:flex}.sidebar-card{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;padding:16px}.sidebar-card-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.sidebar-card-header h3{font-size:.9rem;font-weight:600}.sidebar-card-header-plain{margin-bottom:12px;font-size:.9rem;font-weight:600}.sidebar-stages{flex-direction:column;gap:8px;display:flex}.sidebar-stage{border-radius:var(--radius);align-items:center;gap:10px;padding:8px 10px;transition:background .15s;display:flex}.sidebar-stage.locked{opacity:.45}.sidebar-stage.active{background:var(--blue-light)}.sidebar-stage.completed{background:#f0fdf4}.sidebar-stage-dot{background:var(--border);width:26px;height:26px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.7rem;font-weight:700;display:flex}.sidebar-stage-dot.active{background:var(--blue-mid);color:#fff}.sidebar-stage-dot.completed{background:var(--green);color:#fff}.sidebar-stage-dot.locked{color:#9ca3af;background:#f3f4f6}.sidebar-stage-info{flex:1;min-width:0}.sidebar-stage-title{white-space:nowrap;text-overflow:ellipsis;font-size:.8rem;font-weight:500;overflow:hidden}.sidebar-stage-meta{color:var(--muted);margin-top:1px;font-size:.7rem}.mini-status{flex-shrink:0;font-size:.8rem}.mini-status--locked{opacity:.4}.mini-status--active{color:var(--blue-mid)}.mini-status--completed{color:var(--green)}.quick-actions{flex-direction:column;gap:6px;display:flex}.quick-action-btn{border-radius:var(--radius);background:var(--bg);color:var(--text);border:1px solid #0000;align-items:center;gap:10px;min-height:44px;padding:10px 12px;font-size:.85rem;font-weight:500;text-decoration:none;transition:background .15s,color .15s;display:flex}.quick-action-btn:hover{background:var(--blue-light);color:var(--blue-mid);border-color:#bfdbfe;text-decoration:none}.quick-action-btn span{font-size:1rem}.cta-continue{color:var(--blue-mid);font-size:.8rem;font-weight:600}.dashboard-section{margin-bottom:32px}.section-header{justify-content:space-between;align-items:center;margin-bottom:14px;display:flex}.section-header h2{font-size:1rem;font-weight:600}.section-link{color:var(--blue-mid);font-size:.83rem;font-weight:500;text-decoration:none}.section-link:hover{text-decoration:underline}.lecturer-hero{align-items:stretch}.lecturer-notif-panel{-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:1;background:#ffffff1a;border:1px solid #ffffff2e;border-radius:14px;flex-direction:column;flex-shrink:0;gap:8px;min-width:240px;max-width:300px;padding:16px 18px;display:flex;position:relative}.lecturer-notif-header{color:#fff;justify-content:space-between;align-items:center;margin-bottom:4px;font-size:.85rem;font-weight:600;display:flex}.lecturer-notif-header .text-btn{color:#93c5fd;font-size:.75rem;text-decoration:none}.lecturer-notif-list{flex-direction:column;gap:6px;list-style:none;display:flex}.lecturer-notif-item{color:#ffffffbf;border-bottom:1px solid #ffffff1a;align-items:flex-start;gap:8px;padding:6px 0;font-size:.78rem;display:flex}.lecturer-notif-item.unread{color:#fff}.notif-icon-sm{flex-shrink:0;margin-top:1px;font-size:.9rem}.lecturer-notif-msg{line-height:1.4}.notif-view-all-link{color:#93c5fd;margin-top:auto;font-size:.78rem;text-decoration:none}.notif-view-all-link:hover{color:#fff;text-decoration:underline}.lecturer-body{max-width:1100px;margin:0 auto;padding:28px 48px 48px}.lecturer-list-header{justify-content:space-between;align-items:center;margin-bottom:20px;display:flex}.lecturer-list-header h2{font-size:1.1rem;font-weight:600}.rejection-alert-banner{background:var(--amber-light);border-radius:var(--radius);color:#92400e;border:1px solid #fcd34d;margin-bottom:16px;padding:10px 16px;font-size:.88rem}.lecturer-course-grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px;display:grid}.lec-course-card{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;flex-direction:column;transition:box-shadow .15s;display:flex;overflow:hidden}.lec-course-card:hover{box-shadow:0 4px 16px #0000001a}.lec-course-stripe{flex-shrink:0;height:4px}.lec-course-stripe--draft{background:#9ca3af}.lec-course-stripe--pending{background:var(--amber)}.lec-course-stripe--approved{background:var(--green)}.lec-course-stripe--rejected{background:var(--red)}.lec-course-card-body{flex-direction:column;flex:1;gap:8px;padding:16px 18px;display:flex}.lec-course-card-top{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.lec-course-title{color:var(--text);margin-bottom:2px;font-size:.98rem;font-weight:600;line-height:1.4}.lec-course-desc{color:var(--muted);font-size:.82rem;line-height:1.5}.lec-course-meta-row{color:var(--muted);flex-wrap:wrap;gap:14px;font-size:.78rem;display:flex}.lec-course-actions{border-top:1px solid var(--border);flex-wrap:wrap;gap:8px;margin-top:10px;padding-top:12px;display:flex}.navbar-role-badge{background:var(--blue-light);color:var(--blue);border:1px solid #bfdbfe;border-radius:999px;padding:4px 10px;font-size:.75rem;font-weight:600}@media (width<=900px){.dash-body{grid-template-columns:1fr;padding:20px 20px 40px}.dash-sidebar{display:none}.dash-hero{padding:28px 20px}.lecturer-body{padding:20px 20px 40px}.dash-hero-stage,.lecturer-notif-panel{width:100%;min-width:auto;max-width:100%}}@media (width<=600px){.dash-hero-title{font-size:1.35rem}.lecturer-course-grid{grid-template-columns:1fr}.lec-course-actions{flex-direction:column}.lec-course-actions button,.lec-course-actions a{justify-content:center;width:100%}}.navbar-notif-wrap{position:relative}.navbar-notif-btn{cursor:pointer;border-radius:var(--radius);background:0 0;border:none;justify-content:center;align-items:center;min-width:44px;min-height:44px;font-size:1.15rem;transition:background .15s;display:flex;position:relative}.navbar-notif-btn:hover{background:var(--bg)}.navbar-notif-badge{background:var(--red);color:#fff;border-radius:999px;justify-content:center;align-items:center;min-width:16px;height:16px;padding:0 3px;font-size:.6rem;font-weight:700;display:flex;position:absolute;top:5px;right:5px}.navbar-notif-dropdown{border:1px solid var(--border);border-radius:var(--radius-lg);z-index:500;background:#fff;width:320px;position:absolute;top:calc(100% + 8px);right:0;overflow:hidden;box-shadow:0 8px 24px #0000001f}.navbar-notif-header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;padding:12px 16px;display:flex}.navbar-notif-title{color:var(--text);font-size:.9rem;font-weight:600}.navbar-notif-loading,.navbar-notif-empty{color:var(--muted);text-align:center;padding:16px;font-size:.83rem}.navbar-notif-list{max-height:280px;list-style:none;overflow-y:auto}.navbar-notif-item{border-bottom:1px solid var(--border);align-items:flex-start;gap:10px;padding:10px 16px;transition:background .15s;display:flex;position:relative}.navbar-notif-item:hover{background:var(--bg)}.navbar-notif-item.unread{background:#eff6ff}.navbar-notif-icon{flex-shrink:0;margin-top:1px;font-size:1rem}.navbar-notif-body{flex:1;min-width:0}.navbar-notif-msg{color:var(--text);font-size:.82rem;line-height:1.4}.navbar-notif-time{color:var(--muted);margin-top:2px;font-size:.72rem}.navbar-notif-dot{background:var(--blue-mid);border-radius:50%;flex-shrink:0;width:7px;height:7px;margin-top:4px}.navbar-notif-view-all{text-align:center;color:var(--blue-mid);border-top:1px solid var(--border);padding:10px 16px;font-size:.83rem;font-weight:500;text-decoration:none;transition:background .15s;display:block}.navbar-notif-view-all:hover{background:var(--bg);text-decoration:none}.navbar-dropdown-header{align-items:center;gap:10px;padding:14px 16px;display:flex}.navbar-dropdown-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;font-size:.82rem;font-weight:700;display:flex}.navbar-dropdown-name{color:var(--text);font-size:.88rem;font-weight:600;line-height:1.3}.navbar-dropdown-role{color:var(--muted);font-size:.73rem}.success-banner{border-radius:var(--radius);color:#166534;background:#dcfce7;border:1px solid #86efac;margin-bottom:14px;padding:10px 14px;font-size:.88rem}.progress-page-header{justify-content:space-between;align-items:flex-start;margin-bottom:24px;display:flex}.deadline-item--stage{cursor:default}.resource-type-toggle{flex-wrap:wrap;gap:8px;display:flex}.resource-type-btn{border:1px solid var(--border);border-radius:var(--radius);background:var(--bg);cursor:pointer;min-height:44px;color:var(--muted);padding:0 18px;font-size:.88rem;font-weight:500;transition:all .15s}.resource-type-btn:hover{border-color:var(--blue-mid);color:var(--blue-mid)}.resource-type-btn.active{background:var(--blue-light);border-color:var(--blue-mid);color:var(--blue-mid)}.field-hint{color:var(--muted);margin-top:4px;font-size:.75rem;display:block}.url-preview{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius);color:var(--text);align-items:center;gap:8px;margin-top:6px;padding:6px 12px;font-size:.82rem;font-weight:500;display:inline-flex}.file-drop-zone{border:2px dashed var(--border);border-radius:var(--radius-lg);cursor:pointer;text-align:center;background:var(--bg);justify-content:center;align-items:center;min-height:110px;padding:24px;transition:border-color .15s,background .15s;display:flex}.file-drop-zone:hover{border-color:var(--blue-mid);background:var(--blue-light)}.file-drop-inner{flex-direction:column;align-items:center;gap:6px;display:flex}.file-drop-icon{font-size:2rem}.file-drop-text{color:var(--text);font-size:.9rem;font-weight:500}.file-drop-hint{color:var(--muted);font-size:.78rem}.file-selected{text-align:left;align-items:center;gap:12px;width:100%;display:flex}.file-icon{flex-shrink:0;font-size:1.8rem}.file-name{color:var(--text);word-break:break-all;font-size:.88rem;font-weight:500}.file-size{color:var(--muted);margin-top:2px;font-size:.75rem}.file-clear-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;flex-shrink:0;margin-left:auto;padding:4px;font-size:1rem}.file-clear-btn:hover{color:var(--red)}.upload-progress-wrap{align-items:center;gap:10px;margin-top:10px;display:flex}.upload-progress-bar{background:var(--border);border-radius:3px;flex:1;height:6px;overflow:hidden}.upload-progress-fill{background:var(--blue-mid);border-radius:3px;height:100%;transition:width .2s}.upload-progress-label{color:var(--muted);flex-shrink:0;font-size:.78rem}.pola-error-page{background:#f3f4f6;justify-content:center;align-items:center;height:calc(100vh - 60px);padding:24px;display:flex}.pola-error-box{border:1px solid var(--border);border-radius:var(--radius-lg);text-align:center;width:100%;max-width:380px;box-shadow:var(--shadow);background:#fff;flex-direction:column;align-items:center;gap:14px;padding:40px 32px;display:flex}.pola-error-box h2{font-size:1.05rem;font-weight:600}.pola-error-box p{color:var(--muted);font-size:.87rem;line-height:1.6}.pola-page{background:#f3f4f6;height:calc(100vh - 60px);display:flex;position:relative;overflow:hidden}.pola-sidebar-overlay{z-index:150;background:#00000059;position:fixed;inset:0}.pola-sidebar{border-right:1px solid var(--border);z-index:200;background:#fff;flex-direction:column;flex-shrink:0;width:260px;transition:transform .22s;display:flex;position:absolute;top:0;bottom:0;left:0;overflow:hidden;transform:translate(-100%);box-shadow:4px 0 20px #00000014}.pola-sidebar--open{transform:translate(0)}@media (width>=768px){.pola-sidebar{z-index:auto;box-shadow:none;position:relative;transform:none}.pola-sidebar-overlay{display:none}}.pola-sidebar-header{border-bottom:1px solid var(--border);flex-shrink:0;justify-content:space-between;align-items:center;padding:14px 16px;display:flex}.pola-sidebar-title{color:var(--text);font-size:.85rem;font-weight:600}.pola-new-chat-btn{border:1px dashed var(--border);border-radius:var(--radius);color:var(--blue-mid);cursor:pointer;text-align:left;background:0 0;flex-shrink:0;align-items:center;gap:6px;min-height:44px;margin:10px 12px;padding:0 14px;font-size:.84rem;font-weight:500;transition:background .15s,border-color .15s;display:flex}.pola-new-chat-btn:hover:not(:disabled){background:var(--blue-light);border-color:var(--blue-mid)}.pola-new-chat-btn:disabled{opacity:.5;cursor:not-allowed}.pola-sidebar-empty{color:var(--muted);text-align:center;padding:16px;font-size:.8rem}.pola-sessions-list{flex:1;padding:4px 0;list-style:none;overflow-y:auto}.pola-session-item{cursor:pointer;text-align:left;background:0 0;border:none;width:100%;min-height:44px;padding:0;transition:background .15s;display:block}.pola-session-item:hover{background:var(--bg)}.pola-session-item--active{background:var(--blue-light)}.pola-session-item--active:hover{background:#dbeafe}.pola-session-info{flex-direction:column;gap:2px;padding:8px 16px;display:flex}.pola-session-title{color:var(--text);text-overflow:ellipsis;white-space:nowrap;font-size:.81rem;line-height:1.4;overflow:hidden}.pola-session-live{color:#22c55e;font-size:.6rem}.pola-session-date{color:var(--muted);font-size:.7rem}.pola-main{background:#f9fafb;flex-direction:column;flex:1;min-width:0;display:flex;overflow:hidden}.pola-chat-header{border-bottom:1px solid var(--border);background:#fff;flex-shrink:0;align-items:center;gap:10px;padding:10px 14px;display:flex}.pola-chat-header-info{flex:1;align-items:center;gap:10px;display:flex}.pola-name{font-size:.9rem;font-weight:600;line-height:1.2}.pola-status{color:var(--muted);font-size:.7rem}.pola-new-chat-icon{margin-left:auto}@media (width>=768px){.pola-chat-header>.icon-btn:first-child{display:none}}.pola-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-weight:700;display:flex}.pola-avatar--xl{width:56px;height:56px;font-size:1.4rem}.pola-avatar--sm{width:30px;height:30px;font-size:.76rem}.pola-bubble-avatar{align-self:flex-end}.pola-user-avatar{width:30px;height:30px;color:var(--text);background:#e5e7eb;border-radius:50%;flex-shrink:0;justify-content:center;align-self:flex-end;align-items:center;font-size:.76rem;font-weight:700;display:flex}.pola-messages{scroll-behavior:smooth;overscroll-behavior:contain;flex-direction:column;flex:1;gap:14px;padding:20px 16px 8px;display:flex;overflow-y:auto}.pola-connecting{color:var(--muted);flex-direction:column;flex:1;justify-content:center;align-items:center;gap:14px;min-height:160px;font-size:.88rem;display:flex}.pola-spinner{border:3px solid var(--border);border-top-color:var(--blue-mid);border-radius:50%;width:32px;height:32px;animation:.7s linear infinite pola-spin}@keyframes pola-spin{to{transform:rotate(360deg)}}.pola-welcome{text-align:center;flex-direction:column;align-items:center;gap:10px;width:100%;max-width:420px;margin:0 auto;padding:32px 16px 16px;display:flex}.pola-welcome h2{color:var(--text);margin-top:6px;font-size:1.15rem;font-weight:600}.pola-welcome-sub{color:var(--muted);max-width:320px;font-size:.87rem;line-height:1.6}.pola-suggestions{flex-direction:column;gap:8px;width:100%;max-width:380px;margin-top:8px;display:flex}.pola-suggestion-btn{border:1px solid var(--border);border-radius:var(--radius);text-align:left;cursor:pointer;min-height:44px;color:var(--text);background:#fff;padding:11px 14px;font-size:.84rem;line-height:1.4;transition:background .15s,border-color .15s,color .15s}.pola-suggestion-btn:hover{background:var(--blue-light);border-color:var(--blue-mid);color:var(--blue-mid)}.pola-bubble-row{align-items:flex-end;gap:8px;max-width:100%;display:flex}.pola-bubble-row--user{flex-direction:row-reverse}.pola-bubble-row--assistant{flex-direction:row}.pola-bubble{word-break:break-word;border-radius:16px;max-width:min(72%,480px);padding:10px 14px;font-size:.9rem;line-height:1.55}.pola-bubble--assistant{border:1px solid var(--border);color:var(--text);background:#fff;border-bottom-left-radius:4px}.pola-bubble--user{background:var(--blue);color:#fff;border-bottom-right-radius:4px}.pola-bubble-text{white-space:pre-wrap;margin:0}.pola-bubble-time{opacity:.55;text-align:right;margin-top:5px;font-size:.66rem;display:block}.pola-typing{align-items:center;gap:5px;min-height:22px;padding:4px 2px;display:flex}.pola-typing span{background:var(--muted);border-radius:50%;width:7px;height:7px;animation:1.2s ease-in-out infinite pola-bounce;display:block}.pola-typing span:nth-child(2){animation-delay:.15s}.pola-typing span:nth-child(3){animation-delay:.3s}@keyframes pola-bounce{0%,60%,to{transform:translateY(0)}30%{transform:translateY(-6px)}}.pola-msg-error{background:var(--red-light);color:#991b1b;border-top:1px solid #fca5a5;flex-shrink:0;justify-content:space-between;align-items:center;padding:8px 14px;font-size:.81rem;display:flex}.pola-input-bar{border-top:1px solid var(--border);background:#fff;flex-shrink:0;align-items:flex-end;gap:8px;padding:12px 14px;display:flex}.pola-input{resize:none;border:1px solid var(--border);min-height:44px;max-height:120px;color:var(--text);background:#f9fafb;border-radius:22px;outline:none;flex:1;padding:10px 16px;font-family:inherit;font-size:.9rem;line-height:1.5;transition:border-color .15s,box-shadow .15s,background .15s;overflow-y:auto}.pola-input:focus{border-color:var(--blue-mid);background:#fff;box-shadow:0 0 0 3px #2563eb1a}.pola-input::placeholder{color:#9ca3af}.pola-input:disabled{background:var(--bg);cursor:not-allowed;opacity:.6}.pola-send-btn{background:var(--blue);color:#fff;cursor:pointer;border:none;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:44px;height:44px;transition:background .15s,transform .1s;display:flex}.pola-send-btn:hover:not(:disabled){background:var(--blue-mid)}.pola-send-btn:active:not(:disabled){transform:scale(.93)}.pola-send-btn:disabled{background:var(--muted);cursor:not-allowed;transform:none}.pola-send-spinner{border:2px solid #ffffff4d;border-top-color:#fff;border-radius:50%;width:14px;height:14px;animation:.6s linear infinite pola-spin}.pola-footer-note{text-align:center;color:var(--muted);background:#fff;flex-shrink:0;padding:4px 16px 8px;font-size:.7rem}@media (width<=480px){.pola-bubble{max-width:86%;font-size:.87rem}.pola-messages{gap:10px;padding:14px 12px 6px}.pola-welcome{padding:20px 12px 12px}.pola-welcome h2{font-size:1rem}.pola-input-bar{gap:6px;padding:10px}.pola-input{padding:9px 14px;font-size:.87rem}}@media (width>=768px){.pola-messages{gap:16px;padding:24px 24px 8px}.pola-input-bar{padding:14px 20px}.pola-bubble{max-width:min(65%,540px)}}.profile-toast,.course-toast{color:#fff;z-index:1000;white-space:nowrap;pointer-events:none;background:#1a3c6e;border-radius:999px;padding:10px 20px;font-size:.88rem;font-weight:500;animation:.25s toast-in;position:fixed;top:72px;left:50%;transform:translate(-50%);box-shadow:0 4px 20px #0000002e}@keyframes toast-in{0%{opacity:0;transform:translate(-50%)translateY(-8px)}to{opacity:1;transform:translate(-50%)translateY(0)}}.profile-page{flex-direction:column;gap:18px;max-width:780px;margin:0 auto;padding:28px 24px 60px;display:flex}.profile-hero-card{border-radius:var(--radius-lg);border:1px solid var(--border);background:#fff;position:relative;overflow:hidden;box-shadow:0 2px 12px #00000017}.profile-hero-bg{background:linear-gradient(135deg,#0f2550 0%,#1a3c6e 50%,#2563eb 100%);height:100px;position:relative}.profile-hero-bg:after{content:"";background-image:radial-gradient(#ffffff12 1px,#0000 1px);background-size:24px 24px;position:absolute;inset:0}.profile-hero-content{flex-wrap:wrap;align-items:flex-end;gap:18px;margin-top:-42px;padding:0 28px 24px;display:flex;position:relative}.profile-avatar-wrap{flex-shrink:0;position:relative}.profile-avatar-ring{background:linear-gradient(135deg,#1a3c6e,#2563eb);border:4px solid #fff;border-radius:50%;justify-content:center;align-items:center;width:84px;height:84px;display:flex;overflow:hidden;box-shadow:0 2px 10px #00000026}.profile-avatar-img{object-fit:cover;width:100%;height:100%}.profile-avatar-initials{color:#fff;font-size:1.8rem;font-weight:700}.profile-avatar-upload-btn{border:1px solid var(--border);cursor:pointer;background:#fff;border-radius:50%;justify-content:center;align-items:center;width:26px;height:26px;font-size:.72rem;transition:background .15s;display:flex;position:absolute;bottom:2px;right:2px;box-shadow:0 1px 4px #00000026}.profile-avatar-upload-btn:hover{background:var(--blue-light)}.profile-hero-info{flex:1;min-width:180px;padding-top:44px}.profile-hero-name{color:var(--text);margin-bottom:6px;font-size:1.35rem;font-weight:700;line-height:1.2}.profile-hero-badges{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:6px;display:flex}.profile-role-badge{background:var(--blue-light);color:var(--blue);border:1px solid #bfdbfe;border-radius:999px;padding:3px 10px;font-size:.72rem;font-weight:600}.profile-uni-badge{background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:999px;padding:3px 10px;font-size:.72rem}.profile-hero-bio{color:var(--muted);margin-top:4px;font-size:.85rem;line-height:1.5}.profile-edit-btn{flex-shrink:0;align-self:flex-end;margin-bottom:0}.profile-stats-row{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;flex-wrap:wrap;align-items:center;gap:20px;padding:18px 24px;display:flex}.profile-stat{text-align:center;flex:1}.profile-stat-val{color:var(--blue);margin-bottom:4px;font-size:1.5rem;font-weight:700;line-height:1}.profile-stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-size:.72rem}.profile-stat-divider{background:var(--border);flex-shrink:0;width:1px;height:36px}.profile-card{border:1px solid var(--border);border-radius:var(--radius-lg);box-shadow:var(--shadow);background:#fff;padding:24px 28px}.profile-card--secondary{background:var(--bg)}.profile-section-title{color:var(--text);border-bottom:1px solid var(--border);margin-bottom:18px;padding-bottom:10px;font-size:.92rem;font-weight:600}.profile-details-grid{grid-template-columns:1fr 1fr;gap:18px;display:grid}.profile-detail-row{flex-direction:column;gap:3px;display:flex}.profile-detail-label{text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-size:.7rem;font-weight:500}.profile-detail-value{color:var(--text);font-size:.92rem;line-height:1.5}.profile-not-set{color:var(--muted);font-style:italic}.profile-bio-block{border-top:1px solid var(--border);margin-top:18px;padding-top:14px}.profile-bio-text{color:var(--text);margin-top:6px;font-size:.9rem;line-height:1.6}.profile-field-grid{grid-template-columns:1fr 1fr;gap:14px;margin-bottom:20px;display:grid}.profile-save-row{flex-wrap:wrap;gap:10px;display:flex}.profile-password-note{border-top:1px solid var(--border);color:var(--muted);margin-top:14px;padding-top:12px;font-size:.82rem}.profile-password-note a{color:var(--blue-mid)}.profile-skeleton-hero{border-radius:var(--radius-lg);background:#e5e7eb;height:180px}.course-enroll-bar{background:var(--blue-light);border-radius:var(--radius-lg);border:1px solid #bfdbfe;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:14px;margin-bottom:16px;padding:14px 20px;display:flex}.course-enroll-bar p{color:var(--blue);font-size:.9rem;font-weight:500}.course-progress-footer{justify-content:space-between;align-items:center;margin-top:4px;display:flex}.course-complete-badge{color:var(--green);background:var(--green-light);border-radius:999px;padding:3px 10px;font-size:.82rem;font-weight:600}.modules-list-v2{flex-direction:column;gap:10px;display:flex}.module-card{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;transition:box-shadow .15s;overflow:hidden}.module-card:hover{box-shadow:0 2px 10px #00000014}.module-card--done{background:#f0fdf4;border-color:#86efac}.module-card--expanded{border-color:var(--blue-mid)}.module-card-header{-webkit-user-select:none;user-select:none;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.module-card-left{flex:1;align-items:center;gap:12px;min-width:0;display:flex}.module-card-right{flex-wrap:wrap;flex-shrink:0;align-items:center;gap:8px;display:flex}.module-number{background:var(--bg);border:1px solid var(--border);width:32px;height:32px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.8rem;font-weight:600;display:flex}.module-number--done{background:var(--green);border-color:var(--green);color:#fff}.module-info{flex:1;min-width:0}.module-title{color:var(--text);white-space:nowrap;text-overflow:ellipsis;font-size:.9rem;font-weight:500;overflow:hidden}.module-meta{color:var(--muted);margin-top:2px;font-size:.75rem}.module-has-video{color:var(--blue-mid)}.module-has-link{color:var(--muted)}.module-done-label{color:var(--green);font-size:.78rem;font-weight:600}.module-video-player{border-top:1px solid var(--border);aspect-ratio:16/9;background:#000;width:100%;position:relative}.module-video-iframe,.module-video-native{border:none;width:100%;height:100%;display:block}@media (width<=560px){.profile-hero-content{margin-top:-36px;padding:0 16px 20px}.profile-details-grid,.profile-field-grid{grid-template-columns:1fr}.profile-stats-row{gap:12px}.profile-page{padding:16px 14px 48px}.module-card-header{flex-direction:column;align-items:flex-start}.module-card-right{justify-content:flex-end;width:100%}.course-enroll-bar{text-align:center;flex-direction:column}}.section-count{background:var(--bg);color:var(--muted);border:1px solid var(--border);border-radius:999px;justify-content:center;align-items:center;margin-left:8px;padding:1px 8px;font-size:.72rem;font-weight:600;line-height:1.6;display:inline-flex}.section-count--green{background:var(--green-light);color:#166534;border-color:#86efac}.course-card--progress{position:relative}.course-card--done .course-card-body{background:#f0fdf4}.course-card--done:hover{box-shadow:0 4px 16px #16a34a26}.course-done-ribbon{background:var(--green);color:#fff;z-index:2;letter-spacing:.03em;border-radius:999px;padding:3px 10px;font-size:.7rem;font-weight:700;position:absolute;top:10px;right:10px}.course-progress-block{flex-direction:column;gap:4px;margin-top:4px;display:flex}.course-progress-bar-row{align-items:center;gap:8px;display:flex}.course-progress-pct{text-align:right;flex-shrink:0;min-width:36px;font-size:.78rem;font-weight:700}.course-progress-meta{color:var(--muted);font-size:.73rem;line-height:1.4}.dash-sidebar-stats{align-items:center;gap:0;padding:4px 0;display:flex}.dash-sidebar-stat{flex-direction:column;flex:1;align-items:center;gap:3px;padding:8px 4px;display:flex}.dash-sidebar-stat-divider{background:var(--border);flex-shrink:0;width:1px;height:36px}.dash-sidebar-stat-val{font-size:1.4rem;font-weight:700;line-height:1}.dash-sidebar-stat-val--blue{color:var(--blue-mid)}.dash-sidebar-stat-val--green{color:var(--green)}.dash-sidebar-stat-val--amber{color:var(--amber)}.dash-sidebar-stat-label{color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:.68rem}.dash-path-change-btn{color:#ffffffb3;cursor:pointer;background:#ffffff1f;border:1px solid #fff3;border-radius:6px;min-height:28px;padding:4px 10px;font-size:.75rem;transition:background .15s,color .15s}.dash-path-change-btn:hover{color:#fff;background:#ffffff38}.dash-path-change-link{text-align:center;border-top:1px solid var(--border);width:100%;color:var(--blue-mid);cursor:pointer;background:0 0;border-bottom:none;border-left:none;border-right:none;margin-top:12px;padding-top:10px;font-size:.8rem;font-weight:500;transition:color .15s;display:block}.dash-path-change-link:hover{color:var(--blue);text-decoration:underline}.modal-overlay{z-index:600;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#00000080;justify-content:center;align-items:center;padding:20px;display:flex;position:fixed;inset:0}.path-modal{background:#fff;border-radius:16px;flex-direction:column;width:100%;max-width:540px;max-height:90vh;display:flex;overflow-y:auto;box-shadow:0 20px 60px #0003}.path-modal-header{justify-content:space-between;align-items:flex-start;gap:12px;padding:24px 28px 0;display:flex}.path-modal-title{color:var(--text);margin-bottom:4px;font-size:1.15rem;font-weight:700}.path-modal-sub{color:var(--muted);font-size:.85rem}.modal-close-btn{background:var(--bg);border:1px solid var(--border);cursor:pointer;width:32px;height:32px;color:var(--muted);border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;font-size:.82rem;transition:background .15s;display:flex}.modal-close-btn:hover{background:var(--border)}.path-modal-context{background:var(--blue-light);border-radius:var(--radius);border:1px solid #bfdbfe;flex-direction:column;gap:3px;margin:16px 28px 0;padding:10px 14px;display:flex}.path-modal-context-label{text-transform:uppercase;letter-spacing:.06em;color:var(--blue-mid);font-size:.7rem;font-weight:600}.path-modal-context-text{color:var(--blue);font-size:.85rem}.path-modal-body{padding:20px 28px 28px}.reason-grid{flex-direction:column;gap:8px;margin-bottom:4px;display:flex}.reason-btn{border:1px solid var(--border);border-radius:var(--radius);text-align:left;cursor:pointer;background:#fff;align-items:center;gap:12px;min-height:48px;padding:12px 16px;transition:border-color .15s,background .15s;display:flex}.reason-btn:hover,.reason-btn--selected{border-color:var(--blue-mid);background:var(--blue-light)}.reason-icon{flex-shrink:0;font-size:1.1rem}.reason-label{color:var(--text);font-size:.88rem;line-height:1.4}.path-modal-actions{flex-wrap:wrap;justify-content:flex-end;gap:10px;margin-top:20px;display:flex}.path-modal-generating{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:12px;padding:48px 28px;display:flex}.path-modal-spinner{border:4px solid var(--border);border-top-color:var(--blue-mid);border-radius:50%;width:48px;height:48px;animation:.8s linear infinite spin}.path-modal-generating h3{font-size:1rem;font-weight:600}.path-modal-generating p{color:var(--muted);max-width:340px;font-size:.87rem}.path-modal-ready-icon{font-size:3rem}.path-modal-steps{border-top:1px solid var(--border);justify-content:center;align-items:center;gap:0;padding:16px 0 20px;display:flex}.path-modal-step-dot{background:var(--border);border-radius:50%;width:10px;height:10px;transition:background .2s}.path-modal-step-dot.active{background:var(--blue-mid)}.path-modal-step-line{background:var(--border);width:40px;height:2px}.course-detail-tabs{border-bottom:2px solid var(--border);scrollbar-width:none;gap:4px;margin-top:4px;margin-bottom:20px;display:flex;overflow-x:auto}.course-detail-tabs::-webkit-scrollbar{display:none}.course-detail-tab{color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:none;border-bottom:2px solid #0000;align-items:center;gap:6px;min-height:44px;margin-bottom:-2px;padding:10px 16px;font-size:.88rem;font-weight:500;transition:color .15s,border-color .15s;display:flex}.course-detail-tab:hover{color:var(--text)}.course-detail-tab--active{color:var(--blue-mid);border-bottom-color:var(--blue-mid)}.tab-count{background:var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:999px;justify-content:center;align-items:center;padding:1px 6px;font-size:.68rem;font-weight:600;display:inline-flex}.course-detail-tab--active .tab-count{background:var(--blue-light);color:var(--blue-mid);border-color:#bfdbfe}.course-comments{padding-top:4px}.course-comments-header{justify-content:space-between;align-items:center;margin-bottom:16px;display:flex}.course-comments-header h2{font-size:1rem;font-weight:600}.comments-count{background:var(--bg);border:1px solid var(--border);color:var(--muted);border-radius:999px;justify-content:center;align-items:center;margin-left:8px;padding:1px 8px;font-size:.72rem;font-weight:600;display:inline-flex}.comment-composer{align-items:flex-start;gap:12px;margin-bottom:20px;display:flex}.comment-composer-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:36px;height:36px;margin-top:2px;font-size:.8rem;font-weight:700;display:flex}.comment-composer-right{flex:1;min-width:0}.comment-input{border:1px solid var(--border);border-radius:var(--radius);resize:vertical;outline:none;width:100%;padding:10px 14px;font-family:inherit;font-size:.9rem;line-height:1.5;transition:border-color .15s,box-shadow .15s}.comment-input:focus{border-color:var(--blue-mid);box-shadow:0 0 0 3px #2563eb1a}.comment-input--reply{min-height:72px;margin-bottom:0}.comment-composer-footer{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;margin-top:8px;display:flex}.anon-toggle{cursor:pointer;align-items:center;gap:8px;display:flex}.anon-toggle input[type=checkbox]{width:16px;height:16px;accent-color:var(--blue-mid);cursor:pointer}.anon-toggle-label{color:var(--text);flex-direction:column;gap:1px;font-size:.83rem;font-weight:500;display:flex}.anon-toggle-hint{color:var(--muted);font-size:.72rem}.anon-toggle--sm{color:var(--muted);flex-direction:row;gap:6px;font-size:.82rem}.anon-toggle--sm span{font-size:.82rem}.comments-enroll-notice{background:var(--bg);border:1px dashed var(--border);border-radius:var(--radius);color:var(--muted);text-align:center;margin-bottom:16px;padding:14px 18px;font-size:.87rem}.comments-list{flex-direction:column;gap:0;display:flex}.comment-item{border-bottom:1px solid var(--border);gap:12px;padding:16px 0;display:flex}.comment-item:last-child{border-bottom:none}.comment-item--reply{padding:10px 0}.comment-item--lecturer{border-left:3px solid var(--blue-mid);margin-left:-12px;padding-left:12px}.comment-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-self:flex-start;align-items:center;width:36px;height:36px;font-size:.8rem;font-weight:700;display:flex}.comment-avatar--sm{width:28px;height:28px;font-size:.68rem}.comment-avatar[data-anon=true]{background:#9ca3af;font-size:1rem}.comment-content{flex:1;min-width:0}.comment-meta{flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:4px;display:flex}.comment-author{color:var(--text);font-size:.85rem;font-weight:600}.comment-time{color:var(--muted);font-size:.73rem}.comment-role-badge{background:var(--blue-light);color:var(--blue-mid);text-transform:uppercase;letter-spacing:.04em;border:1px solid #bfdbfe;border-radius:999px;padding:1px 7px;font-size:.68rem;font-weight:700}.comment-text{color:var(--text);white-space:pre-wrap;word-break:break-word;font-size:.88rem;line-height:1.6}.comment-actions{align-items:center;gap:12px;margin-top:8px;display:flex}.comment-like-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;align-items:center;gap:4px;min-height:32px;padding:4px 0;font-size:.8rem;transition:color .15s;display:flex}.comment-like-btn:hover{color:var(--text)}.comment-like-btn--liked{color:#e11d48}.comment-reply-btn{cursor:pointer;color:var(--muted);background:0 0;border:none;min-height:32px;padding:4px 0;font-size:.8rem;font-weight:500;transition:color .15s}.comment-reply-btn:hover{color:var(--blue-mid)}.comment-replies{border-left:2px solid var(--border);flex-direction:column;gap:0;margin-top:12px;padding-left:16px;display:flex}.reply-composer{border-top:1px solid var(--border);margin-top:12px;padding-top:12px}.comments-show-more{border:1px dashed var(--border);border-radius:var(--radius);width:100%;color:var(--blue-mid);cursor:pointer;background:0 0;min-height:40px;margin-top:8px;padding:10px;font-size:.83rem;transition:background .15s}.comments-show-more:hover{background:var(--blue-light)}.community-board{padding-top:4px}.community-header{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:16px;display:flex}.community-title{margin-bottom:4px;font-size:1rem;font-weight:600}.community-sub{color:var(--muted);font-size:.83rem}.community-compose{background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-lg);margin-bottom:16px;padding:18px 20px}.post-type-row{flex-wrap:wrap;gap:8px;margin-bottom:14px;display:flex}.post-type-btn{border:1px solid var(--border);cursor:pointer;min-height:36px;color:var(--muted);background:#fff;border-radius:999px;align-items:center;gap:6px;padding:6px 14px;font-size:.82rem;transition:all .15s;display:flex}.post-type-btn:hover{border-color:var(--text);color:var(--text)}.post-type-btn--active{font-weight:600}.community-filters{flex-wrap:wrap;gap:6px;margin-bottom:16px;display:flex}.community-filter-btn{border:1px solid var(--border);cursor:pointer;color:var(--muted);background:#fff;border-radius:999px;min-height:34px;padding:5px 14px;font-size:.8rem;transition:all .15s}.community-filter-btn:hover{border-color:var(--blue-mid);color:var(--blue-mid)}.community-filter-btn.active{background:var(--blue);color:#fff;border-color:var(--blue)}.community-posts{flex-direction:column;gap:12px;display:flex}.community-post{border:1px solid var(--border);border-radius:var(--radius-lg);background:#fff;transition:box-shadow .15s;overflow:hidden}.community-post:hover{box-shadow:0 2px 10px #00000012}.community-post--pinned{border-color:var(--blue-mid);box-shadow:0 0 0 1px var(--blue-mid)}.community-pin-badge{background:var(--blue-light);color:var(--blue-mid);letter-spacing:.02em;border-bottom:1px solid #bfdbfe;padding:5px 14px;font-size:.72rem;font-weight:600}.community-post-inner{align-items:flex-start;gap:12px;padding:16px;display:flex}.community-avatar{background:var(--blue);color:#fff;border-radius:50%;flex-shrink:0;justify-content:center;align-items:center;width:38px;height:38px;font-size:.82rem;font-weight:700;display:flex}.community-avatar--sm{width:28px;height:28px;font-size:.7rem}.community-avatar[data-role=lecturer]{background:#7c3aed}.community-post-body{flex:1;min-width:0}.community-post-header{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;margin-bottom:6px;display:flex}.community-author{color:var(--text);font-size:.85rem;font-weight:600}.community-time{color:var(--muted);flex-shrink:0;font-size:.73rem}.community-lecturer-badge{color:#7c3aed;text-transform:uppercase;letter-spacing:.04em;background:#f5f3ff;border:1px solid #ddd6fe;border-radius:999px;padding:1px 7px;font-size:.68rem;font-weight:700}.community-lecturer-badge--sm{padding:0 5px;font-size:.62rem}.community-type-tag{border:1px solid;border-radius:999px;padding:2px 8px;font-size:.72rem;font-weight:600}.community-post-title{color:var(--text);margin-bottom:6px;font-size:.95rem;font-weight:600;line-height:1.4}.community-post-content{color:var(--muted);white-space:pre-wrap;word-break:break-word;-webkit-line-clamp:3;-webkit-box-orient:vertical;font-size:.87rem;line-height:1.6;display:-webkit-box;overflow:hidden}.community-post-content--expanded{-webkit-line-clamp:unset;display:block;overflow:visible}.community-read-more{cursor:pointer;color:var(--blue-mid);background:0 0;border:none;margin-top:4px;padding:4px 0;font-size:.78rem;font-weight:500;display:block}.community-post-actions{align-items:center;gap:12px;margin-top:10px;display:flex}.community-upvote-btn{background:var(--bg);border:1px solid var(--border);cursor:pointer;color:var(--muted);border-radius:999px;align-items:center;gap:6px;min-height:32px;padding:4px 12px;font-size:.8rem;font-weight:600;transition:all .15s;display:flex}.community-upvote-btn:hover{border-color:var(--blue-mid);color:var(--blue-mid);background:var(--blue-light)}.community-upvote-btn--active{background:var(--blue-light);border-color:var(--blue-mid);color:var(--blue-mid)}.community-reply-toggle{cursor:pointer;color:var(--muted);background:0 0;border:none;min-height:32px;padding:4px 0;font-size:.8rem;font-weight:500;transition:color .15s}.community-reply-toggle:hover{color:var(--text)}.community-replies{border-top:1px solid var(--border);flex-direction:column;gap:10px;margin-top:14px;padding-top:12px;display:flex}.community-reply{align-items:flex-start;gap:10px;display:flex}.community-reply-body{flex:1;min-width:0}.community-reply-composer{margin-top:10px}.community-empty{text-align:center;background:var(--bg);border-radius:var(--radius-lg);border:1px dashed var(--border);padding:40px 20px}@media (width<=600px){.path-modal{border-radius:12px 12px 0 0}.modal-overlay{align-items:flex-end;padding:0}.path-modal-header{padding:20px 20px 0}.path-modal-body{padding:16px 20px 24px}.path-modal-context{margin:12px 20px 0}.comment-composer{gap:8px}.comment-composer-avatar{width:30px;height:30px;font-size:.72rem}.comment-composer-footer{flex-direction:column;align-items:flex-start}.community-post-inner{gap:10px;padding:12px}.course-detail-tabs{gap:0}.course-detail-tab{padding:10px 12px;font-size:.82rem}.dash-sidebar-stats{gap:0}.reason-btn{padding:10px 12px}}
