@import"https://fonts.googleapis.com/css2?family=IBM+Plex+Mono:wght@400;500;600&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=Space+Grotesk:wght@500;600;700&display=swap";:root{--font-body: "Plus Jakarta Sans", "Segoe UI", "Trebuchet MS", sans-serif;--font-display: "Space Grotesk", "Avenir Next", "Segoe UI", sans-serif;--font-mono: "IBM Plex Mono", "SFMono-Regular", Consolas, monospace;--bg-950: #020a14;--bg-900: #061325;--bg-860: #0a1d34;--bg-820: #122944;--surface-760: rgba(17, 36, 57, .88);--surface-700: rgba(20, 42, 66, .94);--surface-640: rgba(24, 51, 78, .96);--accent: #55c3ff;--accent-strong: #10a4ef;--accent-soft: rgba(85, 195, 255, .18);--accent-soft-2: rgba(85, 195, 255, .11);--ok: #34d399;--warn: #fbbf24;--danger: #fb7185;--text: #edf5ff;--text-soft: #d6e6f8;--muted: #9cb5ce;--muted-strong: #bfd2e6;--border: rgba(163, 196, 227, .2);--border-strong: rgba(163, 196, 227, .32);--shadow-card: 0 24px 55px rgba(0, 0, 0, .35);--shadow-soft: 0 12px 32px rgba(4, 13, 24, .25);--radius-xl: 22px;--radius-lg: 16px;--radius-md: 12px;--radius-sm: 9px;color-scheme:dark}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{width:100%;height:100%;min-height:100%}html,body{overflow:hidden;overscroll-behavior:none}body{position:relative;background:radial-gradient(circle at 14% 10%,rgba(40,101,164,.46),transparent 34%),radial-gradient(circle at 88% 12%,rgba(16,99,169,.38),transparent 32%),radial-gradient(circle at 72% 88%,rgba(8,56,97,.42),transparent 40%),linear-gradient(140deg,var(--bg-950) 0%,var(--bg-900) 56%,#0a2138 100%);font-family:var(--font-body);color:var(--text);font-size:14px;line-height:1.45;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body:before{content:"";position:fixed;inset:0;pointer-events:none;opacity:.12;background-image:linear-gradient(0deg,rgba(255,255,255,.15) 1px,transparent 1px),linear-gradient(90deg,rgba(255,255,255,.12) 1px,transparent 1px);background-size:48px 48px;-webkit-mask-image:radial-gradient(circle at center,black 32%,transparent 76%);mask-image:radial-gradient(circle at center,black 32%,transparent 76%)}body:after{content:"";position:fixed;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 120%,rgba(30,117,190,.24),transparent 64%)}#root{isolation:isolate}button,input,textarea{font:inherit}a{color:inherit}.app-root{display:flex;gap:14px;width:100%;height:100dvh;min-height:100vh;padding:14px}.sidebar,.chat-panel{border-radius:var(--radius-xl);border:1px solid var(--border);box-shadow:var(--shadow-card);-webkit-backdrop-filter:blur(9px) saturate(140%);backdrop-filter:blur(9px) saturate(140%)}.sidebar{width:360px;min-width:280px;flex-shrink:0;display:flex;flex-direction:column;min-height:0;overflow:hidden;background:linear-gradient(175deg,#10243bf5,#0b1a2cf5);animation:fadeIn .35s ease-out}.sidebar-header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:18px 18px 14px;border-bottom:1px solid var(--border)}.sidebar-header-content{min-width:0}.sidebar-label{font-family:var(--font-display);font-size:11px;letter-spacing:.11em;text-transform:uppercase;color:var(--accent)}.sidebar-value{margin-top:4px;font-size:12px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sidebar-refresh-btn{flex-shrink:0}.refresh-icon{display:inline-block}.refresh-icon.is-spinning{animation:spin .75s linear infinite}.graph-container{position:relative;flex:1 1 0;min-height:0;background:radial-gradient(circle at 45% 18%,rgba(18,81,140,.18),transparent 52%)}.sidebar-section{flex-shrink:0;padding:13px 16px 16px;border-top:1px solid var(--border);background:linear-gradient(180deg,#0a18294d,#050e1975)}.sidebar-system-title{margin-bottom:8px;color:var(--muted);font-size:10.5px;letter-spacing:.09em;text-transform:uppercase}.sidebar-info-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:4px 0}.sidebar-info-key{color:var(--muted);font-size:12px}.sidebar-info-value{font-family:var(--font-mono);font-size:12px;max-width:65%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.sidebar-toggle-btn{width:100%;margin-top:10px;justify-content:center}.sidebar-config-panel{margin-top:10px;display:flex;flex-direction:column;gap:8px;animation:fadeIn .2s ease}.config-apply-btn{width:100%;justify-content:center}.chat-panel{flex:1 1 0;min-width:0;min-height:0;display:flex;flex-direction:column;overflow:hidden;background:linear-gradient(170deg,#11253ac7,#0b1b2be6);animation:fadeIn .42s ease-out}.chat-panel.is-ingest{overflow:hidden}.header{display:flex;align-items:center;gap:14px;padding:14px 20px;border-bottom:1px solid var(--border);background:linear-gradient(180deg,#0b1928eb,#0a1523c2);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:20}.header-main{margin-right:auto;min-width:0}.header-kicker{color:var(--muted);font-size:10px;letter-spacing:.11em;text-transform:uppercase}.header-title{margin-top:1px;font-family:var(--font-display);font-size:22px;line-height:1.08;letter-spacing:-.02em;color:var(--text)}.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap;justify-content:flex-end}.header-status{display:flex;align-items:center;gap:8px;max-width:230px;padding:7px 11px;border-radius:999px;background:#55c3ff14;border:1px solid rgba(85,195,255,.16)}.header-status-id{color:var(--muted-strong);font-family:var(--font-mono);font-size:11px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.status-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}.status-dot.active{background:var(--ok);box-shadow:0 0 12px #34d399cc}.status-dot.inactive{background:var(--warn)}.messages-container{flex:1 1 0;min-height:0;overflow-y:auto;overflow-x:hidden;display:flex;flex-direction:column;gap:18px;padding:22px 26px;scroll-behavior:smooth;scrollbar-gutter:stable}.messages-container::-webkit-scrollbar{width:8px}.messages-container::-webkit-scrollbar-track{background:transparent}.messages-container::-webkit-scrollbar-thumb{background:#88adce47;border:2px solid transparent;border-radius:8px;background-clip:content-box}.messages-container::-webkit-scrollbar-thumb:hover{background:#88adce70;background-clip:content-box}.messages-loading{display:inline-flex;align-items:center;gap:12px;width:fit-content;color:var(--muted-strong);background:#55c3ff12;border:1px solid rgba(85,195,255,.18);border-radius:999px;padding:8px 14px}.messages-end-spacer{height:1px}.message-group{display:flex;align-items:flex-start;gap:11px;animation:slideUp .22s ease-out}.message-group.user{flex-direction:row-reverse}.message-avatar{width:32px;height:32px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-family:var(--font-display);font-size:12px;font-weight:700}.message-avatar.assistant{color:#05233b;background:linear-gradient(160deg,#8de0ff,#42b8f7);box-shadow:0 6px 18px #0c7ebe57}.message-avatar.user{color:#1f2f44;background:linear-gradient(155deg,#e4edf9,#c9d9ec);border:1px solid rgba(177,196,216,.65)}.message-bubble{max-width:min(78%,820px);padding:12px 14px;border-radius:var(--radius-md);font-size:13.5px;line-height:1.72;word-break:break-word;overflow-wrap:break-word;box-shadow:var(--shadow-soft)}.message-bubble.assistant{background:linear-gradient(170deg,#142c44e6,#0c1d2eeb);border:1px solid var(--border);border-top-left-radius:4px}.message-bubble.user{background:linear-gradient(165deg,#edf6ff33,#d1e3f529);border:1px solid rgba(191,214,235,.32);border-top-right-radius:4px}.typing-indicator{display:inline-flex;align-items:center;gap:4px;color:var(--muted-strong);letter-spacing:.03em}.typing-dot{width:6px;height:6px;border-radius:50%;background:var(--muted);display:inline-block;animation:blink 1.2s var(--blink-delay, 0s) infinite}.suggested-prompts{display:flex;flex-wrap:wrap;gap:8px;padding:10px 24px 13px;border-top:1px solid var(--border);background:#0a192975}.btn-pill{border:1px solid rgba(85,195,255,.3);background:linear-gradient(170deg,#55c3ff1f,#55c3ff0d);color:var(--text-soft);border-radius:999px;font-size:12px;font-weight:500;letter-spacing:.01em;padding:6px 13px;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.btn-pill:hover{transform:translateY(-1px);border-color:#55c3ff7a;background:linear-gradient(170deg,#55c3ff33,#55c3ff1a)}.input-container{padding:13px 20px 18px;border-top:1px solid var(--border);background:linear-gradient(180deg,#091421a8,#091421e6)}.input-wrapper{display:flex;align-items:flex-end;gap:10px;border:1px solid var(--border);background:linear-gradient(165deg,#12263be6,#0c1c2bf2);border-radius:14px;padding:10px 11px 10px 14px;transition:border-color .18s ease,box-shadow .18s ease,transform .18s ease}.input-wrapper:focus-within{border-color:#55c3ff8a;box-shadow:0 0 0 3px #55c3ff2e;transform:translateY(-1px)}.input-textarea{flex:1;min-height:22px;max-height:140px;resize:none;overflow-y:auto;border:none;outline:none;background:transparent;color:var(--text);font-family:var(--font-body);font-size:14px;line-height:1.55}.input-textarea::placeholder{color:var(--muted)}.input-textarea:disabled{opacity:.6;cursor:not-allowed}.input-send-btn{width:34px;height:34px;border-radius:10px;border:1px solid rgba(117,205,255,.56);background:linear-gradient(165deg,#7ed8ff,#34aaf0);color:#072035;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;flex-shrink:0;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}.input-send-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 8px 20px #1896d666}.input-send-btn:disabled{opacity:.35;cursor:not-allowed}.input-hint{margin-top:7px;color:var(--muted);font-size:11px}.class-insights-container{flex:1 1 0;min-height:0;overflow:hidden}.class-insights-page{height:100%;overflow:auto;display:flex;flex-direction:column;gap:14px;padding:18px 22px 24px}.class-insights-header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.class-insights-title{font-family:var(--font-display);font-size:21px;line-height:1.15;letter-spacing:-.015em}.class-insights-subtitle{margin-top:4px;font-size:12px;color:var(--muted)}.class-insights-summary{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));gap:10px}.class-insights-card{background:linear-gradient(165deg,#12273ce0,#0d1f31e6);border:1px solid var(--border);border-radius:var(--radius-md);padding:11px 12px}.class-insights-card-label{color:var(--muted);font-size:10.5px;letter-spacing:.08em;text-transform:uppercase}.class-insights-card-value{margin-top:6px;font-family:var(--font-display);font-size:27px;line-height:1;color:var(--text)}.class-insights-section{background:linear-gradient(167deg,#102336d9,#0b1c2cdb);border:1px solid var(--border);border-radius:var(--radius-lg);padding:12px}.class-insights-visuals{display:grid;grid-template-columns:1.1fr 1fr 1fr;gap:10px}.class-insights-visual-card{border-radius:var(--radius-lg);border:1px solid var(--border);background:linear-gradient(167deg,#102336db,#0b1c2ce0);padding:12px;display:flex;flex-direction:column;gap:10px;min-height:260px}.class-insights-visual-title{font-family:var(--font-display);color:var(--text-soft);font-size:14px;letter-spacing:-.01em}.class-insights-subtitle-mini{color:var(--muted);font-size:10px;letter-spacing:.08em;text-transform:uppercase;margin-top:1px}.class-insights-subtitle-mini-risk{margin-top:6px}.class-insights-mastery-wrap{display:flex;align-items:center;gap:12px}.class-insights-donut-shell{position:relative;width:140px;height:140px;flex-shrink:0}.class-insights-donut{width:140px;height:140px}.class-insights-donut-center{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none}.class-insights-donut-value{font-family:var(--font-display);font-size:26px;line-height:1;color:var(--text)}.class-insights-donut-label{margin-top:2px;font-size:10px;letter-spacing:.07em;text-transform:uppercase;color:var(--muted)}.class-insights-legend{display:flex;flex-direction:column;gap:6px;width:100%}.class-insights-legend-row{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--muted-strong);font-size:11px}.class-insights-legend-left{display:inline-flex;align-items:center;gap:7px}.class-insights-legend-right{color:var(--muted);font-family:var(--font-mono);font-size:10.5px}.class-insights-legend-dot{width:9px;height:9px;border-radius:50%;display:inline-block}.class-insights-inline-stats{margin-top:auto;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.class-insights-inline-stat{border:1px solid rgba(163,196,227,.16);border-radius:10px;background:#06121e66;padding:8px 9px}.class-insights-inline-stat span{display:block;color:var(--muted);font-size:10px;letter-spacing:.07em;text-transform:uppercase}.class-insights-inline-stat strong{display:block;margin-top:4px;font-family:var(--font-display);font-size:18px;line-height:1;color:var(--text-soft)}.class-insights-bar-list{display:flex;flex-direction:column;gap:9px}.class-insights-bar-row{display:flex;flex-direction:column;gap:5px}.class-insights-bar-head{display:flex;align-items:baseline;justify-content:space-between;gap:10px}.class-insights-bar-label{color:var(--text-soft);font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.class-insights-bar-value{color:var(--muted);font-size:10px;font-family:var(--font-mono);flex-shrink:0}.class-insights-bar-track{width:100%;height:8px;border-radius:999px;background:#a3c4e324;overflow:hidden}.class-insights-bar-fill{height:100%;border-radius:inherit;background:linear-gradient(90deg,#65d2ff,#2aa8f1)}.class-insights-bar-fill.is-danger{background:linear-gradient(90deg,#fda4af,#fb7185)}.class-insights-bar-fill.is-success{background:linear-gradient(90deg,#6ee7b7,#22c55e)}.class-insights-section-title{margin-bottom:10px;font-family:var(--font-display);font-size:15px;letter-spacing:-.01em;color:var(--text-soft)}.class-insights-table-wrap{overflow:auto;border-radius:12px;border:1px solid rgba(163,196,227,.16);background:#06121e57}.class-insights-table{width:100%;border-collapse:collapse;min-width:760px;font-size:12px}.class-insights-table th{position:sticky;top:0;z-index:1;text-align:left;padding:9px 11px;font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);background:#0a1a2af5;border-bottom:1px solid rgba(163,196,227,.16)}.class-insights-table td{padding:10px 11px;color:var(--text-soft);border-top:1px solid rgba(163,196,227,.1);vertical-align:top;line-height:1.45}.class-insights-table tbody tr:nth-child(2n) td{background:#ffffff04}.class-insights-table tbody tr:hover td{background:#55c3ff14}.class-insights-risk-badge{display:inline-flex;align-items:center;justify-content:center;min-width:56px;border-radius:999px;border:1px solid;padding:2px 8px;font-size:10px;font-family:var(--font-mono)}.class-insights-risk-badge-low{color:#bbf7d0;background:#34d39929;border-color:#34d39980}.class-insights-risk-badge-medium{color:#fde68a;background:#fbbf2429;border-color:#fbbf2480}.class-insights-risk-badge-high{color:#fecdd3;background:#fb71852e;border-color:#fb718580}.class-insights-student-id{margin-top:2px;color:var(--muted);font-family:var(--font-mono);font-size:10.5px}.class-insights-empty{color:var(--muted);font-size:12px;padding:6px 0 2px}.class-insights-state{height:100%;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:10px;color:var(--muted-strong);text-align:center}.class-insights-state-error{color:#f8b3c0}.input-cfg{width:100%;border:1px solid rgba(163,196,227,.22);border-radius:10px;background:#081422b8;color:var(--text);font-size:12.5px;font-family:var(--font-mono);padding:8px 10px;outline:none;transition:border-color .16s ease,box-shadow .16s ease}.input-cfg:focus{border-color:#55c3ff7a;box-shadow:0 0 0 3px #55c3ff26}.btn-base{display:inline-flex;align-items:center;justify-content:center;gap:6px;border-radius:10px;padding:7px 11px;font-size:12px;font-weight:600;letter-spacing:.01em;cursor:pointer;border:1px solid transparent;transition:transform .16s ease,border-color .16s ease,background .16s ease,color .16s ease}.btn-base:disabled{opacity:.5;cursor:not-allowed;transform:none}.btn-secondary{background:linear-gradient(165deg,#55c3ff33,#14609126);border-color:#55c3ff52;color:#e9f5ff}.btn-secondary:hover:not(:disabled){transform:translateY(-1px);border-color:#55c3ff8f;background:linear-gradient(165deg,#55c3ff4d,#14609138)}.btn-ghost{background:#ffffff05;border-color:#a3c4e324;color:var(--muted-strong)}.btn-ghost:hover:not(:disabled){transform:translateY(-1px);background:#55c3ff1a;border-color:#55c3ff42;color:var(--text)}.spinner-small{width:15px;height:15px;border:2px solid rgba(85,195,255,.2);border-top-color:var(--accent);border-radius:50%;animation:spin .65s linear infinite}.graph-controls{position:absolute;right:12px;bottom:12px;display:flex;flex-direction:column;gap:4px;z-index:20}.graph-ctrl-btn{width:30px;height:30px;border-radius:9px;border:1px solid rgba(163,196,227,.2);background:#05101cdb;color:var(--muted);font-size:15px;line-height:1;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:border-color .16s ease,color .16s ease,background .16s ease}.graph-ctrl-btn:hover{color:var(--text);border-color:#55c3ff66;background:#091b2beb}.graph-legend{position:absolute;left:11px;bottom:11px;z-index:20;display:flex;flex-direction:column;gap:5px;padding:7px 9px;border-radius:10px;border:1px solid rgba(163,196,227,.2);background:#071320c7;color:var(--muted-strong);font-size:10px}.graph-hint{position:absolute;top:10px;left:50%;transform:translate(-50%);color:var(--muted);font-size:9.5px;letter-spacing:.07em;text-transform:uppercase;pointer-events:none;white-space:nowrap}.graph-state{width:100%;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:var(--muted);font-size:12px;text-align:center;line-height:1.6;padding:20px}.graph-spinner{width:26px;height:26px;border-radius:50%;border:2px solid rgba(163,196,227,.3);border-top-color:var(--accent);animation:spin .82s linear infinite}.ndp{position:absolute;left:0;right:0;bottom:0;z-index:30;max-height:min(70dvh,570px);overflow-y:auto;padding:15px;background:linear-gradient(180deg,#081625f2,#06111df2);border-top:1px solid var(--ndp-stroke, rgba(85, 195, 255, .34));box-shadow:0 -14px 30px #030b13a6;animation:slideUp .2s ease-out}.ndp-header{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;margin-bottom:12px}.ndp-title-block{min-width:0;display:flex;flex-direction:column;gap:4px}.ndp-chip{width:fit-content;border:1px solid;border-radius:999px;padding:2px 8px;font-size:9px;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.ndp-title{max-width:240px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-family:var(--font-display);font-size:15px;color:var(--text)}.ndp-course{color:var(--muted);font-size:11px;font-family:var(--font-mono)}.ndp-close{border:1px solid rgba(163,196,227,.24);border-radius:8px;background:#ffffff08;color:var(--muted);font-size:12px;line-height:1;cursor:pointer;padding:6px;transition:border-color .16s ease,color .16s ease,background .16s ease}.ndp-close:hover{border-color:#55c3ff70;color:var(--text);background:#55c3ff1a}.ndp-body{display:flex;align-items:center;gap:14px;margin-bottom:12px}.ndp-ring{flex-shrink:0}.ndp-stats{flex:1;min-width:0;display:flex;flex-direction:column;gap:6px}.ndp-stat-row{display:flex;align-items:center;justify-content:space-between;gap:8px}.ndp-stat-key{color:var(--muted);font-size:11px}.ndp-stat-val{color:var(--muted-strong);font-family:var(--font-mono);font-size:11px}.ndp-actions{display:flex;flex-direction:column;gap:6px}.ndp-subtopic-card{border:1px solid rgba(163,196,227,.2);border-radius:10px;padding:10px;background:#0d1f31d1}.ndp-subtopic-title{margin-bottom:6px;color:var(--text-soft);font-size:12px;font-weight:600}.ndp-subtopic-note{color:var(--muted);font-size:10.5px;line-height:1.5}.ndp-subtopic-empty{color:var(--muted-strong);font-size:11px;padding:8px 0}.ndp-subtopic-table-wrap{max-height:220px;overflow:auto;margin-top:6px;border-radius:8px;border:1px solid rgba(163,196,227,.2);background:#040f1b66}.ndp-subtopic-table{width:100%;border-collapse:collapse;font-size:10.5px}.ndp-subtopic-table th{position:sticky;top:0;z-index:1;padding:7px 8px;text-align:left;color:var(--muted);font-size:10px;background:#091523f5;border-bottom:1px solid rgba(163,196,227,.2)}.ndp-subtopic-table td{padding:7px 8px;color:var(--text-soft);border-top:1px solid rgba(163,196,227,.12);vertical-align:middle}.ndp-subtopic-table tr.is-active td{background:#55c3ff1c}.ndp-subtopic-pick{width:100%;text-align:left;border:none;background:transparent;color:inherit;font-size:10.8px;cursor:pointer;line-height:1.35}.ndp-subtopic-pick:hover{color:#9ae0ff}.ndp-subtopic-badge{display:inline-block;border-radius:999px;border:1px solid;padding:1px 7px;font-size:9px;font-weight:700;letter-spacing:.03em}.ndp-subtopic-badge-strength{background:#34d39924;border-color:#34d39980;color:#7ef0be}.ndp-subtopic-badge-developing{background:#f59e0b24;border-color:#f59e0b80;color:#fcd47f}.ndp-subtopic-badge-weakness{background:#fb718526;border-color:#fb718580;color:#fec2cf}.ndp-subtopic-badge-unknown{background:#9cb5ce29;border-color:#9cb5ce66;color:#c3d8ea}.ndp-subtopic-query{margin-top:8px;display:flex;flex-direction:column;gap:7px}.ndp-subtopic-selected{font-size:10.5px;color:var(--muted-strong)}.ndp-btn{width:100%;text-align:left;border:1px solid transparent;border-radius:8px;padding:8px 10px;cursor:pointer;font-size:11px;transition:transform .15s ease,border-color .15s ease,background .15s ease,opacity .15s ease}.ndp-btn:hover{transform:translateY(-1px)}.ndp-btn-primary{background:var(--btn-bg, rgba(85, 195, 255, .15));border-color:var(--btn-color, rgba(85, 195, 255, .36));color:var(--btn-color, #86d8ff);font-weight:600}.ndp-btn-secondary{background:#fbbf241f;border-color:#fbbf2457;color:#f8d682}.ndp-btn-secondary:hover{background:#fbbf2433}.ndp-btn-ghost{background:#ffffff05;border-color:#a3c4e333;color:var(--muted-strong)}.ndp-btn-ghost:hover{background:#55c3ff1a;border-color:#55c3ff4d}.thinking-box{margin:10px 12px;padding:10px 12px;border-radius:12px;background:#ffffff0a;border:1px solid rgba(255,255,255,.08)}.thinking-label{margin-bottom:6px;font-size:12px;opacity:.9}.thinking-details{display:grid;gap:4px;font-size:12px;opacity:.75}.thinking-line{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}@media(max-width:1280px){.sidebar{width:320px;min-width:250px}.header-title{font-size:19px}}@media(max-width:1024px){.app-root{flex-direction:column;gap:10px;padding:10px}.sidebar{width:100%;min-width:0;height:44dvh}.chat-panel{flex:1;min-height:0}.header{flex-wrap:wrap;align-items:flex-start}.header-main{width:100%}.header-actions{flex:1}.header-status{margin-left:auto}.message-bubble{max-width:86%}.class-insights-visuals{grid-template-columns:1fr}.class-insights-visual-card{min-height:0}.class-insights-mastery-wrap{align-items:flex-start}.class-insights-inline-stats{grid-template-columns:1fr 1fr}.class-insights-table{min-width:680px}}@media(max-width:720px){.header,.input-container,.messages-container,.suggested-prompts{padding-left:14px;padding-right:14px}.header-title{font-size:17px}.header-actions{width:100%;justify-content:flex-start}.header-status{width:100%;max-width:none;margin-left:0}.btn-base{padding:7px 10px}.input-textarea,.input-cfg{font-size:16px}.graph-hint{font-size:8.5px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}@keyframes spin{to{transform:rotate(360deg)}}@keyframes blink{0%,80%,to{opacity:.2;transform:scale(.8)}40%{opacity:1;transform:scale(1)}}@keyframes fadeIn{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@keyframes slideUp{0%{transform:translateY(14px);opacity:0}to{transform:translateY(0);opacity:1}}.ingest-page{width:100%;height:100%;min-height:0;overflow:auto;padding:18px 20px 24px;background:radial-gradient(circle at 5% 10%,rgba(85,195,255,.13),transparent 36%),radial-gradient(circle at 92% 88%,rgba(251,191,36,.11),transparent 40%),linear-gradient(165deg,#07132061,#040c16a8)}.ingest-page::-webkit-scrollbar{width:8px}.ingest-page::-webkit-scrollbar-track{background:transparent}.ingest-page::-webkit-scrollbar-thumb{background:#a3c4e34d;border-radius:8px}.ingest-container{max-width:1400px;margin:0 auto;animation:fadeIn .3s ease-out}.ingest-container h1{font-family:var(--font-display);font-size:clamp(1.7rem,2.4vw,2.25rem);line-height:1.1;letter-spacing:-.02em;color:var(--text)}.ingest-subtitle{margin-top:8px;margin-bottom:16px;color:var(--muted-strong);max-width:70ch;font-size:13px}.ingest-page .api-config{display:flex;align-items:center;gap:11px;padding:12px 14px;border-radius:14px;border:1px solid var(--border);background:linear-gradient(160deg,#102439e0,#0c1b2be6);box-shadow:var(--shadow-soft);margin-bottom:16px}.ingest-page .api-config label{flex-shrink:0;font-size:12px;font-weight:600;color:var(--muted-strong)}.ingest-page .api-input{width:100%;border:1px solid rgba(163,196,227,.22);background:#05101c9e;color:var(--text);border-radius:10px;padding:9px 11px;font-family:var(--font-mono);font-size:12px;outline:none;transition:border-color .16s ease,box-shadow .16s ease}.ingest-page .api-input:focus{border-color:#55c3ff94;box-shadow:0 0 0 3px #55c3ff2b}.ingest-page .init-btn{border:1px solid rgba(85,195,255,.5);border-radius:10px;background:#55c3ff24;color:#d9f2ff;font-size:11px;font-weight:700;letter-spacing:.02em;padding:9px 11px;white-space:nowrap;cursor:pointer;transition:transform .14s ease,border-color .14s ease,opacity .14s ease}.ingest-page .init-btn:hover:not(:disabled){transform:translateY(-1px);border-color:#81dfffb8}.ingest-page .init-btn:disabled{opacity:.58;cursor:not-allowed}.ingest-page .message{border-radius:12px;padding:12px 14px;margin-bottom:14px;font-size:12px;border:1px solid;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);animation:slideUp .2s ease-out}.ingest-page .error-message{color:#fecdd3;border-color:#fb71855c;background:#7f1d1d52}.ingest-page .success-message{color:#bbf7d0;border-color:#34d3995c;background:#064e3b52}.ingest-page .content-wrapper{display:grid;grid-template-columns:minmax(320px,1fr) minmax(360px,1fr);gap:14px}.ingest-page .forms-section,.ingest-page .jobs-section{border-radius:16px;border:1px solid var(--border);background:linear-gradient(164deg,#102235e0,#0b1b2ae0);box-shadow:var(--shadow-soft)}.ingest-page .tabs{display:flex;gap:8px;padding:10px;border-bottom:1px solid rgba(163,196,227,.14);background:#06121e85}.ingest-page .tab{flex:1;border:1px solid rgba(163,196,227,.2);background:#ffffff05;color:var(--muted-strong);border-radius:10px;padding:10px 12px;font-size:12px;font-weight:600;cursor:pointer;transition:transform .15s ease,border-color .15s ease,background .15s ease}.ingest-page .tab:hover{transform:translateY(-1px);border-color:#55c3ff73;background:#55c3ff1a}.ingest-page .tab.active{color:var(--text);border-color:#55c3ff8f;background:linear-gradient(170deg,#55c3ff3d,#1460911f)}.ingest-page .ingest-form{padding:20px}.ingest-page .ingest-form h2{font-family:var(--font-display);font-size:20px;letter-spacing:-.01em;color:var(--text)}.ingest-page .form-hint{margin-top:10px;margin-bottom:18px;border-radius:10px;border:1px solid rgba(85,195,255,.24);background:#55c3ff14;color:var(--muted-strong);font-size:12px;padding:10px 12px;line-height:1.55}.ingest-page .form-hint code{background:#081828c7;color:#a9def7;border:1px solid rgba(163,196,227,.2);border-radius:6px;padding:1px 5px;font-family:var(--font-mono);font-size:11px}.ingest-page .form-group{margin-bottom:16px}.ingest-page .form-group label{display:block;margin-bottom:6px;font-size:12px;font-weight:600;color:var(--muted-strong)}.ingest-page .form-group .required{color:var(--danger)}.ingest-page .form-input{width:100%;border:1px solid rgba(163,196,227,.22);border-radius:10px;background:#06111db8;color:var(--text);padding:10px 11px;font-size:13px;transition:border-color .16s ease,box-shadow .16s ease}.ingest-page .form-input:focus{outline:none;border-color:#55c3ff8a;box-shadow:0 0 0 3px #55c3ff2b}.ingest-page .form-input:disabled{opacity:.66;cursor:not-allowed}.ingest-page .form-group small{display:block;margin-top:5px;color:var(--muted);font-size:11px}.ingest-page .upload-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;margin-bottom:12px}.ingest-page .upload-card{border:1px dashed rgba(163,196,227,.24);border-radius:12px;background:#07121f7a;padding:10px}.ingest-page .upload-card.upload-card-single{margin-bottom:12px}.ingest-page .upload-label{display:block;margin-bottom:6px;color:var(--text-soft);font-size:12px;font-weight:600}.ingest-page .file-input{width:100%;border:1px solid rgba(163,196,227,.2);border-radius:10px;background:#06111dc7;color:var(--muted-strong);font-size:11px;padding:6px 8px;margin-bottom:6px}.ingest-page .file-input::file-selector-button{border:1px solid rgba(85,195,255,.42);border-radius:8px;background:#55c3ff24;color:#d8f1ff;font-size:11px;font-weight:600;padding:5px 9px;margin-right:8px;cursor:pointer}.ingest-page .file-input:disabled,.ingest-page .file-input:disabled::file-selector-button{opacity:.55;cursor:not-allowed}.ingest-page .upload-meta{margin-top:8px;color:var(--muted-strong);font-size:10.5px;line-height:1.45;min-height:30px;border-radius:8px;border:1px solid rgba(163,196,227,.18);background:#040e1980;padding:6px 7px;word-break:break-word}.ingest-page .upload-total{margin-bottom:12px;border-radius:9px;border:1px solid rgba(85,195,255,.28);background:#55c3ff14;color:#cfefff;font-family:var(--font-mono);font-size:11px;padding:8px 10px}.ingest-page .form-group.checkbox{display:flex;align-items:center;gap:9px}.ingest-page .form-group.checkbox input{width:17px;height:17px;accent-color:var(--accent-strong);cursor:pointer}.ingest-page .form-group.checkbox label{margin:0}.ingest-page .submit-btn{width:100%;border:1px solid rgba(117,205,255,.56);border-radius:11px;padding:11px 14px;font-size:12px;font-weight:700;letter-spacing:.02em;color:#072035;background:linear-gradient(165deg,#93e4ff,#4cbaf2);cursor:pointer;transition:transform .16s ease,box-shadow .16s ease,opacity .16s ease}.ingest-page .submit-btn:hover:not(:disabled){transform:translateY(-1px);box-shadow:0 9px 20px #108cd259}.ingest-page .submit-btn:disabled{opacity:.55;cursor:not-allowed}.ingest-page .jobs-section{padding:20px;display:flex;flex-direction:column;min-height:0}.ingest-page .jobs-section h2{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-family:var(--font-display);font-size:20px;color:var(--text)}.ingest-page .refresh-btn{border:1px solid rgba(163,196,227,.2);border-radius:9px;background:#ffffff05;color:var(--muted-strong);width:30px;height:30px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;transition:transform .16s ease,border-color .16s ease,background .16s ease}.ingest-page .refresh-btn:hover{transform:rotate(120deg);border-color:#55c3ff75;background:#55c3ff17}.ingest-page .empty-state{margin-top:12px;text-align:center;border:1px dashed rgba(163,196,227,.25);border-radius:12px;color:var(--muted);padding:24px 16px;font-size:12px}.ingest-page .jobs-list{display:flex;flex-direction:column;gap:10px;max-height:640px;overflow:auto;padding-right:4px}.ingest-page .jobs-list::-webkit-scrollbar{width:8px}.ingest-page .jobs-list::-webkit-scrollbar-track{background:transparent}.ingest-page .jobs-list::-webkit-scrollbar-thumb{border-radius:8px;background:#a3c4e34d}.ingest-page .job-card{border:1px solid rgba(163,196,227,.19);border-radius:12px;background:linear-gradient(165deg,#0f2134d1,#0a1826e0);padding:12px;transition:transform .16s ease,border-color .16s ease,box-shadow .16s ease}.ingest-page .job-card:hover{transform:translateY(-1px);border-color:#55c3ff66;box-shadow:0 12px 24px #06121f59}.ingest-page .job-header{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:10px}.ingest-page .job-id-badge{display:flex;align-items:center;gap:8px;min-width:0}.ingest-page .status-icon{font-size:15px;line-height:1}.ingest-page .job-id-badge code{border:1px solid rgba(163,196,227,.2);background:#07121fb8;color:#c9dff4;border-radius:8px;padding:4px 7px;font-family:var(--font-mono);font-size:11px}.ingest-page .job-type{font-size:18px}.ingest-page .job-status{margin-bottom:10px}.ingest-page .status-badge{display:inline-block;border-radius:999px;padding:4px 11px;font-size:10px;font-weight:700;letter-spacing:.07em;text-transform:uppercase;color:#fff}.ingest-page .job-details{font-size:12px}.ingest-page .detail-row{display:flex;align-items:flex-start;gap:10px;padding:6px 0;border-top:1px dashed rgba(163,196,227,.14)}.ingest-page .detail-row:first-child{border-top:none}.ingest-page .detail-row .label{min-width:70px;font-size:11px;color:var(--muted)}.ingest-page .detail-row .value{flex:1;color:var(--text-soft);font-family:var(--font-mono);font-size:11px;line-height:1.45;word-break:break-word}.ingest-page .detail-row.error{border-top-style:solid;border-top-color:#fb718559;background:#7f1d1d52;border-radius:8px;padding:8px;margin-top:6px}.ingest-page .detail-row.error .label,.ingest-page .detail-row.error .error-text{color:#fecdd3}@media(max-width:1120px){.ingest-page .content-wrapper{grid-template-columns:1fr}.ingest-page .jobs-list{max-height:420px}}@media(max-width:720px){.ingest-page{padding:14px 12px 18px}.ingest-page .api-config{flex-direction:column;align-items:stretch}.ingest-page .tabs{flex-direction:column}.ingest-page .upload-grid{grid-template-columns:1fr}.ingest-page .ingest-form,.ingest-page .jobs-section{padding:14px}.ingest-page .jobs-list{max-height:360px}}
