@import url(https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800;900&family=Space+Grotesk:wght@500;600;700&family=JetBrains+Mono:wght@500;600;700&display=swap);@keyframes spin{0%{transform:rotate(0deg)}to{transform:rotate(360deg)}}@keyframes fadeUp{0%{opacity:0;transform:translateY(25px)}to{opacity:1;transform:translateY(0)}}@keyframes floatBot{0%,to{transform:translateY(0)}50%{transform:translateY(-10px)}}@keyframes typingBounce{0%,80%,to{transform:scale(.6);opacity:.4}40%{transform:scale(1);opacity:1}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes pulseGlow{0%,to{box-shadow:0 0 0 rgba(74,144,226,.35)}50%{box-shadow:0 0 30px rgba(74,144,226,.35)}}@keyframes slideUp{0%{opacity:0;transform:translateY(30px)}to{opacity:1;transform:translateY(0)}}@keyframes skeleton{to{transform:translateX(100%)}}@keyframes pulseMic{0%,to{transform:scale(1)}50%{transform:scale(1.15)}}@keyframes glideIn{0%{transform:translateY(4px)}to{transform:translateY(0)}}@keyframes blinkCursor{50%{opacity:0}}@keyframes pulseCurrent{0%,to{transform:scale(1)}50%{transform:scale(1.015)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes flashReply{0%{background:#4f9cff55}to{background:0 0}}@keyframes modalPop{0%{transform:translateY(15px) scale(.96);opacity:0}to{transform:translateY(0) scale(1);opacity:1}}@keyframes reactionPopup{0%{opacity:0;transform:translateY(10px) scale(.9)}to{opacity:1;transform:translateY(0) scale(1)}}:root{--primary:#14C7B4;--primary-dark:#0D9488;--secondary:#6366F1;--primary-color:var(--primary);--success:#10B981;--danger:#EF4444;--warning:#F59E0B;--info:#3B82F6;--urgent:#DC2626;--important:#F59E0B;--information:#2563EB;--white:#FFFFFF;--background:#F5F7FB;--surface:#FFFFFF;--surface-hover:#F8FAFC;--border:#E5E7EB;--text:#1F2937;--text-light:#6B7280;--font-display:"Space Grotesk", "Inter", sans-serif;--font-mono:"JetBrains Mono", Consolas, monospace;--shadow-sm:0 2px 8px rgba(0,0,0,.06);--shadow-md:0 10px 30px rgba(0,0,0,.08);--shadow-lg:0 20px 40px rgba(0,0,0,.12);--radius:18px;--transition:.25s ease}h1,h2,h3,h4,h5,h6{font-family:var(--font-display);letter-spacing:-.02em}*{margin:0;padding:0;box-sizing:border-box}html{scroll-behavior:smooth}body{font-family:"Inter",sans-serif;background:var(--background);color:var(--text);overflow-x:hidden}img{display:block;max-width:100%;height:auto}img[hidden]{display:none!important}button{border:0;outline:0;cursor:pointer}button,input{font-family:inherit}a{text-decoration:none;color:inherit}::-webkit-scrollbar{width:8px}::-webkit-scrollbar-thumb{background:var(--primary);border-radius:20px}::-webkit-scrollbar-track{background:#edf2f7}#loading-screen,.branding-logo[hidden]{display:none}.loader{width:70px;height:70px;border-radius:50%;border:6px solid #dbeafe;border-top:6px solid var(--primary);animation:spin 1s linear infinite}#loading-screen h2{color:var(--primary);font-size:1.8rem}#loading-screen p,.nav-group h4,.sidebar-header-text p,.student-profile small{color:var(--text-light)}.portal-container{display:flex;min-height:100vh}.sidebar{width:285px;background:#fff;position:fixed;top:0;left:0;bottom:0;overflow-y:auto;box-shadow:var(--shadow-md);padding:28px;z-index:500;transform:translateX(0)}.sidebar-header{display:flex;align-items:center;gap:12px;margin-bottom:35px}.branding-logo{display:block;width:44px;height:44px;object-fit:contain;border-radius:12px;background:#fff;padding:4px;flex-shrink:0}.sidebar-header-text h2{color:var(--primary);font-size:1.7rem;font-weight:800}.sidebar-header-text p{margin-top:4px}.sidebar nav{display:flex;flex-direction:column;gap:28px}.nav-group h4{font-size:.75rem;text-transform:uppercase;letter-spacing:1px;margin-bottom:10px}.nav-item{position:relative;width:100%;display:flex;align-items:center;gap:14px;padding:14px 16px;border-radius:14px;background:0 0;transition:var(--transition);color:var(--text);font-size:.95rem;margin-bottom:6px}.announcements-nav-badge,.forum-nav-badge{display:none;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:#ef4444;color:#fff;font-size:.68rem;font-weight:700;line-height:1;margin-left:auto}.announcements-nav-badge.has-count,.forum-nav-badge.has-count{display:inline-flex}.nav-item:hover{background:#eef5ff;color:var(--primary)}.nav-item.active{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;box-shadow:var(--shadow-md)}.nav-item .material-icons{font-size:22px}.main-content{flex:1;margin-left:285px;padding:32px}.topbar{display:flex;justify-content:space-between;align-items:center;margin-bottom:35px}.topbar-left,.topbar-right{display:flex;align-items:center;gap:18px}.icon-btn{width:48px;height:48px;border-radius:14px;background:var(--card-bg, white);border:1px solid var(--border-color, transparent);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm);transition:var(--transition)}.icon-btn:hover{transform:translateY(-2px)}.notification-btn{position:relative}.notification-badge{position:absolute;top:-5px;right:-5px;width:20px;height:20px;background:var(--danger);color:#fff;font-size:.7rem;display:flex;align-items:center;justify-content:center;border-radius:50%}@media (max-width:768px){body,html{font-size:14px}.ai-layout,.portal-container{max-width:100vw!important;width:100%!important;box-sizing:border-box}.ai-input-container input,.ai-input-container textarea,input[type=email],input[type=password],input[type=text],textarea{font-size:16px!important}.ai-header h1{font-size:1.5rem!important}.ai-header p{font-size:.85rem!important}.chat-message p{font-size:.95rem!important;line-height:1.4}*{box-sizing:border-box}}.student-profile{display:flex;align-items:center;gap:12px;background:#fff;padding:8px 14px;border-radius:50px;box-shadow:var(--shadow-sm)}.student-profile img{width:48px;height:48px;border-radius:50%;object-fit:cover}#send-btn.stop-mode i,.student-profile h4{font-size:.95rem}@media (max-width:600px){.topbar{gap:8px}.topbar-left{gap:8px;min-width:0;flex:1 1 auto}.topbar-left>div{min-width:0}.topbar-left h2{font-size:1rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-profile>div,.topbar-left small{display:none}.topbar-right{gap:6px;flex-shrink:0}.topbar .icon-btn{width:38px;height:38px;border-radius:10px}.topbar .icon-btn .material-icons{font-size:1.2rem}.student-profile{padding:4px;gap:0}.student-profile img{width:36px;height:36px}}.page{display:none;animation:fadeIn .35s ease}.page.active{display:block}.page-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:28px;gap:20px;flex-wrap:wrap}.page-header input{width:320px;max-width:100%;background:#fff;border:1px solid var(--border);border-radius:14px;padding:14px 18px;outline:0;transition:var(--transition)}.page-header input:focus{border-color:var(--primary);box-shadow:0 0 0 4px rgba(74,144,226,.12)}.welcome-card{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;padding:38px;border-radius:24px;margin-bottom:28px;position:relative;overflow:hidden}.welcome-card::before{content:"";position:absolute;inset:0;background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);background-size:28px 28px;pointer-events:none}.welcome-card::after{content:"";position:absolute;width:240px;height:240px;border-radius:50%;background:rgba(255,255,255,.08);right:-70px;top:-70px}.welcome-card h1{font-size:2rem;font-weight:800;margin-bottom:10px}.welcome-card p{opacity:.92;max-width:650px;line-height:1.7}.hero-slider{margin-bottom:32px}.announcement-slider{position:relative}.announcement-card{background:#fff;border-radius:24px;padding:30px;box-shadow:var(--shadow-md);min-height:250px;display:flex;flex-direction:column;justify-content:space-between;border-left:8px solid var(--information)}.announcement-card.information{border-left-color:var(--information)}.announcement-card.important{border-left-color:var(--important)}.announcement-card.urgent{border-left-color:var(--urgent)}.announcement-badge{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;font-size:.75rem;font-weight:700;letter-spacing:.6px;text-transform:uppercase;color:#fff}.information .announcement-badge{background:var(--information)}.important .announcement-badge{background:var(--important)}.urgent .announcement-badge{background:var(--urgent)}.announcement-image{width:100%;max-height:220px;object-fit:cover;border-radius:16px;margin-bottom:18px}.announcement-card h2{font-size:1.8rem;margin-bottom:18px;line-height:1.3}.announcement-preview{color:var(--text-light);line-height:1.8;margin-bottom:25px}.slider-arrow,.slider-dots span{border-radius:50%;transition:var(--transition)}.slider-arrow{position:absolute;top:50%;transform:translateY(-50%);width:52px;height:52px;background:#fff;box-shadow:var(--shadow-md);display:flex;align-items:center;justify-content:center}.slider-arrow:hover{transform:translateY(-50%) scale(1.08)}.slider-arrow.left{left:-24px}.slider-arrow.right{right:-24px}@media (max-width:600px){.slider-arrow{width:40px;height:40px}.slider-arrow.left{left:8px}.slider-arrow.right{right:8px}}.slider-dots{display:flex;justify-content:center;gap:10px;margin-top:18px}.slider-dots span{width:12px;height:12px;background:#cbd5e1;cursor:pointer}.slider-dots span.active{width:34px;border-radius:999px;background:var(--primary)}.dashboard-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:22px;margin-bottom:34px}@media (max-width:768px){.dashboard-cards{display:none}}.dashboard-card{background:#fff;border-radius:22px;padding:28px;box-shadow:var(--shadow-sm);transition:var(--transition);text-align:center}.dashboard-card:hover{box-shadow:var(--shadow-lg)}.dashboard-card .material-icons{font-size:42px;color:var(--primary);margin-bottom:18px}.dashboard-card h2{font-size:2rem;margin-bottom:6px}.dashboard-card p,.syllabus-body li{color:var(--text-light)}.dashboard-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:24px}.dashboard-widget{background:#fff;border-radius:22px;padding:24px;box-shadow:var(--shadow-sm)}.widget-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:22px}.widget-header h3{font-size:1.15rem;font-weight:700}.widget-body{min-height:180px}.ai-widget{background:linear-gradient(135deg,#4a90e2,#9013fe);color:#fff}.ai-widget p{line-height:1.8;margin-bottom:24px;opacity:.95}.ai-widget .primary-btn{background:#fff;color:var(--primary)}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:180px;text-align:center;color:var(--text-light)}.empty-state .material-icons{font-size:56px;margin-bottom:18px;color:#cbd5e1}.empty-state p{font-size:.95rem;line-height:1.6}.content-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:24px}.content-list{display:flex;flex-direction:column;gap:18px}.course-card{overflow:hidden}.course-banner{height:120px;background:linear-gradient(135deg,var(--primary),var(--secondary));display:flex;align-items:center;justify-content:center;color:#fff}.course-banner .material-icons{font-size:52px}.course-content{padding:24px}.course-code{display:inline-flex;align-items:center;gap:2px;font-family:var(--font-mono);color:var(--primary);background:rgba(20,199,180,.1);border:1px solid rgba(20,199,180,.25);padding:3px 10px;border-radius:6px;font-weight:600;font-size:.8rem;letter-spacing:.02em;margin-bottom:8px}.course-code::before{content:"<";opacity:.5}.course-code::after{content:"/>";opacity:.5}.course-title{font-size:1.2rem;font-weight:700;margin-bottom:12px}.course-info{display:flex;justify-content:space-between;color:var(--text-light);font-size:.9rem;margin-top:20px}.course-footer{display:flex;justify-content:flex-end;margin-top:24px}.note-card{background:#fff;border-radius:20px;padding:22px;box-shadow:var(--shadow-sm);transition:var(--transition)}.note-card:hover{box-shadow:var(--shadow-md)}.note-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:14px}.note-title{font-size:1.05rem;font-weight:700}.note-course{color:var(--primary);font-size:.9rem;margin-top:4px}.note-date{color:var(--text-light);font-size:.85rem}.note-description{color:var(--text-light);line-height:1.7;margin:16px 0}.note-footer{display:flex;justify-content:space-between;align-items:center}.file-size{color:var(--text-light);font-size:.85rem}.material-card{height:100%}.material-icon{width:62px;height:62px;border-radius:18px;background:#eef5ff;color:var(--primary);display:flex;align-items:center;justify-content:center;flex-shrink:0}.material-icon .material-icons{font-size:32px}.material-body,.ui-modal-actions button{flex:1}.material-body h3{font-size:1.05rem;margin-bottom:8px}.announcement-item p,.material-body p{color:var(--text-light);line-height:1.6}.assignment-card{background:#fff;border-radius:20px;padding:22px;box-shadow:var(--shadow-sm);border-left:6px solid var(--primary)}.assignment-card.overdue{border-left-color:var(--danger)}.assignment-card.pending{border-left-color:var(--warning)}.assignment-card.completed{border-left-color:var(--success)}.assignment-header{display:flex;justify-content:space-between;margin-bottom:14px}.assignment-title{font-size:1.1rem;font-weight:700}.assignment-course{color:var(--primary);margin-top:6px}.assignment-description{margin:18px 0;color:var(--text-light);line-height:1.7}.assignment-footer{display:flex;justify-content:space-between;align-items:center}.status-pill{display:inline-flex;align-items:center;justify-content:center;padding:8px 16px;border-radius:999px;font-size:.8rem;font-weight:600}.status-pill.pending{background:#fef3c7;color:#92400e}.status-pill.completed{background:#dcfce7;color:#166534}.status-pill.overdue{background:#fee2e2;color:#991b1b}.announcement-item h3{margin:16px 0;font-size:1.15rem}.announcement-item-image{width:100%;max-height:200px;object-fit:cover;border-radius:14px;margin-bottom:12px}.announcement-item p{line-height:1.8}.announcement-item-footer{display:flex;justify-content:space-between;align-items:center;margin-top:22px}.syllabus-card{background:#fff;border-radius:20px;overflow:hidden;box-shadow:var(--shadow-sm);transition:var(--transition)}.syllabus-card:hover{box-shadow:var(--shadow-lg)}.syllabus-header{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;padding:20px}.syllabus-header h3{font-size:1.15rem}.syllabus-body{padding:22px}.syllabus-body ul{list-style:none}.syllabus-body li{padding:12px 0;border-bottom:1px solid var(--border)}.syllabus-body li:last-child{border-bottom:none}.syllabus-footer{display:flex;justify-content:flex-end;padding:20px}.ai-layout{display:grid;grid-template-columns:280px 1fr;gap:0;height:calc(100vh - 120px);min-height:700px}.ai-sidebar,.ai-sidebar-header{display:flex;flex-direction:column}.ai-sidebar{background:var(--card-bg);border:0;border-right:1px solid var(--border-color);border-radius:0;overflow:hidden;box-shadow:none}.ai-sidebar-header{padding:20px;border-bottom:1px solid var(--border-color);gap:18px}.ai-search,.new-chat-btn{display:flex;align-items:center;gap:12px}.new-chat-btn{width:100%;height:52px;border:0;border-radius:16px;background:var(--brand-gradient);color:#fff;justify-content:center;cursor:pointer;font-size:.96rem;font-weight:600;transition:.25s}.new-chat-btn:hover{transform:translateY(-2px);box-shadow:0 8px 24px rgba(74,144,226,.35)}.new-chat-btn:active{transform:scale(.98)}.ai-search{background:var(--surface);border:1px solid var(--border-color);border-radius:14px;padding:12px 14px}.ai-search .material-icons{color:var(--text-secondary);font-size:20px}.ai-search input{flex:1;border:0;outline:0;background:0 0;color:var(--text-primary);font-size:.95rem}.ai-search input::placeholder,.chat-footer textarea::placeholder{color:var(--text-secondary)}.chat-list{flex:1;overflow-y:auto;padding:16px}.ai-sidebar-footer{padding:12px;border-top:1px solid var(--border-color)}.ai-sidebar-footer-btn{width:100%;display:flex;align-items:center;gap:10px;padding:10px 12px;border:0;border-radius:12px;background:0 0;color:var(--text-secondary);font-size:.88rem;font-weight:600;font-family:inherit;cursor:pointer;transition:.15s ease}.ai-sidebar-footer-btn:hover{background:var(--surface);color:var(--brand-primary)}.ai-sidebar-footer-btn .material-icons{font-size:20px}.ai-model-picker{position:relative;margin-bottom:4px}.ai-model-picker .ai-sidebar-footer-btn{justify-content:flex-start}.ai-model-btn-chevron{margin-left:auto;font-size:18px!important;transition:transform .15s ease}#ai-model-btn[aria-expanded=true] .ai-model-btn-chevron{transform:rotate(180deg)}.ai-model-menu{position:absolute;bottom:calc(100% + 6px);left:0;right:0;z-index:20;background:var(--surface);border:1px solid var(--border-color);border-radius:12px;box-shadow:var(--shadow-lg);padding:6px;max-height:260px;overflow-y:auto}.ai-model-menu.hide{display:none}.ai-model-option{display:flex;flex-direction:column;align-items:flex-start;gap:2px;width:100%;padding:8px 10px;border:0;border-radius:9px;background:0 0;font-family:inherit;text-align:left;cursor:pointer;transition:.15s ease}.ai-model-option:hover{background:var(--surface-hover)}.ai-model-option.active{background:rgba(74,144,226,.1)}.ai-model-option-name{display:flex;align-items:center;gap:6px;font-size:.86rem;font-weight:600;color:var(--text-primary)}.ai-model-option.active .ai-model-option-name,body.dark .course-header h3{color:var(--brand-primary)}.ai-model-option-name .material-icons{font-size:16px;color:var(--brand-primary);visibility:hidden}.ai-model-option.active .ai-model-option-name .material-icons{visibility:visible}.ai-model-option-desc,.ai-provider-row{font-size:.74rem;color:var(--text-secondary);font-weight:500}.ai-provider-row{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:6px;font-size:.72rem;font-weight:600}.ai-provider-row.hide{display:none}.ai-provider-row .material-icons{font-size:14px}.ai-provider-row.fallback{color:var(--warning,#F59E0B)}.chat-group{margin-bottom:28px}.chat-group-title{font-size:.72rem;font-weight:700;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary);margin-bottom:10px;padding-left:10px}.chat-item{display:flex;align-items:center;gap:12px;border-radius:16px;cursor:pointer;transition:.25s;margin-bottom:8px}.chat-item:hover{background:rgba(74,144,226,.08)}body:not(.dark) .chat-item.active{background:var(--brand-gradient);color:#fff}body.dark .chat-item.active{background:#26344c;color:#fff}body.dark .chat-item.active .chat-preview,body.dark .chat-item.active .chat-time{color:rgba(255,255,255,.75)}body:not(.dark) .suggestion-card .material-icons{background:rgba(74,144,226,.1)}body.dark .suggestion-card .material-icons{background:#243248;color:#7db6ff}.chat-item.active .chat-preview,.chat-item.active .chat-time{color:rgba(255,255,255,.82)}.chat-icon{width:42px;height:42px;border-radius:12px;background:rgba(74,144,226,.12);display:flex;align-items:center;justify-content:center;flex-shrink:0}.chat-item.active .chat-icon{background:rgba(255,255,255,.18)}.chat-details{flex:1;overflow:hidden}.chat-title{font-size:.94rem;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-preview,.chat-time{color:var(--text-secondary)}.chat-preview{margin-top:4px;font-size:.82rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.chat-time{font-size:.74rem;margin-top:6px}.ai-main{background:var(--card-bg);border-radius:0;border:0;box-shadow:none}.ai-header{display:flex;align-items:center;justify-content:space-between;padding:24px 30px;border-bottom:1px solid var(--border-color)}body:not(.dark) .ai-header{background:#fff}body.dark .ai-header{background:#101827}.ai-header h1{font-size:1.8rem;margin:0;font-weight:700}.ai-header p{margin-top:6px;color:var(--text-secondary)}.ai-status{display:flex;align-items:center;gap:10px;padding:10px 18px;background:rgba(74,144,226,.08);border-radius:999px;font-size:.88rem;font-weight:600}.status-dot{width:10px;height:10px;border-radius:50%;background:#22c55e;box-shadow:0 0 12px #22c55e}.chat-messages{flex:1;min-height:0;overflow-y:auto;overflow-x:hidden;padding:20px;scroll-behavior:smooth}.chat-messages>*{max-width:800px;margin-left:auto;margin-right:auto}body:not(.dark) .chat-messages{background:#fff}body.dark .chat-messages{background:#0b0f14}body:not(.dark) .ai-main,body:not(.dark) .ai-sidebar{background:#fff}.message.user .message-bubble{padding:16px 20px;border-radius:18px 18px 4px 18px}.message.assistant .message-bubble{padding:16px 20px;border-radius:18px 18px 18px 4px}:root{--text-primary:var(--text);--text-secondary:var(--text-light);--border-color:var(--border);--brand-primary:var(--primary);--brand-gradient:linear-gradient(135deg, var(--primary), var(--secondary));--card-bg:#FFFFFF}body.dark{--text-primary:#f3f4f6;--text-secondary:#9ca3af;--border-color:#2b3547;--brand-primary:#2DD4BF;--card-bg:#101827;--background:#0F172A;--surface:#1E293B;--surface-hover:#334155;--text:#F8FAFC;--text-light:#CBD5E1;--border:#334155}.chat-item{position:relative;padding:14px 40px 14px 14px}.delete-chat-btn{position:absolute;right:12px;top:50%;transform:translateY(-50%);opacity:0;visibility:hidden;background:0 0;border:0;cursor:pointer;color:#dc3545;padding:6px;border-radius:50%;display:flex;align-items:center;justify-content:center;transition:opacity .2s ease,visibility .2s ease,background-color .2s ease}.chat-item:hover .delete-chat-btn{opacity:1;visibility:visible}.delete-chat-btn:hover{background-color:rgba(220,53,69,.1);color:#bd2130}.delete-chat-btn .material-icons{font-size:18px}.message-bubble{position:relative;padding-bottom:24px}.message.assistant .message-bubble{padding-bottom:0}.message-actions{position:absolute;right:8px;bottom:4px;visibility:hidden;transition:opacity .2s ease,visibility .2s ease}.message:hover .message-actions{opacity:1;visibility:visible}.copy-message-btn{background:0 0;border:0;cursor:pointer;color:#6c757d;padding:4px;border-radius:4px;display:flex;align-items:center;justify-content:center;transition:background-color .2s ease,color .2s ease}.copy-message-btn:hover{background-color:rgba(0,0,0,.05);color:#212529}.message.assistant .copy-message-btn:hover{background-color:rgba(255,255,255,.1);color:#fff}.copy-message-btn .material-icons{font-size:16px}.welcome-screen{max-width:900px;margin:40px auto;text-align:center;animation:fadeUp .6s ease}.welcome-icon{width:120px;height:120px;margin:0 auto 28px;border-radius:32px;display:flex;align-items:center;justify-content:center;background:var(--brand-gradient);color:#fff;box-shadow:0 20px 50px rgba(74,144,226,.35);animation:floatBot 5s ease-in-out infinite}.welcome-icon .material-icons{font-size:60px}.welcome-screen h2{font-size:2.4rem;font-weight:700;margin-bottom:14px}.welcome-screen p{max-width:680px;margin:0 auto 42px;color:var(--text-secondary);line-height:1.8;font-size:1rem}.ai-suggestions{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.suggestion-card{background:var(--card-bg);border:1px solid var(--border-color);border-radius:22px;padding:28px;cursor:pointer;transition:.3s;display:flex;flex-direction:column;align-items:flex-start;text-align:left;position:relative;overflow:hidden}.suggestion-card::before{content:"";position:absolute;inset:0;background:linear-gradient(135deg,rgba(74,144,226,.06),transparent);opacity:0;transition:.3s}.suggestion-card:hover{transform:translateY(-6px);box-shadow:0 18px 40px rgba(0,0,0,.1)}.suggestion-card:hover::before{opacity:1}.empty-chat,.suggestion-card .material-icons{display:flex;justify-content:center;align-items:center}.suggestion-card .material-icons{width:56px;height:56px;border-radius:16px;background:rgba(74,144,226,.12);color:var(--brand-primary);font-size:30px;margin-bottom:18px}.suggestion-card h4{font-size:1.05rem;margin-bottom:8px;font-weight:700}.suggestion-card small{color:var(--text-secondary);line-height:1.6;font-size:.9rem}.empty-chat{flex-direction:column;padding:80px 20px;text-align:center}.empty-chat h3{margin-top:18px;font-size:1.4rem}.empty-chat p{margin-top:10px;max-width:520px;color:var(--text-secondary)}.chat-list::-webkit-scrollbar,.chat-messages::-webkit-scrollbar{width:8px}.chat-list::-webkit-scrollbar-thumb,.chat-messages::-webkit-scrollbar-thumb{background:rgba(0,0,0,.12);border-radius:20px}.chat-list::-webkit-scrollbar-track,.chat-messages::-webkit-scrollbar-track{background:0 0}@media (max-width:1100px){.ai-suggestions{grid-template-columns:repeat(2,1fr)}}@media (max-width:768px){.welcome-screen{margin:20px}.welcome-screen h2{font-size:2rem}.ai-suggestions{grid-template-columns:1fr}.suggestion-card{padding:22px}}.message{display:flex;margin-bottom:24px;animation:fadeUp .25s ease}.message.user{justify-content:flex-end}.message.assistant{justify-content:flex-start}.message.user .message-bubble{max-width:68%}.message.assistant .message-bubble{max-width:100%}body:not(.dark) .message.user .message-bubble{background:#eef0f3;color:var(--text-primary);border-radius:20px;padding:12px 18px}body:not(.dark) .message.assistant .message-bubble{background:0 0;color:var(--text-primary);border:0;padding:2px 0}body.dark .message.user .message-bubble{background:#2a303c;color:#f3f4f6;border-radius:20px;padding:12px 18px}body.dark .message.assistant .message-bubble{color:#f3f4f6;border:0;padding:2px 0;background:0 0}.message-avatar{display:none}.message.assistant .message-actions{position:static;display:flex;align-items:center;gap:2px;margin-top:6px;opacity:0;visibility:hidden}.message.assistant:hover .message-actions{opacity:1;visibility:visible}.copy-code-btn,.feedback-btn,.regenerate-btn{border:0;cursor:pointer;display:flex;align-items:center;justify-content:center}.feedback-btn,.regenerate-btn{background:0 0;color:#8b98a5;padding:5px;border-radius:6px;transition:background-color .2s ease,color .2s ease}.feedback-btn .material-icons,.regenerate-btn .material-icons{font-size:16px}.feedback-btn:hover,.regenerate-btn:hover{background-color:rgba(127,127,127,.12);color:var(--text-primary)}.feedback-btn.active[data-rating=up]{color:var(--success)}.feedback-btn.active[data-rating=down]{color:var(--danger)}.message-bubble h1,.message-bubble h2,.message-bubble h3,.message-bubble h4{margin-top:22px;margin-bottom:12px;font-weight:700}.message-bubble h1{font-size:1.9rem}.message-bubble h2{font-size:1.5rem}.message-bubble h3{font-size:1.25rem}.message-bubble p{margin:14px 0}.message-bubble ol,.message-bubble ul{margin:14px 0;padding-left:26px}.message-bubble li{margin:8px 0}.message-bubble blockquote{border-left:4px solid var(--brand-primary);padding-left:18px;margin:18px 0;color:var(--text-secondary);font-style:italic}.message-bubble code{font-family:Consolas,monospace;background:rgba(74,144,226,.08);color:var(--brand-primary);padding:3px 7px;border-radius:8px;font-size:.92em}.message-bubble pre{position:relative;margin:22px 0;border-radius:18px;overflow:hidden;background:#111827}.message-bubble pre code{display:block;padding:22px;overflow:auto;background:0 0;color:#f8fafc;font-size:.9rem;line-height:1.7}.copy-code-btn{position:absolute;top:12px;right:12px;width:36px;height:36px;border-radius:10px;background:rgba(255,255,255,.12);color:#fff;transition:.25s}.copy-code-btn:hover{background:rgba(255,255,255,.24)}.message-bubble .table-wrapper{width:100%;overflow-x:auto;overflow-y:hidden;margin:20px 0;-webkit-overflow-scrolling:touch}.message-bubble .table-wrapper::-webkit-scrollbar{height:6px}.message-bubble .table-wrapper::-webkit-scrollbar-thumb{background:#999;border-radius:20px}.message-bubble table{width:max-content;min-width:100%;border-collapse:collapse}.message-bubble th{background:rgba(74,144,226,.08);font-weight:700}.message-bubble td,.message-bubble th{padding:14px;border:1px solid var(--border-color);text-align:left}.message-bubble a{color:var(--brand-primary);text-decoration:none}.message-bubble a:hover{text-decoration:underline}.message-bubble img{max-width:100%;border-radius:16px;margin:18px 0}.typing-indicator{display:flex;align-items:center;gap:6px;padding:18px 22px;width:70px}.typing-indicator span{width:10px;height:10px;border-radius:50%;background:var(--brand-primary);animation:typingBounce 1.2s infinite}.typing-indicator span:nth-child(2){animation-delay:.2s}.typing-indicator span:nth-child(3){animation-delay:.4s}@media (max-width:768px){.message-bubble{max-width:92%;padding:16px 18px}.message-bubble pre code{padding:18px}}.chat-footer{padding-bottom:max(20px,env(safe-area-inset-bottom))}.chat-footer::before{position:absolute;left:0;right:0;bottom:100%;height:40px;background:linear-gradient(to bottom,transparent,var(--chat-bg, inherit));pointer-events:none}body:not(.dark) .chat-footer::before{--chat-bg:#ffffff}body.dark .chat-footer::before{--chat-bg:#0B0F14}.file-preview-row{width:100%;max-width:900px;margin:0 auto 10px}.chat-footer textarea,.file-preview-chip{border:1px solid var(--border-color);background:var(--surface)}.file-preview-chip{display:flex;align-items:center;gap:10px;width:fit-content;max-width:100%;padding:8px 10px;border-radius:14px}.file-preview-icon,.file-preview-thumb{width:40px;height:40px;border-radius:8px;flex-shrink:0}.file-preview-thumb{object-fit:cover}.file-preview-icon{background:var(--brand-gradient);color:#fff;display:flex;align-items:center;justify-content:center;font-size:20px}.file-preview-info{display:flex;flex-direction:column;gap:1px;min-width:0}.file-preview-name{font-size:.85rem;font-weight:600;color:var(--text-primary);max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.file-preview-size{font-size:.72rem;color:var(--text-secondary)}.file-preview-chip #file-preview-remove{background:0 0;border:0;cursor:pointer;padding:4px;border-radius:50%;display:flex;color:var(--text-secondary);flex-shrink:0}.file-preview-chip #file-preview-remove:hover{background:rgba(239,68,68,.12);color:var(--danger,#EF4444)}.file-preview-chip #file-preview-remove .material-icons{font-size:18px}.chat-footer textarea{flex:1;resize:none;min-height:56px;max-height:220px;padding:16px 20px;border-radius:18px;color:var(--text-primary);outline:0;font-size:.96rem;line-height:1.7;transition:.25s;overflow-y:auto}.chat-footer textarea:focus{border-color:var(--brand-primary);box-shadow:0 0 0 4px rgba(74,144,226,.12)}.chat-tool{width:50px;height:50px;border:0;border-radius:16px;cursor:pointer;background:var(--surface);color:var(--text-secondary);transition:.25s}.chat-tool:hover{background:rgba(74,144,226,.12);color:var(--brand-primary);transform:translateY(-2px)}.chat-tool:active{transform:scale(.95)}.chat-list-empty,.chat-tool,.send-btn{display:flex;align-items:center;justify-content:center}.send-btn{width:54px;height:54px;border:0;border-radius:18px;cursor:pointer;background:var(--brand-gradient);color:#fff;transition:.25s;box-shadow:0 10px 24px rgba(74,144,226,.25)}.send-btn:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(74,144,226,.35)}.send-btn:active{transform:scale(.95)}.chat-list-empty{flex-direction:column;padding:60px 20px;text-align:center;color:var(--text-secondary)}.chat-list-empty .material-icons{font-size:52px;margin-bottom:16px;opacity:.55}body.dark .chat-footer textarea,body.dark .chat-tool{background:#1b2434}body.dark .suggestion-card{background:#182131}body.dark .ai-main,body.dark .ai-sidebar{background:#101827}body.dark .chat-item:hover{background:rgba(255,255,255,.05)}@media (max-width:1024px){.ai-layout{grid-template-columns:90px 1fr}.ai-search,.chat-details{display:none}.new-chat-btn span:last-child{display:none}.new-chat-btn{padding:0}}@media (max-width:768px){.ai-layout{display:block;position:relative;overflow:hidden}.ai-sidebar{position:fixed;top:0;left:-320px;width:300px;height:100vh;z-index:1000;transition:.35s}.ai-sidebar.show{left:0}.ai-main,.ai-sidebar{border-radius:0}.ai-header{padding:18px}.ai-header h1{font-size:1.4rem}.chat-messages{padding:20px}.chat-tool{width:46px;height:46px}.send-btn{width:50px;height:50px}}@media (max-width:480px){.chat-footer textarea{font-size:.9rem}.welcome-screen h2{font-size:1.7rem}.welcome-icon{width:90px;height:90px}.welcome-icon .material-icons{font-size:48px}.suggestion-card{padding:18px}}.profile-header{display:flex;align-items:center;gap:24px;margin-bottom:35px}.profile-name{font-size:1.8rem;font-weight:700}.profile-matric{color:var(--primary);margin-top:6px;font-weight:600}.profile-item label{display:block;color:var(--text-light);margin-bottom:8px;font-size:.85rem}.profile-item span{font-weight:600}.setting-group{margin-bottom:30px}.setting-group h3{margin-bottom:16px}.toggle{position:relative;width:56px;height:30px;background:#cbd5e1;border-radius:999px;cursor:pointer;transition:.25s}.toggle::before{content:"";position:absolute;width:24px;height:24px;background:#fff;border-radius:50%;left:3px;top:3px;transition:.25s}.toggle.active{background:var(--primary)}.toggle.active::before{left:29px}.modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);backdrop-filter:blur(4px);display:none;justify-content:center;align-items:center;z-index:5000;padding:24px}.modal-overlay.show{display:flex}.modal{background:#fff;width:min(900px,100%);max-height:90vh;overflow:auto;border-radius:24px;animation:fadeIn .3s ease}.modal-header{justify-content:space-between}.modal-content{padding:30px;line-height:1.9}.announcement-modal-image{width:100%;max-height:320px;object-fit:cover;border-radius:16px;margin-bottom:20px}#announcement-modal-body p{margin:0 0 16px}#announcement-modal-body p:last-child{margin-bottom:0}#announcement-modal-body a{color:var(--primary);text-decoration:underline;word-break:break-word}.primary-btn,.secondary-btn{padding:14px 22px;border-radius:14px;font-weight:600}.primary-btn{background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;transition:var(--transition)}.primary-btn:hover{transform:translateY(-2px);box-shadow:var(--shadow-md)}.secondary-btn{background:#eef5ff;color:var(--primary)}@media (max-width:900px){.sidebar{position:fixed;top:0;left:0;width:280px;height:100vh;transform:translateX(0);transition:transform .35s ease}.sidebar.hidden{transform:translateX(-100%)}.main-content{margin-left:280px;transition:margin-left .35s ease}body.sidebar-hidden .main-content{margin-left:0}}.animate-float{animation:float 4s ease infinite}.animate-glow{animation:pulseGlow 2s infinite}.animate-slide{animation:slideUp .45s ease}.glass{background:rgba(255,255,255,.72);backdrop-filter:blur(20px);-webkit-backdrop-filter:blur(20px);border:1px solid rgba(255,255,255,.35)}.assignment-card,.dashboard-card,.dashboard-widget,.note-card,.syllabus-card{transition:transform .3s ease,box-shadow .3s ease,border-color .3s ease}.dashboard-card:hover,.note-card:hover{transform:translateY(-8px);box-shadow:0 22px 45px rgba(0,0,0,.12)}.material-card:hover{box-shadow:0 22px 45px rgba(0,0,0,.12)}.assignment-card:hover,.dashboard-widget:hover,.syllabus-card:hover{transform:translateY(-8px);box-shadow:0 22px 45px rgba(0,0,0,.12)}.primary-btn,.skeleton{position:relative;overflow:hidden}.primary-btn::after{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent,rgba(255,255,255,.4),transparent);transform:translateX(-120%)}.primary-btn:hover::after{transform:translateX(120%);transition:1s}.skeleton{background:#edf2f7}.skeleton::before{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,rgba(255,255,255,.7),transparent);animation:skeleton 1.2s infinite}.toast-container{position:fixed;top:25px;right:25px;z-index:9000;display:flex;flex-direction:column;gap:15px}.notification-panel,.toast{background:#fff;box-shadow:var(--shadow-lg)}.toast{min-width:320px;border-radius:18px;padding:18px;display:flex;gap:14px;align-items:center;animation:slideUp .35s ease}.toast.success{border-left:5px solid var(--success)}.toast.error{border-left:5px solid var(--danger)}.toast.warning{border-left:5px solid var(--warning)}.notification-panel{position:absolute;top:70px;right:0;width:360px;border-radius:22px;display:none;overflow:hidden}.notification-panel.show{display:block}.notification-item{padding:18px 20px;border-bottom:1px solid var(--border);transition:.25s}.notification-item:hover{background:#f8fafc}.notification-item:last-child{border-bottom:none}.badge,.fab{justify-content:center;align-items:center}.badge{font-weight:700}.badge.blue{background:#dbeafe;color:#1d4ed8}.badge.green{background:#dcfce7;color:#166534}.badge.red{background:#fee2e2;color:#991b1b}.badge.orange{background:#fef3c7;color:#92400e}.fab{position:fixed;bottom:28px;right:28px;width:65px;height:65px;border-radius:50%;background:linear-gradient(135deg,var(--primary),var(--secondary));color:#fff;display:flex;box-shadow:var(--shadow-lg);z-index:200;transition:.3s}.fab:hover{transform:scale(1.08)}body.dark .announcement-card,body.dark .announcement-item,body.dark .assignment-card,body.dark .course-card,body.dark .dashboard-card,body.dark .dashboard-widget,body.dark .material-card,body.dark .modal,body.dark .note-card,body.dark .profile-card,body.dark .settings-card,body.dark .sidebar,body.dark .syllabus-card{background:var(--surface);color:var(--text)}body.dark .announcement-item.unread{background:rgba(74,144,226,.12)}body.dark .student-profile{background:var(--surface)}body.dark input,body.dark textarea{background:var(--surface-hover);color:var(--text);border-color:var(--border)}body.dark .glass{background:rgba(30,41,59,.72)}::selection{background:var(--primary);color:#fff}.sidebar{transition:width .3s ease,left .3s ease,transform .3s ease}.sidebar.hidden{transform:translateX(-100%)}.main-content{transition:margin-left .3s ease}.main-content.expanded{margin-left:0}.announcement-badge.information{background:#2196f3}.announcement-badge.event{background:#4caf50}.announcement-badge.reminder{background:#ff9800}.announcement-badge.urgent{background:#f44336}.materials-page{display:flex;flex-direction:column;gap:25px}.page-header h2{font-size:2rem;font-weight:700}.page-header p{margin-top:8px}.materials-toolbar{display:flex;gap:15px;flex-wrap:wrap;align-items:center}.materials-toolbar input,.materials-toolbar select{padding:14px 18px;border:0;border-radius:12px;background:var(--card-bg);color:var(--text-primary);box-shadow:var(--shadow-sm)}.materials-toolbar input{flex:1;min-width:280px;outline:0}.materials-toolbar select{cursor:pointer}.materials-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(420px,1fr));gap:25px}.material-card{background:var(--card-bg);border-radius:18px;padding:24px;box-shadow:var(--shadow-md);transition:.3s;display:flex;flex-direction:column;gap:18px}.material-card:hover{transform:translateY(-5px);box-shadow:var(--shadow-lg)}.material-footer a,.material-title{display:flex;align-items:center;gap:15px}.material-title .material-icons{font-size:38px;color:var(--brand-primary)}.material-title h3{font-size:1.15rem;color:var(--text-primary)}.material-meta{display:flex;flex-wrap:wrap;gap:10px}.material-meta span{padding:6px 14px;border-radius:50px;background:rgba(74,144,226,.12);color:var(--brand-primary);font-size:.85rem;font-weight:600}.material-description{color:var(--text-secondary);line-height:1.7;min-height:45px}.material-footer{display:flex;justify-content:space-between;align-items:center;width:100%;margin-top:auto;padding-top:18px;border-top:1px solid rgba(0,0,0,.08)}.material-footer small,.page-header p{color:var(--text-secondary)}.material-footer a{gap:8px}@media (max-width:768px){.materials-grid{grid-template-columns:1fr}.material-footer{display:flex;justify-content:space-between;align-items:center;margin-top:20px;padding-top:15px;border-top:1px solid rgba(255,255,255,.08)}.material-footer small{color:var(--text-secondary)}.material-footer .primary-btn{width:auto!important;flex:none!important;display:inline-flex;align-items:center;gap:8px;padding:10px 18px;margin-left:20px}.materials-toolbar{flex-wrap:nowrap;gap:8px}.materials-toolbar input{min-width:0;flex:1;padding:10px 14px;font-size:14px}.materials-toolbar select{flex:0 0 auto;width:auto;max-width:92px;padding:10px 8px;font-size:13px}.materials-toolbar .primary-btn{flex:0 0 auto;width:44px;height:44px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center}.materials-toolbar .primary-btn .btn-label{display:none}}#announcement-list{display:grid;gap:1.5rem;margin-top:1.5rem}.announcement-item{background:var(--surface,#fff);border-radius:16px;padding:1.5rem;box-shadow:0 6px 18px rgba(0,0,0,.08);border-left:5px solid var(--brand-primary,#4a90e2);transition:.25s ease}.announcement-item:hover{transform:translateY(-3px);box-shadow:0 12px 24px rgba(0,0,0,.12)}.announcement-item.pinned{border-left-color:#f39c12}.announcement-item.unread{background:rgba(74,144,226,.06);border-left-color:var(--brand-primary,#4a90e2)}.announcement-unread-dot{display:inline-block;width:8px;height:8px;border-radius:50%;background:#ef4444;margin-right:8px;vertical-align:middle}.announcement-header{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin-bottom:1rem;flex-wrap:wrap}.announcement-title,.course-header h3{margin:0;font-size:1.2rem;font-weight:700}.announcement-body{line-height:1.7;margin:1rem 0;color:var(--text-secondary,#666)}.announcement-footer{display:flex;justify-content:space-between;align-items:center;margin-top:1.25rem;flex-wrap:wrap;gap:1rem}.announcement-date{color:#888;font-size:.9rem}@media (max-width:768px){.announcement-footer,.announcement-header{flex-direction:column;align-items:flex-start}}.course-card{background:#fff;border:1px solid #e6eaf2;border-radius:14px;padding:22px;display:flex;flex-direction:column;gap:16px;transition:.25s;box-shadow:0 4px 16px rgba(0,0,0,.05)}.course-card:hover{transform:translateY(-4px);box-shadow:0 12px 28px rgba(0,0,0,.12)}.course-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px}.course-header h3{font-size:1.45rem;color:var(--brand-primary)}.course-card h4{margin:0;font-size:1.05rem;font-weight:600;color:#2d3748;line-height:1.4}.course-meta{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:6px}.course-meta span{background:#f7f9fc;border-radius:10px;padding:10px;text-align:center;font-size:.9rem;font-weight:600;color:#555}.course-status{padding:6px 12px;border-radius:999px;font-size:.75rem;font-weight:700;white-space:nowrap}.course-status.active{background:#d9fbe5;color:#15803d}.course-status.inactive{background:#fde2e2;color:#b91c1c}.course-elective-badge{background:#fef3c7!important;color:#92400e!important}.course-group-picker{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-top:14px;padding-top:14px;border-top:1px solid var(--border)}.course-group-picker label,.elective-modal .form-group label{font-size:.85rem;font-weight:600;color:var(--text-light)}.course-header-actions{display:flex;align-items:center;gap:8px}.course-remove-btn{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:8px;background:0 0;color:var(--text-light);transition:.15s ease}.course-remove-btn .material-icons{font-size:1.1rem}.course-remove-btn:hover{background:rgba(239,68,68,.1);color:var(--danger)}.course-group-pills{display:flex;flex-wrap:wrap;gap:6px}.course-group-pill{min-width:34px;padding:6px 12px;border-radius:999px;border:1px solid var(--border);background:var(--surface);color:var(--text);font-size:.82rem;font-weight:600;transition:.15s ease}.course-group-pill:hover{border-color:var(--primary);color:var(--primary-dark)}.course-group-pill.active{background:linear-gradient(135deg,var(--primary),var(--secondary));border-color:transparent;color:#fff}body.dark .course-card{background:var(--surface-dark);border-color:rgba(255,255,255,.08)}body.dark .course-card h4{color:#f8fafc}body.dark .course-meta span{background:rgba(255,255,255,.06);color:#d1d5db}.profile-container{max-width:1100px;margin:30px auto;display:flex;flex-direction:column;gap:24px}.profile-header{background:var(--surface);border-radius:20px;padding:40px;text-align:center;box-shadow:var(--shadow)}.profile-avatar{width:130px;height:130px;border-radius:50%;object-fit:cover;border:5px solid var(--brand-primary);margin-bottom:18px}.page-header h2,.profile-header h2,.profile-item strong{color:var(--text-primary)}.profile-header p,.profile-item small{color:var(--text-secondary);margin-bottom:18px}.profile-status{display:inline-block;padding:8px 18px;border-radius:999px;background:#e8f7ec;color:#198754;font-size:.9rem;font-weight:600}body.dark .profile-status{background:#21452f;color:#7dffad}.profile-card{background:var(--surface);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.profile-card h3{font-size:1.2rem}.profile-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:20px}.profile-item{display:flex;align-items:flex-start;gap:15px;padding:16px;border-radius:14px;background:rgba(74,144,226,.06)}body.dark .profile-item{background:rgba(255,255,255,.05)}.profile-item .material-icons{font-size:30px;color:var(--brand-primary)}.profile-item small{display:block;margin-bottom:6px}.profile-item strong{font-size:1rem}.profile-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:20px}.body.dark .profile-stat,.profile-stat{background:linear-gradient(135deg,var(--brand-primary),var(--brand-purple))}.profile-stat{text-align:center;padding:28px 20px;border-radius:16px;color:#000}.body.dark .profile-stat{color:#fff}.profile-header h2,.profile-stat h2{font-size:2rem;margin-bottom:8px}.profile-stat span{opacity:.95;font-size:.95rem}@media (max-width:768px){.profile-header{display:flex;align-items:center;gap:16x;padding:28px 20px;flex-wrap:wrap}.profile-avatar{width:100px;height:100px}.profile-card{padding:20px}.profile-stats{grid-template-columns:repeat(2,1fr)}}.settings-container{max-width:1000px;margin:30px auto;display:flex;flex-direction:column;gap:24px}.settings-card{background:var(--surface);border-radius:18px;padding:28px;box-shadow:var(--shadow)}.profile-card h3,.settings-card h3{margin-bottom:24px;color:var(--text-primary)}.setting-item{display:flex;justify-content:space-between;align-items:center;gap:20px;padding:18px 0;border-bottom:1px solid rgba(0,0,0,.08)}.setting-item:last-child{border-bottom:none}body.dark .setting-item{border-bottom:1px solid rgba(255,255,255,.08)}.setting-item strong{display:block;color:var(--text-primary);margin-bottom:6px}.setting-item p{color:var(--text-secondary);font-size:.95rem;margin:0}.switch{position:relative;display:inline-block;width:56px;height:30px}.switch input{opacity:0;width:0;height:0}.slider,.slider::before{position:absolute;transition:.3s}.slider{inset:0;cursor:pointer;background:#cfd3d7;border-radius:50px}.slider::before{content:"";height:24px;width:24px;left:3px;top:3px;background:#fff;border-radius:50%;box-shadow:0 3px 8px rgba(0,0,0,.2)}.switch input:checked+.slider{background:var(--brand-primary)}.switch input:checked+.slider::before{transform:translateX(26px)}.settings-card.danger{background:0 0;box-shadow:none;padding:0}.danger-btn:hover{background:#bb2d3b}@media (max-width:768px){.settings-card{padding:22px}.setting-item{flex-direction:column;align-items:flex-start}.setting-item .primary-btn{width:100%}.switch{align-self:flex-end}}body.dark .settings-card{background:#1b1e24;border:1px solid rgba(255,255,255,.06);box-shadow:0 10px 30px rgba(0,0,0,.45)}body.dark .setting-item strong{color:#f5f5f5}body.dark .setting-item p{color:#b6bcc7}.setting-item .primary-btn{min-width:170px;justify-content:center;border-radius:14px;font-weight:600;background:linear-gradient(135deg,#4a90e2,#9013fe);color:#fff;border:0;transition:.25s}.setting-item .primary-btn:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(74,144,226,.35)}.setting-item .primary-btn .material-icons,body.dark #chat-input,body.dark .password-modal h2,body.dark .settings-card h3{color:#fff}body.dark .setting-item .primary-btn{box-shadow:0 10px 25px rgba(0,0,0,.35)}.danger-btn,.ui-modal-overlay{display:flex;justify-content:center;align-items:center;transition:.3s}.danger-btn{width:100%;padding:18px;border:0;border-radius:16px;cursor:pointer;font-size:1rem;font-weight:700;color:#fff;gap:12px;background:linear-gradient(135deg,#ff4d4d,#d63031)}.danger-btn:hover{transform:translateY(-3px);box-shadow:0 14px 30px rgba(214,48,49,.4)}.ui-modal-overlay{position:fixed;inset:0;background:rgba(0,0,0,.55);opacity:0;visibility:hidden;z-index:9999;backdrop-filter:blur(6px)}#notification-panel.show,.ui-modal-overlay.show{opacity:1;visibility:visible}.ui-modal{width:min(420px,92%);background:#fff;border-radius:22px;padding:36px;text-align:center;transform:translateY(30px);transition:.3s;box-shadow:0 30px 70px rgba(0,0,0,.25)}.ui-modal-overlay.show .memory-modal,.ui-modal-overlay.show .ui-modal{transform:none}body.dark .ui-modal{background:#1d2028;color:#fff}.ui-modal h2{margin:18px 0 12px}.ui-modal p{color:var(--text-secondary);line-height:1.6}body.dark .ui-modal p{color:#b8bec8}.ui-modal-icon{width:72px;height:72px;border-radius:50%;display:flex;justify-content:center;align-items:center;margin:auto;font-size:38px}.ui-modal-icon span{font-size:40px}.ui-modal-icon.success{background:#d4edda;color:#28a745}.ui-modal-icon.error{background:#fde2e2;color:#dc3545}.ui-modal-icon.warning{background:#fff3cd;color:#f39c12}.ui-modal-icon.info{background:#d9ecff;color:#3498db}.ui-modal-actions{display:flex;gap:16px;margin-top:30px}.memory-modal{width:min(560px,92%);max-height:85vh;background:var(--card-bg,#fff);border-radius:22px;padding:28px;display:flex;flex-direction:column;gap:18px;transform:translateY(30px);transition:.3s;box-shadow:0 30px 70px rgba(0,0,0,.25)}.memory-modal-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.memory-modal-header h2{display:flex;align-items:center;gap:8px;margin:0 0 4px;font-size:1.25rem;color:var(--text-primary)}.memory-modal-header p{margin:0;color:var(--text-secondary);font-size:.9rem}.memory-list{overflow-y:auto;display:flex;flex-direction:column;gap:10px;min-height:80px}.memory-item{display:flex;align-items:flex-start;gap:8px;padding:10px 12px;border:1px solid var(--border-color);border-radius:14px}.memory-text{flex:1;resize:none;border:0;background:0 0;color:var(--text-primary);font:inherit;line-height:1.4;min-height:44px}.memory-text:focus{outline:0}.memory-item-actions{display:flex;flex-direction:column;gap:4px}.memory-delete-btn,.memory-save-btn{background:0 0;border:0;cursor:pointer;padding:6px;border-radius:50%;display:flex;color:var(--text-secondary)}.memory-save-btn:hover{background:rgba(16,185,129,.12);color:var(--success,#10B981)}.memory-delete-btn:hover{background:rgba(239,68,68,.12);color:var(--danger,#EF4444)}.memory-empty,.memory-loading{text-align:center;color:var(--text-secondary)}.memory-empty{display:flex;flex-direction:column;align-items:center;gap:8px;padding:24px 12px}.memory-empty .material-icons{font-size:2rem;opacity:.6}.memory-loading{padding:20px}.memory-add-row{display:flex;gap:8px;border-top:1px solid var(--border-color);padding-top:16px}.memory-add-row input{flex:1;padding:10px 14px;border-radius:12px;border:1px solid var(--border-color);background:0 0;color:var(--text-primary);font:inherit}.memory-add-row input:focus{outline:0;border-color:var(--brand-primary)}.memory-add-row .primary-btn{display:flex;align-items:center;justify-content:center;padding:0 16px;border-radius:12px}body.dark .toast{background:#1f242d;color:#fff;border:1px solid rgba(255,255,255,.08);box-shadow:0 12px 30px rgba(0,0,0,.45)}body.dark .toast.success{border-left:4px solid #22c55e}body.dark .toast.error{border-left:4px solid #ef4444}body.dark .toast.info{border-left:4px solid #3b82f6}body.dark .toast .material-icons{color:inherit}.password-modal{width:min(460px,92vw);border-radius:20px;overflow:hidden;background:var(--card-bg,#ffffff);box-shadow:0 25px 60px rgba(0,0,0,.18);animation:modalPop .25s ease}.password-modal .modal-header{display:flex;justify-content:space-between;align-items:center;padding:22px 26px;border-bottom:1px solid rgba(0,0,0,.08)}.password-modal .modal-header h2{margin:0;font-size:1.25rem;font-weight:700;color:var(--text-primary,#222)}.password-modal .modal-header button{border:0;background:0 0;font-size:24px;cursor:pointer;color:#888;transition:.2s}.password-modal .modal-header button:hover{color:#f44336;transform:rotate(90deg)}.password-modal .modal-content{padding:25px}.password-modal .form-group{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.material-upload-modal label,.password-modal label{font-size:.9rem;font-weight:600;color:var(--text-secondary,#555)}.password-modal input{width:100%;padding:14px 16px;border:1px solid #d8d8d8;border-radius:12px;outline:0;font-size:.95rem;transition:.25s;background:#fff;color:#222}.material-upload-modal input:focus,.material-upload-modal select:focus,.material-upload-modal textarea:focus,.password-modal input:focus{border-color:var(--brand-primary,#4a90e2);box-shadow:0 0 0 3px rgba(74,144,226,.15)}.password-modal .modal-actions{display:flex;justify-content:flex-end;gap:12px;margin-top:25px}.password-modal .primary-btn,.password-modal .secondary-btn{padding:12px 22px;border-radius:12px;cursor:pointer;transition:.25s}.password-modal .secondary-btn{border:1px solid #d0d0d0;background:#f5f5f5;color:#444}.password-modal .secondary-btn:hover{background:#ececec}.password-modal .primary-btn{display:flex;align-items:center;gap:8px;border:0;background:linear-gradient(135deg,#4a90e2,#7b61ff);color:#fff;font-weight:600}.password-modal .primary-btn:hover{transform:translateY(-2px);box-shadow:0 10px 20px rgba(74,144,226,.25)}.material-upload-modal .form-group{display:flex;flex-direction:column;gap:8px;margin-bottom:18px}.material-upload-modal .form-hint{font-size:.8rem;color:var(--text-secondary,#666);line-height:1.4}.material-upload-modal input,.material-upload-modal select,.material-upload-modal textarea{width:100%;padding:14px 16px;border:1px solid #d8d8d8;border-radius:12px;outline:0;font-size:.95rem;transition:.25s;background:#fff;color:#222;font-family:inherit;resize:vertical}body.dark .material-upload-modal input,body.dark .material-upload-modal select,body.dark .material-upload-modal textarea{background:var(--card-bg);color:var(--text-primary);border-color:rgba(255,255,255,.12)}body.dark .password-modal{background:#1d1f24}body.dark .password-modal .modal-header{border-bottom:1px solid rgba(255,255,255,.08)}body.dark .password-modal label{color:#d8d8d8}body.dark .password-modal .secondary-btn,body.dark .password-modal input{background:#2b2e35;border:1px solid #3b4048;color:#fff}body.dark .password-modal input::placeholder{color:#9aa2ac}body.dark .password-modal input:focus{border-color:#4a90e2;box-shadow:0 0 0 3px rgba(74,144,226,.25)}body.dark .password-modal .secondary-btn:hover{background:#383d46}.password-input{position:relative}.password-input input{padding-right:50px}.password-toggle{position:absolute;right:15px;top:50%;transform:translateY(-50%);cursor:pointer;color:#888;user-select:none;transition:.2s}.password-toggle:hover{color:var(--brand-primary)}body.dark .password-toggle{color:#b5b5b5}body.dark .password-toggle:hover{color:#4a90e2}#notification-panel{opacity:0;visibility:hidden;transition:opacity .25s ease;position:absolute;top:60px;right:20px;width:340px;max-height:450px;overflow-y:auto;background:#fff;border-radius:14px;box-shadow:0 12px 35px rgba(0,0,0,.18);z-index:99999;display:none}#notification-panel.show{display:block}@media (max-width:768px){.sidebar{width:280px;height:100vh;position:fixed;left:0;top:0;transform:translateX(-100%);transition:transform .35s ease;z-index:1000}.sidebar.show{transform:translateX(0)}.main-content{margin-left:0!important;padding:20px;transition:padding .35s ease}.sidebar-overlay{position:fixed;inset:0;background:rgba(0,0,0,.4);z-index:999;display:none}.sidebar-overlay.show{display:block}.bottom-navbar{display:flex;position:fixed;left:0;right:0;bottom:0;z-index:500;background:var(--card-bg, #fff);border-top:1px solid var(--border-color, #e5e7eb);box-shadow:0-2px 12px rgba(0,0,0,.05);padding:8px 6px calc(8px + env(safe-area-inset-bottom))}.bottom-nav-item{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;background:0 0;border:0;padding:4px 2px;border-radius:12px;color:var(--text-secondary, #6b7280);font-size:10.5px;font-weight:600;font-family:inherit;line-height:1.1;letter-spacing:.1px;cursor:pointer;transition:color .2s ease,transform .15s ease;-webkit-tap-highlight-color:transparent}.bottom-nav-item:active{transform:scale(.94)}.bottom-nav-item .material-icons{font-size:21px;padding:4px 16px;border-radius:999px;transition:background-color .2s ease,color .2s ease}.bottom-nav-item.active{background:0 0;color:var(--primary);box-shadow:none}.bottom-nav-item .forum-nav-badge{position:absolute;top:0;right:calc(50% - 22px);margin-left:0}.bottom-nav-item.active .material-icons{background:rgba(20,199,180,.14);color:var(--primary);padding:6px 12px;border-radius:999px}.main-content{padding-bottom:calc(72px + env(safe-area-inset-bottom))!important}}@media (min-width:769px){.bottom-navbar{display:none}}@media (max-width:768px){.ai-layout{position:relative;overflow:hidden}.ai-sidebar{position:absolute;top:0;left:-100%;width:260px;height:100%;background:#fff;z-index:90;transition:left .3s ease}.ai-main{position:relative}.ai-layout.show-sidebar .ai-sidebar{left:0}.ai-toggle-btn{display:inline-flex;align-items:center;justify-content:center;position:absolute;top:12px;left:12px;width:38px;height:38px;background:var(--card-bg, #fff);border:0;border-radius:50%;cursor:pointer;padding:0;color:inherit;box-shadow:0 2px 10px rgba(0,0,0,.12);z-index:20}}body.dark .ai-toggle-btn{background:#1d1d1f}@media (min-width:769px){.ai-toggle-btn{display:none!important}}.ai-toggle-btn-right{display:inline-flex;align-items:center;justify-content:center;position:absolute;top:12px;left:auto;right:12px;width:32px;height:32px;background:var(--card-bg, #fff);border:1px solid var(--border);border-radius:50%;cursor:pointer;padding:0;color:inherit;font-size:20px;line-height:1;box-shadow:0 2px 10px rgba(0,0,0,.12);z-index:20}body.dark .ai-toggle-btn-right{background:#1d1d1f;border-color:rgba(255,255,255,.12)}@media (max-width:768px){body,html{margin:0!important;padding:0!important}.ai-suggestions,.content-grid,.dashboard-grid,.materials-grid{grid-template-columns:1fr!important;width:100%!important;gap:16px!important}.page-header{flex-direction:column!important;align-items:stretch!important}.page-header,.page-header input{width:100%!important}.materials-toolbar,.page-header input{max-width:100%!important}.announcement-card,.assignment-card,.course-card,.dashboard-card,.material-card,.note-card,.welcome-card{width:100%!important;max-width:100%!important;box-sizing:border-box!important;padding:20px!important}.ai-layout,.ai-main{max-width:100%!important}.ai-layout{display:flex!important;flex-direction:column!important;height:calc(100vh - 80px)!important}.ai-main{width:100%!important;flex:1!important}}@media (max-width:480px){.main-content{padding:12px!important}.welcome-card h1{font-size:1.5rem!important}}@media (max-width:768px){.portal-container,body,html{width:100%!important;max-width:100vw!important;overflow-x:hidden!important}.main-content{margin-left:0!important;width:100%!important;max-width:100%!important;padding:12px!important;box-sizing:border-box!important}}#ai.page.active,.ai-layout,.ai-main,.chat-message,.message-bubble,.message-content{min-width:0!important;max-width:100%!important}.chat-body{overflow-x:hidden!important;flex:1;overflow-y:auto;padding:16px;display:flex;flex-direction:column;gap:12px;scroll-behavior:smooth}.chat-footer{flex-shrink:0}.chat-input-pill{flex:1;min-width:0}.chat-container{display:flex;flex-direction:column;height:500px;width:100%;max-width:400px;position:fixed;bottom:90px;right:30px;background:var(--surface);border:1px solid var(--border);border-radius:16px;box-shadow:var(--shadow-lg);z-index:1000;overflow:hidden}.message-content{width:100%!important;overflow:hidden!important}.message-content table{display:block!important;width:100%!important;max-width:100%!important;overflow-x:auto!important;white-space:nowrap!important;border-collapse:collapse;margin:14px 0!important;-webkit-overflow-scrolling:touch}.message-content td,.message-content th{padding:8px 12px!important;border:1px solid var(--border);white-space:normal!important}.ai-input-container{display:flex!important;align-items:flex-end!important;gap:10px!important;width:100%!important;box-sizing:border-box!important;padding:14px!important}.ai-input-container textarea{flex:1!important;font-size:16px!important}.attachment-btn{width:48px;height:48px;min-width:48px;display:inline-flex;align-items:center;justify-content:center;background:var(--surface);border:1px solid var(--border);border-radius:12px;color:var(--text-light);cursor:pointer;transition:all .2s ease;box-sizing:border-box}.attachment-btn:hover{background:var(--surface-hover);color:var(--primary);border-color:var(--primary)}.attachment-btn .material-icons{font-size:22px}@media (max-width:768px){.ai-layout{grid-template-columns:1fr!important;width:100%!important}.attachment-btn{width:44px;height:44px;min-width:44px;border-radius:10px}.attachment-btn .material-icons{font-size:20px}}body.dark .attachment-btn{background:#242931;border-color:#3b4048;color:#b5b5b5}body.dark .attachment-btn:hover{background:#2c323c;color:#4a90e2;border-color:#4a90e2}@media (max-width:768px){#ai{width:100%!important;max-width:100%!important;margin:0!important;padding:0!important;left:0!important;right:0!important}.ai-main .chat-messages{width:100%;max-width:100%;margin:0;border-radius:0}}.chat-input-wrapper{display:flex;align-items:flex-end;gap:8px;padding:10px 14px;border-radius:28px;background:#fff;border:1px solid #ddd}.input-action{transition:.25s ease}.input-action.hide{margin:0;overflow:hidden;pointer-events:none;opacity:0;transform:translateX(-10px);width:0}.chat-footer,.chat-input-pill{width:100%;box-sizing:border-box}.chat-footer{position:sticky;bottom:0;z-index:100}.chat-input-pill{display:flex;border:0;transition:.25s ease}#chat-input{flex:1;width:100%;min-width:0;max-height:140px;outline:0;resize:none;overflow-y:auto;color:var(--text-color,#222);font-size:15px;line-height:1.5;font-family:inherit}#chat-input::placeholder{color:#8a8f98}#chat-input::-webkit-scrollbar{width:5px}#chat-input::-webkit-scrollbar-thumb{background:#bdbdbd;border-radius:20px}#send-btn,.input-btn{border:0;border-radius:50%;display:flex;justify-content:center;align-items:center;cursor:pointer;transition:.25s ease}.input-btn{width:38px;height:38px;background:0 0;color:#666;flex-shrink:0}.input-btn:hover{background:#ececec;color:#6c4cff}#send-btn{color:#fff;background:linear-gradient(135deg,#5d5fef,#8c3dff);box-shadow:0 5px 15px rgba(108,76,255,.35)}#send-btn:hover{transform:scale(1.05)}#send-btn:active{transform:scale(.95)}.input-btn.hide{width:0;margin:0;opacity:0;overflow:hidden;pointer-events:none;transform:translateX(-10px)}body.dark .chat-footer{background:#1d1d1f;border-top:1px solid #353535}body.dark .chat-input-pill{border:0}body.dark #chat-input::placeholder{color:#9ca3af}body.dark .input-btn{color:#cfcfcf}body.dark .input-btn:hover{background:#3a3a3d;color:#9f8cff}body.dark #send-btn{background:linear-gradient(135deg,#6c63ff,#9b59ff)}@media (max-width:768px){.chat-footer{padding:10px}.chat-input-pill{border-radius:26px;padding:8px 12px;gap:8px}#chat-input{font-size:16px}.input-btn{width:34px;height:34px}#send-btn{width:38px;height:38px}}#send-btn:disabled,.input-btn:disabled{opacity:.45;cursor:not-allowed;pointer-events:none}#chat-input:disabled{opacity:.75;cursor:wait}#voice-btn.recording{background:#ef4444;color:#fff;animation:pulseMic 1s infinite}.message-bubble.streaming::after{content:"▋";animation:blinkCursor .8s infinite;margin-left:2px}.glide-refresh{animation:glideIn .28s ease}#weekly-timetable{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:20px;margin-top:20px}.day-column{background:rgba(255,255,255,.9);backdrop-filter:blur(16px);border-radius:20px;overflow:hidden;border:1px solid rgba(0,0,0,.08);box-shadow:0 8px 24px rgba(0,0,0,.08);transition:.25s ease}.day-column:hover{transform:translateY(-4px);box-shadow:0 18px 40px rgba(0,0,0,.12)}.today-column{border:2px solid var(--brand-primary,#4a90e2);box-shadow:0 0 0 4px rgba(74,144,226,.15)}.day-header{padding:18px;background:linear-gradient(135deg,var(--brand-primary,#4a90e2),var(--brand-purple,#9013fe));color:#fff;text-align:center}.day-header h3{margin:0;font-size:1.1rem;font-weight:700;letter-spacing:.5px}.day-events{padding:15px;display:flex;flex-direction:column;gap:14px}.timetable-card{border-radius:14px;padding:15px;box-shadow:0 4px 12px rgba(0,0,0,.06);transition:.2s ease}.timetable-card:hover{transform:translateY(-2px);box-shadow:0 12px 24px rgba(0,0,0,.1)}.card-header{display:flex;justify-content:space-between;align-items:center}.card-header .time{font-size:.82rem;color:#777;font-weight:600}.timetable-card h4{font-size:1.05rem;color:#111827;font-weight:700;margin:0 0 10px}.timetable-card p{margin:4px 0;font-size:.9rem}.badge-lecture,.type-lecture{background:#2563eb}.badge-practical,.type-practical{background:#7c3aed}.badge-tutorial,.type-tutorial{background:#16a34a}.badge-test,.type-test{background:#f59e0b}.badge-exam,.type-exam{background:#dc2626}.badge-seminar,.type-seminar{background:#0891b2}.badge-event,.type-event{background:#ea580c}.badge-holiday,.type-holiday{background:#64748b}.type-lecture{border-left-color:#2563eb}.type-practical{border-left-color:#7c3aed}.type-tutorial{border-left-color:#16a34a}.type-test{border-left-color:#f59e0b}.type-exam{border-left-color:#dc2626}.type-seminar{border-left-color:#0891b2}.type-event{border-left-color:#ea580c}.type-holiday{border-left-color:#64748b}.current-class{border:2px solid #22c55e!important;box-shadow:0 0 18px rgba(34,197,94,.25);animation:pulseCurrent 2s infinite}.no-class{padding:40px 15px;text-align:center;color:#999}.no-class .material-icons{font-size:42px;display:block;margin-bottom:10px;opacity:.6}.no-class p{margin:0;font-size:.92rem}@media (max-width:900px){#weekly-timetable{grid-template-columns:1fr}}@media (max-width:600px){.day-header{padding:14px}.timetable-card{padding:12px}.card-header{flex-direction:column;align-items:flex-start;gap:6px}}.timetable-card{background:#fff;border-left:6px solid #2563eb}.badge{display:inline-block;padding:4px 10px;border-radius:999px;font-size:.72rem}.time{color:#6b7280;font-weight:600}.timetable-card p{color:#64748b}.card-header{margin-bottom:12px}.badge-group{display:flex;gap:4px;align-items:center}.badge-once{background-color:#ff9800;color:#fff;font-size:.75rem;padding:2px 6px;border-radius:4px;font-weight:600}.forum-page{margin:auto;padding:20px}.forum-search,.forum-toolbar{display:flex;align-items:center}.forum-toolbar{gap:15px;margin-bottom:25px}.forum-search{flex:1;padding:10px 15px}.forum-search input{border:0;outline:0;flex:1;margin-left:10px;background:0 0}.thread-card{cursor:pointer}.thread-top{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.thread-top h3{margin:0;color:#1f2937}.thread-footer{display:flex;flex-wrap:wrap;gap:18px;font-size:.9rem;color:#888}.thread-pin{font-size:18px}.forum-empty{text-align:center;padding:60px 20px;color:#888}.forum-empty .material-icons{font-size:60px;color:#cbd5e1}.forum-modal{inset:0;background:rgba(0,0,0,.45)}.hidden{display:none}.forum-modal-content{background:#fff}.forum-modal-header button{background:0 0;border:0;font-size:28px;cursor:pointer}.forum-modal textarea{width:100%;resize:vertical}#forum-thread{background:#f5f7fb}#forum-thread-container{gap:20px}#thread-header{display:flex;align-items:center;gap:10px;padding:8px 12px;min-height:44px;box-shadow:0 2px 6px rgba(0,0,0,.06);flex-shrink:0}#thread-header .back-btn,.thread-header-actions .icon-btn{display:flex;align-items:center;justify-content:center;border-radius:50%;background:0 0;border:0}#thread-header .back-btn{width:34px;height:34px;padding:0;flex-shrink:0}#thread-header .back-btn .material-icons{font-size:20px;color:#374151}.thread-header-info{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}.thread-header-info h2,.thread-header-meta{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.thread-header-info h2{margin:0;font-size:.92rem;font-weight:600;color:#1f2937}.thread-header-meta{font-size:.7rem;color:#6b7280}.thread-header-actions{display:flex;align-items:center;gap:2px;flex-shrink:0}.thread-header-actions .icon-btn{width:32px;height:32px}.thread-header-actions .icon-btn .material-icons{font-size:18px;color:#6b7280}.thread-no-replies{text-align:center;color:#9ca3af;font-size:.8rem;padding:8px 0 4px}#thread-replies{display:flex;flex-direction:column}#thread-replies::-webkit-scrollbar{width:8px}#thread-replies::-webkit-scrollbar-thumb{background:#d4d4d8;border-radius:20px}.forum-message{flex-direction:column;animation:fadeIn .25s ease;position:relative;transition:transform .2s ease;touch-action:pan-y}.forum-message::before{content:"reply";font-family:"Material Icons";position:absolute;left:-30px;top:50%;transform:translateY(-50%);font-size:18px;color:#9ca3af;opacity:0;pointer-events:none}.forum-message.swiping::before{opacity:var(--swipe-progress, 0)}.message-author{opacity:.9}.reply-reference{background:rgba(0,0,0,.06);border-left:4px solid #2563eb;padding:10px;border-radius:10px;margin-bottom:10px}.forum-message.mine .reply-reference{background:rgba(255,255,255,.15);border-left-color:#fff}.reply-reference strong{display:block;margin-bottom:4px;font-size:.82rem}.reply-reference p{margin:0;font-size:.82rem;opacity:.8}.message-actions{display:flex;gap:14px;margin-top:10px;font-size:.8rem;opacity:.75}.message-actions span{cursor:pointer;transition:.2s}.message-actions span:hover{opacity:1;color:#2563eb}#thread-input-area{margin-top:20px;border-radius:18px}#reply-preview{background:#eef4ff;border-left:4px solid #2563eb;border-radius:10px;padding:12px;margin-bottom:14px}#reply-preview.hidden{display:none}.thread-input-row{display:flex;gap:12px}#reply-input{flex:1;resize:none;border-radius:14px;outline:0;transition:.2s}#send-reply{border:0;border-radius:50%;color:#fff;cursor:pointer;display:flex;justify-content:center;align-items:center;transition:.25s}@media (max-width:768px){#forum-thread{padding:12px}.forum-message{max-width:92%}#thread-header{padding:8px 12px}}.forum-modal{position:fixed;top:0;left:0;width:100vw;height:100vh;background-color:rgba(0,0,0,.65);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);display:flex;align-items:center;justify-content:center;z-index:1000;opacity:1;visibility:visible;transition:opacity .25s ease,visibility .25s ease;padding:1rem}.forum-modal.hidden{opacity:0;visibility:hidden;pointer-events:none}.forum-modal-content{background-color:var(--card-bg, #ffffff);color:var(--text-color, #1f2937);width:100%;max-width:580px;border-radius:16px;box-shadow:0 20px 25px -5px rgba(0,0,0,.2),0 8px 10px -6px rgba(0,0,0,.1);border:1px solid var(--border-color, #e5e7eb);overflow:hidden;display:flex;flex-direction:column;transform:translateY(0) scale(1);transition:transform .25s cubic-bezier(.16,1,.3,1)}.forum-modal.hidden .forum-modal-content{transform:translateY(16px) scale(.97)}.forum-modal-header{padding:1.25rem 1.5rem;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--border-color, #f3f4f6)}.forum-modal-header h2{font-size:1.25rem;font-weight:700;margin:0;color:var(--heading-color, #111827)}#close-thread-modal{background:0 0;border:0;font-size:1.5rem;line-height:1;color:var(--text-muted, #6b7280);cursor:pointer;padding:.25rem .5rem;border-radius:8px;transition:background-color .2s ease,color .2s ease}#close-thread-modal:hover{background-color:var(--hover-bg, #f3f4f6);color:var(--text-color, #111827)}.forum-modal-body{padding:1.5rem;display:flex;flex-direction:column;gap:1.25rem;max-height:70vh;overflow-y:auto}.forum-modal-body .form-group{display:flex;flex-direction:column;gap:.5rem}.forum-modal-body label{font-size:.875rem;font-weight:600;color:var(--heading-color, #374151)}.forum-modal-body input[type=text],.forum-modal-body select,.forum-modal-body textarea{width:100%;padding:.75rem 1rem;font-size:.95rem;border-radius:10px;border:1px solid var(--border-color, #d1d5db);background-color:var(--input-bg, #f9fafb);color:var(--text-color, #111827);outline:0;transition:border-color .2s ease,box-shadow .2s ease,background-color .2s ease;font-family:inherit}.forum-modal-body input[type=text]::placeholder,.forum-modal-body textarea::placeholder{color:var(--text-muted, #9ca3af);opacity:1}.forum-modal-body select option{background-color:var(--card-bg, #ffffff);color:var(--text-color, #111827)}.forum-modal-body textarea{resize:vertical;min-height:120px}.forum-modal-body input[type=text]:focus,.forum-modal-body select:focus,.forum-modal-body textarea:focus{border-color:var(--primary-color, #4A90E2);box-shadow:0 0 0 3px rgba(74,144,226,.2)}.anonymous-toggle{display:flex!important;align-items:center;gap:.6rem;cursor:pointer;font-size:.9rem;color:var(--text-color, #374151);user-select:none;margin-top:.25rem}.anonymous-toggle input[type=checkbox]{width:1.1rem;height:1.1rem;accent-color:var(--primary-color, #4A90E2);cursor:pointer}.forum-modal-footer{padding:1.25rem 1.5rem;display:flex;justify-content:flex-end;border-top:1px solid var(--border-color, #f3f4f6);background-color:var(--footer-bg, #fafafa)}.forum-modal-footer .btn-primary{background-color:var(--primary-color, #4A90E2);color:#fff;border:0;padding:.75rem 1.5rem;font-size:.95rem;font-weight:600;border-radius:10px;cursor:pointer;transition:filter .2s ease,transform .1s ease}.forum-modal-footer .btn-primary:hover{filter:brightness(1.08)}[data-theme=dark],body.dark,body.dark-mode{--card-bg:#1e293b;--text-color:#f8fafc;--heading-color:#f1f5f9;--text-muted:#94a3b8;--border-color:#334155;--input-bg:#0f172a;--hover-bg:#334155;--footer-bg:#1e293b}[data-theme=dark] #thread-modal .forum-modal-content,body.dark #thread-modal .forum-modal-content,body.dark-mode #thread-modal .forum-modal-content{background-color:#1e293b;color:#f8fafc}[data-theme=dark] #thread-modal h2,[data-theme=dark] #thread-modal label,body.dark #thread-modal h2,body.dark #thread-modal label,body.dark-mode #thread-modal h2,body.dark-mode #thread-modal label{color:#f8fafc!important}[data-theme=dark] #thread-modal input,[data-theme=dark] #thread-modal select,[data-theme=dark] #thread-modal textarea,body.dark #thread-modal input,body.dark #thread-modal select,body.dark #thread-modal textarea,body.dark-mode #thread-modal input,body.dark-mode #thread-modal select,body.dark-mode #thread-modal textarea{background-color:#0f172a!important;color:#f8fafc!important;border-color:#334155!important}[data-theme=dark] #thread-modal option,body.dark #thread-modal option,body.dark-mode #thread-modal option{background-color:#1e293b!important;color:#f8fafc!important}[data-theme=dark] #thread-modal ::placeholder,body.dark #thread-modal ::placeholder,body.dark-mode #thread-modal ::placeholder{color:#94a3b8!important}#forum-thread,.reply-preview.hidden{display:none}#forum-thread.active{display:flex!important;flex-direction:column;height:calc(100vh - 80px);min-height:0;overflow:hidden}#forum-thread.page.active{min-height:0}#thread-input-area{flex-shrink:0}#thread-replies{overflow-x:hidden}#thread-input-area{position:sticky;bottom:0;border-top:1px solid var(--border-color);z-index:10;padding-bottom:max(14px,env(safe-area-inset-bottom))}.message-card{overflow:hidden;overflow-wrap:anywhere;word-break:break-word}body:has(#forum.page.active) .topbar{margin-bottom:12px!important;padding:6px 0!important}body:has(#ai.page.active) .topbar{margin-bottom:12px!important}body:has(#forum-thread.page.active) .topbar{margin-bottom:12px!important;padding:6px 0!important}body:has(#ai.page.active) .topbar{padding:6px 20px!important}body:has(#ai.page.active) .topbar small,body:has(#forum-thread.page.active) .topbar small,body:has(#forum.page.active) .topbar small{display:none}body:has(#ai.page.active) .topbar h2,body:has(#forum-thread.page.active) .topbar h2,body:has(#forum.page.active) .topbar h2{font-size:1.2rem!important}body:has(#ai.page.active) .topbar .icon-btn,body:has(#forum-thread.page.active) .topbar .icon-btn,body:has(#forum.page.active) .topbar .icon-btn{width:36px!important;height:36px!important;border-radius:10px!important}body:has(#ai.page.active) .topbar .icon-btn .material-icons,body:has(#forum-thread.page.active) .topbar .icon-btn .material-icons,body:has(#forum.page.active) .topbar .icon-btn .material-icons{font-size:20px!important}body:has(#ai.page.active) .topbar .student-profile,body:has(#forum-thread.page.active) .topbar .student-profile,body:has(#forum.page.active) .topbar .student-profile{padding:4px 10px!important;gap:8px!important}body:has(#ai.page.active) .topbar .student-profile img,body:has(#forum-thread.page.active) .topbar .student-profile img,body:has(#forum.page.active) .topbar .student-profile img{width:32px!important;height:32px!important}body:has(#ai.page.active) .topbar .student-profile h4,body:has(#forum-thread.page.active) .topbar .student-profile h4,body:has(#forum.page.active) .topbar .student-profile h4{font-size:.85rem!important}#forum-thread.page.active{display:flex!important;flex-direction:column;height:calc(100vh - 64px);box-sizing:border-box;overflow:hidden}#forum-thread-container{display:flex;flex-direction:column;flex:1;min-height:0;overflow:hidden}#thread-replies{flex:1;overflow-y:auto;min-height:0}#forum-thread form,.thread-reply-input-container{flex-shrink:0;position:sticky;bottom:0;background:var(--surface, #ffffff);padding-top:12px;z-index:10}.ai-main{display:flex;flex-direction:column;height:100%;min-height:0;overflow:hidden}body:has(#ai.active) .topbar-left>div,body:has(#ai.active) .topbar-right,body:has(#forum-thread.active) .topbar-left>div,body:has(#forum-thread.active) .topbar-right,body:has(#forum.active) .topbar-left>div,body:has(#forum.active) .topbar-right{display:none!important}body:has(#ai.active) .topbar,body:has(#forum-thread.active) .topbar,body:has(#forum.active) .topbar{padding:8px 0!important;margin-bottom:8px!important;background:0 0!important;box-shadow:none!important;border:0!important;min-height:unset!important}.reply-preview,.reply-preview-card{margin-bottom:10px}.reply-preview-card{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;padding:12px;border-left:4px solid var(--primary-color);background:var(--surface-color);border-radius:10px}body.dark .reply-preview-card{background:#1e293b;border-left:4px solid var(--brand-primary);border-top:1px solid var(--border-color);border-right:1px solid var(--border-color);border-bottom:1px solid var(--border-color);color:#f3f4f6;box-shadow:0 4px 12px rgba(0,0,0,.25)}body.dark .reply-preview-title{color:#60a5fa;font-weight:600;font-size:.85rem}body.dark .reply-preview-text{color:var(--text-secondary);font-size:.88rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.reply-preview-close{background:0 0;border:0;cursor:pointer;display:flex;align-items:center;justify-content:center;border-radius:50%;padding:4px;transition:var(--transition)}.reply-preview-card p{margin-top:4px;opacity:.8}.message-action{margin-top:8px;display:flex;justify-content:flex-end}.reply-btn{font-size:.85rem;color:var(--primary-color);font-weight:600}.reply-btn:hover{text-decoration:underline;opacity:.8}.reply-btn,.reply-reference{cursor:pointer;transition:.2s}.reply-reference:hover{opacity:.85}.reply-highlight{animation:flashReply 1.5s ease}.forum-admin-btn{width:42px;height:42px;border:0;border-radius:12px;display:flex;align-items:center;justify-content:center;background:var(--surface-color);color:var(--text-secondary);cursor:pointer;transition:.2s}.forum-admin-btn:hover{background:var(--primary-color);color:#fff}.forum-admin-btn.active{background:#1b8a3b;color:#fff}.modal-body input,.modal-card{border:1px solid var(--border-color)}.modal-body input{margin-top:12px;width:100%;padding:14px 16px;border-radius:12px;background:var(--background-color);color:var(--text-color);font-size:1rem;outline:0;transition:.2s}.modal-card{width:min(420px,92vw);background:var(--surface-color);border-radius:18px;overflow:hidden;box-shadow:0 20px 50px rgba(0,0,0,.25);animation:modalPop .25s ease}.modal-header{display:flex;align-items:center;gap:12px;padding:18px 22px;border-bottom:1px solid var(--border-color)}.modal-header .material-icons{font-size:2rem;color:var(--primary-color)}.modal-header h2{margin:0;font-size:1.25rem;font-weight:600}.modal-body{padding:24px 22px}.modal-body p{margin:0 0 16px;color:var(--text-secondary);font-size:.95rem}.modal-body input:focus{border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(79,156,255,.15)}.modal-footer{display:flex;justify-content:flex-end;gap:12px;padding:18px 22px;border-top:1px solid var(--border-color)}.btn-primary,.btn-secondary{border:0;border-radius:10px;cursor:pointer;transition:.2s}.btn-secondary{padding:10px 18px;background:var(--background-color);color:var(--text-color)}.btn-secondary:hover{opacity:.85}.btn-primary{padding:10px 22px;background:var(--primary-color);color:#fff;font-weight:600}.btn-primary:hover{transform:translateY(-1px);box-shadow:0 8px 20px rgba(79,156,255,.3)}.thread-admin-actions{display:flex;justify-content:flex-end;margin-top:6px}.clar-btn:hover{background:#b71c1c;transform:translateY(-1px)}.second-btn .material-icons{font-size:18px}.second-btn:hover{background:#ffebcd;transform:translateY(-1px)}.delete-reply-btn{color:#d32f2f;cursor:pointer;font-size:.85rem;font-weight:600;margin-left:16px}.delete-reply-btn:hover{text-decoration:underline}.thread-title-row{display:flex;justify-content:space-between;align-items:center;gap:16px;margin-bottom:8px}.thread-title-row h2{margin:0;flex:1}.clar-btn,.thread-locked-banner{align-items:center;border-radius:10px}.clar-btn{display:inline-flex;gap:6px;padding:8px 14px;width:auto;border:0;background:#f5f5f5;color:#3b82f6;cursor:pointer;white-space:nowrap}.thread-locked-banner{display:flex;gap:8px;margin-top:14px;padding:12px 14px;background:#fff3cd;color:#856404;font-size:.9rem}.second-btn,.thread-pin{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;width:auto;border:0;border-radius:10px;background:#f5f5f5;color:#3498db;cursor:pointer;white-space:nowrap}.back-btn,.thread-pin-out{align-items:center;font-weight:600}.back-btn{display:flex;gap:6px;border:0;border-radius:12px;background:#000;color:#fff;cursor:pointer;transition:.2s}.back-btn:hover{transform:translateX(-2px)}.thread-pin:hover{background:#ffebcd;transform:translateY(-1px)}.thread-pin-out{display:inline-flex;gap:4px;padding:4px 10px;border-radius:999px;background:#fff0c2;color:#8a6a00;font-size:.75rem}.reaction-bar{display:flex;align-items:center;gap:10px;margin-top:10px;position:relative}.reaction-picker{width:34px;height:34px;display:flex;align-items:center;justify-content:center;border:0;border-radius:50%;background:var(--surface-color);cursor:pointer;font-size:1rem;transition:.2s}.reaction-picker:hover{transform:scale(1.08);background:var(--primary-light)}.reaction-counts{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.reaction-chip{display:flex;align-items:center;gap:4px;padding:4px 10px;border-radius:999px;background:var(--surface-color);font-size:.8rem;font-weight:600;transition:.2s}.reaction-chip:hover{background:var(--primary-light);cursor:pointer}.reaction-popup{position:fixed;display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:20px;background:var(--card-bg);box-shadow:0 8px 30px rgba(0,0,0,.18);z-index:99999;animation:reactionPopup .18s ease}.reaction-popup.hidden{display:none}.reaction-popup-emojis{display:flex;align-items:center;gap:8px;padding:2px 6px}.reaction-popup-menu{display:flex;flex-direction:column;border-top:1px solid rgba(0,0,0,.08);padding-top:4px}.popup-menu-item,.reply-toolbar button{border:0;border-radius:10px;cursor:pointer}.popup-menu-item{display:flex;align-items:center;gap:8px;padding:8px 10px;background:0 0;font-size:.85rem;color:#ef4444;text-align:left;width:100%}.popup-menu-item .material-icons{font-size:18px}.popup-menu-item:hover{background:rgba(239,68,68,.08)}.reaction-option{width:38px;height:38px;display:flex;align-items:center;justify-content:center;border-radius:50%;cursor:pointer;font-size:1.35rem;transition:.18s}.reaction-option:hover{transform:translateY(-5px) scale(1.2);background:rgba(0,0,0,.06)}body.dark .reaction-popup{background:#252525}body.dark .reaction-option:hover{background:#3a3a3a}body.dark .reaction-popup-menu{border-top-color:rgba(255,255,255,.12)}body.dark .popup-menu-item:hover{background:rgba(239,68,68,.15)}body.dark .reaction-chip,body.dark .reaction-picker{background:#2f2f2f}.reply-image-preview{position:relative;width:80px;max-width:110px;margin-bottom:10px;border-radius:12px;overflow:hidden}.reply-image-preview.hidden{display:none}#reply-preview-image{display:block;width:90%;height:80px;object-fit:cover;border-radius:12px}#remove-preview{position:absolute;top:6px;right:6px;width:22px;height:22px;border:0;border-radius:50%;background:rgba(0,0,0,.6);color:#fff;cursor:pointer}.reply-toolbar{gap:8px;margin-bottom:8px}.reply-toolbar button{width:38px;height:38px}#reply-upload-progress{width:100%;height:6px;border-radius:999px;background:#ddd;overflow:hidden;margin-bottom:10px}#reply-upload-fill{width:0;height:100%;background:var(--primary-color);transition:.2s}.reply-image{max-height:260px;object-fit:cover;cursor:pointer;transition:.2s}.reply-image:hover{transform:scale(1.02)}@media (max-width:768px){.reply-image{max-width:180px;max-height:220px}}.reply-image{width:100%;height:auto}.image-viewer{position:fixed;inset:0;background:rgba(0,0,0,.9);display:flex;justify-content:center;align-items:center;z-index:100000}.image-viewer.hidden{display:none}#viewer-image{max-width:95vw;max-height:95vh;border-radius:12px;object-fit:contain}.reaction-chip.mine{background:var(--primary-color);color:#fff}.status{font-size:.7rem;font-weight:700;padding:.25rem .65rem;border-radius:50px;text-transform:uppercase;letter-spacing:.5px;display:inline-block}.status.open{background-color:#e8f5e9;color:#2e7d32}.status.closed{background-color:#ffebee;color:#c62828}.fill-option{font-weight:400}#form-fill-fields input[type=date],#form-fill-fields input[type=number],#form-fill-fields input[type=text],#form-fill-fields select,#form-fill-fields textarea{width:100%;padding:.6rem;border-radius:8px;border:1px solid var(--border-color,#ddd)}#form-fill-card{display:block;padding:1.5rem}#form-fill-back,#form-fill-view{transition:var(--transition, 0.25s ease)}#form-fill-view{max-width:800px;margin:0 auto;background:var(--surface, #ffffff);border-radius:var(--radius, 18px);padding:32px;box-shadow:var(--shadow-md, 0 10px 30px rgba(0, 0, 0, .08));border:1px solid var(--border, #E5E7EB)}.form-fill-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:24px;padding-bottom:16px;border-bottom:1px solid var(--border, #E5E7EB)}#form-fill-back{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:12px;background:var(--background, #F5F7FB);color:var(--text, #1F2937);font-weight:600;font-size:.9rem}#form-fill-back:hover{background:#eef5ff;color:var(--primary, #4A90E2)}#form-fill-title{font-size:1.75rem;font-weight:800;color:var(--text, #1F2937);margin-bottom:8px;line-height:1.3}#form-fill-description{color:var(--text-light, #6B7280);font-size:.95rem;line-height:1.6;margin-bottom:28px}#form-fill-readonly-note{background-color:#fffbeb;border:1px solid #fcd34d;color:#92400e;padding:14px 18px;border-radius:12px;font-size:.9rem;font-weight:500;display:flex;align-items:center;gap:10px;margin-bottom:24px}.fill-field{display:flex;flex-direction:column;gap:8px;margin-bottom:22px}.fill-field label{font-weight:600}.required-star{color:var(--danger, #EF4444);font-weight:700;margin-left:2px}.fill-answer,.fill-field label{font-size:.95rem;color:var(--text, #1F2937)}.fill-answer{width:100%;padding:12px 16px;background:var(--surface, #ffffff);border:1.5px solid var(--border, #E5E7EB);border-radius:12px;outline:0;transition:all .2s ease}.fill-answer:focus{border-color:var(--primary, #4A90E2);box-shadow:0 0 0 4px rgba(74,144,226,.15)}.fill-answer:disabled{background-color:#f8fafc;color:var(--text-light, #6B7280);cursor:not-allowed;border-color:#e2e8f0}textarea.fill-answer{min-height:120px;resize:vertical;line-height:1.5}.fill-option{display:flex;align-items:center;gap:12px;padding:12px 16px;border:1px solid var(--border, #E5E7EB);border-radius:12px;background:var(--surface, #ffffff);cursor:pointer;font-size:.95rem;color:var(--text, #1F2937);margin-bottom:8px;transition:all .2s ease;user-select:none}.fill-option:hover{background:#f8fafc;border-color:var(--primary, #4A90E2)}.fill-option input[type=checkbox],.fill-option input[type=radio]{width:18px;height:18px;accent-color:var(--primary, #4A90E2);cursor:pointer}.fill-option:has(input:checked){background:#eef5ff;border-color:var(--primary, #4A90E2);font-weight:600}.fill-option:has(input:disabled){cursor:not-allowed;opacity:.7}.fill-file{padding:10px;cursor:pointer;background:#f8fafc}.fill-file::-webkit-file-upload-button{padding:8px 14px;border-radius:8px;border:0;background:var(--primary, #4A90E2);color:#fff;font-weight:600;cursor:pointer;margin-right:12px;transition:background .2s ease}.fill-file::-webkit-file-upload-button:hover{background:var(--primary-dark, #2563EB)}.fill-file-current{display:block;margin-top:6px;font-size:.85rem;color:var(--text-light, #6B7280)}.fill-file-current a{color:var(--primary, #4A90E2);font-weight:600;text-decoration:underline}.form-fill-actions{display:flex;justify-content:flex-end;margin-top:32px;padding-top:20px;border-top:1px solid var(--border, #E5E7EB)}#form-fill-submit{min-width:160px;padding:14px 28px;font-size:1rem;font-weight:700;border-radius:14px;background:linear-gradient(135deg,var(--primary, #4A90E2),var(--secondary, #9013FE));color:#fff;box-shadow:0 8px 20px rgba(74,144,226,.25);transition:all .25s ease}#form-fill-submit:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 12px 24px rgba(74,144,226,.35)}#form-fill-submit:disabled{opacity:.65;cursor:not-allowed;transform:none;box-shadow:none}@media (max-width:768px){#form-fill-view{padding:20px 16px;border-radius:14px}#form-fill-title{font-size:1.4rem}#form-fill-submit{width:100%}}.quiz-score-banner{display:flex;align-items:center;gap:.75rem;background:#eef6ff;border:1px solid #cfe4fb;border-radius:10px;padding:.9rem 1rem;margin-bottom:1.25rem}.quiz-score-banner .material-icons{color:#4a90e2;font-size:1.8rem}.quiz-score-banner strong{display:block;font-size:1.05rem}.quiz-score-banner small{color:#6b7280}.quiz-feedback{display:flex;align-items:center;gap:.35rem;font-size:.8rem;margin-top:.4rem;font-weight:600}.quiz-feedback .material-icons{font-size:1rem}.quiz-feedback-correct{color:#1b7f3a}.quiz-feedback-wrong{color:#c62828}.ai-quiz{margin-top:14px;padding:16px;border:1px solid var(--border-color, #d9e1ec);border-radius:14px;background:var(--card-bg, #fff)}.ai-quiz-header{display:flex;align-items:center;gap:8px;margin-bottom:14px}.ai-quiz-header .material-icons{color:var(--primary, #4a90e2)}.ai-quiz-question{margin:0 0 14px;padding:12px;border:1px solid var(--border-color, #d9e1ec);border-radius:10px}.ai-quiz-question legend{padding:0 4px;font-weight:700}.ai-quiz-option{display:flex;align-items:flex-start;gap:8px;padding:7px;border-radius:7px;cursor:pointer}.ai-quiz-option:hover{background:rgba(74,144,226,.08)}.ai-quiz-option.correct-answer{background:#e7f7ec;color:#176b35}.ai-quiz-option.wrong-answer{background:#fdeaea;color:#9e1f1f}.ai-quiz-explanation{margin:10px 0 0;color:var(--text-secondary, #5f6b7a);font-size:.9rem}.ai-quiz-result{margin-top:12px;padding:10px;border-radius:8px;background:#eef6ff;color:#1d5e98}.cgpa-summary-card{display:flex;gap:2.5rem;padding:1.5rem 1.75rem;margin-bottom:1.25rem}.cgpa-summary-item{display:flex;flex-direction:column;gap:.3rem}.cgpa-summary-label{font-size:.75rem;color:var(--text-secondary, #6b7280);text-transform:uppercase;letter-spacing:.06em;font-weight:600}.cgpa-summary-value{font-size:2rem;font-weight:800;line-height:1;transition:color .2s ease}.cgpa-semester-gpa.tier-excellent strong,.cgpa-summary-value.tier-excellent{color:var(--success, #10B981)}.cgpa-semester-gpa.tier-good strong,.cgpa-summary-value,.cgpa-summary-value.tier-good{color:var(--brand-primary, #4A90E2)}.cgpa-semester-gpa.tier-fair strong,.cgpa-summary-value.tier-fair{color:var(--warning, #F59E0B)}.cgpa-semester-gpa.tier-low strong,.cgpa-summary-value.tier-low{color:var(--danger, #EF4444)}.cgpa-semester-gpa.tier-empty strong,.cgpa-summary-value.tier-empty{color:var(--text-secondary, #9ca3af)}.cgpa-semester{margin-bottom:1rem;padding:1.1rem 1.25rem}.cgpa-semester-header{display:flex;align-items:center;gap:.75rem;margin-bottom:.85rem}.cgpa-semester-label{flex:1;font-weight:600;border:0;background:0 0;font-size:1rem;color:var(--text-primary);padding:.3rem 0;border-bottom:1px solid transparent}.cgpa-semester-label:focus{outline:0;border-bottom-color:var(--brand-primary, #4A90E2)}.cgpa-semester-gpa{font-size:.8rem;font-weight:600;color:var(--text-secondary, #6b7280);white-space:nowrap;display:inline-flex;align-items:baseline;gap:4px;letter-spacing:.02em;text-transform:uppercase}.cgpa-semester-gpa strong{font-size:1rem;text-transform:none;letter-spacing:0}.cgpa-course-row .cgpa-remove-course,.cgpa-semester-header .cgpa-remove-semester{width:32px;height:32px;border-radius:8px;background:0 0;box-shadow:none;color:var(--text-secondary);flex-shrink:0}.cgpa-course-row .cgpa-remove-course:hover,.cgpa-semester-header .cgpa-remove-semester:hover{background:rgba(239,68,68,.1);color:var(--danger, #EF4444);transform:none}.cgpa-course-row .cgpa-remove-course .material-icons,.cgpa-semester-header .cgpa-remove-semester .material-icons{font-size:18px}.cgpa-course-rows{display:flex;flex-direction:column;gap:.5rem;margin-bottom:.75rem}.cgpa-course-row{display:grid;grid-template-columns:1fr 76px 68px auto;gap:.6rem;align-items:center;padding:.4rem 0 .4rem .7rem;border-left:3px solid var(--border-color);border-radius:4px;transition:border-color .15s ease,background .15s ease}.cgpa-course-row:hover{background:var(--hover-bg, rgba(74,144,226,.04))}.cgpa-course-row[data-grade=A]{border-left-color:#10b981}.cgpa-course-row[data-grade=B]{border-left-color:#65a30d}.cgpa-course-row[data-grade=C]{border-left-color:#f59e0b}.cgpa-course-row[data-grade=D]{border-left-color:#f97316}.cgpa-course-row[data-grade=E]{border-left-color:#ef4444}.cgpa-course-row[data-grade=F]{border-left-color:#dc2626}.cgpa-course-row input,.cgpa-course-row select{padding:.55rem .6rem;border-radius:9px;border:1px solid var(--border-color, #ddd);background:var(--card-bg, #fff);color:var(--text-primary);font-size:.9rem;min-width:0}.cgpa-course-row input:focus,.cgpa-course-row select:focus{outline:0;border-color:var(--brand-primary, #4A90E2)}.cgpa-course-row input::placeholder{color:var(--text-secondary);opacity:.7}.cgpa-add-course,.cgpa-import-row{display:flex;align-items:center;cursor:pointer}.cgpa-add-course{width:100%;justify-content:center;gap:6px;padding:10px;margin-top:2px;background:0 0;border:1.5px dashed var(--border-color);border-radius:10px;color:var(--text-secondary);font-size:.85rem;font-weight:600;font-family:inherit;transition:.15s ease}.cgpa-add-course:hover{border-color:var(--brand-primary, #4A90E2);color:var(--brand-primary, #4A90E2);background:rgba(74,144,226,.06)}.cgpa-add-course .material-icons{font-size:1.1rem}.cgpa-import-row{gap:10px;padding:10px 4px;border-bottom:1px solid var(--border)}.cgpa-import-row:last-child{border-bottom:none}.cgpa-import-row span{flex:1}.cgpa-import-row em{color:var(--text-light);font-style:normal;font-size:.85rem}.cgpa-import-loading{padding:20px 4px;color:var(--text-light);text-align:center}.cgpa-scale-note{margin-top:1.25rem;display:flex;flex-wrap:wrap;align-items:center;gap:10px}.cgpa-scale-title{font-size:.78rem;font-weight:700;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.05em}.cgpa-scale-chips{display:flex;flex-wrap:wrap;gap:6px}.cgpa-scale-chip{display:inline-flex;align-items:baseline;gap:4px;padding:3px 10px;border-radius:999px;font-size:.78rem;font-weight:700;border:1px solid transparent}.cgpa-scale-chip em{font-style:normal;font-weight:500;opacity:.85}.cgpa-scale-chip[data-grade=A]{background:rgba(16,185,129,.12);color:#10b981;border-color:rgba(16,185,129,.3)}.cgpa-scale-chip[data-grade=B]{background:rgba(101,163,13,.12);color:#65a30d;border-color:rgba(101,163,13,.3)}.cgpa-scale-chip[data-grade=C]{background:rgba(245,158,11,.14);color:#d97706;border-color:rgba(245,158,11,.32)}.cgpa-scale-chip[data-grade=D]{background:rgba(249,115,22,.14);color:#ea580c;border-color:rgba(249,115,22,.32)}.cgpa-scale-chip[data-grade=E]{background:rgba(239,68,68,.12);color:#ef4444;border-color:rgba(239,68,68,.3)}.cgpa-scale-chip[data-grade=F]{background:rgba(220,38,38,.14);color:#dc2626;border-color:rgba(220,38,38,.32)}@media (max-width:600px){.cgpa-course-row{grid-template-columns:1fr 58px 58px auto;gap:.4rem}.cgpa-summary-card{flex-direction:column;gap:.85rem}}.jotter-card{display:flex;flex-direction:column;gap:.9rem;padding:1.4rem;background:var(--surface);border-radius:var(--radius);box-shadow:var(--shadow-md)}.jotter-toolbar{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.jotter-note-title,.jotter-title-wrap{flex:1;min-width:0;font-family:var(--font-display);font-size:1.05rem;font-weight:600;color:var(--text)}.jotter-title-wrap{display:inline-flex;align-items:center;gap:.5rem}.jotter-title-wrap .material-icons{color:var(--primary);font-size:1.2rem;flex-shrink:0}.jotter-note-title{border:0;background:0 0;padding:.15rem .3rem;border-radius:8px}.jotter-note-title:focus{outline:0;background:rgba(20,199,180,.08)}.jotter-note-title::placeholder{color:var(--text-light);font-weight:500}.jotter-notes-rail{display:flex;align-items:center;gap:.5rem;overflow-x:auto;padding-bottom:.35rem;scrollbar-width:thin}.jotter-note-chip{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;max-width:200px;border:1px solid rgba(15,23,42,.08);border-radius:999px;padding:.4rem .6rem .4rem .85rem;background:rgba(15,23,42,.03);color:var(--text-light);font-family:var(--font-mono);font-size:.75rem;font-weight:600;transition:.15s ease}.jotter-note-chip:hover{color:var(--text);background:rgba(15,23,42,.06)}.jotter-note-chip.active{color:var(--primary-dark);background:rgba(20,199,180,.12);border-color:rgba(20,199,180,.4)}.jotter-note-chip-label{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.jotter-note-chip-delete{font-size:.95rem!important;width:16px;height:16px;display:inline-flex;align-items:center;justify-content:center;border-radius:50%;opacity:.6}.jotter-note-chip-delete:hover{opacity:1;background:rgba(239,68,68,.15);color:var(--danger)}.jotter-new-note-btn{display:inline-flex;align-items:center;gap:.3rem;flex-shrink:0;border:1px dashed rgba(20,199,180,.5);border-radius:999px;padding:.4rem .85rem;background:0 0;color:var(--primary-dark);font-family:var(--font-mono);font-size:.75rem;font-weight:600;transition:.15s ease}.jotter-new-note-btn .material-icons{font-size:1rem}.jotter-new-note-btn:hover{background:rgba(20,199,180,.1)}#jotter-empty-state{display:none}#jotter-empty-state .primary-btn{display:inline-flex;align-items:center;gap:.4rem;margin-top:.5rem}.jotter-toolbar-actions{display:flex;align-items:center;gap:.3rem}.jotter-icon-btn{display:inline-flex;align-items:center;justify-content:center;width:36px;height:36px;border:0;border-radius:10px;background:0 0;color:var(--text-light);transition:.15s ease}.jotter-icon-btn .material-icons{font-size:1.2rem}.jotter-icon-btn:hover{background:rgba(20,199,180,.1);color:var(--primary-dark)}.jotter-tabs{display:flex;gap:.4rem;padding-left:.35rem;margin-bottom:-1px;position:relative;z-index:1}.jotter-template-btn{border:1px solid rgba(15,23,42,.08);border-bottom:none;border-radius:10px 10px 0 0;padding:.45rem .9rem .6rem;font-family:var(--font-mono);font-size:.72rem;font-weight:600;color:var(--text-light);background:rgba(15,23,42,.03);transition:.15s ease}.jotter-template-btn:hover{color:var(--text);transform:translateY(-1px)}.jotter-tab-study{background:rgba(99,102,241,.09)}.jotter-tab-todo{background:rgba(20,199,180,.1)}.jotter-tab-class{background:rgba(245,158,11,.1)}.jotter-paper{--rule-gap:2.05rem;--margin-x:2.6rem;background:linear-gradient(to right,transparent calc(var(--margin-x) - 1px),rgba(193,91,74,.35) calc(var(--margin-x) - 1px),rgba(193,91,74,.35) var(--margin-x),transparent var(--margin-x)),repeating-linear-gradient(to bottom,transparent 0,transparent calc(var(--rule-gap) - 1px),rgba(15,23,42,.08) calc(var(--rule-gap) - 1px),rgba(15,23,42,.08) var(--rule-gap)),#fbf8f1;border:1px solid rgba(15,23,42,.08);border-radius:4px 14px 14px 14px;box-shadow:var(--shadow-sm)}#jotter-input{display:block;width:100%;min-height:320px;resize:vertical;border:0;background:0 0;padding:.6rem 1.3rem 1rem calc(var(--margin-x, 2.6rem) + .9rem);color:var(--text);font-family:var(--font-mono);font-size:.92rem;line-height:2.05rem}#jotter-input:focus{outline:0}.jotter-paper:focus-within{border-color:rgba(20,199,180,.45);box-shadow:0 0 0 3px rgba(20,199,180,.12)}.jotter-preview{display:none;padding:1rem 1.2rem;border:1px solid var(--border);border-radius:14px;background:var(--surface);min-height:120px;color:var(--text);line-height:1.6}.jotter-preview.visible{display:block}.jotter-preview h1,.jotter-preview h2,.jotter-preview h3,.jotter-preview h4,.jotter-preview h5,.jotter-preview h6{font-family:var(--font-display);margin:.9rem 0 .5rem;color:var(--text)}.jotter-preview ol,.jotter-preview ul{margin:.75rem 0;padding-left:1.2rem}.jotter-preview code{font-family:var(--font-mono);background:rgba(148,163,184,.12);border-radius:6px;padding:.12rem .35rem}.jotter-preview pre{background:rgba(15,23,42,.92);color:#e2e8f0;padding:.8rem;border-radius:12px;overflow-x:auto}.jotter-preview-empty{opacity:.7;color:var(--text-light)}.jotter-footer{display:flex;align-items:center;justify-content:space-between;gap:.75rem;flex-wrap:wrap}.jotter-meta{display:flex;align-items:baseline;gap:.7rem;font-family:var(--font-mono);font-size:.75rem;color:var(--text-light)}.jotter-word-count{font-weight:600;color:var(--text)}.jotter-status{min-height:1.1rem}.jotter-actions{display:flex;align-items:center;gap:1rem}.jotter-text-btn{border:0;background:0 0;color:var(--text-light);font-weight:600;font-size:.85rem;padding:.4rem .2rem;transition:.15s ease}.jotter-text-btn:hover{color:var(--danger)}.jotter-actions .primary-btn{display:inline-flex;align-items:center;gap:.4rem}@media (max-width:768px){.jotter-paper{--margin-x:1.8rem;--rule-gap:1.9rem}#jotter-input{min-height:240px;font-size:.88rem}.jotter-footer{flex-direction:column;align-items:stretch}.jotter-actions{justify-content:space-between}.jotter-note-chip{max-width:140px}:root{--nav-bottom-space:calc(72px + env(safe-area-inset-bottom))}.ai-layout{height:calc(100vh - 120px - var(--nav-bottom-space))!important}#forum-thread form,.thread-reply-input-container{bottom:var(--nav-bottom-space)!important}}body:has(#ai.page.active) .main-content,body:has(#forum-thread.page.active) .main-content,body:has(#forum.page.active) .main-content{padding:0!important}body:has(#ai.page.active) .topbar,body:has(#forum-thread.page.active) .topbar,body:has(#forum.page.active) .topbar{display:none!important}body:has(#ai.page.active) .ai-layout{height:calc(100vh - 40px)!important}@media (max-width:768px){body:has(#ai.page.active) .ai-layout{height:calc(100vh - 65px - env(safe-area-inset-bottom))!important}}.forum-sidebar-toggle{display:none;align-items:center;justify-content:center;position:fixed;top:14px;left:14px;width:34px;height:34px;background:var(--card-bg, #fff);border:1px solid var(--border);border-radius:50%;cursor:pointer;padding:0;color:inherit;font-size:20px;line-height:1;box-shadow:0 2px 10px rgba(0,0,0,.12);z-index:50}body.dark .forum-sidebar-toggle{background:#1d1d1f;border-color:rgba(255,255,255,.12)}body:has(#forum-thread.page.active) .forum-sidebar-toggle,body:has(#forum.page.active) .forum-sidebar-toggle{display:inline-flex}body:has(#forum-thread.page.active) #thread-header,body:has(#forum.page.active) .forum-toolbar{padding-left:44px}@media (max-width:768px){.portal-container,body{height:100vh;overflow:hidden}.bottom-navbar{height:8vh!important;position:fixed;bottom:0;left:0;right:0;z-index:500}.main-content{height:92vh!important;overflow-y:auto;padding-bottom:20px!important}.ai-layout,.forum-container,.thread-container{height:100%!important;display:flex;flex-direction:column;justify-content:space-between}.chat-messages,.forum-posts-container,.thread-replies{flex:1;overflow-y:auto}.ai-input-container,.forum-reply-bar,.thread-input-container{position:sticky;bottom:0;background:var(--surface, #ffffff);z-index:100}}.chat-footer{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:8px;background:0 0;border-top:none;box-shadow:none;padding:8px 4px calc(8px + env(safe-area-inset-bottom))}.chat-footer::before{content:none}.chat-input-pill{max-width:none;margin:0;align-items:center;background:var(--input-bg, #f8fafc);border-radius:999px;padding:6px 8px 6px 14px;box-shadow:0 1px 4px rgba(0,0,0,.08);gap:4px}#chat-input{border:0;background:0 0;min-height:24px;padding:6px 4px}#chat-input:focus{border-color:transparent;box-shadow:none;outline:0}#attach-btn,#voice-btn{width:34px;height:34px;background:0 0}#attach-btn:hover,#reply-image-btn:hover,#voice-btn:hover{background:rgba(15,23,42,.06)}#send-btn{width:42px;height:42px;flex-shrink:0;margin-left:2px}body.dark .chat-input-pill{background:#2a2a2d;box-shadow:none}body.dark #attach-btn:hover,body.dark #voice-btn:hover{background:rgba(255,255,255,.08)}body:not(.dark):not(.dark-mode) .chat-footer{background:0 0!important;border-top:none!important;box-shadow:none!important}body:not(.dark):not(.dark-mode) .chat-input-pill{background:var(--surface, #ffffff)!important;border:0;box-shadow:0 1px 4px rgba(0,0,0,.08)}body:not(.dark):not(.dark-mode) #chat-input{background:0 0!important;color:var(--text-primary, #0f172a)}@media (max-width:768px){.ai-layout.show-sidebar .ai-main{width:calc(100% - 260px)!important;max-width:calc(100% - 260px)!important;margin-left:260px;flex:0 1 calc(100% - 260px)!important;min-width:0!important}body:has(.sidebar.show) .ai-layout .ai-main{width:calc(100% - 280px)!important;max-width:calc(100% - 280px)!important;margin-left:280px;flex-basis:calc(100% - 280px)!important}.ai-layout.show-sidebar .chat-footer,.ai-layout.show-sidebar .material-context-row,body:has(.sidebar.show) .chat-footer,body:has(.sidebar.show) .material-context-row{width:100%!important;min-width:0!important;box-sizing:border-box}.ai-layout.show-sidebar .material-context-chip,body:has(.sidebar.show) .material-context-chip{width:100%;min-width:0;box-sizing:border-box}}.floating-add{position:fixed;right:25px;bottom:85px;width:60px;height:60px;border:0;border-radius:50%;color:#fff;cursor:pointer;z-index:99;transition:transform .2s ease,bottom .2s ease}.floating-add:hover{transform:scale(1.08)}@media (max-width:768px){.floating-add{bottom:calc(85px + env(safe-area-inset-bottom))!important}}.elective-modal-subtitle{margin-top:6px;color:var(--text-light);font-size:.85rem;line-height:1.5}.elective-modal .form-group{display:flex;flex-direction:column;gap:6px;margin-bottom:16px}.elective-modal .form-group input,.elective-modal .form-group select{width:100%;padding:12px 14px;border:1px solid var(--border);border-radius:12px;outline:0;font-size:.95rem;background:var(--surface);color:var(--text);transition:.2s ease}.elective-modal .form-group input:focus{border-color:var(--primary);box-shadow:0 0 0 3px rgba(20,199,180,.14)}.elective-field-row{display:grid;grid-template-columns:2fr 1fr;gap:14px}.elective-semester-toggle{display:flex;gap:8px}.elective-semester-option{flex:1;padding:10px 14px;border-radius:12px;border:1px solid var(--border);background:var(--surface);color:var(--text-light);font-weight:600;font-size:.9rem;transition:.15s ease}.elective-semester-option:hover{border-color:var(--primary);color:var(--primary-dark)}.elective-semester-option.active{background:linear-gradient(135deg,var(--primary),var(--secondary));border-color:transparent;color:#fff}.elective-existing-note,.elective-preview{display:flex;padding:12px 14px;border-radius:12px}.elective-existing-note{align-items:flex-start;gap:8px;margin-top:4px;background:rgba(59,130,246,.08);border:1px solid rgba(59,130,246,.2);color:var(--text);font-size:.85rem;line-height:1.5}.elective-existing-note .material-icons{font-size:1.1rem;color:var(--info);margin-top:1px}.elective-preview{align-items:center;gap:12px;margin-top:6px;background:rgba(20,199,180,.06);border:1px dashed rgba(20,199,180,.3)}.elective-preview .material-icons{color:var(--primary);font-size:1.4rem}.elective-preview>div{flex:1;min-width:0}.elective-preview strong{font-family:var(--font-mono);font-size:.85rem;color:var(--text)}.chat-row-header h3,.elective-preview span{font-size:.82rem;color:var(--text-light);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.elective-preview .elective-preview-meta{flex-shrink:0;font-size:.78rem;color:var(--text-light);text-align:right;white-space:nowrap}@media (max-width:520px){.elective-field-row{grid-template-columns:1fr}}.forum-page{max-width:720px;background:var(--surface)}.forum-toolbar{padding:0 4px}.forum-search{border-radius:999px;background:rgba(15,23,42,.04);border:0}#forum-thread-list,.elective-preview>div{display:flex;flex-direction:column}.thread-card{display:flex;align-items:flex-start;gap:12px;background:0 0;border:0;border-bottom:1px solid rgba(15,23,42,.06);border-radius:0;padding:12px 4px;margin-bottom:0;transition:background .15s ease}.thread-card:hover{transform:none;box-shadow:none;background:rgba(15,23,42,.035)}.chat-avatar{flex-shrink:0;width:48px;height:48px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-display);font-weight:700;font-size:1.1rem;text-transform:uppercase}.chat-row-content{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px;padding-top:2px}.chat-row-header{display:flex;align-items:baseline;justify-content:space-between;gap:8px}.chat-row-header h3{margin:0;font-size:.98rem;font-weight:600;color:var(--text)}.chat-row-time{flex-shrink:0;font-size:.72rem;color:var(--text-light)}.chat-row-subline{display:flex;align-items:center;justify-content:space-between;gap:10px}.thread-preview{margin:0;color:var(--text-light);font-size:.85rem;line-height:1.4;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;flex:1;min-width:0}.chat-row-author{color:var(--text);font-weight:500}.chat-row-meta{flex-shrink:0;display:flex;align-items:center;gap:6px}.thread-reactions-count{font-size:.72rem;color:var(--text-light)}.chat-unread-badge{display:none;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 6px;border-radius:999px;background:var(--primary);color:#fff;font-size:.7rem;font-weight:700}.chat-unread-badge.has-count{display:inline-flex}.floating-add{background:var(--primary);box-shadow:0 8px 20px rgba(20,199,180,.35)}#forum-thread,#forum-thread.page.active{background:radial-gradient(circle at 20% 15%,rgba(20,199,180,.05)0,transparent 45%),radial-gradient(circle at 80% 75%,rgba(20,199,180,.05)0,transparent 45%),#ebe7dd;padding:0}body.dark #forum-thread,body.dark #forum-thread.page.active{background:radial-gradient(circle at 20% 15%,rgba(20,199,180,.06)0,transparent 45%),radial-gradient(circle at 80% 75%,rgba(20,199,180,.06)0,transparent 45%),#0b141a}#forum-thread-container{padding:0 12px}#thread-header{border-radius:0;background:var(--surface)}#thread-replies{padding:14px 4px;gap:4px}.forum-message{display:flex;align-items:flex-end;gap:8px;max-width:82%;margin:3px 0}.forum-message.other{align-self:flex-start}.forum-message.mine{align-self:flex-end;flex-direction:row-reverse}.message-avatar-chip{flex-shrink:0;width:30px;height:30px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:#fff;font-family:var(--font-display);font-weight:700;font-size:.85rem;text-transform:uppercase;margin-bottom:2px}.message-card{border-radius:14px;padding:8px 10px 6px;box-shadow:0 1px 1px rgba(0,0,0,.08);position:relative;max-width:100%}.forum-message.other .message-card{background:var(--surface, #ffffff)!important;color:var(--text, #1f2937)!important;border-top-left-radius:4px}.forum-message.mine .message-card{background:var(--primary, #14C7B4)!important;color:#fff!important;border-top-right-radius:4px}.forum-message.other .message-card::before{content:"";position:absolute;top:0;left:-7px;width:12px;height:14px;background:var(--surface, #ffffff);clip-path:polygon(100%0,100% 100%,0 0)}.forum-message.mine .message-card::before{content:"";position:absolute;top:0;right:-7px;width:12px;height:14px;background:var(--primary, #14C7B4);clip-path:polygon(0 0,0 100%,100%0)}.message-author{font-size:.76rem;font-weight:700;margin-bottom:2px;color:var(--primary-dark, #0d9488)}.forum-message.mine .message-author{color:rgba(255,255,255,.9)}.message-time{font-size:.65rem;opacity:.65;margin-top:3px;text-align:right}.reply-image{max-width:220px;border-radius:10px;margin-bottom:6px;display:block}#thread-input-area{background:0 0;box-shadow:none;padding:8px 4px calc(8px + env(safe-area-inset-bottom))}.thread-input-row{align-items:center;background:var(--surface, #ffffff);border-radius:999px;padding:6px 8px 6px 14px;box-shadow:0 1px 4px rgba(0,0,0,.08)}#reply-image-btn,.reply-toolbar{display:flex;align-items:center}#reply-image-btn{width:34px;height:34px;border:0;border-radius:50%;background:0 0;color:var(--text-light);justify-content:center}#reply-input{border:0;background:0 0;min-height:24px;max-height:120px;padding:6px 4px;font-size:.92rem}#reply-input:focus{border-color:transparent;box-shadow:none}#send-reply{width:42px;height:42px;background:var(--primary, #14C7B4);flex-shrink:0}#send-reply:hover{background:var(--primary-dark, #0d9488);transform:scale(1.05)}#send-reply .material-icons{font-size:20px}@media (max-width:768px){.forum-message{max-width:88%}.chat-avatar{width:42px;height:42px;font-size:1rem}#courses .page-header{flex-wrap:nowrap;align-items:center;gap:12px}#courses .page-header>div:first-child{flex:1;min-width:0}#courses .page-header p{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}#add-elective-btn{flex-shrink:0;width:46px;height:46px;padding:0;border-radius:50%;display:flex;align-items:center;justify-content:center;gap:0}#add-elective-btn .btn-label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}#add-elective-btn .material-icons{font-size:22px}}.material-context-row{width:100%;max-width:900px;margin:0 auto 10px}.material-context-chip{display:flex;align-items:center;gap:10px;width:fit-content;max-width:100%;padding:8px 12px;border:1px solid var(--primary);border-radius:14px;background:rgba(20,199,180,.09);color:var(--text-primary);font-size:.85rem}.material-context-chip .material-icons{color:var(--primary);font-size:19px}.material-context-chip span:last-child{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}body.portal-document-viewer-open{overflow:hidden}.portal-document-viewer-overlay{position:fixed;z-index:10000;inset:0;background:#111827}.portal-document-viewer-frame{display:block;width:100%;height:100%;border:0;background:#111827}#send-btn.stop-mode{background:#ef4444;box-shadow:0 5px 15px rgba(239,68,68,.35)}.setting-sub{margin-left:14px;padding-left:14px;border-left:2px solid var(--border)}#forum-notification-options[hidden]{display:none}#forum-notification-options.is-saving{opacity:.6;pointer-events:none}#mention-popup{position:absolute;left:16px;right:16px;bottom:calc(100% + 6px);background:var(--surface,#fff);border:1px solid var(--border);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.12);max-height:220px;overflow-y:auto;z-index:20}#mention-popup.hidden{display:none}.mention-item{display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:.92rem;color:var(--text);cursor:pointer}.mention-item.active,.mention-item:hover{background:var(--surface-hover,#F8FAFC)}.mention{color:var(--primary-dark);font-weight:600;background:rgba(20,199,180,.12);border-radius:6px;padding:0 4px}.mention-me{background:rgba(245,158,11,.22)}