:root{--accent: #8fce9b;--accent-btn: #3a7d44;--accent-btn-hover: #4c9457;--accent-soft: #2b382c;--bg: #1d201b;--panel: #252922;--panel-2: #2e332a;--border: #414738;--text: #e9e4d3;--dim: #9d977f;--danger: #d4735f;--danger-soft: #3c2822;--soil: #241c12;--soil-edge: #27482e;--clay-edge: #6e2c1e;--sun: rgba(143, 206, 155, .07);--grass-line: linear-gradient(90deg, #3a7d44, #8fce9b 50%, #3a7d44)}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{background:radial-gradient(1100px 500px at 50% -8%,var(--sun),transparent 65%),linear-gradient(to bottom,var(--bg) 0%,var(--bg) 72%,var(--soil) 100%);background-attachment:fixed;color:var(--text);font-family:Segoe UI,system-ui,sans-serif}h1,h2,h3{margin:0 0 .5rem}.accent{color:var(--accent)}.dim{color:var(--dim);font-size:.9rem}a{color:var(--accent)}input{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.55rem .75rem;font-size:1rem;width:100%}input::placeholder{color:#7e795f}input,select,textarea{transition:outline-color .12s ease,box-shadow .12s ease}input:focus,select:focus,textarea:focus{outline:2px solid var(--accent-btn);outline-offset:-1px;box-shadow:0 0 0 4px #8fce9b1f}button,.button-like{background:linear-gradient(to bottom,var(--accent-btn-hover),var(--accent-btn));border:none;border-radius:8px;color:#f3f0e2;font-weight:600;padding:.55rem 1rem;font-size:.95rem;cursor:pointer;text-decoration:none;text-align:center;display:inline-block;box-shadow:0 2px 0 var(--soil-edge),0 3px 8px #00000059;transition:transform .08s ease,box-shadow .08s ease,filter .12s ease,background .12s ease,color .12s ease,opacity .12s ease}button:hover:not(:disabled),.button-like:hover{filter:brightness(1.1);transform:translateY(-1px);box-shadow:0 3px 0 var(--soil-edge),0 5px 10px #00000059}button:active:not(:disabled),.button-like:active{filter:brightness(.95);transform:translateY(2px);box-shadow:0 0 0 var(--soil-edge),inset 0 2px 4px #00000059}button:disabled{opacity:.45;cursor:not-allowed}button.ghost{background:transparent;color:var(--dim);padding:.15rem .35rem;font-weight:400}button.ghost:hover:not(:disabled){color:var(--text);background:var(--accent-soft)}button.ghost.danger:hover{color:var(--danger);background:var(--danger-soft)}button.danger-solid{background:linear-gradient(to bottom,#bf5038,#a8432f);color:#f3f0e2;box-shadow:0 2px 0 var(--clay-edge),0 3px 8px #00000059}button.danger-solid:hover:not(:disabled){background:linear-gradient(to bottom,#cc5d44,#b54a34);box-shadow:0 3px 0 var(--clay-edge),0 5px 10px #00000059}button.danger-solid:active:not(:disabled){box-shadow:0 0 0 var(--clay-edge),inset 0 2px 4px #00000059}button.ghost,.tab,.swatch,.emoji-cell,.shop-emoji,.overlay-tool-btn,.overlay-float-btn,.overlay-mod-actions button,button.danger-outline,.rating-btn,.drawer-close,.sticker-emoji-btn,.shop-manage-emoji{box-shadow:none}button.ghost:hover:not(:disabled),.tab:hover:not(:disabled),.swatch:hover:not(:disabled),.emoji-cell:hover,.shop-emoji:hover:not(:disabled),.overlay-tool-btn:hover,.overlay-float-btn:hover,.overlay-mod-actions button:hover,button.danger-outline:hover:not(:disabled),.rating-btn:hover,.drawer-close:hover,.sticker-emoji-btn:hover,.shop-manage-emoji:hover{box-shadow:none;transform:none;filter:none}button.ghost:active:not(:disabled),.tab:active:not(:disabled),.overlay-tool-btn:active,.overlay-float-btn:active,button.danger-outline:active:not(:disabled),.rating-btn:active,.drawer-close:active{box-shadow:none;transform:translateY(1px);filter:none}.swatch:active:not(:disabled),.emoji-cell:active,.shop-emoji:active:not(:disabled){box-shadow:none;filter:none}.landing{max-width:760px;margin:0 auto;padding:4rem 1.5rem;text-align:center}.landing h1{font-size:3rem;letter-spacing:-.02em;position:relative;display:inline-block}.splash-text{position:absolute;right:-2.8em;bottom:-.55em;transform:rotate(-17deg);transform-origin:center;color:#ff5;text-shadow:.08em .08em 0 #3f3f15;font-size:.3em;font-weight:700;letter-spacing:0;white-space:nowrap;pointer-events:none;animation:splash-throb 1.8s ease-in-out infinite alternate;z-index:2}@keyframes splash-throb{0%{transform:rotate(-17deg) scale(.92)}to{transform:rotate(-17deg) scale(1.1)}}.tagline{color:var(--dim);margin-bottom:2rem;font-size:1.05rem}.landing-cards{display:flex;gap:1.5rem;flex-wrap:wrap;justify-content:center}.dashboard{display:flex;gap:1.5rem;flex-wrap:wrap;justify-content:center;align-items:flex-start}.dashboard .card{max-width:380px}.launch-row{display:flex;align-items:center;justify-content:space-between;gap:.75rem;padding:.6rem 0;border-bottom:1px solid var(--border)}.launch-row:last-of-type{border-bottom:none}.launch-info{display:flex;flex-direction:column;gap:.1rem;text-align:left}.launch-actions{display:flex;align-items:center;gap:.35rem}.teacher-signin{justify-content:center}.card{background:var(--panel-2);border:1px solid var(--border);border-radius:14px;padding:1.5rem;flex:1 1 280px;max-width:340px;display:flex;flex-direction:column;gap:.75rem;text-align:left;box-shadow:inset 0 1px #e9e4d30f,0 3px 14px #0000004d;transition:transform .15s ease,box-shadow .15s ease,border-color .15s ease}.card:hover{transform:translateY(-2px);border-color:#4d5644;box-shadow:inset 0 1px #e9e4d314,0 6px 18px #00000059}.tab-row{display:flex;gap:.4rem}.tab{flex:1;background:var(--panel-2);color:var(--dim);border:1px solid var(--border);font-weight:500;padding:.4rem .5rem}.tab:hover:not(:disabled){background:var(--accent-soft);color:var(--text)}.tab.active{background:var(--accent-btn);color:#f3f0e2;border-color:var(--accent-btn)}.view{display:flex;flex-direction:column;height:100vh}.topbar{display:flex;align-items:center;gap:1rem;padding:.6rem 1rem;background:var(--panel);border-bottom:1px solid var(--border);position:relative}.topbar:after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:2px;background:var(--grass-line);opacity:.55;pointer-events:none}.brand{font-weight:700}.brand-plant{display:inline-block;position:relative;transform-origin:50% 88%;animation:sapling-sway 2.6s ease-in-out infinite}.brand-sapling{display:inline-block;height:1.5em;width:auto;vertical-align:-.45em}.brand:hover .brand-plant,h1:hover .brand-plant{animation-duration:.8s}@keyframes sapling-sway{0%,to{transform:rotate(-7deg)}50%{transform:rotate(7deg)}}.topbar .me,.topbar .join-code{margin-left:auto}.conn-dot{width:10px;height:10px;border-radius:50%}.conn-dot.on{background:var(--accent)}.conn-dot.off{background:var(--danger)}.overlay-btns{pointer-events:auto;position:fixed;top:.75rem;right:.75rem;display:flex;gap:.5rem;z-index:10}.overlay-slides{position:fixed;top:0;right:0;bottom:0;left:0;width:100%;height:100%;border:none;z-index:0}.overlay-root{position:relative;z-index:1}.slides-form{pointer-events:auto;position:fixed;top:3.4rem;right:.75rem;z-index:10;display:flex;gap:.4rem;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:.5rem;width:min(440px,calc(100vw - 1.5rem))}.overlay-float-btn{opacity:.5}.overlay-float-btn:hover{opacity:1}.overlay-float-btn.mod-on{opacity:1;background:#a8432f}.overlay-mod .overlay-msg{pointer-events:auto}.overlay-mod-actions{margin-left:.5rem;opacity:0}.overlay-msg:hover .overlay-mod-actions{opacity:1}.overlay-mod-actions button{background:#ffffff1f;padding:.05rem .3rem;font-size:.85em;border-radius:6px;margin-left:.15rem}.overlay-mod-actions button:hover{background:#ffffff47}.overlay-floating-note{color:var(--dim);text-align:center;margin:auto;font-size:1.1rem;pointer-events:auto}body.pip-body{background:#39423a;margin:0;overflow:hidden}.error-banner{background:var(--danger-soft);border:1px solid var(--danger);color:var(--danger);padding:.5rem 1rem;border-radius:8px;margin:.5rem 1rem;cursor:pointer}.freeze-banner{background:#dde8ee;border-bottom:1px solid #9db8c6;color:#38596b;padding:.4rem 1rem;text-align:center}.muted-banner{background:#f0e6d2;border-color:#c9a95e;color:#7a5f1e}.spotlight{background:var(--accent-soft);border-left:4px solid var(--accent);padding:.5rem 1rem;display:flex;gap:.5rem;align-items:center}.chat-feed{flex:1;overflow-y:auto;padding:.75rem 1rem}.chat-msg{padding:.4rem .5rem;border-radius:8px}.chat-msg:hover{background:var(--panel-2)}.chat-msg.teacher-msg{border-left:3px solid var(--accent);background:var(--accent-soft)}.chat-msg-head{display:flex;align-items:baseline;gap:.5rem}.chat-name{font-weight:600;color:var(--accent-deep)}.chat-time{color:var(--dim);font-size:.75rem}.chat-mod-actions{margin-left:auto;opacity:0}.chat-msg:hover .chat-mod-actions{opacity:1}.chat-content{white-space:pre-wrap;word-break:break-word}.chat-sticker{font-size:3rem;line-height:1.1}.chat-reactions{display:flex;gap:.25rem;align-items:center;flex-wrap:wrap}.reaction-count{background:var(--panel-2);border:1px solid var(--border);border-radius:999px;font-size:.8rem;padding:.05rem .5rem}.react-btn{opacity:0;font-size:.85rem}.chat-msg:hover .react-btn{opacity:.8}.real-name{color:var(--danger);font-weight:600}.chat-msg.acked-msg{background:var(--accent-soft);border-left:3px solid var(--accent)}.ack-badge{font-size:.8rem}.chat-msg.highlighted-msg{background:#facc1517;border-left:3px solid #facc15;box-shadow:inset 0 0 18px #facc1512}.highlight-badge{font-size:.8rem}.chat-icon{font-size:.95em}.highlight-toggle{font-variant-numeric:tabular-nums}.highlight-toggle.highlight-on{color:#facc15;background:#facc151f;outline:1px solid #facc15}.system-msg{text-align:center;color:var(--dim);font-size:.82rem;padding:.3rem 0}.chat-input-row{display:flex;gap:.5rem;padding:.75rem 1rem;background:var(--panel);border-top:1px solid var(--border)}.composer{position:relative}.composer-tool{font-size:1.1rem;padding:.4rem .5rem;line-height:1}.composer-panel{position:absolute;bottom:calc(100% + 8px);right:.75rem;width:min(460px,calc(100% - 1.5rem));max-height:min(55vh,24rem);overflow-y:auto;background:var(--panel);border:1px solid var(--border);border-radius:12px;box-shadow:0 12px 32px #00000080;padding:.6rem .75rem;z-index:30}.composer-panel .shop-head{margin-bottom:.4rem}.composer-panel .note-input-row{padding:.4rem 0 0;border-top:none;background:transparent}.picker-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(52px,1fr));gap:.35rem}.picker-hint{font-size:.8rem;margin:.5rem 0 0}.link-btn{background:none;border:none;box-shadow:none;padding:0;color:var(--accent);font-size:inherit;text-decoration:underline;cursor:pointer}.link-btn:hover{background:none;transform:none;color:var(--text)}.shop-toggle{font-size:.95rem}button.ghost.toggle-active{background:var(--accent-soft);color:var(--text);box-shadow:inset 0 2px 5px #00000073;outline:1px solid var(--accent-btn);border-radius:8px}.drawer-close{font-size:1rem}.push-right{margin-left:auto}.shop-drawer{background:var(--panel);border-top:1px solid var(--border);padding:.75rem 1rem}.shop-head{display:flex;gap:1rem;align-items:baseline;margin-bottom:.5rem}.shop-head .accent{margin-left:auto;font-weight:700}.shop-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(90px,1fr));gap:.5rem}.shop-item{background:var(--panel-2);border:1px solid var(--border);border-radius:10px;padding:.5rem;text-align:center;display:flex;flex-direction:column;gap:.25rem;align-items:center}.shop-item.owned{border-color:var(--accent);background:var(--accent-soft)}.shop-emoji{background:none;font-size:2rem;padding:0;line-height:1}.shop-emoji:hover:not(:disabled){background:none;transform:scale(1.15)}.shop-emoji:disabled{opacity:.45}.shop-name{font-size:.78rem;color:var(--dim)}.shop-buy{padding:.2rem .6rem;font-size:.8rem}.drive-error{color:var(--danger);font-size:.85rem}.style-drawer{display:flex;flex-direction:column;gap:.5rem}.style-section{display:flex;flex-direction:column;gap:.25rem}.swatch-row{display:flex;flex-wrap:wrap;gap:.35rem}.swatch{width:2rem;height:2rem;border-radius:50%;padding:0;border:2px solid transparent;font-size:1.05rem;line-height:1;display:inline-flex;align-items:center;justify-content:center}.swatch:hover:not(:disabled){transform:scale(1.12)}.swatch-icon{background:var(--panel-2)}.swatch-none{background:var(--panel-2);color:var(--dim);font-size:.8rem}.swatch-active{border-color:var(--text);outline:2px solid var(--accent)}.swatch-locked{position:relative;opacity:.75}.swatch-locked:disabled{opacity:.3}.swatch-cost{position:absolute;bottom:-.35rem;right:-.35rem;background:var(--panel);border:1px solid var(--border);border-radius:999px;color:var(--accent);font-size:.58rem;font-weight:700;padding:0 .25rem;line-height:1.2}.style-drawer .swatch-row{max-height:7.5rem;overflow-y:auto;padding:.15rem 0 .4rem}.shop-manage-row{align-items:center}.shop-manage-emoji{font-size:1.2rem;line-height:1}.sticker-add-row{padding:.5rem 0 0;background:transparent;border:none}.sticker-emoji-input{width:3.2rem;text-align:center;flex:none}.sticker-cost-input{width:4.2rem;flex:none}.sticker-add-row input:not(.sticker-emoji-input):not(.sticker-cost-input){flex:1;min-width:0}.queue-row{border-style:dashed}.vote-reject{margin-left:.25rem}.hype-meter{display:flex;flex-direction:column;gap:.3rem;padding:.4rem 0}.hype-compact{padding:.35rem 1rem;background:var(--panel);border-bottom:1px solid var(--border)}.hype-bar-row{display:flex;align-items:center;gap:.5rem}.hype-bar{flex:1;height:10px;border-radius:999px;background:var(--panel-2);border:1px solid var(--border);position:relative}.hype-fill{height:100%;border-radius:999px;background:linear-gradient(90deg,#f87171,#facc15);transition:width .4s ease;max-width:100%}.hype-runner{position:absolute;top:50%;left:0;transform:translate(-50%,-52%);font-size:.95rem;line-height:1;transition:left .4s ease;filter:drop-shadow(0 1px 2px rgba(0,0,0,.6));pointer-events:none}.house-theme-editor{display:flex;flex-direction:column;gap:.35rem}.house-theme-row{display:flex;gap:.4rem;align-items:center}.house-theme-row input{flex:1;min-width:0}.house-emoji-input{flex:none!important;width:3.2rem;text-align:center}.house-color-dot{width:.85rem;height:.85rem;border-radius:50%;flex:none;border:1px solid var(--border)}.house-theme-actions{display:flex;gap:.4rem;flex-wrap:wrap}.hype-needs,.hype-cooldown{font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.8rem}.hype-standings{display:flex;gap:.35rem;flex-wrap:wrap}.house-chip{border:1px solid;border-radius:999px;padding:.05rem .5rem;font-size:.82rem;font-variant-numeric:tabular-nums}.house-chip.house-mine{background:var(--accent-soft);font-weight:700}.house-badge{font-size:.95em}.overlay-hype{position:absolute;top:0;left:0;right:0;z-index:5}.overlay-hype .hype-compact{background:#182018d9;border-bottom:1px solid #7fbc8c;color:#f4f1e6}.leaderboard{display:flex;flex-direction:column;gap:.25rem}.leaderboard-title{font-weight:700;margin-bottom:.15rem}.leaderboard-row{display:flex;align-items:baseline;gap:.45rem}.leaderboard-rank{min-width:1.6rem;text-align:right;font-variant-numeric:tabular-nums}.leaderboard-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}.leaderboard-score{font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent)}.board-panel{background:var(--panel);border-bottom:1px solid var(--border);padding:.5rem 1rem;max-height:40vh;overflow-y:auto}.side-block h3 button.ghost{font-size:.8rem;margin-left:.25rem}.drag-handle{pointer-events:auto;cursor:grab;touch-action:none;-webkit-user-select:none;user-select:none;width:fit-content;padding:0 .5rem;border-radius:6px;background:#18201899;color:#8fce9b;font-size:.9rem;opacity:.35;transition:opacity .15s}.drag-handle:hover,.drag-handle:active{opacity:1;cursor:grabbing}.overlay-chat-wrap{display:flex;flex-direction:column;gap:.25rem;min-height:0;font-size:calc(1.25rem * var(--chat-scale, 1))}.overlay-chat-wrap .overlay-sticker{font-size:calc(2.4rem * var(--chat-scale, 1))}.overlay-chat-wrap .chat-sticker-img{max-height:calc(3.5rem * var(--chat-scale, 1));max-width:calc(8rem * var(--chat-scale, 1))}.overlay-chat-tools{display:flex;gap:.3rem;align-items:center}.overlay-tool-btn{pointer-events:auto;background:#18201899;color:#8fce9b;font-size:.8rem;padding:.1rem .45rem;border-radius:6px;opacity:.35;transition:opacity .15s}.overlay-chat-tools:hover .overlay-tool-btn,.overlay-tool-btn.mod-on{opacity:1}.overlay-tool-btn.mod-on{background:#a8432f;color:#f3f0e2}.overlay-board{pointer-events:none;position:absolute;top:3.2rem;right:1rem;z-index:6;background:#182018e0;border:1px solid #7fbc8c;border-radius:10px;padding:.5rem .8rem;color:#f4f1e6;text-shadow:0 1px 3px rgba(0,0,0,.8);min-width:16rem;font-size:1rem}.overlay-board .leaderboard-score{color:#8fce9b}.overlay-board .drag-handle{margin-bottom:.2rem}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:50}.confetti-piece{position:absolute;top:-2rem;animation:confetti-fall 3.2s ease-in forwards}@keyframes confetti-fall{0%{transform:translateY(0) rotate(0);opacity:1}to{transform:translateY(105vh) rotate(540deg);opacity:.7}}.vote-card{background:var(--accent-soft);border:1px solid var(--accent-btn);border-radius:10px;margin:.5rem 1rem;padding:.6rem .9rem;display:flex;flex-direction:column;gap:.4rem}.vote-head{display:flex;align-items:baseline;gap:.4rem}.vote-clock{margin-left:auto;font-variant-numeric:tabular-nums;font-weight:700;color:var(--accent)}.vote-content{font-style:italic}.vote-actions{display:flex;align-items:center;gap:.5rem}.vote-tally{margin-left:auto;font-variant-numeric:tabular-nums}.vote-cast{outline:2px solid var(--accent)}.vote-compact{margin:.4rem .75rem;padding:.45rem .7rem;font-size:.92rem}.notes-drawer{max-height:45vh;display:flex;flex-direction:column}.notes-list{overflow-y:auto;display:flex;flex-direction:column;gap:.35rem}.console-notes{max-height:200px}.note-row{display:flex;align-items:baseline;gap:.5rem;background:var(--panel-2);border:1px solid var(--border);border-radius:8px;padding:.35rem .6rem}.note-content{flex:1}.note-input-row{padding:.5rem 0;background:transparent;border:none}.overlay-vote{pointer-events:none}.overlay-vote .vote-card{background:#182018e6;border-color:#7fbc8c;color:#f4f1e6;text-shadow:0 1px 3px rgba(0,0,0,.8)}.overlay-vote .vote-clock{color:#8fce9b}.poll-card{background:var(--accent-soft);border:1px solid var(--accent-btn);border-radius:10px;margin:.5rem 1rem;padding:.6rem .9rem;display:flex;flex-direction:column;gap:.35rem;max-height:45vh;overflow-y:auto}.poll-head{display:flex;align-items:baseline;gap:.4rem}.poll-cancel{margin-left:auto}.poll-empty{margin:0}.poll-answer{display:flex;align-items:center;gap:.5rem;background:var(--panel);border:1px solid var(--border);border-radius:8px;padding:.35rem .6rem}.poll-answer-text{font-weight:600;overflow-wrap:anywhere}.poll-first{font-size:.78rem;white-space:nowrap}.poll-count{margin-left:auto;background:var(--accent-soft);border:1px solid var(--accent-btn);border-radius:999px;min-width:1.6rem;text-align:center;font-weight:700;padding:.05rem .4rem}.poll-agree{font-size:.85rem;white-space:nowrap}.poll-pick{padding:.25rem .6rem;font-weight:700;white-space:nowrap}.poll-locked{margin:.25rem 0 0}.poll-input-row{padding:.35rem 0 0;border-top:none;background:transparent}.poll-form{padding:.5rem 1rem;background:var(--panel);border-top:none}.poll-result{animation:poll-pop .35s ease-out}.poll-result-answer{font-size:1.1rem;font-weight:700}.poll-winners{display:flex;flex-wrap:wrap;gap:.4rem .9rem}.poll-winner{white-space:nowrap}@keyframes poll-pop{0%{transform:scale(.94);opacity:0}to{transform:scale(1);opacity:1}}.overlay-poll{position:absolute;top:4.5rem;left:50%;transform:translate(-50%);width:min(560px,92vw);z-index:12;pointer-events:none}.overlay-poll button{pointer-events:auto}.overlay-poll .poll-card{background:#182018eb;border-color:#7fbc8c;color:#f4f1e6;text-shadow:0 1px 3px rgba(0,0,0,.8);margin:0}.overlay-poll .poll-answer{background:#00000059}.joincode-root{height:100vh;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.75rem;text-align:center}.joincode-root .brand{font-size:1.5rem;font-weight:700}.joincode-class{color:var(--dim);font-size:1.4rem}.joincode-label{text-transform:uppercase;letter-spacing:.2em;color:var(--dim)}.joincode-code{font-size:clamp(4rem,18vw,11rem);font-weight:800;letter-spacing:.12em;color:var(--accent);font-variant-numeric:tabular-nums}.joincode-hint{color:var(--dim);font-size:1.2rem}.console-grid{display:flex;flex:1;min-height:0}.console-chat{flex:1;display:flex;flex-direction:column;min-width:0}.console-side{width:300px;border-left:1px solid var(--border);background:var(--panel);overflow-y:auto;padding:1rem;display:flex;flex-direction:column;gap:1.25rem}.side-block{display:flex;flex-direction:column;gap:.5rem}.quick-actions{display:grid;grid-template-columns:1fr 1fr;gap:.4rem}.quick-actions .button-like{text-align:center}.section-head{cursor:pointer;-webkit-user-select:none;user-select:none;display:flex;align-items:baseline;gap:.35rem}.section-head:hover{color:var(--accent)}.section-chevron{display:inline-block;transition:transform .12s;font-size:.8rem;color:var(--dim)}.section-chevron.open{transform:rotate(90deg)}.section-body{display:flex;flex-direction:column;gap:.5rem}.shop-manage-row,.sticker-add-row{position:relative}.emoji-picker{position:absolute;top:100%;left:0;right:0;z-index:20;background:var(--panel-2);border:1px solid var(--border);border-radius:10px;box-shadow:0 8px 24px #00000073;padding:.5rem;max-height:15rem;overflow-y:auto}.emoji-group-label{font-size:.72rem;text-transform:uppercase;letter-spacing:.05em;margin:.3rem 0 .1rem}.emoji-grid{display:flex;flex-wrap:wrap;gap:.1rem}.emoji-cell{background:none;padding:.15rem;font-size:1.15rem;line-height:1;border-radius:6px}.emoji-cell:hover{background:var(--accent-soft);transform:scale(1.2)}.sticker-emoji-btn{font-size:1.2rem;padding:.2rem .5rem;flex:none}.reveal-log{display:flex;flex-direction:column;gap:.3rem;max-height:14rem;overflow-y:auto}.reveal-log-row{font-size:.88rem}button.danger-outline{background:transparent;border:1px solid var(--danger);color:var(--danger)}button.danger-outline:hover:not(:disabled){background:var(--danger-soft)}.automod-row{display:flex;align-items:center;gap:.5rem;font-size:.92rem;cursor:pointer}.automod-row input{width:auto;accent-color:var(--accent-btn)}.course-row{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem;padding:.15rem 0}.course-row a{text-decoration:none}.course-row a:hover{text-decoration:underline}.roster-row{display:flex;align-items:center;gap:.5rem;padding:.25rem 0}.roster-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.roster-points{font-variant-numeric:tabular-nums;font-weight:600}.roster-wallet{font-variant-numeric:tabular-nums;font-size:.82rem}.home-link{text-decoration:none;font-size:1.1rem;margin-right:.25rem}.roster-actions{display:flex}.presence{width:8px;height:8px;border-radius:50%;flex-shrink:0}.presence.on{background:var(--accent)}.presence.off{background:var(--border)}.overlay-root{background:transparent;height:100vh;display:flex;flex-direction:column;justify-content:flex-end;padding:1rem;gap:.5rem;overflow:hidden;pointer-events:none;font-size:1.25rem}body:has(.overlay-root):not(.pip-body){background:transparent}.overlay-spotlight{background:rgba(24,32,24,calc(var(--overlay-alpha, .72) + .15));border-left:4px solid #7fbc8c;border-radius:8px;padding:.6rem 1rem;color:#f4f1e6;text-shadow:0 1px 3px rgba(0,0,0,.8)}.overlay-feed{display:flex;flex-direction:column;gap:.35rem;max-height:55vh;overflow-y:auto;pointer-events:auto;scrollbar-width:thin;scrollbar-color:rgba(143,206,155,.4) transparent}.chat-sticker-img,.shop-img{max-height:3.5rem;max-width:8rem;border-radius:6px;vertical-align:middle}.reveal-log-tools select{background:var(--panel-2);border:1px solid var(--border);border-radius:8px;color:var(--text);padding:.35rem .5rem;flex:1}.overlay-msg{background:rgba(24,32,24,var(--overlay-alpha, .72));border-radius:8px;padding:.35rem .75rem;color:#f4f1e6;text-shadow:0 1px 3px rgba(0,0,0,.8);width:fit-content;max-width:100%}.overlay-name{color:#8fce9b;font-weight:700;margin-right:.35rem}.overlay-sticker{font-size:2.4rem}.overlay-reaction{margin-left:.4rem}.overlay-frozen{color:#bcd3de;text-shadow:0 1px 3px rgba(0,0,0,.8)}.modal-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#0009;display:flex;align-items:center;justify-content:center;z-index:60}.modal{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:1.25rem;width:min(480px,92vw);max-height:85vh;overflow-y:auto;display:flex;flex-direction:column;gap:.6rem}.modal h3{margin:0}.modal-actions{display:flex;justify-content:flex-end;gap:.5rem;margin-top:.25rem}.rating-row{display:flex;gap:.4rem;justify-content:space-between}.rating-btn{flex:1;display:flex;flex-direction:column;align-items:center;gap:.15rem;padding:.5rem .25rem;background:var(--bg);border:2px solid var(--border)}.rating-btn .rating-emoji{font-size:1.6rem}.rating-btn.rating-active{border-color:var(--accent);background:var(--accent-soft)}.grade-modal{width:min(560px,94vw)}.grade-list{display:flex;flex-direction:column;gap:.3rem}.grade-row{display:flex;align-items:center;gap:.6rem}.grade-row .grade-name{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.grade-row input{width:4.5rem;text-align:center}.roster-grade{color:var(--accent);font-weight:600;cursor:help}*{scrollbar-width:thin;scrollbar-color:#4b543f transparent}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:transparent}*::-webkit-scrollbar-thumb{background:#4b543f;border-radius:6px;border:2px solid transparent;background-clip:padding-box}*::-webkit-scrollbar-thumb:hover{background:#5d6850;background-clip:padding-box}::selection{background:var(--accent-btn);color:#f3f0e2}.side-block,.modal,.shop-item{box-shadow:inset 0 1px #e9e4d30d,0 2px 8px #00000040}.roster-row{border-radius:6px;transition:background .12s ease}.roster-row:hover{background:var(--accent-soft)}.section-head{transition:color .12s ease}.chat-msg{transition:background .12s ease}@keyframes sprout{0%{opacity:0;transform:translateY(6px) scale(.98)}to{opacity:1;transform:translateY(0) scale(1)}}.chat-msg,.overlay-msg{animation:sprout .18s ease-out}@media(prefers-reduced-motion:reduce){.chat-msg,.overlay-msg{animation:none!important}button,.button-like,.card{transition:none}}.hype-fill-run{background:linear-gradient(90deg,#d9a441,#e6c35c)}.hype-banner{position:fixed;left:0;right:0;top:44%;z-index:40;pointer-events:none;display:flex;justify-content:center;animation:hype-banner-fade 3.6s ease forwards}.hype-banner-inner{width:100%;overflow:hidden;background:#1216108c;border-top:2px solid rgba(143,206,155,.55);border-bottom:2px solid rgba(143,206,155,.55);padding:.55rem 0}.hype-banner-text{display:inline-block;white-space:nowrap;font-weight:800;font-size:2rem;letter-spacing:.02em;color:#fff;text-shadow:0 2px 6px rgba(0,0,0,.8);padding-left:100%;animation:hype-banner-scroll 3.6s linear forwards}@keyframes hype-banner-scroll{0%{transform:translate(0)}to{transform:translate(-100%)}}@keyframes hype-banner-fade{0%{opacity:0}8%{opacity:1}85%{opacity:1}to{opacity:0}}@media(prefers-reduced-motion:reduce){.hype-banner-text{padding-left:0;animation:none;text-align:center;width:100%}.hype-banner{animation:hype-banner-fade 3.6s ease forwards}}.sticker-broken{font-size:1rem;opacity:.7;cursor:help}.side-resizer{width:6px;cursor:col-resize;flex:none;background:transparent;border-left:1px solid var(--border);transition:background .12s ease;touch-action:none}.side-resizer:hover,.side-resizer:active{background:var(--accent-btn)}.console-side{flex:none}.export-picker{display:flex;flex-direction:column;gap:.3rem}.export-picker h3{margin:0}.export-dest{border-top:1px solid var(--border);margin-top:.35rem;padding-top:.35rem;display:flex;flex-direction:column;gap:.25rem}.brand-sapling-wrap{display:inline-block}.brand-bloom{position:absolute;left:0;right:0;top:-.34em;text-align:center;font-size:.6em;line-height:1;pointer-events:none;transform-origin:50% 100%;animation:bloom-pop .45s ease;text-shadow:0 1px 3px rgba(0,0,0,.35)}@keyframes bloom-pop{0%{transform:scale(.2) rotate(-25deg)}70%{transform:scale(1.25) rotate(8deg)}to{transform:scale(1) rotate(0)}}.export-picker input[type=checkbox],.export-dest input[type=radio]{width:17px;height:17px;accent-color:var(--accent-btn);flex:none}.me-wrap{position:relative;cursor:help}.me-panel{position:absolute;top:calc(100% + .55rem);right:0;z-index:50;width:280px;background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:.75rem .9rem;box-shadow:inset 0 1px #e9e4d30d,0 8px 22px #00000073;cursor:default;animation:sprout .15s ease-out}.me-panel-head{margin-bottom:.45rem}.me-stat{display:flex;justify-content:space-between;gap:.75rem;padding:.15rem 0;font-size:.92rem}.me-stat strong{font-variant-numeric:tabular-nums}.reconnect-banner{background:#3d3520;color:#e6c35c;animation:reconnect-pulse 1.6s ease-in-out infinite}@keyframes reconnect-pulse{0%,to{opacity:1}50%{opacity:.6}}@media(pointer:coarse){button.ghost{padding:.45rem .6rem}.swatch{width:2.6rem;height:2.6rem}.emoji-cell{padding:.4rem;font-size:1.35rem}.roster-actions button{padding:.4rem .5rem}}@media(max-width:640px){.topbar{gap:.5rem;padding:.5rem .6rem;flex-wrap:wrap}.topbar .me{font-size:.9rem}.me-panel{width:min(280px,calc(100vw - 1.5rem))}.landing{padding:2rem 1rem}.landing h1{font-size:2.2rem}.chat-input-row{padding:.5rem .6rem;gap:.4rem}.composer-panel{right:.4rem;width:calc(100% - .8rem);max-height:50vh}.shop-grid{grid-template-columns:repeat(auto-fill,minmax(78px,1fr))}.style-drawer .swatch-row{max-height:10rem}.console-side{width:min(300px,85vw)!important}}button:focus-visible,.button-like:focus-visible,a:focus-visible,.section-head:focus-visible,.side-resizer:focus-visible{outline:2px solid var(--accent);outline-offset:2px}
