:root{
  --oro:#b8892f;
  --oro-scuro:#8c6620;
  --testo:#2b2b2b;
  --grigio:#6b6b6b;
  --bordo:#dcd4c4;
  --sfondo:#faf8f3;
  --bianco:#ffffff;
  --errore:#c0392b;
  --ok:#2e7d32;
  --radius:10px;
}
*{box-sizing:border-box;}
body{
  margin:0;
  font-family:'Segoe UI',Arial,sans-serif;
  background:var(--sfondo);
  color:var(--testo);
  line-height:1.5;
}
.container{
  max-width:820px;
  margin:0 auto;
  padding:32px 20px 60px;
}
.back-link{
  display:inline-block;
  margin-bottom:18px;
  color:var(--oro-scuro);
  font-weight:600;
  font-size:.92rem;
  text-decoration:none;
}
.back-link:hover{text-decoration:underline;}

.page-header{
  text-align:center;
  margin-bottom:28px;
}
.page-header h1{
  font-size:1.9rem;
  color:var(--oro-scuro);
  margin-bottom:6px;
}
.page-header p{
  color:var(--grigio);
  margin:0;
}
.card{
  background:var(--bianco);
  border:1px solid var(--bordo);
  border-radius:var(--radius);
  padding:28px;
  box-shadow:0 4px 18px rgba(0,0,0,.05);
}
fieldset{
  border:none;
  border-top:2px solid var(--oro);
  margin:0 0 24px;
  padding:18px 0 0;
}
legend{
  font-weight:600;
  color:var(--oro-scuro);
  padding:0 6px 0 0;
  font-size:1.05rem;
}
.grid{
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:16px;
}
@media (max-width:640px){
  .grid{grid-template-columns:1fr;}
}
.field{margin-bottom:14px;}
.field.full{grid-column:1 / -1;}
label{
  display:block;
  font-size:.88rem;
  font-weight:600;
  margin-bottom:5px;
  color:var(--testo);
}
label .req{color:var(--errore);}
input[type=text],
input[type=email],
input[type=tel],
input[type=date],
select{
  width:100%;
  padding:10px 12px;
  border:1px solid var(--bordo);
  border-radius:6px;
  font-size:.95rem;
  background:var(--bianco);
  color:var(--testo);
}
input:focus,select:focus{
  outline:none;
  border-color:var(--oro);
  box-shadow:0 0 0 3px rgba(184,137,47,.15);
}
.help{font-size:.78rem;color:var(--grigio);margin-top:4px;}
.error-msg{font-size:.8rem;color:var(--errore);margin-top:4px;display:none;}
.field.invalid input,
.field.invalid select{border-color:var(--errore);}
.field.invalid .error-msg{display:block;}

.checkbox-row{display:flex;align-items:flex-start;gap:8px;margin:10px 0;}
.checkbox-row input[type=checkbox]{margin-top:3px;width:18px;height:18px;flex-shrink:0;}
.checkbox-row label{font-weight:500;margin:0;font-size:.92rem;}

.radio-group{display:flex;gap:20px;flex-wrap:wrap;}
.radio-group label{font-weight:500;display:flex;align-items:center;gap:6px;}

.file-upload{
  border:2px dashed var(--bordo);
  border-radius:8px;
  padding:20px;
  text-align:center;
  background:#fffdf8;
}
.file-upload input{margin-top:8px;}

.privacy-box{
  background:#fbf7ec;
  border:1px solid var(--bordo);
  border-radius:8px;
  padding:14px 16px;
  font-size:.85rem;
  color:var(--grigio);
  margin-bottom:16px;
}

.btn{
  display:inline-block;
  background:var(--oro);
  color:#fff;
  border:none;
  padding:13px 26px;
  border-radius:8px;
  font-size:1rem;
  font-weight:600;
  cursor:pointer;
  width:100%;
}
.btn:hover{background:var(--oro-scuro);}
.btn:disabled{opacity:.6;cursor:not-allowed;}

.alert{
  padding:14px 16px;
  border-radius:8px;
  margin-bottom:18px;
  font-size:.92rem;
}
.alert-error{background:#fdecea;color:var(--errore);border:1px solid #f5c6c2;}
.alert-success{background:#eaf6ea;color:var(--ok);border:1px solid #bfe3bf;}
.alert ul{margin:6px 0 0;padding-left:20px;}

.thankyou-box{
  text-align:center;
  padding:20px 10px;
}
.thankyou-box .icon{font-size:3rem;margin-bottom:10px;}
.thankyou-box pre{
  white-space:pre-wrap;
  font-family:inherit;
  text-align:left;
  background:#fbf7ec;
  border:1px solid var(--bordo);
  border-radius:8px;
  padding:18px;
  margin-top:14px;
  font-size:.94rem;
}
