/*
Theme Name: Vecina Beauty — Coming Soon
Theme URI: https://vecinabeauty.com
Author: Vecina Beauty
Description: Single-page pre-launch "coming soon" teaser for Vecina Beauty, with animated logo reveal, ambient motion, and an email capture list stored in WordPress.
Version: 1.0.0
Requires at least: 6.0
Requires PHP: 7.4
License: GPL-2.0-or-later
Text Domain: vecina-coming-soon
*/

:root{
  --bg:#0E0C0D;
  --bg-2:#161113;
  --orange:#EE7B3C;
  --orange-deep:#E2683A;
  --orange-light:#F7A06A;
  --cream:#F4EFEA;
  --muted:rgba(244,239,234,.62);
  --line:rgba(244,239,234,.16);
}

*{box-sizing:border-box;margin:0;padding:0;}

html,body{height:100%;}

body{
  background:var(--bg);
  color:var(--cream);
  font-family:'Jost',sans-serif;
  min-height:100svh;
  overflow:hidden;
  position:relative;
  display:flex;
  align-items:center;
  justify-content:center;
}

/* ---------- ambient background ---------- */
.ambient{
  position:fixed;
  inset:0;
  z-index:0;
  pointer-events:none;
  overflow:hidden;
}
.glow{
  position:absolute;
  left:50%;
  top:44%;
  width:min(1100px,150vw);
  aspect-ratio:1;
  transform:translate(-50%,-50%);
  background:
    radial-gradient(circle at center,
      rgba(238,123,60,.30) 0%,
      rgba(238,123,60,.13) 26%,
      rgba(226,104,58,.05) 45%,
      transparent 62%);
  filter:blur(14px);
  animation:breathe 7.5s ease-in-out infinite;
}
.glow.secondary{
  top:60%;
  width:min(760px,110vw);
  background:radial-gradient(circle at center,rgba(247,160,106,.16) 0%,transparent 60%);
  animation-duration:9s;
  animation-delay:-3s;
}
@keyframes breathe{
  0%,100%{opacity:.7;transform:translate(-50%,-50%) scale(1);}
  50%{opacity:1;transform:translate(-50%,-50%) scale(1.08);}
}
/* vignette */
.ambient::after{
  content:"";
  position:absolute;
  inset:0;
  background:radial-gradient(ellipse at center,transparent 38%,rgba(8,7,7,.55) 86%,rgba(6,5,5,.9) 100%);
}
/* faint grain for richness */
.grain{
  position:fixed;inset:-50%;z-index:1;pointer-events:none;opacity:.045;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='2'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");
  animation:grain 6s steps(6) infinite;
}
@keyframes grain{
  0%{transform:translate(0,0);}10%{transform:translate(-4%,-3%);}
  30%{transform:translate(3%,-5%);}50%{transform:translate(-3%,4%);}
  70%{transform:translate(4%,3%);}90%{transform:translate(-2%,-4%);}
  100%{transform:translate(0,0);}
}

/* sparkles */
.spark{
  position:absolute;
  border-radius:50%;
  background:var(--orange-light);
  box-shadow:0 0 8px 1px rgba(247,160,106,.7);
  opacity:0;
  animation:drift linear infinite;
}
@keyframes drift{
  0%{opacity:0;transform:translateY(20px) scale(.6);}
  10%{opacity:.9;}
  85%{opacity:.55;}
  100%{opacity:0;transform:translateY(-110px) scale(1);}
}

/* ---------- content ---------- */
.stage{
  position:relative;
  z-index:2;
  width:100%;
  max-width:760px;
  padding:6vh 28px;
  text-align:center;
  display:flex;
  flex-direction:column;
  align-items:center;
}

.logo-wrap{
  position:relative;
  width:min(440px,78vw);
  aspect-ratio:824/432;
  opacity:0;
  filter:blur(12px);
  transform:scale(.9);
  animation:logoReveal 1.9s cubic-bezier(.2,.7,.2,1) .25s forwards;
}
.logo-wrap img{
  width:100%;
  height:100%;
  object-fit:contain;
  display:block;
  filter:drop-shadow(0 10px 40px rgba(238,123,60,.18));
}
@keyframes logoReveal{
  0%{opacity:0;filter:blur(12px);transform:scale(.9);}
  60%{opacity:1;}
  100%{opacity:1;filter:blur(0);transform:scale(1);}
}

/* shimmer that rides ONLY the logo shape via mask.
   --logo-url is set inline in the template via wp's asset URL. */
.shimmer{
  position:absolute;
  inset:0;
  -webkit-mask:var(--logo-url) center/contain no-repeat;
          mask:var(--logo-url) center/contain no-repeat;
  background:linear-gradient(115deg,
    transparent 38%,
    rgba(255,255,255,.0) 44%,
    rgba(255,248,240,.85) 50%,
    rgba(255,255,255,.0) 56%,
    transparent 62%);
  background-size:280% 100%;
  background-position:140% 0;
  mix-blend-mode:screen;
  opacity:0;
  animation:sheen 6.5s ease-in-out 2.1s infinite;
}
@keyframes sheen{
  0%{background-position:140% 0;opacity:0;}
  8%{opacity:1;}
  26%{background-position:-60% 0;opacity:1;}
  34%,100%{background-position:-60% 0;opacity:0;}
}

.divider{
  width:0;
  height:1px;
  margin:38px 0 30px;
  background:linear-gradient(90deg,transparent,var(--orange),transparent);
  opacity:0;
  animation:lineGrow 1.3s ease 1.15s forwards;
}
@keyframes lineGrow{to{opacity:.9;width:min(230px,52vw);}}

.eyebrow{
  font-size:clamp(11px,1.4vw,13px);
  letter-spacing:.42em;
  text-transform:uppercase;
  color:var(--orange-light);
  font-weight:400;
  margin-bottom:22px;
  opacity:0;
  animation:fadeUp 1s ease 1.0s forwards;
}

h1{
  font-family:'Cormorant Garamond',serif;
  font-weight:400;
  line-height:1.04;
  font-size:clamp(34px,7vw,76px);
  letter-spacing:.005em;
  margin-bottom:8px;
}
h1 .word{
  display:inline-block;
  opacity:0;
  transform:translateY(22px);
  filter:blur(6px);
  animation:wordIn .95s cubic-bezier(.2,.7,.2,1) forwards;
}
h1 .accent{
  font-style:italic;
  color:var(--orange);
}
@keyframes wordIn{to{opacity:1;transform:translateY(0);filter:blur(0);}}

.sub{
  margin-top:18px;
  font-size:clamp(13px,1.7vw,16px);
  letter-spacing:.04em;
  color:var(--muted);
  font-weight:300;
  opacity:0;
  animation:fadeUp 1s ease 2.0s forwards;
}

/* ---------- notify ---------- */
.notify{
  margin-top:40px;
  width:min(420px,90vw);
  opacity:0;
  animation:fadeUp 1s ease 2.25s forwards;
}
.field{
  display:flex;
  align-items:center;
  gap:10px;
  background:rgba(255,255,255,.04);
  border:1px solid var(--line);
  border-radius:999px;
  padding:7px 7px 7px 22px;
  backdrop-filter:blur(8px);
  transition:border-color .35s ease,box-shadow .35s ease;
}
.field:focus-within{
  border-color:rgba(238,123,60,.6);
  box-shadow:0 0 0 4px rgba(238,123,60,.12),0 10px 30px rgba(238,123,60,.10);
}
.field input{
  flex:1;
  background:none;
  border:none;
  outline:none;
  color:var(--cream);
  font-family:'Jost',sans-serif;
  font-size:15px;
  letter-spacing:.02em;
  padding:10px 0;
  min-width:0;
}
.field input::placeholder{color:rgba(244,239,234,.4);}
.field button{
  flex:none;
  border:none;
  cursor:pointer;
  font-family:'Jost',sans-serif;
  font-size:12.5px;
  font-weight:500;
  letter-spacing:.18em;
  text-transform:uppercase;
  color:#fff;
  background:linear-gradient(135deg,var(--orange),var(--orange-deep));
  padding:13px 26px;
  border-radius:999px;
  transition:transform .25s ease,box-shadow .25s ease,filter .25s ease;
  box-shadow:0 8px 24px rgba(238,123,60,.32);
}
.field button:hover{transform:translateY(-1px);filter:brightness(1.06);box-shadow:0 12px 30px rgba(238,123,60,.45);}
.field button:active{transform:translateY(0);}
.field button:disabled{cursor:default;opacity:.7;transform:none;filter:none;}

/* honeypot — visually & semantically hidden */
.hp{
  position:absolute;
  left:-9999px;
  width:1px;
  height:1px;
  overflow:hidden;
}

.note{
  margin-top:14px;
  font-size:11.5px;
  letter-spacing:.12em;
  text-transform:uppercase;
  color:rgba(244,239,234,.4);
  min-height:1.2em;
  transition:color .3s ease;
}
.note.ok{color:var(--orange-light);}
.note.error{color:var(--orange);}

/* footer site url */
.site{
  position:fixed;
  bottom:26px;
  left:0;right:0;
  z-index:2;
  text-align:center;
  font-size:12px;
  letter-spacing:.34em;
  text-transform:uppercase;
  color:rgba(244,239,234,.5);
  opacity:0;
  animation:fadeUp 1.2s ease 2.6s forwards;
}
.site a{color:inherit;text-decoration:none;transition:color .3s ease;}
.site a:hover{color:var(--orange-light);}

@keyframes fadeUp{from{opacity:0;transform:translateY(16px);}to{opacity:1;transform:translateY(0);}}

@media (prefers-reduced-motion:reduce){
  *{animation-duration:.01ms!important;animation-iteration-count:1!important;}
  .logo-wrap{opacity:1;filter:none;transform:none;}
  h1 .word{opacity:1;transform:none;filter:none;}
}

@media (max-height:560px){
  .site{display:none;}
  .divider{margin:22px 0 18px;}
  .notify{margin-top:26px;}
}
