:root{
  --ink:#171310;
  --parchment:#ECDFC0;
  --parchment-2:#DFCDA0;
  --oxblood:#8A2E2A;
  --oxblood-deep:#5E1E1B;
  --verdigris:#4B7863;
  --gold:#C9A227;
  --charcoal:#2A2118;
  --bone:#F4ECDA;
  --shadow: rgba(0,0,0,0.55);
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth;}

body{
  margin:0;
  background:
    radial-gradient(ellipse at 20% 0%, #241d16 0%, transparent 55%),
    radial-gradient(ellipse at 80% 100%, #1c1610 0%, transparent 55%),
    var(--ink);
  color:var(--bone);
  font-family:'Crimson Pro', serif;
  font-size:17px;
  line-height:1.6;
}

a{color:inherit;}

.grain{
  position:fixed; inset:0; pointer-events:none; z-index:1; opacity:0.05; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='120'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* ---------- Header ---------- */
header.site{
  position:relative; z-index:5;
  padding:2.2rem 1.5rem 1.4rem;
  text-align:center;
  border-bottom:1px solid rgba(201,162,39,0.25);
}
.wordmark{
  font-family:'IM Fell English SC', serif;
  font-size:clamp(2rem, 5vw, 3.1rem);
  letter-spacing:0.04em;
  color:var(--bone);
  margin:0;
  text-shadow: 0 0 22px rgba(201,162,39,0.18);
  text-decoration:none;
  display:inline-block;
}
.wordmark .amp{ color:var(--gold); }
.tagline{
  font-family:'IM Fell English', serif;
  font-style:italic;
  color:var(--parchment-2);
  opacity:0.85;
  margin:0.5rem 0 0;
  font-size:1.05rem;
  letter-spacing:0.02em;
}

/* ---------- Layout shell ---------- */
.shell{
  display:grid;
  grid-template-columns: 230px 1fr;
  max-width:1180px;
  margin:0 auto;
  position:relative; z-index:5;
  gap:0;
}
@media (max-width: 860px){
  .shell{ grid-template-columns: 1fr; }
}

/* ---------- Spine / tab navigation ---------- */
nav.spine{
  padding:2rem 0.8rem 2rem 1.2rem;
  position:sticky; top:0; align-self:start;
  display:flex; flex-direction:column; gap:0.35rem;
}
@media (max-width:860px){
  nav.spine{
    position:static;
    flex-direction:row;
    overflow-x:auto;
    padding:1rem 1rem;
    gap:0.6rem;
    border-bottom:1px solid rgba(201,162,39,0.2);
  }
}
.tab{
  display:flex; align-items:center; gap:0.65rem;
  padding:0.65rem 0.9rem;
  border:1px solid transparent;
  border-radius:2px 10px 10px 2px;
  background:rgba(236,223,192,0.03);
  color:var(--parchment-2);
  text-decoration:none;
  font-family:'IM Fell English', serif;
  font-size:1.02rem;
  letter-spacing:0.01em;
  cursor:pointer;
  transition:background 0.25s ease, color 0.25s ease, border-color 0.25s ease, transform 0.2s ease;
  white-space:nowrap;
}
.tab .chp{
  font-family:'Space Mono', monospace;
  font-size:0.68rem;
  color:var(--gold);
  opacity:0.8;
  letter-spacing:0.05em;
}
.tab svg{ width:18px; height:18px; flex:none; opacity:0.85; }
.tab:hover{ background:rgba(201,162,39,0.08); color:var(--bone); transform:translateX(2px); }
@media (max-width:860px){ .tab:hover{ transform:none; } }
.tab.active{
  background:linear-gradient(90deg, rgba(138,46,42,0.22), rgba(138,46,42,0.06));
  border-color:rgba(201,162,39,0.35);
  color:var(--bone);
}
.tab.active svg{ opacity:1; color:var(--gold); }

/* ---------- Page / parchment panel ---------- */
main{
  padding:2.2rem 2rem 4rem;
  min-width:0;
}

.eyebrow{
  font-family:'Space Mono', monospace;
  font-size:0.72rem;
  letter-spacing:0.14em;
  text-transform:uppercase;
  color:var(--verdigris);
  margin:0 0 0.6rem;
}

h1.page-title{
  font-family:'IM Fell English SC', serif;
  font-size:clamp(1.8rem, 4vw, 2.6rem);
  color:var(--bone);
  margin:0 0 0.9rem;
  letter-spacing:0.01em;
}

h2.section-title{
  font-family:'IM Fell English SC', serif;
  font-size:1.4rem;
  color:var(--bone);
  margin:0 0 0.7rem;
  letter-spacing:0.01em;
}

.lede{
  max-width:62ch;
  color:var(--parchment-2);
  font-size:1.08rem;
}
.lede::first-letter{
  font-family:'IM Fell English SC', serif;
  font-size:2.6rem;
  float:left;
  line-height:0.8;
  padding:0.08em 0.12em 0 0;
  color:var(--gold);
  text-shadow:0 0 12px rgba(201,162,39,0.35);
}

/* ---------- The Parchment Page (tool card) ---------- */
.parchment{
  margin-top:1.8rem;
  background:
    radial-gradient(circle at 15% 10%, rgba(255,255,255,0.06), transparent 45%),
    linear-gradient(160deg, var(--parchment) 0%, var(--parchment-2) 100%);
  border-radius:6px;
  padding:2rem;
  position:relative;
  box-shadow: 0 24px 60px -20px var(--shadow), inset 0 0 0 1px rgba(0,0,0,0.06);
  color:var(--charcoal);
}
.parchment::before{
  content:"";
  position:absolute; inset:10px;
  border:1px solid rgba(138,46,42,0.25);
  border-radius:3px;
  pointer-events:none;
}
.parchment::after{
  content:"";
  position:absolute; top:0; left:0; right:0; height:100%;
  background-image: radial-gradient(rgba(90,60,20,0.05) 1px, transparent 1px);
  background-size:3px 3px;
  border-radius:6px;
  pointer-events:none;
  opacity:0.5;
}

.field-row{ display:flex; flex-wrap:wrap; gap:0.8rem; align-items:flex-end; position:relative; z-index:2; }
.field{ display:flex; flex-direction:column; gap:0.3rem; }
.field label{
  font-family:'Space Mono', monospace;
  font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--oxblood-deep);
}
.field select, .field input{
  font-family:'Crimson Pro', serif;
  font-size:0.98rem;
  padding:0.55rem 0.7rem;
  border-radius:4px;
  border:1px solid rgba(42,33,24,0.3);
  background:rgba(255,255,255,0.35);
  color:var(--charcoal);
  min-width:160px;
}

/* seal button */
.seal-btn{
  appearance:none; border:none; cursor:pointer;
  width:88px; height:88px; border-radius:50%;
  background:
    radial-gradient(circle at 32% 28%, #a5443f 0%, var(--oxblood) 42%, var(--oxblood-deep) 100%);
  box-shadow:
    0 8px 0 var(--oxblood-deep),
    0 14px 22px rgba(0,0,0,0.45),
    inset 0 2px 3px rgba(255,255,255,0.25),
    inset 0 -6px 10px rgba(0,0,0,0.35);
  color:var(--bone);
  font-family:'IM Fell English SC', serif;
  font-size:0.82rem;
  letter-spacing:0.03em;
  display:flex; align-items:center; justify-content:center; text-align:center;
  transition:transform 0.08s ease, box-shadow 0.08s ease;
  flex:none;
}
.seal-btn:active{
  transform:translateY(6px);
  box-shadow:
    0 2px 0 var(--oxblood-deep),
    0 4px 10px rgba(0,0,0,0.4),
    inset 0 2px 3px rgba(255,255,255,0.2),
    inset 0 -4px 8px rgba(0,0,0,0.35);
}
.seal-btn:hover{ filter:brightness(1.06); }

.results{
  margin-top:1.8rem;
  position:relative; z-index:2;
}
.divider{
  border:none; height:1px;
  background:linear-gradient(90deg, transparent, rgba(138,46,42,0.4), transparent);
  margin:1.6rem 0 1.2rem;
}
.result-list{ list-style:none; margin:0; padding:0; display:grid; gap:0.55rem; }
.result-list li{
  font-family:'Space Mono', monospace;
  font-size:1rem;
  padding:0.75rem 1rem;
  background:rgba(138,46,42,0.06);
  border-left:3px solid var(--oxblood);
  border-radius:2px;
  opacity:0; transform:translateY(4px);
  animation:ink-in 0.4s ease forwards;
}
.result-list li em{
  display:block; font-family:'Crimson Pro', serif; font-style:italic;
  font-size:0.86rem; color:#5b4a34; margin-top:0.25rem;
}
@keyframes ink-in{ to{ opacity:1; transform:translateY(0); } }
.empty-note{ color:#6b5a40; font-style:italic; font-size:0.95rem; }

/* ---------- Long-form content blocks (SEO / AdSense depth) ---------- */
.content-block{
  margin-top:2.4rem;
  max-width:70ch;
}
.content-block p{ color:var(--parchment-2); }
.content-block ul{ color:var(--parchment-2); padding-left:1.2rem; }
.content-block li{ margin-bottom:0.4rem; }

.faq{ margin-top:2.4rem; max-width:70ch; }
.faq-item{
  border-top:1px solid rgba(201,162,39,0.2);
  padding:1.1rem 0;
}
.faq-item:last-child{ border-bottom:1px solid rgba(201,162,39,0.2); }
.faq-item h3{
  font-family:'IM Fell English', serif;
  font-weight:400;
  font-size:1.12rem;
  color:var(--bone);
  margin:0 0 0.4rem;
}
.faq-item p{ margin:0; color:var(--parchment-2); }

/* ---------- Related tools ---------- */
.related{
  margin-top:2.6rem;
  padding-top:1.6rem;
  border-top:1px dashed rgba(201,162,39,0.3);
}
.related h2{
  font-family:'IM Fell English', serif;
  font-style:italic; font-weight:400;
  font-size:1.05rem;
  color:var(--parchment-2);
  margin:0 0 0.9rem;
}
.related-grid{ display:grid; grid-template-columns:repeat(auto-fit, minmax(200px,1fr)); gap:0.8rem; }
.related-card{
  display:block; text-decoration:none;
  padding:0.9rem 1rem;
  border:1px solid rgba(201,162,39,0.25);
  border-radius:4px;
  background:rgba(236,223,192,0.03);
  transition:background 0.2s ease, border-color 0.2s ease;
}
.related-card:hover{ background:rgba(201,162,39,0.08); border-color:rgba(201,162,39,0.5); }
.related-card .rc-title{ font-family:'IM Fell English SC', serif; color:var(--bone); font-size:1.05rem; }
.related-card .rc-sub{ display:block; font-size:0.82rem; color:var(--parchment-2); opacity:0.75; margin-top:0.2rem; }

/* ---------- Homepage hero + tool grid ---------- */
.hero-home{
  max-width:70ch;
  margin-bottom:2.2rem;
}
.hero-home p{ color:var(--parchment-2); font-size:1.08rem; }
.tool-grid{
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(240px, 1fr));
  gap:1rem;
  margin-top:1.6rem;
}
.tool-card{
  display:block; text-decoration:none;
  padding:1.3rem 1.4rem;
  border-radius:6px;
  background:linear-gradient(160deg, var(--parchment) 0%, var(--parchment-2) 100%);
  color:var(--charcoal);
  box-shadow: 0 16px 40px -18px var(--shadow);
  transition:transform 0.2s ease, box-shadow 0.2s ease;
}
.tool-card:hover{ transform:translateY(-3px); box-shadow:0 22px 50px -18px var(--shadow); }
.tool-card .chp{
  font-family:'Space Mono', monospace;
  font-size:0.7rem; letter-spacing:0.08em; text-transform:uppercase;
  color:var(--oxblood-deep); display:block; margin-bottom:0.3rem;
}
.tool-card h3{
  font-family:'IM Fell English SC', serif;
  font-size:1.3rem; margin:0 0 0.4rem;
}
.tool-card p{ margin:0; font-size:0.92rem; color:#4a3c2a; }

/* ---------- Footer ---------- */
footer{
  position:relative; z-index:5;
  border-top:1px solid rgba(201,162,39,0.2);
  padding:2rem 1.5rem 3rem;
  text-align:center;
  color:var(--parchment-2);
  opacity:0.7;
  font-size:0.85rem;
}
footer a{ text-decoration:underline; text-underline-offset:3px; }
footer .foot-links{ margin-top:0.6rem; display:flex; gap:1.2rem; justify-content:center; flex-wrap:wrap; }

/* focus visibility */
a:focus-visible, button:focus-visible, select:focus-visible, input:focus-visible{
  outline:2px solid var(--gold); outline-offset:2px;
}

@media (prefers-reduced-motion: reduce){
  *{ animation-duration:0.001ms !important; transition-duration:0.001ms !important; }
  html{ scroll-behavior:auto; }
}

/* ---------- Dungeon Map generator ---------- */
.map-panel{
  margin-top:1.8rem;
  background:rgba(236,223,192,0.04);
  border:1px solid rgba(201,162,39,0.25);
  border-radius:6px;
  padding:1.6rem;
}
.map-controls{
  display:flex; flex-wrap:wrap; gap:0.9rem; align-items:flex-end;
}
.map-controls .field select{
  min-width:220px;
  background:rgba(255,255,255,0.06);
  border:1px solid rgba(201,162,39,0.3);
  color:var(--bone);
  font-family:'Crimson Pro', serif;
}
.map-controls .field label{ color:var(--gold); }
.btn-secondary{
  appearance:none; cursor:pointer;
  padding:0.65rem 1.2rem;
  border-radius:4px;
  border:1px solid rgba(201,162,39,0.4);
  background:transparent;
  color:var(--bone);
  font-family:'IM Fell English', serif;
  font-size:1rem;
  transition:background 0.2s ease, border-color 0.2s ease;
}
.btn-secondary:hover{ background:rgba(201,162,39,0.1); border-color:rgba(201,162,39,0.7); }

#map-meta{
  margin-top:1.2rem;
  font-family:'Space Mono', monospace;
  font-size:0.78rem;
  color:var(--parchment-2);
  letter-spacing:0.02em;
}

.map-stage-wrap{
  margin-top:1rem;
  border-radius:8px;
  overflow:hidden;
  box-shadow:0 24px 60px -22px var(--shadow);
}
#map-stage{ display:block; width:100%; line-height:0; }
#map-stage svg, #print-map-stage svg{ width:100%; height:auto; display:block; }

.legend-grid{
  margin-top:1.4rem;
  display:grid;
  grid-template-columns:repeat(auto-fit, minmax(180px,1fr));
  gap:0.6rem 1.2rem;
}
.legend-item{
  display:flex; align-items:center; gap:0.6rem;
  font-size:0.9rem;
  color:var(--parchment-2);
}
.legend-item svg{ flex:none; }
.legend-item.hidden{ display:none; }

#print-area{ display:none; }

@media print{
  body *{ visibility:hidden; }
  #print-area, #print-area *{ visibility:visible; }
  #print-area{
    display:block;
    position:absolute; top:0; left:0; width:100%;
    background:#fff; color:#171310; padding:0.1in;
  }
  #print-area h1{
    font-family:'IM Fell English SC', serif;
    font-size:1.5rem; margin:0 0 0.2rem;
  }
  #print-area .print-meta{
    font-family:'Space Mono', monospace; font-size:0.75rem; margin-bottom:0.5rem; color:#333;
  }
  #print-area .legend-grid{ margin-top:0.6rem; }
  #print-area .legend-item{ color:#171310; font-size:0.8rem; }
  @page{ margin:0.4in; }
}

