:root{--paper: #f4ead2;--paper-2: #eadfc1;--paper-3: #dfd2ae;--ink: #1b1a1f;--ink-soft: #5b5660;--blue: #2b4fb8;--blue-soft: rgba(43, 79, 184, .16);--orange: #ff5f1f;--orange-soft: rgba(255, 95, 31, .2);--red: #e63b2e;--red-soft: rgba(230, 59, 46, .14);--shadow: 4px 4px 0 var(--ink);--shadow-sm: 3px 3px 0 var(--ink);--radius: 6px;--font-display: "Alfa Slab One", "Rockwell", "Georgia", serif;--font-body: "Space Grotesk", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono: "Space Mono", ui-monospace, "Courier New", monospace;color-scheme:light}*{box-sizing:border-box}html,body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font-body);-webkit-tap-highlight-color:transparent;-webkit-text-size-adjust:100%}body:before{content:"";position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:50;opacity:.55;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 0  0 0 0 0 0  0 0 0 0 0  0 0 0 0.11 0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)'/%3E%3C/svg%3E")}body{padding:env(safe-area-inset-top) env(safe-area-inset-right) 0 env(safe-area-inset-left)}.app{max-width:540px;margin:0 auto;padding:12px 14px 150px;display:flex;flex-direction:column;gap:14px;min-height:100vh}h1,h2,h3{margin:0 0 8px;line-height:1.1;font-family:var(--font-display);font-weight:400;text-transform:uppercase;letter-spacing:.02em}h2{font-size:1.15rem;display:inline-block;background:linear-gradient(transparent 62%,var(--orange-soft) 62%);padding-right:4px}p{margin:0 0 8px;line-height:1.4}b{font-weight:700}.card{background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px;position:relative}.card.inset{background:var(--paper-2);box-shadow:none;border-style:dashed}button{font-family:var(--font-body);font-weight:700;font-size:.95rem;text-transform:uppercase;letter-spacing:.05em;color:var(--ink);background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:10px 16px;min-height:46px;cursor:pointer;touch-action:manipulation;transition:transform .06s ease-out,box-shadow .06s ease-out;display:inline-flex;align-items:center;justify-content:center;gap:8px}button:active:not(:disabled){transform:translate(3px,3px);box-shadow:0 0 0 var(--ink)}button:disabled{cursor:default;color:var(--ink-soft);background:var(--paper-2);border-style:dashed;box-shadow:none}button.primary,button.gold{background:var(--orange)}button.danger{background:var(--red);color:var(--paper)}button.big{width:100%;font-size:1.1rem;min-height:54px}button.small{min-height:34px;padding:4px 10px;font-size:.78rem;box-shadow:2px 2px 0 var(--ink);border-width:2px}button.small:active:not(:disabled){transform:translate(2px,2px)}button.ghost{background:transparent;border-color:transparent;box-shadow:none;text-transform:none;letter-spacing:0;font-weight:500;text-decoration:underline;text-decoration-thickness:2px;text-underline-offset:3px;color:var(--blue)}button.ghost:active:not(:disabled){transform:none}input{font-family:var(--font-body);font-size:1rem;color:var(--ink);background:var(--paper-2);border:2.5px solid var(--ink);border-radius:var(--radius);padding:10px 12px;min-height:46px;width:100%;box-shadow:inset 2px 2px #1b1a1f1f}input:focus{outline:3px solid var(--blue);outline-offset:2px}input::placeholder{color:var(--ink-soft)}label{display:flex;flex-direction:column;gap:6px;font-family:var(--font-mono);font-size:.72rem;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft)}.row{display:flex;gap:8px;align-items:center}.row.wrap{flex-wrap:wrap}.grow{flex:1}.stack{display:flex;flex-direction:column;gap:14px}.muted{color:var(--ink-soft)}.small{font-size:.85rem}.tiny{font-size:.72rem}.mono{font-family:var(--font-mono)}.center{text-align:center}.pos{color:var(--blue)}.neg{color:var(--red)}.accent{color:var(--orange)}.riso{display:inline-block;vertical-align:middle;flex-shrink:0}.riso-fill{mix-blend-mode:multiply}.home{display:flex;flex-direction:column;gap:16px;padding-top:18px}.masthead{text-align:center;padding:10px 0 4px}.masthead .line{font-family:var(--font-display);font-size:clamp(2.3rem,11vw,3.4rem);line-height:.95;text-transform:uppercase;color:var(--ink);text-shadow:3px 3px 0 var(--orange);letter-spacing:.01em}.masthead .n{display:inline-grid;place-items:center;font-family:var(--font-display);font-size:1.5rem;width:2.4rem;height:2.4rem;margin:6px 0;background:var(--orange);color:var(--ink);border:3px solid var(--ink);border-radius:50%;transform:rotate(-10deg);box-shadow:var(--shadow-sm);text-shadow:none}.masthead .sub{font-family:var(--font-mono);font-weight:700;font-size:.74rem;letter-spacing:.26em;text-transform:uppercase;color:var(--blue);margin-top:12px}.hero{display:flex;justify-content:center;align-items:flex-end;gap:6px;margin:4px 0 2px}.hero .riso{width:68px;height:68px}.hero .riso:nth-child(1){transform:rotate(-8deg) translateY(4px)}.hero .riso:nth-child(2){width:84px;height:84px}.hero .riso:nth-child(3){transform:rotate(9deg) translateY(4px)}.code-input{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.35em;font-weight:700;font-size:1.3rem;text-align:center}.divider{text-align:center;font-family:var(--font-mono);font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--ink-soft);display:flex;align-items:center;gap:12px}.divider:before,.divider:after{content:"";flex:1;border-top:2px dashed var(--ink-soft)}.rules summary{cursor:pointer;font-family:var(--font-display);text-transform:uppercase;font-size:1rem;list-style:none;display:flex;justify-content:space-between;align-items:center}.rules summary:after{content:"+";font-family:var(--font-mono);font-size:1.3rem}.rules[open] summary:after{content:"–"}.rules ul{padding-left:18px;margin:10px 0 0}.rules li{margin-bottom:8px;font-size:.92rem;line-height:1.4}.rules li::marker{color:var(--orange);font-weight:700}.ticket{text-align:center;background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);padding:14px 14px 16px;position:relative;overflow:hidden}.ticket:before,.ticket:after{content:"";position:absolute;top:50%;width:22px;height:22px;background:var(--paper);border:2.5px solid var(--ink);border-radius:50%;transform:translateY(-50%)}.ticket:before{left:-13px}.ticket:after{right:-13px}.ticket .label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.25em;text-transform:uppercase;color:var(--ink-soft)}.room-code{font-family:var(--font-display);font-size:3rem;letter-spacing:.22em;padding-left:.22em;color:var(--blue);text-shadow:3px 3px 0 var(--orange);margin:2px 0 10px;line-height:1.1}.player-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column}.player-list li{display:flex;align-items:center;gap:10px;min-height:40px;border-bottom:2px dashed var(--paper-3);font-weight:500}.player-list li:last-child{border-bottom:none}.dot{width:11px;height:11px;border-radius:50%;border:2px solid var(--ink);background:var(--paper);flex-shrink:0}.dot.on{background:var(--blue)}.badge{font-family:var(--font-mono);font-size:.6rem;font-weight:700;padding:2px 6px;border:2px solid var(--ink);border-radius:3px;margin-left:8px;letter-spacing:.1em;vertical-align:middle;background:var(--paper)}.badge.you{background:var(--orange)}.setting{display:flex;justify-content:space-between;align-items:center;gap:10px;padding:8px 0;border-bottom:2px dashed var(--paper-3)}.setting:last-of-type{border-bottom:none}.seg{display:flex;gap:6px}.seg button{min-width:44px;min-height:38px;padding:4px 10px;font-family:var(--font-mono)}.seg button.active{background:var(--blue);color:var(--paper)}.header{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--ink);color:var(--paper);font-family:var(--font-mono);font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.1em;padding:8px 12px;border-radius:4px;flex-wrap:wrap}.header .riso{color:var(--paper)}.header .you-coins{color:var(--orange);font-size:.95rem;display:inline-flex;align-items:center;gap:5px}.offer-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.good{background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow-sm);padding:12px 4px 8px;text-align:center;cursor:pointer;-webkit-user-select:none;user-select:none;position:relative;min-height:104px;display:flex;flex-direction:column;align-items:center;gap:2px;transition:transform .08s,box-shadow .08s}.good:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--ink)}.good .name{font-size:.74rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em;margin-top:4px}.good .value{font-family:var(--font-mono);font-weight:700;font-size:.9rem}.good.contraband{background:var(--orange-soft)}.good.contraband:after{content:"CONTRABAND";position:absolute;top:3px;left:50%;transform:translate(-50%) rotate(-2deg);font-family:var(--font-mono);font-size:.5rem;font-weight:700;letter-spacing:.14em;color:var(--red)}.good.selected{outline:3px solid var(--blue);outline-offset:2px}.good.selected:before{content:"✓";position:absolute;top:-10px;right:-8px;width:22px;height:22px;border-radius:50%;background:var(--blue);color:var(--paper);border:2px solid var(--ink);font-weight:700;font-size:.8rem;display:grid;place-items:center}.good.dim{opacity:.35}.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.slot{min-height:96px;border-radius:var(--radius);border:2.5px dashed var(--ink-soft);background:repeating-linear-gradient(-45deg,transparent 0 7px,rgba(27,26,31,.05) 7px 14px);display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;position:relative;padding:12px 4px 6px;-webkit-user-select:none;user-select:none;gap:1px}.slot .idx{position:absolute;top:3px;left:6px;font-family:var(--font-mono);font-size:.62rem;font-weight:700;color:var(--ink-soft)}.slot .name{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.04em;margin-top:3px}.slot .value{font-family:var(--font-mono);font-weight:700;font-size:.82rem}.slot.hidden{border-style:solid;border-color:var(--ink);background:var(--paper-2)}.slot.revealed{border-style:solid;border-color:var(--ink);background:var(--paper);box-shadow:var(--shadow-sm);animation:pop .25s cubic-bezier(.2,1.3,.4,1)}.slot.revealed.contraband{background:var(--orange-soft)}.slot.tappable{cursor:pointer;border-color:var(--blue);box-shadow:3px 3px 0 var(--blue)}.slot.tappable:active{transform:translate(2px,2px);box-shadow:1px 1px 0 var(--blue)}.slot.destroyed .riso,.slot.destroyed .name,.slot.destroyed .value{opacity:.35}.stamp{position:absolute;left:50%;top:50%;transform:translate(-50%,-50%) rotate(-14deg);font-family:var(--font-display);font-size:.95rem;letter-spacing:.14em;text-transform:uppercase;color:var(--red);border:3px double var(--red);border-radius:4px;padding:1px 8px;background:#f4ead2bf;white-space:nowrap;animation:slam .35s cubic-bezier(.2,1.4,.4,1);pointer-events:none}.stamp.inline{position:static;transform:rotate(-4deg);font-size:.72rem;padding:0 6px;animation:none}.stamp.blue{color:var(--blue);border-color:var(--blue)}@keyframes slam{0%{transform:translate(-50%,-50%) rotate(-14deg) scale(2.4);opacity:0}to{transform:translate(-50%,-50%) rotate(-14deg) scale(1);opacity:1}}@keyframes pop{0%{transform:scale(.8);opacity:0}to{transform:scale(1);opacity:1}}.pcard{background:var(--paper);border:2.5px solid var(--ink);border-radius:var(--radius);box-shadow:var(--shadow);padding:10px 12px 12px;display:flex;flex-direction:column;gap:10px;position:relative}.pcard.busted{border-color:var(--red);box-shadow:4px 4px 0 var(--red);background:var(--red-soft)}.pcard.immune{border-color:var(--blue);box-shadow:4px 4px 0 var(--blue)}.pcard-head{display:flex;justify-content:space-between;align-items:center;gap:6px;flex-wrap:wrap;border-bottom:2px solid var(--ink);padding-bottom:6px}.pcard-foot{display:flex;justify-content:space-between;align-items:center;gap:6px;flex-wrap:wrap;min-height:24px}.pname{font-family:var(--font-display);font-size:1.05rem;text-transform:uppercase}.coins{font-family:var(--font-mono);font-weight:700;font-size:1rem;display:inline-flex;align-items:center;gap:4px}.tag{font-family:var(--font-mono);font-size:.64rem;font-weight:700;padding:3px 7px;border:2px solid var(--ink);border-radius:3px;background:var(--paper);letter-spacing:.08em;text-transform:uppercase;white-space:nowrap;display:inline-flex;align-items:center;gap:4px}.tag.ok{color:var(--blue);border-color:var(--blue)}.tag.gold{background:var(--orange)}.tag.bad{color:var(--red);border-color:var(--red)}.ap-bar{display:flex;justify-content:space-between;align-items:center;gap:8px}.ap-bar .title{font-family:var(--font-display);text-transform:uppercase;font-size:1rem}.pips{display:inline-flex;gap:2px;align-items:center}.pips .riso.off{opacity:.22;filter:grayscale(1)}.pips .count{font-family:var(--font-mono);font-weight:700;margin-left:6px}.sheriff-actions{display:flex;flex-direction:column;gap:12px}.sheriff-actions .label{font-family:var(--font-mono);font-size:.7rem;letter-spacing:.15em;text-transform:uppercase;color:var(--ink-soft);display:inline-flex;align-items:center;gap:6px}.stepper{display:flex;align-items:center;gap:12px}.stepper .val{font-family:var(--font-mono);font-size:1.6rem;font-weight:700;min-width:3.2ch;text-align:center;display:inline-flex;align-items:center;gap:4px}.stepper button{width:50px;font-size:1.4rem;font-family:var(--font-mono)}.log{display:flex;flex-direction:column;gap:8px}.log-entry{font-family:var(--font-mono);font-size:.78rem;line-height:1.45;padding:4px 0 4px 12px;border-left:4px solid var(--ink)}.log-entry.bust{border-color:var(--red);color:var(--red);font-weight:700}.log-entry.legal{border-color:var(--blue)}.log-entry.bribe,.log-entry.payout{border-color:var(--orange)}.log-entry.sweep{border-left-style:dashed;border-color:var(--blue)}.log-entry.round{border-color:transparent;padding-left:0;font-family:var(--font-display);font-size:.85rem;text-transform:uppercase;letter-spacing:.04em}.log-entry.end,.log-entry.info{color:var(--ink-soft)}table.score{width:100%;border-collapse:collapse}table.score th,table.score td{padding:9px 4px;text-align:left;border-bottom:2px dashed var(--paper-3)}table.score th{font-family:var(--font-mono);font-size:.64rem;color:var(--ink-soft);letter-spacing:.15em;text-transform:uppercase;border-bottom:2px solid var(--ink)}table.score td{font-weight:500}table.score td.num,table.score th.num{text-align:right;font-family:var(--font-mono);font-variant-numeric:tabular-nums;font-weight:700}table.score td .riso{margin-right:4px}tr.winner td{background:var(--orange-soft);font-weight:700}tr.winner td:first-child{border-radius:4px 0 0 4px}tr.winner td:last-child{border-radius:0 4px 4px 0}.confirm-bar{position:fixed;left:0;right:0;bottom:0;background:var(--paper);border-top:3px solid var(--ink);padding:12px 14px calc(14px + env(safe-area-inset-bottom));z-index:10;box-shadow:0 -6px 0 var(--orange);animation:rise .2s ease-out}.confirm-bar .inner{max-width:540px;margin:0 auto;display:flex;flex-direction:column;gap:12px}.confirm-bar .text{font-family:var(--font-mono);font-size:.82rem;line-height:1.45;border-bottom:2px dashed var(--ink-soft);padding-bottom:10px}.confirm-bar .inner .row button{flex:1}@keyframes rise{0%{transform:translateY(100%)}to{transform:translateY(0)}}.toast{position:fixed;top:14px;left:50%;transform:translate(-50%) rotate(-2deg);background:var(--red);color:var(--paper);border:3px solid var(--ink);font-family:var(--font-display);text-transform:uppercase;letter-spacing:.04em;font-size:.9rem;padding:10px 16px;border-radius:4px;z-index:20;max-width:90vw;box-shadow:var(--shadow);animation:slamflat .3s cubic-bezier(.2,1.4,.4,1)}@keyframes slamflat{0%{transform:translate(-50%) rotate(-2deg) scale(1.6);opacity:0}to{transform:translate(-50%) rotate(-2deg) scale(1);opacity:1}}.banner{background:var(--red);color:var(--paper);font-family:var(--font-mono);font-weight:700;font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;padding:6px 10px;border-radius:4px;text-align:center;border:2px solid var(--ink)}.podium{text-align:center;padding:26px 14px 22px;overflow:hidden}.podium .trophy{display:flex;justify-content:center;margin-bottom:6px}.podium .trophy .riso{width:110px;height:110px}.podium h2{font-size:1.7rem;background:none;text-shadow:3px 3px 0 var(--orange);display:block}.podium .winner-stamp{position:absolute;top:12px;right:12px;font-family:var(--font-display);color:var(--red);border:3px double var(--red);border-radius:4px;padding:2px 10px;letter-spacing:.15em;text-transform:uppercase;transform:rotate(12deg);font-size:.8rem}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
