:root{--primary:#004c93;--sidebar-bg:var(--primary);--bg:#dfe4f2;--panel:#ffffff;--ink:#102033;--muted:#52627a;--line:#c7d0e5;--surface-soft:#f5f7fc;--selected-soft:#edf1fb;--success:#5fa381;--success-soft:#e7f2ec;--accent-lime:#c2d33e;--warning:#ff933e;--warning-soft:#fff0e4;--danger:#e84035;--danger-soft:#fde8e6;--info:#7aa2ba;--purple:#782f88;--pink:#ee7aad;--mint:#9bceab;--yellow:#feca00;--lavender:#a68eca;--green:var(--primary);--green-soft:var(--bg);--gold:var(--warning);--gold-soft:var(--warning-soft);--blue:var(--primary);--shadow:0 20px 60px rgba(0,76,147,0.12)}[data-theme=dark]{--primary:#5aa8d8;--sidebar-bg:#004c93;--bg:#0f1623;--panel:#1a2235;--ink:#e2e8f4;--muted:#7a93b8;--line:#233050;--surface-soft:#141d2e;--selected-soft:#1e2d45;--success:#4ec494;--success-soft:#0b2318;--warning:#ffaa55;--warning-soft:#271500;--danger:#f07070;--danger-soft:#270d0d;--info:#7ab4d4;--shadow:0 20px 60px rgba(0,0,0,0.5);--green-soft:#0d1e2e;--gold-soft:var(--warning-soft)}*{box-sizing:border-box}body{margin:0;background:var(--bg);color:var(--ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;letter-spacing:0}button,input{font:inherit}.shell{display:grid;min-height:100vh;grid-template-columns:260px minmax(0,1fr)}.sidebar{background:var(--sidebar-bg);color:white;padding:28px 20px;display:flex;flex-direction:column;position:-webkit-sticky;position:sticky;top:0;height:100vh}.brand{display:flex;align-items:center;gap:12px;margin-bottom:36px}.brandText{flex:1 1;min-width:0}.themeToggleIcon{display:grid;place-items:center;flex-shrink:0;width:30px;height:30px;border-radius:7px;border:none;background:rgba(255,255,255,.12);color:rgba(255,255,255,.75);cursor:pointer;transition:background .15s,color .15s}.themeToggleIcon:hover{background:rgba(255,255,255,.22);color:white}.brandMark{display:grid;width:44px;height:44px;place-items:center;border-radius:8px;background:#ffffff;flex-shrink:0}.brand p,.eyebrow{margin:0;color:var(--muted);font-size:13px}.brand p{color:rgba(255,255,255,.68)}.brand strong{display:block}.nav{display:grid;grid-gap:8px;gap:8px}.nav a{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 12px;border-radius:8px;color:rgba(255,255,255,.72);text-decoration:none}.nav a.active{background:rgba(255,255,255,.12);color:white}.workspace{min-width:0;padding:0 0 40px}.workspaceBody{padding:28px 32px}.topbar{gap:20px;padding:28px 32px}.pageHeader,.topbar{display:flex;align-items:center;justify-content:space-between}.pageHeader{gap:24px;padding:22px 32px 20px;background:var(--panel);border-bottom:1px solid var(--line);position:-webkit-sticky;position:sticky;top:0;z-index:10}.pageHeaderLeft{display:flex;align-items:center;gap:14px;min-width:0}.pageHeaderIcon{display:grid;place-items:center;width:42px;height:42px;border-radius:10px;background:var(--selected-soft);color:var(--primary);flex-shrink:0}.pageHeaderText{display:flex;flex-direction:column;gap:1px;min-width:0}.pageHeaderEyebrow{font-size:11px;font-weight:600;letter-spacing:.07em;text-transform:uppercase;color:var(--primary);opacity:.75}.pageHeaderTitle{font-size:20px;font-weight:700;color:var(--ink);margin:0;line-height:1.2}.pageHeaderDesc{font-size:13px;color:var(--muted);margin:2px 0 0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pageHeaderActions{display:flex;align-items:center;gap:10px;flex-shrink:0}h1,h2,h3,h4,p{margin-top:0}h1{margin-bottom:0;font-size:32px;line-height:1.15}h2{font-size:20px;line-height:1.25;margin-bottom:6px}h3{font-size:16px;margin-bottom:14px}.uploadButton{display:inline-flex;align-items:center;gap:9px;min-height:42px;padding:0 14px;border-radius:8px;background:var(--green);color:white;cursor:pointer;font-weight:700}.actions{display:flex;align-items:center;gap:10px}.iconButton{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:42px;padding:0 14px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);cursor:pointer;font-weight:700;text-decoration:none}.uploadButton input{display:none}.filterSelect{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:13px;font-weight:600;color:var(--ink);cursor:pointer}.emptyState{display:grid;place-items:center;grid-gap:12px;gap:12px;padding:60px 20px;text-align:center;color:var(--muted)}.emptyState a{display:inline-flex;align-items:center;height:38px;padding:0 16px;border-radius:8px;background:var(--primary);color:white;font-weight:700;text-decoration:none;font-size:14px}.loadingHint{padding:12px 0;color:var(--muted);font-size:14px}.kpis{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:14px;gap:14px;margin-bottom:18px}.coursePanel,.detailPanel,.kpis article{background:var(--panel);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow)}.kpis article{display:grid;grid-gap:8px;gap:8px;padding:18px}.kpis span{display:grid;width:34px;height:34px;place-items:center;border-radius:8px;background:var(--green-soft);color:var(--green)}.kpis p{margin-bottom:0;color:var(--muted);font-size:13px}.kpis strong{font-size:28px}.contentGrid{display:grid;grid-template-columns:minmax(330px,.88fr) minmax(0,1.6fr);grid-gap:18px;gap:18px;align-items:start}.coursePanel,.detailPanel{overflow:hidden}.panelHeader,.reportHeader{display:flex;justify-content:space-between;gap:18px;padding:18px;border-bottom:1px solid var(--line)}.panelHeader p,.reportHeader p{color:var(--muted);margin-bottom:0}.search{display:flex;align-items:center;gap:8px;height:38px;min-width:160px;padding:0 10px;border:1px solid var(--line);border-radius:8px}.search input{min-width:0;border:0;outline:0}.courseList{display:grid;max-height:680px;overflow:auto}.courseItem{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-gap:12px;gap:12px;width:100%;padding:16px 18px;border:0;border-bottom:1px solid var(--line);background:var(--panel);color:inherit;text-align:left;cursor:pointer}.courseItem.selected{background:var(--selected-soft)}.courseItem small,.courseItem strong{display:block}.courseItem strong{line-height:1.25}.courseItem small{margin-top:6px;color:var(--muted)}.backLink,.reportBadge,.reportLink,.status{display:inline-flex;align-items:center;justify-content:center;gap:7px;min-height:30px;padding:0 10px;border-radius:999px;font-size:13px;font-style:normal;font-weight:700;white-space:nowrap}.backLink,.reportLink{border:1px solid var(--line);background:var(--panel);color:var(--ink);text-decoration:none}.reportBadge.ok,.status.ok{background:var(--success-soft);color:var(--success)}.reportBadge.wait,.status.wait{background:var(--warning-soft);color:var(--warning)}.reportBadge.neutral{background:var(--bg);color:var(--info)}.reportHeader h2{max-width:780px}.metaGrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));grid-gap:1px;gap:1px;background:var(--line);border-bottom:1px solid var(--line)}.metaGrid span{display:grid;grid-gap:4px;gap:4px;min-height:76px;padding:14px;background:var(--panel);color:var(--muted);font-size:13px}.metaGrid strong{color:var(--ink);font-size:15px}.chartBand,.comments{padding:18px}.metric{display:grid;grid-template-columns:minmax(220px,.9fr) minmax(0,1.1fr);grid-gap:18px;gap:18px;align-items:center;padding:16px 0;border-top:1px solid var(--line)}.metric:first-of-type{border-top:0}.metric p{margin-bottom:6px;color:var(--blue);font-weight:800}.metric h4{margin-bottom:10px;font-size:15px;line-height:1.35}.metric strong{font-size:24px}.hiddenItem{display:grid;min-height:96px;place-items:center;border:1px dashed var(--warning);border-radius:8px;background:var(--warning-soft);color:var(--warning);text-align:center;font-weight:700}.comments{border-top:1px solid var(--line)}.facultySummary{margin-bottom:18px;background:var(--panel);border:1px solid var(--line);border-radius:10px;box-shadow:var(--shadow);overflow:hidden}.facultyTable{width:100%;border-collapse:collapse;font-size:13px}.facultyTable th{padding:10px 14px;text-align:left;color:var(--muted);font-weight:600;border-bottom:2px solid var(--line);white-space:nowrap}.facultyTable th:not(:first-child){text-align:right}.facultyTableRow{cursor:pointer;transition:background .12s}.facultyTableRow:hover{background:var(--selected-soft)}.facultyTableRow td{padding:9px 14px;border-bottom:1px solid var(--line);vertical-align:middle}.facultyTableRow:last-child td{border-bottom:none}.facultyTableRow td:not(:first-child){text-align:right;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.facultyEligibleBadge{display:inline-block;min-width:28px;padding:1px 7px;border-radius:999px;background:var(--bg);color:var(--muted);font-weight:700;text-align:center}.facultyEligibleBadge.ok{background:var(--success-soft);color:var(--success)}.alertsPanel{margin-bottom:18px;border:1px solid var(--warning);border-radius:10px;background:var(--warning-soft);overflow:hidden}.alertsPanelHeader{display:flex;align-items:center;gap:8px;padding:10px 14px;background:var(--warning);color:white;font-size:13px;font-weight:700}.alertsList{display:grid;grid-gap:1px;gap:1px;background:var(--warning)}.alertItem{display:flex;align-items:center;gap:10px;padding:10px 14px;font-size:13px;background:var(--warning-soft)}.alertItem.neutral{background:var(--surface-soft)}.alertItem svg{flex-shrink:0;color:var(--warning)}.alertItem.neutral svg{color:var(--muted)}.alertJumpBtn{margin-left:auto;padding:4px 10px;border:1px solid var(--warning);border-radius:6px;background:var(--panel);color:var(--warning);font-size:12px;font-weight:700;cursor:pointer;white-space:nowrap}.alertFilterBanner{display:flex;align-items:center;gap:8px;padding:8px 14px;background:color-mix(in srgb,var(--warning) 10%,transparent);border-bottom:1px solid color-mix(in srgb,var(--warning) 25%,transparent);font-size:12px;color:var(--text)}.alertFilterBanner span{flex:1 1;font-weight:600}.alertFilterBanner button{padding:2px 8px;border:1px solid var(--border);border-radius:5px;background:var(--panel);color:var(--muted);font-size:11px;cursor:pointer}.semesterGroup{display:contents}.courseItemDot{display:flex;align-items:flex-start;gap:8px}.runtimeDot{flex-shrink:0;width:8px;height:8px;border-radius:50%;margin-top:5px;background:var(--muted)}.runtimeDot.open{background:var(--success)}.runtimeDot.closed{background:var(--muted)}.runtimeDot.not-activated{background:var(--warning)}.runtimeDot.unreachable{background:var(--danger)}.semesterGroupHeader{padding:7px 18px;background:var(--bg);font-size:12px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;position:-webkit-sticky;position:sticky;top:0;z-index:1}.detailPanelHeader,.semesterGroupHeader{display:flex;justify-content:space-between;border-bottom:1px solid var(--line)}.detailPanelHeader{align-items:flex-start;gap:16px;padding:20px}.detailPanelHeader h2{margin:4px 0;font-size:18px;line-height:1.3}.detailPanelHeader p{margin:0;color:var(--muted);font-size:14px}.detailProgress{padding:16px 20px 12px;border-bottom:1px solid var(--line)}.detailProgressHeader{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:8px;font-size:13px;color:var(--muted)}.detailProgressHeader strong{color:var(--ink);font-size:14px}.detailProgressTrack{height:8px;background:var(--bg);border-radius:4px;overflow:hidden}.detailProgressFill{height:100%;background:var(--warning);border-radius:4px;transition:width .3s ease;min-width:4px}.detailProgressFill.eligible{background:var(--success)}.detailMeta{display:grid}.detailMeta,.detailMetaRow{border-bottom:1px solid var(--line)}.detailMetaRow{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:10px 20px;font-size:14px}.detailMetaRow:last-child{border-bottom:none}.detailMetaRow span{color:var(--muted);flex-shrink:0}.detailMetaRow strong{text-align:right;word-break:break-word}.detailFacultyAssign{display:flex;align-items:center;gap:8px;flex:1 1;justify-content:flex-end}.detailFacultyAssign select{max-width:220px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;font-size:13px;background:var(--panel)}.detailActions{display:flex;flex-wrap:wrap;gap:8px;padding:16px 20px}blockquote{margin:0 0 10px;padding:12px 14px;border-left:4px solid var(--green);background:var(--surface-soft)}.comments p{color:var(--muted)}.reportPage{min-height:100vh;background:var(--bg)}.reportPageHeader{background:var(--panel);border-bottom:3px solid var(--primary);box-shadow:0 2px 12px rgba(0,76,147,.1)}.reportPageHeaderInner{max-width:1200px;margin:0 auto;padding:20px 32px 28px}.reportNav{display:flex;align-items:center;justify-content:space-between;margin-bottom:20px}.reportNavBack{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:700;color:var(--primary);text-decoration:none}.reportNavBack:hover{text-decoration:underline}.reportNavMeta{font-size:13px;color:var(--muted)}.reportTitleRow{display:flex;align-items:flex-start;justify-content:space-between;gap:24px}.reportTitleBlock{flex:1 1;min-width:0}.reportEyebrow{margin:0 0 8px;font-size:13px;font-weight:700;color:var(--primary);text-transform:uppercase;letter-spacing:.06em}.reportTitle{margin:0 0 10px;font-size:30px;line-height:1.2;color:var(--ink)}.reportTeachers{margin:0;font-size:15px;color:var(--muted);font-weight:500}.reportStatusBadge{display:inline-flex;align-items:center;gap:8px;padding:10px 16px;border-radius:10px;font-size:14px;font-weight:700;white-space:nowrap;flex-shrink:0}.reportStatusBadge.ok{background:var(--success-soft);color:var(--success)}.reportStatusBadge.wait{background:var(--warning-soft);color:var(--warning)}.reportBody{max-width:1200px;margin:0 auto;padding:28px 32px 48px;display:grid;grid-gap:20px;gap:20px}.reportSummary{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:14px;gap:14px}.summaryCard{display:grid;grid-gap:4px;gap:4px;padding:20px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 8px rgba(0,76,147,.06)}.summaryCard.highlight{background:var(--primary);border-color:transparent;color:white}.summaryLabel{margin:0;font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.summaryCard.highlight .summaryLabel{color:rgba(255,255,255,.72)}.summaryValue{font-size:32px;font-weight:900;line-height:1.1;color:var(--ink)}.summaryCard.highlight .summaryValue{color:white}.summaryCheck{color:var(--success)}.summaryCard.highlight .summaryCheck{color:#9bceab}.summaryHint{font-size:12px;color:var(--muted)}.summaryCard.highlight .summaryHint{color:rgba(255,255,255,.65)}.notEligibleNotice{display:flex;align-items:flex-start;gap:14px;padding:18px 20px;background:var(--warning-soft);border:1px solid var(--warning);border-radius:12px;color:var(--warning)}.notEligibleNotice>div{display:grid;grid-gap:4px;gap:4px}.notEligibleNotice strong{font-size:15px;color:var(--ink)}.notEligibleNotice p{margin:0;font-size:14px;color:var(--muted)}.notEligibleProgress{height:6px;background:rgba(255,255,255,.6);border-radius:3px;overflow:hidden;margin-top:10px}.notEligibleProgressBar{height:100%;background:var(--warning);border-radius:3px;transition:width .4s ease}.highlightPanel{display:grid;grid-gap:14px;gap:14px}.aiSummaryCard{padding:22px 24px;background:linear-gradient(135deg,#004c93,#1a6abf);border-radius:14px;color:white;box-shadow:0 4px 16px rgba(0,76,147,.25)}.aiSummaryHeader{display:flex;align-items:center;gap:8px;margin-bottom:12px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;opacity:.85}.aiSummaryText{margin:0;font-size:16px;line-height:1.65;font-weight:400}.highlightGroup{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 2px 8px rgba(0,76,147,.06)}.highlightGroupHeader{display:flex;align-items:center;gap:8px;padding:14px 20px;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;border-bottom:1px solid var(--line)}.highlightGroupHeader.strengths{background:var(--success-soft);color:var(--success)}.highlightGroupHeader.weaknesses{background:var(--warning-soft);color:var(--warning)}.highlightItems{display:grid}.highlightItem{display:grid;grid-template-columns:auto 1fr;grid-gap:0 16px;gap:0 16px;align-items:center;padding:14px 20px;border-bottom:1px solid var(--line)}.highlightItem:last-child{border-bottom:none}.highlightItemMeta{display:grid;grid-gap:2px;gap:2px;text-align:center;min-width:52px}.highlightItemMeta strong{font-size:20px;font-weight:900;line-height:1}.highlightItem.strength .highlightItemMeta strong{color:var(--success)}.highlightItem.weakness .highlightItemMeta strong{color:var(--warning)}.highlightItemMeta span{font-size:11px;color:var(--muted);font-weight:600;line-height:1.2}.highlightItem p{margin:0;font-size:14px;line-height:1.45;color:var(--ink)}.reportSection{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 2px 12px rgba(0,76,147,.07)}.sectionHeader{display:flex;align-items:center;gap:14px;padding:18px 22px;background:var(--surface-soft);border-bottom:1px solid var(--line)}.sectionCode{display:grid;place-items:center;min-width:44px;height:44px;padding:0 10px;border-radius:8px;background:var(--primary);color:white;font-size:13px;font-weight:900;letter-spacing:.03em;flex-shrink:0}.sectionTitle{margin:0;font-size:17px;font-weight:800;flex:1 1}.sectionAvg{padding:4px 12px;border-radius:20px;background:var(--selected-soft);color:var(--primary);font-size:13px;font-weight:800;white-space:nowrap}.itemList,.itemRow{display:grid}.itemRow{grid-template-columns:minmax(240px,1.4fr) minmax(320px,1fr);grid-gap:20px;gap:20px;align-items:center;padding:16px 22px;border-bottom:1px solid var(--line);transition:background .1s}.itemRow:last-child{border-bottom:none}.itemRow:hover{background:var(--surface-soft)}.itemRowHidden{opacity:.5}.itemLabel{display:grid;grid-gap:4px;gap:4px}.itemCode{font-size:12px;font-weight:800;color:var(--primary);text-transform:uppercase;letter-spacing:.04em}.itemText{font-size:14px;line-height:1.45;color:var(--ink)}.itemScore{display:grid;grid-gap:10px;gap:10px}.itemScoreBar{display:grid;grid-gap:5px;gap:5px}.itemScaleTrack{position:relative;height:8px;background:var(--line);border-radius:4px}.itemScaleFill{height:100%;background:var(--primary);border-radius:4px;min-width:8px}.itemScaleDot{position:absolute;top:50%;transform:translate(-50%,-50%);width:18px;height:18px;background:var(--panel);border:3px solid var(--primary);border-radius:50%;box-shadow:0 1px 4px rgba(0,76,147,.25)}.itemScaleLabels{display:flex;justify-content:space-between;padding:0 2px;font-size:11px;color:var(--muted)}.itemScoreMeta{display:flex;align-items:baseline;gap:10px}.itemMean{font-size:22px;font-weight:900;color:var(--primary);letter-spacing:-.02em}.itemN{font-size:12px;color:var(--muted);font-weight:600}.itemDist{display:flex;align-items:flex-end;gap:4px;height:40px}.distBar{display:flex;flex:1 1;flex-direction:column;align-items:center;justify-content:flex-end;gap:3px;height:100%}.distBarFill{width:100%;background:var(--bg);border:1px solid var(--line);border-radius:3px 3px 0 0;min-height:4px}.distBarLabel{font-size:10px;color:var(--muted);font-weight:700}.itemHidden{padding:10px 14px;border-radius:8px;font-size:13px;color:var(--muted);font-style:italic}.itemHidden,.sectionComments{background:var(--surface-soft)}.sectionComments{padding:22px;border-top:1px solid var(--line)}.commentsHeading{margin:0 0 16px;font-size:14px;font-weight:800;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.commentGrid{display:grid;grid-gap:12px;gap:12px}.commentCard{margin:0;padding:16px 18px;background:var(--panel);border:1px solid var(--line);border-left:4px solid var(--primary);border-radius:0 10px 10px 0;box-shadow:0 1px 4px rgba(0,76,147,.06)}.commentCategory{margin:0 0 8px;font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.08em;color:var(--primary)}.commentText{margin:0;font-size:15px;line-height:1.6;color:var(--ink)}.adminHero,.importForm,.importResult,.teacherHero,.teacherLoginPanel,.teacherSurveyList{max-width:1180px;margin:18px auto}.adminHero,.teacherHero{padding:30px 0 18px;border-bottom:1px solid var(--line)}.adminHero h1,.teacherHero h1,.teacherLoginPanel h1{margin:4px 0 10px;font-size:36px}.adminHero p,.teacherHero p,.teacherLoginPanel p{color:var(--muted)}.importForm{display:grid;grid-gap:14px;padding:18px;background:var(--panel);box-shadow:var(--shadow)}.dateField,.fileDrop,.importForm{gap:14px;border:1px solid var(--line);border-radius:8px}.dateField,.fileDrop{display:flex;align-items:center;min-height:72px;padding:14px;background:var(--surface-soft)}.fileDrop{cursor:pointer}.fileDrop input{display:none}.dateField span,.fileDrop span{display:grid;grid-gap:4px;gap:4px;min-width:0}.dateField small,.fileDrop small{color:var(--muted)}.dateField input{width:180px;min-height:38px;padding:0 10px;background:var(--panel)}.dateField input,.facultyField{border:1px solid var(--line);border-radius:8px}.facultyField{display:flex;align-items:center;gap:14px;min-height:72px;padding:14px;background:var(--surface-soft)}.facultyField span{font-size:13px;font-weight:700;color:var(--muted);white-space:nowrap}.facultyField select{flex:1 1;min-height:38px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel);font-size:14px;color:var(--fg);cursor:pointer}.toggleLine{display:flex;align-items:center;gap:10px;color:var(--muted);font-weight:700}.adminActions{display:flex;gap:10px;flex-wrap:wrap}.adminActions button:disabled{cursor:not-allowed;opacity:.58}.formError{display:flex;gap:8px;align-items:center;padding:12px 14px;border-radius:8px;background:var(--warning-soft);color:var(--warning);font-weight:800}.notifyPanel{display:grid;grid-gap:12px;gap:12px;padding:14px 16px;border:1px solid var(--line);border-radius:10px;background:var(--surface-soft);font-size:.875rem}.notifyPanelHeader{display:flex;align-items:center;gap:10px;flex-wrap:wrap;color:var(--ink);font-weight:600}.notifyPanelHeader .iconButton{margin-left:auto}.notifyTable{width:100%;border-collapse:collapse;font-size:.8125rem}.notifyTable th{text-align:left;padding:6px 8px;border-bottom:2px solid var(--line);color:var(--muted);font-weight:600}.notifyTable td{padding:6px 8px;border-bottom:1px solid var(--line);vertical-align:top}.notifyTable tr:last-child td{border-bottom:none}.notifyTable a{color:var(--primary);word-break:break-all}.notifyErrors{margin:0;padding-left:18px;color:var(--danger);font-size:.8125rem}.importErrorList{display:grid;grid-gap:6px;gap:6px;padding:12px 14px;border-radius:8px;background:var(--danger-soft);color:var(--danger);font-size:.875rem;line-height:1.5}.importErrorList ul{margin:4px 0 0;padding-left:18px}.importErrorList li{font-weight:400}.importErrorList strong{font-weight:700}.teacherLoginPage{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:flex-start;padding:60px 16px 40px;background:linear-gradient(160deg,var(--bg) 60%,color-mix(in srgb,var(--sidebar-bg) 8%,var(--bg)))}.teacherLoginCard{width:100%;max-width:480px;display:grid;grid-gap:22px;gap:22px;padding:32px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow)}.teacherLoginBrand{display:flex;align-items:center;gap:12px;padding-bottom:18px;border-bottom:1px solid var(--line)}.teacherLoginSignet{width:48px;height:48px;background:var(--sidebar-bg);border-radius:10px;display:grid;place-items:center;flex-shrink:0}.teacherLoginBrand strong{display:block;font-size:15px}.teacherLoginBrand span{font-size:13px;color:var(--muted)}.teacherLoginIntro h1{font-size:22px;margin:0 0 8px}.teacherLoginIntro p{margin:0;color:var(--muted);font-size:14px;line-height:1.55}.teacherLoginForm{display:grid;grid-gap:10px;gap:10px}.teacherEmailField{display:grid;grid-template-columns:auto 1fr;grid-gap:6px 10px;gap:6px 10px;align-items:center;color:var(--muted);font-size:13px;font-weight:700}.teacherEmailField input{grid-column:1/-1;min-height:42px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--fg);font-size:14px}.teacherLoginBtn{display:flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 18px;border:none;border-radius:8px;background:var(--primary);color:white;font-weight:700;font-size:14px;cursor:pointer;text-decoration:none}.teacherLoginBtn:hover{opacity:.88}.teacherLoginBtn:disabled{opacity:.55;cursor:not-allowed}.teacherLoginSuccess{display:flex;gap:12px;padding:14px;border-radius:8px;background:var(--success-soft);color:var(--success)}.teacherLoginSuccess strong{display:block;margin-bottom:4px}.teacherLoginSuccess p{margin:0;font-size:13px}.teacherLoginLink{display:block;margin-top:8px;font-size:12px;color:var(--success);overflow-wrap:anywhere;word-break:break-all}.teacherLoginError{display:flex;gap:12px;padding:14px;border-radius:8px;background:var(--warning-soft);color:var(--warning);margin-top:4px}.teacherLoginError p{margin:0;font-size:13px}.teacherLoginError strong{display:block;margin-bottom:4px}.teacherLoginHint{margin:0;font-size:12px;color:var(--muted);text-align:center}.teacherLoginHelpLink{display:inline-flex;align-items:center;gap:6px;justify-content:center;margin:4px auto 0;padding:6px 12px;font-size:13px;color:var(--primary);text-decoration:none;border-radius:6px;width:-moz-fit-content;width:fit-content}.teacherLoginHelpLink:hover{background:var(--surface-soft);text-decoration:underline}.teacherPortalPage{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.teacherPortalHeader{background:var(--sidebar-bg);color:white;padding:0 24px}.teacherPortalHeaderInner{max-width:1100px;margin:0 auto;height:58px;display:flex;align-items:center;justify-content:space-between;gap:16px;min-width:0}.teacherPortalBrand{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;color:white;flex-shrink:0}.teacherPortalSignet{width:38px;height:38px;background:white;border-radius:8px;display:grid;place-items:center;flex-shrink:0}.teacherPortalEmail{font-size:13px;color:rgba(255,255,255,.7);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;min-width:0}.teacherPortalMain{flex:1 1;max-width:1100px;margin:0 auto;width:100%;padding:32px 24px 48px;display:grid;grid-gap:32px;gap:32px;align-content:start}.teacherPortalWelcome h1{font-size:26px;margin:0 0 5px}.teacherPortalWelcome p{margin:0;color:var(--muted);font-size:14px}.teacherKpiRow{display:flex;gap:10px;flex-wrap:wrap}.teacherKpi{flex:1 1;min-width:120px;padding:14px 18px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.teacherKpi strong{display:block;font-size:26px;font-weight:800;line-height:1;margin-bottom:4px}.teacherKpi span{font-size:12px;color:var(--muted)}.teacherEmpty{display:flex;flex-direction:column;align-items:center;gap:10px;padding:48px 24px;border:1px solid var(--line);border-radius:10px;background:var(--panel);color:var(--muted);text-align:center}.teacherEmpty strong{font-size:16px;color:var(--ink)}.teacherEmpty p{margin:0;font-size:14px}.teacherSemesterGroup{display:grid;grid-gap:14px;gap:14px}.teacherSemesterLabel{font-size:12px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.08em;margin:0;padding-bottom:10px;border-bottom:2px solid var(--line)}.teacherCardGrid{display:grid;grid-gap:12px;gap:12px;grid-template-columns:repeat(auto-fill,minmax(300px,1fr))}.teacherCard{display:grid;border:1px solid var(--line);border-radius:10px;background:var(--panel);box-shadow:var(--shadow);overflow:hidden}.teacherCardStripe{height:4px}.teacherCardStripe.open{background:var(--success)}.teacherCardStripe.closed{background:var(--muted)}.teacherCardStripe.inactive{background:var(--warning)}.teacherCardBody{display:grid;grid-gap:12px;gap:12px;padding:16px}.teacherCardHead{display:flex;justify-content:space-between;align-items:flex-start;gap:10px}.teacherCardMeta{display:flex;flex-wrap:wrap;gap:6px;min-width:0}.teacherCardId{font-size:11px;font-weight:800;color:var(--blue);letter-spacing:.04em;text-transform:uppercase}.teacherCardFaculty{font-size:11px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacherCardTitle{font-size:15px;font-weight:700;line-height:1.4;margin:0;overflow-wrap:break-word;word-break:break-word}.teacherCardTeacher{margin:0;font-size:13px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.teacherStatusBadge{display:inline-flex;align-items:center;gap:4px;padding:3px 9px;border-radius:99px;font-size:11px;font-weight:700;white-space:nowrap;flex-shrink:0}.teacherStatusBadge.open{background:var(--success-soft);color:var(--success)}.teacherStatusBadge.closed{background:var(--surface-soft);color:var(--muted)}.teacherStatusBadge.inactive{background:var(--warning-soft);color:var(--warning)}.teacherCardStats{display:flex;gap:16px;flex-wrap:wrap}.teacherStat{display:grid;grid-gap:2px;gap:2px}.teacherStat strong{font-size:16px;font-weight:800;line-height:1;overflow-wrap:break-word}.teacherStat strong.ok{color:var(--success)}.teacherStat span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.teacherProgressTrack{height:5px;border-radius:99px;background:var(--line);overflow:hidden}.teacherProgressFill{height:100%;border-radius:99px;background:var(--primary);transition:width .4s ease}.teacherProgressFill.ok{background:var(--success)}.teacherCardActions{display:flex;gap:8px;flex-wrap:wrap}.teacherActionBtn{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border:1px solid var(--line);border-radius:7px;background:var(--surface-soft);color:var(--fg);font-size:13px;font-weight:600;text-decoration:none;cursor:pointer;white-space:nowrap;transition:background .12s}.teacherActionBtn:hover{background:var(--line)}.teacherActionBtn.primary{background:var(--primary);border-color:var(--primary);color:white}.teacherActionBtn.primary:hover{opacity:.88;background:var(--primary)}.teacherActionBtn.locked{background:var(--surface-soft);border-color:var(--line);color:var(--muted)}.teacherCard{transition:box-shadow .15s,transform .15s}.teacherCard:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(0,0,0,.1)}[data-theme=dark] .teacherCard:hover{box-shadow:0 6px 24px rgba(0,0,0,.4)}.teacherPortalHint{font-size:13px;color:var(--muted);text-align:center;margin:0}.teacherPortalHint a{color:var(--primary);text-decoration:none}.teacherPortalHint a:hover{text-decoration:underline}@media (max-width:600px){.teacherPortalHeaderInner{height:50px}.teacherPortalBrand span{display:none}.teacherPortalMain{padding:20px 16px 40px;gap:24px}.teacherPortalWelcome h1{font-size:20px}.teacherCardGrid{grid-template-columns:1fr}.teacherKpiRow{gap:8px}.teacherKpi{min-width:0;padding:12px 14px}.teacherKpi strong{font-size:22px}.teacherLoginCard{padding:24px 20px}.teacherLoginPage{padding:32px 12px 40px}}.importResult{overflow:hidden;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.resultHeader{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:18px;border-bottom:1px solid var(--line)}.resultHeader p{margin:0;color:var(--muted)}.surveyPlanList{display:grid}.teacherSurveyList{display:grid;grid-gap:12px;gap:12px}.teacherSurveyItem{display:grid;grid-template-columns:minmax(260px,1fr) minmax(210px,.55fr) auto;grid-gap:18px;gap:18px;align-items:start;padding:18px;border:1px solid var(--line);border-radius:8px;background:var(--panel);box-shadow:var(--shadow)}.teacherSurveyItem p{margin-bottom:6px;color:var(--blue);font-weight:900}.teacherSurveyItem h2{margin-bottom:8px}.teacherSurveyItem span{color:var(--muted)}.historyToolbar{display:grid;grid-gap:12px;gap:12px;padding:14px 18px;border-bottom:1px solid var(--line);background:var(--surface-soft)}.historySearch{display:flex;align-items:center;gap:10px;min-height:42px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.historySearch input{min-width:0;width:100%;border:0;outline:0;background:transparent}.historyFilters{display:flex;flex-wrap:wrap;gap:8px}.historyFilters button{display:inline-flex;align-items:center;gap:7px;min-height:34px;padding:0 10px;border:1px solid var(--line);border-radius:999px;background:var(--panel);color:var(--muted);cursor:pointer;font-size:13px;font-weight:800}.historyFilters button.active{border-color:var(--primary);background:var(--bg);color:var(--primary)}.historyFilters strong{color:var(--ink)}.bulkActions{display:flex;align-items:center;flex-wrap:wrap;gap:8px}.bulkActions>span{color:var(--muted);font-size:13px;font-weight:800}.bulkDate,.selectAllLine{display:inline-flex;align-items:center;gap:8px;min-height:38px;color:var(--muted);font-size:13px;font-weight:800}.bulkDate{padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--panel)}.bulkDate input{min-height:30px;border:0;outline:0;background:transparent}.surveyPlanItem{display:grid;grid-template-columns:minmax(260px,1fr) minmax(280px,.9fr);grid-gap:18px;gap:18px;padding:18px;border-bottom:1px solid var(--line)}.surveyPlanItem:last-child{border-bottom:0}.surveyPlanItem p{margin-bottom:6px;color:var(--blue);font-weight:900}.surveyPlanItem h3{margin-bottom:8px;font-size:18px}.surveyPlanItem small,.surveyPlanItem span{color:var(--muted)}.surveyPlanItem a,.surveyPlanItem strong{display:block}.surveyPlanItem a{margin-top:6px;color:var(--green);overflow-wrap:anywhere}.copyLinkButton{display:inline-flex;align-items:center;gap:6px;margin-top:8px;min-height:30px;padding:0 9px;border:1px solid var(--line);border-radius:8px;background:var(--panel);color:var(--ink);cursor:pointer;font-size:13px;font-weight:800}.surveyPlanItem ul{grid-column:1/-1;margin:0;padding:12px 14px 12px 30px;border-radius:8px;background:var(--warning-soft);color:var(--warning);font-weight:700}.emptyHistory{margin:0;padding:22px 18px;color:var(--muted);font-weight:800}.optionalHint{font-weight:400;color:var(--muted);font-size:13px}.reminderInfo{gap:5px;margin-top:6px;color:var(--muted);font-size:12px}.previewToolbar,.reminderInfo{display:flex;align-items:center}.previewToolbar{gap:16px;padding:10px 18px;border-bottom:1px solid var(--line);background:var(--surface)}.previewSelectAll{display:flex;align-items:center;gap:8px;font-weight:700;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none}.previewSelectAll input[type=checkbox]{width:16px;height:16px;accent-color:var(--blue);cursor:pointer}.previewCount{color:var(--muted);font-size:13px}.surveyPlanItem.withCheckbox{grid-template-columns:20px minmax(260px,1fr) minmax(280px,.9fr);cursor:default;transition:opacity .15s}.surveyPlanItem.withCheckbox>input[type=checkbox]{margin-top:3px;width:16px;height:16px;accent-color:var(--blue);cursor:pointer;flex-shrink:0}.surveyPlanItem.unchecked{opacity:.38}.spinning{animation:spin .8s linear infinite;display:inline-block}@keyframes skeletonPulse{0%,to{opacity:1}50%{opacity:.4}}.skeletonCard{border:1px solid var(--line);border-radius:12px;background:var(--panel);padding:16px 18px;display:flex;flex-direction:column;gap:10px;animation:skeletonPulse 1.4s ease-in-out infinite}.skeletonLine{background:var(--line);height:13px}.skeletonLine.wide{width:60%}.skeletonLine.mid{width:40%}.skeletonLine.short{width:25%}.skeletonLine.title{height:17px;width:75%}.importProgressBar{padding:14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.importProgressInner{display:flex;flex-direction:column;gap:8px}.importProgressInner span{font-size:13px;font-weight:600;color:var(--muted)}.importProgressTrack{height:6px;border-radius:99px;background:var(--line);overflow:hidden}.importProgressFill{height:100%;border-radius:99px;background:var(--primary);transition:width .25s ease}.skeletonList{display:flex;flex-direction:column;gap:8px}.paginationBar{display:flex;align-items:center;justify-content:center;gap:12px;padding:12px 18px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}.historyList{display:flex;flex-direction:column;gap:8px}.historyCard{border:1px solid var(--line);border-radius:12px;background:var(--panel);overflow:hidden;transition:box-shadow .15s}.historyCard:hover{box-shadow:0 2px 12px rgba(0,0,0,.07)}.historyCardTop{gap:0;padding:14px 16px 12px}.historyCardCheck,.historyCardTop{display:flex;align-items:flex-start}.historyCardCheck{padding-top:4px;padding-right:12px;flex-shrink:0;cursor:pointer}.historyCardContent{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:4px}.historyCardTitle{font-size:15px;font-weight:700;color:var(--ink);margin:0;line-height:1.3}.historyCardTeachers{font-size:13px;color:var(--muted);margin:0;line-height:1.4}.historyCardMeta{display:flex;flex-wrap:wrap;align-items:center;gap:5px;margin-top:4px}.historyChip{display:inline-block;padding:2px 7px;border-radius:4px;background:var(--surface-soft);border:1px solid var(--line);color:var(--muted);font-size:11.5px;font-weight:600}.historyChipFaculty{background:color-mix(in srgb,var(--primary) 10%,transparent);border-color:color-mix(in srgb,var(--primary) 28%,transparent);color:var(--primary)}.historyChipSurvey{display:inline-flex;align-items:center;gap:4px;padding:2px 4px 2px 7px;border-radius:4px;border:1px solid var(--line);background:var(--surface-soft);color:var(--muted);font-size:11.5px;font-weight:600}.historyChipSurvey a,.historyChipSurvey button{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;border:none;border-radius:3px;background:none;color:var(--muted);cursor:pointer;padding:0;text-decoration:none;transition:background .1s,color .1s}.historyChipSurvey a:hover,.historyChipSurvey button:hover{background:var(--line);color:var(--ink)}.historyCardMetrics{display:flex;gap:8px;flex-shrink:0;margin-left:16px;align-items:flex-start}.historyMetric{display:flex;flex-direction:column;align-items:center;min-width:64px;padding:8px 10px 6px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.historyMetric>strong{font-size:18px;font-weight:800;color:var(--ink);line-height:1.1;white-space:nowrap}.historyMetric>span{font-size:10.5px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;margin-top:2px}.historyMetricOk>strong{color:var(--success)}.historyCardFooter{display:flex;flex-wrap:wrap;align-items:center;gap:5px;padding:8px 12px;border-top:1px solid var(--line);background:var(--surface-soft)}.historyDateInput{height:30px;padding:0 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font-size:12.5px}.hSep{display:inline-block;width:1px;height:20px;background:var(--line);margin:0 3px;flex-shrink:0}.hBtn{display:inline-flex;align-items:center;gap:5px;height:30px;padding:0 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font-size:12.5px;font-weight:600;cursor:pointer;text-decoration:none;white-space:nowrap;transition:background .12s,border-color .12s}.hBtn:hover{background:var(--surface-soft);border-color:var(--muted)}.hBtn:disabled{opacity:.5;cursor:not-allowed}.hBtnDanger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 35%,transparent)}.hBtnDanger:hover{background:var(--danger-soft);border-color:var(--danger)}.dangerButton{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:0 14px;border:1px solid var(--danger);border-radius:8px;background:var(--danger-soft);color:var(--danger);cursor:pointer;font-weight:800}.dangerButton:disabled,.iconButton:disabled{cursor:not-allowed;opacity:.58}@media (max-width:1100px){.shell{grid-template-columns:1fr}.sidebar{display:none}.contentGrid,.kpis,.metaGrid,.metric,.reportFacts,.reportRow,.surveyPlanItem,.teacherSurveyItem{grid-template-columns:1fr}.historyCardTop{flex-wrap:wrap}.historyCardMetrics{margin-left:28px;margin-top:8px}.reportHero,.reportTop{align-items:stretch;flex-direction:column}.miniDistribution{max-width:260px}}@media (max-width:720px){.workspace{padding:18px}.actions,.panelHeader,.reportHeader,.topbar{align-items:stretch;flex-direction:column}h1{font-size:26px}.adminPage,.reportPage,.teacherPage{padding:18px}.adminHero h1,.reportHero h1,.teacherHero h1,.teacherLoginPanel h1{font-size:28px}.adminActions,.dateField,.fileDrop,.resultHeader{align-items:stretch;flex-direction:column}}@media print{body{background:var(--panel)}.reportPage{padding:0}.backLink,.reportTop{display:none}.privacyNotice,.reportFacts,.reportHero,.reportSection{max-width:none;box-shadow:none}.reportHero{padding-top:0}.reportSection{page-break-inside:avoid;break-inside:avoid}}.bentoKpiRow{display:grid;grid-template-columns:repeat(4,1fr);grid-gap:12px;gap:12px}.bentoKpiCard{display:flex;flex-direction:column;gap:5px;padding:18px 20px;background:var(--panel);border:1px solid var(--line);border-radius:12px;box-shadow:0 2px 8px rgba(0,76,147,.06)}.bentoKpiCard.highlight{background:var(--primary);border-color:transparent}.bentoKpiLabel{font-size:11px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:var(--muted)}.bentoKpiCard.highlight .bentoKpiLabel{color:rgba(255,255,255,.7)}.bentoKpiValue{font-size:30px;font-weight:900;line-height:1;color:var(--ink)}.bentoKpiCard.highlight .bentoKpiValue{color:white}.bentoCheck{color:var(--success)}.bentoKpiHint{margin-top:auto;font-size:12px;color:var(--muted)}.bentoKpiCard.highlight .bentoKpiHint{color:rgba(255,255,255,.6)}.reportInsightRow{display:flex;gap:14px;align-items:stretch}.bentoAiCard{color:white;box-shadow:0 4px 20px rgba(0,76,147,.25);gap:12px}.bentoAiCard,.bentoAiSkeleton{flex:2 1;min-width:0;padding:24px;background:linear-gradient(135deg,#004c93,#1a6abf);border-radius:14px;display:flex;flex-direction:column}.bentoAiSkeleton{min-height:140px;gap:10px}.skeletonHeader{width:150px;height:13px;background:rgba(255,255,255,.3);margin-bottom:4px}.skeletonHeader,.skeletonLine{border-radius:4px;animation:bento-pulse 1.6s ease-in-out infinite}.skeletonLine{height:12px;width:100%;background:rgba(255,255,255,.18)}@keyframes bento-pulse{0%,to{opacity:.45}50%{opacity:1}}.bentoHighlights{min-width:200px;max-width:310px;gap:12px}.bentoHighlightGroup,.bentoHighlights{flex:1 1;display:flex;flex-direction:column}.bentoHighlightGroup{background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;box-shadow:0 2px 8px rgba(0,76,147,.06)}.bentoHighlightHeader{display:flex;align-items:center;gap:7px;padding:10px 14px;font-size:12px;font-weight:800;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid var(--line)}.bentoHighlightHeader.strengths{background:var(--success-soft);color:var(--success)}.bentoHighlightHeader.weaknesses{background:var(--warning-soft);color:var(--warning)}.bentoHighlightList{flex:1 1;display:flex;flex-direction:column}.bentoHighlightItem{flex:1 1;display:grid;grid-template-columns:46px 1fr;grid-gap:10px;gap:10px;align-items:center;padding:10px 14px;border-bottom:1px solid var(--line)}.bentoHighlightItem:last-child{border-bottom:none}.bentoHighlightScore{font-size:17px;font-weight:900;text-align:right}.bentoHighlightItem.strength .bentoHighlightScore{color:var(--success)}.bentoHighlightItem.weakness .bentoHighlightScore{color:var(--warning)}.bentoHighlightLabel{font-size:12px;line-height:1.35;color:var(--ink);overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}.reportTabsWrapper{background:var(--panel);border:1px solid var(--line);border-radius:14px;overflow:hidden;box-shadow:0 2px 12px rgba(0,76,147,.07)}.tabBar{display:flex;overflow-x:auto;scrollbar-width:none;background:var(--surface-soft);border-bottom:2px solid var(--line)}.tabBar::-webkit-scrollbar{display:none}.tab{display:flex;flex-direction:column;align-items:center;gap:4px;flex-shrink:0;min-width:82px;max-width:130px;padding:12px 14px;border:none;border-right:1px solid var(--line);border-bottom:2px solid transparent;margin-bottom:-2px;background:transparent;color:var(--muted);cursor:pointer;text-align:center;transition:background .12s,color .12s}.tab:hover{background:var(--bg);color:var(--ink)}.tab.active{background:var(--panel);color:var(--primary);border-bottom-color:var(--primary)}.tabCode{display:inline-grid;place-items:center;padding:2px 7px;border-radius:5px;background:var(--bg);color:var(--muted);font-size:11px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.tab.active .tabCode{background:var(--primary);color:white}.tabLabel{font-size:11px;font-weight:600;line-height:1.2;width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tabAvg{font-size:12px;font-weight:800}.tabSectionHeader{display:flex;align-items:center;gap:14px;padding:18px 22px;background:var(--surface-soft);border-bottom:1px solid var(--line)}@media (max-width:1100px){.bentoKpiRow{grid-template-columns:1fr 1fr}.reportInsightRow{flex-direction:column}.bentoHighlights{flex-direction:row;max-width:none}.bentoHighlightGroup{flex:1 1}}@media (max-width:720px){.bentoKpiRow{grid-template-columns:1fr 1fr}.bentoHighlights{flex-direction:column}.reportBody{padding:16px 18px 36px}.reportPageHeaderInner{padding:16px 18px 22px}}.settingsGrid{column-count:2;column-gap:16px;padding:24px}.settingsCard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;display:block;margin-bottom:16px;break-inside:avoid;page-break-inside:avoid}.settingsCard>*+*{margin-top:14px}@media (max-width:980px){.settingsGrid{column-count:1}}.settingsCardHeader{display:flex;align-items:center;justify-content:space-between;gap:12px}.settingsCardHeader h2{font-size:15px;font-weight:600;color:var(--ink);margin:0}.settingsServiceList{display:flex;flex-direction:column;gap:10px}.settingsServiceRow{display:flex;align-items:center;gap:10px;padding:8px 10px;background:var(--surface-soft);border-radius:8px}.settingsServiceIcon{color:var(--muted);flex-shrink:0;display:flex}.settingsServiceInfo{flex:1 1;min-width:0;display:flex;flex-direction:column;gap:2px}.settingsServiceLabel{font-size:13px;font-weight:500;color:var(--ink)}.settingsServiceDetail{font-size:11px;color:var(--muted)}.settingsServiceStatus{display:flex;align-items:center;gap:6px;flex-shrink:0}.settingsLatency{font-size:11px;color:var(--muted);font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.settingsStatusDot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.settingsStatusDot.ok{background:var(--success)}.settingsStatusDot.error{background:var(--danger)}.settingsStatusDot.loading{background:var(--muted)}.settingsStatusDot.unknown{background:var(--line)}.helpPage{min-height:100vh;display:flex;flex-direction:column;background:var(--bg)}.helpPageHeader{background:var(--sidebar-bg);color:white;padding:0 24px}.helpPageHeaderInner{max-width:920px;margin:0 auto;height:58px;display:flex;align-items:center;justify-content:space-between}.helpBackLink,.helpLangSwitch{display:inline-flex;align-items:center;gap:6px;padding:6px 12px;border-radius:6px;font-size:13px;font-weight:600;color:white;text-decoration:none;background:rgba(255,255,255,.12);transition:background .12s}.helpBackLink:hover,.helpLangSwitch:hover{background:rgba(255,255,255,.22)}.helpPageMain{flex:1 1;max-width:920px;margin:0 auto;width:100%;padding:32px 24px 48px}.helpPageBrand{display:flex;align-items:center;gap:12px;padding-bottom:20px;margin-bottom:28px;border-bottom:1px solid var(--line)}.helpPageBrand strong{display:block;font-size:16px}.helpPageBrand span{font-size:13px;color:var(--muted)}.helpToc{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:32px;padding:16px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.helpTocLink{font-size:13px;padding:5px 10px;border-radius:99px;background:var(--surface-soft);color:var(--primary);text-decoration:none;transition:background .12s}.helpTocLink:hover{background:var(--line)}.helpContent{display:grid;grid-gap:32px;gap:32px}.helpSection{scroll-margin-top:80px;padding:24px;border:1px solid var(--line);border-radius:10px;background:var(--panel)}.helpSectionTitle{margin:0 0 14px;font-size:22px;line-height:1.3}.helpSectionBody p{margin:0 0 12px;font-size:15px;line-height:1.65}.helpSectionBody p:last-child{margin-bottom:0}.helpSectionBody strong{font-weight:700;color:var(--ink)}.helpSectionBody a{color:var(--primary);text-decoration:underline}.helpSectionBody code{background:var(--surface-soft);border:1px solid var(--line);border-radius:4px;padding:1px 6px;font-size:13px}.helpList{margin:12px 0;padding-left:24px;line-height:1.65;font-size:15px}.helpList li{margin-bottom:6px}.systemStatGrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.systemStat{padding:10px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);text-align:center}.systemStat strong{display:block;font-size:22px;font-weight:800;line-height:1.1;margin-bottom:2px}.systemStat span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.auditLogList{max-height:360px;overflow-y:auto;display:flex;flex-direction:column;gap:4px;border:1px solid var(--line);border-radius:8px;padding:8px;background:var(--surface-soft)}.auditEntry{padding:6px 10px;border-radius:6px;background:var(--panel);border-left:3px solid var(--muted);font-size:12px}.auditEntry.event-login{border-left-color:var(--info,var(--primary))}.auditEntry.event-admin,.auditEntry.event-password,.auditEntry.event-twofa{border-left-color:var(--warning)}.auditEntry.event-data,.auditEntry.event-schedule,.auditEntry.event-survey{border-left-color:var(--danger)}.auditEntry.event-maintenance,.auditEntry.event-settings{border-left-color:var(--success)}.auditEntryMeta{display:flex;justify-content:space-between;gap:8px;margin-bottom:2px}.auditEntryMeta strong{font-family:monospace;font-size:11px;color:var(--ink)}.auditEntryActor,.auditEntryMeta span{font-size:11px;color:var(--muted)}.auditEntryTarget{color:var(--ink);font-family:monospace}.adminTable{width:100%;border-collapse:collapse;font-size:13px}.adminTable th{text-align:left;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;padding:8px 10px}.adminTable td,.adminTable th{border-bottom:1px solid var(--line)}.adminTable td{padding:10px;vertical-align:middle}.adminTable tr.adminInactive{opacity:.55}.adminTable tr:last-child td{border-bottom:none}.settingsInfoGrid{display:grid;grid-gap:8px;gap:8px;padding:12px;border-radius:8px;background:var(--surface-soft);border:1px solid var(--line)}.settingsInfoRow{display:flex;align-items:center;gap:10px;font-size:13px}.settingsInfoRow>span{display:flex;align-items:center;gap:5px;color:var(--muted);min-width:130px;flex-shrink:0}.settingsInfoRow>code{background:var(--panel);border:1px solid var(--line);border-radius:4px;padding:2px 7px;font-size:12px}.settingsHint{font-size:12px;color:var(--muted);background:var(--surface-soft);border-radius:8px;padding:10px 12px;display:flex;flex-direction:column;gap:4px}.settingsHint svg{flex-shrink:0;margin-right:4px;vertical-align:middle}.settingsHint p{margin:0;font-weight:500;color:var(--ink)}.settingsHint code{font-size:11px;background:var(--line);padding:2px 5px;border-radius:4px;word-break:break-all}.settingsField{display:flex;flex-direction:column;gap:8px}.settingsField label{font-size:13px;font-weight:600;color:var(--ink);display:flex;flex-direction:column;gap:2px}.settingsFieldHint{font-size:11px;color:var(--muted);margin:0}.settingsFieldRow{display:flex;align-items:center;gap:10px}.settingsInput{width:80px;padding:7px 10px;border:1px solid var(--line);border-radius:8px;font-size:14px;font-weight:600;color:var(--ink);background:var(--surface-soft)}.settingsInput:focus{outline:none;border-color:var(--primary);background:var(--panel)}.pwForm{display:flex;flex-direction:column;gap:8px;max-width:380px}.pwForm .settingsInput{width:100%}.ollamaModelPicker{display:flex;flex-direction:column;gap:4px;max-width:440px}.ollamaModelPicker .filterSelect{height:42px;font-size:14px}.settingsBackupInfo{display:flex;align-items:flex-start;gap:14px}.settingsBackupIcon{color:var(--muted);flex-shrink:0;margin-top:2px}.settingsBackupLabel{font-size:12px;color:var(--muted);margin:0 0 2px}.settingsBackupDate{font-size:15px;color:var(--ink)}.settingsBulkResult{background:var(--success-soft);border:1px solid var(--success);border-radius:8px;padding:10px 12px;font-size:12px;color:var(--ink);display:flex;flex-direction:column;gap:4px}.settingsBulkResult.hasErrors{background:var(--danger-soft);border-color:var(--danger)}.settingsBulkResult span{display:flex;align-items:center;gap:5px}.settingsBulkErrors{margin:4px 0 0 18px;padding:0;display:flex;flex-direction:column;gap:3px}.emailTemplateTabs{display:flex;gap:0;border-bottom:1px solid var(--line);margin-bottom:20px}.emailTemplateTab{padding:8px 16px;font-size:13px;font-weight:500;color:var(--muted);background:none;border:none;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px;transition:color .15s,border-color .15s}.emailTemplateTab:hover{color:var(--ink)}.emailTemplateTab.active{color:var(--primary);border-bottom-color:var(--primary)}.pillTabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px}.pillTab{padding:5px 11px;font-size:12px;font-weight:600;color:var(--muted);background:var(--surface-soft);border:1px solid var(--line);border-radius:99px;cursor:pointer;white-space:nowrap;transition:background .12s,color .12s,border-color .12s}.pillTab:hover{color:var(--ink);background:var(--line)}.pillTab.active{color:white;background:var(--primary);border-color:var(--primary)}.emailTemplateTextarea{width:100%;min-height:220px;padding:10px 12px;font-family:SF Mono,Fira Code,Consolas,monospace;font-size:12.5px;line-height:1.6;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);color:var(--ink);resize:vertical;box-sizing:border-box}.emailTemplateTextarea:focus{outline:none;border-color:var(--primary);box-shadow:0 0 0 3px color-mix(in srgb,var(--primary) 15%,transparent)}.emailTemplateVars{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:10px}.emailTemplateVarsLabel{font-size:12px;color:var(--muted);flex-shrink:0}.emailTemplateVar{font-size:11.5px;padding:2px 7px;border-radius:5px;background:var(--selected-soft);color:var(--primary);font-family:SF Mono,Fira Code,monospace}.notifLogStats{display:flex;gap:12px;margin-bottom:20px;flex-wrap:wrap}.notifStatCard{display:flex;align-items:center;gap:10px;padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:10px;min-width:140px}.notifStatCard div{display:flex;flex-direction:column;line-height:1.2}.notifStatCard strong{font-size:20px;font-weight:700;color:var(--ink)}.notifStatCard span{font-size:12px;color:var(--muted)}.notifFilterTabs{display:flex;border-bottom:1px solid var(--line);margin-bottom:16px}.notifLogList{display:flex;flex-direction:column;gap:8px}.notifEmpty{color:var(--muted);font-size:14px;padding:24px 0;text-align:center}.notifLogItem{display:flex;align-items:center;justify-content:space-between;gap:16px;padding:14px 16px;background:var(--panel);border:1px solid var(--line);border-radius:10px;transition:border-color .15s}.notifLogItem.notified{border-left:3px solid var(--success)}.notifLogItemMain{display:flex;flex-direction:column;gap:5px;min-width:0}.notifLogItemTitle{display:flex;align-items:baseline;gap:8px;flex-wrap:wrap}.notifLogItemName{font-weight:600;font-size:14px;color:var(--ink)}.notifLogItemMeta{font-size:12px;color:var(--muted)}.notifLogItemEmails{display:flex;align-items:center;gap:5px;font-size:12.5px;color:var(--muted)}.notifLogItemStatus{flex-shrink:0}@keyframes spin{to{transform:rotate(1turn)}}.spin{animation:spin 1s linear infinite}.notifStats{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.notifStats .notifStatCard{flex:1 1;min-width:120px}.notifToolbar{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:12px}.notifSearch{display:flex;align-items:center;gap:8px;flex:1 1;min-width:220px;padding:0 12px;background:var(--panel);border:1px solid var(--line);border-radius:8px;color:var(--muted)}.notifSearch input{flex:1 1;border:none;background:transparent;font-size:14px;color:var(--ink);outline:none;height:38px}.notifActionBar{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-bottom:0}.notifSelectAll{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--muted);cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;margin-right:4px}.notifSelectAll input[type=checkbox]{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}.notifBulkMsg{display:inline-flex;align-items:center;gap:5px;font-size:13px;font-weight:600;padding:4px 10px;border-radius:6px}.notifBulkMsg.ok{color:var(--success);background:var(--success-soft)}.notifBulkMsg.error{color:var(--danger);background:var(--danger-soft)}.notifSortHeader{display:grid;grid-template-columns:24px 1fr 100px 120px 160px 120px;grid-gap:12px;gap:12px;padding:6px 14px;border-bottom:1px solid var(--line)}.notifSortBtn,.notifSortHeader{font-size:11px;font-weight:700;text-transform:uppercase;letter-spacing:.06em;color:var(--muted)}.notifSortBtn{display:flex;align-items:center;gap:4px;background:none;border:none;padding:0;cursor:pointer;text-align:left}.notifSortBtn:hover{color:var(--ink)}.notifList{display:flex;flex-direction:column}.notifRow{display:grid;grid-template-columns:24px 1fr 100px 120px 160px 120px;grid-gap:12px;gap:12px;align-items:center;padding:12px 14px;border-bottom:1px solid var(--line);transition:background .1s}.notifRow:hover{background:var(--surface-soft)}.notifRow.selected{background:var(--selected-soft)}.notifRow.wasNotified{border-left:3px solid var(--success);padding-left:11px}.notifRowCheck{width:15px;height:15px;accent-color:var(--primary);cursor:pointer}.notifRowMain{display:flex;flex-direction:column;gap:3px;min-width:0}.notifRowTitle{display:flex;align-items:baseline;gap:6px;font-weight:700;font-size:14px;color:var(--ink);flex-wrap:wrap}.notifEligibleBadge{font-size:11px;padding:0 6px;min-height:20px;flex-shrink:0}.notifRowMeta{display:flex;gap:8px;font-size:12px;color:var(--muted)}.notifRowId{font-family:monospace;opacity:.7}.notifRowEmails{display:flex;align-items:center;gap:5px;flex-wrap:wrap;font-size:12px;color:var(--muted)}.notifRowEmails em{color:var(--danger)}.notifRowResponses{display:flex;flex-direction:column;align-items:center;line-height:1.2}.notifRowResponses strong{font-size:18px;font-weight:800;color:var(--ink)}.notifRowResponses span{font-size:11px;color:var(--muted)}.notifRowStatus{display:flex;align-items:center}.notifRowNotified{display:flex;flex-direction:column;gap:3px;font-size:12px;color:var(--muted)}.notifRowNotified>div:first-child,.notifRowNotified>span:first-child{display:flex;align-items:center;gap:4px}.notifNone{color:var(--muted);font-style:italic}.notifReminderRow{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--info)}.notifRowAction{display:flex;flex-direction:column;align-items:flex-end;gap:4px}@media (max-width:1100px){.notifRow,.notifSortHeader{grid-template-columns:24px 1fr 90px 110px 140px 100px;font-size:13px}}@media (max-width:800px){.notifSortHeader{display:none}.notifRow{grid-template-columns:24px 1fr auto;grid-template-rows:auto auto}.notifRowNotified,.notifRowResponses,.notifRowStatus{display:none}}@media (max-width:900px){.settingsGrid{grid-template-columns:1fr}}html{color-scheme:light}[data-theme=dark]{color-scheme:dark}body{transition:background-color .2s ease,color .2s ease}[data-theme=dark] input,[data-theme=dark] select,[data-theme=dark] textarea{background:var(--surface-soft);color:var(--ink);border-color:var(--line);color-scheme:dark}[data-theme=dark] .alertsPanel,[data-theme=dark] .detailPanel,[data-theme=dark] .facultySummary,[data-theme=dark] .notifyPanel,[data-theme=dark] .previewCard,[data-theme=dark] .semesterGroup,[data-theme=dark] .settingsCard{box-shadow:0 2px 12px rgba(0,0,0,.25)}[data-theme=dark] code{background:var(--line);color:var(--ink)}.themeToggle{display:flex;align-items:center;gap:8px;width:100%;margin-top:auto;padding:10px 12px;border-radius:8px;background:none;border:none;cursor:pointer;color:rgba(255,255,255,.65);font-size:13px;text-align:left;transition:background .15s}.themeToggle:hover{background:rgba(255,255,255,.1);color:white}.facultyCreateForm{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:20px 24px;margin-bottom:20px}.facultyCreateForm h3{font-size:14px;font-weight:700;margin-bottom:14px;color:var(--text)}.facultyCreateRow{display:flex;gap:10px;align-items:flex-end;flex-wrap:wrap}.facultyCreateField{display:flex;flex-direction:column;gap:4px}.facultyCreateField label{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.facultyCreateField input{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);font-size:13px;min-width:240px}.facultyMsg{margin-top:10px;font-size:13px;font-weight:600}.facultyMsg.ok{color:var(--success)}.facultyMsg.err{color:var(--danger)}.facultyList{gap:10px}.facultyCard,.facultyList{display:flex;flex-direction:column}.facultyCard{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 20px;gap:12px}.facultyCardHeader{min-height:28px}.facultyCardTitle{display:flex;align-items:center;gap:8px}.facultyName{font-size:15px;font-weight:700;color:var(--text)}.facultySlug{font-size:12px;color:var(--muted);font-family:monospace}.facultyIconBtn{background:none;border:none;cursor:pointer;color:var(--muted);padding:4px;border-radius:5px;display:flex;align-items:center;transition:color .15s,background .15s}.facultyIconBtn:hover{color:var(--text);background:var(--hover)}.facultyRenameRow{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.facultyRenameInput{border:1px solid var(--accent);border-radius:8px;color:var(--text);font-size:14px;font-weight:600;min-width:220px}.facultyRenameInput,.facultyRenameInputSlug{height:34px;padding:0 10px;background:var(--bg)}.facultyRenameInputSlug{border:1px solid var(--line);border-radius:8px;color:var(--muted);font-size:13px;font-family:monospace;min-width:130px}.facultyCardStats{display:flex;gap:20px;padding:10px 14px;background:var(--bg);border-radius:8px}.facultyStatItem{display:flex;align-items:center;gap:5px;font-size:13px;color:var(--muted)}.facultyStatItem strong{font-size:15px;font-weight:700;color:var(--text)}.facultyCardFooter{display:flex;align-items:center;gap:16px;flex-wrap:wrap}.facultyCardLogin{display:flex;align-items:center;gap:10px;flex:1 1;flex-wrap:wrap}.facultyPwActions{display:flex;align-items:center;gap:6px}.facultyPwBlock{display:flex;flex-direction:column;gap:4px}.facultyPwRow{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.facultyPwHint{font-size:11px;color:var(--warning);margin:0;padding-left:2px}.facultyPwRow input{height:34px;padding:0 10px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--text);font-size:13px;min-width:220px}.facultyCopyBtn.copied{color:var(--success);border-color:var(--success)}.facStatsRow{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}.facStatsRow .notifStatCard{flex:1 1;min-width:100px}.facToolbar{align-items:center;gap:10px;margin-bottom:16px}.facSortBtns,.facToolbar{display:flex;flex-wrap:wrap}.facSortBtns{gap:4px}.facSortBtn{display:inline-flex;align-items:center;gap:3px;padding:5px 10px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--muted);font-size:12px;font-weight:700;cursor:pointer;transition:all .15s}.facSortBtn.active{background:var(--primary);border-color:var(--primary);color:white}.facSortBtn:not(.active):hover{border-color:var(--primary);color:var(--ink)}.facCount{margin-left:auto;font-size:13px;color:var(--muted);font-weight:600}.facGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(380px,1fr));grid-gap:16px;gap:16px}.facCard{display:flex;flex-direction:column;gap:0;background:var(--panel);border:1px solid var(--line);border-radius:12px;overflow:hidden;transition:box-shadow .15s}.facCard:hover{box-shadow:var(--shadow)}.facCard.hasLogin{border-left:3px solid var(--success)}.facCardHead{padding:14px 16px 10px;border-bottom:1px solid var(--line)}.facCardTitle{justify-content:space-between}.facCardName,.facCardTitle{display:flex;align-items:center;gap:8px}.facCardName{font-weight:700;font-size:15px;color:var(--ink);min-width:0}.facCardName span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.facCardActions{display:flex;gap:2px;flex-shrink:0}.facCardSlug{font-size:12px;color:var(--muted);font-family:monospace;margin-top:3px}.facParentChip{display:inline-block;font-family:inherit;font-size:11px;color:var(--info,var(--primary));margin-left:4px}.facFilterBar{gap:12px;padding:12px 16px;background:var(--panel);border:1px solid var(--line);border-radius:10px;margin-bottom:16px;flex-wrap:wrap}.facFilterBar,.facSearch{display:flex;align-items:center}.facSearch{gap:8px;flex:1 1;min-width:200px;padding:0 12px;height:36px;border:1px solid var(--line);border-radius:8px;background:var(--bg)}.facSearch input{flex:1 1;border:none;background:none;color:var(--ink);font-size:14px;outline:none}.facFilterChips{display:flex;gap:4px}.facFilterCount{font-size:12px;color:var(--muted);margin-left:auto}.facCreateInline{padding:16px 18px;background:var(--panel);border:1px solid var(--primary);border-radius:10px;margin-bottom:16px}.facCreateInline h3{margin:0 0 12px;font-size:14px}.facCreateGrid{display:grid;grid-template-columns:1fr 200px;grid-gap:12px;gap:12px}.facCreateGrid label{display:flex;flex-direction:column;gap:4px}.facCreateGrid span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-weight:700}.facCreateGrid input{height:36px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink);font-size:14px}.facCreateActions{display:flex;gap:8px;margin-top:12px}.facGlobalMsg{display:flex;align-items:center;gap:8px;padding:10px 14px;border-radius:8px;font-size:13px;margin-bottom:12px;background:var(--success-soft);color:var(--success)}.facGlobalMsg.error{background:var(--warning-soft);color:var(--warning)}.facGroup{margin-bottom:28px}.facGroupBanner{display:flex;align-items:center;gap:18px;padding:16px 20px;margin-bottom:14px;border-radius:12px;border:1px solid var(--line);border-left:4px solid var(--primary);background:var(--panel)}.facGroupBanner.orphan{border-left-color:var(--warning)}.facGroupBannerIcon{display:grid;place-items:center;width:40px;height:40px;border-radius:8px;background:color-mix(in srgb,var(--primary) 12%,transparent);color:var(--primary);flex-shrink:0}.facGroupBanner.orphan .facGroupBannerIcon{background:color-mix(in srgb,var(--warning) 12%,transparent);color:var(--warning)}.facGroupBannerInfo{flex:1 1;min-width:0}.facGroupBannerInfo h2{margin:0;font-size:18px;font-weight:700;line-height:1.3;color:var(--ink)}.facGroupBannerInfo p{margin:2px 0 0;font-size:12px;color:var(--muted)}.facGroupBannerStats{display:flex;gap:22px;flex-shrink:0}.facGroupBannerStats>div{text-align:center}.facGroupBannerStats strong{display:block;font-size:22px;font-weight:800;line-height:1;color:var(--ink);margin-bottom:2px}.facGroupBannerStats span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;font-weight:600}@media (max-width:720px){.facGroupBanner{flex-direction:column;align-items:flex-start}.facGroupBannerStats{gap:14px;width:100%;justify-content:space-around}}.facCardV2Grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(280px,1fr));grid-gap:10px;gap:10px}.facCardV2{display:flex;flex-direction:column;gap:10px;padding:14px;border:1px solid var(--line);border-radius:10px;background:var(--panel);transition:border-color .15s,transform .1s,box-shadow .15s}.facCardV2:hover{border-color:color-mix(in srgb,var(--primary) 35%,var(--line));box-shadow:0 2px 8px rgba(0,0,0,.05)}.facCardV2.child{border-left:3px solid var(--primary)}.facCardV2Activity{display:flex;align-items:center;gap:6px;padding:5px 8px;margin:-2px 0;border-radius:6px;background:var(--surface-soft);font-size:11px;color:var(--muted)}.facActivityDot{width:6px;height:6px;border-radius:99px;background:var(--success);box-shadow:0 0 0 3px color-mix(in srgb,var(--success) 30%,transparent);animation:facPulse 2.4s ease-in-out infinite;flex-shrink:0}@keyframes facPulse{0%,to{opacity:1}50%{opacity:.4}}.facCardV2Top{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.facCardV2Title{min-width:0;flex:1 1}.facCardV2Title h3{margin:0 0 2px;font-size:14px;font-weight:700;line-height:1.3;overflow-wrap:break-word}.facCardV2Slug{font-size:11px;color:var(--muted);font-family:monospace}.facLoginPill{display:flex;align-items:center;justify-content:center;width:22px;height:22px;border-radius:99px;flex-shrink:0}.facLoginPill.ok{background:var(--success-soft);color:var(--success)}.facLoginPill.off{background:var(--warning-soft);color:var(--warning)}.facCardV2Stats{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:4px;gap:4px;padding:8px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.facCardV2Stat{text-align:center}.facCardV2Stat strong{display:block;font-size:18px;font-weight:800;line-height:1;margin-bottom:2px}.facCardV2Stat.ok strong{color:var(--success)}.facCardV2Stat span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.facCardV2Alerts{display:flex;flex-wrap:wrap;gap:4px}.facCardV2AlertChip{display:inline-flex;align-items:center;gap:3px;padding:2px 8px;border-radius:99px;font-size:11px;background:var(--surface-soft);color:var(--muted)}.facCardV2AlertChip.warn{background:var(--warning-soft);color:var(--warning)}.facCardV2Actions{display:flex;gap:4px;flex-wrap:wrap}.facBtn{display:inline-flex;align-items:center;gap:4px;padding:5px 9px;border-radius:6px;border:1px solid var(--line);background:var(--surface-soft);color:var(--ink);font-size:12px;font-weight:600;cursor:pointer;text-decoration:none;transition:background .12s,border-color .12s;white-space:nowrap}.facBtn:hover{background:var(--line)}.facBtn.primary{background:var(--primary);border-color:var(--primary);color:white}.facBtn.primary:hover{opacity:.88;background:var(--primary)}.facBtn.danger{border-color:color-mix(in srgb,var(--danger) 35%,var(--line));color:var(--danger)}.facBtn.danger:hover{background:var(--danger-soft)}.facBtn.ghost{background:none;border-color:transparent;color:var(--muted);padding:5px 7px}.facBtn.ghost:hover{background:var(--surface-soft);color:var(--ink)}.facBtn:disabled{opacity:.45;cursor:not-allowed}.facDrawerBackdrop{position:fixed;inset:0;background:rgba(0,0,0,.35);z-index:90;animation:facDrawerFade .15s ease}@keyframes facDrawerFade{0%{opacity:0}to{opacity:1}}.facDrawer{position:fixed;top:0;right:0;bottom:0;width:460px;max-width:90vw;background:var(--panel);border-left:1px solid var(--line);box-shadow:-8px 0 32px rgba(0,0,0,.2);z-index:100;display:flex;flex-direction:column;animation:facDrawerSlide .2s ease}@keyframes facDrawerSlide{0%{transform:translateX(100%)}to{transform:translateX(0)}}.facDrawerHeader{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;padding:18px;border-bottom:1px solid var(--line)}.facDrawerEyebrow{display:block;font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.06em;margin-bottom:4px}.facDrawerHeader h2{margin:0;font-size:18px;line-height:1.3}.facDrawerTabs{display:flex;flex-wrap:wrap;gap:4px;padding:12px 18px 0}.facDrawerBody{flex:1 1;overflow-y:auto;padding:18px;gap:20px}.facDrawerBody,.facDrawerSection{display:flex;flex-direction:column}.facDrawerSection{gap:8px}.facDrawerSection h3{margin:0 0 4px;font-size:13px}.facDrawerSection h3,.facDrawerSection label{font-weight:700;text-transform:uppercase;letter-spacing:.04em;color:var(--muted)}.facDrawerSection label{font-size:11px;margin-top:6px}.facDrawerSection input,.facDrawerSection select{height:38px;padding:0 10px;border:1px solid var(--line);border-radius:7px;background:var(--bg);color:var(--ink);font-size:14px}.facDrawerActions{display:flex;gap:8px;margin-top:8px;flex-wrap:wrap}.facDrawerStatGrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:8px;gap:8px}.facDrawerStatGrid>div{padding:10px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft);text-align:center}.facDrawerStatGrid strong{display:block;font-size:18px;font-weight:800;line-height:1;margin-bottom:4px}.facDrawerStatGrid small{font-size:11px;color:var(--muted);font-weight:600}.facDrawerStatGrid span{font-size:10px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.facDrawerCode{display:block;padding:8px 12px;border-radius:6px;background:var(--surface-soft);font-size:12px;color:var(--ink);overflow-wrap:anywhere}.facDrawerChildList{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:6px}.facDrawerChildList li{display:flex;flex-direction:column;gap:2px;padding:8px 12px;border-radius:8px;background:var(--surface-soft);border:1px solid var(--line)}.facDrawerChildList small{font-size:11px;color:var(--muted)}@media (max-width:640px){.facDrawer{width:100vw}.facCreateGrid{grid-template-columns:1fr}}.facStatsSection{margin-bottom:32px;padding:24px;border:1px solid var(--line);border-radius:12px;background:var(--panel);box-shadow:var(--shadow)}.facStatsSectionHeader{margin-bottom:18px}.facStatsHeading{font-size:18px;margin:0 0 4px}.facStatsHint{margin:0;font-size:13px;color:var(--muted)}.facStatsSubHeading{font-size:13px;font-weight:800;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;margin:0 0 12px}.facStatsPrivacyNotice{display:flex;align-items:flex-start;gap:12px;padding:18px;border-radius:10px;background:var(--surface-soft);border:1px dashed var(--line);color:var(--muted)}.facStatsPrivacyNotice strong{display:block;color:var(--ink);margin-bottom:4px;font-size:14px}.facStatsPrivacyNotice p{margin:0;font-size:13px}.facStatsKpiRow{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));grid-gap:10px;gap:10px;margin-bottom:22px}.facStatsKpi{padding:14px 16px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.facStatsKpi.highlight{background:linear-gradient(135deg,color-mix(in srgb,var(--success) 12%,var(--panel)),var(--panel));border-color:color-mix(in srgb,var(--success) 35%,var(--line))}.facStatsKpi strong{display:block;font-size:22px;font-weight:800;line-height:1.1;margin-bottom:3px}.facStatsKpi span{font-size:11px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.facStatsHistogram{margin-top:18px;padding-top:18px;border-top:1px solid var(--line)}.facStatsHistogramBars{display:grid;grid-template-columns:repeat(6,1fr);grid-gap:12px;gap:12px;height:130px;align-items:end;margin-bottom:8px}.facStatsHistogramBar{display:flex;flex-direction:column;align-items:center;height:100%;justify-content:flex-end;gap:4px}.facStatsHistogramBarValue{font-size:11px;font-weight:700;color:var(--muted)}.facStatsHistogramBarTrack{width:100%;flex:1 1;display:flex;align-items:flex-end;background:transparent}.facStatsHistogramBarFill{width:100%;min-height:2px;background:var(--primary);border-radius:4px 4px 0 0;transition:height .3s}.facStatsHistogramBarLabel{font-size:11px;color:var(--muted);font-weight:600}.facStatsChildren{margin-top:22px;padding-top:22px;border-top:1px solid var(--line)}.facStatsChildGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(220px,1fr));grid-gap:10px;gap:10px}.facStatsChildCard{padding:12px 14px;border:1px solid var(--line);border-radius:8px;background:var(--surface-soft)}.facStatsChildCard strong{display:block;font-size:13px;margin-bottom:6px}.facStatsChildMetrics{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;color:var(--muted)}.facStatsChildMetrics strong{display:inline;font-size:13px;margin:0 2px 0 0;color:var(--ink)}.facStatsChildLocked{display:inline-flex;align-items:center;gap:4px;font-size:11px;color:var(--muted);font-style:italic}.facParentRow{display:flex;align-items:center;gap:10px;padding:10px 0;border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin:8px 0}.facParentLabel{font-size:11px;font-weight:700;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;white-space:nowrap}.facParentSelect{flex:1 1;min-height:32px;padding:4px 8px;border:1px solid var(--line);border-radius:6px;background:var(--panel);color:var(--ink);font-size:13px;cursor:pointer;min-width:0}.facStatGrid{display:grid;grid-template-columns:repeat(3,1fr);grid-gap:1px;gap:1px;background:var(--line);border-bottom:1px solid var(--line)}.facStat{display:flex;flex-direction:column;align-items:center;padding:10px 8px;background:var(--panel);line-height:1.2;text-align:center}.facStat strong{font-size:20px;font-weight:800;color:var(--ink)}.facStat span{font-size:11px;color:var(--muted);margin-top:1px}.facStatDenom{font-size:13px;font-weight:600;color:var(--muted)}.colorSuccess{color:var(--success)!important}.colorWarning{color:var(--warning)!important}.colorMuted{color:var(--muted)!important}.facResponseBar{padding:8px 14px;border-bottom:1px solid var(--line)}.facResponseBarLabel{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-bottom:5px}.facReminderBadge{display:flex;align-items:center;gap:3px;color:var(--info)}.facResponseBarTrack{height:4px;background:var(--line);border-radius:2px;overflow:hidden}.facResponseBarFill{height:100%;background:var(--primary);border-radius:2px;transition:width .4s ease}.facCardFooterSection{padding:12px 14px;display:flex;flex-direction:column;gap:10px}.facLoginRow{display:flex;flex-direction:column;gap:8px}.facActionRow,.facPwActions{display:flex;gap:6px;flex-wrap:wrap}.facActionRow{padding-top:8px}.facActionRow,.facMsg{border-top:1px solid var(--line)}.facMsg{display:flex;align-items:center;gap:6px;padding:8px 14px;font-size:13px;font-weight:600}.facMsg.ok{color:var(--success);background:var(--success-soft)}.facMsg.err{background:var(--danger-soft)}.facMsg.err,.facultyIconBtn.danger{color:var(--danger)}.facultyIconBtn.danger:hover{background:var(--danger-soft)}@media (max-width:720px){.facGrid{grid-template-columns:1fr}}.loginPage{min-height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:24px;padding:40px 16px;background:linear-gradient(160deg,var(--bg) 60%,color-mix(in srgb,var(--sidebar-bg) 8%,var(--bg)))}.loginPage>footer{flex:none;margin-top:auto;width:100%}.loginIntro{margin:0;font-size:13px;color:var(--muted);line-height:1.55}.loginSuccess{display:flex;gap:10px;padding:12px 14px;border-radius:8px;background:var(--success-soft);color:var(--success);margin-top:4px}.loginSuccess strong{display:block;margin-bottom:3px;font-size:13px}.loginSuccess p{margin:0;font-size:12px}.loginSuccessLink{display:block;margin-top:6px;font-size:11px;color:var(--success);overflow-wrap:anywhere;word-break:break-all}.loginFooterRow{display:flex;justify-content:space-between;align-items:center;gap:12px;margin-top:-8px;flex-wrap:wrap}.loginFootnote{font-size:11px;color:var(--muted)}.loginHelpLink{display:inline-flex;align-items:center;gap:5px;font-size:12px;color:var(--primary);text-decoration:none;font-weight:600}.loginHelpLink:hover{text-decoration:underline}.loginCard{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--line);border-radius:16px;padding:36px 32px 32px;display:flex;flex-direction:column;gap:28px}.loginBrand{display:flex;align-items:center;gap:14px;color:var(--primary)}.loginBrand p{font-size:12px;color:var(--muted);margin-bottom:2px}.loginBrand strong{font-size:16px;color:var(--ink)}.loginForm{gap:14px}.loginField,.loginForm{display:flex;flex-direction:column}.loginField{gap:5px}.loginField label{font-size:12px;font-weight:600;color:var(--muted)}.loginField input{height:40px;padding:0 12px;border:1px solid var(--line);border-radius:8px;background:var(--bg);color:var(--ink);font-size:14px;transition:border-color .15s}.loginField input:focus{outline:none;border-color:var(--primary)}.loginError{color:var(--danger)}.loginError,.loginExpiredHint{font-size:13px;font-weight:600;margin:0}.loginExpiredHint{padding:10px 14px;border-radius:8px;background:var(--warning-soft);color:var(--warning)}.loginSubmit{height:42px;background:var(--primary);color:white;border:none;border-radius:8px;font-size:14px;font-weight:700;cursor:pointer;margin-top:4px;transition:opacity .15s}.loginSubmit:disabled{opacity:.5;cursor:not-allowed}.loginSubmit:not(:disabled):hover{opacity:.88}.loginTotpHint{display:flex;align-items:flex-start;gap:10px;background:var(--surface-2);border-radius:8px;padding:12px 14px;color:var(--ink)}.loginTotpHint p{margin:0;font-size:13px;line-height:1.5}.loginBack{background:none;border:none;color:var(--muted);font-size:13px;cursor:pointer;padding:0;text-align:left}.loginBack:hover{color:var(--ink)}.twofa{display:flex;flex-direction:column;gap:16px}.twofaStatus{display:flex;align-items:center}.twofaStatusBadge{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;padding:5px 10px;border-radius:20px}.twofaStatusBadge.active{background:color-mix(in srgb,var(--success) 12%,transparent);color:var(--success)}.twofaStatusBadge.inactive{background:var(--surface-2);color:var(--muted)}.twofaSection{gap:10px}.twofaSection,.twofaSetup{display:flex;flex-direction:column}.twofaSetup{gap:14px}.twofaQr{display:flex;justify-content:flex-start}.twofaQr img{border-radius:8px;border:1px solid var(--border);padding:8px;background:white}.twofaSecretHint{font-size:12px;color:var(--muted);margin:0}.twofaSecret{font-family:monospace;font-size:13px;letter-spacing:.05em;color:var(--ink);background:var(--surface-2);padding:2px 6px;border-radius:4px}.twofaMsg{font-size:13px;font-weight:600;margin:0}.twofaMsg.ok{color:var(--success)}.iconButton.danger,.twofaMsg.error{color:var(--danger)}.iconButton.danger{border-color:var(--danger)}.iconButton.danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 8%,transparent)}.siteFooter{margin-top:auto}.footerMain{background:#004c93;color:rgba(255,255,255,.9);padding:40px 0}.footerMainInner{max-width:1100px;margin:0 auto;padding:0 32px;display:grid;grid-template-columns:1.4fr 1fr 1fr;grid-gap:40px;gap:40px}.footerBrand{padding-right:20px;display:flex;align-items:center}.footerZhqeLogo{max-width:280px;height:auto}.footerBrandName{margin:0 0 6px;font-size:22px;font-weight:800;color:white;letter-spacing:-.02em}.footerBrandSub{margin:0;font-size:13px;color:rgba(255,255,255,.65);line-height:1.6}.footerCol h3{margin:0 0 10px;font-size:13px;font-weight:800;text-transform:uppercase;letter-spacing:.07em;color:rgba(255,255,255,.5)}.footerCol p{margin:0;font-size:14px;line-height:1.7;color:rgba(255,255,255,.85)}.footerCol strong{color:white}.footerImprint{background:#00336b;padding:14px 0}.footerImprintInner{max-width:1100px;margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:24px}.footerUdeLogo{flex-shrink:0;background:white;border-radius:6px;padding:4px;line-height:0}.footerLinks,.footerUdeLogo{display:flex;align-items:center}.footerLinks{gap:20px;flex:1 1}.footerLinks a{font-size:13px;color:rgba(255,255,255,.65);text-decoration:none;font-weight:600;transition:color .15s}.footerLinks a:hover{color:white}.footerCopyright{margin:0;font-size:13px;color:rgba(255,255,255,.4);white-space:nowrap}@media (max-width:720px){.footerMainInner{grid-template-columns:1fr;gap:28px}.footerImprintInner,.footerLinks{flex-wrap:wrap;gap:12px}}