/* Puntal Rescate — basado en design/rescate-factory.DESIGN.md (Refero · Factory: "Terminal war room at midnight").
   Lienzo #101010, Geist 400 con tracking negativo, Geist Mono para etiquetas, naranja/verde solo como señal de estado,
   tarjetas claras #eeeeee como única figura brillante, radios 3/10/20, sin sombras. */
@font-face{font-family:Geist;src:url(/assets/fonts/geist-sans-latin-400-normal.woff2) format('woff2');font-weight:400;font-display:swap}
@font-face{font-family:Geist;src:url(/assets/fonts/geist-sans-latin-500-normal.woff2) format('woff2');font-weight:500;font-display:swap}
@font-face{font-family:GeistMono;src:url(/assets/fonts/geist-mono-latin-400-normal.woff2) format('woff2');font-weight:400;font-display:swap}
:root{
  --canvas:#101010;--carbon:#1d1a18;--ash:#3d3a39;--graphite:#4d4947;--granite:#8a8380;--stone:#b8b3b0;--bone:#eeeeee;--chalk:#fafafa;--signal:#ee6018;--metric:#a0ca92;
  --bg:var(--canvas);--fg:var(--bone);--muted:var(--granite);--line:var(--carbon);--line-strong:var(--ash);--surface:var(--carbon);
  --accent:var(--chalk);--accent-fg:#101010;--btn-radius:3px;--btn-weight:500;--field-radius:3px;
  --font:Geist,Inter,system-ui,sans-serif;--mono:GeistMono,'JetBrains Mono',ui-monospace,monospace;
  --dock-bg:rgba(29,26,24,.97);--focus:var(--signal)
}
body{font-size:16px;line-height:1.5}
.wrap{width:min(1200px,100% - 40px)}
.h2{font-size:clamp(32px,3.6vw,44px);line-height:1.12;letter-spacing:-.025em;font-weight:400}
.h2 em{font-style:normal;color:var(--granite)}
.sub{color:var(--granite);margin-top:14px;max-width:560px}
.kicker{font-family:var(--mono);font-size:12px;letter-spacing:-.02em;text-transform:uppercase;color:var(--stone);display:flex;align-items:center;gap:10px}
.pulse,.dot{width:6px;height:6px;border-radius:50%;background:var(--signal);flex:none}
.lead{font-size:18px;color:var(--granite);max-width:540px;line-height:1.5}
.lead.small{font-size:16px}
.btn{font-size:15px;min-height:46px;padding:0 18px}
.btn.ghost{color:var(--bone);box-shadow:none;border:1px solid var(--ash);border-radius:0}
.btn.ghost:hover{background:transparent;border-color:var(--chalk);color:var(--chalk)}
.btn.small{min-height:36px;padding:0 14px;font-size:14px}

.top{position:sticky;top:0;z-index:30;background:rgba(16,16,16,.92);backdrop-filter:blur(8px)}
.top-in{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:64px}
.logo{display:flex;align-items:center;gap:10px;text-decoration:none;font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:.08em}
.logo-mark{display:grid;place-items:center;width:24px;height:24px;border-radius:3px;background:var(--bone);color:#101010;font-family:var(--font);font-size:13px;font-weight:500;letter-spacing:0}
.logo-sub{color:var(--granite);margin-left:-4px}
.live{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:var(--stone);display:flex;align-items:center;gap:8px;letter-spacing:-.02em}
.live .dot{background:var(--metric)}

.hero{padding:88px 0 96px}
.hero-grid{display:grid;grid-template-columns:.9fr 1.1fr;gap:56px;align-items:center}
.hero h1{font-size:clamp(40px,4.6vw,64px);line-height:1;letter-spacing:-.04em;font-weight:400;margin:24px 0 24px}
.hero h1 span{display:block;color:var(--granite)}
.cta-row{display:flex;flex-wrap:wrap;gap:12px;margin-top:32px}
.ticks{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:8px 20px;margin-top:24px;font-family:var(--mono);font-size:12px;text-transform:uppercase;color:var(--stone);letter-spacing:-.02em}
.ticks li{display:flex;align-items:center;gap:8px}.ticks li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--metric)}

/* Dashboard Frame */
.term{background:#0d0d0d;border:1px solid var(--carbon);border-radius:10px;overflow:hidden}
.term-bar{display:flex;align-items:center;gap:7px;padding:12px 16px;border-bottom:1px solid var(--carbon)}
.term-bar span{width:10px;height:10px;border-radius:50%;background:var(--graphite)}
.term-bar p{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:var(--stone);margin-left:10px;display:flex;align-items:center;gap:8px}
.term-bar p::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal)}
.term-body{margin:0;padding:24px;min-height:360px;font-family:var(--mono);font-size:14px;line-height:1.75;color:var(--bone);white-space:pre-wrap}
.term-body .ok{color:var(--metric)}.term-body .warn{color:var(--stone)}.term-body .bad{color:var(--signal)}.term-body .dim{color:var(--graphite)}.term-body .acc{color:var(--chalk)}
.cursor{display:inline-block;width:8px;height:1.1em;background:var(--bone);vertical-align:-3px;animation:blink 1s steps(1) infinite}
@keyframes blink{50%{opacity:0}}

/* Feature Card Row */
.symptoms{padding:96px 0 0}
.sym-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:24px;margin-top:48px}
.sym-grid article{border:1px solid var(--carbon);border-radius:10px;padding:24px;transition:border-color .15s cubic-bezier(.4,0,.2,1)}
.sym-grid article:hover{border-color:var(--ash)}
.sym-grid h3{font-size:20px;line-height:1.3;font-weight:400;letter-spacing:-.01em;margin:20px 0 10px}
.sym-grid p{font-size:14px;color:var(--granite);line-height:1.43}
.tag{font-family:var(--mono);font-size:12px;text-transform:uppercase;letter-spacing:-.02em;color:var(--stone);display:inline-flex;align-items:center;gap:8px}
.tag::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--graphite)}
.tag.hot::before{background:var(--signal)}

/* Metric tiles timeline */
.clock{padding:96px 0}
.timeline{list-style:none;padding:0;margin-top:48px;display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--carbon)}
.timeline li{padding:20px 20px 0 0;border-right:1px solid var(--carbon);margin-right:20px}
.timeline li:last-child{border-right:0}
.timeline .t{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:var(--stone);letter-spacing:-.02em}
.timeline h3{font-size:24px;font-weight:400;letter-spacing:-.02em;margin:14px 0 8px;line-height:1.15}
.timeline p{font-size:14px;color:var(--granite);line-height:1.43;padding-bottom:20px}

/* Informe = Light Surface Card */
.report-sec{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;align-items:start;padding:0 0 96px}
.report-copy .lead{margin:20px 0 32px}
.price{border:1px solid var(--ash);border-radius:10px;padding:24px}
.price-label{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:var(--stone)}
.price-num{font-size:72px;font-weight:400;letter-spacing:-.04em;line-height:1;margin:12px 0 4px}.price-num small{font-size:14px;color:var(--granite);letter-spacing:0}
.price ul{list-style:none;padding:0;margin:20px 0 24px;display:grid;gap:10px;font-size:14px;color:var(--stone)}
.price li{display:flex;gap:10px;align-items:baseline}.price li::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--metric);flex:none;transform:translateY(-1px)}
.price .btn{width:100%}
.report{background:var(--bone);color:#101010;border-radius:10px;padding:32px}
.report-head{display:flex;justify-content:space-between;font-family:var(--mono);font-size:12px;text-transform:uppercase;color:#6b6562;letter-spacing:-.02em}
.report-head span:first-child{display:flex;align-items:center;gap:8px}.report-head span:first-child::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--signal)}
.report-title{font-size:36px;font-weight:400;letter-spacing:-.03em;margin:16px 0 20px;line-height:1.1}
.checks{list-style:none;padding:0;border-top:1px solid #d6d2cf}
.checks li{display:grid;grid-template-columns:22px 180px 1fr;gap:8px;align-items:baseline;padding:12px 0;border-bottom:1px solid #d6d2cf;font-size:14px}
.checks b{font-weight:500}
.checks li::before{font-family:var(--mono);font-size:13px}
.checks .ok::before{content:"✓";color:#4f7a43}.checks .warn::before{content:"!";color:#6b6562}.checks .bad::before{content:"✗";color:#c94c0f}
.checks span{color:#4d4947}
.plan{margin-top:24px}
.plan p{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:#6b6562;margin-bottom:8px}
.phase{display:grid;grid-template-columns:64px 1fr auto;gap:10px;font-size:14px;padding:10px 0;border-top:1px solid #d6d2cf}
.phase span{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:#6b6562}.phase em{font-style:normal;color:#6b6562;font-family:var(--mono);font-size:12px}
.report-foot{font-size:12px;color:#6b6562;margin-top:16px}

/* Logo strip style */
.stack{padding:56px 0;border-top:1px solid var(--carbon);border-bottom:1px solid var(--carbon)}
.chips{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:12px 36px;margin-top:20px}
.chips li{font-size:20px;letter-spacing:-.02em;color:var(--granite)}
.chips li:last-child{font-family:var(--mono);font-size:12px;text-transform:uppercase;align-self:center;color:var(--stone)}

.promise{padding:96px 0}
.promise-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.promise article{border-top:1px solid var(--ash);padding-top:20px}
.promise h3{font-size:24px;font-weight:400;letter-spacing:-.02em;margin-bottom:10px}
.promise p{color:var(--granite);font-size:14px;line-height:1.43}

.faq{padding:0 0 96px;max-width:860px}
.faq .h2{margin-bottom:24px}
.faq details{border-color:var(--carbon)}
.faq summary{font-weight:400;font-size:18px}
.faq details p{color:var(--granite);font-size:15px}

/* CTA Section Card (light) */
.contact{padding:0 0 40px}
.contact-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:56px;background:var(--bone);color:#101010;border-radius:20px;padding:48px}
.contact .h2 em{color:#6b6562}
.contact .lead{color:#4d4947;margin-top:18px}
.contact .btn{--accent:#101010;--accent-fg:#eeeeee}
.contact .btn.ghost{color:#101010;border-color:#b8b3b0}.contact .btn.ghost:hover{border-color:#101010;color:#101010}
.alt{display:grid;gap:10px;margin-top:32px;max-width:340px}.alt p{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:#6b6562}
.form{--field-bg:#fafafa;--field-fg:#101010;--field-line:#cfcac6}
.form label{font-weight:400;font-size:14px;color:#4d4947}
.form .note{color:#6b6562;opacity:1}
.legal{color:var(--granite)}
.legal a:hover{color:var(--bone)}
.dock .btn.ghost{border-radius:3px}

@media(max-width:1000px){.hero-grid,.report-sec,.contact-grid{grid-template-columns:1fr}.sym-grid{grid-template-columns:1fr 1fr}.timeline{grid-template-columns:1fr 1fr}.timeline li:nth-child(2){border-right:0}}
@media(max-width:640px){.live{display:none}.hero{padding:48px 0 64px}.sym-grid,.timeline,.promise-grid{grid-template-columns:1fr}.timeline li{border-right:0;margin-right:0;border-bottom:1px solid var(--carbon)}.checks li{grid-template-columns:20px 1fr}.checks span{grid-column:2}.contact-grid{padding:24px 18px;border-radius:10px}.term-body{min-height:300px;font-size:12.5px;padding:16px}.cta-row .btn{width:100%}.report{padding:22px}}

/* ---- Movimiento y gráficos ---- */
/* Estado del servicio bajo el terminal: cae y se recupera */
.term-status{border-top:1px solid var(--line);padding:14px 18px 16px}
.ts-head{display:flex;justify-content:space-between;align-items:center;font-family:var(--mono);font-size:11px;text-transform:uppercase;color:var(--granite);margin-bottom:10px}
.ts-badge{color:var(--metric);border:1px solid rgba(160,202,146,.4);border-radius:4px;padding:2px 6px;opacity:0;animation:fadeIn .6s var(--ease-out,ease) 3.4s forwards}
.term-status svg{display:block;width:100%;height:auto;overflow:visible}
.ts-grid{stroke:var(--carbon);stroke-width:1}
.term-status path{fill:none;stroke-width:2;stroke-linejoin:round;stroke-linecap:round;stroke-dasharray:1;stroke-dashoffset:1}
.ts-ok{stroke:var(--metric)}.ts-down{stroke:var(--signal)}
.ts-1{animation:tsDraw 1.1s var(--ease-io,ease) .5s forwards}
.ts-2{animation:tsDraw .8s var(--ease-io,ease) 1.6s forwards}
.ts-3{animation:tsDraw 1.1s var(--ease-io,ease) 2.6s forwards}
.ts-dot{fill:var(--metric);opacity:0;animation:fadeIn .4s ease 3.6s forwards,pulse 2.4s ease-in-out 4s infinite}
@keyframes tsDraw{to{stroke-dashoffset:0}}
@keyframes fadeIn{to{opacity:1}}
@keyframes pulse{50%{opacity:.35}}

/* Línea de proceso que avanza y nodos que se encienden */
.timeline{position:relative}
.timeline::before{content:"";position:absolute;left:0;right:0;top:-1px;height:2px;background:var(--signal);transform-origin:left center;transform:scaleX(1)}
.timeline li{position:relative}
.timeline li::after{content:"";position:absolute;left:0;top:-6px;width:10px;height:10px;border-radius:50%;background:var(--signal);box-shadow:0 0 0 4px var(--canvas)}
.reveal .timeline::before{transform:scaleX(0);transition:transform 2s var(--ease-io) .25s}
.reveal .timeline li::after{background:var(--ash);transition:background .5s ease calc(var(--i,0) * 500ms + 400ms)}
.reveal.in .timeline::before{transform:scaleX(1)}
.reveal.in .timeline li::after{background:var(--signal)}

/* Resumen del informe: donut 2/2/2 */
.rep-sum{display:flex;align-items:center;gap:22px;margin:0 0 18px}
.donut{width:104px;height:104px;flex:none;transform:rotate(-90deg)}
.donut circle{fill:none;stroke-width:12}
.d-bg{stroke:#dcd8d5}
.d-seg{stroke-dasharray:32.2 100;stroke-dashoffset:var(--off)}
.donut .d-ok{stroke:#4f7a43}.donut .d-warn{stroke:#9a9490}.donut .d-bad{stroke:#c94c0f}
.reveal .d-seg{stroke-dasharray:0 100;transition:stroke-dasharray 1s var(--ease-io)}
.reveal .d-warn{transition-delay:.45s}.reveal .d-bad{transition-delay:.9s}
.reveal.in .d-seg{stroke-dasharray:32.2 100}
.donut text{transform:rotate(90deg);transform-origin:60px 60px}
.d-n{font-size:30px;fill:#101010;font-family:var(--font)}
.d-l{font-size:9px;fill:#6b6562;font-family:var(--mono);letter-spacing:.06em}
.rs-legend{display:flex;flex-direction:column;gap:6px;font-family:var(--mono);font-size:12px;text-transform:uppercase;color:#4d4947}
.rs-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:8px;vertical-align:-1px}
.rs-legend .d-ok{background:#4f7a43}.rs-legend .d-warn{background:#9a9490}.rs-legend .d-bad{background:#c94c0f}

/* Vídeo */
.film{--film-bg:#0b0b0b;--film-r:12px;--film-btn-bg:var(--bone);--film-btn-fg:#101010;border-top:1px solid var(--carbon)}
.film-frame{border:1px solid var(--carbon)}
.film-sub{font-family:var(--mono);font-size:12px;text-transform:uppercase;color:var(--granite);margin-top:14px}

@media(prefers-reduced-motion:reduce){.term-status path{stroke-dashoffset:0;animation:none}.ts-badge,.ts-dot{opacity:1;animation:none}.reveal .timeline::before{transform:scaleX(1)}.reveal .d-seg{stroke-dasharray:32.2 100}}
