:root{--wallpaper-base: #eef0f8;--glass-1: rgba(255, 255, 255, .7);--glass-2: rgba(255, 255, 255, .93);--glass-inner: rgba(255, 255, 255, .55);--field: rgba(255, 255, 255, .82);--field-stroke: rgba(60, 60, 67, .16);--rim: rgba(255, 255, 255, .9);--hairline: rgba(255, 255, 255, .55);--separator: rgba(60, 60, 67, .14);--scrim: rgba(30, 20, 60, .24);--ink: #1d1d1f;--ink-2: rgba(40, 40, 52, .72);--ink-3: rgba(40, 40, 52, .5);--accent: #0071e3;--accent-top: #1a7cf5;--accent-ink: #0066cc;--accent-tint: rgba(10, 132, 255, .14);--success: #34c759;--danger: #ff3b30;--danger-ink: #d70015;--danger-tint: rgba(255, 59, 48, .12);--warning: #ff9f0a;--warning-ink: #b25000;--success-ink: #1c7c3a;--highlight: #ffd60a;--skill-grammar: #0a84ff;--skill-writing: #bf5af2;--skill-reading: #30d158;--skill-speaking: #ff9f0a;--skill-listening: #ff375f;--font-sans: -apple-system, BlinkMacSystemFont, "SF Pro Text", "SF Pro Display", "Helvetica Neue", "Inter", "Segoe UI", Roboto, sans-serif;--fs-display: 48px;--fs-title-1: 28px;--fs-title-2: 24px;--fs-title-3: 20px;--fs-headline: 17px;--fs-body: 15px;--fs-callout: 14px;--fs-footnote: 13px;--fs-caption: 12px;--fs-caption-2: 11px;--space-1: 4px;--space-2: 8px;--space-3: 12px;--space-4: 16px;--space-5: 20px;--space-6: 28px;--space-7: 44px;--radius-2xs: 3px;--radius-xs: 6px;--radius-sm: 10px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 30px;--radius-2xl: 34px;--radius-pill: 980px;--control-sm: 32px;--control-md: 36px;--control-lg: 44px;--control-xl: 48px;--blur-glass: blur(28px) saturate(190%) brightness(1.04);--blur-control: blur(18px) saturate(170%);--shadow-rim: inset 0 1px 0 rgba(255, 255, 255, .9), inset 0 -1px 0 rgba(255, 255, 255, .35), inset 0 0 0 .5px rgba(255, 255, 255, .55);--shadow-glass: var(--shadow-rim), 0 10px 40px rgba(60, 40, 120, .12), 0 2px 6px rgba(60, 40, 120, .06);--shadow-inner: inset 0 1px 0 rgba(255, 255, 255, .85), inset 0 0 0 .5px rgba(255, 255, 255, .5), 0 1px 3px rgba(60, 40, 120, .07);--shadow-accent: inset 0 1px 0 rgba(255, 255, 255, .55), inset 0 -2px 6px rgba(0, 40, 120, .22), 0 8px 22px rgba(0, 113, 227, .3);--shadow-danger: inset 0 1px 0 rgba(255, 255, 255, .35), 0 8px 22px rgba(255, 59, 48, .32);--shadow-tile: inset 0 1px 0 rgba(255, 255, 255, .35), 0 4px 12px rgba(0, 0, 0, .3);--gradient-accent: linear-gradient(180deg, var(--accent-top), #0063d1);--gradient-danger: linear-gradient(180deg, #ff6961, var(--danger));--focus-ring: 0 0 0 3px rgba(0, 125, 250, .45);--opacity-disabled: .4;--ease: cubic-bezier(.25, .1, .25, 1);--spring: cubic-bezier(.32, .72, 0, 1);--bounce: cubic-bezier(.34, 1.56, .64, 1);--night-glass-1: rgba(36, 36, 46, .72);--night-glass-2: rgba(34, 34, 44, .93);--night-glass-inner: rgba(255, 255, 255, .1);--night-field: rgba(255, 255, 255, .08);--night-field-stroke: rgba(255, 255, 255, .14);--night-separator: rgba(255, 255, 255, .12);--night-ink: #f5f5f7;--night-ink-2: rgba(235, 235, 245, .62);--night-ink-3: rgba(235, 235, 245, .34);--night-accent: #0a84ff;--night-accent-tint: rgba(10, 132, 255, .28);--night-danger: #ff453a;--night-danger-ink: #ff6961;--night-danger-tint: rgba(255, 69, 58, .14);--night-success: #30d158;--night-shadow-rim: inset 0 1px 0 rgba(255, 255, 255, .26), inset 0 -1px 0 rgba(255, 255, 255, .07), inset 0 0 0 .5px rgba(255, 255, 255, .15);--night-shadow-glass: var(--night-shadow-rim), 0 16px 50px rgba(0, 0, 0, .45);--blue: var(--accent);--blue-hover: #0077ed;--blue-dark: var(--night-accent);--red: var(--danger);--red-dark: var(--night-danger);--green: var(--success);--green-dark: var(--night-success);--orange: var(--warning);--yellow: var(--highlight);--label: var(--ink);--label-2: var(--ink-2);--label-3: var(--ink-3);--fill: rgba(120, 120, 128, .12);--fill-2: rgba(120, 120, 128, .2);--bg: var(--wallpaper-base);--d-bg: #000;--d-elev: #1c1c1e;--d-elev-2: #2c2c2e;--d-elev-3: #3a3a3c;--d-label: var(--night-ink);--d-label-2: var(--night-ink-2);--d-label-3: var(--night-ink-3);--d-sep: var(--night-separator);--glass: var(--night-glass-1);--glass-light: var(--glass-1);--blur: var(--blur-glass);--r-sm: var(--radius-sm);--r: var(--radius-md);--r-lg: var(--radius-lg);--r-xl: var(--radius-xl);--lg-fill: var(--glass-1);--lg-fill-strong: var(--glass-2);--lg-blur: var(--blur-glass);--lg-blur-light: var(--blur-control);--lg-rim: var(--shadow-rim);--lg-shadow: var(--shadow-glass);--lg-inner: var(--glass-inner);--lg-inner-rim: var(--shadow-inner);--lg-dark-fill: var(--night-glass-1);--lg-dark-inner: var(--night-glass-inner);--lg-dark-rim: var(--night-shadow-rim);--lg-dark-shadow: var(--night-shadow-glass)}@media (prefers-reduced-transparency: reduce){:root{--glass-1: #f5f5f7;--glass-2: #ffffff;--glass-inner: #ececf1;--night-glass-1: #24242c;--night-glass-2: #2a2a33;--night-glass-inner: #33333d}}:root{font-family:var(--font-sans);font-size:var(--fs-body);letter-spacing:-.01em;color:var(--label);background:var(--bg);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}html,body,#root{margin:0;height:100%}html{-webkit-text-size-adjust:100%;text-size-adjust:100%}body{overflow-x:hidden;overflow-x:clip;max-width:100%}#root{max-width:100%}img,video,canvas,svg{max-width:100%}.room{height:100dvh}button{font:inherit;letter-spacing:inherit;cursor:pointer;-webkit-tap-highlight-color:transparent}button:disabled{cursor:default;opacity:var(--opacity-disabled)}h1,h2,h3{margin:0;letter-spacing:-.02em}.muted{color:var(--label-2)}.small{font-size:13px}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.hidden{visibility:hidden}.mirror{transform:scaleX(-1)}:focus{outline:none}:focus-visible{outline:3px solid rgba(0,125,250,.6);outline-offset:2px}input,textarea,select{font:inherit;letter-spacing:inherit;width:100%;min-height:var(--control-lg);padding:10px 14px;border:1px solid var(--field-stroke);border-radius:var(--radius-md);background:var(--field);color:var(--ink);transition:background .2s var(--ease),border-color .2s var(--ease),box-shadow .2s var(--ease)}textarea{min-height:0}input::placeholder,textarea::placeholder{color:var(--ink-3)}input:focus,textarea:focus,select:focus,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:none;background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}input[type=number]{-moz-appearance:textfield;-webkit-appearance:textfield;appearance:textfield}input[type=number]::-webkit-outer-spin-button,input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}textarea{resize:none;line-height:1.4}select{-webkit-appearance:none;-moz-appearance:none;appearance:none;padding-right:30px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%2386868b' stroke-width='1.6' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 12px center}.room input,.viewer input,.room textarea,.viewer textarea,.room select,.viewer select{background:var(--night-field);border-color:var(--night-field-stroke);color:var(--night-ink)}.room input::placeholder,.viewer input::placeholder,.room textarea::placeholder,.viewer textarea::placeholder{color:var(--night-ink-3)}.room input:focus,.viewer input:focus,.room textarea:focus,.viewer textarea:focus,.room select:focus,.viewer select:focus{background:#ffffff1f;border-color:var(--night-accent);box-shadow:0 0 0 3px var(--night-accent-tint)}:is(input[type=checkbox],input[type=radio],input[type=range],input[type=file]),.room :is(input[type=checkbox],input[type=radio],input[type=range]),.viewer :is(input[type=checkbox],input[type=radio],input[type=range]),:is(input[type=checkbox],input[type=radio],input[type=range]):focus{min-height:0;border-color:transparent}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;min-height:var(--control-lg);padding:0 22px;border:0;border-radius:var(--radius-pill);font-size:var(--fs-body);font-weight:600;white-space:nowrap;background:var(--glass-1);color:var(--ink);box-shadow:inset 0 1px #fffffff2,inset 0 0 0 .5px #fff9,0 4px 14px #3c28781a;transition:background .2s var(--ease),filter .2s var(--ease),box-shadow .2s var(--ease),transform .12s var(--ease)}@media (hover: hover){.btn:not(.primary,.enter,.success,.danger,.leave,.tint,.tint-danger):hover:not(:disabled){background:#ffffffdb}}.btn:active:not(:disabled){transform:scale(.97)}.btn:disabled{opacity:var(--opacity-disabled)}.btn.primary,.btn.enter{background:var(--gradient-accent);color:#fff;box-shadow:var(--shadow-accent)}.btn.success,.btn.enter.live{background:linear-gradient(180deg,#4cd978,#24aa5c);color:#fff;box-shadow:inset 0 1px #ffffff8c,inset 0 -2px 6px #00501e33,0 8px 22px #28b46352}.btn.danger,.btn.leave{background:var(--gradient-danger);color:#fff;box-shadow:var(--shadow-danger)}@media (hover: hover){.btn.primary:hover:not(:disabled),.btn.enter:hover:not(:disabled),.btn.success:hover:not(:disabled),.btn.danger:hover:not(:disabled),.btn.leave:hover:not(:disabled){filter:brightness(1.08)}}.btn.primary:disabled,.btn.enter:disabled,.btn.danger:disabled{box-shadow:none}.btn.tint{background:var(--accent-tint);color:var(--accent-ink);box-shadow:none}@media (hover: hover){.btn.tint:hover:not(:disabled){background:#0a84ff38}}.btn.tint-danger{background:var(--danger-tint);color:var(--danger-ink);box-shadow:none}@media (hover: hover){.btn.tint-danger:hover:not(:disabled){background:#ff3b3033}}.btn.small{min-height:var(--control-md);padding:0 16px;font-size:var(--fs-callout)}.btn.icon{padding:0;width:40px;min-height:40px;height:40px;flex:none}.room .btn,.viewer .btn{background:var(--night-glass-inner);color:var(--night-ink);box-shadow:inset 0 1px #ffffff2e,inset 0 0 0 .5px #ffffff1a}@media (hover: hover){:is(.room,.viewer) .btn:not(.primary,.enter,.success,.danger,.leave,.tint,.tint-danger):hover:not(:disabled){background:#ffffff29}}.room .btn.primary,.viewer .btn.primary{background:var(--gradient-accent);color:#fff;box-shadow:inset 0 1px #ffffff73,0 6px 18px #0071e34d}.room .btn.danger,.viewer .btn.danger,.room .btn.leave{background:var(--gradient-danger);color:#fff;box-shadow:var(--shadow-danger)}@media (hover: hover){.room .btn.primary:hover:not(:disabled),.viewer .btn.primary:hover:not(:disabled){background:var(--gradient-accent);filter:brightness(1.1)}}@media (hover: hover){.room .btn.danger:hover:not(:disabled),.viewer .btn.danger:hover:not(:disabled),.room .btn.leave:hover:not(:disabled){background:var(--gradient-danger);filter:brightness(1.1)}}.room .btn.tint,.viewer .btn.tint{background:var(--night-accent-tint);color:#64b0ff;box-shadow:none}.room .btn.tint-danger,.viewer .btn.tint-danger{background:var(--night-danger-tint);color:var(--night-danger-ink);box-shadow:none}.mini{display:inline-grid;place-items:center;width:28px;height:28px;padding:0;border:0;border-radius:50%;background:transparent;color:var(--label-3);transition:background .15s,color .15s}@media (hover: hover){.mini:hover{background:var(--fill);color:var(--label)}}.mini.active{color:#fff;background:var(--blue)}@media (hover: hover){.mini.danger:hover{color:#fff;background:var(--red)}}.pill{display:inline-flex;align-items:center;gap:4px;margin-left:6px;vertical-align:middle;padding:2px 8px;border-radius:980px;font-size:11px;font-weight:600;background:#0071e31f;color:var(--accent-ink)}.error{color:var(--red);font-size:14px;text-align:center}.warn{background:#ff9f0a24;color:var(--warning-ink);padding:10px 14px;border-radius:14px;font-size:13px}.empty{color:var(--ink-2);font-size:14px;padding:28px 12px;line-height:1.55;text-align:center}.toggle{display:flex;align-items:center;gap:10px;cursor:pointer;font-weight:400}.toggle input{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:none;position:relative;cursor:pointer;width:51px;height:31px;padding:0;border-radius:30px;background:var(--fill-2);transition:background .25s var(--ease);box-shadow:none}.toggle input:after{content:"";position:absolute;top:2px;left:2px;width:27px;height:27px;border-radius:50%;background:#fff;box-shadow:0 3px 8px #00000026,0 1px 1px #00000029;transition:transform .25s var(--ease)}.toggle input:checked{background:var(--green)}.toggle input:checked:after{transform:translate(20px)}.toggle input:focus{box-shadow:none}.toggle.small input{width:38px;height:23px}.toggle.small input:after{width:19px;height:19px}.toggle.small input:checked:after{transform:translate(15px)}.home{min-height:100%;background:var(--bg);overflow-x:clip}.home-head{position:sticky;z-index:10;display:flex;align-items:center;border-bottom:1px solid var(--separator)}.logo{display:flex;align-items:center;gap:9px;font-weight:600;font-size:17px;letter-spacing:-.02em}.logo-mark{display:block;flex:none;border-radius:23%;filter:drop-shadow(0 2px 6px rgba(255,77,125,.35));transition:transform .35s var(--bounce)}@media (hover: hover){.logo:hover .logo-mark{transform:rotate(-8deg) scale(1.06)}}.logo-mark .logo-sparkle{transform-origin:47.5px 13.5px;animation:sparkle 3.2s var(--ease) infinite}@keyframes sparkle{0%,70%,to{transform:scale(1);opacity:.95}80%{transform:scale(1.5) rotate(45deg);opacity:1}90%{transform:scale(.8);opacity:.7}}.home-main{max-width:1080px;margin:0 auto;padding:96px 22px 120px;display:grid;grid-template-columns:1.15fr 1fr;gap:64px;align-items:start}.home-hero h1{font-size:48px;line-height:1.04;font-weight:700;letter-spacing:-.035em}.home-hero h1 em{font-style:normal;background:linear-gradient(90deg,var(--accent) 0%,#8e44ec 55%,#e5447a 100%);-webkit-background-clip:text;background-clip:text;color:transparent}.home-hero p{font-size:20px;line-height:1.45;color:var(--label-2);margin:24px 0 32px;letter-spacing:-.015em}.home-features{list-style:none;padding:0;margin:0;display:grid;gap:14px}.home-features li{display:flex;gap:12px;align-items:center;font-size:17px}.home-features svg{flex:none;box-sizing:content-box;padding:7px;border-radius:10px;color:var(--accent-ink);background:#0071e31a}.home-cards{display:grid;gap:18px}.card{display:grid;gap:16px;padding:28px;background:#fff;box-shadow:0 2px 6px #00000008,0 12px 40px #0000000f}.card h2{font-size:24px;font-weight:600}.card label{display:grid;gap:8px;font-size:13px;font-weight:500;color:var(--label-2)}.card .btn{width:100%}.card.center{text-align:center;justify-items:center;max-width:420px;padding:40px}.card.center .btn{width:auto}.prejoin{min-height:100%;display:flex;align-items:center;justify-content:center;gap:40px;flex-wrap:wrap;padding:40px;background:var(--bg)}.prejoin-preview{position:relative;width:min(680px,100%);aspect-ratio:16 / 9;overflow:hidden;background:#000}.prejoin-preview video{width:100%;height:100%;object-fit:cover}.preview-off{position:absolute;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;color:var(--d-label-2);font-size:17px}.preview-controls{position:absolute;bottom:18px;left:0;right:0;display:flex;justify-content:center;gap:14px}.round{width:52px;height:52px;border:0;border-radius:50%;display:grid;place-items:center;background:#3c3c438c;color:#fff;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);transition:background .2s var(--ease),transform .12s}.round:active{transform:scale(.94)}.round.off{background:#fff;color:var(--ink)}.prejoin-form{width:380px}.prejoin-form h2{font-size:28px}.room{--pw: 0px;height:100%;display:grid;overflow:hidden;background:var(--d-bg);color:var(--d-label);grid-template-columns:minmax(0,1fr) var(--pw);grid-template-rows:60px 1fr 96px;grid-template-areas:"top top" "stage panel" "controls panel";transition:grid-template-columns .46s var(--spring);animation:fade .45s var(--ease)}.room.with-panel{--pw: 380px}.room .muted,.viewer .muted{color:var(--d-label-2)}.room .mini,.viewer .mini{color:var(--d-label-3)}@media (hover: hover){.room .mini:hover,.viewer .mini:hover{background:#7676803d;color:var(--d-label)}}.room .mini.active,.viewer .mini.active{background:var(--blue-dark);color:#fff}.room .pill,.viewer .pill{color:#64b0ff}.topbar{grid-area:top;min-width:0;display:flex;align-items:center;gap:14px;padding:0 20px}.room-title{display:flex;flex-direction:column;min-width:0;line-height:1.25}.room-title b{font-size:15px;font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.topbar-right{margin-left:auto;flex:none;display:flex;gap:6px;align-items:center}.pill.warn,:is(.room,.viewer) .pill.warn{margin:0;padding:6px 12px;font-size:12px;background:#ff9f0a2e;color:var(--orange)}.timer-slot{flex:1}.topbar.has-tools .timer-slot{display:none}.topbar.has-tools .timer{flex:none;max-width:200px;margin:0}.topbar.has-tools .timer-label{display:none}.topbar.has-tools .room-title{flex:none;max-width:220px}.topbar-tools{flex:1;min-width:0;display:flex;justify-content:center}.topbar-tools .board-toolbar{flex-wrap:nowrap;justify-content:flex-start;max-width:100%;overflow-x:auto;scrollbar-width:none}.topbar-tools .board-toolbar::-webkit-scrollbar{display:none}.topbar-tools .tb-group{flex:none}.topbar-tools .tb-btn{min-width:32px;height:32px}.topbar-tools .swatch{width:22px;height:22px}.topbar-tools .board-toolbar select{height:32px}.timer{position:relative;overflow:hidden;flex:1;max-width:340px;margin:0 auto;display:flex;align-items:center;gap:8px;height:38px;padding:0 16px;border-radius:980px;background:var(--d-elev);font-variant-numeric:tabular-nums;box-shadow:inset 0 0 0 .5px #ffffff14}.timer svg{color:var(--orange)}.timer-label{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;color:var(--d-label-2);font-size:13px}.timer b{font-size:17px;font-weight:600;letter-spacing:0}.timer-bar{position:absolute;left:0;bottom:0;height:2px;background:var(--orange);transition:width .25s linear}.timer.soon{background:#ff9f0a38}.timer.soon b{color:var(--orange)}.timer.done{background:var(--red-dark);animation:pulse 1s var(--ease) 4}.timer.done svg,.timer.done .timer-label{color:#fff}@keyframes pulse{50%{transform:scale(1.04)}}.stage{grid-area:stage;position:relative;display:flex;flex-direction:column;gap:10px;padding:4px 16px 0;min-height:0;min-width:0}.banner{position:absolute;top:12px;left:50%;transform:translate(-50%);z-index:5;padding:8px 16px;border-radius:980px;font-size:13px;font-weight:500;background:var(--glass);color:var(--d-label);backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur)}.grid{flex:1;display:grid;gap:10px;min-height:0}.grid.n1{grid-template-columns:minmax(0,1100px);justify-content:center}.grid.n2,.grid.n3,.grid.n4{grid-template-columns:repeat(2,1fr)}.grid.n5,.grid.n6,.grid.n7,.grid.n8,.grid.n9{grid-template-columns:repeat(3,1fr)}.grid .tile{aspect-ratio:16 / 9;max-height:100%}.grid.n3 .tile,.grid.n4 .tile,.grid.n5 .tile,.grid.n6 .tile{max-height:calc((100vh - 190px)/2);justify-self:center;width:100%}.grid.n7 .tile,.grid.n8 .tile,.grid.n9 .tile{max-height:calc((100vh - 200px) / 3)}.stage-focus{flex:1;min-height:0;min-width:0;display:flex;align-items:center;justify-content:center}.stage-focus .tile{width:100%;height:100%}.strip{display:flex;gap:10px;overflow-x:auto;flex:none;height:116px;scrollbar-width:none}.strip .tile{flex:none;width:196px;height:110px;border-radius:var(--r)}.stage.with-strip{flex-direction:row;padding-bottom:4px}.stage.with-strip .strip{flex-direction:column;height:auto;width:188px;overflow-x:hidden;overflow-y:auto}.stage.with-strip .strip .tile{width:188px;height:106px}.tile{position:relative;overflow:hidden;transition:box-shadow .2s var(--ease)}.tile video{width:100%;height:100%;object-fit:cover;display:block;background:#000}.tile.sharing video,.tile.big video{object-fit:contain}.avatar{position:absolute;top:0;right:0;bottom:0;left:0;margin:auto;width:96px;height:96px;border-radius:50%;display:grid;place-items:center;color:#fff;font-size:36px;font-weight:500;letter-spacing:0;background-image:linear-gradient(180deg,#ffffff38,#0000001f);background-color:#636366}.strip .avatar{width:52px;height:52px;font-size:20px}.avatar.small{position:static;width:38px;height:38px;font-size:15px;flex:none;margin:0}.tile-label{position:absolute;left:10px;bottom:10px;display:flex;align-items:center;gap:6px;max-width:calc(100% - 20px);padding:5px 11px 5px 8px;border-radius:980px;font-size:13px;font-weight:500;background:#1e1e208c;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur)}.tile-name{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.mic-dot{display:inline-grid;place-items:center;color:var(--red-dark)}.mic-dot.on{color:var(--d-label)}.badge.teacher{color:var(--yellow);display:inline-grid}.tile-hand{position:absolute;top:10px;left:10px;display:grid;place-items:center;width:42px;height:42px;border-radius:50%;font-size:22px;background:#ffffffe6;box-shadow:0 4px 14px #0000004d;animation:hand-pop .45s var(--bounce),wave 1.2s var(--ease) .45s infinite}@keyframes wave{50%{transform:rotate(14deg)}}.tile-pin{position:absolute;top:10px;right:10px;width:32px;height:32px;border:0;border-radius:50%;display:grid;place-items:center;color:#fff;opacity:0;background:#1e1e208c;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);transition:opacity .2s var(--ease)}.tile-pin.active{opacity:1}@media (hover: hover){.tile:hover .tile-pin{opacity:1}}.tile-pin.active{background:var(--blue-dark)}.panel{grid-area:panel;display:flex;flex-direction:column;min-height:0;margin:0 12px 12px 0;width:368px;justify-self:start;color:var(--d-label);overflow:hidden;opacity:0;transform:translate(28px) scale(.98);transform-origin:right center;transition:opacity .28s var(--ease),transform .46s var(--spring)}.panel.is-open{opacity:1;transform:none}.panel-content{flex:1;min-height:0;display:flex;flex-direction:column;animation:content-in .32s var(--spring)}.panel-title{animation:content-in .32s var(--spring)}.panel .muted{color:var(--d-label-2)}.panel-head{display:flex;justify-content:space-between;align-items:center;padding:16px 12px 12px 20px}.panel-head b{font-size:20px;font-weight:700;letter-spacing:-.02em}.panel-body{flex:1;min-height:0;overflow-y:auto;padding:4px 16px 16px;display:flex;flex-direction:column;gap:10px}.panel .empty{color:var(--night-ink-2)}.chat{padding:0;gap:0;overflow:hidden}.chat-list{flex:1;overflow-y:auto;padding:4px 16px 12px;display:flex;flex-direction:column;gap:10px}.chat-input{display:flex;gap:8px;padding:10px 12px 12px;align-items:flex-end;border-top:.5px solid var(--d-sep)}.chat-input textarea{border-radius:20px;padding:10px 16px}.chat-input .btn.icon{border-radius:50%}.msg{align-self:flex-start;max-width:92%;padding:9px 14px 10px;border-radius:20px 20px 20px 6px;background:var(--d-elev-2);font-size:15px;line-height:1.38}.msg.mine{align-self:flex-end;background:var(--blue-dark);color:#fff;border-radius:20px 20px 6px}.msg.mine .muted,.msg.mine .mini{color:#ffffffb3}.msg.from-teacher:not(.mine){box-shadow:inset 0 0 0 1px #ffd60a59}.msg-head{display:flex;align-items:center;gap:6px;margin-bottom:2px;font-size:12px}.msg-head b{font-weight:600}.msg-head .pill{margin-left:0}.msg-actions{margin-left:auto;display:flex;gap:0;opacity:0;transition:opacity .15s}@media (hover: hover){.msg:hover .msg-actions,.vocab-card:hover .msg-actions{opacity:1}}.msg-text{white-space:pre-wrap;word-break:break-word}.msg-corrected .wrong{text-decoration:line-through;text-decoration-color:var(--red-dark);opacity:.55;white-space:pre-wrap}.msg-corrected .right{color:var(--green-dark);font-weight:600;white-space:pre-wrap}.msg.mine .msg-corrected .right{color:#c8ffd4}.msg-corrected .note{font-size:13px;opacity:.8;margin-top:4px}.msg-edit{display:grid;gap:8px;margin-top:10px}.vocab-form{display:grid;gap:10px}.vocab-fields{display:flex;gap:8px}.vocab-form .narrow{width:44%;flex:none}.vocab-add{width:100%}.vocab-bar small{display:block;margin-top:2px;font-size:var(--fs-caption);color:var(--night-ink-2)}.vocab-bar .tt-switch>span{padding:8px 0}.vocab-bar{display:flex;align-items:center}.vocab-bar .tt-switch{flex:1;min-width:0}.vocab-csv{flex:none;display:grid;place-items:center;width:var(--control-md);height:var(--control-md);margin:0 10px 0 2px;border-radius:50%;background:transparent;color:var(--night-ink-2);position:relative;transition:background .2s var(--ease),color .2s var(--ease)}.vocab-csv:before{content:"";position:absolute;left:-7px;top:8px;bottom:8px;border-left:1px solid var(--night-separator)}@media (hover: hover){.vocab-csv:hover{background:var(--night-glass-inner);color:var(--night-ink)}}.viewer-vocab .panel-body{padding-top:16px}.vocab-list{display:grid;gap:8px}.vocab-card{padding:12px 14px;border-radius:var(--r);background:var(--d-elev-2);transition:box-shadow .35s var(--ease),background .35s var(--ease)}.vocab-card.lit{background:#ffd60a24;box-shadow:inset 0 0 0 1.5px var(--yellow),0 0 30px #ffd60a26}.vocab-top{display:flex;align-items:center;gap:6px}.vocab-top .mini:first-child{color:var(--blue-dark)}.vocab-word{font-size:17px;font-weight:600;letter-spacing:-.02em}.vocab-tr{margin:2px 0 0 34px;color:var(--d-label-2)}.hidden-tr{border:0;border-radius:980px;padding:3px 10px;font-size:12px;background:#7676803d;color:var(--d-label-2)}.vocab-example{display:flex;gap:4px;align-items:flex-start;margin:8px 0 0 6px;color:var(--d-label-2);font-size:14px}.people-bar{display:flex;justify-content:space-between;align-items:center;min-height:36px;margin-bottom:6px}.person{display:flex;align-items:center;gap:12px;padding:10px 12px;flex-wrap:wrap;background:var(--d-elev-2);border-bottom:.5px solid var(--d-sep)}.person:last-child{border-bottom:0}.person-info{flex:1;min-width:0}.person-name{font-weight:500;font-size:15px}.person-actions{display:flex;gap:4px;align-items:center;width:100%;padding-left:50px}.people .mic-dot{color:var(--red-dark)}.people .mic-dot.on{color:var(--green-dark)}.tools{gap:12px}.tools section{display:grid;gap:10px;padding:16px;background:var(--d-elev-2)}.tools h3{font-size:13px;font-weight:600;color:var(--d-label-2)}.tools p{margin:0;line-height:1.45}.tools .narrow{width:72px}.tools .toggle{justify-content:space-between;flex-direction:row-reverse}.seg{--n: 2;position:relative;display:grid;grid-template-columns:repeat(var(--n),1fr);padding:2px;border-radius:10px;background:#7676803d}.seg:before{content:"";position:absolute;top:2px;bottom:2px;left:2px;width:calc((100% - 4px) / var(--n));border-radius:6px;transform:translate(calc(100% * var(--i, 0)));background:#636366;box-shadow:0 3px 8px #0000001f,0 3px 1px #0000000a;transition:transform .36s var(--spring)}.seg[data-i="1"]:before{transform:translate(100%)}.seg button{position:relative;z-index:1;border:0;padding:7px;border-radius:6px;background:transparent;color:var(--d-label);font-size:13px;font-weight:500;text-shadow:0 0 0 transparent,0 0 0 transparent;transition:text-shadow .28s var(--ease),color .28s var(--ease)}.seg button.active{text-shadow:.3px 0 0 currentColor,-.3px 0 0 currentColor}.controls{grid-area:controls;display:flex;align-items:center;justify-content:center;gap:12px;padding:0 16px}.controls-group{display:flex;gap:2px;align-items:center;padding:8px 10px}.controls-group:last-child{padding:8px}.ctl{display:flex;flex-direction:column;align-items:center;gap:4px;min-width:64px;padding:0 4px;border:0;background:transparent;color:var(--d-label)}.ctl-icon{position:relative;display:grid;place-items:center;width:44px;height:44px;border-radius:50%;background:#76768052;transition:background .2s var(--ease),color .2s,transform .12s}@media (hover: hover){.ctl:hover:not(:disabled) .ctl-icon{background:#7676807a}}.ctl:active:not(:disabled) .ctl-icon{transform:scale(.92)}.ctl-label{font-size:11px;color:var(--d-label-2);white-space:nowrap}.ctl.off .ctl-icon{background:#fff;color:var(--ink)}.ctl.active .ctl-icon{background:var(--blue-dark);color:#fff}.ctl.active .ctl-label{color:var(--d-label)}.ctl-badge{position:absolute;top:-3px;right:-3px;min-width:18px;height:18px;padding:0 5px;border-radius:10px;display:grid;place-items:center;background:var(--red-dark);color:#fff;font-size:11px;font-weight:600;box-shadow:0 0 0 2px #1c1c1e}.controls .btn.danger{min-height:44px;padding:0 20px;gap:8px}.toasts{position:fixed;top:86px;left:50%;transform:translate(-50%);display:grid;gap:8px;z-index:50;justify-items:center}.toast{max-width:80vw;padding:12px 20px;border-radius:980px;font-size:14px;font-weight:500;word-break:break-word;color:#fff;animation:drop .4s cubic-bezier(.32,1.4,.5,1)}.toast.floor{box-shadow:inset 0 0 0 1px #30d15899,0 14px 40px #00000073}.toast.error,.toast.mute{box-shadow:inset 0 0 0 1px #ff453a99,0 14px 40px #00000073}@keyframes drop{0%{transform:translateY(-14px) scale(.92);opacity:0}}.toast.leaving{animation:toast-out .3s var(--ease) forwards}@keyframes toast-out{to{transform:translateY(-10px) scale(.94);opacity:0}}.board{width:100%;min-width:0;height:100%;display:flex;flex-direction:column;align-items:center;gap:8px;min-height:0}.board-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:center}.tb-group{display:flex;align-items:center}.tb-group:last-child{border-right:0}.tb-btn{position:relative;display:grid;place-items:center;min-width:34px;height:34px;padding:0 8px;gap:6px;border:0;border-radius:10px;background:transparent;color:var(--d-label)}.tb-btn.wide{display:flex;font-size:13px;font-weight:500;padding:0 12px}@media (hover: hover){.tb-btn:hover:not(:disabled){background:#7676803d}}.board-toolbar .tb-btn[data-confirm]{display:flex;gap:6px;padding:0 10px;background:var(--red-dark);color:#fff}.tb-btn[data-confirm]:after{content:attr(data-confirm);white-space:nowrap;font-size:13px;font-weight:600}.tb-btn .dot{display:block;border-radius:50%}.swatch{width:24px;height:24px;margin:0 2px;padding:0;border:0;border-radius:50%;box-shadow:inset 0 0 0 1px #ffffff2e;transition:transform .15s var(--ease)}@media (hover: hover){.swatch:hover:not(:disabled){transform:scale(1.12)}}.swatch.active{box-shadow:0 0 0 2px var(--d-elev),0 0 0 4px #fff}.board-toolbar select{width:auto;height:34px;padding:0 30px 0 12px;border-radius:10px;font-size:13px}.board-wrap{flex:1;width:100%;min-height:0;position:relative;overflow:hidden;border-radius:var(--r-lg);background:#fff;box-shadow:0 20px 60px #00000080}.board-wrap canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none;display:block}.cursor-pen,.cursor-marker,.cursor-shape{cursor:crosshair}.cursor-text{cursor:text}.cursor-sticky{cursor:copy}.cursor-select{cursor:default}.cursor-eraser{cursor:cell}.cursor-grab{cursor:grab}.cursor-grabbing{cursor:grabbing}.tb-popover-anchor{position:relative}.caret{position:absolute;right:3px;bottom:6px;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid currentColor;opacity:.7}.tb-popover{margin-top:6px;display:grid;gap:2px;opacity:0;transform:translateY(-6px) scale(.95);transform-origin:top left;transition:opacity .18s var(--ease),transform .28s var(--spring)}.tb-popover.is-open{opacity:1;transform:none}.tb-popover .tb-btn{display:flex;gap:10px;width:100%;padding:0 10px}@keyframes pop{0%{opacity:0;transform:scale(.96) translateY(-4px)}}.sel-actions{position:absolute;z-index:5;transform:translate(-50%);display:flex;gap:4px;padding:4px;border-radius:var(--radius-pill);background:var(--glass-2);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);box-shadow:var(--shadow-rim),0 8px 24px #3c287829,0 0 0 .5px #3c3c431f;animation:pop .16s var(--ease)}.sel-actions button{display:inline-flex;align-items:center;gap:6px;height:var(--control-sm);padding:0 14px 0 12px;border:0;border-radius:var(--radius-pill);background:var(--accent-tint);color:var(--accent-ink);font-size:var(--fs-footnote);font-weight:600;white-space:nowrap;transition:background .2s var(--ease),transform .12s var(--ease)}.sel-actions button:active{transform:scale(.96)}@media (hover: hover){.sel-actions button:hover{background:#0a84ff38}}.sel-actions button.danger{background:var(--danger-tint);color:var(--danger-ink)}@media (hover: hover){.sel-actions button.danger:hover{background:#ff3b3033}}.zoom-controls{position:absolute;right:12px;bottom:12px;z-index:4;display:flex;align-items:center;padding:3px;border-radius:14px;background:#ffffffdb;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:0 0 0 .5px #0000001f,0 6px 20px #0000001f}.zoom-controls button{display:grid;place-items:center;min-width:32px;height:32px;padding:0 6px;border:0;border-radius:10px;background:transparent;color:var(--ink)}@media (hover: hover){.zoom-controls button:hover{background:#0000000f}}.zoom-controls .zoom-value{font-size:13px;font-weight:600;font-variant-numeric:tabular-nums;min-width:50px}.board-text-input,:is(.room,.viewer) .board-text-input,:is(.room,.viewer) .board-text-input:focus{position:absolute;z-index:4;margin:-4px 0 0 -6px;border-radius:6px;min-height:0;resize:none;overflow:hidden;white-space:pre;field-sizing:content;background:#007aff0f;border:0;box-shadow:0 0 0 2px var(--blue-dark);outline:none;font-family:SF Pro Text,-apple-system,Segoe UI,Roboto,Arial,sans-serif;font-weight:500;padding:4px 6px}.board-locked{position:absolute;top:12px;left:12px;display:flex;align-items:center;gap:6px;pointer-events:none;padding:6px 12px;border-radius:980px;font-size:13px;font-weight:500;background:#1e1e20b8;color:#fff;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur)}.panel-body::-webkit-scrollbar,.chat-list::-webkit-scrollbar{width:8px}.panel-body::-webkit-scrollbar-thumb,.chat-list::-webkit-scrollbar-thumb{background:#ffffff2e;border-radius:10px;border:2px solid transparent;background-clip:content-box}.splash{height:100%;display:grid;place-items:center;background:var(--bg)}.splash .logo-mark{animation:heartbeat 1.2s var(--ease) infinite}@keyframes heartbeat{0%,to{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(.98)}45%{transform:scale(1.08)}}.auth{min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:28px;padding:calc(32px + env(safe-area-inset-top)) 16px calc(32px + env(safe-area-inset-bottom));background:radial-gradient(1100px 520px at 50% -10%,#e3ecff 0%,transparent 60%),var(--bg)}.auth-logo{font-size:24px;gap:10px;animation:fade-up .6s var(--spring) backwards}.auth-card{width:min(400px,100%);animation:fade-up .6s var(--spring) .06s backwards}.auth-card h2{font-size:28px}.auth-sub{margin:6px 0 0;line-height:1.45}.auth-card .btn{width:100%}.field-in{animation:content-in .3s var(--spring)}.center-text{text-align:center;margin:0;line-height:1.45}.success{background:#34c75924;color:var(--success-ink);padding:10px 14px;border-radius:14px;font-size:13px;animation:content-in .3s var(--spring)}.seg.light button{color:var(--label)}.home-head{justify-content:space-between}.account{position:relative}.account-btn{display:flex;align-items:center;gap:8px;height:36px;padding:0 12px 0 4px;border:0;border-radius:980px;color:var(--label);font-size:14px;font-weight:500;transition:background .2s var(--ease),transform .2s var(--bounce)}@media (hover: hover){.account-btn:hover{background:var(--fill-2)}}.account-btn:active{transform:scale(.96)}.account-btn .avatar.small{width:28px;height:28px;font-size:12px}.account-name{max-width:160px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.account-menu{position:absolute;right:0;top:calc(100% + 8px);z-index:60;min-width:250px;padding:6px;display:grid;gap:2px;border-radius:14px;background:#ffffffeb;backdrop-filter:var(--blur);-webkit-backdrop-filter:var(--blur);box-shadow:0 0 0 .5px #0000001f,0 16px 40px #00000029;opacity:0;transform:translateY(-6px) scale(.96);transform-origin:top right;transition:opacity .18s var(--ease),transform .28s var(--spring)}.account-menu.is-open{opacity:1;transform:none}.account-head{display:grid;gap:2px;padding:10px 12px 12px;border-bottom:.5px solid var(--separator);margin-bottom:4px}.account-head .pill{justify-self:start;margin:6px 0 0}.account-menu button{text-align:left;border:0;background:transparent;min-height:38px;padding:0 12px;border-radius:var(--radius-sm);font-size:var(--fs-callout);font-weight:500;color:var(--ink);transition:background .15s var(--ease)}@media (hover: hover){.account-menu button:hover{background:var(--accent-tint)}}.account-menu button.danger{color:var(--danger-ink);margin-top:4px;position:relative}.account-menu button.danger:before{content:"";position:absolute;left:0;right:0;top:-3px;border-top:.5px solid var(--separator)}@media (hover: hover){.account-menu button.danger:hover{background:var(--danger-tint)}}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;z-index:80;display:grid;place-items:center;padding:16px;backdrop-filter:var(--blur-control);-webkit-backdrop-filter:var(--blur-control);opacity:0;transition:opacity .25s var(--ease)}.modal-backdrop.is-open{opacity:1}.modal{width:min(420px,100%);color:var(--label);text-align:left;opacity:0;transform:translateY(16px) scale(.97);transition:opacity .25s var(--ease),transform .4s var(--spring)}.modal.is-open{opacity:1;transform:none}.modal .row{justify-content:flex-end}.modal .row .btn{width:auto}.modal-sep{margin-top:6px;padding-top:14px;border-top:.5px solid var(--separator);font-size:13px;font-weight:600;color:var(--label-2)}.prejoin{position:relative}.prejoin-account{position:absolute;top:calc(16px + env(safe-area-inset-top));right:16px;z-index:5}.prejoin-me{padding:12px 14px;border-radius:14px;font-size:14px}.students-head{display:flex;align-items:baseline;justify-content:space-between}.students-list{display:grid;gap:8px;max-height:420px;overflow-y:auto}.student{display:flex;align-items:center;gap:12px;min-height:60px;padding:10px 12px;border-radius:var(--radius-md);background:var(--glass-inner);box-shadow:var(--shadow-inner);transition:box-shadow .2s var(--ease)}.student .avatar.small{position:static}.student-info{flex:1;min-width:0;display:grid;gap:2px}.student-info b{font-weight:600;font-size:15px}.student-info .muted{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.student-actions{display:flex;gap:4px;flex:none}.student-actions .btn{width:auto}.new-pass{display:flex;align-items:center;gap:6px;font-size:13px;margin-top:4px;animation:content-in .3s var(--spring)}.new-pass code{padding:2px 8px;border-radius:6px;background:#34c75929;color:var(--success-ink);font-size:14px;letter-spacing:.04em}@media (max-width: 768px){.student:has(.inline-confirm,.new-pass){flex-wrap:wrap}.student:has(.inline-confirm,.new-pass) .student-actions{width:100%;padding-left:50px}.account-name{display:none}.account-btn{padding:0 4px}.prejoin-account{position:static;align-self:flex-end}}.dash{max-width:1080px;margin:0 auto;padding:56px 22px 96px;display:grid;gap:44px}.dash-hello h1{font-size:48px;line-height:1.05;font-weight:700;letter-spacing:-.035em}.dash-hello h1 em{font-style:normal;background:linear-gradient(90deg,var(--accent-ink) 0%,#7f3fe0 55%,#d6336c 100%);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}.dash-hello{display:grid;justify-items:center;text-align:center;padding-top:8px}.motivation{max-width:640px;margin:14px auto 0;padding:4px 12px;border:0;border-radius:14px;background:transparent;font-size:20px;line-height:1.45;color:var(--label-2);cursor:pointer;transition:color .2s var(--ease)}@media (hover: hover){.motivation:hover{color:var(--label)}}.motivation-text{display:inline-block;animation:content-in .45s var(--spring)}.dash-hello>*{animation:fade-up .6s var(--spring) backwards}.dash-hello .motivation{animation-delay:.06s}.section-head{display:flex;align-items:baseline;gap:10px;margin-bottom:14px}.section-head h2{font-size:24px;font-weight:700}.section-head .muted{font-size:17px}.class-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:16px}.class-card{display:flex;flex-direction:column;gap:10px;animation:fade-up .55s var(--spring) backwards}.class-card .class-actions{margin-top:auto;padding-top:4px}@media (hover: hover){.class-card:hover{box-shadow:0 2px 6px #0000000a,0 20px 50px #00000017}}.class-top{display:flex;align-items:flex-start;justify-content:space-between;gap:10px}.class-top h3{font-size:20px;font-weight:600;letter-spacing:-.02em;line-height:1.25;overflow-wrap:anywhere}.live-dot{flex:none;display:inline-flex;align-items:center;gap:6px;padding:3px 10px;border-radius:980px;background:#34c75924;color:var(--success-ink);font-size:12px;font-weight:600}.live-dot:before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green);animation:pulse 1.6s var(--ease) infinite}.avatar-stack{display:flex;padding-left:6px}.avatar-stack .avatar.small{position:static;width:30px;height:30px;font-size:12px;margin:0 0 0 -6px;box-shadow:0 0 0 2px #fff}.avatar-stack .avatar.more{background:var(--fill-2);color:var(--label);font-weight:600}.class-requests{justify-self:start;border:0;padding:5px 12px;border-radius:980px;font-size:13px;font-weight:600;background:#ff9f0a29;color:var(--warning-ink);animation:content-in .4s var(--spring)}.class-actions{display:flex;flex-wrap:wrap;gap:8px}.class-actions .btn{width:auto}.class-new{position:relative;isolation:isolate;overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;min-height:168px;color:var(--accent-ink);font-size:17px;font-weight:600;cursor:pointer;animation:fade-up .55s var(--spring) backwards}.class-new:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;z-index:-1;border-radius:inherit;pointer-events:none;background:radial-gradient(120% 90% at 50% 42%,rgba(10,132,255,.16),rgba(10,132,255,.05) 55%,transparent 80%);opacity:0;transition:opacity .45s var(--ease)}.class-new-plus{display:grid;place-items:center;width:52px;height:52px;border-radius:50%;background:var(--gradient-accent);color:#fff;box-shadow:var(--shadow-accent);transition:transform .5s var(--spring),box-shadow .4s var(--ease)}.class-new-plus svg{transition:transform .5s var(--spring)}.class-new>span:last-child{transition:transform .5s var(--spring)}@media (hover: hover){.class-new:hover:before{opacity:1}.class-new:hover .class-new-plus{transform:translateY(-2px) scale(1.08);box-shadow:inset 0 1px #ffffff8c,inset 0 -2px 6px #00287838,0 14px 32px #0071e361}.class-new:hover .class-new-plus svg{transform:rotate(90deg)}.class-new:hover>span:last-child{transform:translateY(2px)}}.class-new:active .class-new-plus{transform:scale(.94);transition-duration:.15s}.class-new-form{align-content:start;gap:14px;animation:stage-in .3s var(--spring)}.class-new-form h3{font-size:var(--fs-title-3);font-weight:600;letter-spacing:-.02em}.class-new-form p{margin:-8px 0 0}.class-new-form .row{justify-content:flex-end;margin-top:auto;padding-top:4px}.class-new-form .btn{flex:1}.class-empty{grid-column:1 / -1;justify-items:center;text-align:center;color:var(--label-2);padding:40px 24px}.class-empty p{max-width:460px;margin:0;line-height:1.5}.modal.wide{width:min(560px,100%);max-height:min(86vh,860px);overflow-y:auto}.modal-head{display:flex;align-items:center;justify-content:space-between}.modal .students-list{max-height:none;overflow:visible}.rename input{flex:1}.rename .btn{width:auto;flex:none}.card .link-btn{justify-self:start;width:auto}.gate{gap:14px}.gate p{max-width:380px;line-height:1.5;margin:0}.gate-icon{display:grid;place-items:center;width:56px;height:56px;border-radius:50%;background:var(--fill);color:var(--label-2)}@media (max-width: 768px){.dash{padding:28px 16px calc(56px + env(safe-area-inset-bottom));gap:32px}.dash-hello h1{font-size:34px}.motivation{font-size:17px}.class-grid{grid-template-columns:1fr}.rename{flex-wrap:wrap}}.dots{position:relative;flex:none}.dots-btn{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:50%;background:transparent;color:var(--label-2);transition:background .2s var(--ease),color .2s,transform .2s var(--bounce)}.dots-btn.active{background:var(--fill);color:var(--label)}@media (hover: hover){.dots-btn:hover{background:var(--fill);color:var(--label)}}.dots-btn:active{transform:scale(.9)}.dots-menu{min-width:220px}.students .students-list{max-height:none;overflow:visible}.dots-menu button{display:flex;align-items:center;gap:10px}.confirm{display:grid;gap:14px}.confirm p{margin:0;line-height:1.5}.confirm-who{padding:10px 12px;background:var(--fill)}.confirm-actions{justify-content:flex-end}.confirm-actions .btn{width:auto}.new-pass.big{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px 16px;border-radius:14px;background:#34c7591f;margin:0}.new-pass.big code{background:transparent;padding:0;font-size:24px;font-weight:600;letter-spacing:.06em}.new-pass.big .btn{width:auto}.class-top .dots{margin:-6px -8px 0 auto}.class-top .live-dot+.dots{margin-left:0}.class-actions{flex-wrap:nowrap}.btn.enter{flex:1;min-height:46px;gap:8px;transition:transform .2s var(--bounce),box-shadow .25s var(--ease),filter .2s var(--ease)}.btn.enter.live{animation:enter-glow 2.4s var(--ease) infinite}@keyframes enter-glow{50%{box-shadow:inset 0 1px #ffffff8c,0 8px 30px #28b46380}}.btn.view-btn{flex:none;min-height:46px;padding:0 16px;gap:6px;font-size:14px}.copied-toast{position:fixed;left:50%;bottom:calc(28px + env(safe-area-inset-bottom));z-index:1100;display:flex;align-items:center;gap:10px;max-width:calc(100vw - 32px);padding:10px 18px 10px 10px;border-radius:var(--radius-pill);background:var(--glass-2);color:var(--ink);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);box-shadow:var(--shadow-rim),0 12px 32px #3c28782e,0 0 0 .5px #3c3c431f;font-size:var(--fs-callout);font-weight:600;white-space:nowrap;opacity:0;transform:translate(-50%,16px) scale(.96);transition:opacity .22s var(--ease),transform .36s var(--spring)}.copied-toast.is-open{opacity:1;transform:translate(-50%)}.copied-toast-text{min-width:0;overflow:hidden;text-overflow:ellipsis}.copied-toast-ico{flex:none;display:grid;place-items:center;width:24px;height:24px;border-radius:50%;background:var(--success);color:#fff}.rec-glyph{width:16px;height:16px;border-radius:50%;background:var(--red, var(--danger));box-shadow:0 0 0 2.5px #ffffffe6;transition:border-radius .3s var(--spring),width .3s var(--spring),height .3s var(--spring)}.rec-ctl.recording .ctl-icon{background:#ff3b302e;box-shadow:inset 0 0 0 1.5px #ff453ab3}.rec-ctl.recording .rec-glyph{width:14px;height:14px;border-radius:3px;box-shadow:none;background:var(--night-danger);animation:rec-breathe 1.6s ease-in-out infinite}.rec-ctl.recording .ctl-label{color:var(--night-danger);font-variant-numeric:tabular-nums;font-weight:600}.room .pill.rec-pill{margin:0;padding:6px 12px;font-size:12px;display:inline-flex;align-items:center;gap:6px;color:#fff;font-weight:600;letter-spacing:.02em;background:#ff3b3029;box-shadow:inset 0 0 0 .5px #ff453a80;animation:content-in .4s var(--spring) both}.rec-pill b{font-weight:600;font-variant-numeric:tabular-nums;color:#ffffffd9}.rec-dot{width:8px;height:8px;border-radius:50%;background:var(--night-danger);animation:rec-blink 1.2s ease-in-out infinite}.toast.record{box-shadow:inset 3px 0 0 var(--night-danger),0 10px 30px #00000059}@keyframes rec-blink{0%,to{opacity:1}50%{opacity:.25}}@keyframes rec-breathe{0%,to{transform:scale(1)}50%{transform:scale(.82)}}.share-anchor{position:relative;display:flex}.share-menu{position:absolute;z-index:30;bottom:calc(100% + 22px);left:50%;width:430px;padding:16px;display:grid;gap:14px;border-radius:var(--radius-lg);color:var(--night-ink);background:var(--night-glass-2);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);box-shadow:var(--night-shadow-glass);opacity:0;transform:translate(-50%,10px) scale(.96);transform-origin:50% 100%;transition:opacity .2s var(--ease),transform .34s var(--spring)}.share-menu.is-open{opacity:1;transform:translate(-50%) scale(1)}.share-menu .muted{color:var(--d-label-2)}.share-head{display:grid;gap:2px}.share-head b{font-size:17px}.share-sources{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.share-source{display:grid;justify-items:center;align-content:start;grid-template-rows:auto auto 1fr;gap:4px;padding:14px 8px 12px;border:0;border-radius:var(--radius-md);background:var(--night-glass-inner);box-shadow:var(--night-shadow-rim);color:var(--night-ink);text-align:center;font-size:13px;transition:background .2s var(--ease),transform .25s var(--bounce),box-shadow .2s}@media (hover: hover){.share-source:hover{background:#ffffff29}}.share-source:active{transform:scale(.96)}.share-source.current{box-shadow:inset 0 0 0 2px var(--blue-dark)}.share-source b{font-size:14px;font-weight:600}.share-source .muted{font-size:12px;line-height:1.3}.share-source-icon{display:grid;place-items:center;width:48px;height:48px;margin-bottom:4px;border-radius:14px;background:linear-gradient(180deg,#3d95ff,#0a6ff0);color:#fff;box-shadow:0 6px 16px #0a6ff059}.share-audio{justify-content:space-between;gap:14px;padding:12px 14px;border-radius:var(--radius-md);background:var(--night-glass-inner);box-shadow:var(--night-shadow-rim)}.share-audio>span{display:grid;gap:2px;text-align:left}.share-audio b{font-size:14px;font-weight:600}.share-audio.disabled{opacity:var(--opacity-disabled)}.share-note{margin:-4px 0 0;text-align:center}.share-stop{width:100%}.avatar{overflow:hidden;-webkit-user-select:none;user-select:none}.avatar img{width:100%;height:100%;object-fit:cover;display:block;animation:fade .3s var(--ease)}.avatar.has-photo{background-image:none}.avatar.xl{position:static;width:96px;height:96px;font-size:38px;margin:0}.tile .avatar.has-photo{width:112px;height:112px;box-shadow:0 8px 30px #0006}.strip .tile .avatar.has-photo{width:56px;height:56px}.pip .avatar.has-photo{width:48px;height:48px}.profile-hero{display:grid;justify-items:center;gap:4px;text-align:center;padding-bottom:6px}.profile-photo{position:relative;border:0;padding:0;background:none;border-radius:50%;margin-bottom:8px;cursor:pointer}.profile-photo .avatar{box-shadow:0 6px 20px #0000001f;transition:transform .35s var(--bounce),filter .2s}@media (hover: hover){.profile-photo:hover .avatar{transform:scale(1.04);filter:brightness(.94)}}.profile-photo:active .avatar{transform:scale(.96)}.profile-photo-badge{position:absolute;right:0;bottom:2px;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--blue);color:#fff;box-shadow:0 0 0 3px #fff;transition:transform .3s var(--bounce)}@media (hover: hover){.profile-photo:hover .profile-photo-badge{transform:scale(1.1)}}.profile-name{font-size:24px;font-weight:700;letter-spacing:-.02em}.profile-photo-actions{justify-content:center;gap:2px;margin-top:4px}.profile-photo-actions .btn{width:auto;min-height:30px}.cropper{display:grid;justify-items:center;gap:18px;animation:stage-in .32s var(--spring)}.cropper-title{display:grid;gap:4px;text-align:center}.cropper-title b{font-size:20px;letter-spacing:-.02em}.cropper-frame{position:relative;overflow:hidden;border-radius:20px;background:#000;touch-action:none;cursor:grab;max-width:100%}.cropper-frame:active{cursor:grabbing}.cropper-frame img{position:absolute;left:0;top:0;max-width:none;-webkit-user-select:none;user-select:none;pointer-events:none;transform-origin:0 0}.cropper-mask{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;background:radial-gradient(circle at center,transparent 0,transparent calc(50% - 1px),rgba(0,0,0,.55) 50%)}.cropper-mask:after{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border-radius:50%;box-shadow:inset 0 0 0 2px #ffffffe6}.cropper-zoom{display:flex;align-items:center;gap:12px;width:min(280px,100%)}.zoom-glyph{color:var(--label-2);font-size:20px;font-weight:400;width:14px;text-align:center}.zoom-glyph.small{font-size:16px}.cropper-zoom input[type=range]{flex:1;-moz-appearance:none;appearance:none;-webkit-appearance:none;height:4px;padding:0;border-radius:3px;background:var(--fill-2);box-shadow:none}.cropper-zoom input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:26px;height:26px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 .5px 4px #0000001f,0 6px 13px #0000001f,0 0 0 .5px #0000000a}.cropper-zoom input[type=range]::-moz-range-thumb{width:26px;height:26px;border:0;border-radius:50%;background:#fff;box-shadow:0 .5px 4px #0000001f,0 6px 13px #0000001f}.cropper-actions{justify-content:space-between;width:min(280px,100%)}.cropper-actions .btn{width:auto}.sched-sub{margin:-4px 0 0;line-height:1.45}.slots{display:grid;gap:12px}.slot{display:grid;gap:16px;padding:16px 16px 18px;border-radius:var(--radius-md);background:var(--glass-inner);box-shadow:var(--shadow-inner);animation:stage-in .32s var(--spring)}.slot-head{display:flex;align-items:center;justify-content:space-between;min-height:20px}.slot-label,.field-caption{font-size:var(--fs-footnote);font-weight:600;color:var(--ink-2);letter-spacing:0;text-transform:none}.day-chips{display:grid;grid-template-columns:repeat(7,1fr);gap:6px}.day-chip{aspect-ratio:1;max-width:48px;width:100%;justify-self:center;border:0;border-radius:50%;background:var(--field);color:var(--ink);font-size:var(--fs-callout);font-weight:600;box-shadow:inset 0 0 0 1px var(--field-stroke),0 1px 2px #0000000a;transition:background .22s var(--ease),color .22s var(--ease),transform .3s var(--bounce),box-shadow .22s}.day-chip:active{transform:scale(.88)}.day-chip.on{background:var(--gradient-accent);color:#fff;transform:scale(1.04);box-shadow:var(--shadow-accent)}.day-presets{display:flex;gap:6px;flex-wrap:wrap;margin-top:-4px}.day-presets button{border:0;min-height:30px;padding:0 12px;border-radius:var(--radius-pill);background:var(--accent-tint);color:var(--accent-ink);font-size:var(--fs-footnote);font-weight:600;transition:background .2s var(--ease)}@media (hover: hover){.day-presets button:hover{background:#0a84ff38}}.slot-time{display:grid;grid-template-columns:auto minmax(0,1fr);gap:16px;align-items:end}.time-field,.duration{display:grid;gap:6px;min-width:0}.time-btn{display:inline-flex;align-items:center;justify-content:space-between;gap:14px;min-width:150px;height:var(--control-xl);padding:0 14px 0 18px;border-radius:var(--radius-md);border:1px solid var(--field-stroke);background:var(--field);color:var(--ink);transition:border-color .2s var(--ease),box-shadow .2s var(--ease),background .2s var(--ease)}.time-btn b{font-size:var(--fs-title-2);font-weight:600;letter-spacing:-.02em;font-variant-numeric:tabular-nums}.time-btn b i{font-style:normal;padding:0 1px;color:var(--ink-2)}.time-btn svg{color:var(--ink-2)}@media (hover: hover){.time-btn:hover{background:#fff}}.time-btn.open{background:#fff;border-color:var(--accent);box-shadow:0 0 0 3px var(--accent-tint)}.time-pop{position:fixed;z-index:1000;width:300px;padding:12px;display:grid;gap:8px;border-radius:var(--radius-lg);background:var(--glass-2);backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);box-shadow:var(--shadow-glass);opacity:0;transform:translateY(-6px) scale(.95);transform-origin:top left;transition:opacity .18s var(--ease),transform .22s var(--spring)}.time-pop.is-open{opacity:1;transform:none}.time-pop .field-caption{padding:0 4px}.time-grid{display:grid;gap:4px}.time-grid.hours,.time-grid.minutes{grid-template-columns:repeat(6,1fr)}.time-grid button{height:var(--control-sm);border:0;border-radius:var(--radius-sm);background:transparent;color:var(--ink);font-size:var(--fs-callout);font-weight:500;font-variant-numeric:tabular-nums;transition:background .15s var(--ease)}@media (hover: hover){.time-grid button:hover{background:var(--accent-tint)}}.time-grid button.on{background:var(--gradient-accent);color:#fff;font-weight:600}.duration .seg button{min-height:42px;padding:0 6px;font-size:var(--fs-callout);white-space:nowrap}.modal .add-slot{justify-self:start;width:auto}.sched-preview{display:flex;align-items:center;gap:10px;padding:12px 14px;border-radius:14px;background:var(--accent-tint);color:var(--label);font-size:14px;animation:content-in .3s var(--spring)}.sched-preview svg{color:var(--blue);flex:none}.sched-preview.empty{background:var(--glass-inner);box-shadow:var(--shadow-inner)}.sched-preview.empty svg{color:var(--label-3)}.next-lesson{display:flex;align-items:center;gap:10px;width:100%;padding:10px 12px;border:0;border-radius:14px;background:var(--fill);color:var(--label);text-align:left;font:inherit;transition:background .2s var(--ease),transform .2s var(--bounce)}@media (hover: hover){button.next-lesson:hover{background:var(--fill-2)}}button.next-lesson:active{transform:scale(.98)}.next-lesson>svg{flex:none;color:var(--label-3)}.next-lesson.add{color:var(--accent-ink);font-weight:600;font-size:14px;background:var(--accent-tint);box-shadow:none}.next-lesson.add svg{color:var(--blue)}.nl-dot{flex:none;width:10px;height:10px;border-radius:50%;background:var(--label-3)}.nl-text{flex:1;min-width:0;display:grid;gap:1px}.nl-text b{font-size:15px;font-weight:600}.nl-text .muted{font-size:13px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.next-lesson.today .nl-dot{background:var(--blue)}.next-lesson.soon{background:#ff9f0a1f}.next-lesson.soon .nl-dot{background:var(--orange);animation:pulse 1.2s var(--ease) infinite}.next-lesson.soon b{color:var(--warning-ink)}.next-lesson.live{background:#34c7591f}.next-lesson.live .nl-dot{background:var(--green);box-shadow:0 0 #34c75999;animation:ring 1.6s var(--ease) infinite}.next-lesson.live b{color:var(--success-ink)}@keyframes ring{70%{box-shadow:0 0 0 8px #34c75900}to{box-shadow:0 0 #34c75900}}.up-next{display:inline-flex;align-items:center;gap:10px;max-width:min(520px,100%);margin:22px auto 0;padding:6px 6px 6px 8px;border-radius:980px;color:#fff;text-align:left;animation:fade-up .6s var(--spring) .12s backwards}.up-next.soon{box-shadow:0 8px 24px #ff8c1447}.up-next.live{box-shadow:0 8px 24px #30d15847}.up-next-icon{flex:none;display:grid;place-items:center;width:30px;height:30px;border-radius:50%;background:#ffffff38}.up-next.live .up-next-icon,.up-next.soon .up-next-icon{animation:pulse 1.6s var(--ease) infinite}.up-next-text{min-width:0;font-size:15px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.up-next-text b{font-weight:600}.up-next-room{opacity:.85}.up-next-btn{flex:none;height:32px;padding:0 14px;border:0;border-radius:980px;font-size:14px;font-weight:600;color:var(--ink);transition:transform .2s var(--bounce),background .2s}@media (hover: hover){.up-next-btn:hover{background:#f2f2f7}}.up-next-btn:active{transform:scale(.95)}@media (max-width: 768px){.slot-time{grid-template-columns:1fr}.time-btn{width:100%}.up-next-text{font-size:14px}.confirm-actions{flex-wrap:wrap}}.viewer{height:100dvh;display:flex;flex-direction:column;background:var(--d-bg);color:var(--d-label);animation:fade .4s var(--ease)}.viewer .splash{background:transparent}.viewer-head{flex:none;display:flex;align-items:center;gap:14px}.viewer-head .room-title{flex:1}.viewer-head .back{padding-left:10px}.viewer-head .btn{min-height:var(--control-md)}.viewer-head .viewer-tabs button{min-height:30px;padding:0 10px}.viewer-tabs{width:300px;flex:none}.viewer-actions{display:flex;align-items:center;gap:8px}.viewer-actions .btn{width:auto}.viewer .account-btn{background:transparent;box-shadow:none;color:var(--night-ink-2)}@media (hover: hover){.viewer .account-btn:hover{background:var(--night-glass-inner);color:var(--night-ink)}}.viewer .account-menu{color:var(--label)}.live-dot-mini{width:8px;height:8px;border-radius:50%;background:#fff;animation:pulse 1.6s var(--ease) infinite}.viewer-body{flex:1;min-height:0;display:flex;padding:0 16px calc(16px + env(safe-area-inset-bottom))}.viewer-board{flex:1;min-width:0;display:flex;position:relative}.viewer-empty{position:absolute;z-index:3;top:50%;left:50%;transform:translate(-50%,-50%);pointer-events:none;padding:10px 18px;border-radius:980px;background:#0000000f;color:var(--label-2);font-size:14px}.viewer-vocab{flex:1;display:flex;justify-content:center;min-height:0}.viewer-vocab .panel{width:min(720px,100%);margin:0;transform:none;opacity:1}@media (max-width: 768px){.viewer-head{flex-wrap:wrap;gap:10px}.viewer-head .back span,.viewer-actions .secondary span{display:none}.viewer-head .back,.viewer-actions .secondary{width:var(--control-md);padding:0}.viewer-tabs{order:5;width:100%}.viewer-body{padding:0 8px calc(8px + env(safe-area-inset-bottom))}.viewer .panel{position:static;height:auto;border-radius:var(--r-lg);box-shadow:none;transform:none}}@keyframes content-in{0%{opacity:0;transform:translateY(6px)}}@keyframes fade-up{0%{opacity:0;transform:translateY(18px)}}@keyframes stage-in{0%{opacity:0;transform:scale(.985)}}@keyframes tile-in{0%{opacity:0;transform:scale(.92)}}@keyframes pip-in{0%{opacity:0;transform:scale(.6)}}@keyframes hand-pop{0%{transform:scale(0) rotate(-30deg)}to{transform:scale(1) rotate(0)}}@keyframes badge-pop{0%{transform:scale(.3)}60%{transform:scale(1.25)}to{transform:scale(1)}}@keyframes msg-in{0%{opacity:0;transform:translateY(10px) scale(.92)}}@keyframes slide-down{0%{opacity:0;transform:translateY(-10px)}}@keyframes glow{0%{box-shadow:inset 0 0 0 1.5px var(--yellow),0 0 #ffd60a80}to{box-shadow:inset 0 0 0 1.5px var(--yellow),0 0 0 14px #ffd60a00}}.home-hero>*{animation:fade-up .7s var(--spring) backwards}.home-hero>:nth-child(2){animation-delay:.08s}.home-hero>:nth-child(3){animation-delay:.16s}.home-features li{animation:fade-up .6s var(--spring) backwards}.home-features li:nth-child(1){animation-delay:.22s}.home-features li:nth-child(2){animation-delay:.28s}.home-features li:nth-child(3){animation-delay:.34s}.home-features li:nth-child(4){animation-delay:.4s}.home-cards .card{animation:fade-up .7s var(--spring) backwards}.home-cards .card:nth-child(1){animation-delay:.12s}.home-cards .card:nth-child(2){animation-delay:.22s}.card{transition:transform .35s var(--spring),box-shadow .35s var(--ease)}@media (hover: hover){.home-cards .card:hover{box-shadow:0 2px 6px #0000000a,0 20px 50px #00000017}}.prejoin-preview{animation:fade-up .6s var(--spring) backwards}.prejoin-form,.card.center{animation:fade-up .6s var(--spring) .08s backwards}.error,.warn{animation:content-in .3s var(--spring)}.anim-in{animation:stage-in .42s var(--spring)}.tile{animation:tile-in .45s var(--spring) backwards}.strip .tile:nth-child(2){animation-delay:.04s}.strip .tile:nth-child(3){animation-delay:.08s}.strip .tile:nth-child(4){animation-delay:.12s}.pip{animation:pip-in .5s var(--spring) backwards;transform-origin:bottom right}.tile-pin{transition:opacity .2s var(--ease),background .2s var(--ease),transform .2s var(--bounce)}.tile-pin:active{transform:scale(.88)}.banner{animation:drop .4s var(--spring)}.timer,.topbar-tools .board-toolbar{animation:slide-down .4s var(--spring)}.zoom-controls{animation:content-in .4s var(--spring) .1s backwards}.ctl-icon{transition:background .25s var(--ease),color .25s var(--ease),transform .25s var(--bounce)}.ctl:active:not(:disabled) .ctl-icon{transform:scale(.88)}.ctl-badge{animation:badge-pop .45s var(--bounce)}.tb-btn:active:not(:disabled){transform:scale(.9)}.swatch{transition:transform .25s var(--bounce),box-shadow .25s var(--ease)}.swatch.active{transform:scale(1.08)}.chat-list .msg:last-child{animation:msg-in .38s var(--spring);transform-origin:bottom left}.chat-list .msg.mine:last-child{transform-origin:bottom right}.msg-edit{animation:content-in .3s var(--spring)}.msg-corrected .right{animation:content-in .4s var(--spring)}.vocab-list .vocab-card:last-child{animation:msg-in .4s var(--spring)}.vocab-card.lit{animation:glow 1.2s var(--ease) 2}.vocab-tr{animation:content-in .3s var(--ease)}.person{transition:background .35s var(--ease)}.person-actions{animation:content-in .3s var(--spring)}.tools section{animation:fade-up .45s var(--spring) backwards}.tools section:nth-child(2){animation-delay:.04s}.tools section:nth-child(3){animation-delay:.08s}.tools section:nth-child(4){animation-delay:.12s}.board-text-input{animation:content-in .2s var(--ease)}.board-text-input.sticky-input,:is(.room,.viewer) .board-text-input.sticky-input,:is(.room,.viewer) .board-text-input.sticky-input:focus{margin:0;border-radius:3px;white-space:pre-wrap;overflow-wrap:anywhere;field-sizing:fixed;text-align:center;font-weight:400;color:var(--ink);caret-color:var(--ink);box-sizing:border-box;background:transparent;padding:var(--pt) var(--px) 0;box-shadow:0 0 0 2px var(--blue-dark),0 0 0 6px #007aff2e;animation:none}.board-text-input.sticky-input::placeholder{color:#1d1d1f66}.swatch.paper{box-shadow:inset 0 0 0 .5px #00000026,0 1px 3px #00000040}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;animation-delay:0s!important;transition-duration:.01ms!important}}.sheet-backdrop,.sheet-grabber,.rotate-hint{display:none}.pip{position:absolute;z-index:3;right:18px;bottom:10px;width:100px;height:148px;border-radius:14px;overflow:hidden;box-shadow:0 10px 30px #00000080}.pip .tile{width:100%;height:100%;border-radius:14px}.pip .tile-name,.pip .tile-pin,.pip .badge{display:none}.pip .tile-label{left:6px;bottom:6px;padding:4px}.pip .avatar{width:44px;height:44px;font-size:17px}@media (hover: none){.tile-pin{opacity:.9}.msg-actions{opacity:1}}@media (max-width: 1024px) and (min-width: 769px){.room.with-panel{--pw: 320px}.panel{width:308px}.home-main{gap:40px;padding-top:64px}.home-hero h1{font-size:48px}.ctl{min-width:54px}}@media (max-width: 768px){input,textarea,select{font-size:16px}.home-head{padding:env(safe-area-inset-top) 16px 0;height:calc(52px + env(safe-area-inset-top))}.home-main{grid-template-columns:1fr;gap:32px;padding:36px 16px calc(48px + env(safe-area-inset-bottom))}.home-hero h1{font-size:34px;letter-spacing:-.03em}.home-hero p{font-size:17px;margin:16px 0 24px}.home-features li{font-size:15px}.card{padding:22px 20px;border-radius:20px}.card h2{font-size:20px}.card.center{padding:32px 22px}.prejoin{gap:16px;padding:calc(16px + env(safe-area-inset-top)) 16px calc(16px + env(safe-area-inset-bottom));align-content:flex-start}.prejoin-preview{border-radius:20px;aspect-ratio:4 / 3;box-shadow:0 16px 40px #0000002e}.prejoin-form{width:100%}.prejoin-form h2{font-size:24px}.room,.room.with-panel{height:100dvh;overscroll-behavior:none;grid-template-columns:1fr;grid-template-rows:auto 1fr auto;grid-template-areas:"top" "stage" "controls"}.topbar{gap:8px;padding:calc(6px + env(safe-area-inset-top)) 12px 6px;min-height:52px}.topbar .logo{display:none}.room-title{flex:1}.room-title b{font-size:15px}.room-title .muted,.timer-slot{display:none}.timer{flex:none;max-width:none;margin:0;height:32px;padding:0 12px;gap:6px}.timer-label{display:none}.timer b{font-size:15px}.topbar-right{margin-left:0;gap:6px}.topbar-right .btn{width:34px;min-height:34px;height:34px;padding:0;border-radius:50%}.topbar-right .btn span{display:none}.pill.warn{width:34px;height:34px;padding:0;justify-content:center;font-size:0;border-radius:50%}.stage{padding:0 8px;gap:8px}.grid{gap:8px;align-content:start;overflow-y:auto}.grid.n1{grid-template-columns:1fr;height:100%}.grid.n1 .tile{aspect-ratio:auto;height:100%}.grid.n2{grid-template-columns:1fr;grid-template-rows:1fr 1fr;height:100%}.grid.n2 .tile{aspect-ratio:auto;height:100%}.grid.n3,.grid.n4,.grid.n5,.grid.n6,.grid.n7,.grid.n8,.grid.n9{grid-template-columns:repeat(2,1fr)}.grid .tile,.grid.n3 .tile,.grid.n4 .tile,.grid.n5 .tile,.grid.n6 .tile,.grid.n7 .tile,.grid.n8 .tile,.grid.n9 .tile{aspect-ratio:3 / 4;max-height:none}.tile{border-radius:20px}.avatar{width:72px;height:72px;font-size:28px}.tile-label{left:8px;bottom:8px;font-size:12px;padding:4px 9px 4px 7px}.stage.with-strip{flex-direction:column;padding-bottom:0}.stage.with-strip .strip{flex-direction:row;width:auto;height:84px;overflow-x:auto;overflow-y:hidden}.stage.with-strip .strip .tile{width:112px;height:84px}.strip{height:84px;gap:8px}.strip .tile{width:112px;height:84px;border-radius:14px}.strip .avatar{width:38px;height:38px;font-size:15px}.strip .tile-name{display:none}.strip .tile-label{left:6px;bottom:6px;padding:3px 7px 3px 5px}.sheet-backdrop{display:block;position:fixed;top:0;right:0;bottom:0;left:0;z-index:39;background:#00000073;opacity:0;transition:opacity .32s var(--ease)}.sheet-backdrop.is-open{opacity:1}.panel{position:fixed;z-index:40;left:0;right:0;bottom:0;height:82dvh;margin:0;width:auto;border-radius:20px 20px 0 0;padding-bottom:env(safe-area-inset-bottom);box-shadow:0 -10px 40px #00000080;opacity:1;transform:translateY(102%);transition:transform .42s var(--spring)}.panel.is-open{transform:none}.sheet-grabber{display:block;flex:none;width:100%;height:22px;cursor:pointer;position:relative}.sheet-grabber:after{content:"";position:absolute;top:8px;left:50%;width:38px;height:5px;margin-left:-19px;border-radius:3px;background:#ebebf54d}.panel-head{padding:2px 10px 10px 18px}.panel-head b{font-size:20px}.panel-body{padding:4px 14px 14px}.chat-list{padding:4px 14px 12px}.person-actions{padding-left:0;flex-wrap:wrap}.vocab-fields{flex-wrap:wrap}.vocab-form .narrow{width:100%}.controls{gap:0;padding:8px 6px calc(8px + env(safe-area-inset-bottom));justify-content:space-between}.controls-group,.controls-group:last-child{display:contents}.ctl{flex:1;min-width:0;padding:0}.ctl-icon{width:42px;height:42px}.ctl-label{display:none}.ctl-badge{box-shadow:0 0 0 2px #000}.controls .btn.leave{flex:none;width:42px;min-height:42px;height:42px;padding:0;margin-left:4px;border-radius:50%}.controls .btn.leave span{display:none}.board{gap:8px}.board-toolbar{flex-wrap:nowrap;justify-content:flex-start;overflow-x:auto;max-width:100%;border-radius:14px;padding:4px;scrollbar-width:none}.board-toolbar::-webkit-scrollbar{display:none}.tb-group{flex:none;padding:0 4px}.tb-btn{min-width:36px;height:36px}.board-wrap{border-radius:14px}.board-locked{top:8px;left:8px;font-size:12px;max-width:calc(100% - 16px)}.zoom-controls{right:8px;bottom:8px}.zoom-controls button{min-width:36px;height:36px}.strip .tile-pin{display:none}.toasts{top:calc(var(--topbar-h, 56px) + 16px + env(safe-area-inset-top));width:92vw}.toast{border-radius:20px;text-align:center;font-size:14px;padding:11px 16px}.banner{top:8px;font-size:12px}}@media (max-width: 950px) and (max-height: 500px) and (orientation: landscape){.room,.room.with-panel{grid-template-columns:1fr auto;grid-template-rows:1fr;grid-template-areas:"stage controls";height:100dvh}.topbar{position:fixed;z-index:6;top:6px;right:max(4px,env(safe-area-inset-right));width:58px;min-height:0;padding:0;justify-content:center}.topbar>:not(.timer){display:none}.timer{flex:none;max-width:none;margin:0;height:28px;padding:0 8px;gap:0}.timer svg,.timer-label{display:none}.timer b{font-size:13px}.stage{padding:8px 0 8px max(8px,env(safe-area-inset-left))}.strip .tile-pin{display:none}.controls{flex-direction:column;justify-content:center;gap:4px;padding:40px max(8px,env(safe-area-inset-right)) 8px 8px}.controls-group,.controls-group:last-child{display:contents}.ctl{flex:none;min-width:0;padding:0}.ctl-icon{width:38px;height:38px}.ctl-label{display:none}.controls .btn.leave{width:38px;min-height:38px;height:38px;padding:0;border-radius:50%}.controls .btn.leave span{display:none}.grid.n2{grid-template-columns:1fr 1fr}.stage.with-strip{flex-direction:row}.stage.with-strip .strip{flex-direction:column;width:96px;height:auto;overflow-y:auto;overflow-x:hidden}.stage.with-strip .strip .tile{width:96px;height:64px}.panel{position:fixed;z-index:40;top:0;right:0;bottom:0;left:auto;height:auto;width:min(380px,60vw);margin:0;border-radius:20px 0 0 20px;transform:translate(102%)}.panel.is-open{transform:none}.sheet-grabber{display:none}.pip{width:132px;height:84px;right:10px;bottom:10px}}@media (max-width: 768px) and (orientation: portrait){.rotate-hint{display:flex;align-items:center;gap:6px;flex:none;padding:7px 14px;border-radius:980px;font-size:13px;color:var(--d-label-2);background:var(--d-elev)}}@keyframes fade{0%{opacity:0}}.btn.enter{white-space:nowrap}.btn.enter .enter-pulse{position:relative;width:9px;height:9px;border-radius:50%;background:#fff;flex:none}.btn.enter .enter-pulse:after{content:"";position:absolute;top:-4px;right:-4px;bottom:-4px;left:-4px;border-radius:50%;border:2px solid rgba(255,255,255,.85);animation:live-ring 1.6s var(--ease) infinite}@keyframes live-ring{0%{transform:scale(.5);opacity:1}to{transform:scale(1.6);opacity:0}}.inline-confirm{display:inline-flex;align-items:center;gap:6px;flex-wrap:wrap;justify-content:flex-end;animation:content-in .25s var(--spring) both}.inline-confirm .muted{margin-right:4px}.room-pick{display:grid;gap:6px;max-height:300px;overflow:auto;margin:2px -4px;padding:4px}.room-pick-item{display:flex;align-items:center;gap:12px;width:100%;padding:12px 14px;border:0;border-radius:14px;background:var(--fill);color:var(--label);text-align:left;transition:background .2s var(--ease),box-shadow .2s var(--ease),transform .2s var(--bounce)}@media (hover: hover){.room-pick-item:hover:not(:disabled){background:var(--fill-2, rgba(120, 120, 128, .16))}}.room-pick-item:active:not(:disabled){transform:scale(.985)}.room-pick-item.on{background:#007aff1a;box-shadow:inset 0 0 0 2px var(--blue)}.room-pick-item:disabled{opacity:var(--opacity-disabled);cursor:default}.room-pick-check{display:grid;place-items:center;flex:none;width:22px;height:22px;border-radius:50%;box-shadow:inset 0 0 0 1.5px var(--label-3);color:#fff;transition:background .2s var(--ease),box-shadow .2s var(--ease)}.room-pick-item.on .room-pick-check{background:var(--blue);box-shadow:none;animation:badge-pop .3s var(--spring)}.room-pick-item:disabled .room-pick-check{background:var(--label-3);box-shadow:none}.room-pick-text{display:grid;gap:1px;min-width:0}.room-pick-text b{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.home-head,.dash,.auth,.prejoin,.viewer-head{padding-left:max(16px,env(safe-area-inset-left));padding-right:max(16px,env(safe-area-inset-right))}@media (min-width: 769px){.home-head{padding-left:max(22px,calc(50% - 540px),env(safe-area-inset-left));padding-right:max(22px,calc(50% - 540px),env(safe-area-inset-right))}.dash{padding-left:max(22px,env(safe-area-inset-left));padding-right:max(22px,env(safe-area-inset-right))}.prejoin{padding-left:max(40px,env(safe-area-inset-left));padding-right:max(40px,env(safe-area-inset-right))}}.viewer-body{padding-left:max(8px,env(safe-area-inset-left));padding-right:max(8px,env(safe-area-inset-right))}.dash-hello h1,.class-card h3,.section-head h2{overflow-wrap:anywhere}.btn.success{background:linear-gradient(180deg,#3ddc6a,#1fb350);color:#fff;box-shadow:0 4px 14px #1fb3504d}@media (hover: hover){.btn.success:hover:not(:disabled){background:linear-gradient(180deg,#4ae276,#22bf57)}}.field-label{font-size:var(--fs-footnote);font-weight:600;color:var(--ink-2)}.level-badge{display:inline-grid;place-items:center;flex:none;min-width:40px;height:26px;padding:0 9px;border:0;border-radius:10px;font-size:13px;font-weight:700;letter-spacing:.02em;color:#fff;background:linear-gradient(180deg,var(--l1),var(--l2));box-shadow:0 2px 8px color-mix(in srgb,var(--l2) 35%,transparent);transition:transform .25s var(--bounce),box-shadow .2s var(--ease)}button.level-badge{cursor:pointer}@media (hover: hover){button.level-badge:hover{transform:translateY(-1px) scale(1.04)}}button.level-badge:active{transform:scale(.95)}.level-badge.sm{min-width:34px;height:22px;font-size:12px;border-radius:6px;padding:0 7px}.level-badge.lg{min-width:64px;height:44px;font-size:20px;border-radius:14px}.lvl-a1{--l1: #5ee08a;--l2: #28b463}.lvl-a2{--l1: #3fd6c6;--l2: #12a39a}.lvl-b1{--l1: #48a3ff;--l2: #0a6ff0}.lvl-b2{--l1: #7f7cff;--l2: #5146e6}.lvl-c1{--l1: #c27bff;--l2: #9b3ef0}.lvl-c2{--l1: #ff8aa8;--l2: #f0457a}.students .student .level-badge{margin-left:auto}.radar{display:block;margin:0 auto;overflow:visible}.radar-ring{fill:none;stroke:#7878802e;stroke-width:1}.radar-ring.outer{fill:#7878800d;stroke:#7878804d}.radar-axis{stroke:#78788033;stroke-width:1}.radar-label{font-size:15px;font-weight:500;fill:var(--label-2)}.radar-value{font-size:17px;font-weight:700;font-variant-numeric:tabular-nums}.readiness{display:grid;gap:6px}.readiness-top{display:flex;justify-content:space-between;align-items:baseline;font-size:14px;color:var(--label-2)}.readiness-top b{color:var(--label);font-size:17px;font-variant-numeric:tabular-nums}.readiness-bar{height:8px;border-radius:3px;background:var(--fill);overflow:hidden}.readiness-bar span{display:block;height:100%;border-radius:3px;background:linear-gradient(90deg,var(--night-accent),#bf5af2 60%,#ff375f);transition:width .6s var(--spring)}.progress-editor{display:grid;gap:18px}.progress-editor .confirm-who .level-badge{margin-left:auto}.level-pick{display:grid;gap:8px}.level-pick .seg button{font-weight:600}.progress-grid{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:18px;align-items:center}.progress-chart,.skill-list{display:grid;gap:12px}.skill-row{display:grid;grid-template-columns:1fr 64px;grid-template-areas:"name name" "range num";gap:4px 12px;align-items:center}.skill-name{grid-area:name;display:flex;align-items:center;gap:7px;font-size:14px;font-weight:600}.skill-name svg{color:var(--c)}.skill-dot{width:9px;height:9px;border-radius:50%;background:var(--c)}.skill-row input[type=range]{grid-area:range;-moz-appearance:none;appearance:none;-webkit-appearance:none;height:6px;padding:0;border:0;border-radius:3px;box-shadow:none;background:linear-gradient(90deg,var(--c) var(--v),var(--fill-2) var(--v))}.skill-row input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;width:24px;height:24px;border-radius:50%;background:#fff;cursor:pointer;box-shadow:0 .5px 4px #0000001f,0 6px 13px #0000001f,0 0 0 .5px #0000000a;transition:transform .2s var(--bounce)}.skill-row input[type=range]:active::-webkit-slider-thumb{transform:scale(1.12)}.skill-row input[type=range]::-moz-range-thumb{width:24px;height:24px;border:0;border-radius:50%;background:#fff;box-shadow:0 .5px 4px #0000001f,0 6px 13px #0000001f}.skill-num{grid-area:num;min-height:0;padding:6px 8px;text-align:center;font-weight:600;font-variant-numeric:tabular-nums;border-radius:10px}.skill-num::-webkit-inner-spin-button{opacity:.4}.weak-hint{margin:2px 0 0}.levelup-card{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;padding:14px 16px;border-radius:14px;background:linear-gradient(135deg,#34c75924,#30d1580f);box-shadow:inset 0 0 0 1px #34c7594d;animation:content-in .35s var(--spring) both}.levelup-card>div:first-child{display:grid;gap:2px}.level-history{display:grid;gap:8px}.level-history-row{display:flex;align-items:center;gap:8px}.levelup-done{display:grid;justify-items:center;gap:8px;padding:18px 0 6px;text-align:center}.levelup-done b{font-size:24px}.levelup-done .btn{margin-top:10px}.levelup-burst{position:relative;display:grid;place-items:center;width:140px;height:110px}.levelup-burst .level-badge{animation:burst-pop .7s var(--bounce) both}.levelup-burst i{position:absolute;left:50%;top:50%;width:8px;height:8px;margin:-4px;border-radius:3px;background:var(--c);transform:rotate(var(--a)) translateY(0);opacity:0;animation:burst-fly 1s var(--ease) .15s forwards}.levelup-burst i:nth-child(2n){border-radius:50%;width:6px;height:6px}@keyframes burst-pop{0%{transform:scale(.2) rotate(-12deg)}to{transform:scale(1) rotate(0)}}@keyframes burst-fly{0%{opacity:1;transform:rotate(var(--a)) translateY(0) scale(1)}to{opacity:0;transform:rotate(var(--a)) translateY(-62px) scale(.6)}}.my-progress{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,1fr);gap:28px;align-items:center;padding:26px}.my-progress-info{display:grid;gap:18px}.my-level{display:flex;align-items:center;gap:14px}.my-level>div{display:grid}.my-level b{font-size:20px}.skill-bars{display:grid;gap:9px}.skill-bar{display:grid;grid-template-columns:104px 1fr 32px;align-items:center;gap:10px;font-size:14px}.skill-bar b{text-align:right;font-variant-numeric:tabular-nums}.skill-bar .bar{height:6px;border-radius:3px;background:var(--fill);overflow:hidden}.skill-bar .bar i{display:block;height:100%;border-radius:3px;background:var(--c);transition:width .6s var(--spring)}.my-progress-hint{margin:0;line-height:1.45}.congrats{display:flex;align-items:center;gap:18px;margin-bottom:14px;padding:18px 22px;background:linear-gradient(135deg,#0a84ff1a,#bf5af21a,#ff375f14);animation:fade-up .6s var(--spring) both}.congrats .levelup-burst{width:100px;height:80px;flex:none}.congrats-text{display:grid;gap:4px;flex:1}.congrats-text b{font-size:17px}.congrats .btn{flex:none;width:auto;padding:0 26px}@media (max-width: 768px){.progress-grid,.my-progress{grid-template-columns:1fr}.my-progress{padding:18px;gap:18px}.congrats{flex-direction:column;text-align:center}.skill-bar{grid-template-columns:92px 1fr 28px}.level-pick .seg button{padding:7px 2px}}.modal.progress-modal{width:min(660px,100%);max-height:94dvh;overflow:hidden;display:flex;flex-direction:column;padding-bottom:0}.progress-modal .modal-head{flex:none}.progress-modal .progress-editor{flex:1;min-height:0;display:flex;flex-direction:column;gap:0}.pe-scroll{flex:1;min-height:0;overflow-y:auto;display:grid;gap:16px;align-content:start;margin:0 -28px;padding:4px 28px 20px;overscroll-behavior:contain;scrollbar-gutter:stable}.pe-stage{display:grid}.pe-stage>*{grid-area:1 / 1}.progress-grid{transition:opacity .3s var(--ease),transform .4s var(--spring)}.progress-grid.is-hidden{opacity:0;transform:scale(.97);visibility:hidden}.levelup-done{align-self:center;animation:content-in .4s var(--spring) both}.weak-hint{min-height:2.9em;line-height:1.45}.skill-done{display:inline-grid;color:var(--c);opacity:0;transform:scale(.4);transition:opacity .2s var(--ease),transform .3s var(--bounce)}.skill-done.on{opacity:1;transform:none}.skill-name svg{color:inherit}.seg.light.pe-levels:before{background:linear-gradient(180deg,var(--l1),var(--l2));box-shadow:inset 0 1px #ffffff80,0 4px 12px color-mix(in srgb,var(--l2) 35%,transparent)}.seg.light.pe-levels button.active{color:#fff}.pe-status{flex:1;min-width:0;font-size:14px;line-height:1.35;color:var(--label-2);animation:fade .3s var(--ease)}.pe-status.good{color:#1f9d4c;font-weight:600}.pe-status.ask{flex:0 1 auto;padding:8px 12px;border-radius:10px;background:#ff9f0a24;color:var(--label);font-weight:600}.pe-actions{display:flex;gap:8px;flex:none}.pe-actions .btn{width:auto}@media (max-width: 768px){.modal.progress-modal{max-height:94dvh}.pe-scroll{margin:0 -20px;padding:4px 20px 18px}.pe-status{flex:1 1 100%;min-height:2.7em;display:flex;align-items:center}.pe-status.ask,.pe-actions{flex:1 1 100%}.pe-actions .btn{flex:1}}.level-badge.unknown{background:var(--glass-inner);color:var(--ink-2);border:1px dashed rgba(60,60,67,.32);box-shadow:none}.my-progress.not-assessed .my-level b{font-size:20px}.my-progress-chart.ghost{position:relative;display:grid;place-items:center}.my-progress-chart.ghost .radar{opacity:.4;filter:grayscale(1) blur(.5px)}.ghost-q{position:absolute;display:grid;place-items:center;width:64px;height:64px;border-radius:50%;font-size:30px;font-weight:700;color:var(--label-2);background:#ffffffd9;box-shadow:0 6px 20px #00000014;animation:ghost-breathe 3s var(--ease) infinite}@keyframes ghost-breathe{50%{transform:scale(1.06)}}.skill-chips{display:flex;flex-wrap:wrap;gap:6px}.skill-chip{display:inline-flex;align-items:center;gap:6px;padding:5px 10px;border-radius:980px;background:var(--fill);font-size:13px;font-weight:500}.pe-tabs{width:min(280px,100%)}.pe-chart{display:grid;gap:10px;align-content:start;animation:content-in .3s var(--ease) both}.my-progress-chart-card{margin-top:14px;padding:22px 26px}.pchart{display:grid;gap:14px}.pchart-head{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap}.pchart-title{display:grid;gap:2px}.pchart-title b{font-size:17px}.pchart-head .seg{width:180px}.pchart-plot{position:relative;width:100%}.pchart-plot svg{display:block;touch-action:pan-y}.pchart-band{opacity:.07;fill:var(--l2)}.pchart-grid{stroke:#78788040;stroke-width:1}.pchart-grid.soft{stroke:#7878801f;stroke-dasharray:2 4}.pchart-axis{stroke:#78788059;stroke-width:1}.pchart-level{font-size:12px;font-weight:700;fill:var(--label-2)}.pchart-tick{font-size:12px;fill:var(--label-3)}.pchart-tail{stroke:#bf5af2;stroke-width:2;stroke-dasharray:3 5;stroke-linecap:round;opacity:.55}.pchart-dot{fill:#fff;stroke:#6c63ff;stroke-width:2;transition:r .15s var(--ease)}.pchart-dot.active{fill:#6c63ff;stroke:#fff;stroke-width:2.5;filter:drop-shadow(0 2px 4px rgba(108,99,255,.4))}.pchart-cross{stroke:#78788073;stroke-width:1;stroke-dasharray:3 3}.pchart-empty{position:absolute;top:14px;right:14px;bottom:28px;left:44px;display:grid;place-items:center;padding:12px;text-align:center;font-size:14px;color:var(--label-2);background:#ffffffb3;border-radius:14px}.pchart-tip{position:absolute;z-index:3;width:196px;padding:10px 12px;display:grid;gap:4px;pointer-events:none;transform:translate(14px,-50%);border-radius:14px;background:#fffffff5;box-shadow:0 0 0 .5px #00000014,0 10px 30px #00000024;font-size:13px;animation:fade .15s var(--ease)}.pchart-tip.left{transform:translate(calc(-100% - 14px),-50%)}.pchart-tip-head{display:flex;align-items:center;justify-content:space-between;gap:8px;color:var(--label-2)}.pchart-tip>b{font-size:14px}.pchart-tip-row{display:grid;grid-template-columns:8px 1fr auto;align-items:center;gap:7px}.pchart-tip-row i{width:8px;height:8px;border-radius:50%}.pchart-tip-row b{font-variant-numeric:tabular-nums}@media (max-width: 768px){.my-progress-chart-card{padding:18px 16px}.pchart-head .seg{width:100%}}.pe-level-name{margin-left:auto;text-align:right;line-height:1.3}.progress-editor .confirm-who .pe-level-name+.level-badge{margin-left:0}.pe-controls{display:flex;gap:10px;align-items:center}.pe-levels{flex:1}.pe-controls .pe-tabs{width:210px;flex:none}.pe-scroll{scrollbar-gutter:auto}.progress-grid{align-items:start}.skill-list{gap:8px}.skill-row{gap:2px 12px}.weak-hint{min-height:2.9em;margin:4px 0 0}.pe-chart .level-history{gap:6px}@media (max-width: 768px){.pe-controls{flex-wrap:wrap}.pe-controls .pe-tabs{width:100%}.pe-level-name{display:none}}.pe-stage{margin-top:10px}.progress-editor .progress-chart{padding-top:12px}.pchart-forecast{display:flex;align-items:center;gap:10px;padding:10px 14px;border-radius:14px;font-size:14px;background:linear-gradient(135deg,#0a84ff17,#bf5af217)}.pchart-forecast b{font-weight:700}.pchart-forecast.ready{background:#34c7591f}.pchart-forecast.slow,.pchart-forecast.few{background:var(--fill);color:var(--label-2)}.pchart-forecast-icon{display:grid;place-items:center;flex:none;width:24px;height:24px;border-radius:50%;font-size:12px;color:#fff;background:linear-gradient(135deg,var(--night-accent),#bf5af2)}.pchart-forecast.slow .pchart-forecast-icon,.pchart-forecast.few .pchart-forecast-icon{background:var(--label-3)}.pchart-forecast.ready .pchart-forecast-icon{background:var(--success)}.pchart-pace{margin-left:auto;white-space:nowrap}.pchart-future{fill:#7878800f}.pchart-today{stroke:#78788080;stroke-width:1}.pchart-today-label{font-size:11px;font-weight:600;fill:var(--label-3)}.pchart-proj line{stroke:#bf5af2;stroke-width:2;stroke-dasharray:5 5;stroke-linecap:round;opacity:.75}.pchart-proj circle{fill:#fff;stroke:#bf5af2;stroke-width:2;stroke-dasharray:3 3}.pchart-proj text{font-size:12px;font-weight:700;fill:#9b3ef0}@media (max-width: 768px){.pchart-forecast{flex-wrap:wrap}.pchart-pace{margin-left:34px}}.progress-row{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:14px;margin-top:14px;align-items:stretch}.progress-row .my-progress-chart-card{margin-top:0}.progress-modal .pe-controls .pe-tabs{width:280px}.acal{display:grid;gap:12px;align-content:start}.acal-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;flex-wrap:wrap;min-height:42px}.acal-streak{padding:6px 11px;border-radius:980px;font-size:13px;font-weight:600;white-space:nowrap;background:#ff95001f;color:#c25e00}.acal-body{position:relative;display:grid;gap:6px;padding-top:4px}.acal-months{display:grid;font-size:11px;color:var(--label-3);height:14px}.acal-months span{white-space:nowrap}.acal-grid-wrap{display:flex}.acal-days{display:grid;font-size:11px;color:var(--label-3);align-items:center}.acal-grid{display:grid}.acal-cell{display:block;border-radius:3px;background:#7878801f;box-shadow:inset 0 0 0 .5px #0000000a;transition:transform .15s var(--ease)}@media (hover: hover){.acal-grid .acal-cell:not(.future):hover{transform:scale(1.25);box-shadow:0 0 0 1.5px #00000059}}.acal-cell.s1{background:#b7ebc4}.acal-cell.s2{background:#6fd88b}.acal-cell.s3{background:var(--success)}.acal-cell.s4{background:#1f8f3d}.acal-cell.future{background:transparent;box-shadow:none}.acal-legend{display:flex;align-items:center;justify-content:flex-end;gap:4px}.acal-legend .acal-cell{width:11px;height:11px}.acal-legend .muted:first-child{margin-right:4px}.acal-legend .muted:last-child{margin-left:4px}.acal-tip{position:absolute;z-index:3;display:grid;gap:1px;padding:7px 10px;border-radius:10px;pointer-events:none;white-space:nowrap;transform:translate(-50%,calc(-100% - 8px));background:#1d1d1feb;color:#fff;font-size:12px;box-shadow:0 8px 24px #0003;animation:fade .12s var(--ease)}.acal-tip span{color:#ffffffb3}.acal-tip.left{transform:translate(-12px,calc(-100% - 8px))}.acal-tip.right{transform:translate(calc(-100% + 12px),calc(-100% - 8px))}@media (max-width: 900px){.progress-row{grid-template-columns:1fr}}@media (max-width: 768px){.progress-modal .pe-controls .pe-tabs{width:100%}}.acal-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px}.acal-stats>div{display:grid;gap:2px;padding:10px 12px;border-radius:14px;background:var(--fill)}.acal-stats b{font-size:20px;font-variant-numeric:tabular-nums}.acal-stats span{font-size:12px;line-height:1.25;color:var(--label-2)}.progress-row .acal{height:100%;grid-template-rows:auto auto auto 1fr}.progress-row .acal-stats{align-self:end}@media (max-width: 520px){.acal-stats{grid-template-columns:repeat(2,minmax(0,1fr))}}.acal-cell.today{box-shadow:0 0 0 1.5px var(--blue)}.acal-stats b small{font-size:14px;font-weight:600;color:var(--label-2)}.acal-stats b{white-space:nowrap}.pe-levels{transition:opacity .25s var(--ease)}.pe-levels.is-locked{opacity:var(--opacity-disabled)}.pe-levels.is-locked button:disabled{opacity:1;cursor:default}.reminders{display:grid;gap:16px}.reminders-hero{display:flex;gap:14px;align-items:flex-start;line-height:1.45;font-size:14px}.reminders-icon{display:grid;place-items:center;flex:none;width:48px;height:48px;border-radius:14px;color:#fff;background:linear-gradient(180deg,#ff6b5a,var(--danger));box-shadow:0 6px 16px #ff3b3047}.reminders-icon.small{width:36px;height:36px;border-radius:10px;box-shadow:none}.reminders-howto{display:grid;gap:8px;padding:14px 16px;border-radius:14px;background:var(--fill);font-size:14px}.reminders-howto ol{margin:0;padding-left:20px;display:grid;gap:6px;line-height:1.4}.reminders-howto svg{vertical-align:-2px;color:var(--blue)}.reminders-prompt{display:flex;align-items:center;gap:12px;padding:12px 14px 12px 12px;border-radius:20px;background:#fff;box-shadow:0 2px 6px #00000008,0 12px 40px #0000000f;animation:fade-up .6s var(--spring) .1s backwards}.reminders-prompt-text{display:grid;gap:1px;flex:1;min-width:0}.reminders-prompt .btn{flex:none;width:auto}@media (max-width: 768px){.reminders-prompt{flex-wrap:wrap}.reminders-prompt-text{flex-basis:calc(100% - 60px)}.reminders-prompt .btn{flex:1}}.reminders-note{margin-top:-6px}.switch-list{display:grid;border-radius:var(--radius-md);background:var(--glass-inner);box-shadow:var(--shadow-inner);overflow:hidden}.switch-row,.card label.switch-row{display:flex;align-items:center;justify-content:space-between;gap:14px;min-height:50px;padding:10px 14px;font-size:var(--fs-callout);color:var(--ink);cursor:pointer;transition:opacity .25s var(--ease)}.switch-row+.switch-row{box-shadow:inset 0 .5px 0 var(--separator)}.switch-row>span{display:grid;gap:2px;min-width:0}.switch-row b{font-weight:600}.switch-row .muted{font-size:var(--fs-footnote)}.switch-list .switch-row.stacked{display:grid;justify-content:stretch;gap:8px;cursor:default}.switch-row.is-off{opacity:var(--opacity-disabled)}.switch-row.is-off .seg button:disabled{opacity:1}input.switch{-moz-appearance:none;appearance:none;-webkit-appearance:none;flex:none;position:relative;width:50px;height:30px;min-height:0;margin:0;padding:0;border:0;border-radius:var(--radius-pill);background:#7878803d;cursor:pointer;transition:background .25s var(--ease)}input.switch:after{content:"";position:absolute;top:2px;left:2px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 3px 8px #00000026,0 1px 1px #00000029;transition:transform .3s var(--spring)}input.switch:checked{background:var(--success)}input.switch:checked:after{transform:translate(20px)}input.switch:focus{background:#7878803d;border:0;box-shadow:none}input.switch:checked:focus{background:var(--success)}input.switch:focus-visible{outline:3px solid rgba(0,125,250,.6);outline-offset:2px}input.switch:disabled{opacity:1;cursor:default}.dash{grid-template-columns:minmax(0,1fr)}.dash>*,.dash-hello>*,.progress-row>*,.acal,.acal-body{min-width:0}.dash-hello{grid-template-columns:minmax(0,1fr)}.up-next{max-width:min(520px,100%)}@media (max-width: 900px){.progress-row{grid-template-columns:minmax(0,1fr)}}.pe-review{display:grid;gap:6px;align-content:start;animation:content-in .3s var(--spring) both}.pe-review-title{font-size:17px;margin-bottom:2px}.pe-review-row{display:grid;grid-template-columns:minmax(0,1fr) auto 64px;align-items:center;gap:12px;padding:7px 14px;border-radius:14px;background:var(--fill)}.pe-review-row.level{grid-template-columns:minmax(0,1fr) auto}.pe-review-row.level .pe-review-note{grid-column:1 / -1;margin-top:-4px}.pe-review-name .small{font-weight:400}.pe-review-name{display:flex;align-items:center;gap:8px;font-weight:600;font-size:14px}.pe-review-change{display:flex;align-items:center;gap:8px;font-variant-numeric:tabular-nums}.pe-review-change b{font-size:17px}.pe-delta{justify-self:end;padding:3px 9px;border-radius:980px;font-size:13px;font-weight:700;font-variant-numeric:tabular-nums}.pe-delta.up{background:#34c75924;color:#1f8f3d}.pe-delta.down{background:#ff3b301f;color:#d70015}.pe-review-total{display:flex;justify-content:space-between;align-items:baseline;padding:6px 2px 0;color:var(--label-2);font-size:14px}.pe-review-total b{color:var(--label);font-variant-numeric:tabular-nums}.pe-review-today{margin:4px 0 0;padding:10px 12px;border-radius:14px;background:#ff9f0a1f;color:#9a5b00;line-height:1.4}.rich-input{display:block;cursor:text;-webkit-user-modify:read-write;user-select:text;-webkit-user-select:text}.rich-input:not(.sticky-input){min-height:1.2em}.rich-input:empty:before{content:attr(data-placeholder);color:#1d1d1f66;font-weight:400;font-style:normal;pointer-events:none}.rich-input .f-b{font-weight:800}.rich-input .f-i{font-style:italic}.rich-input .f-u{text-decoration:underline;text-decoration-thickness:.07em;text-underline-offset:.12em}.rich-input .f-s{text-decoration:line-through;text-decoration-thickness:.07em}.rich-input .f-u.f-s{text-decoration-line:underline line-through}.ctl-warn{position:absolute;top:-2px;right:-2px;width:12px;height:12px;border-radius:50%;background:var(--warning);box-shadow:0 0 0 2px #1c1c24e6}.ctl-warn.bad{background:var(--night-danger);animation:warn-pulse 1.6s var(--ease) infinite}@keyframes warn-pulse{50%{box-shadow:0 0 0 2px #1c1c24e6,0 0 0 6px #ff453a40}}.share-quality{display:flex;align-items:flex-start;gap:10px;padding:10px 12px;border-radius:var(--radius-md);background:var(--night-glass-inner);box-shadow:var(--night-shadow-rim);font-size:13px}.share-quality>span:last-child{display:grid;gap:2px}.share-quality-dot{flex:none;width:10px;height:10px;margin-top:4px;border-radius:50%;background:var(--night-success)}.share-quality.weak .share-quality-dot{background:var(--warning)}.share-quality.bad .share-quality-dot{background:var(--night-danger)}.share-quality.bad{background:var(--night-danger-tint)}@media (prefers-reduced-motion: reduce){.ctl-warn.bad{animation:none}}.dots-menu.floating{position:fixed;right:auto;z-index:1000;transform-origin:top right}.dots-menu.floating.up{transform:translateY(6px) scale(.96);transform-origin:bottom right}.dots-menu.floating.up.is-open{transform:none}.modal .modal-foot{display:flex;align-items:center;justify-content:flex-end;flex-wrap:wrap;gap:12px;margin:8px 0 -8px;padding:16px 0 0;border-top:.5px solid var(--separator)}.modal .modal-foot .btn{width:auto;min-width:120px;min-height:var(--control-lg);padding:0 22px;font-size:var(--fs-body)}.modal .modal-foot .foot-start{margin-right:auto}.modal .pe-footer.modal-foot{flex:none;min-height:0;margin:0;padding:16px 0 calc(20px + env(safe-area-inset-bottom));flex-wrap:nowrap;justify-content:flex-end}.modal .pe-footer .pe-actions{gap:12px}@media (max-width: 768px){.modal .pe-footer.modal-foot{padding-bottom:calc(16px + env(safe-area-inset-bottom));flex-wrap:wrap}}@media (max-width: 520px){.modal .modal-foot .btn{flex:1;min-width:0}.modal .modal-foot .btn.foot-start{flex:1 1 100%;order:3;margin-right:0}.modal .modal-foot .pe-status.foot-start{flex:1 1 100%;order:-1;margin-right:0}}.modal .pe-footer .pe-status{min-height:54px;display:flex;align-items:center}.modal .pe-footer .pe-status.ask{min-height:0;align-self:center}.modal .pe-footer.modal-foot{min-height:90px}.modal .btn{min-height:var(--control-md);padding:0 16px;font-size:var(--fs-callout)}.modal input:not([type=checkbox]):not([type=radio]):not([type=range]),.modal select{min-height:var(--control-md);padding:7px 12px;border-radius:var(--radius-sm);font-size:var(--fs-callout)}.modal .day-chips{grid-template-columns:repeat(7,minmax(0,40px));justify-content:space-between}.modal .day-chip{max-width:40px;font-size:var(--fs-footnote)}.modal .time-btn{height:var(--control-md);min-width:128px;padding:0 12px 0 14px;border-radius:var(--radius-sm)}.modal .time-btn b{font-size:var(--fs-title-3)}.modal .time-btn svg{width:16px;height:16px}.modal .duration .seg button{min-height:30px;font-size:var(--fs-footnote)}.modal .day-presets button{min-height:28px}.refresh-btn svg{transition:transform .2s var(--ease)}.refresh-btn.is-loading{cursor:progress}.refresh-btn.is-loading svg{animation:refresh-spin .6s linear infinite}@keyframes refresh-spin{to{transform:rotate(360deg)}}@media (prefers-reduced-motion: reduce){.refresh-btn.is-loading svg{animation-duration:1.6s}}:is(.room,.viewer) .account-menu{color:var(--ink)}:is(.room,.viewer) .account-menu .muted{color:var(--ink-2)}:is(.room,.viewer) .account-menu .pill{color:var(--accent-ink);background:var(--accent-tint);box-shadow:none}:is(.room,.viewer) .account-menu button{color:var(--ink)}:is(.room,.viewer) .account-menu button.danger{color:var(--danger-ink)}:root{--wallpaper: radial-gradient(900px 620px at 8% 2%, rgba(255, 138, 178, .55), transparent 62%), radial-gradient(800px 600px at 96% 8%, rgba(120, 150, 255, .55), transparent 60%), radial-gradient(900px 700px at 60% 58%, rgba(190, 120, 255, .36), transparent 62%), radial-gradient(700px 600px at 6% 92%, rgba(90, 210, 220, .42), transparent 60%), radial-gradient(800px 600px at 96% 96%, rgba(255, 190, 120, .42), transparent 60%), #eef0f8;--wallpaper-dark: radial-gradient(700px 500px at 12% 18%, rgba(255, 90, 150, .3), transparent 60%), radial-gradient(800px 600px at 88% 12%, rgba(90, 120, 255, .36), transparent 60%), radial-gradient(800px 600px at 50% 100%, rgba(150, 80, 255, .28), transparent 60%), #0b0b14}html{background:#eef0f8}body{background:transparent}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;z-index:-1;pointer-events:none;background:var(--wallpaper)}.home,.auth,.prejoin{background:transparent}.home{display:flow-root}.card,.reminders-prompt,.account-menu,.dots-menu,.modal{background:var(--lg-fill);backdrop-filter:var(--lg-blur);-webkit-backdrop-filter:var(--lg-blur);box-shadow:var(--lg-shadow);border:0}.card{border-radius:30px}@media (hover: hover){.home-cards .card:hover,.class-card:hover{box-shadow:var(--lg-rim),0 20px 50px #3c287829}}.modal{background:var(--glass-2);border-radius:var(--radius-2xl)}.modal-backdrop{background:#1e143c3d}.account-menu,.dots-menu{background:#fffffff7;border-radius:var(--radius-lg)}.home-head{top:12px;width:min(1080px,calc(100% - 32px));height:58px;margin:12px auto 0;padding:0 10px 0 18px;border:0;border-radius:980px;background:var(--lg-fill);backdrop-filter:var(--lg-blur);-webkit-backdrop-filter:var(--lg-blur);box-shadow:var(--lg-shadow)}.account-btn{background:#ffffff80;box-shadow:var(--lg-inner-rim)}.next-lesson,.acal-stats>div,.pchart-forecast,.confirm-who,.room-pick-item,.pe-review-row,.reminders-howto,.skill-chip,.class-requests{background:var(--lg-inner);box-shadow:var(--lg-inner-rim)}@media (hover: hover){button.next-lesson:hover,.room-pick-item:hover:not(:disabled){background:#ffffff94}}.readiness-bar,.skill-bar .bar{background:#ffffff80;box-shadow:var(--lg-inner-rim)}.seg.light{background:#ffffff57;box-shadow:0 0 0 .5px #fff9 inset;border-radius:980px;padding:3px}.seg.light:before{top:3px;bottom:3px;left:3px;width:calc((100% - 6px) / var(--n));border-radius:980px;background:#ffffffe0;box-shadow:0 1px #fff inset,0 4px 14px #3c287829}.seg.light button{border-radius:980px}.up-next{background:linear-gradient(135deg,#0a84ffcc,#8c5affbd);backdrop-filter:var(--lg-blur-light);-webkit-backdrop-filter:var(--lg-blur-light);box-shadow:0 1px #ffffff80 inset,0 -2px 8px #00288c2e inset,0 12px 36px #3c50ff42}.up-next.soon{background:linear-gradient(135deg,#ff9f0ad6,#ff6b3dcc)}.up-next.live{background:linear-gradient(135deg,#30d158d6,#0fb5a8cc)}.up-next-btn{background:#ffffffe6}.level-badge:not(.unknown){box-shadow:0 1px #ffffff8c inset,0 4px 12px color-mix(in srgb,var(--l2) 38%,transparent)}.dash-hello h1{text-shadow:0 1px 0 rgba(255,255,255,.6)}.prejoin-preview{border-radius:30px;box-shadow:0 0 0 1px #ffffff80,0 30px 80px #3c287840}.round{box-shadow:0 1px #ffffff4d inset,0 0 0 .5px #fff3 inset}.toast{background:#1e1e28d1;backdrop-filter:var(--lg-blur);-webkit-backdrop-filter:var(--lg-blur);box-shadow:var(--lg-dark-shadow)}.room,.viewer{background:var(--wallpaper-dark);--label-2: rgba(235, 235, 245, .62);--label-3: rgba(235, 235, 245, .34)}.topbar,.viewer-head{margin:10px 14px 0;border-radius:980px;background:var(--lg-dark-fill);backdrop-filter:var(--lg-blur-light);-webkit-backdrop-filter:var(--lg-blur-light);box-shadow:var(--lg-dark-shadow);border:0}.controls-group{background:var(--lg-dark-fill);backdrop-filter:var(--lg-blur-light);-webkit-backdrop-filter:var(--lg-blur-light);box-shadow:var(--lg-dark-shadow);border-radius:980px}.ctl .ctl-icon{box-shadow:0 1px #ffffff38 inset,0 0 0 .5px #ffffff1a inset}.panel{background:var(--lg-dark-fill);backdrop-filter:var(--lg-blur-light);-webkit-backdrop-filter:var(--lg-blur-light);box-shadow:var(--lg-dark-shadow);border:0;border-radius:30px}.tile{border-radius:30px;box-shadow:0 0 0 1px #ffffff1f inset,0 1px #fff3 inset,0 18px 50px #0000006b}.tile-label,.tile-name{background:#1e1e2866;backdrop-filter:var(--blur-control);-webkit-backdrop-filter:var(--blur-control);box-shadow:0 1px #ffffff38 inset,0 0 0 .5px #ffffff29 inset;border-radius:980px}.board-wrap,.viewer-board{border-radius:30px;box-shadow:0 0 0 1px #ffffff24,0 18px 50px #0000006b}.msg:not(.mine),.vocab-card{background:var(--lg-dark-inner);box-shadow:var(--lg-dark-rim)}.room .seg,.viewer .seg{border-radius:980px}.room .seg:before,.viewer .seg:before{border-radius:980px}.zoom-controls{border-radius:980px;box-shadow:var(--lg-rim),0 8px 24px #0000002e}@media (max-width: 768px){.home-head{width:calc(100% - 24px);top:max(8px,env(safe-area-inset-top));margin-top:max(8px,env(safe-area-inset-top));height:56px;padding:0 8px 0 14px}.card{border-radius:30px}.topbar{margin:max(6px,env(safe-area-inset-top)) 8px 0}}@media (prefers-reduced-transparency: reduce){.card,.modal,.home-head,.account-menu,.dots-menu,.reminders-prompt{background:#fffffff0}.topbar,.controls-group,.panel,.viewer-head{background:#1c1c22f5}}.prejoin-me{background:var(--lg-inner);box-shadow:var(--lg-inner-rim)}.board-toolbar{background:var(--lg-dark-fill);backdrop-filter:var(--lg-blur-light);-webkit-backdrop-filter:var(--lg-blur-light);box-shadow:var(--lg-dark-rim);border-radius:980px}.viewer-head{position:relative;z-index:20}.home-head .account,.viewer-head .account{position:static}.home-head .account-menu,.viewer-head .account-menu{top:calc(100% + 10px);right:8px}.viewer-head{padding:8px;margin-top:max(10px,env(safe-area-inset-top))}.viewer-head .back{margin-left:0}.home-head{padding-right:11px}.viewer-body{padding-top:12px}.topbar{padding-right:9px;padding-left:14px}@media (max-width: 768px){.home-head{padding-right:10px}}.viewer-head,.topbar{box-shadow:var(--lg-dark-rim),0 4px 14px #00000038}@media (min-width: 769px){.room{grid-template-rows:auto minmax(0,1fr) 96px}.topbar{margin:10px 12px;min-height:56px}}.tile-label .tile-name{background:none;box-shadow:none;backdrop-filter:none;-webkit-backdrop-filter:none;border-radius:0;padding:0}.stage{padding-top:0}.grid{align-content:start}.grid.n1{grid-template-rows:minmax(0,1fr);align-content:stretch}.grid.n1 .tile{aspect-ratio:auto;height:100%;max-height:none}.tools section,.person,.panel .seg{background:var(--lg-dark-inner);box-shadow:var(--lg-dark-rim)}.tools section{border-radius:20px}.person{border-bottom-color:#ffffff0f}.people-bar+.person{border-top-left-radius:18px;border-top-right-radius:18px}.person:last-child{border-bottom-left-radius:18px;border-bottom-right-radius:18px}.person.with-hand{background:#ffd60a24}.room .seg,.viewer .seg{padding:3px;background:#ffffff14;box-shadow:var(--lg-dark-rim)}.room .seg:before,.viewer .seg:before{top:3px;bottom:3px;left:3px;width:calc((100% - 6px) / var(--n));background:#ffffff38;box-shadow:0 1px #ffffff4d inset,0 4px 12px #00000040}.room .seg button,.viewer .seg button{border-radius:980px}.room .toggle input,.viewer .toggle input{background:#ffffff29;box-shadow:var(--lg-dark-rim);border-radius:980px}.room .toggle input:checked,.viewer .toggle input:checked{background:var(--green)}.room .pill,.viewer .pill{background:#0a84ff33;box-shadow:0 0 0 .5px #64aaff4d inset}.people{gap:8px}.people .person,.people-bar+.person,.person:last-child{border-radius:20px;border-bottom:0}.tile{--tint: #5e5ce6;background:radial-gradient(ellipse 55% 60% at 50% 50%,color-mix(in srgb,var(--tint) 22%,transparent) 0%,transparent 70%),radial-gradient(ellipse 120% 80% at 50% -10%,rgba(255,255,255,.08) 0%,transparent 60%),#1e1e2a8c;backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass)}.tile .avatar{box-shadow:0 0 0 1px #ffffff2e inset,0 10px 40px color-mix(in srgb,var(--tint) 45%,transparent)}@media (prefers-reduced-transparency: reduce){.tile{background:#24242c;backdrop-filter:none;-webkit-backdrop-filter:none}}.tile{background:radial-gradient(ellipse 60% 70% at 50% 50%,color-mix(in srgb,var(--tint) 38%,transparent) 0%,transparent 72%),radial-gradient(ellipse 120% 70% at 50% -10%,rgba(255,255,255,.14) 0%,transparent 60%),linear-gradient(160deg,#404052c7,#262634d1);box-shadow:0 0 0 1px #fff3 inset,0 1px #ffffff52 inset,0 20px 56px #0000008c}.tile.speaking{box-shadow:inset 0 0 0 3px var(--green-dark),0 0 24px #30d1584d,0 20px 56px #0000008c}.tile .avatar{box-shadow:0 0 0 1px #ffffff38 inset,0 12px 48px color-mix(in srgb,var(--tint) 65%,transparent)}.tt section{gap:12px;padding:14px}.tt-head{display:flex;gap:12px;align-items:flex-start}.tt-head h3{margin:0;font-size:15px;font-weight:600;text-transform:none;letter-spacing:0;color:#fff;line-height:30px}.tt-head p{margin:-4px 0 0;font-size:13px;line-height:1.4;color:#ebebf58c}.tt-ico{flex:none;width:30px;height:30px;border-radius:10px;display:grid;place-items:center;color:#fff;box-shadow:0 1px #ffffff59 inset,0 4px 12px #0000004d}.tt-ico.blue{background:linear-gradient(180deg,#4aa3ff,#0a6cf0)}.tt-ico.orange{background:linear-gradient(180deg,#ffb340,#f08a00)}.tt-ico.green{background:linear-gradient(180deg,#4fe07a,#1fb14a)}.tt-ico.purple{background:linear-gradient(180deg,#c97cff,#9a3fe0)}.tt-choice{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tt-choice button{display:grid;justify-items:start;gap:3px;padding:12px;border-radius:14px;text-align:left;color:#ebebf5bf;background:#ffffff0f;box-shadow:0 0 0 1px #ffffff14 inset;transition:background .2s var(--ease),box-shadow .2s var(--ease),transform .15s var(--ease)}.tt-choice button svg{margin-bottom:4px;opacity:.8}.tt-choice button b{font-size:14px;font-weight:600;color:#fff}.tt-choice button span{font-size:12px;color:#ebebf580}@media (hover: hover){.tt-choice button:hover{background:#ffffff1a}}.tt-choice button:active{transform:scale(.97)}.tt-choice button.on{background:linear-gradient(180deg,#0a84ff5c,#0a84ff33);box-shadow:0 0 0 1.5px #409cffd9 inset,0 1px #ffffff40 inset,0 6px 20px #0a84ff40}.tt-choice button.on svg{color:#6cb6ff;opacity:1}.tt-choice button.on span{color:#dcebffbf}.tt-row{display:flex;align-items:center;justify-content:center;gap:8px;width:100%;min-height:44px;padding:10px 14px;border-radius:14px;font-size:14px;font-weight:600;color:#fff;background:#ffffff1a;box-shadow:0 0 0 1px #ffffff1a inset,0 1px #ffffff29 inset;transition:background .2s var(--ease),transform .15s var(--ease)}@media (hover: hover){.tt-row:hover{background:#ffffff26}}.tt-row:active{transform:scale(.98)}.tt-row.danger{color:var(--night-danger-ink);background:#ff453a24;box-shadow:0 0 0 1px #ff453a47 inset}@media (hover: hover){.tt-row.danger:hover{background:#ff453a38}}.tt-row.accent{background:linear-gradient(180deg,#a35bff,#7d2fe0);box-shadow:0 1px #ffffff4d inset,0 6px 18px #9646f059}@media (hover: hover){.tt-row.accent:hover{filter:brightness(1.08)}}.tt-row.active{color:#e2c2ff;background:#af52de33;box-shadow:0 0 0 1.5px #bf5af2b3 inset}.room .tt-input,.viewer .tt-input{width:100%;height:44px}.tt-presets{display:grid;grid-template-columns:repeat(4,1fr);gap:8px}.tt-presets button{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:0;height:58px;border-radius:14px;color:#fff;background:#ff9f0a1f;box-shadow:0 0 0 1px #ff9f0a4d inset;transition:background .2s var(--ease),transform .15s var(--ease)}.tt-presets button b{font-size:20px;font-weight:700;line-height:1.1;color:#ffb340}.tt-presets button span{font-size:11px;color:#ffd296b3}@media (hover: hover){.tt-presets button:hover{background:#ff9f0a38}}.tt-presets button:active{transform:scale(.95)}.tt-custom{display:grid;grid-template-columns:1fr auto;gap:8px}.tt-num{display:flex;align-items:center;height:44px;padding:0 14px;border-radius:14px;background:var(--night-field);border:1px solid var(--night-field-stroke);transition:border-color .2s var(--ease),box-shadow .2s var(--ease)}.tt-num:focus-within{border-color:var(--night-accent);box-shadow:0 0 0 3px var(--night-accent-tint)}.tt-num input,.tt-num input:focus{flex:1;min-width:0;min-height:0;height:100%;padding:0;border:0;background:none;box-shadow:none;color:#fff;font-size:15px}.tt-num span{color:#ebebf580;font-size:14px}.tt-start{height:44px;padding:0 20px;border-radius:14px;font-weight:600;font-size:14px;color:#fff;background:linear-gradient(180deg,#ffb340,#f08a00);box-shadow:0 1px #ffffff59 inset,0 6px 18px #ff95004d;transition:filter .2s var(--ease),opacity .2s var(--ease),transform .15s var(--ease)}@media (hover: hover){.tt-start:hover:not(:disabled){filter:brightness(1.08)}}.tt-start:active:not(:disabled){transform:scale(.97)}.tt-start:disabled{opacity:var(--opacity-disabled);box-shadow:none;cursor:default}.tt-list{border-radius:14px;background:#ffffff0f;box-shadow:0 0 0 1px #ffffff14 inset;overflow:hidden}.tt-switch{display:flex;align-items:center;justify-content:space-between;gap:12px;min-height:50px;padding:0 12px 0 14px;font-size:14px;color:#fff;cursor:pointer}.tt-switch+.tt-switch{box-shadow:0 -1px #ffffff14}.tt-switch input{-webkit-appearance:none;-moz-appearance:none;appearance:none;flex:none;position:relative;width:50px;height:30px;margin:0;border-radius:980px;cursor:pointer;background:#7878805c;transition:background .25s var(--ease)}.tt-switch input:after{content:"";position:absolute;top:2px;left:2px;width:26px;height:26px;border-radius:50%;background:#fff;box-shadow:0 2px 6px #0000004d;transition:transform .25s var(--spring)}.tt-switch input:checked{background:var(--night-success)}.tt-switch input:checked:after{transform:translate(20px)}.tt button{border:0;font-family:inherit;cursor:pointer}.tt-row{white-space:nowrap}.board-toolbar{gap:2px;padding:4px;border-radius:980px}.topbar-tools .board-toolbar{padding:4px;gap:2px;border-radius:980px;background:#ffffff0f;box-shadow:0 0 0 1px #ffffff14 inset;backdrop-filter:none;-webkit-backdrop-filter:none}.tb-group{gap:2px;padding:0 4px;border-right:0;position:relative}.tb-group+.tb-group:before{content:"";position:absolute;left:-1px;top:8px;bottom:8px;width:1px;background:#ffffff1f}.tb-btn,.topbar-tools .tb-btn{min-width:36px;height:36px;padding:0 9px;border-radius:980px;color:#ebebf5d1}@media (hover: hover){.tb-btn:hover:not(:disabled){background:#ffffff1a;color:#fff}}.tb-btn:disabled{opacity:var(--opacity-disabled)}.tb-btn.active{color:#fff;background:linear-gradient(180deg,#3d9bff,#0a6cf0);box-shadow:0 1px #ffffff59 inset,0 4px 14px #0a84ff66}.tb-btn.open{background:#ffffff29;color:#fff}.tb-btn.with-caret{padding:0 15px 0 9px}.tb-btn .caret{right:6px;bottom:9px}.tb-btn .dot{background:currentColor}.tb-btn.lock.locked{color:var(--highlight);background:#ffd60a29;box-shadow:0 0 0 1px #ffd60a59 inset}.tb-btn.danger.open{color:var(--night-danger-ink);background:#ff453a29}@media (hover: hover){.tb-btn.danger:hover:not(:disabled){color:var(--night-danger-ink);background:#ff453a29}}.swatch,.topbar-tools .swatch{width:22px;height:22px;margin:0 3px;box-shadow:0 0 0 1px #ffffff38 inset,0 2px 6px #0000004d}.swatch.active,.topbar-tools .swatch.active{box-shadow:0 0 0 2px #14141ce6,0 0 0 4px #fff;transform:scale(1.05)}.swatch[style*="var(--ink)"]{box-shadow:0 0 0 1px #fff6 inset,0 2px 6px #0000004d}.swatch.paper{border-radius:6px}.tb-popover{position:fixed;z-index:1000;margin:0;padding:6px;min-width:200px;border-radius:20px;background:#22222ce6;backdrop-filter:var(--blur-glass);-webkit-backdrop-filter:var(--blur-glass);box-shadow:0 0 0 .5px #ffffff2e inset,0 1px #ffffff2e inset,0 20px 50px #00000080;color:#fff}.tb-popover .tb-btn{height:38px;border-radius:14px;justify-content:flex-start;font-size:14px;font-weight:500;color:#fff}.tb-popover .tb-btn.active{background:#0a84ff47;box-shadow:none}.tb-menu-title{padding:6px 10px 4px;font-size:12px;font-weight:600;color:#ebebf580}.tb-menu .tb-btn>svg:last-child{margin-left:auto;color:#6cb6ff}.bg-preview{width:22px;height:22px;border-radius:6px;background-color:#fff;box-shadow:0 0 0 1px #0000001a inset;flex:none}.bg-preview.lines{background-image:repeating-linear-gradient(180deg,transparent 0 5px,#b9cdf0 5px 6px)}.bg-preview.grid{background-image:radial-gradient(#9aa3b5 1px,transparent 1.3px);background-size:5px 5px}.tb-confirm{width:260px;padding:14px}.tb-confirm b{display:block;font-size:15px;margin-bottom:4px}.tb-confirm p{margin:0 0 12px;font-size:13px;line-height:1.4;color:#ebebf599}.tb-confirm-actions{display:grid;grid-template-columns:1fr 1fr;gap:8px}.tb-confirm-actions button{height:38px;border:0;border-radius:14px;font:inherit;font-size:14px;font-weight:600;cursor:pointer;color:#fff}.tb-cancel{background:#ffffff1f}@media (hover: hover){.tb-cancel:hover{background:#ffffff2e}}.tb-danger{background:linear-gradient(180deg,#ff5a4f,#e0261b);box-shadow:0 1px #ffffff4d inset,0 6px 16px #ff3b3059}.tb-btn{transition:background-color .2s var(--ease),color .2s var(--ease),filter .25s var(--ease),box-shadow .25s var(--ease),transform .2s var(--bounce)}@media (hover: hover){.tb-btn.active:hover:not(:disabled){background:linear-gradient(180deg,#3d9bff,#0a6cf0);color:#fff;filter:brightness(1.1);box-shadow:0 1px #fff6 inset,0 6px 18px #0a84ff80}}@media (hover: hover){.tb-popover .tb-btn.active:hover:not(:disabled){background:#0a84ff5c;box-shadow:none;filter:none}}@media (hover: hover){.tb-btn.lock.locked:hover:not(:disabled){color:var(--highlight);background:#ffd60a3d}}.board-toolbar>.tb-group:first-child{padding-left:0}.board-toolbar>.tb-group:last-of-type{padding-right:0}.board-toolbar .tb-btn:not(.with-caret):not(.wide){width:36px;min-width:36px;padding:0}.board-toolbar .tb-btn>svg{display:block}.tb-btn[title^=Выделить]>svg{transform:translate(1px)}.tb-btn[title="Заливка фигуры"]>svg{transform:translateY(2.5px)}html:has(.room,.viewer){background:#0b0b14;overscroll-behavior:none}body:has(.room,.viewer){overscroll-behavior:none}body:has(.room,.viewer):before{background:var(--wallpaper-dark)}.room,.viewer{--lg-dark-fill: rgba(36, 36, 46, .72);--lg-dark-inner: rgba(255, 255, 255, .1)}.room .tile{background:radial-gradient(ellipse 60% 70% at 50% 50%,color-mix(in srgb,var(--tint) 38%,transparent) 0%,transparent 72%),radial-gradient(ellipse 120% 70% at 50% -10%,rgba(255,255,255,.14) 0%,transparent 60%),linear-gradient(160deg,#404052d4,#262634de)}.room .tile-label{background:#1e1e287a}.room .tb-popover,.tb-popover{background:#22222ced}.vocab-add{display:inline-flex;align-items:center;justify-content:center;gap:6px;background:var(--gradient-accent);box-shadow:inset 0 1px #fff6,0 6px 18px #0071e34d}.vocab .tt-list{flex:none}.tb-fmt .tb-btn{font-size:16px;line-height:1;font-family:var(--font-sans)}.tb-fmt .tb-btn b{font-weight:800}.tb-fmt .tb-btn i{font-weight:600;font-family:Georgia,Times New Roman,serif;font-size:17px}.tb-fmt .tb-btn u{font-weight:600;text-underline-offset:3px}.tb-fmt .tb-btn s{font-weight:600;font-size:13px}.tb-collapse{display:grid;grid-template-columns:0fr;opacity:0;transition:grid-template-columns .32s var(--spring),opacity .2s var(--ease),padding .32s var(--spring),margin .32s var(--spring)}.tb-collapse.open{grid-template-columns:1fr;opacity:1;transition:grid-template-columns .36s var(--spring),opacity .24s var(--ease) .08s,padding .36s var(--spring),margin .36s var(--spring)}.tb-collapse-inner{display:flex;align-items:center;gap:2px;min-width:0;overflow:hidden;padding:26px 18px;margin:-26px -18px}.tb-group.tb-collapse:not(.open){padding-left:0;padding-right:0}.tb-group.tb-collapse:not(.open):before{opacity:0}.tb-group.tb-collapse:before{transition:opacity .2s var(--ease)}span.tb-collapse:not(.open){margin-left:-2px}@media (prefers-reduced-motion: reduce){.tb-collapse,.tb-collapse.open{transition:none}}
