/* ============================================================
   ПАПОРОТНИК — флористическая студия. Ботанический атлас.
   Бумага-крем, папоротниковая зелень, перо и гербарий.
   ============================================================ */
:root{
  --paper:#f4f1e8;
  --paper-2:#efe9db;
  --ink:#243024;
  --fern:#5f7a55;
  --fern-soft:#8aa77e;
  --rose:#d5a6a0;
  --line:rgba(36,48,36,.22);
  --display:'EB Garamond',Georgia,serif;
  --hand:'Caveat',cursive;
  --ui:'Golos Text',system-ui,sans-serif;
  --ease-leaf:cubic-bezier(.25,.8,.35,1);
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  background:var(--paper);color:var(--ink);
  font-family:var(--display);font-size:17px;line-height:1.75;
  overflow-x:hidden;position:relative;
  background-image:
    radial-gradient(rgba(36,48,36,.028) 1px,transparent 1px);
  background-size:26px 26px;
}
img{display:block;max-width:100%}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
:focus-visible{outline:2px solid var(--fern);outline-offset:3px}
::selection{background:var(--fern-soft);color:var(--paper)}

.sheet{max-width:1120px;margin:0 auto;padding:0 clamp(1.2rem,4vw,2.6rem)}
section{position:relative;padding:clamp(4rem,8vw,6.5rem) 0}
.hand{font-family:var(--hand);font-size:1.35em;line-height:1.3;color:var(--fern);font-weight:400}

/* ---------- layered leaves (parallax) ---------- */
.leaves{position:absolute;inset:0;height:100%;z-index:0;pointer-events:none;overflow:hidden}
.leaf{position:absolute;display:block;width:clamp(90px,10vw,150px);opacity:.14}
.leaf svg{width:100%;height:auto;display:block;fill:none;stroke:var(--fern);stroke-width:5;stroke-linecap:round}
.lv1{top:14%;left:-3%;transform:rotate(24deg)}
.lv2{top:52%;right:-4%;transform:rotate(-158deg)}
.lv3{top:84%;left:4%;transform:rotate(8deg)}

/* ---------- topbar ---------- */
.topbar{
  position:sticky;top:0;z-index:50;
  display:flex;align-items:center;gap:2rem;
  padding:.9rem clamp(1.2rem,4vw,2.6rem);
  background:rgba(244,241,232,.92);
  backdrop-filter:blur(6px);
  border-bottom:1px solid transparent;
  transition:border-color .3s,transform .45s var(--ease-leaf),opacity .35s,visibility .45s;
}
.topbar.away{transform:translateY(-100%);opacity:0;visibility:hidden}
.topbar.scrolled{border-bottom-color:var(--line)}
.brand{display:flex;align-items:center;gap:.65rem;margin-right:auto}
.brand-sprig{width:22px;height:22px;fill:none;stroke:var(--fern);stroke-width:1.6;stroke-linecap:round;transition:transform .5s var(--ease-leaf)}
.brand:hover .brand-sprig{transform:rotate(-14deg)}
.brand-name{
  font-family:var(--display);font-weight:500;font-size:1.28rem;
  letter-spacing:.34em;text-transform:lowercase;font-variant:small-caps;
}
.mainnav{display:flex;gap:1.7rem}
.mainnav a{
  font-family:var(--ui);font-size:.74rem;font-weight:400;letter-spacing:.14em;text-transform:uppercase;
  color:rgba(36,48,36,.62);padding:.3rem 0;position:relative;transition:color .25s;
}
.mainnav a::after{
  content:"";position:absolute;left:10%;right:100%;bottom:0;height:1px;background:var(--fern);
  transition:right .35s var(--ease-leaf);
}
.mainnav a:hover,.mainnav a:focus-visible{color:var(--ink)}
.mainnav a:hover::after{right:10%}
.cta{
  display:inline-block;font-family:var(--ui);font-weight:600;font-size:.72rem;
  letter-spacing:.16em;text-transform:uppercase;
  color:var(--ink);border:1px solid var(--fern);background:transparent;
  padding:.7rem 1.5rem;border-radius:2px;
  transition:background .3s,color .3s,box-shadow .3s;
}
.cta:hover{background:var(--fern);color:var(--paper);box-shadow:0 10px 22px -12px rgba(36,48,36,.5)}
.cta-full{width:100%;text-align:center}

/* ---------- headings ---------- */
.tab-label{
  font-family:var(--ui);font-size:.7rem;font-weight:600;letter-spacing:.3em;text-transform:uppercase;
  color:var(--fern);margin-bottom:1.4rem;
}
.tab-label::after{content:"";display:block;width:2.6rem;height:1px;background:var(--line);margin-top:.7rem}
h2{
  font-family:var(--display);font-weight:500;
  font-size:clamp(2.2rem,4.4vw,3.3rem);line-height:1.16;letter-spacing:.015em;
}
h2 em{font-style:italic;color:var(--fern)}
.sec-note{color:rgba(36,48,36,.66);max-width:56ch;margin-top:1.1rem;font-size:.98rem}

/* ---------- hero ---------- */
.hero{
  min-height:calc(100svh - 64px);display:grid;align-content:center;justify-items:center;
  text-align:center;position:relative;padding:4rem 1.2rem 6rem;
}
.hero .tab-label{margin-bottom:2rem}
.hero .tab-label::after{display:none}
h1{
  font-family:var(--display);font-weight:500;
  font-size:clamp(3.6rem,10vw,7.5rem);line-height:1;letter-spacing:.06em;
}
.hero-sub{
  font-family:var(--ui);font-size:clamp(.8rem,1.6vw,1rem);font-weight:400;
  letter-spacing:.42em;text-transform:uppercase;color:var(--fern);margin-top:1.4rem;
}
.cursor-dot{color:var(--rose)}
.lede{max-width:46ch;color:rgba(36,48,36,.66);margin-top:1.8rem;font-size:1.02rem}
.hero-plate{margin-top:2.6rem;width:min(420px,80vw)}
.hero-plate svg{width:100%;height:auto}
.hero-plate figcaption{margin-top:.6rem}
.hero-scroll{
  position:absolute;bottom:1.6rem;left:50%;transform:translateX(-50%);
  font-family:var(--ui);font-size:.66rem;letter-spacing:.3em;text-transform:uppercase;color:rgba(36,48,36,.5);
  display:flex;flex-direction:column;align-items:center;gap:.7rem;
}
.hero-scroll .line{width:1px;height:44px;background:linear-gradient(var(--fern),transparent);animation:drop-line 2.6s ease-in-out infinite}
@keyframes drop-line{0%{transform:scaleY(.2);transform-origin:top}50%{transform:scaleY(1)}100%{transform:scaleY(.2);transform-origin:bottom}}

/* fern line art */
.draw path{fill:none;stroke:var(--fern);stroke-width:2.4;stroke-linecap:round;stroke-dasharray:var(--len,1200);stroke-dashoffset:var(--len,1200)}
.draw.in path{stroke-dashoffset:0;transition:stroke-dashoffset var(--dur,2.6s) ease-in-out}
.draw.in path:nth-child(2n){transition-delay:.12s}
.draw.in path:nth-child(3n){transition-delay:.24s}

/* ---------- rule-leaf divider (signature transition) ---------- */
.rule-leaf{height:24px;max-width:1120px;margin:0 auto;padding:0 clamp(1.2rem,4vw,2.6rem);position:relative;z-index:1}
.rule-leaf svg{width:100%;height:24px;display:block}
.rule-leaf .draw-line{fill:none;stroke:var(--line);stroke-width:1;stroke-dasharray:260;stroke-dashoffset:260}
.rule-leaf .draw-leafmini{fill:none;stroke:var(--fern);stroke-width:1.4;stroke-dasharray:120;stroke-dashoffset:120}
.rule-leaf.in .draw-line{stroke-dashoffset:0;transition:stroke-dashoffset 1.1s ease}
.rule-leaf.in .draw-leafmini{stroke-dashoffset:0;transition:stroke-dashoffset .8s ease .5s}

/* ---------- studio ---------- */
.studio-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2.4rem,6vw,4.5rem);align-items:start;margin-top:.8rem}
.studio-text p{margin-top:1.2rem;color:rgba(36,48,36,.8);max-width:52ch}
.studio-text .hand{display:block;margin-top:1.8rem;transform:rotate(-1.2deg)}
.plate-frame{
  aspect-ratio:4/5;border:1px solid var(--line);background:var(--paper-2);
  padding:10px;box-shadow:0 24px 44px -28px rgba(36,48,36,.4);
  transition:transform .5s var(--ease-leaf);
}
.plate-frame:hover{transform:rotate(-.8deg) translateY(-4px)}
.plate-frame img{width:100%;height:100%;object-fit:cover;filter:saturate(.9)}
.studio-media figcaption{margin-top:.9rem;text-align:center}

/* ---------- bouquets ---------- */
.bouquet-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.6rem;margin-top:2.6rem}
.bouquet-card{
  border:1px solid var(--line);background:rgba(255,253,246,.6);
  display:flex;flex-direction:column;
  transition:transform .5s var(--ease-leaf),box-shadow .5s,border-color .4s;
}
.bouquet-card.turn:hover{transform:rotate(.9deg) translateY(-5px);box-shadow:0 26px 40px -26px rgba(36,48,36,.45);border-color:var(--fern)}
.bq-media{aspect-ratio:16/10;background:linear-gradient(140deg,var(--paper-2),var(--fern-soft));overflow:hidden}
.bq-media img{width:100%;height:100%;object-fit:cover;transition:transform .8s var(--ease-leaf)}
.bouquet-card:hover .bq-media img{transform:scale(1.05)}
.bq-body{padding:1.6rem 1.7rem 1.4rem;display:flex;flex-direction:column;gap:.5rem;flex:1}
.bq-body h3{font-family:var(--display);font-weight:500;font-size:1.55rem;letter-spacing:.03em}
.bq-latin{font-style:italic;color:var(--fern);font-size:.95rem;margin-top:-.2rem}
.bq-list{list-style:none;display:flex;flex-wrap:wrap;gap:.3rem .9rem;margin-top:.8rem;font-family:var(--ui);font-size:.78rem;color:rgba(36,48,36,.62)}
.bq-list li{border-bottom:1px dotted var(--line);padding-bottom:.15rem}
.bq-foot{margin-top:auto;padding-top:1.1rem;display:flex;justify-content:space-between;align-items:baseline;gap:1rem;border-top:1px solid var(--line)}
.bq-foot b{font-size:1.3rem;font-weight:500;letter-spacing:.03em}
.bq-foot span{font-family:var(--ui);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--rose)}
.bouquet-feature{grid-column:1/-1;flex-direction:row;align-items:stretch}
.bouquet-feature .bq-media{width:44%;aspect-ratio:auto;flex:none;min-height:260px}
.bouquet-feature .bq-body{flex:1;justify-content:center;gap:.6rem;padding:1.9rem 2.2rem}
.bouquet-feature .bq-body h3{font-size:1.85rem}
.bouquet-feature .bq-foot{margin-top:1.1rem}

/* ---------- builder ---------- */
.builder{background:var(--paper-2)}
.builder-grid{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(2rem,5vw,3.6rem);margin-top:2.4rem;align-items:start}
fieldset{border:0}
legend{
  font-family:var(--ui);font-size:.72rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase;
  color:var(--fern);padding-bottom:.9rem;
}
.palette-set{margin-bottom:2.2rem}
.palette-opt{
  display:flex;align-items:center;gap:1.1rem;cursor:pointer;
  border:1px solid var(--line);background:rgba(255,253,246,.55);
  padding:.9rem 1.1rem;margin-bottom:.8rem;border-radius:3px;
  transition:border-color .3s,box-shadow .3s,transform .3s var(--ease-leaf);
}
.palette-opt:hover{transform:translateY(-2px)}
.palette-opt input{position:absolute;opacity:0;width:1px;height:1px}
.palette-opt:has(input:checked){border-color:var(--fern);box-shadow:0 0 0 1px var(--fern)}
.palette-opt:has(input:focus-visible){outline:2px solid var(--fern);outline-offset:2px}
.swatches{display:flex;gap:.3rem;flex:0 0 auto}
.swatches i{width:22px;height:22px;border-radius:50%;background:var(--sw);border:1px solid rgba(36,48,36,.18)}
.palette-name{font-size:1.06rem;display:flex;flex-direction:column;line-height:1.3}
.palette-name em{font-family:var(--ui);font-style:normal;font-size:.74rem;letter-spacing:.06em;color:rgba(36,48,36,.55)}
.stem-rows{border-top:1px solid var(--line)}
.stem-row{
  display:grid;grid-template-columns:1fr auto auto;align-items:center;gap:1.2rem;
  padding:.62rem .2rem;border-bottom:1px solid var(--line);
}
.stem-name{font-size:1.06rem}
.stem-price{font-family:var(--ui);font-size:.82rem;color:rgba(36,48,36,.6);white-space:nowrap}
.stepper{display:flex;align-items:center;gap:.5rem}
.stepper button{
  width:30px;height:30px;border:1px solid var(--fern);background:transparent;color:var(--fern);
  font-size:1rem;line-height:1;border-radius:50%;
  transition:background .25s,color .25s,transform .15s;
}
.stepper button:hover{background:var(--fern);color:var(--paper)}
.stepper button:active{transform:scale(.9)}
.st-count{min-width:1.6em;text-align:center;font-weight:500;font-size:1.05rem}
.builder-preview{
  position:sticky;top:96px;border:1px solid var(--line);background:rgba(255,253,246,.7);
  padding:1.8rem 1.6rem;border-radius:3px;text-align:center;
}
.bp-circle{
  width:190px;height:190px;margin:0 auto 1.2rem;border-radius:50%;position:relative;
  border:1px solid var(--fern);display:grid;place-items:center;overflow:hidden;
  background:radial-gradient(circle at 50% 62%,var(--bp1,rgba(138,167,126,.4)),var(--bp2,rgba(244,241,232,.2)) 70%);
  transition:background .6s;
}
.bp-circle svg{position:absolute;inset:12%;width:76%;height:76%}
.bp-circle path{stroke-width:1.8}
.bp-count{position:relative;font-family:var(--ui);font-size:.72rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(36,48,36,.6);background:rgba(255,253,246,.88);padding:.2rem .6rem;border-radius:2px}
.bp-palette{font-style:italic;color:var(--fern);margin-bottom:.9rem}
.bp-list{list-style:none;font-family:var(--ui);font-size:.82rem;color:rgba(36,48,36,.7);display:grid;gap:.3rem;min-height:1.2rem;margin-bottom:1rem;text-align:left}
.bp-list li{display:flex;justify-content:space-between;gap:.8rem;border-bottom:1px dotted var(--line);padding-bottom:.2rem}
.bp-total{display:flex;justify-content:space-between;align-items:baseline;border-top:1px solid var(--ink);padding-top:.9rem;margin-bottom:1.2rem}
.bp-total span{font-family:var(--ui);font-size:.72rem;letter-spacing:.08em;text-transform:uppercase;color:rgba(36,48,36,.6)}
.bp-total b{font-size:1.7rem;font-weight:500}
.cta-collect{width:100%;text-align:center}
.bp-note{font-family:var(--ui);font-size:.76rem;color:rgba(36,48,36,.55);margin-top:.8rem}
.bp-note.ok{color:var(--fern)}
.bp-note.err{color:#a4574e}

/* ---------- care ---------- */
.care-grid{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(2.4rem,6vw,4.5rem);align-items:start;margin-top:.6rem}
.care-list{margin-top:1.8rem;counter-reset:care;list-style:none}
.care-list li{
  counter-increment:care;position:relative;padding:0 0 1.1rem 3.2rem;margin-bottom:.4rem;
  color:rgba(36,48,36,.8);font-size:.98rem;
}
.care-list li::before{
  content:"0" counter(care);position:absolute;left:0;top:.1rem;
  font-family:var(--ui);font-size:.72rem;font-weight:600;letter-spacing:.12em;color:var(--fern);
}
.care-list b{font-weight:500;font-size:1.06rem}
.care-text .hand{display:block;margin-top:1.6rem;transform:rotate(-1deg)}
.care-side h3{font-family:var(--display);font-weight:500;font-size:1.4rem;letter-spacing:.04em;border-bottom:1px solid var(--line);padding-bottom:.6rem}
.farm-list{list-style:none;margin-top:1rem}
.farm-list li{display:grid;gap:.15rem;padding:.8rem 0;border-bottom:1px dotted var(--line)}
.farm-list b{font-weight:500;font-size:1.05rem}
.farm-list span{font-family:var(--ui);font-size:.8rem;color:rgba(36,48,36,.6)}
.sprig{width:min(220px,60%);height:auto;margin-top:1.6rem;display:block}

/* ---------- classes ---------- */
.class-rows{margin-top:2.4rem;border-top:1px solid var(--line)}
.class-row{
  display:grid;grid-template-columns:8rem 1fr 9rem;gap:clamp(1.2rem,4vw,2.6rem);align-items:start;
  padding:1.8rem .4rem;border-bottom:1px solid var(--line);
  transition:transform .45s var(--ease-leaf),background .35s;
}
.class-row.turn:hover{transform:translateX(6px);background:rgba(138,167,126,.08)}
.cl-date{display:flex;flex-direction:column}
.cl-date b{font-size:1.5rem;font-weight:500;letter-spacing:.04em}
.cl-date span{font-family:var(--ui);font-size:.74rem;color:rgba(36,48,36,.55);margin-top:.2rem}
.cl-info h3{font-family:var(--display);font-weight:500;font-size:1.4rem;letter-spacing:.03em}
.cl-info p{color:rgba(36,48,36,.7);font-size:.95rem;max-width:56ch;margin-top:.3rem}
.cl-buy{text-align:right}
.cl-buy b{font-size:1.35rem;font-weight:500;display:block}
.cl-buy span{font-family:var(--ui);font-size:.72rem;letter-spacing:.1em;text-transform:uppercase;color:var(--rose)}

/* ---------- reviews ---------- */
.reviews{background:var(--paper-2)}
.review-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;margin-top:2.2rem}
.review{
  background:rgba(255,253,246,.75);border:1px solid var(--line);padding:1.8rem 1.6rem;
  display:flex;flex-direction:column;gap:1.2rem;position:relative;
  transition:transform .5s var(--ease-leaf),box-shadow .5s;
}
.review.turn:hover{transform:rotate(-.8deg) translateY(-5px);box-shadow:0 24px 38px -26px rgba(36,48,36,.4)}
.review::before{content:"❦";position:absolute;top:-14px;left:18px;background:var(--paper-2);padding:0 .4rem;color:var(--fern);font-size:1.2rem}
.review p{font-size:.98rem;color:rgba(36,48,36,.82)}
.review footer{
  margin-top:auto;display:flex;justify-content:space-between;gap:.8rem;
  border-top:1px dotted var(--line);padding-top:.9rem;
  font-family:var(--ui);font-size:.74rem;letter-spacing:.1em;text-transform:uppercase;color:rgba(36,48,36,.55);
}
.review cite{font-style:normal;font-weight:600;color:var(--ink)}

/* ---------- contact ---------- */
.contact-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2.4rem,6vw,4.5rem);align-items:start}
.info-list{list-style:none;margin-top:1.8rem;display:grid;gap:1.3rem}
.info-list span{
  display:block;font-family:var(--ui);font-size:.68rem;font-weight:600;letter-spacing:.28em;text-transform:uppercase;
  color:var(--fern);margin-bottom:.25rem;
}
.info-list b{font-weight:400;font-size:1.02rem;line-height:1.55}
.info-list a:hover{color:var(--fern)}
.contact-grid .hand{display:inline-block;margin-top:1.6rem;transform:rotate(-1.4deg)}
.order{
  border:1px solid var(--line);background:rgba(255,253,246,.7);padding:clamp(1.4rem,3vw,2rem);
  display:grid;gap:1.1rem;
}
.order h3{font-family:var(--display);font-weight:500;font-size:1.5rem;letter-spacing:.03em}
.order label{
  display:grid;gap:.35rem;
  font-family:var(--ui);font-size:.68rem;font-weight:600;letter-spacing:.24em;text-transform:uppercase;color:rgba(36,48,36,.55);
}
.order input,.order textarea{
  background:transparent;border:0;border-bottom:1px solid var(--line);
  padding:.55rem .1rem;font-size:1rem;font-family:var(--display);resize:vertical;border-radius:0;
  transition:border-color .25s;
}
.order input:focus,.order textarea:focus{outline:none;border-bottom-color:var(--fern)}
.order input.invalid{border-bottom-color:#a4574e}
.form-note{font-family:var(--ui);font-size:.78rem;color:rgba(36,48,36,.55)}
.form-note.ok{color:var(--fern)}
.form-note.err{color:#a4574e}

/* ---------- footer ---------- */
.foot{border-top:1px solid var(--line);padding:2.4rem 0 2.6rem;position:relative;z-index:1}
.foot-inner{display:grid;gap:1.1rem;justify-items:start}
.foot .brand-name{font-size:1.4rem}
.footnav{display:flex;gap:1.5rem;flex-wrap:wrap}
.footnav a{
  font-family:var(--ui);font-size:.72rem;font-weight:400;letter-spacing:.18em;text-transform:uppercase;
  color:rgba(36,48,36,.55);transition:color .25s;
}
.footnav a:hover{color:var(--fern)}
.fine{font-family:var(--ui);font-size:.76rem;color:rgba(36,48,36,.45)}

/* ---------- reveal ---------- */
.reveal{opacity:0;transform:translateY(22px);transition:opacity .8s var(--ease-leaf),transform .8s var(--ease-leaf)}
.reveal.in{opacity:1;transform:none}

/* ---------- responsive ---------- */
@media (max-width:1024px){
  .mainnav{display:none}
  .studio-grid,.builder-grid,.care-grid,.contact-grid{grid-template-columns:1fr}
  .builder-preview{position:static}
  .review-grid{grid-template-columns:1fr 1fr}
  .review:last-child{grid-column:span 2}
}
@media (max-width:760px){
  body{font-size:16px}
  .topbar .cta{display:none}
  .brand-name{font-size:1.05rem;letter-spacing:.2em}
  .bouquet-grid{grid-template-columns:1fr}
  .bouquet-feature{flex-direction:column}
  .bouquet-feature .bq-media{width:100%;aspect-ratio:16/10;min-height:0}
  .bouquet-feature .bq-body{padding:1.6rem 1.7rem 1.4rem;gap:.5rem}
  .bouquet-feature .bq-body h3{font-size:1.55rem}
  .review-grid{grid-template-columns:1fr}
  .review:last-child{grid-column:span 1}
  .class-row{grid-template-columns:1fr;gap:.8rem}
  .cl-buy{text-align:left;display:flex;align-items:baseline;gap:1rem}
  .stem-row{gap:.7rem}
  .hero-sub{letter-spacing:.3em}
}

/* ---------- reduced motion ---------- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001s !important;animation-iteration-count:1 !important;transition-duration:.001s !important}
  .reveal{opacity:1;transform:none}
  .draw path{stroke-dashoffset:0}
  .rule-leaf .draw-line,.rule-leaf .draw-leafmini{stroke-dashoffset:0}
  .leaves{display:none}
}
