*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent;font-family:ui-sans-serif,system-ui,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]{display:none}*{border-color:hsl(var(--border))}body{background-color:hsl(var(--background));color:hsl(var(--foreground))}*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }.relative{position:relative}.my-1{margin-top:.25rem;margin-bottom:.25rem}.mb-1{margin-bottom:.25rem}.mt-2{margin-top:.5rem}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.hidden{display:none}.aspect-square{aspect-ratio:1}.h-10{height:2.5rem}.h-2{height:.5rem}.h-2\.5{height:.625rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.h-px{height:1px}.w-10{width:2.5rem}.w-2{width:.5rem}.w-2\.5{width:.625rem}.w-9{width:2.25rem}.w-full{width:100%}.w-px{width:1px}.flex-1{flex:1}.shrink-0{flex-shrink:0}.touch-none{touch-action:none}.select-none{-webkit-user-select:none;user-select:none}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-center{justify-content:center}.gap-2{gap:.5rem}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem*var(--tw-space-y-reverse))}.space-y-1\.5>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.375rem*calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.375rem*var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.whitespace-nowrap{white-space:nowrap}.rounded-\[inherit\]{border-radius:inherit}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:var(--radius)}.rounded-md{border-radius:calc(var(--radius) - 2px)}.border{border-width:1px}.border-l{border-left-width:1px}.border-t{border-top-width:1px}.border-destructive\/50{border-color:hsl(var(--destructive)/.5)}.border-input{border-color:hsl(var(--input))}.border-transparent{border-color:#0000}.border-l-transparent{border-left-color:#0000}.border-t-transparent{border-top-color:#0000}.bg-amber-100{--tw-bg-opacity:1;background-color:rgb(254 243 199/var(--tw-bg-opacity))}.bg-background{background-color:hsl(var(--background))}.bg-border{background-color:hsl(var(--border))}.bg-card{background-color:hsl(var(--card))}.bg-destructive{background-color:hsl(var(--destructive))}.bg-emerald-100{--tw-bg-opacity:1;background-color:rgb(209 250 229/var(--tw-bg-opacity))}.bg-muted{background-color:hsl(var(--muted))}.bg-primary{background-color:hsl(var(--primary))}.bg-rose-100{--tw-bg-opacity:1;background-color:rgb(255 228 230/var(--tw-bg-opacity))}.bg-secondary{background-color:hsl(var(--secondary))}.bg-transparent{background-color:#0000}.p-1{padding:.25rem}.p-6{padding:1.5rem}.p-px{padding:1px}.px-2{padding-left:.5rem;padding-right:.5rem}.px-2\.5{padding-left:.625rem;padding-right:.625rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-8{padding-left:2rem;padding-right:2rem}.py-0{padding-top:0;padding-bottom:0}.py-0\.5{padding-top:.125rem;padding-bottom:.125rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.pt-0{padding-top:0}.text-base{font-size:1rem;line-height:1.5rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xs{font-size:.75rem;line-height:1rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.leading-none{line-height:1}.tracking-normal{letter-spacing:0}.tracking-tight{letter-spacing:-.025em}.text-amber-700{--tw-text-opacity:1;color:rgb(180 83 9/var(--tw-text-opacity))}.text-card-foreground{color:hsl(var(--card-foreground))}.text-destructive{color:hsl(var(--destructive))}.text-emerald-700{--tw-text-opacity:1;color:rgb(4 120 87/var(--tw-text-opacity))}.text-foreground{color:hsl(var(--foreground))}.text-muted-foreground{color:hsl(var(--muted-foreground))}.text-primary{color:hsl(var(--primary))}.text-primary-foreground{color:hsl(var(--primary-foreground))}.text-red-600{--tw-text-opacity:1;color:rgb(220 38 38/var(--tw-text-opacity))}.text-rose-700{--tw-text-opacity:1;color:rgb(190 18 60/var(--tw-text-opacity))}.text-secondary-foreground{color:hsl(var(--secondary-foreground))}.underline-offset-4{text-underline-offset:4px}.shadow{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-sm{--tw-shadow:0 1px 2px 0 #0000000d;--tw-shadow-colored:0 1px 2px 0 var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.outline{outline-style:solid}.ring-offset-background{--tw-ring-offset-color:hsl(var(--background))}.filter{filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}@keyframes enter{0%{opacity:var(--tw-enter-opacity,1);transform:translate3d(var(--tw-enter-translate-x,0),var(--tw-enter-translate-y,0),0)scale3d(var(--tw-enter-scale,1),var(--tw-enter-scale,1),var(--tw-enter-scale,1))rotate(var(--tw-enter-rotate,0))}}@keyframes exit{to{opacity:var(--tw-exit-opacity,1);transform:translate3d(var(--tw-exit-translate-x,0),var(--tw-exit-translate-y,0),0)scale3d(var(--tw-exit-scale,1),var(--tw-exit-scale,1),var(--tw-exit-scale,1))rotate(var(--tw-exit-rotate,0))}}:root{--background:230 33% 98%;--foreground:229 52% 14%;--card:0 0% 100%;--card-foreground:229 52% 14%;--popover:0 0% 100%;--popover-foreground:229 52% 14%;--primary:243 75% 59%;--secondary:247 100% 97%;--secondary-foreground:229 52% 14%;--muted:225 31% 95%;--muted-foreground:224 17% 48%;--accent:247 100% 97%;--accent-foreground:243 75% 59%;--destructive:347 100% 65%;--destructive-foreground:0 0% 100%;--border:225 31% 94%;--input:225 31% 88%;--ring:243 75% 59%;--radius:.5rem;--chart-1:347 100% 65%;--chart-2:39 92% 53%;--chart-3:151 58% 50%;--chart-4:243 75% 59%;--chart-5:224 17% 48%;--sidebar:247 100% 98%;--sidebar-foreground:229 52% 14%;--sidebar-primary:243 75% 59%;--sidebar-primary-foreground:0 0% 100%;--sidebar-accent:247 100% 97%;--sidebar-accent-foreground:243 75% 59%;--sidebar-border:225 31% 94%;--sidebar-ring:243 75% 59%;--vt-ink:#111936;--vt-muted:#66718d;--vt-line:#e9ecf5;--vt-panel:#fff;--vt-bg:#f7f8fc;--vt-brand:#4f46e5;--vt-brand-soft:#f1efff;--vt-green:#35c987;--vt-amber:#f6a91a;--vt-red:#ff4d5f;gap:12px;min-height:150px;padding:18px;display:grid}*{box-sizing:border-box}body{background:var(--vt-bg);color:var(--vt-ink);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}input{font:inherit}button{cursor:pointer}.app-shell{grid-template-columns:292px minmax(0,1fr);align-items:start;min-height:100vh;display:grid}.sidebar{overscroll-behavior:contain;border-right:1px solid var(--vt-line);background:linear-gradient(#fbfbff 0%,#f5f3ff 100%);flex-direction:column;align-self:start;gap:12px;height:100vh;padding:20px 16px;display:flex;position:sticky;top:0;overflow:hidden auto}.brand,.teacher-card{align-items:center;gap:12px;display:flex}.brand{min-width:0}.brand-mark,.avatar{color:#fff;background:linear-gradient(135deg,#372ce7,#7c5cff);border-radius:50%;place-items:center;width:48px;height:48px;font-weight:800;display:grid}.brand strong{font-size:27px;line-height:1;display:block}.brand-copy{min-width:0}.brand-slogan{color:var(--vt-muted);white-space:nowrap;margin-top:4px;font-size:12px;line-height:1.25;display:block}.teacher-card span,.class-card span,.class-card p,.topbar p,.chat-panel p{color:var(--vt-muted);font-size:13px}.nav{gap:4px;margin-top:6px;display:grid}.nav button{color:#263252;text-align:left;background:0 0;border:0;border-radius:8px;justify-content:flex-start;align-items:center;gap:12px;width:100%;min-height:44px;padding:0 16px;display:flex}.nav button svg{width:18px;height:18px}.nav button.active{color:var(--vt-brand);background:var(--vt-brand-soft);font-weight:700}.teacher-card,.class-card{border:1px solid var(--vt-line);background:#ffffffbf;border-radius:8px;padding:14px}.teacher-card-wrapper{flex-direction:column;gap:12px;margin-top:auto;display:flex;position:relative}.teacher-card{background:0 0;border:none;padding:0}.teacher-profile{border:1px solid var(--vt-line);cursor:pointer;text-align:left;background:#ffffffbf;border-radius:8px;justify-content:flex-start;align-items:center;gap:12px;height:auto;padding:12px;transition:all .2s;display:flex}.teacher-profile:hover{border-color:var(--vt-brand);background:#fffffff2}.teacher-profile:active{background:#fff}.teacher-info{flex-direction:column;flex:1;min-width:0;display:flex}.teacher-card strong{color:#263252;font-size:14px;font-weight:600}.teacher-card span{color:var(--vt-muted);word-wrap:break-word;overflow-wrap:break-word;margin-top:2px;font-size:12px}.teacher-dropdown-menu{border:1px solid var(--vt-line);z-index:50;background:#fffffff2;border-radius:8px;flex-direction:column;gap:4px;padding:8px 0;display:flex;position:absolute;bottom:calc(100% + 8px);left:0;right:0;overflow:hidden;box-shadow:0 10px 15px -3px #0000001a,0 4px 6px -2px #0000000d}.menu-item{flex-direction:column;gap:8px;padding:8px 12px;display:flex}.menu-item-label{color:var(--vt-muted);text-transform:uppercase;letter-spacing:.5px;font-size:11px;font-weight:700}.menu-item-content{gap:8px;display:flex}.menu-item-content button{flex:1;height:32px;padding:6px 12px;font-size:12px}.teacher-dropdown-menu button{border-radius:0;justify-content:flex-start;height:auto;margin:0;padding:12px}.teacher-dropdown-menu button:first-of-type,.teacher-dropdown-menu button:last-of-type{border-radius:0}.teacher-card,.class-card p{word-wrap:break-word;overflow-wrap:break-word;word-break:break-word;margin:4px 0}.class-card strong{margin:8px 0 4px;font-size:23px;display:block}.class-card button{width:100%;color:var(--vt-brand);border:1px solid var(--vt-line);background:#fff;border-radius:8px;justify-content:space-between;align-items:center;margin-top:14px;padding:12px 14px;font-weight:700;display:flex}.content{padding:30px;overflow:hidden}.topbar{justify-content:space-between;align-items:center;gap:20px;margin-bottom:26px;display:flex}.topbar h1{margin:0 0 6px;font-size:30px;line-height:1.15}.actions{gap:12px;display:flex}.actions button,.chat-input button{border-radius:8px;min-height:44px;padding:0 20px;font-weight:700}.actions button:disabled{opacity:.65}.error{color:#9f1239;background:#fff1f2;border:1px solid #fecdd3;border-radius:8px;margin-bottom:16px;padding:12px 14px}.kpi-grid{grid-template-columns:repeat(6,minmax(0,1fr));gap:14px;display:grid}.kpi,.panel,.chat-panel{background:var(--vt-panel);border:1px solid var(--vt-line);border-radius:8px;box-shadow:0 16px 44px #2730550f}.kpi{padding:0;overflow:hidden}.kpi-content{gap:12px;min-height:150px;padding:18px;display:grid}.kpi-header,.panel h3,.chat-panel h2{font-weight:800}.kpi-header{justify-content:space-between;align-items:flex-start;gap:12px;display:flex}.kpi-header span{max-width:140px;color:var(--vt-ink);font-size:15px;line-height:1.2;display:block}.kpi-header i{border-radius:50%;flex-shrink:0;place-items:center;width:48px;height:48px;margin-left:auto;display:grid}.kpi-header i svg{width:20px;height:20px}.kpi-value-row{align-items:baseline;gap:10px;margin-top:-2px;display:flex}.kpi strong{font-size:38px;line-height:.95}.kpi em{color:#11a75c;font-style:normal;font-weight:700}.kpi i{place-items:center;display:grid}.kpi p{color:var(--vt-muted);margin:0;font-size:12px;line-height:1.35}.kpi i.violet{background:#ede9ff}.kpi i.amber{background:#fff0cf}.kpi i.red{background:#ffe1e6}.kpi i.green{background:#dcfce7}.dashboard-grid{grid-template-columns:1.1fr 1fr 1fr;gap:16px;margin-top:18px;display:grid}.lower-grid,.potential-grid{grid-template-columns:1.1fr 1fr;gap:16px;margin-top:18px;display:grid}.potential-empty{color:var(--vt-muted);margin:0;font-size:14px;line-height:1.5}.potential-list{gap:10px;display:grid}.potential-row{text-align:left;background:#fff;border:1px solid #edf0f8;border-radius:10px;grid-template-columns:1fr 150px 1.1fr;align-items:start;gap:12px;width:100%;padding:12px;display:grid}.potential-row:hover{background:#fbfbff;border-color:#d9def5}.potential-row.selected{background:#f6f5ff;border-color:#b6b3ff}.potential-row span{gap:2px;display:grid}.potential-row b{color:#1e2750;font-size:13px}.potential-row small{color:var(--vt-muted);font-size:12px;line-height:1.4}.panel{padding:0;overflow:hidden}.panel-header{padding:20px 20px 12px}.panel-content{padding:0 20px 20px}.panel h3,.chat-panel h2{margin:0;font-size:17px}.donut-wrap{grid-template-columns:180px 1fr;align-items:center;gap:26px;display:grid}.donut{border-radius:50%;place-items:center;width:164px;height:164px;display:grid}.donut div{background:#fff;border-radius:50%;place-items:center;width:92px;height:92px;display:grid}.donut strong{font-size:32px}.donut span,.legend,.student-meta,.table-head,.student-row small,.tabs{color:var(--vt-muted);font-size:13px}.legend{gap:14px;display:grid}.legend p{grid-template-columns:12px 1fr auto;align-items:center;gap:10px;margin:0;display:grid}.legend i{border-radius:4px;width:12px;height:12px}.issue-list{gap:18px;display:grid}.issue-row{grid-template-columns:142px 1fr 88px;align-items:center;gap:12px;font-size:14px;display:grid}.issue-row div{background:#ecebff;border-radius:999px;height:10px;overflow:hidden}.issue-row i{border-radius:inherit;background:linear-gradient(90deg,#6d5dfc,#4f46e5);height:100%;display:block}.issue-row strong{font-size:13px;font-weight:600}.suggestions{background:#f7f5ff;border-radius:8px;gap:10px;padding:14px;display:grid}.suggestions p{margin:0;font-size:14px;line-height:1.45}.suggestions p:before{content:"✓";color:var(--vt-brand);margin-right:10px;font-weight:800}.link-button{float:right;color:var(--vt-brand);background:0 0;border:0;margin-top:12px;font-weight:700}.table-head,.student-row,.attention-row{grid-template-columns:1fr 150px 1.15fr;align-items:center;gap:14px;display:grid}.table-head{border-bottom:1px solid var(--vt-line);padding:0 10px 10px}.student-row{text-align:left;background:#fff;border:0;border-bottom:1px solid #f0f2f7;width:100%;min-height:68px;padding:10px}.student-row.selected{background:#fbfaff}.attention-row{text-align:left;background:#fff;border:1px solid #edf0f8;border-radius:10px;width:100%;margin-bottom:10px;padding:12px}.attention-row:hover{background:#fbfbff;border-color:#d9def5}.attention-row.selected{background:#f6f5ff;border-color:#b6b3ff}.attention-row span{gap:2px;display:grid}.attention-row b{color:#1e2750;font-size:13px}.attention-row small{color:var(--vt-muted);font-size:12px;line-height:1.4}.attention-row .risk-pill{margin-top:4px}.student-row b,.student-row small{display:block}.risk-pill{border-radius:7px;justify-content:center;width:fit-content;padding:7px 10px;font-size:12px;font-weight:700;display:inline-flex}.risk-pill.high{color:#e11d48;background:#ffe4e8}.risk-pill.medium{color:#d97706;background:#fff0d9}.risk-pill.low{color:#159557;background:#dcfce7}.spark{width:100px;height:34px}.spark polyline,.trend polyline{fill:none;stroke:var(--vt-red);stroke-linecap:round;stroke-linejoin:round;stroke-width:3px}.student-detail .panel h2{margin-bottom:6px}.tabs{border:1px solid var(--vt-line);gap:4px;margin:18px 0;display:flex}.tabs-shell{width:100%}.detail-stack{gap:14px;display:grid}.chart-card{background:#fff;border:1px solid #edf0f8;border-radius:10px;padding:14px}.insight-grid{grid-template-columns:1fr 1fr;gap:12px;display:grid}.trend h3{margin:0 0 12px;font-size:15px}.trend svg{width:100%;height:190px}.trend-chart-shell{position:relative}.trend line{stroke:#eef1f7}.trend text{fill:var(--vt-muted);text-anchor:middle;font-size:11px}.trend-dot{fill:#fff;stroke:var(--vt-red);stroke-width:2.5px}.trend-dot-hit{fill:#0000;cursor:pointer}.trend-tooltip{pointer-events:none;background:#fff;border:1px solid #d9def5;border-radius:8px;gap:2px;min-width:96px;padding:8px 10px;display:grid;position:absolute;transform:translate(-50%,calc(-100% - 12px));box-shadow:0 10px 24px #1e294e2e}.trend-tooltip strong{color:var(--vt-ink);font-size:12px}.trend-tooltip span{color:var(--vt-muted);font-size:11px}.insight-box{background:linear-gradient(#f8f7ff 0%,#f4f3ff 100%);border:1px solid #e6e4ff;border-radius:10px;padding:14px;box-shadow:inset 0 1px #ffffffb3}.insight-box>strong{color:#4f46e5;margin-bottom:8px;font-size:19px;display:block}.insight-box ul{margin:0;padding-left:18px;font-size:13px;line-height:1.62}.insight-box li+li{margin-top:6px}.insight-list{padding-left:0;list-style:none}.insight-list li{padding:0 0 8px 18px;position:relative}.insight-list li:before{content:"*";color:#5c56f2;font-size:15px;line-height:1;position:absolute;top:0;left:2px}.insight-list li:not(:last-child){border-bottom:1px dashed #d9def5;margin-bottom:8px}.chat-panel{grid-template-columns:260px 1fr;gap:18px;margin-top:18px;padding:20px;display:grid}.chat-panel h2{margin-bottom:6px}.chat-log{height:190px;max-height:190px}.chat-stack{gap:8px;padding-right:12px;display:grid}.chat-stack p{border-radius:8px;width:fit-content;max-width:82%;margin:0;padding:10px 12px;line-height:1.45}.chat-stack .teacher{color:#fff;background:var(--vt-brand);justify-self:end}.chat-stack .lumi{color:#27324f;background:#f1efff}.chat-input{grid-column:2;gap:10px;display:flex}.chat-widget-shell{z-index:80;justify-items:end;gap:10px;display:grid;position:fixed;bottom:20px;right:20px}.chat-widget{border:1px solid #dfe4f5;width:min(420px,100vw - 28px);box-shadow:0 24px 48px #17214733}.chat-widget-header{border-bottom:1px solid var(--vt-line);justify-content:space-between;align-items:flex-start;gap:12px;padding:14px 14px 10px;display:flex}.chat-widget-header h3{margin:0;font-size:16px}.chat-widget-header p{color:var(--vt-muted);margin:4px 0 0;font-size:12px}.chat-widget-close{min-width:32px;height:32px;padding:0}.chat-widget-log{height:260px;max-height:260px;padding:12px}.chat-widget-input{gap:8px;padding:0 12px 12px;display:flex}.chat-widget-input input{flex:1;min-height:40px}.chat-widget-input button{color:#fff;background:linear-gradient(135deg,#3f37d8 0%,#312cc7 100%);border:1px solid #ffffff29;min-height:40px;padding:0 16px;box-shadow:0 12px 22px #312cc74d}.chat-widget-input button:hover{color:#fff;background:linear-gradient(135deg,#4b43eb 0%,#3731d8 100%)}.chat-widget-input button svg{color:currentColor}.chat-widget-toggle{color:#fff;background:linear-gradient(135deg,#5548f5 0%,#4138dd 100%);border:1px solid #ffffff2e;border-radius:999px;min-height:46px;padding:0 16px;box-shadow:0 14px 26px #4138dd59}.chat-widget-toggle:hover{color:#fff;background:linear-gradient(135deg,#5f53fb 0%,#4a40ea 100%)}.chat-widget-toggle svg{color:currentColor}.chat-input input{border:1px solid var(--vt-line);border-radius:8px;outline:none;flex:1;min-height:44px;padding:0 14px}.auth-shell{background:radial-gradient(circle at 10% 20%,#4f46e529,transparent 30%),radial-gradient(circle at 80% 0%,#35c98729,transparent 26%),var(--vt-bg);place-items:center;min-height:100vh;padding:24px;display:grid}.auth-card{border:1px solid var(--vt-line);width:min(460px,100%)}.auth-form{gap:12px;display:grid}.auth-form button{color:#fff;background:linear-gradient(135deg,#3f37d8 0%,#312cc7 100%);border:1px solid #ffffff29;min-height:44px;font-weight:700;box-shadow:0 12px 22px #312cc74d}.auth-form button:hover{color:#fff;background:linear-gradient(135deg,#4b43eb 0%,#3731d8 100%)}.auth-form button svg{color:currentColor}.auth-note{color:var(--vt-muted);margin:0;font-size:12px}.analyze-popup-backdrop{z-index:120;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#0a0f2373;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.analyze-popup-card{border:1px solid #4f46e538;width:min(540px,100%);box-shadow:0 24px 60px #151a3647}.analyze-popup-content{gap:16px;display:grid}.analyze-animation{background:radial-gradient(circle at 35% 20%,#7c5cff3d,#0000 34%),radial-gradient(circle at 75% 80%,#35c9873d,#0000 28%),linear-gradient(160deg,#f7f5ff 0%,#eef2ff 100%);border-radius:12px;place-items:center;min-height:220px;display:grid;position:relative;overflow:hidden}.analyze-orb{background:radial-gradient(circle at 30% 30%,#90b4ff,#5b56f7 65%,#4537d9 100%);border-radius:50%;width:88px;height:88px;animation:1.8s ease-in-out infinite orbPulse;box-shadow:0 0 0 20px #5b56f714,0 18px 30px #3931a340}.analyze-rings{place-items:center;display:grid;position:absolute;inset:0}.analyze-rings span{border:1px solid #4f46e54d;border-radius:50%;animation:2.8s linear infinite ringExpand;position:absolute}.analyze-rings span:first-child{width:120px;height:120px;animation-delay:0s}.analyze-rings span:nth-child(2){width:156px;height:156px;animation-delay:.8s}.analyze-rings span:nth-child(3){width:192px;height:192px;animation-delay:1.6s}.analyze-bars{align-items:flex-end;gap:6px;display:flex;position:absolute;bottom:16px;right:20px}.analyze-bars i{background:linear-gradient(#7c5cff,#35c987);border-radius:999px;width:7px;animation:1.1s ease-in-out infinite barWave;display:block}.analyze-bars i:first-child{height:20px;animation-delay:0s}.analyze-bars i:nth-child(2){height:34px;animation-delay:.1s}.analyze-bars i:nth-child(3){height:50px;animation-delay:.2s}.analyze-bars i:nth-child(4){height:32px;animation-delay:.3s}.analyze-bars i:nth-child(5){height:24px;animation-delay:.4s}.analyze-result{border-radius:10px;grid-template-columns:26px 1fr;align-items:start;gap:10px;padding:12px;font-size:14px;line-height:1.5;display:grid}.analyze-result p{margin:0}.analyze-result.success{color:#106d41;background:#e8fcef;border:1px solid #c9f4d8}.analyze-result.error{color:#9f1239;background:#fff1f2;border:1px solid #fecdd3}.analyze-popup-actions{justify-content:flex-end;gap:10px;display:flex}.class-picker-backdrop{z-index:110;-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background:#0a0f236b;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.class-picker-card{border:1px solid #4f46e533;width:min(560px,100%);box-shadow:0 24px 60px #151a363d}.class-picker-content{gap:14px;display:grid}.class-list{gap:10px;max-height:340px;padding-right:4px;display:grid;overflow:auto}.class-item{border:1px solid var(--vt-line);text-align:left;background:#fff;border-radius:10px;justify-content:space-between;align-items:center;gap:12px;width:100%;padding:12px;transition:border-color .2s,background .2s;display:flex}.class-item:hover{background:#f7f7ff;border-color:#c9c8ff}.class-item.active{background:#f3f2ff;border-color:#8d8aff}.class-item strong,.class-item span,.class-item small{display:block}.class-item strong{font-size:14px}.class-item span,.class-item small{color:var(--vt-muted)}.class-item span{margin-top:3px;font-size:12px}.class-item small{margin-top:2px;font-size:11px}.class-picker-actions{justify-content:flex-end;display:flex}@keyframes orbPulse{0%,to{transform:scale(1)}50%{transform:scale(1.08)}}@keyframes ringExpand{0%{opacity:.65;transform:scale(.88)}to{opacity:0;transform:scale(1.12)}}@keyframes barWave{0%,to{opacity:.7;transform:scaleY(.7)}50%{opacity:1;transform:scaleY(1.12)}}@media (max-width:1180px){.app-shell{grid-template-columns:1fr}.sidebar{height:auto;min-height:auto;position:static;overflow:visible}.kpi-grid,.dashboard-grid,.potential-grid,.potential-row,.insight-grid,.lower-grid,.chat-panel{grid-template-columns:1fr}.chat-input{grid-column:auto}.chat-widget-shell{bottom:12px;right:12px}.chat-widget{width:min(420px,100vw - 16px)}}.file\:border-0::file-selector-button{border-width:0}.file\:bg-transparent::file-selector-button{background-color:#0000}.file\:text-sm::file-selector-button{font-size:.875rem;line-height:1.25rem}.file\:font-medium::file-selector-button{font-weight:500}.placeholder\:text-muted-foreground::placeholder{color:hsl(var(--muted-foreground))}.hover\:bg-accent:hover{background-color:hsl(var(--accent))}.hover\:bg-destructive\/80:hover{background-color:hsl(var(--destructive)/.8)}.hover\:bg-destructive\/90:hover{background-color:hsl(var(--destructive)/.9)}.hover\:bg-primary\/80:hover{background-color:hsl(var(--primary)/.8)}.hover\:bg-primary\/90:hover{background-color:hsl(var(--primary)/.9)}.hover\:bg-red-50:hover{--tw-bg-opacity:1;background-color:rgb(254 242 242/var(--tw-bg-opacity))}.hover\:bg-secondary\/80:hover{background-color:hsl(var(--secondary)/.8)}.hover\:text-accent-foreground:hover{color:hsl(var(--accent-foreground))}.hover\:text-red-700:hover{--tw-text-opacity:1;color:rgb(185 28 28/var(--tw-text-opacity))}.hover\:underline:hover{text-decoration-line:underline}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-ring:focus{--tw-ring-color:hsl(var(--ring))}.focus\:ring-offset-2:focus{--tw-ring-offset-width:2px}.focus-visible\:outline-none:focus-visible{outline-offset:2px;outline:2px solid #0000}.focus-visible\:ring-1:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(1px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-2:focus-visible{--tw-ring-offset-shadow:var(--tw-ring-inset)0 0 0 var(--tw-ring-offset-width)var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset)0 0 0 calc(2px + var(--tw-ring-offset-width))var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus-visible\:ring-ring:focus-visible{--tw-ring-color:hsl(var(--ring))}.focus-visible\:ring-offset-2:focus-visible{--tw-ring-offset-width:2px}.disabled\:pointer-events-none:disabled{pointer-events:none}.disabled\:cursor-not-allowed:disabled{cursor:not-allowed}.disabled\:opacity-50:disabled{opacity:.5}.data-\[state\=active\]\:bg-background[data-state=active]{background-color:hsl(var(--background))}.data-\[state\=active\]\:text-foreground[data-state=active]{color:hsl(var(--foreground))}.data-\[state\=active\]\:shadow[data-state=active]{--tw-shadow:0 1px 3px 0 #0000001a,0 1px 2px -1px #0000001a;--tw-shadow-colored:0 1px 3px 0 var(--tw-shadow-color),0 1px 2px -1px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.dark\:border-destructive:is(.dark *){border-color:hsl(var(--destructive))}@media (min-width:768px){.md\:text-sm{font-size:.875rem;line-height:1.25rem}}.\[\&\>svg\+div\]\:translate-y-\[-3px\]>svg+div{--tw-translate-y:-3px;transform:translate(var(--tw-translate-x),var(--tw-translate-y))rotate(var(--tw-rotate))skewX(var(--tw-skew-x))skewY(var(--tw-skew-y))scaleX(var(--tw-scale-x))scaleY(var(--tw-scale-y))}.\[\&\>svg\]\:absolute>svg{position:absolute}.\[\&\>svg\]\:left-4>svg{left:1rem}.\[\&\>svg\]\:top-4>svg{top:1rem}.\[\&\>svg\]\:text-destructive>svg{color:hsl(var(--destructive))}.\[\&\>svg\~\*\]\:pl-7>svg~*{padding-left:1.75rem}.\[\&_p\]\:leading-relaxed p{line-height:1.625}.\[\&_svg\]\:pointer-events-none svg{pointer-events:none}.\[\&_svg\]\:size-4 svg{width:1rem;height:1rem}.\[\&_svg\]\:shrink-0 svg{flex-shrink:0}

