@import"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap";:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;line-height:1.5;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color-scheme:light;--color-bg-page: #f1f5f9;--color-bg-subtle: #f8fafc;--color-bg-card: #ffffff;--color-bg-hover: #f8fafc;--color-bg-input: #ffffff;--color-text-primary: #1e293b;--color-text-secondary: #64748b;--color-text-muted: #94a3b8;--color-border: #e2e8f0;--color-border-light: #f1f5f9;--color-primary: #2563eb;--color-primary-hover: #1d4ed8;--color-primary-bg: #eff6ff;--color-primary-bg-hover: #dbeafe;--color-shadow: rgba(0, 0, 0, .04);--color-shadow-md: rgba(0, 0, 0, .08);--color-scrollbar-track: #f1f5f9;--color-scrollbar-thumb: #cbd5e1;--color-scrollbar-hover: #94a3b8;color:var(--color-text-primary);background-color:var(--color-bg-subtle)}[data-theme=dark]{color-scheme:dark;--color-bg-page: #0f172a;--color-bg-subtle: #1e293b;--color-bg-card: #1e293b;--color-bg-hover: #334155;--color-bg-input: #1e293b;--color-text-primary: #f1f5f9;--color-text-secondary: #94a3b8;--color-text-muted: #64748b;--color-border: #334155;--color-border-light: #1e293b;--color-primary: #60a5fa;--color-primary-hover: #3b82f6;--color-primary-bg: rgba(59, 130, 246, .15);--color-primary-bg-hover: rgba(59, 130, 246, .25);--color-shadow: rgba(0, 0, 0, .2);--color-shadow-md: rgba(0, 0, 0, .3);--color-scrollbar-track: #1e293b;--color-scrollbar-thumb: #475569;--color-scrollbar-hover: #64748b}*{box-sizing:border-box}html,body{transition:background-color 1.5s ease}body{margin:0;min-width:320px;min-height:100vh;background:var(--color-bg-subtle)}#root{min-height:100vh}a{font-weight:500;color:var(--color-primary);text-decoration:inherit}a:hover{color:var(--color-primary-hover)}h1,h2,h3,h4,h5,h6{color:var(--color-text-primary);margin:0}button{border-radius:8px;border:1px solid transparent;padding:.6em 1.2em;font-size:1em;font-weight:500;font-family:inherit;background-color:var(--color-bg-subtle);color:var(--color-text-primary);cursor:pointer;transition:all .2s ease}button:hover{background-color:var(--color-bg-page);border-color:var(--color-border)}button:focus,button:focus-visible{outline:2px solid var(--color-primary);outline-offset:2px}input,textarea,select{font-family:inherit;font-size:inherit}.placeholder-page{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 40px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;text-align:center}.placeholder-page h1{font-size:24px;font-weight:600;color:var(--color-text-primary);margin-bottom:8px}.placeholder-page p{font-size:14px;color:var(--color-text-secondary)}.text-muted{color:var(--color-text-secondary)}.text-center{text-align:center}.mb-0{margin-bottom:0}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.mt-0{margin-top:0}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}::-webkit-scrollbar{width:8px;height:8px}::-webkit-scrollbar-track{background:var(--color-scrollbar-track);border-radius:4px}::-webkit-scrollbar-thumb{background:var(--color-scrollbar-thumb);border-radius:4px}::-webkit-scrollbar-thumb:hover{background:var(--color-scrollbar-hover)}[data-theme=dark] .aspect-item.positive,[data-theme=dark] .aspect-block.positive,[data-theme=dark] .cluster-card.positive{background:#22c55e1a;border-color:#22c55e33}[data-theme=dark] .aspect-item.negative,[data-theme=dark] .aspect-block.negative,[data-theme=dark] .cluster-card.negative{background:#ef44441a;border-color:#ef444433}[data-theme=dark] .cluster-card.neutral{background:#f59e0b1a;border-color:#f59e0b33}[data-theme=dark] .review-card.positive{background:#22c55e14;border-color:#22c55e26}[data-theme=dark] .review-card.negative{background:#f59e0b14;border-color:#f59e0b26}[data-theme=dark] .filter-btn.clear-btn{background:#ef44441a;border-color:#ef444433}[data-theme=dark] .subject-sentiment-badge.positive{background:#22c55e26}[data-theme=dark] .subject-sentiment-badge.negative{background:#dc262626}[data-theme=dark] .teacher-rank-badge.top,[data-theme=dark] .teacher-sentiment-badge.positive{background:#22c55e26}[data-theme=dark] .teacher-rank-badge.bottom,[data-theme=dark] .teacher-sentiment-badge.negative{background:#dc262626}[data-theme=dark] .cluster-tonality.positive{background:#22c55e26}[data-theme=dark] .cluster-tonality.negative{background:#dc262626}[data-theme=dark] .cluster-tonality.neutral,[data-theme=dark] .subject-sentiment-badge.neutral{background:#64748b33}.page-header,.page-actions{display:none}.layout{display:flex;min-height:100vh;background:var(--color-bg-page)}.sidebar{width:220px;background:var(--color-bg-card);border-right:1px solid var(--color-border);display:flex;flex-direction:column;position:fixed;height:100vh;left:0;top:0;z-index:100;box-shadow:2px 0 8px var(--color-shadow)}.sidebar-header{padding:16px;display:flex;align-items:center;justify-content:center;border-bottom:1px solid var(--color-border);min-height:70px}.sidebar-logo{width:100%;max-width:180px;height:auto;object-fit:contain}[data-theme=dark] .sidebar-logo-wrap{background:#fff;border-radius:8px;padding:6px 10px;display:flex;align-items:center;justify-content:center}.sidebar-nav{flex:1;padding:12px 8px;display:flex;flex-direction:column;gap:2px}.nav-item{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:8px;color:var(--color-text-secondary);text-decoration:none;font-size:13px;font-weight:500;transition:all .2s ease;position:relative}.nav-item:hover{background:var(--color-bg-page);color:var(--color-primary-hover)}.nav-item.active{background:var(--color-primary-bg);color:var(--color-primary);font-weight:600}.nav-item.active:before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);width:3px;height:20px;background:var(--color-primary);border-radius:0 3px 3px 0}.nav-badge{margin-left:auto;background:var(--color-primary);color:#fff;font-size:10px;font-weight:600;padding:2px 7px;border-radius:10px;min-width:18px;text-align:center}.sidebar-footer{padding:8px;border-top:1px solid var(--color-border)}.help-card{margin:10px 6px 6px;padding:14px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:10px;position:relative}.help-icon{width:28px;height:28px;background:var(--color-primary);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600;margin-bottom:10px}.help-content{margin-bottom:6px}.help-title{font-size:12px;font-weight:600;color:var(--color-text-primary);margin-bottom:2px}.help-text{font-size:11px;color:var(--color-text-secondary);line-height:1.3}.help-link{font-size:12px;color:var(--color-primary);text-decoration:none;font-weight:500}.help-link:hover{text-decoration:underline}.main-wrapper{flex:1;margin-left:220px;display:flex;flex-direction:column;min-height:100vh}.top-header{height:60px;background:var(--color-bg-card);border-bottom:1px solid var(--color-border);display:flex;align-items:center;justify-content:space-between;padding:0 24px;position:sticky;top:0;z-index:50;box-shadow:0 1px 3px var(--color-shadow)}.header-left{display:flex;align-items:center}.header-title{font-size:13px;color:var(--color-text-secondary);font-weight:500}.header-right{display:flex;align-items:center;gap:16px}.theme-toggle-btn{position:relative;width:36px;height:36px;border:none;background:transparent;border-radius:999px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;color:var(--color-text-primary);padding:0}.theme-toggle-btn:hover{background:var(--color-bg-page)}.notification-btn{position:relative;width:36px;height:36px;border:none;background:transparent;border-radius:999px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;color:var(--color-text-primary)}.notification-btn svg{width:20px;height:20px;fill:currentColor;stroke:none;display:block}.notification-btn:hover{background:var(--color-bg-page)}.notification-btn:hover svg{color:var(--color-text-primary)}.notification-dot{position:absolute;top:2px;right:2px;width:10px;height:10px;background:#ef4444;border-radius:50%;border:2px solid var(--color-bg-card);box-shadow:0 0 0 1px #ef4444}.user-card{display:flex;align-items:center;gap:12px;padding:0;background:transparent;border:none;transition:all .2s ease;max-height:60px}.user-card:hover{background:transparent}.user-avatar{width:48px;height:48px;background:linear-gradient(135deg,#1d4ed8,#2563eb);color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:700;flex-shrink:0}.user-info{display:flex;flex-direction:column;justify-content:center;gap:0;line-height:1.1;align-self:center;transform:translateY(4px)}.user-name{font-size:16px;font-weight:600;color:var(--color-text-primary);white-space:nowrap}.user-role{font-size:12px;color:var(--color-text-secondary);white-space:nowrap}.page-content{flex:1;padding:20px 24px;background:var(--color-bg-page)}@media(max-width:1024px){.sidebar{width:64px}.sidebar-header{padding:12px 8px;min-height:60px}.sidebar-logo{max-width:40px}.nav-item span,.help-content,.help-link{display:none}.nav-item{justify-content:center;padding:10px}.nav-badge{position:absolute;top:2px;right:2px;margin:0;width:16px;height:16px;padding:0;display:flex;align-items:center;justify-content:center;font-size:9px}.help-card{padding:10px;display:flex;justify-content:center}.help-icon{margin:0}.main-wrapper{margin-left:64px}}@media(max-width:768px){.sidebar{transform:translate(-100%)}.main-wrapper{margin-left:0}.top-header{padding:0 16px;height:56px}.header-title{display:none}.page-content{padding:16px}.user-info{display:none}.user-card{padding:0}.user-card svg{display:none}.user-avatar{width:40px;height:40px;font-size:14px}}.dashboard-page{width:100%;max-width:none;padding:0}.dashboard-header{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px;gap:20px;flex-wrap:wrap}.header-content{display:flex;flex-direction:column;gap:4px}.dashboard-title{font-size:28px;font-weight:700;color:var(--color-text-primary);margin:0}.dashboard-subtitle{font-size:14px;color:var(--color-text-secondary);margin:0}.create-report-btn{display:inline-flex;align-items:center;gap:8px;padding:12px 20px;background:#3b82f6;color:#fff;border:none;border-radius:12px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;flex-shrink:0}.create-report-btn:hover{background:#2563eb;transform:translateY(-1px);box-shadow:0 4px 12px #3b82f64d}.dashboard-page .stats-row{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:16px;margin-bottom:24px}.stat-card{display:flex;align-items:center;gap:16px;padding:20px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;transition:all .2s ease}.stat-icon-wrapper{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-card.blue .stat-icon-wrapper{background:#eff6ff;color:#3b82f6}.stat-card.green .stat-icon-wrapper{background:#dcfce7;color:#22c55e}.stat-card.purple .stat-icon-wrapper{background:#faf5ff;color:#a855f7}.stat-card.orange .stat-icon-wrapper{background:#fff7ed;color:#f97316}.stat-info{display:flex;flex-direction:column;gap:2px}.stat-value{font-size:28px;font-weight:700;color:var(--color-text-primary)}.stat-label{font-size:13px;color:var(--color-text-secondary)}.filter-actions{display:flex;gap:12px;margin-bottom:16px;flex-wrap:wrap}.filter-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;font-size:13px;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.filter-btn:hover{background:var(--color-bg-subtle);border-color:#cbd5e1}.filter-btn svg{color:var(--color-text-secondary);width:14px;height:14px}.filter-btn.clear-btn{background:#fef2f2;border-color:#fecaca;color:#dc2626}.filter-btn.clear-btn svg{color:#dc2626;width:12px;height:12px}.filter-btn.clear-btn:hover{background:#fee2e2}.active-filters{display:flex;gap:8px;margin-bottom:16px;flex-wrap:wrap}.filter-tag{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--color-primary-bg);border:1px solid #bfdbfe;border-radius:20px;font-size:12px;color:var(--color-primary)}.filter-tag button{background:none;border:none;padding:0;cursor:pointer;color:var(--color-primary);display:flex;align-items:center}.filter-tag button svg{width:12px;height:12px}.teachers-table-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;overflow:hidden}.table-header{padding:20px 24px;border-bottom:1px solid var(--color-border)}.table-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0}.teachers-table{width:100%}.table-head{display:grid;grid-template-columns:2fr 1.2fr .6fr .8fr 1.2fr;padding:12px 24px;background:var(--color-bg-subtle);border-bottom:1px solid var(--color-border);font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.table-body{max-height:600px;overflow-y:auto}.table-row{display:grid;grid-template-columns:2fr 1.2fr .6fr .8fr 1.2fr;padding:16px 24px;border-bottom:1px solid var(--color-border-light);align-items:center;transition:background .15s ease}.table-row:hover{background:var(--color-bg-hover)}.table-row:last-child{border-bottom:none}.table-empty{padding:48px 24px;text-align:center;color:var(--color-text-muted);font-size:14px}.td-name{display:flex;align-items:center;gap:12px}.teacher-avatar{width:40px;height:40px;border-radius:10px;background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:600;flex-shrink:0}.teacher-info{display:flex;flex-direction:column;gap:2px;min-width:0}.teacher-name{font-size:14px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.teacher-role{font-size:12px;color:var(--color-text-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.td-rating{display:flex;align-items:center}.sentiment-badge{display:flex;flex-direction:column;gap:4px;padding:8px 12px;border-radius:8px;min-width:110px}.sentiment-label{font-size:12px;font-weight:600}.sentiment-percentage{font-size:11px;opacity:.8}.sentiment-stars{display:flex;gap:2px;margin-top:2px}.sentiment-stars svg{width:12px;height:12px}.td-score{display:flex;align-items:center}.score-value{font-size:20px;font-weight:700;color:var(--color-text-primary)}.score-empty{font-size:16px;color:var(--color-text-muted)}.td-date{display:flex;align-items:center}.reviews-count-badge{display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--color-bg-page);border-radius:20px;font-size:13px;font-weight:600;color:var(--color-text-secondary)}.reviews-count-badge svg{width:14px;height:14px;color:var(--color-text-muted)}.td-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px}.view-btn{display:flex;align-items:center;gap:6px;padding:8px 14px;background:#3b82f6;border:none;border-radius:8px;font-size:13px;color:#fff;cursor:pointer;transition:all .2s ease}.view-btn:hover{background:#2563eb}.view-btn.secondary{background:var(--color-bg-subtle);border:1px solid var(--color-border);color:var(--color-text-secondary)}.view-btn.secondary:hover{background:var(--color-bg-page);border-color:#cbd5e1}.view-btn svg{width:14px;height:14px}.modal-overlay{position:fixed;inset:0;background:#0f172a80;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:flex;align-items:center;justify-content:center;z-index:1000;padding:24px}.modal-content{background:var(--color-bg-card);border-radius:20px;width:100%;max-height:90vh;overflow-y:auto;box-shadow:0 25px 50px -12px #00000040}.time-period-modal{max-width:420px;padding:32px;text-align:center}.modal-icon{width:64px;height:64px;margin:0 auto 20px;background:var(--color-primary-bg);border-radius:50%;display:flex;align-items:center;justify-content:center}.modal-title{font-size:22px;font-weight:700;color:var(--color-text-primary);margin:0 0 8px}.modal-subtitle{font-size:14px;color:var(--color-text-secondary);margin:0 0 24px}.period-options{display:flex;flex-direction:column;gap:12px;margin-bottom:20px}.period-option{display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;cursor:pointer;transition:all .2s ease;text-align:left}.period-option:hover{border-color:#3b82f6;background:var(--color-bg-subtle)}.period-option.active{border-color:#3b82f6;background:var(--color-primary-bg)}.period-option.active .period-title{color:#1d4ed8}.period-info{display:flex;flex-direction:column;gap:4px}.period-title{font-size:15px;font-weight:600;color:var(--color-text-primary)}.period-desc{font-size:13px;color:var(--color-text-secondary)}.period-option svg{color:var(--color-text-muted);flex-shrink:0}.modal-cancel-btn{width:100%;padding:14px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;font-size:14px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.modal-cancel-btn:hover{background:var(--color-bg-subtle)}.department-modal{max-width:680px;padding:28px 32px}.modal-header-row{display:flex;align-items:flex-start;justify-content:space-between;margin-bottom:24px}.modal-header-row .modal-title{margin-bottom:4px;text-align:left}.modal-header-row .modal-subtitle{margin-bottom:0;text-align:left}.modal-close-btn{width:36px;height:36px;background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:all .2s ease;flex-shrink:0}.modal-close-btn svg{width:18px;height:18px;stroke:var(--color-text-secondary);stroke-width:2.5}.modal-close-btn:hover{background:var(--color-bg-page);border-color:#cbd5e1}.filter-section{margin-bottom:20px;border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.section-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px;background:var(--color-bg-subtle);border:none;cursor:pointer;transition:background .2s ease}.section-header:hover{background:var(--color-bg-page)}.filter-section-title{font-size:14px;font-weight:600;color:var(--color-text-primary);margin:0}.filter-options-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:10px;padding:16px}.filter-options-grid.courses-grid{grid-template-columns:repeat(auto-fill,minmax(100px,1fr))}.filter-option{display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:14px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;cursor:pointer;transition:all .2s ease;text-align:left;position:relative}.filter-option:hover{border-color:#3b82f6;background:var(--color-bg-subtle)}.filter-option.selected{background:var(--color-primary-bg);border-color:#3b82f6}.filter-option .option-name{font-size:14px;font-weight:500;color:var(--color-text-primary)}.filter-option .option-count{font-size:12px;color:var(--color-text-secondary)}.filter-option svg{position:absolute;top:10px;right:10px;color:#3b82f6}.filter-option.course-option{flex-direction:row;align-items:center;gap:8px;justify-content:center}.filter-option.course-option .course-number{font-size:20px;font-weight:700;color:var(--color-text-primary)}.filter-option.course-option .course-label{font-size:12px;color:var(--color-text-secondary)}.filter-options-list{padding:8px}.filter-options-list.scrollable{max-height:200px;overflow-y:auto}.filter-option-row{display:flex;align-items:center;justify-content:space-between;width:100%;padding:12px 16px;background:var(--color-bg-card);border:none;border-bottom:1px solid var(--color-border-light);cursor:pointer;transition:background .2s ease;text-align:left}.filter-option-row:last-child{border-bottom:none}.filter-option-row:hover{background:var(--color-bg-subtle)}.filter-option-row.selected{background:var(--color-primary-bg)}.filter-option-row .option-content{display:flex;flex-direction:column;gap:2px;min-width:0}.filter-option-row .option-name{font-size:14px;font-weight:500;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.filter-option-row .option-meta{font-size:12px;color:var(--color-text-secondary)}.filter-option-row svg{color:#3b82f6;flex-shrink:0}.generate-btn{width:100%;display:flex;align-items:center;justify-content:center;gap:8px;padding:16px;background:#3b82f6;color:#fff;border:none;border-radius:12px;font-size:15px;font-weight:600;cursor:pointer;transition:all .2s ease;margin-top:8px}.generate-btn:hover{background:#2563eb}.teacher-detail-modal{max-width:800px;padding:0}.teacher-detail-modal .modal-header-row{padding:24px 28px;border-bottom:1px solid var(--color-border);margin-bottom:0}.teacher-header{display:flex;align-items:center;gap:16px}.teacher-avatar-large{width:56px;height:56px;border-radius:14px;background:linear-gradient(135deg,#3b82f6,#6366f1);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px;font-weight:600;flex-shrink:0}.teacher-detail-modal .modal-title{margin-bottom:4px}.teacher-detail-modal .modal-subtitle{margin-bottom:0}.sentiment-chart-section{padding:24px 28px;border-bottom:1px solid var(--color-border)}.section-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 16px}.sentiment-chart-wrapper{display:flex;justify-content:center;margin-bottom:20px}.sentiment-stats-row{display:flex;justify-content:center;gap:32px}.sentiment-stat{display:flex;flex-direction:column;align-items:center;gap:4px}.sentiment-stat .stat-value{font-size:24px;font-weight:700}.sentiment-stat .stat-label{font-size:12px;color:var(--color-text-secondary)}.sentiment-stat.positive .stat-value{color:#22c55e}.sentiment-stat.neutral .stat-value{color:#f59e0b}.sentiment-stat.negative .stat-value{color:#ef4444}.detail-tabs{display:flex;border-bottom:1px solid var(--color-border);padding:0 28px}.detail-tab{padding:16px 20px;background:none;border:none;font-size:14px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;position:relative;transition:color .2s ease}.detail-tab:hover{color:var(--color-text-primary)}.detail-tab.active{color:#3b82f6;font-weight:600}.detail-tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#3b82f6}.tab-content{padding:24px 28px;max-height:400px;overflow-y:auto}.overview-content h4{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:0 0 12px}.assessment-block{margin-bottom:24px}.assessment-text{font-size:14px;line-height:1.6;color:var(--color-text-secondary);margin:0 0 8px;padding:12px 16px;background:var(--color-bg-subtle);border-radius:8px}.subjects-list{margin-top:24px}.subject-card{padding:16px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:12px;margin-bottom:12px}.subject-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.subject-name{font-size:14px;font-weight:600;color:var(--color-text-primary)}.subject-reviews{font-size:12px;color:var(--color-text-secondary);background:var(--color-bg-card);padding:4px 10px;border-radius:12px;border:1px solid var(--color-border)}.subject-meta{display:flex;gap:8px;font-size:12px;color:var(--color-text-secondary);margin-bottom:12px}.subject-sentiment{margin-top:8px}.strengths-content h4,.improvements-content h4,.reviews-content h4{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:0 0 16px}.aspects-list{list-style:none;padding:0;margin:0 0 24px}.aspect-item{display:flex;align-items:flex-start;gap:12px;padding:14px 16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;margin-bottom:10px}.aspect-item.positive{background:#f0fdf4;border-color:#bbf7d0}.aspect-item.positive svg{color:#22c55e;flex-shrink:0;margin-top:2px}.aspect-item.negative{background:#fef2f2;border-color:#fecaca}.aspect-item .aspect-icon{width:20px;height:20px;background:#ef4444;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;flex-shrink:0}.aspect-text{font-size:14px;line-height:1.5;color:var(--color-text-primary)}.no-data{font-size:14px;color:var(--color-text-secondary);padding:20px;background:var(--color-bg-subtle);border-radius:10px;text-align:center}.clusters-section{margin-top:24px}.clusters-section h4{margin-bottom:12px}.clusters-list{display:flex;flex-direction:column;gap:12px}.cluster-card{padding:16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px}.cluster-card.neutral{background:#fffbeb;border-color:#fde68a}.cluster-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.cluster-theme{font-size:14px;font-weight:600;color:var(--color-text-primary)}.cluster-percentage{font-size:13px;font-weight:600;color:#3b82f6;background:var(--color-primary-bg);padding:4px 10px;border-radius:12px}.cluster-summary{font-size:14px;line-height:1.6;color:var(--color-text-secondary);margin:0 0 12px;white-space:pre-wrap;word-break:break-word}.cluster-subject{font-size:12px;color:var(--color-text-secondary)}.reviews-content .clusters-list{max-height:none}.loading-placeholder{display:flex;align-items:center;justify-content:center;padding:80px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;color:var(--color-text-secondary);font-size:16px}@media(max-width:900px){.dashboard-page .stats-row{grid-template-columns:repeat(2,1fr)!important}.table-head,.table-row{grid-template-columns:1.5fr 1fr .5fr .6fr 1fr}.td-actions{flex-direction:column;gap:4px}.view-btn{width:100%;justify-content:center;padding:6px 10px;font-size:12px}}@media(max-width:640px){.dashboard-header{flex-direction:column;gap:16px}.create-report-btn{width:100%;justify-content:center}.dashboard-page .stats-row{grid-template-columns:1fr!important}.filter-actions{flex-direction:column}.filter-btn{width:100%;justify-content:center}.teachers-table-section{overflow-x:auto}.table-head,.table-row{min-width:600px}.teacher-detail-modal{max-width:100%}.detail-tabs{overflow-x:auto;padding:0 16px}.detail-tab{padding:12px 14px;font-size:13px;white-space:nowrap}.tab-content{padding:16px}}.reviews-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;gap:16px}.reviews-loading .loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}.reviews-loading p{color:var(--color-text-secondary);font-size:14px}.reviews-stats{display:flex;gap:16px;margin-bottom:20px;padding:12px 16px;background:var(--color-bg-subtle);border-radius:8px;flex-wrap:wrap}.reviews-stat{font-size:13px;color:var(--color-text-secondary)}.reviews-stat strong{color:var(--color-text-primary);font-weight:600}.reviews-stat.positive-stat strong{color:#22c55e}.reviews-stat.negative-stat strong{color:#f59e0b}.reviews-section{margin-bottom:24px}.reviews-section-title{display:flex;align-items:center;gap:8px;font-size:15px;font-weight:600;margin:0 0 12px;color:var(--color-text-primary)}.reviews-section-title.positive{color:#16a34a}.reviews-section-title.negative{color:#d97706}.reviews-section-title svg{width:18px;height:18px}.review-card{padding:16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;transition:all .2s ease}.review-card:hover{box-shadow:0 2px 8px var(--color-shadow)}.review-card.positive{border-left:3px solid #22c55e;background:linear-gradient(to right,#f0fdf4,#fff)}.review-card.negative{border-left:3px solid #f59e0b;background:linear-gradient(to right,#fffbeb,#fff)}.review-text{font-size:14px;line-height:1.6;color:var(--color-text-secondary);margin:0 0 12px;white-space:pre-wrap;word-break:break-word}.review-meta{display:flex;gap:12px;font-size:12px;color:var(--color-text-muted);flex-wrap:wrap}.review-subject{font-weight:500;color:var(--color-text-secondary)}.review-period{color:var(--color-text-muted)}.show-more-btn{display:inline-flex;align-items:center;gap:4px;padding:10px 16px;background:var(--color-bg-page);color:var(--color-primary);border:none;border-radius:8px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-top:8px}.show-more-btn:hover{background:var(--color-border)}.view-all-reviews-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:14px 20px;background:#3b82f6;color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-top:20px}.view-all-reviews-btn:hover{background:#2563eb}.no-reviews{text-align:center;padding:24px}.no-reviews svg{width:48px;height:48px;color:var(--color-text-muted);margin-bottom:16px}.no-reviews p{color:var(--color-text-secondary);margin:0 0 8px}.no-reviews-hint{font-size:13px;color:var(--color-text-muted);margin-bottom:16px!important}.ratings-page{width:100%;max-width:none}.detailed-nav{display:flex;gap:16px;margin-bottom:24px}.detailed-nav-link{padding:8px 16px;background:var(--color-primary-bg);color:var(--color-primary);border-radius:8px;font-size:13px;font-weight:500;text-decoration:none;transition:all .2s ease}.detailed-nav-link:hover{background:var(--color-primary-bg-hover)}.loading-state,.error-state{display:flex;align-items:center;justify-content:center;min-height:300px;font-size:16px;color:var(--color-text-secondary)}.error-state{color:#dc2626}.teachers-list{display:flex;flex-direction:column;gap:12px}.teacher-card-new{display:flex;align-items:center;gap:16px;padding:20px 24px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;transition:all .2s ease}.teacher-card-new:hover{box-shadow:0 4px 12px var(--color-shadow-md);border-color:#cbd5e1}.teacher-rank{width:36px;height:36px;background:linear-gradient(135deg,#1e3a8a,#3b82f6);color:#fff;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:13px;font-weight:700;flex-shrink:0}.teacher-info-new{flex:1;min-width:0}.teacher-name-new{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 6px}.teacher-meta-new{display:flex;align-items:center;gap:8px;font-size:12px;color:var(--color-text-secondary);margin-bottom:10px;flex-wrap:wrap}.teacher-meta-extra{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--color-text-muted);margin-bottom:10px;word-break:break-all}.meta-subject{background:var(--color-primary-bg);color:var(--color-primary);padding:2px 8px;border-radius:4px;font-weight:500}.meta-faculty{color:var(--color-text-muted);max-width:200px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.teacher-indicators{display:flex;gap:12px;margin-bottom:8px;flex-wrap:wrap}.reviews-count-badge{font-size:12px;color:var(--color-text-secondary);background:var(--color-bg-page);padding:2px 8px;border-radius:4px}.teacher-sentiment-bar{max-width:300px}.sentiment-indicator{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:500}.sentiment-indicator.positive{color:#16a34a}.sentiment-indicator.negative{color:#dc2626}.sentiment-indicator.neutral{color:var(--color-text-secondary)}.growth-indicator{display:flex;align-items:center;gap:6px;font-size:13px;color:#dc2626}.teacher-actions-new{display:flex;gap:12px}.btn-data{display:flex;align-items:center;gap:8px;padding:10px 20px;background:#1e3a8a;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-data:hover{background:#1e40af}.btn-favorite{padding:10px 20px;background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-favorite:hover{background:var(--color-bg-subtle);border-color:#cbd5e1}.teacher-actions-col{display:flex;flex-direction:column;align-items:flex-end;gap:12px;flex-shrink:0}.teacher-score{display:flex;flex-direction:column;align-items:center;text-align:center}.score-value{font-size:24px;font-weight:700;color:#16a34a}.score-label{font-size:11px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.btn-view-details{display:flex;align-items:center;gap:6px;padding:8px 16px;background:#1e3a8a;color:#fff;border:none;border-radius:6px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-view-details:hover{background:#1e40af}.teacher-rating-new{flex-shrink:0}.rating-badge{padding:6px 16px;background:var(--color-primary-bg);color:var(--color-primary);border:1px solid #bfdbfe;border-radius:20px;font-size:14px;font-weight:600}.directions-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(340px,1fr));gap:24px}.direction-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.direction-header{display:flex;align-items:flex-start;gap:12px;margin-bottom:16px}.direction-number{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;flex-shrink:0}.direction-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.direction-info{flex:1}.direction-name{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:0 0 4px;line-height:1.3}.direction-count{font-size:12px;color:var(--color-text-secondary)}.direction-stats{display:flex;gap:24px;margin-bottom:16px;padding:12px;background:var(--color-bg-subtle);border-radius:8px}.direction-stats .stat-item{display:flex;flex-direction:column;gap:2px}.direction-stats .stat-label{font-size:11px;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.direction-stats .stat-value{font-size:18px;font-weight:600;color:var(--color-text-primary)}.direction-branch{margin-bottom:16px}.branch-tag{display:inline-block;padding:4px 10px;background:var(--color-bg-page);color:var(--color-text-secondary);border-radius:4px;font-size:11px}.progress-section{margin-bottom:16px}.progress-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:8px}.progress-label{font-size:13px;color:var(--color-text-secondary)}.progress-value{font-size:13px;color:var(--color-text-primary);font-weight:500}.progress-bar-new{width:100%;height:8px;background:var(--color-border);border-radius:4px;overflow:hidden}.progress-fill-new{height:100%;border-radius:4px;transition:width .3s ease}.campuses-list{display:flex;gap:8px;margin-bottom:20px;flex-wrap:wrap}.campus-tag{padding:6px 12px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:6px;font-size:12px;color:var(--color-text-secondary)}.btn-direction{width:100%;padding:10px 16px;border:1px solid var(--color-border);border-radius:8px;background:var(--color-bg-card);color:#1e3a8a;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-direction:hover{background:#1e3a8a;color:#fff;border-color:#1e3a8a}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:80px 40px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;text-align:center}.empty-icon{width:96px;height:96px;background:var(--color-primary-bg);border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--color-primary);margin-bottom:24px}.empty-title{font-size:20px;font-weight:600;color:var(--color-text-primary);margin:0 0 8px}.empty-text{font-size:14px;color:var(--color-text-secondary);margin:0 0 24px;max-width:300px}.btn-add-favorite{padding:12px 32px;background:#1e3a8a;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-add-favorite:hover{background:#1e40af}@media(max-width:768px){.teacher-card-new{flex-direction:column;gap:16px}.teacher-rating-new{align-self:flex-start}.teacher-actions-new{flex-direction:column;width:100%}.btn-data,.btn-favorite{width:100%;justify-content:center}.directions-grid{grid-template-columns:1fr}.detailed-nav{flex-direction:column}}.search-section{margin-bottom:24px}.search-clear-btn{width:28px;height:28px;background:var(--color-bg-page);border:none;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-secondary);transition:all .2s ease}.search-clear-btn:hover{background:var(--color-border);color:var(--color-text-primary)}.search-results-info{margin-top:12px;font-size:14px;color:var(--color-text-secondary);padding-left:4px}.meta-campus{background:#fef3c7;color:#d97706;padding:2px 8px;border-radius:4px;font-weight:500}.reviews-modal-overlay{position:fixed;inset:0;background:#0f172a99;display:flex;align-items:center;justify-content:center;z-index:10000;padding:20px;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);animation:fadeIn .2s ease}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.reviews-modal-modern{background:var(--color-bg-card);border-radius:20px;box-shadow:0 25px 50px -12px #00000040;max-width:1000px;width:100%;max-height:90vh;display:flex;flex-direction:column;animation:slideUp .3s ease;border:1px solid var(--color-border)}@keyframes slideUp{0%{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}.modal-header{display:flex;justify-content:space-between;align-items:flex-start;padding:24px 28px;border-bottom:1px solid var(--color-border);flex-shrink:0}.modal-header-content{display:flex;align-items:flex-start;gap:16px}.modal-icon{width:48px;height:48px;background:linear-gradient(135deg,#3b82f6,#2563eb);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;flex-shrink:0}.modal-icon svg{width:24px;height:24px}.modal-title{margin:0 0 8px;font-size:22px;font-weight:700;color:var(--color-text-primary)}.modal-tags{display:flex;flex-wrap:wrap;gap:8px}.modal-tag{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:20px;font-size:13px;font-weight:500}.modal-tag.teacher{background:#dbeafe;color:#1e40af}.modal-tag.subject{background:#dcfce7;color:#166534}.modal-tag.period{background:#f3e8ff;color:#7c3aed}.modal-tag svg{width:14px;height:14px}.modal-close-btn{width:40px;height:40px;background:var(--color-bg-page);border:1px solid var(--color-border);border-radius:10px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-secondary);transition:all .2s ease;flex-shrink:0}.modal-close-btn svg{stroke:var(--color-text-secondary);stroke-width:2.5}.modal-close-btn:hover{background:var(--color-border);color:var(--color-text-primary)}.modal-close-btn:hover svg{stroke:var(--color-text-primary)}.modal-body{padding:24px 28px;overflow-y:auto;flex:1;display:flex;flex-direction:column;gap:20px}.search-filter-section{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.search-wrapper{flex:1;min-width:280px;display:flex;align-items:center;gap:12px;padding:12px 16px;background:var(--color-bg-subtle);border:2px solid var(--color-border);border-radius:12px;transition:all .2s ease}.search-wrapper:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a;background:var(--color-bg-card)}.search-wrapper svg{color:var(--color-text-muted);flex-shrink:0}.search-input{flex:1;border:none;outline:none;font-size:14px;color:var(--color-text-primary);background:transparent}.search-clear{width:24px;height:24px;background:var(--color-border);border:none;border-radius:6px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-secondary);transition:all .2s ease}.search-clear:hover{background:#cbd5e1;color:var(--color-text-primary)}.search-clear svg{width:12px;height:12px}.filter-toggle-btn{display:flex;align-items:center;gap:8px;padding:12px 16px;background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:12px;font-size:14px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.filter-toggle-btn:hover{border-color:#cbd5e1;background:var(--color-bg-subtle)}.filter-toggle-btn.active{border-color:#3b82f6;background:#eff6ff;color:#2563eb}.filter-toggle-btn svg{width:16px;height:16px}.filter-count{background:#3b82f6;color:#fff;font-size:11px;font-weight:600;padding:2px 6px;border-radius:10px;min-width:18px;text-align:center}.reviews-stats{margin-left:auto}.stat-badge{padding:8px 14px;background:var(--color-bg-page);border-radius:20px;font-size:13px;color:var(--color-text-secondary)}.stat-badge strong{color:var(--color-text-primary);font-weight:600}.filters-panel{background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:20px;animation:slideDown .2s ease}@keyframes slideDown{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}.filter-group{display:flex;flex-direction:column;gap:10px}.filter-label{font-size:13px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px}.rating-buttons{display:flex;flex-wrap:wrap;gap:8px}.rating-btn{width:40px;height:40px;border:2px solid #e2e8f0;border-radius:10px;background:#fff;font-size:14px;font-weight:600;color:#64748b;cursor:pointer;transition:all .2s ease}.rating-btn:hover{border-color:#cbd5e1;background:#f1f5f9}.rating-btn.selected{border-color:transparent;color:#fff}.rating-btn.positive{color:#16a34a}.rating-btn.positive:hover{background:#dcfce7}.rating-btn.positive.selected{background:#16a34a;color:#fff}.rating-btn.neutral{color:#ca8a04}.rating-btn.neutral:hover{background:#fef9c3}.rating-btn.neutral.selected{background:#ca8a04;color:#fff}.rating-btn.negative{color:#dc2626}.rating-btn.negative:hover{background:#fee2e2}.rating-btn.negative.selected{background:#dc2626;color:#fff}.question-buttons{display:flex;flex-wrap:wrap;gap:8px}.question-btn{padding:8px 14px;border:2px solid #e2e8f0;border-radius:10px;background:#fff;font-size:12px;color:#64748b;cursor:pointer;transition:all .2s ease;max-width:300px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.question-btn:hover{border-color:#cbd5e1;background:#f1f5f9}.question-btn.selected{border-color:#3b82f6;background:#eff6ff;color:#2563eb}.clear-filters-btn{align-self:flex-start;padding:8px 16px;background:transparent;border:none;color:var(--color-text-secondary);font-size:13px;cursor:pointer;text-decoration:underline}.clear-filters-btn:hover{color:var(--color-text-primary)}.reviews-list{display:flex;flex-direction:column;gap:12px}.review-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:20px;transition:all .2s ease}.review-card:hover{box-shadow:0 4px 12px var(--color-shadow)}.review-card-header{display:flex;justify-content:space-between;align-items:flex-start;gap:12px;margin-bottom:12px}.review-info{display:flex;flex-wrap:wrap;gap:8px}.review-tag{display:inline-flex;align-items:center;gap:5px;padding:4px 10px;border-radius:6px;font-size:12px;font-weight:500}.review-tag svg{width:12px;height:12px}.review-tag.teacher{background:#dbeafe;color:#1e40af}.review-tag.subject{background:#dcfce7;color:#166534}.review-tag.period{background:#f3e8ff;color:#7c3aed}.review-rating-badge{display:flex;align-items:center;gap:4px;padding:6px 12px;border-radius:20px;font-size:14px;font-weight:600;flex-shrink:0}.review-rating-badge svg{width:14px;height:14px}.review-rating-badge.positive{background:#dcfce7;color:#16a34a}.review-rating-badge.neutral{background:#fef9c3;color:#ca8a04}.review-rating-badge.negative{background:#fee2e2;color:#dc2626}.review-question{display:flex;align-items:flex-start;gap:8px;padding:12px 14px;background:var(--color-bg-subtle);border-radius:10px;margin-bottom:12px;font-size:13px;color:var(--color-text-secondary);line-height:1.5}.review-question svg{flex-shrink:0;margin-top:2px;color:var(--color-text-muted)}.review-text{font-size:15px;color:var(--color-text-primary);line-height:1.7;white-space:pre-wrap;word-wrap:break-word}.review-text .no-comment{color:var(--color-text-muted);font-style:italic}.review-footer{display:flex;flex-wrap:wrap;gap:8px;margin-top:12px;padding-top:12px;border-top:1px solid var(--color-border-light)}.review-meta-tag{display:inline-flex;align-items:center;gap:4px;font-size:12px;color:var(--color-text-secondary)}.review-meta-tag svg{width:12px;height:12px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.empty-icon{width:80px;height:80px;background:var(--color-bg-page);border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:20px}.empty-icon svg{width:32px;height:32px;color:var(--color-text-muted)}.empty-state h3{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0 0 8px}.empty-state p{font-size:14px;color:var(--color-text-secondary);margin:0 0 20px}.btn-reset{padding:10px 20px;background:var(--color-bg-page);border:1px solid var(--color-border);border-radius:10px;font-size:14px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.btn-reset:hover{background:var(--color-border);color:var(--color-text-primary)}.pagination{display:flex;justify-content:center;align-items:center;gap:8px;padding-top:20px;margin-top:auto;flex-shrink:0}.pagination-btn{display:flex;align-items:center;gap:6px;padding:10px 16px;background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:10px;font-size:13px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.pagination-btn:hover:not(:disabled){border-color:#3b82f6;color:#2563eb;background:#eff6ff}.pagination-btn:disabled{opacity:.5;cursor:not-allowed}.pagination-btn svg{width:14px;height:14px}.pagination-pages{display:flex;align-items:center;gap:4px}.page-btn{width:36px;height:36px;background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:8px;font-size:13px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.page-btn:hover{border-color:#cbd5e1;background:var(--color-bg-subtle)}.page-btn.active{border-color:#3b82f6;background:#3b82f6;color:#fff}.pagination-ellipsis{padding:0 8px;color:var(--color-text-muted)}.modal-loading{display:flex;align-items:center;justify-content:center;padding:60px 20px}.loading-content{text-align:center}.loading-spinner-large{width:56px;height:56px;border:4px solid var(--color-border);border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite;margin:0 auto 20px}.loading-content h3{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0 0 16px}.loading-progress{display:flex;align-items:center;gap:12px;max-width:300px;margin:0 auto}.loading-progress .progress-bar{flex:1;height:8px;background:var(--color-border);border-radius:4px;overflow:hidden}.loading-progress .progress-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#8b5cf6);border-radius:4px;transition:width .3s ease}.progress-text{font-size:14px;font-weight:600;color:#3b82f6;min-width:45px}.loading-hint{font-size:14px;color:var(--color-text-secondary);margin:16px 0 0}.modal-error{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px 20px;text-align:center}.modal-error svg{color:#f59e0b;margin-bottom:20px}.modal-error h3{font-size:20px;font-weight:600;color:var(--color-text-primary);margin:0 0 8px}.modal-error p{font-size:14px;color:var(--color-text-secondary);margin:0 0 24px;max-width:400px}.btn-retry{display:flex;align-items:center;gap:8px;padding:12px 24px;background:#3b82f6;border:none;border-radius:10px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s ease}.btn-retry:hover{background:#2563eb}.btn-retry svg{width:16px;height:16px}@media(max-width:768px){.reviews-modal-modern{max-height:95vh;margin:10px;border-radius:16px}.modal-header{padding:20px}.modal-header-content{flex-direction:column;gap:12px}.modal-icon{width:40px;height:40px}.modal-title{font-size:18px}.modal-body{padding:16px}.search-filter-section{flex-direction:column;align-items:stretch}.search-wrapper{min-width:100%}.filter-toggle-btn{justify-content:center}.reviews-stats{margin-left:0;text-align:center}.review-card-header{flex-direction:column}.review-info{width:100%}.pagination{flex-wrap:wrap;gap:8px}.pagination-pages{order:-1;width:100%;justify-content:center;margin-bottom:8px}}.teachers-page-modern{width:100%}.filter-options{display:flex;flex-direction:column;gap:4px;max-height:240px;overflow-y:auto}.filter-reset:hover{background:var(--color-bg-page);border-color:var(--color-text-muted);color:var(--color-text-primary)}.filter-option-compact:hover{background:var(--color-bg-page);border-color:var(--color-text-muted)}.teachers-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:20px;padding:24px}.section-icon.positive{background:#dcfce7;color:#16a34a}.section-icon.negative{background:#fee2e2;color:#dc2626}.teachers-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:16px}.teacher-card-modern{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:20px;display:flex;flex-direction:column;gap:16px;transition:all .2s ease}.teacher-card-modern:hover{box-shadow:0 8px 24px var(--color-shadow-md);border-color:transparent}.teacher-card-modern.top{border-left:4px solid #16a34a}.teacher-card-modern.bottom{border-left:4px solid #dc2626}.teacher-card-header{display:flex;align-items:center;justify-content:space-between}.teacher-rank-badge{padding:4px 12px;border-radius:20px;font-size:13px;font-weight:600}.teacher-rank-badge.top{background:#dcfce7;color:#16a34a}.teacher-rank-badge.bottom{background:#fee2e2;color:#dc2626}.teacher-sentiment-badge{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:20px;font-size:12px;font-weight:500}.teacher-sentiment-badge.positive{background:#dcfce7;color:#16a34a}.teacher-sentiment-badge.neutral{background:var(--color-bg-page);color:var(--color-text-secondary)}.teacher-sentiment-badge.negative{background:#fee2e2;color:#dc2626}.teacher-card-body{flex:1;display:flex;flex-direction:column;gap:12px}.teacher-card-name{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0;line-height:1.4}.teacher-card-meta{display:flex;flex-direction:column;gap:4px}.meta-faculty{font-size:13px;font-weight:500;color:var(--color-text-primary)}.meta-subject{font-size:12px;color:var(--color-text-secondary)}.meta-extra{font-size:11px;color:var(--color-text-muted);word-break:break-all}.teacher-card-stats{display:flex;gap:16px}.teacher-card-stats .stat-item{display:flex;flex-direction:column;gap:2px}.teacher-card-stats .stat-value{font-size:18px;font-weight:700;color:var(--color-text-primary)}.teacher-card-stats .stat-item.highlight .stat-value{color:#16a34a}.teacher-card-stats .stat-label{font-size:11px;color:var(--color-text-secondary);text-transform:uppercase}.teacher-card-sentiment{margin-top:auto}.teacher-card-actions{display:flex;gap:8px;padding-top:16px;border-top:1px solid var(--color-border-light)}.btn-primary,.btn-secondary{flex:1;display:flex;align-items:center;justify-content:center;gap:6px;padding:10px 16px;border-radius:10px;font-size:13px;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.btn-primary{background:#2563eb;color:#fff}.btn-primary:hover{background:#1d4ed8}.btn-secondary{background:var(--color-bg-page);color:var(--color-text-secondary)}.btn-secondary:hover{background:var(--color-border);color:var(--color-text-primary)}.empty-state{padding:40px;text-align:center;color:var(--color-text-secondary)}@media(max-width:768px){.stats-row,.teachers-grid{grid-template-columns:1fr}.page-title{font-size:24px}}.subjects-page-modern{width:100%}.page-header{margin-bottom:24px}.header-content{display:flex;flex-direction:column;gap:8px}.page-title{font-size:28px;font-weight:700;color:var(--color-text-primary);margin:0}.page-subtitle{font-size:15px;color:var(--color-text-secondary);margin:0}.stats-row{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:24px}.stat-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:20px;display:flex;align-items:center;gap:16px;transition:all .2s ease}.stat-card:hover{box-shadow:0 4px 12px var(--color-shadow)}.stat-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.stat-icon.blue{background:#dbeafe;color:#2563eb}.stat-icon.green{background:#dcfce7;color:#16a34a}.stat-icon.purple{background:#f3e8ff;color:#9333ea}.stat-icon.orange{background:#ffedd5;color:#ea580c}.stat-icon svg{width:24px;height:24px}.stat-info{display:flex;flex-direction:column;gap:4px}.stat-info .stat-value{font-size:24px;font-weight:700;color:var(--color-text-primary)}.stat-info .stat-label{font-size:13px;color:var(--color-text-secondary)}.search-filter-bar{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}.search-input-wrapper{display:flex;align-items:center;gap:12px;padding:14px 20px;background:var(--color-bg-card);border:2px solid var(--color-border);border-radius:14px;transition:all .2s ease}.search-input-wrapper:focus-within{border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.search-input-wrapper svg{color:var(--color-text-muted);flex-shrink:0}.search-input{flex:1;border:none;outline:none;font-size:15px;color:var(--color-text-primary);background:transparent}.search-input::placeholder{color:var(--color-text-muted)}.search-clear{width:28px;height:28px;background:var(--color-bg-page);border:none;border-radius:8px;display:flex;align-items:center;justify-content:center;cursor:pointer;color:var(--color-text-secondary);transition:all .2s ease}.search-clear:hover{background:var(--color-border);color:var(--color-text-primary)}.active-filters{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.filter-tag{display:flex;align-items:center;gap:6px;padding:6px 12px;background:#dbeafe;color:#1e40af;border-radius:20px;font-size:13px;font-weight:500}.filter-tag button{background:transparent;border:none;padding:0;cursor:pointer;color:#1e40af;display:flex;align-items:center;opacity:.7}.filter-tag button:hover{opacity:1}.filter-tag.faculty{background:#dbeafe;color:#1e40af}.filter-tag.faculty button{color:#1e40af}.filter-tag.period{background:#fef3c7;color:#d97706}.filter-tag.period button{color:#d97706}.filter-tag.program{background:#f3e8ff;color:#9333ea}.filter-tag.program button{color:#9333ea}.filter-tag.course{background:#dcfce7;color:#16a34a}.filter-tag.course button{color:#16a34a}.clear-all-btn{background:transparent;border:none;color:var(--color-text-secondary);font-size:13px;cursor:pointer;padding:6px 12px}.clear-all-btn:hover{color:var(--color-text-primary)}.main-layout{display:grid;grid-template-columns:280px 1fr;gap:24px}.filters-sidebar{display:flex;flex-direction:column;gap:12px;position:sticky;top:88px;height:fit-content;max-height:calc(100vh - 112px);overflow-y:auto}.filter-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;overflow:hidden}.filter-header{width:100%;display:flex;align-items:center;justify-content:space-between;padding:16px 20px;background:transparent;border:none;cursor:pointer;transition:background .2s ease}.filter-header:hover{background:var(--color-bg-subtle)}.filter-title{display:flex;align-items:center;gap:10px;font-size:14px;font-weight:600;color:var(--color-text-primary)}.filter-title svg{color:var(--color-text-secondary)}.filter-header>svg{color:var(--color-text-secondary)}.filter-content{padding:0 20px 20px;display:flex;flex-direction:column;gap:12px}.filter-search{width:100%;padding:10px 14px;border:1px solid var(--color-border);border-radius:8px;font-size:13px;color:var(--color-text-primary);transition:all .2s ease}.filter-search:focus{outline:none;border-color:#3b82f6;box-shadow:0 0 0 3px #3b82f61a}.filter-options{display:flex;flex-direction:column;gap:4px;max-height:360px;overflow-y:auto}.filter-option{display:flex;align-items:flex-start;gap:10px;padding:8px 12px;border-radius:8px;cursor:pointer;transition:background .15s ease}.filter-option:hover{background:var(--color-bg-page)}.filter-option input[type=checkbox]{width:16px;height:16px;accent-color:#2563eb;cursor:pointer}.option-text{font-size:13px;color:var(--color-text-primary);line-height:1.4}.option-content{display:flex;flex-direction:column;gap:2px}.option-meta{font-size:11px;color:var(--color-text-muted);line-height:1.3}.filter-more{padding:8px 12px;font-size:12px;color:var(--color-text-secondary);text-align:center}.text-expand-btn{background:none;border:none;padding:0;color:var(--color-primary);font-size:inherit;cursor:pointer;text-decoration:underline;white-space:nowrap}.text-expand-btn:hover{color:var(--color-primary-hover)}.filter-reset{width:100%;padding:8px 14px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:8px;font-size:13px;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease;margin-top:8px}.filter-reset:hover{background:var(--color-bg-page);border-color:#cbd5e1;color:var(--color-text-primary)}.filter-options-row{flex-direction:row;flex-wrap:wrap;gap:8px}.filter-option-compact{display:flex;align-items:center;gap:6px;padding:6px 10px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:8px;cursor:pointer;transition:all .15s ease;font-size:12px}.filter-option-compact:hover{background:var(--color-bg-page);border-color:#cbd5e1}.filter-option-compact input[type=checkbox]{width:14px;height:14px;accent-color:#2563eb;cursor:pointer}.filter-option-compact:has(input:checked){background:#dbeafe;border-color:#3b82f6}.filter-option-compact:has(input:checked) .option-text{color:#1e40af;font-weight:500}.filter-empty-message{padding:16px;text-align:center;font-size:13px;color:var(--color-text-secondary);background:var(--color-bg-subtle);border-radius:8px;line-height:1.5}.main-content{display:flex;flex-direction:column;gap:32px}.subjects-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:20px;padding:24px}.section-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.section-title-wrapper{display:flex;align-items:center;gap:16px}.section-icon{width:48px;height:48px;border-radius:12px;display:flex;align-items:center;justify-content:center}.section-icon.blue{background:#dbeafe;color:#2563eb}.section-icon svg{width:24px;height:24px}.section-title{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0}.section-subtitle{font-size:14px;color:var(--color-text-secondary);margin:4px 0 0}.subjects-grid{display:flex;flex-direction:column;gap:16px}.subject-card-modern{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;transition:all .2s ease}.subject-card-modern:hover{box-shadow:0 8px 24px var(--color-shadow)}.subject-card-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:16px}.subject-card-title{display:flex;flex-direction:column;gap:8px}.subject-card-modern .subject-name{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0;line-height:1.4}.subject-sentiment-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500;width:fit-content}.subject-sentiment-badge.positive{background:#dcfce7;color:#16a34a}.subject-sentiment-badge.neutral{background:#f1f5f9;color:#64748b}.subject-sentiment-badge.negative{background:#fee2e2;color:#dc2626}.subject-card-stats{display:flex;gap:16px;flex-shrink:0}.subject-stat{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-secondary)}.subject-stat svg{width:16px;height:16px}.subject-card-sentiment{margin-bottom:16px}.subject-card-summary{padding:16px;background:var(--color-bg-subtle);border-radius:12px;margin-bottom:16px}.subject-card-summary h4{font-size:12px;font-weight:600;color:var(--color-text-secondary);text-transform:uppercase;letter-spacing:.5px;margin:0 0 8px}.subject-card-summary p{font-size:14px;color:var(--color-text-primary);line-height:1.6;margin:0}.subject-card-aspects{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:12px;margin-bottom:16px}.aspect-block{padding:16px;border-radius:12px}.aspect-block.positive{background:#f0fdf4;border:1px solid #bbf7d0}.aspect-block.negative{background:#fef2f2;border:1px solid #fecaca}.aspect-header{display:flex;align-items:center;gap:8px;margin-bottom:8px}.aspect-header svg{width:14px;height:14px}.aspect-block.positive .aspect-header{color:#16a34a}.aspect-block.negative .aspect-header{color:#dc2626}.aspect-header span{font-size:13px;font-weight:600}.aspect-block p{font-size:13px;line-height:1.6;margin:0;color:var(--color-text-secondary)}.subject-clusters{border-top:1px solid var(--color-border-light);padding-top:16px}.clusters-toggle,.teachers-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;padding:12px 16px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:10px;cursor:pointer;font-size:14px;font-weight:500;color:var(--color-text-primary);transition:all .2s ease}.clusters-toggle:hover,.teachers-toggle:hover{background:var(--color-bg-page)}.clusters-toggle svg,.teachers-toggle svg{color:var(--color-text-secondary)}.clusters-list,.teachers-list{display:flex;flex-direction:column;gap:12px;margin-top:12px}.cluster-card{padding:16px;border-radius:12px;border:1px solid var(--color-border)}.cluster-card.positive{background:#f0fdf4;border-color:#bbf7d0}.cluster-card.negative{background:#fef2f2;border-color:#fecaca}.cluster-card.neutral{background:var(--color-bg-subtle)}.cluster-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.cluster-topic{font-size:14px;font-weight:600;color:var(--color-text-primary)}.cluster-tonality{font-size:11px;font-weight:500;padding:4px 10px;border-radius:12px}.cluster-tonality.positive{background:#dcfce7;color:#16a34a}.cluster-tonality.negative{background:#fee2e2;color:#dc2626}.cluster-tonality.neutral{background:#f1f5f9;color:#64748b}.cluster-summary{font-size:13px;color:var(--color-text-secondary);line-height:1.6;margin:0 0 12px}.cluster-share{display:flex;align-items:center;gap:12px}.share-bar{flex:1;height:6px;background:var(--color-border);border-radius:3px;overflow:hidden}.share-fill{height:100%;background:linear-gradient(90deg,#3b82f6,#8b5cf6);border-radius:3px}.share-value{font-size:12px;font-weight:600;color:var(--color-text-secondary);min-width:40px;text-align:right}.subject-teachers{border-top:1px solid var(--color-border-light);padding-top:16px;margin-top:16px}.teacher-mini-card{padding:12px 16px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:10px}.teacher-mini-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.teacher-mini-name{font-size:14px;font-weight:500;color:var(--color-text-primary)}.teacher-mini-reviews{font-size:12px;color:var(--color-text-secondary)}.teacher-mini-extra{display:flex;flex-direction:column;gap:4px;font-size:11px;color:var(--color-text-muted);word-break:break-all}.teacher-mini-sentiment{margin-top:8px}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px;color:var(--color-text-secondary);gap:16px}.empty-state svg{width:48px;height:48px;color:var(--color-text-muted)}.load-more-info{text-align:center;padding:20px;font-size:14px;color:var(--color-text-secondary)}.loading-container,.error-container{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:60px;color:var(--color-text-secondary)}.loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:#2563eb;border-radius:50%;animation:spin 1s linear infinite}@media(max-width:1200px){.stats-row{grid-template-columns:repeat(2,1fr)}.main-layout{grid-template-columns:1fr}.filters-sidebar{position:static;max-height:none;flex-direction:row;flex-wrap:wrap}.filter-section{flex:1;min-width:280px}}@media(max-width:768px){.stats-row{grid-template-columns:1fr}.page-title{font-size:24px}.subject-card-header{flex-direction:column}.subject-card-stats{align-self:flex-start}.subject-card-aspects{grid-template-columns:1fr}}.history-page{width:100%;max-width:none}.page-header-section{margin-bottom:24px}.surveys-list{display:flex;flex-direction:column;gap:16px}.survey-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;transition:all .2s ease}.survey-card:hover{box-shadow:0 4px 12px var(--color-shadow)}.survey-header{display:flex;align-items:center;gap:12px;margin-bottom:12px}.survey-title{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0}.level-badge{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:500}.level-middle{background:#eff6ff;color:#2563eb}.level-admin{background:#fef3c7;color:#d97706}.level-default{background:#f1f5f9;color:#64748b}.score-badge{padding:4px 12px;border-radius:20px;font-size:12px;font-weight:600}.score-high{background:#dcfce7;color:#16a34a}.score-medium{background:#fef9c3;color:#ca8a04}.score-low{background:#fee2e2;color:#dc2626}.survey-meta{display:flex;gap:20px;margin-bottom:16px}.survey-location-date{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--color-text-primary);margin-bottom:12px}.survey-schedule{display:flex;gap:16px;margin-bottom:16px}.schedule-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-secondary)}.survey-summary{background:var(--color-bg-subtle);border-left:3px solid var(--color-border);padding:12px 16px;border-radius:0 8px 8px 0;margin-bottom:16px}.summary-label{font-size:12px;color:var(--color-text-muted);text-transform:uppercase;letter-spacing:.5px;margin-bottom:4px}.summary-text{font-size:14px;color:var(--color-text-secondary);margin:0;line-height:1.5}.info-blocks{display:flex;flex-direction:column;gap:8px;margin-bottom:16px}.info-block{display:flex;align-items:flex-start;gap:12px;padding:12px 16px;background:var(--color-bg-subtle);border-radius:8px}.info-block.warning{background:#fffbeb}.info-icon{color:var(--color-text-secondary);flex-shrink:0;margin-top:2px}.info-block.warning .info-icon{color:#d97706}.info-label{font-size:12px;color:var(--color-text-secondary);margin-bottom:2px}.info-block.warning .info-label{color:#92400e}.info-value{font-size:14px;color:var(--color-primary);font-weight:500}.warning-text{color:#dc2626!important}.survey-actions{display:flex;gap:12px;padding-top:16px;border-top:1px solid var(--color-border)}.btn{display:flex;align-items:center;gap:8px;padding:10px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.btn-primary{background:#1e3a8a;color:#fff}.btn-primary:hover{background:#1e40af}.btn-secondary{background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border)}.btn-secondary:hover{background:var(--color-bg-subtle);border-color:#cbd5e1}@media(max-width:640px){.survey-meta{flex-wrap:wrap;gap:12px}.survey-actions{flex-direction:column}.btn{width:100%;justify-content:center}}.colleagues-page{width:100%;max-width:none}.action-cards{display:grid;grid-template-columns:repeat(2,1fr);gap:24px;margin-bottom:32px}.action-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.action-icon{width:56px;height:56px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:16px}.action-icon.team{background:#eff6ff;color:#2563eb}.action-icon.projects{background:#faf5ff;color:#9333ea}.action-title{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0 0 8px}.action-description{font-size:14px;color:var(--color-text-secondary);margin:0 0 20px}.action-btn{width:100%;padding:12px 20px;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;border:none}.action-btn.primary{background:#1e3a8a;color:#fff}.action-btn.primary:hover{background:#1e40af}.action-btn.secondary{background:#9333ea;color:#fff}.action-btn.secondary:hover{background:#7e22ce}.reports-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.reports-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.reports-title{font-size:18px;font-weight:600;color:var(--color-text-primary);margin:0 0 4px}.reports-subtitle{font-size:14px;color:var(--color-text-secondary);margin:0}.active-badge{padding:6px 12px;background:#fef2f2;color:#dc2626;font-size:12px;font-weight:500;border-radius:20px;border:1px solid #fecaca}.reports-list{display:flex;flex-direction:column;gap:16px}.report-card{display:flex;justify-content:space-between;align-items:center;padding:16px 0;border-bottom:1px solid var(--color-border-light)}.report-card:last-child{border-bottom:none}.report-info{flex:1}.report-header{display:flex;align-items:center;gap:12px;margin-bottom:4px}.report-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0}.author-badge{padding:4px 10px;border-radius:16px;font-size:12px;font-weight:500}.report-location{font-size:14px;color:var(--color-text-primary);margin-bottom:8px}.report-meta{display:flex;gap:16px}.meta-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--color-text-secondary)}.report-actions{display:flex;gap:8px}.btn-outline{padding:10px 20px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:8px;font-size:14px;font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:all .2s ease}.btn-outline:hover{background:var(--color-bg-subtle);border-color:#cbd5e1}.btn-filled{display:flex;align-items:center;gap:8px;padding:10px 20px;background:#1e3a8a;border:none;border-radius:8px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s ease}.btn-filled:hover{background:#1e40af}@media(max-width:768px){.action-cards{grid-template-columns:1fr}.report-card{flex-direction:column;align-items:flex-start;gap:16px}.report-actions{width:100%}.btn-outline,.btn-filled{flex:1;justify-content:center}}.help-page{width:100%;max-width:none}.page-header-section{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:24px}.header-left{flex:1}.create-btn{display:flex;align-items:center;gap:8px;padding:12px 24px;background:#1e3a8a;color:#fff;border:none;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.create-btn:hover{background:#1e40af}.tabs{display:flex;gap:0;border-bottom:1px solid var(--color-border);margin-bottom:24px}.tab{padding:12px 24px;border:none;background:none;font-size:14px;font-weight:500;color:var(--color-text-secondary);cursor:pointer;position:relative;transition:all .2s ease}.tab:hover{color:#1e3a8a}.tab.active{color:#1e3a8a;font-weight:600}.tab.active:after{content:"";position:absolute;bottom:-1px;left:0;right:0;height:2px;background:#1e3a8a}.tickets-list{display:flex;flex-direction:column;gap:12px}.ticket-card{display:flex;justify-content:space-between;align-items:center;padding:20px 24px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;cursor:pointer;transition:all .2s ease}.ticket-card:hover{box-shadow:0 4px 12px var(--color-shadow);border-color:#cbd5e1}.ticket-content{flex:1}.ticket-header{display:flex;align-items:center;gap:12px;margin-bottom:8px}.ticket-id{font-size:13px;color:var(--color-text-secondary)}.new-badge{padding:4px 10px;background:#eff6ff;color:#2563eb;font-size:11px;font-weight:500;border-radius:12px}.status-badge{display:flex;align-items:center;gap:6px;padding:4px 10px;border-radius:12px;font-size:11px;font-weight:500}.status-badge.processing{background:#fef3c7;color:#d97706}.status-badge.completed{background:#dcfce7;color:#16a34a}.ticket-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 4px}.ticket-description{font-size:14px;color:var(--color-text-secondary);margin:0 0 12px}.ticket-meta{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--color-text-muted)}.dot{color:var(--color-text-muted)}.create-ticket-form{max-width:700px}.info-banner{display:flex;gap:16px;padding:16px 20px;background:var(--color-primary-bg);border-radius:12px;margin:24px 0}.info-banner .info-icon{color:var(--color-primary);flex-shrink:0}.info-title{font-size:14px;font-weight:600;color:var(--color-primary);margin-bottom:4px}.info-text{font-size:13px;color:var(--color-primary);line-height:1.5}.form-group{margin-bottom:20px}.form-label{display:flex;align-items:center;gap:8px;font-size:14px;font-weight:500;color:var(--color-text-primary);margin-bottom:8px}.help-tooltip{width:16px;height:16px;background:var(--color-border);color:var(--color-text-secondary);border-radius:50%;font-size:10px;display:flex;align-items:center;justify-content:center;cursor:help}.form-input,.form-select,.form-textarea{width:100%;padding:12px 16px;border:1px solid var(--color-border);border-radius:10px;font-size:14px;color:var(--color-text-primary);background:var(--color-bg-card);transition:all .2s ease}.form-input:focus,.form-select:focus,.form-textarea:focus{outline:none;border-color:#2563eb;box-shadow:0 0 0 3px #2563eb1a}.form-input::placeholder,.form-textarea::placeholder{color:var(--color-text-muted)}.form-textarea{resize:vertical;min-height:120px}.attach-btn{display:flex;align-items:center;gap:8px;padding:10px 16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:8px;font-size:14px;color:var(--color-text-primary);cursor:pointer;transition:all .2s ease}.attach-btn:hover{background:var(--color-bg-subtle)}.attach-hint{font-size:12px;color:var(--color-text-muted);margin:8px 0 24px}.form-actions{display:flex;gap:12px;padding-top:24px;border-top:1px solid var(--color-border)}.btn-cancel{padding:12px 24px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:8px;font-size:14px;font-weight:500;color:var(--color-text-primary);cursor:pointer;transition:all .2s ease}.btn-cancel:hover{background:var(--color-bg-subtle)}.btn-submit{padding:12px 24px;background:#2563eb;border:none;border-radius:8px;font-size:14px;font-weight:500;color:#fff;cursor:pointer;transition:all .2s ease}.btn-submit:hover{background:#1d4ed8}.ticket-detail{display:grid;grid-template-columns:1fr 300px;gap:24px}.ticket-main{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.ticket-header-detail{display:flex;align-items:center;gap:12px;margin-bottom:16px}.ticket-id-large{font-size:14px;color:var(--color-text-secondary)}.ticket-title-large{font-size:24px;font-weight:700;color:var(--color-text-primary);margin:0 0 8px}.ticket-meta-detail{display:flex;align-items:center;gap:8px;font-size:14px;color:var(--color-text-secondary);margin-bottom:16px}.ticket-sidebar{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;height:fit-content}.sidebar-title{font-size:14px;font-weight:600;color:var(--color-text-secondary);margin:0 0 16px}.responsible-card{display:flex;align-items:center;gap:12px;margin-bottom:16px}.responsible-avatar{width:48px;height:48px;background:#2563eb;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:600}.responsible-name{font-size:14px;font-weight:600;color:var(--color-text-primary)}.responsible-role{font-size:13px;color:var(--color-text-secondary)}.contact-item{display:flex;align-items:center;gap:10px;padding:8px 0;font-size:14px;color:var(--color-text-secondary)}.contact-item a{color:var(--color-primary);text-decoration:none}.contact-item a:hover{text-decoration:underline}.comments-section{margin-top:24px;padding-top:24px;border-top:1px solid var(--color-border)}.comments-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 20px}.comment{margin-bottom:16px}.comment.user-comment{text-align:right}.comment.support-comment{display:flex;gap:12px}.comment-avatar{width:36px;height:36px;background:#2563eb;color:#fff;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:500;flex-shrink:0}.comment-header{display:flex;align-items:center;gap:8px;margin-bottom:6px;justify-content:flex-end}.support-comment .comment-header{justify-content:flex-start}.comment-author{font-size:13px;font-weight:500;color:var(--color-text-primary)}.comment-date{font-size:12px;color:var(--color-text-muted)}.comment-bubble{display:inline-block;padding:10px 16px;border-radius:16px;font-size:14px;max-width:300px}.comment-bubble.user{background:#1e3a8a;color:#fff;border-bottom-right-radius:4px}.comment-bubble.support{background:var(--color-bg-page);color:var(--color-text-primary);border-bottom-left-radius:4px}.message-input-container{display:flex;align-items:center;gap:12px;margin-top:24px;padding:12px;background:var(--color-bg-subtle);border-radius:50px}.attach-message-btn{width:40px;height:40px;border:none;background:transparent;color:var(--color-text-secondary);cursor:pointer;display:flex;align-items:center;justify-content:center}.message-input{flex:1;border:none;background:transparent;font-size:14px;color:var(--color-text-primary);outline:none}.message-input::placeholder{color:var(--color-text-muted)}.send-btn{width:44px;height:44px;border:none;background:#2563eb;color:#fff;border-radius:50%;cursor:pointer;display:flex;align-items:center;justify-content:center;transition:all .2s ease}.send-btn:hover{background:#1d4ed8}@media(max-width:900px){.ticket-detail{grid-template-columns:1fr}}@media(max-width:640px){.page-header-section{flex-direction:column;gap:16px}.create-btn{width:100%;justify-content:center}}.profile-page{width:100%;max-width:none}.page-header-section{margin-bottom:32px}.page-title{font-size:32px;font-weight:700;color:var(--color-text-primary);margin:0 0 8px}.page-subtitle{font-size:14px;color:var(--color-text-secondary);margin:0}.profile-grid{display:grid;grid-template-columns:1fr 320px;gap:24px}.profile-main-card,.external-profiles-card,.education-card,.stats-card,.skills-card,.languages-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.card-header{display:flex;align-items:center;gap:12px;margin-bottom:20px;color:var(--color-text-secondary)}.card-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0}.profile-main-card{grid-column:1;grid-row:1}.user-header{display:flex;align-items:flex-start;gap:24px;margin-bottom:24px}.user-avatar-large{width:80px;height:80px;background:#2563eb;color:#fff;border-radius:12px;display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:600;flex-shrink:0}.user-info-block{flex:1}.user-name-large{font-size:24px;font-weight:700;color:var(--color-text-primary);margin:0 0 4px}.user-role{font-size:14px;color:var(--color-text-secondary);margin:0 0 16px}.user-actions{display:flex;gap:12px}.btn-primary-sm{padding:10px 20px;background:#1e3a8a;color:#fff;border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-primary-sm:hover{background:#1e40af}.btn-secondary-sm{padding:10px 20px;background:var(--color-bg-card);color:var(--color-text-primary);border:1px solid var(--color-border);border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.btn-secondary-sm:hover{background:var(--color-bg-subtle)}.user-details-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.detail-item{display:flex;align-items:flex-start;gap:12px;color:var(--color-text-secondary)}.detail-item svg{margin-top:2px;flex-shrink:0}.detail-label{display:block;font-size:12px;color:var(--color-text-muted);margin-bottom:2px}.detail-value{display:block;font-size:14px;color:var(--color-text-primary)}.external-profiles-card{grid-column:2;grid-row:1}.profile-link-item{display:flex;align-items:center;gap:12px;padding:12px 0;border-bottom:1px solid var(--color-border-light)}.profile-link-item:last-of-type{border-bottom:none}.profile-link-icon{width:40px;height:40px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.profile-link-icon.github{background:#f6f8fa;color:#24292f}.profile-link-icon.linkedin{background:#f3f6f8;color:#0a66c2}.profile-link-info{flex:1;min-width:0}.profile-link-name{display:block;font-size:14px;font-weight:500;color:var(--color-text-primary)}.profile-link-url{display:block;font-size:12px;color:var(--color-text-secondary);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.add-profile-btn{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;padding:12px;margin-top:16px;background:var(--color-bg-card);border:1px dashed var(--color-border);border-radius:8px;font-size:14px;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.add-profile-btn:hover{background:var(--color-bg-subtle);border-color:#cbd5e1;color:var(--color-text-primary)}.education-card{grid-column:1;grid-row:2}.education-university{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 4px}.education-faculty{font-size:14px;color:var(--color-text-secondary);margin:0 0 8px}.education-years{font-size:13px;color:var(--color-text-muted);margin:0}.stats-card{grid-column:2;grid-row:2 / 4}.stat-item{padding:16px 0;border-bottom:1px solid var(--color-border-light)}.stat-item:last-child{border-bottom:none}.stat-label{display:block;font-size:13px;color:var(--color-text-secondary);margin-bottom:4px}.stat-value-large{font-size:28px;font-weight:700;color:var(--color-text-primary)}.skills-card{grid-column:1;grid-row:3}.skills-list{display:flex;flex-direction:column;gap:16px}.skill-item{display:flex;flex-direction:column;gap:8px}.skill-header{display:flex;justify-content:space-between;align-items:center}.skill-name{font-size:14px;font-weight:500;color:var(--color-text-primary)}.skill-percent{font-size:13px;color:var(--color-text-secondary)}.skill-bar{width:100%;height:8px;background:var(--color-border);border-radius:4px;overflow:hidden}.skill-bar-fill{height:100%;background:#1e3a8a;border-radius:4px;transition:width .3s ease}.languages-card{grid-column:1;grid-row:4}.languages-list{display:flex;flex-direction:column;gap:12px}.language-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}.language-name{font-size:14px;font-weight:500;color:var(--color-text-primary)}.language-level{font-size:13px;color:var(--color-text-secondary)}@media(max-width:900px){.profile-grid{grid-template-columns:1fr}.profile-main-card,.external-profiles-card,.education-card,.stats-card,.skills-card,.languages-card{grid-column:1;grid-row:auto}}@media(max-width:640px){.user-header{flex-direction:column;align-items:center;text-align:center}.user-actions{flex-direction:column;width:100%}.btn-primary-sm,.btn-secondary-sm{width:100%}.user-details-grid{grid-template-columns:1fr}}.loading-container{display:flex;flex-direction:column;align-items:center;justify-content:center;min-height:80vh;padding:40px;text-align:center}.loading-icon{width:80px;height:80px;background:var(--color-primary-bg);border-radius:50%;display:flex;align-items:center;justify-content:center;margin-bottom:24px;color:var(--color-primary);animation:pulse 2s ease-in-out infinite}@keyframes pulse{0%,to{transform:scale(1);box-shadow:0 0 #2563eb33}50%{transform:scale(1.05);box-shadow:0 0 0 20px #2563eb00}}.loading-title{font-family:Courier New,monospace;font-size:28px;font-weight:600;color:#1e3a8a;margin:0 0 8px;letter-spacing:.02em}.loading-subtitle{font-size:16px;color:var(--color-text-secondary);margin:0 0 32px}.loading-info-box{display:flex;align-items:center;gap:12px;padding:16px 24px;background:var(--color-primary-bg);border-radius:12px;color:var(--color-primary);font-size:14px;margin-bottom:32px;max-width:500px}.loading-info-box svg{flex-shrink:0}.loading-progress-container{width:100%;max-width:500px;margin-bottom:16px}.loading-progress-bar{width:100%;height:8px;background:var(--color-border);border-radius:4px;overflow:hidden;position:relative}.loading-progress-fill{position:absolute;top:0;left:0;height:100%;width:85%;background:linear-gradient(90deg,#3b82f6,#8b5cf6,#e2e8f0);background-size:200% 100%;border-radius:4px;animation:loading-shimmer 2s ease-in-out infinite}@keyframes loading-shimmer{0%{width:0%;background-position:200% 0}50%{width:85%;background-position:0% 0}to{width:85%;background-position:-200% 0}}.loading-status{font-size:14px;color:var(--color-text-muted);margin:0}.teacher-analysis-page{width:100%;max-width:none;padding-bottom:60px}.analysis-header{margin-bottom:24px}.back-btn{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;font-size:14px;color:var(--color-text-secondary);cursor:pointer;transition:all .2s ease}.back-btn:hover{background:var(--color-bg-subtle);border-color:#cbd5e1}.not-found-message{text-align:center;padding:60px 20px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px}.not-found-message h2{font-size:20px;color:var(--color-text-primary);margin:0 0 8px}.not-found-message p{font-size:14px;color:var(--color-text-secondary);margin:0}.analysis-hero{background:linear-gradient(135deg,#3b82f6,#6366f1);border-radius:20px;padding:32px;margin-bottom:24px;color:#fff}.hero-badge{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;background:#fff3;border-radius:20px;font-size:13px;font-weight:500;margin-bottom:16px}.hero-badge svg{color:#86efac}.hero-title{font-size:28px;font-weight:700;margin:0 0 16px}.hero-meta{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:24px}.meta-tag{display:inline-flex;padding:6px 12px;background:#fff3;border-radius:16px;font-size:12px;font-weight:500}.meta-tag.campus{background:#86efac4d}.meta-tag.faculty{background:#93c5fd4d}.hero-score-section{display:flex;align-items:stretch;gap:24px;margin-bottom:28px;flex-wrap:wrap}.main-score{display:flex;flex-direction:column;align-items:center;gap:10px;padding:16px 18px;background:#ffffff2e;border:1px solid rgba(255,255,255,.25);border-radius:16px;min-width:160px}.score-circle{width:100px;height:100px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:36px;font-weight:800}.score-circle.good{background:#ffffff59;border:4px solid rgba(134,239,172,.9);box-shadow:inset 0 0 0 1px #ffffff40}.score-circle.needs-attention{background:#ffffff40;border:4px solid rgba(251,191,36,.9);box-shadow:inset 0 0 0 1px #ffffff40}.score-number{color:#0f172a}.score-label{font-size:13px;font-weight:700;letter-spacing:.02em;text-transform:uppercase;opacity:.95;text-align:center}.hero-metrics{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:12px;flex:1}.metric-card{background:#fffffff2;border-radius:14px;padding:14px 16px;display:flex;flex-direction:column;gap:6px;min-width:140px;border:1px solid rgba(15,23,42,.08);box-shadow:0 8px 18px #0f172a1f}.metric-value{font-size:22px;font-weight:700;color:#0f172a}.metric-label{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.sentiment-distribution{background:#fffffff2;border-radius:16px;padding:18px 20px;color:#0f172a;border:1px solid rgba(15,23,42,.08);box-shadow:0 12px 24px #0f172a1f}.sentiment-header{display:flex;align-items:baseline;justify-content:space-between;gap:12px;margin-bottom:10px}.sentiment-distribution h3{font-size:14px;font-weight:700;margin:0;color:#0f172a}.sentiment-subtitle{font-size:12px;color:#64748b}.sentiment-bars{margin-bottom:12px}.sentiment-legend{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:10px}.sentiment-legend-item{display:flex;align-items:center;gap:10px;background:#f8fafc;border-radius:10px;padding:10px 12px;border:1px solid #e2e8f0}.sentiment-legend-dot{width:10px;height:10px;border-radius:999px;display:inline-block}.sentiment-legend-item.positive .sentiment-legend-dot{background:#22c55e}.sentiment-legend-item.neutral .sentiment-legend-dot{background:#94a3b8}.sentiment-legend-item.negative .sentiment-legend-dot{background:#ef4444}.sentiment-legend-text{display:flex;flex-direction:column;gap:2px}.sentiment-legend-label{font-size:11px;color:#64748b;text-transform:uppercase;letter-spacing:.04em;font-weight:600}.sentiment-legend-value{font-size:14px;font-weight:700;color:#0f172a}.section-header{display:flex;align-items:flex-start;gap:16px;margin-bottom:20px}.section-icon{width:44px;height:44px;background:var(--color-primary-bg);border-radius:12px;display:flex;align-items:center;justify-content:center;color:#3b82f6;flex-shrink:0}.section-title{font-size:20px;font-weight:700;color:var(--color-text-primary);margin:0 0 4px}.section-subtitle{font-size:14px;color:var(--color-text-secondary);margin:0}.subsection-title{font-size:16px;font-weight:600;color:var(--color-text-primary);margin:0 0 16px}.ai-analysis-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;margin-bottom:24px}.general-assessment{margin-bottom:24px;padding:20px;background:var(--color-bg-subtle);border-radius:12px}.general-assessment h3{font-size:15px;font-weight:600;color:var(--color-text-primary);margin:0 0 12px}.general-assessment .assessment-text{font-size:14px;line-height:1.6;color:var(--color-text-secondary);margin:0 0 8px}.general-assessment .assessment-text:last-child{margin-bottom:0}.general-assessment .assessment-list{list-style:none;padding:0;margin:12px 0 0;display:flex;flex-direction:column;gap:6px}.general-assessment .assessment-item{display:flex;align-items:center;justify-content:space-between;font-size:13px;font-weight:600;padding:6px 10px;border-radius:8px;background:var(--color-bg-card);border:1px solid var(--color-border)}.general-assessment .assessment-label{color:var(--color-text-secondary)}.general-assessment .assessment-value{font-weight:700}.general-assessment .assessment-item.positive .assessment-value{color:#15803d}.general-assessment .assessment-item.neutral .assessment-value{color:#b45309}.general-assessment .assessment-item.negative .assessment-value{color:#b91c1c}.analysis-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px}.analysis-card{background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:12px;overflow:hidden}.card-header{display:flex;align-items:center;justify-content:space-between;width:100%;padding:16px 20px;background:var(--color-bg-card);border:none;border-bottom:1px solid var(--color-border);cursor:pointer;transition:background .2s ease}.card-header:hover{background:var(--color-bg-subtle)}.card-header svg{color:var(--color-text-secondary);flex-shrink:0}.card-title{font-size:14px;font-weight:600;color:var(--color-text-primary);margin:0;text-align:left}.card-content{padding:20px}.analysis-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:12px}.analysis-item{display:flex;align-items:flex-start;gap:12px;font-size:14px;color:var(--color-text-secondary);line-height:1.6;padding:12px 16px;background:var(--color-bg-card);border-radius:10px;border:1px solid var(--color-border)}.item-bullet{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:600;flex-shrink:0}.analysis-item.positive .item-bullet{background:#dcfce7;color:#22c55e}.analysis-item.warning .item-bullet{background:#fef3c7;color:#f59e0b}.item-text{flex:1;white-space:pre-wrap;word-break:break-word}.themes-section{margin-top:20px;padding-top:20px;border-top:1px solid var(--color-border)}.themes-section h4{font-size:13px;font-weight:600;color:var(--color-text-secondary);margin:0 0 12px}.theme-card{padding:16px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:10px;margin-bottom:12px}.theme-card.positive{background:#f0fdf4;border-color:#bbf7d0}.theme-card.negative{background:#fef2f2;border-color:#fecaca}.theme-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.theme-name{font-size:14px;font-weight:600;color:var(--color-text-primary)}.theme-percentage{font-size:12px;font-weight:600;color:var(--color-primary);background:var(--color-primary-bg);padding:4px 10px;border-radius:12px}.theme-summary{font-size:14px;line-height:1.6;color:var(--color-text-secondary);margin:0 0 10px;white-space:pre-wrap;word-break:break-word}.theme-subject{font-size:12px;color:var(--color-text-secondary)}.no-data{font-size:14px;color:var(--color-text-secondary);padding:16px;text-align:center}.all-reviews-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;margin-bottom:24px;overflow:hidden}.section-header-btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:20px 24px;background:var(--color-bg-card);border:none;cursor:pointer;transition:background .2s ease}.section-header-btn:hover{background:var(--color-bg-subtle)}.section-header-btn .section-header{margin-bottom:0}.section-header-btn>svg{color:var(--color-text-secondary);flex-shrink:0}.reviews-list{padding:0 24px 24px;display:flex;flex-direction:column;gap:12px}.reviews-overview-block{padding:16px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:14px}.reviews-overview-header{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.reviews-overview-title{font-size:14px;font-weight:600;color:var(--color-text-primary);margin:0}.reviews-overview-count{font-size:12px;font-weight:600;color:var(--color-primary);background:var(--color-primary-bg);padding:4px 10px;border-radius:12px;white-space:nowrap}.reviews-overview-block .groups-grid{margin-top:4px}.subject-review-card{padding:20px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:14px;display:flex;flex-direction:column;gap:16px}.subject-review-header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.subject-review-info{display:flex;flex-direction:column;gap:4px}.subject-review-name{font-size:16px;font-weight:600;color:var(--color-text-primary)}.subject-review-meta{font-size:12px;color:var(--color-text-secondary)}.subject-review-count{font-size:12px;font-weight:600;color:var(--color-primary);background:var(--color-primary-bg);padding:4px 10px;border-radius:12px;white-space:nowrap}.subject-review-sentiment{display:flex;flex-direction:column;gap:8px}.subject-review-sentiment-legend{display:flex;flex-wrap:wrap;gap:12px;font-size:12px;color:var(--color-text-secondary)}.subject-review-sentiment-item{display:inline-flex;align-items:center;gap:6px;font-weight:500}.subject-review-sentiment-item:before{content:"";width:8px;height:8px;border-radius:50%;background:#cbd5f5}.subject-review-sentiment-item.positive:before{background:#22c55e}.subject-review-sentiment-item.neutral:before{background:#f59e0b}.subject-review-sentiment-item.negative:before{background:#ef4444}.subject-review-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.subject-review-column h4,.subject-review-conclusions h4{font-size:13px;font-weight:600;color:var(--color-text-secondary);margin:0 0 8px}.subject-review-conclusions{border-top:1px solid var(--color-border);padding-top:12px}.themes-section.compact{margin-top:8px;padding-top:0;border-top:none}.review-card{padding:16px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:12px}.review-card.positive{background:#f0fdf4;border-color:#bbf7d0}.review-card.negative{background:#fef2f2;border-color:#fecaca}.review-card.neutral{background:#fffbeb;border-color:#fde68a}.review-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}.review-theme{font-size:14px;font-weight:600;color:var(--color-text-primary)}.review-percentage{font-size:13px;font-weight:600;color:var(--color-primary);background:var(--color-primary-bg);padding:4px 12px;border-radius:12px}.review-summary{font-size:14px;line-height:1.6;color:var(--color-text-secondary);margin:0 0 12px;white-space:pre-wrap;word-break:break-word}.review-meta{display:flex;gap:16px;flex-wrap:wrap}.review-subject,.review-faculty{font-size:12px;color:var(--color-text-secondary)}.historical-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;margin-bottom:24px}.historical-status{display:flex;align-items:flex-start;gap:16px;padding:16px;border-radius:12px;margin-bottom:20px}.historical-status.good{background:#dcfce7}.historical-status.warning{background:#fef3c7}.historical-status.neutral{background:#f1f5f9}.status-icon{width:32px;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0}.historical-status.good .status-icon{background:#22c55e;color:#fff}.historical-status.warning .status-icon{background:#f59e0b;color:#fff}.historical-status.neutral .status-icon{background:#94a3b8;color:#fff}.status-content{display:flex;flex-direction:column;gap:4px}.status-title{font-size:15px;font-weight:600;color:var(--color-text-primary)}.status-desc{font-size:13px;color:var(--color-text-secondary)}.historical-metrics{display:grid;grid-template-columns:repeat(2,1fr);gap:12px}.h-metric{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--color-bg-subtle);border-radius:10px;font-size:13px;color:var(--color-text-secondary)}.h-metric svg{color:#22c55e;flex-shrink:0}.h-metric.positive svg{color:#22c55e}.h-metric.negative svg{color:#dc2626}.h-metric.neutral svg{color:#94a3b8}.historical-details{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.1fr);gap:16px;margin-top:20px}.historical-charts{display:grid;gap:12px}.historical-chart-card{border:1px solid var(--color-border);border-radius:12px;padding:12px 14px;background:var(--color-bg-subtle)}.chart-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:8px}.chart-title{font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-weight:600}.chart-value{font-size:14px;font-weight:600}.tone-positive{color:#16a34a}.tone-negative{color:#dc2626}.tone-neutral{color:#64748b}.sparkline{width:100%;height:80px;display:block}.sparkline-empty{height:80px;display:flex;align-items:center;justify-content:center;font-size:12px;color:var(--color-text-muted);border:1px dashed var(--color-border);border-radius:8px}.chart-labels{display:flex;justify-content:space-between;font-size:11px;color:var(--color-text-muted);margin-top:6px}.chart-delta{margin-top:6px;font-size:12px}.historical-highlights{display:flex;flex-wrap:wrap;gap:8px}.highlight-chip{padding:6px 10px;border-radius:999px;background:#eef2ff;color:#4338ca;font-size:12px;font-weight:500}.historical-table{border:1px solid var(--color-border);border-radius:12px;overflow:hidden;background:var(--color-bg-card)}.historical-table-row{display:grid;grid-template-columns:minmax(110px,1.1fr) minmax(80px,.8fr) minmax(80px,.8fr) minmax(90px,.9fr) minmax(110px,1fr);gap:8px;padding:10px 12px;border-bottom:1px solid var(--color-border-light);align-items:center;font-size:13px;color:var(--color-text-primary)}.historical-table-row.header{background:var(--color-bg-subtle);font-size:11px;text-transform:uppercase;letter-spacing:.04em;color:var(--color-text-secondary);font-weight:600}.historical-table-row:last-child{border-bottom:none}.cell-period{font-weight:600}.cell-score,.cell-reviews,.cell-delta{font-weight:500}@media(max-width:900px){.historical-details{grid-template-columns:1fr}}@media(max-width:640px){.historical-metrics{grid-template-columns:1fr}.historical-table-row{grid-template-columns:1fr;gap:4px;font-size:12px}.historical-table-row.header{display:none}}.groups-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px;margin-bottom:24px}.groups-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}.group-card{background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:12px;padding:16px}.group-header{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px;padding-bottom:12px;border-bottom:1px solid var(--color-border)}.group-info{display:flex;flex-direction:column;gap:4px;flex:1;min-width:0}.group-name{font-size:14px;font-weight:600;color:var(--color-text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.group-level{font-size:12px;color:var(--color-text-secondary)}.group-score{display:flex;flex-direction:column;align-items:flex-end;gap:2px;flex-shrink:0}.group-score .score-value{font-size:18px;font-weight:700;color:#22c55e}.group-score .score-bonus{font-size:11px;color:#22c55e}.group-details{display:flex;flex-direction:column;gap:8px;margin-bottom:12px}.detail-row{display:flex;justify-content:space-between;font-size:12px}.detail-label{color:var(--color-text-secondary)}.detail-value{color:var(--color-text-primary);font-weight:500}.detail-value.sentiment.positive{color:#22c55e}.detail-value.sentiment.neutral{color:#f59e0b}.detail-value.sentiment.negative{color:#ef4444}.group-status{font-size:12px;padding:8px 12px;border-radius:8px;text-align:center}.group-status.success{background:#dcfce7;color:#16a34a}.group-status.warning{background:#fee2e2;color:#dc2626}.result-summary{border-radius:16px;padding:24px;margin-bottom:24px}.result-summary.positive{background:linear-gradient(135deg,#dcfce7,#bbf7d0);border:1px solid #86efac}.result-summary.attention{background:linear-gradient(135deg,#fef3c7,#fde68a);border:1px solid #fcd34d}.summary-content{text-align:center}.summary-title{font-size:18px;font-weight:700;margin:0 0 8px}.result-summary.positive .summary-title{color:#166534}.result-summary.attention .summary-title{color:#92400e}.summary-desc{font-size:14px;max-width:500px;margin:0 auto 16px}.result-summary.positive .summary-desc{color:#166534}.result-summary.attention .summary-desc{color:#92400e}.summary-badge{display:inline-block;padding:8px 20px;background:#22c55e;color:#fff;border-radius:20px;font-size:13px;font-weight:600}.action-buttons{display:flex;gap:12px;margin-bottom:32px}.action-btn{display:flex;align-items:center;gap:8px;padding:12px 20px;border-radius:10px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease}.action-btn.primary{background:#3b82f6;color:#fff;border:none}.action-btn.primary:hover{background:#2563eb}.action-btn.secondary{background:var(--color-bg-card);color:var(--color-text-secondary);border:1px solid var(--color-border)}.action-btn.secondary:hover{background:var(--color-bg-subtle);border-color:#cbd5e1}.subjects-analysis-section{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:24px}.subjects-stats{display:flex;gap:32px;margin-bottom:24px;padding:16px 20px;background:var(--color-bg-subtle);border-radius:12px}.subject-stat{display:flex;flex-direction:column;gap:4px}.subject-stat .stat-number{font-size:20px;font-weight:700;color:var(--color-text-primary)}.subject-stat .stat-label{font-size:12px;color:var(--color-text-secondary)}.subjects-list{display:flex;flex-direction:column;gap:16px}.subject-card-detailed{padding:20px;background:var(--color-bg-subtle);border:1px solid var(--color-border);border-radius:12px}.subject-header-row{display:flex;justify-content:space-between;align-items:flex-start;margin-bottom:16px}.subject-info{display:flex;flex-direction:column;gap:4px}.subject-info .subject-name{font-size:15px;font-weight:600;color:var(--color-text-primary)}.subject-info .subject-meta{font-size:12px;color:var(--color-text-secondary)}.subject-reviews-badge{font-size:12px;font-weight:500;color:var(--color-primary);background:var(--color-primary-bg);padding:4px 12px;border-radius:12px}.subject-chart{display:flex;align-items:center;gap:24px;margin-bottom:16px;padding:16px;background:var(--color-bg-card);border-radius:10px}.chart-legend{display:flex;flex-direction:column;gap:8px}.legend-item{display:flex;align-items:center;gap:8px;font-size:13px}.legend-item .legend-color{width:12px;height:12px;border-radius:3px}.legend-item.positive .legend-color{background:#22c55e}.legend-item.neutral .legend-color{background:#f59e0b}.legend-item.negative .legend-color{background:#ef4444}.legend-item .legend-label{color:var(--color-text-secondary);min-width:100px}.legend-item .legend-value{font-weight:600;color:var(--color-text-primary)}.subject-sentiment-bar{margin-top:8px}.subject-card{display:grid;grid-template-columns:2fr 1fr 2fr;align-items:center;gap:16px;padding:16px;background:var(--color-bg-subtle);border-radius:10px}.subject-card .subject-name{font-size:14px;font-weight:500;color:var(--color-text-primary)}.subject-card .subject-reviews{font-size:13px;color:var(--color-text-secondary)}.subject-card .subject-sentiment{display:flex;align-items:center}@media(max-width:1024px){.hero-score-section{flex-direction:column;align-items:flex-start;gap:24px}.hero-metrics{width:100%}.analysis-grid,.subject-review-columns,.groups-grid,.historical-metrics{grid-template-columns:1fr}.subject-chart{flex-direction:column;gap:16px}}@media(max-width:768px){.analysis-hero{padding:24px}.hero-title{font-size:22px}.hero-metrics{grid-template-columns:1fr;gap:12px}.action-buttons{flex-direction:column}.action-btn{width:100%;justify-content:center}.subject-card{grid-template-columns:1fr;gap:8px}.subject-header-row{flex-direction:column;gap:8px}.chart-legend{flex-direction:row;flex-wrap:wrap;gap:12px}}.actual-reviews-section{margin-top:24px}.actual-reviews-content{padding:20px}.reviews-loading-state,.reviews-error-state,.no-reviews-state{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px;gap:16px;color:var(--color-text-secondary)}.reviews-loading-state .loading-spinner{width:40px;height:40px;border:3px solid var(--color-border);border-top-color:#3b82f6;border-radius:50%;animation:spin 1s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.no-reviews-state svg{width:48px;height:48px;color:var(--color-text-muted)}.actual-reviews-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:16px;margin-bottom:24px;padding:16px;background:var(--color-bg-subtle);border-radius:12px}.actual-reviews-stats .stat-item{display:flex;flex-direction:column;align-items:center;padding:12px;background:var(--color-bg-card);border-radius:8px;box-shadow:0 1px 3px var(--color-shadow)}.actual-reviews-stats .stat-number{font-size:24px;font-weight:700;color:var(--color-text-primary)}.actual-reviews-stats .stat-item.positive .stat-number{color:#22c55e}.actual-reviews-stats .stat-item.negative .stat-number{color:#f59e0b}.actual-reviews-stats .stat-label{font-size:12px;color:var(--color-text-secondary);text-align:center;margin-top:4px}.reviews-group{margin-bottom:24px}.reviews-group-title{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:600;margin:0 0 16px;color:var(--color-text-primary)}.reviews-group-title.positive{color:#16a34a}.reviews-group-title.negative{color:#d97706}.reviews-group-title svg{width:20px;height:20px}.actual-reviews-list{display:flex;flex-direction:column;gap:12px}.actual-review-card{padding:16px 20px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;transition:all .2s ease}.actual-review-card:hover{box-shadow:0 4px 12px var(--color-shadow-md)}.actual-review-card.positive{border-left:4px solid #22c55e;background:linear-gradient(to right,#f0fdf4,#fff)}.actual-review-card.negative{border-left:4px solid #f59e0b;background:linear-gradient(to right,#fffbeb,#fff)}.actual-review-text{font-size:14px;line-height:1.7;color:var(--color-text-secondary);margin:0 0 12px;white-space:pre-wrap;word-break:break-word}.actual-review-meta{display:flex;gap:16px;font-size:12px;color:var(--color-text-muted);flex-wrap:wrap}.actual-review-subject{font-weight:500;color:var(--color-text-secondary)}.actual-review-period{color:var(--color-text-muted)}.show-more-reviews-btn{display:inline-flex;align-items:center;gap:4px;padding:12px 20px;background:var(--color-bg-page);color:var(--color-primary);border:none;border-radius:8px;font-size:14px;font-weight:500;cursor:pointer;transition:all .2s ease;margin-top:12px}.show-more-reviews-btn:hover{background:var(--color-border)}.admin-page{max-width:1000px;margin:0 auto}.admin-page h1{font-size:1.5rem;font-weight:700;margin-bottom:1.5rem;color:var(--color-text-primary)}.admin-card{background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:12px;padding:1.5rem;margin-bottom:1.5rem}.admin-card h2{font-size:1.1rem;font-weight:600;margin-bottom:1rem;color:var(--color-text-primary)}.admin-users-table{width:100%;border-collapse:collapse}.admin-users-table th,.admin-users-table td{padding:10px 12px;text-align:left;border-bottom:1px solid var(--color-border);font-size:.9rem}.admin-users-table th{font-weight:600;color:var(--color-text-secondary);font-size:.8rem;text-transform:uppercase;letter-spacing:.5px}.admin-users-table tr:last-child td{border-bottom:none}.admin-users-table tr:hover td{background:var(--color-bg-subtle)}.admin-role-select{padding:4px 8px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-card);color:var(--color-text-primary);font-size:.85rem;cursor:pointer}.admin-role-select:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg)}.admin-btn{padding:6px 14px;border:none;border-radius:6px;font-size:.85rem;font-weight:500;cursor:pointer;transition:background .15s}.admin-btn-primary{background:var(--color-primary);color:#fff}.admin-btn-primary:hover{background:var(--color-primary-hover)}.admin-btn-secondary{background:var(--color-bg-subtle);color:var(--color-text-primary);border:1px solid var(--color-border)}.admin-btn-secondary:hover{background:var(--color-border)}.admin-btn-danger{background:#ef4444;color:#fff}.admin-btn-danger:hover{background:#dc2626}.admin-btn-sm{padding:4px 10px;font-size:.8rem}.admin-permissions{margin-top:1rem}.admin-perm-section{margin-bottom:1.25rem}.admin-perm-section h3{font-size:.9rem;font-weight:600;margin-bottom:.5rem;color:var(--color-text-primary)}.admin-perm-tags{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:.5rem}.admin-perm-tag{display:inline-flex;align-items:center;gap:4px;padding:4px 10px;background:var(--color-primary-bg);color:var(--color-primary);border-radius:16px;font-size:.8rem;font-weight:500}.admin-perm-tag button{background:none;border:none;color:var(--color-primary);cursor:pointer;padding:0;font-size:1rem;line-height:1;opacity:.6}.admin-perm-tag button:hover{opacity:1}.admin-search-row{display:flex;gap:8px;align-items:center}.admin-search-input{flex:1;padding:6px 12px;border:1px solid var(--color-border);border-radius:6px;background:var(--color-bg-card);color:var(--color-text-primary);font-size:.85rem}.admin-search-input:focus{outline:none;border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg)}.admin-search-results{max-height:200px;overflow-y:auto;border:1px solid var(--color-border);border-radius:6px;margin-top:4px}.admin-search-item{padding:8px 12px;cursor:pointer;font-size:.85rem;border-bottom:1px solid var(--color-border);color:var(--color-text-primary)}.admin-search-item:last-child{border-bottom:none}.admin-search-item:hover{background:var(--color-primary-bg)}.admin-status{padding:8px 12px;border-radius:6px;font-size:.85rem;margin-bottom:1rem}.admin-status-success{background:#dcfce7;color:#166534}.admin-status-error{background:#fef2f2;color:#991b1b}[data-theme=dark] .admin-status-success{background:#14532d;color:#bbf7d0}[data-theme=dark] .admin-status-error{background:#450a0a;color:#fecaca}.admin-modal-overlay{position:fixed;inset:0;background:#00000080;display:flex;align-items:center;justify-content:center;z-index:100}.admin-modal{background:var(--color-bg-card);border-radius:12px;padding:1.5rem;width:90%;max-width:600px;max-height:80vh;overflow-y:auto;box-shadow:0 20px 60px #0000004d}.admin-modal h2{font-size:1.1rem;font-weight:600;margin-bottom:1rem}.admin-modal-actions{display:flex;justify-content:flex-end;gap:8px;margin-top:1.5rem}.admin-empty{text-align:center;color:var(--color-text-muted);padding:2rem;font-size:.9rem}.admin-loading{text-align:center;padding:2rem;color:var(--color-text-secondary)}.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;background:var(--color-bg-page);padding:20px}.auth-card{width:100%;max-width:420px;background:var(--color-bg-card);border:1px solid var(--color-border);border-radius:16px;padding:40px 32px;box-shadow:0 4px 24px var(--color-shadow-md)}.auth-logo{text-align:center;margin-bottom:24px}.auth-logo-img{max-width:200px;height:auto}[data-theme=dark] .auth-logo-img{background:#fff;border-radius:8px;padding:6px 10px}.auth-title{font-size:22px;font-weight:700;color:var(--color-text-primary);text-align:center;margin-bottom:4px}.auth-subtitle{font-size:14px;color:var(--color-text-secondary);text-align:center;margin-bottom:24px}.auth-error{background:#ef44441a;color:#dc2626;border:1px solid rgba(239,68,68,.2);border-radius:8px;padding:10px 14px;font-size:13px;margin-bottom:16px}[data-theme=dark] .auth-error{background:#ef444426;color:#fca5a5;border-color:#ef44444d}.auth-form{display:flex;flex-direction:column;gap:16px}.auth-field{display:flex;flex-direction:column;gap:6px}.auth-field label{font-size:13px;font-weight:600;color:var(--color-text-primary)}.auth-field input{padding:10px 14px;border:1px solid var(--color-border);border-radius:8px;font-size:14px;background:var(--color-bg-input);color:var(--color-text-primary);transition:border-color .2s;outline:none}.auth-field input:focus{border-color:var(--color-primary);box-shadow:0 0 0 3px var(--color-primary-bg)}.auth-field input::placeholder{color:var(--color-text-muted)}.auth-btn{padding:12px;background:var(--color-primary);color:#fff;border:none;border-radius:8px;font-size:15px;font-weight:600;cursor:pointer;transition:background .2s;margin-top:8px}.auth-btn:hover:not(:disabled){background:var(--color-primary-hover)}.auth-btn:disabled{opacity:.6;cursor:not-allowed}.auth-switch{text-align:center;font-size:13px;color:var(--color-text-secondary);margin-top:20px}.auth-switch a{color:var(--color-primary);font-weight:600;text-decoration:none}.auth-switch a:hover{text-decoration:underline}
