:root{
  --dsk-layout-shell-max:var(--site-max-width,1320px);
  --dsk-layout-shell-gutter:var(--mobile-gutter,20px);
  --dsk-layout-content-max:1100px;
  --dsk-layout-copy-max:1040px;
}

/* Shared aliases so blog/services read the same core shell values */
:root{
  --dsk-service-shell-max:var(--dsk-layout-shell-max);
  --dsk-service-shell-gutter:var(--dsk-layout-shell-gutter);
  --dsk-service-content-max:var(--dsk-layout-content-max);
  --dsk-service-copy-max:var(--dsk-layout-copy-max);
}
body.dsk-blog-article,
body.dsk-blog-hub{
  --dsk-blog-shell-max:var(--dsk-layout-shell-max);
  --dsk-blog-gutter:var(--dsk-layout-shell-gutter);
  --dsk-blog-copy-max:var(--dsk-layout-copy-max);
}

@media (min-width:1024px){
  body.dsk-blog-article,
  body.dsk-blog-hub{
    --dsk-blog-shell-max:var(--dsk-layout-shell-max);
    --dsk-blog-inner-max:var(--dsk-layout-shell-max);
    --dsk-blog-copy-max:var(--dsk-layout-shell-max);
    --dsk-blog-gutter:var(--dsk-layout-shell-gutter);
  }

/* Blog copy readability parity: the dedicated blog article stylesheet keeps article copy at 1040px, while dsk-layout-system later reassigns --dsk-blog-copy-max to the full 1320px shell for both blog articles and blog hub pages. Restore the shared copy token only for the copy measure, while keeping the outer blog shell wide. */
  body.dsk-blog-article,
  body.dsk-blog-hub{
    --dsk-blog-copy-max:var(--dsk-layout-copy-max);
  }


  /* Stage 20 — thank-you card width parity: both thank-you pages keep the main confirmation card on a late inline `max-width:860px`, which makes the whole page read noticeably narrower than the shared copy axis after the other template families were normalized. Keep the centered card design, but remap its desktop width to the shared copy token so PL/EN thank-you stay aligned with the rest of the system without touching page HTML. */
  body[data-page-type="thank_you"] .dsk-thanks-card{
    width:100% !important;
    max-width:min(100%,var(--dsk-layout-copy-max)) !important;
    box-sizing:border-box !important;
  }
}

/* Global content hardening: keep text / links / media inside the established shell */
main,
main .sb-row,
main .sb-column,
main .sb-column-content,
main .sb-item-view,
main .sb-item-view__body,
main .sb-text-image__content,
main .sb-text-image__content-paragraph,
main .sb-paragraph,
main .sb-section-title,
main .sb-section-subtitle,
main .option-width,
main .dsk-seo-blurb__wrap,
main .dsk-faq-wrap,
main .dsk-about-card,
main .dsk-about-panel,
main .dsk-servicebar__wrap,
main .dsk-about-intro-grid,
main .dsk-about-panels,
main .dsk-hub-filters__inner,
main .dsk-blog-quicknav,
main .dsk-blog-pagination,
main .section-intro,
main .section-intro__inner,
main .dsk-wrap{
  min-width:0 !important;
  box-sizing:border-box;
}

main :where(p,li,a,h1,h2,h3,h4,h5,h6,blockquote,figcaption,code,strong,em){
  max-width:100%;
  overflow-wrap:anywhere;
  word-break:break-word;
  hyphens:auto;
}

main :where(img,svg,video,iframe,canvas,figure,table,pre){
  max-width:100% !important;
  box-sizing:border-box;
}

main :where(table,pre){
  display:block;
  overflow-x:auto;
}

main code{
  white-space:normal !important;
}

@media (min-width:769px){
  /* Common desktop shell for all non-home page containers inside main */
  body:not(.dsk-page-home) main .container.sb-container-fixed.sb-container{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-layout-shell-gutter) !important;
    padding-right:var(--dsk-layout-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  /* Standalone wrappers that do not use the standard B12 container */
  body:not(.dsk-page-home) main #local-area-links .option-width,
  body:not(.dsk-page-home) main .ds-price__container,
  body:not(.dsk-page-home) main .dsk-seo-blurb__wrap,
  body:not(.dsk-page-home) main #faq .dsk-faq-wrap,
  body:not(.dsk-page-home) main #faq .sb-section-title.option-width,
  body:not(.dsk-page-home) main #faq .sb-section-subtitle.option-width,
  body:not(.dsk-page-home) main #blank-hero.dsk-ship-page .sb-text-image-vertical__content,
  body:not(.dsk-page-home) main #blank-hero.dsk-ship-page .sb-text-image-vertical__content-cta,
  /* Stage 51 — keep /uslugi ownership local: services listing now has its own family source in page-uslugi*.css,
     so exclude body.dsk-page-uslugi from the broad global shell block to avoid split desktop ownership. */
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-about-hero__inner,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-cta-lab__inner,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-servicebar__wrap,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-breadcrumbs,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-about-intro-grid,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-about-panels,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-hub-filters__inner,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-blog-quicknav,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-blog-pagination,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .section-intro,
  html body:not(.dsk-page-home):not(.dsk-page-uslugi):not(.dsk-blog-article):not(.dsk-blog-hub) .section-intro__inner,
  body:not(.dsk-page-home) #main.dsk-process-main > .dsk-process > .dsk-wrap,
  body:not(.dsk-page-home):not(.dsk-page-uslugi) .dsk-uslugi-surface > .dsk-breadcrumbs,
  body:not(.dsk-page-home):not(.dsk-page-uslugi) .dsk-uslugi-surface > .dsk-svc,
  body:not(.dsk-page-home):not(.dsk-page-uslugi) .dsk-uslugi-surface > .dsk-why{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-layout-shell-gutter) !important;
    padding-right:var(--dsk-layout-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  body:not(.dsk-page-home) main #faq{
    --section-container-width:var(--dsk-layout-shell-max);
  }
}

@media (min-width:1024px){
  /* Desktop/laptop only: remove legacy 75% / 66.6667% content widths so page content uses
     the same outer shell as the header and footer grid. Keep blog/article layouts excluded. */
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub){
    --section-container-width:100%;
  }

  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .sb-section.option-content-width-default .sb-column,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .option-width,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .option-width-default .option-width,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .option-width-6col .option-width,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .option-width-8col .option-width,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .option-width-12col .option-width,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) main .sb-section-alignable{
    width:100% !important;
    max-width:100% !important;
    flex:0 0 100% !important;
    box-sizing:border-box !important;
  }

  /* Rectangular business-card frame on desktop: keep visible page modules on the same left/right axis as header + footer content. */
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub){
    --dsk-shared-top-shell-max:var(--dsk-layout-shell-max);
    --dsk-shared-top-shell-gutter:var(--dsk-layout-shell-gutter);
  }

  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-wrap,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) #dsk-blog-to-service-cta > .container.sb-container-fixed.sb-container,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) #dsk-blog-to-service-cta .sb-column-content{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-layout-shell-gutter) !important;
    padding-right:var(--dsk-layout-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-about-hero__subtitle,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-cta-lab__copy,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-cta-lab__text,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) .section-intro__text,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) .dsk-svcgrid__header p,
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) #dsk-blog-to-service-cta .sb-column-content > :is(h2,h3,p,ul,ol){
    max-width:none !important;
  }





  /* Stage 3 retired — top-shell family ownership is now explicit:
     - about / process live in dsk-shared-top-shell-1240.v1.css
     - /uslugi lives in page-uslugi*.css
     Keep the global layout file out of that family so shell ownership stays single-source. */

  /* Stage 4 — blog hub / listing / CTA family: keep blog hub pages on the same rectangular shell as header + footer. */
  body.dsk-blog-hub{
    --dsk-blog-top-shell-max:var(--dsk-layout-shell-max);
    --dsk-blog-top-shell-gutter:var(--dsk-layout-shell-gutter);
    --dsk-blog-shell-max:var(--dsk-layout-shell-max);
    --dsk-blog-gutter:var(--dsk-layout-shell-gutter);
    --dsk-blog-copy-max:var(--dsk-layout-shell-max);
  }

  body.dsk-blog-hub .dsk-cta-lab__inner{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    box-sizing:border-box !important;
  }

  body.dsk-blog-hub .dsk-about-hero__subtitle,
  body.dsk-blog-hub .section-intro__text,
  body.dsk-blog-hub .dsk-cta-lab__copy,
  body.dsk-blog-hub .dsk-cta-lab__text{
    max-width:none !important;
  }


  /* Stage 6 — desktop pre-footer utility family: remove late local caps that still make CTA/pricing blocks visibly narrower than the shared header/footer shell. */
  body:not(.dsk-page-home) #default-contact-cta-section-template .sb-text-image__content{
    flex:1 1 auto !important;
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }

  body:not(.dsk-page-home) #default-contact-cta-section-template .sb-text-image__content-title,
  body:not(.dsk-page-home) #default-contact-cta-section-template .sb-title .display-font,
  body:not(.dsk-page-home) #default-contact-cta-section-template .sb-text-image__content-paragraph,
  body:not(.dsk-page-home) #default-contact-cta-section-template .sb-subtitle{
    width:100% !important;
    max-width:none !important;
  }

  body[data-page-type="pricing"] #pricing .sb-pricing-cards-section__content,
  body[data-page-type="pricing"] #pricing .option-width.sb-section-alignable{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-layout-shell-gutter) !important;
    padding-right:var(--dsk-layout-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  body[data-page-type="pricing"] #pricing .ds-price__container{
    width:100% !important;
    max-width:none !important;
    padding-left:0 !important;
    padding-right:0 !important;
    box-sizing:border-box !important;
  }


/* Stage 7 retired — ordinary service pages now own their desktop width in
   dsk-service-layout-unify.v2.css. Keeping this global #service-template block
   active forced content/subnav/alert wrappers to max-width:none and created a
   second owner above the service family. */



  /* Stage 8 — nested desktop wrappers: keep only one shell per module. Some pre-footer/content modules were still narrower because both the outer wrapper and an inner wrapper received the same shell padding, effectively double-indenting the content. */
  html body:not(.dsk-page-home):not(.dsk-blog-article):not(.dsk-blog-hub) #dsk-blog-to-service-cta .sb-column-content{
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    box-sizing:border-box !important;
  }

  body[data-page-type="pricing"] #pricing .option-width.sb-section-alignable{
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    flex:0 0 100% !important;
    box-sizing:border-box !important;
  }


  /* Stage 9 — desktop single-column B12 rows: remove the extra 10px+10px column gutter when a section already sits inside the shared shell. These full-width one-column rows were still reading as narrower than header/footer because the shell padding and the bootstrap/B12 column padding stacked together. */
  body:not(.dsk-page-home) main .container.sb-container-fixed.sb-container > .row.sb-row > .sb-column.col-xs-12.col-sm-12.col-md-12.col-lg-12.col-xl-12:only-child{
    padding-left:0 !important;
    padding-right:0 !important;
  }


/* Stage 10 retired — every live `#service-template` page now loads
   `dsk-service-layout-unify.v2.css`, so service-family width ownership no
   longer belongs in this global file. Keep this note to preserve stage order
   and document why page-class leakage from selectors such as `.dsk-page-hdd`
   must stay out of this global file. */



  /* Stage 11 — CTA lab family from custom-styles.min.css: remove the late 980px/640px desktop caps and restore the default-contact CTA to the same shell axis as header/footer. Previous attempts targeted a non-existent B12 text-image node; the live CTA markup uses .dsk-cta-lab__inner / __copy / __text / __actions. */
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__inner{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-layout-shell-gutter) !important;
    padding-right:var(--dsk-layout-shell-gutter) !important;
    box-sizing:border-box !important;
    justify-content:space-between !important;
  }

  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__copy{
    width:100% !important;
    max-width:none !important;
    min-width:0 !important;
    margin:0 !important;
    text-align:left !important;
  }

  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__eyebrow,
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__title,
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__text,
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__micro{
    width:100% !important;
    max-width:none !important;
    text-align:left !important;
  }

  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__actions{
    width:min(280px,100%) !important;
    min-width:240px !important;
    max-width:280px !important;
    margin:0 0 0 auto !important;
    justify-self:end !important;
    align-items:flex-end !important;
  }


  /* Stage 12 — default-contact CTA B12 hero variant: on 120 pages the CTA section uses .sb-content.sb-hero.option-width.sb-section-alignable (not .sb-text-image__content and not .dsk-cta-lab__inner), so earlier widening rules could not affect its real DOM. Reset the live hero-simple content wrapper, subtitle and CTA row to the shared shell axis without touching mobile or the dsk-cta-lab variant. */
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .sb-content.sb-hero.option-width.sb-section-alignable,
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .sb-cta-wrapper.sb-section-alignable{
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
    box-sizing:border-box !important;
  }

  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .sb-hero__content-wrapper,
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .sb-title.sb-hero__title,
  body:not(.dsk-page-home):not(.dsk-blog-hub):not(.dsk-blog-article) #default-contact-cta-section-template .sb-subtitle.sb-hero__subtitle{
    width:100% !important;
    max-width:none !important;
    box-sizing:border-box !important;
  }

  /* Stage 13A — remove the late global 68ch text caps from custom-styles.min.css so desktop copy can sit on the same shared shell axis as header/footer. */
  #sb-page-structure :where(.content,.article,.text-content){
    width:100% !important;
    max-width:min(100%,var(--dsk-layout-shell-max)) !important;
    margin-left:0 !important;
    margin-right:0 !important;
    box-sizing:border-box !important;
  }

  #sb-page-structure main section > div > :is(p,ul,ol,h1,h2,h3){
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }
}

@media (min-width:821px){
  /* Stage 13B — CTA-lab width parity: neutralize late 980/640 and 1120/720 caps on default CTA, blog hub and services pages by mapping them back to the shared shell tokens. */
  body:not(.dsk-page-home):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__inner,
  body.dsk-blog-hub .dsk-cta-lab__inner,
  body.dsk-page-uslugi .dsk-cta-lab__inner{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    box-sizing:border-box !important;
  }

  body:not(.dsk-page-home):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__copy,
  body:not(.dsk-page-home):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__text,
  body:not(.dsk-page-home):not(.dsk-blog-article) #default-contact-cta-section-template .dsk-cta-lab__title,
  body.dsk-blog-hub .dsk-cta-lab__copy,
  body.dsk-blog-hub .dsk-cta-lab__text,
  body.dsk-blog-hub .dsk-cta-lab__title,
  body.dsk-page-uslugi .dsk-cta-lab__copy,
  body.dsk-page-uslugi .dsk-cta-lab__text,
  body.dsk-page-uslugi .dsk-cta-lab__title{
    max-width:none !important;
  }
}

@media (min-width:768px){
  /* Stage 13C — default-contact CTA sb-text-image parity: neutralize 860/760/18ch/62ch caps from the late bundles as soon as those tablet/desktop rules begin applying. */
  #default-contact-cta-section-template .sb-text-image__content,
  #default-contact-cta-section-template .sb-text-image__content-title,
  #default-contact-cta-section-template .sb-title .display-font,
  #default-contact-cta-section-template .sb-text-image__content-paragraph,
  #default-contact-cta-section-template .sb-subtitle{
    width:100% !important;
    max-width:none !important;
  }
}


@media (min-width:821px) and (max-width:1023.98px){
  /* Stage 14 — laptop parity for global copy: Stage 13A removed the late 68ch caps only from 1024px up, but the original custom-styles limiter has no breakpoint at all. On 821–1023px laptop widths the shell was already widened while article/content copy could still sit inside 68ch, so keep the same reset in this upper-tablet / small-laptop band. */
  #sb-page-structure :where(.content,.article,.text-content){
    width:100% !important;
    max-width:min(100%,var(--dsk-layout-shell-max)) !important;
    margin-left:0 !important;
    margin-right:0 !important;
    box-sizing:border-box !important;
  }

  #sb-page-structure main section > div > :is(p,ul,ol,h1,h2,h3){
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
  }
}

/* Stage 15 retired — service-template desktop width ownership lives in
   `dsk-service-layout-unify.v2.css`. Keeping these page-class selectors here
   caused cross-page leakage because many non-HDD services still carry the
   `.dsk-page-hdd` class in HTML. */

/* Stage 16 retired — readability parity for the service family now belongs
   to `dsk-service-layout-unify.v2.css`, which scopes by `#service-template`
   instead of fragile per-page HTML classes. */



/* Stage 38 — service family ownership moved to dsk-service-layout-unify.v2.css.
   Keep the global layout layer out of ordinary `#service-template` widths so the
   service family has one desktop source of truth. */

@media (min-width:769px){
  /* Stage 39 — non-home footer desktop axis parity: shared non-home page families now use --dsk-layout-shell-max for their outer shell, but the footer still ships with a late local 1240px cap in site.noncritical.bundle.v3.min.css. Promote only the visible non-home footer frame to the same shell token on desktop/laptop so footer aligns with the shared header/content axis without touching home footer styling. */
  html body:not(.dsk-page-home) footer.dsk-site-footer .dsk-custom-footer,
  html body:not(.dsk-page-home) .sb-footer.dsk-site-footer .dsk-custom-footer{
    width:min(var(--dsk-layout-shell-max),calc(100% - (var(--dsk-layout-shell-gutter) * 2))) !important;
    max-width:var(--dsk-layout-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-layout-shell-gutter) !important;
    padding-right:var(--dsk-layout-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  /* Stage 57 pass 3 — shipping family already inherits the shared desktop shell
     from the outer B12 container. Zero only the duplicated inner padding that is
     also reintroduced by page-local CSS, so FAQ and CTA panels sit on the same
     1280px content band as the footer grid. */
  body:not(.dsk-page-home) main #blank-hero.dsk-ship-page .sb-text-image-vertical__content.sb-text-image-vertical__content,
  body:not(.dsk-page-home) main #blank-hero.dsk-ship-page .sb-text-image-vertical__content-cta.sb-text-image-vertical__content-cta{
    width:100% !important;
    max-width:none !important;
    margin-left:0 !important;
    margin-right:0 !important;
    padding-left:0 !important;
    padding-right:0 !important;
    box-sizing:border-box !important;
  }
}

/* Stage 176A — local_lp family shell ownership: Warsaw local landing pages were
   still inheriting the ordinary service family widths while Bialoleka used the
   location family. Keep geometry unchanged (1320 / 1100 / 1040 / 20), but route
   both patterns through one shared local_lp token layer keyed by body[data-page-type="local_lp"],
   with body.dsk-page-location-bialoleka as the CSS-only fallback for the PL Bialoleka page
   that still lacks the local_lp body dataset. This isolates local landing ownership without
   touching HTML, JS, sticky, nav or copy. */
:root{
  --dsk-local-lp-shell-max:var(--dsk-layout-shell-max,1320px);
  --dsk-local-lp-shell-gutter:var(--dsk-layout-shell-gutter,20px);
  --dsk-local-lp-content-max:var(--dsk-layout-content-max,1100px);
  --dsk-local-lp-copy-max:var(--dsk-layout-copy-max,1040px);
}

@media (min-width:769px){
  body[data-page-type="local_lp"],
  body.dsk-page-location-bialoleka{
    --dsk-local-lp-shell-max:var(--dsk-layout-shell-max,var(--site-max-width,1320px));
    --dsk-local-lp-shell-gutter:var(--dsk-layout-shell-gutter,var(--mobile-gutter,20px));
    --dsk-local-lp-content-max:var(--dsk-layout-content-max,1100px);
    --dsk-local-lp-copy-max:var(--dsk-layout-copy-max,1040px);
    --dsk-service-shell-max:var(--dsk-local-lp-shell-max);
    --dsk-service-shell-gutter:var(--dsk-local-lp-shell-gutter);
    --dsk-service-content-max:var(--dsk-local-lp-content-max);
    --dsk-service-copy-max:var(--dsk-local-lp-copy-max);
    --dsk-location-shell-max:var(--dsk-local-lp-shell-max);
    --dsk-location-shell-gutter:var(--dsk-local-lp-shell-gutter);
    --dsk-location-content-max:var(--dsk-local-lp-content-max);
    --dsk-location-copy-max:var(--dsk-local-lp-copy-max);
  }

  body[data-page-type="local_lp"] main .container.sb-container-fixed.sb-container,
  body.dsk-page-location-bialoleka main .container.sb-container-fixed.sb-container,
  body[data-page-type="local_lp"] footer.dsk-site-footer .dsk-custom-footer,
  body.dsk-page-location-bialoleka footer.dsk-site-footer .dsk-custom-footer,
  body[data-page-type="local_lp"] .sb-footer.dsk-site-footer .dsk-custom-footer,
  body.dsk-page-location-bialoleka .sb-footer.dsk-site-footer .dsk-custom-footer{
    width:min(var(--dsk-local-lp-shell-max),calc(100% - (var(--dsk-local-lp-shell-gutter) * 2))) !important;
    max-width:var(--dsk-local-lp-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-local-lp-shell-gutter) !important;
    padding-right:var(--dsk-local-lp-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  body[data-page-type="local_lp"] #service-template > .container.sb-container-fixed.sb-container,
  body.dsk-page-location-bialoleka #service-template > .container.sb-container-fixed.sb-container,
  body[data-page-type="local_lp"] #service-template + section > .container.sb-container-fixed.sb-container,
  body.dsk-page-location-bialoleka #service-template + section > .container.sb-container-fixed.sb-container{
    width:min(var(--dsk-local-lp-shell-max),calc(100% - (var(--dsk-local-lp-shell-gutter) * 2))) !important;
    max-width:var(--dsk-local-lp-shell-max) !important;
    margin-left:auto !important;
    margin-right:auto !important;
    padding-left:var(--dsk-local-lp-shell-gutter) !important;
    padding-right:var(--dsk-local-lp-shell-gutter) !important;
    box-sizing:border-box !important;
  }

  body[data-page-type="local_lp"] #service-template .sb-text-image__content.sb-text-image__content,
  body.dsk-page-location-bialoleka #service-template .sb-text-image__content.sb-text-image__content,
  body[data-page-type="local_lp"] #service-template .sb-title.sb-title,
  body.dsk-page-location-bialoleka #service-template .sb-title.sb-title,
  body[data-page-type="local_lp"] #service-template .sb-subtitle.sb-subtitle,
  body.dsk-page-location-bialoleka #service-template .sb-subtitle.sb-subtitle,
  body[data-page-type="local_lp"] #service-template .sb-text-image__content-cta.sb-text-image__content-cta,
  body.dsk-page-location-bialoleka #service-template .sb-text-image__content-cta.sb-text-image__content-cta,
  body[data-page-type="local_lp"] #service-template .dsk-subnav.dsk-subnav,
  body.dsk-page-location-bialoleka #service-template .dsk-subnav.dsk-subnav,
  body[data-page-type="local_lp"] #service-template h1.sb-text-image__content-title.sb-text-image__content-title,
  body.dsk-page-location-bialoleka #service-template h1.sb-text-image__content-title.sb-text-image__content-title,
  body[data-page-type="local_lp"] #service-template .sb-text-image__content-title.sb-text-image__content-title,
  body.dsk-page-location-bialoleka #service-template .sb-text-image__content-title.sb-text-image__content-title{
    width:100% !important;
    max-width:var(--dsk-local-lp-content-max) !important;
    margin-left:0 !important;
    margin-right:auto !important;
    align-self:flex-start !important;
    justify-self:start !important;
    text-align:left !important;
  }

  body[data-page-type="local_lp"] #service-template .sb-text-image__content-paragraph.sb-text-image__content-paragraph,
  body.dsk-page-location-bialoleka #service-template .sb-text-image__content-paragraph.sb-text-image__content-paragraph,
  body[data-page-type="local_lp"] #service-template .alert-box.alert-box,
  body.dsk-page-location-bialoleka #service-template .alert-box.alert-box,
  body[data-page-type="local_lp"] #service-template .dsk-steps-ol.dsk-steps-ol,
  body.dsk-page-location-bialoleka #service-template .dsk-steps-ol.dsk-steps-ol,
  body[data-page-type="local_lp"] #service-template .dsk-icon-list.dsk-icon-list,
  body.dsk-page-location-bialoleka #service-template .dsk-icon-list.dsk-icon-list,
  body[data-page-type="local_lp"] #service-template .dsk-method-list.dsk-method-list,
  body.dsk-page-location-bialoleka #service-template .dsk-method-list.dsk-method-list{
    width:100% !important;
    max-width:var(--dsk-local-lp-copy-max) !important;
    margin-left:0 !important;
    margin-right:auto !important;
    align-self:flex-start !important;
    justify-self:start !important;
    text-align:left !important;
  }
}
