/* ==========================================================================
   amandapuckett.com
   Palette carried from the original site: green #145A32 on white, Lato.
   Warmed up, opened out, and paired with a serif for the headings.
   ========================================================================== */

:root{
  --green:#145A32;
  --green-deep:#0E3F23;
  --green-soft:#F0F5F1;
  --green-line:rgba(20,90,50,.16);

  --paper:#FBFAF7;
  --paper-2:#FFFFFF;
  --ink:#23282A;
  --muted:#636B67;
  --faint:#8E9591;
  --line:rgba(35,40,42,.12);
  --line-soft:rgba(35,40,42,.07);
  --err:#A3342B;

  --serif:'Source Serif 4',Georgia,'Times New Roman',serif;
  --sans:'Lato',system-ui,-apple-system,'Segoe UI',sans-serif;

  --gutter:clamp(20px,5vw,72px);
  --measure:1140px;
  --narrow:720px;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth;-webkit-text-size-adjust:100%}

body{
  background:var(--paper);
  color:var(--muted);
  font-family:var(--sans);
  font-size:clamp(1rem,.97rem + .22vw,1.09rem);
  line-height:1.75;
  font-weight:400;
  -webkit-font-smoothing:antialiased;
  overflow-x:hidden;
}

img{max-width:100%;height:auto;display:block}
::selection{background:var(--green);color:#fff}
:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:2px}

a{color:var(--green);text-decoration:none;border-bottom:1px solid var(--green-line);transition:border-color .18s,color .18s}
a:hover{border-bottom-color:var(--green)}

.skip{position:absolute;left:-9999px;top:0;z-index:100;background:var(--green);color:#fff;padding:.7em 1.2em;border:0}
.skip:focus{left:8px;top:8px}

.wrap{max-width:var(--measure);margin:0 auto;padding-inline:var(--gutter)}
.narrow{max-width:var(--narrow)}

h1,h2,h3{font-family:var(--serif);color:var(--ink);font-weight:500;line-height:1.15;letter-spacing:-.012em}

.eyebrow{
  font-family:var(--sans);font-size:.7rem;font-weight:700;
  letter-spacing:.22em;text-transform:uppercase;color:var(--green);display:block;
}

/* ==========================================================================
   HEADER
   ========================================================================== */
.site-head{
  position:sticky;top:0;z-index:50;
  background:rgba(251,250,247,.9);
  backdrop-filter:saturate(180%) blur(12px);
  -webkit-backdrop-filter:saturate(180%) blur(12px);
  border-bottom:1px solid var(--line-soft);
}
.site-head__in{display:flex;align-items:center;justify-content:space-between;gap:1.5rem;padding-block:.85rem}
.site-head a{border:0}
.brand{display:flex;align-items:center;gap:.7rem;color:var(--ink)}
.brand img{width:34px;height:34px;border-radius:50%;object-fit:cover;object-position:50% 30%}
.brand span{font-family:var(--serif);font-size:1.02rem;font-weight:500}
.site-nav{display:flex;gap:1.6rem;font-size:.82rem;font-weight:700;letter-spacing:.04em}
.site-nav a{color:var(--muted);border:0}
.site-nav a:hover{color:var(--green)}
.site-nav button{
  background:none;border:0;font:inherit;color:var(--muted);cursor:pointer;
  font-weight:700;letter-spacing:.04em;padding:0;
}
.site-nav button:hover{color:var(--green)}

/* ==========================================================================
   HERO
   ========================================================================== */
.hero{padding-block:clamp(36px,6vw,72px) clamp(28px,4vw,48px);text-align:center}
.hero__portrait{
  width:clamp(116px,15vw,152px);height:clamp(116px,15vw,152px);
  border-radius:50%;object-fit:cover;object-position:50% 30%;
  margin:0 auto clamp(20px,3vw,30px);
  border:4px solid var(--paper-2);
  box-shadow:0 10px 30px -12px rgba(20,90,50,.34);
}
.hero h1{font-size:clamp(2.1rem,1.35rem + 3.2vw,3.7rem)}
.hero__dates{
  margin-top:.9rem;font-size:.95rem;letter-spacing:.14em;
  text-transform:uppercase;color:var(--faint);font-weight:700;
}
.hero__line{
  margin:clamp(20px,3vw,30px) auto 0;max-width:30ch;
  font-family:var(--serif);font-style:italic;
  font-size:clamp(1.15rem,1rem + .7vw,1.5rem);line-height:1.45;color:var(--green);
}
.hero__banner{
  margin-top:clamp(30px,4.5vw,54px);
  border-radius:4px;overflow:hidden;
  box-shadow:0 24px 60px -34px rgba(35,40,42,.55);
}
.hero__banner img{width:100%;max-height:min(58svh,540px);object-fit:cover;object-position:50% 34%}

/* ==========================================================================
   SECTIONS
   ========================================================================== */
.band{padding-block:clamp(46px,6.5vw,88px);border-top:1px solid var(--line-soft)}
.band--soft{background:var(--green-soft);border-top-color:var(--green-line)}
.band__head{margin-bottom:clamp(22px,3vw,36px)}
.band__head h2{font-size:clamp(1.55rem,1.2rem + 1.5vw,2.35rem);margin-top:.7rem}
.prose > * + *{margin-top:1.15rem}
.prose p{max-width:68ch}
.prose .lead{font-size:clamp(1.08rem,1.02rem + .4vw,1.28rem);line-height:1.6;color:var(--ink)}

/* callout for the facts a letter-writer must copy exactly */
.factbox{
  background:var(--paper-2);
  border:1px solid var(--green-line);
  border-left:3px solid var(--green);
  border-radius:3px;
  padding:clamp(18px,2.6vw,28px);
  margin-top:1.6rem;
}
.factbox h3{font-size:1.05rem;margin-bottom:.9rem;font-family:var(--sans);font-weight:700;letter-spacing:.02em;color:var(--ink)}
.factbox dl{display:grid;grid-template-columns:auto 1fr;gap:.5rem 1.4rem;font-size:.95rem}
.factbox dt{font-weight:700;color:var(--ink);white-space:nowrap}
.factbox dd{color:var(--muted)}
.factbox .addr{font-style:normal;line-height:1.6;color:var(--ink)}
@media (max-width:560px){
  .factbox dl{grid-template-columns:1fr;gap:.15rem}
  .factbox dd{margin-bottom:.7rem}
}

.tips{list-style:none;margin-top:1.4rem}
.tips li{position:relative;padding-left:1.7rem;margin-top:.75rem}
.tips li::before{
  content:"";position:absolute;left:.15rem;top:.62em;
  width:7px;height:7px;border-radius:50%;background:var(--green);opacity:.5;
}

.note{
  margin-top:1.5rem;font-size:.93rem;color:var(--muted);
  background:rgba(20,90,50,.05);border-radius:3px;padding:.9rem 1.1rem;
}
.note strong{color:var(--ink)}

/* reference links */
.reflist{list-style:none;margin-top:.4rem}
.reflist li{border-bottom:1px solid var(--line-soft)}
.reflist li:first-child{border-top:1px solid var(--line-soft)}
.reflist a{display:block;padding:.95rem 0;border:0;color:var(--ink)}
.reflist a:hover{color:var(--green)}
.reflist .t{font-family:var(--serif);font-size:1.06rem}
.reflist .d{display:block;font-size:.84rem;color:var(--faint);margin-top:.15rem}

/* ==========================================================================
   GALLERY — masonry columns, so nothing is cropped
   ========================================================================== */
.gallery{
  column-count:3;
  column-gap:clamp(10px,1.6vw,18px);
  margin-top:clamp(8px,1.5vw,16px);
}
@media (max-width:900px){ .gallery{column-count:2} }
@media (max-width:520px){ .gallery{column-count:1} }

.shot{
  break-inside:avoid;
  margin:0 0 clamp(10px,1.6vw,18px);
  display:block;width:100%;
  padding:0;border:0;background:none;cursor:zoom-in;
  border-radius:3px;overflow:hidden;
  position:relative;
  box-shadow:0 2px 10px -4px rgba(35,40,42,.3);
  transition:box-shadow .22s,transform .22s;
}
.shot img{width:100%;height:auto;display:block;transition:transform .4s ease}
.shot:hover{box-shadow:0 14px 34px -14px rgba(35,40,42,.45)}
.shot:hover img{transform:scale(1.02)}

/* ==========================================================================
   LIGHTBOX
   ========================================================================== */
.lightbox{
  padding:0;border:0;background:transparent;
  width:100vw;max-width:100vw;height:100svh;max-height:100svh;
  overflow:hidden;
}
.lightbox::backdrop{background:rgba(18,22,20,.92)}
.lightbox__stage{
  width:100%;height:100%;
  display:grid;place-items:center;
  padding:clamp(44px,6vw,72px) clamp(12px,5vw,80px);
}
.lightbox img{
  max-width:100%;max-height:100%;
  width:auto;height:auto;
  object-fit:contain;
  border-radius:2px;
  box-shadow:0 30px 80px -30px rgba(0,0,0,.9);
}
.lightbox__bar{
  position:absolute;top:0;left:0;right:0;
  display:flex;align-items:center;justify-content:space-between;
  gap:1rem;padding:14px clamp(12px,3vw,22px);
  color:rgba(255,255,255,.85);font-size:.82rem;letter-spacing:.08em;
}
.lb-btn{
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.22);
  color:#fff;width:40px;height:40px;border-radius:50%;
  display:grid;place-items:center;cursor:pointer;transition:background .18s;
}
.lb-btn:hover{background:rgba(255,255,255,.24)}
.lb-nav{
  position:absolute;top:50%;transform:translateY(-50%);
  width:46px;height:46px;
}
.lb-prev{left:clamp(8px,2vw,20px)}
.lb-next{right:clamp(8px,2vw,20px)}
@media (max-width:520px){
  .lb-nav{width:40px;height:40px}
  .lightbox__stage{padding:56px 8px 64px}
}

/* ==========================================================================
   CONTACT MODAL
   ========================================================================== */
.modal{
  margin:auto;                    /* the *{margin:0} reset kills the UA centring */
  padding:0;border:1px solid var(--line);border-radius:4px;
  background:var(--paper-2);color:var(--muted);
  width:min(600px,calc(100vw - 2rem));
  max-height:min(88svh,880px);overflow:auto;overscroll-behavior:contain;
  box-shadow:0 40px 90px -34px rgba(35,40,42,.55);
}
.modal::backdrop{background:rgba(18,22,20,.62);backdrop-filter:blur(3px);-webkit-backdrop-filter:blur(3px)}
.modal__inner{padding:clamp(22px,3.2vw,36px)}
.modal__head{display:flex;align-items:flex-start;justify-content:space-between;gap:1.4rem;margin-bottom:1rem}
.modal__head h2{font-size:clamp(1.4rem,1.15rem + 1vw,1.85rem);margin-top:.45rem}
.modal__close{
  flex:0 0 auto;background:none;border:1px solid var(--line);border-radius:3px;
  color:var(--muted);width:36px;height:36px;display:grid;place-items:center;cursor:pointer;
  transition:border-color .18s,color .18s;
}
.modal__close:hover{border-color:var(--green);color:var(--green)}
.modal__lede{margin-bottom:1.5rem}
.modal[open]{animation:modal-in .22s ease-out}
@keyframes modal-in{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
html.modal-open,body.modal-open{overflow:hidden}

@media (max-width:560px){
  .modal{width:100vw;max-width:100vw;height:100svh;max-height:100svh;border-radius:0;border-inline:0}
  .modal__inner{padding:20px 18px 30px}
}

/* ---------- form ---------- */
.field + .field{margin-top:1.05rem}
.field label{display:block;font-size:.78rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--ink);margin-bottom:.45rem}
.field .req{color:var(--green)}
.field input,.field textarea{
  width:100%;font-family:var(--sans);font-size:1rem;color:var(--ink);
  background:var(--paper);border:1px solid var(--line);border-radius:3px;
  padding:.7em .85em;transition:border-color .16s,box-shadow .16s,background .16s;
}
.field textarea{min-height:6.4em;resize:vertical;line-height:1.6}
.field input:hover,.field textarea:hover{border-color:rgba(35,40,42,.24)}
.field input:focus,.field textarea:focus{outline:0;background:var(--paper-2);border-color:var(--green);box-shadow:0 0 0 3px rgba(20,90,50,.1)}
.field input[aria-invalid="true"],.field textarea[aria-invalid="true"]{border-color:var(--err)}
.field__err{display:none;margin-top:.35rem;font-size:.85rem;color:var(--err)}
.field__err.is-shown{display:block}
.counter{float:right;font-size:.7rem;color:var(--faint);letter-spacing:.06em;font-weight:400}
.counter.is-near{color:var(--err)}
.trap{display:none}
.turnstile-slot{margin-top:1.1rem;min-height:65px}
.form-actions{margin-top:1.2rem;display:flex;flex-wrap:wrap;align-items:center;gap:1rem}
.btn{
  font-family:var(--sans);font-size:.82rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;
  background:var(--green);color:#fff;border:1px solid var(--green);border-radius:3px;
  padding:.9em 1.9em;cursor:pointer;transition:background .18s,border-color .18s,transform .1s;
}
.btn:hover:not(:disabled){background:var(--green-deep);border-color:var(--green-deep)}
.btn:active:not(:disabled){transform:translateY(1px)}
.btn:disabled{opacity:.55;cursor:not-allowed}
.btn__spin{display:none;width:.8em;height:.8em;margin-right:.55em;border:2px solid rgba(255,255,255,.4);border-top-color:#fff;border-radius:50%;animation:spin .7s linear infinite}
.is-sending .btn__spin{display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}
.form-status{font-size:.9rem;line-height:1.45}
.form-status:empty{display:none}
.form-status.is-err{color:var(--err)}
.form-priv{margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--line-soft);font-size:.8rem;line-height:1.6;color:var(--faint)}
.sent{display:none;text-align:center;padding:clamp(26px,4vw,48px) 1rem}
.sent.is-shown{display:block}
.sent__mark{width:44px;height:44px;margin:0 auto 1.1rem;border-radius:50%;border:1px solid var(--green);color:var(--green);display:grid;place-items:center}
.sent h3{font-size:1.3rem;margin-bottom:.6rem}
.sent p{max-width:38ch;margin-inline:auto}
.sent button{margin-top:1.5rem;background:none;border:1px solid var(--line);font-family:var(--sans);font-size:.76rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);border-radius:3px;padding:.72em 1.4em;cursor:pointer}
.sent button:hover{border-color:var(--green);color:var(--green)}
.form-card.is-sent .form-live{display:none}

/* ==========================================================================
   FOOTER + 404
   ========================================================================== */
.site-foot{border-top:1px solid var(--line-soft);padding-block:clamp(30px,4vw,50px);background:var(--green-soft)}
.site-foot__in{display:flex;flex-wrap:wrap;gap:.8rem 2.4rem;justify-content:space-between;align-items:center;font-size:.84rem;color:var(--faint)}
.site-foot a{color:var(--muted);border:0}
.site-foot a:hover{color:var(--green)}

.notfound{min-height:70svh;display:grid;place-items:center;text-align:center}
.notfound__code{font-family:var(--serif);font-size:clamp(3rem,8vw,5.5rem);color:var(--green);line-height:1}
.notfound h1{font-size:clamp(1.3rem,1rem + 1.4vw,2rem);margin-top:.9rem}
.notfound p{margin:.9rem auto 0;max-width:40ch}
.notfound .backlink{display:inline-block;margin-top:1.8rem;border:1px solid var(--line);border-radius:3px;font-size:.78rem;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--ink);padding:.8em 1.6em}
.notfound .backlink:hover{border-color:var(--green);color:var(--green)}

/* ==========================================================================
   Reveal (visible by default; JS opts into hiding)
   ========================================================================== */
html.js-reveal .reveal{opacity:0;transform:translateY(12px);transition:opacity .7s ease,transform .7s ease}
html.js-reveal .reveal.is-in{opacity:1;transform:none}

[id]{scroll-margin-top:5.5rem}

@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  html.js-reveal .reveal{opacity:1;transform:none}
}

/* small spacing utilities, kept out of inline styles so the CSP stays strict */
.mt-md{margin-top:1.1rem}
.mt-lg{margin-top:1.6rem}
