dialog.funnel{
  position:fixed;inset:0;margin:auto;
  width:min(760px,96vw);max-height:92vh;border:0;padding:0;
  border-radius:var(--radius-lg);background:var(--bg-elev);color:var(--ink);
  box-shadow:0 30px 90px rgba(0,0,0,.3);
}
dialog.funnel::backdrop{background:rgba(31,42,50,.55);backdrop-filter:blur(8px)}
dialog.funnel[open]{animation:dialog-in .35s var(--ease-out)}
@keyframes dialog-in{from{opacity:0;transform:translateY(14px) scale(.98)}to{opacity:1;transform:none}}
.funnel-inner{padding:clamp(1.4rem,4vw,2.2rem)}
.funnel-close{
  position:absolute;right:16px;top:14px;width:38px;height:38px;border:0;border-radius:50%;
  background:var(--bg-tint);color:var(--petrol);font-size:1.5rem;line-height:1;display:grid;place-items:center;
}
.funnel-close:hover{background:var(--line)}

.progress[hidden]{display:none}
.progress{display:flex;align-items:center;justify-content:center;gap:.6em;margin:0 2.5rem 1.6rem;font-size:.78rem;font-weight:700;color:var(--ink-mute)}
.progress span{display:flex;align-items:center;gap:.5em;white-space:nowrap}
.progress span i{width:26px;height:26px;border-radius:50%;background:var(--bg-tint);display:grid;place-items:center;font-style:normal}
.progress span.is-on{color:var(--petrol)}
.progress span.is-on i{background:var(--lime)}
.progress hr{flex:1;max-width:70px;border:0;border-top:1px solid var(--line);margin:0}
@media (max-width:520px){.progress span em{display:none}.progress{margin-inline:0}}

.fstep{display:none}
.fstep.is-on{display:block;animation:panel-in .35s var(--ease-out)}
.fstep h2{font-size:clamp(1.5rem,1.2rem + 1.5vw,2rem)}
.fstep > p{color:var(--ink-soft)}

.pick-list{display:grid;gap:.6em;margin:1.2em 0}
.pick-list label{display:flex;align-items:center;gap:.8em;border:1.5px solid var(--line);border-radius:var(--radius);padding:.8em 1em;cursor:pointer;transition:border-color var(--dur-fast),background var(--dur-fast)}
.pick-list label:has(:checked){border-color:var(--petrol);background:#f7fbfc}
.pick-list input{width:1.15em;height:1.15em;accent-color:var(--petrol);margin:0}
.pick-list .name{font-weight:600}
.pick-list .each{margin-left:auto;color:var(--ink-mute);font-size:var(--text-sm)}
.pick-sum{display:flex;justify-content:space-between;gap:1em;padding:.8em 0;border-top:1px solid var(--line);font-weight:600}
.pick-sum .v{font-family:var(--font-display);font-size:1.15rem}
.footnote{font-size:.75rem;color:var(--ink-mute);line-height:1.45}

.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:.9em;margin-top:1em}
.form-grid .full{grid-column:1/-1}
.form-grid label{display:grid;gap:.35em;font-size:var(--text-sm);font-weight:600;color:var(--ink-soft)}
.form-grid input,.form-grid textarea{
  font:inherit;color:var(--ink);padding:.7em .85em;border:1.5px solid var(--line-strong);border-radius:var(--radius-sm);background:#fff;
  transition:border-color var(--dur-fast),box-shadow var(--dur-fast);
}
.form-grid input:focus,.form-grid textarea:focus{outline:0;border-color:var(--petrol);box-shadow:0 0 0 3px rgba(47,59,69,.14)}
.form-grid textarea{resize:vertical;min-height:5em}
.form-grid input[aria-invalid="true"]{border-color:#c0392b}
.hp{position:absolute;left:-9999px;top:auto;width:1px;height:1px;overflow:hidden}
.form-error{color:#b03a2e;font-weight:600;font-size:var(--text-sm);min-height:1.4em;margin-top:.6em}

.review{border:1px solid var(--line);border-radius:var(--radius);padding:1em 1.1em;margin-top:1em}
.review h3{font-size:.78rem;letter-spacing:.12em;text-transform:uppercase;color:var(--ink-mute);margin-bottom:.6em}
.review .row{display:flex;justify-content:space-between;gap:1em;padding:.35em 0;border-top:1px solid var(--line);font-size:.95rem}
.review .row:first-of-type{border-top:0}
.review .row span{color:var(--ink-soft);text-align:right;overflow-wrap:anywhere}
.consent{display:flex;gap:.7em;align-items:flex-start;margin-top:1.2em;font-size:var(--text-sm);color:var(--ink-soft)}
.consent input{margin-top:.25em;accent-color:var(--petrol);flex:0 0 auto}

.factions{display:flex;justify-content:flex-end;gap:.6em;margin-top:1.6em;flex-wrap:wrap}
.btn.is-busy{pointer-events:none;opacity:.7}

.success{text-align:center;padding:1.5rem 0 .5rem}
.success .tick{width:72px;height:72px;border-radius:50%;background:var(--lime);color:var(--petrol);display:grid;place-items:center;margin:0 auto 1.2rem;font-size:2rem;font-weight:900;animation:tick-pop .6s var(--ease-snap)}
@keyframes tick-pop{from{scale:.4;opacity:0}to{scale:1;opacity:1}}
.success p{color:var(--ink-soft);max-width:30em;margin-inline:auto}
@media (max-width:560px){.form-grid{grid-template-columns:1fr}}
