/* Barra anclada, burbuja de página activa y transiciones entre páginas (compartido por todas las páginas) */
:root{--navh:64px}
/* Fondo y barras de scroll oscuros: evita la franja blanca entre páginas */
html{background:#080808;color-scheme:dark;scrollbar-gutter:stable}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
/* Enlace «Saltar al contenido»: oculto en todas las páginas (antes solo lo escondía styles.css y se veía en el catálogo) */
.skip{position:fixed;left:12px;top:-60px;background:#f4f4f1;color:#080808;padding:10px 16px;border-radius:8px;z-index:120;transition:top .2s;font-weight:600;text-decoration:none}
.skip:focus{top:12px}

/* Color de cada página (lo usan la burbuja, la línea bajo la barra y la barra de progreso) */
body{--bc:#f4f4f1}
body[data-page="servicios"]{--bc:#4ad7f2}
body[data-page="trabajo"]{--bc:#ff6f9a}
body[data-page="estilos"]{--bc:#a58bff}
body[data-page="proceso"]{--bc:#c6f24a}

.progress{position:fixed;inset:0 0 auto 0;height:2px;z-index:110;pointer-events:none}
.progress span{display:block;height:100%;width:100%;background:var(--bc);transform-origin:left;transform:scaleX(0)}

.nav{position:fixed;inset:0 0 auto 0;z-index:100;height:var(--navh);display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 clamp(14px,3vw,40px);background:rgba(8,8,8,.88);backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px);border-bottom:1px solid rgba(244,244,241,.1);color:#f4f4f1}
.nav::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;background:linear-gradient(90deg,transparent,var(--bc),transparent);opacity:.8}
.brand{display:inline-flex;align-items:center;gap:10px;font-weight:700;font-size:1.25rem;letter-spacing:-.04em;color:inherit;text-decoration:none}
.brand svg{width:30px;height:32px}
.brand.small{font-size:1.05rem}.brand.small svg{width:24px;height:26px}

.links{position:relative;display:flex;gap:2px;padding:4px;border-radius:99px;background:rgba(255,255,255,.06);border:1px solid rgba(255,255,255,.1)}
.nlink{position:relative;z-index:1;isolation:isolate;display:inline-flex;align-items:center;gap:8px;padding:9px 16px;border-radius:99px;color:#a9a9a4;font-size:.92rem;font-weight:500;white-space:nowrap;text-decoration:none;transition:color .3s}
.nlink svg{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;flex:none}
.nlink:hover{color:#fff}
.nlink[aria-current="page"],.nlink.on{color:#080808}
/* La burbuja vive dentro del enlace de la página actual: así está en su lugar desde el primer cuadro */
.nbubble{position:absolute;inset:0;z-index:-1;border-radius:99px;background:var(--bc);box-shadow:0 0 24px var(--bc)}
.nbubble.ring::after{content:"";position:absolute;inset:0;border-radius:inherit;animation:ring 1s ease-out}
@keyframes ring{from{box-shadow:0 0 0 0 var(--bc);opacity:.9}to{box-shadow:0 0 0 16px var(--bc);opacity:0}}
.pill{display:inline-block;padding:9px 18px;border-radius:99px;background:#f4f4f1;color:#080808;font-weight:600;font-size:.92rem;text-decoration:none;transition:opacity .2s}
.pill:hover{opacity:.85}

/* Animación de llegada: cada página tiene la suya */
.nlink.arrive[data-p="inicio"] svg{animation:aPulse .9s ease-out}
.nlink.arrive[data-p="servicios"] svg{animation:aSpin .9s cubic-bezier(.3,1.3,.5,1)}
.nlink.arrive[data-p="trabajo"] svg{animation:aBounce .9s ease-out}
.nlink.arrive[data-p="estilos"] svg{animation:aWiggle .9s ease-in-out}
.nlink.arrive[data-p="proceso"] svg path{stroke-dasharray:1;animation:aDraw .9s ease-out}
@keyframes aPulse{0%{transform:scale(.5)}55%{transform:scale(1.5)}100%{transform:scale(1)}}
@keyframes aSpin{0%{transform:rotate(-200deg) scale(.5)}100%{transform:none}}
@keyframes aBounce{0%,100%{transform:none}25%{transform:translateY(-9px)}50%{transform:translateY(0)}70%{transform:translateY(-4px)}}
@keyframes aWiggle{0%{transform:rotate(0)}20%{transform:rotate(-22deg)}45%{transform:rotate(18deg)}70%{transform:rotate(-10deg)}100%{transform:rotate(0)}}
@keyframes aDraw{from{stroke-dashoffset:1}to{stroke-dashoffset:0}}

/* ---------- Transición nativa entre páginas (Chrome, Edge, Safari): sin cortes ni parpadeos ---------- */
@view-transition{navigation:auto}
.nav{view-transition-name:nav}
.links{view-transition-name:nlinks}
.nbubble{view-transition-name:nbubble}
/* La barra no se mueve; solo la burbuja viaja de un enlace al otro y las etiquetas cambian de color */
::view-transition-group(nav){animation:none}
::view-transition-old(nav){display:none}
::view-transition-new(nav){animation:none}
::view-transition-group(nbubble){z-index:1;animation-duration:.6s;animation-timing-function:cubic-bezier(.6,0,.2,1)}
::view-transition-group(nlinks){z-index:2}
::view-transition-old(nbubble),::view-transition-new(nbubble){animation-duration:.6s}
/* El contenido sale con un leve desenfoque y el nuevo entra desde abajo */
::view-transition-old(root){animation:vtOut .3s cubic-bezier(.4,0,1,1) both}
::view-transition-new(root){animation:vtIn .6s .06s cubic-bezier(.16,.84,.3,1) both}
@keyframes vtOut{to{opacity:0;filter:blur(6px);transform:translateY(-14px) scale(.992)}}
@keyframes vtIn{from{opacity:0;filter:blur(10px);transform:translateY(22px)}}


@media(max-width:760px){
  .nlink span{display:none}
  .nlink{padding:10px 14px}
  .pill{display:none}
  .brand span{display:none}
}
@media(max-width:380px){.nlink{padding:10px 11px}}
@media(prefers-reduced-motion:reduce){
  @view-transition{navigation:none}
  .nlink,.nlink svg{transition:none!important;animation:none!important}
  .nbubble.ring::after{display:none}
}

/* ---------- Cambio de página sin recargar ---------- */
/* La burbuja se vuelve libre: se desliza y se estira entre enlaces */
.nbubble.free{position:absolute;inset:auto;top:4px;bottom:4px;left:0;width:0;z-index:0;transition:left .32s cubic-bezier(.5,0,.2,1),width .32s cubic-bezier(.5,0,.2,1),background .5s,box-shadow .5s}
/* Portal: disco oscuro con borde de color que cubre la página y luego se abre sobre la nueva */
@property --r{syntax:"<length>";inherits:false;initial-value:0px}
.wave{position:fixed;inset:0;z-index:90;pointer-events:none;display:none}
.wave.on{display:block;pointer-events:all}
.wave i{position:absolute;inset:0;display:none;--r:0px}
.w-in{background:radial-gradient(circle at var(--x,50%) var(--y,0),#080808 0,#080808 var(--r),var(--wc,#fff) var(--r),var(--wc,#fff) calc(var(--r) + 14px),transparent calc(var(--r) + 14px))}
.w-out{background:radial-gradient(circle at var(--x,50%) var(--y,0),transparent 0,transparent var(--r),var(--wc,#fff) var(--r),var(--wc,#fff) calc(var(--r) + 14px),#080808 calc(var(--r) + 14px))}
#page.enter{animation:pageRise .85s cubic-bezier(.16,.84,.3,1) both}
@keyframes pageRise{from{opacity:0;transform:translateY(28px) scale(.995);filter:blur(7px)}to{opacity:1;transform:none;filter:none}}
@media(prefers-reduced-motion:reduce){#page.enter{animation:none}}
