@font-face{
  font-family:"EB Garamond";
  src:url("../fonts/EBGaramond-Regular.otf") format("opentype");
  font-weight:400;
  font-style:normal;
  font-display:swap;
}
@font-face{
  font-family:"EB Garamond";
  src:url("../fonts/EBGaramond-Italic.otf") format("opentype");
  font-weight:400;
  font-style:italic;
  font-display:swap;
}
@font-face{
  font-family:"EB Garamond";
  src:url("../fonts/EBGaramond-Medium.otf") format("opentype");
  font-weight:500;
  font-style:normal;
  font-display:swap;
}

:root{
  --matte:#000;
  --oxide:#C11E1E;
  --paper:#e3d8c6;
  --ink:#161410;
  --name:#f3eee4;
  --banner-h:5.5rem;
  --clip-end:4.75rem;
  --pad:1.15rem;
  --travel:1.05s;
  --split:.9s;
}

*{box-sizing:border-box;margin:0;padding:0}
html{scroll-behavior:smooth}
html:not(.is-open),
html:not(.is-open) body{
  overflow:hidden;
  height:100%;
  overscroll-behavior:none;
}
body{
  min-height:100%;
  background:var(--matte);
  color:var(--name);
  font-family:"EB Garamond", Garamond, "Times New Roman", serif;
}
button{font:inherit;color:inherit}

/* Stressed words: brand red everywhere in the open site */
.site em{
  font-style:normal;
  color:var(--oxide);
  font-weight:500;
}
.site a em{
  color:var(--oxide);
}
img{display:block;max-width:none}
.sr{
  position:absolute;
  width:1px;height:1px;
  overflow:hidden;
  clip:rect(0 0 0 0);
}

.story{
  min-height:calc(100vh - var(--banner-h));
  display:flex;
  flex-direction:column;
  align-items:center;
  justify-content:center;
  gap:1.6rem;
  padding:2.5rem 1.5rem 3rem;
  color:var(--ink);
  text-align:center;
}
.story .above,
.story .below{
  max-width:44rem;
  font-size:clamp(1.15rem, 2.1vw, 1.45rem);
  line-height:1.45;
  font-weight:400;
}
.story em{
  font-style:normal;
  color:var(--oxide);
  font-weight:500;
}
.chain{
  width:min(100%, 52rem);
  margin:0;
  line-height:0;
}
.chain img{
  width:100%;
  height:auto;
  max-width:100%;
}

/* Behind the gate: banner + paper */
.site{
  min-height:100%;
  background:var(--paper);
}
.banner{
  position:sticky;
  top:0;
  z-index:15;
  height:var(--banner-h);
  background:var(--matte);
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:1rem;
  padding:0 1.5rem 0 calc(var(--pad) + var(--clip-end) + .55rem);
}
.name{
  font-size:clamp(1.15rem, 2.4vw, 1.7rem);
  font-weight:500;
  letter-spacing:.02em;
  line-height:1;
  opacity:0;
  transform:translateX(-.4rem);
  pointer-events:none;
  flex:1 1 auto;
  min-width:0;
}
.name em{
  font-style:normal;
  color:var(--oxide);
}
.banner-contact{
  flex:0 0 auto;
  margin:0;
  text-align:right;
  font-size:clamp(.72rem, 1.35vw, .95rem);
  font-weight:500;
  letter-spacing:.02em;
  line-height:1.3;
  color:var(--name);
  opacity:0;
  transform:translateX(.4rem);
  pointer-events:none;
}
.banner-contact a{
  color:var(--name);
  text-decoration:none;
}
.banner-contact a:hover,
.banner-contact a:focus-visible{
  text-decoration:underline;
  outline:none;
}
.banner-contact em{
  font-style:normal;
  color:var(--oxide);
}
body.is-open .name,
body.is-open .banner-contact{
  opacity:1;
  transform:none;
  transition:
    opacity .45s ease calc(var(--travel) * .68),
    transform .45s ease calc(var(--travel) * .68);
}
body.is-open .banner-contact{pointer-events:auto}

@media (max-width:560px){
  .banner{
    height:auto;
    min-height:var(--banner-h);
    padding-top:.85rem;
    padding-bottom:.85rem;
    align-items:flex-start;
  }
  .name{
    font-size:clamp(1rem, 4.2vw, 1.2rem);
    line-height:1.15;
  }
  .banner-contact{
    max-width:11.5rem;
  }
}

/* Gate: two black halves. The clip sits above them, so it does not tear. */
.gate{
  position:fixed;
  inset:0;
  z-index:20;
  pointer-events:none;
}
.pane{
  position:absolute;
  left:0;right:0;
  height:50%;
  background:var(--matte);
  transition:transform var(--split) cubic-bezier(.76,0,.18,1);
}
.pane-top{top:0}
.pane-bottom{bottom:0}
body.is-open .pane-top{transform:translateY(-100%)}
body.is-open .pane-bottom{transform:translateY(100%)}
body.is-open .gate.is-done{visibility:hidden}

/* Clip: JPEG as-is, cropped by overflow so the black square is not a box. */
.clip{
  position:fixed;
  z-index:30;
  top:50%;
  left:50%;
  width:min(72vw, 22rem);
  height:min(72vw, 22rem);
  transform:translate(-50%,-50%);
  overflow:hidden;
  border:0;
  padding:0;
  background:transparent;
  cursor:pointer;
  -webkit-tap-highlight-color:transparent;
}
.clip img{
  position:absolute;
  left:50%;
  top:50%;
  width:175%;
  height:175%;
  transform:translate(-50%,-50%);
  pointer-events:none;
}
.clip:hover:not([aria-expanded="true"]),
.clip:focus-visible:not([aria-expanded="true"]){
  transform:translate(-50%,-50%) scale(1.08);
  transition:transform .22s ease;
}
.clip:focus-visible{
  outline:2px solid var(--oxide);
  outline-offset:8px;
}

body.is-open .clip{
  top:calc(var(--banner-h) / 2);
  left:calc(var(--pad) + var(--clip-end) / 2);
  width:var(--clip-end);
  height:var(--clip-end);
  transform:translate(-50%,-50%);
  cursor:default;
  pointer-events:none;
  outline:none;
  transition:
    top var(--travel) cubic-bezier(.76,0,.18,1),
    left var(--travel) cubic-bezier(.76,0,.18,1),
    width var(--travel) cubic-bezier(.76,0,.18,1),
    height var(--travel) cubic-bezier(.76,0,.18,1),
    transform .2s linear;
}

.story-actions{
  display:flex;
  flex-wrap:wrap;
  gap:.6rem;
  justify-content:center;
  margin-top:.35rem;
}
.go-finder{
  display:inline-block;
  padding:.7rem 1.3rem;
  border:2px solid var(--ink);
  background:var(--oxide);
  color:var(--name);
  text-decoration:none;
  letter-spacing:.04em;
  font-size:1.05rem;
  line-height:1;
}
.go-finder:hover,
.go-finder:focus-visible{
  background:var(--name);
  border-color:var(--oxide);
  color:var(--oxide);
  outline:none;
}


.finder{
  scroll-margin-top:var(--banner-h);
  min-height:calc(100vh - var(--banner-h));
  max-width:40rem;
  margin:0 auto;
  padding:2.5rem 1.5rem 4rem;
  color:var(--ink);
}
.finder .kicker{
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:.82rem;
  font-weight:500;
  color:var(--oxide);
}
.finder h1{
  font-size:clamp(1.8rem, 4vw, 2.4rem);
  font-weight:500;
  line-height:1.15;
  margin:.35rem 0 .7rem;
}
.finder .tool-lead{
  margin-bottom:1.2rem;
  font-size:1.15rem;
  line-height:1.45;
}
.finder .muted{color:#4e4940;margin-bottom:1.2rem}
.finder .card{
  background:#ece6d6;
  border:1px solid #2a2620;
  padding:1.1rem 1.1rem 1.3rem;
  margin:1rem 0;
  scroll-margin-top:calc(var(--banner-h) + .75rem);
}
#result{scroll-margin-top:calc(var(--banner-h) + .75rem)}
.finder .card h2{margin-bottom:.5rem;font-weight:500}
#goal-card .qtext{display:block}
#goal-input{
  display:block;
  margin:.9rem 0 1rem;
  font-size:1.2rem;
  padding:.7rem .75rem;
}
.goal-actions{
  display:flex;
  flex-wrap:wrap;
  gap:.5rem;
  align-items:center;
}
#goal-teach p{
  margin:0 0 .9rem;
  font-size:1.1rem;
  line-height:1.45;
}
#goal-teach cite{font-style:italic}
#goal-teach .qtext{margin-bottom:.9rem}
.finder .qnum{
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:.82rem;
  color:var(--oxide);
  font-weight:500;
}
.finder .qtext{
  font-size:1.35rem;
  line-height:1.35;
  font-weight:500;
  margin:.5rem 0 1rem;
}
.finder .answers{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(7.4rem,1fr));
  gap:.5rem;
}
#goal-hint{
  text-transform:none;
  letter-spacing:0;
}
.finder button{
  cursor:pointer;
  font-size:.9rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-weight:500;
  border:2px solid var(--ink);
  background:#f3eee4;
  color:var(--ink);
  padding:.7rem .75rem;
}
.finder button:hover{border-color:var(--oxide);color:var(--oxide)}
.finder button.primary{
  background:var(--oxide);
  border-color:var(--oxide);
  color:var(--name);
}
.finder button.primary:hover{
  background:var(--ink);
  border-color:var(--ink);
  color:var(--name);
}
.finder .quiz-nav{margin-top:.75rem}
.finder #back:disabled{opacity:.35;cursor:default}
.finder #back:disabled:hover{border-color:var(--ink);color:var(--ink)}
.finder .answers button.picked{
  border-color:var(--oxide);
  color:var(--oxide);
}
.finder .dots{display:flex;flex-wrap:wrap;gap:.25rem;margin-top:1rem}
.finder .dot{width:.5rem;height:.5rem;background:#2a2620}
.finder .dot.done{background:var(--oxide)}
.finder .dot.now{outline:2px solid var(--oxide);outline-offset:1px}
.finder .musing{color:#4e4940;margin-top:.75rem;min-height:1.4rem}
.finder .reveal h2{color:var(--oxide);font-size:1.7rem;line-height:1.15}
.finder .confidence{color:#4e4940;font-size:.9rem;margin-bottom:.75rem}
.finder .why{
  border-left:6px solid var(--oxide);
  background:#f3eee4;
  padding:.75rem .9rem;
  margin:1rem 0;
}
.finder .solution{
  border:1px solid #2a2620;
  padding:.9rem;
  margin-top:.75rem;
  background:#f3eee4;
}
.finder .solution .tag{
  display:inline-block;
  font-size:.75rem;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:var(--name);
  background:var(--ink);
  padding:.15rem .5rem;
  margin-bottom:.4rem;
}
.finder .runnerup{color:#4e4940;margin-top:1rem}
.finder .actions{display:flex;gap:.5rem;margin-top:1rem;flex-wrap:wrap}
.finder-gate{
  border:1px solid #2a2620;
  padding:1rem;
  margin-top:1rem;
  background:#f3eee4;
}
.finder-gate .gsub{color:#4e4940;margin-bottom:.75rem}
.finder-gate .fields{
  display:grid;
  grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));
  gap:.5rem;
}
.finder input{
  font:inherit;
  background:#ddd4c0;
  color:var(--ink);
  border:1px solid #2a2620;
  padding:.5rem .65rem;
  width:100%;
}
.finder .trap{position:absolute;left:-5000px;width:1px;height:1px;overflow:hidden}
.finder .gerr{color:var(--oxide);margin-top:.5rem;min-height:1rem}
.finder .gnote{color:#756e63;font-size:.9rem;margin-top:.5rem}
.finder .contact{margin:.8rem 0 0;font-size:1.1rem;line-height:1.4}
.finder .contact a{color:var(--oxide)}
.finder .hidden{display:none}
#report{display:none}

/* .money* below unused on public index (Money moved private). Kept for reference until CSS split. */
.money{
  scroll-margin-top:var(--banner-h);
  min-height:calc(100vh - var(--banner-h));
  max-width:72rem;
  margin:0 auto;
  padding:2.5rem 1.5rem 4rem;
  color:var(--ink);
}
.money .kicker{
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:.82rem;
  font-weight:500;
  color:var(--oxide);
}
.money h1{
  font-size:clamp(1.8rem, 4vw, 2.4rem);
  font-weight:500;
  line-height:1.15;
  margin:.35rem 0 .7rem;
}
.money .tool-lead{
  margin-bottom:1.2rem;
  font-size:1.15rem;
  line-height:1.45;
  max-width:40rem;
}
.money .muted{color:#4e4940;margin-bottom:1.2rem}
.money .card{
  background:#ece6d6;
  border:1px solid #2a2620;
  padding:1.1rem 1.1rem 1.3rem;
  margin:1rem 0;
}
.money .card h2{margin-bottom:.5rem;font-weight:500}
.money button{
  cursor:pointer;
  font-size:.9rem;
  letter-spacing:.08em;
  text-transform:uppercase;
  font-weight:500;
  border:2px solid var(--ink);
  background:#f3eee4;
  color:var(--ink);
  padding:.7rem .75rem;
}
.money button:hover{border-color:var(--oxide);color:var(--oxide)}
.money button.primary{
  background:var(--oxide);
  border-color:var(--oxide);
  color:var(--name);
}
.money button.primary:hover{
  background:var(--ink);
  border-color:var(--ink);
  color:var(--name);
}
.money input,
.money textarea,
.money select{
  font:inherit;
  background:#ddd4c0;
  color:var(--ink);
  border:1px solid #2a2620;
  padding:.5rem .65rem;
  width:100%;
}
.money textarea{
  min-height:14rem;
  margin:.7rem 0;
  font-size:.95rem;
  line-height:1.4;
}
.money .gerr{color:var(--oxide);margin-top:.5rem}
.money .gnote{color:#756e63;font-size:.9rem;margin-top:.5rem}
.money .hidden{display:none}
.money table{width:100%;border-collapse:collapse;margin:1rem 0;font-size:1rem}
.money th,.money td{border:1px solid #2a2620;padding:.5rem .6rem;text-align:left;vertical-align:top}
.money select{min-width:11rem}
.money th{
  background:var(--ink);
  color:var(--name);
  font-size:.82rem;
  letter-spacing:.08em;
  text-transform:uppercase;
}
.money td.num{text-align:right}
.money-desk.split{
  display:grid;
  gap:1rem;
}
@media (min-width:1100px){
  .money-desk.split{
    grid-template-columns:minmax(20rem,5fr) minmax(24rem,7fr);
    align-items:start;
  }
}
.metrics{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1rem;
  margin:1rem 0;
}
@media (max-width:800px){
  .metrics{grid-template-columns:1fr}
  .money table{border:0}
  .money tr{
    display:grid;
    grid-template-columns:1fr auto;
    gap:.2rem .75rem;
    padding:.75rem 0;
    border-bottom:1px solid #2a2620;
  }
  .money tr:first-child{display:none}
  .money td{
    border:0;
    padding:.1rem 0;
  }
  .money td:first-child{
    grid-column:1 / -1;
    font-weight:500;
  }
  .money td.num{text-align:left}
  .money td:last-child{min-width:11rem}
  .money select{width:100%;min-width:11rem}
}
.metric{
  border:1px solid #2a2620;
  background:#f3eee4;
  padding:1rem;
}
.metric .label{
  letter-spacing:.04em;
  font-size:.95rem;
  color:var(--oxide);
  font-weight:500;
}
.metric .formula{text-transform:none;letter-spacing:0;font-weight:400;color:#4e4940}
.metric .term{
  color:var(--ink);
  font-weight:400;
  letter-spacing:0;
}
.metric .value{
  font-size:1.85rem;
  line-height:1.15;
  font-weight:500;
  margin:.4rem 0;
}
.metric .note{font-size:.95rem;line-height:1.4;color:#4e4940}
.verdict{
  border-left:6px solid var(--oxide);
  background:#f3eee4;
  padding:.75rem .9rem;
  margin:1rem 0;
}
.verdict.warn{border-left-color:var(--ink)}
.verdict a{color:var(--oxide)}
.verdict h3{margin:0 0 .5rem;font-weight:500}
.verdict p{margin:0 0 .75rem}
.verdict p:last-child{margin-bottom:0}
.privacy-strong{
  max-width:40rem;
  margin:.8rem 0 1.2rem;
  font-size:1.05rem;
  line-height:1.45;
}
#money-results{scroll-margin-top:var(--banner-h)}

@media print{
  .gate,.clip,.banner,.story,.go-finder,.finder button,.finder-gate{display:none !important}
  body{background:#fff;color:#111}
  #report{display:block;font-size:10.5pt;line-height:1.45;padding:0}
}

@media (prefers-reduced-motion: reduce){
  html{scroll-behavior:auto}
  .pane,
  .clip,
  body.is-open .clip,
  body.is-open .name{
    transition:none;
  }
}


/* —— GO pass: book CTA, philosophy, footer (public path) —— */
.finder .book-block{
  margin:1.25rem 0 0;
  padding:1rem 1.1rem 1.15rem;
  border:1px solid #2a2620;
  background:#f3eee4;
}
.finder .book-call{
  display:inline-block;
  padding:.75rem 1.25rem;
  border:2px solid var(--oxide);
  background:var(--oxide);
  color:var(--name);
  text-decoration:none;
  letter-spacing:.04em;
  font-size:1.05rem;
  font-weight:500;
  line-height:1.2;
}
.finder .book-call:hover,
.finder .book-call:focus-visible{
  background:var(--ink);
  border-color:var(--ink);
  color:var(--name);
  outline:none;
}
.finder .book-note{
  margin:.65rem 0 0;
  font-size:.9rem;
  color:#756e63;
  line-height:1.4;
}
.finder .book-block .contact{margin:.75rem 0 0}

.philosophy{
  scroll-margin-top:var(--banner-h);
  max-width:40rem;
  margin:0 auto;
  padding:2.5rem 1.5rem 3rem;
  color:var(--ink);
  border-top:1px solid #2a2620;
}
.philosophy .kicker{
  letter-spacing:.12em;
  text-transform:uppercase;
  font-size:.82rem;
  font-weight:500;
  color:var(--oxide);
}
.philosophy h2{
  font-size:clamp(1.5rem, 3.2vw, 2rem);
  font-weight:500;
  line-height:1.15;
  margin:.35rem 0 .7rem;
}
.philosophy .placeholder-copy{
  font-size:1.1rem;
  line-height:1.45;
  color:#4e4940;
  border-left:6px solid #2a2620;
  background:#f3eee4;
  padding:.75rem .9rem;
}

.site-footer{
  border-top:0;
  background:var(--matte);
  color:var(--name);
  padding:1.35rem 1.5rem 1.5rem;
  padding-left:calc(var(--pad) + var(--clip-end) + .55rem);
  display:grid;
  grid-template-columns:1fr auto 1fr;
  gap:1rem 1.5rem;
  align-items:center;
  width:100%;
  max-width:none;
  margin:0;
  box-sizing:border-box;
}
.site-footer .footer-brand{justify-self:start}
.site-footer .footer-social{justify-self:center}
.site-footer .footer-contact{justify-self:end;text-align:right}
@media (max-width:700px){
  .site-footer{
    grid-template-columns:1fr;
    justify-items:center;
    text-align:center;
    padding-left:1.5rem;
  }
  .site-footer .footer-brand,
  .site-footer .footer-social,
  .site-footer .footer-contact{justify-self:center;text-align:center}
}
.footer-brand{
  font-weight:500;
  letter-spacing:.02em;
  color:var(--name);
  margin:0;
}
.footer-brand em{
  color:var(--oxide);
  font-style:normal;
  font-weight:500;
}
.footer-social{
  display:flex;
  gap:1.15rem;
  align-items:center;
  justify-content:center;
}
.footer-social a.social-pending{
  opacity:.85;
}
.footer-social a.social-pending:hover,
.footer-social a.social-pending:focus-visible{
  opacity:1;
}
.footer-social a.social-icon,
.footer-social span.social-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:2rem;
  height:2rem;
  color:var(--name);
  text-decoration:none;
  border-bottom:0;
}
.footer-social a.social-icon svg,
.footer-social span.social-icon svg{
  width:1.25rem;
  height:1.25rem;
  display:block;
}
.footer-social a.social-icon:hover,
.footer-social a.social-icon:focus-visible{
  color:var(--oxide);
  outline:2px solid var(--oxide);
  outline-offset:4px;
}
.footer-contact{
  margin:0;
}
.footer-contact a{
  color:var(--name);
  text-decoration:none;
}
.footer-contact a:hover,
.footer-contact a:focus-visible{
  color:var(--oxide);
  text-decoration:underline;
  outline:none;
}
.footer-contact em{
  color:var(--oxide);
  font-style:normal;
  font-weight:500;
}

@media print{
  .philosophy .placeholder-copy{border:0}
  .site-footer{display:none !important}
}

.finder .book-note em,
.finder .contact em,
.finder .contact a em{
  font-style:normal;
  color:var(--oxide);
  font-weight:500;
}

.footer-social .social-icon{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:2rem;
  height:2rem;
  color:var(--name);
  text-decoration:none;
  border-bottom:0;
}
.footer-social span.social-pending{
  cursor:default;
  pointer-events:none;
  opacity:.75;
}
