@import"https://fonts.googleapis.com/css2?family=Nunito:ital,wght@0,500;0,600;0,700;0,800;0,900;1,700&family=Prompt:wght@400;500;600;700;800&display=swap";.avatar-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:var(--space-2)}.avatar-option{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:12px 6px;background:#fff;border:1.5px solid var(--color-border);border-radius:var(--radius-md);cursor:pointer;transition:all .15s ease;gap:6px;box-shadow:var(--shadow-sm)}.avatar-option:hover{background:#f8fafc;border-color:var(--color-border-hover);transform:translateY(-2px);box-shadow:var(--shadow-card)}.avatar-option:active{transform:scale(.96)}.avatar-icon-wrap{width:42px;height:42px;border-radius:50%;display:flex;align-items:center;justify-content:center;background:#f1f5f9;color:var(--avatar-bg, var(--color-primary));transition:all .15s ease}.avatar-option.is-selected{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 3px #4f46e533,var(--shadow-card)}.avatar-option.is-selected .avatar-icon-wrap{background:var(--avatar-bg);color:#fff;box-shadow:0 4px 10px #00000026}.avatar-label-text{font-size:.8rem;font-weight:600;color:var(--color-text-dim)}.avatar-option.is-selected .avatar-label-text{color:var(--color-primary);font-weight:700}.mc-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3)}@media (max-width: 480px){.mc-grid{grid-template-columns:1fr}}.mc-option{display:flex;align-items:center;gap:var(--space-3);background:var(--option-color);border:none;border-radius:var(--radius-md);padding:16px 20px;color:#fff;font-weight:700;font-size:1.05rem;text-align:left;cursor:pointer;box-shadow:0 4px 12px #0000001a;transition:all var(--transition-fast)}.mc-option:hover:not(:disabled){transform:translateY(-2px);box-shadow:0 6px 16px #00000026}.mc-option:active:not(:disabled){transform:scale(.97)}.mc-option:disabled{opacity:.6}.mc-option.is-picked{box-shadow:0 0 0 4px #fff inset,0 4px 12px #0003;opacity:1}.mc-option.is-correct{box-shadow:0 0 0 4px #fff inset,0 0 0 3px var(--color-success);opacity:1}.mc-option.is-wrong{box-shadow:0 0 0 4px #fff inset,0 0 0 3px var(--color-danger)}.mc-shape{font-size:1.4rem;line-height:1}.mc-result{text-align:center;padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-alt);border:1px solid var(--color-border)}.mc-result.is-correct{color:var(--color-success);background:#10b98114;border-color:var(--color-success)}.mc-result.is-wrong{color:var(--color-danger);background:#ef444414;border-color:var(--color-danger)}.mc-points{font-size:1.5rem;font-weight:800;font-family:Nunito,sans-serif;margin-top:var(--space-1)}.installer-window{border-radius:var(--radius-md);overflow:hidden;border:1px solid var(--color-border);background:#fff;color:#1a1a1a}.installer-titlebar{display:flex;align-items:center;gap:var(--space-2);background:#e6e6e6;padding:10px 12px;border-bottom:1px solid #cfcfcf}.installer-dots{display:flex;gap:6px}.installer-dots span{width:10px;height:10px;border-radius:50%;background:#b5b5b5}.installer-title{font-size:.9rem;font-weight:600;color:#333}.installer-body{padding:var(--space-4)}.installer-heading{font-size:1.05rem;margin-bottom:var(--space-3);color:#111}.installer-checklist{list-style:none;margin:0 0 var(--space-4);padding:0;display:flex;flex-direction:column;gap:10px}.installer-check-row{border:1.5px solid #e2e8f0;border-radius:var(--radius-md);padding:12px 14px;background:#fff;transition:all var(--transition-fast)}.installer-check-row:hover{border-color:#cbd5e1;background:#f8fafc}.installer-check-label{display:flex;align-items:center;gap:12px;font-size:.95rem;font-weight:500;color:var(--color-text);cursor:pointer;-webkit-user-select:none;user-select:none}.installer-check-label input{width:20px;height:20px;accent-color:var(--color-primary);cursor:pointer}.installer-check-row.is-answer-key{display:flex;align-items:center;justify-content:space-between;gap:10px;border-color:var(--color-success);background:#10b98114}.installer-check-row.is-answer-key .installer-check-label{color:var(--color-success)}.installer-required-badge{flex-shrink:0;background:var(--color-success);color:#fff;font-size:.75rem;font-weight:700;padding:3px 10px;border-radius:999px;white-space:nowrap}.order-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.order-card{display:flex;align-items:center;gap:var(--space-3);background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:14px 16px;cursor:grab;box-shadow:var(--shadow-sm);transition:all var(--transition-fast)}.order-card:hover{border-color:var(--color-primary);transform:translateY(-1px);box-shadow:var(--shadow-card)}.order-index{display:flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:50%;background:var(--color-primary);color:#fff;font-weight:800;font-family:Nunito,sans-serif;font-size:.95rem;flex-shrink:0}.order-text{flex:1;font-weight:600;color:var(--color-text)}.order-arrows{display:flex;flex-direction:column;gap:4px}.order-arrow-btn{display:flex;align-items:center;justify-content:center;width:32px;height:26px;border:1px solid var(--color-border);background:var(--color-surface-alt);color:var(--color-text);border-radius:var(--radius-sm);cursor:pointer;transition:all var(--transition-fast)}.order-arrow-btn:hover:not(:disabled){background:var(--color-surface-hover);border-color:var(--color-primary);color:var(--color-primary)}.order-arrow-btn:disabled{opacity:.3;cursor:not-allowed}.match-diagram{display:flex;flex-wrap:wrap;align-items:center;gap:var(--space-2);justify-content:center;padding:var(--space-3) 0}.match-slot-wrap{display:flex;align-items:center;gap:var(--space-2)}.match-slot{position:relative;min-width:140px;min-height:64px;display:flex;align-items:center;justify-content:center;text-align:center;padding:var(--space-2);border:2px dashed var(--color-border);border-radius:var(--radius-md);background:var(--color-surface-alt);font-size:.95rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast)}.match-slot.is-placed{border-style:solid;border-color:var(--color-primary);color:var(--color-primary);background:var(--color-primary-dim);font-weight:700}.match-slot-clear{position:absolute;top:-8px;right:-8px;width:20px;height:20px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--color-text-dim);color:#fff;box-shadow:var(--shadow-sm)}.match-slot.is-correct{border-style:solid;border-color:var(--color-success);color:var(--color-success);background:#10b9811a;cursor:default}.match-slot.is-wrong{border-style:solid;border-color:var(--color-danger);color:var(--color-danger);background:#ef444414;cursor:default}.match-connector{font-size:.85rem;color:var(--color-text-dim);font-weight:600;white-space:nowrap}.match-pool{display:flex;flex-wrap:wrap;gap:var(--space-2);justify-content:center}.match-chip{background:var(--color-primary);color:#fff;border:none;border-radius:var(--radius-md);padding:10px 18px;font-weight:600;cursor:grab;box-shadow:0 4px 10px #4f46e540;transition:all var(--transition-fast)}.match-chip:hover{background:var(--color-primary-hover);transform:translateY(-2px);box-shadow:0 6px 14px #4f46e559}.match-chip.is-selected{outline:3px solid var(--color-accent)}.match-chip:active{transform:scale(.95)}.match-success{color:var(--color-success);font-weight:700}.match-result{text-align:center;padding:var(--space-4);border-radius:var(--radius-md);background:var(--color-surface-alt);border:1px solid var(--color-border)}.match-result.is-correct{color:var(--color-success);background:#10b98114;border-color:var(--color-success)}.match-result.is-wrong{color:var(--color-danger);background:#ef444414;border-color:var(--color-danger)}.match-points{font-size:1.5rem;font-weight:800;font-family:Nunito,sans-serif;margin-top:var(--space-1)}.play-page{padding-top:var(--space-3);background:#f8fafc}.play-header{width:100%;max-width:520px;padding:10px 16px;margin-bottom:var(--space-3);background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-lg);box-shadow:var(--shadow-card)}.play-nickname{font-size:1rem;font-weight:700;color:var(--color-text);margin-left:6px}.play-stats{gap:8px}.stat-pill{padding:4px 10px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:700}.star-pill{background:#fef3c7;color:#b45309;gap:4px}.score-pill{background:#f1f5f9;color:var(--color-text);border:1px solid var(--color-border);font-family:Nunito,ui-monospace,monospace}.play-waiting-card{padding:var(--space-5) var(--space-4);background:#fff;border-radius:var(--radius-xl);box-shadow:var(--shadow-card)}.join-page{position:relative;min-height:100vh;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:var(--space-4) var(--space-3);overflow:hidden;background:radial-gradient(560px circle at 10% -8%,rgba(79,70,229,.14),transparent 60%),radial-gradient(480px circle at 105% 0%,rgba(2,132,199,.12),transparent 55%),radial-gradient(420px circle at 90% 105%,rgba(217,119,6,.09),transparent 55%),var(--color-bg)}.join-orb{position:absolute;display:block;border-radius:50%;pointer-events:none;opacity:.55;z-index:0}.join-orb-a{width:90px;height:90px;top:-2%;left:-12%;background:radial-gradient(circle at 32% 32%,#a5b4fc,transparent 72%);animation:join-drift 7s ease-in-out infinite}.join-orb-b{width:56px;height:56px;top:10%;right:-10%;background:radial-gradient(circle at 32% 32%,#7dd3fc,transparent 72%);animation:join-drift 9s ease-in-out infinite reverse}.join-orb-c{width:50px;height:50px;bottom:6%;left:-9%;background:radial-gradient(circle at 32% 32%,#fcd34d,transparent 72%);animation:join-drift 8s ease-in-out infinite}@keyframes join-drift{0%,to{transform:translate(0)}50%{transform:translate(10px,-16px)}}.join-card-wrap{position:relative;z-index:1;width:100%}.join-card-accent{position:relative;overflow:hidden;border-radius:var(--radius-xl);box-shadow:var(--shadow-elevated)}.join-card-accent:before{content:"";position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--color-primary),var(--color-accent),#fbbf24)}.join-card{padding:var(--space-5)}.join-pin-field label{display:flex;align-items:center;justify-content:center;gap:6px;text-align:center;font-size:.88rem}.join-pin-field .join-pin-input{width:100%;text-align:center;font-family:Prompt,monospace;font-size:clamp(1.4rem,5vw,2rem);font-weight:800;letter-spacing:.26em;text-transform:uppercase;padding:15px 12px;border-radius:var(--radius-md);border:2px solid var(--color-border);background:var(--color-surface-alt);color:var(--color-primary)}.join-pin-field .join-pin-input::placeholder{color:var(--color-text-muted);letter-spacing:.18em;font-weight:700;opacity:.55}.join-pin-field .join-pin-input:focus{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 4px #4f46e529}.join-cta.btn-primary{border-radius:999px;padding:13px 22px;font-size:1rem;background:linear-gradient(120deg,var(--color-primary),var(--color-accent));box-shadow:0 10px 24px -8px #4f46e573}.join-cta.btn-primary:hover{background:linear-gradient(120deg,var(--color-primary-hover),var(--color-accent));box-shadow:0 14px 28px -8px #4f46e580}.join-cta svg{transition:transform var(--transition-fast)}.join-cta:hover svg{transform:translate(3px)}@media (max-width: 480px){.page{padding:var(--space-3)}}.teacher-room-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:10px}.teacher-room-item{background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:14px 16px;transition:all var(--transition-fast)}.teacher-room-item:hover{border-color:var(--color-primary);background:#fff;box-shadow:var(--shadow-sm)}.teacher-room-code{font-family:Nunito,ui-monospace,monospace;font-weight:800;font-size:1.15rem;letter-spacing:.5px;color:var(--color-primary)}.leaderboard-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a73;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;padding:var(--space-3);z-index:50}.leaderboard-panel{width:100%;max-width:640px;max-height:90vh;overflow-y:auto;background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-xl);padding:var(--space-4);box-shadow:var(--shadow-elevated)}.leaderboard-header{border-bottom:1px solid var(--color-border);padding-bottom:var(--space-3)}.leaderboard-header h2{font-size:1.3rem;font-weight:700;margin-bottom:0}.leaderboard-trophy-icon{color:#f59e0b}.podium{display:flex;align-items:flex-end;justify-content:center;gap:12px;min-height:220px;padding:var(--space-3) var(--space-2) 0}.podium-slot{display:flex;flex-direction:column;align-items:center;flex:1;max-width:33%;opacity:0;transform:translateY(16px);transition:all .35s cubic-bezier(.34,1.56,.64,1)}.podium-slot.is-visible{opacity:1;transform:translateY(0)}.podium-avatar-wrap{position:relative;margin-bottom:8px}.podium-rank-badge{position:absolute;top:-4px;right:-6px;width:22px;height:22px;border-radius:50%;font-size:.8rem;font-weight:800;font-family:Nunito,sans-serif;display:flex;align-items:center;justify-content:center;color:#fff;border:2px solid #ffffff;box-shadow:var(--shadow-sm)}.podium-rank-badge.rank-1{background:#f59e0b}.podium-rank-badge.rank-2{background:#64748b}.podium-rank-badge.rank-3{background:#d97706}.podium-name{font-weight:700;font-size:.95rem;text-align:center;margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;max-width:100%;color:var(--color-text)}.podium-score{color:var(--color-primary);font-weight:800;font-size:1rem;font-family:Nunito,ui-monospace,monospace}.podium-pts-label{font-size:.75rem;color:var(--color-text-dim);font-weight:600}.podium-block{margin-top:8px;width:100%;border-radius:var(--radius-md) var(--radius-md) 0 0;display:flex;align-items:flex-start;justify-content:center;padding-top:8px;font-weight:800;font-size:1.15rem;color:#fff;box-shadow:0 4px 12px #00000014}.podium-slot-1 .podium-block{height:110px;background:linear-gradient(180deg,#f59e0b,#d97706)}.podium-slot-2 .podium-block{height:80px;background:linear-gradient(180deg,#94a3b8,#64748b)}.podium-slot-3 .podium-block{height:60px;background:linear-gradient(180deg,#fb923c,#ea580c)}.podium-pillar-rank{font-size:.9rem;font-family:Nunito,sans-serif;letter-spacing:1px}.leaderboard-rest{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}.leaderboard-row{background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:10px 14px;transition:all var(--transition-fast)}.leaderboard-row:hover{background:#fff;border-color:var(--color-primary);box-shadow:var(--shadow-sm)}.leaderboard-rank-num{font-size:.9rem;font-weight:800;font-family:Nunito,sans-serif;color:var(--color-text-muted);width:22px}.leaderboard-name{font-size:.95rem;font-weight:600;margin-left:4px;color:var(--color-text)}.leaderboard-score-wrap{gap:12px}.star-tag{font-size:.82rem;color:#b45309;background:#fef3c7;padding:2px 8px;border-radius:var(--radius-sm);gap:4px;font-weight:700}.leaderboard-points{font-family:Nunito,ui-monospace,monospace;font-size:1rem;min-width:44px;text-align:right;color:var(--color-text)}.btn-star-award{display:flex;align-items:center;justify-content:center;width:28px;height:28px;background:#fff;color:var(--color-text-dim);border:1px solid var(--color-border);border-radius:var(--radius-sm);cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-fast)}.btn-star-award:hover{background:var(--color-primary-dim);color:var(--color-primary);border-color:var(--color-primary)}.menti-container{width:100%;margin-top:var(--space-2)}.menti-top-bar{padding:4px 2px;align-items:center;margin-bottom:var(--space-3)}.menti-total-count{font-size:.9rem;font-weight:600;color:var(--color-text-dim)}.menti-view-toggle{background:#f1f5f9;padding:3px;border-radius:var(--radius-md);gap:2px}.menti-toggle-btn{display:flex;align-items:center;gap:6px;padding:5px 12px;border-radius:var(--radius-sm);font-size:.85rem;font-weight:600;color:var(--color-text-dim);background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast)}.menti-toggle-btn:hover{color:var(--color-text)}.menti-toggle-btn.is-active{background:#fff;color:var(--color-primary);box-shadow:0 1px 3px #00000014}.menti-empty-state{padding:var(--space-5) var(--space-4);background:#f8fafc;border:1.5px dashed var(--color-border);border-radius:var(--radius-xl);align-items:center}.menti-radar-spinner{position:relative;width:54px;height:54px;margin:0 auto var(--space-2);display:flex;align-items:center;justify-content:center}.menti-radar-dot{width:10px;height:10px;background:var(--color-primary);border-radius:50%;box-shadow:0 0 12px #4f46e580}.menti-radar-circle{position:absolute;top:0;right:0;bottom:0;left:0;border:1.5px solid var(--color-primary);border-radius:50%;animation:mentiPulse 2.4s cubic-bezier(.215,.61,.355,1) infinite;opacity:0}.menti-radar-circle.delay-1{animation-delay:1.2s}@keyframes mentiPulse{0%{transform:scale(.2);opacity:.9}50%{opacity:.4}to{transform:scale(1.4);opacity:0}}.menti-cards-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(240px,1fr));gap:14px;padding:var(--space-1) 0;max-height:58vh;overflow-y:auto}.menti-card{position:relative;background:#fff;padding:16px 20px;border-radius:var(--radius-lg);border:1.5px solid var(--color-border);box-shadow:var(--shadow-sm);display:flex;flex-direction:column;justify-content:space-between;min-height:75px;opacity:0;animation:mentiCardAppear .35s cubic-bezier(.16,1,.3,1) forwards;transition:transform var(--transition-fast),box-shadow var(--transition-fast),border-color var(--transition-fast)}.menti-card:hover{transform:translateY(-2px);box-shadow:var(--shadow-md);border-color:var(--color-primary-dim)}@keyframes mentiCardAppear{0%{opacity:0;transform:scale(.96) translateY(8px)}to{opacity:1;transform:scale(1) translateY(0)}}.menti-card-text{font-size:clamp(1.1rem,1.4vw,1.3rem);font-weight:600;color:var(--color-text);line-height:1.45;margin:0;word-break:break-word}.menti-card-footer{margin-top:8px;display:flex}.menti-count-pill{display:inline-flex;align-items:center;background:#f1f5f9;color:var(--color-primary);font-weight:700;font-size:.8rem;padding:2px 8px;border-radius:999px}.menti-word-cloud{display:flex;flex-wrap:wrap;gap:12px;align-items:center;justify-content:center;padding:var(--space-5) var(--space-4);background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius-xl);min-height:200px}.menti-word-chip{background:#fff;border:1px solid var(--color-border);border-radius:var(--radius-md);padding:8px 16px;font-weight:700;color:var(--color-text);box-shadow:0 1px 4px #0000000a;opacity:0;animation:mentiCardAppear .3s ease forwards;transition:all var(--transition-fast)}.menti-word-chip:hover{transform:scale(1.04);border-color:var(--color-primary);color:var(--color-primary)}.menti-cloud-count{color:var(--color-primary);font-size:.85em;margin-left:4px}.host-page{min-height:100vh;display:flex;flex-direction:column;background:#f8fafc}.host-topbar{padding:12px var(--space-4);font-size:var(--font-projector-meta);font-weight:600;border-bottom:1px solid var(--color-border);background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);z-index:10;box-shadow:0 1px 3px #0f172a0a}.host-topbar-left{gap:var(--space-2);align-items:center}.host-pin-tag{display:inline-flex;align-items:center;gap:6px;background:var(--color-surface-alt);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:5px 12px;font-size:.85rem;color:var(--color-text-dim);font-weight:600}.host-pin-number{color:var(--color-primary);font-family:Nunito,ui-monospace,monospace;font-weight:900;letter-spacing:1px;font-size:1rem}.btn-topbar-tool{display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:5px 12px;font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-fast)}.btn-topbar-tool:hover{background:var(--color-primary-dim);color:var(--color-primary);border-color:var(--color-primary)}.btn-copy-pin{display:inline-flex;align-items:center;gap:6px;background:#fff;color:var(--color-text-dim);border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:5px 12px;font-size:.85rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-fast)}.btn-copy-pin:hover{background:var(--color-surface-alt);color:var(--color-text);border-color:var(--color-border-hover)}.host-progress{font-size:.95rem;color:var(--color-text-dim);font-weight:600}.host-topbar-center{gap:12px;align-items:center}.host-top-nav-pills{background:#f1f5f9;padding:3px;border-radius:999px;gap:2px;align-items:center}.btn-top-nav-arrow{display:flex;align-items:center;justify-content:center;width:26px;height:26px;border-radius:999px;border:none;background:#fff;color:var(--color-text);cursor:pointer;box-shadow:0 1px 2px #0000000f;transition:all var(--transition-fast)}.btn-top-nav-arrow:hover:not(:disabled){background:var(--color-primary);color:#fff}.btn-top-nav-arrow:disabled{opacity:.35;cursor:not-allowed}.host-top-pill{padding:4px 11px;border-radius:999px;font-size:.82rem;font-weight:700;color:var(--color-text-dim);background:transparent;border:none;cursor:pointer;transition:all var(--transition-fast);white-space:nowrap}.host-top-pill:hover:not(:disabled){color:var(--color-text)}.host-top-pill.is-active{background:var(--color-primary);color:#fff;box-shadow:0 1px 4px #4f46e54d}.host-top-answered-pill{display:inline-flex;align-items:center;gap:6px;background:#fff;border:1px solid var(--color-border);padding:4px 14px;border-radius:999px;font-size:.85rem;font-weight:700;color:var(--color-text);box-shadow:var(--shadow-sm);white-space:nowrap}.host-top-answered-pill svg{color:var(--color-success);flex-shrink:0}.host-players-btn{display:inline-flex;align-items:center;gap:8px;background:#fff;color:var(--color-text);border:1px solid var(--color-border);border-radius:var(--radius-md);padding:6px 14px;font-size:.9rem;font-weight:600;cursor:pointer;box-shadow:var(--shadow-sm);transition:all var(--transition-fast)}.host-players-btn:hover{background:var(--color-surface-alt);border-color:var(--color-primary);color:var(--color-primary)}.live-dot{width:8px;height:8px;background:var(--color-success);border-radius:50%;box-shadow:0 0 6px #10b98199}.host-main{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-4);position:relative;overflow:hidden;background:radial-gradient(600px circle at 6% -12%,rgba(79,70,229,.08),transparent 55%),radial-gradient(520px circle at 100% -6%,rgba(2,132,199,.07),transparent 55%),radial-gradient(480px circle at 94% 104%,rgba(217,119,6,.06),transparent 55%),#f8fafc}.lobby-container{width:100%;max-width:1100px;margin:0 auto;gap:var(--space-4)}.lobby-hero{position:relative;overflow:hidden;padding:var(--space-4) var(--space-5);background:#fff;border:1px solid var(--color-border);box-shadow:var(--shadow-card);border-radius:var(--radius-xl)}.lobby-hero:before{content:"";position:absolute;top:0;left:0;right:0;height:5px;background:linear-gradient(90deg,var(--color-primary),var(--color-accent),#fbbf24)}.lobby-hero-grid{display:flex;align-items:center;justify-content:center;gap:var(--space-5);flex-wrap:wrap}.lobby-qr-card{display:flex;flex-direction:column;align-items:center;background:#f8fafc;border:1.5px solid var(--color-border);border-radius:var(--radius-lg);padding:16px;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-sm);-webkit-user-select:none;user-select:none}.lobby-qr-card:hover{border-color:var(--color-primary);background:#fff;box-shadow:0 8px 24px -4px #4f46e533;transform:translateY(-2px)}.lobby-qr-frame{background:#fff;padding:12px;border-radius:var(--radius-md);border:1px solid var(--color-border-subtle);display:flex;align-items:center;justify-content:center;box-shadow:var(--shadow-sm)}.lobby-qr-caption{margin-top:10px;font-size:.85rem;font-weight:700;color:var(--color-primary);gap:6px}.lobby-info-column{display:flex;flex-direction:column;align-items:center;text-align:center}.lobby-instruction{font-size:clamp(1.05rem,1.4vw,1.3rem);color:var(--color-text-dim);margin-bottom:var(--space-2)}.lobby-url{color:var(--color-primary);font-weight:700}.lobby-pin-display{display:inline-flex;flex-direction:column;align-items:center;background:linear-gradient(135deg,#4f46e512,#0284c712);border:2px solid rgba(79,70,229,.18);border-radius:var(--radius-lg);padding:16px 44px;cursor:pointer;transition:all .2s ease;box-shadow:var(--shadow-sm)}.lobby-pin-display:hover{border-color:var(--color-primary);background:linear-gradient(135deg,#4f46e51f,#0284c71f);box-shadow:0 8px 24px -4px #4f46e533;transform:translateY(-2px)}.lobby-pin-label{font-size:.82rem;letter-spacing:2px;font-weight:800;color:var(--color-text-muted)}.lobby-pin-value{font-size:clamp(2.6rem,5.5vw,4.8rem);font-family:Nunito,ui-monospace,monospace;font-weight:900;letter-spacing:6px;line-height:1.1;margin:4px 0;color:var(--color-primary);background:linear-gradient(120deg,var(--color-primary),var(--color-accent));background-clip:text;-webkit-background-clip:text;-webkit-text-fill-color:transparent}.lobby-pin-hint{font-size:.85rem;color:var(--color-text-dim);font-weight:600}.lobby-header-row{align-items:baseline;padding:0 var(--space-1)}.lobby-title{font-size:clamp(1.2rem,1.8vw,1.5rem);font-weight:700;display:flex;align-items:center;gap:10px;margin-bottom:0}.lobby-count-pill{background:linear-gradient(120deg,var(--color-primary),var(--color-accent));color:#fff;font-size:.95rem;padding:2px 12px;border-radius:999px;font-weight:700;box-shadow:0 3px 8px #4f46e54d}.lobby-ready-hint{font-size:.9rem;color:var(--color-text-dim)}.lobby-empty-state{padding:var(--space-5) var(--space-4);border-radius:var(--radius-lg);background:linear-gradient(135deg,#4f46e50a,#0284c70a);border:1px dashed var(--color-border);box-shadow:var(--shadow-sm);align-items:center}.radar-spinner{position:relative;width:72px;height:72px;margin:0 auto var(--space-3);display:flex;align-items:center;justify-content:center}.radar-center-dot{width:10px;height:10px;background:var(--color-primary);border-radius:50%;box-shadow:0 0 10px #4f46e580}.radar-circle{position:absolute;top:0;right:0;bottom:0;left:0;border:1.5px solid var(--color-primary);border-radius:50%;animation:radarPulse 2.8s cubic-bezier(.215,.61,.355,1) infinite;opacity:0}.radar-circle.delay-1{animation-delay:.9s;border-color:var(--color-accent)}.radar-circle.delay-2{animation-delay:1.8s;border-color:#fbbf24}@keyframes radarPulse{0%{transform:scale(.2);opacity:.9}50%{opacity:.4}to{transform:scale(1.5);opacity:0}}.lobby-players-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(170px,1fr));gap:14px;padding:var(--space-1) 0;max-height:48vh;overflow-y:auto}.lobby-player-card{position:relative;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:18px 14px;background:#fff;border:1px solid var(--color-border);border-top:3px solid var(--player-color, var(--color-border));border-radius:var(--radius-md);font-weight:600;text-align:center;transition:all var(--transition-fast);box-shadow:var(--shadow-sm);animation:cardFadeIn .25s ease-out both;overflow:hidden}.lobby-player-card:hover{background:#fff;border-color:#ef444466;transform:translateY(-2px);box-shadow:0 6px 18px #ef44441f}@keyframes cardFadeIn{0%{opacity:0;transform:translateY(6px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}.lobby-player-card.is-offline{opacity:.5}.lobby-avatar-wrap{position:relative;margin-bottom:8px;transition:transform var(--transition-fast)}.player-status-badge{position:absolute;bottom:0;right:-2px;width:10px;height:10px;border-radius:50%;border:2px solid #ffffff}.player-status-badge.online{background:var(--color-success)}.player-status-badge.offline{background:var(--color-text-muted)}.lobby-player-name{font-size:1rem;font-weight:700;color:var(--color-text);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.lobby-card-hover-actions{position:absolute;top:0;right:0;bottom:0;left:0;background:#fffffff0;-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);display:flex;align-items:center;justify-content:center;opacity:0;pointer-events:none;transition:all var(--transition-fast)}.lobby-player-card:hover .lobby-card-hover-actions{opacity:1;pointer-events:auto}.btn-lobby-kick{display:inline-flex;align-items:center;gap:6px;background:#fee2e2;color:#dc2626;border:1px solid #fca5a5;border-radius:var(--radius-sm);padding:8px 16px;font-size:.88rem;font-weight:700;cursor:pointer;box-shadow:0 2px 6px #dc262626;transition:all var(--transition-fast)}.btn-lobby-kick:hover{background:#dc2626;color:#fff;border-color:#dc2626;box-shadow:0 4px 12px #dc26264d;transform:scale(1.05)}.btn-lobby-kick:active{transform:scale(.96)}.host-question{width:100%;max-width:1050px;background:#fff;padding:var(--space-5) var(--space-5);border-radius:var(--radius-xl);border:1px solid var(--color-border);box-shadow:var(--shadow-card);min-height:280px;display:flex;flex-direction:column;justify-content:center}.btn-reset-tool{color:var(--color-text-dim)}.btn-reset-tool:hover{color:var(--color-danger);border-color:#dc26264d;background:#dc26260d}.host-question-text{font-size:var(--font-projector-question);text-align:center;margin:var(--space-4) 0;font-weight:800;letter-spacing:-.02em}.host-answered-count{font-size:var(--font-projector-meta);font-weight:700;color:var(--color-text-dim)}.host-empty h1{font-size:var(--font-projector-question);letter-spacing:-.02em}.host-controlbar{padding:12px var(--space-4);border-top:1px solid var(--color-border);background:#fffffff2;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);box-shadow:0 -1px 3px #0f172a0a}.host-live-options-grid{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-3);margin-top:var(--space-2)}.host-live-option-card{display:flex;align-items:center;gap:var(--space-3);background:var(--option-color);border-radius:var(--radius-md);padding:clamp(16px,2.2vw,26px) clamp(18px,2.5vw,28px);color:#fff;font-weight:700;font-size:clamp(1.05rem,1.4vw,1.35rem);box-shadow:0 4px 14px #0000001f;transition:all var(--transition-fast)}.host-live-option-shape{font-size:clamp(1.4rem,2vw,1.8rem);line-height:1}.host-live-option-text{flex:1;line-height:1.3}.host-preview-caption{font-size:.95rem}.host-checkbox-preview .installer-window{max-width:560px;margin:0 auto;width:100%;box-shadow:var(--shadow-card)}.host-checkbox-preview .installer-heading,.host-checkbox-preview .installer-check-label{font-size:1.1rem}.host-order-list{max-width:720px;margin:0 auto;width:100%}.host-order-card{cursor:default;font-size:1.1rem;padding:16px 20px}.host-order-card:hover{transform:none;border-color:var(--color-border);box-shadow:var(--shadow-sm)}.host-order-card.is-preview{background:#f8fafc;border-style:dashed}.host-order-card.is-correct-final{border-color:var(--color-success);background:#10b98114}.host-order-card.is-correct-final .order-index{background:var(--color-success)}.host-order-check{color:var(--color-success);flex-shrink:0}.host-match-diagram{padding:var(--space-3) 0 var(--space-4)}.host-match-slot{min-width:190px;min-height:76px;font-size:1.05rem;cursor:default}.host-match-connector{font-size:.95rem}.host-match-pool{padding-bottom:var(--space-2)}.host-match-chip{display:inline-flex;cursor:default;font-size:1rem}.host-match-chip:hover{transform:none;background:var(--color-primary);box-shadow:0 4px 10px #4f46e540}.tally-bars{display:flex;flex-direction:column;gap:var(--space-2);margin-top:var(--space-2)}.tally-bar-row{display:grid;grid-template-columns:minmax(180px,340px) 1fr 8ch;align-items:center;gap:var(--space-3);font-size:var(--font-projector-meta);padding:12px 18px;background:#f8fafc;border:1.5px solid var(--color-border);border-radius:var(--radius-md);transition:all var(--transition-fast)}.tally-bar-label{display:flex;align-items:center;gap:10px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tally-text{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.correct-badge{background:var(--color-success);color:#fff;font-size:.75rem;font-weight:700;padding:2px 8px;border-radius:999px;flex-shrink:0}.tally-bullet{width:12px;height:12px;border-radius:3px;flex-shrink:0}.tally-bar-track{height:clamp(14px,1.8vw,24px);background:#e2e8f0;border-radius:999px;overflow:hidden}.tally-bar-fill{height:100%;border-radius:999px;transition:width .4s ease}.tally-bar-row.is-correct{border-color:var(--color-success);background:#10b9811a;box-shadow:0 2px 8px #10b98126}.tally-bar-row.is-correct .tally-bar-label{color:var(--color-success)}.tally-bar-count{text-align:right;font-weight:800;font-family:Nunito,ui-monospace,monospace}.word-cloud{display:flex;flex-wrap:wrap;gap:var(--space-2);align-items:center;justify-content:center;padding:var(--space-3)}.word-chip{background:#f8fafc;border:1px solid var(--color-border);border-radius:var(--radius-sm);padding:6px 14px;font-weight:700;color:var(--color-text);box-shadow:var(--shadow-sm)}.qr-modal-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a99;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);z-index:100;display:flex;align-items:center;justify-content:center;padding:var(--space-3)}.qr-modal-card{width:100%;max-width:480px;background:#fff;border-radius:var(--radius-xl);padding:var(--space-4) var(--space-5);box-shadow:var(--shadow-elevated);animation:modalPopIn .2s ease-out}@keyframes modalPopIn{0%{opacity:0;transform:scale(.95) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}.qr-modal-header{border-bottom:1px solid var(--color-border);padding-bottom:var(--space-3)}.qr-modal-header h2{font-size:1.2rem;font-weight:700;margin-bottom:0}.qr-modal-frame{background:#fff;padding:20px;border-radius:var(--radius-lg);border:2px solid var(--color-border);display:inline-flex;align-items:center;justify-content:center;margin:var(--space-2) auto;box-shadow:var(--shadow-card)}.qr-modal-pin-box{background:#f8fafc;border:1.5px solid var(--color-border);border-radius:var(--radius-md);padding:10px 20px;display:inline-flex;flex-direction:column;align-items:center}.qr-modal-pin-label{font-size:.75rem;letter-spacing:1.5px;font-weight:800;color:var(--color-text-muted)}.qr-modal-pin-value{font-size:2.2rem;font-family:Nunito,ui-monospace,monospace;font-weight:900;letter-spacing:4px;color:var(--color-primary);line-height:1.1}.player-drawer-overlay{position:fixed;top:0;right:0;bottom:0;left:0;background:#0f172a66;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);z-index:100;display:flex;justify-content:flex-end}.player-drawer-modal{width:100%;max-width:420px;height:100%;border-radius:0;border-left:1px solid var(--color-border);display:flex;flex-direction:column;animation:slideInRight .2s ease-out;background:#fff;box-shadow:var(--shadow-elevated)}@keyframes slideInRight{0%{transform:translate(100%)}to{transform:translate(0)}}.drawer-header{padding:var(--space-3) var(--space-4);border-bottom:1px solid var(--color-border)}.drawer-header h2{font-size:1.1rem;margin-bottom:0;font-weight:700}.btn-close{background:transparent;border:none;color:var(--color-text-dim);cursor:pointer;padding:4px;display:flex;align-items:center;justify-content:center;border-radius:var(--radius-sm);transition:all var(--transition-fast)}.btn-close:hover{background:var(--color-surface-alt);color:var(--color-text)}.drawer-player-list{flex:1;overflow-y:auto;padding:var(--space-3) var(--space-4);gap:var(--space-2)}.drawer-player-item{padding:10px 12px;background:#f8fafc;border-radius:var(--radius-md);border:1px solid var(--color-border)}.drawer-meta{font-size:.8rem;margin-top:2px;gap:6px}.status-pill{font-size:.75rem;padding:2px 8px;border-radius:999px;font-weight:600}.status-pill.is-online{background:#10b9811f;color:var(--color-success)}.status-pill.is-offline{background:#94a3b82e;color:var(--color-text-dim)}.btn-sm{padding:4px 10px;font-size:.82rem}.btn-danger-outline{background:transparent;border:1px solid var(--color-danger);color:var(--color-danger);border-radius:var(--radius-sm);cursor:pointer;transition:var(--transition-fast)}.btn-danger-outline:hover{background:var(--color-danger);color:#fff}@media (min-width: 769px) and (max-width: 1200px){.host-question-text{font-size:clamp(22px,2.6vw,34px)}.lobby-players-grid{grid-template-columns:repeat(auto-fill,minmax(150px,1fr))}}@media (max-width: 768px){.host-topbar{font-size:.9rem;padding:10px var(--space-2)}.host-question-text{font-size:clamp(20px,5vw,26px)}.tally-bar-row{grid-template-columns:120px 1fr 3ch;font-size:.85rem}.lobby-players-grid{grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px}.lobby-player-card{padding:14px 8px}.lobby-hero-grid{flex-direction:column;gap:var(--space-3)}}:root{--color-bg: #f8fafc;--color-surface: #ffffff;--color-surface-alt: #f1f5f9;--color-surface-hover: #e2e8f0;--color-border: #e2e8f0;--color-border-subtle: #f1f5f9;--color-border-hover: #cbd5e1;--color-text: #0f172a;--color-text-dim: #475569;--color-text-muted: #94a3b8;--color-primary: #4f46e5;--color-primary-hover: #4338ca;--color-primary-dim: rgba(79, 70, 229, .08);--color-accent: #0284c7;--color-warning: #d97706;--color-danger: #ef4444;--color-success: #10b981;--shape-0: #ef4444;--shape-1: #2563eb;--shape-2: #d97706;--shape-3: #059669;--radius-sm: 8px;--radius-md: 14px;--radius-lg: 20px;--radius-xl: 28px;--space-1: 4px;--space-2: 8px;--space-3: 16px;--space-4: 24px;--space-5: 40px;--font-body: clamp(15px, .8vw + 12px, 17px);--font-h1: clamp(22px, 2.5vw + 10px, 36px);--font-h2: clamp(18px, 1.8vw + 8px, 26px);--font-projector-question: clamp(28px, 3.4vw, 50px);--font-projector-meta: clamp(16px, 1.5vw, 24px);--font-projector-timer: clamp(38px, 4.8vw, 88px);--shadow-sm: 0 1px 3px rgba(15, 23, 42, .06), 0 1px 2px rgba(15, 23, 42, .04);--shadow-card: 0 4px 20px -2px rgba(15, 23, 42, .07), 0 2px 6px -1px rgba(15, 23, 42, .04);--shadow-elevated: 0 20px 40px -15px rgba(15, 23, 42, .12), 0 0 1px 1px rgba(15, 23, 42, .05);--transition-fast: .15s ease-out;--transition-base: .22s ease-out}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:var(--color-bg);color:var(--color-text);font-family:Prompt,Nunito,system-ui,-apple-system,Segoe UI,Roboto,sans-serif;font-size:var(--font-body);line-height:1.55;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;overflow-x:hidden}h1,h2,h3,p{margin:0 0 var(--space-3)}h1{font-size:var(--font-h1);font-weight:700;color:var(--color-text);letter-spacing:-.02em}h2{font-size:var(--font-h2);font-weight:600;color:var(--color-text);letter-spacing:-.015em}button{font-family:inherit}a{color:var(--color-primary);text-decoration:none;font-weight:600;transition:color var(--transition-fast)}a:hover{text-decoration:underline}.page{min-height:100%;display:flex;flex-direction:column;align-items:center;padding:var(--space-4) var(--space-3);background:var(--color-bg)}.page-narrow{width:100%;max-width:480px;margin:0 auto}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius-lg);padding:var(--space-4);box-shadow:var(--shadow-card)}.btn{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);border:1px solid transparent;border-radius:var(--radius-md);padding:11px 20px;font-size:.95rem;font-weight:600;cursor:pointer;transition:all var(--transition-fast);color:var(--color-text);background:var(--color-surface-alt);-webkit-user-select:none;user-select:none}.btn:hover{background:var(--color-surface-hover);border-color:var(--color-border-hover)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--color-primary);color:#fff;border-color:transparent;box-shadow:0 4px 12px #4f46e540}.btn-primary:hover{background:var(--color-primary-hover);box-shadow:0 6px 16px #4f46e559;transform:translateY(-1px)}.btn-block{width:100%}.btn:disabled,.btn[aria-disabled=true]{opacity:.5;cursor:not-allowed;transform:none!important;box-shadow:none!important}.btn-danger{background:var(--color-danger);color:#fff}.btn-danger:hover{background:#dc2626}.btn-ghost{background:var(--color-surface);border:1px solid var(--color-border);color:var(--color-text);box-shadow:var(--shadow-sm)}.btn-ghost:hover{background:var(--color-surface-alt);border-color:var(--color-border-hover)}.field{display:flex;flex-direction:column;gap:6px;margin-bottom:var(--space-3);text-align:left}.field label{font-weight:600;color:var(--color-text-dim);font-size:.88rem}.field input,.field textarea{background:var(--color-surface);border:1.5px solid var(--color-border);border-radius:var(--radius-sm);padding:11px 14px;color:var(--color-text);font-size:.95rem;outline:none;transition:all var(--transition-fast)}.field input:focus,.field textarea:focus{border-color:var(--color-primary);background:#fff;box-shadow:0 0 0 3px #4f46e526}.field.has-error input{border-color:var(--color-danger)}.field-error{color:var(--color-danger);font-size:.82rem;font-weight:500}.avatar-badge{display:inline-flex;align-items:center;justify-content:center;border-radius:50%;background:var(--avatar-bg, var(--color-primary));color:#fff;flex-shrink:0;box-shadow:0 2px 8px #00000026}.avatar-badge-sm{width:30px;height:30px}.avatar-badge-md{width:38px;height:38px}.avatar-badge-lg{width:54px;height:54px}.avatar-badge-xl{width:74px;height:74px}.text-dim{color:var(--color-text-dim)}.text-muted{color:var(--color-text-muted)}.text-accent{color:var(--color-primary)}.text-center{text-align:center}.stack{display:flex;flex-direction:column;gap:var(--space-3)}.row{display:flex;align-items:center;gap:var(--space-2)}.row-between{display:flex;align-items:center;justify-content:space-between}.grow{flex:1}.visually-hidden{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}@media (min-width: 481px){.page-narrow{max-width:520px}}@media (min-width: 769px){.page-narrow{max-width:580px}}
