:root{--bg: #ffffff;--surface-100: #f6f6f7;--surface-200: #eeeef0;--border: #e7e7ea;--border-strong: #d1d1d6;--ink: #0b0b0c;--ink-muted: #5d5d68;--ink-subtle: #757580;--primary: #0b0b0c;--primary-hover: #2a2a2e;--on-primary: #ffffff;--tint-peach: #ffd9c4;--tint-blush: #ffd6e5;--tint-lilac: #e3dcff;--tint-sky: #cfe5ff;--tint-mint: #d2f2e4;--success: #157f4c;--warning: #985600;--danger: #c4323a;--focus: rgba(11, 11, 12, .16);--shadow-sm: 0 1px 2px rgba(11, 11, 12, .05);--shadow-md: 0 8px 24px -6px rgba(11, 11, 12, .08);--shadow-lg: 0 24px 56px -16px rgba(11, 11, 12, .14);--dark: #101820;--blue: #3858F8;--fur: #FFF4E2;--fur-shade: #F2DDBD;--cheek: #F7A3A3;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-6: 24px;--space-8: 32px;--space-12: 48px;--space-20: 80px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--radius-pill: 9999px;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", ui-monospace, monospace;--ease: cubic-bezier(.2, .8, .2, 1);color-scheme:light}:root{--gradient-aurora: linear-gradient(135deg, var(--tint-peach), var(--tint-lilac) 50%, var(--tint-sky));--gradient-sunset: linear-gradient(135deg, var(--tint-blush), var(--tint-peach));--gradient-lagoon: linear-gradient(135deg, var(--tint-mint), var(--tint-sky));--gradient-orb: radial-gradient(circle at 30% 30%, var(--tint-peach), var(--tint-lilac) 45%, var(--tint-sky))}*,*:before,*:after{box-sizing:border-box}html,body{overflow-x:clip}body{margin:0;background:var(--bg);color:var(--ink);font:400 15px/24px var(--font-sans);-webkit-font-smoothing:antialiased}h1,h2,h3,p{margin:0}h1,h2,h3{font-weight:600;color:var(--ink)}h1{font-size:clamp(30px,4vw,40px);line-height:1.1;letter-spacing:-.035em}h2{font-size:22px;line-height:30px;letter-spacing:-.02em}h3{font-size:17px;line-height:24px;letter-spacing:-.01em}a{color:inherit}img{max-width:100%}button,input,select,textarea{font:inherit;color:inherit}:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}.mono{font-family:var(--font-mono);font-size:13px}.muted{color:var(--ink-muted)}.subtle,.accent{color:var(--ink-subtle)}.small{font-size:13px;line-height:20px}.danger-text{color:var(--danger)}.lm-row{display:flex;flex-wrap:wrap;gap:var(--space-3);align-items:center}.lm-stack{display:flex;flex-direction:column;gap:var(--space-4)}.lm-btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-pill);font:500 14px/20px var(--font-sans);cursor:pointer;transition:background .15s,border-color .15s,box-shadow .15s,transform .1s;white-space:nowrap;text-decoration:none}.lm-btn:focus-visible{outline:none;box-shadow:0 0 0 3px var(--focus)}.lm-btn:active{transform:scale(.98)}.lm-btn:disabled{opacity:.45;cursor:not-allowed;transform:none}.lm-btn-sm{height:32px;padding:0 var(--space-3);font-size:13px}.lm-btn-md{height:40px;padding:0 18px}.lm-btn-lg{height:48px;padding:0 var(--space-6);font-size:15px}.lm-btn-primary{background:var(--primary);color:var(--on-primary)}.lm-btn-primary:hover:not(:disabled){background:var(--primary-hover)}.lm-btn-secondary{background:var(--bg);color:var(--ink);border-color:var(--border-strong);box-shadow:var(--shadow-sm)}.lm-btn-secondary:hover:not(:disabled){background:var(--surface-100)}.lm-btn-ghost{background:transparent;color:var(--ink)}.lm-btn-ghost:hover:not(:disabled){background:var(--surface-200)}.lm-btn-gradient{color:var(--ink);background:linear-gradient(135deg,var(--tint-peach),var(--tint-lilac) 50%,var(--tint-sky))}.lm-btn-gradient:hover:not(:disabled){box-shadow:var(--shadow-md)}.lm-btn-icon{width:32px;padding:0}.lm-badge{display:inline-flex;align-items:center;gap:6px;height:24px;padding:0 10px;border-radius:var(--radius-pill);font:500 12px/16px var(--font-sans);color:var(--ink);background:var(--surface-200);white-space:nowrap}.lm-badge-dot:before{content:"";width:6px;height:6px;border-radius:50%;background:currentColor}.lm-badge-peach{background:var(--tint-peach)}.lm-badge-lilac{background:var(--tint-lilac)}.lm-badge-sky{background:var(--tint-sky)}.lm-badge-mint{background:var(--tint-mint)}.lm-badge-gradient{background:linear-gradient(135deg,var(--tint-peach),var(--tint-lilac) 50%,var(--tint-sky))}.lm-badge-success{color:var(--success);background:transparent;border:1px solid var(--border)}.lm-badge-danger{color:var(--danger);background:transparent;border:1px solid var(--border)}.lm-field{display:flex;flex-direction:column;gap:6px}.lm-field-label{font:500 14px/20px var(--font-sans);color:var(--ink)}.lm-input{height:44px;width:100%;padding:0 14px;border-radius:var(--radius-md);border:1px solid var(--border-strong);background:var(--bg);color:var(--ink);font:400 15px/24px var(--font-sans);transition:border-color .15s,box-shadow .15s}.lm-input::placeholder{color:var(--ink-subtle)}.lm-input:hover{border-color:var(--ink-subtle)}.lm-input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px var(--focus)}textarea.lm-input{height:auto;min-height:88px;padding:10px 14px;resize:vertical}select.lm-input{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:36px;background-image:linear-gradient(45deg,transparent 50%,var(--ink-subtle) 50%),linear-gradient(135deg,var(--ink-subtle) 50%,transparent 50%);background-position:calc(100% - 20px) 50%,calc(100% - 15px) 50%;background-size:5px 5px;background-repeat:no-repeat}.lm-field-hint{font:400 13px/20px var(--font-sans);color:var(--ink-muted)}.lm-field-error .lm-input{border-color:var(--danger)}.lm-field-error .lm-field-hint{color:var(--danger)}.lm-card{position:relative;overflow:hidden;border-radius:var(--radius-xl);border:1px solid var(--border);background:var(--bg);padding:var(--space-6);transition:box-shadow .2s,border-color .2s}.lm-card-interactive{cursor:pointer;text-decoration:none;color:inherit;display:block}.lm-card-interactive:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}.lm-card-glow{position:absolute;inset:0 0 auto 0;height:140px;border-radius:var(--radius-lg);margin:8px}.lm-card-glow-aurora{background:linear-gradient(135deg,var(--tint-peach),var(--tint-lilac) 50%,var(--tint-sky))}.lm-card-glow-sunset{background:linear-gradient(135deg,var(--tint-blush),var(--tint-peach))}.lm-card-glow-lagoon{background:linear-gradient(135deg,var(--tint-mint),var(--tint-sky))}.lm-card-has-glow{padding-top:172px}.lm-card-title{margin:0 0 6px;font:600 18px/26px var(--font-sans);letter-spacing:-.01em;color:var(--ink)}.lm-card-desc{margin:0;font:400 15px/24px var(--font-sans);color:var(--ink-muted)}.lm-card-body{margin-top:var(--space-4)}.tabs{display:flex;gap:var(--space-2);flex-wrap:wrap}.tab{height:36px;padding:0 16px;border-radius:var(--radius-pill);border:1px solid var(--border);background:var(--bg);font:500 14px/20px var(--font-sans);cursor:pointer;color:var(--ink-muted)}.tab:hover{color:var(--ink);border-color:var(--border-strong)}a.tab{display:inline-flex;align-items:center;text-decoration:none}.tab[aria-selected=true],a.tab.active{background:var(--primary);color:var(--on-primary);border-color:var(--primary)}.table-wrap{border:1px solid var(--border);border-radius:var(--radius-xl);overflow-x:auto;background:var(--bg)}.table{width:100%;border-collapse:collapse;font-size:14px}.table th{text-align:left;font:500 12px/16px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-subtle);padding:12px 16px;background:var(--surface-100);white-space:nowrap}.table td{padding:12px 16px;border-top:1px solid var(--border);vertical-align:middle}.table td.actions{text-align:right;white-space:nowrap}.table a{text-decoration:none}.table a:hover{text-decoration:underline}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0b0b0c3d;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);display:grid;place-items:center;padding:var(--space-4);z-index:50}.modal{width:min(520px,100%);max-height:calc(100vh - 32px);overflow:auto;background:var(--bg);border:1px solid var(--border);border-radius:var(--radius-xl);box-shadow:var(--shadow-lg);padding:var(--space-6);display:grid;gap:var(--space-4)}.modal-head{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3)}.modal-foot{display:flex;justify-content:flex-end;gap:var(--space-2)}.toast{position:fixed;bottom:24px;left:50%;transform:translate(-50%);z-index:60;background:var(--primary);color:var(--on-primary);border-radius:var(--radius-pill);padding:10px 20px;font-size:14px;box-shadow:var(--shadow-lg);max-width:calc(100% - 32px)}.toast.is-error{background:var(--danger);color:#fff}.state{padding:var(--space-12) var(--space-4);text-align:center;color:var(--ink-muted);display:grid;gap:var(--space-3);justify-items:center}.spinner{width:20px;height:20px;border-radius:50%;border:2px solid var(--border-strong);border-top-color:var(--ink);animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.alert{padding:12px 16px;border-radius:var(--radius-md);border:1px solid var(--border);font-size:14px;background:var(--bg)}.alert-danger{color:var(--danger)}.progress{height:6px;border-radius:var(--radius-pill);background:var(--surface-200);overflow:hidden}.progress>span{display:block;height:100%;background:var(--primary);border-radius:inherit}.bg{position:absolute;inset:0 0 auto;height:720px;z-index:-1;overflow:hidden;pointer-events:none}.bg--full{position:fixed;height:100vh}.blob{position:absolute;border-radius:50%;filter:blur(110px);opacity:.7;animation:drift 24s ease-in-out infinite alternate}.blob--1{width:50vw;height:50vw;left:-14vw;top:-22vw;background:var(--tint-peach)}.blob--2{width:44vw;height:44vw;right:-12vw;top:-6vw;background:var(--tint-lilac);animation-duration:28s}.blob--3{width:36vw;height:36vw;right:18vw;top:26vw;background:var(--tint-sky);animation-duration:26s}.bg:not(.bg--full){-webkit-mask-image:linear-gradient(#000 55%,transparent);mask-image:linear-gradient(#000 55%,transparent)}.bg:not(.bg--full) .blob{opacity:.45}@keyframes drift{to{transform:translate(4vw,5vh) scale(1.08)}}.header{position:sticky;top:0;z-index:20;padding:var(--space-3) var(--space-4);background:linear-gradient(#ffffffe6 40%,#fff0)}.header-inner{max-width:1120px;margin:0 auto;height:60px;padding:0 10px 0 var(--space-6);display:flex;align-items:center;gap:var(--space-6);border-radius:var(--radius-pill);background:#ffffffd1;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--border)}.logo{display:flex;align-items:center;gap:var(--space-2);font-weight:600;letter-spacing:-.02em;text-decoration:none;flex:none}.logo img{height:24px;width:auto;mix-blend-mode:multiply}.nav{display:flex;gap:var(--space-1);flex:1}.nav a{height:36px;display:inline-flex;align-items:center;gap:var(--space-2);padding:0 14px;border-radius:var(--radius-pill);text-decoration:none;color:var(--ink-muted);font:500 14px/20px var(--font-sans);transition:color .15s,background .15s}.nav a:hover{color:var(--ink);background:var(--surface-200)}.nav a.active{color:var(--ink);background:var(--surface-100)}.avatar{width:36px;height:36px;border-radius:50%;background:var(--gradient-aurora);display:grid;place-items:center;font-weight:600;font-size:14px;text-decoration:none;flex:none;overflow:hidden}.avatar img{width:100%;height:100%;object-fit:cover}.main{max-width:1120px;margin:0 auto;padding:var(--space-6) var(--space-4) var(--space-20);display:grid;gap:var(--space-8)}.narrow{max-width:720px;width:100%;margin:0 auto}.page-head{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:var(--space-4)}.page-head p{margin-top:6px}.section{display:grid;gap:var(--space-4)}.grid>a{display:grid;text-decoration:none;color:inherit;border-radius:var(--radius-xl)}.grid{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(300px,100%),1fr))}.back{display:inline-flex;align-items:center;gap:6px;color:var(--ink-muted);text-decoration:none;font-size:14px}.back:hover{color:var(--ink)}.list{border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden;background:var(--bg)}.list-item{display:flex;align-items:center;gap:var(--space-4);padding:14px 20px;text-decoration:none;color:inherit}.list-item+.list-item{border-top:1px solid var(--border)}a.list-item:hover{background:var(--surface-100)}.list-item .grow{flex:1;min-width:0}.list-item.is-locked{color:var(--ink-subtle);cursor:not-allowed}.num{width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:var(--surface-100);font:500 13px/1 var(--font-mono);flex:none}.num.is-done{background:var(--tint-mint)}.auth{position:relative;min-height:100vh;display:grid;place-items:center;padding:var(--space-4);isolation:isolate}.auth-card{width:min(440px,100%);background:#ffffffdb;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--border);border-radius:var(--radius-xl);padding:var(--space-8);display:grid;gap:var(--space-6)}.auth-card:hover{box-shadow:none}.auth-card .lupin{width:112px;margin:-8px auto 0}.auth-card h1{font-size:28px;line-height:36px;letter-spacing:-.03em}.auth-card .back{justify-self:start;margin-bottom:calc(-1 * var(--space-4))}.divider{display:flex;align-items:center;gap:var(--space-3);color:var(--ink-subtle);font-size:13px}.divider:before,.divider:after{content:"";flex:1;height:1px;background:var(--border)}.google-btn{display:flex;justify-content:center;min-height:44px}.otp{display:grid;grid-template-columns:repeat(6,1fr);gap:var(--space-2)}.otp input{height:52px;text-align:center;font:500 20px/1 var(--font-mono);padding:0}.qr{justify-self:center;padding:var(--space-4);background:#fff;border-radius:var(--radius-lg);border:1px solid var(--border)}.code-big{font:500 24px/32px var(--font-mono);letter-spacing:.2em;text-align:center}.choice{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2)}.choice label{border:1px solid var(--border-strong);border-radius:var(--radius-md);padding:12px 14px;cursor:pointer;display:grid;gap:2px}.choice input{position:absolute;opacity:0;pointer-events:none}.choice label:has(input:checked){border-color:var(--ink);box-shadow:0 0 0 3px var(--focus)}.choice label:has(input:focus-visible){box-shadow:0 0 0 3px var(--focus)}.lesson-layout{display:grid;grid-template-columns:minmax(0,1fr) 360px;gap:var(--space-8);align-items:start}.prose{display:grid;gap:var(--space-4);font-size:16px;line-height:28px}.prose>*{margin:0}.prose h1,.prose h2,.prose h3{margin-top:var(--space-4)}.prose ul,.prose ol{padding-left:1.4em;margin:0}.prose code{font-family:var(--font-mono);font-size:.88em;background:var(--surface-200);padding:2px 6px;border-radius:6px}.prose pre code{background:none;padding:0}.prose table{border-collapse:collapse}.prose th,.prose td{border:1px solid var(--border);padding:6px 10px}.prose blockquote{margin:0;padding-left:16px;border-left:3px solid var(--border-strong);color:var(--ink-muted)}pre.code{margin:0;background:var(--surface-100);border:1px solid var(--border);border-radius:var(--radius-lg);padding:16px 20px;overflow-x:auto;font:500 13px/22px var(--font-mono)}.code-wrap{display:grid;gap:6px}.code-lang{font:500 12px/16px var(--font-mono);color:var(--ink-subtle);text-transform:uppercase}.callout{border-radius:var(--radius-lg);padding:16px 20px;display:grid;gap:6px}.callout-info{background:var(--tint-sky)}.callout-tip{background:var(--tint-mint)}.callout-warning{background:var(--tint-peach)}.callout-title{font:500 12px/16px var(--font-mono);text-transform:uppercase;letter-spacing:.04em}.task{border:1px dashed var(--border-strong);border-radius:var(--radius-lg);padding:16px 20px;display:grid;gap:6px}figure{margin:0;display:grid;gap:8px}figure img{border-radius:var(--radius-lg);border:1px solid var(--border)}figcaption{font-size:13px;color:var(--ink-muted)}.video{aspect-ratio:16 / 9;width:100%;border:0;border-radius:var(--radius-lg);background:var(--surface-200)}.chat{border:1px solid var(--border);border-radius:var(--radius-xl);display:flex;flex-direction:column;overflow:hidden;background:var(--bg)}.chat-side{position:sticky;top:88px;height:calc(100vh - 112px)}.chat-head{display:flex;align-items:center;gap:var(--space-3);padding:14px 16px;border-bottom:1px solid var(--border)}.chat-head .grow{flex:1;min-width:0}.chat-body{flex:1;overflow-y:auto;padding:var(--space-4);display:flex;flex-direction:column;gap:var(--space-3)}.bubble{max-width:85%;padding:10px 14px;border-radius:18px;background:var(--surface-100);font-size:14px;line-height:22px;overflow-wrap:anywhere}.bubble .prose{font-size:14px;line-height:22px;gap:8px}.bubble.is-me{align-self:flex-end;background:var(--primary);color:var(--on-primary)}.bubble-meta{font-size:12px;color:var(--ink-subtle);margin-bottom:2px}.bubble.is-me .bubble-meta{color:inherit;opacity:.7}.chat-form{display:flex;gap:var(--space-2);padding:var(--space-3);border-top:1px solid var(--border)}.chat-form .lm-input{height:40px;border-radius:var(--radius-pill)}.main--messenger{max-width:1280px;padding-top:var(--space-2);padding-bottom:var(--space-4)}.messenger{height:calc(100dvh - 108px);min-height:460px;display:grid;grid-template-columns:320px minmax(0,1fr);border:1px solid var(--border);border-radius:var(--radius-xl);overflow:hidden;background:var(--bg)}.m-avatar{display:grid;place-items:center;border-radius:50%;flex:none;font-weight:600;color:var(--ink);letter-spacing:-.02em;line-height:1}.m-item-text{display:grid;min-width:0;text-align:left}.m-item-text>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.m-side{display:flex;flex-direction:column;min-height:0;border-right:1px solid var(--border)}.m-side-head{display:grid;gap:var(--space-3);padding:18px 16px 12px}.m-side-head h1{font-size:22px;line-height:30px;letter-spacing:-.02em}.m-search{display:flex;align-items:center;gap:8px;height:40px;padding:0 14px;border-radius:var(--radius-pill);background:var(--surface-100);color:var(--ink-subtle)}.m-search input{flex:1;min-width:0;border:0;background:none;outline:none;color:var(--ink)}.m-search:focus-within{box-shadow:0 0 0 3px var(--focus)}.m-side-list{flex:1;overflow-y:auto;padding:0 8px 8px;display:grid;align-content:start;gap:2px}.m-item{display:flex;align-items:center;gap:12px;padding:10px;border-radius:var(--radius-md);text-decoration:none;color:inherit;transition:background .15s}.m-item:hover{background:var(--surface-100)}.m-item.active{background:var(--surface-200)}.m-main{position:relative;display:flex;flex-direction:column;min-width:0;min-height:0;background:var(--surface-100)}.m-placeholder{flex:1;display:grid;place-content:center;justify-items:center;gap:var(--space-3);padding:var(--space-6);text-align:center}.m-placeholder-lupin{width:120px}.m-chat{position:relative;flex:1;display:flex;flex-direction:column;min-height:0}.m-chat-head{display:flex;align-items:center;gap:4px;height:64px;padding:0 12px 0 16px;background:var(--bg);border-bottom:1px solid var(--border);flex:none}.m-back{display:none;width:36px;height:36px;place-items:center;border-radius:50%;color:var(--ink);margin-left:-8px}.m-back:hover{background:var(--surface-200)}.m-chat-title{flex:1;min-width:0;display:flex;align-items:center;gap:12px;padding:6px;margin-left:-6px;border:0;background:none;border-radius:var(--radius-md);cursor:pointer}.m-chat-title:hover{background:var(--surface-100)}.m-head-btn.lm-btn-icon{width:40px;height:40px;color:var(--ink-muted)}.m-head-btn:hover{color:var(--ink)}.pinned{display:flex;align-items:center;gap:var(--space-2);min-height:56px;padding:6px 10px 6px 16px;background:#ffffffeb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-bottom:1px solid var(--border);flex:none}.pinned-main{flex:1;min-width:0;display:flex;align-items:stretch;gap:10px;padding:4px 0;border:0;background:none;cursor:pointer;text-align:left}.pin-bars{display:flex;flex-direction:column;gap:2px;width:3px;flex:none;min-height:36px}.pin-bars i{flex:1;border-radius:2px;background:var(--border-strong)}.pin-bars i.on{background:var(--ink)}.pinned-text{display:grid;min-width:0}.pinned-label{display:flex;align-items:center;gap:6px;font:500 12px/16px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-subtle)}.pinned-title{font-size:14px;line-height:20px;font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pinned-title .muted{font-weight:400}.pinned.is-live{background:linear-gradient(90deg,#d2f2e4e6,#ffffffeb 60%)}.pinned.is-live .pinned-label{color:var(--success)}.pinned.is-live .pin-bars i.on{background:var(--success)}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--success);animation:pulse 1.6s ease-in-out infinite}@keyframes pulse{50%{opacity:.35}}.num.is-live{background:var(--tint-mint);color:var(--success)}.m-body{flex:1;overflow-y:auto;overscroll-behavior:contain;min-height:0}.m-feed{max-width:760px;margin:0 auto;padding:var(--space-4) var(--space-4) var(--space-2);display:flex;flex-direction:column;min-height:100%;justify-content:flex-end}.m-empty{margin:auto;display:grid;justify-items:center;gap:var(--space-2);text-align:center}.m-empty-lupin{width:96px}.m-day{position:sticky;top:8px;z-index:1;align-self:center;margin:12px 0 8px}.m-day span{display:inline-block;padding:2px 12px;border-radius:var(--radius-pill);background:#ffffffe6;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border);font-size:12px;line-height:20px;color:var(--ink-muted)}.msg{display:flex;align-items:flex-end;gap:8px;margin-top:2px}.msg.is-first{margin-top:10px}.msg.is-me{justify-content:flex-end}.msg-gap{width:32px;flex:none}.msg-bubble{position:relative;max-width:min(560px,78%);padding:7px 12px 8px;border-radius:18px;background:var(--bg);box-shadow:var(--shadow-sm);font-size:15px;line-height:21px;overflow-wrap:anywhere}.msg:not(.is-me) .msg-bubble{border-top-left-radius:6px;border-bottom-left-radius:6px}.msg:not(.is-me).is-first .msg-bubble{border-top-left-radius:18px}.msg:not(.is-me).is-last .msg-bubble{border-bottom-left-radius:4px}.msg.is-me .msg-bubble{background:var(--primary);color:var(--on-primary);border-top-right-radius:6px;border-bottom-right-radius:6px}.msg.is-me.is-first .msg-bubble{border-top-right-radius:18px}.msg.is-me.is-last .msg-bubble{border-bottom-right-radius:4px}.msg-name{display:flex;align-items:center;gap:6px;font-size:13px;line-height:18px;font-weight:600;margin-bottom:1px}.msg-role{font:500 10px/16px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;padding:0 6px;border-radius:var(--radius-pill);background:var(--tint-lilac)}.msg-text{white-space:pre-wrap}.msg-text:after{content:"";display:inline-block;width:44px}.msg-time{position:absolute;right:10px;bottom:5px;font-size:11px;line-height:14px;color:var(--ink-subtle)}.msg.is-me .msg-time{color:inherit;opacity:.6}.m-down{position:absolute;right:20px;bottom:80px;z-index:2;width:44px;height:44px;border-radius:50%;border:1px solid var(--border);background:var(--bg);box-shadow:var(--shadow-md);display:grid;place-items:center;cursor:pointer;color:var(--ink)}.m-down-count{position:absolute;top:-6px;right:-4px;min-width:20px;height:20px;padding:0 6px;border-radius:var(--radius-pill);background:var(--primary);color:var(--on-primary);font:500 11px/20px var(--font-mono)}.m-composer{display:flex;align-items:flex-end;gap:var(--space-2);padding:10px 12px calc(10px + env(safe-area-inset-bottom));background:var(--bg);border-top:1px solid var(--border);flex:none}.m-composer>*{flex:none}.m-input{flex:1;min-width:0;height:44px;max-height:140px;padding:11px 18px;border-radius:22px;border:1px solid var(--border-strong);background:var(--bg);resize:none;line-height:20px;overflow-y:auto;transition:border-color .15s,box-shadow .15s}.m-input:focus{outline:none;border-color:var(--ink);box-shadow:0 0 0 3px var(--focus)}.m-input::placeholder{color:var(--ink-subtle)}.m-send.lm-btn{width:44px;height:44px;padding:0}.m-composer{max-width:100%}.m-info{display:grid;justify-items:center;gap:6px;text-align:center}.m-info h3,.m-info .lm-btn{margin-top:6px}.m-members{max-height:280px;overflow-y:auto}.check-row{cursor:pointer}.check-row:hover{background:var(--surface-100)}.check-row input{width:18px;height:18px;accent-color:var(--ink);flex:none;margin:0}.modal-foot .grow{flex:1;align-self:center}.exam-layout{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:var(--space-8);align-items:start}.timer{display:inline-flex;align-items:center;gap:var(--space-2);font:500 28px/36px var(--font-mono);letter-spacing:-.02em}.qnav{display:flex;flex-wrap:wrap;gap:6px}.qnav button{width:36px;height:36px;border-radius:50%;border:1px solid var(--border);background:var(--bg);cursor:pointer;font:500 13px/1 var(--font-mono)}.qnav button.is-answered{background:var(--tint-lilac);border-color:transparent}.qnav button[aria-current=true]{border-color:var(--ink);box-shadow:0 0 0 3px var(--focus)}.options{display:grid;gap:var(--space-2)}.option{display:flex;gap:var(--space-3);align-items:flex-start;padding:14px 16px;border:1px solid var(--border-strong);border-radius:var(--radius-md);background:var(--bg);cursor:pointer;text-align:left;font-size:15px}.option:hover{background:var(--surface-100)}.option.is-selected{border-color:var(--ink);box-shadow:0 0 0 3px var(--focus)}.option .letter{font:500 13px/24px var(--font-mono);color:var(--ink-subtle)}.rank-row{display:flex;align-items:center;gap:var(--space-3);padding:10px 16px;font-size:14px}.rank-row+.rank-row{border-top:1px solid var(--border)}.rank-row .grow{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.rank-row.is-me{background:var(--surface-100)}.score-hero{padding:var(--space-8);border-radius:var(--radius-xl);background:var(--gradient-aurora);text-align:center;display:grid;gap:4px}.score-hero b{font-size:56px;line-height:64px;letter-spacing:-.04em;font-weight:600}.admin-tabs{overflow-x:auto;flex-wrap:nowrap;scrollbar-width:none}.admin-tabs .tab{flex:none}.stats{display:grid;gap:var(--space-4);grid-template-columns:repeat(auto-fill,minmax(min(190px,100%),1fr))}.stat{display:grid;gap:4px;padding:20px;border:1px solid var(--border);border-radius:var(--radius-xl);background:var(--bg);text-decoration:none;color:inherit;transition:box-shadow .2s,border-color .2s}a.stat:hover{box-shadow:var(--shadow-md);border-color:var(--border-strong)}.stat-label{display:flex;align-items:center;gap:8px;font:500 12px/16px var(--font-mono);text-transform:uppercase;letter-spacing:.04em;color:var(--ink-subtle)}.stat-value{font-size:36px;line-height:44px;font-weight:600;letter-spacing:-.035em}.section-head{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-3)}.section-head a{text-decoration:none}.section-head a:hover{color:var(--ink)}.lm-card.section{gap:var(--space-4);align-content:start}.mini-list{display:grid}.mini-row{display:flex;align-items:center;gap:var(--space-3);padding:12px 10px;margin:0 -10px;border-radius:var(--radius-md);text-decoration:none;color:inherit}.mini-row+.mini-row{border-top:1px solid var(--border);border-radius:0}.mini-row:hover{background:var(--surface-100)}.mini-row .grow{flex:1;min-width:0}.course-card .lm-card-title a{text-decoration:none;color:inherit}.stretched:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:0}.course-cover{position:absolute;top:8px;right:8px;bottom:8px;left:8px;height:140px;width:calc(100% - 16px);object-fit:cover;border-radius:var(--radius-lg)}.course-card-foot{display:flex;align-items:center;justify-content:space-between;gap:var(--space-2)}.course-card-foot:empty{display:none}.course-card-foot .lm-btn{position:relative;z-index:1;margin-left:auto}.course-card-foot>span:not(.lm-badge){margin-left:auto;color:var(--ink-muted)}.toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3)}.course-hero{display:grid;gap:var(--space-4)}.save-bar{position:sticky;top:84px;z-index:5;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--space-3);padding:8px 8px 8px 20px;border:1px solid var(--border);border-radius:var(--radius-pill);background:#ffffffdb;-webkit-backdrop-filter:blur(16px) saturate(1.4);backdrop-filter:blur(16px) saturate(1.4)}.save-bar h2{font-size:17px;line-height:24px}.editor-item{border:1px solid var(--border);border-radius:var(--radius-lg);padding:var(--space-4);display:grid;gap:var(--space-3);background:var(--bg)}.editor-item-head{display:flex;align-items:center;gap:var(--space-2)}.editor-item-head .grow{flex:1}.split{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-6);align-items:start}.sticky{position:sticky;top:148px}.exam-layout .sticky{top:88px}.opt-row{display:flex;align-items:center;gap:var(--space-2)}.opt-row input[type=radio]{width:18px;height:18px;accent-color:var(--ink);flex:none}.lupin{position:relative}.lupin svg{width:100%;height:auto;overflow:visible;display:block}.lupin--avatar{width:40px;height:40px;border-radius:50%;background:var(--gradient-orb);display:grid;place-items:center;overflow:hidden;flex:none}.lupin--avatar svg{width:140%;margin-top:18%}.lupin .l-body{animation:breathe 4s ease-in-out infinite;transform-origin:50% 90%;transform-box:fill-box}.lupin .l-whole{animation:hover 5s ease-in-out infinite}.lupin .l-eyes{transition:transform .15s ease-out}.lupin .l-eye{transform-box:fill-box;transform-origin:center;animation:blink 4.5s infinite}.lupin .l-ear--l{transform-box:fill-box;transform-origin:70% 100%;animation:earL 6s ease-in-out infinite}.lupin .l-ear--r{transform-box:fill-box;transform-origin:30% 100%;animation:earR 6s ease-in-out infinite}.lupin .l-arm{transform-box:fill-box;transform-origin:50% 10%}.lupin .l-tassel{transform-box:fill-box;transform-origin:50% 0;animation:tassel 3s ease-in-out infinite}.lupin .l-mouth-open{opacity:0}.lupin.is-happy .l-arm--r{animation:wave .9s ease-in-out 2}.lupin.is-happy .l-mouth{opacity:0}.lupin.is-happy .l-mouth-open{opacity:1}.lupin.is-happy .l-cheek{opacity:.95}.lupin.is-thinking .l-eyes{transform:translate(5px,-6px)}.lupin.is-thinking .l-body{animation:wobble .8s ease-in-out infinite}@keyframes breathe{50%{transform:scale(1.025,.985)}}@keyframes hover{50%{transform:translateY(-10px)}}@keyframes blink{0%,90%,to{transform:scaleY(1)}94%{transform:scaleY(.08)}}@keyframes earL{0%,80%,to{transform:rotate(0)}85%{transform:rotate(-12deg)}90%{transform:rotate(4deg)}}@keyframes earR{0%,40%,to{transform:rotate(0)}45%{transform:rotate(12deg)}50%{transform:rotate(-4deg)}}@keyframes tassel{50%{transform:rotate(10deg)}}@keyframes wave{50%{transform:rotate(-50deg)}}@keyframes wobble{50%{transform:rotate(3deg)}}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition:none!important}}@media (max-width: 960px){.lesson-layout,.exam-layout,.split{grid-template-columns:1fr}.chat-side{position:static;height:560px}.sticky{position:static}}@media (max-width: 860px){.messenger{grid-template-columns:1fr}.messenger.has-chat .m-side,.messenger:not(.has-chat) .m-main{display:none}.m-side{border-right:0}.m-back{display:grid}}@media (max-width: 680px){.header{padding:var(--space-2) var(--space-3)}.header-inner{gap:var(--space-2);padding:0 6px 0 var(--space-4);height:56px}.logo span{display:none}.nav{overflow-x:auto;scrollbar-width:none}.nav a{padding:0 10px}.nav a .nav-label{display:none}.main{padding-top:var(--space-6);gap:var(--space-6)}.auth-card{padding:var(--space-6)}.choice{grid-template-columns:1fr}.main--messenger{padding:0 var(--space-2) var(--space-2)}.messenger{height:calc(100dvh - 80px);border-radius:var(--radius-lg)}.msg-bubble{max-width:84%}.m-feed{padding-inline:var(--space-3)}.pinned{padding-left:12px}}
