/* ============================================================
   SUBJUGATE THE GRIEF — A Miracle Academy Field Dossier
   Dossier tokens: cream paper, display gold, dark covers.
   Gold on light ground = goldInk. Rust = CTA only.
   ============================================================ */

:root{
  --paper:#f6f1e7;
  --paper-2:#efe7d6;
  --ink:#241f18;
  --ink-soft:#5b5344;
  --ink-faint:#8a8069;
  --gold:#b08428;
  --gold-pale:#e7d3a3;
  --gold-bright:#F4C430;
  --goldInk:#604905;
  --line:#d8cdb4;
  --cover:#241f18;
  --ember:#CC5733;
  --lane-doc:#4a6b4a;
  --lane-inf:#8a6d2f;
  --lane-hyp:#9a5b3c;
  --doc:#4a6b4a;
  --inf:#8a6d2f;
  --hyp:#9a5b3c;
  --maxw:1040px;
  --serif:'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans:'Inter', system-ui, -apple-system, sans-serif;
  --mono:'JetBrains Mono', ui-monospace, monospace;
}

*{box-sizing:border-box;}
html{scroll-behavior:smooth; background:#EBE9E5;}
body{
  margin:0;
  background:#EBE9E5;
  color:var(--ink);
  font-family:var(--sans);
  font-weight:300;
  font-size:18px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}

/* fixed grain overlay */
.grain{
  position:fixed; inset:0; z-index:9999; pointer-events:none;
  background-image:radial-gradient(rgba(36,31,24,.05) 0.5px, transparent 0.6px);
  background-size:4px 4px;
  mix-blend-mode:multiply;
  opacity:.5;
}

.page{max-width:var(--maxw); margin:0 auto; padding:0 28px 120px;}

/* ---------------- masthead ---------------- */
.masthead{
  display:flex; align-items:center; justify-content:space-between;
  padding:26px 0 22px; border-bottom:1px solid var(--line);
}
.masthead .ma img{height:30px; width:auto; display:block;}
.mfile{
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:11px; letter-spacing:.22em;
  text-transform:uppercase; color:var(--ink-faint);
}

/* ---------------- module system ---------------- */
.module{
  position:relative;
  padding:58px 0 50px;
  border-bottom:1px solid var(--line);
  scroll-margin-top:24px;
}
.module::before{
  content:attr(data-num);
  position:absolute; top:40px; right:-4px;
  font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif; font-weight:600;
  font-size:170px; line-height:1;
  color:var(--gold); opacity:.08;
  pointer-events:none; z-index:0;
}
.module > *{position:relative; z-index:1;}

.kicker{
  display:flex; align-items:center; gap:14px;
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:12px; letter-spacing:.24em;
  text-transform:uppercase; color:var(--goldInk);
  margin-bottom:22px;
}
.kicker .rule{display:inline-block; width:34px; height:1px; background:var(--gold);}

.module h2{
  font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif; font-weight:500;
  font-size:clamp(1.9rem, 4.4vw, 3.05rem);
  line-height:1.12; letter-spacing:-.01em;
  color:var(--ink); margin:0 0 30px; max-width:16ch;
}
.module h2 em{font-style:italic; color:var(--goldInk);}

/* hero */
.hero{padding-top:64px;}
.hero .title{
  font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif; font-weight:600;
  font-size:clamp(3rem, 10vw, 6.2rem);
  line-height:.98; letter-spacing:-.02em;
  color:var(--ink); margin:14px 0 30px;
}
.hero .lede{
  font-size:clamp(1.1rem, 2.2vw, 1.4rem);
  color:var(--ink-soft); max-width:40ch; margin:0 0 34px;
  line-height:1.5;
}
.hero .lede em{font-style:italic; color:var(--goldInk);}
.frame{
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:12px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--ink-faint);
  border-top:1px solid var(--line); padding-top:20px; max-width:52ch;
}

/* ---------------- figures ---------------- */
.fig{
  margin:4px 0 26px; position:relative;
  border:1px solid var(--line);
  background:var(--paper-2);
}
.fig img{
  width:100%; display:block;
  aspect-ratio:3/1; object-fit:cover;
  filter:saturate(.92) contrast(1.02);
}
.fig figcaption{
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:11px; letter-spacing:.06em;
  color:var(--ink-faint);
  padding:12px 16px; border-top:1px solid var(--line);
  background:var(--paper-2);
}
/* gold corner ticks */
.fig::before,.fig::after{
  content:""; position:absolute; width:14px; height:14px;
  border:1px solid var(--gold); z-index:2;
}
.fig::before{top:8px; left:8px; border-right:none; border-bottom:none;}
.fig::after{bottom:8px; right:8px; border-left:none; border-top:none;}

/* ---------------- prose ---------------- */
.prose{
  font-size:18px; color:var(--ink-soft);
  max-width:66ch; margin:0 0 16px;
}
.prose em{font-style:italic; color:var(--ink);}
.prose strong{font-weight:500; color:var(--ink);}

/* lane tags */
.lane{
  display:inline-block; vertical-align:baseline;
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:10px; letter-spacing:.14em;
  text-transform:uppercase; font-weight:500;
  padding:3px 8px; margin:0 10px 0 0; border-radius:2px;
  color:#f6f1e7;
}
.lane[data-lane="doc"]{background:var(--doc);}
.lane[data-lane="inf"]{background:var(--inf);}
.lane[data-lane="hyp"]{background:var(--hyp);}
body[data-filter="doc"] .module .prose:has(.lane[data-lane="inf"]),
body[data-filter="doc"] .module .prose:has(.lane[data-lane="hyp"]),
body[data-filter="inf"] .module .prose:has(.lane[data-lane="doc"]),
body[data-filter="inf"] .module .prose:has(.lane[data-lane="hyp"]),
body[data-filter="hyp"] .module .prose:has(.lane[data-lane="doc"]),
body[data-filter="hyp"] .module .prose:has(.lane[data-lane="inf"]){
  opacity:.32;
}

/* lane filter */
.lanefilter{
  display:flex; flex-wrap:wrap; gap:8px; margin-top:26px;
}
.lf{
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:11px; letter-spacing:.1em;
  text-transform:uppercase; color:var(--ink-soft);
  background:transparent; border:1px solid var(--line);
  padding:8px 14px; border-radius:2px; cursor:pointer;
  transition:all .25s ease;
}
.lf:hover{border-color:var(--gold);}
.lf.active{background:var(--ink); color:var(--paper); border-color:var(--ink);}

/* pull quote */
.pull{
  font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif; font-style:italic; font-weight:500;
  font-size:clamp(1.4rem, 3vw, 1.9rem); line-height:1.32;
  color:var(--ink); max-width:26ch;
  border-left:2px solid var(--gold);
  padding:6px 0 6px 26px; margin:26px 0 6px;
}

/* ---------------- practice cards ---------------- */
.practice{
  margin:34px 0 0; border:1px solid var(--line);
  background:var(--paper-2); border-radius:3px;
  max-width:720px; overflow:hidden;
}
.practice-btn{
  width:100%; display:flex; align-items:center; justify-content:space-between;
  background:none; border:none; cursor:pointer;
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:12px; letter-spacing:.18em;
  text-transform:uppercase; color:var(--goldInk); font-weight:500;
  padding:18px 22px; text-align:left;
}
.practice-btn .pm{font-size:18px; color:var(--gold); transition:transform .3s ease;}
.practice[open] .practice-btn .pm{transform:rotate(45deg);}
.practice-body{
  max-height:0; overflow:hidden; transition:max-height .45s ease;
  padding:0 22px;
}
.practice[open] .practice-body{max-height:640px; padding:0 22px 24px;}
.practice-body p{
  font-size:16px; color:var(--ink-soft); margin:0; line-height:1.7;
}

/* ---------------- close / CTA ---------------- */
.close-line{
  font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif; font-style:italic; font-weight:500;
  font-size:clamp(1.6rem, 3.4vw, 2.2rem); color:var(--ink);
  margin:44px 0 12px;
}
.cta{margin-top:22px;}
.cta-btn{
  display:inline-block;
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:14px; letter-spacing:.14em;
  text-transform:uppercase; font-weight:500;
  color:var(--paper); background:var(--ember);
  padding:18px 34px; border-radius:2px; text-decoration:none;
  transition:transform .25s ease, box-shadow .25s ease;
}
.cta-btn:hover{transform:translateY(-2px); box-shadow:0 10px 30px -12px rgba(204,87,51,.7);}
.cta-sub{
  display:block; margin-top:16px;
  font-size:15px; color:var(--ink-faint); max-width:48ch;
}

/* ---------------- footer ---------------- */
.foot{
  padding:56px 0 8px; border-top:1px solid var(--line);
  display:flex; flex-direction:column; gap:14px; align-items:flex-start;
}
.foot-logo{height:26px; width:auto;}
.foot span{
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:11px; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-faint);
}
.foot a{color:var(--goldInk); text-decoration:none;}
.foot-line{font-family:'Cormorant Garamond', Georgia, 'Times New Roman', serif; font-style:italic; font-size:15px; text-transform:none; letter-spacing:0; color:var(--ink-soft);}

/* ---------------- dot rail ---------------- */
.rail{
  position:fixed; right:26px; top:50%; transform:translateY(-50%);
  z-index:50; display:flex; flex-direction:column; gap:12px;
}
.rail a{
  position:relative; width:9px; height:9px; border-radius:50%;
  background:transparent; border:1px solid var(--gold);
  display:block; transition:background .3s ease, transform .3s ease;
}
.rail a.active{background:var(--gold); transform:scale(1.35);}
.rail a .rl{
  position:absolute; right:20px; top:50%; transform:translateY(-50%);
  font-family:'JetBrains Mono', ui-monospace, monospace; font-size:10px; letter-spacing:.1em;
  color:var(--goldInk); opacity:0; transition:opacity .3s ease;
  white-space:nowrap;
}
.rail a.active .rl{opacity:1;}

/* ---------------- scroll reveal (gated behind html.js) ---------------- */
html.js .module > *{
  opacity:0; transform:translateY(14px);
  transition:opacity .7s ease, transform .7s ease;
}
html.js .module.in > *{opacity:1; transform:none;}
html.js .module.in > *:nth-child(2){transition-delay:.06s;}
html.js .module.in > *:nth-child(3){transition-delay:.12s;}
html.js .module.in > *:nth-child(4){transition-delay:.18s;}
html.js .module.in > *:nth-child(5){transition-delay:.24s;}
html.js .module.in > *:nth-child(6){transition-delay:.30s;}
html.js .module.in > *:nth-child(7){transition-delay:.36s;}
html.js .module.in > *:nth-child(8){transition-delay:.42s;}

/* ---------------- responsive ---------------- */
@media (max-width:1220px){
  .rail{display:none;}
}
@media (max-width:640px){
  body{font-size:17px;}
  .module{padding:64px 0 56px;}
  .module::before{font-size:120px; top:24px;}
  .page{padding:0 20px 90px;}
  .prose{max-width:none;}
  .module h2{max-width:none;}
  .hero .title{font-size:clamp(2.6rem,13vw,3.6rem);}
}
