:root{
  --dsk-service-shell-max:1240px;
  --dsk-service-shell-gutter:20px;
  --dsk-service-content-max:1100px;
  --dsk-service-copy-max:1040px;
}

html,body{background:#050710;overflow-y:scroll!important;scrollbar-gutter:stable;}

#service-template{
  --section-height:auto;
}

/* Cut 8 wave A - service family inline heading ownership.
   Move the repeated margin/color/alignment contract from service HTML into the
   service owner so the same reset no longer lives on dozens of pages. */
#service-template .dsk-service-inline-heading{
  margin:0;
  margin-bottom:10px;
  color:inherit;
  padding:0;
  text-align:left;
  word-wrap:normal;
}

#service-template .sb-text-image__content,
#service-template .sb-text-image__content-paragraph,
#service-template .sb-text-image__content-cta,
#service-template .sb-title,
#service-template .sb-subtitle,
#service-template .dsk-subnav,
#service-template .alert-box,
#service-template .dsk-steps-ol,
#service-template .dsk-icon-list,
#service-template .dsk-method-list,
#service-template .sb-column,
#service-template .sb-column-content,
#service-template + section .sb-column,
#service-template + section .sb-column-content,
#service-template + section .sb-text-image__content,
#service-template + section .sb-text-image__content-paragraph,
#service-template + section .sb-text-image__content-cta,
#service-template + section .sb-title,
#service-template + section .sb-subtitle,
#service-template + section .alert-box,
#service-template + section .dsk-steps-ol,
#service-template + section .dsk-icon-list,
#service-template + section .dsk-method-list{
  min-width:0;
  max-width:100%;
  box-sizing:border-box;
}

#service-template .sb-title .display-font,
#service-template .sb-subtitle span,
#service-template .sb-text-image__content-paragraph p,
#service-template .sb-text-image__content-paragraph li,
#service-template .sb-text-image__content-paragraph a,
#service-template .sb-text-image__content-paragraph strong,
#service-template .sb-text-image__content-paragraph em,
#service-template .dsk-subnav__item,
#service-template .alert-box,
#service-template .alert-box a,
#service-template + section p,
#service-template + section li,
#service-template + section a,
#service-template + section .sb-title .display-font,
#service-template + section .sb-subtitle span{
  overflow-wrap:anywhere;
  word-break:break-word;
  hyphens:auto;
}

#service-template img,
#service-template svg,
#service-template video,
#service-template iframe,
#service-template canvas,
#service-template figure,
#service-template table,
#service-template pre,
#service-template code,
#service-template + section img,
#service-template + section svg,
#service-template + section video,
#service-template + section iframe,
#service-template + section canvas,
#service-template + section figure,
#service-template + section table,
#service-template + section pre,
#service-template + section code{
  max-width:100%;
  box-sizing:border-box;
}

#service-template pre,
#service-template table,
#service-template + section pre,
#service-template + section table{
  display:block;
  overflow-x:auto;
}
@media (min-width:769px){
  :root{
    --dsk-service-shell-max:var(--dsk-layout-shell-max,var(--site-max-width,1320px));
    --dsk-service-shell-gutter:var(--dsk-layout-shell-gutter,var(--mobile-gutter,20px));
    --dsk-service-content-max:var(--dsk-layout-content-max,1100px);
    --dsk-service-copy-max:var(--dsk-layout-copy-max,1040px);
  }

  /* Stage 39 — service family source-of-truth: this shared file is only loaded on service pages, so scope the desktop service stack to `#service-template` itself instead of relying on body-scoped page selectors that miss many live pages. Keep service content/copy tokens on 1100/1040 here; the later shell-promotion for the visible top stack remains intentionally handled by the final stage in dsk-layout-system. */
  #service-template > .container.sb-container-fixed.sb-container,
  #service-template + section > .container.sb-container-fixed.sb-container{
    width:min(var(--dsk-service-shell-max),calc(100% - (var(--dsk-service-shell-gutter) * 2)));
    max-width:var(--dsk-service-shell-max);
    margin-left:auto;
    margin-right:auto;
    padding-left:var(--dsk-service-shell-gutter);
    padding-right:var(--dsk-service-shell-gutter);
    box-sizing:border-box;
  }

  #service-template .sb-text-image__content.sb-text-image__content,
  #service-template .sb-title.sb-title,
  #service-template .sb-subtitle.sb-subtitle,
  #service-template .sb-text-image__content-cta.sb-text-image__content-cta,
  #service-template .dsk-subnav.dsk-subnav,
  #service-template .sb-text-image__content-paragraph.sb-text-image__content-paragraph,
  #service-template .alert-box.alert-box,
  #service-template .dsk-steps-ol.dsk-steps-ol,
  #service-template .dsk-icon-list.dsk-icon-list,
  #service-template .dsk-method-list.dsk-method-list{
    display:block !important;
    width:100%;
    max-width:var(--dsk-service-copy-max);
    margin-left:0;
    margin-right:auto;
    align-self:flex-start;
    justify-self:start;
    text-align:left;
  }

  #service-template .dsk-subnav.dsk-subnav{
    gap:10px !important;
    margin:14px 0 26px;
  }

  /* Keep service H1 titles aligned to the same left edge as the body copy
     and let them use the whole copy measure instead of centering inside a clamp. */
  #service-template h1.sb-text-image__content-title.sb-text-image__content-title,
  #service-template .sb-text-image__content-title.sb-text-image__content-title{
    display:block;
    width:100%;
    max-width:var(--dsk-service-copy-max);
    margin-left:0;
    margin-right:auto;
    align-self:flex-start;
    justify-self:start;
    text-align:left;
    text-wrap:balance;
    word-break:normal;
    overflow-wrap:normal;
    hyphens:manual;
  }
  /* Stage 45A — service family width ownership: keep the ordinary service
     pages on a single source of truth inside this dedicated file.
     Outer service sections stay on the shared shell, the visible hero/subnav/CTA
     stack uses the service shell width, and long copy / alerts / lists stay on
     the readable copy width. This removes the split ownership with the later
     global layout file without touching page HTML or mobile. */
  #service-template .sb-text-image__content,
  #service-template .sb-text-image__content-title,
  #service-template .sb-text-image__content-paragraph,
  #service-template .sb-text-image__content-cta,
  #service-template .sb-title,
  #service-template .sb-subtitle,
  #service-template .dsk-subnav,
  #service-template .alert-box,
  #service-template .dsk-steps-ol,
  #service-template .dsk-icon-list,
  #service-template .dsk-method-list{
    margin-left:0;
    margin-right:auto;
    justify-self:start;
    align-self:flex-start;
    text-align:left;
  }

  #service-template .sb-text-image__content,
  #service-template .sb-title,
  #service-template .sb-subtitle,
  #service-template .sb-text-image__content-cta,
  #service-template .dsk-subnav{
    width:100%;
    max-width:var(--dsk-service-shell-max);
  }

  #service-template .sb-text-image__content-title,
  #service-template .sb-text-image__content-paragraph,
  #service-template .alert-box,
  #service-template .dsk-steps-ol,
  #service-template .dsk-icon-list,
  #service-template .dsk-method-list{
    width:100%;
    max-width:var(--dsk-service-copy-max);
  }

  /* Stage 57 pass 3 — ordinary service intro stack must live on content-width,
     not copy-width. The earlier service block uses duplicated class selectors and
     still wins over the later shell-promotion attempt, so restate the live
     wrappers with higher specificity here. Keep long body copy on copy-width. */
  #service-template .sb-text-image__content.sb-text-image__content,
  #service-template .sb-title.sb-title,
  #service-template .sb-subtitle.sb-subtitle,
  #service-template .sb-text-image__content-cta.sb-text-image__content-cta,
  #service-template .dsk-subnav.dsk-subnav,
  #service-template h1.sb-text-image__content-title.sb-text-image__content-title,
  #service-template .sb-text-image__content-title.sb-text-image__content-title{
    width:100%;
    max-width:var(--dsk-service-content-max);
    margin-left:0;
    margin-right:auto;
    align-self:flex-start;
    justify-self:start;
    text-align:left;
  }

  #service-template .sb-text-image__content-paragraph.sb-text-image__content-paragraph,
  #service-template .alert-box.alert-box,
  #service-template .dsk-steps-ol.dsk-steps-ol,
  #service-template .dsk-icon-list.dsk-icon-list,
  #service-template .dsk-method-list.dsk-method-list{
    width:100%;
    max-width:var(--dsk-service-copy-max);
    margin-left:0;
    margin-right:auto;
    align-self:flex-start;
    justify-self:start;
    text-align:left;
  }
}

@media (min-width:769px) and (max-width:1439px){
  /* Stage 57 pass 3 — service pages with a live media column should not force a
     40% left rail on desktop/laptop. The inline page patch flips the media row
     and creates a narrow content island; keep the image below the content until
     there is enough room for a compact right-side visual. */
  #service-template .sb-text-image.sb-text-image{
    display:flex;
    flex-direction:column;
    align-items:flex-start;
    justify-content:flex-start !important;
    gap:20px;
  }

  #service-template .sb-text-image__content.sb-text-image__content{
    order:1;
    flex:0 1 auto;
    margin-right:0;
  }

  #service-template .sb-text-image__image.sb-text-image__image{
    order:2;
    display:flex;
    flex:0 0 auto;
    width:min(320px,100%);
    max-width:min(320px,100%);
    margin:0;
    align-self:flex-start;
  }

  #service-template .sb-text-image__image .option-image,
  #service-template .sb-text-image__image figure{
    width:100%;
    max-width:100%;
    margin-left:0;
    margin-right:auto;
  }
}

@media (min-width:1440px){
  /* Stage 57 pass 3 — at wide desktop keep the ordinary service text on the
     shared 1100px content axis and park the decorative/service visual inside the
     remaining 160px footer gutter so the whole module still reads as one 1280px
     content band inside the 1320px shell. */
  #service-template .sb-text-image.sb-text-image{
    display:flex;
    flex-direction:row;
    align-items:flex-start;
    justify-content:flex-start;
    gap:20px;
  }

  #service-template .sb-text-image__content.sb-text-image__content{
    order:1;
    flex:0 1 var(--dsk-service-content-max);
    width:100%;
    max-width:var(--dsk-service-content-max);
    margin-right:0;
  }

  #service-template .sb-text-image__image.sb-text-image__image{
    order:2;
    display:flex;
    flex:0 0 160px;
    width:160px;
    max-width:160px;
    margin:0;
    align-self:flex-start;
  }

  #service-template .sb-text-image__image .option-image,
  #service-template .sb-text-image__image figure{
    width:160px;
    max-width:160px;
    margin-left:0;
    margin-right:0;
  }
}

@media (min-width:821px){
  /* Stage 57 pass 4 — ordinary service pages: align the visible service stack to
     the same inner band as the footer grid across laptop/desktop, and remove the
     leftover B12 column inset that kept 821–1280 views narrower than footer. */
  #service-template > .container.sb-container-fixed.sb-container > .row.sb-row > .sb-column:only-child,
  #service-template + section > .container.sb-container-fixed.sb-container > .row.sb-row > .sb-column:only-child{
    padding-left:0;
    padding-right:0;
  }

  #service-template .sb-column,
  #service-template .sb-column-content,
  #service-template + section .sb-column,
  #service-template + section .sb-column-content{
    width:100%;
    max-width:none;
    min-width:0;
    flex:0 0 100%;
    box-sizing:border-box;
  }

  #service-template .sb-text-image__content.sb-text-image__content,
  #service-template .sb-title.sb-title,
  #service-template .sb-subtitle.sb-subtitle,
  #service-template .dsk-subnav.dsk-subnav,
  #service-template h1.sb-text-image__content-title.sb-text-image__content-title,
  #service-template .sb-text-image__content-title.sb-text-image__content-title{
    width:100%;
    max-width:calc(var(--dsk-service-shell-max) - (var(--dsk-service-shell-gutter) * 2)) !important;
    margin-left:0;
    margin-right:auto;
    box-sizing:border-box;
  }

  #service-template .sb-text-image__content-paragraph.sb-text-image__content-paragraph,
  #service-template .sb-text-image__content-cta.sb-text-image__content-cta,
  #service-template .alert-box.alert-box,
  #service-template .dsk-steps-ol.dsk-steps-ol,
  #service-template .dsk-icon-list.dsk-icon-list,
  #service-template .dsk-method-list.dsk-method-list{
    width:100%;
    max-width:min(1200px,calc(var(--dsk-service-shell-max) - (var(--dsk-service-shell-gutter) * 2)));
    margin-left:0;
    margin-right:auto;
    box-sizing:border-box;
  }
}

@media (min-width:1440px){
  /* Stage 57 pass 4B — no-image service pages should not snap back to the old
     1100px rail on wide desktop. Keep image variants on the compact split layout,
     but let plain service pages use the full inner band with a still-readable
     1200px copy measure. */
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .sb-text-image__content.sb-text-image__content,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .sb-title.sb-title,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .sb-subtitle.sb-subtitle,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .dsk-subnav.dsk-subnav,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) h1.sb-text-image__content-title.sb-text-image__content-title,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .sb-text-image__content-title.sb-text-image__content-title{
    flex:0 1 calc(var(--dsk-service-shell-max) - (var(--dsk-service-shell-gutter) * 2)) !important;
    width:100% !important;
    max-width:calc(var(--dsk-service-shell-max) - (var(--dsk-service-shell-gutter) * 2)) !important;
    margin-left:0 !important;
    margin-right:auto !important;
  }

  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .sb-text-image__content-paragraph.sb-text-image__content-paragraph,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .sb-text-image__content-cta.sb-text-image__content-cta,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .alert-box.alert-box,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .dsk-steps-ol.dsk-steps-ol,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .dsk-icon-list.dsk-icon-list,
  #service-template .sb-text-image:not(:has(.sb-text-image__image)) .dsk-method-list.dsk-method-list{
    width:100% !important;
    max-width:min(1200px,calc(var(--dsk-service-shell-max) - (var(--dsk-service-shell-gutter) * 2))) !important;
    margin-left:0 !important;
    margin-right:auto !important;
  }
}

@media (max-width:768px){
  /* Stage 58 — mobile service readability pass: the desktop cleanup left service pages with a still-heavy 20px shell gutter plus aggressive `overflow-wrap:anywhere`, which makes H1/H2/card headings break too early on narrow phones. Keep geometry simple, but relax the gutter, restore normal wrapping, and trim inner card/panel padding so copy gets a little more usable width without touching desktop. */
  :root{
    --dsk-service-shell-gutter:16px;
  }

  #service-template > .container.sb-container-fixed.sb-container,
  #service-template + section > .container.sb-container-fixed.sb-container,
  #default-contact-cta-section-template > .container.sb-container-fixed.sb-container{
    padding-left:var(--dsk-service-shell-gutter);
    padding-right:var(--dsk-service-shell-gutter);
    box-sizing:border-box;
  }

  #service-template .sb-column,
  #service-template .sb-column-content,
  #service-template .sb-text-image__content,
  #service-template .sb-text-image__content-paragraph,
  #service-template .sb-text-image__content-cta,
  #service-template .sb-title,
  #service-template .sb-subtitle,
  #service-template .dsk-subnav,
  #service-template .alert-box,
  #service-template .dsk-steps-ol,
  #service-template .dsk-icon-list,
  #service-template .dsk-method-list,
  #service-template + section .sb-column,
  #service-template + section .sb-column-content,
  #service-template + section .sb-text-image__content,
  #service-template + section .sb-text-image__content-paragraph,
  #service-template + section .sb-text-image__content-cta,
  #service-template + section .sb-title,
  #service-template + section .sb-subtitle{
    width:100%;
    max-width:none;
    min-width:0;
    box-sizing:border-box;
  }

  #service-template .sb-title .display-font,
  #service-template h1.sb-text-image__content-title,
  #service-template .sb-text-image__content-title,
  #service-template + section .sb-title .display-font,
  #service-template + section h1,
  #default-contact-cta-section-template .sb-title .display-font,
  #default-contact-cta-section-template h1{
    overflow-wrap:normal;
    word-break:normal;
    hyphens:none;
    text-wrap:balance;
  }

  #service-template .sb-title .display-font,
  #service-template h1.sb-text-image__content-title,
  #service-template .sb-text-image__content-title{
    font-size:clamp(1.85rem,7.9vw,2.45rem);
    line-height:1.06;
    letter-spacing:-0.03em;
  }

  #service-template .sb-subtitle span,
  #service-template .sb-text-image__content-paragraph h2,
  #service-template .sb-text-image__content-paragraph h3,
  #service-template + section h2,
  #service-template + section h3,
  #sb-page-structure .items-grid__header .display-font,
  #sb-page-structure .items-grid__header.h3 .display-font,
  #sb-page-structure .dsk-service-panel h2,
  #sb-page-structure .dsk-service-panel h3,
  #sb-page-structure .dsk-related-services h2,
  #sb-page-structure .dsk-related-articles h2,
  #sb-page-structure .dsk-related-services h3,
  #sb-page-structure .dsk-related-articles h3{
    overflow-wrap:normal;
    word-break:normal;
    hyphens:none;
    text-wrap:balance;
  }

  #service-template .sb-text-image__content-paragraph p,
  #service-template .sb-text-image__content-paragraph li,
  #service-template .sb-text-image__content-paragraph a,
  #service-template + section p,
  #service-template + section li,
  #service-template + section a,
  #sb-page-structure .items-grid__summary,
  #sb-page-structure .items-grid__description p,
  #sb-page-structure .dsk-service-panel p,
  #sb-page-structure .dsk-service-panel li,
  #sb-page-structure .dsk-related-services p,
  #sb-page-structure .dsk-related-services li,
  #sb-page-structure .dsk-related-articles p,
  #sb-page-structure .dsk-related-articles li{
    overflow-wrap:break-word !important;
    word-break:normal;
    hyphens:none;
  }
}


/* Stage 59 — mobile service consistency pass: the stage-192 scan across the mobile screenshots plus codebase showed the remaining drift is no longer in the first hero/content band itself, but in later service sections that still inherit page-local `20px` mobile container lifts and aggressive wrap defaults. This family file loads after those inline blocks on the affected service pages, so make it the final mobile owner for ALL page-structure sections on service templates: keep one 16px outer gutter, 14px inner card/panel padding, zero duplicated text-wrapper insets, and relax headings/copy so Polish text stops breaking too early. */
@media (max-width:768px){
  :root{
    --dsk-service-mobile-gutter:16px;
    --dsk-service-mobile-inner-pad:14px;
  }

  #sb-page-structure > .sb-section > .container.sb-container-fixed.sb-container,
  #sb-page-structure > section > .container.sb-container-fixed.sb-container{
    padding-left:var(--dsk-service-mobile-gutter);
    padding-right:var(--dsk-service-mobile-gutter);
    box-sizing:border-box;
  }

  #sb-page-structure .sb-text-image__content,
  #sb-page-structure .sb-text-image__content-paragraph,
  #sb-page-structure .sb-text-image__content-cta,
  #sb-page-structure .sb-text-image__content-title,
  #sb-page-structure .sb-title,
  #sb-page-structure .sb-subtitle,
  #sb-page-structure .items-grid__item-content,
  #sb-page-structure .items-grid__summary,
  #sb-page-structure .items-grid__description,
  #sb-page-structure .dsk-subnav,
  #sb-page-structure .alert-box,
  #sb-page-structure .dsk-steps-ol,
  #sb-page-structure .dsk-icon-list,
  #sb-page-structure .dsk-method-list,
  #sb-page-structure .contact-details,
  #sb-page-structure .dsk-service-panel,
  #sb-page-structure .dsk-related-services,
  #sb-page-structure .dsk-related-articles{
    width:100%;
    max-width:none !important;
    min-width:0;
    box-sizing:border-box;
  }

  #sb-page-structure .sb-text-image__content,
  #sb-page-structure .sb-text-image__content-paragraph,
  #sb-page-structure .sb-text-image__content-cta,
  #sb-page-structure .sb-text-image__content-title,
  #sb-page-structure .sb-title,
  #sb-page-structure .sb-subtitle,
  #sb-page-structure .items-grid__item-content,
  #sb-page-structure .items-grid__summary,
  #sb-page-structure .items-grid__description{
    padding-left:0;
    padding-right:0;
  }

  #sb-page-structure .items-grid__item-body,
  #sb-page-structure .dsk-service-panel,
  #sb-page-structure .dsk-related-services,
  #sb-page-structure .dsk-related-articles,
  #sb-page-structure .contact-details,
  #sb-page-structure .alert-box{
    padding-left:var(--dsk-service-mobile-inner-pad) !important;
    padding-right:var(--dsk-service-mobile-inner-pad) !important;
  }

  #sb-page-structure h1,
  #sb-page-structure h2,
  #sb-page-structure h3,
  #sb-page-structure h4,
  #sb-page-structure .sb-title .display-font,
  #sb-page-structure .sb-subtitle span,
  #sb-page-structure .items-grid__header .display-font,
  #sb-page-structure .items-grid__header.h3 .display-font,
  #sb-page-structure .items-grid__item-title,
  #sb-page-structure .dsk-servicecard__label,
  #sb-page-structure .dsk-subnav__item,
  #sb-page-structure .contact-details a{
    overflow-wrap:normal;
    word-break:normal;
    hyphens:none;
    text-wrap:balance;
  }

  #sb-page-structure p,
  #sb-page-structure li,
  #sb-page-structure .dsk-servicecard__desc,
  #sb-page-structure .items-grid__summary,
  #sb-page-structure .items-grid__description p,
  #sb-page-structure .contact-details p{
    overflow-wrap:break-word;
    word-break:normal;
    hyphens:none;
  }
}

/* Stage 507: shared CTA defer owner for selected service pages */
.sb-text-image__content-cta{content-visibility:auto;contain-intrinsic-size:auto 220px;}
@media (max-width: 767px){
  .sb-text-image__content-cta{contain-intrinsic-size:auto 320px;}
}
/* Stage 508: shared service guides defer owner for selected service pages */
.dsk-guides-section,#guides-and-articles{content-visibility:auto;contain-intrinsic-size:auto 560px;}
@media (max-width: 767px){
  .dsk-guides-section,#guides-and-articles{contain-intrinsic-size:auto 760px;}
}
/* Stage 608: MacBook PL/EN CTA defer owner move */
.dsk-page-macbook #default-contact-cta-section-template{content-visibility:auto;contain-intrinsic-size:auto 620px;}
@media (max-width: 767px){}


/* Stage 510 — RAID PL/EN mobile rhythm owner: move the identical inline mobile spacing patch for the RAID service pair into the shared service owner so the HTML no longer carries per-page duplicates. Scoped to `.dsk-page-raid`, so this does not affect other service pages. */
@media (max-width: 767px){}
@media (max-width: 390px){}


/* stage512: macbook PL/EN mobile rhythm moved from per-page inline hotfix to shared owner */
@media (max-width:767px){}
@media (max-width:390px){}


/* Stage 513 — HDD PL/EN mobile rhythm moved from inline HTML to shared owner */
@media (max-width:767px){:where(.dsk-page-hdd) .dsk-subnav{gap:8px;margin:10px 0 16px;}:where(.dsk-page-hdd) .dsk-subnav__item{padding:10px 12px;border-radius:12px;font-size:.95rem;box-shadow:0 6px 14px rgba(0,0,0,.04);}:where(.dsk-page-hdd) .dsk-subnav__item::after{font-size:1.125rem;margin-left:10px;opacity:.5;}:where(.dsk-page-hdd) .dsk-icon-list, :where(.dsk-page-hdd) .dsk-method-list, :where(.dsk-page-hdd) .dsk-steps-ol{margin:10px 0 14px;}:where(.dsk-page-hdd) .dsk-icon-list > li{padding:10px 10px 10px 38px;border-radius:12px;margin:8px 0;}:where(.dsk-page-hdd) .dsk-icon-list > li::before{left:12px;top:9px;}
  .dsk-page-hdd .dsk-method-list > li{padding:10px 10px 10px 12px;border-radius:12px;}:where(.dsk-page-hdd) .alert-box{padding:12px 12px;border-radius:14px;margin:12px 0 16px;}:where(.dsk-page-hdd) .alert-box p{margin:0 0 8px;}
  .dsk-page-hdd .dsk-steps-ol > li{padding:10px 10px 10px 40px;border-radius:12px;margin:8px 0;box-shadow:0 6px 14px rgba(0,0,0,.035);}}
@media (max-width:390px){:where(.dsk-page-hdd) .dsk-subnav{gap:8px;margin:8px 0 14px;}:where(.dsk-page-hdd) .dsk-subnav__item{padding:9px 10px;border-radius:11px;font-size:.92rem !important;}:where(.dsk-page-hdd) .dsk-icon-list, :where(.dsk-page-hdd) .dsk-method-list, :where(.dsk-page-hdd) .dsk-steps-ol{margin:8px 0 12px !important;}:where(.dsk-page-hdd) .dsk-icon-list > li{padding:9px 9px 9px 34px;border-radius:11px;margin:7px 0;}:where(.dsk-page-hdd) .dsk-icon-list > li::before{left:11px;top:8px;}
  .dsk-page-hdd .dsk-method-list > li{padding:9px 9px 9px 11px;border-radius:11px;}:where(.dsk-page-hdd) .alert-box{padding:10px 10px;border-radius:12px;margin:10px 0 14px !important;}:where(.dsk-page-hdd) .alert-box p{margin:0 0 7px;}
  .dsk-page-hdd .dsk-steps-ol > li{padding:9px 9px 9px 36px;border-radius:11px;margin:7px 0;}}


/* Stage 514 — memory card PL/EN mobile rhythm moved from inline HTML to shared owner */
@media (max-width:767px){}
@media (max-width:390px){}


/* Stage 521 — Business PL/EN mobile rhythm moved from inline HTML to shared owner */
@media (max-width: 767px){}
@media (max-width: 390px){}

/* Stage 544 — Warsaw local page mobile rhythm moved from inline HTML to shared owner */
@media (max-width:767px){
  .dsk-page-warszawa .dsk-icon-list,
  .dsk-page-warszawa .dsk-method-list,
  .dsk-page-warszawa .dsk-steps-ol{margin:10px 0 14px;}
  .dsk-page-warszawa .dsk-icon-list > li{padding:10px 10px 10px 38px;border-radius:12px;margin:8px 0 !important;}
  .dsk-page-warszawa .dsk-icon-list > li::before{left:12px;top:9px;}  .dsk-page-warszawa .alert-box{padding:12px;border-radius:14px;margin:12px 0 16px;}
  .dsk-page-warszawa .alert-box p{margin:0 0 8px;}
  .dsk-page-warszawa .dsk-steps-ol > li{padding:10px 10px 10px 40px;border-radius:12px;margin:8px 0 !important;box-shadow:0 8px 18px rgba(0,0,0,.035) !important;}
  .dsk-page-warszawa .dsk-steps-ol > li::before{left:12px;top:9px;width:20px;height:20px;font-size:.75rem;}
}
@media (max-width:390px){
  .dsk-page-warszawa .dsk-icon-list,
  .dsk-page-warszawa .dsk-method-list,
  .dsk-page-warszawa .dsk-steps-ol{margin:8px 0 12px;}
  .dsk-page-warszawa .dsk-icon-list > li{padding:9px 9px 9px 34px !important;border-radius:10px !important;}
  .dsk-page-warszawa .dsk-icon-list > li::before{left:10px;top:8px;}  .dsk-page-warszawa .alert-box{padding:10px !important;border-radius:12px !important;margin:10px 0 14px !important;}
  .dsk-page-warszawa .dsk-steps-ol > li{padding:9px 9px 9px 36px !important;border-radius:10px !important;}
  .dsk-page-warszawa .dsk-steps-ol > li::before{left:10px;top:8px;width:18px;height:18px;font-size:.6875rem;}
}


/* Stage 545 — Warsaw PL/EN subnav shell + pills moved from inline HTML to shared owner */
/* Warszawa: sub-navigation pills (match RAID service pages) */
  .dsk-page-warszawa .dsk-subnav{
    display:flex;
    flex-wrap:wrap;
    gap:10px;
    margin:14px 0 26px;
  }
  .dsk-page-warszawa .dsk-subnav__item{
    display:inline-flex;
    align-items:center;
    gap:10px;
    padding:10px 14px;
    border-radius:999px;
    background:rgba(0,0,0,.03);
    border:1px solid rgba(0,0,0,.10);
    text-decoration:none;
    color:#111827;
    font-weight:700;
    transition:transform .12s ease, background .12s ease, border-color .12s ease;
  }
  .dsk-page-warszawa .dsk-subnav__item::after{ content:""; }
  .dsk-page-warszawa .dsk-subnav__item:hover{
    background:rgba(22,163,74,.10);
    border-color:rgba(22,163,74,.35);
    transform:translateY(-1px);
  }
  .dsk-page-warszawa .dsk-subnav__item:focus-visible{
    outline:3px solid rgba(22,163,74,.35);
    outline-offset:2px;
  }
  @media (max-width:768px){
    .dsk-page-warszawa .dsk-subnav{ margin-left:0; margin-right:0; }
  }

/* Warsaw PL/EN: shared subnav wrapper shell + CTA handoff parity */
  .dsk-page-warszawa .dsk-subnav-wrap{
    padding: 4px 0 0;
  }
  .dsk-page-warszawa .dsk-subnav-wrap .dsk-subnav{
    max-width: none;
    margin: 0 0 12px !important;
    justify-content: flex-start;
    align-items: flex-start;
  }
  .dsk-page-warszawa .dsk-subnav-wrap .dsk-subnav__item{
    min-height: 48px;
    padding: 12px 18px;
    border-radius: 16px;
    box-shadow: none;
  }
  .dsk-page-warszawa #default-contact-cta-section-template{
    margin-top: 0;
  }
  .dsk-page-warszawa #default-contact-cta-section-template .sb-row{
    padding-top: 36px;
    padding-bottom: 44px;
  }
  @media (max-width: 768px){
    .dsk-page-warszawa .dsk-subnav-wrap .sb-container-fixed{
      padding-left: 16px;
      padding-right: 16px;
    }
    .dsk-page-warszawa .dsk-subnav-wrap .dsk-subnav{
      gap: 8px;
      margin-bottom: 8px !important;
    }
    .dsk-page-warszawa .dsk-subnav-wrap .dsk-subnav__item{
      width: 100%;
      justify-content: center;
      text-align: center;
    }
    .dsk-page-warszawa .dsk-subnav{
      gap:8px;
      margin:10px 0 16px;
    }
    .dsk-page-warszawa .dsk-subnav__item{
      padding:10px 12px;
      border-radius:12px;
      font-size:.95rem;
      box-shadow:0 8px 18px rgba(0,0,0,.05) !important;
    }
    .dsk-page-warszawa .dsk-subnav__item::after{
      font-size:1.1rem !important;
      margin-left:10px;
    }
    .dsk-page-warszawa #default-contact-cta-section-template .sb-row{
      padding-top: 24px !important;
      padding-bottom: 30px !important;
    }
  }
  @media (max-width: 390px){
    .dsk-page-warszawa .dsk-subnav{
      gap:8px;
      margin:8px 0 14px;
    }
    .dsk-page-warszawa .dsk-subnav__item{
      padding:9px 10px !important;
      border-radius:10px !important;
      font-size:.92rem;
    }
  }

/* Stage 570 merge carry-over: dominant PL service-detail text-image owner moved from inline HTML */
section[id*="service-template"] .sb-text-image,
section[data-slug*="text-image"] .sb-text-image{
  display:flex;
  flex-direction:column-reverse;
}
section[id*="service-template"] .sb-text-image__content{
  order:2;
}
section[id*="service-template"] .sb-text-image__image{
  order:1;
  margin-bottom:2rem;
}
@media (min-width: 768px){
  section[id*="service-template"] .sb-text-image{
    flex-direction:row;
  }
  section[id*="service-template"] .sb-text-image__image{
    order:1;
    margin-bottom:0;
    margin-right:2rem;
    flex:0 0 40%;
    max-width:500px;
  }
  section[id*="service-template"] .sb-text-image__content{
    order:2;
    flex:1;
  }
}/* Stage 573 merge carry-over: EN RAID subnav residual owner moved from inline HTML */
html[lang="en"] .dsk-page-raid .dsk-subnav__item:focus-visible{
  outline:3px solid rgba(22,163,74,.35);
  outline-offset:2px;
}
@media (max-width: 768px){
  html[lang="en"] .dsk-page-raid .dsk-subnav{
    margin-left:0;
    margin-right:0;
  }
}


/* Stage 577 — HDD/USB/EN HDD desktop readability owner moved from inline HTML */
@media (min-width:769px){:where(.dsk-page-hdd) #service-template .sb-text-image__content, :where(.dsk-page-hdd) #service-template .sb-title{
    margin-left:0;
    margin-right:auto;
  }:where(.dsk-page-hdd) #service-template .sb-text-image__content-paragraph p{color:#374151;}:where(.dsk-page-hdd) .dsk-icon-list > li, :where(.dsk-page-hdd) .dsk-method-list > li{margin:0;}:where(.dsk-page-hdd) .dsk-icon-list{
    display:grid;
    grid-template-columns:1fr;
    gap:10px;
  }
  @media (min-width:980px){:where(.dsk-page-hdd) .dsk-icon-list{grid-template-columns:1fr 1fr;}
  }:where(.dsk-page-hdd) .alert-box{
    margin-left:0;
    margin-right:auto;
  }
}


/* Stage 580: mobile fastpath CTA ownership for warsaw/business service clusters */
@media (max-width:767px){[data-service-cluster="warsaw"] #service-template .sb-text-image__content-paragraph, [data-service-cluster="business"] #service-template .sb-text-image__content-paragraph{display:flex;flex-direction:column}[data-service-cluster="warsaw"] #service-template .sb-text-image__content-paragraph > h2:first-child, [data-service-cluster="business"] #service-template .sb-text-image__content-paragraph > h2:first-child{order:-2}[data-service-cluster="warsaw"] #service-template .sb-text-image__content-paragraph > .sb-text-image__content-cta:first-of-type, [data-service-cluster="business"] #service-template .sb-text-image__content-paragraph > .sb-text-image__content-cta:first-of-type{order:-1;margin:12px 0 16px}[data-service-cluster="warsaw"] #service-template .sb-text-image__content-paragraph > .sb-text-image__content-cta:first-of-type .sb-cta-wrapper, [data-service-cluster="business"] #service-template .sb-text-image__content-paragraph > .sb-text-image__content-cta:first-of-type .sb-cta-wrapper{gap:10px!important}
}


/* === Stage 585: macbook background hotfix owner move (shared PL/EN) === */

/* Stage 1490 wave A - HDD/SSD/RAID/USB service CTA lane.
   These pages already load this service-only owner, so move the repeated
   mid-paragraph CTA row contract out of page-local inline attrs and keep it
   on the shared service layout layer. */
#service-template .dsk-service-inline-actions{
  margin:0;
  display:flex;
  flex-wrap:wrap;
  gap:8px;
}/* Stage 628 — service family CTA defer ownership: move identical dsk-generic-cta-defer-css from service-family HTML into the family owner for pages that already load dsk-service-layout-unify.v2.css. */
#default-contact-cta-section-template{content-visibility:auto;contain-intrinsic-size:auto 620px;}
@media (max-width:767px){#default-contact-cta-section-template{content-visibility:visible;contain-intrinsic-size:auto;}}

/* Debt OS wave wave:62e406fd0481b3 */
#service-template .dsk-wave-services-wave-62e406fd0481b3{
  color:inherit;
  display:inline-block;
}

/* Debt OS wave wave:457eba687dd286 */
#service-template .dsk-wave-services-wave-457eba687dd286{
  margin-top:14px;
}

/* Debt OS wave wave:b43753e7258f18 */
#service-template .dsk-wave-services-wave-b43753e7258f18{
  color:rgba(76, 175, 80, 1);
}

/* Debt OS wave wave:67cc59b1ed23ce */
#service-template .dsk-wave-services-wave-67cc59b1ed23ce{
  margin:0;
}

/* Debt OS wave wave:3c971c7ee0e4e8 */
#service-template .dsk-wave-services-wave-3c971c7ee0e4e8{
  margin:0 0 10px 0;
}

/* Debt OS wave wave:1856be74434494 */
#service-template .dsk-wave-services-wave-1856be74434494{
  display:inline-block;
  padding:10px 14px;
  border-radius:12px;
  background:#1a3cff;
  color:#fff;
  text-decoration:none;
}

/* Debt OS wave wave:5b2f626f221bef */
#service-template .dsk-wave-services-wave-5b2f626f221bef{
  background-image:url('/assets/b12/client_media/tEJXsA9I/ikona-cyberataku-ransomware-monitor-klodka-ciemnym-tle-grafika-uslugi-warszawa.webp');
  background-size:cover;
  background-position:center;
}

/* Debt OS wave wave:b91aa4536a14cf */
#service-template .dsk-wave-services-wave-b91aa4536a14cf{
  display:inline-block;
  padding:10px 14px;
  border-radius:12px;
  border:1px solid rgba(26,60,255,.35);
  text-decoration:none;
  margin-left:8px;
}

/* Debt OS wave wave:d379b7e3ff0d5b */
#service-template .dsk-wave-services-wave-d379b7e3ff0d5b{
  margin:16px 0;
  padding:14px 14px;
  border-radius:16px;
  background:rgba(0,160,255,.06);
  border:1px solid rgba(0,160,255,.18);
}

/* Debt OS wave wave:31319a54a15bcd */
#service-template .dsk-wave-services-wave-31319a54a15bcd{
  margin:0 0 8px 0;
}

/* Debt OS wave wave:a36e80bf6ee8af */
#service-template .dsk-wave-services-wave-a36e80bf6ee8af{
  background-image:url('/assets/b12/client_media/tEJXsA9I/ikona-odzyskiwania-danych-fotografow-filmowcow-aparat-karta-pamieci-symbol-warszawa.webp');
  background-size:cover;
  background-position:center;
}

/* Debt OS wave wave:f41dc05b6d1879 */
#service-template .dsk-wave-services-wave-f41dc05b6d1879{
  margin:0 0 16px 0;
  padding:14px 16px;
  border:1px solid rgba(0,0,0,.10);
  border-radius:14px;
  background:rgba(255,255,255,.55);
}

/* Debt OS wave wave:765a77d6f76082 */
#service-template .dsk-wave-services-wave-765a77d6f76082{
  margin-top:12px;
}

/* Debt OS wave wave:a2f19a81b4772a */
#service-template .dsk-wave-services-wave-a2f19a81b4772a{
  background-image:url('/assets/b12/client_media/tEJXsA9I/odzyskiwanie-baz-danych-warszawa-platnik-subiekt-optima-sql.webp');
  background-size:cover;
  background-position:center;
}

/* Debt OS wave wave:e9a9148617fd75 */
#service-template .dsk-wave-services-wave-e9a9148617fd75{
  --section-height:auto;
}

/* pl-rwd-axis-service-template-v1
   Generic PL service-template rail lock for legacy/root service shells that are
   not covered by a narrower per-service owner. */
@media (max-width: 767px) {:not([data-page-lang="en"]) #service-template > .container.sb-container-fixed.sb-container, :not([data-page-lang="en"]) #service-template .dsk-subnav{
    width: calc(100vw - 32px);
    max-width: calc(100vw - 32px);
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }
}
@media (min-width: 768px) and (max-width: 1180px) {:not([data-page-lang="en"]) #service-template > .container.sb-container-fixed.sb-container, :not([data-page-lang="en"]) #service-template .dsk-subnav{
    width: min(calc(100vw - 48px), 1236px);
    max-width: min(calc(100vw - 48px), 1236px);
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }
}

/* pl-rwd-axis-service-template-v2-no-html-lang
   Same rail lock without relying on html[lang], for older PL root pages. */
@media (max-width: 767px) {#sb-body-data-attr:not([data-page-lang="en"]) #service-template > .container.sb-container-fixed.sb-container, #sb-body-data-attr:not([data-page-lang="en"]) #service-template .dsk-subnav{
    width: calc(100vw - 32px);
    max-width: calc(100vw - 32px);
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }
}
@media (min-width: 768px) and (max-width: 1180px) {#sb-body-data-attr:not([data-page-lang="en"]) #service-template > .container.sb-container-fixed.sb-container, #sb-body-data-attr:not([data-page-lang="en"]) #service-template .dsk-subnav{
    width: min(calc(100vw - 48px), 1236px);
    max-width: min(calc(100vw - 48px), 1236px);
    margin-left: auto;
    margin-right: auto;
    box-sizing: border-box;
  }
}
