:root{--ink: #14110e;--ink-2: #2a2119;--ink-soft: #6b5d4f;--ivory: #f5efe4;--ivory-2: #ebe3d5;--plaster: #e4d9c7;--oak: #7a5a3e;--oak-dark: #4a3524;--slate: #1c2a27;--slate-2: #22332f;--amber: #f2b44c;--amber-deep: #d8902a;--live: #e5484d;--chalk: #f4f1ea;--glass: rgba(22, 18, 14, .72);--glass-line: rgba(245, 239, 228, .12);--serif: "Fraunces", Georgia, "Times New Roman", serif;--sans: "Inter", system-ui, -apple-system, "Segoe UI", sans-serif;--ease: cubic-bezier(.22, 1, .36, 1);--noise: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='180' height='180'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2' stitchTiles='stitch'/><feColorMatrix values='0 0 0 0 0.36  0 0 0 0 0.29  0 0 0 0 0.21  0 0 0 .09 0'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>")}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;font-family:var(--sans);color:var(--ink);background:var(--ink);-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;overscroll-behavior:none}button{font:inherit;color:inherit;cursor:pointer}button:disabled{cursor:default;opacity:.38}svg{display:block}.muted{color:var(--ink-soft)}.small{font-size:13px}.room{position:fixed;inset:0;overflow:hidden;background:#2a2119;--bw: 94vw;--bh: calc(100dvh - 150px) }.room__wall{position:absolute;inset:0;background:var(--noise),linear-gradient(180deg,#cfc2ac,#e2d7c4 18%,#e8decd 48%,#ddd0bb 76%)}.room__light{position:absolute;inset:0;pointer-events:none;background:radial-gradient(60% 46% at 50% 0%,rgba(255,236,200,.75),transparent 70%),radial-gradient(22% 40% at 9% 4%,rgba(255,228,182,.55),transparent 70%),radial-gradient(22% 40% at 91% 4%,rgba(255,228,182,.55),transparent 70%),radial-gradient(120% 90% at 50% 50%,transparent 55%,rgba(60,38,20,.28) 100%)}.room__wainscot{position:absolute;left:0;right:0;bottom:0;height:23%;background:linear-gradient(180deg,rgba(0,0,0,.28),transparent 6px),repeating-linear-gradient(90deg,transparent 0 calc(12.5% - 2px),rgba(40,24,12,.35) calc(12.5% - 2px) 12.5%),linear-gradient(180deg,#8a6747,#6f5037);box-shadow:inset 0 3px #a07d5a,inset 0 -40px 60px -30px #140a0480}.room__wainscot:after{content:"";position:absolute;inset:0;background:var(--noise);opacity:.8;mix-blend-mode:multiply}.room__art{position:absolute;top:12vh;display:none;flex-direction:column;gap:5vh;width:clamp(120px,10.5vw,210px)}.room__art--left{left:3.2vw}.room__art--right{right:3.2vw}.room__art--right .plate:last-child{margin-left:18%;width:82%}.room__art--left .plate:last-child{width:82%}.plate{margin:0;padding:9%;background:#f3ede1;border:6px solid #1f1813;box-shadow:inset 0 0 0 1px #a07d5080,0 22px 30px -16px #321e0c8c,0 4px 8px #321e0c2e}.plate svg{width:100%;height:auto}.room__plant{position:absolute;left:.5vw;bottom:4vh;height:50vh;display:none;filter:blur(1.3px) brightness(.9)}.room__plant svg{height:100%;width:auto}.room__shelf{position:absolute;right:1.5vw;bottom:3vh;width:15vw;display:none;filter:blur(1.4px) brightness(.88)}.room__desk{position:absolute;left:-2vw;right:-2vw;bottom:-2vh;height:9vh;display:none;background:linear-gradient(180deg,#5a4030,#3a281b);border-radius:40% 40% 0 0/30% 30% 0 0;filter:blur(5px);opacity:.85}.room__stage{position:relative;z-index:2;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:max(56px,env(safe-area-inset-top)) 8px 76px}@media (min-width: 1100px){.room--full,.room--display{--bw: 68vw}.room--full .room__art,.room--display .room__art{display:flex}.room--full .room__plant,.room--display .room__plant,.room--full .room__desk{display:block}}@media (min-width: 1360px){.room--full .room__shelf,.room--display .room__shelf{display:block}.room--full .room__plant,.room--display .room__plant{display:none}}@media (min-width: 1700px){.room--display .room__plant,.room--display .room__shelf{display:block}}.room--display{--bh: calc(100dvh - 18vh) }.room--display .room__stage{padding:12vh 2vw 6vh}@media (max-width: 700px){.room{--bw: calc(100vw - 16px) }.room__wainscot{height:14%}}@media (max-height: 520px) and (orientation: landscape){.room{--bh: calc(100dvh - 24px) }.room__stage{padding:12px 76px 12px 12px}.float-actions{flex-direction:column-reverse;right:max(12px,env(safe-area-inset-right))}.fab--hand{width:52px;padding:0;justify-content:center}.fab--hand span{display:none}.menu{bottom:0;right:54px}.rotate-hint{display:none}}.rotate-hint{display:none;align-items:center;gap:8px;margin-top:30px;padding:8px 14px;border:0;border-radius:99px;background:#2a211914;color:var(--ink-soft);font-size:13px}.rotate-hint svg{width:18px;height:18px}@media (max-width: 700px) and (orientation: portrait){.rotate-hint{display:inline-flex}}.room--console .room__wall{filter:brightness(.42) saturate(.85)}.room--console .room__wainscot{filter:brightness(.5)}.room--console .room__light{opacity:.35}.slate{position:relative;width:min(var(--bw),calc(var(--bh) * 16 / 9));aspect-ratio:16 / 9;border-radius:4px;background:radial-gradient(90% 70% at 50% 0%,rgba(255,255,255,.05),transparent 60%),linear-gradient(160deg,var(--slate-2) 0%,var(--slate) 55%,#17231f 100%);box-shadow:0 0 0 clamp(5px,.7vw,12px) var(--oak-dark),0 0 0 calc(clamp(5px,.7vw,12px) + 1px) #0006,0 40px 80px -28px #1e1208b3,0 14px 30px -10px #1e120866;isolation:isolate}.slate:before{content:"";position:absolute;inset:calc(-1*clamp(5px,.7vw,12px));border-radius:6px;border:1px solid rgba(255,220,170,.18);pointer-events:none}.slate__glass{position:absolute;inset:0;pointer-events:none;background:linear-gradient(112deg,#ffffff0b,#fff0 32%),var(--noise);opacity:.9;border-radius:inherit}.slate__ink{position:absolute;inset:0;z-index:1}.slate--writable .slate__ink{cursor:crosshair;touch-action:none}.slate--writable.tool-eraser .slate__ink{cursor:none}.room--full .slate:after,.room--display .slate:after{content:"";position:absolute;left:3%;right:3%;bottom:calc(-1*clamp(5px,.7vw,12px) - 9px);height:9px;border-radius:0 0 3px 3px;background:linear-gradient(180deg,#8a6747,#5e432d);box-shadow:0 8px 14px -6px #1e120899}.pill{display:inline-flex;align-items:center;gap:6px;height:26px;padding:0 10px;border-radius:99px;font-size:12px;font-weight:600;letter-spacing:.04em;background:#f5efe41a;color:var(--ivory);white-space:nowrap}.pill svg{width:15px;height:15px}.pill--live{background:#e5484d24;color:#ff9a9d}.pill--wait{background:#f2b44c29;color:var(--amber)}.live-dot{width:7px;height:7px;border-radius:50%;background:var(--live);box-shadow:0 0 #e5484d99;animation:pulse 2s infinite}@keyframes pulse{70%{box-shadow:0 0 0 7px #e5484d00}to{box-shadow:0 0 #e5484d00}}.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;height:48px;padding:0 20px;border-radius:12px;border:1px solid transparent;font-weight:600;font-size:15px;transition:background .2s,border-color .2s,transform .15s}.btn svg{width:18px;height:18px}.btn:active:not(:disabled){transform:scale(.98)}.btn--primary{background:var(--slate);color:var(--ivory);box-shadow:0 8px 20px -10px #1c2a27cc}.btn--primary:hover:not(:disabled){background:#253834}.btn--ghost{background:transparent;border-color:#2a21192e;color:var(--ink-2)}.btn--ghost:hover:not(:disabled){border-color:#2a211966}.btn--wide{width:100%}.btn--sm{height:32px;padding:0 12px;font-size:13px;border-radius:9px}.console-bar .btn--ghost{color:var(--ivory);border-color:var(--glass-line)}.link{background:none;border:0;padding:0;color:var(--ink-soft);text-decoration:underline;text-underline-offset:3px;font-size:14px}.chip{position:absolute;top:12px;left:50%;translate:-50% 0;z-index:3;display:inline-flex;align-items:center;gap:8px;height:34px;padding:0 14px;border:0;border-radius:99px;background:var(--ivory);color:var(--ink);font-size:13px;font-weight:600;box-shadow:0 8px 24px -8px #00000080}.qr svg{width:100%;height:100%;border-radius:10px}.code{font-family:var(--sans);font-weight:600;letter-spacing:.14em;font-variant-numeric:tabular-nums}.code__gap{display:inline-block;width:.45em}.lobby{position:fixed;inset:0;display:grid;place-items:center;padding:20px;overflow:auto;background:var(--noise),radial-gradient(80% 60% at 50% 0%,#4a3a2b,#241b14 60%,#17120e)}.lobby__glow{position:fixed;inset:-20%;background:radial-gradient(40% 30% at 50% 30%,rgba(242,180,76,.16),transparent 70%);pointer-events:none}.lobby__card{position:relative;width:min(420px,100%);padding:30px 28px 28px;border-radius:22px;background:var(--noise),var(--ivory);box-shadow:0 40px 90px -30px #000000b3,inset 0 0 0 1px #fff9}.lobby__head{margin-bottom:22px}.lobby__lede{margin:10px 0 0;color:var(--ink-soft);font-size:15px;line-height:1.5}.brand{display:flex;align-items:center;gap:10px;font-family:var(--serif);font-size:24px;font-weight:600;letter-spacing:-.01em}.brand em{font-weight:400;color:var(--ink-soft)}.brand--small{font-size:17px;margin-bottom:20px}.brand__mark{width:26px;height:26px;border-radius:7px;flex:none;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64'><path d='M14 44c6-14 10-22 14-22s3 14 8 14 6-12 14-18' fill='none' stroke='%23F2B44C' stroke-width='6' stroke-linecap='round'/></svg>") center / 70% no-repeat,var(--slate)}.tabs{display:grid;grid-template-columns:1fr 1fr;padding:4px;margin-bottom:20px;border-radius:12px;background:var(--ivory-2)}.tabs button{height:38px;border:0;border-radius:9px;background:transparent;font-size:14px;font-weight:600;color:var(--ink-soft);transition:background .2s,color .2s}.tabs button.is-on{background:#fffaf2;color:var(--ink);box-shadow:0 2px 6px #3c28141f}.stack{display:grid;grid-template-columns:minmax(0,1fr);gap:12px}.field{display:grid;grid-template-columns:minmax(0,1fr);gap:6px;min-width:0}.field input,.field select{width:100%;min-width:0}.field span{font-size:12px;font-weight:600;letter-spacing:.06em;text-transform:uppercase;color:var(--ink-soft)}.field input,.field select{height:48px;padding:0 14px;border-radius:12px;border:1px solid rgba(42,33,25,.16);background:#fffaf2;font:inherit;font-size:16px;color:var(--ink);outline:none;transition:border-color .2s,box-shadow .2s}.field input:focus,.field select:focus{border-color:var(--amber-deep);box-shadow:0 0 0 4px #f2b44c38}.input--code{height:64px!important;text-align:center;font-size:30px!important;font-weight:600;letter-spacing:.32em;text-transform:uppercase}.form-error{margin:0;color:#b4382f;font-size:14px}.signin{display:grid;gap:12px}.signin__prompt{margin:0 0 4px;font-size:15px;color:var(--ink-2)}.signin__note{margin:4px 0 0;font-size:12.5px;color:var(--ink-soft);text-align:center}.classcard{display:grid;gap:6px;text-align:center;justify-items:center}.classcard__eyebrow{display:inline-flex;align-items:center;gap:8px;margin:0;font-size:12px;font-weight:600;letter-spacing:.1em;text-transform:uppercase;color:#b4382f}.classcard__subject{margin:6px 0 0;font-family:var(--serif);font-size:38px;font-weight:600;letter-spacing:-.02em}.classcard__topic{margin:0;font-family:var(--serif);font-style:italic;font-size:19px;color:var(--ink-2)}.classcard__meta{margin:6px 0 18px;font-size:14px;color:var(--ink-soft)}.classcard .btn,.classcard .signin{width:100%;margin-bottom:8px}.scan{position:relative;display:grid;gap:14px}.scan__video{width:100%;aspect-ratio:1;object-fit:cover;border-radius:16px;background:var(--slate)}.scan__frame{position:absolute;top:0;left:0;right:0;aspect-ratio:1;margin:18%;border-radius:14px;box-shadow:0 0 0 2px #f2b44ce6,0 0 0 999px #14100c59;pointer-events:none}.scan__hint{margin:0;text-align:center;font-size:14px;color:var(--ink-soft)}.topline{position:absolute;top:max(12px,env(safe-area-inset-top));left:50%;translate:-50% 0;z-index:5;display:flex;align-items:center;gap:12px;max-width:calc(100vw - 24px);padding:6px 6px 6px 16px;border-radius:99px;background:var(--glass);backdrop-filter:blur(14px);color:var(--ivory);font-size:14px;transition:opacity .6s var(--ease),translate .6s var(--ease)}.topline__title{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.topline__title span{color:#f5efe4b3}.topline.is-idle{opacity:0;translate:-50% -8px;pointer-events:none}.float-actions{position:fixed;right:max(16px,env(safe-area-inset-right));bottom:max(16px,env(safe-area-inset-bottom));z-index:6;display:flex;align-items:center;gap:10px}.fab{display:inline-flex;align-items:center;gap:10px;height:52px;border:0;border-radius:99px;background:var(--glass);backdrop-filter:blur(14px);color:var(--ivory);box-shadow:0 12px 30px -10px #0000008c;transition:opacity .5s,background .25s,box-shadow .25s}.fab svg{width:22px;height:22px}.fab--hand{padding:0 20px 0 16px;font-weight:600;font-size:15px}.fab--hand.is-up{background:var(--amber);color:var(--ink);box-shadow:0 0 0 6px #f2b44c40,0 12px 30px -10px #d8902acc}.fab--quiet{width:44px;height:44px;justify-content:center}.fab.is-idle{opacity:.35}.more{position:relative}.menu{position:absolute;right:0;bottom:54px;min-width:210px;padding:6px;border-radius:14px;background:var(--ivory);box-shadow:0 20px 40px -12px #00000080}.menu button{display:flex;align-items:center;gap:10px;width:100%;height:42px;padding:0 12px;border:0;border-radius:9px;background:none;font-size:14px;text-align:left}.menu button:hover{background:var(--ivory-2)}.menu svg{width:18px;height:18px}.pager{position:absolute;bottom:10px;left:50%;translate:-50% 0;z-index:3;display:flex;align-items:center;gap:4px;padding:3px;border-radius:99px;background:#0a100e99;color:var(--chalk);font-size:12px;font-variant-numeric:tabular-nums;transition:opacity .5s}.pager.is-idle{opacity:.2}.pager button{display:grid;place-items:center;width:28px;height:28px;border:0;border-radius:50%;background:none}.pager button svg{width:16px;height:16px}.toast{position:fixed;left:50%;bottom:84px;translate:-50% 0;z-index:8;padding:10px 16px;border-radius:99px;background:var(--ivory);color:var(--ink);font-size:14px;font-weight:500;box-shadow:0 12px 30px -10px #00000080}.veil{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:20px;background:#0e0b088c;backdrop-filter:blur(6px)}.veil__card{width:min(380px,100%);display:grid;gap:10px;padding:26px;border-radius:20px;background:var(--ivory);text-align:center}.veil__card h2{margin:0;font-family:var(--serif);font-size:26px;font-weight:600}.veil__card p{margin:0 0 8px;color:var(--ink-soft);line-height:1.5}.console-bar{position:absolute;top:0;left:0;right:0;z-index:5;height:56px;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 18px;color:var(--ivory);font-size:15px}.console-bar__title{display:flex;align-items:center;gap:12px;min-width:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.console-bar__title strong{font-family:var(--serif);font-weight:600;font-size:17px}.console-bar .muted{color:#f5efe499}.console-bar__right{display:flex;align-items:center;gap:10px}.console{position:absolute;inset:56px 0 0;z-index:2;display:grid;grid-template-columns:76px minmax(0,1fr) 88px;align-items:center;gap:12px;padding:8px 12px 16px}.console__board{display:flex;flex-direction:column;align-items:center;gap:18px;min-width:0;--bw: 100%;--bh: calc(100dvh - 148px) }.console__board .slate{width:min(100%,calc(var(--bh) * 16 / 9))}.dock{position:relative;justify-self:center;display:flex;flex-direction:column;gap:6px;padding:8px;border-radius:20px;background:var(--glass);backdrop-filter:blur(16px);border:1px solid var(--glass-line);box-shadow:0 20px 40px -16px #0009;transition:opacity .45s var(--ease)}.dock--quiet{opacity:.22}.dock:hover{opacity:1}.dock__group{display:flex;flex-direction:column;align-items:center;gap:4px}.dock__group+.dock__group{padding-top:8px;border-top:1px solid var(--glass-line)}.dock__btn{display:grid;place-items:center;width:42px;height:42px;border:0;border-radius:12px;background:transparent;color:#f5efe4c7;transition:background .2s,color .2s}.dock__btn svg{width:21px;height:21px}.dock__btn:hover:not(:disabled){background:#f5efe414;color:var(--ivory)}.dock__btn.is-on{background:#f2b44c2e;color:var(--amber)}.dock__swatch{width:26px;height:26px;margin:2px;border-radius:50%;border:2px solid transparent;background:var(--sw);box-shadow:inset 0 0 0 1px #00000040;transition:transform .2s var(--ease)}.dock__swatch.is-on{border-color:var(--ivory);transform:scale(1.12);box-shadow:0 0 0 2px #14110ee6}.dock__width span{display:block;border-radius:50%;background:currentColor}.dock__flyout-wrap{position:relative}.dock__flyout{position:absolute;left:52px;top:-4px;display:flex;gap:4px;padding:4px;border-radius:14px;background:#16120ef0;border:1px solid var(--glass-line);z-index:4}.pagebar{display:flex;align-items:center;gap:4px;padding:4px;border-radius:99px;background:var(--glass);backdrop-filter:blur(14px);border:1px solid var(--glass-line);color:var(--ivory);font-size:13px;font-variant-numeric:tabular-nums;transition:opacity .45s var(--ease)}.pagebar span{padding:0 8px}.pagebar button{display:grid;place-items:center;width:34px;height:34px;border:0;border-radius:50%;background:none;color:#f5efe4d9}.pagebar button:hover:not(:disabled){background:#f5efe41a}.pagebar button svg{width:18px;height:18px}.pagebar__sep{width:1px;height:18px;padding:0!important;background:var(--glass-line)}.pagebar.is-quiet,.rail.is-quiet{opacity:.3}.rail{position:relative;justify-self:center;display:flex;flex-direction:column;gap:8px;transition:opacity .45s var(--ease)}.rail:hover{opacity:1}.rail__btn{display:grid;justify-items:center;gap:4px;width:68px;padding:10px 0 8px;border:1px solid var(--glass-line);border-radius:16px;background:var(--glass);backdrop-filter:blur(14px);color:#f5efe4cc;font-size:11.5px;font-weight:500;transition:background .2s,color .2s}.rail__btn svg{width:22px;height:22px}.rail__btn:hover:not(:disabled),.rail__btn.is-on{color:var(--ivory);background:#28211ae6}.rail__hand{position:relative}.rail__hand.is-up{color:var(--amber)}.rail__hand b{position:absolute;top:-6px;right:-10px;min-width:18px;height:18px;padding:0 5px;border-radius:99px;background:var(--amber);color:var(--ink);font-size:11px;line-height:18px}.panel{position:absolute;top:0;right:82px;width:248px;max-height:calc(100dvh - 120px);overflow:auto;display:grid;gap:10px;justify-items:center;padding:18px;border-radius:18px;background:var(--ivory);box-shadow:0 24px 50px -16px #0009;z-index:6}.panel__label{justify-self:start;margin:0;font-size:11.5px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-soft)}.panel__label--gap{margin-top:8px}.panel .code{font-size:28px}.toggle{display:flex;align-items:center;gap:8px;justify-self:start;font-size:13.5px;color:var(--ink-2)}.toggle input{accent-color:var(--slate);width:16px;height:16px}.hands,.roster{list-style:none;margin:0;padding:0;width:100%;display:grid;gap:6px}.hands li{display:flex;align-items:center;justify-content:space-between;gap:8px;padding:8px 8px 8px 12px;border-radius:10px;background:#f2b44c2e;font-weight:600;font-size:14px}.roster li{font-size:13.5px;color:var(--ink-2);padding:2px 0}.display-title{position:absolute;top:3.6vh;left:50%;translate:-50% 0;z-index:3;display:flex;align-items:baseline;gap:16px;white-space:nowrap;color:var(--ink-2)}.display-title__subject{font-family:var(--serif);font-weight:600;font-size:clamp(22px,2.3vw,46px);letter-spacing:-.01em}.display-title__topic{font-family:var(--serif);font-style:italic;font-size:clamp(16px,1.5vw,30px);color:var(--ink-soft)}.display-title .pill{align-self:center;background:#e5484d1f;color:#c0353a;font-size:clamp(11px,.8vw,15px);height:auto;padding:.45em .9em}.joincard{position:absolute;z-index:3;display:flex;align-items:center}.joincard--big{inset:0;margin:auto;width:fit-content;height:fit-content;gap:4%;padding:3.2% 4%;border-radius:26px;background:var(--noise),var(--ivory);box-shadow:0 30px 70px -20px #000000b3}.joincard--big .qr{width:clamp(160px,17vw,340px)!important;height:clamp(160px,17vw,340px)!important}.joincard--big .code{font-size:clamp(40px,4.4vw,92px);color:var(--ink);white-space:nowrap}.joincard .code{white-space:nowrap}.joincard__eyebrow{margin:0 0 6px;font-size:clamp(12px,.9vw,18px);font-weight:600;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-soft)}.joincard__hint{margin:10px 0 0;max-width:18em;font-size:clamp(14px,1.05vw,22px);line-height:1.45;color:var(--ink-2)}.joincard__count{margin:14px 0 0;font-family:var(--serif);font-style:italic;font-size:clamp(15px,1.15vw,24px);color:var(--ink-soft)}.joincard--corner{top:3%;right:2%;gap:12px;padding:10px 14px 10px 10px;border-radius:16px;background:#0a100eb8;backdrop-filter:blur(10px);color:var(--chalk)}.joincard--corner .qr{width:clamp(72px,5.6vw,120px)!important;height:clamp(72px,5.6vw,120px)!important}.joincard--corner .code{font-size:clamp(18px,1.6vw,34px)}.joincard--corner .joincard__hint{margin-top:4px;color:#f4f1eab3;font-size:clamp(11px,.8vw,16px)}.board-page{position:absolute;right:1.6%;bottom:2.2%;z-index:3;font-size:clamp(11px,.85vw,16px);color:#f4f1ea73;font-variant-numeric:tabular-nums}.display-end{position:absolute;left:50%;bottom:4vh;translate:-50% 0;z-index:4;padding:10px 20px;border-radius:99px;background:var(--glass);color:var(--ivory);font-size:clamp(14px,1vw,20px)}.fs-btn{position:fixed;right:16px;bottom:16px;z-index:6;display:inline-flex;align-items:center;gap:8px;height:38px;padding:0 14px;border:0;border-radius:99px;background:var(--glass);color:var(--ivory);font-size:13px;transition:opacity .5s}.fs-btn svg{width:16px;height:16px}.fs-btn.is-idle{opacity:0;pointer-events:none}:fullscreen .fs-btn{display:none}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}}.room3d{position:absolute;inset:0;overflow:hidden;background:#2a2119}.room3d canvas{touch-action:none}.room3d__board{position:absolute;pointer-events:none;z-index:2}.room3d__board>*{pointer-events:auto}.stage3d{position:fixed;inset:0;background:#2a2119;overflow:hidden}.stage3d__room{position:absolute;inset:0}.stage3d__loading{position:absolute;inset:0;background:radial-gradient(60% 50% at 50% 35%,rgba(255,236,200,.25),transparent 70%),linear-gradient(180deg,#d9ccb5,#c8b89c 62%,#7a5a3d 62%,#5e432c);animation:breathe 2.4s ease-in-out infinite}@keyframes breathe{50%{opacity:.85}}.stage3d .topline{position:fixed}.topline__btn{display:grid;place-items:center;width:30px;height:30px;margin-left:-4px;border:0;border-radius:50%;background:#f5efe41f;color:var(--ivory)}.topline__btn svg{width:17px;height:17px}.stage3d--display .display-title{top:2.6vh;padding:.5em 1.1em .55em;border-radius:99px;background:#faf6eed1;backdrop-filter:blur(10px);box-shadow:0 10px 30px -12px #28190a73}.stage3d--display .display-title__subject{font-size:clamp(20px,1.9vw,40px)}.stage3d--display .display-title__topic{font-size:clamp(15px,1.25vw,26px)}.panel--class{width:min(440px,calc(100vw - 200px));justify-items:stretch}.panel--class .panel__label{justify-self:start}.classview{position:relative;aspect-ratio:16 / 10;border-radius:12px;overflow:hidden;background:#2a2119}.classview__empty{position:absolute;left:50%;bottom:10px;translate:-50% 0;margin:0;padding:6px 12px;border-radius:99px;background:#16120ebf;color:var(--ivory);font-size:12.5px;white-space:nowrap}.lobby{padding:0}.lobby__room{position:fixed;inset:0}.lobby__scrim{position:fixed;inset:0;pointer-events:none;background:radial-gradient(70% 70% at 50% 50%,#140f0a26,#140f0a8c),linear-gradient(180deg,#140f0a1a,#140f0a59)}.lobby__content{position:relative;z-index:2;min-height:100%;display:grid;place-items:center;padding:max(20px,env(safe-area-inset-top)) 16px max(20px,env(safe-area-inset-bottom))}.card{width:min(430px,100%);display:grid;gap:0;padding:30px 30px 26px;border-radius:26px;background:#faf6eeed;backdrop-filter:blur(22px) saturate(1.2);border:1px solid rgba(255,255,255,.65);box-shadow:0 50px 100px -30px #0a0602bf,0 2px #ffffff80 inset}.card .brand{font-size:17px;margin-bottom:22px}.card__title{margin:0;font-family:var(--serif);font-size:30px;font-weight:600;letter-spacing:-.02em;line-height:1.15}.card__lede{margin:8px 0 22px;color:var(--ink-soft);font-size:15px;line-height:1.5}.card .tabs{margin-bottom:18px}.card .stack>.card__title+.card__lede{margin-bottom:8px}.card__loading{height:48px;border-radius:12px;background:linear-gradient(90deg,var(--ivory-2),#f7f1e6,var(--ivory-2));background-size:200% 100%;animation:shimmer 1.4s linear infinite}@keyframes shimmer{to{background-position:-200% 0}}.btn--google{gap:12px;background:#fff;color:#1f1f1f;border:1px solid rgba(42,33,25,.16);box-shadow:0 1px 2px #0000000f}.btn--google:hover:not(:disabled){background:#faf8f5;border-color:#2a21194d}.signin__note{margin:2px 0 0;text-align:center;font-size:12.5px;color:var(--ink-soft)}.avatar{display:grid;place-items:center;width:40px;height:40px;flex:none;border-radius:50%;background:var(--slate);color:var(--amber);font-family:var(--serif);font-weight:600;font-size:18px}.avatar--sm{width:36px;height:36px;font-size:16px}.who{display:flex;align-items:center;gap:12px;padding:10px 12px;border-radius:14px;background:var(--ivory-2)}.who__text{display:grid;flex:1;min-width:0;line-height:1.3}.who__text strong{font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.who__text span{font-size:12.5px;color:var(--ink-soft)}.who .link{font-size:13px}.classcard{gap:4px}.pill--live-light{background:#e5484d1a;color:#b4382f;height:28px;padding:0 12px;letter-spacing:.08em;text-transform:uppercase;font-size:11.5px}.classcard__subject{margin:14px 0 0;font-size:42px}.classcard__topic{font-size:19px;text-transform:none}.classcard__teacher{display:flex;align-items:center;gap:12px;margin:18px 0 22px;padding:10px 16px 10px 10px;border-radius:99px;background:var(--ivory-2);text-align:left}.classcard__teacher span:last-child{display:grid;line-height:1.3}.classcard__teacher strong{font-size:14.5px}.classcard__teacher small{font-size:12.5px;color:var(--ink-soft)}.scan__view{position:relative;margin-top:16px}.scan__view .scan__frame{margin:18%}.room3d__board--write{pointer-events:auto;touch-action:none;cursor:crosshair}.room3d__board--write.tool-eraser{cursor:none}.zoombar{position:fixed;left:max(16px,env(safe-area-inset-left));bottom:max(16px,env(safe-area-inset-bottom));z-index:6;display:flex;align-items:center;gap:2px;padding:4px;border-radius:99px;background:var(--glass);backdrop-filter:blur(14px);color:var(--ivory);box-shadow:0 12px 30px -10px #0000008c;transition:opacity .5s}.zoombar.is-idle{opacity:.45}.zoombar button{display:inline-flex;align-items:center;gap:6px;height:40px;padding:0 14px;border:0;border-radius:99px;background:none;color:#f5efe4bf;font-size:13.5px;font-weight:600}.zoombar button svg{width:18px;height:18px}.zoombar button.is-on{background:#f5efe429;color:var(--ivory)}.zoombar__hint{padding:0 10px 0 6px;font-size:12px;color:#f5efe48c}@media (max-width: 700px){.zoombar__hint{display:none}}.seg{display:flex;padding:3px;border-radius:99px;background:#f5efe414;border:1px solid var(--glass-line)}.seg button{display:inline-flex;align-items:center;gap:6px;height:28px;padding:0 12px;border:0;border-radius:99px;background:none;color:#f5efe4b3;font-size:12.5px;font-weight:600}.seg button svg{width:15px;height:15px}.seg button.is-on{background:#f5efe429;color:var(--ivory)}.console--3d{grid-template-columns:76px minmax(0,1fr) 88px}.console--3d{pointer-events:none}.console--3d>*{pointer-events:auto}.console--3d .console__board{pointer-events:none;align-self:end}.console--3d .pagebar{pointer-events:auto}.stage3d--teacher .console-bar{background:linear-gradient(180deg,#14100cc7,#14100c00)}.stage3d--teacher.tool-eraser .room3d__board--write{cursor:none}.pad{position:fixed;inset:0;display:flex;flex-direction:column;background:#17120e;color:var(--ivory);overscroll-behavior:none}.pad__bar{display:flex;align-items:center;justify-content:space-between;gap:12px;height:48px;padding:0 max(14px,env(safe-area-inset-left))}.pad__title{display:flex;align-items:center;gap:10px;font-size:14.5px}.pad__title .muted{color:#f5efe499}.pad__body{flex:1;min-height:0;display:grid;grid-template-columns:64px minmax(0,1fr);gap:10px;align-items:center;padding:0 max(12px,env(safe-area-inset-right)) max(10px,env(safe-area-inset-bottom)) max(8px,env(safe-area-inset-left))}.pad .dock{padding:6px}.pad .dock__btn{width:38px;height:38px}.pad__board{display:flex;flex-direction:column;align-items:center;gap:10px;min-width:0;--bw: 100%;--bh: calc(100dvh - 118px) }.pad__board .slate{width:min(100%,calc(var(--bh) * 16 / 9));box-shadow:0 0 0 6px var(--oak-dark)}.pad__portrait{display:none}@media (orientation: portrait){.pad__body{display:none}.pad__portrait{display:grid;place-items:center;flex:1;margin:0;font-size:17px;color:#f5efe4bf}}.panel--pen{width:min(330px,calc(100vw - 200px));justify-items:stretch;text-align:left}.penstatus{display:flex;gap:12px;align-items:flex-start;padding:12px;border-radius:12px;background:var(--ivory-2)}.penstatus span:last-child{display:grid;gap:2px}.penstatus strong{font-size:14px}.penstatus small{font-size:12.5px;color:var(--ink-soft);line-height:1.4}.penstatus__dot{flex:none;width:10px;height:10px;margin-top:5px;border-radius:50%;background:#c9a24a;box-shadow:0 0 0 4px #c9a24a33}.penstatus.is-ok .penstatus__dot{background:#3f9d6a;box-shadow:0 0 0 4px #3f9d6a33}.steps{margin:0;padding-left:18px;display:grid;gap:6px;font-size:13px;line-height:1.45;color:var(--ink-2)}.padqr{display:flex;gap:12px;align-items:center}.padqr .qr{flex:none}.padqr p{margin:0;line-height:1.45;color:var(--ink-2)}.panel--pen .small{margin:0;line-height:1.45}.rail__hand.is-ok{color:#7ee0b5}.pill--ok{background:#3f9d6a2e;color:#9be3bd}.walkhint{position:fixed;left:50%;bottom:18px;translate:-50% 0;z-index:6;display:flex;align-items:center;gap:14px;padding:8px 8px 8px 18px;border-radius:99px;background:var(--glass);backdrop-filter:blur(14px);color:var(--ivory);font-size:13px;white-space:nowrap;box-shadow:0 12px 30px -10px #0000008c}.btn--light{background:var(--ivory);color:var(--ink)}.stage3d--teacher:has(.walkhint) .pagebar,.stage3d--teacher:has(.walkhint) .dock{opacity:.25;pointer-events:none}.zoombar__hint{white-space:nowrap}@keyframes hintAway{to{opacity:0;max-width:0;padding-left:0;padding-right:0;margin:0}}.zoombar__hint{max-width:360px;overflow:hidden;animation:hintAway .6s ease 7s forwards}.walkhint>span{max-width:560px;overflow:hidden;animation:hintAway .6s ease 7s forwards}.walkhint:has(>span){gap:14px}.fab--chat{position:relative}.fab--chat.is-on{background:#28211af2}.fab__badge{position:absolute;top:-4px;right:-4px;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:var(--amber);color:var(--ink);font-size:11px;line-height:19px;text-align:center}.drawer{position:fixed;z-index:7;right:max(16px,env(safe-area-inset-right));bottom:calc(max(16px,env(safe-area-inset-bottom)) + 64px);width:min(340px,calc(100vw - 32px));height:min(440px,calc(100dvh - 160px));display:flex;flex-direction:column;border-radius:18px;overflow:hidden;background:var(--ivory);box-shadow:0 28px 60px -18px #000000a6}.drawer__head{display:flex;align-items:center;gap:10px;padding:14px 14px 10px 16px;border-bottom:1px solid rgba(42,33,25,.1)}.drawer__head>span{flex:1;display:grid;gap:1px;min-width:0}.drawer__head strong{font-size:15px;color:var(--ink);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.drawer__head small{font-size:12px;color:var(--ink-soft)}.drawer__head button{display:grid;place-items:center;width:32px;height:32px;border:0;border-radius:9px;background:none;color:var(--ink-2)}.drawer__head button:hover{background:var(--ivory-2)}.drawer__head svg{width:18px;height:18px}.chat{flex:1;display:flex;flex-direction:column;min-height:0;width:100%}.chat__list{flex:1;overflow-y:auto;padding:12px 14px;display:flex;flex-direction:column;gap:6px;overscroll-behavior:contain}.chat__empty{margin:auto;text-align:center;font-size:13.5px;color:var(--ink-soft)}.bubble{align-self:flex-start;max-width:82%;padding:8px 11px 6px;border-radius:14px 14px 14px 4px;background:#fffaf2;box-shadow:0 1px 2px #3c28141a;font-size:14px;line-height:1.4;color:var(--ink);overflow-wrap:anywhere;white-space:pre-wrap}.bubble time{display:block;margin-top:2px;font-size:10.5px;color:var(--ink-soft);text-align:right}.bubble--me{align-self:flex-end;border-radius:14px 14px 4px;background:var(--slate);color:var(--chalk)}.bubble--me time{color:#f4f1ea99}.chat__box{display:flex;align-items:flex-end;gap:8px;padding:10px;border-top:1px solid rgba(42,33,25,.1)}.chat__box textarea{flex:1;resize:none;max-height:96px;padding:10px 12px;border:1px solid rgba(42,33,25,.16);border-radius:12px;background:#fffaf2;font:inherit;font-size:14px;color:var(--ink);outline:none}.chat__box textarea:focus{border-color:var(--slate)}.chat__box button{display:grid;place-items:center;width:40px;height:40px;border:0;border-radius:12px;background:var(--slate);color:var(--chalk)}.chat__box button:disabled{opacity:.35}.chat__box svg{width:18px;height:18px}.panel--chat{width:300px;height:min(460px,calc(100dvh - 120px));padding:0;gap:0;display:flex;flex-direction:column;justify-items:stretch;overflow:hidden}.panel--chat>.panel__label{padding:16px 16px 6px}.panel--chat>.muted{padding:0 16px}.threads{list-style:none;margin:0;padding:0 8px 10px;overflow-y:auto;display:grid;gap:2px;width:100%}.threads button{display:flex;align-items:center;gap:10px;width:100%;height:42px;padding:0 10px;border:0;border-radius:10px;background:none;text-align:left;font-size:14px;color:var(--ink-2)}.threads button:hover{background:var(--ivory-2)}.threads__name{flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.threads__dot{width:8px;height:8px;border-radius:50%;background:#2a211933}.threads__dot.is-on{background:#3aa76d}.threads b{min-width:20px;height:20px;padding:0 6px;border-radius:99px;background:var(--amber);color:var(--ink);font-size:11.5px;line-height:20px;text-align:center}.roster__btn{display:flex;align-items:center;justify-content:space-between;width:100%;padding:4px 6px;margin:0 -6px;border:0;border-radius:8px;background:none;font-size:13.5px;color:var(--ink-2);text-align:left}.roster__btn svg{width:15px;height:15px;opacity:0;transition:opacity .2s}.roster__btn:hover{background:var(--ivory-2)}.roster__btn:hover svg{opacity:.7}.notice{display:grid;gap:4px;padding:14px 16px;border-radius:14px;background:#f2b44c29;border:1px solid rgba(216,144,42,.3)}.notice strong{font-size:14.5px;color:var(--ink)}.notice span{font-size:13.5px;line-height:1.5;color:var(--ink-2)}.mates{position:relative}.topline__btn--count{display:flex;align-items:center;border-radius:99px;width:auto;padding:0 10px;gap:6px;font-size:13px;font-weight:600;color:var(--ivory)}.mates__list{position:absolute;top:40px;right:-8px;width:230px;max-height:min(420px,60dvh);overflow-y:auto;padding:14px;border-radius:16px;background:var(--ivory);color:var(--ink);box-shadow:0 24px 50px -16px #0009}.mates__list ul{list-style:none;margin:8px 0 0;padding:0;display:grid;gap:2px}.mates__list li{display:flex;align-items:center;gap:8px;padding:6px 4px;font-size:14px;color:var(--ink-2);border-bottom:1px solid rgba(42,33,25,.06)}.mates__list small{margin-left:auto;font-size:11px;font-weight:600;color:var(--ink-soft)}.mates__teacher{font-weight:600;color:var(--ink)!important}.mates__hand{color:var(--amber-deep)!important}.joined{position:fixed;left:50%;bottom:84px;translate:-50% 0;z-index:8;display:grid;gap:6px;justify-items:center;pointer-events:none}.joined__item{padding:8px 14px;border-radius:99px;background:var(--ivory);color:var(--ink-2);font-size:13.5px;box-shadow:0 12px 30px -10px #00000080}.joined__dot{display:inline-block;width:7px;height:7px;margin-right:4px;border-radius:50%;background:#3aa76d;vertical-align:1px}.bubble.is-pending{opacity:.78}.bubble.is-failed{background:#7a2e2b}.tick{margin-left:5px;font-style:normal;font-size:10.5px;letter-spacing:-1px}.tick--seen{color:#8fd3ff}.bubble:not(.bubble--me) .tick{display:none}.bubble__retry{display:block;margin-top:4px;padding:0;border:0;background:none;color:#ffd2cc;font-size:12px;text-decoration:underline}.bubble__seen{align-self:flex-end;display:block;margin-top:2px;font-style:normal;font-size:10.5px;color:#f4f1eab3;text-align:right}.bubble--typing{padding:10px 14px}.dots{display:inline-flex;gap:4px}.dots i{width:6px;height:6px;border-radius:50%;background:var(--ink-soft);animation:dot 1.1s infinite ease-in-out}.dots i:nth-child(2){animation-delay:.15s}.dots i:nth-child(3){animation-delay:.3s}@keyframes dot{0%,80%,to{opacity:.25;translate:0 0}40%{opacity:1;translate:0 -3px}}.threads__name{display:grid}.threads__typing{font-size:11.5px;color:#3aa76d;font-weight:500}.chatpop{position:fixed;z-index:9;top:max(64px,calc(env(safe-area-inset-top) + 56px));right:max(16px,env(safe-area-inset-right));display:flex;align-items:center;gap:12px;max-width:min(340px,calc(100vw - 32px));padding:12px 16px 12px 12px;border:0;border-radius:16px;background:var(--ivory);color:var(--ink);text-align:left;box-shadow:0 20px 44px -14px #0009;animation:popIn .35s var(--ease)}.chatpop__icon{display:grid;place-items:center;flex:none;width:38px;height:38px;border-radius:12px;background:var(--slate);color:var(--chalk)}.chatpop__icon svg{width:19px;height:19px}.chatpop__text{display:grid;gap:2px;min-width:0}.chatpop__text strong{font-size:14px}.chatpop__text span{font-size:13.5px;color:var(--ink-2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}@keyframes popIn{0%{opacity:0;translate:0 -10px}to{opacity:1;translate:0 0}}.micbtn{display:inline-flex;align-items:center;gap:7px;height:34px;padding:0 14px 0 11px;border:0;border-radius:99px;background:#ffffff14;color:var(--ivory);font:inherit;font-size:13.5px;font-weight:600;cursor:pointer;transition:background .2s}.micbtn svg{width:17px;height:17px}.micbtn:hover:not(:disabled){background:#ffffff24}.micbtn:disabled{opacity:.55;cursor:default}.micbtn.is-live{background:#c8372d;color:#fff}.micbtn.is-live:hover{background:#d8443a}.micbtn.is-talking{box-shadow:0 0 0 3px #c8372d59;animation:talk 1.1s ease-in-out infinite}@keyframes talk{50%{box-shadow:0 0 0 6px #c8372d2e}}.audioctl{display:grid;gap:8px;padding-bottom:6px}.audioctl .btn{justify-self:start}.switch{display:flex;align-items:center;gap:10px;font-size:13.5px;color:var(--ink-2);cursor:pointer}.switch input{position:absolute;opacity:0;pointer-events:none}.switch__track{position:relative;flex:none;width:36px;height:20px;border-radius:99px;background:#2a211938;transition:background .2s}.switch__track:after{content:"";position:absolute;top:2px;left:2px;width:16px;height:16px;border-radius:50%;background:#fff;transition:translate .2s;box-shadow:0 1px 2px #00000040}.switch input:checked+.switch__track{background:#3aa76d}.switch input:checked+.switch__track:after{translate:16px 0}.switch input:focus-visible+.switch__track{outline:2px solid var(--slate);outline-offset:2px}.roster li{display:flex;align-items:center;gap:6px;border-radius:8px}.roster li .roster__btn{flex:1;min-width:0}.roster li.is-talking{background:#3aa76d24}.roster__mic{flex:none;display:grid;place-items:center;width:30px;height:30px;border:0;border-radius:8px;background:none;color:var(--ink-soft);cursor:pointer}.roster__mic svg{width:16px;height:16px}.roster__mic:hover{background:var(--ivory-2);color:var(--ink)}.roster__mic.is-allowed{color:#2f8f5b}.hands li{display:flex;align-items:center;gap:6px}.hands li>span{flex:1}.fab.is-off{background:#7a2e2beb}.fab--mic.is-live{background:#c8372d;color:#fff}.pill--onair{background:#c8372dd9;color:#fff}.pill--onair svg{width:13px;height:13px}.pill--onair.is-talking{animation:talk 1.1s ease-in-out infinite;box-shadow:0 0 0 3px #c8372d4d}.mates__talk{color:#2f8f5b!important}.soundtap{position:fixed;z-index:9;top:max(64px,calc(env(safe-area-inset-top) + 56px));left:50%;translate:-50% 0;display:inline-flex;align-items:center;gap:8px;height:42px;padding:0 18px;border:0;border-radius:99px;background:var(--ivory);color:var(--ink);font:inherit;font-weight:600;font-size:14px;box-shadow:0 16px 36px -12px #0009;cursor:pointer}.soundtap svg{width:18px;height:18px}.invite{position:fixed;z-index:9;left:50%;bottom:calc(max(16px,env(safe-area-inset-bottom)) + 70px);translate:-50% 0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:10px;width:max-content;max-width:calc(100vw - 32px);padding:12px 14px 12px 16px;border-radius:16px;background:var(--ivory);color:var(--ink);font-size:14px;font-weight:600;box-shadow:0 20px 44px -14px #0009}.invite>svg{width:20px;height:20px;color:#2f8f5b}.fab--mic.is-busy{opacity:.6;animation:talk 1.1s ease-in-out infinite}.pill--onair.is-quiet{background:#ffffff1f;color:var(--ivory)}
