/* Hordebinder: night sky, gilt and the game's pop-up art (2026-10-25; was iron and gilt, 2026-10-19). Fonts are the game's own, served from
   fonts/ under the SIL Open Font License (fonts/OFL-*.txt). */
@font-face{font-family:"Cinzel";src:url(fonts/Cinzel-VF.ttf) format("truetype");font-weight:400 900;font-display:swap}
@font-face{font-family:"Cinzel Decorative";src:url(fonts/CinzelDecorative-Bold.ttf) format("truetype");font-weight:700;font-display:swap}
@font-face{font-family:"Alegreya";src:url(fonts/Alegreya-VF.ttf) format("truetype");font-weight:400 900;font-display:swap}
:root{
  --bg:#070a1c; --bg2:rgba(14,18,48,.78); --panel:#141a3d; --line:#3b4380; --ink:#eef0ff; --muted:#bcc2e6;
  --gilt:#E0B361; --gilt-hi:#f2d08a; --ember:#e9773d; --crimson:#a3302a;
  --parchment:#f1e6c8; --parch-ink:#2b2140; --parch-muted:#5a4f72; --violet:#8f6bff; --glass:rgba(16,20,52,.62);
  --gutter:clamp(16px,2.2vw,32px);
  --head:"Cinzel","Palatino Linotype","Book Antiqua",Palatino,Georgia,serif;
  --deco:"Cinzel Decorative","Cinzel",Georgia,serif;
  --body:"Alegreya","Palatino Linotype","Book Antiqua",Georgia,serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font:18px/1.6 var(--body);-webkit-font-smoothing:antialiased;overflow-x:hidden}
a{color:var(--gilt-hi)}
:focus-visible{outline:2px solid var(--gilt);outline-offset:3px}
.wrap{padding-inline:var(--gutter);width:100%}

/* top bar */
.bar{position:absolute;inset:0 0 auto 0;z-index:5;display:flex;justify-content:space-between;align-items:center;gap:16px;padding:18px var(--gutter)}
.bar .mark{font:700 .95rem/1 var(--deco);letter-spacing:.3em;text-transform:uppercase;color:var(--gilt-hi);text-decoration:none;text-shadow:0 1px 0 #000}
.bar nav{display:flex;gap:clamp(14px,3vw,34px)}
.bar nav a{font:600 .78rem/1 var(--head);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;color:var(--ink);text-shadow:0 1px 2px #000}
.bar nav a:hover{color:var(--gilt-hi)}
.bar nav a{white-space:nowrap}
@media (max-width:440px){.bar .mark{letter-spacing:.18em;font-size:.85rem}.bar nav{gap:12px}.bar nav a{letter-spacing:.1em;font-size:.72rem}}

/* hero */
.hero{position:relative;min-height:min(100svh,920px);display:grid;place-items:start center;overflow:hidden;isolation:isolate;text-align:center;padding:clamp(88px,13vh,150px) var(--gutter) 80px}

.hero .glow{position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse at 50% 34%,rgba(143,107,255,.18),transparent 52%),linear-gradient(180deg,transparent 70%,rgba(7,10,28,.85))}
.hero .title{width:min(78vw,460px);height:auto;filter:drop-shadow(0 6px 22px rgba(0,0,0,.6)) drop-shadow(0 0 34px rgba(143,107,255,.28))}
.hero .tag{font:italic 500 clamp(1.25rem,2.6vw,1.85rem)/1.3 var(--body);color:var(--gilt-hi);margin:6px 0 0;letter-spacing:.03em;text-shadow:0 2px 6px rgba(0,0,0,.7)}
.hero .sub{margin:14px 0 0;font:600 .8rem/1.4 var(--head);letter-spacing:.24em;text-transform:uppercase;color:var(--ink);text-shadow:0 1px 4px #000}
.hero .fig{position:absolute;bottom:-2%;z-index:1;pointer-events:none;height:min(48vh,500px);width:auto;filter:drop-shadow(0 18px 30px rgba(0,0,0,.6))}
.hero .fig.l{left:max(1vw,calc(50% - 760px))}
.hero .fig.r{right:max(1vw,calc(50% - 760px))}
@media (max-width:900px){.hero .fig{opacity:.45;height:30vh;z-index:-1;pointer-events:none}.hero .fig.l{left:-16%}.hero .fig.r{right:-20%}}
#top{position:relative;z-index:2}
@media (prefers-reduced-motion:no-preference){.hero .fig.l{animation:bob 7s ease-in-out infinite}.hero .fig.r{animation:bob 8s ease-in-out -3s infinite}@keyframes bob{50%{transform:translateY(-8px)}}}

/* sections */
section{padding:clamp(56px,8vw,112px) var(--gutter)}
.eyebrow{font:700 .78rem/1 var(--head);letter-spacing:.3em;text-transform:uppercase;color:var(--gilt);margin:0 0 14px}
h2{font:700 clamp(1.9rem,4vw,3.1rem)/1.1 var(--head);margin:0 0 .5em;letter-spacing:.02em;color:var(--ink)}
.rule{height:1px;border:0;background:linear-gradient(90deg,transparent,var(--gilt),transparent);margin:0}

/* the pitch, on parchment */
.pitch{background:var(--glass);backdrop-filter:blur(6px);border-block:1px solid rgba(224,179,97,.55)}
.pitch .grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(20px,3vw,56px)}
.pitch h3{font:700 1.2rem/1.2 var(--head);letter-spacing:.06em;text-transform:uppercase;color:var(--gilt-hi);margin:0 0 .5em}
.pitch p{margin:0;color:var(--muted);max-width:34ch}
@media (max-width:760px){.pitch .grid{grid-template-columns:1fr}}

.cast-head{display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;margin-bottom:28px}
.cards{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,1.6vw,24px)}
@media (max-width:1000px){.cards{grid-template-columns:repeat(2,1fr)}}
.card .front{position:relative;display:flex;flex-direction:column;margin:0;border:2px solid #5c4123;border-radius:6px;background:linear-gradient(180deg,#3a2615,#22150c);box-shadow:inset 0 0 0 1px rgba(224,179,97,.25),0 8px 18px rgba(0,0,0,.35);overflow:hidden;cursor:pointer;transition:border-color .2s,transform .35s cubic-bezier(.2,.8,.2,1)}
.card .front::before{content:"";position:absolute;inset:0;background:radial-gradient(ellipse at 50% 70%,var(--glow,rgba(224,179,97,.26)),transparent 62%)}
.card .front img{position:relative;display:block;flex:none;width:100%;aspect-ratio:1;object-fit:contain;padding:6% 6% 0}
.card .front figcaption{position:relative;flex:1 0 auto;padding:14px 18px 18px;border-top:1px solid var(--gilt);background:#f1e3c2;color:#3b2716}
.card .front b{display:block;font:700 1.08rem/1.2 var(--head);letter-spacing:.04em;color:#3b2716}
.card .front span{display:block;margin-top:2px;font-size:.95rem;line-height:1.4;color:#6a4f33}
.card:hover .front{border-color:var(--gilt)}
.horde .card{--glow:rgba(233,119,61,.3)}
.horde .card:hover .front{border-color:var(--ember)}
.horde .eyebrow{color:var(--ember)}
.horde{background:linear-gradient(180deg,transparent,rgba(70,14,30,.35))}

/* studio */
.studio{background:var(--bg2);backdrop-filter:blur(6px);border-top:1px solid rgba(224,179,97,.55)}
.studio .cols{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(24px,5vw,96px);align-items:start}
@media (max-width:860px){.studio .cols{grid-template-columns:1fr}}
.studio p{color:var(--muted);max-width:60ch}
.facts{border:2px solid var(--line);border-radius:6px;padding:clamp(18px,2.4vw,32px);background:var(--glass);box-shadow:inset 0 0 0 1px rgba(224,179,97,.25);font:1rem/2 var(--body);overflow-wrap:anywhere}
.facts b{display:inline-block;min-width:9ch;color:var(--gilt);font-family:var(--head);font-size:.82rem;letter-spacing:.12em;text-transform:uppercase}
.btn{display:inline-block;margin:10px 8px 0 0;padding:.9em 1.6em;border:2px solid var(--gilt);border-radius:4px;background:var(--glass);color:var(--gilt-hi);text-decoration:none;font:700 .8rem/1 var(--head);letter-spacing:.14em;text-transform:uppercase;transition:background .15s,color .15s;overflow-wrap:anywhere}
.btn:hover{background:var(--gilt);color:#1a1530}

footer{padding:28px var(--gutter) 44px;border-top:1px solid var(--line);background:rgba(7,10,28,.8);color:var(--muted);font-size:.9rem;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
footer a{color:var(--muted)}
footer a:hover{color:var(--gilt-hi)}

/* The cards keep the live site's wood, gilt and parchment (owner 2026-10-25: "leave the cards the color they are now"). */
/* the night sky (sky.js draws it; this is the fallback colour before it starts) */
body{background:#070a1c}
.sky{position:fixed;inset:0;width:100vw;height:100vh;z-index:-10;display:block}
.hint{margin:0;font:italic 1rem/1.3 var(--body);color:var(--muted)}
.bg-pick{position:fixed;left:50%;bottom:12px;transform:translateX(-50%);z-index:50;display:flex;flex-wrap:wrap;justify-content:center;gap:6px;max-width:min(96vw,980px);padding:8px;border:1px solid var(--gilt);border-radius:8px;background:rgba(7,10,28,.9)}
.bg-pick a{padding:6px 10px;border-radius:5px;font:600 .75rem/1 var(--head);letter-spacing:.06em;color:var(--ink);text-decoration:none;background:rgba(255,255,255,.06)}
.bg-pick a[aria-current]{background:var(--gilt);color:#1a1530}

/* A card turns over in place; its back is the game's press-and-hold panel (owner 2026-10-25). */
.card{position:relative;margin:0;cursor:pointer;perspective:1400px;container-type:inline-size;-webkit-tap-highlight-color:transparent}
.card .flip{position:relative;height:100%;transform-style:preserve-3d;transition:transform .75s cubic-bezier(.3,.9,.25,1)}
.card:hover .flip{transform:translateY(-3px)}
.card.flipped .flip{transform:rotateY(180deg)}
.card.flipped:hover .flip{transform:rotateY(180deg) translateY(-3px)}
.card.no-anim .flip{transition:none}
.card .face{-webkit-backface-visibility:hidden;backface-visibility:hidden}
.card .front{height:100%}
.card .back{position:absolute;inset:0;transform:rotateY(180deg);display:flex;flex-direction:column;overflow:visible;
  border:22px solid transparent;border-image:url(img/ui/popup_panel.webp) 64 fill / 22px stretch;
  box-shadow:0 10px 24px rgba(0,0,0,.5);font-size:clamp(12px,4.6cqw,17px);color:#f4e8cf}
.card .back::after{content:"";position:absolute;left:4%;right:4%;bottom:0;height:40%;background:url(img/ui/popup_glow_ember.webp) center bottom/100% 100% no-repeat;opacity:.22;pointer-events:none}
.card .corner{position:absolute;width:30px;height:30px;background:url(img/ui/popup_corner.webp) 0 0/100% 100% no-repeat;z-index:2;pointer-events:none}
.card .corner.tl{top:-31px;left:-31px}.card .corner.tr{top:-31px;right:-31px;transform:scaleX(-1)}
.card .corner.bl{bottom:-31px;left:-31px;transform:scaleY(-1)}.card .corner.br{bottom:-31px;right:-31px;transform:scale(-1,-1)}
.card .banner{position:relative;z-index:3;align-self:center;margin:-38px 0 0;max-width:110%;padding:.45em 2.4em .4em;white-space:nowrap;
  background:url(img/ui/popup_title_band.webp) center/100% 100% no-repeat;font:700 1.18em/1 var(--head);letter-spacing:.04em;color:#E0B361;text-shadow:0 2px 2px #000}
.card .back-body{flex:1;min-height:0;overflow-y:auto;scrollbar-width:thin;scrollbar-color:#E0B361 transparent;margin-top:.6em;padding-right:.2em;
  display:grid;grid-template-columns:40% 1fr;column-gap:.8em;align-content:space-evenly}
.card .words{align-self:center}
.card .pic{aspect-ratio:1;padding:9%;background:url(img/ui/popup_portrait.webp) center/100% 100% no-repeat,url(img/ui/card_art_bg_ward.webp) center/cover no-repeat}
.card .back.monster .pic{background:url(img/ui/popup_portrait.webp) center/100% 100% no-repeat,linear-gradient(rgba(18,13,36,.55),rgba(18,13,36,.55)),url(img/ui/card_art_bg_ally.webp) center/cover no-repeat}
.card .pic img{width:100%;height:100%;object-fit:contain;filter:drop-shadow(0 4px 6px rgba(0,0,0,.6))}
.card .role{margin:0 0 .25em;font:700 .86em/1.25 var(--head);letter-spacing:.08em;text-transform:uppercase;color:#E0B361}
.card .does{margin:0;font:1em/1.35 var(--body);color:#f4e8cf}
.card .back-facts{grid-column:1/-1;margin:.6em 0 0;padding:0 0 0 1.1em;font:.95em/1.45 var(--body);color:#f4e8cf}
.card .back-facts li::marker{color:#E0B361}
.card .divider{grid-column:1/-1;width:100%;height:1.1em;border:0;margin:.5em 0 .2em;background:url(img/ui/popup_divider.webp) center/100% 100% no-repeat}
.card .lvl-head{grid-column:1/-1;margin:0 0 .15em;font:700 .8em/1.3 var(--head);letter-spacing:.06em;text-transform:uppercase;color:#E0B361}
.card .lvl{grid-column:1/-1;margin:0;font:.9em/1.4 var(--body);color:#f4e8cf}
.card .lvl.more{padding-left:1.4em;color:#d2bf9c}
.card .prompt{position:relative;z-index:1;margin:.4em 0 0;text-align:center;font:600 .68em/1 var(--head);letter-spacing:.16em;text-transform:uppercase;color:rgba(224,179,97,.85)}
/* phones and tablets show two cards a row: a turned card takes the whole row so its back can be read */
@media (max-width:1000px){.cards .card.flipped{grid-column:1/-1}.cards .card.flipped .front img{max-height:56vh}}
@media (prefers-reduced-motion:reduce){.card .flip{transition:none}}