:root{color-scheme:dark;--bg:#070b16;--bg-2:#0b1120;--surface:rgba(255,255,255,0.032);--surface-2:rgba(255,255,255,0.05);--surface-solid:#121a2b;--input-bg:rgba(255,255,255,0.028);--chrome:rgba(9,13,24,0.72);--chrome-soft:rgba(9,13,24,0.56);--chrome-faint:rgba(9,13,24,0.4);--wash:rgba(255,255,255,0.03);--wash-soft:rgba(255,255,255,0.02);--track:rgba(255,255,255,0.075);--sheen:rgba(255,255,255,0.14);--dots:rgba(255,255,255,0.035);--overlay:rgba(4,7,16,0.66);--code-bg:#0a0f1c;--logo-bg:#0a1020;--skeleton:rgba(255,255,255,0.055);--skeleton-sheen:rgba(255,255,255,0.075);--scroll-thumb:rgba(255,255,255,0.14);--scroll-thumb-hover:rgba(255,255,255,0.26);--text:#eef2fb;--text-soft:#c3ccdd;--muted:#8794ad;--faint:#5c6883;--on-accent:#fff;--active-fg:#fff;--accent:#7c86ff;--accent-hover:#a5adff;--accent-strong:#6366f1;--accent-2:#22d3ee;--violet:#a78bfa;--grad:linear-gradient(135deg,#6366f1,#8b5cf6 45%,#22d3ee 110%);--grad-soft:linear-gradient(135deg,rgba(99,102,241,0.18),rgba(34,211,238,0.12));--grad-text:linear-gradient(120deg,#a5b4fc,#c4b5fd 40%,#67e8f9);--glow-1:rgba(99,102,241,0.22);--glow-2:rgba(34,211,238,0.14);--glow-3:rgba(139,92,246,0.14);--success:#34d399;--danger:#fb7185;--warn:#fbbf24;--c-accent-bg:rgba(124,134,255,0.12);--c-accent-br:rgba(124,134,255,0.32);--c-accent-fg:#dbdefe;--c-indigo-bg:rgba(99,102,241,0.16);--c-indigo-br:rgba(99,102,241,0.4);--c-indigo-fg:#c7d0ff;--c-cyan-bg:rgba(34,211,238,0.14);--c-cyan-br:rgba(34,211,238,0.38);--c-cyan-fg:#a5f3fc;--c-violet-bg:rgba(167,139,250,0.16);--c-violet-br:rgba(167,139,250,0.4);--c-violet-fg:#ddd6fe;--c-green-bg:rgba(52,211,153,0.14);--c-green-br:rgba(52,211,153,0.4);--c-green-fg:#bbf7d0;--c-amber-bg:rgba(251,191,36,0.14);--c-amber-br:rgba(251,191,36,0.4);--c-amber-fg:#fde68a;--c-red-bg:rgba(251,113,133,0.12);--c-red-br:rgba(251,113,133,0.35);--c-red-fg:#fecdd3;--bubble-ai-bg:rgba(34,211,238,0.07);--bubble-ai-br:rgba(34,211,238,0.22);--border:rgba(255,255,255,0.09);--border-strong:rgba(255,255,255,0.16);--ring:rgba(124,134,255,0.45);--shadow-sm:0 1px 2px rgba(0,0,0,0.35);--shadow:0 18px 40px -22px rgba(0,0,0,0.85);--shadow-lg:0 40px 80px -32px rgba(3,6,18,0.9);--r-sm:10px;--r:14px;--r-lg:20px;--r-xl:28px;--font:"Inter","Segoe UI",system-ui,-apple-system,sans-serif;--mono:ui-monospace,"SF Mono","JetBrains Mono",Menlo,Consolas,monospace}[data-theme=light]{color-scheme:light;--bg:#f5f7fc;--bg-2:#eceff8;--surface:rgba(255,255,255,0.72);--surface-2:rgba(15,23,42,0.045);--surface-solid:#fff;--input-bg:rgba(255,255,255,0.9);--chrome:rgba(255,255,255,0.8);--chrome-soft:rgba(255,255,255,0.7);--chrome-faint:rgba(255,255,255,0.55);--wash:rgba(15,23,42,0.035);--wash-soft:rgba(15,23,42,0.022);--track:rgba(15,23,42,0.09);--sheen:transparent;--dots:rgba(15,23,42,0.05);--overlay:rgba(15,23,42,0.35);--code-bg:#f1f5f9;--skeleton:rgba(15,23,42,0.07);--skeleton-sheen:rgba(255,255,255,0.65);--scroll-thumb:rgba(15,23,42,0.18);--scroll-thumb-hover:rgba(15,23,42,0.3);--text:#0f172a;--text-soft:#334155;--muted:#64748b;--faint:#94a3b8;--active-fg:#3730a3;--accent:#4f46e5;--accent-hover:#3730a3;--accent-strong:#4338ca;--grad-soft:linear-gradient(135deg,rgba(99,102,241,0.14),rgba(34,211,238,0.1));--grad-text:linear-gradient(120deg,#4f46e5,#7c3aed 45%,#0891b2);--glow-1:rgba(99,102,241,0.14);--glow-2:rgba(34,211,238,0.1);--glow-3:rgba(139,92,246,0.1);--success:#059669;--danger:#e11d48;--warn:#b45309;--c-accent-bg:rgba(99,102,241,0.1);--c-accent-br:rgba(99,102,241,0.28);--c-accent-fg:#3730a3;--c-indigo-bg:rgba(99,102,241,0.12);--c-indigo-br:rgba(99,102,241,0.3);--c-indigo-fg:#3730a3;--c-cyan-bg:rgba(8,145,178,0.1);--c-cyan-br:rgba(8,145,178,0.28);--c-cyan-fg:#0e7490;--c-violet-bg:rgba(124,58,237,0.1);--c-violet-br:rgba(124,58,237,0.28);--c-violet-fg:#6d28d9;--c-green-bg:rgba(5,150,105,0.1);--c-green-br:rgba(5,150,105,0.28);--c-green-fg:#047857;--c-amber-bg:rgba(180,83,9,0.1);--c-amber-br:rgba(180,83,9,0.26);--c-amber-fg:#92400e;--c-red-bg:rgba(225,29,72,0.09);--c-red-br:rgba(225,29,72,0.26);--c-red-fg:#be123c;--bubble-ai-bg:rgba(8,145,178,0.07);--bubble-ai-br:rgba(8,145,178,0.2);--border:rgba(15,23,42,0.1);--border-strong:rgba(15,23,42,0.2);--ring:rgba(79,70,229,0.22);--shadow-sm:0 1px 2px rgba(15,23,42,0.08);--shadow:0 18px 40px -26px rgba(15,23,42,0.28);--shadow-lg:0 34px 70px -34px rgba(15,23,42,0.35)}*{box-sizing:border-box}body,html{margin:0;padding:0;min-height:100%;color:var(--text);font-family:var(--font);font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;background:var(--bg)}body{position:relative;background:radial-gradient(900px 620px at 8% -8%,var(--glow-1),transparent 60%),radial-gradient(820px 560px at 100% 0,var(--glow-2),transparent 55%),radial-gradient(1000px 700px at 50% 120%,var(--glow-3),transparent 60%),linear-gradient(180deg,var(--bg),var(--bg-2));background-attachment:fixed}body:before{content:"";position:fixed;inset:0;z-index:0;pointer-events:none;background-image:radial-gradient(var(--dots) 1px,transparent 1px);background-size:42px 42px;-webkit-mask-image:radial-gradient(circle at 50% 30%,#000 0,transparent 75%);mask-image:radial-gradient(circle at 50% 30%,#000 0,transparent 75%);opacity:.6}a{color:var(--accent);text-decoration:none;transition:color .15s ease}a:hover{color:var(--accent-hover)}button,input,select,textarea{font:inherit;color:inherit}::selection{background:rgba(124,134,255,.35);color:#fff}*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) transparent}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border-radius:999px;border:2px solid transparent;background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover);background-clip:padding-box}.app-shell{min-height:100vh;display:flex;flex-direction:column}.container{flex:1 1;width:100%;max-width:1160px;margin:0 auto;padding:2rem 1.5rem 4rem;animation:page-in .45s ease both}.container,.site-footer{position:relative;z-index:1}.site-footer{margin-top:auto;border-top:1px solid var(--border);background:var(--chrome-soft);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.site-footer-inner{max-width:1160px;margin:0 auto;padding:1rem 1.5rem;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:.55rem;color:var(--muted);font-size:.82rem;letter-spacing:.02em}.site-footer-sep{opacity:.45;-webkit-user-select:none;-moz-user-select:none;user-select:none}@keyframes page-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}.nav{position:-webkit-sticky;position:sticky;top:0;z-index:50;display:flex;gap:1rem;justify-content:space-between;padding:.85rem 1.5rem;border-bottom:1px solid var(--border);background:var(--chrome);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4)}.brand,.nav{align-items:center}.brand{display:inline-flex;gap:.6rem;font-weight:700;font-size:1.05rem;letter-spacing:-.01em}.brand,.brand:hover{color:var(--text)}.brand-mark{display:grid;place-items:center;width:36px;height:36px;border-radius:11px;overflow:hidden;background:var(--logo-bg);box-shadow:0 8px 22px -8px rgba(34,211,238,.55),0 0 0 1px rgba(255,255,255,.08);flex-shrink:0}.brand-mark img{width:100%;height:100%}.brand-mark img,.hero-logo{object-fit:cover;display:block}.hero-logo{width:96px;height:96px;border-radius:22px;margin:0 auto 1.25rem;box-shadow:0 20px 50px -18px rgba(34,211,238,.55),0 0 0 1px rgba(255,255,255,.08);animation:logo-in .7s ease both}@keyframes logo-in{0%{opacity:0;transform:translateY(8px) scale(.96)}to{opacity:1;transform:none}}.auth-logo{width:88px;height:88px;border-radius:20px;object-fit:cover;display:block;box-shadow:0 16px 40px -14px rgba(168,85,247,.45),0 0 0 1px rgba(255,255,255,.08)}.brand-text b{font-weight:700}.brand-text span{color:var(--muted);font-weight:500}.nav-links{display:flex;gap:.25rem;flex-wrap:wrap;align-items:center;margin-left:auto}.nav-actions{display:inline-flex;align-items:center;gap:.35rem;flex-shrink:0}.nav-toggle,.theme-toggle .theme-ico-moon,[data-theme=light] .theme-toggle .theme-ico-sun{display:none}[data-theme=light] .theme-toggle .theme-ico-moon{display:block}.nav-link{position:relative;display:inline-flex;align-items:center;gap:.4rem;padding:.5rem .8rem;border-radius:10px;color:var(--text-soft);font-weight:500;font-size:.92rem;transition:background .15s ease,color .15s ease}.nav-link svg{width:16px;height:16px;opacity:.8}.nav-link:hover{background:var(--surface-2);color:var(--text)}.nav-link.active{background:var(--grad-soft);color:var(--active-fg)}.nav-link.active:after{content:"";position:absolute;left:.8rem;right:.8rem;bottom:2px;height:2px;border-radius:2px;background:var(--grad)}.nav-user{display:inline-flex;align-items:center;gap:.55rem;padding-left:.6rem;margin-left:.35rem;border-left:1px solid var(--border)}.avatar{display:grid;place-items:center;width:32px;height:32px;border-radius:50%;font-size:.8rem;font-weight:700;color:var(--on-accent);background:var(--grad);box-shadow:inset 0 1px 0 rgba(255,255,255,.3);flex-shrink:0}.nav-user-name{font-size:.88rem;color:var(--text-soft);font-weight:500}.card,.panel{position:relative;background:var(--surface);border:1px solid var(--border);border-radius:var(--r-lg);padding:1.5rem;margin-bottom:1.25rem;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow)}.card:before,.panel:before{content:"";position:absolute;inset:0;border-radius:inherit;padding:1px;background:linear-gradient(160deg,var(--sheen),transparent 40%);-webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;pointer-events:none;opacity:.7}.card-hover{transition:transform .22s cubic-bezier(.2,.7,.2,1),box-shadow .22s ease,border-color .22s ease}.card-hover:hover{transform:translateY(-4px);border-color:var(--border-strong);box-shadow:var(--shadow-lg)}.card-accent{border-color:var(--c-amber-br);background:var(--c-amber-bg)}.card-title{display:flex;align-items:center;gap:.55rem;margin:0 0 .9rem;font-size:1.15rem;font-weight:650;letter-spacing:-.01em}.card-title svg{width:18px;height:18px;color:var(--accent)}.grid{display:grid;grid-gap:1.25rem;gap:1.25rem}.grid-2{grid-template-columns:repeat(auto-fit,minmax(300px,1fr))}.grid-3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr))}h1{font-size:2rem;font-weight:720;letter-spacing:-.025em;margin:0 0 .4rem;line-height:1.15}h2{font-size:1.2rem;font-weight:650;letter-spacing:-.015em;margin:0 0 .85rem}h3{font-size:1.02rem;font-weight:620;margin:0 0 .5rem}.page-head{margin-bottom:1.6rem}.page-head h1{margin-bottom:.25rem}.page-head h1 svg{width:1.15em;height:1.15em;color:var(--accent);vertical-align:-.12em}.page-head .sub{color:var(--muted);font-size:.98rem}.gradient-text{background:var(--grad-text);-webkit-background-clip:text;background-clip:text;color:transparent}.eyebrow{display:inline-flex;align-items:center;gap:.4rem;padding:.3rem .75rem;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);font-size:.78rem;font-weight:600;letter-spacing:.03em;text-transform:uppercase}.eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--success);box-shadow:0 0 0 3px rgba(52,211,153,.2)}.muted{color:var(--muted)}.text-soft{color:var(--text-soft)}.faint{color:var(--faint)}.error{color:var(--danger)}.success{color:var(--success)}.alert{display:flex;align-items:flex-start;gap:.6rem;padding:.75rem 1rem;border-radius:var(--r);border:1px solid var(--border);margin-bottom:1rem;font-size:.92rem}.alert svg{width:17px;height:17px;flex-shrink:0;margin-top:2px}.alert-error{background:var(--c-red-bg);border-color:var(--c-red-br);color:var(--c-red-fg)}.alert-success{background:var(--c-green-bg);border-color:var(--c-green-br);color:var(--c-green-fg)}.alert-info{background:var(--c-accent-bg);border-color:var(--c-accent-br);color:var(--c-accent-fg)}label{display:block;font-size:.82rem;font-weight:550;color:var(--text-soft);margin-bottom:.4rem}label.check{display:flex;align-items:center;gap:.55rem;font-weight:500;color:var(--text);cursor:pointer;padding:.15rem 0}input,select,textarea{width:100%;background:var(--input-bg);border:1px solid var(--border);color:var(--text);border-radius:var(--r-sm);padding:.7rem .85rem;margin-bottom:.9rem;transition:border-color .15s ease,box-shadow .15s ease,background .15s ease}input::placeholder,textarea::placeholder{color:var(--faint)}input:hover,select:hover,textarea:hover{border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{outline:none;border-color:var(--accent);background:rgba(124,134,255,.06);box-shadow:0 0 0 4px var(--ring)}textarea{resize:vertical;min-height:90px;line-height:1.55}input[type=checkbox]{width:18px;height:18px;margin:0;accent-color:var(--accent-strong);cursor:pointer}input[type=file]{padding:.6rem;cursor:pointer}input[type=file]::-webkit-file-upload-button{margin-right:.75rem;padding:.4rem .8rem;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);cursor:pointer;-webkit-transition:background .15s ease;transition:background .15s ease}input[type=file]::file-selector-button{margin-right:.75rem;padding:.4rem .8rem;border:1px solid var(--border);border-radius:8px;background:var(--surface-2);color:var(--text);cursor:pointer;transition:background .15s ease}input[type=file]::-webkit-file-upload-button:hover{background:var(--surface-solid)}input[type=file]::file-selector-button:hover{background:var(--surface-solid)}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%238794ad' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .8rem center;padding-right:2.2rem}select option{background:var(--surface-solid);color:var(--text)}.btn,button{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;background:var(--grad);background-size:160% 160%;color:#fff;border:none;border-radius:var(--r-sm);padding:.65rem 1.15rem;font-weight:600;font-size:.92rem;cursor:pointer;transition:transform .12s ease,box-shadow .18s ease,background-position .4s ease,opacity .15s ease,filter .15s ease;box-shadow:0 12px 26px -12px rgba(99,102,241,.85),inset 0 1px 0 rgba(255,255,255,.25)}.btn svg,button svg{width:16px;height:16px}.btn:hover,button:hover{background-position:100% 0;transform:translateY(-1px);box-shadow:0 16px 34px -12px rgba(99,102,241,.95),inset 0 1px 0 rgba(255,255,255,.3)}.btn:active,button:active{transform:translateY(0)}.btn:disabled,button:disabled{opacity:.5;cursor:not-allowed;transform:none;filter:grayscale(.3);box-shadow:none}.btn.secondary,button.secondary{background:var(--surface-2);color:var(--text);border:1px solid var(--border);box-shadow:none}.btn.secondary:hover,button.secondary:hover{background:var(--surface-solid);border-color:var(--border-strong);transform:translateY(-1px);box-shadow:var(--shadow-sm)}.btn.ghost,button.ghost{background:transparent;box-shadow:none;color:var(--text-soft);padding:.5rem .7rem}.btn.ghost:hover,button.ghost:hover{background:var(--surface-2);color:var(--text);transform:none;box-shadow:none}.btn.danger,button.danger{background:linear-gradient(135deg,#f43f5e,#fb7185);box-shadow:0 12px 26px -14px rgba(244,63,94,.9)}button.icon-btn{padding:.4rem;width:34px;height:34px;background:var(--surface-2);color:var(--text-soft);border:1px solid var(--border);box-shadow:none}button.icon-btn:hover{background:var(--surface-solid);color:var(--text);transform:none}.btn-block{width:100%}.btn-sm{padding:.45rem .8rem;font-size:.85rem}.btn-lg{padding:.85rem 1.5rem;font-size:1rem}.btn-row{display:flex;gap:.6rem;flex-wrap:wrap}.badge,.btn-row{align-items:center}.badge{display:inline-flex;gap:.35rem;padding:.22rem .6rem;border-radius:999px;font-size:.75rem;font-weight:600;border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);letter-spacing:.01em}.badge-dot{width:6px;height:6px;border-radius:50%;background:currentColor}.badge.indigo{background:var(--c-indigo-bg);border-color:var(--c-indigo-br);color:var(--c-indigo-fg)}.badge.cyan{background:var(--c-cyan-bg);border-color:var(--c-cyan-br);color:var(--c-cyan-fg)}.badge.violet{background:var(--c-violet-bg);border-color:var(--c-violet-br);color:var(--c-violet-fg)}.badge.green{background:var(--c-green-bg);border-color:var(--c-green-br);color:var(--c-green-fg)}.badge.amber{background:var(--c-amber-bg);border-color:var(--c-amber-br);color:var(--c-amber-fg)}.badge.red{background:var(--c-red-bg);border-color:var(--c-red-br);color:var(--c-red-fg)}.badge.gray{background:var(--surface-2)}.stat-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));grid-gap:1rem;gap:1rem;margin-bottom:1.5rem}.stat-card,.stat-chip{position:relative;overflow:hidden;background:var(--surface);border:1px solid var(--border);border-radius:var(--r);padding:1.1rem 1.15rem;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .2s ease,border-color .2s ease}.stat-card:hover,.stat-chip:hover{transform:translateY(-3px);border-color:var(--border-strong)}.stat-card:after,.stat-chip:after{content:"";position:absolute;top:-40%;right:-20%;width:120px;height:120px;background:radial-gradient(circle,rgba(124,134,255,.22),transparent 70%);pointer-events:none}.stat-card .value,.stat-chip strong{display:block;font-size:1.7rem;font-weight:720;letter-spacing:-.02em;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.stat-card .label,.stat-chip span{color:var(--muted);font-size:.82rem;font-weight:500}.stat-card .stat-ico{display:grid;place-items:center;width:36px;height:36px;border-radius:10px;background:var(--grad-soft);border:1px solid var(--border);color:var(--accent);margin-bottom:.75rem}.stat-card .stat-ico svg{width:18px;height:18px}.health-strip{display:grid;grid-template-columns:repeat(auto-fit,minmax(170px,1fr));grid-gap:.75rem;gap:.75rem;margin-bottom:1.5rem}.health-item{display:flex;align-items:center;gap:.65rem;padding:.75rem .9rem;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}.health-item .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}.health-item.ok .dot{background:var(--success);box-shadow:0 0 0 4px rgba(52,211,153,.14)}.health-item.bad .dot{background:var(--danger);box-shadow:0 0 0 4px rgba(251,113,133,.14)}.health-item.bad{border-color:rgba(251,113,133,.4)}.health-item-body{display:flex;flex-direction:column;min-width:0}.health-item-body b{font-size:.9rem;font-weight:600}.health-item-body>span{color:var(--muted);font-size:.8rem}.progress-bar{height:8px;background:var(--track);border-radius:999px;overflow:hidden;margin:.5rem 0 .85rem}.progress-bar>span{display:block;height:100%;border-radius:999px;background:var(--grad);box-shadow:0 0 12px rgba(124,134,255,.6);transition:width .6s cubic-bezier(.2,.7,.2,1)}.clean-list{list-style:none;padding:0;margin:0}.list-item{display:flex;align-items:center;gap:.65rem;padding:.7rem .85rem;border-radius:var(--r-sm);border:1px solid transparent;transition:background .15s ease,border-color .15s ease}.list-item+.list-item{margin-top:.3rem}.list-item:hover{background:var(--surface-2);border-color:var(--border)}.table-wrap{overflow-x:auto;border-radius:var(--r);border:1px solid var(--border)}.table{width:100%;border-collapse:collapse;font-size:.92rem}.table th{text-align:left;font-size:.76rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted);background:var(--wash);white-space:nowrap}.table td,.table th{padding:.75rem .9rem;border-bottom:1px solid var(--border)}.table td{vertical-align:middle}.table tbody tr{transition:background .12s ease}.table tbody tr:hover{background:var(--wash-soft)}.table tbody tr:last-child td{border-bottom:none}.empty{text-align:center;padding:2rem 1rem;color:var(--muted)}.empty svg{width:34px;height:34px;opacity:.4;margin-bottom:.6rem}.chat{display:flex;flex-direction:column;gap:1rem;max-height:480px;overflow-y:auto;padding:.5rem .25rem}.chat-msg{display:flex;gap:.7rem;max-width:82%;animation:bubble-in .3s ease both}@keyframes bubble-in{0%{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}.chat-msg.mine{align-self:flex-end;flex-direction:row-reverse}.chat-ava{display:grid;place-items:center;width:34px;height:34px;flex-shrink:0;border-radius:50%;font-size:.72rem;font-weight:700;color:#fff;box-shadow:inset 0 1px 0 rgba(255,255,255,.3)}.chat-ava.ai{background:linear-gradient(135deg,#22d3ee,#6366f1)}.chat-ava.student{background:linear-gradient(135deg,#8b5cf6,#ec4899)}.chat-ava.system{background:linear-gradient(135deg,#f43f5e,#fb7185)}.bubble{padding:.75rem 1rem;border-radius:16px;border:1px solid var(--border);background:var(--surface-2);white-space:pre-wrap;word-break:break-word;box-shadow:var(--shadow-sm)}.bubble .role-tag{font-size:.72rem;font-weight:650;text-transform:uppercase;letter-spacing:.04em;margin-bottom:.3rem;opacity:.75}.chat-msg .bubble{border-bottom-left-radius:5px}.chat-msg.mine .bubble{border-bottom-left-radius:16px;border-bottom-right-radius:5px;background:var(--c-accent-bg);border-color:var(--c-accent-br)}.bubble.ai{background:var(--bubble-ai-bg);border-color:var(--bubble-ai-br)}.bubble.system{background:var(--c-red-bg);border-color:var(--c-red-br);color:var(--c-red-fg)}.chat-photo{display:block;max-width:min(100%,420px);max-height:360px;width:auto;height:auto;border-radius:12px;margin:.35rem 0;border:1px solid var(--border)}.status-pill{display:inline-flex;align-items:center;gap:.5rem;padding:.5rem .9rem;border-radius:999px;border:1px solid var(--border);background:var(--surface-2);font-size:.88rem;color:var(--text-soft)}.status-pill.err{background:var(--c-red-bg);border-color:var(--c-red-br);color:var(--c-red-fg)}.spinner{width:15px;height:15px;border-radius:50%;border:2px solid color-mix(in srgb,currentColor 28%,transparent);border-top-color:currentcolor;animation:spin .7s linear infinite}@keyframes spin{to{transform:rotate(1turn)}}.math-toolbar{display:flex;flex-wrap:wrap;gap:.4rem;margin-bottom:.6rem}.math-toolbar button{padding:.35rem .6rem;font-size:.82rem;font-family:var(--mono)}.math-split{display:grid;grid-template-columns:1fr 1fr;grid-gap:.85rem;gap:.85rem}.math-split textarea{margin-bottom:0;min-height:190px;font-family:var(--mono);font-size:.88rem}.math-preview{margin-bottom:0;min-height:190px;overflow:auto;background:var(--wash-soft);border:1px solid var(--border);border-radius:var(--r-sm);padding:.9rem}.math-md p{margin:.4rem 0}.math-md .katex-display{margin:.75rem 0;overflow-x:auto;overflow-y:hidden}.math-md b .katex,.math-md b .katex .mbin,.math-md b .katex .mord,.math-md b .katex .mrel,.math-md strong .katex,.math-md strong .katex .mbin,.math-md strong .katex .mord,.math-md strong .katex .mrel{font-weight:700}.math-md img{display:block;max-width:100%;height:auto;margin:.5rem 0;border-radius:var(--r-sm);border:1px solid var(--border)}.math-md ol{list-style-type:decimal}.math-md ol,.math-md ul{padding-left:1.5rem;margin:.5rem 0}.math-md ul{list-style-type:disc}.math-md li{margin:.25rem 0}.math-md ol ol,.math-md ul ul{margin-top:.25rem}.field-note{font-size:.8rem;line-height:1.45;color:var(--muted);margin:-.35rem 0 .55rem}.field-note.warn{margin-top:.15rem;padding:.55rem .7rem;border-radius:var(--r-sm);border:1px solid var(--border);background:var(--wash-soft)}.field-note em{font-style:italic}.ai-preview{font-family:var(--mono);font-size:.8rem;line-height:1.55;white-space:pre-wrap;background:var(--code-bg);border:1px solid var(--border);border-radius:var(--r-sm);padding:1rem;max-height:300px;overflow:auto;color:var(--text-soft)}.course-layout{display:grid;grid-template-columns:minmax(240px,300px) 1fr;grid-gap:1.25rem;gap:1.25rem;align-items:start}.lesson-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.lesson-list li{display:block}.lesson-list .lesson-name{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:transparent;border:1px solid transparent;color:var(--text-soft);box-shadow:none;font-weight:500;padding:.55rem .7rem}.lesson-list .lesson-name:hover{background:var(--surface-2);color:var(--text);transform:none;box-shadow:none}.lesson-list .lesson-name.active{background:var(--grad-soft);border-color:var(--c-accent-br);color:var(--active-fg)}.tree{display:flex;flex-direction:column;gap:.7rem}.tree-section{border:1px solid var(--border);border-radius:var(--r-sm);background:var(--wash);padding:.55rem .55rem .65rem}.tree-themes{display:flex;flex-direction:column;gap:.65rem;margin-top:.45rem}.tree-row{display:flex;align-items:center;gap:.25rem;min-width:0}.tree-row .icon-btn{flex-shrink:0}.tree-btn{flex:1 1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:left;background:transparent;border:1px solid transparent;color:var(--text-soft);box-shadow:none;font-weight:500;padding:.5rem .65rem}.tree-btn:hover{background:var(--surface-2);color:var(--text);transform:none;box-shadow:none}.tree-btn.active{background:var(--grad-soft);border-color:var(--c-accent-br);color:var(--active-fg)}.tree-btn.section{font-size:.78rem;font-weight:700;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.tree-btn.section.active{color:var(--active-fg)}.tree-lessons{padding-left:.6rem;margin:.3rem 0 0 .35rem;border-left:1px solid var(--border)}.tree-move{font-size:.78rem;padding:.3rem 1.9rem .3rem .55rem;margin:.25rem 0 .15rem;background-position:right .55rem center}.tree-empty{font-size:.8rem;color:var(--faint);margin:.3rem 0 0 .7rem}.hero{position:relative;text-align:center;padding:4.5rem 1.5rem 3rem;overflow:hidden}.hero h1{font-size:clamp(2.2rem,5vw,3.6rem);line-height:1.08;margin:1.25rem auto 1rem;max-width:15ch}.hero p.lead{font-size:1.12rem;color:var(--text-soft);max-width:58ch;margin:0 auto 2rem}.hero-cta{display:flex;gap:.8rem;justify-content:center;flex-wrap:wrap}.feature-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));grid-gap:1.25rem;gap:1.25rem;margin-top:1rem}.feature .f-ico{display:grid;place-items:center;width:44px;height:44px;border-radius:13px;background:var(--grad-soft);border:1px solid var(--border);color:var(--accent);margin-bottom:.9rem}.feature .f-ico svg{width:22px;height:22px}.auth-wrap{display:grid;grid-template-columns:1.05fr 1fr;grid-gap:1.5rem;gap:1.5rem;align-items:stretch;max-width:940px;margin:1.5rem auto}.auth-brand{position:relative;overflow:hidden;border-radius:var(--r-xl);padding:2.5rem;border:1px solid var(--border);background:radial-gradient(500px 300px at 20% 10%,rgba(99,102,241,.35),transparent 60%),radial-gradient(500px 400px at 100% 100%,rgba(34,211,238,.22),transparent 60%),var(--surface);display:flex;flex-direction:column;justify-content:space-between}.auth-brand h2{font-size:1.9rem;letter-spacing:-.02em}.auth-feature{display:flex;gap:.7rem;align-items:flex-start;margin-top:1rem}.auth-feature .tick{display:grid;place-items:center;width:26px;height:26px;flex-shrink:0;border-radius:8px;background:rgba(52,211,153,.15);border:1px solid rgba(52,211,153,.35);color:var(--success)}.auth-feature .tick svg{width:15px;height:15px}.password-field{margin-bottom:.25rem}.password-hint{font-size:.78rem;margin:.35rem 0 0;line-height:1.35}.password-meter{height:4px;border-radius:999px;background:var(--track);margin:.55rem 0 .45rem;overflow:hidden}.password-meter span{display:block;height:100%;border-radius:inherit;transition:width .25s ease,background .25s ease}.password-meter.weak span{background:var(--danger)}.password-meter.fair span{background:var(--warn)}.password-meter.good span{background:var(--success)}.password-meter.strong span{background:linear-gradient(90deg,var(--success),var(--accent-2))}.password-checklist{list-style:none;margin:0;padding:0;display:grid;grid-gap:.28rem;gap:.28rem}.password-checklist li{display:flex;align-items:center;gap:.4rem;font-size:.78rem;color:var(--muted);transition:color .2s ease}.password-checklist li svg{width:13px;height:13px;flex-shrink:0}.password-checklist li.ok{color:var(--c-green-fg)}.password-checklist li.miss{color:var(--muted);opacity:.85}.password-checklist li.optional{color:var(--muted)}.password-checklist li.optional.ok{color:var(--c-cyan-fg)}.password-checklist li em{font-style:normal;opacity:.7;font-size:.92em}.password-mismatch{color:var(--c-red-fg);font-size:.8rem;margin:.35rem 0 0}.password-match{color:var(--c-green-fg);font-size:.8rem;margin:.35rem 0 0}.auth-link{display:inline-block;margin:.35rem 0 .9rem;font-size:.88rem;color:var(--accent)}.auth-link:hover{text-decoration:underline}.username-prefix{display:flex;align-items:center;gap:.35rem}.username-prefix span{color:var(--muted);font-weight:600;font-size:.95rem}.username-prefix input{flex:1 1}.price-card{border:1px solid var(--border);border-radius:var(--r-lg);padding:1.4rem;background:var(--surface);transition:transform .2s ease,border-color .2s ease,box-shadow .2s ease}.price-card:hover{transform:translateY(-4px);border-color:rgba(124,134,255,.45);box-shadow:var(--shadow-lg)}.price-card .amount{font-size:2rem;font-weight:720;letter-spacing:-.02em}.price-card .amount small{font-size:.9rem;font-weight:500;color:var(--muted)}.qr-box{width:180px;height:180px;border-radius:var(--r);border:2px dashed var(--border-strong);display:grid;place-items:center;color:var(--muted);font-weight:600;background:repeating-linear-gradient(45deg,var(--wash-soft),var(--wash-soft) 8px,var(--surface-2) 8px,var(--surface-2) 16px)}.stack{flex-direction:column}.row,.stack{display:flex;gap:.75rem}.row{flex-wrap:wrap}.between,.row{align-items:center}.between{display:flex;justify-content:space-between;gap:1rem}.mt-0{margin-top:0}.mb-0{margin-bottom:0}.divider{height:1px;background:var(--border);border:none;margin:1.25rem 0}.back-link{display:inline-flex;align-items:center;gap:.35rem;color:var(--muted);font-size:.9rem;margin-bottom:1rem}.back-link:hover{color:var(--text)}@media (max-width:900px){.auth-wrap,.course-layout,.math-split{grid-template-columns:1fr}.auth-brand{display:none}}@media (max-width:860px){.nav{flex-wrap:wrap}.nav-toggle{display:inline-flex}.nav-links.collapsible{display:none;flex-basis:100%;width:100%;flex-direction:column;align-items:stretch;gap:.25rem;padding-top:.5rem;margin-top:.25rem;border-top:1px solid var(--border);animation:menu-in .2s ease both}.nav-links.collapsible.open{display:flex}.nav-link{padding:.7rem .85rem;font-size:.98rem}.nav-link.active:after{display:none}.nav-user{margin:.35rem 0 0;padding:.7rem .85rem 0;border-left:none;border-top:1px solid var(--border)}.nav-user-name{flex:1 1}}@keyframes menu-in{0%{opacity:0;transform:translateY(-6px)}to{opacity:1;transform:none}}@media (max-width:640px){.container{padding:1.25rem 1rem 3rem}h1{font-size:1.6rem}.chat-msg{max-width:92%}}.role-switch{display:flex;gap:.25rem;align-items:center}.role-switch.multi{padding:.2rem;border:1px solid var(--border);border-radius:12px;background:var(--wash)}.section-nav{display:flex;gap:.25rem;margin:-.5rem 0 1.75rem;padding-bottom:.7rem;border-bottom:1px solid var(--border);overflow-x:auto;scrollbar-width:none}.section-nav::-webkit-scrollbar{display:none}.section-tab{display:inline-flex;align-items:center;gap:.4rem;flex-shrink:0;padding:.45rem .75rem;border-radius:999px;border:1px solid transparent;color:var(--muted);font-size:.88rem;font-weight:550;white-space:nowrap;transition:background .15s ease,color .15s ease,border-color .15s ease}.section-tab svg{opacity:.85}.section-tab:hover{background:var(--surface-2);color:var(--text)}.section-tab.active{background:var(--grad-soft);border-color:var(--c-accent-br);color:var(--active-fg)}@media (max-width:860px){.role-switch{flex-direction:column;align-items:stretch;gap:.25rem}.role-switch.multi{padding:0;border:none;background:none}}.modal-backdrop{position:fixed;inset:0;z-index:70;display:grid;place-items:center;padding:1.25rem;background:var(--overlay);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);animation:fade-in .16s ease both}.modal{width:min(100%,480px);max-height:min(86vh,720px);display:flex;flex-direction:column;border:1px solid var(--border-strong);border-radius:var(--r-lg);background:var(--surface-solid);box-shadow:var(--shadow-lg);animation:modal-in .2s cubic-bezier(.2,.7,.2,1) both}.modal-wide{width:min(100%,840px);max-height:min(92vh,920px)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:1rem;flex-shrink:0;padding:1.05rem 1.25rem;border-bottom:1px solid var(--border)}.modal-head h2{margin:0;font-size:1.05rem}.modal-body{flex:1 1;min-height:0;overflow-y:auto;padding:1.25rem}.modal-body>:last-child{margin-bottom:0}@keyframes fade-in{0%{opacity:0}to{opacity:1}}@keyframes modal-in{0%{opacity:0;transform:translateY(12px) scale(.98)}to{opacity:1;transform:none}}.toast-stack{position:fixed;z-index:80;right:1.25rem;bottom:1.25rem;flex-direction:column;width:min(92vw,380px);pointer-events:none}.toast,.toast-stack{display:flex;gap:.6rem}.toast{align-items:flex-start;padding:.75rem .85rem;border-radius:var(--r);border:1px solid var(--border-strong);background:var(--surface-solid);box-shadow:var(--shadow-lg);color:var(--text);font-size:.9rem;pointer-events:auto;animation:toast-in .22s cubic-bezier(.2,.7,.2,1) both}.toast>svg{flex-shrink:0;margin-top:2px}.toast>span{flex:1 1;min-width:0}.toast .icon-btn{width:24px;height:24px;flex-shrink:0;background:none;border-color:transparent;color:var(--muted)}.toast.success{border-color:var(--c-green-br)}.toast.success>svg{color:var(--success)}.toast.error{border-color:var(--c-red-br)}.toast.error>svg{color:var(--danger)}.toast.info>svg{color:var(--accent)}@keyframes toast-in{0%{opacity:0;transform:translateY(10px) scale(.98)}to{opacity:1;transform:none}}@keyframes toast-in-top{0%{opacity:0;transform:translateY(-10px) scale(.98)}to{opacity:1;transform:none}}@media (max-width:640px){.toast-stack{left:.75rem;right:.75rem;top:4.25rem;bottom:auto;width:auto}.toast{animation-name:toast-in-top}}.skeleton{display:block;position:relative;overflow:hidden;height:1rem;border-radius:var(--r-sm);background:var(--skeleton)}.skeleton:after{content:"";position:absolute;inset:0;transform:translateX(-100%);background:linear-gradient(90deg,transparent,var(--skeleton-sheen),transparent);animation:shimmer 1.4s infinite}@keyframes shimmer{to{transform:translateX(100%)}}@media (prefers-reduced-motion:reduce){.skeleton:after{animation:none}}.skeleton-card,.skeleton-stack{display:flex;flex-direction:column;gap:.55rem}.skeleton-card{padding:1.05rem 1.15rem;border:1px solid var(--border);border-radius:var(--r);background:var(--surface)}.skeleton-grid{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.skeleton-grid>.skeleton-card{flex:1 1 250px;max-width:380px}.stat-card .skeleton+.skeleton{margin-top:.55rem}.app-shell-fixed{height:100vh;height:100dvh;overflow:hidden}.app-shell-fixed>.nav{flex-shrink:0}@media (max-width:860px){.app-shell-fixed>.nav{max-height:100dvh;overflow-y:auto}}.app-main{position:relative;z-index:1;flex:1 1;min-height:0;display:flex}.app-main>*{flex:1 1;min-width:0}.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}.section-head{display:flex;align-items:baseline;justify-content:space-between;flex-wrap:wrap;gap:.5rem 1rem;margin-bottom:.9rem}.section-head h2{display:inline-flex;align-items:center;gap:.5rem;margin:0;font-size:1.05rem}.section-head h2 svg{width:18px;height:18px;color:var(--accent)}.section-head .faint{font-size:.82rem}.course-strip{display:flex;flex-wrap:wrap;gap:1rem;margin-bottom:1.5rem}.course-card{flex:1 1 250px;max-width:380px;display:flex;flex-direction:column;align-items:stretch;text-align:left;padding:1.05rem 1.15rem 1.1rem;border-radius:var(--r);border:1px solid var(--border);background:var(--surface);color:var(--text);box-shadow:none;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);transition:transform .18s ease,border-color .18s ease,box-shadow .18s ease,background .18s ease}.course-card:hover{background:var(--surface-2);border-color:var(--border-strong);transform:translateY(-3px);box-shadow:var(--shadow)}.course-card.active{border-color:var(--accent);background:var(--grad-soft);box-shadow:0 18px 40px -26px rgba(99,102,241,.9)}.course-card-top{display:flex;align-items:center;gap:.4rem;flex-wrap:wrap;margin-bottom:.65rem}.course-ico{display:grid;place-items:center;width:32px;height:32px;flex-shrink:0;border-radius:9px;border:1px solid var(--border);background:var(--grad-soft);color:var(--accent)}.course-ico svg{width:17px;height:17px}.course-card-add{border-style:dashed;background:none;justify-content:center;color:var(--muted)}.course-card-add:hover{color:var(--text);border-style:dashed}.course-card-add .course-ico{margin-bottom:.6rem}.course-card-title{font-size:1rem;font-weight:650;line-height:1.35}.course-card-meta{color:var(--muted);font-size:.82rem}.course-card .progress-bar{width:100%;margin:.65rem 0 .35rem}.course-card-pct{color:var(--text-soft);font-size:.78rem;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.progress-pair{display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));grid-gap:0 1.5rem;gap:0 1.5rem;margin-top:.7rem}.course-section{margin-top:1.2rem}.course-section-head{display:flex;align-items:baseline;justify-content:space-between;gap:.6rem;padding-bottom:.35rem;border-bottom:1px solid var(--border)}.course-section-head h3{margin:0;font-size:1rem}.course-section-head .pct{font-size:.82rem;color:var(--muted)}.theme-head{margin:0 0 .45rem;font-size:.79rem;font-weight:650;letter-spacing:.04em;text-transform:uppercase;color:var(--muted)}.lesson-row{display:flex;align-items:center;gap:.7rem;margin-top:.25rem;padding:.7rem .85rem;border-radius:var(--r-sm);border:1px solid transparent;color:var(--text);transition:background .15s ease,border-color .15s ease}.lesson-row:hover{background:var(--surface-2);border-color:var(--border);color:var(--text)}.lesson-row-title{flex:1 1;min-width:0}.lesson-check{display:grid;place-items:center;width:18px;height:18px;flex-shrink:0;border-radius:5px;border:1.5px solid var(--border-strong);color:transparent}.lesson-check.done{border-color:var(--success);background:var(--success);color:#fff}.tile-stack{flex:1 1 170px;max-width:230px;display:flex;flex-direction:column;gap:1rem}.tile-stack-row{flex:none;max-width:none;flex-direction:row;flex-wrap:wrap}.tile-stack-row .tile{flex:1 1 200px;max-width:280px}.tile{flex:1 1;display:flex;flex-direction:column;gap:.3rem;padding:.7rem .9rem .8rem;border-radius:var(--r);border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.tile-label{display:inline-flex;align-items:center;gap:.35rem;font-size:.72rem;font-weight:600;color:var(--muted)}.tile-value{font-size:1.45rem;font-weight:700;line-height:1.1;font-feature-settings:"tnum";font-variant-numeric:tabular-nums}.tile-note,.tile-value-muted{color:var(--faint)}.tile-note{font-size:.68rem;line-height:1.3}.tile-progress{display:flex;align-items:center;justify-content:space-between;gap:.6rem}.tile-progress-col{display:flex;flex-direction:column;align-items:center;gap:.15rem;min-width:0}.donut{width:46px;height:46px;flex-shrink:0}.donut-track{stroke:var(--track)}.donut-value{stroke:var(--accent)}.donut-label{font-size:11px;font-weight:700;fill:var(--text-soft)}.area-card{padding:.9rem 1.1rem 1rem;margin-bottom:.85rem;border-radius:var(--r);border:1px solid var(--border);background:var(--surface);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px)}.area-title{display:inline-flex;align-items:center;gap:.45rem;margin:0 0 .75rem;font-size:.92rem;font-weight:650}.area-title svg{color:var(--accent)}.area-subjects{display:flex;flex-wrap:wrap;gap:.55rem 1.1rem}a.subject-pill,button.subject-pill{display:inline-flex;align-items:center;gap:.4rem;padding:.4rem .9rem;border-radius:999px;font-size:.82rem;font-weight:600;border:1px solid var(--border);background:var(--surface-2);color:var(--text-soft);box-shadow:none;text-decoration:none}a.subject-pill:hover,button.subject-pill:hover{transform:translateY(-1px);box-shadow:var(--shadow-sm);background:var(--surface-2);color:inherit}a.subject-pill.cyan,button.subject-pill.cyan{background:var(--c-cyan-bg);border-color:var(--c-cyan-br);color:var(--c-cyan-fg)}a.subject-pill.amber,button.subject-pill.amber{background:var(--c-amber-bg);border-color:var(--c-amber-br);color:var(--c-amber-fg)}a.subject-pill.red,button.subject-pill.red{background:var(--c-red-bg);border-color:var(--c-red-br);color:var(--c-red-fg)}a.subject-pill.green,button.subject-pill.green{background:var(--c-green-bg);border-color:var(--c-green-br);color:var(--c-green-fg)}a.subject-pill.active,button.subject-pill.active{border-color:var(--accent);box-shadow:0 0 0 2px var(--c-accent-bg)}button.subject-pill:disabled{opacity:.55;filter:none;cursor:default;transform:none}.subject-pill-note{font-size:.65rem;font-weight:500;text-transform:uppercase;letter-spacing:.04em;opacity:.75}.lesson-layout{display:grid;grid-template-columns:276px minmax(0,1fr) clamp(380px,28vw,560px);height:100%;min-height:0}.lesson-aside,.lesson-panel{display:flex;flex-direction:column;min-height:0;background:var(--chrome-faint)}.lesson-aside{border-right:1px solid var(--border)}.lesson-panel{border-left:1px solid var(--border)}.lesson-aside-head{display:flex;align-items:center;justify-content:space-between;gap:.5rem;padding:.85rem 1rem 0}.lesson-aside-head .back-link{margin-bottom:0}.lesson-aside-title{padding:.6rem 1rem .9rem;border-bottom:1px solid var(--border)}.lesson-aside-title h2{margin:0;font-size:1.05rem;line-height:1.35}.lesson-aside-title .progress-bar{margin:.4rem 0 0}.lesson-task-list{flex:1 1;min-height:0;overflow-y:auto;padding:.6rem}.task-item{display:flex;align-items:flex-start;gap:.6rem;width:100%;padding:.65rem .7rem;border-radius:var(--r-sm);border:1px solid transparent;background:none;color:var(--text-soft);box-shadow:none;text-align:left;font-weight:500;transition:background .15s ease,border-color .15s ease,color .15s ease}.task-item:hover{background:var(--surface-2);border-color:var(--border);color:var(--text);transform:none;box-shadow:none}.task-item.active{background:var(--grad-soft);border-color:var(--accent);color:var(--text)}.task-item-num{display:grid;place-items:center;width:22px;height:22px;flex-shrink:0;border-radius:7px;border:1px solid var(--border);background:var(--surface-2);font-size:.74rem;font-weight:650;color:var(--muted)}.task-item.active .task-item-num{color:var(--text);border-color:var(--border-strong)}.task-item-body{display:flex;flex-direction:column;align-items:flex-start;gap:.3rem;min-width:0;flex:1 1}.task-item-title{font-size:.9rem;line-height:1.4}.chat-shell{display:flex;flex-direction:column;min-height:0}.chat-top{display:flex;align-items:center;gap:.6rem;flex-shrink:0;padding:.6rem 1.1rem;border-bottom:1px solid var(--border);background:var(--chrome-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)}.chat-top-title{display:flex;flex-direction:column;min-width:0;flex:1 1}.chat-top-title strong{font-size:.98rem;font-weight:650}.chat-top-title .faint,.chat-top-title strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.chat-top-title .faint{font-size:.76rem}.chat-scroll{display:flex;flex-direction:column;gap:1rem;flex:1 1;min-height:0;overflow-y:auto;padding:1.25rem 1.15rem}.chat-statement{padding:.8rem 1rem;border-radius:var(--r);border:1px solid var(--border);background:var(--wash)}.chat-statement-head{display:inline-flex;align-items:center;gap:.4rem;margin-bottom:.3rem;font-size:.73rem;font-weight:650;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.chat-statement-head svg{color:var(--accent)}.bubble-actions{margin-top:.75rem;padding-top:.75rem}.bubble-actions,.chat-notice{border-top:1px solid var(--border)}.chat-notice{display:flex;align-items:center;gap:.55rem;flex-shrink:0;padding:.55rem 1.15rem;background:var(--c-accent-bg);color:var(--text-soft);font-size:.85rem}.chat-notice.err{background:var(--c-red-bg);color:var(--c-red-fg)}.chat-notice svg{flex-shrink:0}.chat-notice span{flex:1 1;min-width:0}.chat-notice .icon-btn{width:26px;height:26px;background:none;border-color:transparent}.status-pill.sm{padding:.3rem .7rem;font-size:.8rem}.typing{display:inline-flex;align-items:center;gap:4px}.typing i{display:block;width:6px;height:6px;border-radius:50%;background:var(--accent);animation:typing 1.05s ease-in-out infinite}.typing i:nth-child(2){animation-delay:.16s}.typing i:nth-child(3){animation-delay:.32s}@keyframes typing{0%,80%,to{opacity:.25;transform:translateY(0)}40%{opacity:1;transform:translateY(-3px)}}.composer{flex-shrink:0;padding:.7rem 1.15rem .85rem;border-top:1px solid var(--border);background:var(--chrome-soft);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);transition:box-shadow .15s ease,background .15s ease}.composer.drag-over{background:var(--grad-soft);box-shadow:inset 0 0 0 2px var(--accent)}.composer-row{display:flex;align-items:flex-end;gap:.5rem}.composer-input{flex:1 1;min-width:0;min-height:44px;max-height:168px;margin:0;padding:.7rem .95rem;border-radius:18px;resize:none;overflow-y:auto;line-height:1.5}.composer-input:focus{box-shadow:0 0 0 3px var(--ring)}button.composer-attach,button.composer-send{flex-shrink:0;width:42px;height:42px;padding:0;border-radius:50%}button.composer-attach{background:var(--surface-2)}button.composer-send svg{width:17px;height:17px}.composer-hint{margin:.4rem 0 0;padding-left:3.1rem;min-height:1.1em;color:var(--faint);font-size:.75rem}.composer-file{display:flex;align-items:center;gap:.65rem;margin-bottom:.55rem;padding:.5rem .6rem;border:1px solid var(--border);border-radius:var(--r-sm);background:var(--surface-2)}.composer-thumb{width:42px;height:42px;flex-shrink:0;object-fit:cover;border-radius:8px;border:1px solid var(--border)}.composer-file-name{flex:1 1;min-width:0;font-size:.85rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.composer-locked{display:flex;align-items:center;gap:.55rem;color:var(--muted);font-size:.87rem}.composer-locked svg{flex-shrink:0;color:var(--accent)}.lesson-panel-head{display:flex;align-items:center;gap:.5rem;flex-shrink:0;flex-wrap:wrap;padding:.6rem .8rem;border-bottom:1px solid var(--border)}.tabs{display:flex;gap:.2rem;flex:1 1;min-width:0}.theory-full-btn{flex-shrink:0;padding:.35rem .65rem;font-size:.78rem;box-shadow:none}.theory-full-exit{flex-shrink:0;display:inline-flex;align-items:center;gap:.35rem;padding:.42rem .85rem;font-size:.82rem;font-weight:650;color:var(--text);background:var(--surface-2);border:1px solid var(--border-strong);box-shadow:none}.theory-full-exit:hover{background:var(--c-red-bg);border-color:var(--c-red-br);color:var(--c-red-fg);transform:none;box-shadow:none}.tab{flex:1 1;padding:.45rem .5rem;border-radius:var(--r-sm);border:1px solid transparent;background:none;box-shadow:none;color:var(--muted);font-size:.85rem;font-weight:600}.tab:hover{background:var(--surface-2);color:var(--text);transform:none;box-shadow:none}.tab.active{background:var(--grad-soft);border-color:var(--border-strong);color:var(--text)}.lesson-panel-body{flex:1 1;min-height:0;overflow-y:auto;padding:1rem 1.3rem 2rem}.panel-title{margin:0 0 .5rem;font-size:.95rem;font-weight:650}.app-shell-fixed:has(.lesson-panel.theory-full)>.app-main{z-index:90}.lesson-panel.theory-full{position:fixed;inset:0;z-index:80;display:flex;width:100%;max-width:none;border:none;background:var(--surface-solid);box-shadow:none}.lesson-panel.theory-full .lesson-panel-head{padding:.7rem 1rem;background:var(--chrome);backdrop-filter:blur(18px) saturate(1.4);-webkit-backdrop-filter:blur(18px) saturate(1.4)}.lesson-panel.theory-full .lesson-panel-body{max-width:52rem;width:100%;margin:0 auto;font-size:1.04rem}.lesson-panel.theory-full .lesson-drawer-close{display:none}.lesson-panel.theory-full .theory-full-exit{display:inline-flex}.notes-block{margin-top:1.6rem;padding-top:1.2rem;border-top:1px solid var(--border)}.notes-rubric{padding:.7rem .85rem;background:var(--wash)}.notes-latest,.notes-rubric{margin-bottom:.85rem;border:1px solid var(--border);border-radius:var(--r-sm)}.notes-latest{padding:.75rem .85rem;background:var(--surface-2)}.notes-block .composer{padding:.55rem 0 0;border-top:none;background:transparent;-webkit-backdrop-filter:none;backdrop-filter:none}.notes-block .composer-hint{padding-left:0}.lesson-drawer-close,.lesson-panel-toggle,.lesson-tasks-toggle{display:none}.lesson-backdrop{position:fixed;inset:0;z-index:55;display:none;padding:0;border:none;border-radius:0;background:var(--overlay);box-shadow:none;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px)}.lesson-backdrop:hover{transform:none;box-shadow:none}@media (max-width:1279px){.lesson-layout{grid-template-columns:276px minmax(0,1fr)}.lesson-panel{position:fixed;top:0;right:0;bottom:0;z-index:60;display:none;width:min(94vw,480px);border-left:1px solid var(--border);background:var(--surface-solid);box-shadow:var(--shadow-lg)}.lesson-panel.open{display:flex;animation:drawer-right .22s ease both}.lesson-panel.theory-full{display:flex;width:100%;z-index:80;animation:none}.lesson-panel .lesson-drawer-close,.lesson-panel-toggle{display:inline-flex}.lesson-backdrop{display:block}}@media (max-width:1023px){.lesson-layout{grid-template-columns:minmax(0,1fr)}.lesson-aside{position:fixed;top:0;left:0;bottom:0;z-index:60;display:none;width:min(88vw,320px);border-right:1px solid var(--border);background:var(--surface-solid);box-shadow:var(--shadow-lg)}.lesson-aside.open{display:flex;animation:drawer-left .22s ease both}.lesson-aside .lesson-drawer-close,.lesson-tasks-toggle{display:inline-flex}}@media (min-width:1280px){.chat-statement{display:none}}@keyframes drawer-left{0%{opacity:0;transform:translateX(-16px)}to{opacity:1;transform:none}}@keyframes drawer-right{0%{opacity:0;transform:translateX(16px)}to{opacity:1;transform:none}}@media (max-width:640px){.chat-scroll{padding:1rem .85rem}.chat-top,.composer{padding-left:.85rem;padding-right:.85rem}.composer-hint{padding-left:0}.course-card{max-width:none}}