:root {
  --ink: #18171d; --muted: #66616f; --subtle: #8b8793; --border: #dedbe3;
  --border-light: #ebe8ef; --sidebar: #f6f4f8; --panel: #fff; --page: #fbfafc;
  --purple: #6b4fbb; --purple-dark: #5639a7; --purple-soft: #eee8ff;
  --green: #16854b; --green-soft: #e7f6ed; --orange: #d96c10; --blue: #276ac7;
  --red: #c93434; --shadow: 0 1px 2px rgba(24,23,29,.06), 0 5px 18px rgba(24,23,29,.03);
  --topbar-h: 58px; --sidebar-w: 242px; --radius: 8px;
}

/* DeepSeek personal project workbench */
.ds-workbench-page { max-width:1680px; height:calc(100vh - var(--topbar-h)); display:flex; flex-direction:column; padding:24px 26px 22px; }
.ds-workbench-header { flex:0 0 auto; margin-bottom:15px; align-items:center; }.ds-workbench-header h1 { font-size:24px; }.ds-workbench-statuses { display:flex; align-items:center; gap:8px; }.ds-readonly-badge { padding:7px 10px; color:#5c477d; background:#f2edff; border:1px solid #d9cdf7; border-radius:99px; font-size:10px; font-weight:750; }
.ds-workbench-shell { min-height:580px; flex:1; display:grid; grid-template-columns:230px minmax(420px,1fr) 310px; overflow:hidden; border-radius:11px; box-shadow:0 12px 36px rgba(31,22,48,.08); }
.ds-session-pane,.ds-files-pane { min-width:0; display:flex; flex-direction:column; background:#f9f8fb; }.ds-session-pane { border-right:1px solid var(--border); }.ds-files-pane { position:relative; border-left:1px solid var(--border); background:#fbfafc; }
.ds-pane-heading { min-height:57px; padding:11px 13px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border); background:#fff; }.ds-pane-heading > div { min-width:0; display:flex; align-items:center; gap:9px; }.ds-pane-heading strong { font-size:12px; }.ds-logo { width:29px; height:29px; display:grid; place-items:center; color:#fff; background:linear-gradient(145deg,#5f3eb1,#8a69dc); border-radius:8px; font-size:9px; font-weight:850; }
.ds-icon-button { width:30px; height:30px; display:grid; place-items:center; color:#58467d; background:#f4f0fb; border:1px solid #e2d9f2; border-radius:6px; font-size:17px; }.ds-icon-button:hover { background:#eae2f9; }.ds-icon-button:disabled { cursor:not-allowed; opacity:.45; }
.ds-session-list { min-height:0; flex:1; padding:9px; overflow-y:auto; }.ds-session-item { position:relative; min-height:55px; margin-bottom:5px; padding:9px 28px 9px 9px; display:flex; align-items:flex-start; gap:8px; color:#5e5866; border:1px solid transparent; border-radius:7px; }.ds-session-item:hover { background:#f0edf4; }.ds-session-item.active { color:#39225e; background:#ece6f6; border-color:#ded1ef; }.ds-session-item > span:first-child { margin-top:2px; color:#7753c2; }.ds-session-item > span:nth-child(2) { min-width:0; display:flex; flex:1; flex-direction:column; }.ds-session-item strong { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:11px; }.ds-session-item small { margin-top:2px; color:var(--subtle); font-size:9px; }.ds-session-item button { position:absolute; right:5px; top:7px; width:24px; height:24px; padding:0; opacity:0; color:#8d8495; background:transparent; border:0; border-radius:4px; }.ds-session-item:hover button,.ds-session-item.active button { opacity:1; }.ds-session-item button:hover { color:#a32e2e; background:#fff; }.ds-session-empty { padding:35px 12px; color:var(--muted); text-align:center; font-size:11px; }.ds-session-empty small { color:var(--subtle); }
.ds-session-footer { padding:13px 16px; display:flex; flex-direction:column; border-top:1px solid var(--border); background:#fff; }.ds-session-footer span,.ds-session-footer small { color:var(--subtle); font-size:9px; }.ds-session-footer strong { font-size:11px; }
.ds-chat-pane { min-width:0; display:grid; grid-template-rows:57px minmax(0,1fr) auto; background:#fff; }.ds-chat-topbar { padding:10px 17px; display:flex; align-items:center; justify-content:space-between; gap:12px; border-bottom:1px solid var(--border); }.ds-chat-topbar > div { min-width:0; display:flex; flex-direction:column; }.ds-chat-topbar strong { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:12px; }.ds-chat-topbar small { color:var(--subtle); font-size:9px; }.ds-chat-topbar > span { padding:4px 7px; color:#5e477e; background:#f1ecfa; border-radius:4px; font-size:9px; font-weight:750; }
.ds-chat-thread { min-height:0; padding:24px clamp(18px,3vw,46px); display:flex; flex-direction:column; gap:19px; overflow-y:auto; background:linear-gradient(180deg,#fcfbfe,#fff 130px); scroll-behavior:smooth; }.ds-chat-welcome { max-width:660px; margin:auto; text-align:center; }.ds-chat-welcome > span { width:52px; height:52px; margin:0 auto 13px; display:grid; place-items:center; color:#fff; background:linear-gradient(145deg,#6343b2,#8e70d5); border-radius:15px; box-shadow:0 10px 25px rgba(107,79,187,.2); font-size:22px; }.ds-chat-welcome h2 { margin-bottom:5px; font-size:20px; }.ds-chat-welcome > p { color:var(--muted); font-size:12px; }.ds-suggestion-grid { margin-top:20px; display:grid; grid-template-columns:repeat(3,1fr); gap:8px; }.ds-suggestion-grid button { min-height:72px; padding:10px; text-align:left; color:#3d3744; background:#fff; border:1px solid var(--border); border-radius:7px; font-weight:700; font-size:10px; }.ds-suggestion-grid button:hover { color:var(--purple); border-color:#bca8e1; background:#faf8ff; }.ds-suggestion-grid small { margin-top:3px; display:block; color:var(--subtle); font-size:8px; font-weight:500; }
.ds-message { max-width:85%; display:flex; align-items:flex-start; gap:10px; }.ds-message.user { align-self:flex-end; }.ds-message.user > div { color:#fff; background:#6649b1; border-radius:11px 11px 3px 11px; }.ds-message.assistant { align-self:flex-start; }.ds-message.assistant > div { background:#f6f3fa; border:1px solid #e5dfeb; border-radius:3px 11px 11px 11px; }.ds-message > div { min-width:0; padding:11px 13px; }.ds-message > div > strong { display:block; margin-bottom:4px; font-size:10px; }.ds-message > div > small { display:block; margin-top:6px; color:var(--subtle); font-size:8px; }.ds-message.user > div > small { color:#d9cdf4; }.ds-message-content { overflow-wrap:anywhere; font-size:11px; line-height:1.65; }.ds-message-content > :last-child { margin-bottom:0; }.ds-message-content pre { max-width:100%; padding:10px; overflow-x:auto; color:#eee; background:#292532; border-radius:6px; font-size:10px; }.ds-message-content code { font-family:Consolas,monospace; }.ds-message-avatar { flex:0 0 auto; width:30px; height:30px; display:grid; place-items:center; color:#fff; background:#7353bd; border-radius:8px; font-size:9px; font-weight:850; }
.ds-tool-events { margin-top:8px; display:flex; flex-wrap:wrap; gap:5px; }.ds-tool-events span { padding:3px 6px; color:#316449; background:#e7f5ed; border:1px solid #c8e6d4; border-radius:4px; font-size:8px; }.ds-tool-events span.error { color:#984343; background:#fff0f0; border-color:#f1cccc; }
.ds-composer { padding:12px 17px 14px; border-top:1px solid var(--border); background:#fff; }.ds-composer textarea { width:100%; min-height:66px; max-height:150px; padding:10px 12px; resize:vertical; border:1px solid #cbc5d2; border-radius:8px; outline:0; line-height:1.5; font-size:11px; }.ds-composer textarea:focus { border-color:var(--purple); box-shadow:0 0 0 3px rgba(107,79,187,.1); }.ds-composer textarea:disabled { background:#f4f2f5; }.ds-composer > div { padding-top:7px; display:flex; align-items:center; justify-content:space-between; }.ds-composer small { color:var(--subtle); font-size:8px; }.ds-composer .btn { min-height:32px; padding:5px 14px; font-size:10px; }
.ds-workspace-root { padding:13px 15px; display:flex; flex-direction:column; border-bottom:1px solid var(--border-light); }.ds-workspace-root span,.ds-workspace-root small { color:var(--subtle); font-size:9px; }.ds-workspace-root strong { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-family:Consolas,monospace; font-size:10px; }.ds-file-nav { min-height:39px; padding:6px 11px; display:flex; align-items:center; gap:8px; border-bottom:1px solid var(--border-light); }.ds-file-nav button { width:26px; height:25px; padding:0; color:#5f4b7d; background:#f1edf6; border:0; border-radius:4px; }.ds-file-nav button:disabled { opacity:.4; }.ds-file-nav span { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; color:var(--muted); font-family:Consolas,monospace; font-size:9px; }
.ds-file-list { min-height:0; flex:1; padding:7px; overflow-y:auto; }.ds-file-item { width:100%; min-height:43px; padding:7px 8px; display:flex; align-items:center; gap:8px; text-align:left; background:transparent; border:1px solid transparent; border-radius:6px; }.ds-file-item:hover { background:#f0ecf5; border-color:#e1d8eb; }.ds-file-item > span:first-child { width:17px; color:#7655ba; font-size:15px; text-align:center; }.ds-file-item > span:last-child { min-width:0; display:flex; flex:1; flex-direction:column; }.ds-file-item strong { overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:10px; }.ds-file-item small { color:var(--subtle); font-size:8px; }.ds-files-empty { padding:30px 10px; color:var(--subtle); text-align:center; font-size:10px; }
.ds-file-preview { position:absolute; z-index:3; inset:57px 0 0; display:grid; grid-template-rows:45px minmax(0,1fr); background:#fff; }.ds-file-preview[hidden] { display:none; }.ds-file-preview > div { padding:8px 11px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border); }.ds-file-preview strong { max-width:240px; overflow:hidden; white-space:nowrap; text-overflow:ellipsis; font-size:10px; }.ds-file-preview button { width:27px; height:27px; padding:0; background:#f1edf5; border:0; border-radius:4px; }.ds-file-preview pre { min-height:0; margin:0; padding:12px; overflow:auto; color:#e7e3ec; background:#28252d; font:9px/1.6 Consolas,monospace; white-space:pre; }.ds-workspace-unavailable { margin:auto; padding:30px; text-align:center; }.ds-workspace-unavailable > span { width:40px; height:40px; margin:0 auto 10px; display:grid; place-items:center; color:#a56611; background:#fff1d8; border-radius:50%; font-weight:800; }.ds-workspace-unavailable strong { display:block; font-size:12px; }.ds-workspace-unavailable p { margin-top:5px; color:var(--muted); font-size:10px; }
@media (max-width:1180px) { .ds-workbench-shell { grid-template-columns:190px minmax(400px,1fr) 250px; }.ds-workbench-page { padding:20px; } }
@media (max-width:900px) { .ds-workbench-page { height:auto; min-height:calc(100vh - var(--topbar-h)); }.ds-workbench-shell { display:flex; flex-direction:column; overflow:visible; }.ds-session-pane { max-height:240px; border-right:0; border-bottom:1px solid var(--border); }.ds-chat-pane { min-height:650px; }.ds-files-pane { min-height:420px; border-left:0; border-top:1px solid var(--border); }.ds-file-preview { inset:57px 0 0; }.ds-workbench-statuses { align-items:flex-end; flex-direction:column; } }
@media (max-width:620px) { .ds-workbench-page { padding:16px 10px; }.ds-workbench-header { align-items:flex-start; flex-direction:column; }.ds-workbench-statuses { align-items:flex-start; flex-direction:row; }.ds-suggestion-grid { grid-template-columns:1fr; }.ds-message { max-width:94%; } }
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; font-family: Inter, "Segoe UI", "Microsoft YaHei", system-ui, sans-serif; color: var(--ink); background: var(--page); font-size: 14px; line-height: 1.5; }
a { color: inherit; text-decoration: none; }
button, input, textarea, select { font: inherit; }
button, summary, select { cursor: pointer; }
input, textarea, select { color: var(--ink); }
.topbar { position: fixed; z-index: 30; left: 0; top: 0; right: 0; height: var(--topbar-h); display: flex; align-items: center; gap: 24px; padding: 0 18px; background: #292532; color: #fff; box-shadow: 0 1px 0 rgba(0,0,0,.24); }
.brand { display: flex; align-items: center; gap: 10px; width: 200px; font-weight: 750; font-size: 17px; letter-spacing: -.2px; }
.brand-mark { width: 30px; height: 30px; display: grid; place-items: center; background: linear-gradient(145deg, #a285ff, #7655d6); border-radius: 7px; font-size: 18px; box-shadow: inset 0 0 0 1px rgba(255,255,255,.2); }
.global-search { width: min(500px, 42vw); height: 36px; border: 1px solid #5a5562; background: #393540; border-radius: 6px; display: flex; align-items: center; padding: 0 10px; color: #c9c5ce; }
.global-search input { flex: 1; border: 0; outline: 0; background: transparent; color: #fff; padding: 0 8px; }
.global-search input::placeholder { color: #bab5c0; }
.global-search kbd { padding: 0 6px; border: 1px solid #67616e; border-radius: 4px; font: 11px inherit; color: #c7c2cb; }
.top-actions { margin-left: auto; display: flex; align-items: center; gap: 6px; }
.course-switcher select { max-width: 150px; border: 1px solid var(--border); border-radius: 7px; background: var(--surface); color: var(--text); padding: 7px 9px; font: inherit; }
.icon-button { height: 34px; min-width: 34px; display: grid; place-items: center; border-radius: 5px; font-size: 21px; color: #f5f3f7; }
.icon-button:hover { background: #45404b; }
.notification { position: relative; font-size: 20px; transform: rotate(45deg); }
.notification span { position: absolute; right: 5px; top: 5px; width: 6px; height: 6px; border-radius: 50%; background: #ff7c52; box-shadow: 0 0 0 2px #292532; }
.user-menu { position: relative; margin-left: 6px; }
.user-menu summary { list-style: none; display: flex; align-items: center; gap: 8px; padding: 4px 6px; border-radius: 5px; }
.user-menu summary::-webkit-details-marker { display: none; }
.user-menu summary:hover, .user-menu[open] summary { background: #45404b; }
.user-copy { display: flex; flex-direction: column; line-height: 1.2; min-width: 70px; }
.user-copy strong { font-size: 13px; }.user-copy small { color: #bbb6c1; font-size: 10px; }
.user-popover { position: absolute; right: 0; top: 45px; width: 246px; padding: 8px; color: var(--ink); background: #fff; border: 1px solid var(--border); border-radius: 8px; box-shadow: 0 12px 32px rgba(20,15,30,.18); }
.popover-label { color: var(--muted); font-size: 11px; font-weight: 700; letter-spacing: .05em; margin: 5px 8px 7px; }
.identity-option { width: 100%; display: flex; align-items: center; gap: 9px; background: none; border: 0; border-radius: 5px; padding: 7px; text-align: left; }
.identity-option:hover, .identity-option.active { background: var(--sidebar); }
.identity-option > span:nth-child(2) { display: flex; flex: 1; flex-direction: column; }.identity-option small { color: var(--muted); }.check { color: var(--green); font-weight: bold; }
.mobile-menu { display: none; background: none; border: 0; color: #fff; font-size: 21px; }
.sidebar { position: fixed; z-index: 20; top: var(--topbar-h); bottom: 0; left: 0; width: var(--sidebar-w); padding: 24px 14px; display: flex; flex-direction: column; background: var(--sidebar); border-right: 1px solid var(--border); }
.workspace-label { padding: 0 10px 9px; color: #8c8793; font-size: 10px; font-weight: 800; letter-spacing: .09em; }
.sidebar nav { min-height:0; flex:1; display:grid; align-content:start; gap:3px; overflow-y:auto; }.sidebar nav a { height: 42px; display: flex; align-items: center; gap: 12px; padding: 0 12px; border-radius: 6px; color: #48434e; font-weight: 560; }
.sidebar nav a:hover { background: #ece9f0; }.sidebar nav a.active { background: #e6e0ef; color: #3b255f; font-weight: 720; }.sidebar nav a.active::before { content: ""; position: absolute; left: 0; width: 3px; height: 25px; background: var(--purple); border-radius: 0 2px 2px 0; }
.sidebar nav a span { width: 20px; text-align: center; font-size: 17px; }.sidebar nav a em { margin-left: auto; min-width: 21px; height: 20px; display: grid; place-items: center; background: #ddd7e5; border-radius: 10px; font-size: 11px; font-style: normal; }
.sidebar-bottom { margin-top: auto; border-top: 1px solid var(--border); padding: 18px 9px 0; display: flex; align-items: center; gap: 10px; }.sidebar-bottom > div:last-child { display: flex; flex-direction: column; }.sidebar-bottom strong { font-size: 12px; }.sidebar-bottom small { font-size: 10px; color: var(--muted); }
.course-badge { min-width: 34px; width: auto; padding: 0 7px; height: 34px; display: grid; place-items: center; border-radius: 7px; color: #fff; background: linear-gradient(145deg, #5835a6, #8f6cda); font-size: 10px; font-weight: 800; white-space: nowrap; }
.main-content { min-height: 100vh; margin-left: var(--sidebar-w); padding-top: var(--topbar-h); }
.page { max-width: 1300px; margin: 0 auto; padding: 38px 38px 60px; }.narrow-page { max-width: 1050px; }.wide-page { max-width: 1500px; }
.eyebrow { margin: 0 0 4px!important; color: var(--purple)!important; font-size: 10px!important; font-weight: 800; letter-spacing: .1em; }
h1, h2, h3, p { margin-top: 0; }.page-header, .welcome-row { display: flex; justify-content: space-between; align-items: flex-start; gap: 24px; margin-bottom: 27px; }
.page-header h1, .welcome-row h1 { margin: 0 0 4px; font-size: 27px; line-height: 1.25; letter-spacing: -.45px; }.page-header p, .welcome-row p { margin-bottom: 0; color: var(--muted); }.welcome-row h1 { font-size: 29px; }.welcome-row h1 span { font-size: 24px; }
.panel { background: var(--panel); border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }
.btn { min-height: 36px; display: inline-flex; align-items: center; justify-content: center; gap: 6px; padding: 7px 14px; border: 1px solid transparent; border-radius: 5px; font-weight: 650; white-space: nowrap; }
.btn-primary { color: #fff; background: var(--purple); border-color: var(--purple); }.btn-primary:hover { background: var(--purple-dark); }.btn-secondary { background: #fff; border-color: #c9c5cd; color: #38343d; }.btn-secondary:hover { background: #f5f3f6; }.btn-sm { min-height: 32px; padding: 5px 11px; font-size: 12px; }.btn-block { width: 100%; min-height: 42px; }
.btn-danger { color: #a32e2e; background: #fff; border-color: #e2aaaa; }.btn-danger:hover { color: #fff; background: var(--red); border-color: var(--red); }
.avatar { flex: 0 0 auto; width: 36px; height: 36px; display: inline-grid; place-items: center; border-radius: 50%; color: #fff; font-size: 13px; font-weight: 800; box-shadow: inset 0 0 0 1px rgba(0,0,0,.07); }.avatar-sm { width: 28px; height: 28px; font-size: 10px; }.avatar-lg { width: 48px; height: 48px; font-size: 17px; }.avatar-teacher { background: #7255b9; }.avatar-student { background: #327dbd; }.avatar-assistant { background: #2f8f83; }
.role-tag.assistant { color: #14655c; background: #e0f4f1; }
.stats-grid { display: grid; grid-template-columns: repeat(5, 1fr); gap: 16px; margin-bottom: 24px; }.stat-card { min-height: 115px; display: flex; align-items: center; gap: 15px; padding: 18px; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); position: relative; overflow: hidden; }.stat-card::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 3px; background: currentColor; }.stat-card > div:last-child { display: grid; grid-template-columns: auto 1fr; align-items: baseline; flex: 1; }.stat-card span { color: var(--muted); font-size: 12px; }.stat-card strong { grid-row: span 2; justify-self: end; font-size: 29px; color: var(--ink); }.stat-card small { color: var(--subtle); font-size: 10px; }.stat-icon { width: 39px; height: 39px; display: grid; place-items: center; border-radius: 8px; background: color-mix(in srgb, currentColor 10%, white); font-size: 18px; font-weight: 750; }.accent-orange { color: var(--orange); }.accent-purple { color: var(--purple); }.accent-blue { color: var(--blue); }.accent-green { color: var(--green); }.accent-red { color: #d94c4c; }
.dashboard-grid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(250px, .8fr); gap: 20px; margin-bottom: 20px; }.panel-heading { min-height: 54px; padding: 13px 17px; border-bottom: 1px solid var(--border-light); display: flex; justify-content: space-between; align-items: center; }.panel-heading > div { display: flex; align-items: center; gap: 9px; }.panel-heading h2 { margin: 0; font-size: 14px; }.panel-heading a { color: var(--purple); font-size: 11px; font-weight: 650; }.pulse-dot { width: 8px; height: 8px; background: #f27445; border-radius: 50%; box-shadow: 0 0 0 4px #ffede7; }
.attention-item { display: flex; align-items: center; gap: 12px; padding: 13px 17px; border-bottom: 1px solid var(--border-light); }.attention-item:last-child { border: 0; }.attention-item:hover { background: #faf9fb; }.attention-copy { flex: 1; display: grid; min-width: 0; }.attention-copy strong { font-size: 12px; }.attention-copy > span { color: var(--muted); overflow: hidden; white-space: nowrap; text-overflow: ellipsis; }.attention-copy small { margin-top: 2px; color: var(--subtle); font-size: 10px; }.chevron { color: #aaa4af; font-size: 21px; }.quick-links { padding: 5px 15px 10px; }.quick-links a { display: flex; align-items: center; gap: 11px; padding: 10px 2px; border-bottom: 1px solid var(--border-light); }.quick-links a:last-child { border: 0; }.quick-links a > span:last-child { display: flex; flex-direction: column; }.quick-links strong { font-size: 12px; }.quick-links small { color: var(--muted); font-size: 10px; }.quick-icon { width: 32px; height: 32px; display: grid; place-items: center; border-radius: 7px; font-size: 15px; font-weight: bold; }.quick-icon.purple { color: var(--purple); background: var(--purple-soft); }.quick-icon.blue { color: var(--blue); background: #e5f0ff; }.quick-icon.green { color: var(--green); background: var(--green-soft); }
.updates-panel { margin-top: 0; }.muted { color: var(--muted); }.timeline { padding: 6px 18px 10px; }.timeline-item { position: relative; display: flex; gap: 12px; padding: 10px 0; }.timeline-item > span:last-child { flex: 1; color: var(--muted); font-size: 12px; }.timeline-item strong, .timeline-item b { color: var(--ink); }.timeline-item p { margin: 2px 0 0; color: #504b55; }.timeline-item small { color: var(--subtle); font-size: 10px; }.timeline-line { position: absolute; left: 13px; top: 37px; bottom: -10px; width: 1px; background: var(--border); }.timeline-item:last-child .timeline-line { display: none; }
.list-panel { overflow: hidden; }.list-toolbar { display: flex; gap: 12px; padding: 16px; }.search-field { height: 38px; flex: 1; display: flex; align-items: center; gap: 6px; border: 1px solid #c9c5ce; border-radius: 5px; padding-left: 10px; background: #fff; }.search-field:focus-within { border-color: var(--purple); box-shadow: 0 0 0 2px #e7ddff; }.search-field input { flex: 1; border: 0; outline: 0; min-width: 0; }.search-field button { align-self: stretch; border: 0; border-left: 1px solid var(--border); background: #f6f4f7; padding: 0 14px; font-weight: 650; }.list-toolbar select, .activity-heading select { min-width: 120px; border: 1px solid #c9c5ce; border-radius: 5px; padding: 0 10px; background: #fff; }.list-tabs { display: flex; gap: 24px; height: 42px; padding: 0 18px; border-top: 1px solid var(--border-light); border-bottom: 1px solid var(--border); }.list-tabs span { display: flex; align-items: center; gap: 6px; border-bottom: 2px solid transparent; color: var(--muted); }.list-tabs span.active { color: var(--ink); font-weight: 650; border-color: var(--purple); }.list-tabs b { min-width: 20px; height: 18px; display: grid; place-items: center; background: #eeeaf1; border-radius: 9px; font-size: 10px; }.assignment-row { display: flex; gap: 13px; padding: 17px 19px; border-bottom: 1px solid var(--border-light); }.assignment-row:last-child { border-bottom: 0; }.assignment-row:hover { background: #fcfbfd; }.status-icon { width: 23px; font-size: 23px; line-height: 1; color: var(--green); }.status-icon.closed { color: var(--blue); }.assignment-main { flex: 1; min-width: 0; }.assignment-title-line { display: flex; align-items: center; gap: 7px; flex-wrap: wrap; }.assignment-title-line > a { font-size: 14px; font-weight: 720; }.assignment-title-line > a:hover { color: var(--purple); text-decoration: underline; }.label { display: inline-flex; align-items: center; padding: 2px 8px; color: #5634a0; background: #eee7ff; border: 1px solid #d5c6f7; border-radius: 10px; font-size: 10px; font-weight: 650; }.assignment-main > p { margin: 3px 0 6px; color: var(--muted); font-size: 11px; }.assignment-meta { display: flex; gap: 16px; color: var(--subtle); font-size: 10px; }.comment-count { align-self: center; color: var(--muted); font-size: 12px; }.empty-state { padding: 25px; display: flex; justify-content: center; color: var(--muted); }.empty-state.large { min-height: 180px; flex-direction: column; align-items: center; gap: 5px; }.empty-state.large strong { color: var(--ink); font-size: 16px; }
.breadcrumbs { display: flex; align-items: center; gap: 8px; margin-bottom: 22px; color: var(--muted); font-size: 12px; }.breadcrumbs a { color: var(--purple); }.form-panel { padding: 26px; }.form-group { display: flex; flex-direction: column; gap: 7px; margin-bottom: 21px; }.form-group label, .form-group legend { color: #38343e; font-size: 12px; font-weight: 680; }.form-group label em { color: var(--red); font-style: normal; }.form-group > input, .form-group > textarea, .form-group > select, .form-grid-modal input, .form-grid-modal select { width: 100%; border: 1px solid #c9c5ce; border-radius: 5px; padding: 9px 10px; background: #fff; outline: 0; }.form-group > input:focus, .form-group > textarea:focus, .form-group > select:focus { border-color: var(--purple); box-shadow: 0 0 0 2px #e8dfff; }.form-group small { color: var(--subtle); font-size: 10px; }.label-row { display: flex; justify-content: space-between; }.form-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }.markdown-editor { resize: vertical; font-family: ui-monospace, SFMono-Regular, Consolas, monospace!important; font-size: 13px!important; line-height: 1.6; }.assignee-picker { padding: 0; border: 0; }.picker-legend { width:100%; margin-bottom:7px; }.picker-legend > span { display:flex; align-items:center; justify-content:space-between; gap:12px; }.picker-selection-tools { display:flex; align-items:center; gap:8px; }.picker-selection-tools em { color:var(--muted); font-size:9px; font-style:normal; font-weight:500; }.picker-selection-tools button { min-height:28px; padding:4px 9px; color:var(--purple); background:#fff; border:1px solid #bdaee3; border-radius:5px; font-size:9px; font-weight:750; }.picker-selection-tools button:hover { background:var(--purple-soft); }.picker-selection-tools button.is-clear { color:#6c6672; border-color:#d0cbd4; }.picker-selection-tools button:disabled { opacity:.45; cursor:not-allowed; }.student-checks { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }.student-checks label { min-height: 55px; padding: 8px 10px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--border); border-radius: 6px; }.student-checks label:has(input:checked) { background: #faf8ff; border-color: #b9a5eb; }.student-checks label > span:last-child { display: flex; flex-direction: column; }.student-checks small { color: var(--muted); }.form-actions { display: flex; justify-content: flex-end; gap: 8px; border-top: 1px solid var(--border-light); padding-top: 20px; }.file-drop { min-height: 140px; display: flex; align-items: center; justify-content: center; gap: 14px; border: 1.5px dashed #b8b1bf; border-radius: 7px; background: #faf9fb; color: var(--muted); }.file-drop:hover { background: #f7f3ff; border-color: var(--purple); }.file-drop input { position: absolute; width: 1px; height: 1px; opacity: 0; }.file-drop > span:last-child { display: flex; flex-direction: column; }.file-drop strong { color: var(--purple); }.file-drop small { display: block; margin-top: 3px; color: var(--subtle); }.file-drop.small { min-height: 88px; }.upload-icon { width: 36px; height: 36px; display: grid; place-items: center; color: var(--purple); background: var(--purple-soft); border-radius: 50%; font-size: 20px; }
@media (max-width: 580px) { .picker-legend > span { align-items:flex-start; flex-direction:column; }.picker-selection-tools { width:100%; justify-content:space-between; } }
/* Assignment detail */
.detail-shell { max-width: 1440px; margin: 0 auto; padding: 24px 32px 60px; }.detail-breadcrumbs { margin-bottom: 13px; }.issue-header { display: flex; justify-content: space-between; gap: 20px; padding-bottom: 21px; border-bottom: 1px solid var(--border); }.issue-header h1 { margin: 0 0 9px; font-size: 24px; line-height: 1.25; }.issue-subline { display: flex; align-items: center; gap: 9px; color: var(--muted); font-size: 11px; }.status-pill { padding: 4px 9px; border-radius: 13px; color: #fff; font-weight: 700; }.status-pill.open { background: var(--green); }.status-pill.closed { background: var(--blue); }.issue-actions { display: flex; gap: 7px; }.issue-layout { display: grid; grid-template-columns: minmax(0, 1fr) 250px; gap: 0; }.issue-center { min-width: 0; padding: 24px 27px 0 0; border-right: 1px solid var(--border); }.issue-description { overflow: hidden; }.author-strip { height: 61px; display: flex; align-items: center; gap: 10px; padding: 0 17px; background: #faf9fb; border-bottom: 1px solid var(--border-light); }.author-strip > div { display: flex; flex-direction: column; }.author-strip small { color: var(--subtle); font-size: 10px; }.author-badge { margin-left: auto; color: var(--purple); border: 1px solid #c9b9ef; background: #f2edff; border-radius: 3px; padding: 1px 5px; font-size: 8px; font-weight: 800; letter-spacing: .04em; }.markdown-body { padding: 23px 26px 28px; font-size: 14px; line-height: 1.7; }.markdown-body h2 { margin: 5px 0 15px; padding-bottom: 8px; border-bottom: 1px solid var(--border-light); font-size: 20px; }.markdown-body h3 { margin: 25px 0 10px; font-size: 16px; }.markdown-body blockquote { margin: 18px 0; padding: 10px 15px; color: #4d4755; background: #f8f6fa; border-left: 3px solid #a38acb; }.markdown-body code, .comment-content code { padding: 2px 4px; background: #f1eff3; border-radius: 3px; font-family: ui-monospace, monospace; }.markdown-body pre { padding: 14px; background: #27232d; color: #f7f4fa; border-radius: 6px; overflow: auto; }.markdown-body pre code { padding: 0; background: transparent; }.attachment-chip { display: inline-flex; gap: 6px; margin: 0 26px 21px; padding: 6px 9px; color: var(--purple); background: #f5f0ff; border: 1px solid #d8cbf2; border-radius: 5px; font-size: 11px; font-weight: 650; }
.issue-sidebar { padding: 24px 0 0 23px; }.issue-sidebar section { padding: 0 0 20px; margin-bottom: 19px; border-bottom: 1px solid var(--border-light); }.issue-sidebar h3 { margin-bottom: 10px; color: #55505c; font-size: 11px; }.assignee-list { display: grid; gap: 8px; }.assignee-list > div { display: flex; align-items: center; gap: 8px; }.assignee-list > div > span:last-child { display: flex; flex-direction: column; }.assignee-list strong { font-size: 11px; }.assignee-list small { color: var(--muted); font-size: 9px; }.labels-wrap { display: flex; flex-wrap: wrap; gap: 5px; }.sidebar-data { display: flex; flex-direction: column; }.sidebar-data span, .progress-label { color: var(--muted); font-size: 10px; }.sidebar-data strong { margin-top: 2px; font-size: 11px; }.progress-label { display: flex; justify-content: space-between; }.progress-label strong { color: var(--ink); }.progress { height: 6px; margin-top: 7px; overflow: hidden; background: #ece9ef; border-radius: 3px; }.progress i { display: block; height: 100%; background: var(--green); border-radius: 3px; }.avatar-stack { display: flex; }.avatar-stack .avatar { margin-right: -5px; border: 2px solid #fff; }.submission-list { display: grid; gap: 5px; }.submission-list a { display: flex; align-items: center; gap: 7px; padding: 6px; border-radius: 4px; }.submission-list a:hover { background: var(--sidebar); }.submission-list a > span:last-child { display: flex; flex-direction: column; }.submission-list strong { font-size: 10px; }.submission-list small { color: var(--subtle); font-size: 9px; }
.activity-section { margin-top: 30px; }.activity-heading { height: 47px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); }.activity-heading > div { display: flex; align-items: baseline; gap: 9px; }.activity-heading h2 { margin: 0; font-size: 17px; }.activity-heading span { color: var(--muted); font-size: 10px; }.activity-heading select { min-width: 110px; height: 31px; font-size: 10px; }.activity-feed { padding-top: 15px; }.system-event { min-height: 40px; display: flex; align-items: center; gap: 10px; margin-left: 13px; border-left: 1px solid var(--border); }.system-icon { width: 25px; height: 25px; display: grid; place-items: center; margin-left: -13px; color: #82788a; background: var(--page); font-size: 10px; }.system-event p { margin: 0; color: var(--muted); font-size: 11px; }.system-event small { color: var(--subtle); }.discussion { display: flex; gap: 12px; margin: 13px 0 17px; }.discussion-body { flex: 1; min-width: 0; }.comment-card { overflow: hidden; border: 1px solid var(--border); border-radius: 6px; background: #fff; }.comment-card > header { min-height: 42px; padding: 8px 12px; display: flex; justify-content: space-between; align-items: center; background: #faf9fb; border-bottom: 1px solid var(--border-light); }.comment-card header > div { display: flex; align-items: center; gap: 7px; }.comment-card header button { border: 0; background: none; color: var(--muted); }.comment-card header small { color: var(--subtle); font-size: 9px; }.role-tag { padding: 1px 5px; border-radius: 3px; font-size: 8px; }.role-tag.teacher { color: #5934a0; background: #eee7ff; }.role-tag.student { color: #175c91; background: #e3f1fb; }.comment-content { padding: 13px 14px 8px; font-size: 13px; }.comment-content > :last-child { margin-bottom: 0; }.comment-card .attachment-chip { margin: 5px 14px 10px; }.reply-link { margin: 1px 14px 11px; border: 0; background: none; color: var(--muted); padding: 0; font-size: 10px; }.reply-link:hover { color: var(--purple); }.reply-row { display: flex; gap: 9px; margin: 9px 0 0 20px; }.reply-card { flex: 1; }.reply-card > header { min-height: 37px; }.reply-card .comment-content { padding-top: 10px; }
.comment-composer { display: flex; gap: 12px; padding: 15px; margin-top: 24px; box-shadow: none; }.composer-main { flex: 1; min-width: 0; }.editor-box { position: relative; border: 1px solid #bdb8c2; border-radius: 5px; overflow: hidden; }.editor-box:focus-within { border-color: var(--purple); box-shadow: 0 0 0 2px #e8dfff; }.editor-toolbar { height: 37px; display: flex; align-items: center; gap: 1px; padding: 0 7px; background: #f7f5f8; border-bottom: 1px solid var(--border); }.editor-toolbar button, .editor-toolbar label { min-width: 28px; height: 27px; display: grid; place-items: center; border: 0; border-radius: 3px; background: transparent; color: #5a5560; font-size: 11px; }.editor-toolbar button:hover, .editor-toolbar label:hover { background: #e9e6ec; }.editor-toolbar input { display: none; }.toolbar-hint { margin-left: auto; color: var(--subtle); font-size: 9px; }.editor-box textarea { display: block; width: 100%; min-height: 120px; resize: vertical; padding: 12px; border: 0; outline: 0; }.drop-overlay { display: none; position: absolute; inset: 0; place-items: center; background: rgba(243,238,255,.93); color: var(--purple); border: 2px dashed var(--purple); font-weight: 700; }.editor-box.dragging .drop-overlay { display: grid; }.file-preview { margin: 0 10px 9px; padding: 7px 9px; display: flex; gap: 7px; align-items: center; background: #f2eff5; border-radius: 4px; font-size: 10px; }.file-preview strong { flex: 1; }.file-preview button { border: 0; background: none; }.composer-actions { display: flex; justify-content: space-between; align-items: center; padding-top: 9px; }.composer-actions small { color: var(--muted); font-size: 9px; }.composer-actions > div { display: flex; gap: 7px; }.reply-indicator { margin-bottom: 7px; padding: 6px 9px; color: var(--purple); background: #f2edff; border-radius: 4px; font-size: 10px; }.reply-indicator button { float: right; border: 0; background: none; color: var(--purple); }.closed-note { margin-top: 20px; padding: 14px; display: flex; justify-content: space-between; align-items: center; color: #265b8f; background: #eaf4ff; border: 1px solid #bad5ee; border-radius: 6px; }
/* Students */
.header-actions { display: flex; gap: 8px; }.info-banner { margin-bottom: 17px; padding: 12px 15px; display: flex; gap: 10px; color: #4f3d7b; background: #f3effd; border: 1px solid #d9cdf2; border-radius: 6px; }.info-banner > span { font-size: 17px; }.info-banner strong { font-size: 12px; }.info-banner p { margin: 1px 0 0; font-size: 10px; }.table-panel { overflow: hidden; }.table-toolbar { min-height: 59px; padding: 10px 15px; display: flex; justify-content: space-between; align-items: center; border-bottom: 1px solid var(--border); color: var(--muted); font-size: 11px; }.search-field.compact { max-width: 320px; height: 35px; }.table-scroll { overflow-x: auto; }.student-table { width: 100%; border-collapse: collapse; min-width: 1020px; }.student-table th { padding: 10px 13px; color: #6e6874; background: #f8f7f9; border-bottom: 1px solid var(--border); text-align: left; font-size: 9px; text-transform: uppercase; letter-spacing: .04em; }.student-table td { padding: 13px; border-bottom: 1px solid var(--border-light); font-size: 11px; vertical-align: middle; }.student-table tbody tr:hover { background: #fcfbfd; }.student-table td > small, .student-table td > strong { display: block; }.student-table td > small { color: var(--subtle); }.student-cell { display: flex; align-items: center; gap: 9px; min-width: 135px; }.student-cell > span:last-child { display: flex; flex-direction: column; }.student-cell small { color: var(--muted); }.level-badge { display: inline-flex; padding: 3px 7px; border-radius: 9px; font-size: 9px; }.level-high { color: var(--green); background: var(--green-soft); }.level-mid { color: #9a560f; background: #fff2df; }.notes-cell { max-width: 180px; color: var(--muted); }.icon-more { border: 0; background: none; color: var(--purple); font-size: 10px; }.modal { width: min(610px, calc(100vw - 30px)); padding: 0; border: 0; border-radius: 9px; box-shadow: 0 22px 60px rgba(20,15,30,.28); }.modal::backdrop { background: rgba(29,25,35,.53); backdrop-filter: blur(1px); }.modal header { display: flex; justify-content: space-between; padding: 19px 22px; border-bottom: 1px solid var(--border); }.modal header h2 { margin-bottom: 2px; font-size: 18px; }.modal header p { margin: 0; color: var(--muted); font-size: 10px; }.modal header > button { border: 0; background: none; color: var(--muted); font-size: 21px; }.modal-body { padding: 22px; }.modal footer { padding: 14px 22px; display: flex; justify-content: flex-end; gap: 8px; background: #faf9fb; border-top: 1px solid var(--border); }.csv-help { margin-top: 14px; padding: 11px; background: #f6f4f7; border-radius: 5px; }.csv-help strong { display: block; margin-bottom: 6px; font-size: 10px; }.csv-help code { display: block; overflow: auto; white-space: nowrap; color: #5b5363; font-size: 9px; }.form-grid-modal { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }.form-grid-modal .form-group { margin: 0; }.form-grid-modal .full { grid-column: 1 / -1; }
/* Analytics */
.directory-count { padding: 6px 10px; color: var(--purple); background: var(--purple-soft); border-radius: 14px; font-size: 11px; font-weight: 700; }
.directory-table { min-width: 900px; }
.directory-table code { color: #574d62; background: #f2eff4; padding: 3px 6px; border-radius: 4px; }
.metric-number { min-width: 28px; height: 28px; display: inline-grid; place-items: center; color: #4f3c78; background: #f0ebfa; border-radius: 50%; font-weight: 750; }
.user-role-overview { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:15px; margin-bottom:18px; }
.user-role-card { min-height:112px; padding:17px; display:grid; grid-template-columns:46px 1fr auto; gap:13px; align-items:center; color:var(--ink); background:#fff; border:1px solid var(--border); border-radius:var(--radius); box-shadow:var(--shadow); text-align:left; transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease; }
.user-role-card:hover { transform:translateY(-2px); box-shadow:0 8px 24px rgba(24,23,29,.09); }.user-role-card:not(.active) { opacity:.55; }
.user-role-icon { width:46px; height:46px; display:grid; place-items:center; color:#fff; border-radius:12px; font-size:15px; font-weight:800; }.user-role-card.teacher .user-role-icon { background:#7255b9; }.user-role-card.assistant .user-role-icon { background:#2f8f83; }.user-role-card.student .user-role-icon { background:#327dbd; }
.user-role-card > span:nth-child(2) { min-width:0; display:flex; flex-direction:column; }.user-role-card small { color:var(--purple); font-size:8px; font-weight:800; letter-spacing:.08em; }.user-role-card strong { font-size:15px; }.user-role-card em { overflow:hidden; color:var(--muted); font-size:9px; font-style:normal; text-overflow:ellipsis; white-space:nowrap; }.user-role-card > b { font-size:30px; }
.user-directory-panel { overflow:hidden; }.user-directory-toolbar { gap:18px; }.user-directory-toolbar .search-field { width:min(360px,42vw); }.user-role-tabs { display:flex; gap:5px; }.user-role-tabs button { min-height:32px; padding:5px 10px; color:var(--muted); background:#fff; border:1px solid transparent; border-radius:5px; font-size:10px; }.user-role-tabs button:hover { color:var(--purple); background:#f8f5fd; }.user-role-tabs button.active { color:var(--purple); background:var(--purple-soft); border-color:#d7cbf2; font-weight:750; }.user-role-tabs b { margin-left:4px; }
.user-role-sections { padding:17px; display:grid; gap:17px; background:#faf9fb; }.user-role-section { overflow:hidden; background:#fff; border:1px solid var(--border); border-radius:9px; }.user-role-section > header { padding:13px 16px; display:flex; align-items:center; gap:10px; background:#f7f5f9; border-bottom:1px solid var(--border); }.user-role-section > header > div { flex:1; }.user-role-section h2 { margin:0; font-size:14px; }.user-role-section header p { margin:0; color:var(--muted); font-size:9px; }.user-role-section header > strong { color:var(--muted); font-size:10px; }
.user-card-grid { padding:14px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; }.user-directory-card { padding:15px; border:1px solid var(--border-light); border-radius:8px; background:#fff; }.user-directory-card:hover { border-color:#cfc5df; box-shadow:0 5px 16px rgba(24,23,29,.05); }.user-card-identity { display:flex; align-items:center; gap:10px; padding-bottom:12px; border-bottom:1px solid var(--border-light); }.user-card-identity > span:nth-child(2) { min-width:0; flex:1; display:flex; flex-direction:column; }.user-card-identity > span:nth-child(2) > strong { display:flex; align-items:center; flex-wrap:wrap; gap:5px; }.user-card-identity small { color:var(--muted); }.user-role-badge,.current-user-badge { padding:3px 7px; border-radius:10px; font-size:8px; font-style:normal; font-weight:800; }.user-role-badge.teacher { color:#5c3ca1; background:#eee8ff; }.user-role-badge.assistant { color:#14655c; background:#e0f4f1; }.user-role-badge.student { color:#225f96; background:#e4f1fc; }.current-user-badge { color:#8d5a09; background:#fff1d5; }
.user-card-details { margin:12px 0 0; display:grid; grid-template-columns:1fr 1fr; gap:10px 18px; }.user-card-details div { min-width:0; }.user-card-details dt { color:var(--subtle); font-size:8px; font-weight:750; text-transform:uppercase; letter-spacing:.05em; }.user-card-details dd { margin:2px 0 0; overflow:hidden; color:#45404a; font-size:10px; text-overflow:ellipsis; white-space:nowrap; }.user-directory-empty { background:#fff; border:1px dashed var(--border); border-radius:8px; }
@media (max-width: 980px) { .user-role-overview { grid-template-columns:1fr; }.user-role-card { min-height:92px; }.user-card-grid { grid-template-columns:1fr; } }
@media (max-width: 700px) { .user-directory-toolbar { align-items:stretch; flex-direction:column; }.user-directory-toolbar .search-field { width:100%; max-width:none; }.user-role-tabs { overflow-x:auto; }.user-role-tabs button { flex:0 0 auto; }.user-role-sections { padding:10px; }.user-card-grid { padding:10px; }.user-card-details { grid-template-columns:1fr; }.user-role-card { grid-template-columns:42px 1fr auto; padding:14px; }.user-role-icon { width:42px; height:42px; } }
.system-download { color: var(--purple); font-weight: 650; }.system-download:hover { text-decoration: underline; }
.submit-modal { width: min(620px,calc(100vw - 30px)); }.source-tabs { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 18px; }.source-tabs label { min-height: 85px; padding: 12px; display: grid; grid-template-columns: 32px 1fr; grid-template-rows: auto auto; column-gap: 9px; align-items: center; border: 1px solid var(--border); border-radius: 7px; cursor: pointer; }.source-tabs label.active { border-color: var(--purple); background: #f7f3ff; box-shadow: 0 0 0 1px var(--purple); }.source-tabs input { position: absolute; opacity: 0; }.source-tabs label > span { grid-row: 1 / 3; width: 32px; height: 32px; display: grid; place-items: center; color: var(--purple); background: var(--purple-soft); border-radius: 7px; }.source-tabs strong { align-self: end; font-size: 12px; }.source-tabs small { align-self: start; color: var(--muted); font-size: 9px; }.submit-drop { min-height: 155px; }.submission-source[hidden] { display: none; }.submission-source .form-group { margin: 0; }.submission-source .form-group > span { font-size: 11px; font-weight: 650; }.submission-source select { width: 100%; min-height: 42px; padding: 8px; border: 1px solid #c9c5ce; border-radius: 5px; background: #fff; }.server-empty { min-height: 145px; padding: 20px; display: flex; flex-direction: column; align-items: center; justify-content: center; color: var(--muted); background: #f8f7f9; border: 1px dashed #c9c5ce; border-radius: 7px; text-align: center; }.server-empty > span { color: var(--purple); font-size: 24px; }.server-empty strong { margin-top: 4px; color: var(--ink); }.server-empty p { margin: 6px 0 3px; font-size: 10px; }.server-empty code { max-width: 100%; padding: 4px 7px; overflow-wrap: anywhere; color: #554765; background: #eee9f3; border-radius: 4px; font-size: 9px; }.submit-modal footer { align-items: center; }.submission-note { margin-right: auto; color: var(--muted); font-size: 9px; }
.activity-submit-card { margin: 16px 0 5px; padding: 15px 16px; display: flex; align-items: center; gap: 12px; background: linear-gradient(100deg,#f7f3ff,#fff); border: 1px solid #d9cef0; border-left: 3px solid var(--purple); border-radius: 7px; box-shadow: var(--shadow); }.activity-submit-card.submitted { background: linear-gradient(100deg,#eef9f2,#fff); border-color: #c9e6d4; border-left-color: var(--green); }.activity-submit-icon { width: 40px; height: 40px; flex: 0 0 auto; display: grid; place-items: center; color: var(--purple); background: var(--purple-soft); border-radius: 8px; font-size: 19px; font-weight: 750; }.activity-submit-card.submitted .activity-submit-icon { color: var(--green); background: var(--green-soft); }.activity-submit-copy { flex: 1; display: flex; flex-direction: column; }.activity-submit-kicker { color: var(--purple); font-size: 8px; font-weight: 800; letter-spacing: .08em; }.activity-submit-card.submitted .activity-submit-kicker { color: var(--green); }.activity-submit-copy strong { margin: 1px 0; font-size: 13px; }.activity-submit-copy small { color: var(--muted); font-size: 9px; }
.stat-card { transition: transform .16s ease, box-shadow .16s ease; cursor: pointer; }.stat-card:hover { transform: translateY(-2px); box-shadow: 0 8px 24px rgba(24,23,29,.09); }.stat-card:focus-visible { outline: 3px solid #d9ccfa; outline-offset: 2px; }.list-tabs a { display: flex; align-items: center; color: var(--muted); }.list-tabs a:hover { color: var(--purple); }
.mock-badge { display: inline-flex; align-items: center; gap: 6px; padding: 5px 9px; color: #72550b; background: #fff5d6; border: 1px solid #eed98e; border-radius: 4px; font-size: 9px; font-weight: 800; letter-spacing: .04em; }.mock-badge i { width: 6px; height: 6px; background: #e2a510; border-radius: 50%; }.analytics-grid { display: grid; grid-template-columns: 310px minmax(0, 1fr); gap: 20px; align-items: start; }.analytics-control { position: sticky; top: 79px; }.control-body { padding: 18px; }.control-body > label { display: block; margin-bottom: 6px; font-size: 11px; font-weight: 650; }.student-select-wrap select { width: 100%; height: 39px; padding: 0 9px; border: 1px solid #c9c5ce; border-radius: 5px; background: #fff; }.selected-profile { display: flex; align-items: center; gap: 10px; margin: 14px 0; padding: 11px; background: #f8f6fa; border: 1px solid var(--border-light); border-radius: 6px; }.selected-profile > div { display: flex; flex-direction: column; }.selected-profile span { color: var(--muted); font-size: 10px; }.data-sources { padding: 13px 0 15px; border-top: 1px solid var(--border-light); }.data-sources p { margin-bottom: 7px; color: var(--muted); font-size: 10px; }.data-sources div { margin: 5px 0; color: #514b56; font-size: 11px; }.data-sources div span { margin-right: 5px; color: var(--green); }.privacy-note { display: block; margin-top: 10px; color: var(--subtle); text-align: center; font-size: 9px; }.analytics-result { min-height: 600px; }.analysis-placeholder, .analysis-loading { min-height: 525px; display: flex; flex-direction: column; align-items: center; justify-content: center; background: #fff; border: 1px dashed #cfcad3; border-radius: var(--radius); }.analysis-placeholder h2, .analysis-loading h2 { margin: 16px 0 4px; font-size: 17px; }.analysis-placeholder p, .analysis-loading p { color: var(--muted); font-size: 11px; }.analysis-illustration { position: relative; width: 105px; height: 80px; display: flex; align-items: end; justify-content: center; gap: 7px; padding-bottom: 8px; background: #f4f0fc; border-radius: 50%; }.analysis-illustration span { position: absolute; top: 16px; color: var(--purple); font-size: 27px; }.analysis-illustration i { width: 8px; background: #a58bd7; border-radius: 3px 3px 0 0; }.analysis-illustration i:nth-of-type(1) { height: 11px; }.analysis-illustration i:nth-of-type(2) { height: 19px; }.analysis-illustration i:nth-of-type(3) { height: 28px; }.spinner { width: 38px; height: 38px; border: 3px solid #e8e1f7; border-top-color: var(--purple); border-radius: 50%; animation: spin .8s linear infinite; }@keyframes spin { to { transform: rotate(360deg); } }
.analysis-report { overflow: hidden; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); box-shadow: var(--shadow); }.report-header { padding: 19px 22px; display: flex; justify-content: space-between; align-items: center; background: linear-gradient(105deg, #f4efff, #fbf9ff); border-bottom: 1px solid #e2d8f5; }.report-header > div { display: flex; align-items: center; gap: 12px; }.report-header p { margin: 0; color: var(--purple); font-size: 9px; font-weight: 750; text-transform: uppercase; letter-spacing: .06em; }.report-header h2 { margin: 1px 0 0; font-size: 18px; }.report-header span { color: var(--muted); font-size: 10px; }.generated-time { align-self: flex-start; }.report-score-row { display: flex; align-items: center; gap: 28px; padding: 25px 27px; border-bottom: 1px solid var(--border-light); }.score-ring { --score: 0deg; width: 135px; height: 135px; flex: 0 0 auto; display: grid; place-items: center; border-radius: 50%; background: conic-gradient(var(--purple) var(--score), #ece8f1 0); position: relative; }.score-ring::before { content: ""; position: absolute; inset: 10px; background: #fff; border-radius: 50%; }.score-ring > div { z-index: 1; display: flex; flex-direction: column; align-items: center; }.score-ring strong { font-size: 27px; }.score-ring span { color: var(--muted); font-size: 9px; }.score-summary { max-width: 430px; }.score-summary h3 { margin: 9px 0 5px; font-size: 17px; }.score-summary p { margin: 0; color: var(--muted); font-size: 11px; }.trend-badge { display: inline-block; padding: 3px 7px; color: var(--green); background: var(--green-soft); border-radius: 10px; font-size: 9px; font-weight: 650; }.report-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; padding: 17px 21px; }.report-cards article { display: flex; align-items: center; gap: 11px; padding: 13px; background: #faf9fb; border: 1px solid var(--border-light); border-radius: 6px; }.report-cards article > div { display: flex; flex-direction: column; }.report-cards small { color: var(--muted); font-size: 9px; }.report-cards strong { font-size: 14px; }.report-cards p { margin: 0; color: var(--subtle); font-size: 9px; }.report-icon { width: 34px; height: 34px; display: grid; place-items: center; border-radius: 7px; }.report-icon.purple { color: var(--purple); background: var(--purple-soft); }.report-icon.green { color: var(--green); background: var(--green-soft); }.weak-section, .suggestion-section { margin: 0 21px 16px; padding: 16px; border: 1px solid var(--border-light); border-radius: 6px; }.section-title { display: flex; gap: 9px; }.section-title > span { width: 29px; height: 29px; display: grid; place-items: center; color: #a05c0a; background: #fff2df; border-radius: 6px; }.section-title h3 { margin: 0; font-size: 12px; }.section-title p { margin: 1px 0 0; color: var(--muted); font-size: 10px; }.topic-list { display: flex; gap: 7px; margin: 12px 0 0 38px; }.topic-list span { padding: 5px 9px; color: #934b18; background: #fff2e8; border: 1px solid #f2d0b8; border-radius: 4px; font-size: 10px; font-weight: 650; }.suggestion-section { background: #f5f1ff; border-color: #ded3f4; }.suggestion-section .section-title > span { color: var(--purple); background: #e8ddff; }.suggestion-section .section-title p { margin-top: 6px; color: #4b4257; font-size: 11px; line-height: 1.6; }.json-details { margin: 0 21px 21px; border-top: 1px solid var(--border); }.json-details summary { padding: 12px 0; display: flex; justify-content: space-between; color: var(--muted); font-size: 10px; }.json-details pre { padding: 12px; overflow: auto; background: #27232d; color: #efeaf5; border-radius: 5px; font-size: 10px; }
.flash-stack { position: fixed; z-index: 50; top: 70px; right: 18px; width: min(360px, calc(100vw - 36px)); }.flash { margin-bottom: 8px; padding: 11px 13px; display: flex; justify-content: space-between; align-items: center; background: #fff; border: 1px solid var(--border); border-left: 4px solid var(--blue); border-radius: 5px; box-shadow: 0 8px 24px rgba(20,15,30,.16); }.flash-success { border-left-color: var(--green); }.flash-warning { border-left-color: #d39b18; }.flash-danger { border-left-color: var(--red); }.flash button { border: 0; background: none; font-size: 18px; }.empty-page { min-height: 65vh; display: flex; flex-direction: column; align-items: center; justify-content: center; }.empty-page > strong { color: #d8d0e2; font-size: 82px; line-height: 1; }.empty-page h1 { margin: 8px 0 4px; }.empty-page p { color: var(--muted); }.empty-page .btn { margin-top: 12px; }
@media (max-width: 1080px) { .stats-grid { grid-template-columns: 1fr 1fr; }.issue-layout { grid-template-columns: minmax(0,1fr) 220px; }.page { padding-left: 24px; padding-right: 24px; }.brand { width: auto; }.brand-name { display: none; }.global-search { width: min(420px, 45vw); } }
@media (max-width: 820px) { :root { --sidebar-w: 220px; }.mobile-menu { display: block; order: -1; }.sidebar { transform: translateX(-100%); transition: transform .2s; box-shadow: 8px 0 28px rgba(20,15,30,.15); }.sidebar.open { transform: translateX(0); }.main-content { margin-left: 0; }.global-search { flex: 1; }.user-copy { display: none; }.dashboard-grid, .analytics-grid { grid-template-columns: 1fr; }.analytics-control { position: static; }.issue-layout { display: block; }.issue-center { padding-right: 0; border-right: 0; }.issue-sidebar { display: grid; grid-template-columns: repeat(2,1fr); gap: 15px; padding-left: 0; }.issue-sidebar section { margin: 0; }.detail-shell { padding: 22px 20px 50px; } }
@media (max-width: 580px) { .page { padding: 27px 14px 45px; }.topbar { padding: 0 10px; gap: 8px; }.global-search { height: 34px; }.global-search kbd { display: none; }.icon-button { display: none; }.page-header, .welcome-row, .issue-header { align-items: stretch; flex-direction: column; }.page-header .btn, .welcome-row .btn { align-self: flex-start; }.stats-grid { grid-template-columns: 1fr; }.stat-card { min-height: 95px; }.list-toolbar { flex-direction: column; }.list-toolbar select { height: 38px; }.assignment-meta { flex-direction: column; gap: 2px; }.issue-actions { align-self: flex-start; }.issue-layout { display: flex; flex-direction: column; }.issue-sidebar { order: -1; grid-template-columns: 1fr 1fr; padding: 18px 0 0; }.issue-sidebar section:nth-child(n+5) { display: none; }.comment-composer { padding: 10px; }.comment-composer > .avatar { display: none; }.toolbar-hint { display: none; }.composer-actions { align-items: flex-end; gap: 10px; }.composer-actions > div { flex-direction: column; }.student-checks, .form-grid, .form-grid-modal, .report-cards { grid-template-columns: 1fr; }.form-grid-modal .full { grid-column: auto; }.form-panel { padding: 18px; }.report-score-row { flex-direction: column; text-align: center; }.report-header { align-items: flex-start; }.generated-time { display: none; }.topic-list { margin-left: 0; flex-wrap: wrap; }.modal-body { padding: 16px; }.header-actions { flex-wrap: wrap; } }

/* PAM account menu */
.signed-user { padding: 9px; display: flex; align-items: center; gap: 9px; border-bottom: 1px solid var(--border-light); }
.signed-user > span:last-child { display: flex; flex-direction: column; }
.signed-user small { color: var(--muted); }
.logout-button { width: 100%; margin-top: 5px; padding: 9px; display: flex; justify-content: space-between; border: 0; border-radius: 4px; background: none; color: #514b56; text-align: left; }
.logout-button:hover { background: var(--sidebar); color: var(--red); }
.user-menu-link { margin-top: 5px; padding: 9px; display: flex; align-items: center; gap: 8px; border-radius: 4px; color: #514b56; }.user-menu-link:hover { background: var(--sidebar); color: var(--purple); }

/* Per-student AI knowledge base */
.knowledge-page { max-width:1560px; }.knowledge-header { align-items:center; }.knowledge-header-actions { display:flex; align-items:center; gap:13px; }.knowledge-student-select { display:flex; align-items:center; gap:8px; }.knowledge-student-select label { color:var(--muted); font-size:10px; font-weight:700; }.knowledge-student-select select { min-width:210px; height:38px; padding:0 10px; border:1px solid var(--border); border-radius:6px; background:#fff; }
.knowledge-stats { display:grid; grid-template-columns:repeat(4,1fr); gap:12px; margin-bottom:18px; }.knowledge-stats article { min-height:82px; padding:15px 17px; display:flex; align-items:center; gap:12px; background:#fff; border:1px solid var(--border); border-radius:8px; box-shadow:var(--shadow); }.knowledge-stats article > span { width:40px; height:40px; flex:0 0 auto; display:grid; place-items:center; color:var(--purple); background:var(--purple-soft); border-radius:9px; font-weight:800; }.knowledge-stats article > div { min-width:0; display:flex; flex-direction:column; }.knowledge-stats small,.knowledge-stats em { color:var(--muted); font-size:9px; font-style:normal; }.knowledge-stats strong { overflow:hidden; font-size:18px; text-overflow:ellipsis; white-space:nowrap; }
.knowledge-layout { display:grid; grid-template-columns:370px minmax(0,1fr); gap:18px; align-items:start; }.knowledge-library { display:grid; gap:15px; }.knowledge-upload,.knowledge-documents { overflow:hidden; }.knowledge-upload { padding-bottom:16px; }.panel-heading { min-height:59px; padding:14px 16px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border-light); }.panel-heading h2 { margin:0; font-size:15px; }.panel-heading > span { min-width:25px; height:23px; display:grid; place-items:center; color:var(--purple); background:var(--purple-soft); border-radius:12px; font-size:10px; font-weight:800; }
.knowledge-file-drop { min-height:130px; margin:15px; padding:17px; display:flex; align-items:center; justify-content:center; flex-direction:column; text-align:center; border:1.5px dashed #bbb3c6; border-radius:8px; background:#faf9fb; cursor:pointer; }.knowledge-file-drop:hover { border-color:var(--purple); background:#f8f4ff; }.knowledge-file-drop input { position:absolute; width:1px; height:1px; opacity:0; }.knowledge-file-drop > span { width:38px; height:38px; margin-bottom:8px; display:grid; place-items:center; color:var(--purple); background:var(--purple-soft); border-radius:10px; font-size:20px; }.knowledge-file-drop strong { font-size:12px; }.knowledge-file-drop small { margin-top:3px; color:var(--subtle); font-size:9px; }.knowledge-upload > .btn { width:calc(100% - 30px); margin:0 15px; }
.knowledge-document-list { max-height:510px; overflow-y:auto; }.knowledge-document { min-height:73px; padding:12px 13px; display:flex; align-items:flex-start; gap:10px; border-bottom:1px solid var(--border-light); }.knowledge-document:last-child { border-bottom:0; }.knowledge-document-icon { width:30px; height:30px; flex:0 0 auto; display:grid; place-items:center; color:var(--green); background:var(--green-soft); border-radius:7px; font-weight:800; }.knowledge-document.failed .knowledge-document-icon { color:var(--red); background:#fdeaea; }.knowledge-document.processing .knowledge-document-icon { color:var(--purple); background:var(--purple-soft); }.knowledge-document > div { min-width:0; flex:1; display:flex; flex-direction:column; }.knowledge-document a { overflow:hidden; color:var(--ink); font-size:11px; font-weight:720; text-overflow:ellipsis; white-space:nowrap; }.knowledge-document a:hover { color:var(--purple); }.knowledge-document small { margin-top:2px; color:var(--muted); font-size:9px; line-height:1.4; }.knowledge-document em { margin-top:3px; color:var(--subtle); font-size:8px; font-style:normal; }.knowledge-document form button { border:0; background:none; color:var(--subtle); font-size:18px; }.knowledge-document form button:hover { color:var(--red); }.knowledge-doc-empty { min-height:220px; padding:25px; display:flex; align-items:center; justify-content:center; flex-direction:column; text-align:center; }.knowledge-doc-empty > span { color:#b9a8da; font-size:32px; }.knowledge-doc-empty strong { margin-top:8px; }.knowledge-doc-empty p { margin:3px 0 0; color:var(--muted); font-size:10px; }
.knowledge-chat { height:720px; display:grid; grid-template-rows:auto minmax(0,1fr) auto; overflow:hidden; }.knowledge-chat > header { min-height:66px; padding:13px 17px; display:flex; align-items:center; justify-content:space-between; border-bottom:1px solid var(--border); }.knowledge-chat > header > div { display:flex; align-items:center; gap:10px; }.knowledge-chat > header > div > span { width:38px; height:38px; display:grid; place-items:center; color:#fff; background:linear-gradient(145deg,#6243b2,#9372d9); border-radius:10px; }.knowledge-chat h2 { margin:0; font-size:15px; }.knowledge-chat-thread { min-height:0; padding:22px clamp(18px,4vw,50px); display:flex; flex-direction:column; gap:15px; overflow-y:auto; background:linear-gradient(180deg,#fbf9ff,#fff 100px); }.knowledge-welcome { max-width:650px; margin:auto; text-align:center; }.knowledge-welcome[hidden] { display:none; }.knowledge-welcome > span { width:58px; height:58px; margin:0 auto 13px; display:grid; place-items:center; color:#fff; background:linear-gradient(145deg,#6243b2,#9877df); border-radius:16px; font-size:25px; }.knowledge-welcome h3 { margin:0 0 5px; font-size:20px; }.knowledge-welcome p { color:var(--muted); font-size:11px; }.knowledge-welcome > div { display:flex; justify-content:center; gap:8px; }.knowledge-welcome button { padding:7px 10px; color:var(--purple); background:#fff; border:1px solid #cfbfef; border-radius:6px; font-size:10px; }
.knowledge-message { max-width:82%; display:flex; align-items:flex-start; gap:9px; }.knowledge-message.user { align-self:flex-end; }.knowledge-message.assistant { align-self:flex-start; }.knowledge-message > span { width:30px; height:30px; flex:0 0 auto; display:grid; place-items:center; color:#fff; background:var(--purple); border-radius:8px; font-size:9px; font-weight:800; }.knowledge-message > div { padding:11px 13px; background:#fff; border:1px solid var(--border); border-radius:10px; box-shadow:var(--shadow); }.knowledge-message.user > div { color:#fff; background:var(--purple); border-color:var(--purple); }.knowledge-message strong { display:block; margin-bottom:3px; font-size:9px; }.knowledge-message p { margin:0; white-space:pre-wrap; font-size:12px; line-height:1.65; }.knowledge-message small { display:block; margin-top:7px; color:var(--subtle); font-size:8px; }.knowledge-sources { display:flex; flex-wrap:wrap; gap:5px; margin-top:9px; }.knowledge-sources a { padding:5px 7px; color:#4d397a; background:#f1ebff; border-radius:5px; font-size:8px; }.knowledge-sources a:hover { background:#e6dcfb; }.knowledge-message.loading { opacity:.72; }.knowledge-message.error > span { background:var(--red); }.knowledge-message.error > div { border-color:#edc5c5; }
.knowledge-composer { padding:13px 17px 15px; border-top:1px solid var(--border); background:#fff; }.knowledge-composer textarea { width:100%; min-height:75px; max-height:150px; padding:11px 13px; resize:vertical; border:1px solid #c9c3d0; border-radius:8px; outline:0; }.knowledge-composer textarea:focus { border-color:var(--purple); box-shadow:0 0 0 3px rgba(107,79,187,.11); }.knowledge-composer > div { padding-top:8px; display:flex; align-items:center; justify-content:space-between; gap:15px; }.knowledge-composer small { color:var(--subtle); font-size:9px; }
@media (max-width:1100px) { .knowledge-layout { grid-template-columns:320px minmax(0,1fr); }.knowledge-stats { grid-template-columns:1fr 1fr; } }
@media (max-width:820px) { .knowledge-header-actions { align-items:stretch; flex-direction:column; }.knowledge-layout { grid-template-columns:1fr; }.knowledge-chat { height:680px; }.knowledge-document-list { max-height:360px; } }
@media (max-width:580px) { .knowledge-stats { grid-template-columns:1fr; }.knowledge-student-select { align-items:stretch; flex-direction:column; }.knowledge-student-select select { width:100%; }.knowledge-message { max-width:94%; }.knowledge-composer > div { align-items:stretch; flex-direction:column; }.knowledge-welcome > div { flex-direction:column; } }

/* Activity and AI assistant tabs */
.interaction-tabs { height: 49px; display: flex; align-items: end; gap: 21px; margin-top: 27px; border-bottom: 1px solid var(--border); }
.interaction-tabs button { height: 48px; padding: 0 2px; border: 0; border-bottom: 2px solid transparent; background: none; color: var(--muted); font-weight: 650; }
.interaction-tabs button.active { color: var(--purple); border-color: var(--purple); }
.interaction-tabs button span { color: #8a64de; }
.tab-panel.activity-section { margin-top: 0; }
.tab-panel[hidden] { display: none!important; }
.assistant-panel { margin-top: 17px; overflow: hidden; background: #fff; border: 1px solid var(--border); border-radius: var(--radius); }
.assistant-intro { padding: 16px 18px; display: flex; align-items: center; gap: 10px; background: linear-gradient(100deg,#f3eeff,#faf8ff); border-bottom: 1px solid #e0d6f2; }
.assistant-intro > span { width: 36px; height: 36px; display: grid; place-items: center; color: #fff; background: linear-gradient(145deg,#7855c8,#9a79e1); border-radius: 9px; font-size: 18px; }
.assistant-intro h2 { margin: 0; font-size: 14px; }
.assistant-intro p { margin: 1px 0 0; color: var(--muted); font-size: 10px; }
.chat-window { height: 380px; padding: 18px; overflow-y: auto; display: flex; flex-direction: column; gap: 15px; background: #fcfbfd; }
.chat-message { max-width: 80%; display: flex; align-items: flex-start; gap: 8px; }
.chat-message > div { padding: 9px 11px; background: #f0edf3; border-radius: 4px 12px 12px 12px; }
.chat-message strong { display: block; margin-bottom: 3px; font-size: 9px; color: var(--muted); }
.chat-message p { margin: 0; font-size: 12px; line-height: 1.55; white-space: pre-wrap; }
.chat-message.user { align-self: flex-end; }
.chat-message.user > div { color: #fff; background: #6179c9; border-radius: 12px 4px 12px 12px; }
.chat-message.user strong { color: #dfe5ff; }
.chat-avatar { width: 29px; height: 29px; flex: 0 0 auto; display: grid; place-items: center; color: #fff; background: var(--purple); border-radius: 50%; font-size: 9px; font-weight: 800; }
.chat-message.error > div { background: #fff0f0; }
.chat-composer { padding: 12px; border-top: 1px solid var(--border); }
.chat-composer textarea { width: 100%; resize: vertical; padding: 10px; border: 1px solid #c8c3cc; border-radius: 5px; outline: 0; }
.chat-composer textarea:focus { border-color: var(--purple); box-shadow: 0 0 0 2px #e8dfff; }
.chat-composer > div { padding-top: 7px; display: flex; justify-content: space-between; align-items: center; }
.chat-composer small { color: var(--subtle); font-size: 9px; }

/* Login */
.login-page { min-height: 100vh; background: #27232e; }
.login-shell { min-height: 100vh; display: grid; grid-template-columns: minmax(320px,1.2fr) minmax(400px,1fr); }
.login-branding { padding: clamp(42px,7vw,90px); display: flex; flex-direction: column; justify-content: space-between; color: #fff; background: radial-gradient(circle at 15% 80%,rgba(128,91,211,.35),transparent 35%),linear-gradient(145deg,#27232e,#342c42); }
.login-logo { display: flex; align-items: center; gap: 9px; font-size: 18px; font-weight: 750; }
.login-logo span { width: 33px; height: 33px; display: grid; place-items: center; background: linear-gradient(145deg,#a285ff,#7655d6); border-radius: 7px; }
.login-branding h1 { margin: 10px 0 15px; font-size: clamp(34px,4vw,54px); line-height: 1.15; letter-spacing: -1.5px; }
.login-branding > div:nth-child(2) > p:last-child { max-width: 520px; color: #bfb8c8; font-size: 15px; }
.login-branding small { color: #908998; }
.login-card { display: grid; place-items: center; padding: 28px; background: #f8f6fa; }
.login-card-inner { width: min(430px,100%); padding: 34px; background: #fff; border: 1px solid var(--border); border-radius: 12px; box-shadow: 0 16px 40px rgba(22,16,28,.12); }
.login-icon { width: 46px; height: 46px; display: grid; place-items: center; color: var(--purple); background: var(--purple-soft); border-radius: 10px; font-size: 22px; }
.login-card h2 { margin: 18px 0 5px; font-size: 23px; }
.login-card > .login-card-inner > p { margin-bottom: 22px; color: var(--muted); font-size: 13px; }
.login-card form { display: grid; gap: 16px; }
.login-card form label { display: grid; gap: 7px; color: #443f48; font-size: 13px; font-weight: 650; }
.login-card form input { height: 44px; padding: 0 12px; border: 1px solid #c6c1ca; border-radius: 6px; outline: 0; font-size: 14px; }
.login-card form input:focus { border-color: var(--purple); box-shadow: 0 0 0 2px #e7ddff; }
.login-card form .remember-option { display: flex; grid-template-columns: none; align-items: flex-start; gap: 10px; padding: 3px 0; cursor: pointer; font-weight: 400; }
.login-card form .remember-option input { width: 18px; height: 18px; margin: 2px 0 0; accent-color: var(--purple); box-shadow: none; }
.remember-option > span { display: flex; flex-direction: column; gap: 1px; }
.remember-option strong { color: #443f48; font-size: 14px; }
.remember-option small { color: var(--subtle); font-size: 11px; font-weight: 400; }
.login-security { margin-top: 22px; padding: 12px; display: flex; gap: 11px; color: #564c61; background: #f7f4fa; border-radius: 6px; }
.login-security > span { color: var(--green); }
.login-security p { margin: 0; font-size: 11px; }.login-security > span { font-size: 15px; }
.login-alert { margin-bottom: 17px; padding: 11px; color: #8c2929; background: #fff0f0; border: 1px solid #f0c4c4; border-radius: 5px; font-size: 12px; }
.login-card .btn-block { min-height: 46px; font-size: 15px; border-radius: 6px; }
.username-field { position: relative; }.username-input-wrap { display: flex; position: relative; }.login-card form .username-input-wrap input { width: 100%; padding-right: 46px; }.username-input-wrap > button { position: absolute; top: 1px; right: 1px; bottom: 1px; width: 43px; border: 0; border-left: 1px solid var(--border-light); border-radius: 0 5px 5px 0; background: #faf9fb; color: var(--muted); font-size: 15px; }.username-input-wrap > button:hover { color: var(--purple); background: #f2eef9; }.username-history { position: absolute; z-index: 20; top: calc(100% + 6px); left: 0; right: 0; padding: 6px; background: #fff; border: 1px solid var(--border); border-radius: 7px; box-shadow: 0 12px 34px rgba(24,18,31,.17); }.username-history[hidden] { display: none; }.username-history > button { width: 100%; padding: 9px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 5px; background: none; text-align: left; }.username-history > button:hover { background: #f6f3fa; }.username-history > button > span:nth-child(2) { flex: 1; display: flex; flex-direction: column; }.username-history strong { color: var(--ink); font-size: 13px; }.username-history small { color: var(--muted); font-size: 11px; }.username-history em { color: var(--purple); font-size: 10px; font-style: normal; }
@media (max-width: 760px) { .login-shell { grid-template-columns: 1fr; }.login-branding { min-height: 280px; padding: 32px 24px; }.login-branding h1 { font-size: 36px; }.login-branding small { display: none; }.login-card { padding: 24px 14px 40px; }.login-card-inner { padding: 25px; } }

/* Submission confirmation states */
.activity-submit-card.submitted { position: relative; padding: 20px; background: linear-gradient(105deg,#e9f9ef 0%,#f7fcf9 58%,#fff 100%); border: 1px solid #92d5aa; border-left: 5px solid #149750; box-shadow: 0 9px 24px rgba(20,151,80,.12); }
.activity-submit-card.submitted .activity-submit-icon { width: 48px; height: 48px; color: #fff; background: #149750; border-radius: 50%; box-shadow: 0 0 0 6px rgba(20,151,80,.1); font-size: 24px; }
.submission-success-badge { width: fit-content; margin: 3px 0 2px; padding: 3px 8px; color: #0b783e; background: #d8f3e2; border: 1px solid #a8dfbb; border-radius: 999px; font-size: 9px; font-weight: 800; }
.activity-submit-card.submitted .activity-submit-copy strong { color: #095f34; font-size: 15px; }
.activity-submit-actions { display: flex; align-items: center; gap: 8px; }
.btn-success { color: #fff; background: #149750; border-color: #149750; }
.btn-success:hover { color: #fff; background: #0f7f42; border-color: #0f7f42; }
.submit-drop.file-selected { background: #eef9f2; border: 2px solid #3caf6c; }
.submit-drop.file-selected .upload-icon { color: #fff; background: #149750; }
.submit-drop.file-selected strong { color: #0b783e; }
.submit-drop.file-selected .file-drop-action { color: #43815e; font-size: 10px; }
@media (max-width: 720px) { .activity-submit-card { align-items: flex-start; flex-wrap: wrap; }.activity-submit-actions { width: 100%; padding-left: 60px; flex-wrap: wrap; } }

/* Assignment grading */
.student-grade-card { margin: 14px 0 8px; padding: 18px; display: flex; align-items: center; gap: 16px; border-radius: 8px; }
.student-grade-card.score-high { color: #173b2b; background: linear-gradient(105deg,#e8f8ee,#fff); border: 1px solid #93d3aa; box-shadow: 0 8px 20px rgba(20,151,80,.1); }
.student-grade-card.score-mid { color: #5c4106; background: linear-gradient(105deg,#fff6d9,#fff); border: 1px solid #e8c75d; box-shadow: 0 8px 20px rgba(206,151,15,.1); }
.student-grade-card.score-low { color: #681d1d; background: linear-gradient(105deg,#ffebeb,#fff); border: 1px solid #e5a0a0; box-shadow: 0 8px 20px rgba(196,48,48,.1); }
.student-grade-card.pending { background: #f8f7fa; border: 1px dashed #bbb4c3; }
.grade-mark { width: 72px; height: 72px; flex: 0 0 auto; display: flex; flex-direction: column; align-items: center; justify-content: center; color: #fff; background: #159750; border-radius: 50%; }
.pending .grade-mark { color: var(--muted); background: #e9e6ed; }
.score-high .grade-mark { background: #159750; }.score-mid .grade-mark { background: #d29a13; }.score-low .grade-mark { background: #cf3d3d; }
.grade-mark strong { font-size: 25px; line-height: 1; }.grade-mark small { margin-top: 3px; font-size: 9px; }
.grade-copy { flex: 1; }.grade-kicker { color: #16834a; font-size: 8px; font-weight: 850; letter-spacing: .1em; }.grade-copy h3 { margin: 2px 0 5px; font-size: 16px; }.grade-copy p { margin: 0 0 4px; color: #4f5f56; white-space: pre-wrap; }.grade-copy > small { color: var(--muted); font-size: 9px; }
.grading-panel { margin: 18px 0 8px; padding: 18px; background: #fff; border: 1px solid var(--border); border-radius: 8px; box-shadow: var(--shadow); }
.grading-heading { margin-bottom: 13px; display: flex; align-items: center; justify-content: space-between; }.grading-heading h3 { margin: 2px 0 0; font-size: 17px; }.grading-heading > span { color: var(--muted); font-size: 10px; }
.grading-list { display: grid; gap: 11px; }.grading-card { padding: 14px; background: #faf9fb; border: 1px solid var(--border); border-radius: 7px; }.grading-card.graded { background: #f4fbf6; border-color: #b8dec5; }
.grading-card.score-high { background: #f1faf4; border-color: #9fd2b0; }.grading-card.score-mid { background: #fff9e8; border-color: #e2c86e; }.grading-card.score-low { background: #fff1f1; border-color: #dfa2a2; }
.grading-student { display: flex; align-items: center; gap: 9px; }.grading-student > span:nth-child(2) { flex: 1; display: flex; flex-direction: column; }.grading-student small { color: var(--muted); font-size: 9px; }.grading-student a { color: var(--purple); font-size: 10px; font-weight: 700; }
.grading-fields { margin-top: 11px; display: grid; grid-template-columns: 120px minmax(220px,1fr) auto; align-items: end; gap: 10px; }.grading-fields label { display: grid; gap: 5px; color: #4b4650; font-size: 9px; font-weight: 700; }.score-input { height: 39px; display: flex; align-items: center; background: #fff; border: 1px solid #c9c5ce; border-radius: 5px; overflow: hidden; }.score-input input { width: 72px; height: 100%; padding: 0 9px; border: 0; outline: 0; font-size: 17px; font-weight: 800; }.score-input em { color: var(--muted); font-size: 9px; font-style: normal; }.grading-fields textarea { min-height: 39px; padding: 8px; resize: vertical; background: #fff; border: 1px solid #c9c5ce; border-radius: 5px; outline: 0; font: inherit; font-weight: 400; }.grading-fields input:focus,.grading-fields textarea:focus { border-color: var(--purple); box-shadow: 0 0 0 2px #e8dfff; }
@media (max-width: 760px) { .student-grade-card { align-items: flex-start; }.grade-mark { width: 58px; height: 58px; }.grading-fields { grid-template-columns: 1fr; }.grading-fields .btn { width: 100%; }.grading-student { flex-wrap: wrap; }.grading-student a { margin-left: 49px; } }

/* Completion, profile, groups and exams */
.completion-overview { padding: 15px 18px; display: grid; grid-template-columns: 180px 1fr auto; align-items: center; gap: 14px; border-bottom: 1px solid var(--border-light); background: #faf9fb; }.completion-overview > div:first-child { display: flex; align-items: baseline; gap: 7px; }.completion-overview strong { color: var(--purple); font-size: 22px; }.completion-overview span,.completion-overview small { color: var(--muted); font-size: 10px; }.completion-track { height: 8px; overflow: hidden; background: #e7e3eb; border-radius: 8px; }.completion-track i { display: block; height: 100%; background: linear-gradient(90deg,var(--purple),#9474db); border-radius: inherit; }.assignment-view-tabs a.active { color: var(--purple); font-weight: 750; border-bottom: 2px solid var(--purple); }.assignment-view-tabs b { margin-left: 5px; }
.assignment-mode-picker { margin-bottom:18px; padding:16px; background:#faf9fc; border:1px solid var(--border); border-radius:8px; }.assignment-mode-picker > div:first-child { display:grid; gap:3px; margin-bottom:11px; }.assignment-mode-picker > div:first-child small { color:var(--muted); font-size:10px; }.assignment-mode-options { display:grid; grid-template-columns:1fr 1fr; gap:10px; }.assignment-mode-options label { min-height:76px; padding:12px; display:grid; grid-template-columns:auto 1fr; grid-template-rows:auto auto; column-gap:10px; border:1px solid var(--border); border-radius:7px; background:#fff; cursor:pointer; }.assignment-mode-options label.active { border-color:var(--purple); background:#f5f0ff; box-shadow:0 0 0 1px var(--purple); }.assignment-mode-options input { position:absolute; opacity:0; }.assignment-mode-options label > span { grid-row:1 / 3; align-self:center; padding:6px 8px; color:var(--purple); background:var(--purple-soft); border-radius:6px; font-size:9px; font-weight:800; }.assignment-mode-options label > strong { align-self:end; }.assignment-mode-options label > small { align-self:start; color:var(--muted); font-size:9px; }.group-choice-icon { width:30px; height:30px; display:grid!important; place-items:center; color:var(--purple); background:var(--purple-soft); border-radius:8px; font-size:10px; font-weight:800; }.assignment-kind { padding:3px 7px; color:#5e3fa6; background:#eee7fb; border-radius:99px; font-size:8px; font-weight:800; }.group-submit-note { padding:10px 12px; color:#57486e; background:#f5f0ff; border:1px solid #ddd0f5; border-radius:7px; font-size:10px; }
.settings-grid { display: grid; grid-template-columns: 260px 1fr; gap: 18px; align-items: start; }.profile-summary { padding: 26px; display: flex; flex-direction: column; align-items: center; text-align: center; }.profile-summary h2 { margin: 12px 0 1px; }.profile-summary p { color: var(--muted); }.role-pill,.leader-badge { padding: 3px 7px; color: var(--purple); background: var(--purple-soft); border-radius: 10px; font-size: 8px; font-style: normal; font-weight: 800; }.profile-group { width: 100%; margin-top: 20px; padding-top: 14px; display: flex; flex-direction: column; border-top: 1px solid var(--border-light); }.profile-group small { color: var(--muted); }.profile-form > p { color: var(--muted); font-size: 11px; }
.group-create-form,.exam-create-form { margin-bottom: 20px; }.group-form-body { padding: 18px; display: grid; grid-template-columns: 1fr 1fr auto; gap: 13px; align-items: end; }.group-form-body > label,.exam-form-grid > label { display: grid; gap: 5px; color: #49434f; font-size: 10px; font-weight: 700; }.group-form-body input,.group-form-body select,.exam-form-grid input,.exam-form-grid select,.exam-form-grid textarea { width: 100%; min-height: 39px; padding: 8px 9px; border: 1px solid #c9c5ce; border-radius: 5px; background: #fff; outline: 0; }.group-form-body fieldset { grid-column: 1 / -1; padding: 0; border: 0; }.group-form-body legend { margin-bottom: 7px; font-size: 10px; font-weight: 700; }.group-member-picker { display: grid; grid-template-columns: repeat(4,1fr); gap: 8px; }.group-member-picker label { padding: 8px; display: flex; align-items: center; gap: 7px; border: 1px solid var(--border); border-radius: 6px; }.group-member-picker label:has(input:checked) { background: #f3effd; border-color: #ac96dc; }.group-member-picker input { width: 14px; min-height: 14px; }.group-member-picker label > span:last-child { display: flex; flex-direction: column; }.group-member-picker small { color: var(--muted); font-size: 8px; }.group-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 16px; }.group-card { overflow: hidden; }.group-card header { padding: 16px; display: flex; align-items: center; justify-content: space-between; border-bottom: 1px solid var(--border-light); background: #faf8ff; }.group-card header > div { display: flex; align-items: center; gap: 10px; }.group-card h2 { margin: 0; font-size: 16px; }.group-card p { margin: 1px 0 0; color: var(--muted); font-size: 9px; }.group-icon { width: 36px; height: 36px; display: grid; place-items: center; color: #fff; background: var(--purple); border-radius: 8px; font-weight: 800; }.leader-summary { color: var(--purple); font-size: 10px; font-weight: 700; }.group-members { padding: 12px; display: grid; grid-template-columns: 1fr 1fr; gap: 7px; }.group-member { padding: 7px; display: flex; align-items: center; gap: 8px; background: #faf9fb; border-radius: 6px; }.group-member > span:last-child { display: flex; flex-direction: column; }.group-member small { color: var(--muted); font-size: 8px; }
.exam-form-grid { padding: 18px; display: grid; grid-template-columns: repeat(3,1fr); gap: 13px; align-items: end; }.exam-form-grid .full { grid-column: 1 / -1; }.exam-list { display: grid; gap: 14px; }.exam-card { padding: 18px; border-left: 4px solid #aaa; }.exam-card.active { border-left-color: var(--green); }.exam-card.upcoming { border-left-color: var(--purple); }.exam-card.ended { border-left-color: var(--muted); }.exam-card > header { display: flex; justify-content: space-between; gap: 14px; }.exam-card h2 { margin: 6px 0 2px; font-size: 18px; }.exam-card header p { color: var(--muted); font-size: 9px; }.exam-type { padding: 3px 7px; color: #664d0d; background: #fff1c6; border-radius: 10px; font-size: 8px; font-weight: 800; }.exam-type.midterm { color: #573aa0; background: #eee7ff; }.exam-type.final { color: #a13a3a; background: #ffe8e8; }.exam-phase { height: fit-content; padding: 4px 8px; color: var(--muted); background: #f0edf2; border-radius: 10px; font-size: 9px; font-weight: 750; }.active .exam-phase { color: var(--green); background: var(--green-soft); }.exam-time { display: flex; gap: 18px; padding: 10px 0; color: var(--muted); border-top: 1px solid var(--border-light); border-bottom: 1px solid var(--border-light); font-size: 10px; }.exam-time strong { margin-left: auto; color: var(--ink); }.exam-instructions { margin: 12px 0; color: #4f4954; white-space: pre-wrap; }.exam-answer { margin-top: 14px; padding: 14px; background: #f8f7fa; border-radius: 7px; }.exam-questions { margin-bottom: 10px; }.exam-answer textarea { width: 100%; padding: 10px; border: 1px solid #c9c5ce; border-radius: 5px; resize: vertical; }.exam-answer .btn { margin-top: 9px; }.exam-submitted { margin-top: 12px; padding: 9px; color: var(--green); background: var(--green-soft); border-radius: 5px; font-weight: 700; }
@media (max-width: 900px) { .group-member-picker { grid-template-columns: repeat(2,1fr); }.exam-form-grid { grid-template-columns: 1fr 1fr; }.settings-grid { grid-template-columns: 1fr; }.profile-summary { align-items: flex-start; text-align: left; } }
@media (max-width: 620px) { .completion-overview,.group-form-body,.exam-form-grid { grid-template-columns: 1fr; }.completion-overview { gap: 8px; }.group-form-body fieldset,.exam-form-grid .full { grid-column: auto; }.group-member-picker,.group-grid,.group-members { grid-template-columns: 1fr; }.exam-time { flex-direction: column; gap: 3px; }.exam-time strong { margin-left: 0; } }

/* Persistent drafts */
.quick-icon.orange { color: var(--orange); background: #fff0e3; }
.draft-status { margin: 12px 18px 0; padding: 8px 10px; color: #5c4a17; background: #fff8dc; border: 1px solid #eadc9a; border-radius: 5px; font-size: 9px; }.form-panel > .draft-status { margin: 0 0 15px; }.exam-form-actions,.exam-answer-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; }.exam-form-actions { grid-column: 1 / -1; }.exam-answer-actions .draft-status { flex: 1; margin: 9px 0 0; }.exam-answer-actions .btn { margin-top: 9px; }
@media (max-width: 620px) { .exam-form-actions { grid-column: auto; }.exam-answer-actions { align-items: stretch; flex-direction: column; }.exam-answer-actions .draft-status,.exam-answer-actions .btn { margin-top: 5px; } }

/* Draft box, audit and computer-based exam */
.exam-form-grid { align-items: start; }
.exam-form-grid > label { align-content: start; grid-template-rows: 15px 39px minmax(14px,auto); }
.exam-form-grid > label > input,.exam-form-grid > label > select { height: 39px; }
.exam-form-grid > label > small { min-height: 14px; line-height: 14px; color: var(--muted); font-weight: 400; }
.draft-box-grid { display: grid; grid-template-columns: repeat(2,1fr); gap: 15px; }.draft-box-card { padding: 18px; }.draft-label { padding: 3px 8px; color: #78570b; background: #fff0bd; border-radius: 9px; font-size: 8px; font-weight: 800; }.draft-box-card h2 { margin: 10px 0 4px; font-size: 17px; }.draft-box-card > p { min-height: 42px; color: var(--muted); }.draft-box-card > div { display: flex; align-items: center; justify-content: space-between; gap: 10px; border-top: 1px solid var(--border-light); padding-top: 12px; }.draft-box-card small { color: var(--subtle); }.draft-box-card > div > span { display: flex; gap: 6px; }.draft-box-card form { display: inline-flex; }.audit-table { min-width: 760px; }.audit-action { padding: 3px 7px; color: #9c2929; background: #ffeded; border-radius: 9px; font-weight: 750; }.submission-record { display: flex; align-items: center; gap: 4px; }.submission-record > a { flex: 1; }.submission-record form button { width: 25px; height: 25px; border: 0; border-radius: 4px; color: var(--red); background: transparent; }.submission-record form button:hover { color: #fff; background: var(--red); }.issue-actions form { display: inline-flex; }
.question-builder { padding: 14px; background: #f8f7fa; border: 1px solid var(--border); border-radius: 7px; }.question-builder[hidden] { display: none; }.question-builder-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 11px; }.question-builder-head > div { display: flex; flex-direction: column; }.question-builder-head small { color: var(--muted); font-size: 9px; }.question-editor-list { display: grid; gap: 10px; }.question-editor { overflow: hidden; background: #fff; border: 1px solid var(--border); border-radius: 6px; }.question-editor > header { padding: 8px 10px; display: flex; justify-content: space-between; background: #f2eff5; }.question-editor header button { border: 0; background: none; color: var(--red); font-size: 9px; }.question-editor-grid { padding: 10px; display: grid; grid-template-columns: 1fr 110px; gap: 9px; }.question-editor-grid label { display: grid; gap: 4px; font-size: 9px; font-weight: 700; }.question-editor-grid .full { grid-column: 1 / -1; }.question-editor-grid input,.question-editor-grid select,.question-editor-grid textarea { width: 100%; padding: 7px 8px; border: 1px solid #c9c5ce; border-radius: 4px; resize: vertical; }.exam-question-summary { margin: 10px 0; color: var(--muted); font-size: 10px; }
.exam-take-page { max-width: 1050px; }.exam-take-header { position: sticky; z-index: 10; top: 70px; margin-bottom: 14px; padding: 18px; display: flex; justify-content: space-between; align-items: center; box-shadow: 0 8px 25px rgba(24,23,29,.09); }.exam-take-header h1 { margin: 2px 0; font-size: 23px; }.exam-take-header p { margin: 0; color: var(--muted); }.exam-countdown { min-width: 150px; padding: 10px 15px; display: flex; flex-direction: column; align-items: center; color: #fff; background: #292532; border-radius: 7px; }.exam-countdown span,.exam-countdown small { color: #cec8d4; font-size: 8px; }.exam-countdown strong { font-size: 25px; font-variant-numeric: tabular-nums; }.exam-countdown strong.urgent { color: #ff8b8b; }.exam-paper-form { display: grid; gap: 12px; }.exam-question { overflow: hidden; }.exam-question > header { padding: 9px 14px; display: flex; justify-content: space-between; background: #f5f2fa; border-bottom: 1px solid var(--border-light); }.exam-question header span { color: var(--purple); font-weight: 800; }.exam-question header em { color: var(--muted); font-size: 9px; font-style: normal; }.exam-question h2 { padding: 17px 18px 8px; font-size: 15px; }.answer-options { padding: 3px 18px 18px; display: grid; gap: 8px; }.answer-options.inline { grid-template-columns: repeat(2,minmax(100px,180px)); }.answer-options label { padding: 9px 11px; display: flex; align-items: center; gap: 8px; border: 1px solid var(--border); border-radius: 5px; }.answer-options label:has(input:checked) { color: #4a287e; background: #f2edff; border-color: #a78ed9; }.answer-text-input,.answer-textarea { width: calc(100% - 36px); margin: 3px 18px 18px; padding: 10px; border: 1px solid #c9c5ce; border-radius: 5px; }.answer-textarea { resize: vertical; }.exam-submit-bar { position: sticky; bottom: 10px; padding: 13px 16px; display: flex; align-items: center; justify-content: space-between; box-shadow: 0 8px 30px rgba(24,23,29,.16); }.exam-submit-bar span { color: var(--muted); font-size: 10px; }
@media (max-width: 700px) { .draft-box-grid { grid-template-columns: 1fr; }.exam-take-header { align-items: stretch; flex-direction: column; }.exam-countdown { margin-top: 10px; }.question-editor-grid { grid-template-columns: 1fr; }.question-editor-grid .full { grid-column: auto; }.exam-submit-bar { align-items: stretch; flex-direction: column; gap: 8px; } }

/* Question bank, exam progress, and study-group chat */
.exam-overview { display:flex; align-items:center; gap:18px; padding:20px 24px; margin-bottom:20px; border-left:4px solid var(--orange); }
.exam-overview-icon { width:54px; height:54px; border-radius:12px; display:grid; place-items:center; color:var(--orange); background:#fff4e9; font-size:24px; }
.exam-overview > div:nth-child(2) { display:flex; flex-direction:column; gap:3px; }.exam-overview > div:nth-child(2) span,.exam-overview small { color:var(--muted); font-size:11px; }.exam-overview > div:nth-child(2) strong { font-size:20px; }
.exam-overview-progress { margin-left:auto; width:min(300px,35%); display:grid; grid-template-columns:auto 1fr; align-items:center; gap:7px 12px; }.exam-overview-progress > strong { font-size:24px; color:var(--orange); }.exam-overview-progress > span { height:8px; background:#eee8f2; border-radius:99px; overflow:hidden; }.exam-overview-progress i { display:block; height:100%; background:linear-gradient(90deg,var(--orange),#f0a24c); border-radius:inherit; }.exam-overview-progress small { grid-column:2; }
.bank-picker { margin-top:14px; padding:14px; border:1px solid var(--border); border-radius:8px; background:#fbfafc; }.bank-picker > div:first-child { display:flex; justify-content:space-between; gap:12px; margin-bottom:10px; }.bank-picker-list { max-height:220px; overflow:auto; display:grid; gap:7px; }.bank-picker-list label { display:flex; gap:9px; align-items:flex-start; padding:9px; background:#fff; border:1px solid var(--border-light); border-radius:6px; }.bank-picker-list label span { display:flex; flex-direction:column; gap:3px; }.bank-picker-list small { color:var(--muted); }
.question-bank-tools { display:grid; grid-template-columns:1fr 1fr; gap:18px; margin-bottom:18px; }.bank-tool-card { padding:20px; display:flex; flex-direction:column; gap:13px; }.bank-tool-card > p { margin:0; color:var(--muted); }.bank-generate-row { display:grid; grid-template-columns:2fr 1fr; gap:10px; }.bank-imports,.bank-list-panel { margin-bottom:18px; padding:20px; }.bank-import-row { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:14px; padding:12px 0; border-top:1px solid var(--border-light); }.bank-import-row > div { display:flex; flex-direction:column; gap:3px; }.bank-import-row small { color:var(--muted); }.bank-import-row code { font-size:10px; padding:6px 8px; background:#f3f0f6; border-radius:5px; }
.bank-question-list { display:grid; gap:0; }.bank-question { display:grid; grid-template-columns:auto 1fr auto; gap:13px; padding:15px 0; border-top:1px solid var(--border-light); }.bank-question-type { align-self:start; min-width:46px; padding:5px 7px; color:var(--purple); background:#f0eafd; border-radius:5px; text-align:center; font-size:10px; font-weight:800; }.bank-question p { display:flex; flex-wrap:wrap; gap:5px; margin:7px 0; }.bank-question p span { padding:3px 7px; border-radius:4px; background:#f6f5f7; color:var(--muted); font-size:10px; }.bank-question small { color:var(--muted); }.text-button.danger { color:#bd3434; border:0; background:transparent; cursor:pointer; }
.group-chat { border-top:1px solid var(--border-light); margin-top:16px; padding-top:14px; }.group-chat-head { display:flex; justify-content:space-between; }.group-chat-head small { color:var(--muted); }.group-chat-messages { max-height:300px; overflow:auto; display:grid; gap:10px; margin:12px 0; }.group-chat-message { display:flex; gap:9px; }.group-chat-message > span:last-child { flex:1; padding:8px 10px; background:#f8f6fa; border-radius:7px; }.group-chat-message p { margin:3px 0; white-space:pre-wrap; }.group-chat-message small { color:var(--muted); }.group-chat-form { display:grid; grid-template-columns:1fr auto; align-items:end; gap:9px; }.group-chat-form textarea { resize:vertical; }
@media (max-width: 900px) { .question-bank-tools { grid-template-columns:1fr; }.bank-import-row { grid-template-columns:auto 1fr; }.bank-import-row code { grid-column:1/-1; }.exam-overview-progress { width:40%; } }
@media (max-width: 580px) { .exam-overview { align-items:flex-start; flex-wrap:wrap; }.exam-overview-progress { margin-left:0; width:100%; }.bank-generate-row,.group-chat-form { grid-template-columns:1fr; }.bank-question { grid-template-columns:auto 1fr; }.bank-question form { grid-column:2; }.stats-grid { grid-template-columns:1fr; } }

/* Exam review and grouped student directory */
.exam-review-link { margin-top:12px; display:flex; justify-content:flex-end; }.exam-review-link .btn span { min-width:22px; padding:2px 6px; border-radius:99px; background:#e7e1ee; text-align:center; }.exam-submitted { display:flex; align-items:center; gap:12px; flex-wrap:wrap; }.exam-submitted > span { margin-left:auto; }.exam-result { padding:7px 10px; border-radius:6px; }.exam-result strong { font-size:18px; }.score-high { color:#147848!important; background:#e8f7ef!important; }.score-mid { color:#9b6810!important; background:#fff5d8!important; }.score-low { color:#b13b3b!important; background:#fdeaea!important; }
.review-jump { padding:15px 18px; margin-bottom:16px; display:flex; align-items:center; gap:18px; }.review-jump nav { display:flex; gap:8px; flex-wrap:wrap; }.review-jump nav a { display:flex; align-items:center; gap:6px; padding:6px 9px; border:1px solid var(--border); border-radius:7px; background:#fff; }.review-jump nav em { color:var(--purple); font-size:9px; font-style:normal; }.exam-submission-review-list { display:grid; gap:18px; }.exam-submission-review { overflow:hidden; }.exam-submission-review > header { padding:18px 20px; display:flex; justify-content:space-between; align-items:center; background:#faf8fd; border-bottom:1px solid var(--border-light); }.review-score { min-width:72px; padding:9px 12px; border-radius:10px; text-align:center; }.review-score strong { font-size:25px; }.review-score small { font-size:10px; }.review-body { display:grid; grid-template-columns:minmax(0,1fr) 290px; }.review-answers { padding:20px; display:grid; gap:12px; }.review-answer { overflow:hidden; border:1px solid var(--border); border-radius:8px; }.review-answer > header { padding:8px 12px; display:flex; justify-content:space-between; background:#f7f4fa; color:var(--purple); font-size:10px; }.review-answer > header em { font-style:normal; }.review-answer h3 { padding:13px 14px 8px; margin:0; font-size:14px; }.student-answer,.reference-answer { margin:6px 14px 12px; padding:11px 12px; display:grid; gap:4px; border-radius:6px; }.student-answer { background:#f1ecfb; border-left:3px solid var(--purple); }.reference-answer { background:#edf8f1; border-left:3px solid var(--green); }.student-answer span,.reference-answer span { color:var(--muted); font-size:9px; }.student-answer strong,.reference-answer strong { white-space:pre-wrap; }.review-grading { padding:20px; border-left:1px solid var(--border-light); background:#fbfafc; }.review-grading form { position:sticky; top:80px; display:grid; gap:13px; }.review-grading label { display:grid; gap:6px; font-size:10px; font-weight:750; }.review-grading input,.review-grading textarea { width:100%; padding:10px; border:1px solid #c9c5ce; border-radius:6px; background:#fff; }.review-grading input { font-size:22px; font-weight:800; }.review-grading small { color:var(--muted); }.file-answer-panel { min-height:180px; display:flex; align-items:center; gap:14px; padding:24px; background:#f8f6fa; border:1px dashed #bdb5c8; border-radius:8px; }.file-answer-panel > div { flex:1; display:grid; gap:3px; }.file-answer-panel small { color:var(--muted); }
.grouped-directory { display:grid; gap:14px; padding:14px; }.directory-group { overflow:hidden; border:1px solid var(--border); border-radius:9px; background:#fff; }.directory-group > header { padding:12px 16px; background:#f7f4fa; border-bottom:1px solid var(--border); }.directory-group > header > div { display:flex; align-items:center; gap:10px; }.directory-group > header span:last-child { display:grid; gap:2px; }.directory-group > header small { color:var(--muted); }.directory-group-icon { width:32px; height:32px; display:grid; place-items:center; color:#fff; background:var(--purple); border-radius:8px; font-weight:800; }.directory-group .table-scroll { border:0; }.directory-group .student-table { border-radius:0; }

/* Redesigned group workspace */
.group-workspaces { display:grid; gap:20px; }.group-workspace { overflow:hidden; }.group-workspace-head { padding:20px 22px; display:flex; justify-content:space-between; align-items:center; background:linear-gradient(120deg,#f5efff,#fbf9ff 58%,#eef7ff); border-bottom:1px solid #ded7e8; }.group-workspace-head > div { display:flex; align-items:center; gap:13px; }.group-workspace-head .group-icon { width:46px; height:46px; border-radius:12px; box-shadow:0 7px 18px rgba(102,75,160,.2); }.group-workspace-head h2 { margin:1px 0 3px; font-size:20px; }.group-workspace-head p { margin:0; }.group-workspace-head span { color:var(--muted); font-size:10px; }.group-online-pill { padding:7px 10px; color:var(--green)!important; background:#e9f7ef; border-radius:99px; font-weight:750; }.group-workspace-body { display:grid; grid-template-columns:245px minmax(0,1fr); min-height:480px; }.group-roster { padding:18px; background:#faf9fb; border-right:1px solid var(--border-light); }.group-roster-head { display:flex; justify-content:space-between; margin-bottom:12px; }.group-roster-head span { min-width:22px; height:21px; display:grid; place-items:center; background:#e8e2ef; border-radius:99px; font-size:10px; }.group-roster-list { display:grid; gap:7px; }.group-roster-member { padding:9px; display:flex; align-items:center; gap:9px; border-radius:8px; }.group-roster-member:hover,.group-roster-member.is-me { background:#eee8f8; }.group-roster-member > span:last-child { display:grid; gap:2px; }.group-roster-member small { color:var(--muted); font-size:9px; }.group-privacy-note { margin-top:18px; padding:10px; color:var(--muted); background:#f0eef3; border-radius:7px; font-size:9px; line-height:1.5; }.group-conversation { min-width:0; display:grid; grid-template-rows:auto 1fr auto; }.group-conversation .group-chat-head { padding:16px 20px; border-bottom:1px solid var(--border-light); }.group-conversation .group-chat-head > div { display:grid; gap:3px; }.group-conversation .group-chat-head span { color:var(--muted); font-size:9px; }.group-conversation .group-chat-messages { max-height:520px; min-height:290px; margin:0; padding:20px; align-content:start; background:#fff; }.group-conversation .group-chat-message { max-width:78%; align-items:flex-start; }.group-conversation .group-chat-message > div { padding:10px 12px; background:#f4f1f7; border-radius:4px 12px 12px 12px; }.group-conversation .group-chat-message header { display:flex; gap:12px; justify-content:space-between; }.group-conversation .group-chat-message p { margin:6px 0 0; color:var(--ink); line-height:1.55; }.group-conversation .group-chat-message.mine { margin-left:auto; flex-direction:row-reverse; }.group-conversation .group-chat-message.mine > div { background:#eee7fc; border-radius:12px 4px 12px 12px; }.group-chat-empty { margin:auto; display:grid; place-items:center; text-align:center; color:var(--muted); }.group-chat-empty > span { width:48px; height:48px; display:grid; place-items:center; margin-bottom:8px; color:var(--purple); background:#f0eafd; border-radius:50%; font-size:20px; }.group-chat-empty p { margin:5px 0; }.group-conversation .group-chat-form { display:block; padding:15px 20px; border-top:1px solid var(--border-light); background:#fbfafc; }.group-conversation .group-chat-form textarea { width:100%; padding:11px; border:1px solid #c9c5ce; border-radius:8px; background:#fff; }.group-conversation .group-chat-form > div { margin-top:8px; display:flex; align-items:center; justify-content:space-between; }.group-conversation .group-chat-form small { color:var(--muted); }
@media (max-width: 900px) { .review-body,.group-workspace-body { grid-template-columns:1fr; }.review-grading { border-left:0; border-top:1px solid var(--border-light); }.group-roster { border-right:0; border-bottom:1px solid var(--border-light); }.group-roster-list { grid-template-columns:repeat(2,1fr); }.group-workspace-body { min-height:0; } }
@media (max-width: 580px) { .review-jump { align-items:flex-start; flex-direction:column; }.exam-submission-review > header,.group-workspace-head { align-items:flex-start; }.group-workspace-head { gap:12px; }.group-online-pill { display:none; }.group-roster-list { grid-template-columns:1fr; }.group-conversation .group-chat-message { max-width:94%; }.exam-submitted > span { margin-left:0; width:100%; }.directory-group .student-table { min-width:940px; } }
@media (max-width: 580px) { .assignment-mode-options { grid-template-columns:1fr; } }

/* Local student project monitor */
.project-monitor-header { margin-bottom:18px; }.monitor-safety-badge { padding:7px 11px; display:inline-flex; align-items:center; gap:7px; color:#126b3e; background:#edf9f2; border:1px solid #bfe4ce; border-radius:99px; font-size:10px; font-weight:800; }.monitor-safety-badge i { width:7px; height:7px; background:#18a25c; border-radius:50%; }
.monitor-stats { margin-bottom:18px; display:grid; grid-template-columns:repeat(4,1fr); gap:14px; }.monitor-stats article { min-height:105px; padding:17px; display:flex; align-items:center; gap:13px; background:#fff; border:1px solid var(--border); border-radius:9px; box-shadow:var(--shadow); }.monitor-stat-icon { width:43px; height:43px; flex:0 0 auto; display:grid; place-items:center; border-radius:10px; font-size:18px; font-weight:800; }.monitor-stat-icon.purple { color:var(--purple); background:var(--purple-soft); }.monitor-stat-icon.green { color:var(--green); background:var(--green-soft); }.monitor-stat-icon.blue { color:var(--blue); background:#e7f1ff; }.monitor-stat-icon.orange { color:var(--orange); background:#fff0e3; }.monitor-stats article > div { display:grid; grid-template-columns:1fr auto; flex:1; }.monitor-stats small { grid-column:1; color:var(--muted); font-size:9px; font-weight:750; }.monitor-stats strong { grid-column:2; grid-row:1/3; align-self:center; font-size:28px; }.monitor-stats em { grid-column:1; color:var(--subtle); font-size:9px; font-style:normal; }.monitor-info { margin-bottom:18px; }
.project-student-list { display:grid; gap:17px; }.monitored-student { overflow:hidden; }.monitored-student.online { border-left:4px solid var(--green); }.monitored-student.offline { border-left:4px solid #d39b18; }.monitored-student.unconfigured { border-left:4px solid var(--subtle); }.monitored-student-head { padding:16px 18px; display:flex; align-items:center; gap:15px; background:#faf9fb; border-bottom:1px solid var(--border-light); }.monitored-identity { min-width:250px; flex:1; display:flex; align-items:center; gap:11px; }.monitored-identity > span:last-child { display:grid; }.monitored-identity small { color:var(--muted); }.monitor-agent-state { min-width:145px; display:grid; justify-items:end; gap:3px; }.monitor-agent-state small { color:var(--subtle); font-size:9px; }.agent-pill { padding:4px 8px; display:inline-flex; align-items:center; gap:6px; border-radius:99px; font-size:9px; font-weight:800; }.agent-pill i { width:6px; height:6px; border-radius:50%; }.agent-pill.online { color:#126b3e; background:#e6f7ed; }.agent-pill.online i { background:#18a25c; }.agent-pill.offline { color:#946312; background:#fff4d5; }.agent-pill.offline i { background:#d39b18; }.agent-pill.unconfigured { color:#655f6b; background:#ebe8ef; }.agent-pill.unconfigured i { background:#8b8793; }
.monitored-project-grid { padding:16px; display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:13px; }.monitored-project { min-width:0; padding:16px; border:1px solid var(--border); border-radius:9px; background:#fff; }.monitored-project.needs-attention { border-color:#e7c88f; box-shadow:inset 0 3px #e4a339; }.monitored-project > header { display:flex; align-items:flex-start; gap:10px; }.project-folder { width:35px; height:35px; flex:0 0 auto; display:grid; place-items:center; color:var(--purple); background:var(--purple-soft); border-radius:8px; }.monitored-project header > div { min-width:0; flex:1; }.monitored-project h2 { margin:0; overflow:hidden; font-size:15px; text-overflow:ellipsis; white-space:nowrap; }.monitored-project code { color:var(--muted); font-size:9px; }.process-pill { padding:4px 7px; color:#126b3e; background:#e7f6ed; border-radius:99px; font-size:8px; font-weight:750; }.project-progress { margin:14px 0 5px; }.project-progress > div { display:flex; justify-content:space-between; font-size:9px; }.project-progress > span { height:6px; display:block; overflow:hidden; background:#ebe7ef; border-radius:99px; }.project-progress i { height:100%; display:block; background:linear-gradient(90deg,var(--purple),#9376d3); border-radius:inherit; }.project-metrics { margin:13px 0 0; padding-top:12px; display:grid; grid-template-columns:repeat(2,1fr); gap:11px; border-top:1px solid var(--border-light); }.project-metrics dt { color:var(--subtle); font-size:8px; font-weight:750; text-transform:uppercase; }.project-metrics dd { margin:2px 0 0; font-size:10px; }.alert-text { color:#ad6118!important; font-weight:750; }.project-last-commit { margin:13px 0 0; padding:9px 10px; display:grid; grid-template-columns:1fr auto; background:#f7f5f9; border-radius:6px; }.project-last-commit span { grid-column:1/-1; color:var(--subtle); font-size:8px; }.project-last-commit strong { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:10px; }.project-last-commit small { margin-left:8px; color:var(--purple); font-family:monospace; }.project-alert { margin-top:10px; padding:7px 9px; color:#995315; background:#fff4e4; border-radius:5px; font-size:9px; font-weight:700; }.monitor-student-footer { padding:9px 17px; display:flex; justify-content:space-between; color:var(--subtle); background:#faf9fb; border-top:1px solid var(--border-light); font-size:9px; }.monitor-empty { min-height:145px; padding:24px; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; }.monitor-empty > span { width:42px; height:42px; display:grid; place-items:center; color:var(--purple); background:var(--purple-soft); border-radius:50%; font-size:19px; }.monitor-empty strong { margin-top:7px; }.monitor-empty p { margin:3px 0 0; color:var(--muted); }
.agent-token-dialog { width:min(620px,calc(100vw - 28px)); padding:0; color:var(--ink); background:#fff; border:0; border-radius:12px; box-shadow:0 25px 70px rgba(24,17,36,.25); }.agent-token-dialog::backdrop { background:rgba(26,21,32,.55); }.agent-token-head { padding:18px 20px; display:flex; align-items:center; gap:11px; background:linear-gradient(110deg,#f1ebff,#faf8ff); border-bottom:1px solid #ded5ec; }.agent-token-head > span { width:38px; height:38px; display:grid; place-items:center; color:#fff; background:var(--purple); border-radius:9px; }.agent-token-head > div { flex:1; }.agent-token-head h2 { margin:0; font-size:17px; }.agent-token-head button { border:0; background:none; font-size:22px; }.agent-token-warning { margin:17px 20px 12px; padding:10px 12px; color:#85550e; background:#fff5da; border:1px solid #edd699; border-radius:7px; }.agent-token-warning p { margin:2px 0 0; font-size:9px; }.agent-token-dialog > label { margin:11px 20px; display:grid; gap:5px; font-size:9px; font-weight:750; }.agent-token-dialog input { width:100%; padding:9px 10px; border:1px solid #cbc5d0; border-radius:6px; background:#faf9fb; }.copy-field { display:grid; grid-template-columns:1fr auto; }.copy-field input { border-radius:6px 0 0 6px; font-family:monospace; }.copy-field button { padding:0 13px; color:var(--purple); background:#f0eafd; border:1px solid #c6b7e2; border-left:0; border-radius:0 6px 6px 0; font-weight:750; }.agent-setup-command { margin:15px 20px; padding:12px; display:grid; gap:4px; background:#28242e; color:#fff; border-radius:7px; }.agent-setup-command code { color:#d5c8ff; overflow-wrap:anywhere; }.agent-setup-command small { color:#aaa2b3; }.agent-token-dialog footer { padding:13px 20px 18px; display:flex; justify-content:flex-end; }
@media (max-width:1000px) { .monitor-stats { grid-template-columns:repeat(2,1fr); }.monitored-project-grid { grid-template-columns:1fr; } }
@media (max-width:650px) { .monitor-stats { grid-template-columns:1fr; }.monitored-student-head { align-items:flex-start; flex-wrap:wrap; }.monitor-agent-state { min-width:0; justify-items:start; }.monitored-student-head > .btn { margin-left:auto; }.monitor-student-footer { flex-direction:column; gap:3px; }.project-metrics { grid-template-columns:1fr; } }

/* Standalone AI conversation */
.ai-chat-page { max-width:1180px; height:calc(100vh - var(--topbar-h)); display:flex; flex-direction:column; padding-bottom:24px; }
.ai-chat-header { flex:0 0 auto; margin-bottom:18px; }.ai-chat-header h1 { display:flex; align-items:center; gap:8px; }.ai-chat-actions { display:flex; align-items:center; gap:10px; }
.ai-status { padding:7px 10px; display:inline-flex; align-items:center; gap:7px; color:var(--muted); background:#fff; border:1px solid var(--border); border-radius:99px; font-size:10px; font-weight:750; }.ai-status i { width:7px; height:7px; border-radius:50%; background:var(--subtle); }.ai-status.online { color:#126b3e; background:#edf9f2; border-color:#bfe4ce; }.ai-status.online i { background:#18a25c; box-shadow:0 0 0 3px rgba(24,162,92,.12); }.ai-status.offline { color:#9a5f12; background:#fff7e6; border-color:#eed9ae; }.ai-status.offline i { background:#d68b22; }
.ai-chat-workspace { min-height:520px; flex:1; overflow:hidden; display:grid; grid-template-rows:minmax(0,1fr) auto; border-radius:12px; box-shadow:0 10px 35px rgba(31,22,48,.07); }.ai-chat-thread { min-height:0; overflow-y:auto; padding:28px clamp(20px,5vw,64px); display:flex; flex-direction:column; gap:18px; background:linear-gradient(180deg,#fbf9ff 0,#fff 110px); scroll-behavior:smooth; }
.ai-chat-welcome { max-width:760px; margin:auto; text-align:center; }.ai-chat-welcome[hidden] { display:none; }.ai-chat-welcome > span { width:62px; height:62px; margin:0 auto 15px; display:grid; place-items:center; color:#fff; background:linear-gradient(145deg,#6948b9,#9675dd); border-radius:18px; box-shadow:0 12px 28px rgba(107,79,187,.25); font-size:28px; }.ai-chat-welcome h2 { margin:0 0 6px; font-size:24px; }.ai-chat-welcome > p { margin:0; color:var(--muted); }
.ai-prompt-grid { margin-top:28px; display:grid; grid-template-columns:repeat(3,1fr); gap:12px; }.ai-prompt-grid button { min-height:94px; padding:16px; display:flex; flex-direction:column; align-items:flex-start; justify-content:center; color:var(--ink); background:#fff; border:1px solid var(--border); border-radius:10px; text-align:left; font-weight:750; transition:border-color .16s,transform .16s,box-shadow .16s; }.ai-prompt-grid button:hover { transform:translateY(-2px); border-color:#a994d2; box-shadow:0 7px 18px rgba(43,29,72,.08); }.ai-prompt-grid small { margin-top:4px; color:var(--muted); font-size:10px; font-weight:400; }
.ai-message { max-width:min(760px,86%); display:flex; align-items:flex-start; gap:10px; }.ai-message > div { padding:12px 15px; background:#f2eff5; border-radius:5px 14px 14px 14px; box-shadow:0 1px 1px rgba(30,22,40,.04); }.ai-message strong { display:block; margin-bottom:4px; color:var(--muted); font-size:10px; }.ai-message p { margin:0; white-space:pre-wrap; overflow-wrap:anywhere; line-height:1.65; }.ai-message small { display:block; margin-top:7px; color:var(--subtle); font-size:9px; }.ai-message.user { align-self:flex-end; }.ai-message.user > div { color:#fff; background:linear-gradient(135deg,#5b70bf,#6e55bd); border-radius:14px 5px 14px 14px; }.ai-message.user strong { color:#e7eaff; }.ai-message-avatar { width:34px; height:34px; flex:0 0 auto; display:grid; place-items:center; color:#fff; background:linear-gradient(145deg,#6948b9,#9471da); border-radius:10px; font-size:9px; font-weight:850; }.ai-message.error > div { color:#8d2f2f; background:#fff0f0; }.ai-message.error .ai-message-avatar { background:#c93434; }.ai-message.loading p { color:var(--muted); animation:ai-pulse 1.2s ease-in-out infinite; }@keyframes ai-pulse { 50% { opacity:.45; } }
.ai-chat-composer { padding:15px clamp(20px,5vw,64px) 17px; background:#fff; border-top:1px solid var(--border); }.ai-chat-composer > label { display:block; margin-bottom:6px; color:var(--muted); font-size:10px; font-weight:750; }.ai-chat-composer textarea { width:100%; min-height:74px; max-height:180px; padding:12px 14px; resize:vertical; border:1px solid #c8c2ce; border-radius:9px; outline:0; line-height:1.55; }.ai-chat-composer textarea:focus { border-color:var(--purple); box-shadow:0 0 0 3px rgba(107,79,187,.12); }.ai-chat-composer > div { padding-top:9px; display:flex; align-items:center; justify-content:space-between; gap:15px; }.ai-chat-composer small { color:var(--subtle); font-size:9px; }.ai-chat-composer .btn { min-width:98px; }
@media (max-width:700px) { .ai-chat-page { height:auto; min-height:calc(100vh - var(--topbar-h)); }.ai-chat-header,.ai-chat-actions { align-items:flex-start; flex-direction:column; }.ai-chat-workspace { min-height:620px; }.ai-prompt-grid { grid-template-columns:1fr; }.ai-chat-welcome { margin:25px auto; }.ai-chat-thread { padding:20px 14px; }.ai-message { max-width:94%; }.ai-chat-composer { padding:13px 14px; }.ai-chat-composer > div { align-items:stretch; flex-direction:column; }.ai-chat-composer .btn { width:100%; } }

/* Learning survey (学情问卷) */
.nav-dot { flex:0 0 auto; margin-left:auto; width:7px; height:7px; border-radius:50%; background:#ff7c52; box-shadow:0 0 0 2px var(--sidebar); }
.survey-cta { display:flex; align-items:center; justify-content:space-between; gap:16px; margin-bottom:20px; padding:16px 20px; border-left:4px solid var(--purple); }
.survey-cta > div { display:flex; flex-direction:column; gap:3px; }.survey-cta > div strong { font-size:15px; }.survey-cta > div small { color:var(--muted); font-size:10px; }
.survey-section { margin-bottom:18px; overflow:hidden; }
.survey-section > header { padding:13px 17px; background:#f7f4fa; border-bottom:1px solid var(--border-light); }
.survey-section > header h2 { margin:0; font-size:14px; }
.survey-section-body { padding:16px 18px; display:grid; gap:20px; }
.survey-question { display:grid; gap:9px; }.survey-question > h3 { margin:0; font-size:13px; line-height:1.5; }
.survey-type { display:inline-block; margin-right:6px; padding:2px 7px; color:var(--purple); background:var(--purple-soft); border-radius:9px; font-size:8px; font-weight:800; vertical-align:1px; }
.survey-options { display:grid; gap:7px; }.survey-options.inline { grid-template-columns:repeat(2,minmax(0,1fr)); }
.survey-options label { display:flex; align-items:flex-start; gap:8px; padding:8px 11px; border:1px solid var(--border); border-radius:6px; background:#fff; }
.survey-options label:has(input:checked) { background:#f2edff; border-color:#a78ed9; }
.survey-options input { margin-top:2px; accent-color:var(--purple); }
.survey-text-input,.survey-textarea { width:100%; padding:9px 11px; border:1px solid #c9c5ce; border-radius:6px; background:#fff; }
.survey-text-input:focus,.survey-textarea:focus { border-color:var(--purple); box-shadow:0 0 0 2px #e8dfff; outline:0; }.survey-textarea { resize:vertical; }
.survey-actions { display:flex; justify-content:flex-end; gap:10px; }
.survey-answer { padding:10px 13px; background:#f5f2f9; border-left:3px solid var(--purple); border-radius:6px; white-space:pre-wrap; }
.survey-distribution { display:flex; flex-direction:column; gap:7px; }
.survey-distribution .bar-row { display:grid; grid-template-columns:170px 1fr auto; gap:10px; align-items:center; font-size:11px; }
.survey-distribution .bar-row > span:first-child { color:var(--muted); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.survey-distribution .bar-row em { color:var(--muted); font-style:normal; font-size:10px; min-width:24px; text-align:right; }
.survey-bar { height:8px; background:#ece8f1; border-radius:99px; overflow:hidden; }.survey-bar i { display:block; height:100%; background:linear-gradient(90deg,var(--purple),#9376d3); border-radius:inherit; }
.analysis-cards { display:grid; gap:14px; }.analysis-cards section { padding:16px 18px; }.analysis-cards h2 { margin:0 0 10px; font-size:14px; }.analysis-cards > section > p { margin:0; color:#4f4954; white-space:pre-wrap; }
.analysis-list { margin:0; padding-left:18px; display:grid; gap:6px; }.analysis-list li { font-size:12px; line-height:1.5; }
.survey-table { width:100%; border-collapse:collapse; min-width:720px; }.survey-table th,.survey-table td { padding:11px 13px; border-bottom:1px solid var(--border-light); text-align:left; font-size:11px; }.survey-table th { background:#f8f7f9; color:var(--muted); font-size:9px; text-transform:uppercase; letter-spacing:.04em; }.survey-table tbody tr:hover { background:#fcfbfd; }
.survey-badge { display:inline-block; margin-right:6px; padding:2px 7px; border-radius:9px; font-size:8px; font-weight:800; vertical-align:1px; }.survey-required { color:var(--purple); background:var(--purple-soft); }.survey-optional { color:var(--muted); background:#eeecef; }
.survey-toast { border-left-color:var(--red); }
.profile-static { padding:9px 0; font-size:14px; line-height:1.5; color:var(--text,#222); min-height:22px; }
.survey-missing-flash { background:#f4f4f5; box-shadow:0 0 0 1px #c4c4cc; border-radius:6px; animation:surveyMissingPulse 1.6s ease 0s 1; }
@keyframes surveyMissingPulse { 0%,100% { box-shadow:0 0 0 1px rgba(90,90,100,.3); background-color:#f4f4f5; filter:brightness(1); } 12.5%,37.5%,62.5% { box-shadow:0 0 0 4px rgba(90,90,100,.45); background-color:#e9e9ec; filter:brightness(.92); } 25%,50%,75% { box-shadow:0 0 0 1px rgba(90,90,100,.3); background-color:#fafafa; filter:brightness(1.04); } }
.survey-flash-overlay { position:fixed; inset:0; z-index:60; pointer-events:none; opacity:0; background:rgba(40,40,50,.14); animation:surveyOverlayFlash .8s ease 0s 2; }
@keyframes surveyOverlayFlash { 0%,100% { opacity:0; } 50% { opacity:1; } }
@media (max-width:700px) { .survey-options.inline { grid-template-columns:1fr; }.survey-cta { align-items:flex-start; flex-direction:column; }.survey-distribution .bar-row { grid-template-columns:120px 1fr auto; } }

/* 个人信息完善弹窗 */
.profile-modal { position:fixed; z-index:100; inset:0; display:flex; align-items:center; justify-content:center; padding:20px; background:rgba(24,23,29,.52); }
.profile-modal-card { width:min(440px,100%); padding:28px 26px 22px; background:var(--panel); border:1px solid var(--border); border-radius:12px; box-shadow:0 20px 60px rgba(24,23,29,.28); }
.profile-modal-card h2 { margin:0 0 10px; font-size:18px; letter-spacing:-.2px; }
.profile-modal-card p { margin:0 0 20px; color:var(--muted); font-size:13px; }
.profile-modal-actions { display:flex; justify-content:flex-end; gap:8px; }

/* 用户资料详情：字段名称与内容保持同行，长内容在内容列内换行。 */
.profile-fields { margin:0; display:flex; flex-direction:column; gap:0; }
.profile-field { display:grid; grid-template-columns:110px minmax(0,1fr); gap:14px; align-items:baseline; padding:11px 0; border-bottom:1px solid var(--border-light); }
.profile-field:last-child { border-bottom:0; }
.profile-field dt { color:var(--muted); font-weight:700; }
.profile-field dd { min-width:0; margin:0; overflow-wrap:anywhere; word-break:break-word; }
@media (max-width:580px) { .profile-field { grid-template-columns:78px minmax(0,1fr); gap:10px; } }

/* 答疑安排：设置页动态行、资料页多行展示与旧文本回退。 */
.schedule-list { list-style:none; margin:0; padding:0; display:flex; flex-direction:column; gap:6px; }
.schedule-item { display:flex; flex-wrap:wrap; align-items:baseline; gap:4px 10px; font-size:14px; line-height:1.5; }
.schedule-item .schedule-weekday { font-weight:700; min-width:34px; }
.schedule-item .schedule-time { color:var(--purple,#6b4fa0); font-variant-numeric:tabular-nums; }
.schedule-item .schedule-location { color:var(--muted); overflow-wrap:anywhere; word-break:break-word; }
.schedule-legacy { color:var(--muted); }
.schedule-editor { display:flex; flex-direction:column; gap:10px; margin-top:6px; }
.schedule-rows { display:flex; flex-direction:column; gap:8px; }
.schedule-row { display:grid; grid-template-columns:96px minmax(0,1fr) minmax(0,1fr) minmax(0,1.4fr) auto; gap:8px; align-items:center; }
.schedule-row .schedule-weekday, .schedule-row .schedule-time, .schedule-row .schedule-location { width:100%; box-sizing:border-box; min-width:0; }
.schedule-row .schedule-remove { white-space:nowrap; }
.schedule-row .schedule-remove:disabled { opacity:.45; cursor:not-allowed; }
.schedule-add { align-self:flex-start; }
@media (max-width:700px) {
  .schedule-row { grid-template-columns:minmax(0,1fr) minmax(0,1fr); }
  .schedule-row .schedule-weekday { grid-column:1; grid-row:1; }
  .schedule-row .schedule-remove { grid-column:2; grid-row:1; justify-self:end; }
  .schedule-row .schedule-time { grid-row:2; }
  .schedule-row .schedule-location { grid-column:1 / -1; grid-row:3; }
}
