:root{
  --paper:    #efe9db;
  --card:     #fdfbf5;
  --panel:    #f2ecdd;
  --ink:      #21263a;
  --ink-soft: #4b5165;
  --navy:     #1e3a6e;
  --navy-deep:#142549;
  --gold:     #a3803f;
  --gold-soft:#c9ac6c;
  --rule:     #d9cfb2;
  --checker:  #16181f;
  --shadow:   rgba(20,37,73,.16);

  --font-display:"Cormorant Garamond","Iowan Old Style","Palatino Linotype",serif;
  --font-body:   "EB Garamond","Iowan Old Style",Georgia,serif;
  --font-ui:     "Inter",-apple-system,"Segoe UI",sans-serif;
}

*{ box-sizing:border-box; }

body{
  margin:0;
  min-height:100vh;
  background:var(--paper);
  color:var(--ink);
  font-family:var(--font-body);
  padding:clamp(14px,3.5vw,48px) clamp(10px,3vw,24px) 56px;
}

.sheet{
  width:100%;
  max-width:760px;
  margin:0 auto;
  display:flex;
  flex-direction:column;
  gap:clamp(20px,3.4vw,32px);
}

/* ============ the framed invitation plate ============ */
.plate{
  --bw:clamp(6px,1.05vw,12px);
  padding:var(--bw);
  background:
    repeating-conic-gradient(var(--checker) 0% 25%, #ffffff 0% 50%)
    0 0 / calc(var(--bw)*2) calc(var(--bw)*2);
  box-shadow:0 26px 54px -28px var(--shadow);
}

.plate-body{
  position:relative;
  container-type:inline-size;
  background:var(--card);
  overflow:hidden;
}

/* background art: columns + mosaic floor. The text sits on top of it. */
.frame-art{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
}

.floor{
  position:absolute;
  left:0; right:0; bottom:0;
  width:100%;
  height:10.36cqw;
  display:block;
}

.col{
  position:absolute;
  width:var(--colw,13.4cqw);
  top:max(4.96cqw,32px);
  bottom:4.64cqw;
  display:flex;
  flex-direction:column;
  filter:drop-shadow(0 10px 14px rgba(20,37,73,.13));
}
.col-l{ left:.55cqw; }
.col-r{ right:.55cqw; }

.col > div{
  width:100%;
  background-size:100% 100%;
  background-repeat:no-repeat;
}
/* only the plain shaft stretches, so capital and base never distort */
.col-top,.col-bot{ flex:0 0 auto; }
.col-mid{ flex:1 1 auto; min-height:0; }

.col-l .col-top{ aspect-ratio:124/358; background-image:url("/img/colL_top.png"); }
.col-l .col-mid{                       background-image:url("/img/colL_mid.png"); }
.col-l .col-bot{ aspect-ratio:124/125; background-image:url("/img/colL_bot.png"); }
.col-r .col-top{ aspect-ratio:124/358; background-image:url("/img/colR_top.png"); }
.col-r .col-mid{                       background-image:url("/img/colR_mid.png"); }
.col-r .col-bot{ aspect-ratio:124/123; background-image:url("/img/colR_bot.png"); }

.plate-inner{
  position:relative;
  z-index:1;
  text-align:center;
  padding:2.6cqw var(--textpad,15.5cqw) 13cqw;
}

.motto{
  font-family:var(--font-ui);
  font-size:clamp(7px,1.15cqw,11px);
  letter-spacing:.15em;
  text-transform:uppercase;
  color:var(--ink-soft);
  margin:0 calc(-1 * var(--textpad,15.5cqw) + 3cqw) 1.6cqw;
}

.seal{
  width:max(72px,11.5cqw);
  height:auto;
  aspect-ratio:1;
  display:block;
  margin:0 auto 1.8cqw;
  filter:drop-shadow(0 6px 12px rgba(20,37,73,.22));
}

.glory{
  font-family:var(--font-display);
  font-weight:600;
  letter-spacing:.13em;
  color:var(--navy);
  font-size:clamp(13px,2.15cqw,18px);
  margin:0 0 .5em;
}

.lodge{
  font-family:var(--font-display);
  font-weight:600;
  font-size:clamp(15px,2.7cqw,23px);
  color:var(--navy-deep);
  margin:0 0 .25em;
  text-wrap:balance;
}

.lodge-sub{
  font-family:var(--font-ui);
  font-size:clamp(9.5px,1.5cqw,12.5px);
  color:var(--ink-soft);
  margin:0 0 .28em;
  text-wrap:balance;
}

.rite{
  font-family:var(--font-display);
  font-style:italic;
  font-size:clamp(11px,1.85cqw,15px);
  color:var(--gold);
  letter-spacing:.08em;
  margin:.9cqw 0 0;
}

.divider{
  border:none;
  border-top:1px solid var(--rule);
  width:64px;
  margin:3.4cqw auto;
}

.lead{
  font-size:clamp(13px,2.1cqw,17.5px);
  line-height:1.62;
  margin:0;
  text-wrap:pretty;
}

.initiate{
  font-family:var(--font-display);
  font-weight:600;
  font-size:clamp(20px,4.1cqw,36px);
  color:var(--navy-deep);
  margin:2.4cqw 0;
  text-wrap:balance;
}

.details{
  font-size:clamp(12.5px,2cqw,17px);
  line-height:1.72;
  margin:0;
  text-wrap:pretty;
}
.details strong{ color:var(--navy-deep); font-weight:600; }

.agape{
  display:block;
  margin-top:1.8cqw;
  font-style:italic;
  color:var(--ink-soft);
}

.dress{
  margin:1.2cqw 0 0;
  font-family:var(--font-ui);
  font-size:clamp(9.5px,1.45cqw,12.5px);
  letter-spacing:.09em;
  text-transform:uppercase;
  color:var(--gold);
}

/* narrow screens: slimmer columns so the text keeps its measure */
@media (max-width:640px){
  .plate-body{ --colw:10.5cqw; --textpad:12.5cqw; }
}

/* ============ confirmation card ============ */
.rsvp-card{
  background:var(--card);
  border:1px solid var(--rule);
  box-shadow:0 20px 44px -30px var(--shadow);
}

.rsvp{
  padding:clamp(24px,4.6vw,40px) clamp(20px,5vw,52px) clamp(26px,4.6vw,40px);
  background:var(--panel);
  border-bottom:1px solid var(--rule);
}

.rsvp-heading{
  text-align:center;
  margin:0 0 4px;
  font-family:var(--font-display);
  font-weight:600;
  font-size:clamp(20px,4.4vw,26px);
  color:var(--navy-deep);
}

.rsvp-sub{
  text-align:center;
  margin:0 0 10px;
  font-family:var(--font-ui);
  font-size:13px;
  color:var(--ink-soft);
}

.rsvp-prazo{
  text-align:center;
  margin:0 auto 24px;
  padding:7px 14px;
  max-width:max-content;
  font-family:var(--font-ui);
  font-size:12.5px;
  color:var(--navy-deep);
  background:#e9dfc4;
  border:1px solid var(--gold-soft);
}
.rsvp-prazo strong{ font-weight:600; }

form{ display:grid; gap:15px; max-width:480px; margin:0 auto; }
form[hidden]{ display:none; }
.field{ display:flex; flex-direction:column; gap:6px; }

label{
  font-family:var(--font-ui);
  font-size:11px;
  font-weight:600;
  letter-spacing:.07em;
  text-transform:uppercase;
  color:var(--navy);
}

input,select{
  font-family:var(--font-ui);
  font-size:16px;
  color:var(--ink);
  background:var(--card);
  border:1px solid var(--rule);
  padding:11px 13px;
  outline:none;
  appearance:none;
  border-radius:0;
  width:100%;
}

select{
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%231e3a6e' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
  background-repeat:no-repeat;
  background-position:right 13px center;
  padding-right:32px;
}

input:focus,select:focus{
  border-color:var(--navy);
  box-shadow:0 0 0 3px rgba(30,58,110,.15);
}

.row-2{ display:grid; grid-template-columns:1fr 1fr; gap:15px; }
@media (max-width:430px){ .row-2{ grid-template-columns:1fr; } }

button{
  font-family:var(--font-ui);
  font-size:13px;
  font-weight:600;
  letter-spacing:.06em;
  text-transform:uppercase;
  color:var(--card);
  background:var(--navy);
  border:none;
  padding:13px 20px;
  margin-top:3px;
  cursor:pointer;
  transition:background 120ms ease;
}
button:hover:not(:disabled){ background:var(--navy-deep); }
button:focus-visible{ outline:2px solid var(--gold); outline-offset:2px; }
button:disabled{ background:var(--ink-soft); cursor:not-allowed; }

.form-msg{
  font-family:var(--font-ui);
  font-size:13px;
  text-align:center;
  color:#8a2b2b;
  background:#f7e4e4;
  border:1px solid #e0b9b9;
  padding:9px 14px;
  margin:0;
}
.form-msg[hidden]{ display:none; }

.done{ text-align:center; max-width:480px; margin:0 auto; }
.done[hidden]{ display:none; }

.done-mark{
  font-family:var(--font-ui);
  font-size:26px;
  line-height:54px;
  width:54px;
  height:54px;
  margin:0 auto 14px;
  color:var(--card);
  background:var(--navy);
  border-radius:50%;
}

.done-title{
  font-family:var(--font-display);
  font-weight:600;
  font-size:23px;
  color:var(--navy-deep);
  margin:0 0 8px;
}

.done-text{
  font-family:var(--font-ui);
  font-size:14px;
  color:var(--ink-soft);
  margin:0 0 10px;
}

.done-note{
  font-family:var(--font-display);
  font-style:italic;
  font-size:16px;
  color:var(--gold);
  margin:0;
}

.foot{
  text-align:center;
  font-family:var(--font-ui);
  font-size:11px;
  letter-spacing:.04em;
  color:var(--ink-soft);
  padding:20px 16px;
  margin:0;
}
