/* Progression UI: garage gate, locked parts, result tiers, celebration and boss intro.
   Kept apart from style.css so concurrent edits to the base stylesheet never collide. */
.garage-upgrade.locked{opacity:.78}
.garage-upgrade.locked small{color:#d9b874}
.garage-upgrade.locked strong{color:#a29d88}

/* Workshop: owned parts the garage cannot mount yet */
.part-tile.locked{filter:saturate(.55) brightness(.85)}
.part-tile.locked span{color:#d9b874}

/* Result tiers */
#result-dialog .result-card{position:relative}
#result-dialog[data-tier="series"] .result-card{border:2px solid #d8b56a;box-shadow:0 0 28px #d8b56a33}
#result-dialog[data-tier="series"] h2{color:#f0cf7d}
#result-dialog[data-tier="series"] .result-card::before{content:"СЕРИЯ";position:absolute;right:18px;top:14px;padding:3px 8px;border:2px solid #d8b56a;border-radius:3px;color:#d8b56a;font:700 11px/1 Arial,sans-serif;letter-spacing:2px;transform:rotate(8deg)}
#result-dialog[data-tier="district"] .result-card,#result-dialog[data-tier="champion"] .result-card{border:2px solid #c091ed;box-shadow:0 0 28px #c091ed33}
#result-dialog[data-tier="district"] h2,#result-dialog[data-tier="champion"] h2{color:#dcc2f5}
.series-award{margin:6px 0 10px;padding:10px 12px;border:1px solid #d8b56a88;border-radius:6px;background:#3a3420;display:grid;gap:5px;text-align:left}
.series-award .tiny-label{color:#d8b56a}
.series-award b{font:500 24px/1.1 Oswald,sans-serif;color:#f0cf7d}
.shard-bar{position:relative;height:18px;border-radius:9px;background:#1f2a27;overflow:hidden;font:600 10px/18px Arial,sans-serif;letter-spacing:1px;padding:0 8px;color:#e4ddc8}
.shard-bar i{position:absolute;left:0;top:0;bottom:0;width:var(--p,0%);background:#6f8a4a}
.shard-bar span{position:relative}

/* Full-screen celebration before the result card */
#celebration{position:absolute;inset:0;z-index:60;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 35%,#2b3a2fee,#0d1411f4 75%);padding:24px;text-align:center;color:#f2e5c3;cursor:pointer;overflow:auto}
#celebration[hidden]{display:none}
.celebration-card{display:grid;gap:10px;justify-items:center;animation:celebrate-in .6s cubic-bezier(.2,.9,.3,1.2)}
.celebration-card .tiny-label{color:#d8b56a}
.celebration-card h2{font:600 52px/1 Oswald,sans-serif;color:#f0cf7d;margin:0;text-shadow:0 4px 18px #000a}
.celebration-card>p{font-size:15px;color:#d8d3bd;margin:0;max-width:300px}
.celebrate-card{display:grid;justify-items:center;gap:3px;padding:10px;border:1px solid #d8b56a66;border-radius:8px;background:#1b2622;animation:celebrate-in .6s .25s both cubic-bezier(.2,.9,.3,1.2)}
.celebrate-card img{width:240px;max-width:70vw;height:auto;border-radius:4px}
.celebrate-card.car img{width:260px}
.celebrate-card b{font:500 22px Oswald,sans-serif}
.celebrate-card small{font-size:11px;color:#a6b596}
.celebrate-crate{display:flex;align-items:center;gap:10px;font:500 16px Oswald,sans-serif;animation:celebrate-in .6s .45s both}
.celebrate-crate .crate-art.glow{filter:drop-shadow(0 0 14px #c091ed)}
.celebrate-crate small{color:#8cddba}
.celebrate-hint{font-size:11px;color:#8d9b88;margin-top:8px}
@keyframes celebrate-in{from{opacity:0;transform:translateY(24px) scale(.92)}to{opacity:1;transform:none}}

/* Boss and captain intro */
#boss-intro{position:absolute;inset:0;z-index:30;display:flex;align-items:flex-end;padding:0 18px 36%;background:linear-gradient(#0005,#000c 70%);cursor:pointer}
#boss-intro[hidden]{display:none}
.intro-plate{border-left:3px solid #d8b56a;padding:6px 0 6px 14px;color:#f2e5c3;filter:drop-shadow(0 2px 8px #000b);animation:intro-in .5s ease both}
.intro-plate .tiny-label{color:#d8b56a}
.intro-plate h2{font:600 44px/1 Oswald,sans-serif;margin:4px 0 6px}
.intro-plate p{margin:2px 0;font-size:14px;color:#d8d3bd}
.intro-plate p.taunt{font-style:italic;color:#f0cf7d}
.intro-plate small{display:block;margin-top:8px;font-size:11px;color:#8d9b88}
@keyframes intro-in{from{opacity:0;transform:translateX(-18px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){.celebration-card,.celebrate-card,.celebrate-crate,.intro-plate{animation:none}}

/* Decals live inside the Цвет tab, under the paints */
.custom-subhead{grid-column:1/-1;margin:8px 0 0;font:500 12px/1.2 Oswald,sans-serif;letter-spacing:1px;color:#d8b56a;text-transform:uppercase}
/* Weekly goals block in the career card */
.weekly-goals{margin:8px 0 12px;padding:10px 12px;border:1px solid #6f8f7a66;border-radius:10px;background:#141c19cc;display:grid;gap:8px}
.goals-head{display:flex;justify-content:space-between;align-items:baseline}
.goals-head b{font:500 15px Oswald,sans-serif;letter-spacing:.06em;color:#d8b56a}
.goals-head small{font-size:11px;color:#8aa08f}
.goal-row{display:grid;grid-template-columns:1fr auto;gap:10px;align-items:center;padding:6px 0;border-top:1px solid #ffffff12}
.goal-row>div{display:grid;gap:3px;position:relative}
.goal-row b{font:500 14px Oswald,sans-serif;color:#efe9d3}
.goal-row small{font-size:11px;color:#a6b596}
.goal-row i{display:block;height:4px;border-radius:2px;background:#233029;overflow:hidden;position:relative}
.goal-row i::after{content:"";position:absolute;inset:0;width:var(--p,0%);background:linear-gradient(90deg,#8fc47b,#d8b56a)}
.goal-row.done i::after{background:#f0cf7d}
.goal-row>span{font-size:11px;color:#d9b874;text-align:right;max-width:110px}
.goal-row.claimed{opacity:.55}
.goal-row.claimed>span{color:#8fc47b;font-size:18px}
.goal-row button{font:500 13px Oswald,sans-serif;letter-spacing:.06em;padding:8px 12px;border-radius:8px;border:1px solid #f0cf7d;background:#f0cf7d22;color:#f0cf7d;animation:goalPulse 1.6s ease-in-out infinite}
@keyframes goalPulse{50%{background:#f0cf7d44}}
/* Premium paints in the shop */
.paint-tile .paint-swatch,.hero-swatch{display:block;width:64px;height:64px;margin:6px auto 4px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ffffffaa,var(--paint) 45%,#00000066 100%);box-shadow:0 0 0 2px var(--rarity),0 6px 14px #0008}
.hero-swatch{width:120px;height:120px}
.paint-tile.owned{opacity:.6}
.paint-detail b{display:block;margin:8px 0;color:#8fc47b;font:500 16px Oswald,sans-serif;letter-spacing:.06em}
/* Drift stages inside the campaign */
.career-rival.drift{border-color:#7aa7b3;background:linear-gradient(135deg,#1b2a2e,#1e2b26)}
.career-rival.drift small{color:#9fd3e0}
.career-rival.drift p{grid-column:1/-1}
.route-ladder i.drift{border-style:dashed}
.route-ladder i.drift.current{color:#9fd3e0;border-color:#9fd3e0}
.route-stop[disabled]{cursor:default;opacity:.45}
/* What a part gives now → after the next level (customizer footer) */
.tune-preview{display:block;margin-top:3px;font-size:12px;line-height:1.35;color:#b9c8a4}
.tune-preview:empty{display:none}
/* Ideal rpm inside the green shift window: the window is symmetric around the sweet spot */
.perfect-zone{overflow:visible}
.perfect-zone::after{content:'';position:absolute;left:50%;top:-4px;bottom:-4px;width:2px;transform:translateX(-50%);background:#f6ffd6;box-shadow:0 0 6px #ffffffaa}
.perfect-zone::before{content:'';position:absolute;left:35%;right:35%;top:0;bottom:0;background:#c9e08a66}

/* «Новое» — spокойная карточка о новой механике, не праздник */
#celebration.unlock .celebration-card{max-width:340px;padding:18px 20px;border:1px solid #9fb864aa;background:#141c19f2}
#celebration.unlock .celebration-card .tiny-label{color:#9fb864}
#celebration.unlock .celebration-card h2{font:600 30px/1.05 Oswald,sans-serif;color:#efe9d3;margin:4px 0}
#celebration.unlock .celebration-card p{font-size:15px;line-height:1.35;color:#d8d3bd;max-width:300px}
#celebration.unlock .unlock-tap{font-size:11px;color:#8aa08f;letter-spacing:.06em;text-transform:uppercase}
