/* ==========================================================================
   NMAYA — core
   Palette and structure taken from the clothes: raw denim indigo, undyed
   calico, and the rope-gold thread used for topstitching on the denim line.
   ========================================================================== */

:root{
  /* colour */
  --ink:#16222E;          /* raw denim, near-black indigo */
  --ink-2:#22323F;
  --ink-3:#33475A;
  --calico:#EFEBE3;       /* undyed cloth — the page surface */
  --calico-2:#E5DFD3;
  --calico-3:#D8D0C0;
  --paper:#FBF9F5;
  --thread:#C0A87E;       /* topstitch gold */
  --thread-dim:#D9CCAE;
  --wine:#6E2233;
  --slate:#6E7A86;
  --slate-2:#98A3AD;
  --ok:#2E6B4F;
  --err:#9A2A2A;

  /* type */
  --display:"Bodoni Moda",Didot,"Times New Roman",serif;
  --body:"Jost",-apple-system,BlinkMacSystemFont,"Segoe UI",Helvetica,Arial,sans-serif;

  --fs-xs:.72rem;
  --fs-sm:.83rem;
  --fs-base:.95rem;
  --fs-md:1.05rem;

  /* space + shape */
  --gut:clamp(1.15rem,4vw,3.5rem);
  --maxw:1440px;
  --r:2px;
  --r-lg:4px;
  --r-img:10px;

  --shadow:0 1px 2px rgba(22,34,46,.05),0 12px 32px -18px rgba(22,34,46,.35);
  --shadow-lg:0 24px 70px -28px rgba(22,34,46,.5);

  --ease:cubic-bezier(.22,.61,.36,1);
  --dur:.42s;

  --header-h:64px;
  --bar-h:38px;
}

*,*::before,*::after{box-sizing:border-box}

html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}

body{
  margin:0;
  background:var(--calico);
  color:var(--ink);
  font-family:var(--body);
  font-size:var(--fs-base);
  font-weight:400;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
}

body.is-locked{overflow:hidden}

img,svg,video{display:block;max-width:100%}
img{height:auto;background:var(--calico-2)}

a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;border:0;background:none;cursor:pointer}
input,select,textarea{font:inherit;color:inherit}

:focus-visible{outline:2px solid var(--thread);outline-offset:3px;border-radius:2px}

::selection{background:var(--ink);color:var(--calico)}

/* --------------------------------------------------------------- type --- */

h1,h2,h3,h4{margin:0;font-family:var(--display);font-weight:400;line-height:1.05;letter-spacing:-.015em}

.d1{font-size:clamp(2.7rem,7.4vw,5.6rem)}
.d2{font-size:clamp(2rem,4.6vw,3.4rem)}
.d3{font-size:clamp(1.45rem,2.6vw,2.1rem)}

.eyebrow{
  font-size:var(--fs-xs);
  letter-spacing:.24em;
  text-transform:uppercase;
  color:var(--slate);
  font-weight:500;
  margin:0 0 .9rem;
  display:flex;align-items:center;gap:.7rem;
}
.eyebrow::before{
  content:"";width:26px;height:1px;background:var(--thread);flex:none;
}
.eyebrow.is-centred{justify-content:center}
.eyebrow.on-dark{color:var(--thread-dim)}

.lede{font-size:var(--fs-md);color:var(--slate);max-width:46ch;margin:0}
.on-dark .lede,.lede.on-dark{color:#A9B6C2}

/* SIGNATURE — the topstitch rule, borrowed from the denim seams ---------- */
.stitch{
  border:0;height:0;margin:0;
  border-top:1px dashed var(--thread);
  opacity:.75;
}
.stitch-box{border:1px dashed var(--thread-dim);border-radius:var(--r-lg)}

/* a woven care-label, used for fabric + care copy */
.care-label{
  display:inline-flex;align-items:center;gap:.55rem;
  background:var(--paper);
  border:1px solid var(--calico-3);
  border-left:3px solid var(--thread);
  padding:.5rem .8rem;
  font-size:var(--fs-xs);
  letter-spacing:.13em;
  text-transform:uppercase;
  color:var(--ink-2);
}

/* -------------------------------------------------------------- layout --- */

.wrap{width:100%;max-width:var(--maxw);margin-inline:auto;padding-inline:var(--gut)}
.section{padding-block:clamp(3.4rem,7vw,6.5rem)}
.section--tight{padding-block:clamp(2.2rem,4vw,3.6rem)}
.section--ink{background:var(--ink);color:var(--calico)}
.section--ink h1,.section--ink h2,.section--ink h3{color:var(--paper)}

.section-head{
  display:flex;align-items:flex-end;justify-content:space-between;
  gap:1.5rem;margin-bottom:clamp(1.5rem,3vw,2.4rem);flex-wrap:wrap;
}
.section-head p{margin:.6rem 0 0}

.link-more{
  font-size:var(--fs-sm);letter-spacing:.16em;text-transform:uppercase;
  border-bottom:1px solid var(--thread);padding-bottom:3px;white-space:nowrap;
  transition:color .25s var(--ease),border-color .25s var(--ease);
}
.link-more:hover{color:var(--ink-3);border-color:var(--ink)}

/* ------------------------------------------------------------- buttons --- */

.btn{
  --btn-bg:var(--ink);--btn-fg:var(--calico);--btn-bd:var(--ink);
  display:inline-flex;align-items:center;justify-content:center;gap:.6rem;
  min-height:50px;padding:.85rem 1.9rem;
  background:var(--btn-bg);color:var(--btn-fg);
  border:1px solid var(--btn-bd);border-radius:var(--r);
  font-size:var(--fs-sm);letter-spacing:.16em;text-transform:uppercase;font-weight:500;
  cursor:pointer;position:relative;overflow:hidden;
  transition:background .3s var(--ease),color .3s var(--ease),border-color .3s var(--ease),transform .18s var(--ease);
}
.btn:hover{background:var(--ink-3);border-color:var(--ink-3)}
.btn:active{transform:translateY(1px)}
.btn--ghost{--btn-bg:transparent;--btn-fg:var(--ink);--btn-bd:var(--ink)}
.btn--ghost:hover{--btn-bg:var(--ink);--btn-fg:var(--calico)}
.btn--light{--btn-bg:var(--calico);--btn-fg:var(--ink);--btn-bd:var(--calico)}
.btn--light:hover{background:var(--paper);border-color:var(--paper);color:var(--ink)}
.btn--outline-light{--btn-bg:transparent;--btn-fg:var(--calico);--btn-bd:rgba(239,235,227,.45)}
.btn--outline-light:hover{--btn-bg:var(--calico);--btn-fg:var(--ink);--btn-bd:var(--calico)}
.btn--block{width:100%}
.btn--sm{min-height:42px;padding:.55rem 1.2rem;font-size:var(--fs-xs)}
.btn[disabled],.btn[aria-disabled="true"]{opacity:.45;cursor:not-allowed;pointer-events:none}
.btn.is-busy{color:transparent!important;pointer-events:none}
.btn.is-busy::after{
  content:"";position:absolute;inset:0;margin:auto;width:17px;height:17px;
  border:2px solid currentColor;border-top-color:transparent;border-radius:50%;
  color:var(--btn-fg);animation:spin .7s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}

.icon-btn{
  display:inline-flex;align-items:center;justify-content:center;
  width:44px;height:44px;border-radius:50%;position:relative;
  transition:background .25s var(--ease);
}
.icon-btn:hover{background:rgba(22,34,46,.07)}
.icon-btn svg{width:20px;height:20px;stroke:currentColor;stroke-width:1.4;fill:none}

/* --------------------------------------------------- announcement bar ---- */

.announce{
  background:var(--ink);color:var(--thread-dim);
  height:var(--bar-h);display:flex;align-items:center;overflow:hidden;
  font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;
}
.announce__track{
  flex:1;position:relative;height:100%;text-align:center;
}
.announce__item{
  position:absolute;inset:0;display:flex;align-items:center;justify-content:center;
  padding-inline:2.5rem;
  opacity:0;transform:translateY(70%);
  transition:opacity .55s var(--ease),transform .55s var(--ease);
}
.announce__item.is-active{opacity:1;transform:none}

/* -------------------------------------------------------------- header --- */

.header{
  position:sticky;top:0;z-index:60;
  background:rgba(239,235,227,.94);
  backdrop-filter:saturate(160%) blur(12px);
  -webkit-backdrop-filter:saturate(160%) blur(12px);
  border-bottom:1px solid transparent;
  transition:border-color .3s var(--ease),background .3s var(--ease);
}
.header.is-stuck{border-bottom-color:var(--calico-3)}

.header__inner{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  gap:1rem;min-height:var(--header-h);
}

.brand{display:flex;align-items:center;justify-self:center}
.brand img{height:30px;width:auto;object-fit:contain}
.brand__type{
  font-family:var(--display);font-size:1.45rem;letter-spacing:.3em;
  text-indent:.3em;line-height:1;
}

.nav{display:flex;align-items:center;gap:1.6rem}
.nav__link{
  font-size:var(--fs-sm);letter-spacing:.13em;text-transform:uppercase;
  padding-block:.4rem;position:relative;white-space:nowrap;
}
.nav__link::after{
  content:"";position:absolute;left:0;bottom:0;height:1px;width:100%;
  background:var(--ink);transform:scaleX(0);transform-origin:right;
  transition:transform .32s var(--ease);
}
.nav__link:hover::after,.nav__link[aria-current="page"]::after{transform:scaleX(1);transform-origin:left}

.header__actions{display:flex;align-items:center;gap:.15rem;justify-self:end}

.soon{
  font-size:.58rem;letter-spacing:.13em;text-transform:uppercase;
  background:var(--thread);color:var(--ink);
  padding:.16em .5em;border-radius:999px;margin-left:.45rem;
  vertical-align:.28em;font-weight:600;white-space:nowrap;
}

.cart-count{
  position:absolute;top:5px;right:4px;
  min-width:18px;height:18px;padding:0 4px;
  background:var(--ink);color:var(--calico);
  border-radius:999px;font-size:.62rem;font-weight:600;
  display:flex;align-items:center;justify-content:center;
  transform:scale(0);transition:transform .28s var(--ease);
}
.cart-count.is-on{transform:scale(1)}
.cart-count.is-bump{animation:bump .42s var(--ease)}
@keyframes bump{0%,100%{transform:scale(1)}40%{transform:scale(1.45)}}

.currency-switch{
  display:inline-flex;border:1px solid var(--calico-3);border-radius:999px;overflow:hidden;
}
.currency-switch a{
  padding:.3rem .62rem;font-size:var(--fs-xs);letter-spacing:.1em;color:var(--slate);
  transition:background .25s var(--ease),color .25s var(--ease);
}
.currency-switch a[aria-current]{background:var(--ink);color:var(--calico)}

.burger{display:none}

/* -------------------------------------------------------------- drawer --- */

.scrim{
  position:fixed;inset:0;z-index:80;
  background:rgba(22,34,46,.42);backdrop-filter:blur(3px);
  opacity:0;visibility:hidden;transition:opacity .4s var(--ease),visibility .4s;
}
.scrim.is-open{opacity:1;visibility:visible}

.drawer{
  position:fixed;top:0;bottom:0;right:0;z-index:90;
  width:min(430px,100%);
  background:var(--paper);
  display:flex;flex-direction:column;
  transform:translateX(101%);
  transition:transform var(--dur) var(--ease);
  box-shadow:var(--shadow-lg);
}
.drawer.is-open{transform:none}
.drawer--left{right:auto;left:0;transform:translateX(-101%);width:min(400px,88%)}
.drawer--top{
  right:0;left:0;bottom:auto;width:100%;max-height:88vh;
  transform:translateY(-101%);
}
.drawer__head{
  display:flex;align-items:center;justify-content:space-between;
  gap:1rem;padding:1.1rem var(--gut);border-bottom:1px dashed var(--thread-dim);
  flex:none;
}
.drawer__title{
  font-size:var(--fs-sm);letter-spacing:.2em;text-transform:uppercase;font-weight:500;
}
.drawer__body{flex:1;overflow-y:auto;overscroll-behavior:contain;-webkit-overflow-scrolling:touch}
.drawer__foot{flex:none;padding:1.15rem var(--gut) calc(1.15rem + env(safe-area-inset-bottom));border-top:1px solid var(--calico-2);background:var(--paper)}

/* ---------------------------------------------------------- mobile nav --- */

.mnav{padding:.25rem 0 2rem}

.mnav__list{list-style:none;margin:0;padding:0}
.mnav__item{margin:0}

/* One row, whether it is a link or an expander. */
.mnav__row{
  display:flex;align-items:center;justify-content:space-between;gap:.75rem;
  width:100%;min-height:56px;
  padding:.85rem var(--gut);
  background:none;border:0;border-bottom:1px solid var(--calico-2);
  font:inherit;color:inherit;text-align:left;cursor:pointer;
  transition:background .2s var(--ease);
}
.mnav__row:hover,.mnav__row:focus-visible{background:var(--calico)}

.mnav__label{font-weight:500;letter-spacing:.01em}

/* Depth sets the weight, so the hierarchy reads at a glance. */
.mnav__list--d0 > .mnav__item > .mnav__row{
  font-size:1.02rem;text-transform:uppercase;letter-spacing:.09em;
}
.mnav__list--d1 > .mnav__item > .mnav__row{
  padding-left:calc(var(--gut) + 1rem);
  font-size:.97rem;
}
.mnav__list--d2 > .mnav__item > .mnav__row{
  padding-left:calc(var(--gut) + 2rem);
  font-size:.94rem;font-weight:400;color:var(--ink-3);
}

/* Nested levels sit on a tint so the indent is legible without rules. */
.mnav__sub{background:rgba(216,208,192,.22)}
.mnav__sub .mnav__sub{background:rgba(216,208,192,.34)}

/* The +/− sign, drawn rather than iconned so it animates cleanly. */
.mnav__sign{
  position:relative;flex:0 0 auto;width:14px;height:14px;
  transition:transform .3s var(--ease);
}
.mnav__sign::before,.mnav__sign::after{
  content:"";position:absolute;top:50%;left:0;
  width:14px;height:1.5px;margin-top:-.75px;
  background:var(--ink);border-radius:2px;
  transition:transform .3s var(--ease),opacity .2s var(--ease);
}
.mnav__sign::after{transform:rotate(90deg)}
.mnav__row--toggle[aria-expanded="true"] .mnav__sign::after{transform:rotate(0);opacity:0}

.mnav__row .soon{margin-left:auto}

.mnav__meta{padding:1.4rem var(--gut) 0;display:flex;flex-direction:column;gap:.9rem}
.mnav__meta a{font-size:var(--fs-sm);letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}

@media (prefers-reduced-motion:reduce){
  .mnav__sign,.mnav__sign::before,.mnav__sign::after{transition:none}
}

/* -------------------------------------------------------------- search --- */

.search__form{display:flex;align-items:center;gap:.8rem;padding:1.4rem var(--gut)}
.search__input{
  flex:1;border:0;border-bottom:1px solid var(--ink);background:transparent;
  font-family:var(--display);font-size:clamp(1.3rem,3.6vw,2rem);
  padding:.5rem 0;
}
.search__input:focus{outline:0;border-bottom-color:var(--thread)}
.search__hint{padding:0 var(--gut) 1.4rem;font-size:var(--fs-sm);color:var(--slate)}
.search__results{padding:0 var(--gut) 2rem;display:grid;gap:.3rem}
.search__row{
  display:grid;grid-template-columns:62px 1fr auto;gap:1rem;align-items:center;
  padding:.6rem;border-radius:var(--r-lg);
  transition:background .2s var(--ease);
}
.search__row:hover{background:var(--calico)}
.search__row img{width:62px;height:78px;object-fit:cover;border-radius:var(--r)}
.search__row b{display:block;font-weight:500;font-size:var(--fs-base)}
.search__row span{font-size:var(--fs-xs);letter-spacing:.12em;text-transform:uppercase;color:var(--slate)}

/* ---------------------------------------------------------- mini cart --- */

.cart-line{
  display:grid;grid-template-columns:84px 1fr;gap:1rem;
  padding:1.15rem var(--gut);border-bottom:1px solid var(--calico-2);
  animation:fadeUp .35s var(--ease) both;
}
.cart-line img{width:84px;height:106px;object-fit:cover;border-radius:var(--r)}
.cart-line__name{font-weight:500;line-height:1.3}
.cart-line__variant{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--slate);margin-top:.2rem}
.cart-line__foot{display:flex;align-items:center;justify-content:space-between;margin-top:.7rem;gap:.6rem}
.cart-line__price{font-variant-numeric:tabular-nums;font-weight:500}

.qty{display:inline-flex;align-items:center;border:1px solid var(--calico-3);border-radius:999px}
.qty button{width:34px;height:34px;display:grid;place-items:center;font-size:1rem;color:var(--slate);transition:color .2s}
.qty button:hover{color:var(--ink)}
.qty span{min-width:26px;text-align:center;font-size:var(--fs-sm);font-variant-numeric:tabular-nums}

.cart-remove{font-size:var(--fs-xs);letter-spacing:.1em;text-transform:uppercase;color:var(--slate);border-bottom:1px solid transparent}
.cart-remove:hover{color:var(--wine);border-bottom-color:var(--wine)}

.cart-total{display:flex;justify-content:space-between;align-items:baseline;margin-bottom:.35rem}
.cart-total b{font-size:1.2rem;font-variant-numeric:tabular-nums}
.cart-note{font-size:var(--fs-xs);color:var(--slate);margin:.1rem 0 1rem}

.freeship{margin:0 var(--gut) 1rem;padding-top:1rem}
.freeship__bar{height:3px;background:var(--calico-2);border-radius:999px;overflow:hidden;margin-top:.5rem}
.freeship__fill{height:100%;background:var(--thread);width:0;transition:width .6s var(--ease)}

/* ------------------------------------------------------- product card --- */

.grid{display:grid;gap:clamp(1rem,2.2vw,1.9rem) clamp(.7rem,1.6vw,1.4rem)}
.grid--4{grid-template-columns:repeat(2,1fr)}
.grid--3{grid-template-columns:repeat(2,1fr)}
.grid--2{grid-template-columns:1fr}

.card{position:relative;display:flex;flex-direction:column}
.card__media{
  position:relative;display:block;overflow:hidden;
  border-radius:var(--r-img);background:var(--calico-2);
  aspect-ratio:4/5;
}
.card__img{
  width:100%;height:100%;object-fit:cover;
  transition:transform .9s var(--ease),opacity .5s var(--ease);
}
.card__img--alt{position:absolute;inset:0;opacity:0}
.card:hover .card__img--alt{opacity:1}
.card:hover .card__img{transform:scale(1.045)}

.card__badges{position:absolute;top:.6rem;left:.6rem;display:flex;flex-direction:column;gap:.35rem;z-index:2}
.badge{
  font-size:.62rem;letter-spacing:.16em;text-transform:uppercase;font-weight:500;
  padding:.34em .7em;background:var(--paper);color:var(--ink);border-radius:999px;
}
.badge--sale{background:var(--wine);color:#fff}
.badge--soon{background:var(--thread);color:var(--ink)}
.badge--out{background:var(--ink);color:var(--calico)}
.badge--low{background:var(--paper);color:var(--wine);border:1px solid var(--wine)}

/* On touch the frame collapses so the quick-add button falls to the end of the
   card as an ordinary, always-visible button. On hover-capable pointers the
   frame becomes the positioning context and the button lifts onto the image. */
.card__frame{display:contents}
.card__quick{order:3;margin-top:.7rem}
.card__quick .btn{width:100%;min-height:44px}
/* Body absorbs the slack so buttons line up across a row even when a
   category name wraps to two lines. */
.card__body{flex:1 0 auto}

@media (hover:hover) and (pointer:fine){
  .card__frame{display:block;position:relative}
  .card__quick{
    position:absolute;left:.6rem;right:.6rem;bottom:.6rem;z-index:2;
    order:0;margin-top:0;
    opacity:0;transform:translateY(8px);
    pointer-events:none;
    transition:opacity .3s var(--ease),transform .3s var(--ease);
  }
  .card:hover .card__quick,.card:focus-within .card__quick{
    opacity:1;transform:none;pointer-events:auto;
  }
  .card__quick .btn{
    background:rgba(251,249,245,.95);color:var(--ink);border-color:transparent;
  }
  .card__quick .btn:hover{background:var(--ink);color:var(--calico)}
}

.card__body{padding:.85rem .15rem 0;display:flex;flex-direction:column;gap:.22rem}
.card__name{font-size:var(--fs-base);font-weight:500;line-height:1.3}
.card__cat{font-size:var(--fs-xs);letter-spacing:.14em;text-transform:uppercase;color:var(--slate)}
.card__price{display:flex;align-items:baseline;gap:.55rem;font-variant-numeric:tabular-nums;margin-top:.15rem}
.card__was{color:var(--slate-2);text-decoration:line-through;font-size:var(--fs-sm)}
.card__now--sale{color:var(--wine)}

.swatches{display:flex;gap:.3rem;margin-top:.45rem}
.swatch{
  width:15px;height:15px;border-radius:50%;
  border:1px solid rgba(22,34,46,.22);
  box-shadow:inset 0 0 0 2px var(--calico);
}
.swatch--more{
  width:auto;height:15px;border:0;box-shadow:none;border-radius:0;
  font-size:.62rem;color:var(--slate);line-height:15px;
}

/* --------------------------------------------------------- toasts -------- */

.toasts{
  position:fixed;z-index:120;left:50%;transform:translateX(-50%);
  bottom:calc(1rem + env(safe-area-inset-bottom));
  display:flex;flex-direction:column;gap:.5rem;
  width:min(400px,calc(100vw - 2rem));pointer-events:none;
}
.toast{
  display:flex;align-items:center;gap:.75rem;
  padding:.85rem 1rem;border-radius:var(--r-lg);
  background:var(--ink);color:var(--calico);
  box-shadow:var(--shadow-lg);pointer-events:auto;
  font-size:var(--fs-sm);
  animation:toastIn .38s var(--ease) both;
}
.toast.is-out{animation:toastOut .3s var(--ease) forwards}
.toast__icon{
  width:22px;height:22px;flex:none;border-radius:50%;
  display:grid;place-items:center;background:var(--thread);color:var(--ink);font-size:.75rem;font-weight:700;
}
.toast--error .toast__icon{background:var(--err);color:#fff}
.toast__body{flex:1;line-height:1.4}
.toast a{border-bottom:1px solid var(--thread);color:var(--thread-dim)}
@keyframes toastIn{from{opacity:0;transform:translateY(14px) scale(.97)}to{opacity:1;transform:none}}
@keyframes toastOut{to{opacity:0;transform:translateY(10px)}}

/* --------------------------------------------------------- skeletons ----- */

.sk{
  background:linear-gradient(100deg,var(--calico-2) 30%,var(--calico-3) 50%,var(--calico-2) 70%);
  background-size:220% 100%;
  animation:sheen 1.35s infinite linear;
  border-radius:var(--r);
}
@keyframes sheen{to{background-position:-220% 0}}
.sk-card__media{aspect-ratio:4/5;border-radius:var(--r-img)}
.sk-line{height:11px;margin-top:.7rem}
.sk-line--60{width:60%}
.sk-line--35{width:35%}

/* ------------------------------------------------------------- states ---- */

.empty{
  text-align:center;padding:clamp(2.5rem,7vw,5rem) 1.5rem;
  display:flex;flex-direction:column;align-items:center;gap:1rem;
}
.empty__mark{
  width:52px;height:52px;border-radius:50%;
  border:1px dashed var(--thread);display:grid;place-items:center;color:var(--thread);
}
.empty h3{font-size:1.5rem}
.empty p{color:var(--slate);max-width:38ch;margin:0}

/* --------------------------------------------------------------- forms --- */

.field{display:flex;flex-direction:column;gap:.4rem;margin-bottom:1rem}
.field label{font-size:var(--fs-xs);letter-spacing:.15em;text-transform:uppercase;color:var(--slate)}
.field .req{color:var(--wine)}
.input,.select,.textarea{
  width:100%;min-height:50px;padding:.8rem .95rem;
  background:var(--paper);color:var(--ink);
  border:1px solid var(--calico-3);border-radius:var(--r);
  transition:border-color .25s var(--ease),box-shadow .25s var(--ease);
}
.textarea{min-height:110px;resize:vertical}
.select{
  appearance:none;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%236E7A86' stroke-width='1.4' fill='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 1rem center;padding-right:2.4rem;
}
.input:focus,.select:focus,.textarea:focus{outline:0;border-color:var(--ink);box-shadow:0 0 0 3px rgba(192,168,126,.25)}
.input[aria-invalid="true"],.select[aria-invalid="true"]{border-color:var(--err);box-shadow:0 0 0 3px rgba(154,42,42,.13)}
.field__error{font-size:var(--fs-xs);color:var(--err);letter-spacing:0;text-transform:none;min-height:1em}
.field__hint{font-size:var(--fs-xs);color:var(--slate);letter-spacing:0;text-transform:none}
.row2{display:grid;grid-template-columns:1fr;gap:0 1rem}

/* ---------------------------------------------------------- newsletter --- */

.news{display:grid;gap:2rem;align-items:center}
.news__form{display:flex;gap:.6rem;flex-wrap:wrap;margin-top:1.4rem}
.news__form .input{
  flex:1 1 220px;min-width:0;background:transparent;
  border:0;border-bottom:1px solid rgba(239,235,227,.4);
  border-radius:0;color:var(--calico);padding-inline:0;
}
.news__form .input::placeholder{color:#8B99A6}
.news__form .input:focus{box-shadow:none;border-bottom-color:var(--thread)}
.news__note{font-size:var(--fs-xs);color:#8B99A6;margin:.9rem 0 0}

/* -------------------------------------------------------------- footer --- */

.footer{background:var(--ink);color:#A9B6C2;padding-block:clamp(2.8rem,6vw,4.5rem) 0}
.footer a{color:#A9B6C2;transition:color .25s var(--ease)}
.footer a:hover{color:var(--paper)}
.footer__grid{display:grid;gap:2.2rem;grid-template-columns:1fr}
.footer h4{
  font-family:var(--body);font-size:var(--fs-xs);letter-spacing:.2em;
  text-transform:uppercase;color:var(--thread-dim);margin-bottom:1rem;font-weight:500;
}
.footer ul{list-style:none;margin:0;padding:0;display:grid;gap:.6rem;font-size:var(--fs-sm)}
.footer__brand .brand__type{color:var(--paper);font-size:1.6rem}
.footer__bar{
  margin-top:2.8rem;padding:1.3rem 0 calc(1.3rem + env(safe-area-inset-bottom));
  border-top:1px solid rgba(169,182,194,.18);
  display:flex;gap:.8rem;justify-content:space-between;flex-wrap:wrap;
  font-size:var(--fs-xs);letter-spacing:.08em;
}

/* ------------------------------------------------------------ whatsapp --- */

.wa{
  position:fixed;z-index:70;right:14px;
  bottom:calc(14px + env(safe-area-inset-bottom) + var(--fab-lift,0px));
  width:54px;height:54px;border-radius:50%;
  background:#1FAF54;color:#fff;
  display:grid;place-items:center;
  box-shadow:0 10px 26px -8px rgba(31,175,84,.7);
  transition:transform .3s var(--ease),box-shadow .3s var(--ease),bottom .35s var(--ease);
}
.wa:hover{transform:scale(1.07)}
.wa svg{width:27px;height:27px;fill:currentColor;stroke:none}
.wa__pulse{position:absolute;inset:0;border-radius:50%;border:2px solid #1FAF54;animation:pulse 2.6s infinite}
@keyframes pulse{0%{transform:scale(1);opacity:.6}70%{transform:scale(1.5);opacity:0}100%{opacity:0}}

/* --------------------------------------------------------------- utils --- */

.sr-only{
  position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;
}
.skip{
  position:absolute;left:50%;transform:translate(-50%,-140%);z-index:200;
  background:var(--ink);color:var(--calico);padding:.7rem 1.2rem;
  transition:transform .25s var(--ease);
}
.skip:focus{transform:translate(-50%,0)}

/* Content is visible by default. Only a JS-capable browser gets the
   entrance animation, so a failed script never blanks the page. */
.js .reveal{opacity:0;transform:translateY(18px)}
.js .reveal.is-in{opacity:1;transform:none;transition:opacity .75s var(--ease),transform .75s var(--ease)}

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

.center{text-align:center}
.mt-0{margin-top:0}
.hide{display:none!important}

/* ======================================================= breakpoints ===== */

@media (min-width:600px){
  .grid--3{grid-template-columns:repeat(3,1fr)}
  .grid--2{grid-template-columns:repeat(2,1fr)}
  .row2{grid-template-columns:1fr 1fr}
}

@media (min-width:900px){
  :root{--header-h:76px}
  .grid--4{grid-template-columns:repeat(3,1fr)}
  .footer__grid{grid-template-columns:1.5fr 1fr 1fr 1fr}
  .news{grid-template-columns:1fr 1fr;gap:3.5rem}
}

@media (min-width:1100px){
  .grid--4{grid-template-columns:repeat(4,1fr)}
}

/* Below 1024 the desktop nav folds into the drawer */
@media (max-width:1023px){
  .nav,.header__desktop-only{display:none}
  .burger{display:inline-flex}
  .header__inner{grid-template-columns:auto 1fr auto}
  .brand{justify-self:center}
}

@media (min-width:1024px){
  .header__inner{grid-template-columns:1fr auto 1fr}
  .header__nav-wrap{justify-self:start}
}

@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.01ms!important;animation-iteration-count:1!important;
    transition-duration:.01ms!important;scroll-behavior:auto!important;
  }
  .reveal{opacity:1;transform:none}
}
