:root{
  --ink:#16232B;
  --paper:#EEF1EE;
  --panel:#FFFFFF;
  --brass:#A9803F;
  --pine:#2F4538;
  --line:#D7DAD3;
  --danger:#8C3B2E;
  --muted:#5B6660;
}
*{box-sizing:border-box;}
body{
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:'IBM Plex Sans', sans-serif;
  line-height:1.5;
}
.tag{
  font-family:'IBM Plex Mono', monospace;
  font-size:11px;
  letter-spacing:.14em;
  text-transform:uppercase;
  color:var(--brass);
}
header.hero{
  background:var(--ink);
  color:#EFEDE6;
  padding:56px 24px 48px;
  position:relative;
  overflow:hidden;
}
header.hero::after{
  content:"";
  position:absolute;
  right:-60px; top:-60px;
  width:260px; height:260px;
  border:1px solid rgba(239,237,230,.14);
  border-radius:50%;
}
.hero-inner{max-width:760px; margin:0 auto; position:relative;}
.hero-inner .tag{color:#D9B978;}
h1{
  font-family:'Fraunces', serif;
  font-weight:500;
  font-size:clamp(30px, 4.4vw, 44px);
  margin:10px 0 14px;
  letter-spacing:-0.01em;
}
.hero-sub{
  max-width:56ch;
  color:#C7CBC2;
  font-size:15.5px;
}
.ticket{
  margin-top:32px;
  display:inline-flex;
  align-items:center;
  gap:14px;
  background:rgba(239,237,230,.06);
  border:1px solid rgba(239,237,230,.18);
  border-radius:2px;
  padding:12px 18px;
  font-family:'IBM Plex Mono', monospace;
  font-size:12.5px;
  color:#D9B978;
}
.ticket b{color:#EFEDE6; font-weight:500;}

main{max-width:760px; margin:0 auto; padding:40px 24px 100px;}

.notice{
  background:#FBF3E6;
  border:1px solid #E9D2A3;
  border-left:3px solid var(--brass);
  padding:16px 18px;
  font-size:14px;
  color:#5A4423;
  margin-bottom:40px;
}
.notice strong{display:block; margin-bottom:4px; color:#3E3016;}

section.block{
  background:var(--panel);
  border:1px solid var(--line);
  margin-bottom:22px;
}
.block-head{
  display:flex;
  align-items:baseline;
  gap:12px;
  padding:20px 24px 14px;
  border-bottom:1px solid var(--line);
}
.block-num{
  font-family:'IBM Plex Mono', monospace;
  font-size:12px;
  color:var(--brass);
}
.block-head h2{
  font-family:'Fraunces', serif;
  font-weight:500;
  font-size:19px;
  margin:0;
}
.block-body{padding:22px 24px 26px;}

.field{margin-bottom:18px;}
.field:last-child{margin-bottom:0;}
label{
  display:block;
  font-size:13px;
  font-weight:500;
  margin-bottom:6px;
  color:var(--ink);
}
label .opt{color:var(--muted); font-weight:400;}
input[type=text], input[type=email], input[type=tel], input[type=number], input[type=date], select, textarea{
  width:100%;
  padding:10px 12px;
  border:1px solid var(--line);
  border-radius:2px;
  font-family:'IBM Plex Sans', sans-serif;
  font-size:14.5px;
  color:var(--ink);
  background:#FCFDFC;
}
input:focus, select:focus, textarea:focus{
  outline:2px solid var(--pine);
  outline-offset:1px;
  border-color:var(--pine);
}
textarea{resize:vertical; min-height:70px;}
.row2{display:grid; grid-template-columns:1fr 1fr; gap:16px;}
.row3{display:grid; grid-template-columns:1fr 1fr 1fr; gap:16px;}
@media (max-width:560px){ .row2, .row3{grid-template-columns:1fr;} }

.radio-group{display:flex; gap:18px; flex-wrap:wrap; margin-top:4px;}
.radio-opt{display:flex; align-items:center; gap:7px; font-size:14px;}
.radio-opt input{width:auto;}

.yesno-follow{margin-top:10px; display:none;}
.yesno-follow.show{display:block;}

.helptext{font-size:12.5px; color:var(--muted); margin-top:5px;}

.consent{
  display:flex;
  gap:12px;
  align-items:flex-start;
  background:#F2F4F0;
  border:1px solid var(--line);
  padding:16px 18px;
  font-size:13.5px;
  color:#3B443E;
}
.consent input{width:auto; margin-top:3px;}

.submit-wrap{
  margin-top:30px;
  display:flex;
  align-items:center;
  gap:18px;
  flex-wrap:wrap;
}
button[type=submit]{
  background:var(--pine);
  color:#EFEDE6;
  border:none;
  padding:14px 30px;
  font-family:'IBM Plex Sans', sans-serif;
  font-size:14.5px;
  font-weight:500;
  letter-spacing:.02em;
  cursor:pointer;
  border-radius:2px;
  transition:background .15s ease;
}
button[type=submit]:hover{background:#253A2E;}
.submit-note{font-size:12.5px; color:var(--muted);}

footer{
  text-align:center;
  padding:36px 24px 60px;
  font-family:'IBM Plex Mono', monospace;
  font-size:11.5px;
  color:var(--muted);
}

.required-mark{color:var(--danger);}
