/* KRYVARA 2.2 — a journey through ember, haven and ice. Content never depends on motion. */
.kv-chapter { position:relative; isolation:isolate; }
/* Reserve a real header slot for the ornament, including before JavaScript runs. */
.kv-section:is(.kv-chapter--sonnenhain,.kv-chapter--portalwelten,.kv-chapter--beute) { padding-top:96px; }
.kv-section:has(> #sonnenhain,> #portalwelten,> #beute) { padding-top:96px; }
:is(#sonnenhain,#portalwelten,#beute) { scroll-margin-top:96px; }
.kv-hunt-loop>.kv-hunt-path,.kv-loop-step>.kv-loop-symbol,.kv-chapter>.kv-chapter-seal,.kv-world-art>.kv-portal-seal,.kv-world-art>.kv-portal-mist,.kv-hero>.kv-hero-haze { margin:0; }
.kv-chapter::before { content:""; position:absolute; z-index:-1; pointer-events:none; inset:-60px calc((100% - 100vw)/2); background:var(--kv-chapter-light,none); opacity:.85; }
.kv-chapter--sonnenhain { --kv-chapter-light:radial-gradient(ellipse at 17% 55%,#9e602b22,transparent 65%),linear-gradient(0deg,transparent,#7e4d2110 50%,transparent); }
.kv-chapter--portalwelten { --kv-chapter-light:radial-gradient(ellipse at 12% 57%,#9a4d2018,transparent 50%),radial-gradient(ellipse at 90% 48%,#4d9eaa22,transparent 58%); }
.kv-chapter--beute { --kv-chapter-light:radial-gradient(ellipse at 70% 50%,#7e639918,transparent 64%); }
.kv-chapter--welt-erinnert-sich { --kv-chapter-light:radial-gradient(ellipse at 50% 45%,#356d6424,transparent 65%); }
.kv-chapter-seal { position:absolute; top:12px; left:calc(50% - 22px); display:block; width:44px; height:52px; margin:0; color:#bc9560; opacity:.7; pointer-events:none; }
.kv-chapter-seal path { stroke-dasharray:200; stroke-dashoffset:0; }
.kv-chapter--portalwelten .kv-chapter-seal { color:#9dc8c9; }
.kv-chapter--beute .kv-chapter-seal { color:#b6a3cf; }

/* World cards keep all essential copy outside the artwork. */
.kv-world-grid { gap:28px; align-items:stretch; }
.kv-world-grid>.kv-world-card--glutwiesen,.kv-world-grid>.kv-world-card--frostpass { --kv-world-accent:#e1b679; position:relative; display:flex; flex-direction:column; padding:0; overflow:hidden; border:1px solid #53625770; background:#141d1b; box-shadow:0 20px 55px #0002; }
.kv-world-grid>.kv-world-card--frostpass { --kv-world-accent:#a3dce5; border-color:#6c9da46b; background:#101e24; }
.kv-world-card>.kv-world-art { position:relative; flex:none; width:100%; margin:0; overflow:hidden; border:0; }
.kv-world-art img { display:block; width:100%; height:auto; aspect-ratio:1.6; object-fit:cover; object-position:center; transform:none; }
.kv-world-art.kv-picture figcaption { position:relative; display:block; inset:auto; width:auto; max-width:none; margin:0; padding:10px 18px; text-align:left; border:0; border-top:1px solid #b9c9bc24; border-bottom:1px solid #b9c9bc18; background:#0a1519; color:#d1d8cc; font-size:10px; line-height:1.6; letter-spacing:.12em; }
.kv-world-card>.kv-world-body { position:relative; display:flex; flex:1; flex-direction:column; align-items:flex-start; padding:32px 36px 28px; margin:0; }
.kv-world-body>* { margin:0; }
.kv-world-body>.kv-eyebrow { margin-bottom:14px; color:var(--kv-world-accent); }
.kv-world-body>h3.kv-world-name { margin:0 0 12px; font-size:clamp(44px,4.2vw,62px); line-height:.98; }
.kv-world-body>.kv-world-tagline { margin:0 0 20px; color:var(--kv-world-accent); font-size:12px; letter-spacing:.07em; text-transform:uppercase; }
.kv-world-body>p:not(.kv-eyebrow):not(.kv-world-tagline):not(.kv-evidence) { margin:0 0 24px; color:#c0cec9; font-size:15px; line-height:1.85; }
.kv-world-body>.kv-evidence { margin:auto 0 0; font-size:11px; }
.kv-portal-seal { position:absolute; left:20px; top:20px; z-index:2; display:grid; place-items:center; width:52px; height:62px; color:var(--kv-world-accent); background:#071317c9; border:1px solid #bcd6cb4a; clip-path:polygon(0 0,100% 0,100% 80%,50% 100%,0 80%); pointer-events:none; }
.kv-portal-seal svg { width:30px; height:42px; }
.kv-world-art::after { content:""; position:absolute; inset:0 0 36px; pointer-events:none; border:1px solid #eff8eb14; box-shadow:inset 0 0 60px #0b181c24; }
.kv-portal-mist { position:absolute; inset:40% -8% 36px; pointer-events:none; background:radial-gradient(ellipse at 35% 85%,#e5b4771c,transparent 60%); opacity:.6; }
.kv-world-card--frostpass .kv-portal-mist { background:radial-gradient(ellipse at 65% 85%,#d2f6fb36,transparent 62%); }

/* A connected, numbered hunt path. Keyboard and screen-reader order stays 01–06. */
.kv-hunt-loop { gap:18px; border:0; padding:0; }
.kv-hunt-loop>.kv-loop-step { position:relative; min-height:224px; padding:24px 28px 28px; border:1px solid #53645759; background:linear-gradient(145deg,#142423f5,#0d1718f5); }
.kv-loop-step::after { display:none; }
.kv-loop-number { position:relative; z-index:3; display:grid; place-items:center; width:48px; height:48px; margin:0 0 21px; border:1px solid #748c794f; border-radius:50%; background:#10201f; color:#cbb389; font-size:26px; box-shadow:0 0 0 5px #10201f; }
.kv-loop-step h3 { position:relative; z-index:3; font-size:30px; margin-bottom:14px; }
.kv-loop-step p:not(.kv-loop-number) { position:relative; z-index:3; margin-bottom:0; color:#bdccc6; font-size:15px; line-height:1.8; }
.kv-hunt-path { position:absolute; inset:0; z-index:2; width:100%; height:100%; overflow:visible; pointer-events:none; }
.kv-hunt-path path { fill:none; stroke-linecap:round; stroke-linejoin:round; vector-effect:non-scaling-stroke; }
.kv-path-base { stroke:#9cae8638; stroke-width:1; }
.kv-path-light { stroke-width:2; }
.kv-loop-step.kv-path-reached .kv-loop-number { border-color:#dcb87e; color:#f8e1ad; box-shadow:0 0 0 5px #10201f,0 0 22px #d8ac4e30; }
.kv-loop-symbol { position:absolute; right:20px; top:24px; width:28px; height:40px; color:#bdc9b67a; z-index:3; background:#10201f; padding:4px; }
.kv-loop-step.kv-path-current { border-color:#a4895e; background:linear-gradient(145deg,#253129,#101b1c); }
@media(min-width:901px) {
  .kv-hunt-loop>.kv-loop-step:nth-of-type(4) { grid-column:3; grid-row:2; }
  .kv-hunt-loop>.kv-loop-step:nth-of-type(5) { grid-column:2; grid-row:2; }
  .kv-hunt-loop>.kv-loop-step:nth-of-type(6) { grid-column:1; grid-row:2; }
}
@media(min-width:601px) and (max-width:900px) {
  .kv-hunt-loop>.kv-loop-step:nth-of-type(3) { grid-column:2; grid-row:2; }
  .kv-hunt-loop>.kv-loop-step:nth-of-type(4) { grid-column:1; grid-row:2; }
  .kv-world-body>.kv-world-tagline { min-height:3.4em; line-height:1.7; }
}

/* Different chapters receive different accents, not more animation on every word. */
.kv-chapter--beute .kv-section-title,.kv-chapter--welt-erinnert-sich .kv-section-title { max-width:1000px; font-size:clamp(46px,5.6vw,76px); }
.kv-loot-showcase { display:grid; grid-template-columns:1fr 1fr; gap:64px; align-items:center; margin-top:38px; }
.kv-loot-showcase+.kv-eyebrow { margin-top:48px; }
.kv-loot-showcase>.kv-loot-art,.kv-loot-showcase>.kv-loot-copy { min-width:0; margin:0; }
.kv-loot-art { position:relative; isolation:isolate; display:grid; grid-template-columns:minmax(0,1fr); padding:0; }
/* The image and ornaments share row one; the caption owns a separate row. */
.kv-loot-art::before,.kv-loot-art::after { content:""; position:relative; grid-area:1/1; place-self:center; z-index:-1; aspect-ratio:1; pointer-events:none; }
.kv-loot-art::before { width:72%; border:1px solid #88b9b445; border-radius:50%; outline:1px solid #88b9b426; outline-offset:14px; background:radial-gradient(circle,#77c6d01a,transparent 67%); }
.kv-loot-art::after { width:48%; border:1px solid #b4c0ad29; transform:rotate(45deg); }
.kv-loot-art img { position:relative; grid-area:1/1; display:block; width:100%; height:auto; aspect-ratio:1.2; object-fit:contain; }
.kv-loot-art figcaption { position:relative; grid-area:2/1; margin:30px 0 0; padding-inline:8px; color:#b8c9c4; text-align:center; font-size:10px; letter-spacing:.12em; text-transform:uppercase; line-height:1.7; }
.kv-loot-copy>.kv-story-copy { margin:0; padding:0; }
.kv-loot-copy>.kv-story-copy+.kv-story-copy { margin-top:28px; padding-top:18px; border-top:1px solid #9fbcaf24; }
.kv-loot-copy .kv-evidence { margin:0 0 14px; }
.kv-loot-copy p:not(.kv-evidence) { color:#bdccc6; font-size:15px; line-height:1.85; margin-bottom:0; }
.kv-loot-copy h3 { font-size:31px; }
.kv-rarities { gap:12px; padding-top:12px; }
.kv-rarity { position:relative; padding:16px 18px; background:linear-gradient(145deg,#152526,#0c1719); border-bottom-width:2px; box-shadow:inset 0 -12px 22px -22px #f8f0dd; }
.kv-rarity::before { content:""; display:block; width:5px; height:5px; margin-bottom:12px; background:currentColor; transform:rotate(45deg); }
.kv-rarity--0 { color:#c4cec8; }.kv-rarity--1 { color:#a9d5b4; }.kv-rarity--2 { color:#a6d3f5; }.kv-rarity--3 { color:#d1b7ed; }.kv-rarity--4 { color:#edc992; }.kv-rarity--5 { color:#e9d5fa; }
.kv-hero-haze { position:absolute; inset:40% -10% 0; z-index:2; pointer-events:none; opacity:.35; background:radial-gradient(ellipse at 62% 80%,#b1c8ce18,transparent 55%); }
.kv-navigation .wp-block-navigation-item__content[aria-current="location"] { color:#e4bd88; }
.kv-navigation .wp-block-navigation-item__content[aria-current="location"] .wp-block-navigation-item__label::after { transform:scaleX(1); }

@media(prefers-reduced-motion:no-preference) {
  .kv-atmosphere-vivid .kv-world-art img { transition:transform 1.4s var(--kv-ease); }
  .kv-atmosphere-vivid .kv-world-card.kv-in-view .kv-portal-seal { animation:kv-portal-wake 1.6s var(--kv-ease) both; }
  .kv-atmosphere-vivid .kv-ambient-visible .kv-portal-mist { animation:kv-mist 18s ease-in-out infinite alternate; }
  .kv-atmosphere-vivid .kv-hero.kv-ambient-visible .kv-hero-haze { animation:kv-mist 22s ease-in-out infinite alternate; }
  .kv-atmosphere-vivid .kv-chapter.kv-chapter-seen .kv-chapter-seal path { animation:kv-rune-trace 1.4s var(--kv-ease) both; }
  .kv-atmosphere-vivid .kv-loop-number,.kv-atmosphere-vivid .kv-loop-step { transition:border-color .35s ease,color .35s ease,box-shadow .35s ease,background .35s ease; }
  .kv-atmosphere-vivid .kv-rarity { transition:border-color .3s ease,box-shadow .3s ease; }
  .kv-atmosphere-vivid .is-menu-open::after { animation:kv-menu-orbit 1.2s var(--kv-ease) both; }
  .kv-atmosphere-vivid .kv-world-art img { will-change:auto; }
  @media(hover:hover) and (pointer:fine) {
    .kv-atmosphere-vivid .kv-world-card:hover .kv-world-art img { transform:scale(1.035); }
    .kv-atmosphere-vivid .kv-world-card:hover .kv-portal-seal { color:#fff3d7; }
    .kv-atmosphere-vivid .kv-rarity:hover { box-shadow:inset 0 -8px 22px -20px currentColor,0 0 18px #c7b5ef0c; }
  }
}
.kv-world-card:not(.kv-ambient-visible) .kv-portal-mist,.kv-hero:not(.kv-ambient-visible) .kv-embers i { animation-play-state:paused; }
body.kv-paused .kv-portal-mist,body.kv-paused .kv-hero-haze { animation-play-state:paused; }
body.kv-atmosphere-quiet .kv-header-shell::before,body.kv-atmosphere-quiet .kv-sigil::after,body.kv-atmosphere-quiet .kv-navigation .is-menu-open * { animation:none; }
body.kv-atmosphere-quiet .kv-hero .wp-block-cover__image-background { transform:none; }
body.kv-atmosphere-quiet .wp-block-button__link:hover,body.kv-atmosphere-quiet .kv-feature:hover .kv-picture img { transform:none; }
@keyframes kv-portal-wake { from { opacity:.6; filter:brightness(.75); } 55% { opacity:1; filter:brightness(1.4); } to { opacity:1; filter:brightness(1); } }
@keyframes kv-mist { from { transform:translate3d(-2%,0,0); opacity:.3; } to { transform:translate3d(2%,-3%,0); opacity:.65; } }
@keyframes kv-rune-trace { from { stroke-dashoffset:200; opacity:.3; } to { stroke-dashoffset:0; opacity:1; } }
@keyframes kv-menu-orbit { from { transform:rotate(-12deg) scale(.95); opacity:0; } to { transform:rotate(0) scale(1); opacity:1; } }
@media(max-width:900px) {
  .kv-world-body>h3.kv-world-name { font-size:44px; }
  .kv-world-card>.kv-world-body { padding:26px; }
  .kv-hunt-loop>.kv-loop-step { padding:24px; }
  .kv-loot-showcase { grid-template-columns:1fr; gap:38px; }
  .kv-loot-art { width:100%; max-width:560px; justify-self:center; }
}
@media(max-width:600px) {
  .kv-section:is(.kv-chapter--sonnenhain,.kv-chapter--portalwelten,.kv-chapter--beute) { padding-top:84px; }
  .kv-section:has(> #sonnenhain,> #portalwelten,> #beute) { padding-top:84px; }
  :is(#sonnenhain,#portalwelten,#beute) { scroll-margin-top:84px; }
  .kv-loot-showcase { grid-template-columns:1fr; gap:34px; }
  .kv-loot-copy h3 { font-size:30px; }
  .kv-world-grid { gap:28px; }
  .kv-world-card>.kv-world-body { padding:26px 22px; }
  .kv-world-body>h3.kv-world-name { font-size:48px; }
  .kv-world-body>.kv-world-tagline { font-size:11px; }
  .kv-world-art.kv-picture figcaption { padding:10px 14px; font-size:9px; }
  .kv-portal-seal { width:40px; height:50px; top:14px; left:14px; }.kv-portal-seal svg { width:24px; height:34px; }
  .kv-hunt-loop { gap:14px; }
  .kv-hunt-loop>.kv-loop-step { min-height:0; padding:24px 20px 24px 82px; }
  .kv-loop-number { position:absolute; left:18px; top:22px; width:40px; height:40px; margin:0; font-size:23px; }
  .kv-loop-symbol { display:none; }
  .kv-loop-step h3 { font-size:29px; padding-right:0; }
  .kv-chapter-seal { top:8px; left:calc(50% - 18px); width:36px; height:44px; }
  .kv-chapter--beute .kv-section-title,.kv-chapter--welt-erinnert-sich .kv-section-title { font-size:46px; }
  .kv-rarities { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
  .kv-rarity { margin:0; padding:13px 14px; font-size:13px; }
}
@media(prefers-reduced-motion:reduce) { .kv-hunt-path .kv-path-light { stroke-dashoffset:0!important; }.kv-portal-mist,.kv-hero-haze { display:none; } }
@media print { .kv-hunt-path,.kv-chapter-seal,.kv-portal-seal,.kv-portal-mist,.kv-hero-haze { display:none; } }
.kv-world-body>p:last-child { margin-bottom:0; }
.kv-launch { position:relative; }
.kv-launch .kv-platforms { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:20px; margin-top:40px; }
.kv-launch .kv-platform { min-width:0; padding:30px; border:1px solid #9fbdb747; background:linear-gradient(140deg,#17302d80,#0b171a); }
.kv-launch .kv-platform>span { font-size:34px; margin-bottom:12px; }
.kv-launch .kv-platform-status { line-height:1.8; font-weight:400; }
@media(max-width:600px) { .kv-launch .kv-platforms { grid-template-columns:1fr; gap:14px; }.kv-launch .kv-platform { padding:24px; } }
