:root{--bg: #171514;--panel: #211f1c;--muted: #b0a79b;--border: #514943;--accent: #f0b84a;--rust: #b84f35;--sand: #d8b36a;--toxic: #9dbb53;--friendly: #55c4c1;--enemy: #e06a45;--side-left-bg: #282522;--side-right-bg: #24211e;--side-tint-left: rgba(216, 179, 106, .08);--side-tint-right: rgba(184, 79, 53, .1);--side-divider: #5a4a40;--scroll-track: #171514;--scroll-thumb: #5b4b42;--scroll-thumb-hover: #806249;--card-w: 96px;--card-h: 136px;--radius: 8px;--motion-fast: .12s;--motion-med: .22s;--motion-slow: .36s;--motion-ease: cubic-bezier(.22, .61, .36, 1)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;background:radial-gradient(circle at 50% -10%,rgba(216,179,106,.08),transparent 35%),linear-gradient(135deg,rgba(184,79,53,.035) 25%,transparent 25%) 0 0 / 16px 16px,var(--bg);color:#e5e7eb;font:14px/1.4 Inter,system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif}*{scrollbar-width:thin;scrollbar-color:var(--scroll-thumb) var(--scroll-track)}*::-webkit-scrollbar{width:10px;height:10px}*::-webkit-scrollbar-track{background:var(--scroll-track)}*::-webkit-scrollbar-thumb{background:var(--scroll-thumb);border:1px solid var(--border);border-radius:8px}*::-webkit-scrollbar-thumb:hover{background:var(--scroll-thumb-hover)}@media (prefers-reduced-motion: reduce){*,*:before,*:after{transition:none!important;animation:none!important}}html.anim-off *,html.anim-off *:before,html.anim-off *:after{transition:none!important;animation:none!important}.container{max-width:1120px;margin:0 auto;padding:0 16px}.app{display:grid;grid-template-columns:380px 1fr 340px;height:100%}.app.hide-left{grid-template-columns:0 1fr 340px}.app.hide-right{grid-template-columns:380px 1fr 0}.app.hide-left.hide-right{grid-template-columns:0 1fr 0}.lobbyPage{min-height:100vh;display:flex;flex-direction:column}.lobbyMain{flex:1 0 auto}.sidebar{background:linear-gradient(180deg,var(--side-tint-right),transparent 22%),var(--side-right-bg);border-right:1px solid var(--border);padding:12px;overflow-y:auto;overflow-x:hidden;height:100%}.sidebar-right{background:linear-gradient(180deg,var(--side-tint-right),transparent 22%),var(--side-right-bg);border-left:1px solid var(--border);padding:12px;overflow-y:auto;overflow-x:hidden;height:100%}.sidebar .h2,.sidebar-right .h2{color:#eef2ff}.edgeToggle{position:absolute;top:8px;right:-10px;z-index:5}.sidebar .edgeToggle{right:-10px}.sidebar-right{position:relative}.sidebar-right .edgeToggle{left:-10px;right:auto}.edgeBtn{width:28px;height:36px;border-radius:6px;border:1px solid var(--border);background:#0f141b;color:#cbd5e1;cursor:pointer;font-size:16px;line-height:1;display:inline-flex;align-items:center;justify-content:center}.edgeBtn:hover{background:#131b26}.btn.success{color:#0b1220;background:#9ad86b;border-color:#b5e58f;font-weight:600;box-shadow:0 1px #ffffff1f inset}.btn.success:hover{filter:brightness(1.05);transform:translateY(-1px)}.h2{font-weight:600;margin:10px 0 6px}.small{font-size:12px;color:var(--muted)}.row{display:flex;align-items:center;gap:8px}.btn{background:#3a3029;border:1px solid var(--border);color:#e5e7eb;padding:6px 10px;border-radius:8px;cursor:pointer}.btn:hover{border-color:#8a694e;background:#49382d}.btn:disabled,.btn:disabled:hover{cursor:not-allowed;opacity:.42;filter:grayscale(.75);transform:none}.btn:focus-visible,.input:focus-visible,select:focus-visible,textarea:focus-visible,input[type=range]:focus-visible{outline:3px solid rgba(240,184,74,.9);outline-offset:2px}.btn.icon{display:inline-flex;align-items:center;gap:8px}.btn.primary{color:#21170e;background:#d6b25f;border-color:#f0cf87;font-weight:600;box-shadow:0 1px #ffffff1f inset}.btn.primary:hover{filter:brightness(1.05);transform:translateY(-1px)}.btn.ghost{background:transparent;border-color:#6c5849;color:#d8c8b7}.btn.ghost:hover{background:#f0b84a1a;border-color:#9b7853}.btn.discord{color:#101316;background:#6c8cff;border-color:#8fa2ff;font-weight:600;box-shadow:0 1px #ffffff1f inset}.btn.discord:hover{filter:brightness(1.05);transform:translateY(-1px)}.input{background:#1d1917;border:1px solid var(--border);color:#e5e7eb;padding:6px 8px;border-radius:8px}.chip{display:inline-flex;align-items:center;padding:2px 6px;border-radius:999px;border:1px solid var(--border);background:#332a24;font-size:12px;color:#d8c8b7}.chip.green{background:#22c55e1f;color:#8ee69e;border-color:#22c55e59}.chip.red{background:#ef44441f;color:#f59f9f;border-color:#ef444459}.chip.gray{background:#94a3b81f;color:#cbd5e1;border-color:#334155}.chip.teal{background:#2dd4bf26;color:#7cf0de;border-color:#2dd4bf66}.chip.blue{background:#3b82f626;color:#9ec5ff;border-color:#3b82f666}.log{background:#0d1118;border:1px solid var(--border);border-radius:8px;padding:8px;height:160px;overflow:auto}.log .logRow{display:flex;align-items:center;gap:6px;padding:1px 0}.log .logTime{opacity:.7;font-variant-numeric:tabular-nums}.log .logAction{font-weight:700}.logCardReference{color:#93c5fd;cursor:zoom-in;text-decoration:underline dotted;text-underline-offset:2px}.logHeader{display:flex;align-items:center;justify-content:space-between;gap:8px}.logFilters{display:flex;flex-wrap:wrap;justify-content:flex-end;gap:3px}.logFilter{padding:2px 5px;border:1px solid #5c4a3d;border-radius:4px;color:#bcae9e;background:transparent;cursor:pointer;font-size:9px}.logFilter:hover,.logFilter.active{border-color:#c19b5d;color:#fff2d1;background:#f0b84a24}.utilityDisclosure{border-top:1px solid rgba(216,179,106,.18);padding-top:8px}.utilityDisclosure summary{color:#f0cf87;cursor:pointer;font-size:12px;font-weight:800;letter-spacing:.04em;list-style:"▸  "}.utilityDisclosure[open] summary{margin-bottom:8px;list-style:"▾  "}.board{padding:12px;overflow:auto;background:linear-gradient(rgba(255,255,255,.018) 1px,transparent 1px) 0 0 / 32px 32px,linear-gradient(90deg,rgba(255,255,255,.014) 1px,transparent 1px) 0 0 / 32px 32px}.tableStatusBar{position:sticky;top:0;z-index:30;display:flex;align-items:center;justify-content:space-between;gap:16px;min-height:58px;margin:-12px -12px 12px;padding:8px 14px;color:#f5ead8;background:linear-gradient(90deg,#29231efa,#392b22f5),repeating-linear-gradient(135deg,transparent 0 12px,rgba(240,184,74,.06) 12px 14px);border-bottom:2px solid #72543e;box-shadow:0 8px 18px #0000003d}.tableStatusBrand,.tableStatusTurn,.tableStatusConnection{display:flex;align-items:center;gap:8px}.tableStatusBrand{flex-direction:column;align-items:flex-start;min-width:180px}.tableStatusBrand strong{font-size:15px;letter-spacing:.03em}.tableStatusEyebrow{color:var(--sand);font-size:9px;font-weight:800;letter-spacing:.16em}.tableStatusTurn{flex:1;justify-content:center;flex-wrap:wrap}.tableStatusTurn strong{color:#fff2d1;font-size:16px}.tableStatusTurn strong.isYourTurn{color:#ffe08a;text-shadow:0 0 14px rgba(240,184,74,.35)}.tableStatusRound,.tableStatusPhase{color:#c5b7a8;font-size:12px}.tableStatusPhase{padding:3px 7px;border:1px solid rgba(240,184,74,.45);border-radius:4px;background:#f0b84a1a;color:#f0cf87}.tableStatusConnection{color:#c5b7a8;font-size:11px;text-transform:uppercase;letter-spacing:.06em}.connectionDot{width:8px;height:8px;border-radius:50%;background:var(--enemy);box-shadow:0 0 0 3px #e06a4529}.connectionDot.online{background:var(--toxic);box-shadow:0 0 0 3px #9dbb5329}.lobbyHeader{padding:18px 0;background:radial-gradient(900px 140px at 50% -40px,hsl(210,20%,12%) 0%,transparent 60%),linear-gradient(180deg,#0d0f13d9,#0d0f1399);border-bottom:1px solid var(--border)}.lobbyHeader h1{margin:0 0 10px;font-weight:700;letter-spacing:.2px}.lobbyHeader .links{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.segmented{display:inline-flex;border:1px solid var(--border);border-radius:10px;overflow:hidden;background:#0f141b}.segmented .seg{padding:6px 10px;cursor:pointer;border-right:1px solid var(--border);color:#cbd5e1;background:transparent}.segmented .seg:last-child{border-right:none}.segmented .seg.active{background:#1a2231;color:#e5e7eb;font-weight:600}.lobbyFooter{margin-top:24px;padding:18px 0 26px;border-top:1px solid var(--border);background:linear-gradient(180deg,#0d0f13bf,#0d0f13f2);color:#c8d0dc}.lobbyFooter .links{display:flex;flex-wrap:wrap;gap:8px;align-items:center}.lobbyFooter a{color:#c8d0dc;text-decoration:none}.lobbyFooter a:hover{color:#e5e7eb;text-decoration:underline}.betaBadge{display:inline-flex;align-items:center;gap:6px;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:700;letter-spacing:.3px;background:#fde68a;color:#7a4b00;border:1px solid #f1c65a;box-shadow:0 1px #ffffff26 inset}.betaCorner{position:fixed;right:12px;top:12px;z-index:60}.oppRow{display:grid;grid-template-columns:1fr;gap:12px}.oppBlock{border:1px solid var(--border);border-radius:12px;padding:8px;background:#251f1ce6;box-shadow:inset 4px 0 0 var(--enemy)}.oppBlock:hover{border-color:#324158;background:#111826}.oppHeader{display:flex;align-items:center;gap:8px}.oppName{font-weight:600}.ownershipStamp{display:inline-flex;align-items:center;padding:3px 6px;border:1px solid currentColor;border-radius:3px;font-size:8px;font-weight:900;letter-spacing:.09em;line-height:1}.ownershipStamp.enemy{color:#ffcfb0;background:#7e2f1f80}.ownershipStamp.friendly{color:#b9ffff;background:#12555657}.sharedBlock{display:grid;grid-template-columns:180px 1fr;gap:16px;margin-top:8px}.locationsGrid{display:grid;grid-template-columns:repeat(3,1fr);gap:12px}.locationCol{border:1px solid #675647;border-radius:12px;padding:10px;background:#3e322838;box-shadow:inset 0 0 0 1px #d8b36a0d}.locationColHeader{display:flex;align-items:baseline;justify-content:space-between;gap:8px;margin:-2px 0 8px;padding-bottom:7px;border-bottom:1px solid rgba(216,179,106,.2)}.locationColIndex{color:#f0cf87;font-size:11px;font-weight:900;letter-spacing:.14em}.locationColZones{color:#a99a88;font-size:8px;font-weight:800;letter-spacing:.08em}.locationSlot{border:1px solid var(--border);border-radius:12px;min-height:calc(var(--card-h) + 16px);display:flex;align-items:center;justify-content:center;background:#29221de6;margin-bottom:6px;position:relative}.locationPlaceholder{color:var(--muted);font-size:12px;opacity:.6}.tableLegend{display:grid;gap:5px;margin-top:10px;padding:8px;border:1px solid rgba(216,179,106,.2);border-radius:6px;background:#1917158c}.legendTitle{color:#a99a88;font-size:8px;font-weight:900;letter-spacing:.12em}.legendItem{padding-left:7px;border-left:3px solid #827568;color:#c9b9a8;font-size:9px;font-weight:800;letter-spacing:.06em}.legendItem.friendly{border-color:var(--friendly);color:#b9ffff}.legendItem.enemy{border-color:var(--enemy);color:#ffcfb0}.legendItem.location{border-color:var(--toxic)}.legendItem.warzone{border-color:var(--rust)}.zonesRow{display:flex;align-items:flex-start;gap:8px;flex-wrap:nowrap;overflow-x:auto;padding-bottom:2px}.zone{border:1px solid var(--border);border-radius:12px;padding:6px;background:#191715e0;min-height:calc(var(--card-h) + 28px);position:relative;display:flex;flex-wrap:wrap;gap:6px}.zone.dropTarget{outline:2px dashed var(--accent);outline-offset:3px}.zoneEmpty{display:flex;min-height:calc(var(--card-h) + 14px);width:100%;align-items:center;justify-content:center;gap:7px;color:#827568;font-size:11px;letter-spacing:.02em;pointer-events:none}.zoneEmptyMark{display:inline-flex;width:20px;height:20px;align-items:center;justify-content:center;border:1px dashed #756052;border-radius:50%;color:#c19b5d;font-size:16px;line-height:1}.zone[data-zone^=inside]{border-color:#9dbb534d;background:linear-gradient(135deg,#5b67341f,#191715e0)}.zone[data-zone^=warzone]{border-color:#e06a456b;background:repeating-linear-gradient(135deg,rgba(224,106,69,.05) 0 8px,transparent 8px 16px),#231916eb}.zoneWrap .small{margin-bottom:6px}.zone.singleSlot,.zone-single{min-width:calc(var(--card-w) + 12px);max-width:calc(var(--card-w) + 12px);flex-wrap:nowrap}.zone-compact,.zone.compact,.zone.compactDiscard,.zone-discard{width:calc(var(--card-w) + 12px)}.zoneWrap.threeWide .zone,.zone.threeWide{min-width:calc(var(--card-w) * 3 + 24px);max-width:calc(var(--card-w) * 3 + 24px)}.zone .pileWrap{display:flex;flex-wrap:wrap;gap:6px}.card{width:var(--card-w);height:var(--card-h);border-radius:var(--radius);background:#181614;border:1px solid var(--border);position:relative;overflow:hidden;flex:0 0 auto;transition:box-shadow var(--motion-fast) var(--motion-ease),transform var(--motion-fast) var(--motion-ease)}.card.location{height:var(--card-h);width:calc(var(--card-h) * 1.4)}.locCounters{position:absolute;top:8px;right:8px;width:0;height:0;pointer-events:none}.locCounters .counter{position:absolute;pointer-events:auto;min-width:26px;height:20px;border-radius:6px;border:1px solid var(--border);font-size:12px;line-height:18px;padding:0 6px;display:inline-flex;align-items:center;justify-content:center;cursor:pointer;-webkit-user-select:none;user-select:none}.locCounters .counter.red{background:#ef4444e6;color:#fff;top:0;right:0}.locCounters .counter.green{background:#22c55ee6;color:#07130b;top:48px;right:0}.card.hovered{transform:translateY(-2px)}.card:focus-visible{outline:3px solid #f0cf87;outline-offset:3px;z-index:8}.card.hovered-own{box-shadow:0 0 0 2px #60a5fabf}.card.hovered-opp{box-shadow:0 0 0 2px #f43f5ebf}.card.shared-character.self{border-color:#55c4c1e6;box-shadow:inset 0 0 0 2px #55c4c159}.card.shared-character.opponent{border-color:#e06a45f2;box-shadow:inset 0 0 0 2px #e06a4561}.board.fx-combat .zone[data-zone^=warzone]{animation:warzone-impact .42s ease-out 2}.board.fx-damage .card.shared-character{animation:damage-pulse .62s ease-out}.board.fx-defeat .zone[data-zone^=warzone],.board.fx-defeat .zone[data-zone^=inside]{animation:defeat-ripple .72s ease-out}.board.fx-score .locationSlot{animation:score-glow .9s ease-out}.board.fx-combat .card.fx-event-card,.board.fx-damage .card.fx-event-card,.board.fx-defeat .card.fx-event-card,.board.fx-score .card.fx-event-card{position:relative;z-index:7;animation:fx-card-focus .9s ease-out}.board.fx-combat .card.fx-event-card{animation:fx-card-lunge 1.6s var(--motion-ease)}.board.fx-combat .card.fx-event-card.fx-attacker{animation-name:fx-card-attack}.board.fx-combat .card.fx-event-card.fx-defender{animation-name:fx-card-defend}@keyframes warzone-impact{0%,to{box-shadow:none}50%{box-shadow:inset 0 0 0 3px #ff8a5994,0 0 24px #e06a454d}}@keyframes damage-pulse{0%,to{filter:none}45%{filter:saturate(1.4) brightness(1.24)}}@keyframes defeat-ripple{0%,to{opacity:1}50%{opacity:.55;box-shadow:inset 0 0 0 2px #e06a45b3}}@keyframes score-glow{0%,to{box-shadow:none}45%{box-shadow:0 0 0 5px #d6e7843d,0 0 28px #d6e78459}}@keyframes fx-card-focus{0%,to{box-shadow:0 0 0 0 transparent}35%{box-shadow:0 0 0 4px #f0cf87cc,0 0 24px #f0b84a6b}}@keyframes fx-card-lunge{0%,to{box-shadow:0 0 0 0 transparent;transform:translate(0) scale(1)}32%{box-shadow:0 0 0 4px #ff9a66e6,0 0 30px #e06a4599;transform:translate(14px) scale(1.06)}48%{box-shadow:0 0 0 7px #fff0bef2,0 0 42px #ff8a59c7;transform:translate(-6px) scale(.98)}58%{transform:translate(4px) scale(1.02)}}@keyframes fx-card-attack{0%,to{box-shadow:0 0 0 0 transparent;transform:translateZ(0) scale(1)}38%{box-shadow:0 0 0 4px #ff9a66e6,0 0 30px #e06a4599;transform:translate3d(var(--fx-travel-x, 56px),var(--fx-travel-y, 0),0) scale(1.1) rotate(2deg)}52%{box-shadow:0 0 0 8px #fff0bef2,0 0 44px #ff8a59d9;transform:translate3d(var(--fx-travel-x, 56px),var(--fx-travel-y, 0),0) scale(.98) rotate(-2deg)}62%{transform:translateZ(0) scale(1.02)}}@keyframes fx-card-defend{0%,to{box-shadow:0 0 0 0 transparent;transform:translateZ(0) scale(1)}38%{transform:translateZ(0) scale(1.01)}52%{box-shadow:0 0 0 8px #fff0bef2,0 0 44px #ff8a59d9;transform:translate3d(var(--fx-travel-x, -18px),var(--fx-travel-y, 0),0) scale(.94) rotate(-3deg)}62%{transform:translateZ(0) scale(1.02)}}.ownerMarker{position:absolute;left:5px;top:5px;z-index:5;padding:3px 5px;border:1px solid currentColor;border-radius:3px;font-size:8px;font-weight:900;line-height:1;letter-spacing:.08em;pointer-events:none;text-shadow:0 1px 1px rgba(0,0,0,.65)}.ownerMarker.self{color:#b9ffff;background:#125556e6}.ownerMarker.opponent{color:#ffe0c6;background:#7e2f1ff0}.card.exhausted{transform:rotate(90deg) scale(.995);transform-origin:center center;transition:transform var(--motion-med) var(--motion-ease)}.card.faceDown{background:#0c0f17}.card.disabled img{filter:grayscale(1) brightness(.58)}.card.disabled{box-shadow:inset 0 0 0 2px #94a3b8b3}.statusBadge{position:absolute;top:5px;left:5px;padding:2px 4px;border-radius:4px;font-size:8px;font-weight:800;letter-spacing:.04em;pointer-events:none}.disabledBadge{color:#f8fafc;background:#334155eb;border:1px solid rgba(203,213,225,.7)}.card .id{position:absolute;bottom:6px;left:6px;font-size:11px;color:#cbd5e1;opacity:.85}.missingImageLabel{position:absolute;top:0;right:0;bottom:0;left:0;display:none;place-items:center;padding:12px;color:#f0cf87;background:repeating-linear-gradient(135deg,rgba(224,106,69,.12) 0 10px,transparent 10px 20px),#29231f;font-size:18px;font-weight:900;letter-spacing:.12em}.card.imageMissing .missingImageLabel{display:grid}.attachOverlay{position:fixed;top:0;right:0;bottom:0;left:0;z-index:900;background:#02060c33;pointer-events:none}.card.attachTarget{outline:2px solid rgba(34,197,94,.7);outline-offset:2px}.card[data-board-target=true]{outline:3px solid rgba(250,204,21,.95);outline-offset:3px;cursor:crosshair}.card[data-board-selected=true]{outline-color:#22c55efa;box-shadow:0 0 0 5px #22c55e38}.boardActionPrompt{position:fixed;z-index:850;left:50%;bottom:20px;transform:translate(-50%);display:flex;align-items:center;gap:12px;max-width:min(90vw,680px);padding:11px 14px;border:1px solid rgba(240,184,74,.82);border-radius:6px;background:#2d231cf7;box-shadow:0 12px 30px #00000061}.boardActionPrompt:before{content:"ACTION MODE";align-self:stretch;display:inline-flex;align-items:center;padding-right:10px;border-right:1px solid rgba(240,184,74,.35);color:#f0cf87;font-size:9px;font-weight:900;letter-spacing:.12em;white-space:nowrap}.boardActionPrompt strong{color:#fff2d1;line-height:1.35}.promptHint{color:#ad9c8a;font-size:10px;white-space:nowrap}.resolutionToast{position:fixed;z-index:1200;top:78px;left:50%;display:flex;align-items:center;gap:10px;max-width:min(560px,calc(100vw - 32px));padding:10px 12px;transform:translate(-50%);border:1px solid #786043;border-radius:6px;color:#fff2d1;background:#2c231dfa;box-shadow:0 12px 28px #0000005c;animation:toast-in var(--motion-fast) var(--motion-ease)}.resolutionToast.success{border-color:#9dbb53bf}.resolutionToast.error{border-color:#e06a45e6;background:#3f221cfa}.resolutionToastIcon{display:inline-flex;width:22px;height:22px;align-items:center;justify-content:center;border:1px solid currentColor;border-radius:50%;color:var(--sand);font-weight:900}.resolutionToast.success .resolutionToastIcon{color:#c7df7f}.resolutionToast.error .resolutionToastIcon{color:#ffad83}.resolutionToastClose{margin-left:6px;border:0;color:#c9b9a8;background:transparent;cursor:pointer;font-size:18px;line-height:1}.resolutionToastClose:hover{color:#fff2d1}.gameFxBanner{position:fixed;z-index:1180;top:50%;left:50%;display:grid;gap:2px;min-width:min(360px,calc(100vw - 40px));padding:12px 18px;transform:translate(-50%,-50%) rotate(-2deg);border:3px solid currentColor;background:#171412eb;color:#f0cf87;box-shadow:0 10px #0003,0 18px 42px #00000073;text-align:center;pointer-events:none;animation:fx-burst 1.1s var(--motion-ease) both}.gameFxBanner span{font-size:clamp(20px,4vw,38px);font-weight:950;letter-spacing:.12em;line-height:1}.gameFxBanner small{overflow:hidden;color:#d9c9b8;font-size:11px;text-overflow:ellipsis;white-space:nowrap}.gameFxBanner.combat{color:#ff9a66;background:#4a1f17f0;animation-duration:1.8s}.gameFxBanner.damage{color:#ffcc6b;background:#4b3216f0;animation-duration:2.2s}.gameFxBanner.defeat{color:#e9a18b;background:#3a1f1df0;animation-duration:2.6s}.gameFxBanner.score{color:#d6e784;background:#2e391bf0}.gameFxImpact{position:absolute;top:-24px;right:-24px;bottom:-24px;left:-24px;display:grid;place-items:center;color:#fff0bee6;font-size:72px;line-height:1;opacity:0;animation:impact-flash .72s ease-out both;pointer-events:none}.gameFxDamage{position:relative;z-index:1;color:#ffcc6b;font-size:clamp(28px,5vw,52px);font-weight:950;line-height:.9;text-shadow:0 3px 0 #6e2b1e,0 0 18px rgba(255,138,89,.72);animation:damage-number 1.6s ease-out both}@keyframes damage-number{0%,32%{opacity:0;transform:translateY(10px) scale(.6)}48%{opacity:1;transform:translateY(-2px) scale(1.12)}65%,to{opacity:1;transform:translateY(-8px) scale(1)}}@keyframes impact-flash{0%{opacity:0;transform:scale(.35) rotate(-15deg)}35%{opacity:.9;transform:scale(1.15) rotate(8deg)}to{opacity:0;transform:scale(1.5) rotate(20deg)}}.gearButton{position:fixed;right:14px;bottom:14px;z-index:1250;width:46px;height:46px;border:2px solid #f0cf87;border-radius:50%;color:#f0cf87;background:#3a3029;box-shadow:0 8px 20px #0000006b;cursor:pointer;font-size:22px;transition:transform var(--motion-fast) var(--motion-ease),background var(--motion-fast) ease}.gearButton:hover{background:#53402f;transform:rotate(18deg) scale(1.06)}.settingsModal{width:min(520px,92vw)}.passTurnButton{min-height:48px;min-width:170px;justify-content:center;border:2px solid #f0cf87;color:#fff2d1;background:linear-gradient(135deg,#a84f32,#713326);box-shadow:0 5px #3b211d,0 10px 22px #00000047;font-size:15px;font-weight:900;letter-spacing:.04em;text-transform:uppercase}.passTurnButton:hover{background:linear-gradient(135deg,#c7673f,#8c3d2c);transform:translateY(-1px)}.passTurnIcon{display:inline-flex;margin-right:7px;font-size:22px;line-height:1}.saveGameDisclosure{border-top:1px solid rgba(240,207,135,.2);padding-top:8px}.saveGameDisclosure summary{color:#f0cf87;cursor:pointer;font-weight:800;list-style:"▸  "}.saveGameDisclosure[open] summary{list-style:"▾  "}.deckLoaderHost.modalOnly{margin:0}@keyframes fx-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.72) rotate(-5deg)}18%{opacity:1;transform:translate(-50%,-50%) scale(1.04) rotate(2deg)}78%{opacity:1;transform:translate(-50%,-50%) scale(1) rotate(-2deg)}to{opacity:0;transform:translate(-50%,-50%) scale(.98) rotate(-2deg)}}@keyframes toast-in{0%{opacity:0;transform:translate(-50%,-8px)}to{opacity:1;transform:translate(-50%)}}.stackHost{position:relative;display:inline-block}.stackBehind{position:absolute;right:-22%;left:auto;top:0;width:22%;height:100%;opacity:.95;filter:saturate(.9) brightness(.9)}.card.peek{width:100%;height:100%;border-radius:var(--radius);overflow:hidden}.card.peek img{object-position:right center}.stackTop{position:relative;z-index:1}.card .badges{position:absolute;top:6px;right:6px;display:flex;flex-direction:column;align-items:flex-end;gap:4px;z-index:2}.card .badges .badge{position:static;display:inline-flex;align-items:center;gap:6px;background:#0000008c;border:1px solid var(--border);border-radius:8px;padding:2px 6px;font-size:11px;line-height:1}.card .badge.red{background:#ef4444e6;border-color:#ef4444b3;color:#fff}.card .badge.green{background:#22c55ee6;border-color:#22c55eb3;color:#07130b}.card .badge.black{background:#111827f2;border-color:#334155;color:#e5e7eb}.badgeLabel{font-weight:700;letter-spacing:.2px}.badgeValue{font-variant-numeric:tabular-nums}.card.placeholder{opacity:.25;pointer-events:none}.handDock{position:sticky;bottom:0;background:linear-gradient(180deg,#0d0f1300,#0d0f13bf,#0d0f13 40%);padding-top:12px;margin-top:16px}.handRow{display:flex;gap:6px;padding:6px 0 10px;overflow-x:auto}.ctx,.contextMenu{position:fixed;z-index:1000;background:#0f141b;border:1px solid var(--border);border-radius:8px;min-width:140px;box-shadow:0 10px 30px #00000059}.ctx-item,.contextMenu .item{padding:8px 10px;cursor:pointer;white-space:nowrap;-webkit-user-select:none;user-select:none}.ctx-item:hover,.contextMenu .item:hover{background:#151c27}.modalBackdrop{position:fixed;top:0;right:0;bottom:0;left:0;display:grid;place-items:center;background:#00000080;z-index:1100}.modal{background:linear-gradient(135deg,rgba(216,179,106,.05),transparent 35%),#292421;border:1px solid #6e5848;border-radius:12px;padding:12px;min-width:360px;max-width:90vw;max-height:90vh;overflow:auto;box-shadow:0 18px 40px #00000073,0 4px 14px #00000059}.modal.large{min-width:720px}.qaReportModal{width:min(520px,90vw)}.modalTitle{font-weight:600;margin-bottom:8px;color:#f0cf87;letter-spacing:.02em}.qaFeedbackPanel{margin-bottom:12px;padding:10px;border:1px solid #3c526d;border-radius:10px;background:#172435ad}.qaProgressSummary{margin:4px 0 6px;color:#c9ddf8}.qaProgressByType{display:flex;flex-wrap:wrap;gap:3px 7px;margin-bottom:8px;font-size:11px;color:var(--muted)}.qaTextArea{box-sizing:border-box;width:100%;margin:5px 0 8px;resize:vertical;color:inherit;background:#02060c8c;border:1px solid var(--border);border-radius:6px;padding:8px;font:inherit;line-height:1.4}.qaTextArea:focus{outline:2px solid var(--accent, #6ca8ff);outline-offset:1px}.qaFeedbackText{min-height:140px}.qaFilters{gap:6px;margin-bottom:6px}.qaSearch{box-sizing:border-box;width:100%;margin-bottom:6px;padding:6px 8px;color:inherit;background:#02060c8c;border:1px solid var(--border);border-radius:6px;font:inherit}.qaFilters select{min-width:0;flex:1 1 100px}.qaDeckFilter{display:block;margin-bottom:6px;color:#c9ddf8}.qaCardList{max-height:150px;overflow:auto;border-top:1px solid rgba(148,163,184,.35)}.qaCardListRow{display:flex;align-items:baseline;justify-content:space-between;gap:6px;padding:4px 1px;border-bottom:1px solid rgba(148,163,184,.16);font-size:11px}.qaCardIdentity{min-width:0}.qaDeckMark{margin-left:3px;color:#f0cc7b;font-size:10px}.qaStatus{font-size:10px;max-width:84px}.qaCardActions{display:flex;flex:0 0 auto;align-items:center;gap:4px}.qaCreateInHand{padding:2px 5px;font-size:10px;white-space:nowrap}.qaStatus.passed{color:#86efac}.qaStatus.issue{color:#fda4af}.qaStatus.untested{color:var(--muted)}kbd{display:inline-block;min-width:1.2em;padding:0 6px;border-radius:6px;border:1px solid #334155;background:#0f141b;font-size:12px;line-height:1.6;text-align:center;box-shadow:0 1px #ffffff0f inset}.discardGrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(var(--card-w),1fr));gap:8px;max-height:60vh;overflow:auto}.discardCell{display:flex;justify-content:center}.zoomPreview{position:fixed;right:12px;bottom:80px;width:calc(var(--card-w) * 4);height:calc(var(--card-h) * 4);border:1px solid var(--border);border-radius:12px;background:#0a0f15;z-index:1200;pointer-events:none;display:flex;align-items:center;justify-content:center}.zoomPreview.landscape{width:calc(var(--card-h) * 4 * 1.4);height:calc(var(--card-h) * 4)}.zoomPreview img{width:100%;height:100%;object-fit:cover}.zoomCardMeta{position:absolute;right:8px;bottom:8px;left:8px;padding:5px 7px;border-radius:6px;background:#02060cdb;color:#f8fafc;font-size:12px;text-align:center}.zoomFallback{font-size:12px;color:var(--muted)}.zone[data-zone=heroReserve]{flex-wrap:nowrap}.cardChoice{-webkit-appearance:none;-moz-appearance:none;appearance:none;display:grid;gap:4px;min-width:0;padding:4px;color:inherit;background:transparent;border:2px solid transparent;border-radius:10px;cursor:pointer}.cardChoice:hover,.cardChoice.selected{border-color:var(--accent, #6ca8ff);background:color-mix(in srgb,var(--accent, #6ca8ff) 12%,transparent)}.cardChoice>.card{pointer-events:none}.zone-single-landscape{min-width:calc(var(--card-h) * 1.4 + 12px);max-width:calc(var(--card-h) * 1.4 + 12px);flex-wrap:nowrap}.zone-compact-landscape{width:calc(var(--card-h) * 1.4 + 12px)}.card.placeholder.location,.card.faceDown.location{width:calc(var(--card-h) * 1.4);height:var(--card-h)}.contextMenu{position:fixed;top:0;left:0;background:#2b231efa;border:1px solid #725640;border-radius:8px;min-width:180px;padding:6px 0;box-shadow:0 10px 25px #00000059,0 2px 10px #00000040;z-index:1000}.contextMenu .item{padding:8px 12px;cursor:pointer;-webkit-user-select:none;user-select:none;white-space:nowrap}.contextMenu .item:hover{background:#f0b84a24;color:#fff2d1}.contextMenu .sep{height:1px;background:#5b493c;margin:4px 0}.inlinePanel{margin:8px 0 12px;background:#2b231ee6;border:1px solid #5f4a3d;border-radius:12px;padding:10px}.inlinePanelHeader{display:flex;align-items:baseline;justify-content:space-between;margin-bottom:6px}.handRow.dropTarget{outline:2px dashed #64748b;outline-offset:3px}@keyframes shimmer{0%{background-position:200% 0}to{background-position:-200% 0}}@media (max-width: 1500px){.app{grid-template-columns:280px minmax(0,1fr) 280px}.app.hide-left{grid-template-columns:0 minmax(0,1fr) 280px}.app.hide-right{grid-template-columns:280px minmax(0,1fr) 0}.sidebar,.sidebar-right{padding:10px}.sharedBlock{grid-template-columns:132px 1fr;gap:10px}.locationsGrid{gap:8px}}@media (max-width: 1120px){.app{grid-template-columns:220px minmax(0,1fr) 220px}.app.hide-left{grid-template-columns:0 minmax(0,1fr) 220px}.app.hide-right{grid-template-columns:220px minmax(0,1fr) 0}.tableStatusBrand{min-width:130px}.tableStatusEyebrow{display:none}.locationsGrid{grid-template-columns:1fr}.locationCol{display:grid;grid-template-columns:minmax(160px,.8fr) 1fr 1fr;align-items:start;gap:8px}.locationColHeader{grid-row:1;grid-column:1 / -1;margin-bottom:0}.locationCol .zoneWrap{min-width:0}}@media (max-width: 760px){.app{display:block;overflow:auto}.sidebar,.sidebar-right{position:fixed;top:0;bottom:0;z-index:100;width:min(88vw,320px);box-shadow:0 20px 50px #00000080}.sidebar{left:0}.sidebar-right{right:0}.app.hide-left .sidebar,.app.hide-right .sidebar-right{display:none}.board{min-height:100vh;padding:8px}.tableStatusBar{margin:-8px -8px 8px;padding:8px 10px}.tableStatusBrand{min-width:0}.tableStatusBrand strong{max-width:110px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.tableStatusTurn{justify-content:flex-start;gap:4px}.tableStatusTurn strong{font-size:13px}.tableStatusRound,.tableStatusPhase{font-size:10px}.tableStatusConnection span:last-child{display:none}.sharedBlock,.locationsGrid{grid-template-columns:1fr}.locationCol{display:block}.boardActionPrompt{right:8px;bottom:8px;left:8px;max-width:none;transform:none;flex-wrap:wrap}.boardActionPrompt:before{width:100%;padding:0 0 5px;border-right:0;border-bottom:1px solid rgba(240,184,74,.35)}.resolutionToast{top:70px}}
