/* ═══════════════════════════════════════════
   LILIUM — florist & house plants template
   High-fashion editorial. Oversized didone
   wordmark bleeding off-canvas, a cut-out lily
   laid over the type, lowercase grotesque
   labels, split category links, a framed
   canvas floating on espresso.
   ═══════════════════════════════════════════ */

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

:root{
  --espresso:#171D13;    /* deep forest surround & dark bands */
  --canvas:#DFE3D0;      /* soft sage page canvas */
  --canvas-2:#D1D8BB;    /* deeper sage panel */
  --ink:#141810;         /* near-black type */
  --soft:rgba(20,24,16,.62);
  --faint:rgba(20,24,16,.38);
  --line:rgba(20,24,16,.16);
  --line-dk:rgba(223,227,208,.16);
  --rust:#8E3550;        /* berry accent (echoes the lily), used sparingly */
  --cream-dk:#DFE3D0;    /* text on forest */
  --disp:'Bodoni Moda',Didot,'Playfair Display',serif;
  --sans:'Archivo',Inter,system-ui,sans-serif;
}

html{scroll-behavior:smooth;}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto;}
  *,*::before,*::after{animation-duration:.01ms!important;transition-duration:.01ms!important;}
}

body{
  background:var(--espresso);color:var(--ink);
  font-family:var(--sans);font-weight:400;font-size:15.5px;line-height:1.8;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  padding:clamp(10px,1.6vw,26px);
}
img{display:block;width:100%;height:100%;object-fit:cover;}
a{color:inherit;text-decoration:none;}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;}

/* the floating canvas */
.frame{background:var(--canvas);position:relative;overflow:hidden;}

.wrap{max-width:1360px;margin:0 auto;padding:0 clamp(22px,4vw,56px);}

/* ── reveal ── */
.rv{opacity:1;transform:none;}
.js .rv{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.16,1,.3,1),transform .9s cubic-bezier(.16,1,.3,1);}
.js .rv.in{opacity:1;transform:none;}
.js .d1{transition-delay:.12s;}
.js .d2{transition-delay:.24s;}
.js .d3{transition-delay:.36s;}

/* ── NAV ── */
.nav{
  display:grid;grid-template-columns:1fr auto 1fr;align-items:center;
  padding:clamp(18px,2.4vw,30px) clamp(22px,4vw,56px);
}
.nav-l{display:flex;gap:clamp(18px,2.4vw,34px);}
.nav-l a,.nav-r a,.nav-r button{
  font-size:clamp(14px,1.05vw,17px);font-weight:400;letter-spacing:.01em;color:var(--ink);
  position:relative;
}
.nav-l a::after,.cart::after{
  content:'';position:absolute;left:0;bottom:-3px;width:100%;height:1px;background:var(--ink);
  transform:scaleX(0);transform-origin:right;transition:transform .34s cubic-bezier(.16,1,.3,1);
}
.nav-l a:hover::after,.cart:hover::after{transform:scaleX(1);transform-origin:left;}
.nav-logo{
  font-family:var(--disp);font-weight:500;font-size:clamp(17px,1.5vw,23px);
  letter-spacing:.32em;text-indent:.32em;text-transform:uppercase;text-align:center;
}
.nav-r{display:flex;justify-content:flex-end;align-items:center;gap:clamp(16px,2vw,26px);}
.nav-r .ig{width:21px;height:21px;opacity:.85;transition:opacity .2s;}
.nav-r .ig:hover{opacity:1;}
.nav-r .ig svg{width:100%;height:100%;fill:currentColor;}
.cart{position:relative;}
.cart .n{font-variant-numeric:tabular-nums;}
.cart.bump{animation:bump .45s cubic-bezier(.16,1,.3,1);}
@keyframes bump{0%{transform:scale(1);}35%{transform:scale(1.18);}100%{transform:scale(1);}}

/* ── HERO ── */
.hero{position:relative;padding-bottom:0;}
.hero-word{
  font-family:var(--disp);font-weight:400;color:var(--ink);
  font-size:clamp(96px,21.5vw,420px);line-height:.86;letter-spacing:.02em;
  text-transform:uppercase;text-align:center;white-space:nowrap;
  width:104%;margin-left:-2%;
  user-select:none;
}
.hero-stage{position:relative;min-height:clamp(300px,46vw,660px);margin-top:clamp(-200px,-11.5vw,-80px);}
.hero-flower{
  position:absolute;left:50%;bottom:0;transform:translateX(-50%);
  width:clamp(305px,45.5vw,680px);z-index:2;
}
.hero-flower img{width:100%;height:auto;object-fit:contain;filter:drop-shadow(0 30px 60px rgba(16,22,12,.2));}
.hero-cap{
  position:absolute;z-index:3;font-size:clamp(14px,1.15vw,18px);line-height:1.55;color:var(--ink);
  bottom:clamp(80px,38%,300px);
}
.hero-cap.l{left:clamp(22px,6vw,110px);text-align:center;}
.hero-cap.r{right:clamp(22px,6vw,110px);text-align:center;}

/* split category links */
.splits{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--ink);position:relative;z-index:4;}
.split{
  display:flex;justify-content:space-between;align-items:center;
  padding:clamp(20px,2.6vw,34px) clamp(22px,4vw,56px);
  font-size:clamp(16px,1.35vw,21px);color:var(--ink);
  transition:background .4s ease;position:relative;
}
.split + .split{border-left:1px solid var(--ink);}
.split .arr{transition:transform .34s cubic-bezier(.16,1,.3,1);}
.split:hover{background:var(--canvas-2);}
.split:hover .arr{transform:translateX(8px);}

/* ── MARQUEE ── */
.marq{background:var(--espresso);color:var(--cream-dk);overflow:hidden;padding:16px 0;border-top:1px solid var(--espresso);}
.marq-in{display:flex;width:max-content;animation:marq 36s linear infinite;}
.marq span{
  font-size:13px;letter-spacing:.22em;text-transform:uppercase;white-space:nowrap;
  padding-right:18px;opacity:.85;
}
.marq em{font-family:var(--disp);font-style:italic;text-transform:none;letter-spacing:.06em;font-size:14.5px;}
@keyframes marq{to{transform:translateX(-50%);}}

/* ── SECTIONS ── */
.sec{padding:clamp(70px,8.5vw,130px) 0;}
.label{
  display:block;font-size:12.5px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--faint);margin-bottom:18px;
}
h2{
  font-family:var(--disp);font-weight:450;color:var(--ink);
  font-size:clamp(32px,4vw,58px);line-height:1.04;letter-spacing:.005em;
}
h2 em{font-style:italic;font-weight:400;}

/* story */
.story{display:grid;grid-template-columns:1fr 1.05fr;gap:clamp(40px,6vw,100px);align-items:center;}
.story-img{height:clamp(360px,44vw,600px);overflow:hidden;}
.story-img img{transition:transform 1.2s cubic-bezier(.16,1,.3,1);}
.story-img:hover img{transform:scale(1.045);}
.story-txt p{margin-top:22px;color:var(--soft);max-width:52ch;}
.story-txt .sig{
  margin-top:30px;font-family:var(--disp);font-style:italic;font-size:19px;color:var(--ink);
}

/* shop */
.shop-head{
  display:flex;justify-content:space-between;align-items:baseline;gap:24px;
  border-bottom:1px solid var(--ink);padding-bottom:18px;margin-bottom:clamp(36px,4.5vw,60px);
}
.shop-head .note{font-size:13.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--faint);white-space:nowrap;}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,3vw,44px) clamp(20px,2.4vw,36px);}
.prod{display:block;position:relative;}
.prod-img{height:clamp(300px,30vw,430px);overflow:hidden;background:var(--canvas-2);position:relative;}
.prod-img img{transition:transform 1s cubic-bezier(.16,1,.3,1);}
.prod:hover .prod-img img{transform:scale(1.05);}
.prod-add{
  position:absolute;left:0;right:0;bottom:0;z-index:2;
  background:rgba(20,24,16,.88);color:var(--cream-dk);
  font-size:12.5px;letter-spacing:.2em;text-transform:uppercase;text-align:center;
  padding:14px 10px;opacity:0;transform:translateY(100%);
  transition:opacity .35s ease,transform .35s cubic-bezier(.16,1,.3,1);
}
.prod:hover .prod-add,.prod:focus-visible .prod-add{opacity:1;transform:none;}
.prod-meta{display:flex;justify-content:space-between;align-items:baseline;gap:14px;margin-top:16px;}
.prod-meta h3{font-family:var(--disp);font-weight:500;font-size:clamp(18px,1.5vw,23px);letter-spacing:.01em;}
.prod-meta .price{font-size:14px;color:var(--soft);white-space:nowrap;}
.prod .tag{
  position:absolute;top:14px;left:14px;z-index:2;background:var(--canvas);color:var(--ink);
  font-size:10.5px;letter-spacing:.18em;text-transform:uppercase;padding:6px 12px;
}

/* ── DARK SERVICES BAND ── */
.band{background:var(--espresso);color:var(--cream-dk);padding:clamp(80px,9vw,140px) 0;}
.band .label{color:rgba(233,214,192,.45);}
.band h2{color:var(--cream-dk);}
.svc{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(30px,4vw,60px);margin-top:clamp(44px,5vw,70px);}
.svc-i{border-top:1px solid var(--line-dk);padding-top:26px;}
.svc-i .no{font-family:var(--disp);font-style:italic;font-size:15px;color:rgba(233,214,192,.5);}
.svc-i h3{font-family:var(--disp);font-weight:450;font-size:clamp(21px,1.9vw,28px);margin:10px 0 12px;}
.svc-i p{font-size:14.5px;line-height:1.85;color:rgba(233,214,192,.68);max-width:38ch;}

/* ── QUOTE ── */
.quote{max-width:880px;margin:0 auto;text-align:center;}
.quote blockquote{
  font-family:var(--disp);font-weight:450;font-style:italic;
  font-size:clamp(24px,2.9vw,42px);line-height:1.28;color:var(--ink);
}
.quote cite{
  display:block;margin-top:26px;font-style:normal;font-size:12.5px;
  letter-spacing:.24em;text-transform:uppercase;color:var(--faint);
}

/* ── VISIT / ORDER ── */
.order{display:grid;grid-template-columns:1fr 1.1fr;gap:clamp(44px,6vw,100px);align-items:start;}
.order-info p.lede{margin-top:22px;color:var(--soft);max-width:50ch;}
.o-block{border-top:1px solid var(--line);padding:18px 0;margin-top:18px;display:grid;grid-template-columns:110px 1fr;gap:16px;}
.o-block .k{font-size:11.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--faint);padding-top:4px;}
.o-block .v{font-size:15px;line-height:1.75;color:var(--ink);}
.o-block .v a{border-bottom:1px solid var(--line);transition:border-color .2s;}
.o-block .v a:hover{border-color:var(--ink);}

.form-card{background:var(--canvas-2);padding:clamp(28px,3.4vw,48px);}
.field{margin-bottom:18px;}
.field label{
  display:block;font-size:11.5px;letter-spacing:.2em;text-transform:uppercase;
  color:var(--faint);margin-bottom:8px;
}
.field input,.field select,.field textarea{
  width:100%;background:transparent;border:none;border-bottom:1px solid var(--line);
  padding:10px 2px;font-family:var(--sans);font-size:15px;color:var(--ink);
  border-radius:0;transition:border-color .25s;
}
.field textarea{min-height:110px;resize:vertical;}
.field input:focus,.field select:focus,.field textarea:focus{outline:none;border-color:var(--ink);}
.field ::placeholder{color:var(--faint);}
.f-row{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.btn{
  display:inline-block;background:var(--ink);color:var(--canvas);
  font-size:12.5px;font-weight:500;letter-spacing:.22em;text-transform:uppercase;
  padding:17px 36px;transition:background .3s,color .3s;
}
.btn:hover{background:var(--rust);color:#F6EADD;}
.form-note{margin-top:14px;font-size:12.5px;color:var(--faint);}
.form-ok{text-align:center;padding:40px 10px;}
.form-ok .tick{width:52px;height:52px;margin:0 auto 18px;border:1px solid var(--ink);border-radius:50%;display:flex;align-items:center;justify-content:center;}
.form-ok .tick svg{width:22px;height:22px;stroke:var(--ink);stroke-width:2.4;}
.form-ok h3{font-family:var(--disp);font-weight:500;font-size:24px;margin-bottom:8px;}
.form-ok p{color:var(--soft);font-size:14.5px;}
.form-err{margin-top:12px;font-size:13.5px;color:#8E3550;}

/* ── FOOTER ── */
.foot{border-top:1px solid var(--ink);padding-top:clamp(40px,5vw,70px);}
.foot-cols{
  display:grid;grid-template-columns:1.4fr 1fr 1fr 1fr;gap:clamp(28px,4vw,60px);
  padding-bottom:clamp(44px,5.5vw,80px);
}
.foot-cols p,.foot-cols a{font-size:14px;line-height:2;color:var(--soft);display:block;}
.foot-cols a:hover{color:var(--ink);}
.foot-cols h5{font-size:11.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--ink);margin-bottom:12px;font-weight:500;}
.foot-blurb{max-width:30ch;}
.foot-word{
  font-family:var(--disp);font-weight:400;text-transform:uppercase;color:var(--ink);
  font-size:clamp(60px,12.5vw,190px);line-height:.82;letter-spacing:.015em;
  text-align:center;white-space:nowrap;opacity:.92;
  width:104%;margin-left:-2%;
  transform:translateY(clamp(10px,2vw,34px));
  user-select:none;
}
.foot-bot{
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  border-top:1px solid var(--line);padding:20px 0 14px;
  font-size:12px;letter-spacing:.08em;color:var(--faint);
}
.byline{padding:0 0 18px;font-size:12px;color:var(--faint);text-align:center;}
.byline a{border-bottom:1px solid var(--line);}
.byline a:hover{color:var(--ink);}

/* template badge */
.badge{
  position:fixed;left:18px;bottom:18px;z-index:60;background:var(--espresso);color:var(--cream-dk);
  font-family:var(--sans);font-size:12px;letter-spacing:.05em;padding:10px 16px;
  border:1px solid rgba(223,227,208,.25);opacity:.92;transition:opacity .2s;
}
.badge:hover{opacity:1;}

/* ── RESPONSIVE ── */
@media(max-width:980px){
  .grid{grid-template-columns:repeat(2,1fr);}
  .svc{grid-template-columns:1fr;gap:26px;}
  .story{grid-template-columns:1fr;gap:36px;}
  .order{grid-template-columns:1fr;gap:44px;}
}
@media(max-width:700px){
  .nav{grid-template-columns:auto 1fr;padding:18px 20px;}
  .nav-l{display:none;}
  .nav-logo{text-align:left;text-indent:0;}
  .hero-cap.l{display:none;}
  .hero-cap.r{right:16px;bottom:14px;text-align:right;}
  .hero-stage{min-height:clamp(300px,80vw,420px);margin-top:-18px;}
  .hero-flower{width:min(78vw,360px);}
  .splits{grid-template-columns:1fr;}
  .split + .split{border-left:none;border-top:1px solid var(--ink);}
  .grid{grid-template-columns:1fr;}
  .prod-img{height:clamp(300px,72vw,420px);}
  .f-row{grid-template-columns:1fr;gap:0;}
  .foot-cols{grid-template-columns:1fr 1fr;}
  .badge{left:12px;bottom:12px;font-size:11px;}
}
