.bonus-stars-hud{display:inline-flex;align-items:center;margin-left:12px;color:#e9c56a;font-weight:800;letter-spacing:.08em;white-space:nowrap;text-shadow:0 2px 8px #1c231b}
.bonus-stars-hud.won{color:#c5f477}
.bonus-stars-hud[hidden]{display:none}
.route-line{flex-wrap:wrap;row-gap:5px}
.garage-line b,.phone-balance b{min-width:0;overflow-wrap:anywhere;font-size:clamp(8px,2vw,10px);font-variant-numeric:tabular-nums}
.phone-balance{flex-wrap:wrap}.phone-balance b{max-width:100%;text-align:right}
.bonus-overlay{position:fixed;inset:0;z-index:10000;display:grid;place-items:center;padding:14px;background:rgba(5,11,13,.88);backdrop-filter:blur(7px)}
.bonus-dialog{position:relative;overscroll-behavior:contain;width:min(900px,100%);max-height: calc(100vh - 28px);max-height: calc(100dvh - 28px);overflow:auto;border:1px solid #bda46d;border-radius:20px;background:#101e20;color:#f4eedc;box-shadow:0 30px 80px #0009;font-family:system-ui,sans-serif}
.bonus-dialog *{box-sizing:border-box}
.bonus-dialog h2{font-size:clamp(2.4rem,5.6vw,4.6rem);line-height:1.08;margin:.5em 0}
.bonus-dialog p{line-height:1.5;color:#d6ded6}
.bonus-eyebrow{display:block;font-size:1rem;font-weight:800;letter-spacing:.16em;color:#e2c574}
.bonus-close{position:absolute;z-index:3;right:13px;top:10px;width:44px;height:44px;border:1px solid #fff8;border-radius:50%;background:#14262ad9;color:white;font-size:2.1rem;cursor:pointer;touch-action:manipulation}
.bonus-primary,.bonus-touch button{border:1px solid #f6d784;border-radius:11px;padding:12px 21px;background:#dfbd6c;color:#152422;font:800 1.4rem system-ui,sans-serif;cursor:pointer;box-shadow:0 4px 0 #826b40}
.bonus-primary:hover,.bonus-touch button:hover{background:#f5d78a}
.bonus-primary:disabled{opacity:.55;cursor:default}
.bonus-portal{display:grid;grid-template-columns:1.1fr .9fr;min-height:440px}
.bonus-portal-photo{background:linear-gradient(90deg,transparent 70%,#101e20 100%),url('assets/bonus/stone-gate.png') center/cover}
.bonus-copy{display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:40px}
.bonus-copy .bonus-primary{margin-top:15px}
.bonus-catch-layout{padding:22px}
.bonus-catch-head{text-align:center}
.bonus-catch-head h2{margin:.3em 0}
.bonus-catch-head p{margin:.4em auto 1em;max-width:650px}
#bonusCounter{display:inline-block;margin:0 0 12px;padding:7px 18px;border:1px solid #c8ae6c;border-radius:999px;color:#f5da89;font-size:1.8rem;font-variant-numeric:tabular-nums}
.bonus-field{position:relative;height: min(50vh,380px);height: min(50dvh,380px);min-height:260px;overflow:hidden;border:2px solid #817e55;border-radius:16px;background:linear-gradient(#152a2a55,#091412ae),url('assets/bonus/stone-gate.png') center 48%/cover;touch-action:none}
.bonus-field:after{content:'';position:absolute;inset:auto 0 0;height:10%;background:linear-gradient(transparent,#112014);pointer-events:none}
/* П.34 (20260928): высота бокса 95→108 — отношение 2/3, как у .avatar в основной
   игре, чтобы проценты посадки кепки из hats-fit.css переносились 1:1. */
.bonus-catcher{position:absolute;z-index:2;bottom:1%;left:50%;width:72px;height:108px;transform:translateX(-50%);filter:drop-shadow(0 4px 6px #000a)}
/* П.34: посадка кепки — ЕДИНАЯ геометрия из hats-fit.css (файл под SHA-замком,
   числа скопированы как референс): left 33.203125%, top -2.473958% + смещение
   головы спрайта, width 23.4375%, height 10.091146%. Ассет задаёт JS через
   --cap-asset (кепка игрока, fallback — убор раввина, как раньше). */
.bonus-catcher:before{content:'';position:absolute;z-index:2;inset:auto;left:33.203125%;top:calc(-2.473958% + var(--cap-head-offset-y,0%));width:23.4375%;height:10.091146%;margin:0;background-image:var(--cap-asset,url('assets/cap-rabbi-v4.png'));background-repeat:no-repeat;background-size:100% 100%;background-position:center;transform:none;pointer-events:none}
/* Смещения головы по стадии спрайта — копия селекторов hats-fit.css (референс). */
.bonus-catcher[data-body-sprite="nikita-sprite-v2.png"],.bonus-catcher[data-body-sprite="nikita-balanced-medium-v4.png"]{--cap-head-offset-y:0%}
.bonus-catcher[data-body-sprite="nikita-legs-medium-v4.png"],.bonus-catcher[data-body-sprite="nikita-upper-medium-v4.png"],.bonus-catcher[data-body-sprite="nikita-upper-medium-legs-strong-v4.png"]{--cap-head-offset-y:.78%}
.bonus-catcher[data-body-sprite="nikita-legs-strong-v4.png"]{--cap-head-offset-y:.52%}
.bonus-catcher[data-body-sprite="nikita-upper-v3.png"],.bonus-catcher[data-body-sprite="nikita-upper-strong-legs-medium-v4.png"]{--cap-head-offset-y:-.26%}
.bonus-catcher[data-body-sprite="nikita-balanced-v3.png"]{--cap-head-offset-y:-.78%}
.bonus-catcher:after{content:'';position:absolute;left:0;right:0;bottom:0;height:22px;border:5px solid #ecc978;border-top:0;border-radius:0 0 50% 50%;background:#4c3921c9}
.bonus-catcher img{display:block;width:100%;height:100%;object-fit:contain}
.bonus-coin{position:absolute;z-index:1;width:42px;aspect-ratio:1;transform:translate(-50%,-50%);border:3px solid #e6ebdc;border-radius:50%;background:#bec4bc url('assets/bonus/shekel-reference.png') center/110% 110%;box-shadow:0 2px 5px #0009,0 0 10px #faf6d38c}
.bonus-touch{display:flex;justify-content:center;gap:20px;margin-top:12px}
.bonus-touch button{min-width:86px;touch-action:none}
.bonus-award,.bonus-factory,.bonus-island{text-align:center;padding:clamp(24px,5vw,50px)}
.bonus-laurel{margin:10px auto;color:#f0d586;font-size:7rem;text-shadow:0 0 35px #d3af62}
.bonus-balance{display:grid;gap:4px;max-width:700px;margin:25px auto;padding:18px;border:1px solid #d3b76b;border-radius:14px;background:#1b302a}
.bonus-balance small{color:#d5ca9d;letter-spacing:.15em}
.bonus-balance strong{display:block;max-width:100%;overflow-wrap:anywhere;font-size:clamp(1.8rem,6.9vw,4.5rem);font-variant-numeric:tabular-nums;line-height:1.1;color:#ffe09b}
.bonus-factory-art{display:flex;justify-content:center;align-items:end;gap:12px;height:145px;margin:18px auto;color:#e9d08b;text-shadow:0 10px 10px #0008}
.bonus-factory-art span:nth-child(1){font-size:11.2rem;line-height:1}.bonus-factory-art span:nth-child(2){font-size:7rem}.bonus-factory-art span:nth-child(3){font-size:5.6rem}.bonus-factory-art span:nth-child(4){font-size:5.6rem}
.bonus-factory-art span{animation:bonus-build .7s cubic-bezier(.18,.82,.3,1.25) both}.bonus-factory-art span:nth-child(2){animation-delay:.2s}.bonus-factory-art span:nth-child(3){animation-delay:.4s}.bonus-factory-art span:nth-child(4){animation-delay:.6s}@keyframes bonus-build{from{opacity:0;transform:translateY(65px) scale(.75)}to{opacity:1;transform:translateY(0) scale(1)}}
.bonus-road{position:relative;height:clamp(240px,36vw,330px);overflow:hidden;margin:22px 0;border:3px solid #b08b6e;border-radius:18px;background:#85576c url('assets/bonus/island-sunset.svg') center/cover;box-shadow:inset 0 0 32px #201d38aa,0 14px 28px #0006;isolation:isolate}
.bonus-road:before{content:'';position:absolute;inset:0;background:linear-gradient(90deg,#171e3829,transparent 40%,#151d3733);pointer-events:none}
.bonus-road:after{content:'';position:absolute;z-index:3;inset:auto 0 0;height:17%;background:linear-gradient(transparent,#151e2b83);pointer-events:none}
.bonus-car{position:absolute;z-index:2;left:30%;bottom:-5%;width:62%;max-width:540px;filter:drop-shadow(0 15px 7px #1117229c) sepia(.1) saturate(.9);transition:transform 2.4s cubic-bezier(.2,.7,.5,1)}
.bonus-car img{width:100%;display:block}
.bonus-car.departing{transform:translateX(-135vw) scale(.72)}
.bonus-driver{position:absolute;z-index:3;left:18%;bottom:12%;width:10%;max-width:72px;filter:drop-shadow(0 8px 5px #111a29a8);transition:transform .8s ease,opacity .8s ease}
.bonus-driver img{width:100%;height:130px;object-fit:contain;display:block}
.bonus-driver.boarding{transform:translate(28vw,-10px) scale(.5);opacity:0}
.bonus-ring-layout{text-align:center;padding:clamp(16px,3vw,32px);background:radial-gradient(ellipse at 50% 26%,#233e43 0,#101e20 70%)}
.bonus-ring-layout h2{margin:.25em 0}.bonus-ring-layout p{max-width:690px;margin:8px auto 14px}
.bonus-ring-status{display:flex;justify-content:space-between;gap:8px;margin:0 auto 10px;max-width:750px;color:#ffe5a0;font-weight:900;font-size:1.5rem;font-variant-numeric:tabular-nums}
.bonus-status-pill{min-width:85px;padding:5px 11px;border:1px solid #c39c61;border-radius:100px;background:#12262bcf;box-shadow:inset 0 1px #fff2}
.bonus-ring{position:relative;height:clamp(270px,39vw,345px);max-width:750px;margin:auto;overflow:hidden;border:8px solid #8b3134;border-radius:17px;background:#253447 url('assets/bonus/ring-arena.svg') center/cover;box-shadow:inset 0 0 0 3px #e2bd7f,0 13px 30px #0009;isolation:isolate}
.bonus-ring:before{content:'';position:absolute;z-index:1;inset:34% 0 auto;height:30%;border-top:5px solid #d0c6af;border-bottom:5px solid #c4bbaa;box-shadow:0 4px 0 #7e2a31,0 58px 0 #872f35;opacity:.85;pointer-events:none}
.bonus-ring-corner{position:absolute;z-index:4;top:28%;bottom:0;width:15px;background:linear-gradient(90deg,#6c202c,#d15d5b,#6c202c);box-shadow:0 0 0 2px #531e27}.bonus-ring-corner-left{left:0}.bonus-ring-corner-right{right:0}
.bonus-ring-ropes{position:absolute;z-index:5;inset:auto 0 13%;height:5px;background:#e6d9bf;box-shadow:0 5px 0 #7c333a,0 -71px 0 #e6d9bf,0 -66px 0 #7c333a;opacity:.84;pointer-events:none}
.bonus-ring-fighter{position:absolute;z-index:3;bottom:9%;width:92px;height:212px;transform:translateX(-50%);transition:left .18s ease,filter .14s ease;filter:drop-shadow(0 6px 3px #08111b9c)}
.bonus-ring-nikita{left:34%;--skin:#c9936e;--skin-dark:#9b654f;--cloth:#e7dfd1;--cloth-dark:#a0aaa8;--shorts:#274c66;--glove:#3a9ec1}
.bonus-ring-rabbi{left:72%;--skin:#d4a486;--skin-dark:#936350;--cloth:#252b36;--cloth-dark:#131823;--shorts:#8d303d;--glove:#d24e4b;transform:translateX(-50%) scaleX(-1)}
.fighter-shadow{position:absolute;bottom:0;left:8%;width:90%;height:14px;border-radius:50%;background:#081b26a6}
.fighter-leg{position:absolute;bottom:6px;width:25px;height:72px;border:3px solid #182430;border-radius:8px 10px 7px 7px;background:linear-gradient(90deg,var(--shorts),#182a3b)}.fighter-leg:after{content:'';position:absolute;bottom:-5px;left:-7px;width:35px;height:15px;border:3px solid #17212a;border-radius:9px 5px 3px 4px;background:#ede7d9}.fighter-leg-back{left:46px;transform:rotate(-8deg);transform-origin:top}.fighter-leg-front{left:22px;transform:rotate(7deg);transform-origin:top}
.fighter-body{position:absolute;z-index:2;left:22px;top:75px;width:55px;height:79px;border:3px solid #18232c;border-radius:20px 20px 10px 12px;background:linear-gradient(110deg,var(--cloth-dark),var(--cloth) 45%,var(--cloth-dark));transform:rotate(-5deg)}.fighter-body:after{content:'';position:absolute;left:4px;right:4px;bottom:1px;height:27px;border-top:3px solid #17212b;background:var(--shorts);clip-path:polygon(0 0,100% 0,90% 100%,10% 100%)}
.fighter-neck{position:absolute;z-index:3;left:41px;top:66px;width:21px;height:20px;border:2px solid #18232c;background:var(--skin-dark)}
.fighter-head{position:absolute;z-index:4;left:28px;top:16px;width:53px;height:61px;border:3px solid #24252b;border-radius:46% 44% 48% 44%;background:linear-gradient(110deg,var(--skin-dark),var(--skin) 35%,#e8b18e 75%,var(--skin-dark));transform:rotate(-4deg)}
.fighter-ear{position:absolute;top:26px;left:-9px;width:12px;height:18px;border:2px solid #28252a;border-radius:50%;background:var(--skin)}
.fighter-hair{position:absolute;top:-3px;left:0;width:46px;height:19px;border-radius:80% 40% 15% 0;background:#2c2829;transform:rotate(-5deg)}
.fighter-brow{position:absolute;top:20px;right:5px;width:17px;height:5px;border-radius:50%;background:#33282a;transform:rotate(-12deg)}
.fighter-eye{position:absolute;top:29px;right:9px;width:6px;height:6px;border-radius:50%;background:#182129;box-shadow:1px 0 0 2px #e1b28e}
.fighter-nose{position:absolute;top:31px;right:-5px;width:9px;height:12px;border-radius:30% 70% 60% 40%;background:var(--skin-dark)}
.fighter-beard{position:absolute;bottom:-1px;right:1px;width:29px;height:19px;border-radius:2px 3px 18px 12px;background:#342b2b;clip-path:polygon(22% 0,100% 0,90% 75%,51% 100%,0 61%)}
.bonus-ring-rabbi .fighter-hair{height:12px;background:#343034}.bonus-ring-rabbi .fighter-beard{width:39px;height:29px;background:#302b2c;clip-path:polygon(10% 0,100% 0,93% 68%,64% 100%,10% 83%,0 29%)}
.fighter-hat{position:absolute;z-index:2;top:-15px;left:-13px;width:77px;height:12px;border:2px solid #202026;border-radius:50%;background:#25262b;box-shadow:0 -11px 0 -2px #29282d}
.fighter-arm{position:absolute;z-index:5;top:85px;left:55px;width:22px;height:57px;border:3px solid #202530;border-radius:13px;background:linear-gradient(90deg,var(--cloth-dark),var(--cloth));transform:rotate(-35deg);transform-origin:11px 9px;transition:transform .16s ease}.fighter-arm i{position:absolute;bottom:-15px;left:-7px;width:34px;height:35px;border:3px solid #242632;border-radius:46% 46% 42% 42%;background:radial-gradient(circle at 35% 25%,#fff4,var(--glove) 55%,#182a32 100%);box-shadow:inset -3px -3px #0003}.fighter-arm-back{z-index:1;left:13px;transform:rotate(34deg)}
.bonus-ring-nikita.blocking .fighter-arm-front{transform:rotate(-105deg)}.bonus-ring-nikita.blocking .fighter-arm-back{transform:rotate(95deg)}
.bonus-ring-nikita.punching .fighter-arm-front{animation:bonus-punch .48s ease-out both}.bonus-ring-rabbi.winding .fighter-arm-front{transform:rotate(28deg)}.bonus-ring-rabbi.striking .fighter-arm-front{animation:bonus-punch .32s ease-out both}
.bonus-ring-fighter.stepping{animation:bonus-step .23s ease-out}.bonus-ring-nikita.hit{animation:bonus-hit .4s ease-out}.bonus-ring-rabbi.staggered{filter:brightness(1.8) drop-shadow(0 0 14px #ffe3a7)}
@keyframes bonus-punch{40%{transform:rotate(-105deg) translateY(-24px)}100%{transform:rotate(-50deg)}}@keyframes bonus-step{50%{margin-bottom:7px}}@keyframes bonus-hit{35%{filter:brightness(2.1) drop-shadow(0 0 13px #ff6961);rotate:-9deg}100%{rotate:0deg}}
.bonus-ring-cue{position:absolute;z-index:7;top:10px;left:50%;transform:translateX(-50%);min-width:210px;max-width:86%;padding:7px 14px;border:1px solid #d5b774;border-radius:100px;background:#101d2ce9;color:#ffe4a0;font-weight:900;box-shadow:0 3px 10px #0009}
.bonus-ring-impact{position:absolute;z-index:6;left:54%;top:44%;font-size:5.6rem;color:#fff3b0;text-shadow:0 0 20px #ffb953;opacity:0;pointer-events:none}
.bonus-ring[data-attack] .bonus-ring-cue{border-color:#ff8a78;color:#fff0df;animation:bonus-alert .35s ease-in-out infinite alternate}.bonus-ring[data-attack=left]{box-shadow:inset 65px 0 72px #ed5a4c55,0 13px 30px #0009}.bonus-ring[data-attack=right]{box-shadow:inset -65px 0 72px #ed5a4c55,0 13px 30px #0009}
.bonus-ring[data-feedback=counter] .bonus-ring-impact,.bonus-ring[data-feedback=hit] .bonus-ring-impact{animation:bonus-spark .55s ease-out}.bonus-ring[data-feedback=counter] .bonus-ring-cue{background:#24635a}.bonus-ring[data-feedback=block] .bonus-ring-cue,.bonus-ring[data-feedback=dodge] .bonus-ring-cue{background:#315c6a}.bonus-ring[data-feedback=hit] .bonus-ring-cue{background:#8b3439}
@keyframes bonus-alert{to{transform:translateX(-50%) scale(1.04)}}@keyframes bonus-spark{25%{opacity:1;transform:scale(1.5) rotate(20deg)}100%{opacity:0;transform:scale(2.2) rotate(40deg)}}
.bonus-ring-controls{display:flex;justify-content:center;flex-wrap:wrap;gap:8px;margin:12px auto 0}.bonus-ring-controls button{min-width:95px;min-height:48px;border:1px solid #e6d18b;border-radius:9px;background:linear-gradient(#38575e,#233a40);color:#fff5d3;font:800 1.4rem system-ui;touch-action:manipulation;cursor:pointer;box-shadow:0 4px 0 #152a2c}.bonus-ring-controls button:active{transform:translateY(3px);box-shadow:0 1px 0 #152a2c}
@media(max-width:650px){.topbar{flex-wrap:wrap}.top-actions{width:100%;justify-content:flex-start}.bonus-portal{grid-template-columns:1fr}.bonus-portal-photo{height:220px;background-image:linear-gradient(0deg,#101e20,transparent 40%),url('assets/bonus/stone-gate.png')}.bonus-copy{padding:8px 22px 26px}.bonus-field{height: 45vh;height: 45dvh}.bonus-road{height:240px}.bonus-car{left:22%;bottom:1%;width:80%}.bonus-driver{left:9%;width:15%;bottom:11%}.bonus-driver.boarding{transform:translate(36vw,-10px) scale(.5)}.bonus-ring{height:270px}.bonus-ring-fighter{scale:.8;transform-origin:bottom center}.bonus-ring-controls{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}.bonus-ring-controls button{min-width:0}.bonus-ring-cue{font-size:1.2rem;max-width:92%;min-width:0;width:max-content}}
@media(prefers-reduced-motion:reduce){.bonus-ring *,.bonus-road *{animation-duration:.01ms!important;transition-duration:.01ms!important}}
/* Grand tour / underground club art pass. All scene detail remains local and deterministic. */
.bonus-dialog{border-radius:8px;border:2px solid #c9aa76;background:#121e29;box-shadow:0 24px 90px #000c,inset 0 0 0 4px #192e39}
.bonus-ring-layout{background:linear-gradient(145deg,#253944,#142330 58%,#302b32)}
.bonus-ring-layout h2{font-family:Impact,'Arial Narrow',sans-serif;letter-spacing:.045em;text-transform:uppercase;color:#ffebbd;text-shadow:3px 3px #121d2a}
.bonus-ring-layout>.bonus-eyebrow{color:#efbc72}.bonus-ring-layout>p{font-size:1.2rem;max-width:670px}
.bonus-ring{height:clamp(320px,46vw,420px);max-width:800px;border:5px solid #7c4146;border-radius:4px;background-image:url('assets/bonus/ring-club-deluxe.svg');box-shadow:0 0 0 2px #ceae78,inset 0 0 70px #07152255,0 15px 30px #0008}
.bonus-ring:before{top:48%;height:24%;border-color:#d3cfbb;box-shadow:0 3px #76363b,0 42px #913b44;opacity:.8}
.bonus-ring-corner{top:44%;width:20px;background:linear-gradient(90deg,#582b35,#d37a71 42%,#923c47 70%,#392632);border:2px solid #222932;border-radius:4px;box-shadow:0 9px #422837}
.bonus-ring-ropes{bottom:10%;height:6px;box-shadow:0 4px #76323f,0 -60px #e6d9bf,0 -56px #76323f;opacity:.82}
.bonus-ring-fighter{bottom:9%;height:212px;scale:1.1;filter:drop-shadow(4px 7px 1px #10223099)}
.bonus-ring-nikita{--cloth:#e6d9b5;--cloth-dark:#777f79;--shorts:#285c7b;--glove:#449cae}
.bonus-ring-rabbi{--cloth:#41454a;--cloth-dark:#171e2c;--shorts:#773b48;--glove:#bb5048}
.fighter-body{box-shadow:inset 4px 0 #ffffff15,inset -6px 0 #0004;border-radius:15px 20px 8px 8px}
.fighter-body:before{content:'';position:absolute;left:10px;top:18px;width:26px;height:28px;border-top:2px solid #ffffff35;border-bottom:2px solid #0003;transform:skewY(-7deg)}
.fighter-leg{background:linear-gradient(90deg,#172b3a,var(--shorts) 43%,#304957 60%,#172937);box-shadow:inset 3px 0 #ffffff16}
.fighter-arm i{border-radius:12px 15px 11px 9px;box-shadow:inset 3px 3px #ffffff29,inset -5px -5px #0004,0 2px #141d29}.fighter-arm i:after{content:'';position:absolute;left:4px;right:3px;bottom:2px;height:5px;border-top:2px solid #eee0b7;border-bottom:2px solid #181f2b}
.fighter-head{box-shadow:inset 3px 2px #efc19c88,inset -5px -4px #513e3d55}.fighter-brow{height:4px}.fighter-eye{height:4px;width:5px}.fighter-shadow{width:120%;left:-7%;height:12px;filter:blur(2px)}
.bonus-fighter-label{position:absolute;z-index:6;bottom:10px;color:#f3dfb9;font:900 16.8px monospace;letter-spacing:2px;text-shadow:1px 2px #121a23;background:#152734dc;border-left:3px solid #4595af;padding:5px 12px;min-width:110px;text-align:left}
.bonus-fighter-label small{display:block;color:#9caebb;font-size:11.2px;letter-spacing:1px;margin-top:2px}.bonus-fighter-label-left{left:20px}.bonus-fighter-label-right{right:20px;border-color:#d16f5d;text-align:right}
.bonus-ring-cue{top:18%;border-radius:3px;text-transform:uppercase;font-size:1.3rem;letter-spacing:.035em;background:#111f2fed;padding:8px 16px}
.bonus-status-pill{border-radius:3px;background:linear-gradient(#172b37,#101c28);font-size:1.2rem}.bonus-status-pill:last-child{color:#ffd57c;letter-spacing:5px}
.bonus-ring-controls button{border-radius:4px;border-color:#a6a59a;background:linear-gradient(#456170,#21333f);font-size:1.3rem}.bonus-ring-controls button[data-ring=punch]{background:linear-gradient(#a66d49,#69422f);border-color:#dfb578}
.bonus-island{background:radial-gradient(ellipse at top,#3d4655,#152633 65%);padding:clamp(18px,3vw,32px)}
.bonus-island h2{font-family:Georgia,serif;font-weight:400;letter-spacing:.03em;color:#ffe4b9}.bonus-island>p{max-width:660px;margin:12px auto}
.bonus-finale-ticket{display:flex;justify-content:space-between;align-items:center;text-align:left;gap:12px;max-width:770px;margin:22px auto 0;padding:12px 17px;border:1px solid #aa9571;background:#10212b;color:#ead4a8;font:700 15.4px monospace;letter-spacing:1px}.bonus-finale-ticket small{display:block;font:12.6px monospace;letter-spacing:1px;color:#97a9aa;margin-top:5px}.bonus-finale-ticket b{font-size:26.6px;white-space:nowrap;color:#ffd48b}
.bonus-road{height:clamp(290px,41vw,380px);border-radius:4px;border-width:1px;background-image:url('assets/bonus/island-grand-tour.svg');margin-top:14px}
.bonus-coast-label{position:absolute;top:17px;left:19px;text-align:left;color:#ffe2b8;font:700 16.8px monospace;letter-spacing:3px;text-shadow:0 2px #292d42}.bonus-coast-label small{display:block;font-size:11.2px;letter-spacing:1px;margin-top:7px;color:#e6baa0}
.bonus-car{bottom:-6%;left:28%;width:66%;max-width:600px;transition:transform 5s cubic-bezier(.45,.02,.75,.6);z-index:3}
.bonus-car.departing{transform:translateX(-125vw) scale(.92)}
.bonus-driver{bottom:10%;left:19%;z-index:4}.bonus-driver.boarding{transform:translate(150px,-12px) scale(.6)}
.bonus-road-sign{position:absolute;right:13px;top:47%;padding:7px 9px;background:#25473f;border:2px solid #c7ceb0;border-radius:3px;font:11.2px monospace;color:#edf1d2;letter-spacing:1px;transform:rotate(-2deg)}.bonus-road-sign b{display:block;margin-top:4px}.bonus-road-sign:after{content:'';position:absolute;top:100%;left:48%;width:4px;height:54px;background:#778889}
.bonus-headlight{position:absolute;z-index:2;bottom:12%;left:0;width:43%;height:24%;background:linear-gradient(90deg,#ffe6ac00,#ffe8ad66);clip-path:polygon(0 0,100% 55%,100% 75%,0 100%);opacity:0;transition:opacity .7s}.engine-on .bonus-headlight{opacity:1}.cruising .bonus-headlight{opacity:0;transition:opacity 1s}
.bonus-finale-title{position:absolute;z-index:6;inset:0;display:flex;flex-direction:column;justify-content:center;gap:14px;background:#1725376b;color:#ffe3b2;font:clamp(22.4px,4.2vw,39.2px) Georgia,serif;letter-spacing:.08em;opacity:0;transition:opacity 1.2s;padding:20px;text-shadow:0 2px 10px #0f1831}.bonus-finale-title small{font:12.6px monospace;letter-spacing:3px}.arrived .bonus-finale-title{opacity:1}
.bonus-tour-steps{display:flex;justify-content:space-between;gap:8px;color:#6d848e;font:12.6px monospace;letter-spacing:1px}.bonus-tour-steps span{border-top:2px solid #3d515b;flex:1;padding:10px 0}.bonus-tour-steps .active{color:#f2d08e;border-color:#d6ac71}
.bonus-portal-photo{box-shadow:inset 0 0 70px #071919}.bonus-field{border-radius:4px;border-color:#bea36f}.bonus-laurel{font-size:clamp(3.9rem,14vw,7rem)}
@media(max-width:650px){.bonus-ring-layout{padding:15px 11px}.bonus-ring{height:320px}.bonus-ring-fighter{scale:.88}.bonus-ring-status{gap:5px}.bonus-status-pill{min-width:0;padding:6px;font-size:1.1rem}.bonus-status-pill:last-child{letter-spacing:2px}.bonus-fighter-label{min-width:90px;font-size:14px;bottom:7px}.bonus-fighter-label-left{left:9px}.bonus-fighter-label-right{right:9px}.bonus-ring-cue{top:20%;font-size:1rem}.bonus-road{height:290px}.bonus-car{width:88%;left:18%;bottom:0}.bonus-driver{left:10%;bottom:12%;width:15%}.bonus-driver.boarding{transform:translate(95px,-10px) scale(.6)}.bonus-finale-ticket{padding:10px;font-size:11.2px;gap:6px}.bonus-finale-ticket small{font-size:9.8px;letter-spacing:0}.bonus-finale-ticket b{font-size:19.6px}.bonus-tour-steps{font-size:9.8px;letter-spacing:0}.bonus-road-sign{font-size:9.8px;top:42%}}
.bonus-friends{display:none;grid-template-columns:repeat(3,1fr);gap:9px;margin:14px 0;text-align:left}.bonus-friends.visible{display:grid}.bonus-friends>span{border:1px solid #9d896c;padding:12px;background:linear-gradient(145deg,#3e4147,#26313c);font:700 14px monospace;letter-spacing:1px;color:#e9c893}.bonus-friends b{float:right;color:#f0a29b}.bonus-friends small{display:block;font:16.8px/1.5 system-ui;letter-spacing:0;color:#e2ded2;margin-top:9px}.bonus-replay-actions{display:flex;gap:12px;justify-content:center;flex-wrap:wrap}@media(max-width:500px){.bonus-friends{grid-template-columns:1fr}.bonus-friends>span{padding:9px 12px}.bonus-friends small{margin-top:4px}}
.bonus-friends img{float:left;width:48px;height:48px;margin:-2px 10px 4px 0;border:2px solid #e5c891;border-radius:50%;object-fit:cover;object-position:center 30%;box-shadow:0 3px 9px #0008}.bonus-friends>span:after{content:"";display:block;clear:both}
#bonusDriveCaption{min-height:3em;font-size:clamp(1.4rem,3.5vw,1.6rem);line-height:1.5}
@media(max-height:520px){
 .bonus-overlay{padding:5px}
 .bonus-dialog{max-height: calc(100vh - 10px);max-height: calc(100dvh - 10px)}
 .bonus-ring-layout{padding:5px 9px 8px}
 .bonus-ring-layout h2{font-size:clamp(1.8rem,6.3vw,2.8rem);margin:0}
 .bonus-ring-layout>p{font-size:15.4px;line-height:1.15;margin:2px auto 4px}
 .bonus-ring-status{margin-bottom:3px;font-size:16.8px}
 .bonus-status-pill{padding:3px 7px}
 .bonus-ring{height: clamp(145px,43vh,185px);height: clamp(145px,43dvh,185px)}
 .bonus-ring-fighter{scale:.72;transform-origin:bottom center}
 .bonus-ring-controls{margin-top:4px;gap:5px}
 .bonus-ring-controls button{min-height:36px;padding:4px 8px;font-size:16.8px}
 .bonus-fighter-label{font-size:11.2px;padding:2px 5px;bottom:4px}
}
/* Painted boxing atlas: whole-body Nikita likeness, three rival expressions. */
.bonus-ring-fighter{width:286px;height:265px;scale:1;bottom:9%;transform:translateX(-50%);background-repeat:no-repeat;background-position:center bottom;background-size:100% 100%;filter:drop-shadow(2px 7px 3px #08121b99);transform-origin:50% 96%;transition:left .18s ease,filter .14s ease;pointer-events:none}
.bonus-ring-fighter>span{display:none}
.bonus-ring-nikita{background-image:url('assets/bonus/nikita-guard.png')}
.bonus-ring-rabbi{background-image:url('assets/bonus/rabbi-calm.png')}
.bonus-ring-nikita.punching{background-image:url('assets/bonus/nikita-punch.png')}
.bonus-ring-nikita.blocking{background-image:url('assets/bonus/nikita-block.png')}
.bonus-ring-nikita.hit{background-image:url('assets/bonus/nikita-hit.png')}
.bonus-ring[data-round="2"] .bonus-ring-rabbi{background-image:url('assets/bonus/rabbi-angry.png')}
.bonus-ring[data-round="3"] .bonus-ring-rabbi{background-image:url('assets/bonus/rabbi-furious.png')}
.bonus-ring .bonus-ring-rabbi.winding{rotate:5deg;translate:7px 0;filter:drop-shadow(0 0 5px #e4915855)}
.bonus-ring .bonus-ring-rabbi.striking{background-image:url('assets/bonus/rabbi-punch.png');translate:-12px 0;rotate:-2deg}
.bonus-ring .bonus-ring-rabbi.staggered{translate:9px 0;rotate:7deg;filter:brightness(1.45) drop-shadow(0 0 7px #ffe3a7)}
.bonus-ring[data-round="2"]{border-color:#a66347}
.bonus-ring[data-round="3"]{border-color:#ae4545;box-shadow:0 0 0 2px #ceae78,inset 0 0 80px #a528282c,0 15px 30px #0008}
.bonus-ring-ropes{opacity:.58;bottom:9%;box-shadow:0 4px #76323f}
.bonus-rival-meter{display:flex;align-items:center;justify-content:space-between;gap:12px;max-width:800px;margin:0 auto 9px;padding:7px 10px;border-left:3px solid #b79762;background:#0d1c27;color:#c7d2d3;font:700 15.4px/1.25 system-ui}
.bonus-rage-label{color:#e1c19c}.bonus-ring-layout[data-round="2"] .bonus-rage-label{color:#ffb26f}.bonus-ring-layout[data-round="3"] .bonus-rage-label{color:#ff8174}
#bonusRabbiResolve{color:#fff0bc;font-variant-numeric:tabular-nums;white-space:nowrap}
@media(max-width:650px){.bonus-ring-fighter{width:232px;height:215px;scale:1;bottom:11%}.bonus-ring-nikita{left:29%}.bonus-ring-rabbi{left:73%}.bonus-rival-meter{font-size:14px;padding:5px 7px;gap:6px;margin-bottom:6px}.bonus-ring-cue{top:16%}.bonus-ring{height:320px}}
@media(max-height:520px){.bonus-ring-fighter{width:151px;height:140px;scale:1;bottom:8%}.bonus-ring{height: clamp(155px,43vh,185px);height: clamp(155px,43dvh,185px)}.bonus-rival-meter{padding:2px 7px;font-size:12.6px;margin-bottom:3px}.bonus-ring-cue{top:5%;font-size:14px;padding:4px 8px}.bonus-fighter-label{bottom:2px}}
@media(min-height:521px) and (max-height:800px) and (min-width:651px){
 .bonus-ring-layout{padding:12px 16px}
 .bonus-ring-layout h2{margin:3px 0;font-size:clamp(2.4rem,5.6vw,3.2rem)}
 .bonus-ring-layout>p{margin:4px auto 6px}
 .bonus-ring-status{margin-bottom:5px}
 .bonus-rival-meter{margin-bottom:5px;padding:5px 8px}
 .bonus-ring{height: clamp(250px,46vh,335px);height: clamp(250px,46dvh,335px)}
 .bonus-ring-fighter{width:255px;height:236px}
 .bonus-ring-controls{margin-top:7px}
 .bonus-ring-controls button{min-height:44px}
}
/* Separately painted muscle progression. Sprite framing changes; anatomy never stretches. */
.bonus-ring[data-body="medium"] .bonus-ring-nikita,.bonus-ring[data-body="heavy"] .bonus-ring-nikita,.bonus-ring[data-round="2"] .bonus-ring-rabbi,.bonus-ring[data-round="3"] .bonus-ring-rabbi{background-size:118.51852% 100%}
.bonus-ring[data-body="medium"] .bonus-ring-nikita{background-image:url('assets/bonus/nikita-medium-guard.png')}
.bonus-ring[data-body="medium"] .bonus-ring-nikita.punching{background-image:url('assets/bonus/nikita-medium-punch.png')}
.bonus-ring[data-body="medium"] .bonus-ring-nikita.blocking{background-image:url('assets/bonus/nikita-medium-block.png')}
.bonus-ring[data-body="medium"] .bonus-ring-nikita.hit{background-image:url('assets/bonus/nikita-medium-hit.png')}
.bonus-ring[data-body="heavy"] .bonus-ring-nikita{background-image:url('assets/bonus/nikita-heavy-guard.png')}
.bonus-ring[data-body="heavy"] .bonus-ring-nikita.punching{background-image:url('assets/bonus/nikita-heavy-punch.png')}
.bonus-ring[data-body="heavy"] .bonus-ring-nikita.blocking{background-image:url('assets/bonus/nikita-heavy-block.png')}
.bonus-ring[data-body="heavy"] .bonus-ring-nikita.hit{background-image:url('assets/bonus/nikita-heavy-hit.png')}
.bonus-ring[data-round="2"] .bonus-ring-rabbi{background-image:url('assets/bonus/rabbi-stage2-guard.png')}
.bonus-ring[data-round="2"] .bonus-ring-rabbi.striking{background-image:url('assets/bonus/rabbi-stage2-punch.png')}
.bonus-ring[data-round="3"] .bonus-ring-rabbi{background-image:url('assets/bonus/rabbi-stage3-guard.png')}
.bonus-ring[data-round="3"] .bonus-ring-rabbi.striking{background-image:url('assets/bonus/rabbi-stage3-punch.png')}
/* Wide transparent cells retain fully extended gloves inside the render box. */
.bonus-ring-fighter{width:339.2px;background-size:84.375% 100%}
.bonus-ring[data-body="medium"] .bonus-ring-nikita,.bonus-ring[data-body="heavy"] .bonus-ring-nikita,.bonus-ring[data-round="2"] .bonus-ring-rabbi,.bonus-ring[data-round="3"] .bonus-ring-rabbi{background-size:100% 100%}
@media(max-width:650px){.bonus-ring-fighter{width:275.2px}}
@media(max-height:520px){.bonus-ring-fighter{width:179.2px}}
@media(min-height:521px) and (max-height:800px) and (min-width:651px){.bonus-ring-fighter{width:302.08px}}
/* One six-cell painted atlas: lean, stronger, huge; block above, hit below. */
.bonus-rival-vitals{display:flex;align-items:center;gap:9px;min-width:44%;justify-content:flex-end}
#bonusRabbiHp{color:#fff0bc;font-variant-numeric:tabular-nums;white-space:nowrap}
.bonus-rival-bar{display:block;width:clamp(70px,16vw,170px);height:8px;overflow:hidden;border:1px solid #aa754f;border-radius:6px;background:#372b2c}
.bonus-rival-bar i{display:block;width:100%;height:100%;background:linear-gradient(90deg,#e87558,#f6c471);transition:width .22s ease}
.bonus-ring .bonus-ring-rabbi.blocking,.bonus-ring .bonus-ring-rabbi.hit{width:265px;background-image:url('assets/bonus/rabbi-defense-hit-atlas.png');background-size:300% 200%;background-repeat:no-repeat;filter:drop-shadow(2px 7px 3px #08121b99)}
.bonus-ring[data-round="1"] .bonus-ring-rabbi.blocking{background-position:0% 0%}
.bonus-ring[data-round="2"] .bonus-ring-rabbi.blocking{background-position:50% 0%}
.bonus-ring[data-round="3"] .bonus-ring-rabbi.blocking{background-position:100% 0%}
.bonus-ring[data-round="1"] .bonus-ring-rabbi.hit{background-position:0% 100%}
.bonus-ring[data-round="2"] .bonus-ring-rabbi.hit{background-position:50% 100%}
.bonus-ring[data-round="3"] .bonus-ring-rabbi.hit{background-position:100% 100%}
.bonus-ring .bonus-ring-rabbi.blocking{translate:-5px 0;filter:drop-shadow(0 0 9px #b5d7e777)}
.bonus-ring .bonus-ring-rabbi.hit{animation:bonus-rabbi-recoil .48s ease-out both}
.bonus-ring-nikita.punching{animation:bonus-nikita-lunge var(--punch-duration, 500ms) ease-out both}
.bonus-ring .bonus-ring-cue{top:8px}
.bonus-ring[data-feedback="counter"] .bonus-ring-impact,.bonus-ring[data-feedback="rival-hit"] .bonus-ring-impact,.bonus-ring[data-feedback="rival-block"] .bonus-ring-impact{left:72%;top:38%;animation:bonus-spark .55s ease-out}
.bonus-ring[data-feedback="rival-hit"] .bonus-ring-cue{background:#24635a}
.bonus-ring[data-feedback="rival-block"] .bonus-ring-cue{background:#315c6a}
@keyframes bonus-rabbi-recoil{0%{translate:-13px 0;rotate:-8deg;filter:brightness(1.75) drop-shadow(0 0 15px #ffe3a7)}35%{translate:14px 0;rotate:8deg;filter:brightness(1.4) drop-shadow(0 0 9px #ffdb9e)}100%{translate:0 0;rotate:0deg;filter:drop-shadow(2px 7px 3px #08121b99)}}
@keyframes bonus-nikita-lunge{0%{translate:0 0}28%{translate:var(--punch-reach, 140px) 0}63%{translate:var(--punch-reach, 140px) 0}100%{translate:0 0}}
@media(max-width:650px){.bonus-ring-rabbi{left:61%}.bonus-ring .bonus-ring-rabbi.blocking,.bonus-ring .bonus-ring-rabbi.hit{width:215px}.bonus-rival-vitals{gap:4px}.bonus-rival-bar{width:65px;height:6px}}
@media(max-height:520px){.bonus-ring .bonus-ring-rabbi.blocking,.bonus-ring .bonus-ring-rabbi.hit{width:140px}.bonus-rival-vitals{gap:4px}.bonus-rival-bar{height:5px}}
@media(min-height:521px) and (max-height:800px) and (min-width:651px){.bonus-ring .bonus-ring-rabbi.blocking,.bonus-ring .bonus-ring-rabbi.hit{width:236px}}
/* П.35 (20260928): спрайт раввина в ТРЕТЬЕМ бою крупнее (просьба владельца).
   База (десктоп): бокс 265px при высоте ринга ~345px и отступе снизу 9% (31px) —
   запас 314px, поэтому 1.15 (265×1.15=304.8 ≤ 314; 1.25 обрезало бы макушку).
   Телефон (≤650px): бокс 215px, ринг 320px, низ 11% (35.2px) → свободно 284.8px;
   scale 1.25 → 268.75px (влезает), и left 61%→52%: центр 0.52×358=186.2px,
   половина ширины 137.6×1.25=172px → правый край 358.2px при ширине ринга ~358px.
   Короткие экраны (≤520px высоты): бокс 140px, ринг ≤185px, низ 8% → запас 170px;
   1.15 → 161px (влезает), 1.25 было бы 175px (обрезка). */
.bonus-ring[data-round="3"] .bonus-ring-rabbi{scale:1.15}
@media(max-width:650px){.bonus-ring[data-round="3"] .bonus-ring-rabbi{scale:1.25;left:52%}}
@media(max-height:520px){.bonus-ring[data-round="3"] .bonus-ring-rabbi{scale:1.15}}
/* П.35: особое достижение — «Ты вырубил раввина…». Модалка живёт на
   document.body поверх bonus-overlay (z-index 10001 > 10000), закрывается ТОЛЬКО
   кнопкой: глобального Escape не вешаем, чтобы не перехватывать клавиши боя. */
/* Аудит M3 (№1): подложка не должна съедать тапы по кнопкам боя — бой продолжается
   пока уведомление висит; сами клики ловит только карточка. */
.bonus-ko-notice{position:fixed;inset:0;z-index:10001;display:flex;align-items:center;justify-content:center;padding:18px;background:#080c0bd9;pointer-events:none}
.bonus-ko-card{max-width:min(560px,calc(100vw - 36px));padding:24px 22px 20px;border:1px solid #d4af37;border-radius:14px;background:#132a1e;box-shadow:0 18px 44px #000a;text-align:center;pointer-events:auto}
.bonus-ko-text{margin:0 0 18px;font:700 clamp(19px,4.4vw,26px)/1.35 Manrope,system-ui,sans-serif;color:#f2ffe0}
.bonus-ko-btn{min-height:52px;min-width:190px;padding:10px 26px;border:0;border-radius:10px;background:#c5f477;color:#15201a;font:800 17px/1.2 Manrope,system-ui,sans-serif;cursor:pointer}
.bonus-ko-btn:active{transform:translateY(1px)}
