/* =========================================================
   COMMON LAYOUT + UNIFIED COMPACT FOOTER
   Works both for pages with .site-shell and pages without it.
   ========================================================= */

html{
  margin:0!important;
  padding:0!important;
  min-height:0!important;
  height:auto!important;
  overflow-x:hidden;
  background:#0b1118!important;
}

body{
  margin:0!important;
  padding:0!important;
  min-height:0!important;
  height:auto!important;
  display:block!important;
  overflow-x:hidden!important;
  background:#0b1118!important;
}

/*
   IMPORTANT: no flex/min-height wrapper here.
   Earlier min-height:100vh + flex on .site-shell could leave a second
   viewport-sized area after the footer on long pages.
*/
.site-shell{
  width:100%!important;
  min-height:0!important;
  height:auto!important;
  display:block!important;
  flex:none!important;
  margin:0!important;
  padding:0!important;
  overflow-x:hidden!important;
  overflow-y:visible!important;
  background:transparent!important;
}

body > main,
.site-shell > main{
  display:block!important;
  min-height:0!important;
  height:auto!important;
  flex:none!important;
  margin-bottom:0!important;
  padding-bottom:0;
}

/* Footer is the final flow element. Back-to-top buttons never take space. */
.to-top,
.back-to-top{
  position:fixed!important;
}

/* Common Instagram link */
.common-instagram-wrap{min-width:0}
.common-instagram{
  display:inline-flex;
  align-items:center;
  gap:8px;
  min-width:0;
  color:inherit;
  text-decoration:none;
  transition:color .2s ease,opacity .2s ease;
}
.common-instagram:hover{color:#fff;opacity:1}
.common-instagram__icon{
  width:18px;
  height:18px;
  display:inline-grid;
  place-items:center;
  flex:0 0 18px;
  border-radius:5px;
  background:radial-gradient(circle at 32% 100%,#ffd600 0 22%,#ff7a00 36%,#ff0169 58%,#d300c5 76%,#7638fa 100%);
  box-shadow:0 0 0 1px rgba(255,255,255,.12);
}
.common-instagram__icon svg{
  width:14px!important;
  height:14px!important;
  display:block;
  fill:none;
  stroke:#fff!important;
  stroke-width:1.8!important;
}
.common-instagram__icon .common-instagram__dot{
  fill:#fff!important;
  stroke:none!important;
}

/* =========================================================
   ONE FOOTER FOR ALL PAGES
   Important: natural height only — no 100vh/min-height stretching.
   ========================================================= */
footer.global-footer{
  position:relative!important;
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  flex:0 0 auto!important;
  flex-grow:0!important;
  flex-shrink:0!important;
  align-self:stretch!important;
  overflow:visible!important;
  background:#0b1118!important;
  color:#aab8c5;
  border-top:1px solid rgba(255,255,255,.06);
  font-family:Inter,Manrope,"Segoe UI",Arial,sans-serif;
}

.global-footer,
.global-footer *{
  box-sizing:border-box;
}

.global-footer__container{
  width:min(1400px,calc(100% - 48px));
  height:auto!important;
  min-height:0!important;
  margin-inline:auto;
}

.global-footer__top{
  display:grid;
  grid-template-columns:minmax(300px,1.55fr) repeat(3,minmax(160px,1fr));
  align-items:start;
  gap:48px;
  height:auto!important;
  min-height:0!important;
  padding:42px 0 30px!important;
  margin:0!important;
}

.global-footer__brand{
  display:flex;
  align-items:center;
  gap:17px;
  min-width:0;
}
.global-footer__brand img{
  display:block;
  width:68px!important;
  height:68px!important;
  max-width:68px!important;
  max-height:68px!important;
  object-fit:contain!important;
  flex:0 0 68px;
  background:transparent!important;
}
.global-footer__brand>div{
  display:flex;
  flex-direction:column;
  gap:5px;
  min-width:0;
}
.global-footer__brand strong{
  color:#fff;
  font-size:15px;
  line-height:1.45;
  max-width:310px;
}
.global-footer__brand span{
  color:#7890a3;
  font-size:12px;
  line-height:1.45;
}

.global-footer__col{
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  min-width:0;
  height:auto!important;
  min-height:0!important;
  font-size:12.5px;
  line-height:1.5;
}
.global-footer__col>strong{
  color:#fff;
  font-size:13px;
  margin-bottom:4px;
}
.global-footer__col a{
  color:#aab8c5;
  text-decoration:none;
  transition:color .2s ease,transform .2s ease;
}
.global-footer__col a:hover{
  color:#fff;
  transform:translateX(2px);
}
.global-footer__address{
  color:#aab8c5;
  max-width:300px;
}
.global-footer__instagram{
  max-width:100%;
  color:#9fc8ff!important;
}
.global-footer__instagram span:last-child{
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
  max-width:260px;
}

.global-footer__bottom{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:24px;
  height:auto!important;
  min-height:0!important;
  margin:0!important;
  border-top:1px solid rgba(255,255,255,.08);
  padding:16px 0 18px!important;
  color:#6f8394;
  font-size:11.5px;
}

/* Kill accidental pseudo-elements or inherited footer spacers */
body:after,
.site-shell:after,
.global-footer:before,
.global-footer:after{
  content:none!important;
  display:none!important;
}

@media(max-width:980px){
  .global-footer__container{width:calc(100% - 34px)}
  .global-footer__top{
    grid-template-columns:1.4fr 1fr 1fr;
    gap:32px;
    padding:38px 0 28px!important;
  }
  .global-footer__contacts{grid-column:2/4}
}

@media(max-width:680px){
  .global-footer__container{width:calc(100% - 28px)}
  .global-footer__top{
    grid-template-columns:1fr;
    gap:25px;
    padding:34px 0 24px!important;
  }
  .global-footer__contacts{grid-column:auto}
  .global-footer__brand img{
    width:60px!important;
    height:60px!important;
    max-width:60px!important;
    max-height:60px!important;
    flex-basis:60px;
  }
  .global-footer__bottom{
    align-items:flex-start;
    flex-direction:column;
    gap:5px;
    padding:15px 0 17px!important;
  }
  .global-footer__instagram span:last-child{
    max-width:100%;
  }
}


/* ===== FINAL FOOTER FLOW SAFEGUARDS ===== */
.site-shell > footer.global-footer,
body > footer.global-footer{
  display:block!important;
  clear:both!important;
  margin-top:0!important;
  margin-bottom:0!important;
}

footer.global-footer + .to-top,
footer.global-footer + .back-to-top{
  margin:0!important;
}

/* Any viewport that is taller than a very short page inherits the footer
   colour instead of showing a white strip below it. */
html, body{
  background-color:#0b1118!important;
}


/* ===== GLOBAL HORIZONTAL SCROLL FIX ===== */
/*
   The site has wide photo collages and decorative elements. They must never
   increase the document width or create a second horizontal scrollbar.
*/
html,
body{
  width:100%!important;
  max-width:100%!important;
  overflow-x:clip!important;
}

body,
.site-shell,
header,
main,
footer,
section{
  max-width:100%!important;
}

.site-shell,
main,
.container,
.global-footer__container,
.utility-bar__inner,
.brand-row__inner,
.nav-row__inner,
.topbar__inner,
.navbar__inner{
  min-width:0!important;
}

img,
video,
svg{
  max-width:100%;
}

/* Long address / Instagram strings must shrink inside their columns. */
.utility-bar__left,
.utility-bar__right,
.utility-item,
.topbar__meta,
.topbar__actions,
.topbar__item,
.common-instagram-wrap,
.common-instagram{
  min-width:0!important;
  max-width:100%;
}

.common-instagram > span:last-child{
  min-width:0;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}

/* Fallback for browsers where overflow-x: clip is not supported. */
@supports not (overflow:clip){
  html,
  body{
    overflow-x:hidden!important;
  }
}

/* =========================================================
   PERMANENT DOCUMENT-BOTTOM FIX
   ---------------------------------------------------------
   The page uses one vertical flex column. On short pages MAIN grows
   BEFORE the footer. On long pages MAIN keeps its natural height.
   Nothing is allowed to create document height after the footer.
   ========================================================= */
html{
  min-height:100%!important;
  height:auto!important;
}

body{
  min-height:100vh!important;
  min-height:100dvh!important;
  height:auto!important;
  overflow-x:clip!important;
}

.site-shell{
  display:flex!important;
  flex-direction:column!important;
  width:100%!important;
  min-height:100vh!important;
  min-height:100dvh!important;
  height:auto!important;
  margin:0!important;
  padding:0!important;
  overflow-x:clip!important;
  overflow-y:visible!important;
}

.site-shell > .utility-bar,
.site-shell > header,
.site-shell > footer.global-footer{
  flex:0 0 auto!important;
}

.site-shell > main{
  flex:1 0 auto!important;
  width:100%!important;
  min-height:0!important;
  height:auto!important;
  margin:0!important;
  padding-bottom:0!important;
}

/* Footer must finish exactly on its copyright row. */
footer.global-footer{
  display:block!important;
  position:relative!important;
  flex:0 0 auto!important;
  width:100%!important;
  height:auto!important;
  min-height:0!important;
  max-height:none!important;
  margin:0!important;
  padding:0!important;
  overflow:hidden!important;
}

.global-footer__top,
.global-footer__bottom{
  height:auto!important;
  min-height:0!important;
  margin-bottom:0!important;
}

.global-footer__bottom{
  padding-bottom:18px!important;
}

/* The back-to-top button is visual only and never participates in flow. */
.site-shell > .to-top,
.site-shell > .back-to-top,
body > .to-top,
body > .back-to-top{
  position:fixed!important;
  margin:0!important;
}

/* =========================================================
   TECHNICAL CURSOR — FIXED TO VIEWPORT
   ---------------------------------------------------------
   Important: these nodes are dynamically appended to BODY by page JS.
   If they are not position:fixed, their transforms increase scrollHeight
   and create the large empty area below "Все права защищены".
   ========================================================= */
.custom-cursor-enabled,
.custom-cursor-enabled a,
.custom-cursor-enabled button,
.custom-cursor-enabled [role="button"]{
  cursor:none!important;
}

.tech-cursor-dot,
.tech-cursor-ring,
.cursor-spark{
  position:fixed!important;
  left:0;
  top:0;
  margin:0!important;
  padding:0!important;
  pointer-events:none!important;
  box-sizing:border-box!important;
}

.tech-cursor-dot,
.tech-cursor-ring{
  z-index:99999!important;
  opacity:0;
  will-change:transform,opacity;
}

.tech-cursor-dot{
  width:8px!important;
  height:8px!important;
  border-radius:2px;
  background:#fff;
  box-shadow:0 0 0 2px #00d8ff,0 0 14px 3px rgba(0,216,255,.9);
}

.tech-cursor-ring{
  width:38px!important;
  height:38px!important;
  border-radius:50%;
  border:1.5px solid rgba(0,216,255,.95);
  box-shadow:0 0 0 1px rgba(255,138,0,.18) inset,0 0 18px rgba(0,216,255,.32);
  transition:width .18s ease,height .18s ease,border-color .18s ease,box-shadow .18s ease,opacity .18s ease;
}

.tech-cursor-ring::before,
.tech-cursor-ring::after{
  content:"";
  position:absolute;
  left:50%;
  top:50%;
  background:linear-gradient(90deg,#00d8ff,#ff8a00);
  transform:translate(-50%,-50%);
  opacity:.9;
}
.tech-cursor-ring::before{width:52px;height:1px}
.tech-cursor-ring::after{width:1px;height:52px}
.tech-cursor-ring.is-hover{width:54px!important;height:54px!important;border-color:#ff9d1c;box-shadow:0 0 22px rgba(255,138,0,.42),0 0 0 1px rgba(0,216,255,.2) inset}
.tech-cursor-ring.is-down{width:28px!important;height:28px!important;box-shadow:0 0 28px rgba(0,216,255,.65)}
.tech-cursor-dot.is-hover{background:#ffb233;box-shadow:0 0 0 2px #fff,0 0 16px 4px rgba(255,138,0,.75)}
.tech-cursor-visible .tech-cursor-dot,
.tech-cursor-visible .tech-cursor-ring{opacity:1}

.cursor-spark{
  width:5px!important;
  height:5px!important;
  border-radius:50%;
  z-index:99998!important;
  background:#00d8ff;
  box-shadow:0 0 10px currentColor;
  animation:commonCursorSpark .45s ease-out forwards;
}

@keyframes commonCursorSpark{
  to{opacity:0;transform:translate(var(--sx),var(--sy)) scale(.2)}
}

@media (hover:none),(pointer:coarse){
  .tech-cursor-dot,.tech-cursor-ring,.cursor-spark{display:none!important}
}

/* Chrome/WebKit: do not let transformed fixed decorations contribute to
   the scrollable overflow area. */
html,body,.site-shell{
  overflow-x:hidden!important;
}

@supports (overflow:clip){
  html,body,.site-shell{overflow-x:clip!important}
}
