:root{
    --ink:#1f2520;
    --ink-soft:#4a534b;
    --paper:#f4f0e6;
    --paper-warm:#ece5d5;
    --sage:#6b7d65;
    --sage-deep:#475040;
    --gold:#a8843b;
    --line:rgba(31,37,32,.14);
  }
  *{margin:0;padding:0;box-sizing:border-box;}
  html{scroll-behavior:smooth;}
  body{
    background:var(--paper);
    color:var(--ink);
    font-family:'Newsreader',Georgia,serif;
    font-size:1.18rem;
    line-height:1.7;
    -webkit-font-smoothing:antialiased;
    overflow-x:hidden;
  }
  body::before{
    content:"";
    position:fixed;inset:0;
    pointer-events:none;
    z-index:1;
    opacity:.5;
    background-image:url("assets/noise.svg");
  }
  .wrap{max-width:980px;margin:0 auto;padding:0 28px;position:relative;z-index:2;}

  /* ---- Hero with image ---- */
  header.hero{
    position:relative;
    min-height:100vh;
    display:flex;flex-direction:column;justify-content:flex-end;
    padding:0 0 9vh;
    color:var(--paper);
    overflow:hidden;
  }
  .hero-img{
    position:absolute;inset:0;z-index:0;
    background-image:url("assets/change-shepherd-hero.jpg");
    background-size:cover;
    background-position:center 35%;
    transform:scale(1.04);
    animation:slowzoom 18s ease-out forwards;
  }
  .hero-img::after{
    content:"";position:absolute;inset:0;
    background:linear-gradient(to top,
      rgba(20,24,20,.92) 0%,
      rgba(20,24,20,.55) 38%,
      rgba(20,24,20,.15) 68%,
      rgba(20,24,20,.30) 100%);
  }
  header.hero .wrap{z-index:3;}
  .eyebrow{
    font-family:'Fraunces',serif;
    font-weight:500;
    letter-spacing:.32em;
    text-transform:uppercase;
    font-size:.74rem;
    color:#e8c987;
    margin-bottom:26px;
    opacity:0;
    animation:rise .9s .4s ease forwards;
  }
  h1{
    font-family:'Fraunces',serif;
    font-weight:400;
    font-size:clamp(2.7rem,6.4vw,5.2rem);
    line-height:1.04;
    letter-spacing:-.015em;
    color:#fbf8f0;
    max-width:15ch;
    text-shadow:0 2px 30px rgba(0,0,0,.4);
    opacity:0;
    animation:rise 1s .6s ease forwards;
  }
  h1 em{font-style:italic;color:#e8c987;}
  .lede{
    margin-top:30px;
    max-width:52ch;
    font-size:1.32rem;
    line-height:1.55;
    color:rgba(251,248,240,.9);
    text-shadow:0 1px 16px rgba(0,0,0,.45);
    opacity:0;
    animation:rise 1s .85s ease forwards;
  }
  .hero-meta{
    margin-top:42px;
    display:flex;gap:26px;align-items:center;flex-wrap:wrap;
    font-family:'Fraunces',serif;
    font-size:.8rem;
    letter-spacing:.06em;
    color:rgba(251,248,240,.85);
    opacity:0;
    animation:rise 1s 1.05s ease forwards;
  }
  .hero-meta .dot{width:5px;height:5px;border-radius:50%;background:#e8c987;}
  .scrollcue{
    position:absolute;left:50%;bottom:26px;transform:translateX(-50%);
    z-index:3;color:rgba(251,248,240,.6);
    opacity:0;animation:rise 1s 1.4s ease forwards, float 2.4s 1.6s ease-in-out infinite;
  }

  /* ---- Divider rule with mark ---- */
  .rule{display:flex;align-items:center;gap:22px;margin:0 0 64px;color:var(--sage);}
  .rule .ln{height:1px;background:var(--line);flex:1;}
  .rule svg{flex:none;}

  section{padding:96px 0;position:relative;}
  .section-label{
    font-family:'Fraunces',serif;letter-spacing:.28em;text-transform:uppercase;
    font-size:.72rem;color:var(--gold);margin-bottom:26px;
  }
  h2{
    font-family:'Fraunces',serif;font-weight:400;
    font-size:clamp(1.9rem,4vw,2.9rem);line-height:1.12;letter-spacing:-.01em;
    max-width:22ch;margin-bottom:30px;
  }
  h2 em{font-style:italic;color:var(--sage-deep);}
  .prose p{max-width:62ch;margin-bottom:1.3em;color:var(--ink-soft);}
  .prose p strong{color:var(--ink);font-weight:500;}

  .pull{
    border-left:2px solid var(--gold);padding:6px 0 6px 32px;margin:54px 0;
    font-family:'Fraunces',serif;font-style:italic;
    font-size:clamp(1.5rem,3.2vw,2.1rem);line-height:1.3;color:var(--ink);max-width:26ch;
  }

  .offerings{
    display:grid;grid-template-columns:repeat(2,1fr);gap:2px;
    background:var(--line);border:1px solid var(--line);margin-top:48px;
  }
  .offer{background:var(--paper);padding:38px 34px;transition:background .4s ease;}
  .offer:hover{background:var(--paper-warm);}
  .offer h3{font-family:'Fraunces',serif;font-weight:500;font-size:1.32rem;margin-bottom:12px;color:var(--sage-deep);}
  .offer p{font-size:1.05rem;line-height:1.6;color:var(--ink-soft);}
  .offer .num{font-family:'Fraunces',serif;font-size:.78rem;letter-spacing:.2em;color:var(--gold);display:block;margin-bottom:16px;}

  .contact{background:var(--sage-deep);color:var(--paper);border-radius:2px;position:relative;overflow:hidden;}
  .contact::after{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(80% 120% at 100% 0%, rgba(168,132,59,.22), transparent 55%);}
  .contact .inner{padding:80px 60px;position:relative;z-index:2;}
  .contact .section-label{color:var(--gold);}
  .contact h2{color:var(--paper);}
  .contact p{color:rgba(244,240,230,.82);max-width:48ch;margin-bottom:36px;}
  .contact button.mailbtn{
    font-family:'Fraunces',serif;font-size:1.05rem;letter-spacing:.04em;
    color:var(--sage-deep);background:var(--paper);
    border:none;border-radius:2px;cursor:pointer;
    padding:18px 38px;
    transition:background .3s ease,color .3s ease,transform .3s ease,box-shadow .3s ease;
    box-shadow:0 6px 24px rgba(0,0,0,.18);
  }
  .contact button.mailbtn:hover{background:var(--gold);color:#fff;transform:translateY(-2px);box-shadow:0 10px 30px rgba(0,0,0,.26);}
  .contact button.mailbtn .arrow{display:inline-block;margin-left:10px;transition:transform .3s ease;}
  .contact button.mailbtn:hover .arrow{transform:translateX(4px);}
  .contact .lines{margin-top:44px;display:flex;gap:40px;flex-wrap:wrap;font-family:'Fraunces',serif;font-size:.9rem;letter-spacing:.04em;color:rgba(244,240,230,.7);}
  .contact .lines span strong{display:block;color:var(--gold);font-size:.7rem;letter-spacing:.2em;text-transform:uppercase;margin-bottom:6px;font-weight:500;}

  footer{padding:54px 0 70px;text-align:center;font-family:'Fraunces',serif;font-size:.8rem;letter-spacing:.08em;color:var(--ink-soft);}
  footer .glyph{margin-bottom:18px;color:var(--sage);}
  footer .ded{margin-top:14px;font-style:italic;font-size:.82rem;color:var(--sage);letter-spacing:.02em;}

  @keyframes rise{from{opacity:0;transform:translateY(22px);}to{opacity:1;transform:translateY(0);}}
  @keyframes slowzoom{from{transform:scale(1.04);}to{transform:scale(1.12);}}
  @keyframes float{0%,100%{transform:translateX(-50%) translateY(0);}50%{transform:translateX(-50%) translateY(7px);}}
  .reveal{opacity:1;transform:translateY(0);transition:opacity .9s ease,transform .9s ease;}
  .reveal.in{opacity:1;transform:translateY(0);}

  @media(max-width:720px){
    body{font-size:1.1rem;}
    .offerings{grid-template-columns:1fr;}
    .contact .inner{padding:54px 30px;}
    section{padding:72px 0;}
    .hero-img{background-position:center 30%;}
  }


  /* ---- Book preview download ---- */
  .preview-section {
    background: var(--paper);
    padding: 88px 0;
  }
  .preview-card {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 42px;
    align-items: center;
    padding: 50px;
    border: 1px solid var(--line);
    background: var(--paper-warm);
    position: relative;
    overflow: hidden;
  }
  .preview-card::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(70% 120% at 100% 0%, rgba(168,132,59,.18), transparent 56%);
  }
  .preview-copy, .preview-action {
    position: relative;
    z-index: 2;
  }
  .preview-card h2 {
    margin-bottom: 20px;
  }
  .preview-card p {
    max-width: 54ch;
    color: var(--ink-soft);
    margin-bottom: 1em;
  }
  .preview-note {
    font-style: italic;
    color: var(--sage-deep) !important;
  }
  .preview-action {
    display: flex;
    flex-direction: column;
    align-items: flex-start;
    gap: 14px;
  }
  .download-btn {
    display: inline-block;
    font-family: 'Fraunces', serif;
    font-size: 1.02rem;
    letter-spacing: .04em;
    color: var(--paper);
    background: var(--sage-deep);
    text-decoration: none;
    border-radius: 2px;
    padding: 18px 34px;
    transition: background .3s ease, color .3s ease, transform .3s ease, box-shadow .3s ease;
    box-shadow: 0 6px 22px rgba(0,0,0,.14);
    white-space: nowrap;
  }
  .download-btn:hover {
    background: var(--gold);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 10px 28px rgba(0,0,0,.20);
  }
  .download-btn .arrow {
    display: inline-block;
    margin-left: 10px;
    transition: transform .3s ease;
  }
  .download-btn:hover .arrow {
    transform: translateX(4px);
  }
  .file-note {
    font-family: 'Fraunces', serif;
    font-size: .82rem;
    letter-spacing: .08em;
    color: var(--sage-deep);
  }
  @media (max-width: 760px) {
    .preview-card {
      grid-template-columns: 1fr;
      padding: 38px 30px;
    }
  }


  /* ---- Book update signup ---- */
  .book-updates-section {
    background: var(--paper-warm);
    padding: 88px 0;
  }
  .updates-card {
    display: grid;
    grid-template-columns: minmax(0, .95fr) minmax(300px, 1fr);
    gap: 46px;
    align-items: start;
    padding: 50px;
    background: var(--paper);
    border: 1px solid var(--line);
    position: relative;
    overflow: hidden;
  }
  .updates-card::after {
    content: "";
    position: absolute;
    inset: 0;
    pointer-events: none;
    background: radial-gradient(70% 120% at 0% 0%, rgba(107,125,101,.14), transparent 58%);
  }
  .updates-copy,
  .updates-form {
    position: relative;
    z-index: 2;
  }
  .updates-card h2 {
    margin-bottom: 20px;
  }
  .updates-card p {
    color: var(--ink-soft);
    max-width: 48ch;
  }
  .updates-form {
    display: grid;
    gap: 16px;
  }
  .field-row label {
    display: block;
    font-family: 'Fraunces', serif;
    font-size: .78rem;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--sage-deep);
    margin-bottom: 7px;
  }
  .field-row input {
    width: 100%;
    font-family: 'Newsreader', Georgia, serif;
    font-size: 1.05rem;
    color: var(--ink);
    background: #fbf8f0;
    border: 1px solid var(--line);
    border-radius: 2px;
    padding: 13px 14px;
    outline: none;
    transition: border-color .25s ease, box-shadow .25s ease;
  }
  .field-row input:focus {
    border-color: rgba(168,132,59,.72);
    box-shadow: 0 0 0 3px rgba(168,132,59,.12);
  }
  .signup-btn {
    justify-self: start;
    font-family: 'Fraunces', serif;
    font-size: 1rem;
    letter-spacing: .04em;
    color: var(--paper);
    background: var(--sage-deep);
    border: none;
    border-radius: 2px;
    cursor: pointer;
    padding: 16px 28px;
    transition: background .3s ease, color .3s ease, transform .3s ease, box-shadow .3s ease;
    box-shadow: 0 6px 22px rgba(0,0,0,.14);
  }
  .signup-btn:hover {
    background: var(--gold);
    color: #fff;
    transform: translateY(-2px);
    box-shadow: 0 10px 28px rgba(0,0,0,.20);
  }
  .signup-btn .arrow {
    display: inline-block;
    margin-left: 10px;
    transition: transform .3s ease;
  }
  .signup-btn:hover .arrow {
    transform: translateX(4px);
  }
  .form-note,
  .form-status {
    font-size: .96rem;
    line-height: 1.5;
    color: var(--ink-soft);
    margin: 0;
  }
  .form-status {
    color: var(--sage-deep);
    font-style: italic;
  }
  @media (max-width: 760px) {
    .updates-card {
      grid-template-columns: 1fr;
      padding: 38px 30px;
    }
  }

  /* ---- Dallas section ---- */
  .dallas-section {
    padding: 9vh 0;
    background: var(--paper-warm);
  }
  .dallas-section .wrap {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 56px;
    align-items: center;
  }
  .dallas-img {
    width: 100%;
    border-radius: 4px;
    display: block;
  }
  .dallas-text .section-label {
    margin-bottom: 18px;
  }
  .dallas-text h2 {
    font-family: 'Fraunces', Georgia, serif;
    font-size: clamp(1.6rem, 3vw, 2.1rem);
    font-weight: 500;
    line-height: 1.25;
    margin-bottom: 28px;
    color: var(--ink);
  }
  .dallas-text .prose p {
    margin-bottom: 1.1em;
    color: var(--ink-soft);
  }
  .dallas-text .dedication {
    margin-top: 28px;
    font-family: 'Fraunces', Georgia, serif;
    font-style: italic;
    color: var(--sage-deep);
    font-size: 1.05rem;
  }

  /* ---- About with photo ---- */
  .about-inner {
    display: grid;
    grid-template-columns: 200px 1fr;
    gap: 48px;
    align-items: start;
  }
  .about-photo {
    width: 200px;
    height: 200px;
    border-radius: 50%;
    object-fit: cover;
    object-position: top center;
    display: block;
    border: 3px solid var(--line);
  }
  @media (max-width: 680px) {
    .dallas-section .wrap { grid-template-columns: 1fr; }
    .about-inner { grid-template-columns: 1fr; }
    .about-photo { margin: 0 auto; }
  }
