:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif;color:#1d1733;background:#f6f4ff;--purple: #5425b8;--purple-bright: #8054f5;--aqua: #18c6c1;--ink: #1d1733;--muted: #5b5570;--line: #e5def4;--surface: #ffffff}*{box-sizing:border-box}body{margin:0}main{max-width:1100px;margin:auto;padding:24px}header{background:linear-gradient(125deg,#5425b8,#8054f5);color:#fff;padding:32px;border-radius:20px;margin-bottom:22px;box-shadow:0 12px 30px #5425b826}h1,h2,h3{letter-spacing:-.025em}h1{margin:0;font-size:clamp(1.8rem,4vw,2.5rem)}h2{color:var(--purple)}header p{margin-bottom:0;color:#f3eaff}.panel{background:var(--surface);padding:24px;border:1px solid var(--line);border-radius:18px;margin:18px 0;box-shadow:0 5px 20px #3920670b}button,.upload-zone{background:var(--purple);color:#fff;border:0;border-radius:11px;padding:11px 16px;cursor:pointer;margin:4px;font:inherit;font-weight:700;transition:background-color .15s ease,box-shadow .15s ease}button:hover:not(:disabled),.upload-zone:hover{background:#452099}button:disabled{opacity:.48;cursor:not-allowed}button:focus-visible,.upload-zone:focus-within,input:focus-visible{outline:3px solid var(--aqua);outline-offset:3px}.secondary{background:#eee8ff;color:#452099}.secondary:hover:not(:disabled){background:#dfd3ff}input[type=number],input[type=text],input:not([type]),select{max-width:100%;padding:10px;margin-top:6px;border:1px solid #c9c0da;border-radius:9px;font:inherit}input[type=number]{display:block;width:100%}.controls{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}.controls>*{min-width:0}.thumbs{display:grid;grid-template-columns:repeat(auto-fill,minmax(88px,1fr));gap:8px;max-height:250px;overflow:auto}.thumbs img{width:100%;aspect-ratio:1;object-fit:contain}.thumbs small,.cell small{display:block;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;text-align:center}.thumbs>div{border:1px solid var(--line);border-radius:10px;padding:6px;min-width:0;background:#fff}.thumbs input{width:100%;border:1px solid #d8d0e5;border-radius:6px;padding:5px;font-size:12px}.board{display:grid;width:min(100%,460px);border:2px solid var(--purple);margin:12px 0 24px;border-radius:8px;overflow:hidden}.cell{min-width:0;border:1px solid #bdb0d7;background:#fff;padding:3px;position:relative}.cell img{width:100%;aspect-ratio:1;object-fit:contain}.playable{position:relative;cursor:pointer;margin:0;border-radius:0;color:#242033}.playable.marked:after{content:"✓";position:absolute;inset:0;background:#18a87975;color:#fff;font-size:38px;display:grid;place-items:center;pointer-events:none}.playable.marked{outline:3px solid #14926d;outline-offset:-3px}.mark-indicator{position:absolute;top:4px;right:4px;background:#087c63;color:#fff;border-radius:50%;height:26px;width:26px;display:grid;place-items:center;font-weight:700}.called img{max-width:240px;width:100%;display:block;margin:20px 0}.error{color:#b42318}nav{display:flex;flex-wrap:wrap;gap:6px}footer{color:var(--muted);font-size:13px;padding:18px}.upload-zone{display:inline-block;padding:15px 20px}.upload-zone input{display:none}.remove{font-size:11px;background:#fce9eb;color:#8c1c2d;padding:5px;margin:5px 0 0;width:100%}.remove:hover:not(:disabled){background:#f7d8df}.win-options{display:flex;flex-wrap:wrap;gap:12px;border:1px solid var(--line);border-radius:12px;padding:12px;margin:12px 0}.win-options label{display:flex;align-items:center;gap:6px}.win-banner{padding:14px;background:#d7f8f1;color:#075e55;border:2px solid #18a999;border-radius:12px;font-weight:800;margin:12px 0}@media(max-width:700px){.controls{grid-template-columns:1fr}main{padding:12px}header{padding:22px}.panel{padding:16px}}@media(prefers-reduced-motion:reduce){button,.upload-zone{transition:none}}.studio-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:16px 0 22px;padding:8px;background:#fff;border:1px solid #e9e2fb;border-radius:16px;box-shadow:0 4px 16px #5425b80b}.studio-tabs .studio-tab{flex:1 1 auto;margin:0;padding:12px 14px;background:transparent;color:#5425b8;border:1px solid transparent;border-radius:11px;font-weight:700;white-space:nowrap}.studio-tabs .studio-tab:hover{background:#f0eaff}.studio-tabs .studio-tab.active{background:#5425b8;color:#fff;box-shadow:0 3px 10px #5425b833}.studio-tabs .studio-tab:focus-visible{outline:3px solid #18c6c1;outline-offset:2px}@media(max-width:520px){.studio-tabs{gap:5px;padding:6px}.studio-tabs .studio-tab{flex:1 1 42%;font-size:13px;padding:11px 8px}}.board{gap:6px;padding:10px;background:#fff;border:2px solid #dcd3f4;border-radius:18px;box-shadow:0 8px 24px #5425b812;overflow:visible}.board .cell{min-width:0;overflow:hidden;background:#f6f4ff;border:1px solid #e7e0f7;border-radius:10px;padding:5px;text-align:center}.board .cell img{display:block;width:100%;aspect-ratio:1;object-fit:contain;border-radius:5px}.board .cell small{margin-top:4px;color:#342a50;font-size:clamp(9px,1.5vw,12px);line-height:1.3}.board .playable{margin:0;width:100%;min-width:0;color:var(--ink);transition:border-color .15s ease,background-color .15s ease}.board .playable:hover:not(:disabled){background:#ede7ff;border-color:#a58be5}.board .playable.marked{background:#d7f8f1;border-color:#18a999;outline:2px solid #18a999;outline-offset:-2px}.board .playable.marked:after{content:none}.board .playable .mark-indicator{top:5px;right:5px;width:24px;height:24px;background:#087e79;border:2px solid #fff;box-shadow:0 2px 6px #1d173326;font-size:14px}.board .playable:focus-visible{outline:3px solid var(--aqua);outline-offset:2px;z-index:1}@media(max-width:520px){.board{gap:4px;padding:6px;border-radius:13px}.board .cell{padding:3px;border-radius:7px}.board .cell small{font-size:9px}.board .playable .mark-indicator{width:20px;height:20px;font-size:12px;top:2px;right:2px}}@media(prefers-reduced-motion:reduce){.board .playable{transition:none}}.multiplayer-studio{overflow-wrap:anywhere}.mp-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;flex-wrap:wrap;margin-bottom:20px}.mp-heading h2{margin:0 0 5px}.mp-heading p{margin:0}.mp-eyebrow{font-size:11px;font-weight:800;letter-spacing:.12em;color:#6a5892;text-transform:uppercase;margin:0 0 7px}.mp-status{font-size:13px;font-weight:800;border-radius:999px;padding:9px 14px;white-space:nowrap}.mp-status-playing{color:#08665f;background:#d7f8f1}.mp-status-waiting{color:#6140a4;background:#eee8ff}.mp-status-finished{color:#575268;background:#ecebf1}.mp-join-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}.mp-card{background:#fff;border:1px solid #e5def4;border-radius:18px;padding:22px;margin:16px 0;box-shadow:0 5px 18px #3920670b;min-width:0}.mp-join-grid .mp-card{margin:0}.mp-card h3{color:#5425b8;margin:0 0 12px}.mp-card label{display:block;font-weight:650;margin:12px 0}.mp-card label input{display:block;width:100%}.mp-card-icon{display:grid;place-items:center;width:42px;height:42px;border-radius:12px;background:#eee8ff;color:#5425b8;font-size:24px;margin-bottom:15px}.mp-room-card{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap;background:linear-gradient(115deg,#f4efff,#eafbf9);border:1px solid #ded4f7;border-radius:18px;padding:20px}.mp-room-card p:last-child{margin:6px 0 0;color:#554c6b}.mp-room-code{font-size:clamp(25px,5vw,38px);font-weight:850;letter-spacing:.12em;color:#5425b8;font-variant-numeric:tabular-nums}.mp-copy-button{margin:0}.mp-stats{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}.mp-stats>div{background:#f6f4ff;border:1px solid #e5def4;border-radius:14px;text-align:center;padding:15px 8px;display:grid;gap:3px}.mp-stats strong{color:#5425b8;font-size:clamp(22px,3vw,30px)}.mp-stats span{font-size:12px;color:#5b5570}.mp-player-list{display:flex;flex-wrap:wrap;gap:8px;list-style:none;padding:0}.mp-player-list li{background:#eee8ff;color:#452099;padding:8px 12px;border-radius:999px;font-weight:650}.mp-section-divider{border-top:1px solid #e5def4;margin-top:18px;padding-top:18px}.mp-actions{display:flex;gap:8px;flex-wrap:wrap}.mp-latest-call{background:#f6f4ff;border-radius:14px;padding:15px;margin-top:16px;width:fit-content}.mp-latest-call img{margin:0 0 10px;border-radius:10px}.mp-latest-call h3{margin:0}.mp-helper{color:#625c75;font-size:13px}.mp-winners{background:#fffcf5;border-color:#f2e6c6}.mp-winner-list{list-style:none;padding:0;display:grid;gap:10px}.mp-winner-list li{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;background:#fff;border:1px solid #e5def4;border-radius:12px;padding:12px}.mp-winner-list p{margin:5px 0 0}.mp-acknowledged{font-weight:750;color:#087e79}.mp-end-game{border-top:1px solid #e5def4;margin-top:18px;padding-top:15px}.mp-danger{background:#b42332}.mp-danger:hover:not(:disabled){background:#8e1b29}.mp-board{display:grid;gap:6px;max-width:540px;background:#fff;padding:9px;border:2px solid #ded4f7;border-radius:17px;margin:15px 0}.multiplayer-studio button.mp-square{position:relative;display:block;min-width:0;aspect-ratio:1;margin:0;padding:4px;background:#faf9ff;color:#1d1733;border:2px solid #e5def4;border-radius:10px;overflow:hidden;box-shadow:none}.multiplayer-studio button.mp-square:hover:not(:disabled){background:#f1edff;border-color:#8054f5}.multiplayer-studio button.mp-square.mp-square-marked{background:#d7f8f1;border:3px solid #18a999}.mp-square img{width:100%;height:100%;object-fit:contain;display:block}.mp-called-label{position:absolute;left:3px;bottom:3px;background:#5425b8;color:#fff;border-radius:5px;padding:2px 4px;font-size:10px;font-weight:750}.mp-check{position:absolute;top:3px;right:3px;width:23px;height:23px;display:grid;place-items:center;background:#087e79;color:#fff;border-radius:50%;font-weight:800;font-size:14px}.mp-claim-button{font-size:17px;padding:14px 22px}.mp-claim-result{background:#d7f8f1;color:#075e55;padding:14px;border-radius:12px;font-weight:800}.mp-finished{background:#eee8ff;color:#452099;padding:12px;border-radius:10px}.mp-leave{margin-top:20px}.mp-message{border-left:4px solid #18c6c1;background:#f6f4ff;border-radius:8px;padding:12px}@media(max-width:650px){.mp-join-grid{grid-template-columns:1fr}.mp-card,.mp-room-card{padding:15px}.mp-board{gap:4px;padding:5px}.multiplayer-studio button.mp-square{padding:2px;border-radius:7px}.mp-called-label{font-size:8px;padding:1px 2px}.mp-check{width:19px;height:19px;font-size:12px}}@media(max-width:520px){.studio-tabs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:8px;margin:14px 0 18px}.studio-tabs .studio-tab{width:100%;min-width:0;min-height:48px;margin:0;padding:12px 8px;white-space:normal;line-height:1.2;text-align:center;font-size:13px}.studio-tabs .studio-tab:last-child:nth-child(odd){grid-column:1 / -1}.studio-tabs .studio-tab.active:hover{background:var(--purple)}}main,.panel,.multiplayer-studio,.mp-card{min-width:0}.board,.mp-board{max-width:100%}.mp-board{width:100%}.mp-room-code{overflow-wrap:anywhere}.mp-actions>button,.mp-winner-list button{max-width:100%;white-space:normal}.mp-latest-call{max-width:100%}.mp-latest-call img{max-width:100%;height:auto}@media(max-width:650px){.board{width:100%}.board .cell,.mp-board>*{min-width:0}.board .cell img{height:auto}.mp-board{margin-inline:auto}.mp-stats{grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.mp-stats>div{min-width:0;padding:12px 5px}.mp-stats strong{font-size:clamp(18px,5vw,26px)}.mp-stats span{font-size:11px;overflow-wrap:anywhere}.mp-actions{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.mp-actions>button{margin:0;min-width:0;min-height:44px;padding:10px 8px}.mp-heading{gap:10px}.mp-claim-button{min-height:48px;max-width:100%}.mp-room-card{align-items:stretch}.mp-copy-button{min-height:44px}}@media(max-width:390px){.board{gap:3px;padding:4px}.board .cell{padding:2px}.board .cell small{font-size:8px}.mp-board{gap:3px;padding:4px}.multiplayer-studio button.mp-square{padding:1px;border-width:1px}.multiplayer-studio button.mp-square.mp-square-marked{border-width:2px}.mp-called-label{font-size:8px;line-height:1.1}.mp-check{width:18px;height:18px;font-size:11px}.mp-actions{grid-template-columns:1fr}}.multiplayer-studio button:focus-visible,.studio-tabs .studio-tab:focus-visible{outline:3px solid var(--aqua);outline-offset:2px}
