:root{
  --bg:#071015;
  --bg2:#0d161d;
  --card:#101d24ee;
  --line:#28404a;
  --text:#e9e3d3;
  --muted:#b9b4a6;
  --red:#b22d24;
  --gold:#d9c27b;
  --green:#2c5848;
  --shadow:0 24px 60px rgba(0,0,0,.45);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  margin:0;
  font-family:Inter,system-ui,sans-serif;
  color:var(--text);
  background:
   radial-gradient(circle at top, rgba(45,77,88,.24), transparent 35%),
   linear-gradient(180deg,#071015,#0a151b 35%,#071015);
  overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
img{max-width:100%;display:block}
button{font:inherit}
.grain,.ghost-layer{position:fixed;inset:0;pointer-events:none;z-index:0}
.grain{opacity:.13;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.8' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.25'/%3E%3C/svg%3E")}
.spirit{position:absolute;width:80px;height:120px;filter:blur(1px);opacity:.18;background:radial-gradient(circle at 50% 30%,rgba(215,246,255,.95),rgba(110,180,220,.18) 44%,transparent 62%);border-radius:50% 50% 45% 45%/55% 55% 40% 40%;animation:float 18s linear infinite}
.spirit::before,.spirit::after{content:"";position:absolute;background:#0a1216;border-radius:50%}
.spirit::before{width:10px;height:14px;left:25px;top:34px;box-shadow:20px 0 0 #0a1216}
.spirit::after{width:22px;height:10px;left:29px;top:56px;border-radius:0 0 20px 20px}
.s1{left:8%;top:18%;animation-duration:24s}
.s2{left:82%;top:10%;animation-duration:27s;transform:scale(.8)}
.s3{left:70%;top:55%;animation-duration:22s;transform:scale(1.1)}
.s4{left:20%;top:62%;animation-duration:28s;transform:scale(.7)}
.s5{left:48%;top:28%;animation-duration:25s;transform:scale(.9)}
@keyframes float{0%{transform:translateY(0) translateX(0)}25%{transform:translateY(-40px) translateX(14px)}50%{transform:translateY(18px) translateX(-20px)}75%{transform:translateY(-25px) translateX(20px)}100%{transform:translateY(0) translateX(0)}}

.intro{position:fixed;inset:0;z-index:100;background:rgba(3,7,9,.88);backdrop-filter:blur(8px);display:grid;place-items:center;padding:24px}
.intro.hidden{display:none}
.intro-card,.card,.alert-bar,.floating-buy,.modal-card{box-shadow:var(--shadow)}
.intro-card,.card{background:var(--card);border:1px solid rgba(217,194,123,.22);border-radius:24px}
.intro-card{max-width:700px;padding:34px;text-align:center}
.eyebrow,.panel-label{font-size:.8rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold);margin:0 0 10px}
.intro h1,.hero h1,.section-heading h2,.brand-name{font-family:Cinzel,serif}
.intro h1,.hero h1{font-size:clamp(2.4rem,5vw,5rem);margin:.1em 0 .25em}
.hero h1 span{color:var(--gold)}
.intro p,.lede,.section-heading p,.hero-panel p,.alert-bar{color:var(--muted)}
.row{display:flex}.wrap{flex-wrap:wrap}.center{justify-content:center}.gap-sm{gap:12px}
.btn,.chip,.menu-btn,.pin,.filter,.close{border:none;cursor:pointer}
.btn{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;padding:13px 18px;font-weight:700;transition:.25s ease;min-height:46px}
.btn:hover{transform:translateY(-2px)}
.btn-primary{background:var(--gold);color:#111}
.btn-secondary{background:transparent;color:var(--text);border:1px solid var(--line)}
.btn-blood{background:linear-gradient(180deg,#d34b3a,#8d1a15);color:#fff}
.btn-ghost{background:#122028;color:var(--text);border:1px solid #32454f}
.floating-buy{position:fixed;right:18px;bottom:18px;z-index:40;background:linear-gradient(180deg,#c73f31,#8c1b15);padding:14px 18px;border-radius:999px;font-weight:800;border:1px solid rgba(255,255,255,.18)}

.site-header{position:sticky;top:0;z-index:50;display:flex;align-items:center;gap:20px;justify-content:space-between;padding:16px 22px;background:rgba(7,16,21,.78);backdrop-filter:blur(10px);border-bottom:1px solid rgba(217,194,123,.12)}
.brand{display:flex;flex-direction:column}
.brand-kicker{font-size:.72rem;letter-spacing:.18em;text-transform:uppercase;color:var(--gold)}
.brand-name{font-size:1.7rem;font-weight:800}
.nav{display:flex;gap:16px;flex-wrap:wrap;justify-content:center}
.nav a{color:var(--muted)}
.nav a:hover{color:var(--text)}
.header-actions{display:flex;align-items:center;gap:10px}
.chip,.menu-btn{background:#122028;color:var(--text);border:1px solid var(--line);border-radius:999px;padding:10px 14px}
.menu-btn{display:none}

main{position:relative;z-index:1}
.section{padding:76px min(5vw,56px)}
.alt{background:linear-gradient(180deg,rgba(16,29,36,.24),rgba(16,29,36,.48))}
.hero{display:grid;grid-template-columns:1.25fr .85fr;gap:28px;align-items:center;min-height:82vh;padding-top:48px}
.hero-copy{max-width:760px}
.hero-panel{padding:24px}
.stack-3{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.stack-3 img{border-radius:16px;aspect-ratio:2/3;object-fit:cover;border:1px solid rgba(255,255,255,.08)}
.badge-row{display:flex;gap:10px;flex-wrap:wrap;margin-top:22px}
.badge-row span,.tags span,.path-card .path-tags span,.path-books span,.meta-list span{background:#13222a;border:1px solid #2a434d;color:#d9d3c6;border-radius:999px;padding:7px 10px;font-size:.82rem}
.alert-bar{margin:0 min(5vw,56px);background:#112028;border:1px solid rgba(217,194,123,.2);padding:14px 16px;border-radius:16px;display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.section-heading{max-width:760px;margin-bottom:28px}
.section-heading h2{font-size:clamp(1.8rem,4vw,3rem);margin:.1em 0 .25em}

.paths{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.path-card,.book-card,.timeline-card,.gazette-item,.family-card,.character-card,.file-card{padding:18px}
.path-card h3,.book-card h3,.timeline-card h3,.family-card h3,.character-card h3,.gazette-main h3{font-family:Cinzel,serif;margin:.2em 0 .35em}
.path-books,.path-tags,.meta-list,.tags{display:flex;gap:8px;flex-wrap:wrap;margin-top:14px}

.map-wrap{display:grid;grid-template-columns:1.1fr .9fr;gap:22px}
.map-card{padding:18px;background:linear-gradient(180deg,rgba(213,188,126,.08),rgba(94,74,44,.08)),var(--card)}
.map-header{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:var(--gold);font-family:Cinzel,serif;margin-bottom:12px}
.map-switch{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px}
.map-mode-btn{background:#132028;color:var(--muted);border:1px solid rgba(217,194,123,.18);border-radius:999px;padding:10px 14px;font-weight:700}
.map-mode-btn.active,.map-mode-btn:hover{background:var(--gold);color:#161109;border-color:transparent}
.town-map{position:relative;min-height:740px;border-radius:22px;border:1px solid rgba(102,76,43,.55);overflow:hidden;background:
 linear-gradient(180deg,rgba(197,181,138,.95),rgba(145,126,92,.93));
 transition:background .35s ease, filter .35s ease, box-shadow .35s ease;
}
.town-map.brochure{background:linear-gradient(180deg,rgba(210,194,156,.97),rgba(174,155,117,.96));box-shadow:inset 0 0 0 6px rgba(88,61,34,.12)}
.map-bg{position:absolute;inset:0;background:
 radial-gradient(circle at 35% 28%,rgba(34,76,53,.18),transparent 18%),
 radial-gradient(circle at 77% 70%,rgba(34,76,53,.18),transparent 19%),
 linear-gradient(transparent 49%,rgba(98,75,48,.16) 50%,transparent 51%),
 linear-gradient(90deg,transparent 49%,rgba(98,75,48,.12) 50%,transparent 51%);
 background-size:auto,auto,100% 170px,170px 100%;opacity:.8}
.town-map::before,.town-map::after{content:"";position:absolute;inset:0;pointer-events:none}
.town-map::before{background:linear-gradient(90deg,transparent 46%,rgba(75,52,30,.18) 50%,transparent 54%),linear-gradient(180deg,transparent 48%,rgba(75,52,30,.16) 50%,transparent 52%);mix-blend-mode:multiply;opacity:.55}
.town-map::after{background:radial-gradient(circle at center,transparent 55%,rgba(74,52,31,.22) 100%)}
.water{position:absolute;background:#7e969f;border:2px solid rgba(52,67,72,.45);box-shadow:inset 0 0 0 12px rgba(255,255,255,.05)}
.harbor{left:-4%;bottom:4%;width:33%;height:29%;border-radius:44% 56% 58% 42%/45% 40% 60% 55%}
.lake{right:6%;top:26%;width:24%;height:18%;border-radius:58% 42% 45% 55%/52% 48% 52% 48%}
.forest{position:absolute;background:repeating-linear-gradient(90deg,rgba(51,79,57,.72),rgba(51,79,57,.72) 5px,rgba(26,55,39,.82) 5px,rgba(26,55,39,.82) 9px);mask-image:linear-gradient(180deg,transparent,black 20%,black);opacity:.36}
.forest.north{left:0;top:0;width:100%;height:22%}
.forest.east{right:0;top:0;width:20%;height:100%;opacity:.22}
.road{position:absolute;background:#665339;transform-origin:left center;box-shadow:0 0 0 2px rgba(245,224,174,.16)}
.road-1{left:12%;top:22%;width:42%;height:7px;transform:rotate(18deg)}
.road-2{left:18%;top:52%;width:58%;height:8px;transform:rotate(-10deg)}
.road-3{left:49%;top:32%;width:26%;height:7px;transform:rotate(54deg)}
.road-4{left:30%;top:69%;width:48%;height:7px;transform:rotate(8deg)}
.district-label,.route-label{position:absolute;font-family:Cinzel,serif;color:#43301d;text-shadow:0 1px 0 rgba(255,255,255,.35)}
.district-label{font-size:1rem;opacity:.86}
.route-label{font-size:.85rem;opacity:.74}
.d1{left:14%;top:12%}.d2{left:39%;top:24%}.d3{left:38%;top:51%}.d4{right:10%;top:21%}.d5{left:12%;top:80%}
.r1{left:14%;top:30%}.r2{left:8%;top:60%}.r3{right:10%;top:42%;transform:rotate(52deg)}.r4{left:40%;top:73%}
.street-label{position:absolute;font-size:.72rem;letter-spacing:.05em;text-transform:uppercase;color:rgba(54,35,19,.88);font-weight:800;text-shadow:0 1px 0 rgba(255,255,255,.35);pointer-events:none}
.s1{left:18%;top:18%;transform:rotate(-8deg)}
.s2{left:38%;top:18%;transform:rotate(10deg)}
.s3{left:9%;top:48%;transform:rotate(-11deg)}
.s4{left:70%;top:23%;transform:rotate(54deg)}
.s5{left:24%;top:59%;transform:rotate(8deg)}
.s6{left:46%;top:42%;transform:rotate(-6deg)}
.s7{left:72%;top:67%;transform:rotate(2deg)}
.s8{left:58%;top:58%;transform:rotate(-15deg)}
.s9{left:50%;top:80%;transform:rotate(7deg)}
.s10{left:76%;top:79%;transform:rotate(0deg)}
.town-map.brochure .map-bg{opacity:.55;filter:saturate(.85)}
.town-map.brochure .district-label{font-size:1.08rem;color:#54351b;background:rgba(247,234,192,.4);padding:4px 8px;border-radius:999px;border:1px dashed rgba(84,53,27,.35)}
.town-map.brochure .route-label,.town-map.brochure .street-label{color:#4a2e19;text-shadow:none}
.town-map.brochure .pin .icon{background:#fff8dd;border-style:dashed}
.town-map.brochure .water{background:#98b0ba}
.town-map.brochure .map-legend{background:rgba(255,248,221,.9)}
.map-legend{position:absolute;left:18px;bottom:18px;background:rgba(248,236,200,.78);color:#332414;border:1px solid rgba(80,54,28,.38);padding:10px 12px;border-radius:14px;display:grid;gap:4px;font-size:.82rem}
.pin{position:absolute;display:flex;flex-direction:column;align-items:center;gap:4px;padding:0;background:none;color:#24180f;text-align:center;max-width:120px}
.pin .icon{display:grid;place-items:center;width:42px;height:42px;border-radius:50%;background:rgba(255,248,228,.9);border:2px solid rgba(71,53,32,.44);font-size:1.1rem;box-shadow:0 8px 14px rgba(0,0,0,.14)}
.pin span:last-child{font-size:.8rem;font-weight:700;text-shadow:0 1px 0 rgba(255,255,255,.5)}
.pin.active .icon,.pin:hover .icon{background:#fff2c7;transform:translateY(-2px)}
.manor{left:12%;top:12%}.school{left:43%;top:26%}.camp{left:74%;top:8%}.resort{left:19%;top:56%}.pulse{left:48%;top:49%}.lakepin{left:77%;top:28%}.redwood{left:10%;top:78%}.bank{left:30%;top:66%}.stage{left:54%;top:71%}.maple{left:80%;top:70%}
.map-panel{padding:22px;align-self:start;position:sticky;top:96px}
.map-panel h3{font-family:Cinzel,serif;font-size:1.8rem;margin:.15em 0}
.map-panel .meta-list{margin-bottom:16px}

.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:20px}
.filter{background:#122028;color:var(--muted);border:1px solid var(--line);padding:10px 14px;border-radius:999px}
.filter.active,.filter:hover{background:var(--gold);color:#17120c;border-color:transparent}
.book-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:18px}
.book-card{background:var(--card);border:1px solid rgba(217,194,123,.16);border-radius:22px;overflow:hidden;cursor:pointer;transition:.25s ease;display:flex;flex-direction:column}
.book-card:hover{transform:translateY(-6px);box-shadow:var(--shadow)}
.book-card img{aspect-ratio:2/3;object-fit:cover;width:100%}
.book-card .body{padding:16px}
.book-card h3{margin:0 0 8px;font-size:1.25rem}
.book-card p{margin:0;color:var(--muted)}

.timeline{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.timeline-card{background:var(--card);border:1px solid rgba(217,194,123,.16);border-radius:18px}
.timeline-card .era{color:var(--gold);font-family:Cinzel,serif;font-size:1.1rem;margin-bottom:8px}

.gazette-wrap{padding:20px;display:grid;grid-template-columns:1fr .9fr;gap:18px}
.gazette-main,.gazette-item{background:rgba(8,14,18,.55);border:1px solid rgba(217,194,123,.14);border-radius:18px;padding:18px}
.gazette-item{cursor:pointer}.gazette-item:hover{border-color:rgba(217,194,123,.35)}
.gazette-list{display:grid;gap:12px}
.gazette-item strong{display:block;margin:4px 0 6px}
.gazette-item p{margin:0;color:var(--muted)}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:18px}
#grimmsGrid,#charactersGrid{padding:18px;display:grid;gap:14px}
.family-card,.character-card,.file-card{background:rgba(8,14,18,.55);border:1px solid rgba(217,194,123,.14);border-radius:18px}

.gallery{display:grid;grid-template-columns:repeat(5,1fr);gap:14px}
.gallery figure{margin:0;border-radius:18px;overflow:hidden;border:1px solid rgba(217,194,123,.12);background:var(--card)}
.gallery img{width:100%;height:100%;object-fit:cover;aspect-ratio:2/3;transition:.25s ease}
.gallery img:hover{transform:scale(1.03)}
.author{display:grid;grid-template-columns:340px 1fr;gap:24px;padding:22px}
.author img{border-radius:24px;aspect-ratio:3/4;object-fit:cover;border:1px solid rgba(217,194,123,.18)}
.contact{padding:22px;display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.contact h3{font-family:Cinzel,serif;margin:.2em 0 .3em}
.contact a{color:var(--gold)}

.modal{position:fixed;inset:0;z-index:110;display:grid;place-items:center;padding:24px}
.modal.hidden{display:none}
.backdrop{position:absolute;inset:0;background:rgba(1,4,6,.78);backdrop-filter:blur(8px)}
.modal-card{position:relative;z-index:1;width:min(100%,960px);max-height:88vh;overflow:auto;background:#0d171d;border:1px solid rgba(217,194,123,.22);border-radius:26px;padding:24px}
.close{position:sticky;top:0;float:right;background:#16242c;color:#fff;border-radius:50%;width:42px;height:42px;font-size:1.6rem}
.modal-layout{display:grid;grid-template-columns:320px 1fr;gap:24px;clear:both}
.modal-layout img{border-radius:18px;border:1px solid rgba(255,255,255,.08)}
.modal-copy h2{font-family:Cinzel,serif;font-size:2rem;margin:.1em 0 .2em}
.modal-copy p{color:var(--muted)}

small{color:var(--muted)}

@media (max-width: 1100px){
  .paths,.book-grid,.timeline,.gallery{grid-template-columns:repeat(3,1fr)}
  .hero,.map-wrap,.gazette-wrap,.two-col,.author{grid-template-columns:1fr}
  .author{max-width:840px}
}
@media (max-width: 820px){
  .menu-btn{display:block}
  .nav{position:absolute;left:14px;right:14px;top:74px;display:none;flex-direction:column;align-items:flex-start;background:#0f1b22;border:1px solid rgba(217,194,123,.16);border-radius:18px;padding:16px}
  .nav.open{display:flex}
  .header-actions{margin-left:auto}
  .paths,.book-grid,.timeline,.gallery,.contact{grid-template-columns:repeat(2,1fr)}
  .town-map{min-height:620px}
  .modal-layout{grid-template-columns:1fr}
}
@media (max-width: 560px){
  .section{padding:62px 16px}
  .site-header{padding:14px 16px}
  .brand-name{font-size:1.35rem}
  .alert-bar{margin:0 16px}
  .paths,.book-grid,.timeline,.gallery,.contact{grid-template-columns:1fr}
  .stack-3{grid-template-columns:repeat(3,1fr)}
  .town-map{min-height:700px}
  .pin{max-width:90px}
  .pin .icon{width:36px;height:36px}
  .district-label,.route-label,.street-label{font-size:.74rem}
  .floating-buy{right:12px;bottom:12px;padding:12px 14px;font-size:.92rem}
}


.map-panel img.place-preview{width:100%;border-radius:18px;border:1px solid rgba(217,194,123,.18);margin:0 0 16px;aspect-ratio:3/2;object-fit:cover;box-shadow:0 18px 35px rgba(0,0,0,.28)}
.map-panel h4{font-family:Cinzel,serif;margin:1rem 0 .45rem;color:var(--text)}
.harborpin{left:20%;top:72%}.devourpin{left:58%;top:56%}.fairpin{left:59%;top:78%}.parkpin{left:39%;top:83%}.skiresortpin{left:90%;top:46%}.universitypin{left:82%;top:58%}.roadspin{left:73%;top:86%}.industrialpin{left:36%;top:12%}
@media (max-width: 560px){
  .harborpin{left:16%;top:74%}.devourpin{left:58%;top:56%}.fairpin{left:58%;top:79%}.parkpin{left:39%;top:84%}.skiresortpin{left:89%;top:48%}.universitypin{left:80%;top:60%}.roadspin{left:71%;top:87%}.industrialpin{left:34%;top:14%}
  .flame{transform:scale(.85)}
}

.map-switch.secondary{margin-top:10px}
.map-ui-btn{background:#132029;color:var(--muted);border:1px solid var(--line);padding:10px 14px;border-radius:999px;font-weight:700}
.map-ui-btn.active,.map-ui-btn:hover{background:var(--gold);color:#1b130d;border-color:transparent}
.town-map{overflow:hidden;transition:filter .35s ease, background .35s ease}
.town-map::after{content:'';position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 18%, rgba(255,232,176,.08), transparent 34%), linear-gradient(180deg, rgba(0,0,0,.04), rgba(0,0,0,.16));mix-blend-mode:multiply}
.town-map.day-mode{filter:saturate(1.05) brightness(1.08)}
.town-map.day-mode .map-bg{opacity:.95}
.town-map.day-mode .district-label,.town-map.day-mode .route-label,.town-map.day-mode .street-label{color:#5d432a}
.town-map.day-mode .pin .icon{background:rgba(255,250,232,.97)}
.town-map.day-mode .flame{opacity:.58}
.fog-bank{position:absolute;inset:auto;width:52%;height:18%;background:radial-gradient(circle at 50% 50%, rgba(228,235,244,.55), rgba(228,235,244,.18) 48%, transparent 70%);filter:blur(18px);opacity:0;pointer-events:none;transition:opacity .3s ease}
.fog-on .fog-bank{opacity:.68;animation:fogDrift 18s linear infinite}
.fog-1{left:-10%;top:10%;animation-delay:0s}
.fog-2{right:-12%;top:45%;animation-delay:-6s}
.fog-3{left:20%;bottom:6%;width:60%;animation-delay:-11s}
@keyframes fogDrift{0%{transform:translateX(0) translateY(0)}50%{transform:translateX(50px) translateY(-8px)}100%{transform:translateX(0) translateY(0)}}
.sigil{position:absolute;z-index:2;width:34px;height:34px;border-radius:50%;display:grid;place-items:center;background:rgba(13,18,24,.64);color:#d8b15a;border:1px solid rgba(216,177,90,.45);box-shadow:0 0 12px rgba(216,177,90,.18);font-size:1.1rem}
.sigil:hover,.sigil.awakened{transform:scale(1.08);box-shadow:0 0 24px rgba(255,90,90,.52), 0 0 16px rgba(216,177,90,.48);color:#ffb6b6}
.sigil-1{left:20%;top:22%}.sigil-2{left:70%;top:53%}.sigil-3{left:61%;top:85%}
.map-secret-note{color:#d9c27b;opacity:.9}
.academypin{left:26%;top:20%}.cemeterypin{left:88%;top:82%}.hollowpin{left:86%;top:37%}.orchardpin{left:91%;top:18%}.burritopin{left:25%;top:84%}.ruingrovepin{left:67%;top:66%}
@media (max-width:560px){
  .academypin{left:23%;top:22%}.cemeterypin{left:86%;top:83%}.hollowpin{left:84%;top:39%}.orchardpin{left:88%;top:20%}.burritopin{left:24%;top:85%}.ruingrovepin{left:66%;top:68%}
  .sigil{width:28px;height:28px;font-size:.92rem}
}

.nurserypin{left:71%;top:13%}
@media (max-width:560px){.nurserypin{left:69%;top:15%}}


/* ==== Map overhaul: 3D model + brochure, no flames ==== */
.map-card{overflow:hidden}
.town-map{position:relative;min-height:760px;border-radius:22px;isolation:isolate;background:#10171c;overflow:hidden}
.town-map .map-bg{position:absolute;inset:0;background-size:cover;background-position:center;opacity:.98;transition:filter .35s ease, opacity .35s ease}
.town-map.model3d .map-bg{background-image:url('assets/map/isometric-town.svg')}
.town-map.brochure .map-bg{background-image:url('assets/map/tourist-brochure.svg')}
.town-map.brochure .pin .icon{background:rgba(255,248,229,.92)}
.town-map::before{content:'';position:absolute;inset:0;background:linear-gradient(180deg, rgba(0,0,0,.10), rgba(0,0,0,.26));pointer-events:none;z-index:0}
.town-map.day-mode .map-bg{filter:saturate(1.06) brightness(1.13)}
.town-map.night-mode .map-bg{filter:saturate(.95) brightness(.82)}
.town-map.blood-moon::before{background:linear-gradient(180deg, rgba(77,0,0,.16), rgba(35,0,0,.28))}
.moon-orb{position:absolute;right:10%;top:8%;width:130px;height:130px;border-radius:50%;background:radial-gradient(circle at 40% 35%, rgba(250,242,203,.95), rgba(214,191,124,.8) 55%, rgba(214,191,124,.0) 72%);opacity:.28;filter:blur(1px);box-shadow:0 0 24px rgba(241,223,155,.16);z-index:0;transition:.35s ease}
.blood-moon .moon-orb{background:radial-gradient(circle at 40% 35%, rgba(255,157,128,.98), rgba(186,28,28,.82) 55%, rgba(186,28,28,0) 74%);opacity:.72;box-shadow:0 0 40px rgba(170,18,18,.4)}
.town-map .pin,.town-map .sigil,.town-map .route-label,.town-map .street-label,.town-map .district-label,.town-map .map-legend{z-index:2}
.pin{position:absolute;display:flex;flex-direction:column;align-items:center;gap:4px;background:none;border:none;padding:0;max-width:96px;color:#23170f}
.pin .icon{display:grid;place-items:center;width:38px;height:38px;border-radius:12px;background:rgba(255,252,240,.96);border:1px solid rgba(87,67,43,.48);box-shadow:0 8px 14px rgba(0,0,0,.18), inset 0 1px 0 rgba(255,255,255,.55);font-size:1rem;transition:.2s ease}
.pin span:last-child{font-size:.74rem;line-height:1.05;font-weight:800;text-shadow:0 1px 0 rgba(255,255,255,.55)}
.pin:hover .icon,.pin.active .icon{transform:translateY(-2px) scale(1.04);background:#fff4d0;box-shadow:0 14px 20px rgba(0,0,0,.22), 0 0 0 2px rgba(255,221,132,.2)}
.map-panel{padding:22px;align-self:start;position:sticky;top:96px}
.map-panel .meta-list span{background:#18242b}
.map-panel img.place-preview{width:100%;aspect-ratio:16/10;object-fit:cover;border-radius:18px;border:1px solid rgba(217,194,123,.18);margin-bottom:14px}
.location-ambience{display:inline-flex;align-items:center;gap:8px;margin:.4rem 0 0;color:#e4d2a1;background:rgba(20,29,34,.75);padding:8px 12px;border-radius:999px;border:1px solid rgba(217,194,123,.15);font-size:.92rem}
.crow-layer{position:absolute;inset:0;pointer-events:none;z-index:1;opacity:.8}
.crow{position:absolute;width:28px;height:16px;opacity:.0;filter:drop-shadow(0 4px 6px rgba(0,0,0,.34))}
.crow::before,.crow::after{content:'';position:absolute;top:4px;width:14px;height:8px;border:3px solid #0f1114;border-color:#0f1114 transparent transparent transparent;border-radius:50% 50% 0 0}
.crow::before{left:0;transform:rotate(-14deg)}
.crow::after{right:0;transform:scaleX(-1) rotate(-14deg)}
.crows-on .crow{animation:flyAcross 18s linear infinite}
.crow-1{top:18%;left:-8%;animation-delay:0s}
.crow-2{top:30%;left:-12%;animation-delay:4.5s;transform:scale(.8)}
.crow-3{top:12%;left:-14%;animation-delay:9s;transform:scale(1.15)}
.crow-4{top:40%;left:-10%;animation-delay:13s;transform:scale(.72)}
@keyframes flyAcross{
  0%{transform:translate(0,0) scale(.85);opacity:0}
  8%{opacity:.82}
  50%{transform:translate(760px,-50px) scale(1.05)}
  85%{opacity:.82}
  100%{transform:translate(1320px,30px) scale(.92);opacity:0}
}
.fog-bank{position:absolute;width:54%;height:18%;background:radial-gradient(circle at 50% 50%, rgba(230,235,243,.58), rgba(230,235,243,.14) 48%, transparent 72%);filter:blur(18px);opacity:0;pointer-events:none;transition:opacity .3s ease;z-index:1}
.fog-on .fog-bank{opacity:.75;animation:fogDrift 18s linear infinite}
@keyframes fogDrift{0%{transform:translateX(0) translateY(0)}50%{transform:translateX(46px) translateY(-10px)}100%{transform:translateX(0) translateY(0)}}
.fog-1{left:-8%;top:14%}.fog-2{right:-12%;top:44%}.fog-3{left:18%;bottom:8%;width:60%}
.sigils-off .sigil,.crows-off .crow{display:none}
.sigil{position:absolute;z-index:2;width:32px;height:32px;border-radius:50%;display:grid;place-items:center;background:rgba(14,20,26,.72);color:#d9b15a;border:1px solid rgba(216,177,90,.45);box-shadow:0 0 12px rgba(216,177,90,.18);font-size:1rem}
.sigil:hover,.sigil.awakened{transform:scale(1.08);box-shadow:0 0 24px rgba(255,90,90,.52), 0 0 16px rgba(216,177,90,.48);color:#ffb6b6}
.route-label,.street-label,.district-label{position:absolute;color:#e8dabc;text-shadow:0 1px 0 rgba(0,0,0,.45);font-weight:800;letter-spacing:.02em}
.district-label{font-family:Cinzel,serif;font-size:1.1rem;opacity:.82}
.route-label{font-size:.82rem;color:#fff4ce}
.street-label{font-size:.76rem;color:#dbc999;opacity:.82}
.map-legend{position:absolute;left:18px;bottom:18px;background:rgba(248,236,200,.84);color:#332414;border:1px solid rgba(80,54,28,.38);padding:10px 12px;border-radius:14px;display:grid;gap:4px;font-size:.82rem}
.map-secret-note{color:#d9c27b}
.town-map .pin span:last-child{background:rgba(250,240,214,.52);padding:3px 6px;border-radius:999px}
.blood-moon .pin .icon{box-shadow:0 10px 18px rgba(0,0,0,.24), 0 0 0 2px rgba(180,28,28,.12)}
/* updated pin positions */
.manor{left:12%;top:17%}.gatepin{left:18%;top:28%}.academypin{left:27%;top:22%}.woods{left:35%;top:18%}
.school{left:43%;top:33%}.auditoriumpin{left:49%;top:39%}.nursepin{left:54%;top:29%}.camp{left:67%;top:14%}.orchardpin{left:83%;top:12%}
.pulse{left:66%;top:43%}.devourpin{left:59%;top:52%}.squarepin{left:47%;top:51%}.bank{left:35%;top:58%}
.fairpin{left:54%;top:68%}.parkpin{left:45%;top:78%}.stage{left:61%;top:72%}.burritopin{left:30%;top:80%}
.harborpin{left:18%;top:74%}.cliffspin{left:16%;top:61%}.resort{left:20%;top:52%}.skiresortpin{left:88%;top:46%}
.hollowpin{left:84%;top:31%}.lakepin{left:77%;top:39%}.bridgepin{left:72%;top:59%}.universitypin{left:82%;top:59%}
.roadspin{left:72%;top:84%}.maple{left:77%;top:69%}.nurserypin{left:69%;top:17%}.ruingrovepin{left:64%;top:66%}
.cemeterypin{left:88%;top:80%}.chapelpin{left:78%;top:86%}.industrialpin{left:20%;top:40%}.redwood{left:10%;top:74%}
.sigil-1{left:22%;top:23%}.sigil-2{left:70%;top:53%}.sigil-3{left:61%;top:86%}
.d1{left:13%;top:9%}.d2{left:39%;top:18%}.d3{left:58%;top:22%}.d4{left:78%;top:24%}.d5{left:6%;top:61%}
.r1{left:21%;top:46%}.r2{left:22%;top:66%}.r3{left:73%;top:49%}.r4{left:56%;top:56%}
.s1{left:20%;top:31%}.s2{left:30%;top:27%}.s3{left:10%;top:67%}.s4{left:82%;top:35%}.s5{left:39%;top:63%}.s6{left:63%;top:48%}
.s7{left:84%;top:48%}.s8{left:58%;top:56%}.s9{left:42%;top:82%}.s10{left:72%;top:18%}.s11{left:81%;top:64%}.s12{left:69%;top:22%}
@media (max-width:1100px){.town-map{min-height:680px}}
@media (max-width:820px){.town-map{min-height:700px}}
@media (max-width:560px){
  .town-map{min-height:860px}
  .pin{max-width:74px}
  .pin .icon{width:34px;height:34px;border-radius:11px}
  .pin span:last-child{font-size:.66rem;padding:2px 5px}
  .district-label{font-size:.86rem}.route-label,.street-label{font-size:.68rem}
  .manor{left:8%;top:15%}.gatepin{left:17%;top:25%}.academypin{left:28%;top:20%}.woods{left:39%;top:16%}
  .school{left:40%;top:31%}.auditoriumpin{left:48%;top:37%}.nursepin{left:56%;top:26%}.camp{left:69%;top:12%}.orchardpin{left:85%;top:10%}
  .pulse{left:66%;top:41%}.devourpin{left:58%;top:49%}.squarepin{left:48%;top:47%}.bank{left:35%;top:56%}
  .fairpin{left:56%;top:66%}.parkpin{left:46%;top:76%}.stage{left:62%;top:70%}.burritopin{left:30%;top:79%}
  .harborpin{left:15%;top:73%}.cliffspin{left:14%;top:59%}.resort{left:18%;top:50%}.skiresortpin{left:90%;top:44%}
  .hollowpin{left:86%;top:28%}.lakepin{left:79%;top:36%}.bridgepin{left:73%;top:57%}.universitypin{left:84%;top:57%}
  .roadspin{left:73%;top:82%}.maple{left:79%;top:67%}.nurserypin{left:70%;top:14%}.ruingrovepin{left:65%;top:64%}
  .cemeterypin{left:90%;top:78%}.chapelpin{left:80%;top:84%}.industrialpin{left:17%;top:38%}.redwood{left:8%;top:73%}
}



.syn-teaser{margin-top:1rem;padding:1.1rem}
.syn-wrap{max-width:1100px;margin:0 auto;padding:2rem 1rem 5rem}
.syn-hero{display:grid;grid-template-columns:1fr 1fr;gap:1.5rem;align-items:center;margin-top:2rem}
.syn-cover{border-radius:24px;overflow:hidden;border:1px solid rgba(255,255,255,.1);box-shadow:0 20px 50px rgba(0,0,0,.45)}
.syn-cover img{width:100%;height:auto;display:block}
.syn-panel{padding:1.5rem}
.syn-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1rem;margin-top:1.25rem}
.syn-track{padding:1rem}
.apple-frame{width:100%;min-height:450px;border:0;border-radius:18px;overflow:hidden;background:#111}
@media (max-width:900px){
  .syn-hero{grid-template-columns:1fr}
  .syn-grid{grid-template-columns:1fr}
}


.media-wrap .container{width:min(1200px,calc(100% - 2rem));margin:0 auto}
.media-hero{align-items:stretch}
.media-video,.media-copy{padding:1.25rem}
.media-video video{width:100%;border-radius:18px;display:block;background:#000}
.media-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:1rem}
.media-thumb{padding:.5rem;background:linear-gradient(180deg,rgba(18,23,34,.96),rgba(11,16,24,.92));border:1px solid rgba(255,255,255,.08);cursor:pointer}
.media-thumb img{width:100%;height:250px;object-fit:cover;border-radius:14px}
.lightbox{position:fixed;inset:0;background:rgba(0,0,0,.88);display:none;align-items:center;justify-content:center;flex-direction:column;z-index:100;padding:2rem}
.lightbox.open{display:flex}
.lightbox img{max-width:min(1000px,92vw);max-height:78vh;border-radius:18px;box-shadow:0 20px 60px rgba(0,0,0,.5)}
.lightbox p{margin-top:1rem;color:#fff;text-transform:capitalize}
.lightbox-close{position:absolute;top:1rem;right:1rem;background:#000;color:#fff;border:1px solid rgba(255,255,255,.3);width:48px;height:48px;border-radius:50%;font-size:28px;cursor:pointer}
@media (max-width:900px){
  .media-hero{grid-template-columns:1fr}
  .media-thumb img{height:220px}
}
