/* ==========================================================================
   MACROS. — auth v2, footer watermark, seamless marquee
   Sliding glow segmented control · liquid-glass card · spring OTP ·
   reactive brand mark. Loaded after motion.css.
   ========================================================================== */

/* ---------------------------------------------- liquid-glass auth shell --- */
.authx{width:min(468px,92vw);margin-inline:auto;position:relative;z-index:2}
.authx-card{position:relative;border-radius:30px;padding:34px 30px 30px;overflow:hidden;
  background:linear-gradient(160deg,rgba(18,20,25,.86),rgba(10,11,13,.92));
  border:1px solid rgba(255,255,255,.14);
  backdrop-filter:blur(34px) saturate(1.6);-webkit-backdrop-filter:blur(34px) saturate(1.6);
  box-shadow:0 40px 120px -36px rgba(0,0,0,.95),inset 0 1px 0 rgba(255,255,255,.20)}
/* the lens: a soft highlight that follows the pointer across the glass */
.authx-card::after{content:'';position:absolute;width:340px;height:340px;border-radius:50%;
  left:var(--lx,50%);top:var(--ly,0%);transform:translate(-50%,-50%);pointer-events:none;
  background:radial-gradient(circle,rgba(200,255,60,.10),transparent 62%);
  transition:opacity .4s;opacity:var(--lo,0)}

/* blurred colour blobs behind the glass (the Liquid Glass reference) */
.authx-bg{position:absolute;inset:-6%;z-index:-1;filter:blur(90px);opacity:.30;pointer-events:none}
.authx-bg i{position:absolute;border-radius:50%;display:block}
.authx-bg i:nth-child(1){width:38%;aspect-ratio:1;background:#C8FF3C;top:-6%;left:-4%;animation:ab1 17s var(--ease) infinite alternate}
.authx-bg i:nth-child(2){width:36%;aspect-ratio:1;background:#7C4DFF;bottom:-8%;right:-6%;animation:ab2 21s var(--ease) infinite alternate}
.authx-bg i:nth-child(3){width:28%;aspect-ratio:1;background:#FF6A3D;top:44%;left:52%;opacity:.7;animation:ab3 25s var(--ease) infinite alternate}
@keyframes ab1{to{transform:translate(34%,26%) scale(1.25)}}
@keyframes ab2{to{transform:translate(-30%,-22%) scale(1.3)}}
@keyframes ab3{to{transform:translate(-26%,20%) scale(.8)}}

/* -------------------------------------- sliding glow segmented control ---- */
.seg{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:0;padding:5px;
  border-radius:100px;background:rgba(0,0,0,.42);border:1px solid rgba(255,255,255,.12);
  margin-bottom:26px;isolation:isolate}
.seg button{position:relative;z-index:2;border:0;background:none;cursor:pointer;padding:12px 10px;
  font-family:var(--head);font-weight:600;font-size:.92rem;color:var(--ash);
  transition:color .35s var(--ease);border-radius:100px}
.seg button[aria-selected="true"]{color:var(--ink)}
.seg .glow{position:absolute;z-index:1;top:5px;bottom:5px;left:5px;border-radius:100px;
  background:var(--volt);box-shadow:0 0 26px rgba(200,255,60,.55),0 0 60px rgba(200,255,60,.28);
  transition:transform .55s var(--ease),width .55s var(--ease)}

/* ------------------------------------------------- reactive brand mark ---- */
.face{display:flex;justify-content:center;align-items:flex-end;gap:9px;height:56px;margin-bottom:18px}
.face i{display:block;width:15px;border-radius:5px;background:var(--chalk);
  transition:height .35s var(--ease),background .35s,transform .35s var(--ease)}
.face i:nth-child(1){height:20px;background:var(--ember)}
.face i:nth-child(2){height:34px}
.face i:nth-child(3){height:52px;background:var(--volt)}
/* typing — the bars bounce like a level meter */
.face.typing i{animation:bar .55s ease-in-out infinite alternate}
.face.typing i:nth-child(2){animation-delay:.11s}
.face.typing i:nth-child(3){animation-delay:.22s}
@keyframes bar{to{height:52px}}
/* secret — the bars duck down and shrink, "covering their eyes" */
.face.hiding i{height:11px!important;animation:none;transform:translateY(6px)}
/* success — they leap */
.face.happy i{animation:hop .5s var(--ease)}
@keyframes hop{40%{transform:translateY(-16px)}70%{transform:translateY(0)}}

/* ------------------------------------------------------ spring OTP boxes -- */
.otpx{display:flex;gap:10px;justify-content:space-between;position:relative;margin:22px 0 8px}
.otpx input{width:100%;aspect-ratio:1;text-align:center;font-family:var(--mono);font-size:1.5rem;
  font-weight:700;border-radius:16px;border:1.5px solid rgba(255,255,255,.14);
  background:rgba(255,255,255,.05);transition:border-color .3s,background .3s,box-shadow .3s;
  caret-color:var(--volt)}
.otpx input:focus{outline:none;border-color:var(--volt);background:rgba(200,255,60,.09);
  box-shadow:0 0 0 4px rgba(200,255,60,.14),0 0 30px rgba(200,255,60,.30)}
.otpx input.filled{border-color:rgba(200,255,60,.75);background:rgba(200,255,60,.12);
  animation:pop .42s var(--ease)}
@keyframes pop{0%{transform:scale(1)}38%{transform:scale(1.22) translateY(-5px)}100%{transform:scale(1)}}
/* the line that links filled digits, like the reference */
.otpx .link{position:absolute;left:0;top:50%;height:2px;width:0;pointer-events:none;
  background:linear-gradient(90deg,transparent,var(--volt),transparent);opacity:.55;
  transition:width .45s var(--ease);z-index:-1}
.otpx.done input{border-color:var(--volt);box-shadow:0 0 26px rgba(200,255,60,.35)}

/* ---------------------------------------------------------- form fields --- */
.fx{position:relative;margin-bottom:16px}
.fx input,.fx select{width:100%;padding:21px 16px 9px;border-radius:15px;
  border:1px solid rgba(255,255,255,.13);background:rgba(255,255,255,.05);
  font-size:.97rem;transition:.3s var(--ease)}
.fx label{position:absolute;left:16px;top:15px;color:var(--ash);font-size:.94rem;
  pointer-events:none;transition:.24s var(--ease)}
.fx input:focus,.fx select:focus{outline:none;border-color:var(--volt);
  background:rgba(200,255,60,.06);box-shadow:0 0 0 4px rgba(200,255,60,.1)}
.fx input:focus+label,.fx input:not(:placeholder-shown)+label,.fx select+label{
  top:7px;font-size:.62rem;color:var(--volt);letter-spacing:.11em;text-transform:uppercase}
.fx select{appearance:none;padding-top:23px;
  background-image:linear-gradient(45deg,transparent 50%,var(--ash) 50%),linear-gradient(135deg,var(--ash) 50%,transparent 50%);
  background-position:calc(100% - 20px) calc(50% + 4px),calc(100% - 14px) calc(50% + 4px);
  background-size:6px 6px,6px 6px;background-repeat:no-repeat}
.fx select option{background:#101216;color:var(--chalk)}
.fx input.bad{border-color:var(--ember);box-shadow:0 0 0 4px rgba(255,106,61,.14);animation:shake .4s}

.authx h2{font-size:1.55rem;text-align:center;margin-bottom:6px}
.authx .lede{text-align:center;color:var(--ash);font-size:.9rem;margin-bottom:22px}
.authx .foot{text-align:center;margin-top:18px;font-size:.85rem;color:var(--ash-2)}
.authx .foot a{color:var(--volt);text-decoration:underline;text-underline-offset:3px}

/* ------------------------------------------------------- FOOTER SIGN-OFF -- */
.signoff{border-top:1px solid var(--stroke);margin-top:26px;padding-top:24px;
  display:flex;align-items:center;justify-content:space-between;gap:18px;flex-wrap:wrap}
.signoff .made{font-size:.88rem;color:var(--ash);display:flex;align-items:center;gap:7px}
.signoff .made b{color:var(--chalk);font-family:var(--head);font-weight:600}
.signoff .heart{color:#FF3B5C;display:inline-block;animation:beat 1.5s ease-in-out infinite}
@keyframes beat{0%,100%{transform:scale(1)}14%{transform:scale(1.28)}28%{transform:scale(1)}42%{transform:scale(1.22)}}
.signoff .flag{font-size:1rem;line-height:1}
.socialx{display:flex;gap:10px}
.socialx a{width:42px;height:42px;border-radius:50%;display:grid;place-items:center;
  border:1px solid var(--stroke);color:var(--ash);transition:.3s var(--ease);background:var(--glass)}
.socialx a svg{width:18px;height:18px;fill:currentColor}
.socialx a:hover{transform:translateY(-3px) scale(1.06);color:var(--ink);border-color:transparent}
.socialx a.li:hover{background:#0A66C2;color:#fff}
.socialx a.ig:hover{background:linear-gradient(45deg,#F58529,#DD2A7B,#8134AF);color:#fff}
.socialx a.wa:hover{background:#25D366;color:#fff}

/* ------------------------------------------------------ seamless marquee -- */
.marquee{border-block:1px solid var(--stroke);padding:18px 0;overflow:hidden;
  background:rgba(255,255,255,.02);position:relative;z-index:1;
  -webkit-mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent);
  mask-image:linear-gradient(90deg,transparent,#000 8%,#000 92%,transparent)}
.marquee-track{display:flex;width:max-content;animation:scrollX 40s linear infinite;will-change:transform}
.marquee:hover .marquee-track{animation-play-state:paused}
.marquee-track .grp{display:flex;align-items:center;flex-shrink:0}
.marquee span{font-family:var(--head);font-size:1.05rem;font-weight:600;color:var(--ash);
  display:flex;align-items:center;white-space:nowrap;padding-right:48px}
.marquee span::after{content:'';width:6px;height:6px;background:var(--volt);border-radius:50%;
  flex-shrink:0;margin-left:48px}
@keyframes scrollX{from{transform:translate3d(0,0,0)}to{transform:translate3d(-50%,0,0)}}
.marquee.alt .marquee-track{animation-duration:52s;animation-direction:reverse}
.marquee.alt span{color:var(--ash-2);font-size:.95rem}

/* ============================================================ RESPONSIVE == */
@media (max-width:1100px){
  .hero-grid{gap:34px}
}
@media (max-width:900px){
  :root{--nav-h:66px}
  .authx-card{padding:28px 22px 24px;border-radius:26px}
  .signoff{flex-direction:column;align-items:flex-start;gap:14px}
}
@media (max-width:600px){
  .otpx{gap:7px}
  .otpx input{font-size:1.15rem;border-radius:13px}
  .seg button{font-size:.85rem;padding:11px 6px}
  .marquee span{font-size:.9rem;padding-right:30px}
  .marquee span::after{margin-left:30px}
  .face{height:44px;gap:7px}
  .face i{width:12px}
  .socialx a{width:46px;height:46px}   /* keep the 44px touch target on phones */
}
@media (max-width:380px){
  .otpx{gap:5px}
  .otpx input{font-size:1rem;border-radius:11px}
}

/* ==========================================================================
   RESPONSIVE FIXES — found by automated QA across 10 device viewports
   ========================================================================== */

/* The nav row must never push its controls off-screen. The signature text is
   the first thing to go: the wordmark already says MACROS. */
.nav .wrap{gap:12px;min-width:0}
.brand{min-width:0}
@media (max-width:820px){
  .brand .by{display:none}
  .nav .wrap{gap:8px}
  .brand img{height:28px}
  .nav-cta{gap:8px}
  .cart-btn{padding:10px 14px;font-size:.82rem}
  .snd{width:38px;height:38px}
}
@media (max-width:820px) and (pointer:coarse){
  .snd{width:44px;height:44px}
}
@media (max-width:400px){
  .brand img{height:25px}
  .cart-btn{padding:9px 12px;font-size:.78rem}
  /* No-JS fallback for the same fold the header measures at runtime: the
     word "Cart" goes, the bag icon takes its place. */
  .cart-btn .cart-lab{display:none}
  .cart-btn .cart-ico{display:block}
}

/* Belt and braces: nothing may create a horizontal scrollbar. */
html{overflow-x:clip}
body{overflow-x:clip}
.bg-fx,.veil,.confetti{max-width:100vw;overflow:clip}

/* ---- touch targets: 44px minimum on any coarse pointer (WCAG 2.5.5) ---- */
@media (pointer:coarse){
  footer li{margin-bottom:2px}
  footer a{display:inline-flex;align-items:center;min-height:44px;padding:4px 0}
  .nav-links a{display:block;min-height:44px;line-height:44px}
  .socialx a,.socials a{width:46px;height:46px}
  .seg button{min-height:46px}
  .otpx input{min-height:48px}
  .chip{min-height:44px;display:inline-flex;align-items:center}
  .qty button{width:36px;height:36px}
  .auth-switch a,.prose a,.hint a{display:inline-block;padding:6px 0}
  .f-bot{gap:10px}
}

/* ---- momentum scrolling + no rubber-band jank on iOS ---- */
html{-webkit-text-size-adjust:100%;scroll-padding-top:calc(var(--nav-h) + 12px)}
body{-webkit-overflow-scrolling:touch;overscroll-behavior-y:none}
.drawer-body{-webkit-overflow-scrolling:touch;overscroll-behavior:contain}

/* iOS zooms the page in if an input's font-size is below 16px. Never let it. */
@media (max-width:820px){
  input,select,textarea,.input,.ff input,.fx input,.otpx input{font-size:16px}
  .otpx input{font-size:18px}
}

/* Heavy blur is expensive on phones — trim it so scrolling stays at 60fps. */
@media (max-width:820px){
  :root{--blur:14px}
  .bloom{filter:blur(80px);opacity:.24}
  .authx-bg{filter:blur(56px);opacity:.22}
  .authx-card{backdrop-filter:blur(16px);-webkit-backdrop-filter:blur(16px)}
  .grain{display:none}          /* the noise layer is the biggest paint cost */
}

/* Landscape phones: the hero must not demand a full tall viewport. */
@media (max-height:520px) and (orientation:landscape){
  .hero{min-height:auto;padding-top:calc(var(--nav-h) + 20px)}
  .hero-art{display:none}
  .auth-wrap{min-height:auto;padding-top:calc(var(--nav-h) + 24px)}
}

/* Remaining tap targets found by QA. Inline links inside a sentence are exempt
   under WCAG 2.5.5, so only standalone links are enlarged here. */
@media (pointer:coarse){
  .brand{min-height:44px}
  .card p > a,
  .news-perks + p > a{display:inline-flex;align-items:center;min-height:44px}
  /* phone and email on the contact page are the most important taps on a phone */
  a[href^="tel:"],a[href^="mailto:"],a[href^="https://wa.me"]{
    display:inline-flex;align-items:center;min-height:44px;padding:4px 0}
}
