:root{--ink:#0b0b0b;--paper:#fff;--red:#e4343f;--mute:#6b6b6b;--line:#e4e4e4;--soft:#f6f6f4;--w:720px;
--font:'Inter','Helvetica Neue',Arial,sans-serif;--head:'Oswald','Arial Narrow',sans-serif}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--font);font-size:17px;line-height:1.6}
a{color:var(--red)}
img{max-width:100%;display:block}
button{font:inherit;cursor:pointer}
.muted{color:var(--mute)}

/* hero */
.hero{background:linear-gradient(rgba(0,0,0,.35),rgba(0,0,0,.35)),var(--bg) center/cover #0b0b0b;color:#fff;padding:clamp(28px,6vw,56px) 20px}
.hero-in{max-width:var(--w);margin:0 auto;display:grid;grid-template-columns:1fr auto;gap:8px 24px;align-items:end}
.hero-title{font-family:var(--head);font-weight:700;font-size:clamp(30px,8vw,54px);line-height:1.05;letter-spacing:.01em;display:flex;flex-direction:column;grid-column:1/-1}
.hero-sub{margin:0;color:var(--red);font-weight:700;font-size:clamp(15px,3.6vw,19px);max-width:26ch;line-height:1.25}
.hero-meta{margin:0;text-align:right;font-size:14px;font-weight:700;line-height:1.4}
.hero-meta a{color:#fff;text-decoration:none}.hero-meta a:first-child{color:var(--red)}

/* auth */
.auth{min-height:100vh;background:var(--soft)}
.auth-card{max-width:440px;margin:-24px auto 40px;background:#fff;padding:24px;border:1px solid var(--line);position:relative}
.auth-card form{display:grid;gap:14px}
label{display:grid;gap:6px;font-weight:500;font-size:15px}
label small{font-weight:400;color:var(--mute)}
input,textarea{font:inherit;width:100%;padding:12px 14px;border:1.5px solid #9c9c9c;border-radius:0;background:#fff;color:var(--ink)}
input:focus,textarea:focus{outline:2px solid var(--ink);outline-offset:0;border-color:var(--ink)}
textarea{resize:vertical;min-height:90px}
.error{color:var(--red);min-height:1.2em;margin:0;font-size:14px}
.tabs{display:flex;gap:0;margin-bottom:14px;border-bottom:1px solid var(--line)}
.tabs button{flex:1;background:none;border:0;border-bottom:3px solid transparent;padding:10px 6px;font-weight:700;color:var(--mute)}
.tabs button.on{color:var(--ink);border-color:var(--red)}

/* botones */
.btn{display:inline-block;background:var(--ink);color:#fff;border:2px solid var(--ink);padding:12px 22px;font-weight:700;text-decoration:none;letter-spacing:.02em;text-align:center}
.btn:hover{background:var(--red);border-color:var(--red)}
.btn:disabled{opacity:.5;cursor:default}
.btn.ghost{background:#fff;color:var(--ink)}
.btn.ghost:hover{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn.wa{background:var(--red);border-color:var(--red)}
.btn.wa:hover{background:var(--ink);border-color:var(--ink)}

/* barra superior */
.topbar{position:sticky;top:0;z-index:20;background:var(--ink);color:#fff;display:flex;align-items:center;gap:12px;padding:10px 14px;min-height:48px}
.topbar-title{font-family:var(--head);font-weight:700;letter-spacing:.04em;font-size:15px;flex:1;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.savestate{font-size:12px;color:#bbb;min-width:90px;text-align:right}
.icon{background:none;border:0;color:inherit;font-size:20px;padding:4px 8px;line-height:1}
.bar{position:absolute;left:0;right:0;bottom:0;height:3px;background:#333}
.bar i{display:block;height:100%;background:var(--red);transition:width .4s}

/* menú */
.menu{position:fixed;inset:48px 0 0 0;z-index:19;background:rgba(0,0,0,.5)}
.menu-in{width:min(360px,92vw);height:100%;background:#fff;overflow:auto;padding:0 0 40px}
.menu-head{position:sticky;top:0;background:#fff;display:flex;gap:10px;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line)}
.menu-head span{flex:1;color:var(--mute);font-size:14px}
.menu-head .icon{color:var(--ink)}
.mg{font-family:var(--head);text-transform:uppercase;letter-spacing:.05em;font-size:13px;color:var(--red);padding:18px 16px 4px}
.menu a{display:flex;gap:10px;align-items:center;padding:8px 16px;color:var(--ink);text-decoration:none;font-size:15px}
.menu a:hover,.menu a.cur{background:var(--soft)}
.menu a.cur{font-weight:700}
.menu a b{width:16px;color:var(--red);font-size:13px}

/* página */
.page{max-width:var(--w);margin:0 auto;padding:28px 20px 60px}
.crumb{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--mute);margin-bottom:14px}
h1,h2,h3,h4{font-family:var(--head);line-height:1.15;margin:1.4em 0 .5em}
h2{font-size:clamp(26px,6vw,34px);margin-top:.3em;font-family:var(--font);font-weight:700;letter-spacing:-.01em}
h3{font-size:22px;font-family:var(--font);font-weight:700}
.prose{margin:0 0 1em}
.prose ul{padding-left:1.2em;margin:0}.prose li{margin:.5em 0}
.part{text-align:center;padding:14px 0 18px}
.part .num{font-family:var(--head);font-size:clamp(34px,9vw,52px);display:block;font-weight:700}
.part h1{font-family:var(--font);font-weight:700;font-size:clamp(24px,6vw,32px);margin:.2em 0}
.part .sub{margin:0;font-size:clamp(20px,5vw,26px);font-weight:700}
figure{margin:1.4em 0}
figure img{width:100%;height:auto;background:#111}
figcaption{font-size:11.5px;color:var(--mute);text-align:right;margin-top:6px;font-style:italic}
.callout{background:var(--soft);border-left:4px solid var(--red);padding:16px 18px;margin:1.4em 0}
.callout.done{background:var(--ink);color:#fff;border-color:var(--red)}
.hint{background:var(--soft);padding:12px 14px;margin:1em 0;font-size:15px}
.warn{color:var(--red)}

/* campos */
.field{display:grid;gap:8px;margin:1.3em 0}
.field>span{font-weight:700}
.field small{font-weight:400;color:var(--mute)}
.numlist{margin:0;padding:0;list-style:none;counter-reset:n;display:grid;gap:8px}
.numlist li{counter-increment:n;display:flex;gap:10px;align-items:center}
.numlist li:before{content:counter(n)'.';width:22px;font-weight:700;color:var(--mute)}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{background:#fff;border:1.5px solid var(--ink);padding:6px 12px;border-radius:99px;font-size:15px}
.chip.on{background:var(--ink);color:#fff}
.radios{display:grid;gap:8px}
.radio{display:flex;gap:12px;align-items:flex-start;padding:12px 14px;border:1.5px solid var(--line);cursor:pointer;font-weight:400}
.radio:has(input:checked){border-color:var(--ink);background:var(--soft)}
.radio input{width:auto;margin-top:5px;accent-color:var(--red)}

/* bloques derivados */
.scn,.trio{display:grid;gap:10px;margin:1em 0}
@media(min-width:640px){.scn,.trio{grid-template-columns:repeat(3,1fr)}}
.scn>div,.trio>div{border:1px solid var(--line);padding:12px 14px}
.scn span,.trio span,.formula span,.final span,.sl span,.tier span,.step span{font-size:11.5px;letter-spacing:.07em;text-transform:uppercase;color:var(--red);font-weight:700}
.scn p,.trio p,.final p,.sl p,.step p,.tier p{margin:4px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.match h4{margin:.8em 0 .3em;font-size:17px;font-family:var(--font)}
.match ul{padding-left:1.1em}.match li{margin:.4em 0}
.m1{border-left:4px solid var(--red);padding-left:12px}.m2{border-left:4px solid var(--ink);padding-left:12px}
.tag{display:inline-block;background:var(--ink);color:#fff;font-size:11.5px;padding:1px 8px;margin:0 4px 2px 0;border-radius:99px}
.ladder{display:grid;gap:0;margin:1.4em 0}
.step{padding:16px 18px;border:1px solid var(--line);margin-left:calc(var(--i,0)*0px)}
.s0{background:#fff}.s1{background:var(--soft)}.s2{background:var(--ink);color:#fff}.s2 span{color:#ff8a92}
@media(min-width:640px){.ladder{grid-template-columns:repeat(3,1fr)}}
.ladder.compact .step{padding:12px 14px;font-size:15px}
.tier{border-left:4px solid var(--red);background:var(--soft);padding:12px 16px;margin:12px 0}
.decl .formula{background:var(--soft);padding:14px 16px;margin:1em 0}
.decl .formula p{margin:2px 0 12px}
.final{background:var(--ink);color:#fff;padding:16px 18px;margin:1.4em 0}
.final span{color:#ff8a92}
.schema{border:2px solid var(--ink);margin:1.4em 0}
.schema-head{background:var(--ink);color:#fff;padding:14px 16px;display:flex;flex-direction:column;font-family:var(--head)}
.schema-head span{color:var(--red);font-family:var(--font);font-weight:700;font-size:14px}
.sl{padding:10px 16px;border-top:1px solid var(--line)}
.sl input{margin-top:4px}
.actions{display:flex;gap:10px;flex-wrap:wrap}

/* respiración */
.breath{display:grid;justify-items:center;gap:14px;margin:1.6em 0}
.orb{width:140px;height:140px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font-weight:700;text-align:center;font-size:15px;transition:transform 4s ease-in-out,background 1s}
.orb.in{transform:scale(1.35);background:var(--red)}
.orb.hold{transform:scale(1.35);background:var(--red)}
.orb.out{transform:scale(1)}

/* toc */
.toc{display:grid;gap:14px;margin:1em 0}
.toc-g a{display:block;padding:4px 0 4px 14px;color:var(--ink);text-decoration:none;border-left:2px solid var(--line)}
.toc-g a:hover{border-color:var(--red);color:var(--red)}

.pager{display:flex;justify-content:space-between;gap:12px;margin-top:2.4em;padding-top:1.4em;border-top:1px solid var(--line)}
.foot{margin-top:2em;font-size:13px;color:var(--mute);text-align:center}.foot a{color:var(--mute)}

/* hoja final */
.sheet{margin:1.4em 0}
.resumen{margin-top:28px}
.resumen h3{margin-top:0}
.rs-count{color:var(--mute);font-size:14px;margin:0 0 6px}
.rs-group{font-family:var(--head);text-transform:uppercase;letter-spacing:.05em;color:var(--red);font-size:15px;margin:26px 0 4px;border-bottom:2px solid var(--ink);padding-bottom:4px}
.rs-sec{margin:14px 0}
.rs-sec h5{margin:0 0 4px;font-size:15px;font-family:var(--font)}
.rs-item{padding:8px 0;border-top:1px solid var(--line)}
.rs-item span{display:block;font-size:12.5px;color:var(--mute)}
.rs-item p{margin:2px 0 0;white-space:pre-wrap;overflow-wrap:anywhere}
.rs-item ol{margin:3px 0 0;padding-left:1.3em}
.rs-empty{color:var(--red);font-size:13px;font-style:italic}

/* impresión: la hoja final (resultado + respuestas) */
@media print{
  body *{visibility:hidden}
  #print-sheet,#print-sheet *{visibility:visible}
  #print-sheet{position:absolute;left:0;top:0;width:100%}
  .resumen{break-before:page}
  .rs-sec,.rs-item{break-inside:avoid}
  .sl input{border:0;padding:0}
}

/* avisos de respaldo (imprimir / copiar / descargar) */
.fb-note{background:var(--soft);border-left:4px solid var(--red);padding:12px 14px;margin:10px 0;font-size:14px}
.fb-note p{margin:0 0 8px}
.fb-note textarea{font-size:13px;min-height:140px}
