:root{color-scheme:dark;background:#081017;color:#f2eee6;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{margin:0;min-height:100vh;background:#081017;overflow-x:hidden}a{color:inherit;text-decoration:none}a:focus-visible{outline:2px solid #e9bc74;outline-offset:4px}.backdrop{position:fixed;inset:0;z-index:-1;background:linear-gradient(180deg,#071017aa,#071017f4 70%),url('assets/intro1/arrival.webp') center/cover}.topbar,footer{max-width:1380px;margin:auto;padding:24px clamp(20px,4vw,60px);display:flex;justify-content:space-between;align-items:center}.brand{font:27px Georgia,serif;letter-spacing:.08em;color:#e6bd79}.brand span{font-size:20px}.forteca,footer{font-size:10px;font-weight:700;letter-spacing:.18em;color:#c6d0cd}.forteca:hover,footer a:hover{color:#f1c987}main{max-width:1380px;margin:auto;padding:clamp(42px,7vh,95px) clamp(20px,4vw,60px) 46px}.eyebrow{font-size:10px;font-weight:700;letter-spacing:.32em;color:#d5aa6a;margin:0 0 20px}h1{font:400 clamp(48px,7.6vw,104px)/.98 Georgia,serif;letter-spacing:-.055em;margin:0;color:#f2eee5}h1 em{font-weight:400;color:#dfb674}.intro{max-width:830px;font-size:clamp(15px,1.35vw,19px);line-height:1.65;color:#d2dcda;margin:25px 0 40px}.cards{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px}.card{height:clamp(330px,37vw,520px);position:relative;display:block;overflow:hidden;border:1px solid #e6c48655;background:#122027;box-shadow:0 18px 50px #0007;transition:transform .25s,border-color .25s,box-shadow .25s}.card:hover{transform:translateY(-6px);border-color:#ecc488;box-shadow:0 24px 60px #0009}.card img,.card .shade{position:absolute;inset:0;width:100%;height:100%}.card img{object-fit:cover;object-position:65% center;transition:transform .8s}.card:hover img{transform:scale(1.055)}.card .shade{background:linear-gradient(180deg,#04101820 10%,#0410187e 42%,#041018f5 100%)}.card-body{position:absolute;inset:0;padding:clamp(22px,2.5vw,38px);display:flex;flex-direction:column;align-items:flex-start;justify-content:flex-end}.number{font-size:10px;letter-spacing:.22em;color:#dfbc84;margin-bottom:auto}.card strong{font:400 clamp(38px,3.4vw,56px)/.98 Georgia,serif;letter-spacing:-.04em;color:#f9f2e8}.summary{max-width:340px;min-height:55px;margin-top:16px;font-size:13px;line-height:1.5;color:#d6e0df}.open{margin-top:24px;padding:14px 17px;border:1px solid #d9aa6e;color:#f0d4a7;font-size:10px;font-weight:800;letter-spacing:.17em}.open span{margin-left:10px}.legacy .open{border-color:#d8c090}.tenth .open{border-color:#8bb8b3;color:#d3eeeb}.closing{font:italic 16px/1.5 Georgia,serif;color:#cdd6d2;margin:38px 0 0;text-align:center}.closing strong{font-weight:400;color:#ecc480}footer{border-top:1px solid #c6d0cd22}@media(max-width:900px){.cards{gap:10px}.card{height:390px}.card-body{padding:20px}.card strong{font-size:34px}.summary{font-size:12px}}@media(max-width:700px){main{padding-top:45px}.cards{grid-template-columns:1fr}.card{height:250px}.card img{object-position:center 45%}.card-body{padding:20px 23px}.card strong{font-size:37px}.summary{min-height:0;margin-top:8px}.open{margin-top:12px;padding:10px 13px}.closing{font-size:14px}.intro{margin-bottom:28px}.eyebrow{font-size:8px;line-height:1.6}}

/* Keep the tagline in the header and fit the full desktop page in the viewport. */
.topbar{display:grid;grid-template-columns:1fr auto 1fr;gap:16px}
.topbar .brand{justify-self:start}
.topbar .eyebrow{justify-self:center;text-align:center;margin:0;white-space:nowrap}
.topbar .forteca{justify-self:end}
@media(min-width:901px){
  html,body{height:100%;overflow-y:hidden}
  body{min-height:0;height:100dvh;display:grid;grid-template-rows:auto minmax(0,1fr) auto}
  .topbar,footer{width:100%;padding-top:12px;padding-bottom:12px}
  main{width:100%;height:100%;min-height:0;margin:0 auto;align-self:stretch;display:flex;flex-direction:column;padding-top:5px;padding-bottom:10px}
  h1{font-size:clamp(56px,6.5vw,90px)}
  .intro{margin:14px 0 20px;line-height:1.45}
  .cards{flex:1;min-height:0}
  .card{height:100%;min-height:0}
  .closing{margin:12px 0 0;font-size:14px}
}
@media(max-width:900px){
  .topbar{grid-template-columns:1fr auto;gap:10px}
  .topbar .forteca{grid-column:2;grid-row:1}
  .topbar .eyebrow{grid-column:1/-1;grid-row:2;white-space:normal}
}
@media(max-width:700px){main{padding-top:20px}.topbar{padding-bottom:10px}.topbar .eyebrow{letter-spacing:.18em}}
.saga-heading{font-size:clamp(30px,4vw,52px);line-height:1.05;letter-spacing:-.035em}
.saga-heading span,.saga-heading em{display:block;white-space:nowrap}
.saga-heading em{font-size:.7em;letter-spacing:.01em}
@media(max-width:700px){.saga-heading span,.saga-heading em{white-space:normal}.saga-heading{font-size:clamp(30px,7vw,48px)}}

.hero{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:18px;flex:none}
.hero-copy{grid-column:span 2;min-width:0}
.hero .saga-heading{font-size:clamp(27px,3.2vw,52px)}
.map-panel{position:relative;overflow:hidden;display:flex;flex-direction:column;justify-content:center;align-items:flex-start;gap:14px;min-width:0;margin:30px 0 20px;padding:24px 28px;border:1px solid #d5aa6a8c;background:radial-gradient(circle at 85% 10%,#d5aa6a26,transparent 42%),linear-gradient(145deg,#12242a,#09141b);box-shadow:inset 0 0 0 1px #09141b,0 18px 50px #0006;transition:border-color .2s,background-color .2s,transform .2s}
.map-panel:hover{border-color:#f1c987;transform:translateY(-3px)}
.map-panel:after{content:'ᚠ';position:absolute;right:20px;bottom:-28px;font:140px Georgia,serif;color:#d5aa6a13;pointer-events:none}
.map-kicker,.map-action{position:relative;z-index:1;font-size:10px;font-weight:800;letter-spacing:.2em;color:#d5aa6a}
.map-panel strong{position:relative;z-index:1;font:400 clamp(23px,2vw,32px)/1.1 Georgia,serif;color:#f2eee5}
.map-action{padding-bottom:5px;border-bottom:1px solid #d5aa6a}
@media(max-width:900px){.hero{grid-template-columns:1fr}.hero-copy{grid-column:auto}.hero .saga-heading{font-size:clamp(30px,5vw,52px)}.map-panel{min-height:150px;margin:0 0 20px}}

/* Owner-provided FEHU atlas; the panel keeps its existing grid footprint. */
.map-panel{display:block;padding:0;background:#09141b}
.map-panel:after{content:none}
.map-art{position:absolute;inset:0;width:100%;height:100%;display:block;object-fit:contain}
.map-content{position:absolute;z-index:1;right:0;bottom:0;left:0;display:flex;flex-direction:column;align-items:flex-start;gap:4px;padding:12px 18px;background:linear-gradient(0deg,#061017f5 0%,#061017d9 58%,#06101700 100%)}
.map-content .map-kicker{font-size:8px}
.map-content strong{font-size:clamp(18px,1.5vw,23px)}
.map-content .map-action{font-size:8px;padding-bottom:2px}

/* Give the atlas a taller, naturally cropped canvas beside the introduction. */
@media(min-width:901px){
  .hero{grid-template-columns:minmax(0,1.7fr) minmax(0,1fr)}
  .hero-copy{grid-column:auto}
}
.map-panel{min-height:190px;margin:0;align-self:stretch}
.map-art{object-fit:cover;object-position:center center}
.map-content{inset:0;display:flex;flex-direction:column;align-items:flex-end;justify-content:space-between;gap:0;padding:14px 16px;background:linear-gradient(90deg,transparent 40%,#06101740 100%),linear-gradient(0deg,#061017a6,transparent 34%)}
.map-content .map-kicker,.map-content .map-action{display:inline-block;padding:6px 8px;background:#07141acb;color:#f0cf95;text-shadow:0 1px 7px #000;white-space:nowrap}
.map-content .map-kicker{font-size:9px}
.map-content .map-action{font-size:9px;border:1px solid #dfbb7c9c}
.map-panel:hover .map-action{background:#e6c58b;color:#111a1b;text-shadow:none}
@media(max-width:900px){.map-panel{min-height:clamp(165px,42vw,225px);margin:0 0 20px}}

/* Card hierarchy: title at upper right, description and action together at the bottom. */
.card-body{display:grid;grid-template-columns:minmax(0,1fr) auto;grid-template-rows:auto minmax(0,1fr) auto;column-gap:12px;align-items:end;padding:clamp(20px,2vw,30px)}
.card-body .number{grid-column:1;grid-row:1;align-self:start;margin:0}
.card-body strong{position:absolute;top:clamp(20px,2vw,30px);right:clamp(20px,2vw,30px);max-width:calc(100% - 80px);text-align:right;font-size:clamp(30px,2.7vw,48px);text-shadow:0 2px 12px #000,0 0 3px #000}
.card-body .summary{grid-column:1;grid-row:3;align-self:end;min-width:0;max-width:none;min-height:0;margin:0;font-size:12px;line-height:1.4}
.card-body .open{grid-column:2;grid-row:3;align-self:end;justify-self:end;margin:0;padding:11px 12px;font-size:9px;letter-spacing:.1em;white-space:nowrap}
@media(max-width:1100px){.card-body{column-gap:8px}.card-body .summary{font-size:10px}.card-body .open{padding:9px 8px;font-size:8px;letter-spacing:.05em}.card-body strong{font-size:clamp(29px,3.5vw,42px)}}
@media(max-width:700px){.card-body strong{font-size:clamp(29px,7vw,40px)}.card-body .summary{font-size:11px}}
/* Match every desktop intro card to the atlas panel width. */
@media(min-width:901px){.topbar,main,footer{max-width:1536px}.hero{grid-template-columns:repeat(3,minmax(0,1fr))}.hero-copy{grid-column:span 2}}
/* Reserve a small gap below the map while keeping the cards within the viewport. */
@media(min-width:901px){.cards{margin-top:12px}}

/* Compact, readable feature details inside the existing cinematic cards. */
.card{--feature-accent:#d4a860}
.warfare{--feature-accent:#d6a466}
.legacy{--feature-accent:#e5c681}
.tenth{--feature-accent:#8fc7c3}
.card-body .feature-block{position:absolute;top:52%;left:clamp(20px,2vw,30px);z-index:1;display:grid;gap:5px;width:max-content;max-width:calc(100% - 60px);padding:10px 22px 10px 12px;border-left:1px solid var(--feature-accent);background:linear-gradient(90deg,#071017d9 0%,#0710179a 68%,#07101700 100%);text-align:left;text-shadow:0 1px 5px #000,0 1px 2px #000}
.card-body .feature-subtitle{display:block;margin-bottom:3px;color:var(--feature-accent);font:italic 13px/1.25 Georgia,serif;letter-spacing:.02em;white-space:nowrap}
.card-body .feature-item{display:block;color:#f1ede4;font-size:10px;font-weight:700;line-height:1.25;letter-spacing:.1em;white-space:nowrap}
.card-body .feature-item::before{content:'◆';display:inline-block;margin-right:9px;color:var(--feature-accent);font-size:7px;vertical-align:1px}
.warfare .feature-item:nth-child(2)::before,.warfare .feature-item:last-child::before{color:#bd6b5b}
.tenth .feature-item:last-child::before{color:#e5c681}
@media(min-width:701px) and (max-width:1200px){.card-body .feature-block{top:46%;gap:4px;padding:8px 10px 8px 9px;max-width:calc(100% - 36px)}.card-body .feature-subtitle{font-size:12px}.card-body .feature-item{font-size:9px;letter-spacing:.055em}.card-body .feature-item::before{margin-right:6px}}
@media(min-width:701px) and (max-width:900px){.cards{grid-template-columns:1fr}.card{height:380px}.card-body .feature-block{top:42%;gap:4px}.card-body .feature-subtitle{font-size:13px}.card-body .feature-item{font-size:10px;letter-spacing:.1em}.card-body .summary{font-size:12px}}
@media(max-width:700px){.card{height:470px}.card-body .feature-block{top:44%;gap:4px;max-width:calc(100% - 46px);padding:9px 18px 9px 10px}.card-body .feature-subtitle{font-size:12px}.card-body .feature-item{font-size:9px;letter-spacing:.07em}}

/* Give the atlas two card columns at desktop, without cropping its artwork. */
@media(min-width:901px){
  .hero{grid-template-columns:repeat(3,minmax(0,1fr))}
  .hero-copy{grid-column:auto;align-self:center}
  .hero .saga-heading{font-size:clamp(34px,3vw,46px)}
  .hero .saga-heading span{white-space:normal}
  .hero .intro{font-size:clamp(14px,1.05vw,17px);line-height:1.42;margin:14px 0 0}
  .map-panel{grid-column:span 2;align-self:center;min-height:0;aspect-ratio:1983/793;box-shadow:inset 0 0 0 1px #09141b,0 0 0 1px #dbb67655,0 0 28px #d5aa6a26,0 18px 50px #0007}
  .map-art{object-fit:contain}
  .card-body .feature-block{top:40%;gap:3px;padding-top:8px;padding-bottom:8px}
  .card-body .feature-subtitle{font-size:12px;margin-bottom:2px}
}
@media(min-width:1201px) and (max-height:880px){.card-body .feature-block{top:35%}}
@media(min-width:1201px) and (max-height:800px){
  .card-body{padding:clamp(14px,1.5vw,22px)}
  .card-body strong{top:16px;right:20px;font-size:clamp(30px,2.2vw,38px)}
  .card-body .feature-block{top:34%;left:20px;gap:1px;max-width:calc(100% - 40px);padding:4px 8px}
  .card-body .feature-subtitle{font-size:10px;margin-bottom:1px}
  .card-body .feature-item{font-size:8px;line-height:1.15;letter-spacing:.05em}
  .card-body .feature-item::before{font-size:6px;margin-right:5px}
  .card-body .summary{font-size:10px;line-height:1.2}
  .card-body .open{padding:8px 9px;font-size:8px}
}
@media(min-width:901px) and (max-width:1200px){
  .hero .saga-heading{font-size:clamp(29px,3vw,36px)}
  .hero .intro{font-size:14px;line-height:1.35;margin-top:10px}
  .card-body .feature-block{top:40%}
}

/* Gold titles, silver supporting copy, and a framed introduction beside the atlas. */
.hero-copy{position:relative;display:flex;flex-direction:column;justify-content:center;align-self:stretch;min-width:0;padding:clamp(16px,1.7vw,26px);border:1px solid #e6bd7970;background:linear-gradient(145deg,#0a161cc9,#0810178a);box-shadow:inset 0 0 0 1px #e6bd791c,0 18px 50px #0005}
.hero .saga-heading{padding-left:12px;border-left:2px solid #e6bd79;color:#e6bd79}
.hero .intro{padding:12px 0 0 14px;border-top:1px solid #e6bd7945;border-left:1px solid #aab6b480;color:#c6d0cd}
.card-body strong{color:#e6bd79}
.card-body .feature-subtitle{color:#e6bd79}
.card-body .feature-item,.card-body .summary{color:#c6d0cd}
@media(min-width:901px) and (max-width:1200px){.hero-copy{padding:10px}.hero .saga-heading{padding-left:9px}.hero .intro{font-size:12px;line-height:1.3;padding:8px 0 0 9px;margin-top:8px}}
@media(max-width:900px){.hero-copy{margin-bottom:0}.hero .intro{margin-top:14px}}

/* FEHU approved typography and content preview: Cinzel is bundled under SIL OFL 1.1. */
@font-face{font-family:FEHUCinzel;src:url("assets/fonts/Cinzel-wght.ttf") format("truetype");font-style:normal;font-weight:400 900;font-display:swap}
:root{--fehu-display:FEHUCinzel,Georgia,"Times New Roman",serif}
.saga-heading,.card strong,.feature-subtitle,.feature-item,.eyebrow,.number,.map-kicker,.open,footer,.forteca{font-family:var(--fehu-display)}
.saga-heading{display:grid;gap:.08em;line-height:1.02;letter-spacing:.035em;color:#e6bd79;text-shadow:0 2px 12px #000}
.saga-heading span{display:block;white-space:nowrap}
.hero .intro{font-family:Georgia,"Times New Roman",serif;line-height:1.48}
.hero .intro strong{font-family:var(--fehu-display);color:#e6bd79;letter-spacing:.04em;font-size:.86em}
.card-body strong{font-family:var(--fehu-display);font-size:clamp(20px,1.75vw,33px);letter-spacing:.045em;line-height:1.08;white-space:nowrap;max-width:none}
.card-body .feature-block{left:clamp(14px,1.6vw,24px);top:43%;border-left:0;padding-left:0;background:linear-gradient(90deg,#071017e8 0%,#071017a8 78%,#07101700 100%)}
.card-body .feature-subtitle{font-style:normal;letter-spacing:.06em}
.card-body .feature-item{letter-spacing:.075em}
@media(min-width:1201px) and (max-height:800px){.card-body strong{font-size:clamp(18px,1.55vw,28px)}.card-body .feature-block{top:37%}}
@media(max-width:900px){.saga-heading span{white-space:normal}.card-body strong{font-size:clamp(18px,3.5vw,28px)}}
@media(max-width:700px){.saga-heading{font-size:clamp(25px,7vw,40px)}.card-body strong{font-size:clamp(19px,5.5vw,28px);white-space:normal}.hero .intro{font-size:14px}}

/* Requested Norse display treatment and compact upper-left hierarchy. */
@font-face{font-family:FEHUNorse;src:url("assets/fonts/norse/Norse.otf") format("opentype");font-style:normal;font-weight:400;font-display:swap}
@font-face{font-family:FEHUNorse;src:url("assets/fonts/norse/Norsebold.otf") format("opentype");font-style:normal;font-weight:700;font-display:swap}
:root{--fehu-display:FEHUNorse,FEHUCinzel,Georgia,"Times New Roman",serif}
.hero .saga-heading{font-family:FEHUNorse,FEHUCinzel,Georgia,serif;font-size:clamp(23px,2.35vw,35px);line-height:1.02;letter-spacing:.045em}
.hero .saga-heading span{white-space:nowrap}
.card-body strong{font-family:FEHUNorse,FEHUCinzel,Georgia,serif;font-size:clamp(22px,1.55vw,30px);letter-spacing:.035em;line-height:1;white-space:nowrap}
.card-body .feature-block{top:38%;gap:3px}
.card-body .feature-subtitle{font-family:FEHUNorse,FEHUCinzel,Georgia,serif;font-size:11px}
@media(min-width:1201px) and (max-height:880px){.hero .saga-heading{font-size:clamp(22px,2.1vw,31px)}.card-body .feature-block{top:34%}}
@media(min-width:1201px) and (max-height:800px){.hero .saga-heading{font-size:clamp(20px,1.9vw,28px)}.card-body strong{font-size:clamp(19px,1.35vw,26px)}}
@media(max-width:900px){.hero .saga-heading{font-size:clamp(23px,4.2vw,32px)}.hero .saga-heading span{white-space:nowrap}}
@media(max-width:700px){.hero .saga-heading{font-size:clamp(22px,6.2vw,30px)}.hero .saga-heading span{white-space:normal}.card-body strong{font-size:clamp(21px,5vw,28px);white-space:normal}}

/* Final owner adjustment: compact white six-line heading with no blank line gaps. */
.hero .saga-heading{font-size:clamp(16px,1.55vw,24px);line-height:.98;letter-spacing:.055em;gap:0;color:#f2eee6;text-shadow:0 2px 10px #000}
.hero .saga-heading span{margin:0;padding:0;line-height:.98;color:#f2eee6}
@media(min-width:1201px) and (max-height:880px){.hero .saga-heading{font-size:clamp(15px,1.4vw,22px)}}
@media(max-width:900px){.hero .saga-heading{font-size:clamp(16px,3vw,22px)}}
@media(max-width:700px){.hero .saga-heading{font-size:clamp(16px,4.8vw,22px);line-height:1}}

/* Final owner adjustment: intro copy is two pixels smaller with no empty paragraph lines. */
.hero .intro{font-size:clamp(12px,calc(1.05vw - 2px),15px);line-height:1.42}
@media(min-width:901px) and (max-width:1200px){.hero .intro{font-size:12px;line-height:1.35}}
@media(max-width:900px){.hero .intro{font-size:12px;line-height:1.38}}

/* Owner card-title and display-color adjustment. */
.card-body strong{left:0;right:0;width:100%;max-width:none;text-align:center;font-family:FEHUNorse,FEHUCinzel,Georgia,serif;font-weight:700;color:#e6bd79}
.hero .saga-heading,.hero .saga-heading span{font-family:FEHUNorse,FEHUCinzel,Georgia,serif;color:#e6bd79}

/* Owner spacing adjustment: centered card titles sit ~1.5 cm lower. */
.card-body strong{top:calc(clamp(20px,2vw,30px) + 24px)}
@media(max-width:700px){.card-body strong{top:44px}}

/* Owner correction: the white card copy matches the white intro serif. */
.card-body .feature-item,.card-body .summary{font-family:Georgia,"Times New Roman",serif;font-weight:400;letter-spacing:0;color:#f2eee6}
.card .card-body .feature-item::before{color:#e6bd79}
.card-body .open{font-family:FEHUNorse,FEHUCinzel,Georgia,serif}

/* Lower the feature panels and make white copy readable over card art. */
.card-body .feature-block{transform:translateY(56px);background:linear-gradient(90deg,#040a0ff5 0%,#040a0fe0 72%,#040a0f40 100%)}
.card-body .feature-item{color:#fff;font-size:11px;font-weight:700;line-height:1.25;text-shadow:0 1px 2px #000,0 0 5px #000}
.card-body .summary{color:#fff;text-shadow:0 1px 3px #000,0 0 7px #000}
@media(min-width:1201px) and (max-height:950px){.card-body .feature-block{transform:translateY(32px)}}
@media(min-width:1201px) and (max-height:800px){.card-body .feature-block{transform:translateY(18px)}.card-body .feature-item{font-size:9px;line-height:1.2}}
@media(min-width:701px) and (max-width:1200px){.card-body .feature-block{transform:translateY(18px)}.card-body .feature-item{font-size:10px;line-height:1.2}}
@media(max-width:700px){.card-body .feature-block{transform:translateY(48px)}.card-body .feature-item{font-size:10px;line-height:1.2}}

/* Slightly larger, uniformly gold feature icons; INTRO buttons keep their size. */
.card .card-body .feature-item::before{font-size:8px;color:#e6bd79}

/* Owner adjustment: slightly larger gold subtitles; card copy matches the intro serif. */
.card-body .feature-subtitle{font-size:12px}
.card-body .feature-item,.card-body .summary{font-family:Georgia,"Times New Roman",serif;font-weight:400;color:#c6d0cd}
.card-body .feature-item{font-size:clamp(11px,.9vw,13px);line-height:1.32;letter-spacing:0}
@media(min-width:1201px) and (max-height:800px){.card-body .feature-item{font-size:10.5px;line-height:1.25}}
@media(min-width:701px) and (max-width:1200px){.card-body .feature-item{font-size:11px;line-height:1.25}}
@media(max-width:700px){.card-body .feature-item{font-size:11px;line-height:1.25}}

/* Artwork and its decorative SVG share the map's native 1983:793 geometry. */
.map-panel{aspect-ratio:1983/793;min-height:0}
.map-art{object-fit:contain}
.map-effects{position:absolute;inset:0;z-index:1;display:block;width:100%;height:100%;pointer-events:none}
.map-content{z-index:2;pointer-events:none}
/* Only the two map controls navigate; their dimensions are 150% by 200% of the former label. */
.map-panel:hover{border-color:#d5aa6a8c;transform:none}
.map-content .map-link{display:inline-flex;align-items:center;justify-content:center;width:133.25px;height:44px;padding:0;border:1px solid #dfbb7c9c;pointer-events:auto;cursor:pointer}
.map-content .map-link:last-child{align-self:flex-start}
.map-content .map-link:hover,.map-content .map-link:focus-visible{background:#e6c58b;color:#111a1b;text-shadow:none}
.map-effects .sail-light{opacity:.04;mix-blend-mode:screen;animation:sail-breathe var(--sail-time) ease-in-out var(--sail-delay) infinite alternate;animation-play-state:paused}
.map-effects.is-active .sail-light,.map-effects.is-active .coast-head,.map-effects.is-active .coast-tail{animation-play-state:running}
.map-effects .sail-blacks{--sail-peak:.17}
.map-effects .sail-ravens{--sail-peak:.14}
.map-effects .sail-dragons{--sail-peak:.16}
@keyframes sail-breathe{0%,100%{opacity:.035}50%{opacity:var(--sail-peak)}}
.map-effects .coast-head,.map-effects .coast-tail{stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:var(--segment-length) var(--track-length);stroke-dashoffset:var(--track-length);animation:coast-travel var(--travel-time) linear var(--travel-delay) infinite;animation-play-state:paused}
.map-effects .coast-head{stroke-width:2.2;opacity:.82}
.map-effects .coast-tail{stroke-width:5;opacity:.18}
@keyframes coast-travel{to{stroke-dashoffset:0}}
@media(prefers-reduced-motion:reduce){
  .map-effects .sail-light{animation:none;opacity:.055}
  .map-effects .coast-head,.map-effects .coast-tail{animation:none;opacity:0}
}

/* The story title now occupies the former number position. */
.card-body strong {
  left: clamp(20px, 2vw, 30px);
  right: auto;
  top: clamp(20px, 2vw, 30px);
  width: auto;
  max-width: calc(100% - 2 * clamp(20px, 2vw, 30px));
  text-align: left;
}
@media (min-width: 1201px) and (max-height: 800px) {
  .card-body strong { left: clamp(14px, 1.5vw, 22px); top: 16px; }
}
@media (max-width: 700px) {
  .card-body strong { left: 23px; top: 20px; max-width: calc(100% - 46px); }
}

/* Map life: all highlights follow pixels in the approved illustration. */
.map-effects .sail-blacks{--sail-peak:.33}
.map-effects .sail-ravens{--sail-peak:.24}
.map-effects .sail-dragons{--sail-peak:.27}
.map-effects .sail-rune{opacity:.38;mix-blend-mode:screen;animation:rune-breathe 6.2s ease-in-out var(--sail-delay) infinite alternate;animation-play-state:paused}
.map-effects .wake-glint{stroke-width:12;stroke-linecap:round;stroke-dasharray:46 460;stroke-dashoffset:460;opacity:.65;mix-blend-mode:screen;animation:wake-travel 8s linear var(--wake-delay) infinite;animation-play-state:paused}
.map-effects .lava-light{opacity:.16;mix-blend-mode:screen;animation:lava-breathe 5.8s ease-in-out infinite alternate;animation-play-state:paused}
.map-effects .volcano-smoke{pointer-events:none}
.map-effects .smoke-wisp{fill:#c9b5a0;opacity:.13;filter:blur(8px);animation:smoke-rise 8s ease-in-out infinite alternate;animation-play-state:paused}
.map-effects .smoke-wisp-late{opacity:.09;animation-delay:-4s}
.map-effects.is-active .sail-rune,.map-effects.is-active .wake-glint,.map-effects.is-active .lava-light,.map-effects.is-active .smoke-wisp{animation-play-state:running}
@keyframes rune-breathe{0%,100%{opacity:.27}50%{opacity:.75}}
@keyframes wake-travel{to{stroke-dashoffset:0}}
@keyframes lava-breathe{0%,100%{opacity:.14}50%{opacity:.46}}
@keyframes smoke-rise{from{transform:translate(0,3px) scale(.88);opacity:.08}to{transform:translate(9px,-8px) scale(1.18);opacity:.22}}
@media(prefers-reduced-motion:reduce){
  .map-effects .sail-rune{animation:none;opacity:.42}
  .map-effects .wake-glint,.map-effects .smoke-wisp{animation:none;opacity:0}
  .map-effects .lava-light{animation:none;opacity:.17}
}

/* Give INTRO a readable hit area while keeping its label on one line. */
.card-body .open{display:inline-flex;align-items:center;justify-content:center;min-width:52px;white-space:nowrap}
@media (min-width:1201px) and (max-height:800px){.card-body{column-gap:2px}}

/* The fleets rise with the water; crests travel at each hull, not across open sea. */
.map-effects .ship-rock{transform-box:view-box;transform-origin:var(--pivot-x) var(--pivot-y);animation:ship-rock 5.8s ease-in-out var(--ship-delay) infinite alternate;animation-play-state:paused}
.map-effects .ship-crest{stroke-width:5;stroke-linecap:round;stroke-dasharray:24 140;stroke-dashoffset:140;opacity:.72;filter:drop-shadow(0 0 3px #bce9f8);animation:crest-move 5.8s ease-in-out var(--ship-delay) infinite;animation-play-state:paused}
.map-effects.is-active .ship-rock,.map-effects.is-active .ship-crest{animation-play-state:running}
@keyframes ship-rock{0%,100%{transform:translateY(2px) rotate(-1.5deg)}50%{transform:translateY(-2px) rotate(1.5deg)}}
@keyframes crest-move{0%{stroke-dashoffset:140;opacity:.25}45%{opacity:.8}100%{stroke-dashoffset:0;opacity:.25}}

/* An illuminated shore and a traveling light make territory edges visible at panel scale. */
.map-effects .coast-glow,.map-effects .coast-edge{stroke-linejoin:round;stroke-linecap:round;mix-blend-mode:screen;animation:shore-breathe 6.8s ease-in-out infinite alternate;animation-play-state:paused}
.map-effects .coast-glow{stroke-width:12;opacity:.2;filter:blur(4px)}
.map-effects .coast-edge{stroke-width:3.2;opacity:.34}
.map-effects .coast-head{stroke-width:7;opacity:.95;filter:drop-shadow(0 0 5px currentColor)}
.map-effects .coast-tail{stroke-width:13;opacity:.31}
.map-effects.is-active .coast-glow,.map-effects.is-active .coast-edge{animation-play-state:running}
@keyframes shore-breathe{from{opacity:.22}to{opacity:.58}}
@media(prefers-reduced-motion:reduce){
  .map-effects .ship-rock,.map-effects .ship-crest,.map-effects .coast-glow,.map-effects .coast-edge{animation:none}
  .map-effects .ship-rock{transform:none}
  .map-effects .ship-crest{opacity:.3;stroke-dashoffset:0}
  .map-effects .coast-glow{opacity:.12}
  .map-effects .coast-edge{opacity:.35}
}

.landing-footer{display:grid;grid-template-columns:1fr auto 1fr;gap:12px}.landing-footer>a{justify-self:end}.landing-footer>.fehu-mini-player{justify-self:center;letter-spacing:.07em}
@media(max-width:700px){.landing-footer{grid-template-columns:1fr auto}.landing-footer>.fehu-mini-player{grid-column:1/-1;grid-row:1;justify-self:center}.landing-footer>a{grid-column:2;grid-row:2}.landing-footer>span{grid-column:1;grid-row:2}}

/* Match all three INTRO links and make the label legible at card scale. */
.card .card-body .open{min-width:72px;min-height:34px;padding:8px 12px;border-color:#d9aa6e;color:#f0d4a7;font-size:13px;letter-spacing:.12em}
@media(max-width:700px){.card .card-body .open{min-width:68px;min-height:32px;font-size:12px}}

/* One continuous lower vignette keeps copy legible without separate dark bars. */
.card .shade{background:linear-gradient(180deg,rgba(4,10,15,0) 9%,rgba(4,10,15,.18) 26%,rgba(4,10,15,.76) 48%,rgba(4,10,15,.89) 77%,rgba(4,10,15,.96) 100%)}
.card-body .feature-block{background:none}

/* Two live-map controls: lower profile, closer to opposite corners, map visible through them. */
.map-content{padding:6px}
.map-content .map-link{width:116px;height:32px;padding:0 2px;background:rgba(7,20,26,.10);border-color:#dfbb7caa;color:#f3d49e;font-size:17px;line-height:1;letter-spacing:.08em;text-align:center;text-shadow:0 1px 3px #000,0 0 8px #000}
