/* Layout: dark leather-and-parchment world taken from the card frames; wide hero over the Crônica's misty castle, then sections in a single 1120px column. Committed single dark look. */
:root{
  --bg:#16100c;
  --surface:#211812;
  --surface-2:#2b2018;
  --line:#3d2e22;
  --fg:#ecdfc8;
  --muted:#b5a389;
  --gold:#d2a456;
  --gold-deep:#8a6330;
  --humanos:#8a6549;
  --orcs:#4f6e6c;
  --elfos:#3f8b69;
  --criaturas:#73548c;
  --glow-humanos:#e8ad6e;
  --glow-orcs:#8fd8d0;
  --glow-elfos:#7fe8b2;
  --glow-criaturas:#c99af5;
  --f-display:"Stardos Stencil","Alegreya",Georgia,serif;
  --f-body:"Alegreya",Georgia,"Times New Roman",serif;
  --f-label:"Alegreya Sans SC","Trebuchet MS",system-ui,sans-serif;
  --gutter-l:max(16px,env(safe-area-inset-left,0px));
  --gutter-r:max(16px,env(safe-area-inset-right,0px));
  color-scheme:dark;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:72px}
@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*{transition:none!important;animation:none!important}}
body{background:var(--bg);color:var(--fg);font-family:var(--f-body);font-size:18px;line-height:1.6;margin:0}
body::before{content:"";position:fixed;inset:0 0 auto;height:env(safe-area-inset-top,0px);z-index:10;background:var(--bg)}
a{color:var(--gold)}
a:focus-visible,button:focus-visible,input:focus-visible{outline:2px solid var(--gold);outline-offset:3px}
.wrap{max-width:1120px;margin:0 auto;padding-left:var(--gutter-l);padding-right:var(--gutter-r)}
h1,h2,h3{font-family:var(--f-display);font-weight:700;letter-spacing:.02em;text-wrap:balance;margin:0;line-height:1.1}
h2{font-size:clamp(2rem,4.5vw,3rem);color:var(--fg)}
h3{font-size:1.45rem}
p{margin:0}
.eyebrow{font-family:var(--f-label);font-size:.85rem;letter-spacing:.14em;color:var(--gold);text-transform:lowercase}
.lede{color:var(--muted);max-width:62ch}
section{padding-block:clamp(56px,9vw,104px);border-top:1px solid var(--line)}
.sec-head{display:grid;gap:12px;margin-bottom:40px}

/* header */
.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:20;background:color-mix(in srgb,var(--bg) 88%,transparent);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.top .wrap{display:flex;align-items:center;gap:20px;padding-block:8px}
.top img{height:40px;width:auto;display:block}
.nav{display:flex;gap:4px;overflow-x:auto;margin-left:auto;scrollbar-width:none}
.nav a{font-family:var(--f-label);font-size:.95rem;letter-spacing:.08em;color:var(--fg);text-decoration:none;padding:8px 12px;border-radius:4px;white-space:nowrap}
.nav a:hover{background:var(--surface-2);color:var(--gold)}

/* hero */
.hero{position:relative;overflow:hidden;border-top:0;padding-block:clamp(48px,8vw,96px)}
.hero::before{content:"";position:absolute;inset:0;background:url(img/hero-bg.jpg) center 40%/cover no-repeat;opacity:.4;filter:saturate(.8)}
.hero::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 0%,var(--bg) 96%),linear-gradient(90deg,var(--bg) 0%,transparent 70%)}
.hero .wrap{position:relative;z-index:1}
.hero .hero-main{display:grid;grid-template-columns:minmax(0,1.1fr) minmax(0,.9fr);gap:40px;align-items:center}
.hero-logo{width:min(420px,100%);height:auto;filter:drop-shadow(0 10px 30px rgba(0,0,0,.6))}
.hero h1{font-size:clamp(2.2rem,5vw,3.6rem);margin-top:18px}
.hero .lede{margin-top:16px;font-size:1.15rem;color:var(--fg);opacity:.86}
.cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.btn{font-family:var(--f-label);font-size:1rem;letter-spacing:.08em;text-decoration:none;padding:12px 22px;border-radius:4px;border:1px solid var(--gold);color:var(--bg);background:var(--gold);cursor:pointer;display:inline-flex;align-items:center;gap:8px}
.btn.ghost{background:transparent;color:var(--gold)}
.btn:hover{filter:brightness(1.1)}
.hero-cards{position:relative;width:100%;max-width:460px;aspect-ratio:10/9;justify-self:center;perspective:1100px}
.hero-cards img{position:absolute;width:56%;border-radius:10px;box-shadow:0 18px 40px rgba(0,0,0,.6);transition:transform .5s cubic-bezier(.2,.7,.2,1);animation:deal .9s cubic-bezier(.2,.8,.25,1) backwards}
.hero-cards img:nth-child(1){left:0;top:40px;transform:rotate(-9deg);animation-delay:.25s}
.hero-cards img:nth-child(2){left:22%;top:0;z-index:2;transform:rotate(1deg) rotateX(var(--rx,0deg)) rotateY(var(--ry,0deg));animation-delay:.55s;transition:transform .25s ease-out}
.hero-cards img:nth-child(3){right:0;top:50px;transform:rotate(9deg);animation-delay:.4s}
.hero-cards:hover img:nth-child(1){transform:rotate(-13deg) translateX(-12px)}
.hero-cards:hover img:nth-child(3){transform:rotate(13deg) translateX(12px)}
@keyframes deal{from{opacity:0;transform:translate(0,90px) rotate(0deg) scale(.82)}}
.mist{position:absolute;inset:0;pointer-events:none;overflow:hidden}
.mist i{position:absolute;left:-60%;width:220%;height:60%;opacity:.55;background:radial-gradient(closest-side,rgba(210,200,195,.22),transparent) 0 0/34% 100% repeat-x;animation:drift 70s linear infinite}
.mist i:nth-child(1){top:38%}
.mist i:nth-child(2){top:55%;opacity:.4;animation-duration:110s;animation-direction:reverse;background-size:46% 100%}
.mist i:nth-child(3){top:22%;opacity:.25;animation-duration:150s;background-size:28% 80%}
@keyframes drift{to{transform:translateX(34%)}}
.hero .hero-logo{animation:rise 1s ease-out backwards}
.hero h1{animation:rise 1s .12s ease-out backwards}
.hero .lede,.hero .cta{animation:rise 1s .24s ease-out backwards}
@keyframes rise{from{opacity:0;transform:translateY(14px)}}
.factions-strip{margin-top:48px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:12px;align-items:start}
.fs{display:grid;gap:8px;padding:14px 16px;background:color-mix(in srgb,var(--f) 26%,var(--surface));border:1px solid color-mix(in srgb,var(--f) 60%,var(--line));border-radius:6px;text-decoration:none;color:var(--fg);transition:background .25s,border-color .25s}
.fs-head{display:flex;align-items:center;gap:12px}
.fs img{width:40px;height:40px;object-fit:contain;flex:none;transition:filter .35s,transform .35s}
.fs:hover img,.fs:focus-visible img{transform:scale(1.12);filter:drop-shadow(0 0 4px var(--g)) drop-shadow(0 0 12px var(--g)) drop-shadow(0 0 22px var(--g))}
.fs:hover b,.fs:focus-visible b{text-shadow:0 0 18px var(--g)}
.fs b{font-family:var(--f-display);font-size:1.2rem;display:block;line-height:1.1}
.fs .tagline{font-family:var(--f-label);font-size:.82rem;color:var(--fg);opacity:.82;letter-spacing:.04em;line-height:1.3;display:block;margin-top:2px}
.fs .more{display:grid;grid-template-rows:0fr;transition:grid-template-rows .35s ease}
.fs .more>p{overflow:hidden;font-size:.95rem;line-height:1.5;color:var(--muted)}
.fs .go{font-family:var(--f-label);font-size:.8rem;letter-spacing:.08em;color:var(--gold);opacity:0;transition:opacity .25s}
.fs:hover,.fs:focus-visible{background:color-mix(in srgb,var(--f) 42%,var(--surface));border-color:var(--f)}
.fs:hover .more,.fs:focus-visible .more{grid-template-rows:1fr}
.fs:hover .go,.fs:focus-visible .go{opacity:1}
@media (hover:none){.fs .more{grid-template-rows:1fr}.fs .go{opacity:1}}

/* aksar */
.aksar-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:48px;align-items:start;margin-bottom:40px}
.quote{margin:0;font-size:1.25rem;font-style:italic;border-left:2px solid var(--gold-deep);padding-left:20px;color:var(--fg)}
.quote cite{display:block;margin-top:12px;font-style:normal;font-family:var(--f-label);font-size:.85rem;letter-spacing:.08em;color:var(--muted)}
.realms{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line)}
.realm{background:var(--surface);padding:18px 20px;display:grid;gap:6px;align-content:start}
.realm h3{font-size:1.3rem}
.realm p{font-size:.98rem;color:var(--muted)}
.realm .src{font-family:var(--f-label);font-size:.78rem;letter-spacing:.08em;color:var(--gold)}

/* books */
.books{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:36px}
.book-card{display:grid;gap:18px;align-content:start}
.stage{perspective:1200px;height:360px;display:grid;place-items:center;background:radial-gradient(ellipse at 50% 85%,var(--surface-2) 0%,transparent 70%)}
.book{--w:210px;--h:302px;width:var(--w);height:var(--h);position:relative;transform-style:preserve-3d;transform:rotateY(-30deg) rotateX(4deg);transition:transform .9s cubic-bezier(.2,.7,.2,1)}
.book-card:hover .book{transform:rotateY(-14deg) rotateX(2deg)}
.book.flipped,.book-card:hover .book.flipped{transform:rotateY(150deg) rotateX(4deg)}
.face{position:absolute;inset:0;background-size:100% 100%;backface-visibility:hidden}
.face.front{transform:translateZ(calc(var(--d)/2));border-radius:0 3px 3px 0;box-shadow:inset 3px 0 6px rgba(255,255,255,.08)}
.face.back{transform:rotateY(180deg) translateZ(calc(var(--d)/2))}
.face.spine{width:var(--d);left:calc((var(--w) - var(--d))/2);transform:rotateY(-90deg) translateZ(calc(var(--w)/2))}
.face.pages{width:var(--d);left:calc((var(--w) - var(--d))/2);top:3px;bottom:3px;height:auto;transform:rotateY(90deg) translateZ(calc(var(--w)/2 - 3px));background:repeating-linear-gradient(90deg,#efe6d2 0 2px,#d9cdb3 2px 3px)}
.face.bottom-shadow{inset:auto;width:var(--w);height:var(--d);bottom:0;transform:rotateX(90deg) translateZ(calc(var(--d)/-2));background:#000;opacity:.35;filter:blur(6px);backface-visibility:visible}
.meta{font-family:var(--f-label);font-size:.85rem;letter-spacing:.08em;color:var(--muted);display:flex;flex-wrap:wrap;gap:6px 14px}
.book-card h3{font-size:1.6rem}
.book-card .syn{color:var(--muted);font-size:1rem}
.book-card .syn p+p{margin-top:10px}
.book-actions{display:flex;flex-wrap:wrap;gap:10px}
.book-actions .btn{padding:10px 16px;font-size:.92rem}
.link-btn{background:none;border:0;color:var(--gold);font-family:var(--f-label);letter-spacing:.08em;font-size:.92rem;cursor:pointer;padding:10px 4px;text-decoration:underline;text-underline-offset:4px}
.tag-arc{font-family:var(--f-label);font-size:.8rem;letter-spacing:.08em;color:var(--gold)}

/* heroes */
.tools{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin-bottom:24px}
.chip{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-label);font-size:.95rem;letter-spacing:.06em;color:var(--fg);background:var(--surface);border:1px solid var(--line);border-radius:999px;padding:6px 14px 6px 8px;cursor:pointer}
.chip img{width:24px;height:24px;object-fit:contain}
.chip.all{padding-left:14px}
.chip[aria-pressed="true"]{background:color-mix(in srgb,var(--f,var(--gold-deep)) 55%,var(--surface));border-color:color-mix(in srgb,var(--f,var(--gold)) 80%,white 0%)}
.search{margin-left:auto;background:var(--surface);border:1px solid var(--line);color:var(--fg);border-radius:999px;padding:9px 16px;font:inherit;font-size:1rem;width:min(260px,100%)}
.count{font-family:var(--f-label);color:var(--muted);font-size:.9rem;letter-spacing:.06em;margin-bottom:14px}
.grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(168px,1fr));gap:16px}
.hero-tile{all:unset;cursor:pointer;display:block;perspective:900px;animation:tile-in .5s cubic-bezier(.2,.7,.2,1) backwards;animation-delay:calc(min(var(--i,0),20) * 30ms)}
@keyframes tile-in{from{opacity:0;transform:translateY(14px) scale(.97)}}
.hero-tile:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:6px}
.tile-inner{display:grid;transform-style:preserve-3d;transition:transform .65s cubic-bezier(.3,.7,.2,1)}
.tile-face{grid-area:1/1;backface-visibility:hidden;-webkit-backface-visibility:hidden;background:var(--surface);border:1px solid color-mix(in srgb,var(--f) 55%,var(--line));border-radius:6px;overflow:hidden;display:grid;align-content:start}
.tile-front img{width:100%;height:auto;aspect-ratio:360/353;object-fit:cover;display:block}
.tile-front .bar{background:color-mix(in srgb,var(--f) 70%,#1a120c);padding:8px 10px 10px;display:grid;gap:4px}
.tile-back{transform:rotateY(180deg);background:radial-gradient(circle at 50% 22%,color-mix(in srgb,var(--f) 55%,#1a120c),#1a120c 75%);border-color:var(--f);padding:14px 12px;gap:6px;align-content:center;justify-items:center;text-align:center}
.tb-emb{width:46px;height:46px;filter:drop-shadow(0 0 8px var(--g))}
.tile-back .nm{font-size:1.2rem}
.tb-ab{display:grid;gap:1px;width:100%;border-top:1px solid color-mix(in srgb,var(--f) 60%,transparent);padding-top:6px}
.tb-ab b{font-family:var(--f-display);font-weight:400;font-size:.98rem;line-height:1.15}
.tb-ab i{font-style:normal;font-family:var(--f-label);font-size:.72rem;letter-spacing:.08em;color:var(--gold)}
.tb-more{font-family:var(--f-label);font-size:.75rem;letter-spacing:.08em;color:var(--fg);opacity:.75;margin-top:4px}
.hero-tile .nm{font-family:var(--f-display);font-size:1.12rem;line-height:1.1}
.stats{display:flex;gap:10px;white-space:nowrap;font-family:var(--f-label);font-size:.8rem;letter-spacing:.06em;color:var(--fg);opacity:.9;font-variant-numeric:tabular-nums}
.tile-front{grid-template-rows:auto 1fr}
@media (hover:hover){
  .hero-tile:hover .tile-inner,.hero-tile:focus-visible .tile-inner{transform:rotateY(180deg)}
  .hero-tile:hover .tile-back{box-shadow:0 0 24px color-mix(in srgb,var(--g) 45%,transparent)}
}
.chip img{transition:filter .3s}
.chip:hover img,.chip[aria-pressed="true"] img{filter:drop-shadow(0 0 6px var(--g,var(--gold)))}
.empty{color:var(--muted);padding:24px 0}

dialog{border:1px solid var(--line);background:var(--surface);color:var(--fg);border-radius:8px;padding:0;width:min(860px,calc(100vw - 32px));max-height:calc(100dvh - 32px)}
dialog::backdrop{background:rgba(10,6,4,.78)}
.dlg{display:grid;grid-template-columns:minmax(0,320px) minmax(0,1fr);gap:28px;padding:28px}
.dlg img{width:100%;height:auto;border-radius:8px}
.dlg-body{display:grid;gap:16px;align-content:start;min-width:0}
.dlg h3{font-size:2.2rem}
.fac-label{display:inline-flex;align-items:center;gap:8px;font-family:var(--f-label);letter-spacing:.08em;color:var(--muted)}
.fac-label img{width:26px;height:26px}
.big-stats{display:flex;gap:28px;font-variant-numeric:tabular-nums}
.big-stats div{display:grid}
.big-stats b{font-family:var(--f-display);font-size:2rem;line-height:1}
.big-stats span{font-family:var(--f-label);font-size:.8rem;color:var(--muted);letter-spacing:.1em}
.abil{border-top:1px solid var(--line);padding-top:14px;display:grid;gap:6px}
.abil h4{margin:0;font-family:var(--f-display);font-size:1.25rem;font-weight:400;display:flex;flex-wrap:wrap;gap:8px;align-items:baseline}
.type{font-family:var(--f-label);font-size:.78rem;letter-spacing:.08em;color:var(--bg);background:var(--gold);padding:1px 8px;border-radius:3px}
.abil p{color:var(--muted);font-size:1rem}
.close{position:absolute;top:10px;right:10px;background:var(--surface-2);border:1px solid var(--line);color:var(--fg);width:38px;height:38px;border-radius:50%;font-size:1.2rem;cursor:pointer}
.nav-dlg{display:flex;gap:10px;margin-top:4px}

/* game */
.game{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(0,1fr);gap:40px}
.rules{display:grid;gap:22px}
.rule h3{font-size:1.35rem;margin-bottom:6px}
.rule p,.rule li{color:var(--muted);font-size:1rem}
.rule ol{margin:8px 0 0;padding-left:22px;display:grid;gap:4px}
.pad{background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:20px 22px;display:grid;gap:12px;align-content:start}
.pad h3{font-size:1.3rem}
.prio{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:6px 18px;counter-reset:p}
.prio li{counter-increment:p;display:flex;gap:10px;font-size:.98rem;align-items:baseline}
.prio li::before{content:counter(p);font-family:var(--f-label);color:var(--gold);min-width:1.4em;text-align:right;font-variant-numeric:tabular-nums}
.status{display:flex;gap:10px;align-items:center;font-family:var(--f-label);letter-spacing:.08em;color:var(--gold)}
.status i{width:10px;height:10px;border-radius:50%;background:var(--gold);box-shadow:0 0 0 4px color-mix(in srgb,var(--gold) 25%,transparent)}
.contact{margin-top:28px;display:grid;gap:12px}
.mail{display:flex;flex-wrap:wrap;gap:10px;align-items:center}
.mail code{font-family:var(--f-body);font-size:1.05rem;background:var(--surface-2);padding:6px 12px;border-radius:4px;user-select:all;border:1px solid var(--line)}
.copy{font-family:var(--f-label);letter-spacing:.06em;background:transparent;color:var(--gold);border:1px solid var(--gold-deep);border-radius:4px;padding:6px 12px;cursor:pointer}

/* author */
.author{display:grid;grid-template-columns:200px minmax(0,1fr);gap:36px;align-items:center}
.author img{width:200px;height:200px;object-fit:cover;border-radius:50%;filter:grayscale(1) contrast(1.05);border:2px solid var(--gold-deep)}
.author p{color:var(--muted);max-width:62ch}
.author p+p{margin-top:12px}

footer{border-top:1px solid var(--line);padding-block:32px;color:var(--muted);font-size:.95rem}
footer .wrap{display:flex;flex-wrap:wrap;gap:16px;align-items:center;justify-content:space-between}
footer img{height:44px;width:auto}

@media (max-width:900px){
  .hero .hero-main,.aksar-grid,.game{grid-template-columns:minmax(0,1fr)}
  .hero-cards{max-width:400px}
  .books{grid-template-columns:minmax(0,1fr);gap:56px}
  .book-card{grid-template-columns:minmax(0,1fr)}
  .factions-strip{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:640px){
  body{font-size:17px}
  .realms{grid-template-columns:minmax(0,1fr)}
  .dlg{grid-template-columns:minmax(0,1fr);padding:20px}
  .dlg img{max-width:260px;margin:0 auto}
  .author{grid-template-columns:minmax(0,1fr);justify-items:start}
  .author img{width:140px;height:140px}
  .prio{grid-template-columns:minmax(0,1fr)}
  .hero-cards{width:84%}
  .search{margin-left:0;width:100%}
  .top img{height:32px}
  .grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}
}

/* card game page */
.page-hero{position:relative;overflow:hidden;border-top:0;padding-block:clamp(48px,7vw,88px)}
.page-hero::before{content:"";position:absolute;inset:0;background:url(img/card12.webp) right 20%/auto 140% no-repeat;opacity:.16;filter:saturate(.7)}
.page-hero .wrap{position:relative;display:grid;gap:18px}
.page-hero h1{font-size:clamp(2.4rem,6vw,4rem)}
.page-hero .lede{font-size:1.15rem;color:var(--fg);opacity:.88}
.facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:1px;background:var(--line);border:1px solid var(--line);margin-top:12px}
.facts div{background:var(--surface);padding:16px 18px;display:grid;gap:2px}
.facts b{font-family:var(--f-display);font-size:1.9rem;line-height:1;color:var(--gold);font-variant-numeric:tabular-nums}
.facts span{font-family:var(--f-label);font-size:.85rem;letter-spacing:.06em;color:var(--muted)}
.back-link{font-family:var(--f-label);letter-spacing:.08em;font-size:.92rem;text-decoration:none}
.nav a[aria-current="page"]{color:var(--gold)}
.teaser{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:28px;align-items:center;background:var(--surface);border:1px solid var(--line);border-radius:8px;padding:28px}
@media (max-width:900px){.realms{grid-template-columns:repeat(2,minmax(0,1fr))}.facts{grid-template-columns:repeat(2,minmax(0,1fr))}.teaser{grid-template-columns:minmax(0,1fr)}}
@media (max-width:640px){.realms{grid-template-columns:minmax(0,1fr)}}

/* atlas */
.atlas{display:grid;grid-template-columns:minmax(0,1.35fr) minmax(0,1fr);gap:36px;align-items:start}
.map-col{position:sticky;top:calc(env(safe-area-inset-top,0px) + 76px);z-index:2}
.map{position:relative;margin:0;border-radius:6px;overflow:hidden;border:1px solid var(--gold-deep);box-shadow:0 24px 60px rgba(0,0,0,.55),inset 0 0 0 1px rgba(0,0,0,.4);background:#1b130d}
.map img{display:block;width:100%;height:auto}
.map svg{position:absolute;inset:0;width:100%;height:100%}
.map::after{content:"";position:absolute;inset:0;pointer-events:none;box-shadow:inset 0 0 60px rgba(10,6,3,.7)}
.map-cap{position:absolute;left:14px;bottom:10px;font-family:var(--f-display);font-size:1.15rem;letter-spacing:.12em;color:#f3e2bf;text-shadow:0 2px 6px #000,0 0 14px #000;pointer-events:none}
.shade{fill:#0b0705;opacity:0;transition:opacity .5s}
.has-active .shade{opacity:.5}
.region{fill:var(--c);fill-opacity:0;stroke:#f3dfb4;stroke-opacity:.35;stroke-width:1.6;stroke-dasharray:.006 .005;cursor:pointer;transition:fill-opacity .45s,stroke-opacity .45s}
.region:hover{fill-opacity:.08}
.region.on{fill-opacity:.22;stroke:var(--c);stroke-opacity:1;stroke-width:3.2;stroke-dasharray:1;stroke-dashoffset:0;filter:url(#glow);animation:draw 1.1s cubic-bezier(.4,.1,.2,1)}
@keyframes draw{from{stroke-dashoffset:1}}
.pin{cursor:pointer}
.pin circle{fill:var(--c);stroke:#120b07;stroke-width:2;transition:r .3s}
.pin text{font-family:var(--f-display);font-size:19px;letter-spacing:.06em;fill:#f3e2bf;text-anchor:middle;paint-order:stroke;stroke:#120b07;stroke-width:5px;stroke-linejoin:round;transition:font-size .3s,fill .3s}
.has-active .pin:not(.on){opacity:.55}
.pin.on circle{r:8}
.pin.on text{font-size:26px;fill:var(--c)}
.pin.on circle{animation:ping 1.6s ease-out infinite}
@keyframes ping{0%{stroke-width:2;stroke:var(--c);stroke-opacity:1}100%{stroke-width:22;stroke:var(--c);stroke-opacity:0}}
.realm-list{display:grid;gap:12px}
.realm-item{background:var(--surface);border:1px solid var(--line);border-left:3px solid var(--line);border-radius:4px;padding:16px 18px;display:grid;gap:6px;transition:border-color .35s,background .35s,transform .35s;cursor:default}
.realm-item:focus-visible{outline:2px solid var(--gold);outline-offset:2px}
.realm-item.on{border-color:color-mix(in srgb,var(--c) 55%,var(--line));border-left-color:var(--c);background:color-mix(in srgb,var(--c) 9%,var(--surface));transform:translateX(4px)}
.realm-item h3{font-size:1.35rem;transition:color .35s}
.realm-item.on h3{color:var(--c)}
.realm-item p{font-size:.98rem;color:var(--muted)}
.realm-top{display:flex;align-items:center;gap:10px}
.realm-embs{display:flex;gap:2px}
.realm-embs img{width:26px;height:26px;opacity:.75;transition:filter .35s,opacity .35s}
.realm-item.on .realm-embs img{opacity:1;filter:drop-shadow(0 0 6px var(--c))}
.realm-item .src{font-family:var(--f-label);font-size:.78rem;letter-spacing:.08em;color:var(--gold)}
@media (max-width:900px){
  .atlas{grid-template-columns:minmax(0,1fr);gap:16px}
  .map-col{top:calc(env(safe-area-inset-top,0px) + 50px);margin-inline:calc(-1 * var(--gutter-l)) calc(-1 * var(--gutter-r));padding:8px var(--gutter-r) 10px var(--gutter-l);background:linear-gradient(var(--bg) 85%,transparent)}
  .map{max-width:520px;margin:0 auto}
  .pin text{font-size:24px}.pin.on text{font-size:32px}
  .realm-list{gap:10px}
}

/* book atmospheres */
.stage{position:relative}
.atmos{position:absolute;inset:0;width:100%;height:100%;pointer-events:none}
.book{z-index:1}

@media (prefers-reduced-motion:reduce){.mist{display:none}.region.on{animation:none}.pin.on circle{animation:none}}
