:root{--bg-0: #030509;--bg-1: #070b15;--bg-2: #0a0f1e;--bg-3: #0e1528;--surface: rgba(15, 25, 45, .68);--surface-solid: #0d1729;--surface-raised: rgba(25, 38, 65, .75);--surface-hover: rgba(30, 45, 80, .72);--border: rgba(100, 140, 220, .18);--border-strong: rgba(120, 160, 235, .38);--border-glow: rgba(70, 130, 255, .5);--text: #edf2ff;--text-dim: #aebfdf;--text-mute: #7a8fb0;--accent: #4a8eff;--accent-2: #8b5cf6;--accent-3: #22d3ee;--accent-soft: rgba(74, 142, 255, .16);--success: #34d399;--warning: #fbbf24;--danger: #f87171;--danger-soft: rgba(248, 113, 113, .16);--grad-accent: linear-gradient(135deg, #4a8eff 0%, #7c5ce8 50%, #22d3ee 100%);--grad-soft: linear-gradient(135deg, rgba(74, 142, 255, .2), rgba(124, 92, 232, .18));--grad-hero: radial-gradient(1300px 650px at 75% -12%, rgba(74, 142, 255, .25), transparent 62%), radial-gradient(950px 550px at 10% 112%, rgba(124, 92, 232, .2), transparent 58%);--grad-tech: linear-gradient(135deg, #1e3a8a 0%, #3b82f6 50%, #60a5fa 100%);--grad-premium: linear-gradient(135deg, #6366f1 0%, #8b5cf6 50%, #a855f7 100%);--radius-sm: 9px;--radius: 15px;--radius-lg: 22px;--radius-pill: 999px;--shadow-1: 0 10px 28px rgba(1, 4, 15, .5);--shadow-2: 0 20px 55px rgba(1, 4, 15, .6);--shadow-glow: 0 0 0 1px var(--border-glow), 0 16px 45px rgba(74, 142, 255, .22);--shadow-premium: 0 0 0 1px rgba(124, 92, 232, .4), 0 18px 50px rgba(124, 92, 232, .25);--font: "Inter", "PingFang SC", "Microsoft YaHei", system-ui, -apple-system, "Segoe UI", sans-serif;--mono: "JetBrains Mono", "Fira Code", "SFMono-Regular", ui-monospace, Consolas, monospace;--sidebar-w: 260px;--topbar-h: 68px;--content-max: 1280px;--bg-base: var(--bg-0);--bg-gradient: radial-gradient(1300px 650px at 75% -10%, rgba(74, 142, 255, .22), transparent 62%), radial-gradient(950px 550px at 8% 110%, rgba(124, 92, 232, .2), transparent 58%), radial-gradient(720px 420px at 50% 50%, rgba(34, 211, 238, .06), transparent 70%), linear-gradient(180deg, #03060f 0%, #060a18 40%, #04081a 100%);--bg-grid-color: rgba(120, 160, 235, .07);--bg-grid-size: 56px;--bg-grid: repeating-linear-gradient( 0deg, transparent 0, transparent calc(var(--bg-grid-size) - 1px), var(--bg-grid-color) calc(var(--bg-grid-size) - 1px), var(--bg-grid-color) var(--bg-grid-size) ), repeating-linear-gradient( 90deg, transparent 0, transparent calc(var(--bg-grid-size) - 1px), var(--bg-grid-color) calc(var(--bg-grid-size) - 1px), var(--bg-grid-color) var(--bg-grid-size) );--bg-dots: radial-gradient(rgba(138, 180, 255, .18) 1px, transparent 1.5px);--bg-dots-size: 28px;--orb-1: radial-gradient(closest-side, rgba(74, 142, 255, .45), transparent 70%);--orb-2: radial-gradient(closest-side, rgba(139, 92, 246, .42), transparent 70%);--orb-3: radial-gradient(closest-side, rgba(34, 211, 238, .35), transparent 70%)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0;padding:0}body{background-color:var(--bg-base);color:var(--text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}body.tech-bg{background-image:var(--bg-dots),var(--bg-grid),var(--bg-gradient);background-size:var(--bg-dots-size) var(--bg-dots-size),var(--bg-grid-size) var(--bg-grid-size),100% 100%;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,no-repeat;background-attachment:fixed,fixed,fixed}.tech-bg{background-color:var(--bg-base);background-image:var(--bg-dots),var(--bg-grid),var(--bg-gradient);background-size:var(--bg-dots-size) var(--bg-dots-size),var(--bg-grid-size) var(--bg-grid-size),100% 100%;background-position:0 0,0 0,0 0;background-repeat:repeat,repeat,no-repeat;background-attachment:fixed,fixed,fixed}a{color:inherit;text-decoration:none}button{font-family:inherit;cursor:pointer}img{max-width:100%;display:block}.entity-logo{width:var(--entity-logo-size);height:var(--entity-logo-size);flex:0 0 var(--entity-logo-size);position:relative;display:grid;place-items:center;overflow:hidden;border:1px solid var(--border-strong);border-radius:13px;background:linear-gradient(145deg,#22d3ee38,#6366f147);box-shadow:inset 0 0 18px #38bdf814;color:#d8f5ff;font-size:12px;font-weight:750;letter-spacing:1px}.entity-logo-image{position:absolute;inset:0;width:100%;height:100%;padding:5px;background:#fffffff5;object-fit:contain}.entity-logo-status{position:absolute;right:3px;bottom:3px;padding:1px 3px;border-radius:4px;background:#0f172ab8;color:#fff;font-size:9px;font-weight:600;letter-spacing:0;line-height:1.3}.skip-link{position:absolute;left:8px;top:-40px;z-index:999;background:var(--accent);color:#fff;padding:8px 16px;border-radius:8px;font-weight:600;font-size:13px;transition:top .15s ease}.skip-link:focus,.skip-link:focus-visible{top:8px;outline:2px solid var(--accent-2);outline-offset:2px}:focus-visible{outline:2px solid var(--accent-2);outline-offset:2px;border-radius:4px}@media(prefers-reduced-motion:reduce){*{animation-duration:.001ms!important;transition-duration:.001ms!important}}.app-shell{display:grid;grid-template-columns:260px 1fr;height:100vh;background:transparent;overflow:hidden}.sidebar{background:var(--surface-solid);border-right:1px solid var(--border);padding:22px 16px;display:flex;flex-direction:column;min-height:0;overflow:hidden;gap:16px}.sidebar-nav{flex:1 1 auto;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:rgba(120,160,235,.28) transparent;padding-right:2px}.sidebar-nav::-webkit-scrollbar{width:6px}.sidebar-nav::-webkit-scrollbar-thumb{background:#78a0eb47;border-radius:999px}.sidebar-footer{flex:0 0 auto}.brand{display:flex;align-items:center;gap:12px}.brand-mark{width:36px;height:36px;border-radius:12px;background:var(--grad-accent);display:grid;place-items:center;color:#fff;font-weight:700}.brand-name{font-size:15px;font-weight:700}.brand-sub{font-size:11px;color:var(--text-mute)}.nav-group-label{font-size:11px;text-transform:uppercase;letter-spacing:.06em;color:var(--text-mute);padding:0 8px;margin-bottom:6px}.nav-item{display:flex;align-items:center;gap:10px;padding:9px 12px;border-radius:10px;color:var(--text-dim);font-size:13.5px;font-weight:500;transition:background .12s}.nav-item:hover,.nav-item.active{background:var(--surface-hover);color:var(--text)}.nav-icon{flex:0 0 auto;opacity:.85}.main{display:flex;flex-direction:column;min-width:0;min-height:0}.topbar{display:flex;align-items:center;justify-content:space-between;padding:16px 28px;border-bottom:1px solid var(--border);background:var(--surface-solid)}.topbar-title{font-size:16px;font-weight:600}.topbar-leading{display:flex;align-items:center;gap:10px;min-width:0}.mobile-nav{display:none}.topbar-search{display:flex;align-items:center;gap:6px;background:var(--surface);border:1px solid var(--border-strong);border-radius:999px;padding:6px 14px;font-size:13px;color:var(--text-mute)}.topbar-search input{background:transparent;border:0;color:var(--text);outline:0;font-size:13px;width:220px}.icon-btn{background:transparent;border:1px solid var(--border);border-radius:10px;padding:6px;color:var(--text-dim)}.page-body{flex:1 1 auto;padding:28px;overflow-y:auto;scroll-behavior:smooth;background-image:radial-gradient(900px 460px at 92% -8%,rgba(74,142,255,.18),transparent 62%),radial-gradient(700px 460px at -6% 108%,rgba(139,92,246,.16),transparent 60%),radial-gradient(520px 320px at 60% 35%,rgba(34,211,238,.07),transparent 70%);background-repeat:no-repeat;background-attachment:local}@media(max-width:720px){.app-shell{display:block;height:100dvh;min-height:100dvh}.sidebar{display:none}.main{height:100dvh;min-width:0}.topbar{gap:8px;padding:10px 12px;min-width:0}.topbar-leading{flex:0 1 auto}.topbar-title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topbar>.row{flex:1 1 0;min-width:0;justify-content:flex-end;gap:8px!important;flex-wrap:nowrap}.topbar-search{flex:1 1 0;min-width:0;padding:6px 9px}.topbar-search input{width:100%;min-width:0}.mobile-nav{display:block;position:relative;flex:0 0 auto}.mobile-nav summary{display:grid;width:34px;height:34px;place-items:center;cursor:pointer;list-style:none;border:1px solid var(--border-strong);border-radius:9px;color:var(--text);font-size:19px;line-height:1}.mobile-nav summary::-webkit-details-marker{display:none}.mobile-nav>nav{position:fixed;top:58px;left:10px;z-index:30;width:min(320px,calc(100vw - 20px));max-height:calc(100dvh - 70px);overflow-y:auto;padding:12px;border:1px solid var(--border-strong);border-radius:var(--radius);background:var(--surface-solid);box-shadow:var(--shadow-2)}.mobile-nav-group+.mobile-nav-group{margin-top:10px}.page-body{min-width:0;padding:16px 12px 32px}.grid-2,.grid-3,.grid-4{grid-template-columns:minmax(0,1fr)}.row{flex-wrap:wrap}.card-pad-lg{padding:18px}.ai-disclaimer{right:8px;bottom:8px;max-width:calc(100vw - 16px)}}.page-center{position:relative;isolation:isolate;overflow:hidden}.page-center:before,.page-center:after{content:"";position:absolute;z-index:-1;pointer-events:none;filter:blur(40px);will-change:transform}.page-center:before{top:-120px;left:-120px;width:520px;height:520px;background:var(--orb-1);animation:orb-drift-a 18s ease-in-out infinite alternate}.page-center:after{bottom:-140px;right:-120px;width:560px;height:560px;background:var(--orb-2);animation:orb-drift-b 22s ease-in-out infinite alternate}.page-center .orb-cyan{position:absolute;z-index:-1;pointer-events:none;top:30%;left:60%;width:380px;height:380px;background:var(--orb-3);filter:blur(36px);border-radius:50%;animation:orb-drift-c 26s ease-in-out infinite alternate}@keyframes orb-drift-a{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(80px,60px,0) scale(1.08)}}@keyframes orb-drift-b{0%{transform:translateZ(0) scale(1)}to{transform:translate3d(-70px,-50px,0) scale(1.05)}}@keyframes orb-drift-c{0%{transform:translateZ(0) scale(.95)}to{transform:translate3d(-50px,40px,0) scale(1.1)}}@media(prefers-reduced-motion:reduce){.page-center:before,.page-center:after,.page-center .orb-cyan{animation:none!important}}.ai-disclaimer{position:fixed;bottom:12px;right:12px;display:flex;align-items:center;gap:6px;padding:6px 12px;background:var(--surface-raised);border:1px solid var(--border);border-radius:999px;font-size:11.5px;color:var(--text-mute)}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-lg);padding:18px}.card-pad-lg{padding:26px}.muted{color:var(--text-mute);font-size:13px}.row{display:flex;align-items:center;gap:12px}.stack{display:flex;flex-direction:column;gap:18px}.grid{display:grid;gap:16px}.grid-2{grid-template-columns:repeat(auto-fit,minmax(360px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(280px,1fr))}.grid-4{grid-template-columns:repeat(auto-fit,minmax(220px,1fr))}.center-col{display:flex;flex-direction:column;align-items:center;justify-content:center}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}.field label{font-size:13px;color:var(--text-dim);font-weight:500}.input{background:var(--surface);border:1px solid var(--border-strong);border-radius:10px;padding:10px 14px;color:var(--text);font-size:14px;outline:0}.input:focus,.input:focus-visible{border-color:var(--accent)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid var(--border-strong);border-radius:10px;padding:8px 16px;background:var(--surface);color:var(--text);font-size:13.5px;font-weight:500}.btn:hover{background:var(--surface-hover)}.btn-primary{background:var(--grad-accent);border-color:transparent;color:#fff}.btn-ghost{background:transparent;border-color:var(--border)}.btn-danger{background:var(--danger-soft);color:var(--danger);border-color:var(--danger)}.btn-xs{padding:3px 8px;font-size:11px}.btn-sm{padding:5px 10px;font-size:12px}.btn-lg{padding:11px 22px;font-size:15px}.btn[disabled],.btn-primary[disabled]{opacity:.5;cursor:not-allowed}.badge{display:inline-block;padding:2px 10px;font-size:11px;font-weight:600;border-radius:999px;background:var(--surface-hover);color:var(--text-dim)}.badge-success{background:var(--success);color:#0a0}.badge-danger{background:var(--danger-soft);color:var(--danger)}.loading,.error-state,.empty-state{padding:26px;text-align:center;color:var(--text-mute)}.error-state{color:var(--danger)}.toast{position:fixed;top:16px;left:50%;transform:translate(-50%);background:var(--surface-raised);border:1px solid var(--border);border-radius:999px;padding:8px 18px;font-size:13px;z-index:9999;animation:pop .2s ease}.toast-error{border-color:var(--danger);color:var(--danger)}.toast-success{border-color:var(--success);color:var(--success)}.modal-backdrop{position:fixed;inset:0;background:#0000008c;display:grid;place-items:center;z-index:999;animation:fade .15s ease}.modal{background:var(--surface-solid);border:1px solid var(--border-strong);border-radius:var(--radius-lg);padding:26px;max-width:480px;width:92%;animation:pop .2s ease}.hero{background:var(--grad-hero);border:1px solid var(--border);border-radius:var(--radius-lg);padding:30px;position:relative;overflow:hidden}.hero h2{font-size:22px}.gradient-text{background:var(--grad-accent);-webkit-background-clip:text;background-clip:text;color:transparent}.course-resource-panel{display:grid;gap:8px}.course-resource-card{display:flex;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:var(--surface)}.course-resource-rail{flex:0 0 4px;background:var(--accent-3);box-shadow:0 0 14px #22d3ee85}.course-resource-content{min-width:0;flex:1;padding:11px 12px}.course-resource-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.course-resource-title{font-size:13px;font-weight:650}.course-resource-provider,.course-resource-meta,.course-resource-empty{color:var(--text-mute);font-size:12px}.course-resource-provider{margin-top:4px}.course-resource-meta{margin:7px 0 9px}.course-resource-empty{padding:7px 0}.course-resource-badge{flex:0 0 auto;border-radius:var(--radius-pill);padding:3px 8px;font-size:11px;font-weight:650}.course-resource-badge.is-healthy{color:var(--success);background:#34d3991f}.course-resource-badge.is-degraded{color:var(--warning);background:#fbbf2421}.course-resource-badge.is-unavailable{color:var(--danger);background:var(--danger-soft)}.course-resource-badge.is-unknown{color:var(--text-dim);background:var(--surface-hover)}.course-resource-card .btn:focus-visible{outline:2px solid var(--accent-3);outline-offset:3px}@media(max-width:720px){.course-resource-heading{align-items:flex-start;flex-direction:column}.course-resource-card .btn{width:100%}}@media(prefers-reduced-motion:reduce){.course-resource-rail{box-shadow:none}}.ai-connection-card{overflow:hidden}.signal-rail{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:12px;margin:-18px -18px 18px;padding:14px 18px;border-left:4px solid var(--warning);background:#fbbf2414}.signal-rail.is-healthy{border-left-color:var(--accent-3);background:#22d3ee14}.signal-rail-dot{width:9px;height:9px;border-radius:50%;background:var(--warning);box-shadow:0 0 12px #fbbf2499}.signal-rail.is-healthy .signal-rail-dot{background:var(--accent-3);box-shadow:0 0 12px #22d3ee9e}.signal-rail .muted{margin-top:3px;font-size:12px}.ai-config-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.ai-key-row{display:flex;align-items:stretch;gap:8px}.ai-key-row .input{min-width:0;flex:1}.ai-key-mask{margin-top:6px;font-size:12px}.ai-connection-meta{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:10px;margin-top:18px}.ai-connection-meta>div{display:grid;gap:4px;padding:11px 12px;border:1px solid var(--border);border-radius:10px;background:var(--surface-2)}.ai-connection-meta strong{font-size:13px}.ai-config-actions{display:flex;flex-wrap:wrap;gap:10px;margin-top:18px}.ai-config-page :focus-visible{outline:2px solid var(--accent-3);outline-offset:3px}@media(max-width:720px){.signal-rail{grid-template-columns:auto minmax(0,1fr)}.signal-rail .badge{grid-column:2;justify-self:start}.ai-config-grid,.ai-connection-meta{grid-template-columns:1fr}.ai-key-row,.ai-config-actions{align-items:stretch;flex-direction:column}.ai-config-actions .btn{width:100%}}@media(prefers-reduced-motion:reduce){.signal-rail-dot{box-shadow:none}}.course-assistant{position:relative;display:flex;overflow:hidden}.course-assistant-rail{position:absolute;inset:0 auto 0 0;width:4px;background:var(--accent-3);box-shadow:0 0 14px #22d3ee85}.course-assistant-content{width:100%}.course-assistant-title{font-size:15px}.course-assistant-hint{margin-top:5px;font-size:12.5px;line-height:1.55}.course-assistant-form{display:grid;gap:8px;margin-top:14px}.course-assistant-form label{font-size:13px;font-weight:600}.course-assistant-form textarea{min-height:82px;resize:vertical}.course-assistant-actions{display:flex;align-items:center;justify-content:space-between;gap:12px}.course-assistant-error{margin-top:10px;color:var(--danger);font-size:13px}.course-assistant-answer{margin-top:12px}.course-assistant-provider{display:inline-flex;padding:3px 9px;border-radius:var(--radius-pill);background:#22d3ee1f;color:var(--accent-3);font-size:11px;font-weight:650}.course-assistant-answer-text{margin-top:9px;line-height:1.7;white-space:pre-wrap}.course-assistant-disclosure{margin-top:8px;font-size:11px}.course-assistant :focus-visible{outline:2px solid var(--accent-3);outline-offset:3px}@media(max-width:720px){.course-assistant-actions{align-items:stretch;flex-direction:column}.course-assistant-actions .btn{width:100%}}@media(prefers-reduced-motion:reduce){.course-assistant-rail{box-shadow:none}}.divider{height:1px;background:var(--border);margin:18px 0}.cell-strong{font-weight:600;color:var(--text)}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes pop{0%{opacity:0;transform:scale(.96)}to{opacity:1;transform:scale(1)}}@keyframes realtime-pulse-anim{0%{box-shadow:0 0 #4a8eff8c}70%{box-shadow:0 0 0 8px #4a8eff00}to{box-shadow:0 0 #4a8eff00}}.realtime-pulse-badge{animation:realtime-pulse-anim 1.6s ease-out 1}
