:root{
  --bg:#faf8f3;--surface:#efebe4;--text:#4d4943;--muted:#817b72;--line:#ded9d0;
  --pad:clamp(22px,3.45vw,58px);--gap:clamp(12px,1.15vw,18px);
  --font:-apple-system,BlinkMacSystemFont,"Segoe UI",Arial,sans-serif;
}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:var(--font);font-size:12px;line-height:1.45;-webkit-font-smoothing:antialiased}button{font:inherit;color:inherit}
.site-header{height:64px;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:0 var(--pad);border-bottom:1px solid var(--line);background:var(--bg)}
.brand-mark{font-family:var(--font);font-weight:700;letter-spacing:-.035em;line-height:1;white-space:nowrap}.brand-mark--header{grid-column:2;font-size:17px}.language{grid-column:3;justify-self:end;font-size:10px;color:var(--muted);letter-spacing:.04em}
/* Short intro only: its right edge shares the page's right grid line with ООО «FORMULAB». */
.opening{height:116px;padding:28px var(--pad) 22px;display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--gap);align-items:end;border-bottom:1px solid var(--line)}
.intro-copy{grid-column:3/5;width:100%;margin:0;font-size:12px;line-height:1.55;color:var(--text)}
.collection{padding:34px var(--pad) 118px}.collection-topline{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap);align-items:end;margin:0 0 20px}.collection-head{grid-column:1/3;display:flex;flex-direction:column;align-items:flex-start;gap:5px;margin:0}.eyebrow{font-size:10px;line-height:1.25;letter-spacing:.035em;margin:0;color:var(--muted);font-weight:500}.collection-head h1{font-size:20px;line-height:1.12;letter-spacing:-.025em;font-weight:500;margin:0}
.product-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:var(--gap)}.product-item{min-width:0;display:grid;grid-template-rows:auto 66px}.product-visual,.product-copy{cursor:pointer;-webkit-tap-highlight-color:transparent}
.product-visual{appearance:none;-webkit-appearance:none;width:100%;height:clamp(370px,50.5vh,520px);border:0;padding:0;display:block;position:relative;overflow:hidden;border-radius:30px;background:linear-gradient(145deg,#f2efe9,#e8e4dc 52%,#f0ece6);text-align:left;transition:transform .18s ease,filter .18s ease,box-shadow .18s ease}.product-visual:hover{filter:brightness(.985)}.product-visual.is-pressed{transform:scale(.982);filter:brightness(.965);box-shadow:inset 0 0 0 1px rgba(77,73,67,.04)}
.number{position:absolute;top:18px;left:18px;font-size:9px;color:var(--muted);z-index:2}.blur-pack{position:absolute;width:42%;height:56%;left:29%;top:22%;border-radius:26px;background:rgba(108,101,92,.13);filter:blur(18px)}.soon-overlay{position:absolute;inset:0;display:grid;place-items:center;background:rgba(250,248,243,.13);font-size:12px;font-weight:400;letter-spacing:0;opacity:0;transform:scale(.99);transition:opacity .18s ease,transform .18s ease;pointer-events:none}.product-item.show-soon .soon-overlay{opacity:1;transform:scale(1)}
.product-copy{appearance:none;-webkit-appearance:none;border:0;background:transparent;padding:13px 3px 0;margin:0;width:100%;height:66px;position:relative;text-align:left}.copy-normal{display:grid;grid-template-rows:18px auto;align-content:start;transition:opacity .16s ease}.copy-normal strong{font-size:11px;line-height:18px;font-weight:600;letter-spacing:-.005em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.copy-normal small{font-size:9.5px;line-height:15px;color:var(--muted);font-weight:400;display:block}.product-item.hide-copy .copy-normal{opacity:0}
.photo-note{grid-column:3/5;margin:0;text-align:right;font-size:9.5px;color:var(--muted);align-self:end}
footer{border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(4,minmax(0,1fr));column-gap:var(--gap);row-gap:52px;padding:58px var(--pad) 24px;background:var(--bg)}.footer-brand-block{grid-column:1/2}.brand-mark--footer{font-size:17px}.footer-brand-block p{margin:12px 0 0;color:var(--muted);font-size:9.5px}.footer-right-group{grid-column:3/5;display:grid;grid-template-columns:minmax(0,1.45fr) minmax(0,.8fr);column-gap:clamp(28px,3vw,54px);align-items:start}.footer-coop,.footer-contact{display:flex;flex-direction:column;align-items:flex-start}footer h2{font-size:9px;line-height:1.2;letter-spacing:.07em;margin:1px 0 15px;font-weight:600}.contact-trigger{cursor:pointer;color:var(--muted);border:0;background:transparent;padding:0;margin:0 0 8px;text-align:left;font-size:10.5px;line-height:1.4}.contact-trigger:hover{opacity:.68}.email-text{font-size:10.5px;color:var(--text);user-select:text;cursor:text}.footer-bottom{grid-column:1/-1;border-top:1px solid var(--line);padding-top:18px;display:grid;grid-template-columns:1fr 1fr;color:var(--muted);font-size:9px}.footer-bottom span:last-child{text-align:right}
.contact-popover{position:fixed;left:50%;top:50%;transform:translate(-50%,-50%);width:min(380px,calc(100vw - 32px));padding:30px;border-radius:22px;background:var(--bg);border:1px solid var(--line);z-index:50;box-shadow:0 20px 70px rgba(64,58,50,.10)}.contact-popover[hidden],.popover-backdrop[hidden]{display:none}.popover-backdrop{position:fixed;inset:0;background:rgba(65,60,53,.10);backdrop-filter:blur(3px);z-index:40}.popover-close{position:absolute;right:14px;top:10px;border:0;background:none;color:var(--muted);font-size:20px;cursor:pointer}.modal-label{font-size:9px;letter-spacing:.07em;color:var(--muted);margin:0 0 13px}.popover-topic{font-size:14px;line-height:1.35;margin:0 0 18px}.popover-email{margin:0;font-size:11px;user-select:text;cursor:text}
@media(max-width:950px){.opening{grid-template-columns:repeat(2,minmax(0,1fr))}.intro-copy{grid-column:2}.collection-topline{grid-template-columns:repeat(2,minmax(0,1fr))}.collection-head{grid-column:1}.photo-note{grid-column:2}.product-grid{grid-template-columns:repeat(2,1fr)}.product-visual{height:470px}.footer-right-group{grid-column:2/5}}
@media(max-width:720px){.site-header{height:54px}.brand-mark--header{font-size:15px}.opening{height:auto;min-height:100px;padding:25px var(--pad) 22px;grid-template-columns:1fr}.intro-copy{grid-column:1}.collection{padding:24px 12px 84px}.collection-topline{display:block;margin:0 6px 18px}.collection-head{margin:0 0 14px}.collection-head h1{font-size:19px}.product-grid{grid-template-columns:1fr;gap:30px}.product-visual{height:58vh;min-height:400px;border-radius:26px}.photo-note{text-align:left;margin:0}footer{grid-template-columns:1fr;gap:28px;padding:42px var(--pad) 20px}.footer-brand-block,.footer-right-group{grid-column:1}.footer-right-group{grid-template-columns:1fr;row-gap:28px}.footer-bottom{grid-column:1;grid-template-columns:1fr;gap:6px}.footer-bottom span:last-child{text-align:left}}

/* V9 — one locked right-hand grid line on desktop.
   RU, intro copy, photo note, product 04 and ООО «FORMULAB» all terminate at --pad. */
@media(min-width:951px){
  .language{justify-self:end;text-align:right;}
  .intro-copy{grid-column:3/5;justify-self:stretch;max-width:none;}
  .photo-note{grid-column:3/5;justify-self:stretch;text-align:right;}
  .product-grid{width:100%;}
  .product-item:last-child{justify-self:stretch;width:100%;}
  .footer-bottom span:last-child{justify-self:end;text-align:right;}
}

/* V10 — precision alignment only. Keep typography/layout unchanged. */
@media(min-width:951px){
  /* Keep the existing two-line composition exactly as written; move the whole
     text block so its final visible character lands on the product-04 edge. */
  .opening{align-items:center;}
  .intro-copy{
    grid-column:1/5;
    width:max-content;
    max-width:100%;
    justify-self:end;
    align-self:center;
    text-align:left;
  }

  /* The final visible punctuation shares the same right grid line. */
  .photo-note{
    grid-column:3/5;
    width:max-content;
    max-width:100%;
    justify-self:end;
    text-align:left;
  }
  .language{justify-self:end;}
  .footer-bottom span:last-child{justify-self:end;text-align:left;}
}


/* V12 — only the two requested geometry corrections.
   1) Product visuals are the centering reference. The copy stays locked to each card.
   2) The top header band and bottom legal band have the same 64px height. */
@media(min-width:951px){
  .collection{
    /* Preserve existing horizontal geometry and typography. */
    padding-left:var(--pad);
    padding-right:var(--pad);
    padding-top:34px;
    padding-bottom:0;
  }
  .collection-topline{margin-bottom:20px;}

  /* Equal real CSS whitespace above and below the CARD itself.
     The 66px copy row remains attached beneath the card and is deliberately
     excluded from the centering calculation. */
  .product-grid{
    transform:none;
    padding-top:clamp(28px,4.2vh,46px);
    padding-bottom:calc(clamp(28px,4.2vh,46px) + 66px);
  }

  /* Match the visible top and bottom edge bands. */
  .site-header{height:64px;}
  .footer-bottom{
    min-height:64px;
    padding-top:0;
    align-items:center;
  }
}

/* V13 — exact card-only vertical centering.
   IMPORTANT: only the four .product-visual cards define the vertical center.
   Product copy is excluded from the centering calculation and remains attached
   beneath its own card at the existing 13px spacing. */
@media(min-width:951px){
  /* Give the product area an explicit real viewport so the center is objective. */
  .collection{
    position:relative;
    height:calc(100vh - 64px - 116px);
    min-height:620px;
    padding:34px var(--pad) 0;
  }

  /* Headline and photo note keep their current position/layout and do not
     participate in card centering. */
  .collection-topline{
    position:relative;
    z-index:2;
    margin:0;
  }

  /* Center the CARD rectangle itself on the section midpoint.
     The grid is card-height + 66px copy. Translating the whole grid by
     -50% + 33px exactly removes half of the copy row from the calculation,
     so the visual card — not card+copy — is mathematically centered. */
  .product-grid{
    position:absolute;
    left:var(--pad);
    right:var(--pad);
    top:50%;
    width:auto;
    padding:0;
    transform:translateY(calc(-50% + 33px));
  }

  /* Keep the top and bottom edge bands exactly equal. */
  .site-header{height:64px;}
  .footer-bottom{min-height:64px;padding-top:0;align-items:center;}
}

/* V14 — ONLY the three confirmed spacing corrections.
   Product-card position/size is inherited unchanged from V13. */
@media(min-width:951px){
  /* 1–2) Keep both top text blocks intact and place their bottom edge exactly
     13px above the product cards — the same distance used from the card bottom
     to the first line of the product name below. */
  .collection-topline{
    position:absolute;
    left:var(--pad);
    right:var(--pad);
    top:calc(50% - (clamp(370px,50.5vh,520px) / 2) - 13px);
    transform:translateY(-100%);
    margin:0;
    z-index:2;
  }

  /* 3) The visible bottom band (last footer rule → page edge) is exactly the
     same 64px as the visible top band (page edge → header rule). */
  footer{padding-bottom:0;}
  .site-header{height:64px;}
  .footer-bottom{
    height:64px;
    min-height:64px;
    padding-top:0;
    align-items:center;
  }
}


/* V15 — ONLY one correction: match the visible top-text→card gap to the
   already-locked visible card→product-name gap. Cards and lower copy do not move. */
@media(min-width:951px){
  .collection-topline{
    top:calc(50% - (clamp(370px,50.5vh,520px) / 2) - 26px);
  }
}

/* Footer upper grid: contacts, cooperation, address; address ends at the card-04 edge. */
.footer-upper-grid{grid-column:1/-1;display:grid;grid-template-columns:repeat(8,minmax(0,1fr));column-gap:0;align-items:start}
.footer-upper-grid .footer-brand-block{grid-column:1/3}
.footer-upper-grid .footer-contact{grid-column:4/6}
.footer-upper-grid .footer-coop{grid-column:6/7}
.footer-upper-grid .footer-address{grid-column:7/9;justify-self:end;width:max-content;max-width:100%;display:flex;flex-direction:column;align-items:flex-end;text-align:right}
.footer-address p{margin:0;color:var(--muted);font-size:10.5px;line-height:1.55}
@media(max-width:720px){.footer-upper-grid{grid-template-columns:repeat(2,minmax(0,1fr));row-gap:28px}.footer-upper-grid .footer-brand-block,.footer-upper-grid .footer-coop,.footer-upper-grid .footer-contact,.footer-upper-grid .footer-address{grid-column:auto}.footer-upper-grid .footer-address{justify-self:stretch;width:auto;align-items:flex-start;text-align:left}}

/* Group contacts, cooperation and address at the footer right edge with equal gaps. */
.footer-info-group{grid-column:3/9;justify-self:end;width:max-content;max-width:100%;display:flex;justify-content:flex-end;align-items:center;align-self:center;gap:20px;min-width:0}
.footer-info-group>.footer-contact,.footer-info-group>.footer-coop,.footer-info-group>.footer-address{flex:0 0 auto;width:max-content}
@media(max-width:720px){.footer-info-group{display:contents}.footer-info-group>.footer-contact,.footer-info-group>.footer-coop,.footer-info-group>.footer-address{width:auto}}

/* Shared body line spacing for the three footer information blocks. */
.footer-info-group .contact-trigger,
.footer-info-group .email-text,
.footer-info-group .footer-address p{font-size:10.5px;line-height:1.55;margin:0;padding:0}

/* V23 — Footer upper only.
   Use the CURRENT product-card geometry as the 1–12 reference lines:
   each card contributes left / center / right, while the existing card gaps
   remain real gaps and are NOT averaged into the card halves. */
@media(min-width:951px){
  .footer-upper-grid{
    grid-template-columns:
      minmax(0,1fr) minmax(0,1fr) var(--gap)
      minmax(0,1fr) minmax(0,1fr) var(--gap)
      minmax(0,1fr) minmax(0,1fr) var(--gap)
      minmax(0,1fr) minmax(0,1fr);
    column-gap:0;
    align-items:center;
  }

  /* Keep the existing markup; expose only these three blocks to the footer grid. */
  .footer-upper-grid .footer-info-group{display:contents;}

  /* Brand block stays on card 01 and is vertically centered as one whole group. */
  .footer-upper-grid .footer-brand-block{
    grid-column:1/3;
    align-self:center;
  }

  /* 8 → 9: second half of card 03. */
  .footer-upper-grid .footer-contact{
    grid-column:8/9;
    align-self:center;
    justify-self:stretch;
    width:100%;
    max-width:100%;
    min-width:0;
  }

  /* 10 → 11: first half of card 04. */
  .footer-upper-grid .footer-coop{
    grid-column:10/11;
    align-self:center;
    justify-self:stretch;
    width:100%;
    max-width:100%;
    min-width:0;
  }

  /* 11 → 12: second half of card 04; preserve the existing right-aligned text. */
  .footer-upper-grid .footer-address{
    grid-column:11/12;
    align-self:center;
    justify-self:stretch;
    width:100%;
    max-width:100%;
    min-width:0;
  }
}

/* V24 — Footer upper correction only.
   CONTACTS + COOPERATION + ADDRESS are one vertically-centered group.
   Inside that group, all three blocks share the same top line and body-line rhythm.
   Horizontal anchors remain exactly on reference lines 8, 10, 11, 12. */
@media(min-width:951px){
  .footer-upper-grid .footer-info-group{
    display:grid;
    grid-column:8/12;
    grid-template-columns:minmax(0,1fr) var(--gap) minmax(0,1fr) minmax(0,1fr);
    column-gap:0;
    align-self:center;
    align-items:start;
    justify-self:stretch;
    width:100%;
    max-width:none;
    min-width:0;
    gap:0;
  }

  .footer-upper-grid .footer-info-group>.footer-contact{
    grid-column:1;
    align-self:start;
    justify-self:stretch;
    width:100%;
    max-width:100%;
    min-width:0;
  }

  .footer-upper-grid .footer-info-group>.footer-coop{
    grid-column:3;
    align-self:start;
    justify-self:stretch;
    width:100%;
    max-width:100%;
    min-width:0;
  }

  .footer-upper-grid .footer-info-group>.footer-address{
    grid-column:4;
    align-self:start;
    justify-self:stretch;
    width:100%;
    max-width:100%;
    min-width:0;
  }
}

/* V25 — Footer upper alignment only.
   Keep IPERFO + CONTACTS + COOPERATION + ADDRESS on the same shared top line,
   while preserving the already-centered upper-footer group and all horizontal anchors. */
@media(min-width:951px){
  .footer-upper-grid .footer-brand-block,
  .footer-upper-grid .footer-info-group{
    align-self:start;
  }
}

/* V26 — Footer upper ADDRESS alignment only.
   Keep the address block locked to reference line 11 on the left and line 12 on the right.
   Do not change any other footer or page geometry. */
@media(min-width:951px){
  .footer-upper-grid .footer-info-group>.footer-address{
    align-items:flex-start;
    text-align:left;
  }
}

/* V28 — Typography normalization only.
   All small text in the upper footer uses one shared size. */
.footer-upper-grid .footer-brand-block p,
.footer-upper-grid .footer-info-group .email-text,
.footer-upper-grid .footer-info-group .contact-trigger,
.footer-upper-grid .footer-info-group .footer-address p{
  font-size:10.5px;
}

.product-photo{position:absolute;inset:0;width:100%;height:100%;z-index:1}.has-photo .blur-pack{display:none}.product-item[data-soon] .product-photo{filter:blur(14px)}.product-item.is-live .product-photo{filter:none}.product-item.is-live .soon-overlay{display:none!important}.product-visual .soon-overlay{z-index:3}.soon-text-hidden{opacity:0!important}
.module-divider{position:relative}.module-divider::before{content:"";position:absolute;top:var(--divider-top,0px);left:var(--divider-inset,var(--pad));right:var(--divider-inset,var(--pad));height:var(--divider-thickness,1px);background:var(--divider-color,#ded9d0);pointer-events:none;z-index:3}@media(max-width:720px){.collection.module-divider::before{left:var(--divider-inset,12px);right:var(--divider-inset,12px)}}
.product-grid.product-row-list{height:var(--product-row-height);padding-top:0;padding-bottom:0}.product-row-viewport{position:absolute;top:0;left:0;width:100%;display:flex;flex-wrap:nowrap;align-items:flex-start;gap:var(--product-row-gap);overflow-x:auto;overflow-y:hidden;overscroll-behavior-x:contain;scrollbar-width:thin;scrollbar-color:var(--line) transparent}.product-row-viewport>.product-item{flex:0 0 var(--product-card-width);width:var(--product-card-width)!important;grid-template-rows:auto var(--product-copy-height)!important;grid-column:auto!important;grid-row:auto!important}.product-row-viewport .product-copy{height:var(--product-copy-height)!important;min-height:var(--product-copy-height)!important}.product-row-viewport .copy-normal{display:flex!important;flex-direction:column;align-items:stretch;position:absolute;top:var(--product-caption-top);left:var(--product-caption-left);right:var(--product-caption-right)}.product-name-slot{height:var(--product-name-height);min-height:var(--product-name-height);flex:none}.product-row-viewport .copy-normal strong{display:block;white-space:normal;overflow:visible;overflow-wrap:anywhere;text-overflow:clip}@media(max-width:950px){.product-grid.product-row-list{position:relative}}