:root{
  --ink:#14231d;
  --green:#123d33;
  --leaf:#2e7d5b;
  --mist:#eef5f1;
  --line:#c9d8cf;
  --gold:#b8862a;
  --danger:#b3261e;
  --paper:#ffffff;
  --radius:8px;
}
*{box-sizing:border-box}
html{scroll-padding-top:12px}
body{
  margin:0;
  font-family:'Nunito Sans',system-ui,-apple-system,'Segoe UI',Arial,sans-serif;
  font-size:16px;line-height:1.55;color:var(--ink);
  background:var(--mist);
}
.wrap{max-width:860px;margin:0 auto;padding:0 20px}

/* ---------- masthead ---------- */
.masthead{background:var(--green);color:#fff;padding:34px 0 28px;border-bottom:4px solid var(--gold)}
.masthead h1{
  font-family:'Lora',Georgia,serif;font-weight:700;
  font-size:clamp(28px,5vw,42px);line-height:1.15;margin:0 0 8px;
}
.addr{margin:0;color:#d5e6dd}
.addr a{color:#fff}

/* ---------- intro ---------- */
.intro{padding:28px 0 8px}
.intro h2{font-family:'Lora',Georgia,serif;font-size:26px;margin:0 0 4px;color:var(--green)}
.intro p{margin:0;max-width:60ch}

/* ---------- form ---------- */
form{margin:18px 0 48px}
fieldset{
  display:grid;grid-template-columns:1fr 1fr;gap:16px 20px;
  border:1px solid var(--line);background:var(--paper);
  border-radius:var(--radius);padding:22px;margin:0 0 20px;
}
legend{
  font-family:'Lora',Georgia,serif;font-weight:700;font-size:18px;
  color:var(--green);padding:0 8px;
}
.field{display:flex;flex-direction:column;min-width:0}
.wide{grid-column:1 / -1}
label,.label{font-weight:600;margin-bottom:5px;font-size:15px}
label small{font-weight:400;color:#5b6d64}
input[type=text],input[type=number],input[type=tel],input[type=date],select,textarea{
  width:100%;font:inherit;color:inherit;background:#fff;
  border:1.5px solid #9db3a7;border-radius:6px;padding:10px 12px;
}
textarea{resize:vertical}
input:focus,select:focus,textarea:focus{outline:3px solid rgba(46,125,91,.35);border-color:var(--leaf)}
input:focus-visible,select:focus-visible,textarea:focus-visible,button:focus-visible,a:focus-visible{
  outline:3px solid rgba(184,134,42,.6);outline-offset:2px;
}
.choices{display:flex;gap:12px}
.choice{
  flex:1;display:flex;align-items:center;gap:8px;margin:0;font-weight:600;
  border:1.5px solid #9db3a7;border-radius:6px;padding:10px 12px;cursor:pointer;background:#fff;
}
.choice:has(input:checked){border-color:var(--leaf);background:var(--mist)}
.choice input{accent-color:var(--leaf);width:18px;height:18px;margin:0}
.hint{margin:0;color:#41544a;font-size:14.5px;border-left:4px solid var(--gold);padding-left:10px}

/* validation */
.msg{min-height:0;font-size:13.5px;color:var(--danger);margin-top:4px}
.has-error input,.has-error select,.has-error textarea,.has-error .choice{border-color:var(--danger)}
.alert{background:#fdecea;color:#7a1712;border:1px solid #f1b5b0;border-radius:6px;padding:12px 16px;margin-top:14px}
.hp{position:absolute;left:-9999px;width:1px;height:1px;overflow:hidden}

.agree{
  display:flex;flex-wrap:wrap;align-items:center;gap:10px;font-weight:600;margin:6px 0 18px;cursor:pointer;
}
.agree input{width:20px;height:20px;accent-color:var(--leaf)}
.agree .msg{flex-basis:100%}

.submit,.btn{
  display:inline-block;font:inherit;font-weight:700;text-decoration:none;text-align:center;
  background:var(--green);color:#fff;border:0;border-radius:6px;padding:13px 26px;cursor:pointer;
  transition:background .15s;
}
.submit:hover,.btn:hover{background:var(--leaf)}
.submit[disabled]{opacity:.6;cursor:wait}
.btn.alt{background:#fff;color:var(--green);border:1.5px solid var(--green)}
.btn.alt:hover{background:var(--mist)}

/* ---------- success page ---------- */
.done{
  background:var(--paper);border:1px solid var(--line);border-radius:var(--radius);
  padding:32px 28px;margin:36px 0;border-top:6px solid var(--leaf);
}
.done h2{font-family:'Lora',Georgia,serif;color:var(--green);margin:0 0 8px;font-size:28px}
.appno{
  display:inline-block;background:var(--mist);border:1.5px dashed var(--leaf);border-radius:6px;
  padding:8px 14px;font-weight:700;font-size:20px;letter-spacing:.5px;margin:10px 0 16px;
}
.done ul{padding-left:20px;margin:14px 0 22px}
.actions{display:flex;gap:12px;flex-wrap:wrap}

.foot{background:var(--green);color:#cfe1d7;padding:18px 0;font-size:14px;text-align:center}

@media (max-width:640px){
  fieldset{grid-template-columns:1fr;padding:18px 16px}
  .choices{flex-direction:row}
  .submit,.btn{width:100%}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important}}