/* Kiuonet — hoja de estilos del mu-plugin (paquete Kiuonet).
 * Comportamiento visual del sitio de la agencia: entradas, slider,
 * marquee, cursor magnético, keyboard hints. El estilo de COMPONENTES
 * vive en los bloques GB; aquí solo lo que el Customizer no puede
 * expresar (keyframes, ::before de reveals, etc.). Documentado en
 * blueprints/Kiuonet/blueprint.md.
 */

/* ---------------- Preloader markup (barra la anima JS) -------------- */
.kio-loader{position:fixed;inset:0;z-index:9999;background:#0b0f14;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:18px;transition:opacity .5s ease,visibility .5s ease}
.kio-loader.is-done{opacity:0;visibility:hidden;pointer-events:none}
.kio-loader-mark{font-family:"Archivo",system-ui,sans-serif;font-weight:800;font-size:clamp(28px,5vw,44px);letter-spacing:-.02em;color:#fff}
.kio-loader-bar{width:120px;height:2px;background:rgba(255,255,255,.15);overflow:hidden;border-radius:2px}
.kio-loader-bar i{display:block;height:100%;width:0%;background:#fff}

/* ---------------- Reveal genérico (SplitText + GSAP) ---------------
 * Estado oculto SOLO cuando GSAP está vivo: el JS añade kio-anim al
 * <html> justo antes de registrar las animaciones (progresivo, sin
 * FOUC ni contenido escondido si el JS falla o reduced-motion). */
.kio-reveal{opacity:0}
.kio-reveal .kio-line{display:block;overflow:hidden}
.kio-reveal .kio-line > span{display:inline-block}
html.kio-no-js .kio-reveal,
html:not(.kio-anim) .kio-reveal{opacity:1}
html.kio-anim .kio-hero .kio-reveal-fade{opacity:0;transform:translateY(18px)}

/* ---------------- Hero claims rotativos ------------------------------
 * Estado oculto solo bajo el contrato kio-anim (GSAP vivo). */
.kio-claim{position:absolute;inset:0;display:flex;flex-direction:column;align-items:flex-start;justify-content:center;padding:0 24px}
.kio-claim[aria-hidden="true"]{visibility:hidden}
html:not(.kio-anim) .kio-claim{position:relative;visibility:visible}
html:not(.kio-anim) .kio-claim[aria-hidden="true"]{display:none}
.kio-claim .kio-line{display:block;overflow:hidden}
.kio-claim .kio-line > span{display:inline-block}
.kio-slide{transition:none}

/* Contador de slide estilo editorial */
.kio-claim-count{position:absolute;right:40px;bottom:32px;font-family:"Archivo",system-ui,sans-serif;font-weight:700;font-size:14px;letter-spacing:.14em;color:rgba(255,255,255,.65)}
.kio-claim-count b{color:#fff;font-weight:700}

/* Indicador de scroll */
.kio-scroll-cue{position:absolute;left:50%;bottom:32px;transform:translateX(-50%);display:flex;align-items:center;gap:10px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:rgba(255,255,255,.6)}
.kio-scroll-cue i{display:block;width:1px;height:42px;background:linear-gradient(180deg,rgba(255,255,255,.9),rgba(255,255,255,0))}
.kio-scroll-cue i::after{content:"";display:block;width:5px;height:5px;border-radius:50%;background:#fff;margin-top:-6px;margin-left:-2px;animation:kio-cue 1.8s ease-in-out infinite}
@keyframes kio-cue{0%{transform:translateY(0);opacity:.9}70%{transform:translateY(34px);opacity:0}100%{transform:translateY(0);opacity:0}}

/* ---------------- Marquee verticales --------------------------------- */
.kio-marquee{overflow:hidden;white-space:nowrap;position:relative}
.kio-marquee-track{display:inline-flex;gap:0;will-change:transform}
.kio-marquee-item{display:inline-flex;align-items:center;gap:24px;padding-right:56px;font-family:"Archivo",system-ui,sans-serif;font-weight:800;font-size:clamp(32px,6vw,72px);line-height:1;letter-spacing:-.02em}
.kio-marquee-item em{font-style:normal;-webkit-text-stroke:1.5px currentColor;-webkit-text-fill-color:transparent;color:currentColor}

/* ---------------- Rows con preview (servicios) ----------------------- */
.kio-preview{position:fixed;top:0;left:0;width:280px;height:180px;border-radius:10px;background-size:cover;background-position:center;pointer-events:none;z-index:50;opacity:0;transform:translate(-50%,-50%) scale(.85);transition:opacity .25s ease,transform .25s ease;box-shadow:0 24px 60px rgba(0,0,0,.35)}
.kio-preview.is-on{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* ---------------- Row expandible (02 en producción) -------------------
 * Cada .kio-rowx envuelve row + panel; el panel se despliega al
 * hover (:hover) y con teclado (:focus-within). CSS puro: grid 0fr->1fr. */
.kio-rowx{display:grid;grid-template-rows:1fr 0fr}
.kio-rowx > *{min-height:0}
.kio-rowx-panel{display:grid;grid-template-rows:0fr;transition:grid-template-rows .45s cubic-bezier(.22,.61,.36,1)}
.kio-rowx-panel > *{overflow:hidden}
.kio-rowx-panel .kio-rowx-inner,.kio-rowx-panel > div{opacity:0;transform:translateY(8px);transition:opacity .35s ease .12s,transform .35s ease .12s}
.kio-rowx:hover .kio-rowx-panel,.kio-rowx:focus-within .kio-rowx-panel{grid-template-rows:1fr}
.kio-rowx:hover .kio-rowx-panel > div,.kio-rowx:focus-within .kio-rowx-panel > div{opacity:1;transform:translateY(0)}
@media (prefers-reduced-motion: reduce){.kio-rowx-panel{transition:none}.kio-rowx-panel > div{transition:none}}
/* táctil: sin hover — el panel queda visible estático */
@media (hover: none){.kio-rowx-panel{grid-template-rows:1fr !important}.kio-rowx-panel > div{opacity:1 !important;transform:none !important}}

/* ---------------- Cursor magnético (botones) ------------------------- */
.kio-magnetic{position:relative}
.kio-magnetic > *{will-change:transform}

/* ---------------- Cursor dot ------------------------------------------ */
.kio-cursor{position:fixed;top:0;left:0;width:8px;height:8px;border-radius:50%;
  background:#fff;pointer-events:none;z-index:100;mix-blend-mode:difference;
  transform:translate(-50%,-50%);transition:width .25s ease,height .25s ease}
.kio-cursor.is-hot{width:44px;height:44px;background:#fff}
@media (pointer: coarse){.kio-cursor{display:none}}

/* ---------------- Swap-text (links grandes) ---------------------------- */
.kio-swap{overflow:hidden}
.kio-swap .kio-swap-label{display:inline-block;will-change:transform}

/* ---------------- Craft global ----------------------------------------- */
::selection{background:#4F7CFF;color:#fff}
html{scrollbar-width:thin;scrollbar-color:#2a3442 #0B0F14}
::-webkit-scrollbar{width:10px}
::-webkit-scrollbar-track{background:#0B0F14}
::-webkit-scrollbar-thumb{background:#2a3442;border-radius:5px}
::-webkit-scrollbar-thumb:hover{background:#3a4657}

/* ---------------- Keyboard hints -------------------------------------- */
.kio-keys{position:fixed;right:20px;bottom:20px;z-index:60;display:flex;gap:6px;opacity:0;transform:translateY(6px);transition:opacity .4s ease,transform .4s ease;pointer-events:none}
.kio-keys.is-on{opacity:1;transform:translateY(0)}
.kio-keys kbd{font-family:"Archivo",system-ui,sans-serif;font-size:11px;font-weight:700;letter-spacing:.06em;color:#fff;background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.22);border-radius:6px;padding:5px 9px;backdrop-filter:blur(8px)}

/* ---------------- Grain sutil (textura de fondo dark) ---------------- */
.kio-grain::before{content:"";position:fixed;inset:-100%;z-index:1;pointer-events:none;opacity:.05;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");animation:kio-grain 8s steps(10) infinite}
@keyframes kio-grain{0%,100%{transform:translate(0,0)}10%{transform:translate(-5%,-5%)}20%{transform:translate(-10%,5%)}30%{transform:translate(5%,-10%)}40%{transform:translate(-5%,15%)}50%{transform:translate(-10%,5%)}60%{transform:translate(15%,0)}70%{transform:translate(0,10%)}80%{transform:translate(-15%,0)}90%{transform:translate(10%,5%)}}

/* ---------------- Reduced motion: todo visible, sin JS-dependencias -- */
@media (prefers-reduced-motion: reduce){
  html{--kio-anim-off:1}
  .kio-reveal,.kio-reveal-fade,.kio-claim .kio-line > span{opacity:1 !important;transform:none !important}
  .kio-claim[aria-hidden="true"]{visibility:hidden !important}
  .kio-grain::before,.kio-scroll-cue i::after{animation:none}
  .kio-marquee-track{transform:none !important}
  .kio-rowx-panel{grid-template-rows:1fr !important}
  .kio-rowx-panel > div{opacity:1 !important;transform:none !important;transition:none}
}
html.kio-no-js .kio-claim[aria-hidden="true"]{display:none}