/* =====================================================================
   v2.0 — «Полярное сияние»: стеклянный интерфейс 2025, свой стиль Снежнограда
   ===================================================================== */
:root{
  --bg:#070b24;--ink:#f4f7ff;--muted:#a9b6dc;
  --mint:#5cf2c8;--coral:#ff7a9c;--gold:#ffd36a;--ice:#9fe8ff;--violet:#8d7bff;
  --glass:rgba(255,255,255,.075);--glass2:rgba(255,255,255,.12);--line:rgba(255,255,255,.16);
  --radius:26px;--shadow:0 18px 50px rgba(2,4,20,.45);
}
html,body{background:#070b24}
body{font-family:ui-rounded,"SF Pro Rounded","Nunito","Segoe UI Variable Display","Segoe UI",system-ui,-apple-system,sans-serif;color:var(--ink);
  background:
    radial-gradient(900px 520px at 12% -8%,rgba(92,242,200,.28),transparent 60%),
    radial-gradient(800px 560px at 92% 4%,rgba(141,123,255,.34),transparent 62%),
    radial-gradient(700px 500px at 50% 112%,rgba(255,122,156,.2),transparent 60%),
    linear-gradient(180deg,#0a1034 0%,#0b1442 45%,#070b24 100%)!important;
  background-attachment:fixed!important}
.aurora{opacity:.55;mix-blend-mode:screen}
h1,h2,h3{letter-spacing:-.02em}

/* ---- верхняя панель ---- */
.topbar{height:auto;margin:10px 12px 0;padding:8px 10px 8px 12px;border-radius:24px;background:var(--glass)!important;border:1px solid var(--line);backdrop-filter:blur(22px) saturate(1.5);-webkit-backdrop-filter:blur(22px) saturate(1.5);box-shadow:var(--shadow),inset 0 1px rgba(255,255,255,.18);top:8px}
.brand b{font-size:15px;letter-spacing:-.01em}
.brand small{color:var(--muted)}
.logo{background:conic-gradient(from 210deg,#5cf2c8,#8d7bff,#ff7a9c,#ffd36a,#5cf2c8)!important;box-shadow:0 0 22px rgba(141,123,255,.55)}
.logo span{color:#fff!important;text-shadow:0 2px 8px rgba(0,0,0,.35)}
.wallet-chip{background:rgba(255,255,255,.09)!important;border:1px solid var(--line)!important;backdrop-filter:blur(8px)}
.icon-btn{background:rgba(255,255,255,.09)!important;border:1px solid var(--line)!important}

/* ---- стеклянные карточки ---- */
.hero-card,.feature-card,.season-pass-card,.city-entry-card,.hud-card,.chapter-banner,.modal-card,.task-row,.shop-row,.pass-row,.level-tip{
  background:linear-gradient(155deg,rgba(255,255,255,.12),rgba(255,255,255,.045))!important;
  border:1px solid var(--line)!important;backdrop-filter:blur(20px) saturate(1.4);-webkit-backdrop-filter:blur(20px) saturate(1.4);
  box-shadow:var(--shadow),inset 0 1px rgba(255,255,255,.2)!important}
.hero-card{border-radius:34px;overflow:hidden;background:
  radial-gradient(520px 300px at 85% 0%,rgba(255,211,106,.22),transparent 60%),
  linear-gradient(155deg,rgba(80,110,255,.45),rgba(30,20,90,.55))!important}
.hero-card:after{background:radial-gradient(circle,rgba(92,242,200,.28),transparent 68%)!important}
.hero-card h1{background:linear-gradient(90deg,#fff,#cfe9ff 60%,#9fe8ff);-webkit-background-clip:text;background-clip:text;color:transparent;text-shadow:none}
.season-badge{background:rgba(92,242,200,.16)!important;color:var(--mint)!important;border:1px solid rgba(92,242,200,.4)!important}
.feature-card,.season-pass-card,.city-entry-card{border-radius:24px}
.feature-card:active{transform:scale(.98)}
.progress{background:rgba(255,255,255,.12)!important;border-radius:99px;overflow:hidden}
.progress i{background:linear-gradient(90deg,var(--mint),var(--ice) 55%,var(--gold))!important;box-shadow:0 0 14px rgba(92,242,200,.6)}

/* ---- кнопки ---- */
.primary{background:linear-gradient(180deg,#ffe68f,#ffb83d)!important;color:#4a2900!important;border:0;border-radius:18px;box-shadow:0 10px 26px rgba(255,184,61,.38),inset 0 1px rgba(255,255,255,.7),inset 0 -3px rgba(190,110,10,.35)!important;text-shadow:0 1px rgba(255,255,255,.4)}
.primary:active{transform:translateY(2px) scale(.99);box-shadow:0 4px 12px rgba(255,184,61,.3),inset 0 1px rgba(255,255,255,.6)!important}
.primary:disabled{background:rgba(255,255,255,.12)!important;color:var(--muted)!important;box-shadow:none!important;text-shadow:none;opacity:1}
.secondary,.pill,.back{background:rgba(255,255,255,.09)!important;border:1px solid var(--line)!important;color:var(--ink)!important;backdrop-filter:blur(10px);box-shadow:inset 0 1px rgba(255,255,255,.14)!important}
.pill.active{background:linear-gradient(135deg,rgba(92,242,200,.35),rgba(141,123,255,.4))!important;border-color:rgba(255,255,255,.4)!important}

/* ---- нижняя навигация: «остров» ---- */
.bottom-nav{left:12px!important;right:12px;bottom:max(10px,env(safe-area-inset-bottom));width:auto!important;transform:none!important;height:68px;padding:6px;border-radius:28px;background:rgba(14,18,60,.72)!important;border:1px solid var(--line)!important;backdrop-filter:blur(26px) saturate(1.6);-webkit-backdrop-filter:blur(26px) saturate(1.6);box-shadow:0 18px 50px rgba(0,0,0,.5),inset 0 1px rgba(255,255,255,.16);grid-template-columns:repeat(5,1fr)!important;max-width:560px;margin:0 auto}
.bottom-nav button{border-radius:22px;color:var(--muted)!important;font-size:10px;font-weight:700;transition:background .2s,transform .2s}
.bottom-nav span{font-size:22px!important;line-height:24px;filter:grayscale(.4) opacity(.8)}
.bottom-nav button.active{background:linear-gradient(135deg,rgba(92,242,200,.28),rgba(141,123,255,.34))!important;color:#fff!important;box-shadow:inset 0 1px rgba(255,255,255,.25),0 6px 18px rgba(92,242,200,.18)}
.bottom-nav button.active span{filter:none;transform:translateY(-1px) scale(1.08)}
main{padding-bottom:96px}

/* ---- модальные окна ---- */
.modal{background:rgba(4,6,24,.62)!important;backdrop-filter:blur(8px)}
.modal-card{border-radius:30px;background:linear-gradient(160deg,rgba(40,48,120,.92),rgba(14,18,60,.96))!important;max-height:88vh;max-height:88dvh;overflow:auto}
.modal-close{background:rgba(255,255,255,.12)!important;border:1px solid var(--line)}

/* ---- игровое поле ---- */
.board-wrap{border-radius:34px!important;background:linear-gradient(160deg,rgba(255,255,255,.16),rgba(255,255,255,.04))!important;border:1px solid rgba(255,255,255,.28)!important;box-shadow:0 30px 70px rgba(2,4,24,.6),0 0 0 6px rgba(141,123,255,.12),inset 0 1px rgba(255,255,255,.35)!important;backdrop-filter:blur(18px)}
.board-wrap:before{border-color:rgba(255,255,255,.1)!important}
.tile{background:linear-gradient(150deg,rgba(255,255,255,.17),rgba(255,255,255,.06))!important;border:1px solid rgba(255,255,255,.12);box-shadow:inset 0 1px rgba(255,255,255,.3),inset 0 -6px 12px rgba(40,30,120,.25),0 4px 10px rgba(2,4,24,.35)!important;border-radius:18px!important}
.tile:before{background:radial-gradient(circle at 30% 20%,rgba(255,255,255,.28),transparent 55%)!important}
.festive-piece{filter:drop-shadow(0 4px 5px rgba(2,4,24,.45))}
.tile.selected{outline:3px solid var(--mint)!important;box-shadow:0 0 0 4px rgba(92,242,200,.25),0 0 24px rgba(92,242,200,.55)!important}
.tile.blocked:after{border-color:rgba(159,232,255,.75)!important;background:linear-gradient(160deg,rgba(255,255,255,.25),rgba(159,232,255,.12))}
.tile.crate{background:linear-gradient(145deg,#8a5a34,#5a381d)!important}
.tile.hint{outline-color:var(--gold)}
.level-title,.moves{background:var(--glass)!important;border:1px solid var(--line)!important;backdrop-filter:blur(14px);border-radius:20px!important}
.hud-ribbon{background:linear-gradient(90deg,rgba(92,242,200,.25),rgba(141,123,255,.25))!important;border-radius:14px!important;color:#fff!important;border:1px solid var(--line)}
.goal{background:rgba(255,255,255,.09)!important;border:1px solid var(--line)!important;border-radius:16px!important}
.goal.done{background:rgba(92,242,200,.22)!important;border-color:rgba(92,242,200,.6)!important}
.boosters button{background:linear-gradient(160deg,rgba(255,255,255,.15),rgba(255,255,255,.05))!important;border:1px solid var(--line)!important;box-shadow:inset 0 1px rgba(255,255,255,.2)}
.boosters button.active{outline:2px solid var(--mint);box-shadow:0 0 22px rgba(92,242,200,.5)}
.boosters button>b{background:linear-gradient(180deg,#ffe68f,#ffb83d)!important}
.winter-village-bg{opacity:.55}

/* ---- карта уровней: постраничный путь ---- */
.chapter-tabs{display:flex!important;align-items:center;justify-content:space-between;gap:8px;overflow:visible!important;padding:6px 0 12px!important}
.pg{width:44px;height:44px;border-radius:16px;font-size:20px;font-weight:900;color:#fff;background:var(--glass2)!important;border:1px solid var(--line)!important;padding:0!important}
.pg:disabled{opacity:.3}
.pg-title{flex:1;text-align:center}
.pg-title b{display:block;font-size:17px}
.pg-title small{color:var(--muted);font-size:12px}
.chapter-banner{border-radius:24px;margin-bottom:14px}
.level-map{display:grid!important;grid-template-columns:repeat(4,1fr)!important;gap:22px 12px!important;padding:6px 4px 24px;position:relative}
.level-node{aspect-ratio:1;width:100%!important;height:auto!important;border-radius:50%!important;display:grid;place-items:center;font-weight:900;font-size:18px;color:#fff;background:radial-gradient(circle at 30% 25%,rgba(159,232,255,.9),rgba(91,120,255,.9) 55%,rgba(60,50,180,.95))!important;border:2px solid rgba(255,255,255,.55)!important;box-shadow:0 8px 20px rgba(60,60,200,.4),inset 0 2px rgba(255,255,255,.55),inset 0 -6px 10px rgba(30,20,120,.4)!important;position:relative;transition:transform .15s}
.level-node:active{transform:scale(.94)}
.level-node.done{background:radial-gradient(circle at 30% 25%,#b9ffe9,#3fd7a6 55%,#1b9b78)!important}
.level-node.current{background:radial-gradient(circle at 30% 25%,#fff4b8,#ffc23f 55%,#e08a12)!important;color:#5a3300;animation:nodePulse 1.6s ease-in-out infinite}
@keyframes nodePulse{0%,100%{box-shadow:0 0 0 0 rgba(255,211,106,.6),0 8px 20px rgba(255,170,40,.5)}50%{box-shadow:0 0 0 12px rgba(255,211,106,0),0 8px 20px rgba(255,170,40,.5)}}
.level-node.boss{background:radial-gradient(circle at 30% 25%,#ffc0d4,#ff5f92 55%,#b3225a)!important}
.level-node.locked{background:rgba(255,255,255,.07)!important;border:1px solid rgba(255,255,255,.14)!important;box-shadow:none!important;color:rgba(255,255,255,.35)}
.level-node .stars{position:absolute;bottom:-13px;left:0;right:0;text-align:center;font-size:11px;line-height:1;pointer-events:none}

/* ---- прогулка по городу ---- */
.city-screen{padding-top:6px}
.cw-top{display:flex;align-items:center;gap:12px;margin:4px 0 10px}
.cw-title small{color:var(--mint);text-transform:uppercase;letter-spacing:.14em;font-weight:800;font-size:10px}
.cw-title h2{margin:0;font-size:24px}
.cw-progress{margin-left:auto;min-width:96px;text-align:right}
.cw-progress b{font-size:12px;color:var(--gold)}
.cw-progress .progress{height:7px;margin-top:5px}
.city-district-bar{display:flex!important;gap:8px;overflow-x:auto;padding:2px 2px 10px;scrollbar-width:none}
.city-district-bar::-webkit-scrollbar{display:none}
.city-district-bar .pill{white-space:nowrap;flex:0 0 auto}
.cw-stage{position:relative;height:calc(100vh - 250px);height:calc(100dvh - 250px);min-height:380px;max-height:760px;border-radius:30px;overflow:hidden;border:1px solid rgba(255,255,255,.25);box-shadow:0 24px 60px rgba(2,4,24,.6),0 0 0 5px rgba(141,123,255,.12)}
.cw-stage .city-viewport,.cw-stage .city-viewport-v140{height:100%!important;min-height:0!important;max-height:none!important;border:0!important;border-radius:0!important;box-shadow:none!important}
.cw-stage:after{content:"";position:absolute;inset:0;pointer-events:none;border-radius:inherit;box-shadow:inset 0 0 90px rgba(7,11,36,.55);z-index:6}
.cw-snow{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:5}
.cw-fab{position:absolute;right:10px;top:10px;z-index:8;display:flex;gap:8px}
.cw-fab .pill{padding:8px 12px;font-size:12px;background:rgba(10,14,48,.7)!important}
.cw-hint{position:absolute;left:10px;top:10px;max-width:calc(100% - 230px);z-index:7;padding:8px 12px;border-radius:14px;font-size:11px;line-height:1.35;color:#e8efff;background:rgba(10,14,48,.68);border:1px solid var(--line);backdrop-filter:blur(10px);transition:opacity .5s,transform .5s;pointer-events:none}
.cw-hint.gone{opacity:0;transform:translateY(-8px)}
.cw-actors{position:absolute;inset:0;pointer-events:none;z-index:20}
.actor{position:absolute;width:0;height:0;transition:left var(--d,.5s) linear,top var(--d,.5s) linear,scale var(--d,.5s) linear;scale:1;transform-origin:50% 100%}
.actor .spr{position:absolute;left:0;bottom:0;transform:translateX(-50%) scaleX(var(--dir,1));display:block;line-height:1;transform-origin:50% 100%}
.actor .shadow{position:absolute;left:-16px;bottom:-5px;width:32px;height:10px;border-radius:50%;background:rgba(0,0,0,.35);filter:blur(2px)}
.actor.npc,.actor.gift{pointer-events:auto;cursor:pointer}
.actor.npc .spr{font-size:30px}
.actor.walking .spr{animation:stepBob .42s ease-in-out infinite}
@keyframes stepBob{0%,100%{transform:translateX(-50%) scaleX(var(--dir,1)) translateY(0) rotate(-3deg)}50%{transform:translateX(-50%) scaleX(var(--dir,1)) translateY(-5px) rotate(3deg)}}
.actor.gift .spr{font-size:28px;animation:giftFloat 1.8s ease-in-out infinite;filter:drop-shadow(0 0 10px rgba(255,211,106,.9))}
@keyframes giftFloat{0%,100%{transform:translateX(-50%) translateY(0)}50%{transform:translateX(-50%) translateY(-8px)}}
.hero .spr{filter:drop-shadow(0 4px 6px rgba(0,0,0,.45))}
.hero .shadow{left:-20px;width:40px}
.hero .legL,.hero .legR{transform-box:fill-box;transform-origin:50% 0}
.hero.walking .legL{animation:legL .42s ease-in-out infinite}
.hero.walking .legR{animation:legR .42s ease-in-out infinite}
@keyframes legL{0%,100%{transform:rotate(-22deg)}50%{transform:rotate(22deg)}}
@keyframes legR{0%,100%{transform:rotate(22deg)}50%{transform:rotate(-22deg)}}
.hero.cheer .spr{animation:cheer .5s ease-in-out 3}
@keyframes cheer{0%,100%{transform:translateX(-50%) scaleX(var(--dir,1)) translateY(0)}50%{transform:translateX(-50%) scaleX(var(--dir,1)) translateY(-16px)}}
.bub{position:absolute;left:0;bottom:calc(100% + 6px);transform:translateX(-50%);white-space:nowrap;padding:5px 10px;border-radius:12px;background:#fff;color:#1b2150;font:700 11px/1.2 system-ui,sans-serif;box-shadow:0 6px 16px rgba(0,0,0,.35);animation:bubIn .25s ease;pointer-events:none;z-index:50}
.bub:after{content:"";position:absolute;left:50%;top:100%;margin-left:-5px;border:5px solid transparent;border-top-color:#fff}
@keyframes bubIn{from{opacity:0;transform:translateX(-50%) translateY(6px) scale(.8)}}
.burst{position:absolute;width:0;height:0;pointer-events:none;z-index:300}
.burst i{position:absolute;left:0;top:0;font-style:normal;font-size:18px;animation:burstOut .9s ease-out forwards}
@keyframes burstOut{from{transform:rotate(var(--a)) translateY(0);opacity:1}to{transform:rotate(var(--a)) translateY(-54px);opacity:0}}
.city-hotspot{z-index:200!important}
.city-hotspot[data-stage]:not([data-stage="0"]):not(.locked){animation:hsGlow 2.6s ease-in-out infinite}
@keyframes hsGlow{0%,100%{box-shadow:0 6px 18px rgba(0,18,34,.3),0 0 0 0 rgba(255,211,106,.55)}50%{box-shadow:0 6px 18px rgba(0,18,34,.3),0 0 0 9px rgba(255,211,106,0)}}
.cw-sheet{position:absolute;left:10px;right:10px;bottom:10px;z-index:9;padding:14px;border-radius:26px;background:linear-gradient(160deg,rgba(40,48,120,.9),rgba(14,18,60,.94));border:1px solid rgba(255,255,255,.22);backdrop-filter:blur(22px) saturate(1.5);box-shadow:0 20px 50px rgba(0,0,0,.55),inset 0 1px rgba(255,255,255,.2);animation:sheetUp .28s cubic-bezier(.2,.9,.3,1);max-width:640px;margin:0 auto}
.cw-sheet[hidden]{display:none}
@keyframes sheetUp{from{transform:translateY(30px);opacity:0}}
.cw-close{position:absolute;right:10px;top:8px;width:32px;height:32px;border-radius:50%;background:rgba(255,255,255,.12);color:#fff;font-size:20px;line-height:1;border:1px solid var(--line);padding:0}
.cw-sheet-main{display:flex;gap:12px;align-items:center;padding-right:30px}
.cw-thumb{flex:0 0 84px;height:84px;border-radius:18px;overflow:hidden;border:1px solid rgba(255,255,255,.25)}
.cw-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.cw-sheet-body{display:flex;flex-direction:column;gap:3px;min-width:0}
.cw-sheet-body small{color:var(--mint);text-transform:uppercase;letter-spacing:.12em;font-size:9px;font-weight:800}
.cw-sheet-body b{font-size:16px;line-height:1.15}
.cw-sheet-body strong{font-size:12px;color:var(--gold)}
.cw-sheet-body span{font-size:12px;color:#d4defa}
.cw-sheet-body em{font-size:11px;font-style:normal;color:var(--muted)}
.cw-sheet .city-stage-track{display:flex!important;gap:5px;margin:10px 0;overflow-x:auto;scrollbar-width:none}
.cw-sheet .city-stage-track span{flex:0 0 auto;min-width:52px;padding:5px 8px;font-size:10px;border-radius:99px;background:rgba(255,255,255,.08);border:1px solid var(--line);color:var(--muted)}
.cw-sheet .city-stage-track span.done{background:rgba(92,242,200,.2);border-color:rgba(92,242,200,.55);color:#c9fff0}
.cw-sheet .city-stage-track span.current{background:rgba(255,211,106,.2);border-color:var(--gold);color:var(--gold)}
.cw-sheet .primary{width:100%;padding:13px}
.cat-grid{display:grid;grid-template-columns:1fr;gap:9px;margin-top:10px}
.cat-grid .city-project-card{display:grid;grid-template-columns:56px 1fr auto;gap:10px;align-items:center;text-align:left;padding:8px;border-radius:18px;background:rgba(255,255,255,.07);border:1px solid var(--line);color:#fff;position:relative}
.cat-grid .city-project-card img{width:56px;height:56px;object-fit:cover;border-radius:12px}
.cat-grid .city-project-card.locked img{filter:grayscale(1) brightness(.6)}
.cat-grid .city-project-card .project-icon{display:none}
.cat-grid .city-project-card b{display:block;font-size:13px}
.cat-grid .city-project-card small{color:var(--muted);font-size:11px}
.cat-grid .city-project-card em{font-style:normal;font-size:11px;font-weight:800;color:var(--gold)}
.cat-grid .city-project-card.done{border-color:rgba(255,211,106,.6)}
@media(min-width:700px){.cat-grid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.cw-hint{max-width:none;right:10px;top:56px}.cw-thumb{flex-basis:68px;height:68px}}
.wallet-chip{white-space:nowrap;display:inline-flex;align-items:center;gap:4px}
.hero-card{padding-bottom:84px!important}
.hero-scene{bottom:74px!important;height:calc(100% - 74px)!important}
.hero-scene .santa{filter:drop-shadow(0 6px 10px rgba(0,0,0,.4))}
.progress-block{margin-top:22px}
.city-district-bar{flex-wrap:nowrap!important}
.cw-hint{top:auto!important;bottom:10px;left:10px;right:10px;max-width:none!important;text-align:center}
.cw-stage{height:calc(100vh - 322px);height:calc(100dvh - 322px);min-height:340px}
.cw-top{margin:2px 0 8px}
@media(max-width:560px){.topbar{margin:6px 10px 0;padding:6px 8px}.brand small{display:none}.cw-title h2{font-size:21px}}
.pg{font-size:26px!important;line-height:1}
/* запасная картинка, если файлы из assets/ недоступны */
img.img-failed{opacity:0!important}
.city-world-v140{background:radial-gradient(500px 220px at 50% 38%,rgba(255,211,106,.25),transparent 70%),linear-gradient(180deg,#0e1a4d 0%,#1d3a7a 45%,#9fc4e8 62%,#eef7ff 100%)!important}
.cw-thumb{background:linear-gradient(160deg,#2b3a8f,#0f1a52)}
