@import url('https://fonts.googleapis.com/css2?family=Archivo+Black&family=IBM+Plex+Mono:wght@400;500;600&family=Inter:wght@400;600;800&display=swap');
:root{--ink:#080a0a;--panel:#0d1111;--panel2:#141a19;--line:#27302e;--cream:#eee9dc;--muted:#89918e;--acid:#caff00;--red:#ff4038;--cyan:#00e5ff;--gold:#ffcc45}*{box-sizing:border-box}html{background:var(--ink);color:var(--cream);scroll-behavior:smooth}body{margin:0;min-height:100vh;background:radial-gradient(circle at 65% 20%,#17251e 0,transparent 34%),var(--ink);font-family:Inter,sans-serif;overflow-x:hidden}.noise{position:fixed;inset:0;opacity:.035;pointer-events:none;z-index:99;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.9' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E")}.topbar{height:76px;padding:0 3vw;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:38px;position:sticky;top:0;background:#080a0af2;backdrop-filter:blur(18px);z-index:20}.brand{color:inherit;text-decoration:none;display:flex;align-items:center;gap:10px;min-width:190px}.brand-mark{display:grid;place-items:center;width:42px;height:42px;background:var(--acid);color:var(--ink);font:28px/1 Archivo Black;transform:skew(-7deg)}.brand b,.brand small{display:block}.brand b{font:14px Archivo Black;letter-spacing:-.5px}.brand small{font:10px IBM Plex Mono;letter-spacing:4px;color:var(--acid)}nav{display:flex;height:100%;gap:4px}nav a{color:#8d9591;text-decoration:none;text-transform:uppercase;font:11px IBM Plex Mono;letter-spacing:1px;padding:31px 16px 0;border-bottom:2px solid transparent}nav a.active,nav a:hover{color:var(--cream);border-color:var(--acid)}.wallet-cluster{margin-left:auto;display:flex;align-items:center;gap:10px}.chain{font:10px IBM Plex Mono;color:#b4bbb8;border:1px solid var(--line);padding:10px 12px}.chain i{display:inline-block;width:7px;height:7px;border-radius:50%;background:var(--acid);box-shadow:0 0 10px var(--acid);margin-right:7px}.wallet-cluster button,.acid{border:0;background:var(--acid);color:#080a0a;padding:12px 18px;font-weight:800;text-transform:uppercase;cursor:pointer}.menu{display:none;background:none;border:0;color:white;font-size:24px}.view{display:none}.view.active{display:block}.view[data-view=home]{min-height:calc(100vh - 76px);position:relative;padding:7vh 0 58px;overflow:hidden}.hero-copy{position:relative;z-index:5;margin-left:6vw;width:min(520px,42vw)}.kicker{font:600 11px IBM Plex Mono;letter-spacing:2.5px;color:var(--acid);margin:0 0 18px}.hero-copy h1,.page-head h2{font:clamp(56px,7vw,112px)/.85 Archivo Black;margin:0;letter-spacing:-5px}.hero-copy h1 em{font-style:normal;color:var(--acid);text-shadow:0 0 30px #caff0030}.lede{font-size:16px;line-height:1.65;color:#aeb6b2;max-width:470px}.hero-actions{display:flex;align-items:center;gap:22px;margin:30px 0}.hero-actions .acid{padding:17px 23px}.hero-actions a{color:white;font:600 11px IBM Plex Mono;text-transform:uppercase}.city-stats{display:flex;gap:0;margin:50px 0 0}.city-stats div{border-left:1px solid var(--line);padding:0 28px 0 13px}.city-stats dt{font:22px Archivo Black}.city-stats dd{margin:5px 0;color:var(--muted);font:9px IBM Plex Mono;text-transform:uppercase}.city{position:absolute;right:0;top:0;width:59vw;height:calc(100vh - 76px);min-height:680px;background:linear-gradient(170deg,transparent 38%,#111a18 38.2%,#080a0a 78%),radial-gradient(circle at 70% 25%,#caff0014,transparent 38%);clip-path:polygon(13% 0,100% 0,100% 100%,0 100%)}.moon{position:absolute;width:180px;height:180px;border-radius:50%;right:12%;top:8%;border:1px solid #caff0045;box-shadow:0 0 90px #caff0017,inset 0 0 60px #caff000f}.scan{position:absolute;inset:0;background:repeating-linear-gradient(0deg,transparent 0 7px,#fff 8px 8px);opacity:.025}.skyline{position:absolute;bottom:20%;left:8%;right:0;height:52%;background:linear-gradient(90deg,#111 5%,transparent 5% 8%,#171c1b 8% 14%,transparent 14% 17%,#111 17% 23%,transparent 23% 25%,#171c1b 25% 34%,transparent 34% 38%,#101313 38% 48%,transparent 48% 51%,#171c1b 51% 58%,transparent 58% 62%,#111 62% 75%,transparent 75% 78%,#171c1b 78% 90%)}.skyline:after{content:"";position:absolute;inset:10% 0;background:repeating-linear-gradient(90deg,transparent 0 22px,#caff0035 23px 25px,transparent 26px 40px);clip-path:inset(0 0 30%)}.skyline.back{transform:scale(.8);transform-origin:bottom right;opacity:.55;bottom:35%}.location{position:absolute;color:white;background:#0b0e0dea;border:1px solid #37413e;text-align:left;padding:9px 11px 9px 42px;min-width:182px;cursor:pointer;box-shadow:0 12px 30px #0008}.location:hover{border-color:var(--acid);transform:translateY(-2px)}.location b,.location small{display:block}.location b{font:10px IBM Plex Mono;letter-spacing:.5px}.location small{font:8px IBM Plex Mono;color:var(--acid);margin-top:4px}.pin{position:absolute;left:-10px;top:50%;transform:translateY(-50%);width:38px;height:38px;background:var(--acid);color:#090b0a;display:grid;place-items:center;font:700 11px IBM Plex Mono;clip-path:polygon(50% 0,100% 20%,90% 80%,50% 100%,10% 80%,0 20%)}.pin.locked{background:#505856;color:white}.bank{top:24%;left:32%}.highway{top:53%;left:11%}.club{top:40%;right:5%}.freeway{bottom:21%;right:17%}.warehouse{bottom:8%;left:32%}.road{position:absolute;height:12px;background:#151a19;border-top:1px solid #3a4541;border-bottom:1px solid #3a4541;transform-origin:left}.r1{width:78%;bottom:18%;left:6%;transform:rotate(-20deg)}.r2{width:55%;bottom:10%;left:37%;transform:rotate(12deg)}.car{position:absolute;color:var(--red);font-size:26px;text-shadow:0 0 14px red;animation:drive 8s linear infinite}.c1{bottom:22%;left:17%}.c2{bottom:11%;left:50%;animation-duration:6s;color:var(--cyan)}@keyframes drive{50%{transform:translate(280px,-105px)}100%{transform:translate(520px,20px)}}.ticker{position:absolute;bottom:0;left:0;right:0;height:42px;border-top:1px solid var(--line);background:#0b0e0d;display:flex;align-items:center;justify-content:space-around;gap:30px;color:#aeb6b2;font:9px IBM Plex Mono;white-space:nowrap}.ticker div:nth-child(odd){color:var(--acid)}.page{padding:65px 6vw 100px;min-height:calc(100vh - 76px)}.page-head{display:flex;align-items:end;justify-content:space-between;border-bottom:1px solid var(--line);padding-bottom:30px;margin-bottom:32px}.page-head h2{font-size:clamp(50px,6vw,92px)}.page-head>p{color:var(--muted);max-width:420px;line-height:1.6}.game-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:16px}.game-card{grid-column:span 4;position:relative;padding:14px 14px 20px;background:var(--panel);border:1px solid var(--line);cursor:pointer;transition:.2s}.game-card.featured{grid-column:span 8}.game-card:hover{border-color:#78847f;transform:translateY(-3px)}.game-card .art{height:220px;overflow:hidden;position:relative;background:#111817}.game-card.featured .art{height:320px}.game-no{position:absolute;z-index:2;top:24px;left:24px;background:var(--acid);color:#000;padding:8px;font:700 10px IBM Plex Mono}.art:before,.art:after{content:"";position:absolute}.getaway-art{background:linear-gradient(145deg,#18231e,#070808)}.getaway-art:before{width:60%;height:140%;background:#161b1a;right:8%;top:-15%;transform:rotate(32deg);border-left:4px dashed var(--acid);border-right:4px dashed #ddd3}.getaway-art:after{width:90px;height:42px;background:var(--red);right:32%;top:52%;box-shadow:0 0 40px red;clip-path:polygon(12% 0,80% 0,100% 70%,85% 100%,0 95%)}.heist-art:before{width:140px;height:140px;border:22px solid #555;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 0 16px #181b1a,0 0 50px #000}.heist-art:after{width:38px;height:38px;border-radius:50%;background:var(--acid);left:50%;top:50%;transform:translate(-50%,-50%);box-shadow:0 0 20px var(--acid)}.draw-art{background:linear-gradient(#1118, #111),linear-gradient(110deg,#2a1010 50%,#0d1718 50%)}.draw-art:before{width:7px;height:65%;background:var(--gold);left:50%;top:18%;box-shadow:0 0 24px var(--gold)}.race-art{background:repeating-linear-gradient(100deg,#151a19 0 50px,#0d1010 51px 100px)}.race-art:before{width:76%;height:40px;background:var(--cyan);left:12%;top:48%;transform:skew(-18deg);box-shadow:0 0 30px #00e5ff99}.turf-art{background:linear-gradient(135deg,#261119,#101719)}.turf-art:before{inset:10%;border:3px dashed #ff3a85;background:linear-gradient(90deg,transparent 49%,#ff3a8550 50%,transparent 51%)}.game-card>p{font:9px IBM Plex Mono;color:var(--acid);margin:18px 0 9px}.game-card h3{font:32px Archivo Black;margin:0 0 8px}.game-card>span:not(.game-no){color:#9ea7a3;line-height:1.5;font-size:13px;display:block;min-height:42px}.game-card>button{margin-top:18px;width:100%;padding:12px;background:transparent;color:white;border:1px solid #3a4441;text-transform:uppercase;font:600 10px IBM Plex Mono}.soon{opacity:.6}.lobby-list,.board{border:1px solid var(--line);background:var(--panel)}.lobby,.board-row{display:grid;grid-template-columns:1.3fr 1fr .7fr .7fr auto;align-items:center;gap:20px;padding:19px 22px;border-bottom:1px solid var(--line)}.lobby:last-child,.board-row:last-child{border:0}.lobby p,.lobby b{margin:0}.lobby small,.board-row small{display:block;color:var(--muted);font:9px IBM Plex Mono;margin-top:5px}.lobby .players{display:flex}.lobby .players i{width:28px;height:28px;border:2px solid var(--panel);border-radius:50%;background:#35403c;margin-left:-5px}.lobby button{background:var(--acid);border:0;padding:10px 16px;font-weight:800}.status-live{color:var(--acid);font:10px IBM Plex Mono}.tabs button{background:none;border:1px solid var(--line);color:#888;padding:10px 14px}.tabs button.selected{color:#000;background:var(--acid)}.board-row{grid-template-columns:1.6fr 1fr .5fr .6fr .7fr}.board-row.heading{font:9px IBM Plex Mono;color:var(--muted);text-transform:uppercase}.rank{font:20px Archivo Black;color:var(--acid);margin-right:18px}.player-cell{display:flex;align-items:center}.pfp{width:38px;height:38px;background:linear-gradient(135deg,var(--red),#24110e);border-radius:50%;margin-right:10px}.positive{color:var(--acid)}.vault-grid{display:grid;grid-template-columns:1.5fr 2fr 1fr;gap:16px}.vault-grid article{background:var(--panel);border:1px solid var(--line);padding:26px;min-height:300px}.vault-grid p{font:10px IBM Plex Mono;color:var(--muted)}.balance strong{font:55px Archivo Black;display:block;margin:45px 0 4px}.balance strong small{font-size:18px;color:var(--acid)}.balance span,.loadout span{display:block;color:var(--muted);font-size:12px}.balance button{margin-top:40px}.empty{height:220px;display:grid;place-items:center;text-align:center;color:#727a77;border:1px dashed #303936}.avatar{width:110px;height:110px;border-radius:50%;display:grid;place-items:center;background:linear-gradient(145deg,#29332f,#101312);font:50px Archivo Black;color:var(--acid);margin:30px auto}.loadout{text-align:center}.loadout p{text-align:left}footer{border-top:1px solid var(--line);display:flex;justify-content:space-between;padding:22px 4vw;color:#707875;font:9px IBM Plex Mono}dialog{width:min(760px,94vw);padding:0;border:1px solid #48534f;background:#0b0e0d;color:white;box-shadow:0 40px 100px #000;max-height:92vh}dialog::backdrop{background:#020303dc;backdrop-filter:blur(5px)}.close{position:absolute;right:16px;top:13px;background:none;border:0;color:#aaa;font-size:28px;z-index:2;cursor:pointer}.game-shell{padding:34px}.game-shell .kicker{margin-bottom:8px}.game-shell h2{font:45px Archivo Black;margin:0}.game-shell>p{color:#9aa39f;line-height:1.6}.game-screen{height:290px;border:1px solid var(--line);background:#070909;margin:24px 0;display:grid;place-items:center;position:relative;overflow:hidden}.vault-door{width:180px;height:180px;border-radius:50%;border:20px solid #4b5552;display:grid;place-items:center;box-shadow:0 0 0 12px #181d1b}.vault-door i{width:55px;height:55px;border-radius:50%;background:var(--acid);box-shadow:0 0 30px #caff0060}.meter{position:absolute;left:20px;right:20px;bottom:18px;height:7px;background:#242b29}.meter i{display:block;height:100%;width:0;background:var(--red);transition:.4s}.game-controls{display:flex;gap:10px}.game-controls button{flex:1;padding:15px;border:1px solid #4a5551;background:#151a18;color:white;font-weight:800}.game-controls button.primary{background:var(--acid);color:#000}.game-controls button.danger{background:var(--red);border-color:var(--red)}.pot{text-align:center}.pot small{display:block;font:9px IBM Plex Mono;color:var(--muted)}.pot strong{font:34px Archivo Black;color:var(--acid)}.draw-screen{font:58px Archivo Black;cursor:crosshair;user-select:none}.draw-screen.wait{color:#777}.draw-screen.go{color:var(--acid);background:#192408}.lobby-screen{align-content:center;gap:20px}.lobby-screen .cars{font-size:50px;letter-spacing:20px}.lobby-screen strong{font:24px Archivo Black}.toast{position:fixed;right:24px;bottom:24px;background:var(--acid);color:#000;padding:14px 18px;font:700 11px IBM Plex Mono;transform:translateY(100px);opacity:0;transition:.2s;z-index:100}.toast.show{transform:none;opacity:1}
@media(max-width:980px){.topbar nav{display:none;position:absolute;top:76px;left:0;right:0;height:auto;background:#080a0a;padding:10px;flex-direction:column}.topbar nav.open{display:flex}.topbar nav a{padding:14px}.menu{display:block}.wallet-cluster .chain{display:none}.hero-copy{width:48vw;margin-left:4vw}.city{width:65vw}.game-card,.game-card.featured{grid-column:span 6}.vault-grid{grid-template-columns:1fr 1fr}.loadout{grid-column:span 2}}
@media(max-width:680px){.topbar{padding:0 16px;gap:10px}.brand{min-width:0}.brand b{font-size:12px}.wallet-cluster button{padding:10px;font-size:10px}.view[data-view=home]{padding-top:42px;min-height:auto}.hero-copy{width:auto;margin:0 20px}.hero-copy h1{font-size:56px;letter-spacing:-3px}.city{position:relative;width:100%;height:540px;min-height:0;margin-top:20px;clip-path:none}.location{min-width:155px}.bank{top:15%;left:22%}.highway{top:43%;left:8%}.club{top:31%;right:3%}.freeway{bottom:24%;right:6%}.warehouse{bottom:8%;left:18%}.city-stats{margin-top:28px}.city-stats div{padding-right:13px}.ticker{display:none}.page{padding:40px 16px 70px}.page-head{display:block}.page-head h2{font-size:49px;letter-spacing:-3px}.game-card,.game-card.featured{grid-column:span 12}.game-card.featured .art{height:230px}.lobby,.board-row{grid-template-columns:1fr 1fr}.lobby>*:nth-child(3),.board-row>*:nth-child(2){display:none}.board-row{grid-template-columns:1.4fr .5fr .7fr}.board-row.heading span:nth-child(2),.board-row.heading span:nth-child(3){display:none}.vault-grid{grid-template-columns:1fr}.loadout{grid-column:auto}footer{display:block;line-height:2}.game-shell{padding:26px 18px}.draw-screen{font-size:43px}.hero-actions{align-items:flex-start}.city-stats dt{font-size:16px}}

/* Crime edition: restrained oxblood palette and original cinematic key art. */
:root{--ink:#070607;--panel:#100c0d;--panel2:#181012;--line:#36262a;--cream:#f1e9dc;--muted:#968a88;--acid:#b91f25;--red:#ef3038;--cyan:#5189a8;--gold:#c99a55}
body{background:radial-gradient(circle at 76% 12%,#3b0b10 0,transparent 28%),linear-gradient(140deg,#080607,#0c0809 56%,#14090b);color:var(--cream)}
.topbar{background:#070607f2;border-color:#2d2023}.brand-mark{background:linear-gradient(145deg,#d52a31,#7f1016);color:#fff;box-shadow:0 0 28px #ba171d45}.brand small,.kicker{color:#df343a}.chain i{background:#e02d35;box-shadow:0 0 12px #e02d35}.wallet-cluster button,.acid{background:linear-gradient(135deg,#d92c33,#981219);color:white}.hero-copy h1 em{color:#d72a31;text-shadow:0 0 34px #c3172240}.view[data-view=home]{background:linear-gradient(90deg,#070607 0 38%,#070607e8 46%,transparent 67%)}
.city{width:68vw;background-image:linear-gradient(90deg,#070607 0%,#0706077d 16%,transparent 42%),linear-gradient(0deg,#070607 0%,transparent 26%),url('./crime-city-hero-v2.png');background-size:cover;background-position:center;clip-path:polygon(10% 0,100% 0,100% 100%,0 100%)}
.city .moon,.city .skyline,.city .road,.city .car,.city .scan{display:none}.location{background:#0a0708e8;border:1px solid #694047;backdrop-filter:blur(8px);box-shadow:0 14px 34px #000b}.location:hover{border-color:#e43a40}.location small{color:#e54a4f}.pin{background:#bd2027;color:white}.bank{top:19%;left:38%}.highway{top:54%;left:19%}.club{top:34%;right:4%}.freeway{bottom:18%;right:14%}.warehouse{bottom:7%;left:39%}.ticker{background:#090607;border-color:#352226}.ticker div:nth-child(odd){color:#e0383e}.game-card,.lobby-list,.board,.vault-grid article{background:linear-gradient(145deg,#120d0f,#0c090a);border-color:#39272b}.game-card:hover{border-color:#a44a50}.game-card .art{background-image:linear-gradient(0deg,#090607 0,transparent 70%),url('./crime-city-hero-v2.png');background-size:cover}.getaway-art{background-position:55% 62%!important}.heist-art{background-position:92% 63%!important}.draw-art{background-position:84% 28%!important}.race-art{background-position:50% 68%!important}.turf-art{background-position:22% 46%!important}.game-card .art:before,.game-card .art:after{display:none}.game-no{background:#bc2027;color:white}.game-card>p,.status-live,.rank,.positive,.balance strong small,.pot strong{color:#e14449}.game-card>button{border-color:#57363b}.game-card>button:hover,.lobby button,.tabs button.selected,.game-controls button.primary,.toast{background:#b91f25;color:#fff}.avatar{background:linear-gradient(145deg,#4c151a,#130c0e);color:#e34147}.vault-door i{background:#c4232a;box-shadow:0 0 30px #c4232a70}.draw-screen.go{color:#f3e7d7;background:#6d0d13}.page-head{border-color:#39272b}dialog{background:#0c0809;border-color:#704047}.pfp{background:linear-gradient(135deg,#c4252c,#2d0c10)}
@media(max-width:680px){.view[data-view=home]{background:#070607}.city{width:100%;background-position:64% center;clip-path:none}.location{min-width:148px}.bank{top:12%;left:15%}.highway{top:45%;left:4%}.club{top:28%;right:2%}.freeway{bottom:23%;right:3%}.warehouse{bottom:7%;left:14%}}

/* Playable top-down getaway. */
.getaway-shell{padding:25px}.getaway-shell h2{font-size:38px}.getaway-shell>p{margin:8px 0 14px}.race-hud{display:flex;justify-content:space-between;gap:12px;border:1px solid #4c2b30;border-bottom:0;padding:10px 14px;background:#0a0708;font:9px IBM Plex Mono;color:#8e7e7b}.race-hud b{display:block;margin-top:4px;color:#eee4d6;font-size:13px}.race-hud span:first-child b{color:#e2353c}.race-wrap{position:relative;width:100%;aspect-ratio:680/430;background:#110d0e;border:1px solid #4c2b30;overflow:hidden}.race-wrap canvas{display:block;width:100%;height:100%;image-rendering:auto}.race-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;background:#070506d9;backdrop-filter:blur(3px);transition:.18s}.race-overlay.hidden{opacity:0;pointer-events:none}.race-overlay strong{font:44px Archivo Black;color:#f1e9dc}.race-overlay span{font:10px IBM Plex Mono;color:#aa9995}.race-overlay button{border:0;padding:13px 18px;background:#bd2027;color:white;font-weight:800;cursor:pointer}.touch-drive{display:none;grid-template-columns:repeat(3,1fr);gap:8px;margin-top:10px}.touch-drive button{height:48px;background:#171113;color:#f2e9da;border:1px solid #57363b;font-size:18px;touch-action:none}.getaway-shell>.game-controls{margin-top:12px}.getaway-shell>.game-controls button{padding:11px}
@media(max-width:680px){dialog{width:100vw;max-width:100vw;max-height:100vh;margin:auto 0 0}.getaway-shell{padding:20px 12px 14px}.getaway-shell h2{font-size:31px}.race-wrap{aspect-ratio:680/480}.touch-drive{display:grid}.race-overlay strong{font-size:34px}.race-overlay span{font-size:9px}.race-hud{padding:8px}.race-hud b{font-size:11px}}

/* Character-led arcade art and motion. */
.game-card{isolation:isolate;overflow:hidden}.game-card:before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,transparent 25%,#d7283220 48%,transparent 68%);transform:translateX(-120%);transition:transform .75s;pointer-events:none;z-index:3}.game-card:hover:before{transform:translateX(120%)}
.game-card .art{background-image:url('./crime-mode-atlas-v2.png')!important;background-size:410% auto!important;filter:saturate(.92) contrast(1.08);transition:transform .55s cubic-bezier(.2,.8,.2,1),filter .35s;transform:scale(1.01)}.game-card:hover .art{transform:scale(1.055);filter:saturate(1.18) contrast(1.06)}
.getaway-art{background-position:100% 53%!important}.heist-art{background-position:0% 48%!important}.draw-art{background-position:67% 50%!important}.race-art{background-position:33% 50%!important}.turf-art{background-position:68% 50%!important}.brawl-art{background-position:66% 45%!important}
.game-card .art:before{display:block!important;content:"";position:absolute;inset:-25%;background:linear-gradient(105deg,transparent 35%,#e1202c30 46%,#4b9ac52b 52%,transparent 64%);mix-blend-mode:screen;animation:policeSweep 5s ease-in-out infinite;pointer-events:none}.game-card .art:after{display:block!important;content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 120%,transparent 20%,#070506c7 92%),linear-gradient(0deg,#070506ca 0,transparent 43%);pointer-events:none}
.game-card .art i{display:block;position:absolute;z-index:2;inset:auto 8% 9% 8%;height:2px;background:linear-gradient(90deg,transparent,#ff3b43,#f9d6b4,#4d91bd,transparent);opacity:.75;filter:blur(.2px);box-shadow:0 0 13px #c91e29;animation:headlights 1.8s ease-in-out infinite}
.game-card h3{position:relative;z-index:2;text-shadow:0 3px 18px #000}.game-card>button{position:relative;overflow:hidden;transition:background .25s,border-color .25s,letter-spacing .25s}.game-card>button:after{content:" →"}.game-card:hover>button{background:#b91f25;border-color:#b91f25;letter-spacing:.7px}.game-card.featured .art:after{background:linear-gradient(90deg,#080607b5 0,transparent 48%),linear-gradient(0deg,#080607b5 0,transparent 40%)}
@keyframes policeSweep{0%,28%{transform:translateX(-48%) rotate(-4deg);opacity:.25}58%,100%{transform:translateX(48%) rotate(4deg);opacity:.9}}@keyframes headlights{0%,100%{opacity:.45;transform:scaleX(.88)}50%{opacity:1;transform:scaleX(1.03)}}
@media(prefers-reduced-motion:reduce){.game-card:before,.game-card .art:before,.game-card .art i{animation:none}.game-card .art,.game-card:before{transition:none}}

/* Multi-stage animated heist. */
.heist-shell{padding:26px}.heist-shell h2{font-size:42px}.heist-shell>p{margin:7px 0 14px}.heist-status{display:grid;grid-template-columns:repeat(3,1fr);border:1px solid #533038;border-bottom:0;background:#0a0708}.heist-status span{padding:9px 13px;color:#8f7e7b;font:9px IBM Plex Mono;border-right:1px solid #43262b}.heist-status span:last-child{border:0}.heist-status b{display:block;color:#f1e8db;font-size:13px;margin-top:4px}.heist-scene{--alarm:0;position:relative;height:355px;overflow:hidden;border:1px solid #533038;background:linear-gradient(90deg,#120b0d 0 57%,#231619 57% 100%);isolation:isolate}.heist-scene:before{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#040304d9,transparent 48%),url('./crime-mode-atlas-v2.png') 0% 50%/410% auto;opacity:.32;filter:grayscale(.3)}.heist-scene:after{content:"";position:absolute;inset:0;background:rgba(201,22,32,var(--alarm));mix-blend-mode:screen;pointer-events:none;z-index:9;animation:alarmPulse .8s steps(2) infinite}.vault-rig{position:absolute;z-index:4;right:8%;top:32px;width:210px;height:250px;border:8px solid #241c1e;background:#0a0809;box-shadow:0 20px 55px #000}.vault-face{position:absolute;inset:8px;border:10px solid #55484a;border-radius:50%;background:radial-gradient(circle,#211a1c 0 17%,#383033 18% 21%,#171214 22% 55%,#504548 56% 61%,#131012 62%);transition:transform .8s cubic-bezier(.2,.8,.2,1),opacity .4s}.dial{position:absolute;width:98px;height:98px;border:2px solid #958183;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);background:repeating-conic-gradient(#b5a5a5 0 1deg,transparent 1deg 15deg)}.dial:after{content:"";position:absolute;width:26px;height:26px;border:5px solid #827174;border-radius:50%;left:50%;top:50%;transform:translate(-50%,-50%);background:#171214}.dial>i{position:absolute;z-index:2;width:3px;height:44%;left:calc(50% - 1px);top:6%;background:#f3e8da;transform-origin:50% 100%}.sweet{position:absolute;inset:-6px;border-radius:50%;border-top:8px solid #e32c35;transform:rotate(45deg);filter:drop-shadow(0 0 7px #e32c35)}.tumblers{position:absolute;bottom:25px;left:50%;transform:translateX(-50%);display:flex;gap:9px}.tumblers i{width:12px;height:12px;border:1px solid #80666b;background:#21171a}.tumblers i.lit{background:#e7b74d;box-shadow:0 0 13px #e7b74d}.vault-cash{position:absolute;inset:25px 12px;color:#d6ad50;background:repeating-linear-gradient(0deg,#3e3115 0 9px,#b88c35 10px 14px);font:0/0 sans-serif;opacity:0;transform:scale(.75);transition:.55s}.heist-scene.open .vault-face{transform:translateX(-178px) rotate(-11deg);opacity:.9}.heist-scene.open .vault-cash{opacity:1;transform:scale(1)}
.guard,.crew{position:absolute;z-index:4;bottom:30px;width:48px;height:112px}.guard{left:38%;animation:guardPatrol 5s ease-in-out infinite}.crew-a{left:8%;animation:crewBreathe 1.6s ease-in-out infinite}.crew-b{left:22%;animation:crewBreathe 1.8s .3s ease-in-out infinite}.guard i,.crew i{display:block;width:40px;height:82px;border-radius:45% 45% 12% 12%;background:linear-gradient(90deg,#080708,#4f3a3e 55%,#0b090a);box-shadow:0 10px 16px #000}.guard i:before,.crew i:before{content:"";position:absolute;top:-19px;left:10px;width:27px;height:27px;border-radius:50%;background:#4b3433}.crew i{background:linear-gradient(90deg,#080708,#201516 55%,#050405)}.crew i:before{background:#181011}.guard span,.crew span{display:block;margin-top:5px;color:#9a8584;font:7px IBM Plex Mono;text-align:center}.security-laser{position:absolute;z-index:3;left:3%;right:39%;height:2px;background:#f12a34;box-shadow:0 0 10px #f12a34;transform-origin:left;opacity:.6}.security-laser.l1{top:38%;animation:laserScan 2.1s ease-in-out infinite}.security-laser.l2{top:67%;animation:laserScan 2.8s .5s ease-in-out infinite reverse}.alarm-track{position:absolute;z-index:8;left:0;right:0;bottom:0;height:7px;background:#201519}.alarm-track i{display:block;width:0;height:100%;background:#e22b34;box-shadow:0 0 14px #e22b34;transition:width .25s}.heist-flash{position:absolute;z-index:8;left:18px;top:18px;padding:7px 9px;background:#080607d9;border:1px solid #624047;color:#c4b4b1;font:8px IBM Plex Mono;letter-spacing:1px}.heist-flash.success{color:#edbd54;border-color:#8c6a2d}.heist-flash.fail{color:#ff4249;border-color:#c82730}.heist-scene.shake{animation:sceneShake .2s linear}.heist-scene.busted .guard{filter:drop-shadow(0 0 14px #ef2d36)}.heist-shell button:disabled{opacity:.42;cursor:not-allowed}.heist-shell .pulse{animation:buttonPulse 1.2s ease-in-out infinite}
@keyframes guardPatrol{0%,100%{transform:translateX(-20px) scaleX(1)}48%{transform:translateX(48px) scaleX(1)}52%{transform:translateX(48px) scaleX(-1)}96%{transform:translateX(-20px) scaleX(-1)}}@keyframes crewBreathe{50%{transform:translateY(-4px)}}@keyframes laserScan{0%,100%{transform:rotate(-4deg);opacity:.25}50%{transform:rotate(6deg);opacity:.9}}@keyframes alarmPulse{50%{opacity:.14}}@keyframes sceneShake{25%{transform:translateX(-7px)}75%{transform:translateX(7px)}}@keyframes buttonPulse{50%{box-shadow:0 0 25px #c51f276b}}
@media(max-width:680px){.heist-shell{padding:20px 12px}.heist-scene{height:330px}.vault-rig{right:2%;transform:scale(.82);transform-origin:right top}.guard{left:42%}.crew-a{left:4%}.crew-b{left:20%}.security-laser{right:35%}.heist-status span{padding:7px}.heist-status b{font-size:11px}}

/* Cinematic bank-heist stage */
.heist-scene{height:390px;background:#080506 url('./heist-vault-scene-v2.png') center/cover no-repeat;border-color:#63333b;box-shadow:inset 0 0 90px #0009,0 24px 55px #0008}
.heist-scene:before{background:linear-gradient(90deg,#0503044a 0,transparent 42%,#05030418 76%,#05030466 100%),linear-gradient(0deg,#030203b8 0,transparent 34%);opacity:1;filter:none;z-index:1}
.heist-scene:after{background:#d51020;opacity:calc(var(--alarm) * .32);mix-blend-mode:screen}
.heist-scene .guard,.heist-scene .crew{display:none}
.vault-rig{right:7.5%;top:70px;width:210px;height:210px;border:0;border-radius:50%;background:transparent;box-shadow:0 0 0 1px #e7d6ca24,0 0 45px #000b;z-index:6}
.vault-face{inset:0;border:2px solid #e5d7cf91;background:radial-gradient(circle,#110d0ee8 0 16%,#806e70c9 17% 19%,#0b0809dc 20% 51%,#918083b0 52% 54%,#080607d9 55%);box-shadow:inset 0 0 32px #000,0 0 0 8px #130d0ea6,0 0 34px #000}
.dial{width:122px;height:122px;border-color:#c5b4b2;background:repeating-conic-gradient(#e5d8d6 0 1deg,transparent 1deg 10deg);box-shadow:inset 0 0 30px #000,0 0 20px #000}
.dial:after{width:32px;height:32px;border-color:#8b7779;background:#0b0809}
.sweet{border-top-color:#f52f3c;filter:drop-shadow(0 0 10px #ed2635)}
.tumblers{bottom:20px}.tumblers i{background:#0b0809;border-color:#9c8587}.tumblers i.lit{background:#e5ac38;box-shadow:0 0 15px #ffc044}
.vault-cash{inset:15px;border-radius:50%;background:radial-gradient(circle at 48% 45%,#f1cf66 0 7%,#7e5518 8% 10%,transparent 11%),repeating-linear-gradient(12deg,#3f2b12 0 8px,#c18b30 9px 15px);box-shadow:inset 0 0 45px #000}
.heist-scene.open .vault-face{transform:translateX(-180px) rotate(-18deg) scale(.88)}
.heist-flash{top:15px;left:15px;padding:9px 12px;background:#070405e8;border-color:#81505a;color:#f0e4d9;font-size:9px;box-shadow:0 8px 22px #0009}
.security-laser{z-index:5;right:30%;height:1px;opacity:.75;box-shadow:0 0 8px 1px #ff2335}
.security-laser.l1{top:33%}.security-laser.l2{top:69%}
.alarm-track{height:8px;background:#14090c}.alarm-track i{background:linear-gradient(90deg,#a40d19,#ff3543)}
@media(max-width:680px){.heist-scene{height:350px;background-position:53% center}.vault-rig{right:1%;top:82px;transform:scale(.68)}.security-laser{right:18%}.heist-scene.open .vault-face{transform:translateX(-120px) rotate(-18deg) scale(.82)}}

/* Animated character duel. */
.quickdraw-shell .draw-screen{background:linear-gradient(0deg,#070506e8,#1c090d85),url('./crime-mode-atlas-v2.png') 67% 48%/410% auto;display:flex;align-items:center;justify-content:space-between;padding:28px 60px;position:relative}.draw-screen>strong{position:relative;z-index:5;font:38px Archivo Black;color:#f1e9dc;text-shadow:0 5px 25px #000}.duelist{position:relative;z-index:4;width:118px;height:210px;transition:transform .13s}.duelist i{display:block;position:absolute;left:29px;bottom:18px;width:62px;height:145px;border-radius:45% 45% 10% 10%;background:linear-gradient(90deg,#060506,#281417 52%,#080607);box-shadow:0 24px 20px #000}.duelist i:before{content:"";position:absolute;left:15px;top:-38px;width:38px;height:43px;border-radius:48%;background:#161011;box-shadow:0 -8px 0 #090708}.duelist i:after{content:"";position:absolute;width:61px;height:14px;background:#080607;top:62px;left:-14px;transform:rotate(19deg);transform-origin:right;border-right:16px solid #594044}.duelist.right{transform:scaleX(-1)}.duelist span{position:absolute;bottom:0;left:0;right:0;text-align:center;color:#c4aaa8;font:8px IBM Plex Mono}.duelist.right span{transform:scaleX(-1)}.club-crowd{position:absolute;inset:auto 0 0;height:54px;background:repeating-radial-gradient(ellipse at 10px 40px,#0c090a 0 10px,transparent 11px 28px);opacity:.85}.draw-screen.wait .duelist{animation:duelIdle 1.2s ease-in-out infinite alternate}.draw-screen.go{background:linear-gradient(#590b12a8,#16070aeb),url('./crime-mode-atlas-v2.png') 67% 48%/410% auto}.draw-screen.go>strong{color:#fff;transform:scale(1.22);text-shadow:0 0 28px #ed2832}.draw-screen.fired .duelist.left{transform:rotate(-6deg) translateX(18px)}.draw-screen.fired .duelist.left i:after{transform:rotate(-28deg);box-shadow:65px -20px 20px #ffca7a}.draw-screen.fired:after{content:"";position:absolute;inset:0;background:radial-gradient(circle at 31% 42%,#fff 0 1%,#ffae42 2%,transparent 9%);animation:muzzle .35s both}@keyframes duelIdle{to{transform:translateY(-5px)}}@keyframes muzzle{from{opacity:1}to{opacity:0}}
@media(max-width:680px){.quickdraw-shell .draw-screen{padding:20px 18px}.duelist{transform:scale(.78);transform-origin:center bottom}.duelist.right{transform:scaleX(-1) scale(.78)}.draw-screen>strong{font-size:25px}}

/* Two-player ROM-style fighter. */
.brawl-shell{padding:24px}.brawl-shell h2{font-size:38px}.brawl-shell>p{margin:7px 0 13px}.fight-hud{display:grid;grid-template-columns:1fr 64px 1fr;align-items:end;gap:16px;background:#080607;border:1px solid #563039;border-bottom:0;padding:10px 14px}.fight-hud div:last-child{text-align:right}.fight-hud b{font:9px IBM Plex Mono;color:#d8cbc1}.fight-hud i{display:block;height:10px;margin-top:6px;background:#25161a;border:1px solid #533038}.fight-hud i span{display:block;width:100%;height:100%;background:linear-gradient(90deg,#a91620,#ed3440);transition:width .18s}.fight-hud div:last-child i span{margin-left:auto;background:linear-gradient(90deg,#d8b35d,#8f6726)}.fight-hud>strong{text-align:center;font:25px Archivo Black;color:#f1e8da}.fight-wrap{position:relative;border:1px solid #563039;background:#10090c;aspect-ratio:760/390;overflow:hidden}.fight-wrap canvas{display:block;width:100%;height:100%;image-rendering:pixelated}.fight-overlay{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;background:#070506dd;backdrop-filter:blur(2px);transition:.18s}.fight-overlay.hidden{opacity:0;pointer-events:none}.fight-overlay strong{font:37px Archivo Black;color:#f1e8da;text-align:center}.fight-overlay span{color:#9c8986;font:9px IBM Plex Mono}.fight-overlay button{border:0;background:#c51f29;color:#fff;padding:13px 25px;font-weight:900}.fight-mobile{display:none;grid-template-columns:1fr 1fr;gap:9px;margin-top:9px}.fight-mobile>div{display:grid;grid-template-columns:repeat(4,1fr);gap:4px}.fight-mobile button{height:42px;border:1px solid #57333a;background:#171012;color:#eee0d3;font:9px IBM Plex Mono;touch-action:none}.brawl-shell>.game-controls{margin-top:10px}
@media(max-width:680px){.brawl-shell{padding:18px 10px}.brawl-shell h2{font-size:29px}.fight-wrap{aspect-ratio:760/500}.fight-mobile{display:grid}.fight-hud{gap:6px;padding:8px}.fight-overlay strong{font-size:28px}.fight-mobile>div{grid-template-columns:repeat(2,1fr)}}
