/* ═══════════════════════════════════════════════════════════
   RONIN VILIS · secciones del sitio
   Extraído verbatim de index.html, en el mismo orden, para que
   las páginas del portal compartan exactamente el mismo aspecto.
   Se carga DESPUÉS de rv.css: lo de aquí manda.
   ═══════════════════════════════════════════════════════════ */

/* ── Ajustes del portal frente a rv.css ──
   rv.css define el footer simple de las landings (display:flex). Las
   páginas del portal usan el footer de columnas, que es display:block. */
footer{display:block;}

/* ── bloque 1 ── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; overflow-x: hidden; }
body { font-family: 'Raleway', sans-serif; background: #120C0C; color: #F0E8D8; overflow-x: hidden; }
:root {
 --crimson: #B03030;
 --crimson-d: #8a2424;
 --crimson-l: #c94444;
 --gold: #D4A840;
 --gold-d: #a8832e;
 --gold-l: #e0bf6a;
 --ivory: #F0E8D8;
 --ivory-dim: rgba(240,232,216,0.68);
 --ivory-faint: rgba(240,232,216,0.1);
 --ink: #16100d;
 --ink-mid: #221711;
 --ink-light: #2e2018;
 --ink-warm: #241812;
 --glow-gold: rgba(212,168,64,0.14);
 --border: rgba(240,232,216,0.09);
 --border-gold: rgba(212,168,64,0.22);
}
::-webkit-scrollbar { width: 4px; }
::-webkit-scrollbar-track { background: var(--ink); }
::-webkit-scrollbar-thumb { background: var(--crimson); }
nav {
 position: fixed; top: 0; left: 0; right: 0; z-index: 999;
 height: 68px; display: flex; align-items: center; justify-content: space-between;
 padding: 0 48px;
 background: rgba(18,12,12,0.92); backdrop-filter: blur(20px);
 border-bottom: 1px solid var(--border); transition: border-color 0.3s;
}
nav.scrolled { border-bottom-color: var(--border-gold); }
.nav-logo-svg { height: 36px; width: auto; display: block; }
.nav-links { display: flex; gap: 18px; list-style: none; }
.nav-links a { font-size: 0.72rem; font-weight: 500; letter-spacing: 0.12em; text-transform: uppercase; color: var(--ivory-dim); text-decoration: none; transition: color 0.2s; }
.nav-links a:hover { color: var(--ivory); }
.nav-cta { background: var(--crimson); color: var(--ivory); font-size: 0.72rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; padding: 10px 24px; text-decoration: none; border: 1px solid var(--crimson); transition: background 0.2s, color 0.2s; }
.nav-cta:hover { background: transparent; color: var(--crimson); }
.hero { min-height: 100vh; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 120px 48px 90px; background: radial-gradient(ellipse 130% 96% at 50% 37%, #1d1310 0%, #150e0c 46%, #140d0b 100%); position: relative; overflow: hidden; }
.hero::before { content: ''; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: radial-gradient(circle at 50% 26%, rgba(212,168,64,0.16), transparent 42%), radial-gradient(ellipse 46% 44% at 50% 56%, rgba(9,5,4,0.66), transparent 70%), radial-gradient(circle at 50% 112%, rgba(176,48,48,0.10), transparent 52%); }
.hero-enso { position: absolute; width: min(1180px, 155vw); height: min(1180px, 155vw); top: 44%; left: 50%; transform: translate(-50%, -50%); pointer-events: none; z-index: 0; background: url(/enso-mark.jpg) center/contain no-repeat; mix-blend-mode: screen; opacity: 0.42; -webkit-mask-image: radial-gradient(circle at 50% 50%, #000 30%, rgba(0,0,0,0.4) 50%, transparent 66%); mask-image: radial-gradient(circle at 50% 50%, #000 30%, rgba(0,0,0,0.4) 50%, transparent 66%); will-change: transform, opacity; animation: ensoIn 2.4s cubic-bezier(0.16,1,0.3,1) 0.3s both; }
.hero-enso::before { content: none; }
.hero h1, .hero-sub, .hero-tagline, .hero-proof { text-shadow: 0 2px 28px rgba(8,4,4,0.62); }
@keyframes ensoIn { from { opacity: 0; transform: translate(-50%,-50%) scale(1.12) rotate(-6deg); } to { opacity: 0.42; transform: translate(-50%,-50%) scale(1) rotate(0); } }
@media (prefers-reduced-motion: reduce) { .hero-enso { animation: none; opacity: 0.42; } }
.hero-logo-wrap { margin-bottom: 52px; opacity: 0; animation: fadelogo 1.2s ease 0.3s forwards; }
.hero-logo-wrap svg { width: clamp(340px, 55vw, 560px); height: auto; }
@keyframes fadelogo { from{opacity:0;transform:translateY(16px)} to{opacity:1;transform:none} }
.hero-tagline { font-family: 'JetBrains Mono', monospace; font-size: 0.66rem; font-weight: 500; letter-spacing: 0.22em; text-transform: uppercase; color: var(--gold); margin-bottom: 36px; display: flex; align-items: center; gap: 14px; justify-content: center; opacity: 0; animation: fadelogo 1s ease 0.8s forwards; }
.hero-tagline::before,.hero-tagline::after { content: ''; display: block; width: 28px; height: 1px; background: var(--gold); opacity: 0.55; }
.hero h1 { font-family: 'Playfair Display', serif; font-size: clamp(2.4rem, 5.5vw, 4.6rem); font-weight: 500; line-height: 1.08; color: var(--ivory); letter-spacing: -0.03em; max-width: 860px; margin-bottom: 28px; opacity: 0; animation: fadelogo 1s ease 1s forwards; }
.hero h1 em { color: var(--crimson); font-style: italic; }
.hero-sub { font-size: 1rem; font-weight: 300; line-height: 1.9; color: var(--ivory-dim); max-width: 500px; margin: 0 auto 52px; opacity: 0; animation: fadelogo 1s ease 1.2s forwards; }
.hero-btns { display: flex; gap: 16px; justify-content: center; flex-wrap: wrap; opacity: 0; animation: fadelogo 1s ease 1.4s forwards; }
.btn-crimson { background: var(--crimson); color: var(--ivory); font-size: 0.76rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; padding: 16px 38px; text-decoration: none; display: inline-block; border: 1px solid var(--crimson); transition: background 0.2s, color 0.2s, transform 0.15s; }
.btn-crimson:hover { background: transparent; color: var(--crimson); transform: translateY(-2px); }
.btn-ivory-out { background: transparent; color: var(--ivory); font-size: 0.76rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; padding: 15px 38px; text-decoration: none; display: inline-block; border: 1px solid rgba(240,232,216,0.38); transition: border-color 0.2s; }
.btn-ivory-out:hover { border-color: var(--ivory); }
.hero-scroll { position: absolute; bottom: 44px; left: 50%; transform: translateX(-50%); display: flex; flex-direction: column; align-items: center; gap: 10px; font-size: 0.6rem; letter-spacing: 0.18em; text-transform: uppercase; color: var(--ivory-dim); }
.scroll-line { width: 1px; height: 48px; background: linear-gradient(to bottom, var(--crimson), transparent); animation: sline 2s ease-in-out infinite; }
@keyframes sline { 0%,100%{opacity:1} 50%{opacity:0.3} }
.value-strip { background: var(--crimson); padding: 18px 0; display: flex; overflow: hidden; position: relative; }
.value-strip::before,.value-strip::after { content: ''; position: absolute; top: 0; bottom: 0; width: 80px; z-index: 2; pointer-events: none; }
.value-strip::before { left: 0; background: linear-gradient(90deg, var(--crimson), transparent); }
.value-strip::after { right: 0; background: linear-gradient(270deg, var(--crimson), transparent); }
.vs-track { display: flex; align-items: center; gap: 28px; padding-left: 28px; flex-shrink: 0; animation: vsScroll 32s linear infinite; }
.value-strip:hover .vs-track { animation-play-state: paused; }
@keyframes vsScroll { from { transform: translateX(0); } to { transform: translateX(-100%); } }
.vs-i { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.14em; text-transform: uppercase; color: rgba(240,232,216,0.88); white-space: nowrap; }
.vs-dot { width: 3px; height: 3px; border-radius: 50%; background: rgba(240,232,216,0.38); flex-shrink: 0; }
@media (prefers-reduced-motion: reduce) { .vs-track { animation: none; } }
.showcase { background: var(--ink-mid); padding: 110px 48px; display: flex; align-items: center; gap: 80px; flex-wrap: wrap; border-top: 1px solid var(--border); border-bottom: 1px solid var(--border); }
.sc-text { flex: 1; min-width: 280px; }
.sc-lbl { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold); margin-bottom: 16px; }
.sc-text h2 { font-family: 'Playfair Display', serif; font-size: clamp(2rem, 4vw, 3rem); font-weight: 500; line-height: 1.1; color: var(--ivory); letter-spacing: -0.02em; margin-bottom: 20px; }
.sc-text p { font-size: 0.95rem; font-weight: 300; line-height: 1.9; color: var(--ivory-dim); margin-bottom: 36px; }
.btn-gold { background: var(--gold); color: var(--ink); font-size: 0.76rem; font-weight: 700; letter-spacing: 0.1em; text-transform: uppercase; padding: 14px 32px; text-decoration: none; display: inline-block; transition: background 0.2s, transform 0.15s; }
.btn-gold:hover { background: var(--gold-l); transform: translateY(-2px); }
.sc-device { flex: 1.2; min-width: 300px; }
.device-wrap { background: #170f0c; border-radius: 12px; padding: 14px 14px 0; box-shadow: 0 60px 120px rgba(0,0,0,0.6), 0 0 0 1px rgba(240,232,216,0.05); }
.dev-bar { display: flex; align-items: center; gap: 6px; margin-bottom: 12px; }
.db { width: 10px; height: 10px; border-radius: 50%; }
.db.r{background:#ff5f57;} .db.y{background:#febc2e;} .db.g{background:#28c840;}
.dev-url { margin-left: 8px; background: #1a1010; border-radius: 4px; flex: 1; height: 22px; display: flex; align-items: center; padding: 0 10px; font-family: 'JetBrains Mono', monospace; font-size: 0.55rem; color: rgba(240,232,216,0.38); }
.dev-screen { border-radius: 6px 6px 0 0; overflow: hidden; background: #120C0C; }
.im-nav { background: #170f0c; height: 40px; display: flex; align-items: center; padding: 0 16px; justify-content: space-between; border-bottom: 1px solid rgba(176,48,48,0.18); }
.im-nav-logo { height: 20px; width: auto; }
.im-nav-links { display: flex; gap: 12px; }
.im-nl { width: 24px; height: 2px; background: rgba(240,232,216,0.14); border-radius: 2px; }
.im-cta-sm { background: var(--crimson); color: var(--ivory); font-size: 0.44rem; font-weight: 600; padding: 3px 8px; letter-spacing: 0.1em; text-transform: uppercase; }
.im-hero { background: var(--ink); padding: 28px 22px 24px; text-align: center; }
.im-hero h3 { font-family: 'Playfair Display', serif; font-size: 1.4rem; font-weight: 500; color: var(--ivory); line-height: 1.15; margin-bottom: 8px; }
.im-hero h3 em { color: var(--crimson); font-style: italic; }
.im-hero p { font-size: 0.52rem; color: var(--ivory-dim); line-height: 1.6; margin-bottom: 14px; }
.im-h-btns { display: flex; gap: 8px; justify-content: center; }
.im-hb { background: var(--crimson); color: var(--ivory); font-size: 0.44rem; font-weight: 600; padding: 5px 11px; letter-spacing: 0.08em; }
.im-hb.out { background: transparent; color: var(--ivory); border: 1px solid rgba(240,232,216,0.35); }
.im-services { display: grid; grid-template-columns: repeat(3,1fr); background: var(--ink-mid); }
.im-s { padding: 14px 12px; border-right: 1px solid var(--border); border-top: 2px solid transparent; }
.im-s:last-child { border-right: none; }
.im-s.a { border-top-color: var(--crimson); }
.im-s-t { font-size: 0.5rem; font-weight: 600; color: var(--ivory); margin-bottom: 2px; }
.im-s-d { font-size: 0.42rem; color: var(--ivory-dim); }
.im-strip { background: #170f0c; display: flex; justify-content: space-around; padding: 10px 12px; }
.im-st-i { text-align: center; }
.im-st-n { display: block; font-family: 'Playfair Display', serif; font-size: 0.95rem; color: var(--gold); font-weight: 700; }
.im-st-l { font-size: 0.36rem; color: var(--ivory-dim); }
.alt { display: grid; grid-template-columns: 1fr 1fr; min-height: 500px; }
.alt.flip { direction: rtl; }
.alt.flip > * { direction: ltr; }
.alt-txt { display: flex; flex-direction: column; justify-content: center; padding: 80px 72px; background: var(--ink); }
.alt-txt.mid { background: var(--ink-mid); }
.alt-lbl { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold); margin-bottom: 14px; }
.alt-txt h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem,3.2vw,2.6rem); font-weight: 500; line-height: 1.15; color: var(--ivory); letter-spacing: -0.02em; margin-bottom: 18px; }
.alt-txt h2 em { color: var(--crimson); font-style: italic; }
.alt-txt p { font-size: 0.93rem; font-weight: 300; line-height: 1.9; color: var(--ivory-dim); margin-bottom: 32px; }
.alt-vis { display: flex; align-items: center; justify-content: center; padding: 56px 48px; }
.alt-vis.cv { background: radial-gradient(circle at 30% 20%, #3a1212 0%, #200a0a 70%); }
.alt-vis.gv { background: radial-gradient(circle at 70% 20%, #3a2c0c 0%, #181206 70%); }
.feat-stack { display: flex; flex-direction: column; gap: 14px; width: 100%; }
.feat-item { background: var(--ink); border: 1px solid var(--border); border-left: 2px solid var(--crimson); padding: 20px 24px; transition: border-left-color 0.2s, background 0.2s; }
.feat-item:hover { border-left-color: var(--gold); background: var(--ink-mid); }
.feat-item.ga { border-left-color: var(--gold); }
.fi-t { font-family: 'Playfair Display', serif; font-size: 0.95rem; font-weight: 500; color: var(--ivory); margin-bottom: 6px; }
.fi-d { font-size: 0.82rem; font-weight: 300; line-height: 1.7; color: var(--ivory-dim); }
.services-sec { background: var(--ink-mid); padding: 110px 48px; border-top: 1px solid var(--border); }
.sec-hd { text-align: center; margin-bottom: 64px; }
.sec-lbl { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold); margin-bottom: 14px; text-shadow: 0 0 22px rgba(212,168,64,0.20); }
.sec-h2 { font-family: 'Playfair Display', serif; font-size: clamp(2rem,4vw,3.2rem); font-weight: 500; color: var(--ivory); letter-spacing: -0.02em; line-height: 1.1; margin-bottom: 16px; text-shadow: 0 0 48px rgba(212,168,64,0.07); }
/* ── Overdrive: acentos cálidos cohesivos en todo el sitio ── */
.btn-crimson { box-shadow: 0 10px 34px rgba(176,48,48,0.22); }
.btn-crimson:hover { box-shadow: 0 14px 46px rgba(176,48,48,0.32); }
.pkg-title, .rev-title, .social-title, .loc-h2, .nos-h2, .alt-txt h2, .cta-title { text-shadow: 0 0 48px rgba(212,168,64,0.06); }
.sec-sub { font-size: 0.95rem; font-weight: 300; color: var(--ivory-dim); max-width: 480px; margin: 0 auto; line-height: 1.85; }
.svc-grid { display: grid; grid-template-columns: repeat(3,1fr); gap: 1px; background: var(--border); max-width: 1100px; margin: 0 auto; }
.svc-card { background: var(--ink); padding: 44px 36px; text-align: left; transition: background 0.25s; cursor: pointer; position: relative; overflow: hidden; display: block; text-decoration: none; }
.svc-card:focus-visible { outline: 2px solid var(--gold); outline-offset: -2px; }
.svc-card:hover { background: var(--crimson-d); }
.svc-card:hover .svc-n { color: rgba(240,232,216,0.06); }
.svc-card:hover .svc-t,.svc-card:hover .svc-d,.svc-card:hover .svc-arr { color: var(--ivory); }
.svc-card:hover .svc-d { color: rgba(240,232,216,0.68); }
.svc-card:hover .svc-arr { color: var(--gold); }
.svc-n { font-family: 'Playfair Display', serif; font-size: 2.8rem; font-weight: 700; color: rgba(240,232,216,0.05); line-height: 1; margin-bottom: 20px; display: block; transition: color 0.25s; }
.svc-t { font-family: 'Playfair Display', serif; font-size: 1.2rem; font-weight: 500; color: var(--ivory); margin-bottom: 10px; transition: color 0.25s; }
.svc-d { font-size: 0.86rem; font-weight: 300; line-height: 1.75; color: var(--ivory-dim); transition: color 0.25s; }
.svc-arr { position: absolute; bottom: 24px; right: 24px; font-size: 1.2rem; color: transparent; transition: color 0.25s; }
.port-sec { background: var(--ink); padding: 110px 48px; border-top: 1px solid var(--border); }
.port-note { display: inline-block; color: var(--gold); font-family: 'JetBrains Mono', monospace; font-size: 0.65rem; font-weight: 500; letter-spacing: 0.08em; padding: 5px 12px; border: 1px solid var(--border-gold); margin-bottom: 48px; }
.port-filters { display: flex; gap: 8px; flex-wrap: wrap; margin-bottom: 48px; }
.pf-tab { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; padding: 8px 18px; border: 1px solid var(--border); color: var(--ivory-dim); cursor: pointer; transition: all 0.2s; background: transparent; }
.pf-tab:hover { border-color: var(--ivory-dim); color: var(--ivory); }
.pf-tab.active { background: var(--crimson); border-color: var(--crimson); color: var(--ivory); }
.port-grid-new { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; max-width: 1100px; }
.port-card-new {
 background: var(--ink-mid);
 border: 1px solid var(--border);
 overflow: hidden;
 cursor: pointer;
 transition: border-color 0.25s, box-shadow 0.25s;
 display: flex; flex-direction: column;
}
.port-card-new:hover { border-color: var(--crimson); box-shadow: 0 20px 60px rgba(176,48,48,0.12); }
.port-card-new.featured { grid-column: span 2; display: grid; grid-template-columns: 1fr 1fr; }
.port-preview {
 position: relative;
 overflow: hidden;
 background: radial-gradient(circle at 50% 38%, #1a1210, #120b09 68%);
}
.port-preview::after {
 content: '';
 position: absolute; left: 50%; top: 50%; width: 26px; height: 26px;
 margin: -13px 0 0 -13px;
 border: 2px solid rgba(212,168,64,0.22); border-top-color: rgba(212,168,64,0.8);
 border-radius: 50%; animation: portSpin 0.9s linear infinite; z-index: 0;
}
.port-preview iframe, .port-preview img { position: relative; z-index: 1; }
.preview-label, .preview-overlay, .port-open-btn { z-index: 2; }
@keyframes portSpin { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .port-preview::after { animation: none; opacity: 0.3; } }
/* Vista previa cargada: apaga el spinner */
.port-preview.pv-loaded::after { display: none; }
/* Respaldo cuando la vista previa no carga: nunca una caja en blanco */
.pv-fallback {
 position: absolute; inset: 0; z-index: 1;
 display: none; flex-direction: column; align-items: center; justify-content: center; gap: 10px;
 background: radial-gradient(circle at 50% 38%, #1a1210, #120b09 68%);
 text-align: center; padding: 24px;
}
.port-preview.pv-failed .pv-fallback { display: flex; }
.port-preview.pv-failed::after { display: none; }
.pv-fallback-mark { width: 44px; height: 44px; opacity: 0.9; }
.pv-fallback-dom { font-family: 'JetBrains Mono', monospace; font-size: 0.68rem; letter-spacing: 0.06em; color: var(--ivory); }
.pv-fallback-txt { font-size: 0.7rem; font-weight: 300; color: var(--ivory-dim); max-width: 260px; line-height: 1.6; }
.port-card-new.featured .port-preview { height: 360px; }
.port-card-new:not(.featured) .port-preview { height: 240px; }
.port-preview iframe {
 width: 200%;
 height: 200%;
 border: none;
 transform: scale(0.5);
 transform-origin: top left;
 pointer-events: none;
 display: block;
}
.preview-label {
 position: absolute; top: 12px; left: 12px;
 background: var(--crimson); color: var(--ivory);
 font-family: 'JetBrains Mono', monospace;
 font-size: 0.55rem; font-weight: 500; letter-spacing: 0.08em;
 padding: 3px 9px;
}
.preview-label.dashboard-lbl { background: #3B82F6; }
.preview-label.wa-lbl { background: #25D366; }
.preview-overlay {
 position: absolute; inset: 0;
 background: linear-gradient(to bottom, transparent 50%, rgba(18,12,12,0.6) 100%);
}
.port-card-new:hover .port-open-btn { opacity: 1; transform: translateY(0); }
.port-open-btn {
 position: absolute; bottom: 14px; right: 14px;
 background: var(--crimson); color: var(--ivory);
 font-size: 0.62rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
 padding: 7px 14px;
 opacity: 0; transform: translateY(8px);
 transition: opacity 0.25s, transform 0.25s;
 text-decoration: none; display: inline-block;
 z-index: 10;
}
.port-info { padding: 24px 28px; flex: 1; display: flex; flex-direction: column; justify-content: space-between; }
.port-card-new.featured .port-info { padding: 40px 44px; justify-content: center; }
.pi-cat { font-family: 'JetBrains Mono', monospace; font-size: 0.62rem; color: var(--gold); letter-spacing: 0.08em; margin-bottom: 10px; }
.pi-title { font-family: 'Playfair Display', serif; font-size: 1.3rem; font-weight: 500; color: var(--ivory); letter-spacing: -0.01em; margin-bottom: 10px; line-height: 1.2; }
.port-card-new.featured .pi-title { font-size: 1.8rem; margin-bottom: 14px; }
.pi-desc { font-size: 0.84rem; font-weight: 300; line-height: 1.75; color: var(--ivory-dim); margin-bottom: 20px; }
.pi-tags { display: flex; gap: 8px; flex-wrap: wrap; }
.pi-tag { font-size: 0.62rem; font-weight: 500; color: var(--ivory-dim); border: 1px solid var(--border); padding: 3px 10px; }
.pi-link {
 display: inline-flex; align-items: center; gap: 8px;
 font-size: 0.72rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase;
 color: var(--gold); text-decoration: none; margin-top: 20px;
 border-bottom: 1px solid var(--border-gold); padding-bottom: 3px;
 transition: color 0.2s, border-color 0.2s;
}
.pi-link:hover { color: var(--gold-l); border-color: var(--gold-l); }
.brand-sec { background: var(--ink-mid); padding: 110px 48px; border-top: 1px solid var(--border); }
.brand-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; background: var(--border); max-width: 1100px; margin: 48px auto 0; }
.brand-card { background: var(--ink); padding: 32px 28px; display: flex; flex-direction: column; align-items: center; gap: 20px; }
.brand-card.light-card { background: #f5f0e8; }
.brand-card-preview { width: 100%; display: flex; align-items: center; justify-content: center; padding: 16px 0; }
.brand-card-preview svg { max-width: 100%; height: auto; }
.brand-card-preview.icon-preview svg { width: 80px; height: 80px; }
.brand-card-preview.card-preview { border-radius: 6px; overflow: hidden; }
.bc-info { width: 100%; }
.bc-name { font-family: 'JetBrains Mono', monospace; font-size: 0.68rem; color: var(--gold); margin-bottom: 4px; }
.bc-name.dark-text { color: var(--crimson-d); }
.bc-use { font-size: 0.78rem; font-weight: 300; color: var(--ivory-dim); line-height: 1.5; }
.bc-use.dark-text { color: #604030; }
.bc-dl { display: inline-block; margin-top: 12px; font-size: 0.68rem; font-weight: 600; letter-spacing: 0.1em; text-transform: uppercase; color: var(--gold); border-bottom: 1px solid rgba(212,168,64,0.35); padding-bottom: 2px; cursor: pointer; text-decoration: none; transition: color 0.2s, border-color 0.2s; }
.bc-dl:hover { color: var(--gold-l); border-color: var(--gold-l); }
.bc-dl.dark-dl { color: var(--crimson-d); border-color: rgba(139,32,32,0.35); }
.bc-dl.dark-dl:hover { color: var(--crimson); border-color: var(--crimson); }
.process-sec { background: var(--ink); padding: 110px 48px; border-top: 1px solid var(--border); text-align: center; }
.process-track { display: grid; grid-template-columns: repeat(3,1fr); max-width: 860px; margin: 0 auto; position: relative; }
.process-track::before { content: ''; position: absolute; top: 40px; left: calc(16.6% + 14px); right: calc(16.6% + 14px); height: 2px; background: repeating-linear-gradient(90deg, var(--gold) 0 8px, transparent 8px 16px); z-index: 0; opacity: 0.5; }
.p-step { padding: 0 24px; }
.p-num-c { width: 80px; height: 80px; background: var(--ink); border: 1px solid var(--border-gold); border-radius: 50%; color: var(--gold); font-family: 'Playfair Display', serif; font-size: 1.8rem; font-weight: 700; display: flex; align-items: center; justify-content: center; margin: 0 auto 28px; position: relative; z-index: 1; transition: transform 0.3s ease, border-color 0.3s ease, box-shadow 0.3s ease, color 0.3s ease; }
.p-num-c::after { content: ''; position: absolute; inset: 6px; border-radius: 50%; border: 1px solid rgba(176,48,48,0.3); transition: border-color 0.3s ease; }
.p-step:hover .p-num-c { transform: translateY(-4px); border-color: var(--crimson); color: var(--ivory); box-shadow: 0 0 28px rgba(176,48,48,0.35); }
.p-step:hover .p-num-c::after { border-color: var(--gold); }
.p-s-t { font-family: 'Playfair Display', serif; font-size: 1.15rem; font-weight: 500; color: var(--ivory); margin-bottom: 10px; }
.p-s-d { font-size: 0.86rem; font-weight: 300; line-height: 1.8; color: var(--ivory-dim); }
.why-sec { background: var(--ink-mid); padding: 110px 48px; border-top: 1px solid var(--border); }
.why-in { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 1fr 1fr; gap: 80px; align-items: center; }
.why-txt h2 { font-family: 'Playfair Display', serif; font-size: clamp(1.8rem,3.2vw,2.6rem); font-weight: 500; color: var(--ivory); letter-spacing: -0.02em; margin-bottom: 18px; }
.why-txt h2 em { color: var(--crimson); font-style: italic; }
.why-txt p { font-size: 0.93rem; font-weight: 300; line-height: 1.9; color: var(--ivory-dim); margin-bottom: 32px; }
.why-list { display: flex; flex-direction: column; gap: 12px; }
.wl-i { display: flex; align-items: flex-start; gap: 12px; font-size: 0.9rem; font-weight: 400; color: var(--ivory-dim); }
.wl-ck { width: 20px; height: 20px; background: var(--crimson); color: var(--ivory); display: flex; align-items: center; justify-content: center; font-size: 0.65rem; flex-shrink: 0; margin-top: 2px; }
.why-stats { display: grid; grid-template-columns: 1fr 1fr; gap: 2px; background: var(--border); }
.ws-c { background: var(--ink); padding: 36px 30px; display: flex; flex-direction: column; justify-content: space-between; transition: background 0.2s; }
.ws-c:hover { background: var(--ink-light); }
.ws-n { font-family: 'Playfair Display', serif; font-size: 2.8rem; font-weight: 500; color: var(--ivory); line-height: 1; }
.ws-n em { color: var(--crimson); font-style: normal; }
.ws-l { font-family: 'JetBrains Mono', monospace; font-size: 0.68rem; color: var(--ivory-dim); margin-top: 8px; }
.ws-bar { width: 28px; height: 2px; background: var(--gold); margin-top: 20px; }
.faq-sec { background: var(--ink); padding: 110px 48px; border-top: 1px solid var(--border); }
.faq-in { max-width: 780px; margin: 0 auto; }
.faq-sec h2 { font-family: 'Playfair Display', serif; font-size: clamp(2rem,3.5vw,2.8rem); font-weight: 500; color: var(--ivory); letter-spacing: -0.02em; margin-bottom: 56px; text-align: center; }
.faq-item { border-top: 1px solid var(--border); padding: 26px 0; cursor: pointer; }
.faq-item:last-child { border-bottom: 1px solid var(--border); }
.faq-q { display: flex; justify-content: space-between; align-items: center; font-family: 'Playfair Display', serif; font-size: 1.05rem; font-weight: 500; color: var(--ivory); gap: 16px; }
.faq-ic { font-size: 1.1rem; color: var(--crimson); flex-shrink: 0; transition: transform 0.25s, color 0.25s; }
.faq-item.open .faq-ic { transform: rotate(45deg); color: var(--gold); }
.faq-a { font-size: 0.9rem; font-weight: 300; line-height: 1.85; color: var(--ivory-dim); max-height: 0; overflow: hidden; transition: max-height 0.4s ease, padding 0.3s; }
.faq-item.open .faq-a { max-height: 600px; padding-top: 16px; }
.cta-sec { background: var(--ink-mid); padding: 140px 48px; text-align: center; border-top: 1px solid var(--border); position: relative; overflow: hidden; }
.cta-sec::after { content: ''; position: absolute; top: 0; left: 10%; right: 10%; height: 1px; background: linear-gradient(90deg, transparent, var(--gold), transparent); }
.cta-lbl { font-size: 0.68rem; font-weight: 600; letter-spacing: 0.18em; text-transform: uppercase; color: var(--gold); display: flex; align-items: center; justify-content: center; gap: 14px; margin-bottom: 24px; }
.cta-lbl::before,.cta-lbl::after { content: ''; display: block; width: 32px; height: 1px; background: var(--gold); opacity: 0.45; }
.cta-icon { margin: 0 auto 32px; display: flex; justify-content: center; }
.cta-icon svg { width: 80px; height: 80px; opacity: 0.9; }
.cta-sec h2 { font-family: 'Playfair Display', serif; font-size: clamp(2.4rem,5vw,4rem); font-weight: 500; color: var(--ivory); letter-spacing: -0.03em; max-width: 760px; margin: 0 auto 20px; line-height: 1.08; position: relative; z-index: 1; }
.cta-sec h2 em { color: var(--crimson); font-style: italic; }
.cta-sec p { font-size: 1rem; font-weight: 300; color: var(--ivory-dim); max-width: 480px; margin: 0 auto 52px; line-height: 1.85; position: relative; z-index: 1; }
.cta-btns { display: flex; justify-content: center; gap: 16px; flex-wrap: wrap; position: relative; z-index: 1; }
footer { background: #120b09; padding: 0 48px; border-top: 1px solid var(--border-gold); }
.f-top { max-width: 1100px; margin: 0 auto; display: grid; grid-template-columns: 1.6fr 1fr 1fr; gap: 48px; padding: 64px 0 48px; }
.f-brand { max-width: 340px; }
.f-logo { display: inline-block; margin-bottom: 20px; }
.f-logo svg { display: block; }
.f-tagline { font-size: 0.86rem; font-weight: 300; line-height: 1.8; color: var(--ivory-dim); margin-bottom: 18px; }
.f-ronin { font-family: 'JetBrains Mono', monospace; font-size: 0.66rem; letter-spacing: 0.08em; color: rgba(240,232,216,0.52); display: flex; align-items: center; gap: 8px; }
.f-ronin span { color: var(--crimson); font-size: 1.1rem; }
.f-col { display: flex; flex-direction: column; gap: 12px; }
.f-col-h { font-size: 0.64rem; font-weight: 600; letter-spacing: 0.16em; text-transform: uppercase; color: var(--gold); margin-bottom: 4px; }
.f-col a { font-size: 0.82rem; font-weight: 300; color: var(--ivory-dim); text-decoration: none; transition: color 0.2s, padding-left 0.2s; }
.f-col a:hover { color: var(--ivory); padding-left: 4px; }
.f-bottom { max-width: 1100px; margin: 0 auto; display: flex; justify-content: space-between; align-items: center; flex-wrap: wrap; gap: 12px; padding: 24px 0 32px; border-top: 1px solid var(--border); }
.f-copy { font-family: 'JetBrains Mono', monospace; font-size: 0.62rem; color: rgba(240,232,216,0.42); }
.f-copy a { color: rgba(240,232,216,0.45); text-decoration: none; }
.f-copy a:hover { color: var(--gold); }
.f-zone { font-family: 'JetBrains Mono', monospace; font-size: 0.62rem; color: rgba(240,232,216,0.38); }
.reveal { opacity: 0; transform: translateY(24px); transition: opacity 0.85s cubic-bezier(0.22,1,0.36,1), transform 0.85s cubic-bezier(0.22,1,0.36,1); }
.reveal.up { opacity: 1; transform: none; }
.rd1{transition-delay:.1s;} .rd2{transition-delay:.2s;} .rd3{transition-delay:.3s;}
@media(max-width:900px){.nav-links{display:none;}}
@media(max-width:900px){.nav-cta{display:none;}}
/* Hamburger */
.nav-hamburger{display:none;flex-direction:column;justify-content:center;gap:5px;background:none;border:none;cursor:pointer;padding:8px;z-index:1001;}
.nav-hamburger span{display:block;width:22px;height:2px;background:var(--ivory);border-radius:2px;transition:transform 0.3s,opacity 0.3s;}
.nav-hamburger.open span:nth-child(1){transform:translateY(7px) rotate(45deg);}
.nav-hamburger.open span:nth-child(2){opacity:0;}
.nav-hamburger.open span:nth-child(3){transform:translateY(-7px) rotate(-45deg);}
/* Mobile nav panel */
.nav-mobile{display:none;position:fixed;top:68px;left:0;right:0;bottom:0;background:rgba(12,8,8,0.98);backdrop-filter:blur(24px);flex-direction:column;align-items:center;justify-content:center;gap:36px;z-index:998;}
.nav-mobile.open{display:flex;}
.nav-mobile a{font-family:'Playfair Display',serif;font-size:1.6rem;font-weight:500;color:var(--ivory);text-decoration:none;letter-spacing:-0.01em;transition:color 0.2s;opacity:0;animation:fadeInUp 0.4s ease forwards;}
.nav-mobile a:nth-child(1){animation-delay:0.05s;}
.nav-mobile a:nth-child(2){animation-delay:0.1s;}
.nav-mobile a:nth-child(3){animation-delay:0.15s;}
.nav-mobile a:nth-child(4){animation-delay:0.2s;}
.nav-mobile a:hover{color:var(--gold);}
.nav-mobile-cta{font-family:'Raleway',sans-serif!important;font-size:0.78rem!important;font-weight:700!important;letter-spacing:0.12em!important;text-transform:uppercase;background:var(--crimson)!important;color:var(--ivory)!important;padding:14px 36px!important;border:1px solid var(--crimson);animation-delay:0.25s!important;}
@keyframes fadeInUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:none;}}
@media(max-width:900px){.nav-hamburger{display:flex;}}
@media(max-width:900px){
 nav{padding:0 20px;}
 .hero,.showcase,.services-sec,.port-sec,.brand-sec,.process-sec,.why-sec,.faq-sec,.cta-sec{padding-left:24px;padding-right:24px;}
 .showcase{flex-direction:column;padding-top:72px;padding-bottom:72px;gap:48px;}
 .alt{grid-template-columns:1fr;}
 .alt.flip{direction:ltr;}
 .alt-txt{padding:56px 28px;}
 .alt-vis{padding:48px 28px;}
 .svc-grid,.brand-grid{grid-template-columns:1fr;}
 .port-grid-new{grid-template-columns:1fr;}
 .port-card-new.featured{grid-column:span 1;grid-template-columns:1fr;display:flex;flex-direction:column;}
 .port-card-new.featured .port-preview{height:200px;}
 .port-card-new:not(.featured) .port-preview{height:180px;}
 .process-track{grid-template-columns:1fr;gap:40px;}
 .process-track::before{display:none;}
 .why-in{grid-template-columns:1fr;gap:48px;}
 footer{padding:0 24px;}
 .f-top{grid-template-columns:1fr;gap:36px;padding:48px 0 36px;}
 .f-bottom{flex-direction:column;align-items:flex-start;gap:8px;}
 .value-strip{padding:14px 0;}
 .value-strip::before,.value-strip::after{width:40px;}
 .hero-enso{width:min(560px,135vw);height:min(560px,135vw);opacity:0.85;}
 .port-filters{gap:6px;}
 .pf-tab{padding:6px 12px;font-size:0.62rem;}
 .wa-float{display:flex;}
}
@media(max-width:1200px) and (min-width:901px){.wa-float{display:flex;}}

/* ── bloque 2 ── */
.nos-sec{background:radial-gradient(ellipse 82% 56% at 50% 0%, rgba(176,48,48,0.06), transparent 58%), var(--ink-mid);padding:110px 48px;border-top:1px solid var(--border);}
.nos-inner{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1fr 1fr;gap:80px;align-items:start;}
.nos-ronin-origin{display:flex;align-items:center;gap:20px;padding:20px 24px;background:var(--ink);border:1px solid var(--border-gold);margin-bottom:8px;}
.nos-ronin-kanji{font-size:2.4rem;color:var(--crimson);line-height:1;flex-shrink:0;font-weight:300;letter-spacing:-0.02em;}
.nos-ronin-en{font-family:'Playfair Display',serif;font-size:1rem;font-style:italic;color:var(--gold);margin-bottom:4px;}
.nos-ronin-def{font-size:0.76rem;font-weight:300;color:var(--ivory-dim);line-height:1.55;}
.nos-h2{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,3.2vw,2.6rem);font-weight:500;color:var(--ivory);letter-spacing:-0.02em;line-height:1.12;margin-bottom:20px;}
.nos-h2 em{color:var(--crimson);font-style:italic;}
.nos-left>p{font-size:0.93rem;font-weight:300;line-height:1.9;color:var(--ivory-dim);margin-bottom:20px;}
.nos-member-card{display:flex;align-items:flex-start;gap:18px;padding:20px 22px;background:var(--ink);border:1px solid var(--border);}
.nos-avatar-symbol{width:56px;height:56px;display:flex;align-items:center;justify-content:center;flex-shrink:0;}
.nos-avatar-photo{width:60px;height:76px;flex-shrink:0;overflow:hidden;border-radius:6px;border:1px solid var(--border-gold);box-shadow:0 4px 16px rgba(0,0,0,0.4);position:relative;}
.nos-avatar-photo img{width:100%;height:100%;object-fit:cover;object-position:center 16%;display:block;transition:transform 0.6s cubic-bezier(0.22,1,0.36,1);}
.nos-member-card:hover .nos-avatar-photo img{transform:scale(1.06);}
.nos-avatar-photo::after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(176,48,48,0.14));pointer-events:none;}
.nos-member-name{font-size:0.86rem;font-weight:600;color:var(--ivory);margin-bottom:3px;}
.nos-member-role{font-family:'JetBrains Mono',monospace;font-size:0.62rem;color:var(--gold);letter-spacing:0.06em;margin-bottom:8px;}
.nos-member-bio{font-size:0.78rem;font-weight:300;line-height:1.65;color:var(--ivory-dim);}
.nos-stats{display:flex;gap:32px;margin-top:28px;padding-top:24px;border-top:1px solid var(--border);}
.nos-stat{display:flex;flex-direction:column;gap:4px;}
.nos-n{font-family:'Playfair Display',serif;font-size:2rem;font-weight:500;color:var(--ivory);line-height:1;}
.nos-l{font-family:'JetBrains Mono',monospace;font-size:0.62rem;color:var(--ivory-dim);margin-top:4px;}
.nos-stack{background:var(--ink);border:1px solid var(--border);padding:32px;}
.nos-stack-lbl{font-size:0.68rem;font-weight:600;letter-spacing:0.16em;text-transform:uppercase;color:var(--gold);margin-bottom:16px;}
.nos-tools{display:flex;flex-direction:column;}
.nos-tool{display:flex;align-items:center;gap:16px;padding:13px 0;border-bottom:1px solid var(--border);}
.nos-tool:last-child{border-bottom:none;}
.nt-icon{width:36px;height:36px;border-radius:8px;display:flex;align-items:center;justify-content:center;flex-shrink:0;overflow:hidden;}
.nt-name{font-size:0.86rem;font-weight:500;color:var(--ivory);margin-bottom:2px;}
.nt-desc{font-size:0.75rem;color:var(--ivory-dim);font-weight:300;line-height:1.4;}
.nos-alias{color:var(--gold);font-style:italic;font-weight:400;}
@keyframes kanjiReveal{from{opacity:0;transform:scale(0.72);text-shadow:0 0 0 rgba(176,48,48,0);}to{opacity:1;transform:scale(1);text-shadow:0 0 28px rgba(176,48,48,0.45);}}
.nos-ronin-kanji{animation:kanjiReveal 0.9s cubic-bezier(0.22,1,0.36,1) both;animation-play-state:paused;}
.nos-ronin-kanji.animated{animation-play-state:running;}
.nos-member-card{transition:border-color 0.3s,box-shadow 0.3s;}
.nos-member-card:hover{border-color:var(--border-gold);box-shadow:0 8px 40px rgba(212,168,64,0.07);}
.nos-member-card.nos-card-1{opacity:0;transform:translateY(18px);transition:opacity 0.55s ease,transform 0.55s ease,border-color 0.3s,box-shadow 0.3s;}
.nos-member-card.nos-card-2{opacity:0;transform:translateY(18px);transition:opacity 0.55s 0.15s ease,transform 0.55s 0.15s ease,border-color 0.3s,box-shadow 0.3s;}
.nos-member-card.nos-card-1.visible,.nos-member-card.nos-card-2.visible{opacity:1;transform:translateY(0);}
.nos-avatar-symbol svg{transition:transform 1.4s cubic-bezier(0.22,1,0.36,1);}
.nos-member-card:hover .nos-avatar-symbol svg{transform:rotate(180deg);}
@media(max-width:900px){.nos-inner{grid-template-columns:1fr;gap:48px;}.nos-sec{padding:80px 24px;}.nos-stats{gap:20px;}.nos-ronin-kanji{font-size:1.8rem;}}

/* ── bloque 3 ── */
.dx-sec{ background:var(--ink-mid); padding:110px 48px; border-top:1px solid var(--border-gold); position:relative; overflow:hidden; }
.dx-sec::before{ content:'診断'; position:absolute; right:5%; top:50%; transform:translateY(-50%); font-family:'Playfair Display',serif; writing-mode:vertical-rl; font-size:clamp(6rem,13vw,11rem); color:transparent; -webkit-text-stroke:1px rgba(212,168,64,0.08); pointer-events:none; user-select:none; }
.dx-inner{ max-width:720px; margin:0 auto; text-align:center; position:relative; z-index:1; }
.dx-title{ font-family:'Playfair Display',serif; font-size:clamp(2.1rem,4.4vw,3.4rem); font-weight:500; color:var(--ivory); letter-spacing:-0.02em; line-height:1.1; margin-bottom:16px; }
.dx-title em{ color:var(--crimson); font-style:italic; }
.dx-sub{ font-size:0.95rem; font-weight:300; color:var(--ivory-dim); margin-bottom:48px; }
.dx-card{ background:var(--ink); border:1px solid var(--border); padding:48px 40px; position:relative; }
.dx-progress{ display:flex; gap:8px; justify-content:center; margin-bottom:34px; }
.dx-dot{ width:34px; height:3px; background:rgba(240,232,216,0.12); transition:background 0.3s; }
.dx-dot.on{ background:var(--gold); }
.dx-q{ font-family:'Playfair Display',serif; font-size:clamp(1.25rem,2.6vw,1.7rem); font-weight:500; color:var(--ivory); line-height:1.3; margin-bottom:30px; min-height:2.6em; }
.dx-opts{ display:flex; gap:12px; justify-content:center; flex-wrap:wrap; }
.dx-opt{ background:transparent; border:1px solid rgba(240,232,216,0.35); color:var(--ivory); font-family:'Raleway',sans-serif; font-size:0.82rem; font-weight:600; letter-spacing:0.08em; text-transform:uppercase; padding:14px 34px; cursor:pointer; transition:border-color 0.2s, background 0.2s, transform 0.15s; }
.dx-opt:hover{ border-color:var(--gold); background:rgba(212,168,64,0.07); transform:translateY(-2px); }
.dx-enso-wrap{ position:relative; width:180px; margin:0 auto 26px; }
.dx-enso{ display:block; width:180px; height:180px; }
#dxEnsoArc{ transition:stroke-dashoffset 1.4s cubic-bezier(0.22,1,0.36,1), stroke 0.6s ease; }
.dx-score{ position:absolute; inset:0; display:flex; align-items:center; justify-content:center; font-family:'Playfair Display',serif; font-size:2.6rem; font-weight:700; color:var(--ivory); }
.dx-score small{ font-size:0.9rem; color:var(--ivory-dim); font-weight:400; margin-top:14px; }
.dx-verdict{ font-family:'Playfair Display',serif; font-size:1.5rem; font-weight:500; color:var(--ivory); margin-bottom:12px; }
.dx-detail{ font-size:0.9rem; font-weight:300; line-height:1.8; color:var(--ivory-dim); max-width:440px; margin:0 auto 30px; }
.dx-restart{ display:block; margin:18px auto 0; background:none; border:none; color:rgba(240,232,216,0.52); font-family:'JetBrains Mono',monospace; font-size:0.66rem; letter-spacing:0.1em; cursor:pointer; transition:color 0.2s; }
.dx-restart:hover{ color:var(--gold); }
@media(max-width:900px){ .dx-sec{ padding:80px 24px; } .dx-card{ padding:36px 22px; } .dx-sec::before{ display:none; } .dx-opt{ padding:13px 24px; } }

/* ── bloque 4 ── */
.rev-sec{background:#140d0b;padding:110px 48px;border-top:1px solid rgba(180,48,48,0.12);}
.rev-inner{max-width:1100px;margin:0 auto;}
.rev-title{font-family:'Playfair Display',serif;font-size:clamp(2rem,4vw,3rem);font-weight:500;color:var(--ivory);line-height:1.1;margin-bottom:52px;text-align:center;letter-spacing:-0.02em;}
.rev-title em{color:var(--crimson);font-style:italic;}
.rev-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:20px;margin-bottom:40px;}
.rev-card{position:relative;background:#120c0c;border:1px solid rgba(240,232,216,0.07);border-radius:4px;padding:28px;display:flex;flex-direction:column;gap:12px;overflow:hidden;transition:transform 0.3s ease,border-color 0.3s ease,box-shadow 0.3s ease;}
.rev-card:hover{transform:translateY(-4px);border-color:var(--border-gold);box-shadow:0 18px 50px rgba(0,0,0,0.4);}
.rev-quote{position:absolute;top:-18px;right:14px;font-family:'Playfair Display',serif;font-size:6rem;line-height:1;color:rgba(176,48,48,0.1);pointer-events:none;user-select:none;}
.rev-stars{color:#D4A840;font-size:1rem;letter-spacing:2px;}
.rev-text{font-size:0.9rem;color:rgba(240,232,216,0.78);line-height:1.75;flex:1;position:relative;z-index:1;}
.rev-foot{display:flex;align-items:center;gap:12px;margin-top:6px;padding-top:16px;border-top:1px solid rgba(240,232,216,0.06);}
.rev-avatar{width:40px;height:40px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-family:'Playfair Display',serif;font-size:1.15rem;font-weight:500;color:var(--ivory);flex-shrink:0;}
.rev-av-crimson{background:linear-gradient(135deg,#b03030,#8a2424);}
.rev-av-gold{background:linear-gradient(135deg,#d4a840,#a8832e);color:#120c0c;}
.rev-id{flex:1;min-width:0;}
.rev-author{font-size:0.82rem;font-weight:700;color:var(--ivory);font-family:'JetBrains Mono',monospace;line-height:1.3;}
.rev-loc{font-size:0.7rem;color:rgba(240,232,216,0.52);font-family:'JetBrains Mono',monospace;margin-top:2px;}
.rev-g{flex-shrink:0;opacity:0.85;}
.rev-cta{display:flex;align-items:center;gap:24px;justify-content:center;}
.rev-rating{font-family:'JetBrains Mono',monospace;font-size:0.72rem;color:var(--gold);letter-spacing:0.1em;}
.pkg-promo{display:flex;align-items:center;gap:16px;justify-content:center;margin-bottom:32px;flex-wrap:wrap;}
.pkg-promo-badge{background:var(--crimson);color:var(--ivory);font-size:0.62rem;font-weight:700;letter-spacing:0.2em;padding:5px 14px;border-radius:2px;font-family:'JetBrains Mono',monospace;}
.pkg-promo-fecha{font-family:'JetBrains Mono',monospace;font-size:0.65rem;color:rgba(240,232,216,0.52);letter-spacing:0.08em;}
.pkg-sec{background:radial-gradient(ellipse 92% 62% at 50% 0%, rgba(212,168,64,0.07), transparent 60%), #150f0c;padding:110px 48px;border-top:1px solid rgba(212,168,64,0.14);}
.pkg-inner{max-width:1000px;margin:0 auto;}
.pkg-title{font-family:'Playfair Display',serif;font-size:clamp(2rem,4vw,3rem);font-weight:500;color:var(--ivory);line-height:1.1;margin-bottom:16px;text-align:center;letter-spacing:-0.02em;}
.pkg-title em{color:var(--crimson);font-style:italic;}
.pkg-sub{font-size:0.95rem;color:var(--ivory-dim);line-height:1.8;max-width:580px;margin:0 auto 48px;text-align:center;}
.pkg-card{display:grid;grid-template-columns:1fr 1.4fr;gap:0;background:#120c0c;border:1px solid rgba(212,168,64,0.2);border-radius:4px;overflow:hidden;}
.pkg-left{padding:48px 36px;background:#0e0a0a;border-right:1px solid rgba(212,168,64,0.1);display:flex;flex-direction:column;align-items:flex-start;gap:12px;}
.pkg-price{font-family:'Playfair Display',serif;font-size:3.5rem;font-weight:700;color:var(--crimson);line-height:1;}
.pkg-price span{font-size:1.2rem;color:rgba(240,232,216,0.62);font-weight:300;}
.pkg-nota{font-family:'JetBrains Mono',monospace;font-size:0.65rem;color:var(--gold);letter-spacing:0.12em;}
.pkg-pago{font-size:0.8rem;color:rgba(240,232,216,0.45);font-family:'JetBrains Mono',monospace;}
.pkg-btn{margin-top:8px;display:inline-block;background:var(--crimson);color:var(--ivory);padding:14px 24px;font-size:0.78rem;font-weight:700;letter-spacing:0.08em;text-decoration:none;border-radius:2px;transition:background 0.2s;}
.pkg-btn:hover{background:#c93838;}
.pkg-tiempo{font-size:0.72rem;color:rgba(240,232,216,0.42);font-family:'JetBrains Mono',monospace;}
.pkg-right{padding:48px 36px;}
.pkg-inc-title{font-size:0.7rem;font-weight:700;color:var(--gold);letter-spacing:0.15em;text-transform:uppercase;margin-bottom:16px;font-family:'JetBrains Mono',monospace;}
.pkg-list{list-style:none;padding:0;margin:0 0 28px;display:flex;flex-direction:column;gap:10px;}
.pkg-list li{font-size:0.88rem;color:rgba(240,232,216,0.75);display:flex;align-items:flex-start;gap:10px;line-height:1.5;}
.pkg-check{color:var(--gold);font-weight:700;min-width:16px;}
.pkg-para-title{font-size:0.7rem;font-weight:700;color:rgba(240,232,216,0.52);letter-spacing:0.15em;text-transform:uppercase;margin-bottom:10px;font-family:'JetBrains Mono',monospace;}
.pkg-para-text{font-size:0.85rem;color:rgba(240,232,216,0.62);line-height:1.75;}
@media(max-width:768px){.rev-grid{grid-template-columns:1fr;}.pkg-card{grid-template-columns:1fr;}.pkg-left{border-right:none;border-bottom:1px solid rgba(212,168,64,0.1);}.rev-sec,.pkg-sec{padding:80px 24px;}.rev-cta{flex-direction:column;gap:12px;}}

/* ── bloque 5 ── */
.social-sec{background:#120b09;padding:110px 48px;border-top:1px solid rgba(212,168,64,0.1);position:relative;overflow:hidden;}
.social-sec::before{content:'';position:absolute;right:-80px;top:-80px;width:400px;height:400px;border-radius:50%;border:60px solid rgba(18,12,12,0.8);pointer-events:none;}
.social-inner{max-width:1100px;margin:0 auto;}
.social-hd{text-align:center;margin-bottom:64px;}
.social-title{font-family:'Playfair Display',serif;font-size:clamp(1.9rem,3.8vw,3rem);font-weight:500;color:var(--ivory);line-height:1.15;margin-bottom:18px;letter-spacing:-0.02em;}
.social-title em{color:var(--crimson);font-style:italic;}
.social-sub{font-size:0.95rem;color:var(--ivory-dim);line-height:1.85;max-width:600px;margin:0 auto;}
.social-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:rgba(240,232,216,0.06);}
.social-card{background:#0d0909;padding:40px 32px;display:flex;flex-direction:column;gap:16px;position:relative;}
.sc-featured{background:#110c0c;border-top:2px solid var(--crimson);}
.sc-tag{font-family:'JetBrains Mono',monospace;font-size:0.6rem;letter-spacing:0.2em;text-transform:uppercase;color:rgba(240,232,216,0.46);margin-bottom:4px;}
.sc-tag-gold{color:var(--gold);}
.sc-name{font-family:'Playfair Display',serif;font-size:1.25rem;font-weight:500;color:var(--ivory);line-height:1.2;}
.sc-desc{font-size:0.82rem;color:rgba(240,232,216,0.62);line-height:1.7;}
.sc-price{font-family:'Playfair Display',serif;font-size:2rem;font-weight:700;color:var(--crimson);line-height:1;padding:8px 0;border-top:1px solid rgba(240,232,216,0.07);border-bottom:1px solid rgba(240,232,216,0.07);}
.sc-price span{font-size:0.78rem;color:rgba(240,232,216,0.52);font-family:'JetBrains Mono',monospace;font-weight:400;}
.sc-list{list-style:none;padding:0;display:flex;flex-direction:column;gap:9px;flex:1;}
.sc-list li{font-size:0.84rem;color:rgba(240,232,216,0.72);padding-left:16px;position:relative;line-height:1.5;}
.sc-list li::before{content:'→';position:absolute;left:0;color:var(--gold);font-size:0.72rem;}
.sc-btn{display:block;padding:13px 20px;text-align:center;font-size:0.74rem;font-weight:700;letter-spacing:0.06em;text-decoration:none;border-radius:2px;transition:all 0.2s;margin-top:auto;}
.sc-btn-crimson{background:var(--crimson);color:var(--ivory);}
.sc-btn-crimson:hover{background:#c93838;}
.sc-btn-outline{background:transparent;border:1px solid rgba(240,232,216,0.15);color:rgba(240,232,216,0.6);}
.sc-btn-outline:hover{border-color:var(--gold);color:var(--ivory);}
/* Equipo / responsabilidades en los planes */
.pkg-team{max-width:1100px;margin:32px auto 0;display:flex;flex-wrap:wrap;align-items:center;justify-content:center;gap:12px 28px;padding-top:26px;border-top:1px solid var(--border);}
.pkg-team-intro{font-family:'JetBrains Mono',monospace;font-size:0.62rem;letter-spacing:0.12em;text-transform:uppercase;color:rgba(240,232,216,0.45);}
.pkg-team-role{display:flex;align-items:center;gap:9px;font-size:0.8rem;color:var(--ivory-dim);}
.pkg-team-role a{color:var(--ivory);text-decoration:none;border-bottom:1px solid var(--border-gold);}
.pkg-team-role a:hover{color:var(--gold);}
.pkg-team .dot{width:9px;height:9px;border-radius:50%;flex-shrink:0;}
.dot-crimson{background:var(--crimson);}
.dot-gold{background:var(--gold);}
.resp{display:inline-block;font-family:'JetBrains Mono',monospace;font-size:0.52rem;font-weight:500;letter-spacing:0.08em;text-transform:uppercase;padding:2px 6px;border-radius:2px;margin-left:4px;vertical-align:middle;}
.resp-nana{background:rgba(212,168,64,0.14);color:var(--gold);}
.resp-ronin{background:rgba(176,48,48,0.18);color:var(--crimson-l);}
@media(max-width:900px){.social-sec{padding:80px 24px;}.social-grid{grid-template-columns:1fr;}.pkg-team{flex-direction:column;gap:12px;}}
/* Servicios puntuales dentro de Inversión (disclosure) */
.pkg-extra{max-width:1100px;margin:44px auto 0;border-top:1px solid var(--border);}
.pkg-extra-toggle{width:100%;display:flex;align-items:center;justify-content:space-between;gap:18px;background:none;border:none;cursor:pointer;padding:24px 0 22px;text-align:left;font-family:inherit;color:var(--ivory-dim);font-size:0.9rem;font-weight:300;transition:color 0.2s;}
.pkg-extra-toggle:hover{color:var(--ivory);}
.pkg-extra-toggle:focus-visible{outline:2px solid var(--gold);outline-offset:3px;}
.pkg-extra-lbl{line-height:1.6;}
.pkg-extra-ic{font-size:1.25rem;color:var(--crimson);flex-shrink:0;transition:transform 0.25s,color 0.25s;}
.pkg-extra-toggle[aria-expanded="true"] .pkg-extra-ic{transform:rotate(45deg);color:var(--gold);}
.pkg-extra-sub{font-size:0.88rem;color:var(--ivory-dim);line-height:1.8;max-width:620px;margin:0 auto;text-align:center;}
.pkg-extra-body{padding-bottom:8px;}

/* ── bloque 6 ── */
.cta-form{ max-width:560px; margin:44px auto 0; background:var(--ink-mid); border:1px solid var(--border); padding:34px 30px; text-align:left; }
.cf-title{ font-family:'Playfair Display',serif; font-size:1.15rem; font-weight:500; color:var(--ivory); margin-bottom:20px; text-align:center; }
.cf-row{ display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.cta-form input[type=text], .cta-form input[type=tel], .cta-form input[type=email], .cta-form textarea{ width:100%; background:var(--ink); border:1px solid rgba(240,232,216,0.14); color:var(--ivory); font-family:'Raleway',sans-serif; font-size:0.88rem; font-weight:300; padding:13px 15px; outline:none; transition:border-color .2s; }
.cta-form input:focus, .cta-form textarea:focus{ border-color:var(--gold); }
.cta-form input::placeholder, .cta-form textarea::placeholder{ color:rgba(240,232,216,0.46); }
.cta-form textarea{ resize:vertical; margin-bottom:16px; }
.cf-btn{ width:100%; border:1px solid var(--crimson); cursor:pointer; font-family:'Raleway',sans-serif; }
.cf-note{ margin-top:14px; font-family:'JetBrains Mono',monospace; font-size:0.6rem; color:rgba(240,232,216,0.46); text-align:center; letter-spacing:0.04em; }
.cf-gracias{ text-align:center; }
@media(max-width:600px){ .cf-row{ grid-template-columns:1fr; } .cta-form{ padding:26px 18px; } }

/* ── bloque 7 ── */
.loc-sec{background:var(--ink-mid);padding:100px 48px;border-top:1px solid var(--border);}
.loc-inner{max-width:1100px;margin:0 auto;display:grid;grid-template-columns:1fr 1.1fr;gap:64px;align-items:center;}
.loc-h2{font-family:'Playfair Display',serif;font-size:clamp(1.8rem,3.2vw,2.6rem);font-weight:500;color:var(--ivory);letter-spacing:-0.02em;line-height:1.12;margin:14px 0 18px;}
.loc-h2 em{color:var(--crimson);font-style:italic;}
.loc-p{font-size:0.93rem;font-weight:300;line-height:1.9;color:var(--ivory-dim);margin-bottom:24px;}
.loc-p strong{color:var(--ivory);font-weight:500;}
.loc-zones{list-style:none;display:flex;flex-wrap:wrap;gap:8px;margin-bottom:30px;padding:0;}
.loc-zones li{font-family:'JetBrains Mono',monospace;font-size:0.66rem;letter-spacing:0.04em;color:var(--ivory-dim);border:1px solid var(--border-gold);padding:6px 12px;border-radius:2px;}
.loc-gbtn{display:inline-flex;align-items:center;gap:10px;font-size:0.74rem;font-weight:600;letter-spacing:0.08em;text-transform:uppercase;color:var(--ivory);text-decoration:none;border:1px solid rgba(240,232,216,0.38);padding:13px 24px;transition:border-color 0.2s,background 0.2s;}
.loc-gbtn:hover{border-color:var(--gold);background:rgba(212,168,64,0.06);}
.loc-map{position:relative;height:360px;border:1px solid var(--border-gold);border-radius:4px;overflow:hidden;box-shadow:0 30px 70px rgba(0,0,0,0.45);}
.loc-map iframe{filter:grayscale(0.3) contrast(1.05);display:block;}
@media(max-width:900px){.loc-sec{padding:72px 24px;}.loc-inner{grid-template-columns:1fr;gap:36px;}.loc-map{height:280px;}}

/* ── bloque 8 ── */
.wa-float{display:flex;position:fixed;bottom:24px;right:24px;z-index:999;background:#25D366;color:#fff;padding:12px 20px;border-radius:50px;font-size:0.82rem;font-weight:700;text-decoration:none;align-items:center;gap:8px;box-shadow:0 4px 16px rgba(37,211,102,0.35);transition:transform 0.2s,box-shadow 0.2s;}
.wa-float:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(37,211,102,0.45);}

/* ── bloque 9 ── */
/* Escala tipográfica más confiada */
.hero h1{ font-size:clamp(2.6rem,6.2vw,5.4rem); line-height:1.03; letter-spacing:-0.035em; }
.sec-h2{ font-size:clamp(2.1rem,4.4vw,3.6rem); }
.pkg-title, .rev-title, .social-title{ font-size:clamp(2.1rem,4.4vw,3.4rem); }
.alt-txt h2, .nos-h2, .loc-h2{ font-size:clamp(1.9rem,3.6vw,3rem); }
.sec-lbl, .alt-lbl{ letter-spacing:0.22em; }
.sec-hd{ margin-bottom:76px; }
/* Lede editorial en Nosotros */
.nos-left > p{ font-size:1.08rem; line-height:2; font-weight:300; }
/* Selección de texto con marca */
::selection{ background:var(--crimson); color:var(--ivory); }
/* Foco visible por teclado (FAQ y controles) */
.faq-item:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; }
/* Pull-quote editorial */
.rv-quote{ background:var(--ink); padding:130px 48px; border-top:1px solid var(--border); position:relative; overflow:hidden; }
.rv-quote-in{ max-width:900px; margin:0 auto; text-align:center; position:relative; }
.rv-quote-mark{ position:absolute; top:-70px; left:50%; transform:translateX(-50%); font-family:'Playfair Display',serif; font-size:11rem; line-height:1; color:rgba(212,168,64,0.12); pointer-events:none; user-select:none; }
.rv-quote blockquote{ font-family:'Playfair Display',serif; font-size:clamp(2rem,5vw,3.9rem); font-weight:500; color:var(--ivory); line-height:1.18; letter-spacing:-0.02em; border:none; margin:0; position:relative; z-index:1; }
.rv-quote blockquote em{ color:var(--crimson); font-style:italic; }
.rv-quote-attr{ margin-top:30px; font-family:'JetBrains Mono',monospace; font-size:0.66rem; letter-spacing:0.18em; text-transform:uppercase; color:var(--ivory-dim); }
.rv-quote-attr span{ color:var(--gold); letter-spacing:0.04em; }
@media(max-width:900px){ .rv-quote{ padding:88px 24px; } .rv-quote-mark{ font-size:7rem; top:-46px; } }
/* Prueba social en hero */
.hero-proof{ display:inline-flex; align-items:center; gap:10px; margin-top:34px; font-family:'JetBrains Mono',monospace; font-size:0.64rem; letter-spacing:0.08em; color:var(--ivory-dim); text-decoration:none; border:1px solid var(--border-gold); padding:9px 18px; border-radius:30px; transition:border-color .2s, color .2s; opacity:0; animation:fadelogo 1s ease 1.6s forwards; }
.hero-proof:hover{ border-color:var(--gold); color:var(--ivory); }
.hp-stars{ color:var(--gold); letter-spacing:2px; font-size:0.7rem; }
/* Hero compacto en pantallas chicas — CTA sobre el fold */
@media(max-width:480px){
  .hero{ min-height:auto; padding:96px 20px 64px; }
  .hero-logo-wrap{ margin-bottom:26px; }
  .hero-logo-wrap svg{ width:min(290px,82vw); }
  .hero-tagline{ margin-bottom:20px; }
  .hero h1{ font-size:2.05rem; margin-bottom:16px; }
  .hero-sub{ margin-bottom:28px; font-size:0.9rem; }
  .hero-proof{ margin-top:24px; font-size:0.56rem; padding:8px 14px; }
  .hero-scroll{ display:none; }
}

/* ── bloque 10 ── */
/* Grano de película sutil sobre todo el sitio */
.rv-grain{ position:fixed; inset:-100px; z-index:9998; pointer-events:none; opacity:0.05; background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='240' height='240'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E"); background-size:240px 240px; animation:rvGrain 0.9s steps(3) infinite; }
@keyframes rvGrain{ 0%{transform:translate(0,0);} 33%{transform:translate(-30px,18px);} 66%{transform:translate(22px,-26px);} 100%{transform:translate(0,0);} }
/* Profundidad: viñeta en hero y CTA */
.hero::after, .cta-sec::after{ content:''; position:absolute; inset:0; pointer-events:none; z-index:0; background:radial-gradient(ellipse 120% 90% at 50% 40%, transparent 55%, rgba(0,0,0,0.42) 100%); }
.hero > *:not(.hero-enso), .cta-sec > *{ position:relative; z-index:1; }
.cta-sec{ position:relative; overflow:hidden; }
/* Kanji compositivo — marca de agua vertical */
.process-sec, .rev-sec{ position:relative; overflow:hidden; }
.rv-kanji{ position:absolute; top:50%; transform:translateY(-50%); font-family:'Playfair Display',serif; writing-mode:vertical-rl; font-size:clamp(7rem,16vw,13rem); line-height:1; color:transparent; -webkit-text-stroke:1px rgba(212,168,64,0.09); pointer-events:none; user-select:none; z-index:0; }
.process-sec .rv-kanji{ right:4%; }
.rev-sec .rv-kanji{ left:4%; -webkit-text-stroke-color:rgba(176,48,48,0.10); }
.process-sec > *:not(.rv-kanji), .rev-sec > *:not(.rv-kanji){ position:relative; z-index:1; }
/* Trazo de tinta bajo los títulos de sección */
.sec-h2{ position:relative; display:inline-block; }
.sec-h2::after{ content:''; position:absolute; left:50%; transform:translateX(-50%); bottom:-14px; width:120px; height:10px; background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 120 10'%3E%3Cpath d='M2 6 C 20 2, 45 9, 62 5 S 100 3, 118 6' fill='none' stroke='%23B03030' stroke-width='2.4' stroke-linecap='round' opacity='0.55'/%3E%3C/svg%3E") no-repeat center/contain; }
/* Sello hanko en el footer */
.f-ronin span{ display:inline-flex; align-items:center; justify-content:center; width:34px; height:34px; background:var(--crimson); color:var(--ivory)!important; font-size:0.72rem!important; line-height:1.1; text-align:center; border-radius:3px; box-shadow:0 2px 10px rgba(176,48,48,0.35); letter-spacing:0; padding:2px; }
@media(max-width:900px){ .rv-kanji{ display:none; } }
@media (prefers-reduced-motion: reduce){ .rv-grain{ animation:none; } }

/* ── bloque 11 ── */
/* Enso que se dibuja al cargar */
.hero-logo-wrap svg circle:nth-of-type(2){ stroke-dashoffset:235; animation:ensoDraw 1.8s cubic-bezier(0.65,0,0.25,1) 0.5s forwards; }
@keyframes ensoDraw{ to{ stroke-dashoffset:0; } }
/* Cursor personalizado (solo puntero fino) */
.rv-cursor{ display:none; }
@media (hover:hover) and (pointer:fine){
  .rv-cursor{ display:block; position:fixed; top:0; left:0; width:32px; height:32px; border:1px solid rgba(212,168,64,0.55); border-radius:50%; pointer-events:none; z-index:10000; will-change:transform; transition:width .28s ease, height .28s ease, border-color .28s ease, background-color .28s ease, opacity .28s ease; }
  .rv-cursor.hovering{ width:56px; height:56px; border-color:rgba(176,48,48,0.85); background-color:rgba(176,48,48,0.06); }
}
@media (prefers-reduced-motion: reduce){
  .hero-logo-wrap svg circle:nth-of-type(2){ animation:none; stroke-dashoffset:0; }
  .reveal{ transition:opacity .3s ease; transform:none; filter:none; }
}