:root{--indigo: #4231e0;--indigo-deep: #2f21b8;--ink: #1e1b4b;--ink-soft: #57537f;--paper: #ffffff;--paper-tint: #f4f2ff;--yellow: #ffd23f;--yellow-soft: #fff4c7;--green: #2bd46e;--green-soft: #dcfbe8;--green-ink: #0b6b33;--pink: #ff5fa2;--pink-soft: #ffe3ef;--tangerine: #ff8a3d;--red: #e5484d;--outline: 3px solid var(--ink);--shadow: 4px 4px 0 var(--ink);--shadow-sm: 2px 2px 0 var(--ink);--radius-lg: 22px;--radius: 14px;--radius-sm: 10px;--display: "Fredoka", "Nunito", ui-rounded, system-ui, sans-serif;--body: "Nunito", ui-rounded, system-ui, -apple-system, "Segoe UI", sans-serif;color-scheme:light}*{box-sizing:border-box}html{background:var(--indigo)}body{margin:0;min-height:100vh;color:var(--ink);font:500 16px/1.45 var(--body);background-color:var(--indigo);background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220'%3E%3Cg fill='none' stroke='%23ffffff' stroke-opacity='0.11' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='18' y='34' width='30' height='34' rx='5'/%3E%3Cpath d='M48 42c11 0 11 18 0 18'/%3E%3Cpath d='M27 26c-4-5 4-8 0-14M38 26c-4-5 4-8 0-14'/%3E%3Cpath d='M150 18v42a9 9 0 0 1-18 0V24a6 6 0 0 1 12 0v34'/%3E%3Crect x='26' y='130' width='46' height='46' rx='4' transform='rotate(-8 49 153)'/%3E%3Cpath d='M36 148h24M36 158h18' transform='rotate(-8 49 153)'/%3E%3Cpath d='M92 84h46a10 10 0 0 1 10 10v18a10 10 0 0 1-10 10h-30l-12 11v-11h-4a10 10 0 0 1-10-10V94a10 10 0 0 1 10-10z'/%3E%3Cpath d='M128 196l22-22 14 12 28-34'/%3E%3Cpath d='M178 152h14v14'/%3E%3C/g%3E%3C/svg%3E");-webkit-font-smoothing:antialiased}h1,h2,h3{font-family:var(--display);font-weight:600;margin:0;line-height:1.15}h2{font-size:1.5rem}h3{font-size:1.15rem;margin-bottom:12px}p{margin:0}:focus-visible{outline:4px solid var(--yellow);outline-offset:2px}.wrap{max-width:1220px;margin:0 auto;padding:20px 16px 48px}.muted{color:var(--ink-soft)}.small{font-size:.875rem}.center{text-align:center}.row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}.card{background:var(--paper);border:var(--outline);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:20px}.head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px}.head .row{gap:8px}.logo{font-family:var(--display);font-weight:700;font-size:clamp(2rem,4vw,2.6rem);letter-spacing:.01em;line-height:1;display:inline-flex;text-decoration:none;filter:drop-shadow(3px 3px 0 var(--ink));-webkit-text-stroke:2px var(--ink);paint-order:stroke fill}.logo span{display:inline-block;transform:rotate(var(--tilt))}.logo .logo-gap{width:.32em}.logo.big{font-size:clamp(3rem,9vw,5.2rem);-webkit-text-stroke-width:3px;filter:drop-shadow(5px 5px 0 var(--ink))}.logo.big span{animation:hop .62s cubic-bezier(.3,1.6,.5,1) both;animation-delay:calc(var(--i) * 45ms)}.tagline{color:var(--paper);font-weight:800;font-size:1.1rem;text-align:center;margin:10px 0 26px;opacity:.92}.conn{width:14px;height:14px;border-radius:50%;border:2px solid var(--ink);flex:none}.conn.ok{background:var(--green)}.conn.bad{background:var(--red)}button{font:600 1rem/1 var(--display);color:var(--ink);background:var(--paper);border:var(--outline);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:10px 16px;cursor:pointer;transition:transform 90ms ease,box-shadow 90ms ease,background-color .12s ease}button:hover:not(:disabled){transform:translate(-1px,-1px);box-shadow:3px 3px 0 var(--ink)}button:active:not(:disabled){transform:translate(2px,2px);box-shadow:0 0 0 var(--ink)}button:disabled{opacity:.5;cursor:not-allowed}button.primary{background:var(--green)}button.accent{background:var(--pink)}button.big{font-size:1.35rem;padding:16px 22px;border-radius:18px;box-shadow:var(--shadow)}button.wide{width:100%}button.small{font-size:.9rem;padding:7px 12px;border-radius:var(--radius-sm)}button.icon{padding:8px 10px;font-size:1.05rem;line-height:1}button.link{background:none;border:none;box-shadow:none;padding:4px 2px;font-family:var(--body);font-weight:800;color:var(--indigo);text-decoration:underline;text-underline-offset:3px}button.link:hover:not(:disabled){transform:none;box-shadow:none;color:var(--indigo-deep)}button.on{background:var(--yellow)}input{font:700 1rem var(--body);color:var(--ink);background:var(--paper);border:var(--outline);border-radius:var(--radius);padding:11px 14px;min-width:0}input::placeholder{color:#9a96bd;font-weight:600}input:disabled{background:var(--paper-tint)}input[type=number]{width:92px;text-align:center;font-family:var(--display);font-size:1.1rem}input[type=checkbox]{width:22px;height:22px;accent-color:var(--green)}.field{display:grid;gap:6px;margin-bottom:16px}.field>span{font-weight:800;font-size:.95rem}.field.inline{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.avatar{display:inline-grid;place-items:center;flex:none;border-radius:50%;border:2.5px solid var(--ink);line-height:1}.avatar-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(50px,1fr));gap:8px;justify-items:center}.avatar-pick{padding:4px;border-radius:50%;box-shadow:none;border-width:0;background:transparent;display:grid;place-items:center}.avatar-pick:hover:not(:disabled){transform:translateY(-2px) rotate(-6deg);box-shadow:none}.avatar-pick.on{background:var(--yellow);box-shadow:0 0 0 3px var(--ink)}.home{max-width:520px;margin:4vh auto 0}.home .card{padding:26px}.home .hero-avatar{display:flex;justify-content:center;margin-bottom:14px}.home .divider{display:flex;align-items:center;gap:10px;margin:18px 0 14px;color:var(--ink-soft);font-weight:800;font-size:.9rem}.home .divider:before,.home .divider:after{content:"";flex:1;border-top:2px dashed #cfcbe9}.join-row{display:flex;gap:10px}.join-row input{flex:1;text-transform:uppercase;letter-spacing:.3em;font-family:var(--display);font-size:1.2rem;text-align:center}.invite-head{text-align:center;margin-bottom:18px}.invite-head .room-code{margin:4px 0 6px}.notice{background:var(--pink-soft);border:2px solid var(--ink);border-radius:var(--radius);padding:10px 14px;font-weight:700;margin-bottom:16px}.room-code{font-family:var(--display);font-weight:700;font-size:2.2rem;letter-spacing:.24em;line-height:1}.lobby{display:grid;grid-template-columns:minmax(0,1fr) 330px;gap:18px;align-items:start}.lobby-top{grid-column:1 / -1;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px}.lobby-top .label{font-weight:800;color:var(--ink-soft);font-size:.95rem}.lobby .side{display:grid;gap:18px}@media(max-width:900px){.lobby{grid-template-columns:1fr}}.player-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(118px,1fr));gap:12px}.player-tile{position:relative;display:grid;justify-items:center;gap:6px;padding:14px 8px 10px;border:2.5px solid var(--ink);border-radius:var(--radius);background:var(--paper-tint);text-align:center}.player-tile.me{background:var(--yellow-soft)}.player-tile.away{opacity:.5}.player-tile .pname{font-weight:800;max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-tile .crown{position:absolute;top:-14px;font-size:1.4rem;transform:rotate(-12deg)}.player-tile .note{font-size:.8rem;font-weight:800;color:var(--ink-soft)}.player-tile.empty{background:transparent;border-style:dashed;border-color:#b9b4e3;color:#8d88b8;place-content:center;min-height:110px;font-weight:800}.profile-edit{display:grid;gap:12px;margin-top:16px;padding-top:16px;border-top:2px dashed #cfcbe9}.invite-link{display:flex;align-items:stretch;gap:8px}.invite-link .invite{flex:1;min-width:0;font-size:.9rem;font-family:var(--body);background:var(--paper-tint);cursor:text}.invite-link.compact .invite{display:none}.start-bar{display:grid;gap:8px;justify-items:center}.game{display:grid;gap:14px}.word-strip{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:14px;background:var(--paper);border:var(--outline);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:10px 14px}.word-strip .left,.word-strip .right{display:flex;align-items:center;gap:10px}.word-strip .round{font-family:var(--display);font-weight:600;font-size:1.05rem;white-space:nowrap}.word-strip .center{text-align:center;min-width:0}.word-strip .hint-label{font-size:.85rem;font-weight:800;color:var(--ink-soft)}.clock{width:54px;height:54px;border-radius:50%;flex:none;display:grid;place-items:center;font-family:var(--display);font-weight:700;font-size:1.35rem;background:var(--yellow);border:var(--outline);font-variant-numeric:tabular-nums}.clock.hurry{background:var(--pink);animation:pulse 1s ease-in-out infinite}.clock.idle{background:var(--paper-tint);color:var(--ink-soft)}.mask{font-family:var(--display);font-weight:700;font-size:clamp(1.3rem,2.6vw,1.9rem);letter-spacing:.22em;white-space:pre;overflow-wrap:anywhere}.mask.reveal{color:var(--green-ink);letter-spacing:.06em}.word-count{font-family:var(--display);font-size:.95rem;color:var(--ink-soft);margin-left:4px;letter-spacing:0}.play{display:grid;grid-template-columns:230px minmax(0,1fr) 290px;gap:14px;align-items:start}.play>.chat{align-self:stretch;contain:size;min-height:0;height:auto}@media(max-width:1100px){.play{grid-template-columns:200px minmax(0,1fr) 250px}}@media(max-width:900px){.play{grid-template-columns:1fr 1fr}.play .stage{grid-column:1 / -1;order:-1}.play>.chat{contain:none;height:380px}}@media(max-width:600px){.play{grid-template-columns:1fr}.word-strip{grid-template-columns:auto 1fr}.word-strip .right{grid-column:1 / -1;justify-content:center}}.players-panel{padding:0;overflow:hidden}.player-row{display:grid;grid-template-columns:30px auto 1fr auto;align-items:center;gap:8px;padding:9px 12px;border-bottom:2px solid #e6e3fb}.player-row:last-child{border-bottom:none}.player-row:nth-child(2n){background:var(--paper-tint)}.player-row .rank{font-family:var(--display);font-weight:700;color:var(--ink-soft)}.player-row .who{display:grid;min-width:0}.player-row .pname{font-weight:800;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.player-row .pts{font-size:.85rem;color:var(--ink-soft);font-weight:700}.player-row .badge{font-size:1.25rem}.player-row.guessed{background:var(--green-soft);animation:flash .7s ease-out}.player-row.drawing .badge{animation:wiggle 1.2s ease-in-out infinite}.player-row.me .pname:after{content:" (you)";color:var(--ink-soft);font-weight:700}.player-row.away{opacity:.45}.stage{display:grid;gap:12px}.canvas-wrap{position:relative;width:100%;aspect-ratio:4 / 3;background:var(--paper);border:var(--outline);border-radius:var(--radius-lg);box-shadow:var(--shadow);overflow:hidden}.canvas{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;touch-action:none}.canvas.can-draw{cursor:crosshair}.overlay{position:absolute;top:0;right:0;bottom:0;left:0;z-index:2;display:grid;place-items:center;padding:18px;background:#1e1b4bc7;color:var(--paper);text-align:center;animation:fade .18s ease-out both}.overlay-body{display:grid;gap:14px;justify-items:center;width:min(560px,100%);animation:pop .34s cubic-bezier(.25,1.4,.5,1) both}.overlay h2{font-size:clamp(1.4rem,3vw,2rem)}.overlay .muted{color:#d5d2ff}.overlay .solution{font-family:var(--display);font-weight:700;font-size:clamp(1.6rem,4vw,2.4rem);color:var(--yellow);-webkit-text-stroke:1.5px var(--ink);paint-order:stroke fill}.overlay ol{list-style:none;margin:0;padding:0;width:min(360px,100%);display:grid;gap:6px}.overlay li{display:grid;grid-template-columns:auto 1fr auto;gap:10px;align-items:center;background:var(--paper);color:var(--ink);border:2.5px solid var(--ink);border-radius:var(--radius-sm);padding:6px 10px;font-weight:800;text-align:left}.overlay li .gain{font-family:var(--display);color:var(--green-ink)}.overlay li .gain.zero{color:var(--ink-soft)}.choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;width:100%}@media(max-width:600px){.choices{grid-template-columns:1fr}}.choice{display:grid;gap:6px;padding:16px 10px;background:var(--paper);font-size:1.15rem;box-shadow:var(--shadow)}.choice .level{font-family:var(--body);font-size:.8rem;font-weight:800;color:var(--ink-soft)}.custom-word{display:flex;gap:8px;width:100%}.custom-word input{flex:1}.overlay button.link{color:var(--yellow)}.tools{display:flex;flex-wrap:wrap;align-items:center;gap:12px;background:var(--paper);border:var(--outline);border-radius:var(--radius-lg);box-shadow:var(--shadow);padding:10px 12px}.tools .group{display:flex;align-items:center;gap:6px;flex-wrap:wrap}.swatches{display:grid;grid-template-columns:repeat(15,22px);gap:3px}@media(max-width:700px){.swatches{grid-template-columns:repeat(10,22px)}}.swatch{width:22px;height:22px;padding:0;border-radius:6px;border:2px solid var(--ink);box-shadow:none}.swatch:hover:not(:disabled){transform:scale(1.15);box-shadow:none}.swatch.on{transform:scale(1.2);box-shadow:0 0 0 2px var(--paper),0 0 0 4px var(--ink)}.current-color{width:40px;height:40px;border-radius:50%;border:var(--outline);flex:none}.sizer{width:40px;height:40px;padding:0;display:grid;place-items:center}.sizer span{display:block;background:var(--ink);border-radius:50%}.chat{display:grid;grid-template-rows:auto 1fr auto;padding:0;overflow:hidden;height:100%;min-height:360px}.chat h3{padding:12px 14px 0;margin-bottom:8px}.messages{overflow-y:auto;min-height:0;display:grid;align-content:start}.lobby .chat .messages{max-height:260px}.msg{padding:6px 14px;font-size:.95rem;overflow-wrap:anywhere}.msg:nth-child(2n){background:var(--paper-tint)}.msg .who{font-weight:800;margin-right:6px}.msg.system{font-weight:800;color:var(--indigo)}.msg.post-guess{color:var(--green-ink)}.msg.tone-correct{background:var(--green-soft);color:var(--green-ink);font-weight:800}.msg.tone-wrong .who{color:var(--ink)}.chat form{padding:10px;border-top:2px solid #e6e3fb;display:grid;gap:8px}.chat input{width:100%}.close-hint{font-weight:800;padding:6px 10px;border-radius:var(--radius-sm);background:var(--pink-soft);border:2px solid var(--ink);animation:pop .26s ease-out both}.toasts{position:fixed;top:14px;left:50%;transform:translate(-50%);z-index:50;display:grid;gap:8px;width:min(520px,calc(100vw - 32px))}.toast{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--paper);border:var(--outline);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px 10px 16px;font-weight:800;animation:drop .26s cubic-bezier(.25,1.4,.5,1) both}.toast.error{background:var(--pink-soft)}.toast.info{background:var(--yellow-soft)}.podium-list li.winner{background:var(--yellow)}.crown-bob{display:inline-block;animation:bob 1.8s ease-in-out infinite}.winner-banner{font-family:var(--display);font-weight:700;font-size:clamp(1.6rem,4vw,2.4rem);color:var(--yellow);-webkit-text-stroke:1.5px var(--ink);paint-order:stroke fill}.confetti{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden}.confetti i{position:absolute;top:-16px;width:10px;height:16px;border-radius:3px;border:1.5px solid var(--ink);animation:fall 2.8s linear forwards}@keyframes hop{0%{transform:translateY(40px) rotate(var(--tilt));opacity:0}60%{transform:translateY(-8px) rotate(var(--tilt));opacity:1}to{transform:translateY(0) rotate(var(--tilt))}}@keyframes pop{0%{transform:scale(.85);opacity:0}to{transform:scale(1);opacity:1}}@keyframes fade{0%{opacity:0}to{opacity:1}}@keyframes drop{0%{transform:translateY(-16px);opacity:0}to{transform:translateY(0);opacity:1}}@keyframes pulse{50%{transform:scale(1.1)}}@keyframes flash{0%{background:var(--green)}}@keyframes wiggle{0%,to{transform:rotate(-10deg)}50%{transform:rotate(10deg)}}@keyframes bob{0%,to{transform:translateY(0) rotate(-6deg)}50%{transform:translateY(-5px) rotate(6deg)}}@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}.confetti{display:none}}select{font:600 1rem var(--display);color:var(--ink);background:var(--paper);border:var(--outline);border-radius:var(--radius-sm);padding:8px 10px;min-width:132px;cursor:pointer}select:disabled{background:var(--paper-tint);cursor:default}textarea{font:600 .95rem/1.4 var(--body);color:var(--ink);border:var(--outline);border-radius:var(--radius);padding:10px 12px;resize:vertical;width:100%}.settings .field{margin-bottom:14px}.segmented{display:grid;grid-template-columns:repeat(3,1fr);border:var(--outline);border-radius:var(--radius);overflow:hidden}.segmented button{border:none;border-radius:0;box-shadow:none;padding:9px 6px;border-right:2px solid var(--ink)}.segmented button:last-child{border-right:none}.segmented button:hover:not(:disabled){transform:none;box-shadow:none;background:var(--yellow-soft)}.segmented button.on{background:var(--yellow)}.chips{display:flex;flex-wrap:wrap;gap:6px}.chip{font:700 .85rem var(--body);padding:6px 10px;border-radius:999px;border-width:2px;box-shadow:none;background:var(--paper-tint)}.chip:hover:not(:disabled){transform:translateY(-1px);box-shadow:none}.chip.on{background:var(--green-soft);border-color:var(--ink);box-shadow:1px 1px 0 var(--ink)}.chip.on:before{content:"✓ "}.dimmed{opacity:.5}.custom-words .row-between{margin-top:6px}.overlay.finale{overflow-y:auto;place-items:start center}.overlay.finale .overlay-body{padding:8px 0 12px}.podium{display:grid;gap:14px;width:min(520px,100%);justify-items:center}.steps{display:flex;align-items:flex-end;justify-content:center;gap:10px;width:100%}.step{display:grid;justify-items:center;flex:1;max-width:150px;min-width:0}.step .who{display:grid;justify-items:center;gap:2px;margin-bottom:6px;min-width:0;max-width:100%}.step .pname{font-weight:800;color:var(--paper);max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.step .pts{font-size:.85rem;color:#d5d2ff;font-weight:700}.step .block{width:100%;display:grid;place-content:center;justify-items:center;gap:2px;border:var(--outline);border-bottom:none;border-radius:var(--radius) var(--radius) 0 0;font-family:var(--display);font-weight:700;color:var(--ink)}.step .medal{font-size:1.6rem;line-height:1}.step.place-1 .block{height:118px;background:var(--yellow)}.step.place-2 .block{height:88px;background:#dfe3ee}.step.place-3 .block{height:66px;background:#f2b787}.step.me .pname:after{content:" (you)";font-weight:700;color:#d5d2ff}.step .crown-bob{font-size:1.5rem}.podium .ranks{list-style:none;margin:0;padding:0;width:min(360px,100%);display:grid;gap:6px}.podium .ranks li{grid-template-columns:36px auto 1fr auto}.podium .ranks li.me{background:var(--yellow-soft)}.podium .rank{font-family:var(--display);color:var(--ink-soft)}.reactions{position:absolute;top:0;right:0;bottom:0;left:0;z-index:1;pointer-events:none}.react-bar{position:absolute;right:12px;bottom:12px;display:flex;gap:8px;pointer-events:auto}.react{font-size:1.15rem;padding:7px 12px;background:var(--paper)}.react span{font-family:var(--display);font-size:1rem;margin-left:2px}.react.on{background:var(--yellow)}.tally{font-family:var(--display);font-weight:600;background:var(--paper);border:var(--outline);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:6px 12px}.reactions .float{position:absolute;right:calc(40px + var(--x));bottom:64px;display:grid;justify-items:center;font-size:2.6rem;line-height:1;animation:float-up 1.8s ease-out both;animation-delay:calc(var(--d) * 60ms);filter:drop-shadow(2px 2px 0 rgba(30,27,75,.35))}.reactions .float small{font:800 .75rem var(--body);color:var(--ink);background:var(--paper);border:2px solid var(--ink);border-radius:999px;padding:1px 8px;margin-top:2px}.overlay .verdict{font-family:var(--display);font-size:1.15rem;color:var(--paper)}@keyframes float-up{0%{transform:translateY(10px) scale(.6);opacity:0}15%{transform:translateY(0) scale(1.15);opacity:1}70%{opacity:1}to{transform:translateY(-160px) scale(1);opacity:0}}button.kick{font-size:.78rem;padding:4px 9px;border-width:2px;box-shadow:none;background:var(--paper);white-space:nowrap}button.kick:hover:not(:disabled){box-shadow:var(--shadow-sm)}button.kick.voted{background:var(--pink-soft)}button.kick.armed{background:var(--red);color:var(--paper)}button.kick.compact{padding:3px 6px;font-size:.8rem}.player-row{position:relative}.player-row:focus-visible{outline:3px solid var(--indigo);outline-offset:-3px}.player-row .kick-slot{position:absolute;right:8px;top:50%;transform:translateY(-50%)}.player-row .kick-slot:not(.live){opacity:0;pointer-events:none;transition:opacity .12s}.player-row:hover .kick-slot,.player-row:focus-within .kick-slot{opacity:1;pointer-events:auto}
