:root{
    --paper:#F4F6F3;
    --paper-2:#EAEEE9;
    --ink:#1E3128;
    --ink-soft:#2C4437;
    --rule:#CBD6CD;
    --haze:#5F7468;
    --accent:#35594A;
    --forest:#23543E;
    --band:#1B2E25;
    --band-ink:#F1F4F0;
    --script:"Pinyon Script","Snell Roundhand","Apple Chancery",cursive;
    --display:"Cormorant Garamond","Garamond","Times New Roman",serif;
    --body:"Libre Baskerville","Baskerville","Georgia",serif;
    --measure:33rem;
    
    color-scheme:light;
  }

  *{box-sizing:border-box;}
  body{
    
    margin:0;
    background:var(--paper);
    color:var(--ink);
    font-family:var(--body);
    font-size:.94rem;
    line-height:1.75;
    -webkit-font-smoothing:antialiased;
  }
  img{display:block;width:100%;height:auto;}
  a{color:inherit;}
  :focus-visible{outline:2px solid var(--accent);outline-offset:3px;}

  .wrap{max-width:66rem;margin:0 auto;padding:0 clamp(1.25rem,4vw,3rem);}
  .caps{
    font-family:var(--display);
    font-weight:400;
    font-size:.78rem;
    letter-spacing:.28em;
    text-transform:uppercase;
  }

  
  .masthead{
    padding-top:clamp(2rem,5vw,3.25rem);
    padding-bottom:1.4rem;
    text-align:center;
  }
  .masthead__names{
    font-family:var(--script);
    font-weight:400;
    font-size:clamp(2.7rem,7vw,4.6rem);
    line-height:1.05;
    margin:0;
    color:var(--ink);
  }
  .masthead__names a{text-decoration:none;}
  .masthead__meta{
    margin:.7rem 0 0;
    color:var(--haze);
  }

  .nav{border-top:1px solid var(--rule);border-bottom:1px solid var(--rule);}
  .nav__inner{
    display:flex;flex-wrap:wrap;justify-content:center;
    gap:.35rem 2.2rem;
    padding-top:1rem;padding-bottom:1rem;
  }
  .nav a{
    text-decoration:none;
    color:var(--haze);
    padding-bottom:3px;
    border-bottom:1px solid transparent;
    transition:color .18s ease,border-color .18s ease;
  }
  .nav a:hover{color:var(--forest);}
  .nav a[aria-current="page"]{color:var(--forest);border-bottom-color:var(--forest);}

  
  .page{
    padding-top:clamp(2.5rem,6vw,4.5rem);
    padding-bottom:clamp(3rem,7vw,5.5rem);
  }
  .page__head{text-align:center;max-width:40rem;margin:0 auto clamp(2.25rem,5vw,3.5rem);}
  .page__eyebrow{color:var(--haze);margin:0 0 .9rem;}
  .h1{
    font-family:var(--display);
    font-weight:300;
    font-size:clamp(2.1rem,4.6vw,3.2rem);
    line-height:1.15;
    margin:0 0 .9rem;
    text-wrap:balance;
  }
  .page__intro{margin:0 auto;max-width:var(--measure);color:var(--ink-soft);}

  
  .banner{margin-bottom:clamp(2rem,5vw,3.25rem);}
  .banner img{
    height:clamp(28rem,78vh,46rem);
    object-fit:cover;
    object-position:center 45%;
  }
  @media (max-width:44rem){
    
    .banner img{height:clamp(22rem,62vh,30rem);object-position:64% 45%;}
  }
  .home__welcome{text-align:center;max-width:36rem;margin:0 auto;}
  .home__welcome p{margin:0 0 1.5rem;color:var(--ink-soft);}
  .home__rule{
    width:4rem;height:1px;background:var(--rule);
    border:0;margin:2.5rem auto;
  }
  .home__facts{
    display:grid;
    grid-template-columns:repeat(3,minmax(0,1fr));
    gap:1.75rem clamp(1.5rem,4vw,3rem);
    max-width:52rem;
    margin:0 auto;
    align-items:start;
  }
  .fact{text-align:center;}
  .fact__label{display:block;color:var(--haze);margin-bottom:.35rem;}
  .fact__value{
    font-family:var(--display);
    font-size:1.35rem;line-height:1.3;
  }
  .home__pair{
    display:grid;grid-template-columns:1fr 1fr;
    gap:clamp(1rem,3vw,2.25rem);
    margin-top:clamp(2.5rem,6vw,4rem);
    align-items:start;
  }
  .home__pair figure{margin:0;}
  .home__pair img{aspect-ratio:2/3;object-fit:cover;}
  .home__cap{margin:.8rem 0 0;color:var(--haze);text-align:center;}
  .home__dateline{
    margin:1.6rem 0 0;text-align:center;color:var(--haze);
    font-family:var(--display);font-style:italic;font-size:1rem;letter-spacing:.02em;
  }

  
  .story{
    margin-top:clamp(3rem,7vw,5rem);
    padding-top:clamp(2.5rem,6vw,4rem);
    border-top:1px solid var(--rule);
  }
  .story__head{text-align:center;margin-bottom:clamp(2rem,5vw,3rem);}
  .story__eyebrow{color:var(--haze);margin:0 0 .7rem;}
  .story__title{
    font-family:var(--script);
    font-weight:400;
    font-size:clamp(2.4rem,5.5vw,3.6rem);
    line-height:1.1;margin:0;
  }
  .story__grid{
    display:grid;
    grid-template-columns:minmax(0,.85fr) minmax(0,1fr);
    gap:clamp(1.5rem,4vw,3.25rem);
    align-items:start;
  }
  .story__figure{margin:0;}
  .story__figure img{aspect-ratio:4/3;object-fit:cover;}
  .story__cap{margin:.8rem 0 0;color:var(--haze);}
  .story__text p{margin:0 0 1.15rem;color:var(--ink-soft);max-width:32rem;}
  .story__text p:last-child{margin-bottom:0;}

  
  .events{display:flex;flex-direction:column;max-width:52rem;margin:0 auto;}
  .event{
    display:grid;
    grid-template-columns:7rem minmax(0,1fr) 14rem;
    gap:clamp(1rem,3vw,2.25rem);
    padding:1.9rem 0;
    border-top:1px solid var(--rule);
  }
  .event__art{margin:0;justify-self:end;align-self:center;}
  .event__art img{
    width:100%;max-height:8rem;
    object-fit:contain;object-position:center;
  }
  .event:first-child{border-top:none;padding-top:0;}
  .event__time{
    font-family:var(--display);
    font-size:1.55rem;line-height:1.15;
    font-variant-numeric:tabular-nums;
  }
  .event__day{
    display:block;
    font-family:var(--display);
    font-size:.7rem;letter-spacing:.26em;text-transform:uppercase;
    color:var(--haze);margin-bottom:.4rem;
  }
  .event__name{
    font-family:var(--display);
    font-size:1.75rem;line-height:1.15;margin:0 0 .4rem;font-weight:400;
  }
  .event__venue{margin:0;}
  .event__addr{margin:.2rem 0 0;color:var(--haze);font-size:.86rem;}
  .event__note{margin:.55rem 0 0;color:var(--haze);font-size:.82rem;font-style:italic;}

  
  .blocks{max-width:44rem;margin:0 auto;}
  .block{padding-top:2.5rem;border-top:1px solid var(--rule);margin-top:2.5rem;}
  .block:first-child{padding-top:0;border-top:none;margin-top:0;}
  .block__h{color:var(--haze);margin:0 0 .9rem;}
  .block p{max-width:var(--measure);margin:0 0 .9rem;}
  .block p:last-child{margin-bottom:0;}
  .code{
    display:inline-block;
    font-family:var(--display);
    font-size:.85rem;letter-spacing:.2em;text-transform:uppercase;
    border:1px solid var(--forest);
    color:var(--forest);
    padding:.4rem .85rem;margin:.3rem 0;
  }
  .link{
    display:inline-block;
    color:var(--forest);
    text-decoration:none;
    border-bottom:1px solid var(--forest);
    padding-bottom:2px;font-size:.9rem;
  }
  .link:hover{color:var(--ink);border-bottom-color:var(--ink);}

  
  .faq{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(18rem,1fr));
    gap:2.4rem 3.5rem;max-width:52rem;margin:0 auto;
  }
  .faq__q{
    font-family:var(--display);
    font-size:1.3rem;line-height:1.25;margin:0 0 .5rem;font-weight:400;
  }
  .faq__a{margin:0;color:var(--haze);font-size:.86rem;line-height:1.8;}
  .faq__a + .faq__a{margin-top:.6rem;}

  
  .center-block{max-width:34rem;margin:0 auto;text-align:center;}
  .center-block p{margin:0 0 1.5rem;color:var(--ink-soft);}
  .btn{
    display:inline-block;
    font-family:var(--display);
    font-size:.8rem;letter-spacing:.28em;text-transform:uppercase;
    text-decoration:none;
    padding:1rem 2.6rem;
    border:1px solid var(--forest);
    background:var(--forest);
    color:var(--paper);
    transition:background .2s ease,color .2s ease,border-color .2s ease;
  }
  .btn:hover{background:transparent;color:var(--forest);}
  .center-block p.note{margin:2.75rem 0 0;color:var(--haze);font-size:.82rem;}

  
  .gift__lead{
    font-family:var(--display);
    font-size:clamp(1.15rem,2.4vw,1.45rem);
    line-height:1.5;
    color:var(--ink) !important;
    margin:0 0 1.4rem !important;
  }
  .gift__body{margin-bottom:1.9rem !important;}
  
  .gift-cards__label{
    display:block;text-align:center;
    margin:0 0 1.9rem;
    font-family:var(--display);
    font-size:.78rem;letter-spacing:.28em;
    color:var(--haze);
  }
  .gift__script{
    font-family:var(--script);
    font-size:clamp(2.2rem,6vw,3.1rem);
    line-height:1.1;
    color:var(--forest) !important;
    margin:0 !important;
  }
  .ornament{
    display:flex;align-items:center;justify-content:center;gap:1rem;
    max-width:16rem;margin:2.9rem auto 2.6rem;
    color:var(--haze);
  }
  .ornament::before,.ornament::after{
    content:"";flex:1;height:1px;background:var(--rule);
  }
  .ornament span{font-size:.6rem;letter-spacing:.3em;line-height:1;}

  .gift-cards{
    display:grid;grid-template-columns:repeat(auto-fit,minmax(15rem,1fr));
    gap:1.5rem;max-width:40rem;margin:0 auto;
  }
  .gift-card{
    border:1px solid var(--rule);
    background:var(--paper-2);
    padding:2rem 1.5rem 1.75rem;
    text-align:center;
  }
  .gift-card__label{
    display:block;margin:0 0 1rem;
    font-size:.68rem;letter-spacing:.24em;color:var(--haze);
  }
  .gift-card__method{
    font-family:var(--display);
    font-size:1.35rem;line-height:1.2;margin:0 0 .9rem;color:var(--ink);
  }
  .gift-card__addr{
    display:inline-block;
    position:relative;
    font-family:var(--body);
    font-size:.8rem;line-height:1.5;
    word-break:break-word;
    color:var(--forest);
    background:none;border:0;padding:0;margin:0;
    cursor:pointer;
    border-bottom:1px solid var(--rule);
    transition:border-color .2s ease;
  }
  .gift-card__addr:hover{border-bottom-color:var(--forest);}
  
  .gift-card__addr::after{
    content:"";position:absolute;
    left:-.6rem;right:-.6rem;top:-.7rem;bottom:-.7rem;
  }
  .gift-card__hint{
    margin:.85rem 0 0;font-size:.72rem;letter-spacing:.14em;
    text-transform:uppercase;font-family:var(--display);
    color:var(--haze);
  }
  .gift-card__hint[data-copied="1"]{color:var(--forest);}

  
  .field{display:block;margin:0 0 1.6rem;text-align:left;}
  .field__label{
    display:block;margin:0 0 .5rem;
    font-size:.68rem;letter-spacing:.24em;color:var(--haze);
  }
  .field__input,.field__select{
    width:100%;
    font-family:var(--body);font-size:.94rem;
    color:var(--ink);background:var(--paper);
    border:1px solid var(--rule);border-radius:0;
    padding:.85rem 1rem;
    -webkit-appearance:none;appearance:none;
  }
  .field__select{
    background-image:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 8'><path d='M1 1l5 5 5-5' fill='none' stroke='%235F7468' stroke-width='1.2'/></svg>");
    background-repeat:no-repeat;background-position:right 1rem center;background-size:12px;
    padding-right:2.6rem;
  }
  .field__input:focus,.field__select:focus{outline:none;border-color:var(--forest);}
  .field__input::placeholder{color:var(--haze);opacity:.7;}

  .guestcard{
    border-top:1px solid var(--rule);
    padding:2rem 0;
    max-width:40rem;margin:0 auto;
  }
  .guestcard:first-child{border-top:none;padding-top:0;}
  .guestcard__name{
    font-family:var(--display);
    font-size:1.6rem;line-height:1.15;margin:0 0 1.4rem;font-weight:400;
  }
  .eventrow{
    display:grid;grid-template-columns:minmax(0,1fr) auto;
    gap:1rem;align-items:center;
    padding:.75rem 0;border-top:1px solid var(--paper-2);
  }
  .eventrow:first-of-type{border-top:none;}
  .eventrow__name{margin:0;}
  .eventrow__when{display:block;color:var(--haze);font-size:.78rem;}
  .choice{display:inline-flex;border:1px solid var(--rule);}
  .choice label{
    font-family:var(--display);
    font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;
    padding:.55rem 1rem;cursor:pointer;color:var(--haze);
    transition:background .15s ease,color .15s ease;
  }
  .choice label + label{border-left:1px solid var(--rule);}
  .choice input{position:absolute;opacity:0;pointer-events:none;}
  .choice input:checked + span{color:var(--paper);}
  .choice label:has(input:checked),.choice label.is-on{background:var(--forest);color:var(--paper);}
  .choice label:has(input:focus-visible){outline:2px solid var(--accent);outline-offset:2px;}
  .guestcard__extras{margin-top:1.3rem;display:grid;gap:1rem;grid-template-columns:repeat(auto-fit,minmax(13rem,1fr));}
  .guestcard__extras .field{margin:0;}
  .rsvp__msg{margin:1.1rem 0 0;color:var(--haze);font-size:.84rem;min-height:1.2em;}
  .rsvp__msg[data-tone="error"]{color:#8C3B33;}
  .linklike{
    font:inherit;color:var(--forest);background:none;border:0;padding:0;
    cursor:pointer;text-decoration:underline;text-underline-offset:3px;
  }
  .btn[disabled]{opacity:.5;cursor:default;}

  
  .foot{border-top:1px solid var(--rule);}
  .foot__row{
    display:flex;flex-wrap:wrap;justify-content:space-between;gap:.6rem 2rem;
    padding-top:2rem;padding-bottom:2.5rem;
    color:var(--haze);
  }

  @media (max-width:44rem){
    .event{grid-template-columns:1fr;gap:.5rem;}
    .event__art{justify-self:start;width:min(100%,16rem);margin-top:.9rem;}
    .event__art img{max-height:6.5rem;object-position:left center;}
    .event__time{font-size:1.3rem;}
    .home__pair{grid-template-columns:1fr;}
    .home__facts{grid-template-columns:1fr;gap:1.4rem;}
    .story__grid{grid-template-columns:1fr;}
    
    .nav__inner{gap:.7rem 1.3rem;}
    .nav a{padding-top:.45rem;}
    .caps{font-size:.72rem;letter-spacing:.22em;}
  }
  @media (prefers-reduced-motion: reduce){
    *{transition:none !important;}
  }
.gate{min-height:100vh;min-height:100dvh;display:flex;align-items:center;justify-content:center;padding:2rem 1.25rem;text-align:center;}
.gate[hidden]{display:none;}
.gate__inner{width:100%;}
.gate__form{max-width:22rem;margin:0 auto;}
.gate__names{font-family:var(--script);font-size:clamp(2.1rem,11vw,3.4rem);line-height:1.15;margin:0;color:var(--ink);}
.gate__meta{margin:.7rem 0 2.8rem;color:var(--haze);}
@media (max-width:360px){.gate__meta{letter-spacing:.13em;}}
.gate__label{display:block;margin:0 0 .9rem;color:var(--haze);}
.gate__field{position:relative;}
.gate__field input{width:100%;font-family:var(--body);font-size:16px;padding:.9rem 4.2rem;border:1px solid var(--rule);border-radius:0;background:#fff;color:var(--ink);text-align:center;letter-spacing:.08em;-webkit-appearance:none;appearance:none;}
.gate__field input:focus{outline:none;border-color:var(--forest);}
.gate__show{position:absolute;right:.3rem;top:50%;transform:translateY(-50%);background:none;border:0;padding:.65rem .7rem;font-family:var(--display);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;color:var(--haze);cursor:pointer;}
.gate__show:hover,.gate__show:focus-visible{color:var(--forest);}
.gate__btn{display:block;width:100%;margin-top:1rem;padding:1rem;border:1px solid var(--forest);background:var(--forest);color:var(--paper);cursor:pointer;transition:background .2s ease,color .2s ease;}
.gate__btn:focus-visible{background:transparent;color:var(--forest);}
@media (hover:hover){.gate__btn:hover{background:transparent;color:var(--forest);}}
.gate__btn[disabled]{opacity:.6;cursor:default;}
.gate__msg{min-height:1.5em;margin:1rem 0 0;font-size:.86rem;line-height:1.5;color:#8C3B33;}
.gate__noscript{text-align:center;padding:4rem 1.5rem;color:var(--haze);}
