@charset "UTF-8";
:root{color-scheme:light;--ink:#241c3b;--purple:#6c4bd3;--deep:#493395;--lime:#b9ef69;--mint:#77ddb4;--yellow:#ffd85a;--coral:#ff6f7d;--sky:#6fd4ee;--paper:#fffaf0;--line:#ddd2bd;--font:"Avenir Next",Avenir,ui-rounded,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif}
*{box-sizing:border-box}html{min-height:100%;max-width:100%;overflow-x:hidden;background:#f5edff}body{margin:0;min-height:100dvh;max-width:100%;overflow-x:hidden;color:var(--ink);font:16px/1.35 var(--font);background:radial-gradient(circle at 12% 5%,#fff 0 7%,transparent 7.2%),linear-gradient(145deg,#fff8e8,#eee7ff);-webkit-font-smoothing:antialiased}button,input,select,textarea{font:inherit}button{cursor:pointer}button:disabled{cursor:not-allowed;opacity:.55}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible,textarea:focus-visible,summary:focus-visible{outline:4px solid #ffb91d;outline-offset:3px}.skip{position:fixed;top:-80px;left:12px;z-index:1000;padding:9px 13px;background:var(--ink);color:#fff}.skip:focus{top:10px}.sr-only{position:absolute;width:1px;height:1px;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap}
.topbar{height:62px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(12px,3vw,34px);border-bottom:1px solid #e7ddcc;background:#fffaf1e8;backdrop-filter:blur(14px);position:relative;z-index:20}.topbar>div{display:flex;align-items:center;gap:8px}.brand{display:flex;align-items:center;gap:9px;color:var(--ink);font-weight:950;text-decoration:none}.brand img{width:36px;height:36px}.game-tag{padding:6px 10px;border-radius:999px;background:#efe8ff;color:#644ac1;font-size:.72rem;font-weight:950}.icon-button,.install-button{min-height:44px;border:2px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);font-weight:900}.icon-button{width:44px}.install-button{display:flex;align-items:center;gap:8px;padding:6px 12px}.download-glyph{position:relative;width:14px;height:15px;border-bottom:2px solid currentColor}.download-glyph:before{content:"";position:absolute;left:6px;top:0;width:2px;height:10px;background:currentColor}.download-glyph:after{content:"";position:absolute;left:3px;top:5px;width:7px;height:7px;border-right:2px solid currentColor;border-bottom:2px solid currentColor;rotate:45deg}
.update-banner{position:fixed;z-index:40;left:50%;top:68px;translate:-50% 0;width:min(620px,calc(100% - 20px));min-height:52px;padding:7px 14px;display:flex;align-items:center;justify-content:center;gap:12px;border-radius:14px;background:#e9ffcf;color:#294d1d;font-weight:850;text-align:center;box-shadow:0 8px 24px #241c3b33}.update-banner.warning{background:#fff0c9;color:#68490b}.update-banner button{min-height:44px;padding:5px 11px;border:2px solid currentColor;border-radius:10px;background:#fff;color:inherit;font-weight:900}
.home{width:min(980px,calc(100% - 24px));margin:clamp(20px,4vh,46px) auto 50px;text-align:center}.hero h1{margin:8px 0 0;font-size:clamp(3.1rem,9vw,6.7rem);line-height:.82;letter-spacing:-.075em}.hero h2{margin:4px 0 12px;color:#ee5469;font:italic 800 clamp(2rem,5vw,4.3rem)/1 Georgia,serif}.hero>p:last-child{margin:0 auto;max-width:570px;color:#726a7c;font-size:1.05rem}.eyebrow{margin:0;color:#6b4ed0;font-size:.72rem;font-weight:950;letter-spacing:.16em;text-transform:uppercase}
.logo-mark{position:relative;width:118px;height:92px;margin:0 auto 6px}.logo-mark>i{position:absolute;left:12px;bottom:8px;width:75px;height:58px;border:5px solid var(--ink);border-radius:18px 18px 25px 25px;background:var(--yellow);box-shadow:0 8px 0 #c8af45;rotate:-5deg}.logo-mark>i:before,.logo-mark>i:after{content:"";position:absolute;top:14px;width:8px;height:8px;border-radius:50%;background:var(--ink)}.logo-mark>i:before{left:17px}.logo-mark>i:after{right:17px}.logo-mark>b{position:absolute;right:12px;top:2px;width:48px;height:48px;display:grid;place-items:center;border:5px solid var(--ink);border-radius:50%;background:var(--mint);font-size:1.7rem;box-shadow:0 5px 0 #4ea884}.logo-mark>em,.logo-mark>em:before,.logo-mark>em:after{position:absolute;width:16px;height:16px;border-radius:50%;background:#b7df76}.logo-mark>em{left:4px;top:7px}.logo-mark>em:before{content:"";left:-11px;top:-8px}.logo-mark>em:after{content:"";left:8px;top:-17px}
.play-card{min-width:0;margin-top:30px;padding:clamp(18px,4vw,32px);text-align:left;border:2px solid #e2d6c4;border-radius:28px;background:#fff;box-shadow:0 16px 0 #d9cfbf,0 27px 60px #3c2d7125}.play-card>h2{margin:0 0 18px;font-size:1.45rem}.mode-grid{min-width:0;display:grid;grid-template-columns:1fr 1fr;gap:14px}.mode{min-width:0;min-height:155px;padding:21px;text-align:left;border:3px solid #eadfce;border-radius:22px;background:#fffaf1;color:var(--ink);transition:.18s transform,.18s box-shadow}.mode:hover{transform:translateY(-3px);box-shadow:0 8px 0 #d8cdbb}.mode strong,.mode small{display:block}.mode strong{margin-top:11px;font-size:1.15rem}.mode small{margin-top:4px;color:#756d78;overflow-wrap:anywhere}.online-mode{background:#f1ebff;border-color:#795dde}.nearby-mode{background:#edfff7;border-color:#55bf93}.mode-art{position:relative;display:block;width:72px;height:45px}.cloud-art i{position:absolute;left:2px;top:10px;width:46px;height:27px;border:4px solid var(--ink);border-radius:15px;background:#79dbee}.cloud-art i:before,.cloud-art i:after{content:"";position:absolute;border:4px solid var(--ink);border-bottom:0;border-radius:50% 50% 0 0;background:#79dbee}.cloud-art i:before{width:19px;height:15px;left:4px;top:-16px}.cloud-art i:after{width:16px;height:11px;right:3px;top:-12px}.cloud-art b{position:absolute;right:4px;bottom:0;width:28px;height:28px;border:4px solid var(--ink);border-radius:50%;background:var(--yellow)}.nearby-art i,.nearby-art b{position:absolute;width:32px;height:42px;border:4px solid var(--ink);border-radius:8px;background:#fff}.nearby-art i{left:3px}.nearby-art b{right:3px;top:3px}.nearby-art:after{content:"";position:absolute;left:28px;top:17px;width:16px;height:10px;border-top:4px solid var(--coral);border-radius:50%}.secondary-actions{display:flex;flex-wrap:wrap;gap:8px;margin-top:20px}.secondary-actions button,.back,.pair-button{min-height:44px;padding:8px 13px;border:2px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);font-weight:850}.availability{margin:15px 0 0;padding:11px 13px;border-radius:13px;background:#fff2cf;color:#6a4b07}.trust-note{margin-top:26px;color:#736b7c;font-size:.85rem;font-weight:800}
.identity,.lobby{width:min(960px,calc(100% - 24px));margin:25px auto 55px}.identity-card{margin-top:14px;padding:clamp(20px,4vw,36px);display:grid;grid-template-columns:1.15fr .55fr;gap:22px;border:2px solid #e2d7c5;border-radius:28px;background:#fff;box-shadow:0 14px 0 #d7cdbc}.identity-copy h1{margin:7px 0;font-size:clamp(2rem,5vw,3.6rem);line-height:.95}.identity-copy>p:last-child{color:#716979}.avatar-picker{display:grid;place-items:center;align-content:center;min-height:200px;border-radius:22px;background:#f0e9ff}.avatar-picker>button{margin-top:16px;min-height:44px;padding:8px 14px;border:0;border-radius:999px;background:var(--ink);color:#fff;font-weight:900}.identity form{grid-column:1/-1;display:grid;gap:16px}.identity label{display:grid;gap:7px;font-weight:900}.identity input[type=text],.identity input:not([type]),.identity input[name=nickname],.identity input[name=code],textarea,select{width:100%;min-height:48px;padding:10px 12px;border:2px solid var(--line);border-radius:12px;background:#fff;color:var(--ink)}.identity fieldset{display:flex;gap:9px;padding:0;border:0}.identity fieldset label{display:flex;align-items:center;gap:8px;flex:1;min-height:52px;padding:10px 12px;border:2px solid #ded3c1;border-radius:13px;background:#fffaf2}.primary,.ready{min-height:52px;padding:10px 16px;border:0;border-radius:14px;background:var(--mint);color:#153c2c;font-weight:950;box-shadow:0 6px 0 #38a878}.primary span{float:right}.room-head{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px;border:2px solid #e1d6c4;border-radius:24px;background:#fff;box-shadow:0 9px 0 #d8cebe}.room-head>div:last-child{display:grid;text-align:right}.room-head span,.room-head small{color:#766e79}.room-code{padding:0;border:0;background:transparent;color:var(--purple);font-size:2.3rem;font-weight:950;letter-spacing:.14em}.rule-strip{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:17px 0}.rule-strip span{padding:12px 14px;border-radius:14px;background:#fff7da;color:#655221}.roster{padding:20px;border:2px solid #e1d6c4;border-radius:24px;background:#fff}.section-title{display:flex;justify-content:space-between;align-items:center}.section-title h2{margin:0}.section-title span{color:#746b78}.player-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:16px}.player-card{min-width:0;display:flex;align-items:center;gap:12px;padding:10px;border:2px solid #e6ddcf;border-radius:17px;background:#fffaf3}.player-card.ready{border-color:#56b98c;background:#effff7}.player-card.out{filter:grayscale(.8);opacity:.7}.player-card>div{min-width:0}.player-card strong,.player-card small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-card small{color:#776f79}.leader-badge{margin-left:auto;color:#f0a900;font-style:normal}.settings{margin-top:15px;padding:13px 16px;border:2px solid #e1d6c4;border-radius:16px;background:#fff}.settings summary{font-weight:950;cursor:pointer}.settings>div{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.settings label{display:grid;gap:6px;font-weight:850}.lobby-actions{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:17px}.ready{background:#efe9ff;color:var(--deep);box-shadow:0 6px 0 #b7a6e9}.ready.is-ready{background:var(--mint);color:#143c2b;box-shadow:0 6px 0 #39a97a}.pair-button{margin-top:15px;width:100%}
.leader-transfer{margin-left:auto;min-height:44px;padding:6px 9px;border:2px solid #d9cdbd;border-radius:10px;background:#fff;color:var(--ink);font-size:.72rem;font-weight:900;white-space:nowrap}.game{width:min(1050px,100%);height:calc(100dvh - 62px);margin:auto;padding:7px 10px max(8px,env(safe-area-inset-bottom));display:flex;flex-direction:column;gap:7px;overflow:hidden}.phasebar{min-height:48px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:9px;padding:6px 10px;border:2px solid #ded2bf;border-radius:16px;background:#fff}.phasebar>div:first-child{display:flex;align-items:center;gap:8px}.connection-dot{width:10px;height:10px;border-radius:50%;background:#f0b229}.connection-dot.connected{background:#38b678}.connection-dot.reconnecting{animation:pulse 1s infinite}.phase-timer{min-width:54px;padding:5px 8px;text-align:center;border-radius:999px;background:var(--ink);color:#fff;font-weight:950}.score{display:flex;justify-content:flex-end;gap:6px}.score span{padding:4px 7px;border-radius:999px;background:#f1ebff;font-size:.72rem;font-weight:900}.classroom{position:relative;flex:1;min-height:0;overflow:hidden;border:4px solid var(--ink);border-radius:21px;background:linear-gradient(90deg,#d5bc8c11 1px,transparent 1px),linear-gradient(#d5bc8c11 1px,transparent 1px),#f7e8c8;background-size:44px 44px;box-shadow:0 8px 0 #c8b898}.north-wall{position:absolute;left:0;right:0;top:0;height:25%;border-bottom:6px solid #b89567;background:#fff5dc}.chalkboard{position:absolute;left:31%;top:9%;width:38%;height:62%;display:grid;place-items:center;border:8px solid #9b7145;border-radius:7px;background:#315f52;color:#fffde9;box-shadow:inset 0 0 25px #17352c}.chalkboard b{font:700 clamp(.65rem,1.5vw,1rem)/1 Georgia,serif}.chalkboard span{position:absolute;bottom:4px;font-size:.45rem;letter-spacing:.15em;opacity:.7}.window{position:absolute;left:3%;top:9%;width:18%;height:65%;display:flex;border:6px solid #fff;background:#91dcf1;box-shadow:0 0 0 3px #589cb4}.window i{flex:1;border-right:4px solid #fff}.clock{position:absolute;right:20%;top:9%;width:44px;aspect-ratio:1;border:5px solid var(--ink);border-radius:50%;background:#fff}.clock i:before,.clock i:after{content:"";position:absolute;left:50%;top:50%;width:3px;background:var(--ink);transform-origin:50% 0}.clock i:before{height:13px;rotate:180deg}.clock i:after{height:10px;rotate:120deg}.bookshelf{position:absolute;right:3%;top:8%;width:12%;height:72%;display:flex;align-items:end;padding:5px;border:6px solid #7a4b31;background:#b4764d}.bookshelf i{flex:1;height:45%;background:var(--coral);border:1px solid #633}.bookshelf i:nth-child(2){height:65%;background:var(--yellow)}.bookshelf i:nth-child(3){height:52%;background:var(--sky)}.teacher-desk{position:absolute;left:43%;top:21%;width:14%;height:8%;display:grid;place-items:center;border:4px solid #6f482f;border-radius:5px;background:#b77b4c;color:#fff;font-size:.55rem}.door{position:absolute;right:2%;bottom:2%;width:9%;height:19%;border:5px solid #7d5135;background:#d39a5f}.door i{position:absolute;right:10%;top:48%;width:7px;height:7px;border-radius:50%;background:#372515}.door span{position:absolute;right:105%;bottom:0;color:#796e67;font-size:.6rem}.desk{position:absolute;left:var(--x);top:var(--y);width:12.5%;height:13%;translate:-50% -50%;padding:0;border:0;background:transparent;color:var(--ink)}.desk:before{content:"";position:absolute;inset:22% 2% 16%;border:4px solid #765039;border-radius:7px;background:#c98d59;box-shadow:0 6px 0 #69422d}.desk .chair{position:absolute;left:27%;right:27%;bottom:0;height:36%;border:4px solid #53403a;border-radius:4px 4px 14px 14px;background:#7b75a9}.desk .notebook{position:absolute;z-index:2;left:16%;top:34%;width:28%;height:20%;rotate:-6deg;border:2px solid #7b6f9d;background:#fff}.desk>b{position:absolute;z-index:6;right:8%;top:28%;font-size:.55rem;color:#fff}.desk>small{position:absolute;z-index:8;left:50%;top:-15%;max-width:115%;translate:-50% 0;padding:3px 6px;overflow:hidden;border-radius:999px;background:#fff;color:var(--ink);font-size:clamp(.48rem,1vw,.68rem);font-weight:900;text-overflow:ellipsis;white-space:nowrap;box-shadow:0 2px 0 #ccbfae}.desk.free{animation:desk-glow 1.5s infinite}.desk.free:after{content:"Choose";position:absolute;z-index:4;inset:33% 12% auto;padding:3px;border-radius:7px;background:var(--lime);font-size:.55rem;font-weight:950}.desk.inactive{opacity:.38;filter:grayscale(1)}.floor-lines{position:absolute;left:48.5%;top:28%;bottom:0;border-left:3px dashed #9c865f44}
.student{position:relative;display:block;width:62px;height:84px;filter:drop-shadow(0 5px 2px #3b294533)}.desk>.student{position:absolute;z-index:5;left:50%;top:8%;width:min(5vw,58px);height:min(6.5vw,78px);translate:-50% -50%}.student.small{flex:0 0 auto;width:42px;height:54px}.student .head{position:absolute;z-index:3;left:23%;top:5%;width:54%;aspect-ratio:1;border:3px solid var(--ink);border-radius:50%;background:var(--skin)}.student .hair{position:absolute;z-index:4;left:20%;top:1%;width:60%;height:27%;border:3px solid var(--ink);border-radius:55% 55% 35% 35%;background:var(--hair)}.student .hair:after{content:"";position:absolute;right:-5px;bottom:-9px;width:12px;height:18px;border-radius:50%;background:var(--hair)}.student .head:before,.student .head:after{content:"";position:absolute;top:43%;width:4px;height:4px;border-radius:50%;background:var(--ink)}.student .head:before{left:25%}.student .head:after{right:25%}.student .body{position:absolute;z-index:2;left:17%;top:43%;width:66%;height:48%;border:3px solid var(--ink);border-radius:45% 45% 14px 14px;background:var(--shirt)}.student .body.hoodie:after{content:"";position:absolute;left:32%;top:2px;width:30%;height:38%;border:2px solid #ffffffaa;border-radius:50%}.student .arm{position:absolute;z-index:1;top:51%;width:18%;height:39%;border:3px solid var(--ink);border-radius:999px;background:var(--skin)}.student .arm.left{left:7%;rotate:12deg}.student .arm.right{right:7%;rotate:-12deg}.student .bag{position:absolute;z-index:0;right:1%;bottom:2%;width:28%;height:32%;border:3px solid var(--ink);border-radius:8px;background:#8f69d8}.student .glasses{position:absolute;left:10%;top:34%;width:80%;height:22%;border-top:3px solid var(--ink)}.student .glasses:before,.student .glasses:after{content:"";position:absolute;top:-7px;width:14px;height:12px;border:2px solid var(--ink);border-radius:50%}.student .glasses:before{left:0}.student .glasses:after{right:0}.student.sitting{scale:.86;transform-origin:bottom}.student.raised .arm.right{top:22%;height:48%;rotate:-155deg}.student.defending .arm{top:58%;rotate:70deg}.student.leaving{animation:leave 3.4s ease-in forwards}.student.idle{animation:bob 2.8s ease-in-out infinite}.student.idle .head{animation:blink 4.8s infinite}
.student.palette-0{--hair:#5b2f20;--skin:#f0b38b;--shirt:#ff6b6b}.student.palette-1{--hair:#1f2937;--skin:#8d5524;--shirt:#48cae4}.student.palette-2{--hair:#6b3f2b;--skin:#c68642;--shirt:#80ed99}.student.palette-3{--hair:#251b3b;--skin:#f1c27d;--shirt:#ffd166}.student.palette-4{--hair:#6d4c41;--skin:#e0ac69;--shirt:#b8a1ff}.student.palette-5{--hair:#111827;--skin:#8d5524;--shirt:#ff8fab}.student.palette-6{--hair:#a15c38;--skin:#f1c27d;--shirt:#4dd4ac}.student.palette-7{--hair:#36251d;--skin:#c68642;--shirt:#ff9f1c}.student.palette-8{--hair:#402218;--skin:#e0ac69;--shirt:#7bdff2}.student.palette-9{--hair:#201b38;--skin:#8d5524;--shirt:#f7aef8}.student.palette-10{--hair:#7b4f2c;--skin:#f1c27d;--shirt:#90be6d}.student.palette-11{--hair:#30231d;--skin:#c68642;--shirt:#f94144}
.action-tray,.meeting-sheet{flex:0 0 auto;min-height:68px;padding:9px 12px;display:flex;align-items:center;justify-content:center;gap:10px;border:2px solid #ded2bf;border-radius:18px;background:#fff;box-shadow:0 5px 0 #d4cab9}.action-tray>button{min-height:46px;padding:8px 14px;border:2px solid var(--line);border-radius:13px;background:#fff;color:var(--ink);font-weight:950}.lesson-controls{justify-content:space-between}.aim-control{min-width:210px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:8px;font-size:.78rem;font-weight:900}.aim-control input{accent-color:var(--purple)}.fart-button,.report-button{min-width:160px!important;border:0!important;color:#fff!important}.fart-button{background:var(--purple)!important}.report-button{background:var(--coral)!important}.fart-button small,.report-button small{display:block;font-size:.65rem}.report-button.alert{animation:alert 1s infinite;box-shadow:0 0 0 5px #ffcf3e88}.student-task{display:grid}.student-task span{color:#756c79;font-size:.72rem}.smell-card{position:absolute;left:50%;bottom:92px;translate:-50% 0;padding:12px 18px;display:grid;text-align:center;border:3px solid #649447;border-radius:18px;background:#edffd8;box-shadow:0 10px 25px #29451c33;animation:smell-in .4s ease-out}.smell-card i{position:absolute;inset:-18px 20% auto;height:25px;background:radial-gradient(circle,#9bd870 0 30%,transparent 32%) 0 0/22px 22px}.meeting-sheet{display:block;max-height:40dvh;overflow:auto}.meeting-sheet header{display:flex;align-items:center;justify-content:space-between}.meeting-sheet h2{margin:2px 0}.chat-log{display:grid;gap:5px;margin:8px 0}.chat-log p{margin:0;padding:7px 9px;border-radius:9px;background:#f5f0ff}.chat-log b{margin-right:7px}.quick-phrases{display:flex;gap:5px;overflow-x:auto;padding-bottom:5px}.quick-phrases button,.vote-grid button,.seat-list button{min-height:44px;padding:7px 10px;white-space:nowrap;border:2px solid #dcd1c1;border-radius:12px;background:#fff;color:var(--ink);font-weight:850}.meeting-sheet form{display:flex;gap:7px;margin-top:7px}.meeting-sheet form input{flex:1;min-width:0;min-height:44px;padding:8px 10px;border:2px solid var(--line);border-radius:11px}.meeting-sheet form button{min-width:65px;border:0;border-radius:11px;background:var(--ink);color:#fff;font-weight:900}.vote-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;margin-top:9px}.vote-grid button{display:flex;align-items:center;gap:6px;white-space:normal}.vote-grid button.selected{border-color:var(--purple);background:#eee7ff;box-shadow:inset 0 0 0 2px var(--purple)}.skip-vote i{font-size:1.7rem}.result-panel{display:grid;text-align:center}.result-panel h2,.result-panel p{margin:0}.role-list{display:flex;gap:7px;max-width:90vw;overflow-x:auto}.role-list>span{min-width:100px;display:grid;place-items:center;padding:7px;border-radius:12px;background:#f4edff}.role-list b,.role-list small{display:block}.spectator,.pause-banner{padding:8px 12px;display:flex;justify-content:center;gap:8px;border-radius:12px;background:#fff1c8;color:#664c16}.pause-banner{position:absolute;z-index:30;top:70px;left:50%;translate:-50% 0;width:min(560px,calc(100% - 24px));box-shadow:0 10px 30px #33264c44}
.role-backdrop{position:fixed;z-index:100;inset:0;display:grid;place-items:center;padding:18px;background:#17102dcc;backdrop-filter:blur(8px)}.role-card{width:min(390px,100%);padding:28px;text-align:center;border:5px solid #fff;border-radius:28px;background:#effff7;box-shadow:0 24px 70px #0007}.role-card.stinker{background:#f1ebff}.role-card .student{margin:auto}.role-card h2{margin:7px 0;font-size:2.2rem}.secret-puff{height:92px;display:flex;align-items:end;justify-content:center;gap:2px}.secret-puff i{width:45px;height:45px;border:4px solid var(--ink);border-radius:50%;background:#a9df73;animation:puff 1.5s ease-in-out infinite}.secret-puff i:nth-child(2){width:62px;height:62px;animation-delay:.15s}.secret-puff i:nth-child(3){animation-delay:.3s}.teammates{padding:8px;border-radius:10px;background:#fff}.toast{position:fixed;z-index:200;left:50%;bottom:max(18px,env(safe-area-inset-bottom));translate:-50% 0;max-width:min(90vw,520px);padding:11px 16px;border-radius:999px;background:var(--ink);color:#fff;font-weight:850;box-shadow:0 8px 25px #0005}
dialog{width:min(540px,calc(100% - 24px));max-height:88dvh;padding:22px;border:0;border-radius:24px;color:var(--ink);box-shadow:0 25px 80px #160f2c99}dialog::backdrop{background:#17102d99;backdrop-filter:blur(5px)}.dialog-head{display:flex;justify-content:space-between;align-items:center;gap:10px}.dialog-head h2{margin:0}.dialog-head button{width:44px;height:44px;border:2px solid var(--line);border-radius:12px;background:#fff;font-size:1.3rem}dialog label{display:grid;gap:6px;margin:12px 0;font-weight:850}dialog textarea{resize:vertical;font:12px/1.25 ui-monospace,SFMono-Regular,Menlo,monospace}dialog details{margin:12px 0;padding:10px;border:2px solid #e5d9c8;border-radius:12px;background:#fffaf2}dialog summary{cursor:pointer;font-weight:900}.pairing-step{margin-top:14px;padding:16px;border:2px solid #e5d9c8;border-radius:18px;background:#fffcf7}.pairing-step>b{color:var(--purple);font-size:.78rem;letter-spacing:.08em}.pairing-step h3{margin:4px 0 6px}.pairing-step p{margin:6px 0 12px}.pairing-warning{padding:10px 12px;border-radius:12px;background:#fff0bf;color:#664600;font-weight:850}.qr-viewer{display:grid;place-items:center;gap:8px;margin:12px auto;padding:10px;border:2px solid #e2d7c6;border-radius:18px;background:#fff}.pairing-qr{display:block;width:min(300px,76vw);height:auto;image-rendering:pixelated}.qr-nav{width:100%;display:grid;grid-template-columns:44px 1fr 44px;align-items:center;gap:8px;text-align:center}.qr-nav button{min-width:44px;min-height:44px;border:2px solid var(--line);border-radius:11px;background:#fff;color:var(--ink);font-weight:950}.scan-button{min-height:52px!important;display:grid!important;place-items:center;padding:10px 14px;border:0;border-radius:14px;background:var(--mint);color:#153c2c;box-shadow:0 6px 0 #38a878;cursor:pointer}.qr-file{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.scan-progress{display:block;padding:7px;text-align:center;color:#655c6d}.fine-print{color:#746b78;font-size:.78rem}.seat-list{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}.loading{min-height:100dvh;display:grid;place-items:center;align-content:center;text-align:center}.loading h1{margin-bottom:0}
@keyframes bob{50%{transform:translateY(-3px)}}@keyframes blink{0%,45%,49%,100%{scale:1 1}47%{scale:1 .2}}@keyframes desk-glow{50%{filter:drop-shadow(0 0 9px #91e250)}}@keyframes pulse{50%{opacity:.25}}@keyframes alert{50%{transform:scale(1.03)}}@keyframes smell-in{from{transform:translateY(15px);opacity:0}}@keyframes puff{50%{transform:translateY(-10px) scale(1.08)}}@keyframes leave{to{transform:translate(420%,100%);opacity:0}}
@media(max-width:720px){.game-tag,.install-button b{display:none}.install-button{width:44px;padding:6px;justify-content:center}.update-banner{top:63px;align-items:stretch;flex-direction:column}.home{width:calc(100% - 20px);margin-top:22px}.hero h1{font-size:clamp(2.35rem,12.5vw,3.6rem);line-height:.9;letter-spacing:-.055em}.hero h1 span,.hero h2 span{display:block}.hero h2{font-size:clamp(1.75rem,8vw,2.6rem)}.hero>p:last-child{font-size:.94rem}.play-card{padding:20px}.mode-grid,.identity-card,.rule-strip,.settings>div{grid-template-columns:1fr}.secondary-actions button{flex:1 1 150px}.identity-card{gap:14px}.identity-copy{text-align:center}.identity fieldset{display:grid}.player-grid{grid-template-columns:1fr}.room-head{align-items:flex-start}.room-code{font-size:1.8rem}.lobby-actions{grid-template-columns:1fr}.game{height:calc(100dvh - 62px);padding:4px}.phasebar{min-height:43px;grid-template-columns:1fr auto}.phasebar .score{grid-column:1/-1;justify-content:center;margin-top:-4px}.classroom{border-width:3px;border-radius:14px}.chalkboard{left:27%;width:46%}.clock{right:15%;width:31px;border-width:3px}.desk{width:20%;height:13%}.desk>.student{width:34px;height:47px}.desk>small{top:-20%;max-width:90px}.action-tray{min-height:64px;flex-wrap:wrap;padding:6px}.lesson-controls{display:grid;grid-template-columns:1fr 1fr}.aim-control,.student-task{grid-column:1/-1}.fart-button,.report-button{min-width:0!important}.smell-card{bottom:134px}.meeting-sheet{max-height:47dvh}.meeting-sheet header{align-items:flex-start}.vote-grid{grid-template-columns:repeat(2,1fr)}.topbar{height:58px}.game{height:calc(100dvh - 58px)}}
@media(max-width:400px){.home{width:calc(100% - 16px)}.hero h1{font-size:2.28rem}.hero h2{font-size:1.68rem}.play-card{padding:18px 16px}.play-card>h2{font-size:1.25rem}.mode{padding:18px}.secondary-actions{display:grid;grid-template-columns:1fr}.secondary-actions button{width:100%}.score span{font-size:.62rem}.phasebar strong{font-size:.78rem}.phase-timer{font-size:.75rem;min-width:46px}.desk .notebook,.desk>b{display:none}.chalkboard b{font-size:.58rem}.quick-phrases button{font-size:.75rem}.action-tray>button{font-size:.78rem}.student-task span{display:none}.install-button{display:none}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.student.leaving{opacity:.45}}

/* Classroom refresh: readable players, physical desk choices, and a clearer room. */
.classroom{isolation:isolate;border-width:5px;background:linear-gradient(115deg,#fff7df 0 22%,#f6e4bd 22% 100%);box-shadow:0 9px 0 #bda983,0 18px 35px #392a5224}.classroom:after{content:"";position:absolute;z-index:-1;inset:25% 0 0;background:repeating-linear-gradient(90deg,transparent 0 8.2%,#a8844c17 8.3% 8.55%),linear-gradient(#f4dfb5,#edd29d)}.north-wall{z-index:0;height:24%;border-bottom:8px solid #b58b58;background:linear-gradient(#fffaf0,#f5e7cc)}.chalkboard{left:30%;top:7%;width:40%;height:66%;border-width:7px;border-radius:12px;background:radial-gradient(circle at 70% 35%,#416f61,#254b42 72%);box-shadow:inset 0 0 28px #102b24,0 5px 0 #704a2d}.chalkboard b{font:800 clamp(.72rem,1.55vw,1.08rem)/1.1 var(--font);letter-spacing:.06em}.chalkboard span{bottom:5px;font-size:.52rem;font-weight:850}.teacher-desk{z-index:3;top:20.5%;height:9%;border-radius:9px;box-shadow:0 5px 0 #573722}.floor-lines{z-index:0;left:50%;top:31%;bottom:4%;border-left:4px dashed #9c865f33}.desk{z-index:4;width:13.5%;height:15%;filter:drop-shadow(0 7px 4px #6b48273b);transition:.16s scale,.16s filter}.desk:disabled{cursor:default;opacity:1}.desk:before{inset:27% 1% 12%;border-width:4px;border-radius:10px;background:linear-gradient(155deg,#daa36d,#b97545);box-shadow:0 7px 0 #664029,0 10px 12px #6640293b}.desk .chair{left:25%;right:25%;bottom:-2%;height:38%;background:#706799;box-shadow:inset 0 -5px #574e7e}.desk .notebook{left:13%;top:39%;width:32%;height:23%;background:linear-gradient(90deg,#fff 45%,#ddd4f2 46% 53%,#fff 54%)}.desk>b{right:8%;top:34%;padding:2px 5px;border-radius:999px;background:#5c3928;font-size:.62rem}.desk>strong{position:absolute;z-index:8;left:50%;top:48%;translate:-50% -50%;padding:5px 8px;border-radius:999px;background:#dfffab;color:#294318;font-size:.68rem;font-weight:950;box-shadow:0 3px 0 #78a83f}.desk>small{inset:auto auto -17% 50%;max-width:125%;translate:-50% 0;padding:4px 8px;border:2px solid #ddd1be;font-size:clamp(.58rem,1.05vw,.74rem);box-shadow:0 3px 0 #c8baa5}.desk>em{position:absolute;z-index:10;right:-5%;top:2%;padding:3px 7px;border:2px solid #fff;border-radius:999px;background:var(--purple);color:#fff;font-size:.58rem;font-style:normal;font-weight:950;box-shadow:0 2px 0 #493395}.desk.free{animation:desk-glow 1.8s infinite}.desk.free:after{display:none}.desk.free:hover{scale:1.06;filter:drop-shadow(0 0 12px #79c940)}.desk.occupied:before{background:linear-gradient(155deg,#d3a375,#a96c43)}.desk.your-desk{filter:drop-shadow(0 0 10px #6c4bd3)}.desk.your-desk:before{outline:4px solid #765ae0;outline-offset:3px}.desk>.student{top:12%;width:min(5.5vw,64px);height:min(7.4vw,86px);translate:-50% -46%;filter:drop-shadow(0 6px 3px #3b294555)}.seat-progress{position:absolute;z-index:12;left:2%;right:2%;top:25.5%;min-height:56px;display:flex;align-items:center;gap:7px;padding:6px 9px;overflow-x:auto;border:2px solid #d8c59f;border-radius:14px;background:#fffaf0ed;box-shadow:0 4px 0 #bfa97c}.seat-progress>span{flex:0 0 auto;min-width:105px;height:44px;display:grid;grid-template-columns:34px auto;grid-template-rows:1fr 1fr;align-items:center;column-gap:6px;padding:3px 8px;border:2px solid #e3d7c2;border-radius:11px;background:#fff}.seat-progress>span.seated{border-color:#64b98f;background:#effff7}.seat-progress>span.you{border-color:#765ae0;background:#f1ecff}.seat-progress .student{grid-row:1/-1;width:30px;height:39px}.seat-progress b,.seat-progress small{max-width:76px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.seat-progress b{align-self:end;font-size:.68rem}.seat-progress small{align-self:start;color:#746b78;font-size:.58rem}.seat-tray{justify-content:space-between}.seat-tray>span{display:grid}.seat-tray small{color:#756d78}.seat-tray button{background:#efe9ff;border-color:#765ae0}.seat-picker-copy{margin:8px 0;color:#6d6572}.seat-map-key{display:flex;gap:15px;margin:10px 0 13px;color:#6d6572;font-size:.75rem;font-weight:850}.seat-map-key span{display:flex;align-items:center;gap:5px}.seat-map-key i{width:13px;height:13px;border:2px solid #4ca473;border-radius:4px;background:#ddffc5}.seat-map-key span:last-child i{border-color:#a89478;background:#ead9c4}.seat-list{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.seat-list .seat-choice{position:relative;min-height:96px;display:grid;grid-template-columns:62px 1fr;align-items:center;gap:10px;padding:10px;text-align:left;white-space:normal;border:3px solid #63b887;background:#effff7;box-shadow:0 5px 0 #acd8b8}.seat-list .seat-choice:disabled{cursor:default;opacity:1;border-color:#d4c5af;background:#f5ecdf;box-shadow:0 5px 0 #d7c9b5}.seat-list .seat-choice.current{border-color:#765ae0;background:#f1ecff;box-shadow:0 5px 0 #b8a7e9}.seat-choice>span:last-child{min-width:0}.seat-choice b,.seat-choice small{display:block;overflow:hidden;text-overflow:ellipsis}.seat-choice small{margin-top:3px;color:#746b78;font-size:.68rem;white-space:normal}.seat-choice>.student{position:absolute;z-index:3;left:35px;top:6px;width:39px;height:51px}.mini-desk{position:relative;width:58px;height:58px}.mini-desk:before{content:"";position:absolute;left:3px;right:3px;top:23px;height:27px;border:3px solid #70492f;border-radius:7px;background:#cb8b56;box-shadow:0 5px 0 #68412a}.mini-desk i{position:absolute;left:18px;right:18px;bottom:0;height:22px;border:3px solid #514666;border-radius:5px 5px 10px 10px;background:#756e9e}.seat-plus{position:absolute;z-index:4;left:25px;top:24px;width:24px;height:24px;display:grid;place-items:center;border-radius:50%;background:#dfffaa;color:#34531c;font-size:1.25rem;font-weight:950}.door{z-index:2;border-radius:7px}.window,.bookshelf,.clock{filter:drop-shadow(0 4px 3px #59402628)}
.desk.seat-a1{left:21.6667%;top:37.7778%}.desk.seat-a2{left:36.6667%;top:37.7778%}.desk.seat-a3{left:60%;top:37.7778%}.desk.seat-a4{left:75%;top:37.7778%}.desk.seat-b1{left:21.6667%;top:58.8889%}.desk.seat-b2{left:36.6667%;top:58.8889%}.desk.seat-b3{left:60%;top:58.8889%}.desk.seat-b4{left:75%;top:58.8889%}.desk.seat-c1{left:21.6667%;top:80%}.desk.seat-c2{left:36.6667%;top:80%}.desk.seat-c3{left:60%;top:80%}.desk.seat-c4{left:75%;top:80%}
@media(max-width:720px){.classroom:after{inset:24% 0 0}.north-wall{height:23%}.seat-progress{top:24%;min-height:48px;padding:4px 6px}.seat-progress>span{min-width:89px;height:38px;grid-template-columns:27px auto;padding:2px 5px}.seat-progress .student{width:24px;height:32px}.seat-progress b{font-size:.59rem}.seat-progress small{font-size:.51rem}.desk{width:20%;height:14%}.desk>.student{top:14%;width:39px;height:52px}.desk>small{bottom:-22%;max-width:82px;font-size:.53rem}.desk>strong{font-size:.52rem;padding:3px 5px}.desk>em{right:-11%;top:-4%;font-size:.5rem}.seat-tray{display:grid;grid-template-columns:1fr auto;text-align:left}.seat-tray button{min-width:130px}.seat-list{grid-template-columns:1fr}.seat-list .seat-choice{min-height:88px}.chalkboard b{font-size:.62rem}}
@media(max-width:400px){.seat-progress{gap:4px}.seat-progress>span{min-width:80px}.desk{width:21%;height:13%}.desk>.student{width:34px;height:46px}.desk>small{font-size:.48rem}.seat-tray{grid-template-columns:1fr}.seat-tray button{width:100%}}
.mock-launch{width:100%;min-height:76px;margin-top:16px;padding:11px 16px;display:grid;grid-template-columns:70px 1fr auto;align-items:center;gap:14px;text-align:left;border:3px solid #e56b78;border-radius:19px;background:linear-gradient(105deg,#fff2f3,#fff9da);color:var(--ink);box-shadow:0 7px 0 #d8b26e}.mock-launch>span:nth-child(2){display:grid}.mock-launch strong{font-size:1.05rem}.mock-launch small{color:#736a75}.mock-launch>b{font-size:1.4rem}.mock-glyph{height:48px;display:flex!important;align-items:end;justify-content:center}.mock-glyph i{width:22px;height:36px;margin-left:-4px;border:3px solid var(--ink);border-radius:50% 50% 9px 9px;background:var(--mint)}.mock-glyph i:nth-child(2){height:44px;background:var(--yellow)}.mock-glyph i:nth-child(3){background:var(--coral)}.demo-badge{padding:3px 7px;border-radius:999px;background:#fff0bf;color:#6e4a00;font-size:.58rem;font-style:normal;font-weight:950;white-space:nowrap}.demo-controls{z-index:25;position:absolute;right:18px;bottom:86px;display:flex;align-items:center;gap:5px;padding:6px;border:2px solid #d8c8ae;border-radius:14px;background:#fffaf0ef;box-shadow:0 5px 0 #c9b993}.demo-controls strong{padding:0 5px;color:#6c4bd3;font-size:.68rem;text-transform:uppercase}.demo-controls button{min-height:38px;padding:5px 9px;border:2px solid #d8cdbd;border-radius:9px;background:#fff;color:var(--ink);font-size:.68rem;font-weight:900}.demo-controls button:last-child{color:#a43f4b}.game:has(.demo-controls){position:relative}.game:has(.demo-controls) .classroom{padding-bottom:42px}
@media(max-width:720px){.mock-launch{grid-template-columns:54px 1fr auto}.mock-glyph{scale:.82}.demo-controls{position:static;order:5;width:100%;overflow-x:auto;justify-content:center;padding:4px}.demo-controls strong{display:none}.demo-controls button{min-height:38px;white-space:nowrap}.game:has(.demo-controls) .classroom{padding-bottom:0}}
