﻿:root{--ink:#070a0c;--panel:rgba(10,14,16,.76);--line:rgba(255,255,255,.11);--muted:#8f999d;--text:#edf1ef;--amber:#d99842;--amber2:#ffc66f;--cyan:#5cbbc4;--danger:#e1604f;--font:'Noto Sans SC',sans-serif;--display:'Rajdhani','Noto Sans SC',sans-serif}

*{box-sizing:border-box}
html{background:var(--ink);color:var(--text);font-family:var(--font);scroll-behavior:smooth}
body{margin:0;min-height:100vh;background:#070a0c url('assets/arena-hero.png') center/cover fixed no-repeat;overflow-x:hidden}
body:before{content:"";position:fixed;inset:0;background:linear-gradient(90deg,rgba(3,5,6,.96) 0%,rgba(3,5,6,.6) 38%,rgba(3,5,6,.24) 64%,rgba(3,5,6,.84) 100%),linear-gradient(0deg,#070a0c 0%,transparent 45%);z-index:-1}
.noise{position:fixed;inset:0;pointer-events:none;opacity:.18;z-index:5;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='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.13'/%3E%3C/svg%3E")}
.topbar{height:84px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(24px,5vw,80px);border-bottom:1px solid var(--line);background:rgba(4,7,8,.68);backdrop-filter:blur(18px);position:relative;z-index:10}
.brand{display:flex;align-items:center;gap:13px;color:var(--text);text-decoration:none}
.brand-mark{width:38px;height:38px;border:1px solid var(--amber);transform:rotate(45deg);display:grid;place-items:center}
.brand-mark:before,.brand-mark:after,.brand-mark i{content:"";display:block;position:absolute;background:var(--amber)}
.brand-mark:before{width:18px;height:1px}
.brand-mark:after{width:1px;height:18px}
.brand-mark i{width:6px;height:6px;border-radius:50%;box-shadow:0 0 16px var(--amber)}
.brand b{display:block;letter-spacing:.18em}
.brand small{display:block;font:600 9px var(--display);color:var(--muted);letter-spacing:.28em;margin-top:2px}
.topbar nav{display:flex;height:100%;gap:35px}
.nav-link{color:#899296;border:0;background:none;position:relative;cursor:pointer;font:500 13px var(--font)}
.nav-link.active{color:#fff}
.nav-link.active:after{content:"";height:2px;background:var(--amber);position:absolute;left:0;right:0;bottom:0;box-shadow:0 0 12px var(--amber)}
.header-actions{display:flex;align-items:center;gap:12px}
.icon-btn,.profile{height:39px;border:1px solid var(--line);background:rgba(255,255,255,.04);color:#bac1c0}
.icon-btn{width:42px;cursor:pointer}
.profile{padding:0 14px;display:flex;gap:8px;align-items:center}
.profile span{font:700 12px var(--display);color:var(--amber2)}
.profile i{font-style:normal;font-size:12px}
.screen{display:none;min-height:calc(100vh - 84px)}
.screen.active{display:block}
.lobby-screen{padding:clamp(60px,9vh,110px) clamp(24px,7vw,120px);position:relative}
.lobby-screen.active{display:flex;align-items:center;justify-content:space-between;gap:70px}
.hero-copy{max-width:610px;animation:reveal .8s ease-out both}
.eyebrow{font:700 11px var(--display);letter-spacing:.3em;color:#b7c0c0;text-transform:uppercase;display:flex;align-items:center;gap:10px}
.eyebrow span{width:26px;height:1px;background:var(--amber);box-shadow:0 0 8px var(--amber)}
h1{font-size:clamp(55px,7vw,104px);line-height:.92;letter-spacing:-.055em;margin:25px 0 28px;font-weight:900;text-shadow:0 4px 40px #000}
h1 em{font-style:normal;color:transparent;-webkit-text-stroke:1px #ddad70;text-shadow:0 0 35px rgba(217,152,66,.15)}
.lead{max-width:500px;color:#aab2b2;font-size:15px;line-height:1.9}
.hero-actions{display:flex;align-items:center;gap:14px;margin-top:38px}
.primary-btn,.ghost-btn{height:52px;border:0;padding:0 24px;color:#fff;font:600 14px var(--font);cursor:pointer;transition:.25s}
.primary-btn{background:linear-gradient(110deg,#a75c24,#dc9c4d);display:inline-flex;align-items:center;gap:40px;box-shadow:0 10px 35px rgba(166,86,29,.26);clip-path:polygon(0 0,calc(100% - 13px) 0,100% 13px,100% 100%,13px 100%,0 calc(100% - 13px))}
.primary-btn:hover{filter:brightness(1.13);transform:translateY(-2px)}
.primary-btn b{font-size:20px}
.ghost-btn{background:rgba(255,255,255,.035);border:1px solid var(--line)}
.ghost-btn:hover{border-color:rgba(255,198,111,.5);background:rgba(255,198,111,.07)}
.play{font-size:10px;color:var(--amber);margin-right:8px}
.stats-row{display:flex;margin-top:65px;gap:50px}
.stats-row div{border-left:1px solid var(--line);padding-left:14px}
.stats-row b{display:block;font:600 25px var(--display);letter-spacing:.08em}
.stats-row small{display:block;color:#747e80;font-size:10px;margin-top:3px;letter-spacing:.12em}
.glass{background:linear-gradient(145deg,rgba(21,26,28,.86),rgba(8,11,13,.73));border:1px solid var(--line);box-shadow:0 24px 80px rgba(0,0,0,.46),inset 0 1px rgba(255,255,255,.03);backdrop-filter:blur(20px)}
.setup-panel{width:min(410px,100%);padding:29px;animation:reveal .8s .15s ease-out both}
.panel-title{display:flex;align-items:start;justify-content:space-between;margin-bottom:27px}
.panel-title small,.ammo-panel>small,.log-panel>small{font:600 9px var(--display);letter-spacing:.25em;color:#6f7b7e}
.panel-title h2{margin:4px 0 0;font-size:25px}
.online-dot{font-size:10px;color:#8ca8a6}
.online-dot:before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#72c0a7;box-shadow:0 0 8px #72c0a7;margin-right:7px}
.setup-panel label{display:flex;justify-content:space-between;font-size:12px;color:#aab1b0}
.setup-panel output{color:var(--amber2)}
input[type=range]{width:100%;accent-color:var(--amber);margin:16px 0 23px}
.player-fields{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin-bottom:22px}
.player-input{height:43px;background:rgba(0,0,0,.25);border:1px solid var(--line);display:flex;align-items:center;padding:0 12px;gap:9px}
.player-input span{width:22px;height:22px;border-radius:50%;display:grid;place-items:center;background:#182023;color:#9dc7c9;font:700 10px var(--display)}
.player-input input{min-width:0;width:100%;background:none;border:0;outline:0;color:#e9eceb;font-family:var(--font)}
.setting-line{border-top:1px solid var(--line);padding-top:18px;display:flex;justify-content:space-between;align-items:center}
.setting-line b{font-size:12px}
.setting-line small{font-size:9px;color:#6e797b;display:block;margin-top:3px}
.segmented{display:flex;background:#070a0b;padding:3px}
.segmented button,.life-picker button{border:0;color:#778083;background:transparent;cursor:pointer;font-family:var(--font)}
.segmented button{padding:6px 11px;font-size:11px}
.segmented button.active,.life-picker button.active{background:#30251b;color:var(--amber2)}
.life-picker{display:grid;grid-template-columns:repeat(4,1fr);gap:5px;margin:14px 0}
.life-picker button{border:1px solid var(--line);height:30px}
.life-picker.disabled{opacity:.3;pointer-events:none}
.wide{width:100%;justify-content:space-between;margin-top:19px}
.legal{text-align:center;color:#596366;font-size:9px;margin:14px 0 -7px}
.scroll-hint{position:absolute;bottom:25px;left:50%;font:600 8px var(--display);letter-spacing:.2em;color:#596164}
.scroll-hint span{display:inline-block;height:26px;width:1px;background:linear-gradient(var(--amber),transparent);vertical-align:middle;margin-right:9px}
.game-screen{padding:35px clamp(18px,4vw,65px) 55px;background:linear-gradient(rgba(3,6,7,.42),rgba(3,6,7,.86))}
.game-head{display:flex;justify-content:space-between;align-items:center}
.game-head .eyebrow{margin:0}
.game-head h2{font:700 clamp(28px,3.5vw,44px) var(--display);margin:3px 0 18px}
.game-head h2 i{color:var(--amber);font-style:normal}
.round-meta{display:flex;align-items:center;gap:15px;color:#7d8788;font-size:11px}
.round-meta b{color:#fff;font:600 16px var(--display)}
.small{height:37px;padding:0 15px;font-size:11px}
.players-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:12px}
.player-card{position:relative;min-height:90px;padding:15px 16px;border:1px solid var(--line);background:rgba(8,11,12,.72);transition:.25s;overflow:hidden}
.player-card.current{border-color:rgba(217,152,66,.7);box-shadow:inset 3px 0 var(--amber),0 0 25px rgba(217,152,66,.1)}
.player-card.dead{opacity:.38;filter:grayscale(1)}
.player-card small{font:600 9px var(--display);color:#697477;letter-spacing:.15em}
.player-card h4{margin:5px 0 10px;font-size:14px}
.hearts{display:flex;gap:5px}
.heart{width:15px;height:8px;border:1px solid #9a4e43;background:#d35c4c;clip-path:polygon(0 0,100% 0,100% 65%,50% 100%,0 65%)}
.heart.empty{background:transparent;border-color:#4b3c3b}
.turn-badge{position:absolute;right:11px;top:10px;color:var(--amber);font:600 8px var(--display);letter-spacing:.1em}
.arena-layout{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(390px,1.7fr) minmax(220px,.8fr);gap:12px;min-height:400px}
.ammo-panel,.log-panel,.turn-console{padding:23px}
.ammo-panel h3,.log-panel h3{margin:5px 0 23px;font-size:18px}
.chambers{--ring-radius:52px;width:155px;height:155px;border:1px solid #644c33;border-radius:50%;margin:15px auto 25px;position:relative;background:radial-gradient(circle,#090c0e 0 22%,#242424 23% 27%,#0b0e10 28% 62%,#201a15 63% 65%,#080a0b 66%);box-shadow:0 0 50px rgba(217,152,66,.08),inset 0 0 20px #000}
.chamber{position:absolute;width:24px;height:24px;border:1px solid #55483a;background:#111516;border-radius:50%;left:50%;top:50%;transform:rotate(var(--a)) translateY(calc(-1 * var(--ring-radius))) translate(-50%,-50%);transform-origin:0 0;box-shadow:inset 0 2px 5px #000}
.chamber.used{background:#090a0b;border-color:#24292a}
.chamber.live-known{border-color:#994b39}
.ammo-stats{display:flex;justify-content:space-between;font-size:11px;color:#8e9798}
.ammo-stats span{display:flex;align-items:center;gap:5px}
.ammo-stats i{width:6px;height:6px;border-radius:50%;background:#738083}
.ammo-stats i.live{background:var(--danger);box-shadow:0 0 7px var(--danger)}
.ammo-panel>p{font-size:10px;line-height:1.8;color:#5f6a6c;border-top:1px solid var(--line);padding-top:16px;margin-top:17px}
.turn-console{display:grid;place-items:center;position:relative;text-align:center;overflow:hidden}
.turn-console:before{content:"";position:absolute;width:310px;height:310px;border:1px solid rgba(217,152,66,.15);border-radius:50%;box-shadow:0 0 80px rgba(217,152,66,.05);pointer-events:none}
.dice-stage,.action-stage{position:relative;z-index:1;width:100%}
.dice-stage>p,.turn-kicker{font:600 9px var(--display);letter-spacing:.28em;color:var(--amber)}
.dice-stage h3,.action-stage h3{font-size:clamp(21px,2.5vw,31px);margin:6px 0 21px}
.dice-row{display:flex;justify-content:center;gap:9px;margin-bottom:24px;min-height:57px}
.die{width:54px;height:54px;border:1px solid var(--line);background:#111618;display:grid;place-items:center;font:700 22px var(--display);position:relative}
.die small{position:absolute;bottom:-17px;font:500 8px var(--font);color:#778183;white-space:nowrap}
.die.rolling{animation:shake .15s linear infinite}
.target-grid{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:0 auto 24px;max-width:460px}
.target{min-width:105px;padding:10px 13px;border:1px solid var(--line);background:#0b0f11;color:#9da6a6;cursor:pointer;font:500 11px var(--font);transition:.2s}
.target:hover,.target.selected{color:#fff;border-color:var(--amber);background:rgba(217,152,66,.1)}
.fire-btn{border:0;background:transparent;color:#fff;cursor:pointer}
.fire-btn:disabled{opacity:.38;cursor:not-allowed}
.fire-core{display:block;margin:0 auto 10px;width:62px;height:62px;border:1px solid var(--amber);border-radius:50%;background:radial-gradient(circle,#f2bd69 0 5%,#803b1e 7% 16%,#0e1112 17% 48%,#8d5a27 49% 51%,transparent 52%);box-shadow:0 0 30px rgba(217,152,66,.22);transition:.25s}
.fire-btn:not(:disabled):hover .fire-core{transform:scale(1.08);box-shadow:0 0 45px rgba(217,152,66,.42)}
.fire-btn b{display:block;font:700 14px var(--font);letter-spacing:.12em}
.fire-btn small{display:block;color:#697375;margin-top:3px;font-size:9px}
.hidden{display:none!important}
.result-flash{position:absolute;inset:0;z-index:4;display:grid;place-items:center;background:rgba(4,6,7,.88);backdrop-filter:blur(4px);animation:flash .35s}
.result-flash div b{display:block;font:700 48px var(--display);color:var(--amber2)}
.result-flash.live div b{color:#ff6d58;text-shadow:0 0 35px rgba(255,65,45,.7)}
.result-flash div span{font-size:11px;color:#a0a9a9}
.event-log{height:290px;overflow:auto;padding-right:4px}
.log-entry{border-left:1px solid #2d3537;padding:0 0 17px 12px;position:relative;color:#8e9899;font-size:10px;line-height:1.6}
.log-entry:before{content:"";position:absolute;width:5px;height:5px;border-radius:50%;background:#657073;left:-3px;top:4px}
.log-entry.hot:before{background:var(--amber);box-shadow:0 0 8px var(--amber)}
.log-entry b{color:#d7dcda;font-weight:500}
.log-entry time{display:block;color:#4f595b;font:500 8px var(--display)}
dialog{width:min(500px,calc(100% - 30px));color:var(--text);border:1px solid #463829;background:#0c1012;padding:35px;box-shadow:0 30px 100px #000}
dialog::backdrop{background:rgba(0,0,0,.8);backdrop-filter:blur(8px)}
dialog h2{font-size:31px;margin:8px 0 25px}
dialog ol{list-style:none;padding:0;counter-reset:rule}
dialog li{counter-increment:rule;display:grid;grid-template-columns:45px 1fr;border-top:1px solid var(--line);padding:14px 0}
dialog li:before{content:'0' counter(rule);font:600 16px var(--display);color:var(--amber)}
dialog li b,dialog li span{grid-column:2}
dialog li b{font-size:13px}
dialog li span{font-size:10px;color:#788284;margin-top:4px}
.dialog-close{position:absolute;right:15px;top:12px;border:0;background:none;color:#7b8587;font-size:25px;cursor:pointer}
@keyframes reveal{from{opacity:0;transform:translateY(18px)}
to{opacity:1;transform:none}
}
@keyframes shake{25%{transform:rotate(8deg)}
75%{transform:rotate(-8deg)}
}
@keyframes flash{from{opacity:0}
to{opacity:1}
}

@media(max-width:980px){.topbar nav{display:none}
.lobby-screen.active{flex-direction:column;align-items:flex-start}
.hero-copy{max-width:100%}
.setup-panel{width:100%}
.scroll-hint{display:none}
.arena-layout{grid-template-columns:1fr 1fr}
.turn-console{grid-column:1/-1;grid-row:1}
.players-grid{grid-template-columns:1fr 1fr}
.ammo-panel,.log-panel{min-height:330px}
}

@media(max-width:600px){.topbar{height:68px;padding:0 16px}
.profile{display:none}
.screen{min-height:calc(100vh - 68px)}
.lobby-screen{padding:50px 18px}
.lobby-screen.active{gap:42px}
h1{font-size:55px}
.lead{font-size:13px}
.stats-row{gap:23px;margin-top:40px}
.hero-actions{align-items:stretch}
.primary-btn,.ghost-btn{padding:0 16px}
.setup-panel{padding:21px}
.game-screen{padding:24px 12px}
.game-head{align-items:flex-start}
.round-meta>span{display:none}
.players-grid{gap:6px}
.player-card{min-height:80px;padding:12px 10px}
.arena-layout{grid-template-columns:1fr}
.turn-console,.ammo-panel,.log-panel{grid-column:1;min-height:350px}
.turn-console{grid-row:1}
.ammo-panel{grid-row:2}
.log-panel{grid-row:3}
.ammo-panel{display:grid;grid-template-columns:1fr 1fr;align-items:center}
.ammo-panel>small,.ammo-panel>h3,.ammo-panel>p{grid-column:1/-1}
.chambers{--ring-radius:42px;width:130px;height:130px}
.log-panel{min-height:260px}
.event-log{height:190px}
}

.segmented button,.life-picker button{font-family:var(--font)}

/* Tavern contract art direction */
:root{--amber:#b67a36;--amber2:#ddb475;--panel:rgba(18,14,11,.84);--line:rgba(228,205,166,.16);--muted:#9b9184;--text:#f0e9dd}
body{background-color:#0d0a08;background-image:url('assets/tavern-contract-v2.png');background-position:center;background-size:cover}
body:before{background:linear-gradient(90deg,rgba(10,7,5,.88),rgba(10,7,5,.48) 42%,rgba(10,7,5,.28) 64%,rgba(10,7,5,.82)),linear-gradient(0deg,#0a0806 0%,transparent 52%)}
.topbar{background:rgba(13,10,8,.84);border-bottom-color:rgba(220,190,143,.15)}
.brand-mark{border-color:#b8894e}.brand-mark:before,.brand-mark:after,.brand-mark i{background:#c08b48}
.lobby-screen{padding-top:clamp(45px,7vh,80px)}
h1{font-family:Georgia,'Noto Serif SC',serif;font-weight:700;letter-spacing:-.045em;font-size:clamp(53px,6.5vw,92px)}
h1 em{color:#d2a464;-webkit-text-stroke:0;text-shadow:0 8px 28px rgba(0,0,0,.55);font-weight:400}
.lead{color:#c2b9aa;text-shadow:0 2px 10px #000}
.glass{background:linear-gradient(145deg,rgba(29,22,17,.91),rgba(14,11,9,.86));border-color:rgba(220,190,143,.18)}
.contract-panel{position:relative;max-height:calc(100vh - 125px);overflow:auto;background:linear-gradient(145deg,rgba(37,29,21,.94),rgba(18,14,11,.94));box-shadow:0 30px 90px rgba(0,0,0,.62),inset 0 0 70px rgba(111,71,32,.1)}
.contract-panel:before{content:"";position:absolute;inset:9px;border:1px solid rgba(217,184,133,.11);pointer-events:none}
.contract-panel .panel-title{margin-bottom:13px}.contract-panel .panel-title h2{font-family:Georgia,'Noto Serif SC',serif;font-size:30px;font-weight:500}
.wax-seal{width:39px;height:39px;border-radius:50%;display:grid;place-items:center;background:#713528;color:#d6af75;font-family:serif;box-shadow:0 3px 12px #000,inset 0 0 0 3px #56251d,inset 0 0 0 4px rgba(229,185,116,.25);transform:rotate(-9deg)}
.contract-copy{font:12px/1.8 Georgia,'Noto Serif SC',serif;color:#a99c88;padding:0 0 15px;border-bottom:1px solid var(--line);margin:0 0 18px}
.signature-title{display:flex;justify-content:space-between;align-items:center;margin:0 0 9px;color:#d6c2a3;font:600 11px Georgia,serif}.signature-title small{font:600 8px var(--display);letter-spacing:.24em;color:#6f6253}
.signature-fields{grid-template-columns:1fr;margin-bottom:12px;gap:5px}
.signature-fields .player-input{height:38px;background:rgba(6,4,3,.22);border-width:0 0 1px;border-color:rgba(211,183,139,.25);padding-left:3px}
.signature-fields .player-input span{background:transparent;color:#9b7041!important;border:1px solid rgba(183,126,60,.35)}
.signature-fields .player-input input{font-family:Georgia,'Noto Serif SC',serif;font-size:14px;font-style:italic;color:#eadcc5}
.ai-notice{display:flex;justify-content:space-between;align-items:center;background:rgba(148,99,43,.09);border:1px solid rgba(185,133,72,.2);padding:10px 12px;margin:5px 0 14px}
.ai-notice b{font-size:10px;color:#c6ac86}.ai-notice span{font-size:8px;color:#766956}.ai-notice.hidden-ai{display:none}
.agreement-check{justify-content:flex-start!important;gap:8px;margin-top:14px;color:#867a69!important}.agreement-check input{accent-color:#9e682f}
.ammo-setting-line{margin-top:10px}.ammo-picker{padding:12px 0 1px}.ammo-picker label{font-size:10px;color:#8f8372}.ammo-picker output{color:#d6b27f}.ammo-picker input[type=range]{margin:9px 0 12px}.ammo-picker.disabled{opacity:.3;pointer-events:none}
.life-range{padding:12px 0 2px}.life-range label{font-size:10px;color:#8f8372}.life-range output{color:#d6b27f}.life-range input[type=range]{margin:9px 0 8px}.life-range.disabled{opacity:.3;pointer-events:none}

/* Memory-pressure table layout */
.duel-table{height:360px;position:relative;margin:0 0 14px;border:1px solid rgba(213,177,126,.12);overflow:hidden;background:radial-gradient(ellipse at center,rgba(95,58,27,.2),rgba(13,9,6,.9) 62%),linear-gradient(90deg,rgba(255,255,255,.015) 1px,transparent 1px);box-shadow:inset 0 0 90px #050302}
.duel-table:before{content:"";position:absolute;inset:33px 10%;border:1px solid rgba(190,139,77,.13);border-radius:50%;box-shadow:inset 0 0 55px rgba(0,0,0,.55)}
.players-grid{display:block;position:absolute;inset:0;margin:0;z-index:2}
.players-grid .player-card{position:absolute;width:min(230px,34%);min-height:82px;margin:0;background:linear-gradient(145deg,rgba(33,24,17,.97),rgba(13,10,8,.96));box-shadow:0 14px 35px rgba(0,0,0,.5)}
.players-grid .seat-self{left:50%;bottom:18px;transform:translateX(-50%)}
.players-grid.seats-2 .seat-opponent-0{left:50%;top:18px;transform:translateX(-50%)}
.players-grid.seats-3 .seat-opponent-0{left:22%;top:22px;transform:translateX(-50%)}
.players-grid.seats-3 .seat-opponent-1{left:78%;top:22px;transform:translateX(-50%)}
.players-grid.seats-4 .seat-opponent-0{left:50%;top:16px;transform:translateX(-50%)}
.players-grid.seats-4 .seat-opponent-1{left:18px;top:50%;transform:translateY(-50%)}
.players-grid.seats-4 .seat-opponent-2{right:18px;top:50%;transform:translateY(-50%)}
.table-gun{position:absolute;z-index:1;left:50%;top:50%;width:clamp(245px,33vw,390px);aspect-ratio:1100/476;transform:translate(-50%,-48%) rotate(-6deg);transform-origin:43% 48%;pointer-events:none;isolation:isolate;filter:drop-shadow(0 18px 14px rgba(0,0,0,.78)) drop-shadow(0 3px 2px rgba(0,0,0,.92))}
.table-gun img{position:absolute;z-index:2;inset:0;width:100%;height:100%;object-fit:contain;user-select:none;-webkit-user-drag:none;filter:saturate(.86) contrast(1.06) brightness(.88)}
.gun-floor-shadow{position:absolute;z-index:0;left:7%;right:1%;bottom:5%;height:35%;border-radius:50%;background:radial-gradient(ellipse,rgba(0,0,0,.72),rgba(0,0,0,0) 70%);filter:blur(10px);transform:translate(2%,9%) skewX(-10deg)}
.gun-metal-glint{position:absolute;z-index:3;left:29%;top:16%;width:47%;height:7%;border-radius:50%;background:linear-gradient(90deg,transparent,rgba(244,210,158,.2),rgba(214,232,238,.35),transparent);filter:blur(2px);mix-blend-mode:screen;opacity:.55;transform:rotate(2deg)}
.muzzle-flash{position:absolute;z-index:4;right:-7%;top:27%;width:22%;aspect-ratio:1;opacity:0;background:radial-gradient(circle,#fff 0 6%,#ffd38a 8% 18%,#e4772c 22% 35%,transparent 66%);clip-path:polygon(0 42%,44% 36%,64% 0,70% 34%,100% 50%,69% 61%,59% 100%,42% 68%,0 60%);filter:drop-shadow(0 0 10px #ffb04e) blur(.3px)}
.table-gun.loading{animation:gunLoad 1.4s 1.75s cubic-bezier(.2,.75,.2,1) both}.table-gun.loading .gun-metal-glint{animation:metalSweep 1.3s .55s ease-in-out both}
.table-gun.firing{animation:gunRecoil .38s cubic-bezier(.16,.9,.34,1) both}.table-gun.firing.live .muzzle-flash{animation:muzzleBurst .24s ease-out both}

.memory-panel{text-align:center}.memory-panel h3{margin-bottom:16px}.sealed-chamber{position:relative;width:118px;height:118px;margin:24px auto;border:1px solid #56432f;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle,#111 0 23%,#3a3026 25% 28%,#0b0d0e 30% 64%,#2a2018 66% 69%,#080909 71%);box-shadow:inset 0 0 25px #000,0 0 35px rgba(182,122,54,.08)}.sealed-chamber span{font:700 28px var(--display);color:#7b6247}.sealed-chamber i{position:absolute;width:36px;height:1px;background:#6c4f32;transform:rotate(-35deg)}
.ammo-reveal{position:fixed;z-index:40;inset:0;display:grid;place-items:center;padding:20px;background:rgba(5,3,2,.9);backdrop-filter:blur(12px)}
.reveal-card{width:min(520px,100%);padding:34px 42px;text-align:center;background:linear-gradient(145deg,rgba(34,25,18,.98),rgba(11,8,6,.98));animation:revealIn .5s ease-out both}.reveal-card>.eyebrow{justify-content:center;margin:0 0 10px}.reveal-card>small{color:#9e8b70;font-size:10px;letter-spacing:.12em}.reveal-card h2{font:500 31px Georgia,'Noto Serif SC',serif;margin:8px 0 12px}.reveal-chambers{--ring-radius:67px;width:196px;height:196px;margin:18px auto 22px}.reveal-chambers .chamber{width:29px;height:29px;background:#141819}.reveal-chambers .chamber:after{content:"";position:absolute;inset:5px;border-radius:50%;background:radial-gradient(circle at 38% 32%,#e0b879,#71502b 46%,#21170f 72%);opacity:0;animation:roundLoad .48s var(--delay,0s) cubic-bezier(.2,.8,.2,1) forwards}.reveal-counts{display:grid;grid-template-columns:1fr 1px 1fr;gap:25px;align-items:center;margin-top:4px}.reveal-counts>i{height:58px;background:var(--line)}.reveal-counts div{display:grid}.reveal-counts small{font:700 8px var(--display);letter-spacing:.28em;color:#756a5b}.reveal-counts b{font:700 43px var(--display);line-height:1;color:#aab0ad}.reveal-counts .live b{color:#ef725f;text-shadow:0 0 24px rgba(239,80,62,.3)}.reveal-counts span{font-size:10px;color:#8b8174;margin-top:4px}.memory-timer{height:2px;background:#2b241d;margin:25px 0 14px;overflow:hidden}.memory-timer i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#d79240,#8e3c2e);transform-origin:left;animation:memoryCountdown 5.2s linear forwards}.reveal-card>p:last-child{font-size:10px;color:#766c5f;margin:0}
@keyframes revealIn{from{opacity:0;transform:scale(.96) translateY(14px)}to{opacity:1;transform:none}}
@keyframes roundLoad{0%{opacity:0;transform:scale(.2);filter:blur(3px)}70%{opacity:1;transform:scale(1.15)}100%{opacity:.82;transform:scale(1)}}
@keyframes gunLoad{0%{transform:translate(-50%,-48%) rotate(-6deg)}38%{transform:translate(-50%,-55%) rotate(-14deg) scale(1.035)}68%{transform:translate(-50%,-45%) rotate(1deg) scale(.99)}100%{transform:translate(-50%,-48%) rotate(-6deg)}}
@keyframes metalSweep{0%{opacity:0;transform:translateX(-28%) rotate(2deg)}45%{opacity:.9}100%{opacity:.25;transform:translateX(38%) rotate(2deg)}}
@keyframes gunRecoil{0%{transform:translate(-50%,-48%) rotate(-6deg)}28%{transform:translate(-57%,-52%) rotate(-10deg) scale(1.035)}100%{transform:translate(-50%,-48%) rotate(-6deg)}}
@keyframes muzzleBurst{0%{opacity:0;transform:scale(.2) rotate(-8deg)}24%{opacity:1;transform:scale(1.15) rotate(4deg)}100%{opacity:0;transform:scale(.45) rotate(12deg)}}
@keyframes memoryCountdown{from{transform:scaleX(1)}to{transform:scaleX(0)}}
@media(max-width:700px){.duel-table{height:430px}.players-grid .player-card{width:44%;min-height:76px}.players-grid.seats-4 .seat-opponent-1{left:8px;top:39%}.players-grid.seats-4 .seat-opponent-2{right:8px;top:39%}.table-gun{top:61%;width:min(76vw,320px)}.memory-panel{display:block}.reveal-card{padding:28px 20px}.reveal-chambers{--ring-radius:58px;width:174px;height:174px}}
.primary-btn{background:linear-gradient(110deg,#70421f,#b47836);box-shadow:0 10px 35px rgba(77,43,17,.36)}
.stats-row b{font-family:Georgia,serif}.player-card{background:rgba(21,16,12,.83)}
.tavern-glass{background:linear-gradient(145deg,rgba(30,23,17,.88),rgba(13,10,8,.86));border-color:rgba(217,185,138,.18)}
.game-screen{background:linear-gradient(rgba(12,8,5,.47),rgba(10,7,5,.86))}.player-card.current{border-color:rgba(182,122,54,.8)}
.player-card .bot-label{color:#c69a5d;margin-left:6px}
@media(max-width:980px){.contract-panel{max-height:none}}
@media(max-width:600px){body{background-position:48% center}.contract-panel{max-height:none}.lobby-screen{padding-top:38px}h1{font-size:49px}.contract-copy{font-size:11px}.stats-row{margin-top:34px}}

.room-type-line{margin-bottom:13px}.room-options{padding:4px 0}.room-code-input{width:100%;height:48px;margin-top:10px;background:rgba(4,3,2,.34);border:1px solid rgba(211,183,139,.28);color:#eadcc5;font:700 22px var(--display);letter-spacing:.26em;text-align:center;text-transform:uppercase;outline:none}.room-code-input:focus{border-color:#b67a36;box-shadow:0 0 0 2px rgba(182,122,54,.1)}.connection-status{text-align:center;min-height:14px;color:#8d806d;font-size:9px;margin:9px 0 0}.connection-status.error{color:#d87865}.primary-btn:disabled{opacity:.42;cursor:not-allowed;transform:none}.room-dialog{width:min(470px,calc(100% - 28px));text-align:center;background:linear-gradient(145deg,#271d15,#100c09);border-color:rgba(220,190,143,.24)}.room-dialog .eyebrow{justify-content:center}.room-dialog h2{font-family:Georgia,'Noto Serif SC',serif;margin-bottom:18px}.room-code-label{font:600 8px var(--display);letter-spacing:.25em;color:#716454;margin:0}.room-code{border:0;background:none;color:#e3b36e;font:700 42px var(--display);letter-spacing:.15em;cursor:pointer;text-shadow:0 4px 25px rgba(203,137,58,.25);padding:3px 0}.room-hint{font-size:10px;color:#817665;margin:2px 0 22px}.room-roster{display:grid;grid-template-columns:1fr 1fr;gap:7px;text-align:left}.roster-seat{height:53px;padding:9px 12px;border:1px dashed rgba(211,183,139,.17);display:flex;flex-direction:column;justify-content:center;color:#746b5e}.roster-seat.filled{border-style:solid;background:rgba(158,103,43,.08);color:#e3d4bc}.roster-seat span{font-size:12px}.roster-seat small{font-size:8px;color:#7a6d5b;margin-top:3px}.room-dialog .wide{margin-top:18px}.room-dialog .connection-status{margin-bottom:-13px}
@media(max-width:600px){.room-dialog{padding:27px 20px}.room-code{font-size:34px}.room-roster{grid-template-columns:1fr}}

/* Unified vertical duel table */
.game-screen{padding-bottom:34px}
.duel-table{height:clamp(560px,72vh,690px);margin:0;border-color:rgba(213,177,126,.2);background:radial-gradient(ellipse at 50% 48%,rgba(107,65,29,.25),rgba(13,9,6,.93) 64%),linear-gradient(90deg,rgba(255,255,255,.012) 1px,transparent 1px)}
.duel-table:before{inset:8% 8%;border-radius:48%;background:radial-gradient(circle at 50% 50%,transparent 0 34%,rgba(0,0,0,.16) 70%);box-shadow:inset 0 0 90px rgba(0,0,0,.62)}
.players-grid .player-card{width:min(220px,25%);min-height:94px;padding:14px 17px;overflow:visible;text-align:center;z-index:2}
.players-grid .player-card small{display:block;margin-bottom:4px}
.player-name-target{max-width:100%;padding:2px 8px 5px;border:0;border-bottom:1px solid transparent;background:none;color:#f0e5d3;font:700 18px Georgia,'Noto Serif SC',serif;cursor:pointer;transition:.2s;text-shadow:0 2px 10px #000;white-space:nowrap}
.player-name-target:not(:disabled):hover{color:#ffc66f;border-bottom-color:#b67a36;transform:translateY(-1px)}
.player-name-target:disabled{cursor:default}
.players-grid .hearts{justify-content:center;margin-top:7px}
.player-card.target-selected{border-color:#d75d48!important;background:linear-gradient(145deg,rgba(72,29,21,.96),rgba(18,10,8,.97));box-shadow:inset 0 0 0 1px rgba(255,105,80,.32),0 0 36px rgba(192,55,35,.25)!important}
.player-card.target-selected:after{content:"已瞄准";position:absolute;left:50%;bottom:-20px;transform:translateX(-50%);color:#f27662;font:700 8px var(--display);letter-spacing:.22em;white-space:nowrap}
.players-grid .seat-self{left:50%;bottom:22px;transform:translateX(-50%)}
.players-grid.seats-2 .seat-opponent-0{left:50%;top:22px;transform:translateX(-50%)}
.players-grid.seats-3 .seat-opponent-0{left:28%;top:22px;transform:translateX(-50%)}
.players-grid.seats-3 .seat-opponent-1{left:72%;top:22px;transform:translateX(-50%)}
.players-grid.seats-4 .seat-opponent-0{left:18%;top:22px;transform:translateX(-50%)}
.players-grid.seats-4 .seat-opponent-1{left:50%;top:22px;transform:translateX(-50%)}
.players-grid.seats-4 .seat-opponent-2{left:82%;right:auto;top:22px;transform:translateX(-50%)}
.table-gun{top:49%;width:clamp(330px,39vw,500px)}
.turn-console{position:absolute;z-index:3;inset:0;padding:0;overflow:visible;display:block;background:none;border:0;box-shadow:none;pointer-events:none}
.turn-console:before{width:420px;height:420px;left:50%;top:50%;transform:translate(-50%,-50%);opacity:.45}
.dice-stage{position:absolute;left:50%;top:51%;transform:translate(-50%,-50%);width:min(520px,72%);padding:27px;background:rgba(13,9,6,.82);border:1px solid rgba(213,177,126,.2);backdrop-filter:blur(8px);pointer-events:auto}
.action-stage{position:absolute;right:4%;top:49%;transform:translateY(-50%);width:235px;padding:20px 12px;background:linear-gradient(90deg,transparent,rgba(12,8,6,.84) 22%,rgba(12,8,6,.84));pointer-events:auto}
.action-stage h3{font-size:18px;margin:4px 0 12px}.action-stage .turn-kicker{margin:0}.action-stage .fire-core{width:52px;height:52px;margin-bottom:7px}.action-stage .fire-btn b{font-size:12px}.action-stage .fire-btn small{max-width:190px;margin:4px auto 0}
.result-flash{z-index:8}

@media(max-width:900px){
  .duel-table{height:620px}
  .players-grid .player-card{width:min(190px,29%)}
  .table-gun{top:48%;width:min(48vw,430px)}
  .action-stage{right:2%;width:205px}
}
@media(max-width:700px){
  .duel-table{height:700px}
  .players-grid .player-card{width:31%;min-height:86px;padding:11px 7px}
  .players-grid .turn-badge{display:none}
  .player-name-target{font-size:14px;padding-inline:2px}
  .players-grid.seats-3 .seat-opponent-0{left:27%}.players-grid.seats-3 .seat-opponent-1{left:73%}
  .players-grid.seats-4 .seat-opponent-0{left:17%;top:18px}.players-grid.seats-4 .seat-opponent-1{left:50%;top:18px}.players-grid.seats-4 .seat-opponent-2{left:83%;top:18px}
  .table-gun{top:45%;width:min(88vw,390px)}
  .action-stage{left:50%;right:auto;top:64%;transform:translate(-50%,-50%);width:260px;padding:8px;background:radial-gradient(ellipse,rgba(12,8,6,.88),transparent 72%)}
  .action-stage h3{font-size:15px;margin-bottom:7px}.action-stage .turn-kicker{font-size:7px}.action-stage .fire-core{width:43px;height:43px}
  .dice-stage{width:86%;padding:22px 12px}
}


