:root{
  --bg:#ffffff; --surface:#fbf8f1; --card:#ffffff; --ink:#2a2418; --muted:#6f6656; --line:#ece5d4;
  --mustard:#e0ac12; --mustard-hover:#cf9c08; --mustard-deep:#8a6710; --mustard-soft:#f8efd6;
  --danger:#b3261e; --danger-soft:#fbeceb; --radius:16px;
  --shadow:0 1px 2px rgba(42,36,24,.04),0 6px 20px rgba(42,36,24,.06);
}
*{box-sizing:border-box}
html,body{margin:0}
body{background:var(--bg);color:var(--ink);font:16px/1.55 Inter,system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
h1,h2,h3{font-family:Fraunces,Georgia,serif;font-weight:600;letter-spacing:-.01em;margin:0}
a{color:var(--mustard-deep)}
.wrap{max-width:820px;margin:0 auto;padding:0 16px}

/* Cabecera */
header.top{background:#fff;border-bottom:1px solid var(--line);position:relative}
header.top::before{content:"";position:absolute;inset:0 0 auto 0;height:4px;background:var(--mustard)}
header.top .wrap{display:flex;align-items:center;gap:14px;padding-top:18px;padding-bottom:14px}
.logo-img{height:58px;width:auto;max-width:200px;object-fit:contain;display:block}
.logo-fallback{width:44px;height:44px;border-radius:50%;background:var(--mustard-soft);display:grid;place-items:center;flex:none}
.brandname{font-family:Fraunces,Georgia,serif;font-size:19px;line-height:1.15;color:var(--ink)}
.brandname small{display:block;font-family:Inter,sans-serif;font-size:11.5px;color:var(--mustard-deep);letter-spacing:.08em;text-transform:uppercase;margin-top:2px}


.hero{padding:28px 0 4px}
.eyebrow{display:inline-block;font-size:12px;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--mustard-deep);background:var(--mustard-soft);padding:5px 10px;border-radius:999px;margin-bottom:12px}
.hero h1{font-size:clamp(27px,5vw,38px);line-height:1.15;margin-bottom:10px}
.hero p{color:var(--muted);margin:0 0 20px;max-width:620px}
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin:0;padding:0;list-style:none;counter-reset:s}
.steps li{counter-increment:s;background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:12px;font-size:14px}
.steps li::before{content:counter(s);display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--mustard);color:var(--ink);font-size:12px;font-weight:700;margin-right:8px}

section.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);padding:24px;margin:18px 0}
section.card > h2{font-size:22px;margin-bottom:4px}
section.card > h2 .n{color:var(--mustard)}
.sub{color:var(--muted);font-size:14px;margin:0 0 16px}

/* Documento */
.doc{border:1px solid var(--line);border-radius:12px;background:var(--surface);max-height:420px;overflow:auto;padding:20px 22px;font-size:14.5px;line-height:1.65}
.doc h3{font-size:17px;margin:0 0 2px}
.doc .meta{color:var(--muted);font-size:13px;margin-bottom:14px}
.doc p{margin:0 0 12px;text-align:justify;hyphens:auto}
.readhint{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--muted);margin-top:10px}
.readhint.done{color:var(--mustard-deep);font-weight:500}

/* Formulario */
.grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.full{grid-column:1/-1}
label.f{display:block;font-size:14px;font-weight:500;margin-bottom:6px}
label.f .opt{font-weight:400;color:var(--muted)}
input[type=text],input[type=email],input[type=date],select,textarea{
  width:100%;font:inherit;color:var(--ink);background:#fff;border:1.5px solid var(--line);border-radius:10px;padding:11px 12px;outline:none;transition:border-color .15s,box-shadow .15s}
textarea{resize:vertical;min-height:72px}
input:focus,select:focus,textarea:focus{border-color:var(--mustard);box-shadow:0 0 0 3px rgba(224,172,18,.2)}
.err{display:none;color:var(--danger);font-size:13px;margin-top:5px}
.invalid input,.invalid select,.invalid textarea{border-color:var(--danger)}
.invalid .err{display:block}

.q{border:1.5px solid var(--line);border-radius:12px;padding:16px;margin-bottom:12px}
.q p{margin:0 0 12px;font-size:15px}
.q.invalid{border-color:var(--danger);background:var(--danger-soft)}
.yn{display:flex;gap:10px}
.yn label{flex:1;position:relative;cursor:pointer}
.yn input{position:absolute;opacity:0;pointer-events:none}
.yn span{display:flex;align-items:center;justify-content:center;gap:8px;border:1.5px solid var(--line);border-radius:10px;padding:10px;font-weight:600;background:#fff;transition:all .15s}
.yn input:checked + span{border-color:var(--mustard);background:var(--mustard);color:var(--ink)}
.yn input:focus-visible + span{box-shadow:0 0 0 3px rgba(224,172,18,.35)}

.check{display:flex;gap:12px;align-items:flex-start;cursor:pointer;padding:14px 16px;border:1.5px solid var(--line);border-radius:12px;margin-bottom:10px;transition:border-color .15s,background .15s}
.check input{width:20px;height:20px;accent-color:var(--mustard);margin:2px 0 0;flex:none}
.check:has(input:checked){border-color:var(--mustard);background:var(--mustard-soft)}
.checks.invalid .check{border-color:var(--danger)}
.checks .err{margin:-2px 0 8px}
.checks.invalid .err{display:block}

.toggle{display:flex;gap:12px;align-items:flex-start;cursor:pointer;padding:14px 16px;border:1.5px dashed var(--line);border-radius:12px}
.toggle input{width:20px;height:20px;accent-color:var(--mustard);margin:2px 0 0;flex:none}
.toggle b{display:block}
.toggle small{color:var(--muted)}
#repBox{display:none;margin-top:14px}
#repBox.show{display:block}

/* Firma */
.sigwrap{position:relative;border:1.5px solid var(--line);border-radius:12px;background:#fff;overflow:hidden;touch-action:none}
.sigwrap canvas{display:block;width:100%;height:190px;cursor:crosshair}
.sigwrap::after{content:"";position:absolute;left:24px;right:24px;bottom:46px;border-bottom:1px dashed #d8cfb9;pointer-events:none}
.sigph{position:absolute;inset:0;display:grid;place-items:center;color:#b8ad95;font-size:15px;pointer-events:none;transition:opacity .2s}
.sigwrap.has .sigph{opacity:0}
.sigwrap.invalid{border-color:var(--danger)}
.sigbar{display:flex;justify-content:space-between;align-items:center;margin-top:6px;font-size:13px;color:var(--muted)}
.btn-link{background:none;border:0;color:var(--mustard-deep);font:inherit;font-size:13px;font-weight:600;cursor:pointer;padding:4px}
.sigblock + .sigblock{margin-top:18px}

.accept{display:flex;gap:12px;align-items:flex-start;margin:6px 0 18px;cursor:pointer}
.accept input{width:20px;height:20px;accent-color:var(--mustard);margin:2px 0 0;flex:none}
.accept.invalid{color:var(--danger)}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;width:100%;border:0;border-radius:12px;background:var(--mustard);color:var(--ink);font:inherit;font-weight:600;font-size:17px;padding:16px 20px;cursor:pointer;text-decoration:none;transition:background .15s,transform .05s}
.btn:hover{background:var(--mustard-hover)}
.btn:active{transform:translateY(1px)}
.btn[disabled]{opacity:.65;cursor:progress}
.btn.ghost{background:#fff;color:var(--ink);border:1.5px solid var(--line)}
.btn.ghost:hover{border-color:var(--mustard);background:var(--mustard-soft)}
.spinner{width:18px;height:18px;border:2.5px solid rgba(42,36,24,.25);border-top-color:var(--ink);border-radius:50%;animation:spin .8s linear infinite;display:none}
.btn[disabled] .spinner{display:inline-block}
@keyframes spin{to{transform:rotate(360deg)}}

.alert{display:none;background:var(--danger-soft);color:var(--danger);border-radius:10px;padding:12px 14px;font-size:14px;margin-bottom:14px}
.alert.show{display:block}
.privacy{font-size:12.5px;color:var(--muted);margin-top:14px;text-align:center}
.note{background:var(--mustard-soft);border-radius:12px;padding:14px 16px;font-size:14px;color:var(--ink);margin-top:14px}

/* Éxito */
#success{display:none;text-align:center;padding:36px 24px}
#success .ok{width:68px;height:68px;border-radius:50%;background:var(--mustard-soft);display:grid;place-items:center;margin:0 auto 16px}
#success h2{font-size:28px;margin-bottom:8px}
#success p{color:var(--muted);margin:0 auto 20px;max-width:460px}
#success .actions{display:grid;gap:10px;max-width:340px;margin:0 auto}

footer{color:var(--muted);font-size:13px;text-align:center;padding:22px 16px 40px;border-top:1px solid var(--line);margin-top:30px}
footer a{color:var(--muted)}

@media (max-width:640px){
  .grid{grid-template-columns:1fr}
  .steps{grid-template-columns:1fr}
  section.card{padding:20px 16px}
  .doc{padding:16px;max-height:360px}
  .doc p{text-align:left}
  .logo-img{height:44px}
}
