*{box-sizing:border-box}body{margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;background:#17151f;color:#eae7f0;min-height:100vh}main{max-width:860px;margin:0 auto;padding:16px}h1{margin:24px 0 4px}.sub{color:#a49fb5;margin-top:0}.error{color:#ff8a8a}button{background:#6d5ce7;color:#fff;border:none;border-radius:8px;padding:10px 18px;font-size:15px;cursor:pointer}button:disabled{opacity:.45;cursor:default}button:hover:not(:disabled){background:#7e6ef0}input,select{background:#262230;color:#eae7f0;border:1px solid #3d3850;border-radius:8px;padding:9px 12px;font-size:15px}.game-cards{display:flex;flex-wrap:wrap;gap:16px;margin-top:24px}.card{background:#221f2d;border:1px solid #322d42;border-radius:14px;padding:20px;width:240px;display:flex;flex-direction:column;gap:10px}.card-emoji{font-size:42px}.card h2{margin:0}.card p{margin:0;color:#a49fb5}.room-header{display:flex;align-items:center;gap:14px;padding:10px 0;flex-wrap:wrap}.brand{color:#eae7f0;text-decoration:none;font-weight:700}.room-title{color:#a49fb5}.copy{margin-left:auto;background:#2e2a3d}.seat-picker{background:#221f2d;border-radius:14px;padding:18px;margin-bottom:14px}.seat-picker h2{margin-top:0}.seats{display:flex;flex-wrap:wrap;gap:10px;margin-top:12px}.hint{color:#7d7891;font-size:13px}.waiting{color:#f0c000}.status{font-size:17px;display:flex;align-items:center;gap:8px}.players{color:#a49fb5}.dot{width:12px;height:12px;border-radius:50%;display:inline-block}.chess-square{max-width:560px}.ludo-svg{width:100%;max-width:600px;height:auto;display:block;touch-action:manipulation}.ludo-controls{margin:12px 0;min-height:52px;display:flex;align-items:center;gap:12px}.roll{font-size:18px;display:inline-flex;align-items:center;gap:10px}.pulse{animation:pulse 1s ease-in-out infinite}@keyframes pulse{0%,to{stroke-opacity:1}50%{stroke-opacity:.25}}.piece{transition:transform .35s cubic-bezier(.3,.9,.4,1.1)}.die{position:relative;display:inline-block;width:34px;height:34px;background:#fff;border-radius:7px;border:1px solid #b9b2a6;box-shadow:inset 0 -2px #0002}.die i{position:absolute;width:6px;height:6px;border-radius:50%;background:#222;transform:translate(-50%,-50%)}.die-idle{opacity:.35}.die-rolling{animation:tumble .12s linear infinite}@keyframes tumble{0%{transform:rotate(-8deg) translateY(0)}50%{transform:rotate(8deg) translateY(-3px)}to{transform:rotate(-8deg) translateY(0)}}.mute{background:none;border:none;padding:2px 6px;font-size:16px;cursor:pointer;margin-left:auto}
