:root{
  --soil-dark:#3e2a1d; --soil:#5b3d28; --soil-light:#8a6240;
  --grass:#4f7942; --grass-dark:#3a5c30;
  --wheat:#d9a441; --cream:#f3e9d8; --cream-dark:#e3d4b6; --ink:#2b2117;
  --sky:#7fa8c9; --water:#3d7ea6; --warn:#b3492a; --ok:#4a7c3f; --gold:#c89a3c;
  --herb:#2f6a82; --panel:#fffaf0; --shadow:0 4px 14px rgba(43,33,23,.18);
}
*{box-sizing:border-box;}
html,body{margin:0;padding:0;}
body{font-family:'Inter',sans-serif;background:radial-gradient(ellipse at top, #cfe3ef 0%, #aecde0 38%, var(--sky) 70%);color:var(--ink);min-height:100vh;padding-bottom:40px;}
h1,h2,h3{font-family:'Fraunces',serif;margin:0;}
button{font-family:'Inter',sans-serif;cursor:pointer;border:none;}
.mono{font-family:'JetBrains Mono',monospace;}

/* Топбар */
header.topbar{background:linear-gradient(180deg,#fffdf6,var(--cream));border-bottom:3px solid var(--soil);padding:14px 18px;position:sticky;top:0;z-index:50;box-shadow:var(--shadow);}
.topbar-inner{max-width:1260px;margin:0 auto;display:flex;flex-wrap:wrap;align-items:center;gap:14px;justify-content:space-between;}
.brand{display:flex;align-items:baseline;gap:10px;}
.brand h1{font-size:1.5rem;font-weight:700;color:var(--soil-dark);letter-spacing:.3px;}
.brand .sub{font-size:.72rem;color:var(--soil-light);text-transform:uppercase;letter-spacing:1.5px;}
.stat-strip{display:flex;flex-wrap:wrap;gap:8px;align-items:center;}
.stat-pill{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:9px;padding:6px 12px;display:flex;align-items:center;gap:6px;font-size:.85rem;font-weight:600;box-shadow:0 2px 4px rgba(0,0,0,.06);}
.stat-pill .icon{font-size:1.05rem;}
.stat-pill.money{border-color:var(--gold);color:#7a5b18;}
.weather-pill{display:flex;align-items:center;gap:6px;border-radius:9px;padding:6px 13px;font-weight:700;font-size:.85rem;color:#fff;box-shadow:0 2px 4px rgba(0,0,0,.15);}
.w-sunny{background:linear-gradient(135deg,#e8a73c,#d98c1f);} .w-rain{background:linear-gradient(135deg,#5a8bb0,#3d6f93);}
.w-storm{background:linear-gradient(135deg,#5a5570,#403c54);} .w-frost{background:linear-gradient(135deg,#8fb3c4,#6a93a8);}
.w-drought{background:linear-gradient(135deg,#c97a3f,#a3582a);} .w-snow{background:linear-gradient(135deg,#aac4d8,#8aa9c0);}
.next-day-btn{background:linear-gradient(180deg,#6b9657,var(--grass-dark));color:#fff;font-weight:700;font-size:.85rem;border-radius:9px;padding:9px 18px;box-shadow:0 3px 0 #2e4924, 0 4px 8px rgba(0,0,0,.2);transition:transform .08s;}
.next-day-btn:active{transform:translateY(2px);box-shadow:0 1px 0 #2e4924;}
.next-day-btn:hover{filter:brightness(1.06);}

.daytime-pill{display:flex;align-items:center;gap:7px;background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:9px;padding:6px 12px 6px 10px;box-shadow:0 2px 4px rgba(0,0,0,.06);min-width:150px;}
.daytime-pill .dt-icon{font-size:1.15rem;line-height:1;transition:transform .4s;}
.daytime-pill .dt-info{display:flex;flex-direction:column;gap:3px;flex:1;min-width:90px;}
.daytime-pill .dt-label{font-size:.68rem;font-weight:700;color:var(--soil-dark);display:flex;justify-content:space-between;gap:8px;}
.daytime-pill .dt-label .dt-eta{font-weight:600;color:var(--soil-light);font-size:.62rem;}
.day-progress-track{height:6px;border-radius:4px;background:var(--cream-dark);overflow:hidden;border:1px solid var(--soil-light);}
.day-progress-fill{height:100%;width:0%;background:linear-gradient(90deg,#e8a73c,#c89a3c);transition:width 1s linear;}
.daytime-pill.tod-night .day-progress-fill{background:linear-gradient(90deg,#4a5a8a,#7fa8c9);}
.daytime-pill.tod-dusk .day-progress-fill{background:linear-gradient(90deg,#c9703f,#c89a3c);}
.daytime-pill.tod-dawn .day-progress-fill{background:linear-gradient(90deg,#e88ba0,#e8a73c);}

/* Основной контейнер */
.app-shell{max-width:1260px;margin:18px auto 0;padding:0 16px;display:flex;gap:16px;align-items:flex-start;}
.side-nav{display:flex;flex-direction:column;gap:4px;background:var(--panel);border:1px solid var(--cream-dark);border-radius:14px;padding:10px;box-shadow:var(--shadow);min-width:172px;position:sticky;top:90px;}
.nav-btn{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:9px;font-weight:700;font-size:.85rem;color:var(--soil-dark);background:transparent;text-align:left;transition:.12s;}
.nav-btn .nico{font-size:1.05rem;}
.ui-icon{display:inline-flex;align-items:center;justify-content:center;}
.ui-icon svg{width:18px;height:18px;stroke:currentColor;}
.nav-btn .ui-icon svg{width:19px;height:19px;}
.stat-pill .ui-icon svg{width:16px;height:16px;}
.nav-btn:hover{background:var(--cream);}
.nav-btn.active{background:var(--grass);color:#fff;}
.nav-badge{margin-left:auto;background:var(--warn);color:#fff;font-size:.62rem;border-radius:8px;padding:1px 6px;font-weight:700;}
.nav-btn.active .nav-badge{background:rgba(255,255,255,.3);}

.content-area{flex:1;min-width:0;}
.page{display:none;}
.page.active{display:block;animation:fadeIn .18s ease;}
@keyframes fadeIn{from{opacity:0;transform:translateY(3px);}to{opacity:1;transform:none;}}
.panel{background:var(--panel);border-radius:14px;border:1px solid var(--cream-dark);box-shadow:var(--shadow);padding:16px;}
.panel h2{font-size:1.15rem;color:var(--soil-dark);margin-bottom:12px;display:flex;align-items:center;gap:8px;}
.panel + .panel{margin-top:14px;}
.panel-sub{font-size:.76rem;color:var(--soil-light);margin:-6px 0 12px;}

@media(max-width:880px){
  .app-shell{flex-direction:column;}
  .side-nav{flex-direction:row;overflow-x:auto;min-width:auto;width:100%;position:static;}
  .nav-btn{flex:1;flex-direction:column;gap:2px;font-size:.63rem;padding:8px 4px;text-align:center;white-space:nowrap;}
  .nav-badge{margin-left:0;}
}

/* Дашборд */
.dash-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(140px,1fr));gap:12px;margin-bottom:14px;}
.dash-card{background:var(--cream);border-radius:12px;padding:14px;}
.dash-card .big{font-size:1.6rem;font-weight:800;color:var(--soil-dark);font-family:'Fraunces',serif;}
.dash-card .lbl{font-size:.68rem;color:var(--soil-light);text-transform:uppercase;letter-spacing:.5px;font-weight:700;}
.dash-alert{font-size:.82rem;background:#fbe1de;color:#7a1f1f;border-radius:8px;padding:8px 11px;margin-bottom:7px;font-weight:600;}
.dash-ok{font-size:.84rem;color:var(--soil-light);}
.price-board{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:8px;margin-top:6px;}
.price-item{background:var(--cream);border-radius:8px;padding:7px 10px;font-size:.76rem;display:flex;justify-content:space-between;align-items:center;gap:6px;}
.price-item .trend-up{color:var(--ok);font-weight:700;} .price-item .trend-down{color:var(--warn);font-weight:700;}

/* Поле и сад */
.field-toolbar{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.toolbar-btn{background:var(--soil);color:#fff;border-radius:9px;padding:8px 13px;font-size:.78rem;font-weight:700;display:flex;align-items:center;gap:6px;box-shadow:0 2px 4px rgba(0,0,0,.15);}
.toolbar-btn:hover:not(:disabled){background:var(--soil-dark);}
.toolbar-btn:disabled{opacity:.4;cursor:not-allowed;}
.field-bg{background:repeating-linear-gradient(45deg, rgba(255,255,255,.03) 0 2px, transparent 2px 14px),linear-gradient(160deg,#6b4a30,var(--soil-dark));border-radius:12px;padding:12px;}
.field-grid{display:grid;grid-template-columns:repeat(6,1fr);gap:6px;}
.orchard-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;max-width:460px;}
.plot{position:relative;aspect-ratio:1/1;border-radius:8px;background:linear-gradient(160deg,var(--soil-light),var(--soil));border:2px solid rgba(0,0,0,.25);display:flex;flex-direction:column;align-items:center;justify-content:center;cursor:pointer;transition:transform .1s, box-shadow .1s;overflow:hidden;}
.plot:hover{transform:translateY(-2px) scale(1.03);box-shadow:0 4px 10px rgba(0,0,0,.35);z-index:2;}
.plot.selected{outline:3px solid var(--wheat);outline-offset:1px;}
.plot.ready{position:relative;}
.plot.ready::after{content:'';position:absolute;inset:0;border-radius:8px;background:radial-gradient(circle, rgba(255,221,140,.6) 0%, rgba(255,221,140,0) 72%);animation:pulseReadyGlow 1.4s ease-in-out infinite;pointer-events:none;}
@keyframes pulseReadyGlow{0%,100%{opacity:.35;}50%{opacity:1;}}
.plot .crop-emoji{font-size:1.5rem;filter:drop-shadow(0 2px 1px rgba(0,0,0,.4));display:inline-block;transform-origin:50% 90%;animation:cropWind 3.6s ease-in-out infinite;animation-delay:calc(var(--wd,0) * -1s);}
.plot .crop-emoji svg{width:1.6em;height:1.6em;display:block;overflow:visible;}
.plot .crop-emoji.rare-glow{filter:drop-shadow(0 0 4px rgba(255,210,90,.85)) drop-shadow(0 2px 1px rgba(0,0,0,.4));}
.plot.pop-grow .crop-emoji{animation:popGrow .55s cubic-bezier(.34,1.56,.64,1);}
@keyframes cropWind{0%,100%{transform:rotate(-3deg);}50%{transform:rotate(3deg);}}
@keyframes popGrow{0%{transform:scale(.3) rotate(0deg);}55%{transform:scale(1.35) rotate(-6deg);}75%{transform:scale(.92) rotate(3deg);}100%{transform:scale(1) rotate(0deg);}}
.field-bg{position:relative;overflow:hidden;}
.field-bg::after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(100deg,transparent 40%,rgba(255,255,255,.05) 48%,rgba(255,255,255,.09) 50%,rgba(255,255,255,.05) 52%,transparent 60%);background-size:220% 100%;animation:windGust 7s linear infinite;}
@keyframes windGust{0%{background-position:120% 0;}100%{background-position:-40% 0;}}
.plot:nth-child(2n) .crop-emoji{animation-duration:3.1s;animation-delay:-.6s;}
.plot:nth-child(3n) .crop-emoji{animation-duration:4.2s;animation-delay:-1.4s;}
.plot:nth-child(5n) .crop-emoji{animation-duration:3.8s;animation-delay:-2.1s;}
.plot .water-bar{position:absolute;left:0;bottom:0;height:4px;width:100%;background:rgba(0,0,0,.35);}
.plot .water-bar i{display:block;height:100%;background:var(--water);}
.plot .badge{position:absolute;top:1px;right:1px;font-size:.62rem;background:rgba(0,0,0,.55);color:#fff;border-radius:5px;padding:0 3px;line-height:1.3;}
.plot .badge.disease{background:#7a1f1f;} .plot .badge.pest{background:#5b6e1f;top:15px;}
.plot .badge.shield{left:1px;top:1px;right:auto;background:#1f5a3a;}
.plot.empty{background:linear-gradient(160deg,#7a5638,var(--soil));}
.plot.empty::after{content:'+';color:rgba(255,255,255,.35);font-size:1.3rem;}
.plot.locked{background:repeating-linear-gradient(45deg,#2a2018,#2a2018 6px,#1c150f 6px,#1c150f 12px);}
.plot.locked .lock-price{font-size:.6rem;color:#d8c39a;font-weight:700;margin-top:2px;}
.plot.locked-bank{background:repeating-linear-gradient(45deg,#5c2020,#5c2020 6px,#3d1414 6px,#3d1414 12px);}
.plot.locked-bank .lock-price{font-size:.6rem;color:#f2c9c9;font-weight:700;margin-top:2px;}

/* ===== 🏦 БАНК: индикатор долга, карточка финансов, кредит ===== */
.debt-pill{transition:.15s;}
.debt-pill.debt-green{border-color:#8fbf7a;color:#2c6e2c;}
.debt-pill.debt-yellow{border-color:#e0b23b;color:#8a6b18;}
.debt-pill.debt-red{border-color:#d16a5f;color:#8a2222;animation:debtPulse 1.6s infinite;}
@keyframes debtPulse{0%,100%{box-shadow:0 2px 4px rgba(0,0,0,.06);}50%{box-shadow:0 0 0 3px rgba(209,106,95,.35);}}
.finance-card{background:var(--cream);border-radius:12px;padding:12px 14px;display:flex;flex-direction:column;gap:6px;}
.finance-row{display:flex;justify-content:space-between;align-items:center;font-size:.82rem;color:var(--soil-dark);gap:10px;}
.finance-row .f-ok{color:#2c6e2c;font-weight:700;}
.finance-row .f-bad{color:#8a2222;font-weight:700;}
.bank-block{display:flex;flex-direction:column;gap:6px;padding:4px 2px 10px;}
.credit-progress{height:8px;border-radius:5px;background:var(--cream-dark);overflow:hidden;border:1px solid var(--soil-light);margin:2px 0;}
.credit-progress-fill{height:100%;background:linear-gradient(90deg,#e0b23b,#8fbf7a);}
.credit-presets{display:flex;gap:8px;flex-wrap:wrap;margin-top:4px;}
.credit-presets .mini-btn{padding:8px 12px;text-align:center;line-height:1.3;}
.orchard-grid .plot{aspect-ratio:1/0.85;}
.field-legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:10px;font-size:.74rem;color:var(--soil-light);}

/* Детали грядки */
.plot-details{margin-top:14px;background:var(--cream);border-radius:12px;padding:14px;border:1px solid var(--cream-dark);min-height:130px;}
.plot-details h3{font-size:1rem;margin-bottom:6px;color:var(--soil-dark);}
.detail-bars{display:flex;flex-direction:column;gap:5px;margin:8px 0;}
.dbar-row{display:flex;align-items:center;gap:8px;font-size:.78rem;}
.dbar-row .label{width:78px;flex-shrink:0;color:var(--soil-light);font-weight:600;}
.dbar-track{flex:1;height:9px;background:#e2d4ba;border-radius:5px;overflow:hidden;}
.dbar-fill{height:100%;border-radius:5px;}
.fill-water{background:var(--water);} .fill-fert{background:#8a6a2f;} .fill-health{background:var(--ok);} .fill-fruit{background:var(--warn);}
.fill-bond{background:linear-gradient(90deg,#c46b9e,#e893c2);transition:width .3s;}
.alert-line{font-size:.8rem;font-weight:600;border-radius:7px;padding:5px 9px;margin-top:4px;display:inline-flex;align-items:center;gap:6px;margin-right:6px;}
.alert-disease{background:#fbe1de;color:#7a1f1f;} .alert-pest{background:#f0eecb;color:#54610f;} .alert-shield{background:#dcebe5;color:#1f5a3a;}
.action-row{display:flex;gap:8px;flex-wrap:wrap;margin-top:12px;}
.action-btn{background:var(--panel);border:1.5px solid var(--soil-light);border-radius:8px;padding:7px 12px;font-size:.78rem;font-weight:600;color:var(--soil-dark);display:flex;align-items:center;gap:5px;transition:.12s;}
.action-btn:hover:not(:disabled){background:var(--cream-dark);}
.action-btn:disabled{opacity:.4;cursor:not-allowed;}
.action-btn.primary{background:var(--grass);color:#fff;border-color:var(--grass-dark);}
.action-btn.primary:hover:not(:disabled){background:var(--grass-dark);}
.action-btn.game{background:var(--gold);color:#3a2a05;border-color:#a5822c;}
.action-btn.game:hover:not(:disabled){filter:brightness(.94);}
.seed-groups{margin-top:8px;display:flex;flex-direction:column;gap:10px;}
.mg-toggle-row{margin:6px 0;}
.mg-toggle{display:flex;align-items:center;gap:6px;font-size:.74rem;font-weight:700;color:var(--soil-dark);cursor:pointer;}
.mg-toggle input{width:15px;height:15px;}
.seed-group-label{font-size:.7rem;font-weight:700;text-transform:uppercase;letter-spacing:.5px;color:var(--soil-light);}
.seed-pick{display:flex;flex-wrap:wrap;gap:7px;margin-top:4px;}
.seed-chip{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:8px;padding:6px 9px;font-size:.78rem;display:flex;gap:6px;align-items:center;font-weight:600;}
.seed-chip:hover:not(:disabled){border-color:var(--gold);}
.seed-chip:disabled{opacity:.35;}
.tree-pick{display:flex;flex-wrap:wrap;gap:7px;margin-top:8px;}

/* Техника */
.fuel-card{display:flex;align-items:center;justify-content:space-between;background:var(--cream);border-radius:12px;padding:12px 15px;margin-bottom:14px;flex-wrap:wrap;gap:10px;}
.fuel-card .fl{display:flex;align-items:center;gap:10px;font-weight:700;}
.fuel-card .fl .big{font-size:1.3rem;font-family:'Fraunces',serif;}
.equip-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;}
.equip-card{background:var(--cream);border-radius:12px;padding:14px;display:flex;flex-direction:column;gap:8px;}
.equip-top{display:flex;justify-content:space-between;align-items:center;}
.equip-name{font-weight:700;font-size:.95rem;display:flex;align-items:center;gap:8px;}
.equip-desc{font-size:.74rem;color:var(--soil-light);line-height:1.4;}
.equip-status{font-size:.68rem;font-weight:700;padding:2px 8px;border-radius:6px;}
.status-ok{background:#dcebd6;color:var(--ok);} .status-broken{background:#fbe1de;color:var(--warn);} .status-locked{background:#e7e0cf;color:#8a7a52;}
.equip-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:4px;}
.wear-block{display:flex;flex-direction:column;gap:5px;margin:2px 0 4px;}
.wear-row{display:flex;align-items:center;gap:8px;}
.wear-label{font-size:.68rem;color:var(--soil-light);min-width:96px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;}
.wear-track{flex:1;height:8px;background:var(--cream-dark);border-radius:5px;overflow:hidden;border:1px solid rgba(0,0,0,.08);}
.wear-fill{height:100%;border-radius:5px;transition:width .3s;}
.wear-fill.wear-ok{background:var(--ok, #4a7c3f);}
.wear-fill.wear-mid{background:#d9a441;}
.wear-fill.wear-bad{background:var(--warn, #b23c3c);}
.wear-fill.wear-ok-inv{background:var(--ok, #4a7c3f);}
.wear-pct{font-size:.66rem;font-weight:700;color:var(--soil-dark);width:32px;text-align:right;}

/* Лавка */
.shop-section{margin-bottom:16px;}
.shop-section h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.6px;color:var(--soil-light);margin-bottom:7px;}
details.shop-section{border:none;}
details.shop-section summary{font-size:.82rem;text-transform:uppercase;letter-spacing:.6px;color:var(--soil-light);margin-bottom:7px;cursor:pointer;list-style:none;display:flex;align-items:center;gap:6px;user-select:none;}
details.shop-section summary::-webkit-details-marker{display:none;}
details.shop-section summary::before{content:'▸';display:inline-block;transition:transform .15s;font-size:.7rem;color:var(--soil-light);}
details.shop-section[open] summary::before{transform:rotate(90deg);}
details.shop-section summary:hover{color:var(--soil-dark);}
.shop-search-row{margin-bottom:10px;}
.shop-search-input{width:100%;box-sizing:border-box;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:9px;padding:8px 12px;font-size:.82rem;color:var(--soil-dark);}
.shop-search-input:focus{outline:none;border-color:var(--grass-dark);}
.shop-grid{display:flex;flex-direction:column;gap:6px;}
.shop-item{display:flex;align-items:center;justify-content:space-between;background:var(--cream);border-radius:8px;padding:7px 10px;font-size:.82rem;flex-wrap:wrap;gap:6px;border-left:3px solid transparent;}
.shop-item.owned{border-left-color:var(--ok);background:#eaf3e6;}
.shop-item .left{display:flex;align-items:center;gap:8px;}
.shop-item .name{font-weight:700;color:var(--soil-dark);}
.shop-item .desc{font-size:.66rem;color:var(--soil-light);display:block;}
.buy-btn{background:var(--soil);color:#fff;border-radius:6px;padding:5px 10px;font-size:.74rem;font-weight:700;}
.buy-btn:hover:not(:disabled){background:var(--soil-dark);}
.buy-btn:disabled{opacity:.4;cursor:not-allowed;}
.own-tag{font-size:.68rem;color:var(--soil-light);margin-right:6px;}
.own-tag.have{color:var(--ok);font-weight:700;}
.cat-tag{font-size:.6rem;font-weight:700;border-radius:5px;padding:1px 6px;margin-left:6px;}
.cat-veg{background:#dcebd6;color:var(--ok);} .cat-fruit{background:#fbe1de;color:var(--warn);} .cat-herb{background:#dceaf0;color:var(--herb);} .cat-tree{background:#eadcc7;color:#7a5a2a;}
.cat-rare{background:#f2e0f7;color:#7a2f8c;}
.cat-perk{background:#fff2cf;color:#8a6620;}
.season-tag{font-size:.6rem;font-weight:700;border-radius:5px;padding:1px 6px;margin-left:6px;background:#e8f0e0;color:var(--soil-light);}
.season-tag.in-season{background:#dcebd6;color:var(--ok);}

/* ===== СОРТА МОРКОВИ / СКЛАД СЕМЯН (js/core/config-carrot-varieties.js) ===== */
.variety-toggle-btn{background:#eadcc7;color:#7a5a2a;border-radius:6px;padding:5px 9px;font-size:.72rem;font-weight:700;margin-left:6px;}
.variety-toggle-btn:hover{background:#e0cba9;}
.variety-toggle-btn.open{background:#7a5a2a;color:#fff;}
.carrot-stock-panel{width:100%;background:#fbf6ea;border:1.5px dashed var(--gold, #c9a24a);border-radius:10px;padding:10px;margin-top:6px;}
.carrot-stock-header{font-size:.74rem;font-weight:700;color:#7a5a2a;margin-bottom:8px;}
.shop-item.variety-item{border-left-width:3px;}
.variety-origin{font-style:italic;margin-top:2px;}
.cv-rarity-tag{font-size:.6rem;font-weight:800;border-radius:5px;padding:1px 6px;margin-left:6px;}

/* Свои SVG-арты сортов (вместо голого эмодзи) в разных местах интерфейса */
.variety-icon.art svg{width:1.8em;height:1.8em;display:inline-block;vertical-align:middle;overflow:visible;}
.seed-chip-icon{display:inline-flex;align-items:center;}
.seed-chip-icon.art svg{width:1.3em;height:1.3em;display:block;overflow:visible;}
.cook-result-icon.art svg{width:3rem;height:3rem;display:inline-block;overflow:visible;}
.shop-tabs{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:14px;position:sticky;top:78px;background:var(--panel);padding:2px 0 8px;z-index:5;}
.shop-tab-btn{background:var(--cream);color:var(--soil-dark);border:1.5px solid var(--cream-dark);border-radius:9px;padding:7px 13px;font-size:.8rem;font-weight:700;display:flex;align-items:center;gap:6px;transition:.12s;}
.shop-tab-btn:hover{background:var(--cream-dark);}
.shop-tab-btn.active{background:var(--grass);color:#fff;border-color:var(--grass-dark);}
.shop-filter-row{display:flex;flex-wrap:wrap;gap:6px;margin-bottom:12px;}
.shop-filter-chip{background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:20px;padding:4px 11px;font-size:.72rem;font-weight:700;color:var(--soil-dark);}
.shop-filter-chip.active{background:var(--wheat);color:#3a2a05;border-color:#a97e1f;}

/* Хлев */
.animal-card{background:var(--cream);border-radius:9px;padding:9px 11px;margin-bottom:8px;display:flex;flex-direction:column;gap:6px;}
.animal-top{display:flex;justify-content:space-between;align-items:center;}
.animal-name{font-weight:700;font-size:.85rem;display:flex;align-items:center;gap:6px;}
.animal-tag{font-size:.65rem;border-radius:5px;padding:1px 6px;font-weight:700;}
.tag-ok{background:#dcebd6;color:var(--ok);} .tag-sick{background:#fbe1de;color:var(--warn);} .tag-hungry{background:#f3e3c2;color:#8a6620;}
.tag-eating{background:#dff0f7;color:#2a6e8c;} .tag-sniffed{background:#eee4d8;color:#9a7a4a;}
.feed-pile-tag{font-size:.66rem;font-weight:700;background:#fff2cf;color:#8a6620;border-radius:6px;padding:2px 8px;margin-right:4px;}
.feed-throw-btn{background:#fff2cf!important;color:#8a6620!important;}
.feed-pile-tag.empty{background:#eee4d8;color:#9a8a6a;}
.feed-picker-modal{max-width:600px;max-height:88vh;overflow-y:auto;text-align:left;}
.feed-pile-status{background:var(--cream);border-radius:9px;padding:8px 12px;font-size:.8rem;font-weight:700;color:var(--soil-dark);margin-bottom:10px;display:flex;align-items:center;gap:6px;}
.feed-pile-status.empty{color:var(--soil-light);font-weight:600;}
.animal-bars{display:flex;flex-direction:column;gap:3px;}
.animal-actions{display:flex;gap:6px;flex-wrap:wrap;}
.mini-btn{background:var(--panel);border:1px solid var(--cream-dark);border-radius:6px;padding:4px 9px;font-size:.7rem;font-weight:700;color:var(--soil-dark);}
.mini-btn:hover:not(:disabled){background:var(--cream-dark);}
.mini-btn:disabled{opacity:.35;}

/* Постройки */
.building-card{background:var(--cream);border-radius:12px;padding:12px 14px;margin-bottom:10px;display:flex;flex-direction:column;gap:6px;}
.building-top{display:flex;justify-content:space-between;align-items:center;}
.building-name{font-weight:700;font-size:.9rem;color:var(--soil-dark);}
.building-lvl{font-size:.68rem;font-weight:700;color:var(--soil-light);background:var(--panel);border-radius:6px;padding:2px 8px;}
.building-actions{display:flex;gap:7px;flex-wrap:wrap;margin-top:2px;}
.pen-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:10px;margin-bottom:6px;}
.pen-species{font-size:.68rem;color:var(--soil-light);}
.pen-group-label{font-size:.74rem;font-weight:800;color:var(--soil-dark);text-transform:uppercase;letter-spacing:.5px;margin:10px 0 6px;display:flex;align-items:center;flex-wrap:wrap;gap:8px;}
.scene-btn{text-transform:none;letter-spacing:0;font-weight:700;}
.mood-chip{font-size:.7rem;font-weight:700;padding:3px 8px;border-radius:7px;display:inline-block;width:fit-content;}
.mood-great{background:#dcebd6;color:var(--ok);} .mood-ok{background:#e8f0e0;color:#5a6a3a;} .mood-low{background:#fbe9d0;color:#9a6a1a;} .mood-bad{background:#fbe1de;color:var(--warn);}
.animal-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:8px;}
.animal-tags-row{display:flex;gap:5px;flex-wrap:wrap;}
.stage-tag{font-size:.62rem;font-weight:700;border-radius:5px;padding:1px 6px;}
.stage-baby{background:#e3ecf5;color:#2b5a8c;} .stage-young{background:#dcebd6;color:var(--ok);} .stage-adult{background:#f3e3c2;color:#8a6620;} .stage-old{background:#e7e0cf;color:#6b5b3a;}
.quality-chip{font-size:.62rem;font-weight:700;border-radius:5px;padding:1px 6px;}
.q-elite{background:#f3e0f8;color:#7a2c8c;} .q-fine{background:#dcebd6;color:var(--ok);} .q-avg{background:#f3e3c2;color:#8a6620;} .q-poor{background:#fbe1de;color:var(--warn);}
.bond-wary{background:#eee3da;color:#8a7862;} .bond-warming{background:#f3e3c2;color:#8a6620;} .bond-trusts{background:#dbe6f5;color:#3a5f8a;} .bond-loves{background:#fbe0ee;color:#a83d76;}
.memorial-card{background:var(--cream);}
.memorial-row{display:flex;flex-wrap:wrap;gap:6px;}
.memorial-chip{font-size:.68rem;font-weight:600;background:var(--cream-dark);border-radius:7px;padding:3px 8px;color:var(--soil-dark);}

/* Склад */
.inv-row{display:flex;justify-content:space-between;align-items:center;background:var(--cream);border-radius:8px;padding:7px 10px;margin-bottom:6px;font-size:.83rem;flex-wrap:wrap;gap:6px;}
.inv-row .qty{font-weight:700;color:var(--soil-dark);}
.inv-row .price{font-size:.7rem;color:var(--soil-light);}
.sell-btn{background:var(--gold);color:#3a2a05;border-radius:6px;padding:5px 11px;font-size:.74rem;font-weight:700;}
.sell-btn:hover:not(:disabled){filter:brightness(.93);}

/* Журнал */
.log-list{display:flex;flex-direction:column;gap:5px;max-height:520px;overflow-y:auto;padding-right:4px;}
.log-entry{font-size:.78rem;background:var(--cream);border-radius:7px;padding:6px 9px;border-left:3px solid var(--soil-light);}
.log-entry.l-disease{border-color:var(--warn);} .log-entry.l-pest{border-color:#6a7a1f;} .log-entry.l-money{border-color:var(--gold);}
.log-entry.l-weather{border-color:var(--water);} .log-entry.l-animal{border-color:#a05a2c;} .log-entry.l-game{border-color:var(--herb);}
.log-entry .day-tag{font-weight:700;color:var(--soil-dark);margin-right:5px;}
.empty-note{font-size:.8rem;color:var(--soil-light);font-style:italic;padding:8px 0;}
footer.credits{max-width:1260px;margin:22px auto 0;padding:0 16px;font-size:.72rem;color:#3d5169;text-align:center;}

/* Модалки */
.modal-overlay{position:fixed;inset:0;background:rgba(20,14,8,.62);z-index:100;display:flex;align-items:center;justify-content:center;padding:16px;}
.modal-box{background:var(--panel);border-radius:16px;padding:20px;max-width:400px;width:100%;box-shadow:0 12px 40px rgba(0,0,0,.4);text-align:center;}
.modal-box h3{font-size:1.15rem;color:var(--soil-dark);margin-bottom:6px;}
.modal-box p{font-size:.82rem;color:var(--soil-light);margin:0 0 14px;line-height:1.4;}
.action-sheet-box{text-align:left;max-width:340px;padding:14px;}
.action-sheet-header{display:flex;align-items:center;justify-content:space-between;font-weight:800;font-size:.92rem;color:var(--soil-dark);margin-bottom:8px;}
.modal-close-x{background:none;border:none;font-size:1rem;color:var(--soil-light);padding:2px 6px;line-height:1;}
.action-sheet-list{display:flex;flex-direction:column;gap:4px;max-height:60vh;overflow-y:auto;}
.sheet-action-btn{display:flex;align-items:center;gap:10px;width:100%;text-align:left;background:var(--cream);border:1px solid var(--cream-dark);border-radius:10px;padding:9px 11px;}
.sheet-action-btn:hover:not(:disabled){background:var(--cream-dark);}
.sheet-action-btn:disabled{opacity:.4;}
.sheet-action-icon{font-size:1.15rem;flex-shrink:0;}
.sheet-action-text{display:flex;flex-direction:column;line-height:1.25;}
.sheet-action-label{font-size:.82rem;font-weight:700;color:var(--soil-dark);}
.sheet-action-sub{font-size:.68rem;color:var(--soil-light);}
.mini-btn.more-btn{padding:4px 10px;font-weight:900;letter-spacing:1px;}
.mini-btn.urgent-btn{border-color:#c0392b;color:#8a2222;background:#fbeceb;}
.mini-btn.urgent-btn:hover:not(:disabled){background:#f7dcda;}
.mg-track{position:relative;height:26px;background:var(--cream-dark);border-radius:13px;overflow:hidden;margin-bottom:16px;border:2px solid var(--soil-light);}
.mg-zone{position:absolute;top:0;bottom:0;background:rgba(74,124,63,.55);}
.mg-marker{position:absolute;top:2px;bottom:2px;width:6px;background:var(--warn);border-radius:3px;}
.pg-field{position:relative;height:220px;background:linear-gradient(160deg,#8a6a48,#5b3d28);border-radius:12px;margin-bottom:12px;overflow:hidden;}
.pg-bug{position:absolute;font-size:1.6rem;cursor:pointer;user-select:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.4));animation:bugPop .25s ease;}
@keyframes bugPop{from{transform:scale(0);}to{transform:scale(1);}}
.pg-score{font-size:.85rem;font-weight:700;color:var(--soil-dark);margin-bottom:10px;}
.modal-close{margin-top:6px;background:transparent;color:var(--soil-light);font-size:.75rem;text-decoration:underline;}

/* Кухня */
.recipe-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:12px;}
.recipe-card{background:linear-gradient(180deg,#fbf6ea,var(--cream));border-radius:13px;padding:13px;display:flex;flex-direction:column;gap:7px;border:1.5px solid transparent;transition:.15s;box-shadow:0 1px 3px rgba(0,0,0,.06);}
.recipe-card:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(0,0,0,.12);}
.recipe-card.can-cook{border-color:var(--gold);box-shadow:0 0 0 1px rgba(200,154,60,.25), 0 4px 10px rgba(200,154,60,.18);}
.recipe-top{display:flex;align-items:center;gap:10px;}
.recipe-icon{font-size:1.95rem;filter:drop-shadow(0 3px 2px rgba(0,0,0,.22));}
.recipe-name{font-weight:700;font-size:.98rem;color:var(--soil-dark);}
.recipe-desc{font-size:.72rem;color:var(--soil-light);line-height:1.35;margin:0;}
.recipe-ing{display:flex;flex-wrap:wrap;gap:5px;margin-top:2px;}
.ing-chip{font-size:.68rem;font-weight:700;border-radius:6px;padding:2px 7px;background:var(--panel);border:1px solid var(--cream-dark);}
.ing-chip.ok{color:var(--ok);border-color:#bfe0b0;} .ing-chip.no{color:var(--warn);border-color:#f0bcae;}
.recipe-foot{display:flex;align-items:center;justify-content:space-between;margin-top:4px;}
.recipe-price{font-size:.72rem;color:#7a5b18;font-weight:700;}
.cook-btn{background:linear-gradient(180deg,#ffcf72,var(--gold));color:#3a2a05;font-weight:800;font-size:.8rem;border-radius:9px;padding:8px 15px;box-shadow:0 3px 0 #8a6a1f, inset 0 1px 0 rgba(255,255,255,.5);transition:transform .08s;}
.cook-btn:hover:not(:disabled){filter:brightness(1.05);}
.cook-btn:active:not(:disabled){transform:translateY(2px);box-shadow:0 1px 0 #8a6a1f;}
.cook-btn:disabled{opacity:.4;cursor:not-allowed;box-shadow:none;}
.dish-stock{font-size:.68rem;color:var(--soil-light);}

.cook-modal-box{max-width:440px;position:relative;background:linear-gradient(180deg,#fffdf8,var(--panel) 60%);border:1px solid rgba(138,98,64,.22);box-shadow:0 2px 0 rgba(255,255,255,.6) inset, 0 20px 46px rgba(30,18,8,.38), 0 2px 6px rgba(30,18,8,.12);overflow:hidden;animation:cookModalIn .22s cubic-bezier(.22,1.1,.4,1);}
.cook-modal-box::before{content:'';position:absolute;top:0;left:0;right:0;height:4px;background:linear-gradient(90deg,var(--gold),#e8a73c,var(--wheat),var(--gold));background-size:200% 100%;animation:goldSheen 3.4s linear infinite;}
@keyframes goldSheen{0%{background-position:0% 0;}100%{background-position:200% 0;}}
@keyframes cookModalIn{from{opacity:0;transform:translateY(10px) scale(.97);}to{opacity:1;transform:none;}}
.cook-progress{display:flex;gap:6px;margin-bottom:14px;justify-content:center;}
.cook-progress span{width:22px;height:7px;border-radius:4px;background:var(--cream-dark);transition:.25s;box-shadow:inset 0 1px 2px rgba(0,0,0,.12);}
.cook-progress span.done{background:linear-gradient(90deg,#6fae46,var(--ok));box-shadow:0 0 6px rgba(74,124,63,.55);}
.cook-progress span.current{background:linear-gradient(90deg,#ffd77a,var(--gold));box-shadow:0 0 8px rgba(200,154,60,.7);animation:progressPulse 1s ease-in-out infinite;}
@keyframes progressPulse{0%,100%{transform:scaleY(1);}50%{transform:scaleY(1.35);}}
.cook-step-icon{font-size:2.2rem;margin-bottom:2px;animation:cookBob 1.2s ease-in-out infinite;}
@keyframes cookBob{0%,100%{transform:translateY(0) rotate(0);}50%{transform:translateY(-4px) rotate(-4deg);}}
.cook-step-label{font-size:1.05rem;font-weight:800;color:var(--soil-dark);margin-bottom:4px;letter-spacing:.1px;text-shadow:0 1px 0 rgba(255,255,255,.5);}
.cook-step-hint{font-size:.76rem;color:var(--soil-light);margin-bottom:14px;}
.craft-stage-label{font-size:.72rem;font-weight:700;color:var(--gold);text-transform:uppercase;letter-spacing:.4px;margin:-6px 0 10px;text-align:center;}

.mash-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:14px;}
.mash-emoji{font-size:3.2rem;transition:transform .07s;user-select:none;}
.mash-emoji.bounce{transform:scale(1.3) rotate(-8deg);}
.mash-bar-track{width:100%;height:15px;background:var(--cream-dark);border-radius:8px;overflow:hidden;border:1.5px solid var(--soil-light);box-shadow:inset 0 2px 4px rgba(0,0,0,.18);}
.mash-bar-fill{height:100%;background:linear-gradient(90deg,#e8a73c,var(--gold));width:0%;transition:width .08s;box-shadow:0 0 8px rgba(200,154,60,.55) inset;position:relative;}
.mash-bar-fill::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.4),transparent 55%);}
.mash-count{font-size:.76rem;color:var(--soil-light);font-weight:700;}
.hunt-distance-label{font-size:.82rem;color:var(--soil-dark);background:rgba(74,124,63,.12);border-radius:8px;padding:3px 10px;margin-bottom:2px;}
.mash-btn{background:var(--soil);color:#fff;font-weight:800;font-size:1.05rem;padding:16px 30px;border-radius:14px;box-shadow:0 4px 0 var(--soil-dark);width:100%;transition:transform .05s;}
.mash-btn:active{transform:translateY(3px) scale(.98);box-shadow:0 1px 0 var(--soil-dark);}

.heat-track{position:relative;height:30px;background:linear-gradient(90deg,#7fa8c9 0%,#e8d17f 40%,#e8a73c 62%,#b3492a 85%,#4a1c0c 100%);border-radius:15px;overflow:hidden;margin-bottom:6px;border:2px solid var(--soil-light);}
.heat-zone{position:absolute;top:0;bottom:0;background:rgba(255,255,255,.4);border-left:2px dashed rgba(255,255,255,.9);border-right:2px dashed rgba(255,255,255,.9);}
.heat-marker{position:absolute;top:-3px;bottom:-3px;width:5px;background:#20140a;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.7);}
.heat-labels{display:flex;justify-content:space-between;font-size:.64rem;color:var(--soil-light);font-weight:700;margin-bottom:12px;padding:0 2px;}
.heat-labels span:nth-child(2){color:var(--ok);}
.heat-labels span:last-child{color:var(--warn);}
.heat-flame{font-size:1.4rem;display:inline-block;animation:flameFlicker .45s infinite alternate;}
@keyframes flameFlicker{from{transform:scale(1) rotate(-4deg);} to{transform:scale(1.18) rotate(4deg);}}

.hold-track{width:100%;height:22px;background:var(--cream-dark);border-radius:11px;overflow:hidden;position:relative;margin-bottom:14px;border:2px solid var(--soil-light);box-shadow:inset 0 2px 5px rgba(0,0,0,.22);}
.hold-zone{position:absolute;top:0;bottom:0;background:linear-gradient(180deg,rgba(140,214,120,.4),rgba(74,124,63,.6));border-left:2px dashed rgba(255,255,255,.85);border-right:2px dashed rgba(255,255,255,.85);}
.hold-fill{height:100%;background:linear-gradient(90deg,#3d7ea6,#5aa0c9);width:0%;transition:background .15s;box-shadow:0 0 10px rgba(90,160,201,.6) inset,2px 0 6px rgba(61,126,166,.5);position:relative;}
.hold-fill::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.35),transparent 55%);}
.hold-fill.overdraw{background:linear-gradient(90deg,#c0392b,#e74c3c);animation:overdrawPulse .4s ease-in-out infinite alternate;}

/* 🔨 Формовка ковкой — новая мини-игра кузницы */
.forge-modal{max-width:460px;}
.forge-heat-row{display:flex;align-items:center;gap:8px;margin-bottom:14px;}
.forge-heat-label{font-size:.76rem;font-weight:700;color:var(--soil-dark);white-space:nowrap;}
.forge-heat-track{flex:1;height:14px;background:var(--cream-dark);border-radius:8px;overflow:hidden;border:2px solid var(--soil-light);}
.forge-heat-fill{height:100%;transition:width .2s,background .2s;}
.forge-bench{display:flex;align-items:flex-end;justify-content:center;gap:6px;height:150px;background:#2a2018;border-radius:12px;padding:10px 8px 0;margin-bottom:12px;transition:box-shadow .2s;}
.forge-bench.forge-cold{box-shadow:inset 0 0 0 2px #5a6a78;}
.forge-seg{position:relative;flex:1;max-width:56px;height:100%;background:rgba(255,255,255,.06);border-radius:5px 5px 0 0;overflow:hidden;cursor:pointer;display:flex;align-items:flex-end;}
.forge-seg:active{filter:brightness(1.15);}
.forge-seg-fill{width:100%;transition:height .15s ease-out,background .15s;border-radius:3px 3px 0 0;}
.forge-seg-fill.forge-seg-good{box-shadow:0 0 0 2px #6fae46 inset;}
.forge-seg-fill.forge-seg-ok{box-shadow:0 0 0 2px #e0b23a inset;}
.forge-seg-fill.forge-seg-bad{box-shadow:0 0 0 2px rgba(255,255,255,0) inset;}
.forge-seg-target{position:absolute;left:0;right:0;height:2px;background:#fff;opacity:.85;z-index:2;box-shadow:0 0 3px rgba(255,255,255,.8);}
.forge-actions-row{display:flex;align-items:center;justify-content:space-between;gap:8px;margin-bottom:4px;}
.forge-hits-left{font-size:.76rem;font-weight:700;color:var(--soil-dark);}
@keyframes overdrawPulse{from{filter:brightness(1);}to{filter:brightness(1.35);}}

/* Жёрнов — круговая рукоять */
.grind-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:14px;}
.grind-stone{font-size:3.2rem;user-select:none;transition:transform .12s linear;}
.grind-board{position:relative;width:150px;height:150px;margin:0 auto 2px;touch-action:none;cursor:grab;}
.grind-board.active{cursor:grabbing;}
.grind-stone2{position:absolute;inset:0;border-radius:50%;background:radial-gradient(circle at 35% 30%,#a39b8e,#6b6459 62%,#4a443c);border:5px solid var(--soil-light);box-shadow:inset 0 4px 10px rgba(0,0,0,.35),0 3px 6px rgba(0,0,0,.25);overflow:hidden;}
.grind-stone-tex{position:absolute;inset:8%;border-radius:50%;background:repeating-conic-gradient(rgba(255,255,255,.07) 0deg 9deg,rgba(0,0,0,.08) 9deg 18deg);transition:transform .05s linear;}
.grind-dial{position:absolute;inset:0;transform-origin:50% 50%;transition:transform .04s linear;}
.grind-handle{position:absolute;top:50%;left:87%;width:24px;height:24px;margin:-12px 0 0 -12px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f0c98a,#8a5726);box-shadow:0 2px 5px rgba(0,0,0,.4),0 0 0 4px rgba(255,255,255,.08);}
.grind-board.active .grind-handle{box-shadow:0 2px 5px rgba(0,0,0,.4),0 0 0 6px rgba(255,255,255,.16);}
.grind-bar-track{width:100%;height:15px;background:var(--cream-dark);border-radius:8px;overflow:hidden;border:1.5px solid var(--soil-light);}
.grind-bar-fill{height:100%;background:linear-gradient(90deg,#c89a3c,var(--wheat));width:0%;transition:width .08s;}

.proof-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:14px;}
.proof-dough{font-size:3.2rem;user-select:none;transition:transform .3s ease-out;}
.proof-track{position:relative;width:100%;height:14px;background:var(--cream-dark);border-radius:7px;overflow:hidden;border:1.5px solid var(--soil-light);}
.proof-zone{position:absolute;top:0;bottom:0;background:rgba(74,124,63,.5);}
.proof-marker{position:absolute;top:-2px;bottom:-2px;width:4px;background:var(--soil-dark);border-radius:2px;}

.pantry-bar{display:flex;flex-wrap:wrap;gap:7px;align-items:center;margin-bottom:12px;padding:9px 11px;background:var(--cream);border-radius:10px;}
.pantry-chip{font-size:.72rem;font-weight:700;background:var(--panel);border:1px solid var(--cream-dark);border-radius:7px;padding:3px 8px;color:var(--soil-dark);}
.pantry-chip.empty{color:var(--warn);border-color:#f0bcae;}
.pantry-hint{font-size:.68rem;color:var(--soil-light);margin-left:auto;}
.ing-chip.pantry-ing{background:#eef3ea;}
.hold-btn{background:var(--herb);color:#fff;font-weight:800;font-size:1rem;padding:16px 30px;border-radius:14px;box-shadow:0 4px 0 #1c4553;width:100%;transition:transform .05s;}
.hold-btn:active{transform:translateY(3px) scale(.98);box-shadow:0 1px 0 #1c4553;}

.cook-result-wrap{padding:6px 0;}
.cook-result-icon{font-size:3.4rem;margin-bottom:4px;animation:resultPop .38s cubic-bezier(.22,1.7,.4,1);filter:drop-shadow(0 6px 8px rgba(0,0,0,.25));}
@keyframes resultPop{0%{transform:scale(0) rotate(-25deg);opacity:0;}60%{transform:scale(1.18) rotate(6deg);opacity:1;}100%{transform:scale(1) rotate(0);}}
.quality-tag{display:inline-block;padding:6px 16px;border-radius:20px;font-weight:800;font-size:.85rem;margin:8px 0;letter-spacing:.2px;box-shadow:0 2px 5px rgba(0,0,0,.12), inset 0 1px 0 rgba(255,255,255,.5);animation:tagPop .28s ease;}
@keyframes tagPop{from{transform:scale(.7);opacity:0;}to{transform:scale(1);opacity:1;}}
.q-perfect{background:linear-gradient(180deg,#e9f7e2,#dcebd6);color:var(--ok);box-shadow:0 2px 5px rgba(74,124,63,.25), inset 0 1px 0 rgba(255,255,255,.6);}
.q-good{background:linear-gradient(180deg,#fff3d8,#fbeecd);color:#7a5b18;}
.q-meh{background:linear-gradient(180deg,#efe9d9,#e7e0cf);color:#6b5b3a;}
.q-bad{background:linear-gradient(180deg,#fce3e0,#fbe1de);color:#7a1f1f;}
.q-perfect::before{content:'✨ ';} .q-good::before{content:'👍 ';} .q-meh::before{content:'😐 ';} .q-bad::before{content:'💥 ';}
.steam{position:relative;}
.steam::before,.steam::after{content:'';position:absolute;bottom:100%;width:7px;height:18px;background:rgba(255,255,255,.6);border-radius:50%;filter:blur(2.5px);animation:steamRise 1.8s ease-in infinite;}
.steam::before{left:36%;animation-delay:0s;} .steam::after{left:58%;animation-delay:.6s;}
.steam::after{width:5px;height:14px;}
@keyframes steamRise{0%{opacity:0;transform:translateY(0) scale(1) translateX(0);}25%{opacity:.75;}100%{opacity:0;transform:translateY(-32px) scale(1.7) translateX(6px);}}

/* Фуллскрин / ротация */
.fullscreen-btn{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:9px;padding:8px 11px;font-size:.95rem;box-shadow:0 2px 4px rgba(0,0,0,.08);}
.fullscreen-btn:hover{background:var(--cream);}
.rotate-hint{position:fixed;inset:0;background:rgba(20,14,8,.92);z-index:200;display:none;flex-direction:column;align-items:center;justify-content:center;color:#fff;text-align:center;padding:20px;}
.rotate-hint.show{display:flex;}
.rotate-hint .r-icon{font-size:3.2rem;animation:rotatePhone 1.6s ease-in-out infinite;margin-bottom:14px;}
@keyframes rotatePhone{0%,100%{transform:rotate(0deg);}45%{transform:rotate(-85deg);}55%{transform:rotate(-90deg);}}
.rotate-hint p{max-width:260px;font-size:.9rem;line-height:1.4;color:#e3d4b6;}
.rotate-hint button{margin-top:16px;background:var(--grass);color:#fff;font-weight:700;border-radius:9px;padding:9px 18px;font-size:.82rem;}

/* Карта */
.farm-map{position:relative;width:100%;aspect-ratio:4/3;border-radius:16px;overflow:hidden;
  background:radial-gradient(ellipse 30% 26% at 15% 22%, #4f8fb0 0%, #3d7ea6 55%, transparent 100%),
    radial-gradient(ellipse 46% 60% at 68% 46%, #6b4a30 0%, #5b3d28 60%, transparent 100%),
    linear-gradient(160deg,#6fa858,#4f7942 55%,#3a5c30);
  border:3px solid var(--soil-dark);box-shadow:inset 0 0 40px rgba(0,0,0,.25);}
.farm-map::before{content:'';position:absolute;inset:0;background-image:radial-gradient(circle,rgba(255,255,255,.08) 1px,transparent 1px);background-size:14px 14px;opacity:.5;pointer-events:none;}

/* Пины: круглая «плашка» под иконкой + подпись ВСЕГДА видна (мелким шрифтом, с обрезкой
   по ширине как страховкой) — прятать, куда ведёт точка, оказалось хуже, чем немного тесно. */
.map-pin{position:absolute;transform:translate(-50%,-100%);display:flex;flex-direction:column;align-items:center;
  gap:2px;background:transparent;padding:6px;margin:-6px;z-index:3;}
.map-pin-icon{font-size:1.25rem;line-height:1;display:flex;align-items:center;justify-content:center;width:1.9rem;height:1.9rem;
  background:radial-gradient(circle at 35% 30%, #fff8e6, #f0dfb8 70%);border:2px solid rgba(58,42,5,.35);
  border-radius:50%;box-shadow:0 3px 6px rgba(0,0,0,.35);transition:transform .15s;}
.map-pin:active .map-pin-icon{transform:scale(1.15);}
.map-pin.here .map-pin-icon{border-color:var(--gold);box-shadow:0 0 0 4px rgba(200,154,60,.35),0 3px 6px rgba(0,0,0,.35);animation:pinBounce 1.6s ease-in-out infinite;}
@keyframes pinBounce{0%,100%{transform:translateY(0);}50%{transform:translateY(-4px);}}
.map-pin-label{font-size:.54rem;font-weight:800;background:rgba(20,14,8,.8);color:#fff;border-radius:5px;padding:1px 5px;
  max-width:5.4em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.map-pin.here .map-pin-label{background:rgba(200,154,60,.95);color:#3a2a05;}
.map-player{position:absolute;font-size:1.5rem;transform:translate(-50%,-90%);transition:left .4s ease, top .4s ease;filter:drop-shadow(0 3px 2px rgba(0,0,0,.5));z-index:4;left:50%;top:50%;}
.map-player.walking{animation:walkBob .28s ease-in-out infinite;}
@keyframes walkBob{0%,100%{transform:translate(-50%,-90%) translateY(0) rotate(0deg);}50%{transform:translate(-50%,-90%) translateY(-5px) rotate(-6deg);}}
.map-roads{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;z-index:1;}
.map-roads path{fill:none;stroke:rgba(255,248,224,.5);stroke-width:.6;stroke-dasharray:2 2;}
.map-decor{position:absolute;transform:translate(-50%,-100%);pointer-events:none;z-index:1;filter:drop-shadow(0 2px 2px rgba(0,0,0,.35));opacity:.7;}
.map-cloud{position:absolute;font-size:1.5rem;opacity:.5;pointer-events:none;z-index:2;animation:cloudDrift linear infinite;filter:drop-shadow(0 2px 2px rgba(0,0,0,.2));}
.map-cloud.c1{top:5%;animation-duration:75s;}
.map-cloud.c2{top:12%;animation-duration:100s;animation-delay:-35s;font-size:1.1rem;}
.map-cloud.c3{top:2%;animation-duration:85s;animation-delay:-55s;font-size:1.3rem;}
@keyframes cloudDrift{from{left:-15%;}to{left:115%;}}
.map-note{font-size:.76rem;color:var(--soil-light);margin-top:8px;}

/* Рыбалка */
.fish-pond-scene{position:relative;border-radius:14px;overflow:hidden;margin-bottom:14px;height:150px;
  background:linear-gradient(180deg,#bcd8e8 0%,#7fa8c9 18%,#3d7ea6 55%,#2c5c7c 100%);}
.fish-pond-scene.loc-river{background:linear-gradient(180deg,#c8e2df 0%,#7fb3a8 18%,#3d8f7e 55%,#265c50 100%);}
.fish-pond-scene.loc-lake{background:linear-gradient(180deg,#d7e6ef 0%,#8fb0c9 18%,#4a6f96 55%,#2c3f5c 100%);}
.fish-pond-scene.loc-sea{background:linear-gradient(180deg,#cdeaf0 0%,#5fa8c4 18%,#276c95 55%,#123a54 100%);}
.fish-pond-water{position:absolute;inset:0;}
.fish-ripple{position:absolute;border:2px solid rgba(255,255,255,.55);border-radius:50%;width:34px;height:34px;animation:rippleGrow 3.2s ease-out infinite;}
.fish-ripple.r1{left:20%;top:55%;animation-delay:0s;} .fish-ripple.r2{left:65%;top:35%;animation-delay:1.4s;} .fish-ripple.r3{left:44%;top:70%;animation-delay:.8s;}
@keyframes rippleGrow{0%{transform:scale(.2);opacity:.8;}100%{transform:scale(3.2);opacity:0;}}
.fish-bait-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:6px;}
.fish-modal-box{max-width:460px;}
.fish-hint-small{font-size:.68rem;color:var(--soil-light);text-align:center;margin:0 0 10px;}
.fish-wait-pond{position:relative;height:100px;border-radius:12px;overflow:hidden;margin:10px 0;background:linear-gradient(180deg,#7fa8c9,#3d7ea6);}
.fish-wait-pond .fish-ripple{border-color:rgba(255,255,255,.7);}
.fish-bobber{position:absolute;left:50%;top:40%;transform:translate(-50%,-50%);font-size:1.3rem;animation:bobberFloat 1.4s ease-in-out infinite;}
.fish-bobber.dip{animation:bobberDip .35s ease-in-out infinite;}
@keyframes bobberFloat{0%,100%{transform:translate(-50%,-50%) translateY(0);}50%{transform:translate(-50%,-50%) translateY(6px);}}
@keyframes bobberDip{0%,100%{transform:translate(-50%,-50%) translateY(0) scale(1);}50%{transform:translate(-50%,-50%) translateY(20px) scale(.85);}}
.rod-card{background:var(--cream);border-radius:10px;padding:10px 12px;margin-bottom:6px;display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;}
.rod-card.owned{border:1.5px solid var(--gold);}

/* Локации / снаряжение */
.loc-row{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px;}
.loc-chip{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:10px;padding:8px 12px;font-size:.78rem;font-weight:700;color:var(--soil-dark);display:flex;flex-direction:column;align-items:center;gap:2px;min-width:78px;}
.loc-chip .lname{font-size:.7rem;font-weight:700;}
.loc-chip.active{border-color:var(--gold);background:linear-gradient(180deg,#fff8e4,var(--cream));box-shadow:0 2px 6px rgba(200,154,60,.35);}
.loc-chip.locked{opacity:.5;}
.gear-strip{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;}
.gear-chip{background:var(--cream);border-radius:9px;padding:6px 10px;font-size:.72rem;font-weight:700;color:var(--soil-dark);display:flex;align-items:center;gap:5px;border:1.5px solid var(--cream-dark);}
.gear-bar-mini{width:44px;height:6px;background:var(--cream-dark);border-radius:3px;overflow:hidden;}
.gear-bar-mini i{display:block;height:100%;background:var(--ok);}
.tackle-part-card{background:var(--cream);border-radius:10px;padding:9px 11px;margin-bottom:6px;}
.tackle-part-card .tp-top{display:flex;justify-content:space-between;align-items:center;gap:8px;flex-wrap:wrap;}
.tackle-part-card .tp-stats{font-size:.68rem;color:var(--soil-light);margin-top:3px;}
.tackle-tier-track{display:flex;gap:3px;margin-top:6px;}
.tackle-tier-track span{flex:1;height:5px;border-radius:3px;background:var(--cream-dark);}
.tackle-tier-track span.on{background:var(--gold);}

/* Заброс */
.cast-power-track{position:relative;height:34px;background:linear-gradient(90deg,#8a6240 0%,#4a7c3f 45%,#c89a3c 70%,#b3492a 100%);border-radius:17px;overflow:hidden;margin-bottom:8px;border:2px solid var(--soil-light);}
.cast-sweet{position:absolute;top:0;bottom:0;background:rgba(255,255,255,.35);border-left:2px dashed rgba(255,255,255,.9);border-right:2px dashed rgba(255,255,255,.9);}
.cast-marker{position:absolute;top:-3px;bottom:-3px;width:5px;background:#20140a;border-radius:3px;box-shadow:0 0 5px rgba(0,0,0,.6);}
.cast-labels{display:flex;justify-content:space-between;font-size:.62rem;color:var(--soil-light);font-weight:700;margin-bottom:10px;}

/* Подсечка QTE */
.hookset-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin:8px 0 14px;}
.hookset-btn{background:linear-gradient(180deg,#e8a73c,var(--warn));color:#fff;font-weight:900;font-size:1.15rem;padding:20px 40px;border-radius:16px;box-shadow:0 5px 0 #7a1f10;animation:hookPulse .5s infinite;letter-spacing:.5px;}
@keyframes hookPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.06);}}
.hookset-timebar{width:100%;height:10px;background:var(--cream-dark);border-radius:5px;overflow:hidden;border:1.5px solid var(--soil-light);}
.hookset-timebar i{display:block;height:100%;background:linear-gradient(90deg,var(--warn),#e8a73c);width:100%;}

/* Вываживание */
.fight-wrap{margin-bottom:8px;}
.fight-scene{position:relative;height:90px;border-radius:12px;overflow:hidden;margin-bottom:10px;background:linear-gradient(180deg,#3d7ea6,#1e4a63);border:2px solid var(--soil-light);}
.fight-fish{position:absolute;top:50%;font-size:2rem;transform:translate(-50%,-50%);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5));transition:left .12s linear,transform .12s linear;}
.fight-rod{position:absolute;bottom:4px;right:6px;font-size:1.6rem;transform-origin:bottom right;transition:transform .1s;filter:drop-shadow(0 2px 2px rgba(0,0,0,.4));}
.fight-run-alert{position:absolute;top:6px;left:50%;transform:translateX(-50%);background:rgba(179,73,42,.92);color:#fff;font-weight:800;font-size:.72rem;padding:3px 10px;border-radius:8px;opacity:0;transition:opacity .15s;white-space:nowrap;}
.fight-run-alert.show{opacity:1;}
.fight-bar-row{margin-bottom:6px;}
.fight-bar-label{display:flex;justify-content:space-between;font-size:.66rem;color:var(--soil-light);font-weight:700;margin-bottom:2px;}
.fight-bar-track{height:15px;background:var(--cream-dark);border-radius:8px;overflow:hidden;border:1.5px solid var(--soil-light);position:relative;}
.fight-bar-fill{height:100%;width:0%;transition:width .1s linear,background .15s;}
.fight-tension-danger{position:absolute;top:0;bottom:0;right:0;background:repeating-linear-gradient(45deg,rgba(179,73,42,.35),rgba(179,73,42,.35) 5px,transparent 5px,transparent 10px);}
.reel-btn{width:100%;background:linear-gradient(180deg,#5a8bb0,var(--water));color:#fff;font-weight:900;font-size:1rem;padding:18px;border-radius:14px;box-shadow:0 5px 0 #1e4a63;user-select:none;touch-action:none;transition:transform .05s;}
.reel-btn.holding{transform:translateY(3px);box-shadow:0 2px 0 #1e4a63;background:linear-gradient(180deg,#4a7c3f,var(--ok));}
.fight-hint{font-size:.7rem;color:var(--soil-light);text-align:center;margin:6px 0 0;}

/* Журнал рыбака */
.journal-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(108px,1fr));gap:8px;margin-top:6px;}
.journal-card{background:var(--cream);border-radius:10px;padding:8px;text-align:center;border:1.5px solid transparent;}
.journal-card.caught{border-color:var(--gold);background:linear-gradient(180deg,#fff8e4,var(--cream));}
.journal-card .jicon{font-size:1.5rem;display:block;margin-bottom:3px;}
.journal-card .jname{font-size:.68rem;font-weight:700;color:var(--soil-dark);display:block;}
.journal-card .jbest{font-size:.62rem;color:var(--soil-light);display:block;}
.rarity-tag{display:inline-block;font-size:.6rem;font-weight:800;padding:1px 6px;border-radius:5px;margin-top:2px;}
.r-common{background:#e7e0cf;color:#6b5b3a;} .r-uncommon{background:#dcebd6;color:var(--ok);} .r-rare{background:#dceaf0;color:#1f5a7a;}
.r-legendary{background:#f3ddb0;color:#8a5b0a;} .r-mythic{background:linear-gradient(90deg,#f0c8e8,#d3b0f0);color:#5a1f7a;}

/* Лес */
.forest-scene{position:relative;border-radius:14px;overflow:hidden;margin-bottom:14px;height:80px;
  background:linear-gradient(180deg,#7fae6a 0%,#4f7942 45%,#2f5424 100%);}
.forest-scene::before{content:'🌲🌳🌲 🌳🌲 🌲🌳🌲🌳 🌲 🌳🌲🌳🌲';position:absolute;bottom:-6px;left:0;right:0;font-size:1.6rem;letter-spacing:6px;opacity:.9;white-space:nowrap;overflow:hidden;}
.hunt-condition-banner{background:var(--cream);border:1.5px dashed var(--soil-light);border-radius:10px;padding:9px 13px;font-size:.78rem;color:var(--soil-dark);margin-bottom:14px;line-height:1.4;}
.hunt-wind-banner{background:var(--cream);border:1.5px dashed var(--soil-light);border-radius:10px;padding:9px 13px;font-size:.78rem;color:var(--soil-dark);margin:-6px 0 14px;line-height:1.4;}
.track-sign-card{display:flex;align-items:center;gap:10px;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:12px;padding:10px 14px;margin-bottom:12px;text-align:left;}
.track-sign-icon{font-size:1.8rem;flex-shrink:0;}
.track-sign-info{display:flex;flex-direction:column;gap:3px;}
.track-sign-name{font-size:.84rem;font-weight:700;color:var(--soil-dark);}
.compass-grid{display:grid;grid-template-columns:repeat(3,54px);grid-template-rows:repeat(3,54px);gap:7px;justify-content:center;margin:10px auto 4px;}
.compass-btn{background:var(--cream);border:2px solid var(--soil-light);border-radius:12px;font-size:1.3rem;display:flex;align-items:center;justify-content:center;transition:.12s;}
.compass-btn:not([disabled]):active{transform:scale(.92);background:var(--gold);}
.compass-btn:not([disabled]){border-color:var(--ok);box-shadow:0 2px 0 rgba(74,124,63,.35);}
.compass-btn.ruled-out{opacity:.28;filter:grayscale(1);border-color:var(--cream-dark);}
.compass-center{display:flex;align-items:center;justify-content:center;font-size:1.2rem;opacity:.6;}
.durability-row{display:flex;align-items:center;gap:6px;margin:2px 2px 10px;flex-wrap:wrap;}
.durability-track{flex:1;min-width:60px;height:8px;background:var(--cream-dark);border-radius:5px;overflow:hidden;}
.durability-fill{height:100%;transition:width .2s;}
.durability-fill.q-perfect{background:var(--ok);}
.durability-fill.q-good{background:#8bb85c;}
.durability-fill.q-meh{background:var(--gold);}
.durability-fill.q-bad{background:#c0392b;}
.hunt-gear-bar{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:12px;margin-bottom:16px;}
.hunt-gear-card{background:var(--cream);border-radius:12px;padding:12px 14px;border:1.5px solid var(--cream-dark);}
.hunt-gear-card h4{font-size:.82rem;text-transform:uppercase;letter-spacing:.5px;color:var(--soil-light);margin-bottom:8px;}
.forest-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(130px,1fr));gap:10px;}
.forest-spot{background:var(--cream);border-radius:12px;padding:12px 10px;text-align:center;border:1.5px solid var(--cream-dark);transition:.15s;}
.forest-spot.ready{border-color:var(--gold);background:linear-gradient(180deg,#fff8e4,var(--cream));box-shadow:0 2px 8px rgba(200,154,60,.3);}
.forest-spot .fs-icon{font-size:2rem;display:block;margin-bottom:4px;}
.forest-spot.ready .fs-icon{animation:pinBounce 1.4s ease-in-out infinite;}
.forest-spot .fs-name{font-size:.76rem;font-weight:700;color:var(--soil-dark);display:block;margin-bottom:2px;}
.forest-spot .fs-status{font-size:.66rem;color:var(--soil-light);display:block;margin-bottom:8px;}
.forest-spot.ready .fs-status{color:var(--ok);font-weight:700;}

.forest-stats{font-size:.76rem;color:var(--soil-light);margin-top:10px;}

/* ===== ПЕЩЕРА: тёмный камень + тёплый отблеск факела, отдельно от солнечного леса ===== */
.cave-scene{position:relative;border-radius:14px;overflow:hidden;margin-bottom:14px;height:64px;
  background:radial-gradient(ellipse at 30% 120%, #4a3420 0%, #2a1f16 45%, #17120d 100%);}
.cave-scene::before{content:'⛰️ 🪨 ⛏️ 🪨 🕳️ 🪨 ⛰️';position:absolute;bottom:-4px;left:0;right:0;font-size:1.4rem;letter-spacing:10px;opacity:.55;white-space:nowrap;overflow:hidden;text-align:center;}
.cave-gear-row{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-bottom:12px;}
@media(max-width:520px){.cave-gear-row{grid-template-columns:1fr;}}
.cave-gear-card{background:#241c15;border:1.5px solid #46362450;border-radius:12px;padding:12px;color:#e9dcc4;}
.cave-gear-title{font-weight:800;font-size:.85rem;margin-bottom:2px;}
.cave-gear-sub{font-size:.68rem;color:#b8a689;margin-bottom:8px;}
.cave-gear-card .action-btn{width:100%;justify-content:center;}
.cave-enter-btn{width:100%;justify-content:center;padding:12px;font-size:.9rem;margin-bottom:6px;}
.cave-hint{font-size:.72rem;color:var(--soil-light);margin:2px 0 10px;}
.cave-injury-banner{background:#3a1c16;border:1.5px solid #7a3a2a;color:#f1c9b8;border-radius:12px;padding:16px;font-size:.85rem;font-weight:700;line-height:1.5;text-align:center;}
.cave-torch-bar{display:flex;align-items:center;gap:8px;background:#241c15;border-radius:10px;padding:8px 12px;margin-bottom:6px;color:#e9dcc4;font-size:.78rem;font-weight:700;}
.cave-torch-bar .dbar-track{background:#3a2c1c;}
.fill-bad{background:var(--warn);}
.cave-layer-label{font-size:.78rem;font-weight:800;color:var(--soil-dark);margin:14px 0 8px;display:flex;align-items:center;gap:8px;}
.cave-risk{font-size:.66rem;font-weight:600;color:var(--warn);background:#f6e2da;border-radius:6px;padding:2px 7px;}
.cave-layer-nav{display:flex;align-items:center;justify-content:space-between;gap:8px;background:#241c15;border-radius:12px;padding:8px 10px;margin:10px 0;}
.cave-layer-current{flex:1;text-align:center;font-size:.8rem;font-weight:800;color:#e9dcc4;display:flex;align-items:center;justify-content:center;gap:8px;}

/* ===== ⛏️ Мини-игры добычи (js/minigames/mg-cave-mining.js) ===== */
.mine-track{position:relative;height:34px;background:#241c15;border-radius:8px;margin:10px 0;cursor:pointer;overflow:hidden;}
.mine-zone{position:absolute;top:0;bottom:0;background:rgba(200,154,60,.45);border-left:2px solid var(--gold);border-right:2px solid var(--gold);}
.mine-marker{position:absolute;top:2px;bottom:2px;width:4px;background:#fff;border-radius:2px;box-shadow:0 0 6px rgba(255,255,255,.8);transform:translateX(-50%);}
.mine-stat-row{display:flex;justify-content:space-between;font-size:.72rem;font-weight:700;color:var(--soil-dark);margin-bottom:10px;}
.mine-heat-track{height:14px;background:var(--cream-dark);border-radius:8px;overflow:hidden;border:2px solid var(--soil-light);margin-bottom:10px;}
.mine-heat-fill{height:100%;background:linear-gradient(90deg,#e0b23a,#c0752e);transition:width .06s linear;}
.mine-mash-btn{width:100%;justify-content:center;padding:16px;font-size:1rem;user-select:none;-webkit-user-select:none;}
.mine-chain-row{display:flex;gap:6px;justify-content:center;margin:14px 0;}
.mine-chain-seg{width:42px;height:42px;border-radius:8px;font-weight:800;font-size:.9rem;border:2px solid var(--cream-dark);background:var(--cream);color:var(--soil-dark);}
.mine-chain-seg.mine-chain-active{border-color:var(--gold);background:linear-gradient(180deg,#fff2c8,#ffdca0);animation:pinBounce 0.5s ease-in-out infinite;}
.mine-chain-seg.mine-chain-good{border-color:var(--ok);background:#dff2df;color:var(--ok);}
.mine-chain-seg.mine-chain-bad{border-color:#c0752e;background:#f6e2da;opacity:.6;}
.mine-glint-box{width:100px;height:100px;margin:14px auto;border-radius:50%;background:#241c15;display:flex;align-items:center;justify-content:center;font-size:2.2rem;border:3px solid #46362450;transition:.1s;}
.mine-glint-box.lit{background:radial-gradient(circle,#fff2c8,#e0b23a);border-color:var(--gold);box-shadow:0 0 24px rgba(224,178,58,.7);}
.mine-charge-track{position:relative;height:22px;background:#241c15;border-radius:11px;overflow:hidden;margin:10px 0;border:2px solid #46362450;}
.mine-charge-zone{position:absolute;top:0;bottom:0;background:rgba(111,174,70,.45);border-left:2px solid var(--ok);border-right:2px solid var(--ok);z-index:1;}
.mine-charge-over{position:absolute;top:0;bottom:0;width:2px;background:#c0392b;z-index:1;}
.mine-charge-fill{height:100%;background:linear-gradient(90deg,#e0b23a,#c0752e);transition:width .05s linear;}
.cave-grid .cave-spot{background:#efe6d4;border-color:#d9c9a3;}
.cave-grid .cave-spot.ready{border-color:#8a6a2f;background:linear-gradient(180deg,#fff2d9,#efe6d4);}
.cave-leave-btn{width:100%;justify-content:center;margin-top:14px;}
.cave-stats{font-size:.72rem;color:var(--soil-light);margin-top:14px;text-align:center;}

/* ===== КУЗНИЦА: тёплый отблеск горна — отдельно и от пещеры, и от леса ===== */
.smith-scene{position:relative;border-radius:14px;overflow:hidden;margin-bottom:14px;height:64px;
  background:radial-gradient(ellipse at 50% 130%, #ff7a3c 0%, #7a2c12 35%, #2b1810 75%, #1a1210 100%);}
.smith-scene::before{content:'⚒️ 🔥 🪨 🔥 ⚒️';position:absolute;bottom:-2px;left:0;right:0;font-size:1.4rem;letter-spacing:16px;opacity:.6;text-align:center;white-space:nowrap;overflow:hidden;}
.smith-build-card{background:#2a1c14;border:1.5px solid #5a3a22;border-radius:12px;padding:16px;color:#f1dfc8;text-align:center;}
.smith-build-title{font-weight:800;font-size:.95rem;margin-bottom:6px;}
.smith-build-card .action-btn{margin-top:8px;}
.smith-tools-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(120px,1fr));gap:10px;margin-bottom:16px;}
.smith-tool-card{background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:12px;padding:10px;text-align:center;}
.smith-tool-card.owned{border-color:#c0752e;background:linear-gradient(180deg,#fff0dc,var(--cream));}
.smith-tool-icon{font-size:1.6rem;}
.smith-tool-name{font-size:.76rem;font-weight:700;color:var(--soil-dark);margin:2px 0;}
.smith-tool-hint{font-size:.64rem;color:var(--soil-light);margin-bottom:8px;min-height:2.4em;}
.smith-tool-owned{font-size:.7rem;font-weight:800;color:var(--ok);}
.smith-section-title{font-size:.86rem;font-weight:800;color:var(--soil-dark);margin:14px 0 8px;}
.smith-metal-label{font-size:.74rem;font-weight:800;color:var(--soil-light);margin:10px 0 6px;text-transform:uppercase;letter-spacing:.4px;}
.smith-batch-card{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#2a1c14;color:#f1dfc8;border-radius:12px;padding:12px 14px;font-size:.8rem;font-weight:700;}
.smith-batch-card.ready{background:linear-gradient(90deg,#5a3416,#7a2c12);}
.smith-recipe-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(160px,1fr));gap:10px;}
.smith-recipe-card{background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:12px;padding:11px;}
.smith-recipe-title{font-size:.8rem;font-weight:800;color:var(--soil-dark);margin-bottom:3px;}
.smith-recipe-cost,.smith-recipe-hint,.smith-recipe-yield{font-size:.66rem;color:var(--soil-light);margin-bottom:3px;line-height:1.35;}
.smith-recipe-card .action-btn{width:100%;justify-content:center;margin-top:6px;}

/* Деревня */
.village-scene{position:relative;border-radius:14px;overflow:hidden;margin-bottom:14px;height:80px;
  background:linear-gradient(180deg,#cfe3ef 0%,#e8c98a 45%,#c9a563 100%);}
.village-scene::before{content:'🏚️ 🏠 🏡 🏠 🏚️';position:absolute;bottom:-4px;left:0;right:0;text-align:center;font-size:1.8rem;letter-spacing:10px;opacity:.92;}
.villager-row{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:10px;}
.villager-card{background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:12px;padding:14px 10px;text-align:center;transition:.15s;}
.villager-card:hover{border-color:var(--gold);transform:translateY(-2px);box-shadow:0 4px 10px rgba(0,0,0,.12);}
.villager-card .v-icon{font-size:2.4rem;display:block;margin-bottom:4px;animation:pinBounce 3s ease-in-out infinite;}
.villager-card .v-name{font-size:.82rem;font-weight:800;color:var(--soil-dark);display:block;}
.villager-card .v-role{font-size:.66rem;color:var(--soil-light);display:block;margin-bottom:8px;}
.villager-card .v-gift-badge{display:inline-block;background:var(--gold);color:#3a2a05;font-size:.6rem;font-weight:800;border-radius:8px;padding:1px 7px;margin-bottom:6px;}
.dialogue-box{background:var(--cream);border-radius:12px;padding:14px;margin:10px 0 14px;text-align:left;position:relative;border:1.5px solid var(--cream-dark);}
.dialogue-box::before{content:'';position:absolute;top:-8px;left:24px;border:8px solid transparent;border-bottom-color:var(--cream);}
.dialogue-name{font-weight:800;color:var(--soil-dark);font-size:.85rem;}
.dialogue-role{font-size:.66rem;color:var(--soil-light);margin-bottom:6px;}
.dialogue-text{font-size:.86rem;color:var(--ink);line-height:1.45;font-style:italic;}
.dialogue-actions{display:flex;gap:8px;margin-top:10px;flex-wrap:wrap;}

/* ===== ЗАДАНИЯ / СЮЖЕТ (js/quests.js) ===== */
.quest-log{background:var(--cream);border:1.5px solid var(--gold);border-radius:12px;padding:12px 14px;margin-bottom:14px;}
.quest-log-title{font-size:.9rem;margin:0 0 8px;color:var(--soil-dark);}
.quest-chain{display:flex;flex-direction:column;gap:5px;}
.quest-chain-step{display:flex;align-items:center;gap:8px;font-size:.78rem;padding:4px 6px;border-radius:7px;color:var(--soil-light);}
.quest-chain-step.done{color:var(--soil-dark);}
.quest-chain-step.active{background:#fbeecd;color:#7a5b18;font-weight:700;}
.quest-chain-step.ready{background:#fbe1de;color:#7a1f1f;font-weight:700;}
.quest-chain-step.locked{opacity:.55;}
.qcs-icon{font-size:1rem;flex-shrink:0;}
.quest-log-done-note{font-size:.78rem;color:var(--soil-light);margin:8px 0 0;font-style:italic;}
.quest-box{border-color:var(--gold);}
.quest-title{font-weight:800;font-size:.82rem;color:var(--soil-dark);margin-bottom:4px;}
.quest-objective{font-size:.76rem;color:#7a5b18;background:#fbeecd;border-radius:7px;padding:4px 8px;margin-top:6px;display:inline-block;}
.quest-objective.quest-done{color:#2f6a2f;background:#e4f2df;}
.v-gift-badge.quest-badge{background:#c9463f;color:#fff;}
.v-gift-badge.quest-badge-active{background:#8a6a2a;color:#fff;}

/* Живая сцена загона */
.barn-scene-modal{max-width:640px;text-align:left;}

/* 🏗️ Обустройство загонов — билдер */
.pen-builder-modal{max-width:640px;max-height:88vh;overflow-y:auto;text-align:left;}
.pb-intro{font-size:.78rem;}
.pb-placing-hint{background:#fff2cf;color:#8a6620;border-radius:8px;padding:7px 10px;font-size:.78rem;font-weight:700;margin-bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:8px;}
.pb-board{position:relative;width:100%;max-height:52vh;background:#dcead0;border:2px solid var(--cream-dark);border-radius:12px;margin:8px 0 14px;overflow:hidden;}
.pb-cells{position:absolute;inset:0;display:grid;}
.pb-cell{border:1px dashed rgba(90,74,44,.18);}
.pb-cell:active{background:rgba(111,174,70,.25);}
.pb-items{position:absolute;inset:0;pointer-events:none;}
.pb-item{position:absolute;display:flex;align-items:center;justify-content:center;font-size:1.4rem;background:rgba(255,255,255,.55);border:1.5px solid rgba(90,74,44,.3);border-radius:8px;pointer-events:auto;cursor:pointer;box-sizing:border-box;}
.pb-item.selected{border-color:var(--grass-dark);box-shadow:0 0 0 2px var(--grass-dark) inset;}
.pen-build-btn{background:#fff2cf!important;color:#8a6620!important;}
.barn-scene{position:relative;height:240px;border-radius:12px;overflow:hidden;margin:8px 0;
  background:linear-gradient(180deg,#bcdff0 0%,#dcefc0 35%,#8fae5a 100%);border:3px solid #8a6a3a;}
.barn-scene.night{background:linear-gradient(180deg,#1a2350 0%,#2c3868 55%,#3a4a30 100%);}
.barn-sprite{position:absolute;transform:translate(-50%,-50%);display:flex;flex-direction:column;align-items:center;cursor:pointer;transition-property:left,top;transition-timing-function:ease-in-out;transition-duration:1.6s;}
.bsprite-icon{font-size:1.7rem;filter:drop-shadow(0 3px 2px rgba(0,0,0,.35));}
.barn-sprite.sick .bsprite-icon{filter:grayscale(.4) drop-shadow(0 3px 2px rgba(0,0,0,.35));}
.barn-sprite.sleepy .bsprite-icon{opacity:.6;}
.bsprite-mood{font-size:.8rem;margin-top:-4px;}
.barn-feeder{position:absolute;left:4%;bottom:5%;font-size:1.5rem;opacity:.85;}
.barn-struct{position:absolute;transform:translate(-50%,-50%);font-size:1.35rem;background:rgba(255,255,255,.5);border:1px solid rgba(90,74,44,.3);border-radius:8px;width:1.9em;height:1.9em;display:flex;align-items:center;justify-content:center;pointer-events:none;}
.barn-pile{position:absolute;transform:translate(-50%,-50%);font-size:1.6rem;pointer-events:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.3));}
.barn-pile-amt{position:absolute;right:-8px;bottom:-4px;background:#3a2a05;color:#fff2cf;font-size:.55rem;font-weight:800;border-radius:8px;padding:0 4px;}
.barn-heart{position:absolute;transform:translate(-50%,-50%);font-size:1.2rem;animation:heartPop 2.2s ease-out forwards;pointer-events:none;}
@keyframes heartPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.5);}20%{opacity:1;transform:translate(-50%,-50%) scale(1.1);}80%{opacity:1;}100%{opacity:0;transform:translate(-50%,-70%) scale(1);}}

/* Карта пасеки (луг с цветами и летающими пчёлами) */
.apiary-scene{position:relative;height:260px;border-radius:12px;overflow:hidden;margin:8px 0;
  background:linear-gradient(180deg,#bcdff0 0%,#dcefc0 30%,#9ac96a 60%,#7a9e4a 100%);border:3px solid #8a6a3a;}
.apiary-scene.winter{background:linear-gradient(180deg,#cfe3ee 0%,#e8f0f4 40%,#f2f6f8 100%);}
.apiary-flower{position:absolute;transform:translate(-50%,-50%);font-size:1.3rem;opacity:.92;pointer-events:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.25));}
.apiary-hive{position:absolute;bottom:6%;transform:translate(-50%,0);display:flex;flex-direction:column;align-items:center;cursor:pointer;}
.apiary-hive-icon{font-size:1.9rem;filter:drop-shadow(0 3px 2px rgba(0,0,0,.35));}
.apiary-hive-badge{font-size:.85rem;margin-top:-6px;}
.apiary-threat-badge{position:absolute;top:-14px;right:-10px;font-size:.9rem;animation:apiaryThreatPulse 1s ease-in-out infinite;}
@keyframes apiaryThreatPulse{0%,100%{transform:scale(1);}50%{transform:scale(1.25);}}
.apiary-bee{position:absolute;transform:translate(-50%,-50%);font-size:1.1rem;transition-property:left,top;transition-timing-function:ease-in-out;transition-duration:1.6s;pointer-events:none;filter:drop-shadow(0 2px 2px rgba(0,0,0,.3));}
/* Выгул на пастбище (js/pasture.js) */
.pasture-scene-modal{max-width:680px;}
.pasture-host{height:300px;}
.pasture-hud{margin:8px 0 2px;}
.pasture-watch-row{display:flex;align-items:center;gap:8px;}
.pasture-watch-label{font-size:.72rem;font-weight:700;color:var(--soil-dark);white-space:nowrap;}
.pasture-watch-track{flex:1;height:10px;border-radius:6px;background:var(--cream-dark);overflow:hidden;border:1px solid var(--soil-light);}
.pasture-watch-fill{height:100%;transition:width .25s linear,background .25s;}
.pasture-watch-btn{white-space:nowrap;}
.pasture-stats-row{display:flex;gap:12px;flex-wrap:wrap;font-size:.7rem;font-weight:700;color:var(--soil-light);margin-top:6px;}
.pasture-hint{font-size:.76rem;color:var(--soil-light);line-height:1.4;margin:8px 0 0;}
.pasture-go-btn{background:linear-gradient(180deg,#8bb85a,#5c8a3a);color:#fff;border-color:#456b2a;}
.stray-card .stray-list{display:flex;flex-wrap:wrap;gap:6px;margin:6px 0;}
.heat-chip{animation:heatPulse 1.4s ease-in-out infinite;}
@keyframes heatPulse{0%,100%{opacity:1;}50%{opacity:.55;}}

.barn3d-host{position:relative;width:100%;height:280px;border-radius:12px;overflow:hidden;background:#0c1a2a;touch-action:none;margin:8px 0;}
.barn3d-host canvas{display:block;width:100%;height:100%;}
.barn3d-host:fullscreen,.barn3d-host:-webkit-full-screen,.barn3d-host:-moz-full-screen,.barn3d-host:-ms-fullscreen{width:100vw;height:100vh;border-radius:0;margin:0;}
/* 📱 Надёжный «псевдо-фуллскрин» через CSS — работает даже там, где браузерный
   Fullscreen API не поддерживается по-настоящему (некоторые встроенные вебвью). */
.barn3d-host.fp-pseudo-fullscreen{position:fixed;inset:0;width:100vw;height:100vh;border-radius:0;margin:0;z-index:9999;}

/* 🚶 От первого лица */
.fp-toggle-btn{margin:2px 0 6px;}
.fp-overlay{position:absolute;inset:0;pointer-events:none;touch-action:none;}
.fp-hint{position:absolute;top:8px;left:50%;transform:translateX(-50%);background:rgba(20,20,20,.55);color:#fff;font-size:.64rem;font-weight:600;padding:4px 10px;border-radius:8px;text-align:center;max-width:88%;pointer-events:none;}
.fp-fullscreen-btn{position:absolute;top:8px;right:8px;width:34px;height:34px;border-radius:50%;background:rgba(20,20,20,.55);color:#fff;font-size:1rem;line-height:1;display:flex;align-items:center;justify-content:center;pointer-events:auto;border:1.5px solid rgba(255,255,255,.35);}
.fp-fullscreen-btn:active{background:rgba(20,20,20,.8);}
.fp-joystick{position:absolute;left:14px;bottom:14px;width:92px;height:92px;border-radius:50%;background:rgba(255,255,255,.22);border:2px solid rgba(255,255,255,.5);pointer-events:auto;touch-action:none;}
.fp-joystick-knob{position:absolute;left:50%;top:50%;width:38px;height:38px;margin:-19px 0 0 -19px;border-radius:50%;background:rgba(255,255,255,.9);border:2px solid rgba(90,74,44,.45);}
.fp-interact{position:absolute;right:10px;bottom:14px;max-width:58%;display:none;flex-direction:column;align-items:flex-end;gap:6px;pointer-events:auto;}
.fp-interact.show{display:flex;}
.fp-tag{background:rgba(20,20,20,.68);color:#fff;font-size:.66rem;font-weight:700;border-radius:8px;padding:5px 9px;text-align:right;}
.fp-actions{display:flex;flex-direction:column;gap:4px;align-items:flex-end;}
.fp-action-btn{background:var(--soil);color:#fff;border-radius:8px;padding:6px 11px;font-size:.72rem;font-weight:700;white-space:nowrap;}
.fp-action-btn:disabled{opacity:.4;}
.barn3d-loader{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:10px;color:#dbe9f5;z-index:2;background:#0c1a2a;}
.barn3d-spinner{width:38px;height:38px;border-radius:50%;border:4px solid rgba(255,255,255,.18);border-top-color:#5aa0c9;animation:barn3dSpin .8s linear infinite;}
@keyframes barn3dSpin{to{transform:rotate(360deg);}}
.barn3d-loader-text{font-size:.8rem;text-align:center;line-height:1.4;}
.barn3d-loader-timer{font-size:.72rem;color:#9fb8cc;font-variant-numeric:tabular-nums;}
.barn3d-loader-error{color:#ffb3b3;font-size:.78rem;text-align:center;line-height:1.4;padding:0 16px;}
.barn3d-retry-btn{margin-top:4px;background:#5aa0c9;color:#fff;border:none;border-radius:8px;padding:7px 16px;font-size:.78rem;cursor:pointer;font-weight:600;}
.barn3d-retry-btn:active{opacity:.8;}

@media(max-width:880px) and (orientation:landscape){
  .fish-pond-scene{height:110px;}
  header.topbar{padding:8px 12px;}
  .side-nav{padding:6px;}
}

/* Погодные эффекты */
.weather-fx{position:fixed;inset:0;pointer-events:none;z-index:5;overflow:hidden;}
.rain-drop{position:absolute;top:-5%;width:2px;height:16px;background:linear-gradient(180deg,rgba(180,210,230,0),rgba(180,210,230,.55));animation:rainFall linear infinite;}
@keyframes rainFall{from{transform:translateY(0);}to{transform:translateY(110vh);}}
.snow-flake{position:absolute;top:-5%;color:rgba(255,255,255,.85);font-size:.9rem;animation:snowFall linear infinite;}
@keyframes snowFall{from{transform:translateY(0) translateX(0);}to{transform:translateY(110vh) translateX(var(--drift,20px));}}

/* Сутки */
.daytime-tint{position:fixed;inset:0;pointer-events:none;z-index:4;opacity:0;transition:opacity 4s ease,background 4s ease;background:linear-gradient(180deg,#1a2350 0%,#2c3868 45%,rgba(44,56,104,0) 100%);}
.daytime-tint.tod-night{opacity:.42;}
.daytime-tint.tod-dusk{opacity:.24;background:linear-gradient(180deg,#5a3a5a 0%,#a85a3f 45%,rgba(168,90,63,0) 100%);}
.daytime-tint.tod-dawn{opacity:.16;background:linear-gradient(180deg,#5a4a7a 0%,#e88ba0 45%,rgba(232,139,160,0) 100%);}
.stars-fx{position:fixed;inset:0;pointer-events:none;z-index:3;opacity:0;transition:opacity 3.5s ease;}
.stars-fx.show{opacity:1;}
.stars-fx.dim{opacity:.35;}
.star-dot{position:absolute;background:#fff;border-radius:50%;animation:starTwinkle ease-in-out infinite;}
@keyframes starTwinkle{0%,100%{opacity:.25;}50%{opacity:1;}}
.moon-glow{position:absolute;top:6%;right:9%;font-size:1.9rem;filter:drop-shadow(0 0 10px rgba(255,255,255,.55));animation:moonDrift 40s ease-in-out infinite alternate;}
@keyframes moonDrift{from{transform:translateY(0);}to{transform:translateY(14px);}}
.sunrays-fx{position:fixed;inset:0;pointer-events:none;z-index:3;opacity:0;transition:opacity 2.5s ease;mix-blend-mode:soft-light;}
.sunrays-fx.show{opacity:.85;}
.sunrays-fx::before{content:'';position:absolute;top:-30%;right:-10%;width:70vmax;height:70vmax;background:conic-gradient(from 0deg,transparent 0deg,rgba(255,244,200,.55) 6deg,transparent 14deg,transparent 40deg,rgba(255,244,200,.4) 46deg,transparent 54deg,transparent 80deg,rgba(255,244,200,.5) 86deg,transparent 94deg,transparent 120deg,rgba(255,244,200,.4) 126deg,transparent 134deg,transparent 160deg,rgba(255,244,200,.45) 166deg,transparent 174deg,transparent 200deg,rgba(255,244,200,.4) 206deg,transparent 214deg,transparent 240deg,rgba(255,244,200,.45) 246deg,transparent 254deg,transparent 280deg,rgba(255,244,200,.4) 286deg,transparent 294deg,transparent 320deg,rgba(255,244,200,.5) 326deg,transparent 334deg,transparent 360deg);animation:sunSpin 60s linear infinite;border-radius:50%;}
@keyframes sunSpin{from{transform:rotate(0deg);}to{transform:rotate(360deg);}}
.lightning-flash{position:fixed;inset:0;background:#fff;opacity:0;pointer-events:none;z-index:20;}
.lightning-flash.strike{animation:lightningStrike .55s ease-out;}
@keyframes lightningStrike{0%{opacity:0;}6%{opacity:.85;}12%{opacity:.1;}18%{opacity:.7;}28%{opacity:0;}100%{opacity:0;}}
.settings-row{display:flex;gap:8px;flex-wrap:wrap;margin:10px 0;}
.settings-btn{background:var(--panel);border:1.5px solid var(--soil-light);border-radius:9px;padding:8px 13px;font-size:.78rem;font-weight:700;color:var(--soil-dark);display:flex;align-items:center;gap:7px;}
.settings-btn.off{opacity:.5;}
.settings-btn:hover{background:var(--cream-dark);}

/* Режим картошки */
.perf-hint{display:flex;align-items:center;flex-wrap:wrap;gap:8px;background:#fbeecd;color:#7a5b18;}
.potato-levels{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:8px;margin:8px 0;}
.potato-btn{background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:11px;padding:10px 8px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:2px;transition:.15s;}
.potato-btn:hover{background:var(--cream-dark);}
.potato-btn.active{background:linear-gradient(180deg,#fff8e4,var(--cream));border-color:var(--gold);box-shadow:0 2px 8px rgba(200,154,60,.3);}
.potato-icon{font-size:1.4rem;}
.potato-name{font-size:.78rem;font-weight:800;color:var(--soil-dark);}
.potato-desc{font-size:.64rem;color:var(--soil-light);}
.potato-custom-note{font-size:.72rem;color:var(--soil-light);margin:2px 0 8px;font-style:italic;}
.gfx-toggle-list{display:flex;flex-direction:column;gap:6px;margin:8px 0;}
.gfx-toggle{display:flex;align-items:center;gap:8px;font-size:.8rem;font-weight:600;color:var(--soil-dark);background:var(--cream);border-radius:8px;padding:7px 10px;cursor:pointer;}
.gfx-toggle input{width:16px;height:16px;flex-shrink:0;}
.gfx-toggle span:first-of-type{flex:1;}
.gfx-impact{font-size:.62rem;font-weight:800;padding:2px 7px;border-radius:6px;white-space:nowrap;}
.gfx-impact.hi{background:#fbe1de;color:var(--warn);}
.gfx-impact.mid{background:#fbeecd;color:#8a6a1a;}
.gfx-impact.lo{background:#dcebd6;color:var(--ok);}

body.no-gfx-shadows *{box-shadow:none!important;text-shadow:none!important;}
body.no-gfx-shadows .crop-emoji,body.no-gfx-shadows .bsprite-icon,body.no-gfx-shadows .map-pin-icon,
body.no-gfx-shadows .villager-card .v-icon,body.no-gfx-shadows .map-player,body.no-gfx-shadows .map-decor{filter:none!important;}
body.no-gfx-lighting .daytime-tint{display:none!important;}
body.no-gfx-weather #weatherFx,body.no-gfx-weather #lightningFlash{display:none!important;}
body.no-gfx-plantanim .crop-emoji{animation:none!important;}
body.no-gfx-mapfx .map-cloud,body.no-gfx-mapfx .star-dot,body.no-gfx-mapfx .moon-glow,body.no-gfx-mapfx #sunraysFx{display:none!important;}

/* Достижения */
.achv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:10px;margin-top:6px;}
.achv-card{background:var(--cream);border-radius:10px;padding:10px 12px;display:flex;gap:10px;align-items:flex-start;opacity:.45;filter:grayscale(1);}
.achv-card.unlocked{opacity:1;filter:none;background:#eef4e8;}
.achv-icon{font-size:1.4rem;flex-shrink:0;}
.achv-name{font-weight:700;font-size:.82rem;color:var(--soil-dark);}
.achv-desc{font-size:.7rem;color:var(--soil-light);margin-top:2px;}
.achv-toast{position:fixed;top:16px;left:50%;transform:translateX(-50%) translateY(-20px);background:var(--panel);border:2px solid var(--gold);border-radius:12px;padding:12px 18px;box-shadow:0 8px 24px rgba(0,0,0,.3);z-index:300;display:flex;gap:10px;align-items:center;opacity:0;transition:.35s;max-width:90vw;}
.achv-toast.show{opacity:1;transform:translateX(-50%) translateY(0);}
.achv-toast .achv-icon{font-size:1.8rem;}
.achv-toast .t-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.6px;color:var(--gold);font-weight:700;}
.achv-toast .t-name{font-weight:700;color:var(--soil-dark);font-size:.9rem;}

/* Flip */
.flip-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:14px;}
.flip-pan{font-size:3.5rem;transition:transform .15s;filter:drop-shadow(0 6px 6px rgba(0,0,0,.35));position:relative;}
.flip-pan.grabbed{transform:scale(1.06);}
.flip-pan.struck{animation:chopStrike .14s ease-out;}
.flip-pan.cue{animation:flipCue .5s ease infinite alternate;}
@keyframes flipCue{from{transform:scale(1);} to{transform:scale(1.18) rotate(-6deg);}}
.flip-status{font-size:.85rem;font-weight:700;color:var(--soil-dark);min-height:1.3em;text-align:center;}

/* Balance */
.balance-track{position:relative;height:30px;background:var(--cream-dark);border-radius:15px;overflow:hidden;margin-bottom:16px;border:2px solid var(--soil-light);touch-action:none;cursor:pointer;}
.balance-zone{position:absolute;top:0;bottom:0;background:rgba(74,124,63,.5);}
.balance-handle{position:absolute;top:2px;bottom:2px;width:14px;background:var(--gold);border-radius:7px;box-shadow:0 1px 3px rgba(0,0,0,.4);}
.balance-labels{display:flex;justify-content:space-between;font-size:.68rem;color:var(--soil-light);margin:-10px 0 12px;}

/* Roll (скалка) — тянешь скалку по тесту рукой, а не жмёшь кнопку */
.roll-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:14px;}
.roll-status{font-size:.78rem;font-weight:700;color:var(--soil-dark);min-height:1.3em;text-align:center;margin:0;}
.roll-board{position:relative;width:100%;height:96px;background:linear-gradient(180deg,#d3ab77,#a97e49);border-radius:14px;border:3px solid var(--soil-light);box-shadow:inset 0 4px 10px rgba(0,0,0,.3), inset 0 -3px 0 rgba(255,255,255,.06);touch-action:none;cursor:grab;overflow:hidden;}
.roll-board::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(90deg,rgba(0,0,0,.04) 0 3px,transparent 3px 22px);pointer-events:none;}
.roll-board:active{cursor:grabbing;}
.roll-dough{position:absolute;left:6%;right:6%;bottom:11px;top:11px;display:flex;gap:2px;align-items:flex-end;}
.roll-seg{flex:1;height:100%;position:relative;display:flex;align-items:flex-end;justify-content:center;}
.roll-seg-fill{width:96%;height:88%;background:linear-gradient(180deg,#fbeecb,#e3c584);border-radius:8px 8px 5px 5px;box-shadow:0 3px 4px rgba(0,0,0,.2), inset 0 2px 3px rgba(255,255,255,.5);transition:height .1s ease-out,opacity .2s;}
.roll-seg.torn .roll-seg-fill{opacity:0;}
.roll-seg .roll-tear-mark{position:absolute;bottom:6px;left:50%;transform:translateX(-50%) scale(0);font-size:1.1rem;transition:transform .2s;pointer-events:none;}
.roll-seg.torn .roll-tear-mark{transform:translateX(-50%) scale(1);}
.roll-pin{position:absolute;top:50%;left:50%;height:20px;width:80px;display:flex;align-items:center;pointer-events:none;transform:translate(-50%,-50%);transition:transform .12s ease-out;z-index:3;filter:drop-shadow(0 4px 5px rgba(0,0,0,.4));}
.roll-pin-body{flex:1;height:17px;border-radius:8px;background:linear-gradient(180deg,#f0d29a,#b9793a 55%,#8a5726);box-shadow:inset 0 1px 0 rgba(255,255,255,.4);}
.roll-pin-handle{width:14px;height:14px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f6dcaa,#8a5726);flex:none;box-shadow:inset 0 1px 1px rgba(255,255,255,.4);}
.roll-pin.active{transform:translate(-50%,-50%) scale(1.06);}

/* ================================================================
   КУХНЯ 2.0 — «сцена» готовки: вместо голых полосок каждый шаг
   разыгрывается на маленькой декорации (доска/плита/миска/весы),
   а руки/инструмент реагируют на реальные координаты минииры.
   ================================================================ */
.kitchen-stage{position:relative;border-radius:16px;padding:5px;margin-bottom:2px;background:linear-gradient(160deg,#6b4a30,#4a3220);box-shadow:0 3px 10px rgba(0,0,0,.28), inset 0 1px 0 rgba(255,255,255,.08);}
.kitchen-stage::before{content:'';position:absolute;inset:0;border-radius:inherit;background:repeating-linear-gradient(100deg,rgba(255,255,255,.035) 0 2px,transparent 2px 9px);pointer-events:none;opacity:.5;}
.stage-particle-layer{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:6;border-radius:inherit;}
.stage-particle{position:absolute;font-size:1.05rem;pointer-events:none;will-change:transform,opacity;filter:drop-shadow(0 1px 2px rgba(0,0,0,.35));}
.stage-particle.p-up{animation:stagePUp .8s ease-out forwards;}
.stage-particle.p-down{animation:stagePDown .65s ease-in forwards;}
.stage-particle.p-burst{animation:stagePBurst .55s ease-out forwards;}
@keyframes stagePUp{0%{transform:translate(0,0) scale(.5);opacity:0;}18%{opacity:1;}100%{transform:translate(var(--pdx,0px),-48px) scale(1.1) rotate(var(--prot,15deg));opacity:0;}}
@keyframes stagePDown{0%{transform:translate(0,-4px) scale(.6);opacity:0;}22%{opacity:1;}100%{transform:translate(var(--pdx,0px),42px) scale(.85);opacity:0;}}
@keyframes stagePBurst{0%{transform:translate(0,0) scale(.4);opacity:1;}60%{opacity:1;}100%{transform:translate(var(--pdx,0px),var(--pdy,-30px)) scale(1.3);opacity:0;}}

/* Общая "витрина" — мягкая виньетка и блик стекла поверх каждой сцены кухни, чтобы
   декорации выглядели как единый предмет мебели, а не отдельные плашки */
.board-scene,.stove-scene,.press-scene,.shaker-scene,.sift-scene,.pour-scene,.whisk-scene,.mash-scene .mash-bowl,.roll-board{position:relative;}
.board-scene::after,.stove-scene::after,.press-scene::after,.shaker-scene::after,.sift-scene::after,.pour-scene::after,.whisk-scene::after{content:'';position:absolute;inset:0;border-radius:inherit;box-shadow:inset 0 14px 22px -12px rgba(0,0,0,.4), inset 0 -10px 16px -10px rgba(0,0,0,.3);pointer-events:none;z-index:5;}

/* Разделочная доска — теперь нож полностью в руке игрока: хватаете пальцем,
   ведёте по доске, отпускание = удар (см. openTimingStep в mg-kitchen.js) */
.board-scene{height:120px;border-radius:12px;background:
  repeating-linear-gradient(90deg,rgba(0,0,0,.05) 0 3px,transparent 3px 26px),
  linear-gradient(180deg,#d3ab77,#a97e49 55%,#916a3c);
  border:3px solid var(--soil-light);box-shadow:inset 0 3px 12px rgba(0,0,0,.35), inset 0 -3px 0 rgba(255,255,255,.06);margin-bottom:8px;overflow:hidden;touch-action:none;cursor:grab;}
.board-scene::before{content:'';position:absolute;inset:0;background:radial-gradient(ellipse at 50% 12%,rgba(255,255,255,.18),transparent 60%);pointer-events:none;}
.board-zone{position:absolute;top:6px;bottom:6px;border-radius:8px;background:linear-gradient(180deg,rgba(150,224,130,.35),rgba(74,124,63,.55));border-left:2px dashed rgba(255,255,255,.92);border-right:2px dashed rgba(255,255,255,.92);box-shadow:0 0 14px rgba(120,210,100,.45);animation:zonePulse 1.1s ease-in-out infinite;pointer-events:none;}
@keyframes zonePulse{0%,100%{filter:brightness(1);}50%{filter:brightness(1.35);}}
.board-prop{position:absolute;top:54%;font-size:2.6rem;transform:translate(-50%,-50%);filter:drop-shadow(0 6px 6px rgba(0,0,0,.45));z-index:2;transition:filter .1s;pointer-events:none;}
.board-prop.lean-l{transform:translate(-50%,-50%) rotate(-24deg) scale(1.05);}
.board-prop.lean-r{transform:translate(-50%,-50%) rotate(24deg) scale(1.05);}
.board-prop.grabbed{filter:drop-shadow(0 2px 3px rgba(0,0,0,.55)) brightness(1.1);}
.board-prop.struck{animation:chopStrike .16s ease-out;}
@keyframes chopStrike{0%{transform:translate(-50%,-50%) scale(1.32);filter:drop-shadow(0 0 10px rgba(255,255,255,.8));}100%{transform:translate(-50%,-50%) scale(1);}}
.cut-mark{position:absolute;bottom:14px;width:4px;height:30px;background:linear-gradient(180deg,rgba(60,36,14,.7),rgba(60,36,14,.35));border-radius:2px;transform:translateX(-50%);animation:cutFade 1.3s ease-out forwards;pointer-events:none;box-shadow:0 0 3px rgba(0,0,0,.4);}
@keyframes cutFade{0%{opacity:.9;transform:translateX(-50%) scaleY(1);}100%{opacity:0;transform:translateX(-50%) scaleY(.7);}}

/* Плита и котелок — для heat-шагов */
.stove-scene{height:134px;border-radius:12px;background:radial-gradient(ellipse at 50% 108%,#5c3a1c 0%,#2c1a0c 55%,#160c05 85%);border:3px solid var(--soil-light);margin-bottom:6px;overflow:hidden;display:flex;align-items:flex-end;justify-content:center;box-shadow:inset 0 4px 14px rgba(0,0,0,.5);}
.stove-scene::before{content:'';position:absolute;left:0;right:0;bottom:0;height:38px;background:linear-gradient(0deg,rgba(255,140,40,.28),transparent);pointer-events:none;filter:blur(2px);animation:stoveGlow 1.6s ease-in-out infinite alternate;}
@keyframes stoveGlow{from{opacity:.55;}to{opacity:1;}}
.stove-flame{position:absolute;bottom:8px;width:58px;border-radius:50% 50% 42% 42%;background:linear-gradient(180deg,#fff6c4,#ffb347 45%,#ff5b1f 85%);transition:height .05s linear,background .12s linear,opacity .15s;transform-origin:50% 100%;animation:flameWobble .16s ease-in-out infinite alternate;filter:blur(.3px) drop-shadow(0 0 14px rgba(255,140,30,.65));}
.stove-flame::before{content:'';position:absolute;left:50%;bottom:6%;width:46%;height:56%;border-radius:50%;background:radial-gradient(circle,#fff9e0,#ffd98a 70%,transparent);transform:translateX(-50%);filter:blur(1px);}
@keyframes flameWobble{0%{transform:translateX(-50%) scaleX(1) skewX(-4deg);}100%{transform:translateX(-50%) scaleX(1.1) skewX(4deg);}}
.stove-pot{position:relative;width:110px;height:66px;border-radius:0 0 44px 44px;background:linear-gradient(180deg,#aab0b8,#585d64 60%,#3a3d41);border:3px solid #23262a;margin-bottom:16px;z-index:2;box-shadow:0 5px 10px rgba(0,0,0,.5), inset 0 2px 3px rgba(255,255,255,.25), inset 0 -6px 10px rgba(0,0,0,.35);overflow:hidden;}
.stove-pot::before,.stove-pot::after{content:'';position:absolute;top:14px;width:14px;height:9px;background:linear-gradient(180deg,#4a4d51,#2c2f33);border-radius:4px;box-shadow:0 1px 2px rgba(0,0,0,.4);}
.stove-pot::before{left:-13px;border-radius:4px 0 0 4px;}
.stove-pot::after{right:-13px;border-radius:0 4px 4px 0;}
/* Рычаг горелки — ручное управление огнём для heat-шагов */
.valve-track{position:absolute;right:8px;top:8px;bottom:8px;width:27px;border-radius:13px;background:linear-gradient(180deg,#33373c,#17191b);border:2px solid #4a443c;touch-action:none;cursor:grab;box-shadow:inset 0 2px 5px rgba(0,0,0,.6), 0 1px 0 rgba(255,255,255,.06);}
.valve-track:active{cursor:grabbing;}
.valve-track::before{content:'';position:absolute;inset:3px;border-radius:10px;background:repeating-linear-gradient(0deg,rgba(255,255,255,.05) 0 1px,transparent 1px 9px);pointer-events:none;}
.valve-zone{position:absolute;left:1px;right:1px;background:linear-gradient(180deg,rgba(150,224,130,.4),rgba(74,124,63,.65));border-radius:8px;box-shadow:0 0 8px rgba(120,210,100,.5) inset;}
.valve-handle{position:absolute;left:50%;bottom:0%;width:35px;height:23px;border-radius:8px;background:radial-gradient(circle at 35% 30%,#f6d49c,#8a5726);box-shadow:0 3px 6px rgba(0,0,0,.55),0 0 0 3px rgba(255,255,255,.1);transform:translate(-50%,50%);display:flex;align-items:center;justify-content:center;font-size:.72rem;transition:box-shadow .1s;}
.valve-handle.grabbed{box-shadow:0 2px 5px rgba(0,0,0,.5),0 0 0 6px rgba(255,255,255,.22);}
.valve-handle.gust{animation:valveGust .22s ease-out;}
@keyframes valveGust{0%{filter:brightness(1);}40%{filter:brightness(1.45);}100%{filter:brightness(1);}}
.pot-content{position:absolute;left:4px;right:4px;bottom:4px;height:42px;border-radius:0 0 38px 38px;background:#e8d17f;transition:background .18s linear;box-shadow:inset 0 3px 6px rgba(0,0,0,.25), inset 0 -2px 3px rgba(255,255,255,.2);}
.pot-content::before{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 30% 20%,rgba(255,255,255,.35),transparent 60%);animation:potShimmer 2.4s ease-in-out infinite;}
@keyframes potShimmer{0%,100%{opacity:.5;}50%{opacity:1;}}
.pot-smoke{position:absolute;top:-6px;font-size:1rem;opacity:0;animation:smokeUp 1.3s ease-out infinite;}
@keyframes smokeUp{0%{opacity:0;transform:translateY(4px) scale(.7);}30%{opacity:.7;}100%{opacity:0;transform:translateY(-28px) scale(1.35);}}

/* Пресс/гейзер давления — для hold-шагов */
.press-scene{height:118px;border-radius:12px;background:linear-gradient(180deg,#6b4a2f,#3e2a1d 70%);border:3px solid var(--soil-light);margin-bottom:10px;display:flex;align-items:center;justify-content:center;gap:16px;overflow:hidden;box-shadow:inset 0 3px 12px rgba(0,0,0,.4);}
.press-gauge{position:relative;width:82px;height:82px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fbf4e4,#cbb98d 74%);border:4px solid var(--soil-light);box-shadow:inset 0 2px 8px rgba(0,0,0,.35), 0 3px 6px rgba(0,0,0,.3);flex-shrink:0;}
.press-gauge::before{content:'';position:absolute;inset:6px;border-radius:50%;background:repeating-conic-gradient(rgba(59,42,26,.35) 0deg 2deg,transparent 2deg 18deg);opacity:.7;}
.press-needle{position:absolute;left:50%;bottom:50%;width:3px;height:33px;background:linear-gradient(0deg,var(--warn),#e0644a);transform-origin:50% 100%;transform:translateX(-50%) rotate(-90deg);transition:transform .05s linear;border-radius:2px;box-shadow:0 0 5px rgba(179,73,42,.6);z-index:2;}
.press-needle::after{content:'';position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:radial-gradient(circle at 35% 30%,#5a4230,var(--soil-dark));border-radius:50%;transform:translateX(-50%);box-shadow:0 1px 3px rgba(0,0,0,.5);}
.press-pot{font-size:2.7rem;filter:drop-shadow(0 5px 5px rgba(0,0,0,.4));transition:transform .08s;}
.press-pot.pressed{transform:translateY(4px) scale(.94);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5)) brightness(1.08);}
.press-steam{position:absolute;top:10px;font-size:1rem;opacity:0;}

/* Солонка/весы вкуса — для balance-шагов */
.shaker-scene{height:118px;border-radius:12px;background:linear-gradient(180deg,#d3ab77,#a97e49 60%,#916a3c);border:3px solid var(--soil-light);margin-bottom:8px;overflow:hidden;box-shadow:inset 0 3px 12px rgba(0,0,0,.3);}
.shaker-plate{position:absolute;bottom:12px;left:50%;width:68px;height:14px;border-radius:50%;background:linear-gradient(180deg,#a17a4c,#7a5834);transform:translateX(-50%);box-shadow:inset 0 2px 4px rgba(0,0,0,.35), 0 2px 4px rgba(0,0,0,.25);}
.shaker-pile{position:absolute;bottom:16px;left:50%;border-radius:50%;background:radial-gradient(circle at 35% 30%,#fff,#e8ddc4 75%);transform:translateX(-50%);transition:width .1s,height .1s;box-shadow:0 1px 3px rgba(0,0,0,.2);}
.shaker-prop{position:absolute;top:10px;font-size:2.2rem;transform-origin:65% 15%;filter:drop-shadow(0 4px 4px rgba(0,0,0,.4));transition:left .02s linear,transform .1s;}

/* Сито — для sift-шагов */
.sift-scene{height:110px;border-radius:12px;background:linear-gradient(180deg,#96714a,#5b3d28);border:3px solid var(--soil-light);margin-bottom:8px;display:flex;align-items:flex-start;justify-content:center;overflow:hidden;touch-action:none;cursor:grab;box-shadow:inset 0 3px 12px rgba(0,0,0,.35);}
.sift-prop{margin-top:14px;font-size:2.6rem;transition:transform .12s;filter:drop-shadow(0 4px 4px rgba(0,0,0,.4));}
.sift-prop.tilt-l{transform:rotate(-24deg) translateX(-8px);}
.sift-prop.tilt-r{transform:rotate(24deg) translateX(8px);}
.sift-prop.bounce{transform:scale(1.22) rotate(-6deg);}
.proof-dough.ready{filter:drop-shadow(0 0 10px rgba(200,154,60,.85));}

/* Кувшин/чашка — для pour-шагов */
.pour-scene{height:130px;border-radius:12px;background:linear-gradient(180deg,#f0e2c4,#c9a06a);border:3px solid var(--soil-light);margin-bottom:6px;overflow:hidden;touch-action:none;cursor:grab;box-shadow:inset 0 3px 12px rgba(0,0,0,.22);}
.pour-jug{position:absolute;top:10px;left:17%;font-size:2.4rem;transform-origin:80% 30%;transition:transform .12s;filter:drop-shadow(0 4px 4px rgba(0,0,0,.35));}
.pour-jug.tilt{transform:rotate(-54deg);}
.pour-stream{position:absolute;top:32px;left:47%;width:5px;background:linear-gradient(180deg,rgba(255,255,255,.95),rgba(150,196,228,.7));border-radius:2px;opacity:0;transition:opacity .1s,height .05s linear;box-shadow:0 0 6px rgba(150,196,228,.6);}
.pour-cup{position:absolute;bottom:10px;right:19%;width:46px;height:52px;border:3px solid var(--soil-dark);border-top:none;border-radius:0 0 11px 11px;overflow:hidden;background:rgba(255,255,255,.22);box-shadow:inset 0 3px 6px rgba(0,0,0,.15), 0 3px 5px rgba(0,0,0,.2);}
.pour-cup-fill{position:absolute;left:0;right:0;bottom:0;height:0%;background:linear-gradient(180deg,#a8d8f2,#3d7ea6);transition:height .05s linear,background .15s;}
.pour-cup-fill::before{content:'';position:absolute;top:0;left:0;right:0;height:3px;background:rgba(255,255,255,.6);}
.pour-cup-fill.overdraw{background:linear-gradient(180deg,#ec9c93,#c0392b)!important;}

/* Миска и венчик — для whisk-шагов */
.whisk-scene{height:120px;border-radius:12px;background:linear-gradient(180deg,#f0e2c4,#c9a06a);border:3px solid var(--soil-light);margin-bottom:8px;display:flex;align-items:center;justify-content:center;overflow:hidden;touch-action:none;cursor:grab;box-shadow:inset 0 3px 12px rgba(0,0,0,.22);}
.whisk-bowl{position:relative;width:96px;height:56px;border-radius:0 0 48px 48px;background:linear-gradient(180deg,#fbf4e4,#d9c398);border:3px solid var(--soil-light);overflow:hidden;box-shadow:inset 0 4px 8px rgba(0,0,0,.3), 0 3px 5px rgba(0,0,0,.2);}
.whisk-batter{position:absolute;inset:0;background:conic-gradient(from 0deg,#f6dc98,#dcae55,#f6dc98,#e5bd6c);border-radius:0 0 48px 48px;transition:transform .05s linear;}
.whisk-batter::after{content:'';position:absolute;inset:0;border-radius:inherit;background:radial-gradient(ellipse at 35% 20%,rgba(255,255,255,.4),transparent 55%);}
.whisk-tool{position:absolute;top:-16px;left:50%;font-size:2.1rem;transform-origin:50% 88%;transform:translateX(-50%);transition:transform .05s linear;filter:drop-shadow(0 4px 4px rgba(0,0,0,.35));}

/* Сковорода — доп. декор для flip-шагов */
.flip-scene{position:relative;height:92px;display:flex;align-items:center;justify-content:center;margin-bottom:2px;touch-action:none;cursor:grab;border-radius:12px;background:radial-gradient(ellipse at 50% 82%,rgba(255,150,50,.16),transparent 65%);}
.flip-food{position:absolute;font-size:1.75rem;top:40%;left:50%;transform:translate(-50%,-50%);transition:transform .32s cubic-bezier(.32,1.7,.5,1),filter .25s;filter:brightness(1) saturate(1) drop-shadow(0 3px 3px rgba(0,0,0,.35));}
.flip-food.airborne{transform:translate(-50%,-150%) rotate(300deg);filter:brightness(1.08) saturate(1.05) drop-shadow(0 8px 8px rgba(0,0,0,.3));}
.flip-food.done{filter:brightness(.72) saturate(1.15) drop-shadow(0 2px 2px rgba(0,0,0,.3));}
.flip-pan::after{content:'';position:absolute;left:50%;bottom:-6px;width:70%;height:10px;background:radial-gradient(ellipse,rgba(0,0,0,.35),transparent 70%);transform:translateX(-50%);pointer-events:none;}

/* Миска для замеса — доп. декор для mash-шагов */
.mash-scene{position:relative;width:100%;display:flex;flex-direction:column;align-items:center;touch-action:none;cursor:grab;}
.mash-bowl{position:relative;width:104px;height:58px;border-radius:0 0 50px 50px;background:linear-gradient(180deg,#fbf4e4,#d9c398);border:3px solid var(--soil-light);margin-bottom:6px;overflow:hidden;box-shadow:inset 0 4px 8px rgba(0,0,0,.3), 0 3px 6px rgba(0,0,0,.25);}
.mash-bowl-content{position:absolute;left:6%;right:6%;bottom:0;height:6%;background:linear-gradient(180deg,#f0cc7a,#c9973f);border-radius:50% 50% 0 0/40% 40% 0 0;transition:height .12s;box-shadow:inset 0 2px 4px rgba(255,255,255,.3);}
.mash-hand-icon{position:absolute;top:-6px;left:50%;font-size:2.15rem;transform:translate(-50%,0);transition:transform .08s;filter:drop-shadow(0 4px 4px rgba(0,0,0,.35));}
.mash-hand-icon.press{transform:translate(-50%,10px) scale(.9);}

/* Мельница/сушка/расстойка — лёгкая мучная пыль поверх существующих сцен */
.grind-board.dusting .grind-stone-tex{filter:brightness(1.05);}

/* Финальная искра идеального удара/шага — золотое свечение по всей сцене */
.stage-flash{position:absolute;inset:0;border-radius:inherit;pointer-events:none;z-index:7;background:radial-gradient(circle at 50% 50%,rgba(255,221,140,.55),transparent 70%);animation:stageFlash .45s ease-out forwards;}
@keyframes stageFlash{0%{opacity:0;transform:scale(.7);}30%{opacity:1;}100%{opacity:0;transform:scale(1.4);}}
/* ===== Уровень фермера и опыт (progression.js) ===== */
.level-pill{background:linear-gradient(135deg,#fff2cf,#ffdd8a);border-color:var(--gold);color:#7a5b18;font-weight:700;}
.lvl-card{background:linear-gradient(160deg,#fffaf0,#fdf0d5);border:1.5px solid var(--gold);border-radius:12px;padding:12px 14px;margin-bottom:14px;box-shadow:0 2px 6px rgba(0,0,0,.06);}
.lvl-top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:6px;margin-bottom:6px;}
.lvl-badge{font-weight:800;color:var(--soil-dark);font-size:.95rem;}
.lvl-xp{font-size:.75rem;color:var(--soil-light);font-weight:600;}
.lvl-bar-track{height:10px;background:var(--cream-dark);border-radius:6px;overflow:hidden;border:1px solid var(--gold);}
.lvl-bar-fill{height:100%;background:linear-gradient(90deg,#e0b64a,var(--gold));border-radius:6px;transition:width .4s ease;}
.lvl-next{font-size:.75rem;color:var(--soil-light);margin-top:7px;}
.lvl-next span{font-size:1rem;margin-right:2px;}

/* Замок на ещё не открытых культурах/деревьях/животных в лавке */
.shop-item.locked{opacity:.6;filter:grayscale(.4);}
.shop-item.locked .buy-btn{background:var(--cream-dark);color:var(--soil-light);border-color:var(--soil-light);}

/* Окно повышения уровня — центр экрана, с всплытием и лёгкой пружиной */
.levelup-toast{position:fixed;top:50%;left:50%;transform:translate(-50%,-50%) scale(.7);opacity:0;background:linear-gradient(160deg,#fff7e0,#ffe9b3);border:3px solid var(--gold);border-radius:18px;padding:22px 24px;box-shadow:0 20px 60px rgba(0,0,0,.35);z-index:500;text-align:center;max-width:88vw;width:320px;transition:transform .45s cubic-bezier(.34,1.56,.64,1), opacity .3s;}
.levelup-toast.show{opacity:1;transform:translate(-50%,-50%) scale(1);}
.levelup-toast .lu-star{font-size:2.6rem;animation:luSpin .8s ease-out;}
.levelup-toast .lu-title{font-size:.72rem;letter-spacing:1px;text-transform:uppercase;color:#a9781a;font-weight:700;margin-top:2px;}
.levelup-toast .lu-level{font-size:1.9rem;font-weight:800;color:var(--soil-dark);margin:2px 0 10px;font-family:'Fraunces',serif;}
.levelup-toast .lu-unlocks{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-bottom:10px;}
.levelup-toast .lu-unlock-item{background:#fff;border:1px solid #e7cf94;border-radius:10px;padding:6px 9px;font-size:.78rem;display:flex;align-items:center;gap:5px;color:var(--soil-dark);font-weight:600;}
.levelup-toast .lu-plain{font-size:.85rem;color:var(--soil-light);margin-bottom:10px;}
.levelup-toast .lu-close{width:100%;justify-content:center;padding:10px;}
@keyframes luSpin{from{transform:rotate(-30deg) scale(.4);opacity:0;}to{transform:rotate(0) scale(1);opacity:1;}}

/* Живее подпрыгивающий тост достижений (раньше вообще не показывался — теперь показывается) */
.achv-toast.show{animation:achvPop .5s cubic-bezier(.34,1.56,.64,1);}
@keyframes achvPop{0%{transform:translateX(-50%) translateY(-20px) scale(.85);opacity:0;}60%{transform:translateX(-50%) translateY(4px) scale(1.04);opacity:1;}100%{transform:translateX(-50%) translateY(0) scale(1);opacity:1;}}

/* ============================================================
   ОХОТА И МЯСНИЦКОЕ ДЕЛО — новые мини-игры (скрадывание, прицел
   с дыханием, маскировка ловушки, разделка туши по этапам).
   ============================================================ */

/* --- Скрадывание --- */
.stalk-wrap{display:flex;flex-direction:column;align-items:center;gap:8px;margin-bottom:6px;}
.stalk-alert-track{width:100%;height:12px;border-radius:7px;background:var(--cream-dark);overflow:hidden;border:1.5px solid var(--soil-light);}
.stalk-alert-fill{height:100%;width:0%;background:linear-gradient(90deg,#6fae57,var(--gold));transition:width .25s ease;}
.stalk-alert-fill.danger{background:linear-gradient(90deg,#c9703f,var(--warn));}
.pulse-ring{width:64px;height:64px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:1.6rem;background:var(--cream);border:3px solid var(--cream-dark);transition:border-color .15s,transform .15s;user-select:none;}
.pulse-ring.active{border-color:var(--ok);box-shadow:0 0 0 6px rgba(74,124,63,.18);animation:pulseGlow .5s ease-in-out infinite alternate;}
.pulse-ring.hit{transform:scale(1.18);border-color:var(--gold);}
@keyframes pulseGlow{from{box-shadow:0 0 0 3px rgba(74,124,63,.14);}to{box-shadow:0 0 0 9px rgba(74,124,63,.24);}}

/* --- Прицел (дыхание + убойная зона) --- */
.scope-box{position:relative;height:170px;border-radius:14px;background:radial-gradient(ellipse at center,#eef4e6 0%,#d8e6c8 60%,#c3d6ae 100%);border:2px solid var(--soil-light);overflow:hidden;margin-bottom:10px;box-shadow:inset 0 0 24px rgba(43,33,23,.15);}
.scope-box::before,.scope-box::after{content:'';position:absolute;background:rgba(43,33,23,.18);}
.scope-box::before{left:50%;top:0;bottom:0;width:1px;}
.scope-box::after{top:50%;left:0;right:0;height:1px;}
.scope-animal{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);font-size:3.4rem;filter:drop-shadow(0 3px 4px rgba(0,0,0,.25));user-select:none;}
.scope-vital{position:absolute;transform:translate(-50%,-50%);border-radius:50%;border:2px dashed rgba(179,73,42,.75);background:rgba(179,73,42,.12);}
.scope-crosshair{position:absolute;width:26px;height:26px;transform:translate(-50%,-50%);border:2px solid #d94040;border-radius:50%;box-shadow:0 0 0 1px rgba(255,255,255,.6);}
.scope-crosshair::before,.scope-crosshair::after{content:'';position:absolute;background:#d94040;}
.scope-crosshair::before{left:50%;top:-7px;bottom:-7px;width:2px;transform:translateX(-50%);}
.scope-crosshair::after{top:50%;left:-7px;right:-7px;height:2px;transform:translateY(-50%);}
.breath-track{width:100%;height:10px;border-radius:6px;background:var(--cream-dark);overflow:hidden;border:1.5px solid var(--soil-light);margin-bottom:4px;}
.breath-fill{height:100%;width:100%;background:linear-gradient(90deg,#4a7c3f,#6fae57);transition:width .1s linear,background .2s;}
.breath-fill.danger{background:linear-gradient(90deg,#c0392b,#e74c3c);}
.scope-btns{display:flex;gap:8px;margin-top:10px;}
.scope-btns .action-btn{flex:1;justify-content:center;padding:12px 6px;}
#steadyBtn.active{background:var(--grass);color:#fff;border-color:var(--grass-dark);}

/* --- Маскировка ловушки/ритмичные mash-степы переиспользуют .mash-* --- */

/* --- Разделка: пульс сердцебиения для слива крови --- */
.pulse-wrap{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:6px;}
.pulse-dots{display:flex;gap:6px;flex-wrap:wrap;justify-content:center;}
.pulse-dots i{width:14px;height:14px;border-radius:50%;background:var(--cream-dark);border:1.5px solid var(--soil-light);display:inline-block;font-style:normal;}
.pulse-dots i.good{background:var(--ok);border-color:var(--ok);}
.pulse-dots i.meh{background:var(--gold);border-color:var(--gold);}
.pulse-dots i.bad,.pulse-dots i.missed{background:var(--warn);border-color:var(--warn);}

/* --- Снятие шкуры: зоны риска разрыва по краям дорожки --- */
.skin-track{position:relative;}
.mg-rip-zone{position:absolute;top:0;bottom:0;background:repeating-linear-gradient(45deg,rgba(179,73,42,.28),rgba(179,73,42,.28) 5px,rgba(179,73,42,.14) 5px,rgba(179,73,42,.14) 10px);}

/* --- Разруб на суставы: реакция на случайных клетках --- */
.joint-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px;}
.joint-cell{height:60px;border-radius:12px;background:var(--cream);border:1.5px dashed var(--cream-dark);display:flex;align-items:center;justify-content:center;}
.joint-btn{position:relative;width:52px;height:52px;border-radius:50%;background:var(--panel);border:2.5px solid var(--warn);font-size:1.5rem;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 6px rgba(0,0,0,.18);animation:jointPop .12s ease;}
.joint-btn:active{transform:scale(.9);}
.joint-ring{position:absolute;inset:-2.5px;border-radius:50%;border:2.5px solid rgba(179,73,42,.55);animation:jointShrink linear forwards;animation-duration:1s;}
@keyframes jointPop{from{transform:scale(.4);opacity:0;}to{transform:scale(1);opacity:1;}}
@keyframes jointShrink{from{transform:scale(1.5);opacity:.9;}to{transform:scale(.15);opacity:0;}}

/* --- Сортировка обрезков (крупная дичь) --- */
.trim-wrap{display:flex;flex-direction:column;align-items:center;gap:10px;margin-bottom:6px;}
.trim-item-stage{position:relative;width:100%;height:82px;border-radius:12px;overflow:hidden;background:linear-gradient(180deg,#e9dabb,#d9c398);border:2px solid var(--soil-light);display:flex;align-items:center;justify-content:center;box-shadow:inset 0 3px 6px rgba(0,0,0,.2);}
.trim-item-stage::before{content:'';position:absolute;inset:0;background:repeating-linear-gradient(120deg,rgba(138,98,64,.14) 0 12px,transparent 12px 24px);animation:trimBeltMove 1s linear infinite;}
@keyframes trimBeltMove{from{background-position:0 0;}to{background-position:34px 20px;}}
.trim-item{position:relative;z-index:1;font-size:2.8rem;height:64px;display:flex;align-items:center;justify-content:center;}
.trim-item.pop{animation:trimPop .22s ease;}
@keyframes trimPop{0%{transform:scale(.5) rotate(-8deg);opacity:0;}100%{transform:scale(1) rotate(0);opacity:1;}}
.trim-item.fly-away{animation:trimFlyAway .22s ease-in forwards;}
@keyframes trimFlyAway{to{transform:translate(var(--flydx,0),-46px) scale(.35) rotate(20deg);opacity:0;}}
.trim-item.drop-away{animation:trimDropAway .26s cubic-bezier(.4,0,1,1) forwards;}
@keyframes trimDropAway{to{transform:translateY(50px) rotate(-25deg);opacity:0;}}
.trim-bins{display:flex;gap:8px;width:100%;}
.trim-bin{position:relative;flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:12px;padding:10px 4px;font-weight:700;transition:.12s;overflow:visible;}
.trim-bin .tb-icon{font-size:1.4rem;}
.trim-bin .tb-label{font-size:.68rem;color:var(--soil-light);}
.trim-bin:active{transform:scale(.95);}
.trim-bin.right{background:rgba(74,124,63,.22);border-color:var(--ok);}
.trim-bin.wrong{background:rgba(179,73,42,.18);border-color:var(--warn);}
.trim-desc{font-size:.72rem;color:var(--soil-light);font-style:italic;text-align:center;margin:0;min-height:1.6em;}
.trim-streak{color:var(--gold);font-weight:800;}

/* --- Кровопускание: растущая лужа, нож дрожит в руке --- */
.bleed-scene{position:relative;height:120px;border-radius:14px;background:radial-gradient(ellipse at 50% 100%,#f0d6c8,#e6c2ba 65%);border:2px solid var(--soil-light);overflow:hidden;margin-bottom:10px;display:flex;align-items:flex-end;justify-content:center;box-shadow:inset 0 3px 8px rgba(0,0,0,.2);}
.bleed-pool{position:absolute;left:50%;bottom:0;width:16%;height:10%;background:radial-gradient(ellipse at center,#b3492a,#7a2c18 72%);border-radius:50%;transform:translateX(-50%);transition:width .1s,height .1s;opacity:.88;filter:blur(.4px);}
.bleed-pool.deep{background:radial-gradient(ellipse at center,#8f2e17,#4a1509 72%);}
.bleed-knife{position:relative;font-size:2.6rem;margin-bottom:16px;filter:drop-shadow(0 4px 5px rgba(0,0,0,.3));}
.bleed-knife.jitter{animation:bleedJitter .12s infinite;}
@keyframes bleedJitter{0%,100%{transform:translate(0,0) rotate(0);}25%{transform:translate(-1px,1px) rotate(-3deg);}75%{transform:translate(1px,-1px) rotate(3deg);}}

/* --- Снятие шкуры: свободное ведение ножа вдоль линии фасции --- */
.skin-svg-wrap{position:relative;width:100%;height:110px;border-radius:14px;border:2px solid var(--soil-light);box-shadow:inset 0 3px 8px rgba(0,0,0,.2);overflow:hidden;touch-action:none;cursor:crosshair;margin-bottom:8px;background:#e9dabb;}
.skin-meat-bg{position:absolute;inset:0;background:repeating-linear-gradient(96deg,#d9756a 0 6px,#c85f52 6px 11px);}
.skin-hide-strips{position:absolute;inset:0;display:flex;}
.skin-hide-strip{flex:1;height:100%;background:linear-gradient(180deg,#9a7048,#6b4a2c);border-right:1px solid rgba(0,0,0,.06);transform-origin:top;transition:transform .22s cubic-bezier(.5,0,.5,1),opacity .22s ease,background .15s ease;}
.skin-hide-strip.peeled{transform:scaleY(.08);opacity:.12;}
.skin-hide-strip.good.peeled{opacity:.04;}
.skin-hide-strip.meh.peeled{opacity:.22;background:linear-gradient(180deg,#a87d48,#7a5726);}
.skin-hide-strip.bad.peeled{opacity:.4;background:linear-gradient(180deg,#b3492a,#7a2c18);}
.skin-svg{position:absolute;inset:0;width:100%;height:100%;z-index:2;}
.skin-guide{fill:none;stroke:rgba(255,255,255,.6);stroke-width:.5;stroke-dasharray:2 1.6;stroke-linecap:round;stroke-linejoin:round;}
.skin-knife{fill:#fff;stroke:var(--soil-dark);stroke-width:.8;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4));transition:r .1s;}
.skin-knife.rip{fill:var(--warn);animation:skinRipShake .4s ease;}
@keyframes skinRipShake{0%,100%{transform:translate(0,0);}25%{transform:translate(-2px,1px);}50%{transform:translate(2px,-1px);}75%{transform:translate(-1px,-1px);}}

/* --- Поиск сустава на ощупь: диск + подсказки «холодно/тепло/горячо» --- */
.joint-dial-wrap{display:flex;justify-content:center;margin:4px 0 8px;}
.joint-dial{position:relative;width:148px;height:148px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#e8d2ae,#c9a877 60%,#a3814f);border:5px solid var(--soil-light);box-shadow:inset 0 4px 10px rgba(0,0,0,.28),0 3px 6px rgba(0,0,0,.22);touch-action:none;cursor:grab;}
.joint-dial.active{cursor:grabbing;}
.joint-dial.warm{animation:jointDialPulseWarm 1s ease-out infinite;}
.joint-dial.hot{animation:jointDialPulseHot .6s ease-out infinite;}
@keyframes jointDialPulseWarm{0%{box-shadow:inset 0 4px 10px rgba(0,0,0,.28),0 0 0 0 rgba(201,151,63,.45);}100%{box-shadow:inset 0 4px 10px rgba(0,0,0,.28),0 0 0 12px rgba(201,151,63,0);}}
@keyframes jointDialPulseHot{0%{box-shadow:inset 0 4px 10px rgba(0,0,0,.28),0 0 0 0 rgba(74,124,63,.55);}100%{box-shadow:inset 0 4px 10px rgba(0,0,0,.28),0 0 0 18px rgba(74,124,63,0);}}
.joint-dial-core{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;font-size:2rem;pointer-events:none;filter:drop-shadow(0 2px 3px rgba(0,0,0,.3));}
.joint-dial-handle{position:absolute;inset:0;transform-origin:50% 50%;pointer-events:none;transition:transform .03s linear;}
.joint-dial-handle::after{content:'';position:absolute;top:50%;left:91%;width:22px;height:22px;margin:-11px 0 0 -11px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f0c98a,#8a5726);box-shadow:0 2px 5px rgba(0,0,0,.4),0 0 0 3px rgba(255,255,255,.15);}
.joint-dial-handle.locked::after{background:radial-gradient(circle at 35% 30%,#8fd67a,#4a7c3f);box-shadow:0 0 0 6px rgba(74,124,63,.4);}
.joint-hint-label{display:block;text-align:center;font-weight:800;font-size:.85rem;color:var(--soil-light);letter-spacing:.2px;}
.joint-hint-label.warm{color:#c9973f;}
.joint-hint-label.hot{color:var(--ok);animation:jointHotPulse .4s ease-in-out infinite alternate;}
@keyframes jointHotPulse{from{transform:scale(1);}to{transform:scale(1.08);}}
.joint-cut-wrap{position:relative;display:flex;justify-content:center;margin:14px 0 4px;}
.joint-btn-big{position:relative;width:88px;height:88px;font-size:2.2rem;overflow:visible;}
.joint-half{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);transition:transform .3s ease-out,opacity .3s ease-out;}
.joint-btn-big.popped .joint-half-l{transform:translate(calc(-50% - 22px),calc(-50% + 6px)) rotate(-30deg);opacity:.85;}
.joint-btn-big.popped .joint-half-r{transform:translate(calc(-50% + 22px),calc(-50% - 4px)) rotate(24deg);opacity:.85;}
.joint-btn-big.popped{border-color:transparent;}

/* ============================================================
   НАВЫКИ И СПЕЦИАЛИЗАЦИИ (js/skills.js)
   ============================================================ */
.skill-card{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:14px;padding:14px;margin-bottom:12px;}
.skill-card-head{display:flex;align-items:center;gap:10px;margin-bottom:8px;}
.skill-card-icon{font-size:1.8rem;line-height:1;}
.skill-card-title{flex:1;}
.skill-card-name{font-weight:800;color:var(--soil-dark);font-size:1rem;}
.skill-card-lvl{font-size:.72rem;color:var(--soil-light);font-weight:600;}
.skill-bar-track{margin-bottom:3px;}
.skill-card-xp{font-size:.66rem;color:var(--soil-light);text-align:right;margin-bottom:6px;}
.skill-card-desc{font-size:.76rem;color:var(--soil-light);margin-bottom:8px;line-height:1.4;}

.skill-locked-note{font-size:.76rem;color:var(--soil-light);background:var(--cream);border-radius:9px;padding:8px 10px;}

.skill-spec-choice{margin-top:6px;}
.skill-spec-prompt{font-size:.78rem;font-weight:700;color:var(--soil-dark);margin-bottom:8px;}
.skill-spec-options{display:flex;flex-direction:column;gap:8px;}
.skill-spec-btn{display:grid;grid-template-columns:auto 1fr;gap:2px 10px;text-align:left;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:11px;padding:10px 12px;transition:.12s;}
.skill-spec-btn:hover{border-color:var(--gold);background:#fff7e0;}
.skill-spec-btn:active{transform:scale(.98);}
.skill-spec-icon{grid-row:1/3;font-size:1.6rem;align-self:center;}
.skill-spec-name{font-weight:800;color:var(--soil-dark);font-size:.86rem;}
.skill-spec-desc{font-size:.72rem;color:var(--soil-light);line-height:1.35;}
.skill-spec-perks{grid-column:2;font-size:.85rem;letter-spacing:2px;margin-top:2px;}

.skill-perk-tree{display:flex;flex-direction:column;gap:8px;margin-top:4px;}
.skill-perk{display:flex;gap:10px;align-items:flex-start;border-radius:10px;padding:8px 10px;background:var(--cream);border:1.5px solid var(--cream-dark);}
.skill-perk.unlocked{background:rgba(74,124,63,.12);border-color:var(--ok);}
.skill-perk.locked{opacity:.62;}
.skill-perk-icon{font-size:1.25rem;line-height:1.3;}
.skill-perk-name{font-weight:700;font-size:.82rem;color:var(--soil-dark);}
.skill-perk-need{font-weight:600;color:var(--soil-light);font-size:.68rem;}
.skill-perk-desc{font-size:.72rem;color:var(--soil-light);line-height:1.35;margin-top:1px;}
.skill-respec-btn{width:100%;justify-content:center;margin-top:10px;font-size:.72rem;color:var(--soil-light);}

/* --- Компактный виджет ремесла, встроенный на тематические страницы --- */
.skill-mini{display:flex;align-items:center;gap:9px;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:10px;padding:7px 10px;margin-bottom:8px;cursor:pointer;transition:.12s;}
.skill-mini:hover{border-color:var(--gold);}
.skill-mini:active{transform:scale(.98);}
.skill-mini-icon{font-size:1.15rem;}
.skill-mini-body{flex:1;display:flex;flex-direction:column;gap:3px;}
.skill-mini-txt{font-size:.7rem;font-weight:700;color:var(--soil-dark);}
.skill-mini-bar-track{display:block;height:5px;border-radius:3px;background:var(--cream-dark);overflow:hidden;}
.skill-mini-bar-fill{display:block;height:100%;background:linear-gradient(90deg,var(--wheat),var(--gold));border-radius:3px;}

.skill-levelup-toast .lu-star{filter:none;}
.perk-toast{border-color:var(--ok);}
.perk-toast .t-title{color:var(--ok);}

.badge.disease.warn{background:#8a6a12;}
.skill-scout-hint{font-size:.74rem;color:var(--soil-dark);background:#fff7e0;border:1.5px solid var(--gold);border-radius:9px;padding:7px 10px;margin:-4px 0 10px;display:flex;align-items:center;gap:6px;flex-wrap:wrap;}

/* ===== МАСТЕРСКАЯ (лесное ремесло: вылазки, инструменты, крафт) ===== */

/* — цвета ремёсел: у каждой вкладки/раздела свой акцент, чтобы было видно с первого
   взгляда, где ты — лес, инструменты, резьба, камень или гончарка — а не одинаковые
   бежевые карточки everywhere. */
:root{
  --wc-gather:#4f7942; --wc-gather-dk:#3a5c30;
  --wc-tools:#5a6b78;  --wc-tools-dk:#3e4c56;
  --wc-wood:#a3742f;   --wc-wood-dk:#7a5620;
  --wc-stone:#75726a;  --wc-stone-dk:#524f49;
  --wc-clay:#bb5a34;   --wc-clay-dk:#8c4326;
}

.workshop-scene{position:relative;border-radius:14px;overflow:hidden;margin-bottom:12px;height:72px;
  background:linear-gradient(180deg,#8a9a5c 0%,#5c6e3a 55%,#3a4522 100%);
  box-shadow:inset 0 -18px 24px -12px rgba(0,0,0,.35);}
.workshop-scene::before{content:'🪓 🌲 🪵 🌳 🪨 🌲 🧺 🌳 🪓';position:absolute;bottom:-8px;left:0;right:0;font-size:1.6rem;letter-spacing:10px;opacity:.9;white-space:nowrap;overflow:hidden;text-shadow:0 3px 6px rgba(0,0,0,.3);}
.workshop-scene::after{content:'🛖 мастерская';position:absolute;top:8px;left:12px;font-size:.72rem;font-weight:800;color:#fff;letter-spacing:.5px;text-shadow:0 1px 3px rgba(0,0,0,.5);text-transform:uppercase;}

/* Мешочек сырья — постоянно на виду, чтобы не гадать, хватает ли материалов */
.wpouch{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:12px;padding:9px 11px;margin-bottom:12px;box-shadow:0 2px 5px rgba(0,0,0,.06);}
.wpouch-label{font-size:.68rem;font-weight:800;color:var(--soil-light);text-transform:uppercase;letter-spacing:.5px;display:block;margin-bottom:6px;}
.wpouch-chips{display:flex;flex-wrap:wrap;gap:6px;}
.wpouch-chip{display:flex;align-items:center;gap:5px;background:var(--cream);border-radius:8px;padding:4px 9px 4px 7px;font-size:.74rem;}
.wpouch-chip .wpouch-icon{font-size:1rem;}
.wpouch-chip .wpouch-amt{font-weight:800;color:var(--soil-dark);}
.wpouch-chip .wpouch-name{color:var(--soil-light);font-size:.68rem;}
.wpouch-chip.empty{opacity:.42;}
.wpouch-chip.empty .wpouch-amt{color:var(--soil-light);}

.workshop-profs-row{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:12px;}
.workshop-profs-row .skill-mini{flex:1 1 210px;margin-bottom:0;}

/* Вкладки — крупнее, с иконкой-бейджем, у каждой свой цвет активного состояния */
.wtabs{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:14px;}
.wtab-btn{position:relative;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:10px;padding:8px 13px;font-size:.78rem;font-weight:700;color:var(--soil-dark);transition:.12s;display:flex;align-items:center;gap:6px;}
.wtab-btn:hover{border-color:var(--soil-light);}
.wtab-icon{font-size:1.05rem;}
.wtab-badge{background:var(--ok);color:#fff;font-size:.62rem;font-weight:800;border-radius:8px;padding:1px 6px;margin-left:2px;}
.wtab-btn.active .wtab-badge{background:rgba(255,255,255,.28);}
.wtab-btn.wt-gather.active{background:var(--wc-gather);color:#fff;border-color:var(--wc-gather-dk);}
.wtab-btn.wt-tools.active{background:var(--wc-tools);color:#fff;border-color:var(--wc-tools-dk);}
.wtab-btn.wt-furniture.active{background:var(--wc-wood);color:#fff;border-color:var(--wc-wood-dk);}
.wtab-btn.wt-stone.active{background:var(--wc-stone);color:#fff;border-color:var(--wc-stone-dk);}
.wtab-btn.wt-pottery.active{background:var(--wc-clay);color:#fff;border-color:var(--wc-clay-dk);}

.wtab-body{display:flex;flex-direction:column;gap:12px;}
.wtab-intro{font-size:.78rem;color:var(--soil-light);background:var(--cream);border-radius:10px;padding:9px 12px;line-height:1.4;}
.wtab-intro b{color:var(--soil-dark);}

.wsection-label{font-size:.72rem;font-weight:800;color:var(--soil-dark);text-transform:uppercase;letter-spacing:.5px;margin:2px 0 -4px;display:flex;align-items:center;gap:6px;}
.wsection-label.muted{color:var(--soil-light);}
.wsection-label::after{content:'';flex:1;height:1px;background:var(--cream-dark);}

/* Карточки инструментов/рецептов — адаптивная сетка вместо одной колонки */
.wgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(230px,1fr));gap:10px;}
.wgrid-tools{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));}
.wcard{position:relative;background:var(--panel);border-radius:13px;padding:13px;display:flex;flex-direction:column;gap:8px;border:1.5px solid var(--cream-dark);box-shadow:0 2px 5px rgba(0,0,0,.05);transition:.12s;}
.wcard.ready{border-color:var(--gold);background:linear-gradient(180deg,#fffaf0,var(--panel));box-shadow:0 3px 10px rgba(200,154,60,.22);}
.wcard.owned{opacity:.8;}
.wcard.locked{opacity:.7;}
.wcard-ribbon{position:absolute;top:9px;right:11px;font-size:.9rem;}
.wcard-head{display:flex;align-items:flex-start;gap:10px;padding-right:16px;}
.wcard-icon{font-size:1.8rem;flex-shrink:0;line-height:1;}
.wcard-name{font-size:.86rem;font-weight:700;color:var(--soil-dark);}
.wcard-desc{font-size:.72rem;color:var(--soil-light);line-height:1.4;margin-top:2px;}
.wcard-status{font-size:.74rem;color:var(--soil-light);font-weight:600;}
.wcard-status.ready{color:var(--ok);}
.wcard-status.locked{color:#a5622c;}
.wtag{font-size:.62rem;font-weight:700;color:var(--ok);background:#eaf3e6;border-radius:6px;padding:1px 6px;margin-left:4px;}
.wcost-row{display:flex;flex-wrap:wrap;gap:6px;}
.wcost-part{font-size:.68rem;font-weight:700;color:var(--soil-dark);background:var(--cream-dark);border-radius:6px;padding:3px 8px;display:inline-flex;align-items:baseline;gap:4px;}
.wcost-part i{font-style:normal;font-weight:600;font-size:.6rem;color:var(--soil-light);}
.wcost-part i.wnote{color:#a5622c;}
.wcost-part.lack{color:#a02a2a;background:#f6dede;}
.wcost-part.lack i{color:#b56060;}

/* Компактные плитки для ещё не открытых рецептов — не тратят место на полную карточку */
.wtiles{display:grid;grid-template-columns:repeat(auto-fill,minmax(128px,1fr));gap:8px;}
.wtile{background:var(--cream);border:1.5px dashed var(--cream-dark);border-radius:10px;padding:9px 8px;display:flex;flex-direction:column;align-items:center;text-align:center;gap:3px;opacity:.8;transition:.12s;}
.wtile:hover{opacity:1;border-color:var(--soil-light);}
.wtile-icon{font-size:1.35rem;filter:grayscale(.35);}
.wtile-name{font-size:.68rem;font-weight:700;color:var(--soil-dark);line-height:1.2;}
.wtile-reason{font-size:.6rem;color:var(--soil-light);font-weight:600;}

/* Крупные карточки-действия для вкладки «Вылазка» */
.whero{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:14px;padding:14px;display:flex;align-items:center;gap:12px;box-shadow:0 2px 6px rgba(0,0,0,.06);}
.whero-icon{font-size:2.3rem;flex-shrink:0;background:var(--cream);border-radius:50%;width:56px;height:56px;display:flex;align-items:center;justify-content:center;}
.whero-body{flex:1;min-width:0;}
.whero-name{font-size:.94rem;font-weight:800;color:var(--soil-dark);font-family:'Fraunces',serif;}
.whero-desc{font-size:.74rem;color:var(--soil-light);line-height:1.4;margin:2px 0 6px;}
.whero-status{font-size:.74rem;font-weight:700;color:var(--soil-light);}
.whero-status.ready{color:var(--ok);}
.whero-status.locked{color:#a5622c;}
.whero-btn{flex-shrink:0;padding:11px 16px;font-size:.82rem;}
@media(max-width:560px){.whero{flex-direction:column;align-items:stretch;text-align:center;}.whero-icon{margin:0 auto;}.whero-btn{width:100%;justify-content:center;}}

/* Второстепенные блоки-карточки: навес сушки, заточка, печь — чуть скромнее «геройских» */
.wsubcard{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:13px;padding:13px;display:flex;flex-direction:column;gap:8px;}
.wsubcard-head{display:flex;align-items:flex-start;gap:10px;}
.wsubcard-icon{font-size:1.6rem;flex-shrink:0;line-height:1;}
.wsubcard-name{font-size:.84rem;font-weight:700;color:var(--soil-dark);}
.wsubcard-desc{font-size:.72rem;color:var(--soil-light);line-height:1.4;margin-top:2px;}
.wsubcard-status{font-size:.76rem;font-weight:700;color:var(--soil-light);}
.wsubcard-status.ready{color:var(--ok);}

.workshop-stats{font-size:.76rem;color:var(--soil-light);margin-top:4px;display:flex;gap:16px;flex-wrap:wrap;background:var(--cream);border-radius:10px;padding:9px 12px;}
.workshop-stats b{color:var(--soil-dark);}

/* ----- Реализм ремесла: сушка брёвен, полка/печь гончарки, простукивание камня ----- */
.drying-slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(140px,1fr));gap:8px;}
.drying-slot{background:var(--cream);border:1.5px dashed var(--cream-dark);border-radius:10px;padding:9px;display:flex;flex-direction:column;align-items:center;gap:5px;text-align:center;transition:.12s;}
.drying-slot.ready{border-style:solid;border-color:var(--gold);background:#fffaf0;}
.drying-slot.empty{opacity:.55;}
.ds-icon{font-size:1.5rem;}
.ds-status{font-size:.66rem;font-weight:700;color:var(--soil-dark);}
.ds-status.ready{color:var(--ok);}
.warn-btn{background:#f6dede !important;color:#a02a2a !important;border-color:#e0b3b3 !important;}

/* ----- Простукивание камня: суждение по звуку, а не тайминг ----- */
.tap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(120px,1fr));gap:10px;margin-top:6px;}
.tap-card{background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:12px;padding:12px 8px;display:flex;flex-direction:column;align-items:center;gap:6px;text-align:center;transition:.15s;}
.tap-card.tap-good{border-color:#8fbf7a;background:#eef7ea;}
.tap-card.tap-bad{border-color:#d16a5f;background:#fbe9e7;}
.tap-icon{font-size:1.8rem;}
.tap-verdict{font-size:.68rem;font-weight:700;color:var(--soil-light);min-height:2.2em;}
.tap-btns{display:flex;flex-direction:column;gap:5px;width:100%;}

/* Вылазка — мини-игра поиска */
.expedition-box{max-width:460px;}
.expedition-hud{display:flex;justify-content:space-between;font-size:.78rem;font-weight:700;color:var(--soil-dark);margin-bottom:6px;}
.expedition-timerbar{width:100%;height:8px;background:var(--cream-dark);border-radius:5px;overflow:hidden;margin-bottom:12px;}
.expedition-timerfill{height:100%;background:linear-gradient(90deg,var(--gold),#e8a73c);transition:width .1s linear;}
.expedition-scene{position:relative;height:220px;border-radius:14px;overflow:hidden;margin-bottom:10px;
  background:linear-gradient(180deg,#7fae6a 0%,#4f7942 55%,#2f5424 100%);border:1.5px solid var(--soil-dark);}
.expedition-spot{position:absolute;transform:translate(-50%,-50%);width:44px;height:44px;border-radius:50%;
  background:rgba(255,255,255,.14);border:1.5px solid rgba(255,255,255,.35);display:flex;align-items:center;justify-content:center;
  font-size:1.5rem;transition:.15s;}
.expedition-spot:not(.revealed):active{transform:translate(-50%,-50%) scale(.88);}
.expedition-spot.revealed{background:rgba(255,255,255,.9);border-color:var(--gold);cursor:default;}
.expedition-spot .es-icon.found{animation:pinBounce .5s ease-in-out;}
.expedition-spot .es-icon.empty{opacity:.5;}
.expedition-log{max-height:90px;overflow-y:auto;text-align:left;font-size:.74rem;color:var(--soil-dark);}
.exp-find{padding:2px 0;}
.exp-find.empty{color:var(--soil-light);font-style:italic;}
.exp-summary-list{display:flex;flex-direction:column;gap:6px;margin-bottom:14px;text-align:left;}
.exp-summary-item{display:flex;justify-content:space-between;background:var(--cream);border-radius:8px;padding:7px 11px;font-size:.82rem;font-weight:700;color:var(--soil-dark);}

/* ============================================================
   ХЛЕВ — простая панель корма (старая система: купил и покормил)
   ============================================================ */
.barn-feed-bar{display:flex;align-items:center;justify-content:space-between;gap:10px;flex-wrap:wrap;background:var(--panel);border:1.5px solid var(--cream-dark);border-radius:12px;padding:10px 14px;margin-bottom:12px;}
.barn-feed-info{font-size:.8rem;font-weight:600;color:var(--soil-dark);}
@media(max-width:520px){.barn-feed-bar{flex-direction:column;align-items:stretch;}.barn-feed-bar .action-btn{width:100%;justify-content:center;}}

.pen-group-label{background:var(--cream);border-radius:9px;padding:7px 10px;}

/* ============================================================
   РЫБАЛКА — переработанные мини-игры (заброс/прицел/подсечка/вываживание)
   ============================================================ */

/* --- Заброс: заряд удилища --- */
.cast-charge-wrap{display:flex;align-items:flex-end;gap:10px;margin-bottom:6px;}
.cast-rod-visual{font-size:2rem;transform-origin:bottom right;transition:transform .05s linear;filter:drop-shadow(0 2px 3px rgba(0,0,0,.35));}
.cast-power-track{position:relative;flex:1;height:34px;background:linear-gradient(90deg,#8a6240 0%,#4a7c3f 45%,#c89a3c 70%,#b3492a 100%);border-radius:17px;overflow:hidden;border:2px solid var(--soil-light);}
.cast-sweet{position:absolute;top:0;bottom:0;background:rgba(255,255,255,.35);border-left:2px dashed rgba(255,255,255,.9);border-right:2px dashed rgba(255,255,255,.9);}
.cast-fill{position:absolute;top:0;bottom:0;left:0;width:0%;background:rgba(20,14,10,.4);border-right:3px solid #20140a;transition:width .05s linear;}
.cast-charge-btn{user-select:none;touch-action:none;}
.cast-charge-btn:active{transform:translateY(2px);}

/* --- Прицел заброса: бегущая метка над прудом со всплесками --- */
.cast-aim-pond{position:relative;height:80px;border-radius:12px;overflow:hidden;margin:10px 0;background:linear-gradient(180deg,#7fa8c9,#3d7ea6);}
.aim-spot{position:absolute;bottom:8px;transform:translateX(-50%);font-size:1.3rem;animation:rippleGrow 2.4s ease-out infinite;}
.aim-spot.rare{filter:drop-shadow(0 0 5px #ffe9a3);}
.aim-marker{position:absolute;top:6px;font-size:1.4rem;transform:translateX(-50%);transition:left .02s linear;filter:drop-shadow(0 2px 2px rgba(0,0,0,.4));}

/* --- Ожидание клёва: ложные поклёвки --- */
.fish-wait-pond.small{height:76px;}
.fish-bobber.nibble{animation:bobberDip .42s ease-in-out;}
.fish-bobber.strike{animation:bobberDip .18s ease-in-out 2;}
.nibble-flash{position:absolute;inset:0;background:rgba(255,255,255,0);pointer-events:none;transition:background .18s;}
.nibble-flash.show{background:rgba(255,255,255,.18);}

/* --- Подсечка: кольцо вместо плоской полосы --- */
.strike-flash{animation:strikeFlashKF .3s ease-out;}
@keyframes strikeFlashKF{0%{background:rgba(255,255,255,.55);}100%{background:rgba(0,0,0,.5);}}
.hookset-ring-wrap{position:relative;width:150px;height:150px;display:flex;align-items:center;justify-content:center;}
.hookset-ring{position:absolute;inset:0;width:100%;height:100%;transform:rotate(-90deg);}
.hookset-ring circle{fill:none;stroke-width:7;}
#hooksetRingBg{stroke:var(--cream-dark);}
#hooksetRingFg{stroke:#e8a73c;stroke-linecap:round;transition:stroke-dashoffset .05s linear,stroke .15s;}
.hookset-ring-wrap .hookset-btn{position:relative;width:112px;height:112px;padding:0;border-radius:50%;box-shadow:0 5px 0 #7a1f10;}

/* --- Вываживание: 2D-пруд с корягами и рулением --- */
.fight-scene-2d{height:150px;background:linear-gradient(180deg,#5a9ac2,#1e4a63);}
.fight-snag{position:absolute;left:88%;font-size:1.7rem;transform:translateX(-50%);filter:drop-shadow(0 2px 3px rgba(0,0,0,.5));transition:filter .15s,transform .15s;opacity:.9;}
.fight-snag.top{top:2px;}
.fight-snag.bottom{bottom:2px;}
.fight-snag.danger-near{transform:translateX(-50%) scale(1.25);filter:drop-shadow(0 0 6px var(--warn));}
.fight-splash{position:absolute;left:20%;top:50%;font-size:0;pointer-events:none;}
.fight-splash.show::before{content:'💦';position:absolute;font-size:1.4rem;animation:splashPop .5s ease-out forwards;}
@keyframes splashPop{0%{opacity:1;transform:scale(.4) translateY(0);}100%{opacity:0;transform:scale(1.6) translateY(-10px);}}
.fight-steer-row{display:flex;gap:8px;margin-bottom:8px;}
.fight-steer-btn{flex:1;background:linear-gradient(180deg,#7a9c6a,#4a7c3f);color:#fff;font-weight:800;font-size:.78rem;padding:10px;border-radius:10px;box-shadow:0 3px 0 #2f5a26;user-select:none;touch-action:none;transition:transform .05s;}
.fight-steer-btn.holding{transform:translateY(2px);box-shadow:0 1px 0 #2f5a26;background:linear-gradient(180deg,#5aa0c9,#3d7ea6);}

/* ============================================================
   ПАНЕЛЬ НАСТРОЕК + ПЕРЕКЛЮЧАТЕЛЬ ЯЗЫКА (js/ui/settings-panel.js, js/core/i18n.js)
   ============================================================ */
.settings-corner-btn{position:fixed;top:10px;right:10px;z-index:60;width:42px;height:42px;border-radius:50%;background:var(--panel);border:1.5px solid var(--soil-light);box-shadow:0 3px 10px rgba(0,0,0,.25);display:flex;align-items:center;justify-content:center;color:var(--soil-dark);transition:transform .15s;}
.settings-corner-btn:hover{transform:rotate(25deg);}
.settings-corner-btn:active{transform:scale(.92);}
.settings-corner-btn .ui-icon svg{width:22px;height:22px;}
@media(max-width:880px){.settings-corner-btn{top:auto;bottom:14px;right:14px;width:46px;height:46px;}}

.settings-modal-box{max-width:480px;max-height:86vh;overflow-y:auto;text-align:left;}
.settings-section-title{font-size:.95rem;margin:16px 0 8px;color:var(--soil-dark);}
.settings-section-title:first-of-type{margin-top:4px;}

.lang-switch-row{display:flex;gap:8px;margin-bottom:8px;}
.lang-btn{flex:1;background:var(--cream);border:1.5px solid var(--cream-dark);border-radius:10px;padding:10px;font-weight:700;font-size:.84rem;color:var(--soil-dark);}
.lang-btn.active{background:var(--gold);border-color:#b3822f;color:#3a2a0a;}
.settings-i18n-note{font-size:.72rem;color:var(--soil-light);background:var(--cream);border-radius:9px;padding:8px 10px;margin-bottom:4px;line-height:1.4;}

/* ======================================================================
   ОХОТА: ВИЗУАЛЬНЫЙ АПГРЕЙД — сцена, оптика, анимации, эффекты попадания
   ====================================================================== */

/* ---------- Общий фон охотничьих модалок: лёгкая лесная атмосфера ---------- */
.hunt-scene-box{position:relative;}
.hunt-scene-box::after{content:'';position:absolute;inset:0;pointer-events:none;background:
  radial-gradient(circle at 18% 12%,rgba(255,255,255,.5),transparent 40%);
  opacity:.5;mix-blend-mode:overlay;}

/* ---------- ПРИЦЕЛ (scope-box) — стекло оптики, виньетка, риски ---------- */
.scope-box{
  position:relative;height:190px;border-radius:14px;overflow:hidden;margin-bottom:10px;
  background:radial-gradient(ellipse at center,#eef4e6 0%,#d8e6c8 55%,#aebf94 100%);
  border:2px solid var(--soil-light);
  box-shadow:inset 0 0 0 6px rgba(20,16,10,.06), inset 0 0 34px rgba(20,14,8,.32), 0 3px 10px rgba(0,0,0,.18);
  transition:transform .06s ease-out;
}
.scope-box::before,.scope-box::after{content:'';position:absolute;background:rgba(43,33,23,.16);z-index:2;}
.scope-box::before{left:50%;top:0;bottom:0;width:1px;}
.scope-box::after{top:50%;left:0;right:0;height:1px;}
/* тяжёлая виньетка оптического прицела */
.scope-vignette{position:absolute;inset:0;z-index:3;pointer-events:none;
  background:radial-gradient(ellipse at center,transparent 46%,rgba(10,8,5,.16) 68%,rgba(6,5,3,.62) 100%);
  box-shadow:inset 0 0 0 2px rgba(0,0,0,.12);}
.scope-vignette::before{content:'';position:absolute;inset:0;
  background:repeating-radial-gradient(circle at center,transparent 0 24px,rgba(255,255,255,.025) 24px 25px);
  mix-blend-mode:overlay;}
/* риски дальномера по краям */
.scope-ticks{position:absolute;inset:8px;z-index:3;pointer-events:none;}
.scope-ticks::before,.scope-ticks::after{content:'';position:absolute;background:rgba(30,22,14,.4);}
.scope-ticks::before{left:0;right:0;top:0;height:1px;background:repeating-linear-gradient(90deg,rgba(30,22,14,.55) 0 1px,transparent 1px 11%);}
.scope-ticks::after{left:0;right:0;bottom:0;height:1px;background:repeating-linear-gradient(90deg,rgba(30,22,14,.55) 0 1px,transparent 1px 11%);}
/* блик стекла, медленно скользящий по прицелу */
.scope-glare{position:absolute;top:-40%;left:-60%;width:65%;height:220%;z-index:4;pointer-events:none;
  background:linear-gradient(75deg,transparent 30%,rgba(255,255,255,.22) 48%,transparent 66%);
  animation:scopeGlareSweep 5.5s ease-in-out infinite;}
@keyframes scopeGlareSweep{0%,18%{transform:translateX(0);}55%,100%{transform:translateX(230%);}}

.scope-animal{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);font-size:3.4rem;
  filter:drop-shadow(0 3px 4px rgba(0,0,0,.25));user-select:none;z-index:1;
  animation:scopeAnimalSway 3.6s ease-in-out infinite;}
@keyframes scopeAnimalSway{0%,100%{transform:translate(-50%,-50%) rotate(-1.1deg);}50%{transform:translate(-50%,-50%) rotate(1.1deg);}}

.scope-vital{position:absolute;transform:translate(-50%,-50%);border-radius:50%;z-index:2;
  border:2px dashed rgba(179,73,42,.8);background:rgba(179,73,42,.12);
  box-shadow:0 0 0 3px rgba(179,73,42,.08);
  animation:vitalPulse 1.5s ease-in-out infinite;}
@keyframes vitalPulse{0%,100%{box-shadow:0 0 0 2px rgba(179,73,42,.08),0 0 10px rgba(179,73,42,.15);}50%{box-shadow:0 0 0 5px rgba(179,73,42,.16),0 0 16px rgba(179,73,42,.32);}}

.scope-crosshair{position:absolute;width:28px;height:28px;transform:translate(-50%,-50%);z-index:5;
  border:2px solid #ff3b3b;border-radius:50%;
  box-shadow:0 0 0 1px rgba(255,255,255,.65),0 0 9px rgba(255,59,59,.55);
  transition:box-shadow .12s;}
.scope-crosshair::before,.scope-crosshair::after{content:'';position:absolute;background:#ff3b3b;box-shadow:0 0 4px rgba(255,59,59,.7);}
.scope-crosshair::before{left:50%;top:-9px;bottom:-9px;width:2px;transform:translateX(-50%);}
.scope-crosshair::after{top:50%;left:-9px;right:-9px;height:2px;transform:translateY(-50%);}
/* мил-дот засечки на линиях прицела */
.scope-crosshair span.mil{position:absolute;background:#ff3b3b;border-radius:50%;width:3px;height:3px;}

/* дрожание прицела при задержке дыхания на пределе — лёгкая тряска всей сцены */
.scope-box.recoil{animation:scopeRecoil .32s cubic-bezier(.36,.07,.19,.97) both;}
@keyframes scopeRecoil{
  10%{transform:translate(-1px,1px) rotate(-.4deg);}
  20%{transform:translate(2px,-1px) rotate(.4deg);}
  30%{transform:translate(-3px,1px) rotate(-.3deg);}
  50%{transform:translate(2px,-2px) rotate(.3deg);}
  70%{transform:translate(-1px,1px);}
  100%{transform:translate(0,0) rotate(0);}
}

/* вспышка выстрела */
.muzzle-flash{position:absolute;left:50%;top:50%;width:14px;height:14px;z-index:6;pointer-events:none;
  transform:translate(-50%,-50%) scale(.3);border-radius:50%;
  background:radial-gradient(circle,#fff8d8 0%,#ffd27a 30%,rgba(255,150,40,.7) 55%,transparent 72%);
  animation:muzzleFlashPop .32s ease-out forwards;}
@keyframes muzzleFlashPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.2);}18%{opacity:1;transform:translate(-50%,-50%) scale(2.6);}100%{opacity:0;transform:translate(-50%,-50%) scale(4.4);}}

/* след-трассер от выстрела к точке попадания */
.shot-tracer{position:absolute;z-index:6;pointer-events:none;height:2px;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,238,180,.95));
  transform-origin:left center;animation:tracerFade .22s ease-out forwards;}
@keyframes tracerFade{0%{opacity:1;}100%{opacity:0;}}

/* маркер попадания/промаха поверх сцены */
.hit-marker{position:absolute;z-index:7;transform:translate(-50%,-50%) scale(.4);pointer-events:none;
  font-size:1.6rem;animation:hitMarkerPop .55s cubic-bezier(.22,1.4,.4,1) forwards;}
.hit-marker.crit{font-size:2rem;filter:drop-shadow(0 0 8px rgba(255,214,120,.9));}
@keyframes hitMarkerPop{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(-15deg);}30%{opacity:1;transform:translate(-50%,-50%) scale(1.25) rotate(4deg);}60%{transform:translate(-50%,-50%) scale(1) rotate(0);}100%{opacity:0;transform:translate(-50%,-60%) scale(.92) rotate(0);}}

/* ---------- ДЫХАНИЕ: индикатор ---------- */
.breath-track{position:relative;box-shadow:inset 0 2px 5px rgba(0,0,0,.22);}
.breath-fill{position:relative;box-shadow:0 0 8px rgba(74,124,63,.5) inset;}
.breath-fill::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.4),transparent 55%);}
.breath-fill.danger{animation:breathDangerPulse .5s ease-in-out infinite alternate;}
@keyframes breathDangerPulse{from{filter:brightness(1);}to{filter:brightness(1.4);}}
#steadyBtn.active{background:var(--herb);color:#fff;box-shadow:0 0 0 3px rgba(47,106,130,.3) inset,0 2px 6px rgba(0,0,0,.2);}

/* ---------- НАТЯЖЕНИЕ ЛУКА ---------- */
.hold-track{position:relative;box-shadow:inset 0 2px 6px rgba(0,0,0,.28),0 1px 0 rgba(255,255,255,.5);}
.hold-zone{position:absolute;top:0;bottom:0;background:linear-gradient(180deg,rgba(140,214,120,.45),rgba(74,124,63,.65));
  border-left:2px dashed rgba(255,255,255,.9);border-right:2px dashed rgba(255,255,255,.9);
  box-shadow:0 0 10px rgba(140,214,120,.35) inset;animation:holdZoneGlow 1.6s ease-in-out infinite;}
@keyframes holdZoneGlow{0%,100%{filter:brightness(1);}50%{filter:brightness(1.18);}}
.hold-fill{position:relative;background:linear-gradient(90deg,#3d7ea6,#5aa0c9);
  box-shadow:0 0 12px rgba(90,160,201,.65) inset,2px 0 8px rgba(61,126,166,.55);}
.hold-fill::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.4),transparent 55%);}
.hold-fill::before{content:'';position:absolute;right:0;top:0;bottom:0;width:3px;background:#fff;box-shadow:0 0 8px 2px rgba(255,255,255,.85);}
.hold-fill.overdraw{background:linear-gradient(90deg,#c0392b,#e74c3c);animation:overdrawPulse .32s ease-in-out infinite alternate, overdrawShake .18s linear infinite;}
@keyframes overdrawShake{0%,100%{filter:brightness(1) saturate(1);}50%{filter:brightness(1.5) saturate(1.4);}}
.hold-btn{position:relative;overflow:hidden;background:linear-gradient(180deg,#3a8298,var(--herb));}
.hold-btn::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(255,255,255,.28),transparent 60%);pointer-events:none;}
.hold-btn:active{filter:brightness(.94);}

/* ---------- КОМПАС (следопытство / кровавый след) ---------- */
.compass-grid{position:relative;background:
    radial-gradient(circle at center,rgba(200,154,60,.14) 0%,transparent 62%),
    repeating-conic-gradient(from 0deg,rgba(138,98,64,.10) 0deg 11.25deg,transparent 11.25deg 45deg);
  border-radius:16px;padding:6px;box-shadow:inset 0 0 0 1px rgba(138,98,64,.18);}
.compass-btn{position:relative;background:linear-gradient(180deg,#fffdf6,var(--cream));overflow:hidden;}
.compass-btn:not([disabled]){box-shadow:0 2px 0 rgba(74,124,63,.35),0 0 0 2px rgba(74,124,63,.08);animation:compassAvail 2.2s ease-in-out infinite;}
@keyframes compassAvail{0%,100%{box-shadow:0 2px 0 rgba(74,124,63,.35),0 0 0 2px rgba(74,124,63,.06);}50%{box-shadow:0 2px 0 rgba(74,124,63,.35),0 0 0 4px rgba(74,124,63,.16);}}
.compass-btn:not([disabled]):active{transform:scale(.9);background:var(--gold);box-shadow:0 0 14px rgba(200,154,60,.7);}
.compass-btn.ruled-out{opacity:.22;filter:grayscale(1);border-color:var(--cream-dark);animation:none;box-shadow:none;transform:scale(.94);}
.compass-center{position:relative;animation:compassCenterSpin 6s linear infinite;}
.track-arrow-needle{display:inline-block;transition:transform .45s cubic-bezier(.34,1.1,.4,1);}
@keyframes compassCenterSpin{0%,92%,100%{transform:rotate(0deg);}96%{transform:rotate(8deg);}}

/* карточка следа/помёта — лёгкое появление */
.track-sign-card{position:relative;overflow:hidden;animation:trackSignIn .28s cubic-bezier(.22,1.1,.4,1);}
@keyframes trackSignIn{from{opacity:0;transform:translateX(-8px);}to{opacity:1;transform:none;}}
.track-sign-icon{display:inline-block;animation:trackIconWiggle 2.4s ease-in-out infinite;}
@keyframes trackIconWiggle{0%,100%{transform:rotate(-4deg);}50%{transform:rotate(4deg);}}

/* полоса тревоги/настороженности дичи */
.stalk-alert-track{position:relative;box-shadow:inset 0 1px 4px rgba(0,0,0,.18);}
.stalk-alert-fill{position:relative;box-shadow:0 0 8px rgba(111,174,87,.5) inset;}
.stalk-alert-fill::after{content:'';position:absolute;inset:0;background:repeating-linear-gradient(115deg,rgba(255,255,255,.22) 0 6px,transparent 6px 13px);opacity:.6;}
.stalk-alert-fill.danger{animation:alertDangerPulse .55s ease-in-out infinite alternate;}
@keyframes alertDangerPulse{from{filter:brightness(1);}to{filter:brightness(1.35);}}

/* ---------- КОЛЬЦО СКРАДЫВАНИЯ / ПУЛЬС ЗАБОЯ — сонарные волны ---------- */
.pulse-ring{position:relative;z-index:1;box-shadow:0 2px 4px rgba(0,0,0,.12);}
.pulse-ring span{position:relative;z-index:2;display:inline-block;}
.pulse-ring::before,.pulse-ring::after{content:'';position:absolute;inset:0;border-radius:50%;
  border:2px solid var(--ok);opacity:0;pointer-events:none;}
.pulse-ring.active::before{animation:sonarEcho 1s ease-out infinite;}
.pulse-ring.active::after{animation:sonarEcho 1s ease-out infinite .33s;}
@keyframes sonarEcho{0%{opacity:.55;transform:scale(1);}100%{opacity:0;transform:scale(1.9);}}
.pulse-ring.active{animation:pulseGlow .5s ease-in-out infinite alternate, ringBreathe 1s ease-in-out infinite;}
@keyframes ringBreathe{0%,100%{transform:scale(1);}50%{transform:scale(1.05);}}
.pulse-ring.hit{animation:ringHitPop .32s cubic-bezier(.22,1.7,.4,1);}
@keyframes ringHitPop{0%{transform:scale(1.18);border-color:var(--gold);box-shadow:0 0 0 8px rgba(200,154,60,.35);}100%{transform:scale(1);}}
/* зверь поднял голову — нужно замереть, а не жать кнопку */
.pulse-ring.freeze-alert{border-color:var(--warn);animation:freezePulse .4s ease-in-out infinite alternate;}
.pulse-ring.freeze-alert::before,.pulse-ring.freeze-alert::after{border-color:var(--warn);}
.pulse-ring.freeze-alert::before{animation:sonarEcho 1.1s ease-out infinite;}
.pulse-ring.freeze-alert::after{animation:sonarEcho 1.1s ease-out infinite .33s;}
@keyframes freezePulse{from{box-shadow:0 0 0 4px rgba(179,73,42,.16);}to{box-shadow:0 0 0 9px rgba(179,73,42,.3);}}
.pulse-ring.bad{animation:ringBadShake .32s ease-in-out;border-color:var(--warn);}
@keyframes ringBadShake{0%,100%{transform:translateX(0);}25%{transform:translateX(-4px);}75%{transform:translateX(4px);}}
.stalk-freeze-hint{color:var(--warn);font-weight:700;font-size:.76rem;display:block;margin:2px 0 4px;min-height:1.1em;}

/* ---------- УГОДЬЯ: карточки точек охоты ---------- */
.forest-spot{position:relative;overflow:hidden;}
.forest-spot::before{content:'';position:absolute;inset:0;background:linear-gradient(115deg,transparent 40%,rgba(255,255,255,.5) 50%,transparent 60%);
  transform:translateX(-120%);pointer-events:none;}
.forest-spot.ready::before{animation:spotShine 3.2s ease-in-out infinite;}
@keyframes spotShine{0%,30%{transform:translateX(-120%);}55%{transform:translateX(120%);}100%{transform:translateX(120%);}}
.forest-spot:hover{transform:translateY(-2px);box-shadow:0 6px 14px rgba(43,33,23,.16);}
.forest-spot.ready{animation:spotReadyGlow 2.4s ease-in-out infinite;}
@keyframes spotReadyGlow{0%,100%{box-shadow:0 2px 8px rgba(200,154,60,.3);}50%{box-shadow:0 4px 16px rgba(200,154,60,.55);}}
.forest-spot .fs-icon{filter:drop-shadow(0 2px 3px rgba(0,0,0,.18));}

/* ---------- РЕЗУЛЬТАТ ОХОТЫ ---------- */
.cook-result-icon{position:relative;}
.cook-result-icon.hunt-crit{animation:resultPop .38s cubic-bezier(.22,1.7,.4,1), critGlow 1.4s ease-in-out .38s infinite;}
@keyframes critGlow{0%,100%{filter:drop-shadow(0 6px 8px rgba(0,0,0,.25)) drop-shadow(0 0 0 rgba(255,214,120,0));}50%{filter:drop-shadow(0 6px 8px rgba(0,0,0,.25)) drop-shadow(0 0 14px rgba(255,214,120,.85));}}
.cook-result-icon.hunt-miss{animation:missShake .42s cubic-bezier(.36,.07,.19,.97);}
@keyframes missShake{10%,90%{transform:translate3d(-1px,0,0);}20%,80%{transform:translate3d(2px,0,0);}30%,50%,70%{transform:translate3d(-4px,0,0);}40%,60%{transform:translate3d(4px,0,0);}}
.modal-box.hunt-shake{animation:hostShake .4s cubic-bezier(.36,.07,.19,.97);}
@keyframes hostShake{10%,90%{transform:translate3d(-1px,0,0);}20%,80%{transform:translate3d(2px,0,0);}30%,50%,70%{transform:translate3d(-3px,0,0);}40%,60%{transform:translate3d(3px,0,0);}}

/* лучи славы для перфекта/крита */
.result-burst{position:absolute;left:50%;top:14px;width:2px;height:34px;background:linear-gradient(180deg,rgba(255,214,120,.95),transparent);
  transform-origin:50% 100%;pointer-events:none;animation:burstRay .62s ease-out forwards;}
@keyframes burstRay{0%{opacity:0;transform:translate(-50%,0) rotate(var(--ang,0deg)) scaleY(.3);}30%{opacity:1;}100%{opacity:0;transform:translate(-50%,0) rotate(var(--ang,0deg)) scaleY(1.1);}}

/* частицы: искры для крита, капли крови для попадания/подранка */
.result-particle{position:absolute;left:50%;top:46%;width:7px;height:7px;border-radius:50%;pointer-events:none;
  animation:particleFly .68s cubic-bezier(.2,.7,.3,1) forwards;}
.result-particle.spark{background:radial-gradient(circle,#fff6d6,#ffd27a);box-shadow:0 0 6px rgba(255,210,120,.8);}
.result-particle.blood{background:radial-gradient(circle,#c9503a,#7a1f1f);width:6px;height:6px;}
@keyframes particleFly{0%{opacity:1;transform:translate(-50%,-50%) translate(0,0) scale(1);}100%{opacity:0;transform:translate(-50%,-50%) translate(var(--px,20px),var(--py,-24px)) scale(.3);}}

/* капля крови стекает — для подранка/грейза */
.blood-drip{position:absolute;left:50%;top:50%;width:4px;height:0;border-radius:0 0 4px 4px;
  background:linear-gradient(180deg,#b3492a,#7a1f1f);transform:translateX(-50%);pointer-events:none;
  animation:bloodDripGrow .9s ease-out forwards .1s;}
@keyframes bloodDripGrow{0%{height:0;opacity:.9;}70%{height:26px;opacity:.85;}100%{height:26px;opacity:0;}}

/* ---------- РАЗДЕЛКА: снятие шкуры / сортировка ---------- */
.skin-track{position:relative;}
.skin-track .mg-zone{box-shadow:0 0 10px rgba(74,124,63,.3) inset;animation:holdZoneGlow 1.6s ease-in-out infinite;}
.skin-track .mg-marker{box-shadow:0 0 6px rgba(179,73,42,.6);}
.mg-rip-zone{animation:ripZoneShimmer 1.8s linear infinite;}
@keyframes ripZoneShimmer{0%{background-position:0 0;}100%{background-position:14px 0;}}

.trim-bin.right{animation:binFlash .32s ease;}
.trim-bin.wrong{animation:binShake .32s ease;}
@keyframes binFlash{0%{box-shadow:0 0 0 rgba(74,124,63,0);}40%{box-shadow:0 0 16px rgba(74,124,63,.6);}100%{box-shadow:0 0 0 rgba(74,124,63,0);}}
@keyframes binShake{20%,60%{transform:translateX(-4px);}40%,80%{transform:translateX(4px);}}

/* пульс-точки ритма (слив крови) */
.pulse-dots i{transition:transform .12s,background .12s;}
.pulse-dots i.good{animation:dotPop .22s ease;}
.pulse-dots i.meh{animation:dotPop .22s ease;}
@keyframes dotPop{0%{transform:scale(.4);}60%{transform:scale(1.3);}100%{transform:scale(1);}}

/* ---------- ЛАВКА/СТРАНИЦА ОХОТЫ: карточки снаряжения ---------- */
.hunt-gear-card{position:relative;transition:box-shadow .15s,transform .15s;}
.hunt-gear-card:hover{box-shadow:0 4px 12px rgba(43,33,23,.14);transform:translateY(-1px);}
.hunt-condition-banner,.hunt-wind-banner{position:relative;overflow:hidden;}
.hunt-condition-banner::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--gold);}
.hunt-wind-banner::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--herb);}
