/* Factory page: full-image stories and a mobile-safe carousel. */
body.sw-factory-page { background:#fff; }
.sw-factory-hero { padding:52px 0 46px; background:#f5f6f7; border-bottom:1px solid #e5e8ea; }
.sw-factory-hero .sw-breadcrumbs { margin-bottom:28px; }
.sw-factory-hero h1 { max-width:1000px; margin:0 0 18px; color:#292d31; font-size:clamp(38px,5vw,62px); line-height:1.08; }
.sw-factory-stories { padding:12px 0 64px; }
.sw-factory-row { display:grid; grid-template-columns:minmax(0,1fr) minmax(0,1fr); align-items:center; gap:clamp(34px,5.5vw,88px); padding:54px 0; border-bottom:1px solid #eceeef; }
.sw-factory-row:last-child { border-bottom:0; }
.sw-factory-media { min-width:0; margin:0; background:#f4f5f6; }
.sw-factory-media img { display:block; width:100%; max-width:100%; height:auto; object-fit:contain; border-radius:12px; }
.sw-factory-copy { min-width:0; }
.sw-factory-copy h2 { margin:0 0 18px; color:#292d31; font-size:clamp(30px,3.2vw,44px); line-height:1.15; }
.sw-factory-copy p { margin:0 0 16px; color:#5d656b; font-size:16px; line-height:1.8; }
.sw-factory-row-reverse .sw-factory-media { order:2; }
.sw-factory-row-reverse .sw-factory-copy { order:1; }
.sw-factory-gallery { padding:74px 0 88px; border-top:1px solid #eceeef; }
.sw-factory-gallery-heading { max-width:760px; margin:0 auto 34px; text-align:center; }
.sw-factory-gallery-heading h2 { margin:0 0 14px; color:#292d31; font-size:clamp(32px,3.5vw,48px); line-height:1.12; }
.sw-factory-gallery-heading p:last-child { margin:0; color:#626a70; font-size:16px; line-height:1.7; }
.sw-factory-gallery-stage { position:relative; width:100%; height:clamp(620px,42vw,780px); overflow:hidden; margin:0 auto; }
.sw-factory-gallery-slide { position:absolute; top:50%; left:50%; width:min(54vw,900px); max-width:900px; margin:0; opacity:0; transform:translate(-50%,-50%) scale(.92); transition:transform .65s cubic-bezier(.2,.7,.2,1),opacity .65s ease; pointer-events:none; }
.sw-factory-gallery-slide.is-active { z-index:3; opacity:1; transform:translate(-50%,-50%) scale(1); pointer-events:auto; }
.sw-factory-gallery-slide.is-prev { z-index:2; opacity:.88; transform:translate(calc(-50% - 58vw),-50%) scale(.88); }
.sw-factory-gallery-slide.is-next { z-index:2; opacity:.88; transform:translate(calc(-50% + 58vw),-50%) scale(.88); }
.sw-factory-gallery-slide img { display:block; width:100%; max-width:100%; height:auto; object-fit:contain; border-radius:12px; }
.sw-factory-gallery-controls { display:flex; align-items:center; justify-content:center; gap:20px; margin:22px auto 0; }
.sw-factory-gallery-arrow { display:flex; flex:0 0 42px; width:42px; height:42px; align-items:center; justify-content:center; border:1px solid #d9dde0; border-radius:50%; background:#fff; color:#343a40; cursor:pointer; transition:background .2s,color .2s,border-color .2s; }
.sw-factory-gallery-arrow:hover { border-color:#e6232b; background:#e6232b; color:#fff; }
.sw-factory-gallery-dots { display:flex; flex-wrap:wrap; max-width:min(680px,60vw); align-items:center; justify-content:center; gap:8px; }
.sw-factory-gallery-dot { width:8px; height:8px; padding:0; border:0; border-radius:50%; background:#c9cdd1; cursor:pointer; transition:width .2s,background .2s; }
.sw-factory-gallery-dot[aria-current="true"] { width:22px; border-radius:99px; background:#e6232b; }
.sw-factory-gallery-count { margin:10px 0 0; color:#777f85; text-align:center; font-size:13px; }
.sw-factory-contact { display:flex; align-items:center; justify-content:space-between; gap:32px; padding:54px 0 20px; border-top:1px solid #eceeef; }
.sw-factory-contact h2 { margin:0 0 12px; color:#292d31; font-size:clamp(28px,3vw,40px); line-height:1.15; }
.sw-factory-contact p { max-width:760px; margin:0; color:#5d656b; font-size:16px; line-height:1.8; }
.sw-factory-contact-link { display:inline-flex; flex:0 0 auto; align-items:center; gap:12px; color:#b5121b; font-weight:700; text-decoration:none; }
.sw-factory-contact-link:hover { color:#851018; }
.sw-factory-page main > .sw-factory-hero > .sw-container,
.sw-factory-page .sw-factory-stories > .sw-container { width:min(calc(100% - 64px),1600px); max-width:1600px; }
@media(max-width:900px) {
  .sw-factory-gallery-controls { gap:12px; }
  .sw-factory-gallery-dots { max-width:62vw; gap:7px; }
  .sw-factory-contact { align-items:flex-start; flex-direction:column; }
}
@media(max-width:767px) {
  .sw-factory-hero { padding:34px 0 30px; }
  .sw-factory-hero h1 { font-size:38px; }
  .sw-factory-stories { padding:0 0 48px; }
  .sw-factory-row,
  .sw-factory-row-reverse { grid-template-columns:minmax(0,1fr); gap:22px; padding:34px 0; }
  .sw-factory-row .sw-factory-media,
  .sw-factory-row-reverse .sw-factory-media { order:0; }
  .sw-factory-row .sw-factory-copy,
  .sw-factory-row-reverse .sw-factory-copy { order:1; }
  .sw-factory-media { width:100%; }
  .sw-factory-media img,
  .sw-factory-gallery-slide img { width:100%; height:auto; object-fit:contain; }
  .sw-factory-copy h2 { margin-bottom:12px; font-size:30px; }
  .sw-factory-copy p { font-size:15px; line-height:1.75; }
  .sw-factory-gallery { padding:54px 0 64px; }
  .sw-factory-gallery-heading { margin-bottom:25px; text-align:left; }
  .sw-factory-gallery-heading h2 { font-size:32px; }
  .sw-factory-gallery-heading p:last-child { font-size:15px; }
  .sw-factory-gallery-stage { height:calc(78vw + 24px); max-height:600px; min-height:300px; }
  .sw-factory-gallery-slide { width:calc(100vw - 32px); max-width:none; }
  .sw-factory-gallery-slide.is-prev,
  .sw-factory-gallery-slide.is-next { opacity:0; }
  .sw-factory-gallery-slide img { border-radius:12px; }
  .sw-factory-gallery-controls { gap:10px; margin-top:16px; }
  .sw-factory-gallery-arrow { flex-basis:38px; width:38px; height:38px; }
  .sw-factory-gallery-dots { max-width:calc(100vw - 140px); gap:6px; }
  .sw-factory-gallery-dot { width:6px; height:6px; }
  .sw-factory-gallery-dot[aria-current="true"] { width:18px; }
  .sw-factory-contact { gap:20px; padding-top:38px; }
  .sw-factory-contact-link { min-height:48px; }
  .sw-factory-page main > .sw-factory-hero > .sw-container,
  .sw-factory-page .sw-factory-stories > .sw-container { width:min(calc(100% - 32px),1600px); }
}
@media(prefers-reduced-motion:reduce) {
  .sw-factory-page * { scroll-behavior:auto!important; transition:none!important; animation:none!important; }
}
