/* Deitres — portada: carga, recorrido 3D y secciones propias. La base común está en site.css. */
html{scroll-snap-type:y proximity}
body.is-loading{overflow:hidden}

/* ---------- Carga: se dibuja la D de Deitres (tres franjas) ---------- */
.loader{position:fixed;inset:0;z-index:150;background:var(--deep);display:grid;place-items:center;transition:opacity 1s var(--ease),visibility 1s}
.loader.is-done{opacity:0;visibility:hidden}
.loader-mark{display:flex;flex-direction:column;align-items:center;gap:26px}
.loader-num{font-size:11px;font-weight:700;letter-spacing:.12em;color:var(--muted);font-variant-numeric:tabular-nums}
.loader-svg{width:92px;height:auto;overflow:visible}
.loader-svg path{fill:var(--celeste);fill-opacity:calc(var(--p,0) * var(--p,0));stroke:var(--celeste);stroke-width:5;stroke-linejoin:round;stroke-dasharray:var(--len,900);stroke-dashoffset:calc(var(--len,900) * (1 - var(--p,0)))}

/* Logo de cabecera oculto mientras se ve el logo grande de la portada */
body.is-hero .brand{opacity:0;pointer-events:none}
body.is-loading .header,body.is-loading .bar,body.is-loading .dots{opacity:0}
.header,.bar,.dots{transition:opacity 1.2s var(--ease) .6s,background .5s,height .5s var(--ease),border-color .5s}

/* ---------- Journey ---------- */
.journey{position:relative;height:300vh}
.snaps{position:absolute;inset:0;pointer-events:none}
.snaps i{display:block;height:100vh;scroll-snap-align:start}
.stage{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;background:var(--deep)}
#scene{position:absolute;inset:0;width:100%;height:100%;display:block}
.shade{position:absolute;inset:0;pointer-events:none;background:
  linear-gradient(90deg,rgba(10,14,19,.72) 0%,rgba(10,14,19,.25) 42%,transparent 62%),
  linear-gradient(0deg,rgba(10,14,19,.75) 0%,transparent 26%),
  linear-gradient(180deg,rgba(10,14,19,.55) 0%,transparent 18%)}

/* Indicador de fase (vertical, a la derecha) */
.dots{position:absolute;right:calc(var(--m) - 4px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:6px;z-index:3}
.dots button{width:22px;height:22px;display:grid;place-items:center}
.dots button:before{content:'';width:4px;height:4px;border-radius:50%;background:#fff;opacity:.45;transition:all .5s var(--ease)}
.dots button:hover:before{opacity:1}
.dots button.on:before{width:8px;height:8px;background:var(--accent);opacity:1;box-shadow:0 0 12px var(--accent)}

/* Panels */
.panels{position:absolute;inset:0;pointer-events:none}
.panel{position:absolute;left:var(--m);top:50%;width:min(620px,52vw);transform:translateY(-44%);opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}
.panel.on{opacity:1;visibility:visible;pointer-events:auto;transition:opacity .9s var(--ease),visibility 0s}
.panel>*{opacity:0;transition:opacity .3s}
.panel.on>*{opacity:1;transition:opacity .9s var(--ease);animation:rise 1.2s var(--ease) both}
@keyframes rise{from{transform:translateY(28px)}to{transform:none}}
.panel.on>*:nth-child(2){transition-delay:.08s;animation-delay:.08s}
.panel.on>*:nth-child(3){transition-delay:.16s;animation-delay:.16s}
.panel.on>*:nth-child(4){transition-delay:.24s;animation-delay:.24s}
.chip{display:inline-block;font-size:10px;font-weight:700;letter-spacing:.16em;text-transform:uppercase;padding:6px 9px 5px;border-radius:3px;background:var(--accent);color:var(--on-accent);margin-bottom:26px}
.panel .logo{display:block;height:auto;margin-bottom:30px}
.panel-city .logo{width:200px}
.panel-amiar .logo{width:160px}
.case-title{font-weight:700;font-size:clamp(28px,3vw,46px);line-height:1.1;letter-spacing:-.022em;text-wrap:balance}
.cta{display:inline-flex;align-items:center;gap:16px;margin-top:34px;font-size:13px;font-weight:700;letter-spacing:.02em}
.cta-ring{width:52px;height:52px;border-radius:50%;border:1px solid rgba(255,255,255,.32);display:grid;place-items:center;font-size:18px;transition:background .35s,color .35s,border-color .35s,transform .6s var(--ease)}
.cta:hover .cta-ring{background:var(--accent);border-color:var(--accent);color:var(--on-accent);transform:rotate(45deg)}
.cta[data-go]:hover .cta-ring{transform:translateY(3px)}
.panel-hero{width:min(640px,56vw)}
.hero-logo{margin:0 0 46px;font-size:0}
.hero-logo img{width:clamp(240px,29vw,420px);height:auto}
.panel .kicker{margin:0 0 16px;line-height:1.4;font-size:11px;font-weight:700;letter-spacing:.22em;text-transform:uppercase;color:var(--accent)}
.panel .purpose{font-weight:700;font-size:clamp(24px,2.35vw,38px);line-height:1.22;letter-spacing:-.01em;color:var(--text);max-width:600px}
.purpose em{font-style:normal;color:var(--accent)}

/* Products */
.product{position:absolute;margin:0;right:calc(var(--m) + 6vw);top:50%;height:min(58vh,560px);aspect-ratio:.62;transform:translateY(-44%) scale(.96);opacity:0;transition:opacity 1s var(--ease),transform 1.4s var(--ease);pointer-events:none;display:grid;place-items:center}
.product:before{content:'';position:absolute;inset:8% -10%;border-radius:50%;background:radial-gradient(closest-side,var(--glow),transparent);opacity:.32;filter:blur(30px)}
.product img{position:relative;max-height:100%;width:auto;filter:drop-shadow(0 40px 50px rgba(0,0,0,.55));animation:float 7s ease-in-out infinite}
.product-city{--glow:var(--citymesh)}
.product-amiar{--glow:var(--amiar);aspect-ratio:1.17;height:min(46vh,430px)}
.product.on{opacity:1;transform:translateY(-50%) scale(1)}
@keyframes float{50%{transform:translateY(-12px)}}

/* Barra inferior del recorrido */
.bar{position:absolute;left:var(--m);right:var(--m);bottom:0;height:78px;display:flex;align-items:center;justify-content:space-between;gap:24px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.bar-text{font-weight:700;letter-spacing:.02em}
.bar-right{display:flex;align-items:center;gap:22px}
.scroll-hint i{display:block;width:1px;height:26px;background:var(--line);position:relative;overflow:hidden}
.scroll-hint i:after{content:'';position:absolute;inset:0;background:var(--accent);transform:translateY(-100%);animation:drip 2.4s var(--ease) infinite}
@keyframes drip{60%,100%{transform:translateY(100%)}}
.pause{width:34px;height:34px;border-radius:50%;border:1px solid var(--line);display:flex;align-items:center;justify-content:center;gap:3px}
.pause span{width:2px;height:10px;background:#fff;transition:all .3s}
.pause[aria-pressed=true] span:first-child{width:0;height:0;background:none;border-left:8px solid #fff;border-top:5px solid transparent;border-bottom:5px solid transparent}
.pause[aria-pressed=true] span:last-child{display:none}

/* Acento por producto */
body[data-accent=citymesh]{--accent:var(--citymesh);--on-accent:var(--ink)}
body[data-accent=amiar]{--accent:var(--amiar);--on-accent:#fff}

/* Secciones de la portada */
.apps-section,.cta-band{overflow:hidden}
.apps-section canvas.mesh,.cta-band canvas.mesh{position:absolute;inset:0;width:100%;height:100%;opacity:.75}

@media (max-width:820px){
  .dots{display:none}
  .shade{background:linear-gradient(0deg,rgba(10,14,19,.92) 0%,rgba(10,14,19,.55) 42%,transparent 66%),linear-gradient(180deg,rgba(10,14,19,.6) 0%,transparent 18%)}
  .panel{top:auto;bottom:86px;width:auto;right:var(--m);transform:none}
  .case-title{font-size:clamp(24px,7vw,36px)}
  .cta{margin-top:24px}
  .product{right:50%;top:30%;height:34vh;transform:translate(50%,-50%) scale(.96)}
  .product.on{transform:translate(50%,-50%) scale(1)}
  .product-amiar{height:28vh}
  .bar{height:62px}
  .bar-text{font-size:12px}
  .scroll-hint{display:none}
  .hero-logo{margin-bottom:30px}
  .hero-logo img{width:230px}
  .panel-hero{width:auto}
}
@media (prefers-reduced-motion:reduce){
  .product img,.scroll-hint i:after{animation:none}
  .panel,.panel>*{transition-duration:.01s;animation:none!important}
}
