:root{--ink: #1d1d1f;--paper: #fffaf0;--red: #e11d2a;--go: #22c55e;--gold: #ffc531;--blue: #3a86ff;--shadow: 0 6px 0 rgba(0, 0, 0, .25);--display: "Luckiest Guy", "Arial Black", sans-serif;--body: "Nunito", system-ui, sans-serif}*{box-sizing:border-box}html,body{margin:0;height:100%;overflow:hidden}body{font-family:var(--body);color:var(--ink);background:radial-gradient(ellipse at 50% 120%,#c9f2ff,#8fd3ff 45%,#5fb4ff);-webkit-tap-highlight-color:transparent;-webkit-user-select:none;user-select:none}#stage{position:fixed;top:0;right:0;bottom:0;left:0}#stage canvas{display:block;touch-action:none}#ui{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}#ui>*{pointer-events:none}#ui button,#ui input,#ui .modal-back,#ui .screen,#players,#log-wrap,#actions,#topbar{pointer-events:auto}h1,h2,h3{font-family:var(--display);font-weight:400;letter-spacing:.5px;margin:0 0 10px}h2{font-size:30px;text-align:center}.center{text-align:center}.muted{opacity:.65}.small{font-size:13px}.warn{color:var(--red);font-weight:800}.btn{font:900 16px var(--body);border:3px solid var(--ink);border-radius:16px;padding:10px 16px;background:#fff;color:var(--ink);box-shadow:0 5px 0 var(--ink);cursor:pointer;transition:transform .08s,box-shadow .08s,filter .15s;white-space:nowrap}.btn:hover:not(:disabled){transform:translateY(-2px) rotate(-1deg);filter:brightness(1.05);box-shadow:0 7px 0 var(--ink)}.btn:active:not(:disabled){transform:translateY(4px);box-shadow:0 1px 0 var(--ink)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn.go{background:var(--go);color:#fff;text-shadow:0 2px 0 rgba(0,0,0,.25)}.btn.gold{background:var(--gold)}.btn.danger{background:#ff5a5f;color:#fff}.btn.ghost{background:#eef1f6}.btn.big{font-family:var(--display);font-weight:400;font-size:22px;letter-spacing:1px;padding:12px 22px}.btn.tiny{font-size:12px;padding:5px 8px;border-width:2px;border-radius:10px;box-shadow:0 3px 0 var(--ink)}.btn-row{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin-top:14px}.icon-btn{width:44px;height:44px;border-radius:50%;border:3px solid var(--ink);background:#fff;font-size:20px;box-shadow:0 4px 0 var(--ink);cursor:pointer}.icon-btn:active{transform:translateY(3px);box-shadow:0 1px 0 var(--ink)}.screen{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;padding:16px;background:#1e3c7840;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);overflow-y:auto}.setup-card{background:var(--paper);border:4px solid var(--ink);border-radius:28px;box-shadow:0 10px 0 var(--ink);padding:24px;width:min(560px,100%);text-align:center;animation:pop .5s cubic-bezier(.3,1.6,.5,1)}.logo{margin:0}.logo span{display:inline-block;background:var(--red);color:#fff;font-size:clamp(40px,10vw,64px);padding:4px 22px 0;border:4px solid var(--ink);border-radius:14px;transform:rotate(-3deg);text-shadow:3px 3px 0 var(--ink);animation:wobble 3s ease-in-out infinite}.logo small{display:block;font-size:20px;color:#0a7a3c;margin-top:10px}.tag{font-weight:800;margin:6px 0 16px}.count-row{display:flex;align-items:center;justify-content:center;gap:12px;font-weight:900;margin:14px 0;flex-wrap:wrap}.seg{display:inline-flex;gap:6px;flex-wrap:wrap;justify-content:center}.seg button{font:900 18px var(--body);min-width:48px;padding:8px 14px;border-radius:12px;border:3px solid var(--ink);background:#fff;cursor:pointer;box-shadow:0 3px 0 var(--ink)}.seg button.on{background:var(--gold);transform:translateY(2px);box-shadow:0 1px 0 var(--ink)}.partner button.on{background:var(--pc);color:#fff}.seat{display:flex;align-items:center;gap:10px;flex-wrap:wrap;padding:10px;margin:8px 0;border:3px solid var(--ink);border-radius:16px;background:#fff;border-left:12px solid var(--pc)}.seat input{flex:1 1 120px;min-width:0;font:800 16px var(--body);padding:8px 10px;border:2px solid #ccc;border-radius:10px}.seat-dot{display:none}.token-pick{display:flex;gap:4px;flex-wrap:wrap}.token-pick button{font-size:22px;width:40px;height:40px;border-radius:10px;border:2px solid #ddd;background:#f6f6f6;cursor:pointer}.token-pick button.on{border-color:var(--ink);background:var(--gold);transform:scale(1.12) rotate(-6deg)}.token-pick button:disabled{opacity:.25;cursor:not-allowed}#continue{width:100%;margin-bottom:6px}#start{margin-top:12px;width:100%}#players{position:fixed;top:12px;left:12px;display:flex;flex-direction:column;gap:8px;width:230px}.pcard{display:flex;gap:10px;align-items:center;background:var(--paper);border:3px solid var(--ink);border-radius:16px;padding:8px 10px;box-shadow:0 4px 0 var(--ink);border-left:10px solid var(--pc);transition:transform .25s}.pcard.active{transform:translate(8px) scale(1.04);background:#fff7d1;animation:glow 1.4s ease-in-out infinite}.pcard.out{opacity:.45;filter:grayscale(1)}.ptoken{font-size:30px}.pinfo{min-width:0;flex:1}.pname{font-weight:900;font-size:15px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.pcash{font-family:var(--display);font-size:22px;color:#0a7a3c;line-height:1}.pdots{display:flex;flex-wrap:wrap;gap:2px;margin-top:4px}.pdots i{width:10px;height:14px;border:1.5px solid var(--ink);border-radius:3px}.pdots i.mort{opacity:.3}.badge{display:inline-block;font-size:11px;background:var(--ink);color:#fff;padding:1px 6px;border-radius:8px;margin-left:4px;vertical-align:middle}.badge.jail{background:#ff8a00}.badge.out{background:#888}#topbar{position:fixed;top:12px;right:12px;display:flex;gap:8px}#actions{position:fixed;bottom:14px;left:50%;transform:translate(-50%);background:var(--paper);border:4px solid var(--ink);border-radius:24px;box-shadow:0 7px 0 var(--ink);padding:10px 16px 14px;text-align:center;max-width:calc(100% - 24px)}#actions .btn-row{margin-top:8px}#actions.busy{opacity:.85}.turn-label{font-weight:900;font-size:17px}.turn-label b{color:var(--pc)}.dice-readout{font-size:13px;font-weight:800;opacity:.75}#log-wrap{position:fixed;bottom:14px;right:12px;width:280px;display:flex;flex-direction:column-reverse;align-items:flex-end}#log-toggle{font:900 13px var(--body);border:3px solid var(--ink);border-radius:12px;background:#fff;padding:6px 10px;box-shadow:0 3px 0 var(--ink);cursor:pointer}#log{display:none;width:100%;max-height:40vh;overflow-y:auto;background:#fffaf0f2;border:3px solid var(--ink);border-radius:14px;margin-bottom:8px;padding:8px 10px;font-size:13px;font-weight:700}#log div{padding:3px 0;border-bottom:1px dashed #ccc}#log-wrap.open #log{display:block}#toasts{position:fixed;top:70px;left:50%;transform:translate(-50%);display:flex;flex-direction:column;gap:8px;align-items:center;width:min(460px,90vw)}.toast{background:#fff;border:3px solid var(--ink);border-radius:14px;padding:8px 14px;font-weight:900;box-shadow:0 4px 0 var(--ink);animation:drop .35s cubic-bezier(.3,1.6,.5,1);text-align:center;transition:opacity .4s,transform .4s}.toast.good{background:#d9ffe4}.toast.bad{background:#ffe0e0}.toast.bye{opacity:0;transform:translateY(-10px)}#banner{position:fixed;top:38%;left:0;right:0;display:flex;justify-content:center}#banner div{font-family:var(--display);font-size:clamp(30px,7vw,60px);color:#fff;background:var(--pc);border:4px solid var(--ink);border-radius:22px;padding:8px 28px 2px;text-shadow:3px 3px 0 var(--ink);box-shadow:0 8px 0 var(--ink);opacity:0}#banner.show div{animation:banner 1.6s ease forwards}#modals{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none}.modal-back{position:fixed;top:0;right:0;bottom:0;left:0;background:#141e3c73;display:grid;place-items:center;padding:16px;animation:fade .2s;overflow-y:auto}.modal-back.bye{animation:fade .2s reverse forwards}.modal{position:relative;background:var(--paper);border:4px solid var(--ink);border-radius:26px;box-shadow:0 10px 0 var(--ink);padding:22px;width:min(620px,100%);max-height:calc(100vh - 32px);overflow-y:auto;animation:pop .35s cubic-bezier(.3,1.6,.5,1)}.modal.narrow{width:min(400px,100%)}.close-x{position:absolute;top:10px;right:12px;border:none;background:none;font-size:22px;cursor:pointer;font-weight:900}.deed{background:#fff;border:3px solid var(--ink);border-radius:14px;overflow:hidden;margin:6px auto;max-width:320px}.deed-head{font-family:var(--display);font-size:24px;text-align:center;padding:10px 8px 6px;border-bottom:3px solid var(--ink)}.deed-head small{display:block;font-size:11px;font-family:var(--body);font-weight:900;letter-spacing:2px}.deed table{width:100%;border-collapse:collapse;font-weight:800;font-size:14px}.deed td{padding:4px 12px}.deed td:last-child{text-align:right}.deed tr.sep td{border-top:2px dashed #ccc}.deed-owner{text-align:center;font-size:13px;font-weight:800;padding:8px;background:#f6f3ea;border-top:2px solid var(--ink)}.deed.plain p{padding:12px;font-weight:800;text-align:center;margin:0}.card-modal{width:min(420px,100%);background:transparent;border:none;box-shadow:none}.flipcard{perspective:800px}.flipcard .face{border:4px solid var(--ink);border-radius:20px;padding:22px;text-align:center;box-shadow:0 10px 0 var(--ink);animation:flip .6s cubic-bezier(.3,1.4,.5,1);font-weight:900;font-size:19px}.flipcard.chance .face{background:#ffb347}.flipcard.chest .face{background:#8ec9ff}.card-title{font-family:var(--display);font-size:32px}.card-icon{font-size:60px;animation:wobble 2s ease-in-out infinite}.auction-status{text-align:center;font-weight:800;margin:10px 0 6px;font-size:17px}.bidders{display:flex;flex-wrap:wrap;gap:6px;justify-content:center}.bidders span{border:2px solid var(--pc);border-radius:10px;padding:2px 8px;font-weight:800;font-size:13px}.bidders span.now{background:var(--pc);color:#fff;transform:scale(1.1)}.manage{margin-top:6px}.mrow{display:flex;align-items:center;gap:8px;padding:7px 4px;border-bottom:2px dashed #ddd;flex-wrap:wrap}.mrow.mort .mname{text-decoration:line-through;opacity:.6}.chip{width:14px;height:22px;border:2px solid var(--ink);border-radius:4px;flex:none}.mname{flex:1 1 150px;font-weight:900;cursor:pointer}.mname small{font-size:12px}.mbtns{display:flex;gap:6px;flex-wrap:wrap}.tgrid{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-top:12px}.tside{background:#fff;border:3px solid var(--ink);border-radius:16px;padding:10px}.tside h3{font-size:18px;text-align:center}.tprops{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:8px}.tchip{font:800 12px var(--body);border:2px solid var(--ink);border-left:8px solid var(--gc);border-radius:8px;background:#f4f4f4;padding:4px 6px;cursor:pointer}.tchip.on{background:var(--gold);transform:scale(1.05)}.tcash{display:flex;align-items:center;gap:6px;font-weight:900;margin-top:6px}.tcash input{width:90px;font:800 15px var(--body);padding:4px 6px;border:2px solid #ccc;border-radius:8px}.help ul{padding-left:18px}.help li{margin:6px 0;font-weight:700}.winner-token{font-size:90px;text-align:center;animation:wobble 1s ease-in-out infinite}.confetti{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:10}.confetti i{position:absolute;top:-20px;width:10px;height:16px;border-radius:2px;animation:fall linear infinite}@keyframes pop{0%{transform:scale(.6);opacity:0}to{transform:scale(1);opacity:1}}@keyframes drop{0%{transform:translateY(-20px) scale(.8);opacity:0}}@keyframes fade{0%{opacity:0}}@keyframes wobble{0%,to{transform:rotate(-3deg)}50%{transform:rotate(3deg) scale(1.03)}}@keyframes glow{0%,to{box-shadow:0 4px 0 var(--ink)}50%{box-shadow:0 4px 0 var(--ink),0 0 0 5px var(--pc)}}@keyframes flip{0%{transform:rotateY(90deg) scale(.7)}to{transform:rotateY(0) scale(1)}}@keyframes fall{to{transform:translateY(110vh) rotate(720deg)}}@keyframes banner{0%{opacity:0;transform:scale(.3) rotate(-10deg)}20%{opacity:1;transform:scale(1.1) rotate(2deg)}30%,75%{opacity:1;transform:scale(1) rotate(0)}to{opacity:0;transform:translateY(-40px) scale(.9)}}@media (max-width: 760px){#players{flex-direction:row;flex-wrap:wrap;width:calc(100% - 70px);gap:6px;top:8px;left:8px}.pcard{flex:1 1 calc(50% - 6px);padding:4px 6px;gap:6px;border-left-width:7px;box-shadow:0 3px 0 var(--ink)}.pcard.active{transform:scale(1.03)}.ptoken{font-size:20px}.pname{font-size:12px}.pcash{font-size:16px}.pdots{display:none}#topbar{flex-direction:column;top:8px;right:8px}.icon-btn{width:38px;height:38px;font-size:17px}#actions{bottom:8px;padding:8px 10px 10px;width:calc(100% - 16px)}#actions .btn{font-size:14px;padding:8px 10px}#actions .btn.big{font-size:18px}#log-wrap{bottom:auto;top:50%;right:8px;width:220px}.tgrid{grid-template-columns:1fr}#toasts{top:120px}}
