/* =========================================================
   Обитатели убежища («Ковчег»): раскраска и повадки.
   Рисунок — shared/characters-dark.js. Общие движения (покой,
   испуг, раздумье) берутся из characters.css, здесь — что иначе.
   ========================================================= */

.ch--dark{ --ink:#06090b; }

/* ---------- материалы ---------- */
.ch--dark .dk-body{fill:var(--k1);stroke:var(--ink);stroke-width:3.2;stroke-linejoin:round}
.ch--dark .dk-body2{fill:var(--k2);stroke:var(--ink);stroke-width:3.2;stroke-linejoin:round}
.ch--dark .dk-limb{fill:var(--k2);stroke:var(--ink);stroke-width:3}
.ch--dark .dk-arm-o{fill:none;stroke:var(--ink);stroke-width:14;stroke-linecap:round}
.ch--dark .dk-arm{fill:none;stroke:var(--k2);stroke-width:8;stroke-linecap:round}
.ch--dark .dk-hand{fill:var(--k3);stroke:var(--ink);stroke-width:2.6}
.ch--dark .dk-boot{fill:#15191c;stroke:var(--ink);stroke-width:2.8;stroke-linejoin:round}
.ch--dark .dk-hi{fill:#ffd9a0;opacity:.1}
.ch--dark .dk-cloth{fill:var(--k2);stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-cloth2{fill:var(--k2);stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-scarf{fill:var(--k2);stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-rubber{fill:#262b2f;stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-metal{fill:#4b5358;stroke:var(--ink);stroke-width:2.4;stroke-linejoin:round}
.ch--dark .dk-metalbody{fill:var(--km);stroke:var(--ink);stroke-width:3.2;stroke-linejoin:round}
.ch--dark .dk-brass{fill:var(--km);stroke:var(--ink);stroke-width:3.2}
.ch--dark .dk-brass2{fill:var(--km2);stroke:var(--ink);stroke-width:2.8;stroke-linejoin:round}
.ch--dark .dk-rim{fill:#3a4247;stroke:var(--ink);stroke-width:2.6}
.ch--dark .dk-glass{fill:#05080a;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-dark{fill:#0b0e10;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-void{fill:#030506;stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.ch--dark .dk-skin{fill:var(--ks);stroke:var(--ink);stroke-width:2.8}
.ch--dark .dk-helmet{fill:var(--kh);stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-helmet2{fill:var(--kh);stroke:var(--ink);stroke-width:2.4;stroke-linejoin:round}
.ch--dark .dk-shield{fill:#2b3034;stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-leather{fill:#4f4236;stroke:var(--ink);stroke-width:2.8;stroke-linejoin:round}
.ch--dark .dk-leather2{fill:#62533f;stroke:var(--ink);stroke-width:2.8;stroke-linejoin:round}
.ch--dark .dk-hat{fill:#111416;stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-band{fill:var(--k1);stroke:var(--ink);stroke-width:1.6}
.ch--dark .dk-sack{fill:var(--kb);stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-wrap{fill:var(--kw);stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-gap{fill:var(--k3);opacity:.85}
.ch--dark .dk-wrapline{fill:none;stroke:#000;stroke-width:1.3;stroke-linecap:round;opacity:.32}
.ch--dark .dk-stain{fill:#5a1f1f;opacity:.5}
.ch--dark .dk-porcelain{fill:var(--kp);stroke:var(--ink);stroke-width:3}
.ch--dark .dk-bone{fill:#a39c8c;stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-waxbody{fill:var(--kx);stroke:var(--ink);stroke-width:3;stroke-linejoin:round}
.ch--dark .dk-wax{fill:#b4aa94;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-wax2{fill:var(--kx2);stroke:var(--ink);stroke-width:2;stroke-linejoin:round}
.ch--dark .dk-shadowbody{fill:var(--k3);stroke:var(--k1);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-aura{fill:none;stroke:var(--kg);stroke-width:9;stroke-linejoin:round;opacity:.1}

/* ---------- линии и мелочи ---------- */
.ch--dark .dk-line{fill:none;stroke:var(--ink);stroke-width:2.4;stroke-linecap:round;stroke-linejoin:round}
.ch--dark .dk-line-thin{fill:none;stroke:var(--ink);stroke-width:1.6;stroke-linecap:round;stroke-linejoin:round}
.ch--dark .dk-fold{fill:none;stroke:#000;stroke-width:2;stroke-linecap:round;opacity:.3}
.ch--dark .dk-fold-l{fill:none;stroke:var(--kl);stroke-width:2.2;stroke-linecap:round;opacity:.45}
.ch--dark .dk-strap{fill:none;stroke:#111518;stroke-width:3.4;stroke-linecap:round}
.ch--dark .dk-belt-o{fill:none;stroke:var(--ink);stroke-width:8.4;stroke-linecap:round}
.ch--dark .dk-belt{fill:none;stroke:#2a2622;stroke-width:5.6;stroke-linecap:round}
.ch--dark .dk-hose-o{fill:none;stroke:var(--ink);stroke-width:8.4;stroke-linecap:round}
.ch--dark .dk-hose{fill:none;stroke:#2c3236;stroke-width:5.4;stroke-linecap:round}
.ch--dark .dk-hose-rib{fill:none;stroke:#151a1d;stroke-width:5.4;stroke-dasharray:1.4 2.6}
.ch--dark .dk-soot{fill:#000;opacity:.3}
.ch--dark .dk-shade{fill:#000;opacity:.38}
.ch--dark .dk-glare{fill:none;stroke:#fff;stroke-width:1.5;stroke-linecap:round;opacity:.4}
.ch--dark .dk-sheen{fill:#fff;opacity:.07}
.ch--dark .dk-scratch{fill:none;stroke:#8a949a;stroke-width:1.1;stroke-linecap:round;opacity:.5}
.ch--dark .dk-bolts circle{fill:var(--km2);stroke:var(--ink);stroke-width:1.2}
.ch--dark .dk-rivets circle{fill:#000;opacity:.4}
.ch--dark .dk-badge{fill:#b3963a;stroke:var(--ink);stroke-width:1.8}
.ch--dark .dk-badge-dot{fill:#b3963a}
.ch--dark .dk-trefoil{fill:#111}
.ch--dark .dk-grille{fill:none;stroke:var(--km);stroke-width:2.4;stroke-linecap:round}
.ch--dark .dk-grille2{fill:none;stroke:#4b5358;stroke-width:1.4}
.ch--dark .dk-net{fill:none;stroke:#000;stroke-width:1;opacity:.28}
.ch--dark .dk-weave{fill:none;stroke:#000;stroke-width:1.1;opacity:.14}

/* ---------- лица ---------- */
.ch--dark .dk-white{fill:#cbc3b1;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-pupil{fill:#07090b}
.ch--dark .dk-glint{fill:#fff;opacity:.8}
.ch--dark .dk-socket{fill:var(--k3)}
.ch--dark .dk-iris{fill:var(--kg)}
.ch--dark .dk-lid-skin{fill:var(--ks2);stroke:var(--ink);stroke-width:1.8;stroke-linejoin:round}
.ch--dark .dk-lid-body{fill:var(--k2);stroke:var(--ink);stroke-width:2.2;stroke-linejoin:round}
.ch--dark .dk-bag{fill:none;stroke:#000;stroke-width:1.6;stroke-linecap:round;opacity:.35}
.ch--dark .dk-brow{fill:none;stroke:var(--ink);stroke-width:3;stroke-linecap:round}
.ch--dark .dk-browf{fill:#8b877e;stroke:var(--ink);stroke-width:1.4;stroke-linejoin:round}
.ch--dark .dk-wrinkle{fill:none;stroke:#000;stroke-width:1.2;stroke-linecap:round;opacity:.28}
.ch--dark .dk-nose-s{fill:none;stroke:var(--ink);stroke-width:1.8;stroke-linecap:round;opacity:.7}
.ch--dark .dk-nose-f{fill:var(--ks2);stroke:var(--ink);stroke-width:1.8;stroke-linejoin:round}
.ch--dark .dk-stache{fill:#2b2521;stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round}
.ch--dark .dk-beard{fill:#8a867e;stroke:var(--ink);stroke-width:2.2;stroke-linejoin:round}
.ch--dark .dk-strand{fill:none;stroke:#000;stroke-width:1.2;stroke-linecap:round;opacity:.22}
.ch--dark .dk-vein{fill:none;stroke:#9b2b2b;stroke-width:.9;stroke-linecap:round;opacity:.75}
.ch--dark .dk-wart{fill:var(--kl);stroke:var(--ink);stroke-width:1.5}
.ch--dark .dk-stitch{fill:none;stroke:#cbc3b1;stroke-width:1.5;stroke-linecap:round;opacity:.7}
.ch--dark .dk-stitch--dark{stroke:var(--ink);opacity:1}
.ch--dark .dk-lips{fill:#521820;stroke:var(--ink);stroke-width:1.2}
.ch--dark .dk-blush{fill:#7a3a3a;opacity:.32}
.ch--dark .dk-crack{fill:none;stroke:#141414;stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}
.ch--dark .dk-crack2{fill:none;stroke:#8a949a;stroke-width:1.2;stroke-linecap:round}
.ch--dark .dk-deadlens{fill:#1b2023;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-paint{fill:none;stroke:#6a1a24;stroke-width:2.4;stroke-linecap:round}
.ch--dark path.dk-paint[d$="Z"]{fill:#6a1a24;stroke-width:1}
.ch--dark .dk-lace{fill:#aca493;stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round}

/* крыса */
.ch--dark .dk-ear{fill:#5e4044}
.ch--dark .dk-belly{fill:var(--kl);opacity:.35}
.ch--dark .dk-snout{fill:var(--kl);stroke:var(--ink);stroke-width:2.4}
.ch--dark .dk-nosetip{fill:#1a1012;stroke:var(--ink);stroke-width:1.4;stroke-linejoin:round}
.ch--dark .dk-whisk{fill:none;stroke:#cbc3b1;stroke-width:.9;opacity:.5}
.ch--dark .dk-tooth{fill:#c8bc9b;stroke:var(--ink);stroke-width:1.6}
.ch--dark .dk-tail-o{fill:none;stroke:var(--ink);stroke-width:7.4;stroke-linecap:round}
.ch--dark .dk-tail{fill:none;stroke:var(--k2);stroke-width:4.4;stroke-linecap:round}
.ch--dark .dk-bead{fill:#07090b;stroke:var(--ink);stroke-width:1}
.ch--dark .dk-scar{fill:none;stroke:#000;stroke-width:1.6;stroke-linecap:round;opacity:.45}

/* пугало */
.ch--dark .dk-straw{fill:none;stroke:#8f7a3e;stroke-width:2;stroke-linecap:round;opacity:.85}
.ch--dark .dk-rope{fill:#5a4a33;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-rope-l{fill:none;stroke:#2e2519;stroke-width:1.2}
.ch--dark .dk-rope-end{fill:none;stroke:#5a4a33;stroke-width:2.4;stroke-linecap:round}
.ch--dark .dk-rope-s{fill:none;stroke:#5a4a33;stroke-width:3.4;stroke-linecap:round}
.ch--dark .dk-button{fill:#16181a;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-hole{fill:#000}
.ch--dark .dk-thread{fill:none;stroke:var(--kg);stroke-width:1.5;stroke-linecap:round;opacity:.85}
.ch--dark .dk-patch{fill:var(--k2);stroke:var(--ink);stroke-width:1.8}
.ch--dark .dk-patch2{fill:var(--k1);stroke:var(--ink);stroke-width:1.6}

/* мотылёк, ворон */
.ch--dark .dk-wing{fill:var(--k2);stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-wingspot{fill:var(--kl);stroke:var(--ink);stroke-width:1.6}
.ch--dark .dk-ant{fill:none;stroke:var(--k2);stroke-width:2.6;stroke-linecap:round}
.ch--dark .dk-ant-f{fill:none;stroke:var(--k2);stroke-width:1.6;stroke-linecap:round}
.ch--dark .dk-skullmark{fill:#b8b09c;stroke:var(--ink);stroke-width:1.6;stroke-linejoin:round;opacity:.8}
.ch--dark .dk-skullhole{fill:var(--k3)}
.ch--dark .dk-proboscis{fill:none;stroke:var(--ink);stroke-width:1.6;stroke-linecap:round}
.ch--dark .dk-compound{fill:#0a0c0f;stroke:var(--ink);stroke-width:2.4}
.ch--dark .dk-feather{fill:none;stroke:var(--kl);stroke-width:1.6;stroke-linecap:round;opacity:.5}
.ch--dark .dk-beak{fill:#3a3f44;stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-wingf{fill:var(--k2);stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-claw{fill:none;stroke:#3a3f44;stroke-width:2.8;stroke-linecap:round;stroke-linejoin:round}

/* грибник */
.ch--dark .dk-stalk{fill:#8d8574;stroke:var(--ink);stroke-width:2.2;stroke-linejoin:round}
.ch--dark .dk-cap{fill:var(--kf);stroke:var(--ink);stroke-width:2.6;stroke-linejoin:round}
.ch--dark .dk-spot{fill:#d9d1bf;opacity:.55}
.ch--dark .dk-myc{fill:none;stroke:var(--kl);stroke-width:1.6;stroke-linecap:round;opacity:.4}

/* тень, многоглаз, череп */
.ch--dark .dk-wisp{fill:none;stroke:var(--k1);stroke-width:2;stroke-linecap:round;opacity:.5}
.ch--dark .dk-grin{fill:var(--kg);opacity:.9}
.ch--dark .dk-teeth{fill:none;stroke:var(--k3);stroke-width:1.6;stroke-linecap:round}
.ch--dark .dk-maw{fill:#050607;stroke:var(--ink);stroke-width:2.4;stroke-linejoin:round}
.ch--dark .dk-toothrow{fill:none;stroke:#c8bc9b;stroke-width:1.9;stroke-linejoin:round;stroke-linecap:round}
.ch--dark .dk-crest{fill:var(--kl);stroke:var(--ink);stroke-width:2.4;stroke-linejoin:round}

/* робот */
.ch--dark .dk-rust{fill:#6b3a22;opacity:.75}
.ch--dark .dk-dent{fill:none;stroke:#000;stroke-width:2;stroke-linecap:round;opacity:.35}
.ch--dark .dk-antenna{fill:none;stroke:var(--ink);stroke-width:2.6;stroke-linecap:round;stroke-linejoin:round}
.ch--dark .dk-spark{fill:none;stroke:var(--kg);stroke-width:1.4;stroke-linecap:round}
.ch--dark .dk-ecg{fill:none;stroke:var(--kg);stroke-width:1.3;stroke-linecap:round;stroke-linejoin:round}

/* свет: фонарь, свеча, сигарета */
.ch--dark .dk-lamp{fill:#0b0e10;stroke:var(--ink);stroke-width:2}
.ch--dark .dk-cage{fill:none;stroke:#3d454a;stroke-width:1.5}
.ch--dark .dk-handle{fill:none;stroke:#3d454a;stroke-width:1.8;stroke-linecap:round}
.ch--dark .dk-flame{fill:var(--kg)}
.ch--dark .dk-flame-core{fill:#fff;opacity:.85}
.ch--dark .dk-wick{fill:none;stroke:#111;stroke-width:2;stroke-linecap:round}
.ch--dark .dk-cig{fill:none;stroke:#d8d2c4;stroke-width:2.2;stroke-linecap:round}
.ch--dark .dk-smoke path{fill:none;stroke:#9aa3a8;stroke-width:1.4;stroke-linecap:round;opacity:.4}

/* ---------- то, что светится ---------- */
.ch--dark .dk-eye{fill:var(--kg)}
.ch--dark .dk-core{fill:#fff;opacity:.85}
.ch--dark .dk-halo{fill:var(--kg);opacity:.26}
.ch--dark .dk-halo--big{opacity:.13}
.ch--dark .dk-visor{fill:var(--kg);opacity:.15}
.ch--dark .dk-visor--hot{opacity:.3}
.ch--dark .dk-spores circle{fill:var(--kg);opacity:0}

/* ---------- повадки ---------- */
.ch--dark .ch-arm-l,.ch--dark .ch-arm-r{transform-box:fill-box}
.ch--dark .dk-wing-l{transform-origin:right top}
.ch--dark .dk-wing-r{transform-origin:left top}

/* свет не мигает ровно — он «подсаживается», как на плохом генераторе */
@keyframes dk-flicker{
  0%,100%{opacity:1}
  41%{opacity:1}
  43%{opacity:.45}
  45%{opacity:.95}
  47%{opacity:.6}
  49%{opacity:1}
  78%{opacity:.88}
}
.ch--dark .dk-glow{animation:dk-flicker var(--flick,5s) linear infinite}
/* глаза, которые светятся, ещё и моргают — оба движения сразу */
.ch--dark .ch-eyes.dk-glow{animation:ch-blink var(--blink,4s) linear infinite, dk-flicker var(--flick,5s) linear infinite}
@keyframes dk-candle{0%,100%{transform:scale(1,1)}30%{transform:scale(.94,1.06)}60%{transform:scale(1.05,.95)}}
.ch--dark .dk-flicker{transform-origin:center bottom;animation:dk-candle 1.3s ease-in-out infinite, dk-flicker var(--flick,5s) linear infinite}
@keyframes dk-sway{from{transform:rotate(-7deg)}to{transform:rotate(7deg)}}
.ch--dark .dk-sway{transform-origin:center top;animation:dk-sway 2.6s ease-in-out infinite alternate}
@keyframes dk-rise{
  0%{transform:translateY(0);opacity:0}
  25%{opacity:.75}
  100%{transform:translateY(-16px);opacity:0}
}
.ch--dark .dk-spores circle{animation:dk-rise 3.6s ease-out infinite}
.ch--dark .dk-spores circle:nth-child(2){animation-delay:.9s}
.ch--dark .dk-spores circle:nth-child(3){animation-delay:1.8s}
.ch--dark .dk-spores circle:nth-child(4){animation-delay:2.7s}
@keyframes dk-smoke{
  0%{transform:translateY(2px);opacity:0}
  30%{opacity:.45}
  100%{transform:translateY(-10px);opacity:0}
}
.ch--dark .dk-smoke{animation:dk-smoke 3.2s ease-out infinite}

/* радость у них сдержанная: кивок и чуть ярче свет, без прыжков до потолка */
@keyframes dk-nod{
  0%,100%{transform:translateY(0) scale(1,1)}
  35%{transform:translateY(-5px) scale(.98,1.03)}
  60%{transform:translateY(0) scale(1.03,.97)}
}
@keyframes dk-raiseL{0%,100%{transform:rotate(-24deg)}50%{transform:rotate(-40deg)}}
@keyframes dk-raiseR{0%,100%{transform:rotate(24deg)}50%{transform:rotate(40deg)}}
.ch--dark.ch--happy .ch-rig{animation:dk-nod 1.1s ease-in-out infinite}
.ch--dark.ch--happy .ch-arm-l{animation:dk-raiseL 1.1s ease-in-out infinite}
.ch--dark.ch--happy .ch-arm-r{animation:dk-raiseR 1.1s ease-in-out infinite}
.ch--dark.ch--happy .dk-halo{opacity:.4}
.ch--dark.ch--win .ch-arm-l{animation:dk-raiseL .7s ease-in-out infinite}
.ch--dark.ch--win .ch-arm-r{animation:dk-raiseR .7s ease-in-out infinite}
.ch--dark.ch--win .dk-halo{opacity:.45}

/* уныние: свет тускнеет */
.ch--dark.ch--sad .dk-glow{opacity:.5;animation:none}

/* за дверью: тело выцветает в серую пыль, остаётся только свет глаз */
@keyframes dk-drift{
  0%,100%{transform:translate(0,0) rotate(-1.5deg)}
  50%{transform:translate(1.5px,-6px) rotate(1.5deg)}
}
.ch--dark.ch--ghost{opacity:1}
.ch--dark.ch--ghost .ch-rig{animation:dk-drift 3.4s ease-in-out infinite}
.ch--dark.ch--ghost .ch-body,
.ch--dark.ch--ghost .ch-legs,
.ch--dark.ch--ghost .ch-arms,
.ch--dark.ch--ghost .dk-top{filter:grayscale(1) brightness(.75);opacity:.42}
.ch--dark.ch--ghost .ch-face{opacity:.8}
.ch--dark.ch--ghost .ch-shadow{opacity:.1}
.lite .ch--dark.ch--ghost .ch-body,
.lite .ch--dark.ch--ghost .ch-legs,
.lite .ch--dark.ch--ghost .ch-arms,
.lite .ch--dark.ch--ghost .dk-top{filter:none;opacity:.3}

/* мёртвых в «Ковчеге» нет, но пусть и это состояние выглядит прилично */
.ch--dark.ch--dead .dk-glow{opacity:.15;animation:none}

.lite .ch--dark .dk-glow,
.lite .ch--dark .dk-flicker{animation:none}
@media (prefers-reduced-motion: reduce){
  .ch--dark *{animation:none !important}
}
