/* ==========================================================================
   A1J — stylesheet
   Palette is cool throughout: porcelain, ink, and the A1J blue from the mark.
   Breeze and Aura each get one colour. Gold appears only as a hairline.
   ========================================================================== */

:root{
  --ink:        #0C1330;
  --ink-70:     rgba(12,19,48,.70);
  --ink-45:     rgba(12,19,48,.45);
  --ink-12:     rgba(12,19,48,.12);
  --blue:       #1F35BE;
  --porcelain:  #F2F4F8;
  --white:      #FFFFFF;
  --breeze:     #2FB6A8;
  --aura:       #6B2D5C;
  --gold:       #C9A227;

  --shell:      min(1180px, 100% - 3rem);
  --gap:        clamp(5rem, 11vw, 9.5rem);
  --radius:     2px;

  --display:    'Bodoni Moda', Georgia, serif;
  --body:       'Jost', system-ui, -apple-system, sans-serif;
}

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

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

body{
  margin:0;
  background:var(--porcelain);
  color:var(--ink);
  font-family:var(--body);
  font-weight:300;
  font-size:clamp(1rem,.95rem + .25vw,1.125rem);
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
}

img{ max-width:100%; display:block; height:auto; }
a{ color:inherit; }

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

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

.display{
  font-size:clamp(3.2rem,9.5vw,8.2rem);
  line-height:.94;
  letter-spacing:-.02em;
}
.display em{ font-style:italic; }

h2{ font-size:clamp(2.1rem,4.6vw,3.6rem); line-height:1.05; }
h3{ font-size:clamp(1.35rem,2vw,1.7rem); }

p{ margin:0 0 1.15em; max-width:62ch; }
.lede{ font-size:clamp(1.1rem,1rem + .5vw,1.35rem); color:var(--ink-70); max-width:52ch; }

.eyebrow{
  font-family:var(--body);
  font-size:.72rem;
  font-weight:400;
  letter-spacing:.22em;
  text-transform:uppercase;
  color:var(--ink-45);
  margin:0 0 1.4rem;
  display:block;
}

.muted{ color:var(--ink-70); }
.small{ font-size:.85rem; line-height:1.65; }

/* --- shell / sections ---------------------------------------------------- */

.shell{ width:var(--shell); margin-inline:auto; }
.section{ padding-block:var(--gap); }
.section--tight{ padding-block:clamp(3rem,6vw,5rem); }
.section--ink{ background:var(--ink); color:var(--porcelain); }
.section--ink .eyebrow{ color:rgba(242,244,248,.45); }
.section--ink .lede,.section--ink .muted{ color:rgba(242,244,248,.72); }
.section--white{ background:var(--white); }

/* --- the breeze rule: the three strokes from the mark, used as a divider -- */

.rule{ display:block; width:74px; height:26px; margin:2.2rem 0; overflow:visible; }
.rule path{ fill:none; stroke:var(--blue); stroke-width:3.4; stroke-linecap:round; }
.section--ink .rule path{ stroke:var(--porcelain); }
.rule--breeze path{ stroke:var(--breeze); }
.rule--aura path{ stroke:var(--gold); }
.rule--center{ margin-inline:auto; }

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

.masthead{
  position:sticky; top:0; z-index:50;
  background:rgba(242,244,248,.88);
  backdrop-filter:blur(12px);
  border-bottom:1px solid var(--ink-12);
}
.masthead__in{
  width:var(--shell); margin-inline:auto;
  display:flex; align-items:center; justify-content:space-between;
  gap:1.5rem; min-height:78px;
}
.brand{ display:flex; align-items:center; gap:.7rem; text-decoration:none; }
.brand img{ width:40px; height:40px; border-radius:50%; }
.brand__word{
  font-family:var(--display); font-size:1.4rem; letter-spacing:.02em;
}

.nav{ display:flex; align-items:center; gap:clamp(1.1rem,2.4vw,2.2rem); }
.nav a{
  text-decoration:none; font-size:.82rem; letter-spacing:.14em;
  text-transform:uppercase; color:var(--ink-70);
  padding-block:.4rem; border-bottom:1px solid transparent;
  transition:color .25s, border-color .25s;
}
.nav a:hover,.nav a[aria-current="page"]{ color:var(--ink); border-color:var(--blue); }

.nav__toggle{
  display:none; background:none; border:0; cursor:pointer;
  padding:.5rem; color:var(--ink);
}
.nav__toggle svg{ width:26px; height:26px; }

/* --- hero ---------------------------------------------------------------- */

.hero{ position:relative; overflow:hidden; padding-block:clamp(4.5rem,13vh,9rem) clamp(3rem,7vw,5rem); }

/* the diffusion bloom — scent dispersing from a point */
.bloom{
  position:absolute; inset:auto -18% -55% auto;
  width:min(74vw,860px); aspect-ratio:1; border-radius:50%;
  background:radial-gradient(circle at 50% 50%,
              rgba(47,182,168,.42) 0%,
              rgba(31,53,190,.22) 38%,
              rgba(31,53,190,0) 68%);
  filter:blur(14px);
  animation:breathe 13s ease-in-out infinite;
  pointer-events:none;
}
@keyframes breathe{
  0%,100%{ transform:scale(1) translate(0,0); opacity:.85; }
  50%    { transform:scale(1.13) translate(-2%,-3%); opacity:1; }
}

.hero__in{ position:relative; z-index:1; }
.hero .display{ max-width:14ch; }
.hero .lede{ margin-top:1.6rem; }

/* --- staggered load ------------------------------------------------------ */

.rise{ opacity:0; transform:translateY(20px); animation:rise .95s cubic-bezier(.2,.7,.3,1) forwards; }
.rise:nth-child(1){ animation-delay:.05s }
.rise:nth-child(2){ animation-delay:.16s }
.rise:nth-child(3){ animation-delay:.27s }
.rise:nth-child(4){ animation-delay:.38s }
@keyframes rise{ to{ opacity:1; transform:none; } }

/* --- the signature: fragrance-life curve --------------------------------- */

.curve{ width:100%; height:auto; overflow:visible; }
.curve .grid{ stroke:rgba(242,244,248,.14); stroke-width:1; }
.curve .axis{ stroke:rgba(242,244,248,.34); stroke-width:1; }
.curve text{
  font-family:var(--body); font-size:12px; letter-spacing:.12em;
  text-transform:uppercase; fill:rgba(242,244,248,.5);
}
.curve .line{ fill:none; stroke-width:2.6; stroke-linecap:round; }
.curve .line--typical{ stroke:rgba(242,244,248,.42); stroke-dasharray:5 6; }
.curve .line--a1j{ stroke:var(--breeze); }
.curve .draw{ stroke-dasharray:var(--len); stroke-dashoffset:var(--len); }
.is-drawn .draw{ transition:stroke-dashoffset 2.1s cubic-bezier(.4,.1,.2,1); stroke-dashoffset:0; }
.is-drawn .line--a1j{ transition-delay:.45s; }

.legend{ display:flex; flex-wrap:wrap; gap:1.6rem; margin-top:2rem; padding:0; list-style:none; }
.legend li{ display:flex; align-items:center; gap:.6rem; font-size:.85rem; color:rgba(242,244,248,.72); }
.legend i{ width:26px; height:0; border-top:2.6px solid; border-radius:2px; }

/* --- tier panels --------------------------------------------------------- */

.tiers{ display:grid; grid-template-columns:1fr 1fr; gap:1px; background:var(--ink-12); }
.tier{
  background:var(--white); padding:clamp(2.4rem,4.5vw,4rem);
  display:flex; flex-direction:column; gap:.4rem;
  text-decoration:none; position:relative; overflow:hidden;
  transition:background .4s;
}
.tier::after{
  content:''; position:absolute; left:0; right:0; bottom:0; height:3px;
  background:var(--accent); transform:scaleX(0); transform-origin:left;
  transition:transform .5s cubic-bezier(.2,.7,.3,1);
}
.tier:hover::after,.tier:focus-visible::after{ transform:scaleX(1); }
.tier--breeze{ --accent:var(--breeze); }
.tier--aura{ --accent:var(--aura); }
.tier__name{ font-family:var(--display); font-size:clamp(2rem,3.6vw,2.9rem); line-height:1; }
.tier__tag{ font-style:italic; font-family:var(--display); color:var(--ink-70); font-size:1.15rem; margin-bottom:1.2rem; }
.tier__more{
  margin-top:auto; padding-top:1.8rem; font-size:.78rem;
  letter-spacing:.18em; text-transform:uppercase; color:var(--accent);
}

.panel{
  background:var(--white); border:1px solid var(--ink-12); border-radius:var(--radius);
  padding:clamp(1.2rem,2.5vw,2rem);
}

/* --- generic grid -------------------------------------------------------- */

.grid2{ display:grid; grid-template-columns:repeat(auto-fit,minmax(260px,1fr)); gap:clamp(2rem,4vw,3.5rem); }
.grid3{ display:grid; grid-template-columns:repeat(auto-fit,minmax(220px,1fr)); gap:clamp(2rem,3.5vw,3rem); }
.split{ display:grid; grid-template-columns:minmax(0,.85fr) minmax(0,1.15fr); gap:clamp(2.5rem,6vw,6rem); align-items:start; }

.numbered{ counter-reset:n; list-style:none; padding:0; margin:0; }
.numbered li{ counter-increment:n; padding:1.5rem 0; border-top:1px solid var(--ink-12); display:grid; grid-template-columns:3.2rem 1fr; gap:1rem; }
.numbered li::before{
  content:counter(n,decimal-leading-zero);
  font-family:var(--display); font-size:1.05rem; color:var(--blue);
}
.numbered strong{ font-weight:500; display:block; }

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

.btn{
  display:inline-block; text-decoration:none; cursor:pointer;
  font-family:var(--body); font-size:.8rem; font-weight:400;
  letter-spacing:.18em; text-transform:uppercase;
  padding:1.05rem 2.4rem; border:1px solid var(--ink); border-radius:var(--radius);
  background:var(--ink); color:var(--porcelain);
  transition:background .3s, color .3s, border-color .3s;
}
.btn:hover{ background:var(--blue); border-color:var(--blue); }
.btn--ghost{ background:transparent; color:var(--ink); }
.btn--ghost:hover{ background:var(--ink); color:var(--porcelain); border-color:var(--ink); }

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

.form{ display:grid; gap:1.5rem; max-width:560px; }
.field{ display:grid; gap:.5rem; }
.field label{ font-size:.75rem; letter-spacing:.16em; text-transform:uppercase; color:var(--ink-70); }
.field input,.field textarea,.field select{
  font-family:var(--body); font-size:1rem; font-weight:300; color:var(--ink);
  background:var(--white); border:1px solid var(--ink-12); border-radius:var(--radius);
  padding:.95rem 1.05rem; width:100%;
  transition:border-color .25s, box-shadow .25s;
}
.field textarea{ min-height:150px; resize:vertical; }
.field input:focus,.field textarea:focus,.field select:focus{
  outline:none; border-color:var(--blue); box-shadow:0 0 0 3px rgba(31,53,190,.12);
}
.hp{ position:absolute; left:-9999px; width:1px; height:1px; overflow:hidden; }

.note{
  padding:1.1rem 1.3rem; border-radius:var(--radius); font-size:.92rem;
  border-left:3px solid; margin-bottom:2rem; max-width:560px;
}
.note--ok{ background:rgba(47,182,168,.10); border-color:var(--breeze); }
.note--bad{ background:rgba(107,45,92,.09); border-color:var(--aura); }

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

.foot{ background:var(--ink); color:rgba(242,244,248,.7); padding-block:clamp(3.5rem,7vw,5.5rem) 2.5rem; font-size:.9rem; }
.foot a{ color:rgba(242,244,248,.7); text-decoration:none; transition:color .25s; }
.foot a:hover{ color:var(--white); }
.foot h4{
  font-family:var(--body); font-size:.72rem; letter-spacing:.2em; text-transform:uppercase;
  color:rgba(242,244,248,.42); margin:0 0 1.1rem; font-weight:400;
}
.foot ul{ list-style:none; padding:0; margin:0; display:grid; gap:.6rem; }
.foot__base{
  margin-top:3.5rem; padding-top:1.8rem; border-top:1px solid rgba(242,244,248,.14);
  display:flex; flex-wrap:wrap; gap:1rem; justify-content:space-between;
  font-size:.8rem; color:rgba(242,244,248,.45);
}

/* --- prose (legal pages) ------------------------------------------------- */

.prose{ max-width:70ch; }
.prose h2{ font-size:clamp(1.5rem,2.4vw,2rem); margin:3rem 0 1rem; }
.prose h2:first-of-type{ margin-top:0; }
.prose ul{ padding-left:1.2rem; }
.prose li{ margin-bottom:.5rem; }

/* --- accessibility + responsive ------------------------------------------ */

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

.skip{
  position:absolute; left:-9999px; background:var(--ink); color:var(--porcelain);
  padding:.8rem 1.2rem; z-index:100;
}
.skip:focus{ left:1rem; top:1rem; }

@media (max-width:860px){
  .split{ grid-template-columns:1fr; }
  .tiers{ grid-template-columns:1fr; }
  .nav{
    position:fixed; inset:78px 0 auto 0; background:var(--porcelain);
    flex-direction:column; align-items:flex-start; gap:0;
    padding:1rem 1.5rem 2rem; border-bottom:1px solid var(--ink-12);
    transform:translateY(-120%); transition:transform .35s cubic-bezier(.2,.7,.3,1);
  }
  .nav[data-open="true"]{ transform:none; }
  .nav a{ width:100%; padding-block:.9rem; font-size:.95rem; }
  .nav__toggle{ display:block; }
}

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