/* Repro One DNA Core v3
 * Shared, sitewide invariants. Page-specific CSS may compose these rules but must
 * not redefine the functional contract or create separate desktop/mobile DNAs.
 */
:root{
  --r1-content:1320px;
  --r1-reading:920px;
  --r1-pad-x:clamp(18px,5vw,72px);
  --r1-space-1:8px;--r1-space-2:14px;--r1-space-3:22px;--r1-space-4:34px;
  --r1-space-5:52px;--r1-space-6:78px;--r1-space-7:112px;
  --r1-section:clamp(72px,8vw,128px);
  --r1-rule:#d9d9d6;--r1-black:#050505;--r1-paper:#f3f3f1;
  --r1-h-xl:clamp(58px,7.5vw,118px);--r1-h-lg:clamp(42px,5vw,78px);--r1-h-md:clamp(30px,3.4vw,50px);
}
.wsb-reproone-native-preview *, .wsb-reproone-native-preview *:before,.wsb-reproone-native-preview *:after{box-sizing:border-box}
.wsb-r1-shell{width:min(var(--r1-content),calc(100% - (2 * var(--r1-pad-x))));margin-inline:auto}
.wsb-r1-native-content,.wsb-r1-native-content>*{min-width:0;max-width:100%}
.wsb-r1-native-content h1,.wsb-r1-native-content h2,.wsb-r1-native-content h3,.wsb-r1-native-content h4{max-width:100%;text-wrap:balance;overflow-wrap:break-word;word-break:normal}
.wsb-r1-native-content img,.wsb-r1-native-content video,.wsb-r1-native-content svg,.wsb-r1-native-content canvas{max-width:100%;height:auto}
.wsb-r1-native-content iframe,.wsb-r1-native-content embed,.wsb-r1-native-content object{display:block;width:100%;max-width:100%;border:0}
.wsb-r1-native-content table{max-width:100%}
/* Functional shells: control geometry, never replace plugin markup. */
.wsb-r1-native-content form,.wsb-r1-native-content .wpforms-container,.wsb-r1-native-content [class*="calculated"],.wsb-r1-native-content [class*="cp_calculated"],.wsb-r1-native-content [class*="cff"],.wsb-r1-native-content .cmplz-document{width:100%;max-width:100%;min-width:0}
.wsb-r1-native-content form *,.wsb-r1-native-content .wpforms-container *{max-width:100%}
.wsb-r1-native-content .wpforms-field-row,.wsb-r1-native-content .wpforms-field-row-block{max-width:100%!important;min-width:0}
.wsb-r1-native-content input:not([type="checkbox"]):not([type="radio"]):not([type="hidden"]),.wsb-r1-native-content select,.wsb-r1-native-content textarea{max-width:100%!important}
.wsb-r1-native-content textarea{min-height:140px!important;height:auto!important}
.wsb-r1-native-content [class*="dropzone"],.wsb-r1-native-content [class*="uploader"],.wsb-r1-native-content [class*="upload-area"],.wsb-r1-native-content [class*="file-upload"]{width:100%!important;max-width:100%!important;min-height:150px!important;height:auto!important}
/* Runtime contract warning is admin-preview only and intentionally impossible to miss. */
.wsb-r1-contract-hold{display:flex;gap:14px;align-items:center;justify-content:space-between;margin:0 0 28px;padding:14px 16px;background:#fff2cc;border:2px solid #111;color:#111;font:800 11px/1.35 Arial,sans-serif;letter-spacing:.05em;text-transform:uppercase}
.wsb-r1-contract-hold span{font-weight:600;text-transform:none;letter-spacing:0}
/* One responsive system, no page-local overflow hacks. */
@media(max-width:760px){
  :root{--r1-pad-x:18px;--r1-section:64px;--r1-h-xl:clamp(44px,13vw,58px);--r1-h-lg:clamp(36px,10.5vw,48px);--r1-h-md:clamp(28px,8vw,36px)}
  .wsb-r1-native-content h1,.wsb-r1-native-content h2,.wsb-r1-native-content h3{hyphens:auto}
  .wsb-r1-native-content table{display:block;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .wsb-r1-native-content .wpforms-field-row{display:block!important}
  .wsb-r1-native-content .wpforms-field-row-block{width:100%!important;margin:0 0 14px!important;padding:0!important}
  .wsb-r1-contract-hold{display:block}.wsb-r1-contract-hold span{display:block;margin-top:6px}
}


/* Repro One DNA Core v3 - proven paired-field geometry.
 * Reuses the stable WSB form-grid pattern already used in other profiles.
 */
.wsb-r1-native-content .wpforms-field-row{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:18px!important;
  margin:0!important;
  width:100%!important;
  max-width:none!important;
  align-items:start!important;
}
.wsb-r1-native-content .wpforms-field-row-block,
.wsb-r1-native-content .wpforms-one-half,
.wsb-r1-native-content .wpforms-one-third,
.wsb-r1-native-content .wpforms-two-thirds{
  float:none!important;
  clear:none!important;
  width:100%!important;
  max-width:none!important;
  min-width:0!important;
  margin:0!important;
  padding:0!important;
}
/* Name subfields: force both labels and both controls onto one shared baseline. */
.wsb-r1-native-content .wpforms-field-name .wpforms-field-row>.wpforms-field-row-block{
  display:grid!important;
  grid-template-rows:auto minmax(52px,auto)!important;
  gap:8px!important;
  align-content:start!important;
}
.wsb-r1-native-content .wpforms-field-name .wpforms-field-row>.wpforms-field-row-block:nth-child(1){grid-column:1!important}
.wsb-r1-native-content .wpforms-field-name .wpforms-field-row>.wpforms-field-row-block:nth-child(2){grid-column:2!important}
.wsb-r1-native-content .wpforms-field-name .wpforms-field-row-block .wpforms-field-sublabel,
.wsb-r1-native-content .wpforms-field-name .wpforms-field-row-block .wpforms-field-sublabel.after{
  grid-row:1!important;
  position:static!important;
  float:none!important;
  display:block!important;
  order:initial!important;
  min-height:13px!important;
  margin:0!important;
  padding:0!important;
  line-height:1.3!important;
}
.wsb-r1-native-content .wpforms-field-name .wpforms-field-row-block>input{
  grid-row:2!important;
  width:100%!important;
  height:52px!important;
  min-height:52px!important;
  margin:0!important;
}
@media(max-width:760px){
  .wsb-r1-native-content .wpforms-field-row{grid-template-columns:1fr!important;gap:14px!important}
  .wsb-r1-native-content .wpforms-field-name .wpforms-field-row>.wpforms-field-row-block:nth-child(1),
  .wsb-r1-native-content .wpforms-field-name .wpforms-field-row>.wpforms-field-row-block:nth-child(2){grid-column:1!important}
}

/* Repro One DNA Core v4 - systemic mobile fit and rhythm.
 * One mobile system for all approved Repro One page types.
 * Functional/plugin geometry stays owned by plugins; this layer only controls
 * editorial containers, authored display lines, media fit and section rhythm.
 */
@media(max-width:760px){
  :root{
    --r1-pad-x:18px;
    --r1-mobile-section:64px;
    --r1-mobile-copy-gap:24px;
    --r1-h-xl:clamp(42px,13vw,54px);
    --r1-h-lg:clamp(36px,11.4vw,46px);
    --r1-h-md:clamp(28px,8.6vw,36px);
  }

  html,body,.wsb-reproone-native-preview{max-width:100%;overflow-x:clip}
  .wsb-r1-shell{width:calc(100% - 36px)!important;max-width:calc(100% - 36px)!important;margin-inline:auto!important;padding-left:0!important;padding-right:0!important}
  .wsb-r1-shell>*,
  .wsb-r1-editorial-grid>*,
  .wsb-r1-about-manifesto-grid>*,
  .wsb-r1-about-process-layout>*,
  .wsb-r1-about-proof-grid>*,
  .wsb-r1-about-difference-grid-v2>*,
  .wsb-r1-service-editorial>*,
  .wsb-r1-production-proof-grid>*,
  .wsb-r1-transactional-intro>*,
  .wsb-r1-legal-intro>*{min-width:0;max-width:100%}

  /* Authored display lines stay authored lines. JS only scales them when their
     measured width exceeds the real container; no arbitrary word splitting. */
  .wsb-r1-type-stack{display:flex!important;flex-direction:column!important;align-items:flex-start!important;width:100%!important;max-width:100%!important;min-width:0!important;gap:.09em!important}
  .wsb-r1-type-stack .wsb-r1-type-line{display:block!important;width:max-content!important;max-width:none!important;min-width:0!important;white-space:nowrap!important;overflow-wrap:normal!important;word-break:normal!important;line-height:.9!important;transform-origin:left center}
  .wsb-r1-type-stack .wsb-r1-type-line.is-wide{font-size:.94em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-tight{font-size:.86em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-compact{font-size:.76em!important;letter-spacing:-.04em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-ultra-compact{font-size:.66em!important;letter-spacing:-.045em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-mobile-tight{font-size:.82em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-mobile-compact{font-size:.72em!important;letter-spacing:-.035em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-mobile-ultra{font-size:.62em!important;letter-spacing:-.04em!important}
  .wsb-r1-type-stack .wsb-r1-type-line.is-mobile-squeeze{font-size:.54em!important;letter-spacing:-.035em!important}

  .wsb-r1-subhero-copy h1.wsb-r1-type-stack,
  .wsb-r1-production-hero .wsb-r1-subhero-copy h1,
  .wsb-r1-transactional-copy h1.wsb-r1-type-stack{font-size:var(--r1-h-xl)!important;line-height:.9!important;letter-spacing:-.045em!important}
  .wsb-r1-editorial-grid h2.wsb-r1-type-stack,
  .wsb-r1-service-editorial-copy h2.wsb-r1-type-stack,
  .wsb-r1-principles-head h2.wsb-r1-type-stack,
  .wsb-r1-about-manifesto h2.wsb-r1-type-stack,
  .wsb-r1-about-process-sticky h2.wsb-r1-type-stack,
  .wsb-r1-about-proof h2.wsb-r1-type-stack,
  .wsb-r1-about-difference-v2 h2.wsb-r1-type-stack,
  .wsb-r1-subpage-cta h2.wsb-r1-type-stack,
  .wsb-r1-production-proof h2.wsb-r1-type-stack{font-size:var(--r1-h-lg)!important;line-height:.9!important;letter-spacing:-.045em!important}

  /* Mobile removes oversized decorative background words. They are useful on
     desktop but compete with real content on a narrow viewport. */
  .wsb-r1-editorial-intro:after,
  .wsb-r1-about-manifesto:before,
  .wsb-r1-about-process:after,
  .wsb-r1-about-proof:after,
  .wsb-r1-production-intro:after,
  .wsb-r1-production-proof:after{display:none!important;content:none!important}

  /* One shared vertical rhythm for every editorial/service page. */
  .wsb-r1-editorial-intro,
  .wsb-r1-about-manifesto,
  .wsb-r1-about-process,
  .wsb-r1-about-process-v2,
  .wsb-r1-about-proof,
  .wsb-r1-about-difference-v2,
  .wsb-r1-production-intro,
  .wsb-r1-production-proof,
  .wsb-r1-subpage-proofline,
  .wsb-r1-subpage-cta{padding-top:var(--r1-mobile-section)!important;padding-bottom:var(--r1-mobile-section)!important}
  .wsb-r1-editorial-grid,
  .wsb-r1-about-manifesto-grid,
  .wsb-r1-about-process-layout,
  .wsb-r1-about-proof-grid,
  .wsb-r1-about-difference-grid-v2{grid-template-columns:1fr!important;gap:var(--r1-mobile-copy-gap)!important}
  .wsb-r1-editorial-copy{padding-top:0!important}
  .wsb-r1-editorial-copy .wsb-r1-editorial-lead{font-size:clamp(22px,7vw,28px)!important;line-height:1.05!important;margin-bottom:22px!important}
  .wsb-r1-rich-copy p,.wsb-r1-editorial-copy p,.wsb-r1-about-manifesto-copy p,.wsb-r1-about-process-list p,.wsb-r1-about-proof-grid p,.wsb-r1-about-difference-grid-v2 p{font-size:15px!important;line-height:1.68!important}

  .wsb-r1-service-editorial,.wsb-r1-service-editorial.is-reverse{grid-template-columns:1fr!important;min-height:0!important;overflow:hidden}
  .wsb-r1-service-editorial.is-reverse .wsb-r1-service-editorial-media,.wsb-r1-service-editorial.is-reverse .wsb-r1-service-editorial-copy{order:initial!important}
  .wsb-r1-service-editorial-media,.wsb-r1-production-editorial .wsb-r1-service-editorial-media{min-height:0!important;aspect-ratio:4/3!important}
  .wsb-r1-service-editorial-media img{width:100%!important;height:100%!important;object-fit:cover!important}
  .wsb-r1-service-editorial-copy,.wsb-r1-production-editorial .wsb-r1-service-editorial-copy{padding:52px 18px 58px!important}
  .wsb-r1-service-editorial-copy h2{margin-bottom:26px!important}

  .wsb-r1-about-process-sticky{position:static!important;top:auto!important}
  .wsb-r1-about-process-list article{grid-template-columns:1fr!important;gap:10px!important;padding:30px 0!important}
  .wsb-r1-about-process-list article>p{margin-top:6px!important}
  .wsb-r1-about-proof-tags{gap:7px!important;margin-top:28px!important}
  .wsb-r1-about-proof-tags span{padding:10px 11px!important;font-size:8px!important}

  .wsb-r1-subpage-cta h2{margin-bottom:34px!important}
  .wsb-r1-subpage-cta a{width:100%!important;min-width:0!important;max-width:100%!important;padding:18px 2px!important}

  /* Content/media safety across every page type. */
  .wsb-reproone-native-preview section{max-width:100%;overflow-x:clip}
  .wsb-reproone-native-preview img,.wsb-reproone-native-preview video,.wsb-reproone-native-preview svg,.wsb-reproone-native-preview canvas,.wsb-reproone-native-preview iframe{max-width:100%!important}
  .wsb-r1-native-content pre,.wsb-r1-native-content code{max-width:100%;white-space:pre-wrap;overflow-wrap:anywhere}
  .wsb-r1-native-content a{overflow-wrap:anywhere}
}

/* 0.9.227 — Headline integrity / proofline regression lock.
 * One shared rule for Desktop + Mobile. Decorative outline lines must remain
 * visible, stacked headlines must never create phantom blank rows, and
 * multi-line display stacks receive enough optical breathing room.
 */
.wsb-r1-subpage-proofline h2{
  display:flex!important;
  flex-direction:column!important;
  flex-wrap:nowrap!important;
  align-items:flex-start!important;
  gap:.07em!important;
  width:100%!important;
  max-width:1300px!important;
}
.wsb-r1-subpage-proofline h2 span{
  display:block!important;
  width:max-content!important;
  max-width:100%!important;
  line-height:.88!important;
  white-space:nowrap!important;
}
.wsb-r1-subpage-proofline h2 span:nth-child(2){
  color:transparent!important;
  -webkit-text-stroke:1.3px #111!important;
  text-stroke:1.3px #111!important;
}
.wsb-r1-subpage-proofline.is-social h2 span:nth-child(2){
  color:transparent!important;
  -webkit-text-stroke:1.3px #fff!important;
  text-stroke:1.3px #fff!important;
}

@media(max-width:760px){
  .wsb-r1-type-stack{gap:.12em!important}
  .wsb-r1-type-stack .wsb-r1-type-line{
    line-height:.92!important;
    overflow:visible!important;
  }
  .wsb-r1-type-stack .wsb-r1-type-line.is-outline{
    padding-top:.01em!important;
    padding-bottom:.025em!important;
  }
  .wsb-r1-about-manifesto h2.wsb-r1-type-stack,
  .wsb-r1-about-process-sticky h2.wsb-r1-type-stack,
  .wsb-r1-about-proof h2.wsb-r1-type-stack,
  .wsb-r1-about-difference-v2 h2.wsb-r1-type-stack{
    gap:.14em!important;
  }
  .wsb-r1-subpage-proofline h2{
    gap:.09em!important;
    font-size:clamp(39px,12.2vw,50px)!important;
    line-height:.9!important;
  }
  .wsb-r1-subpage-proofline h2 span{
    max-width:100%!important;
  }
}

/* 0.9.228 — Typography Core lock.
 * Long display words now break at curated soft-hyphen points instead of being
 * progressively miniaturised. This override intentionally supersedes legacy
 * compact/squeeze classes left in older page markup.
 */
.wsb-reproone-native-preview .wsb-r1-type-stack .wsb-r1-type-line{
  width:auto!important;
  max-width:100%!important;
  white-space:normal!important;
  -webkit-hyphens:manual!important;
  hyphens:manual!important;
}
.wsb-reproone-native-preview .wsb-r1-type-stack .wsb-r1-type-line:is(.is-wide,.is-tight,.is-compact,.is-ultra-compact,.is-mobile-tight,.is-mobile-compact,.is-mobile-ultra,.is-mobile-squeeze){
  font-size:1em!important;
  letter-spacing:inherit!important;
}
.wsb-reproone-native-preview .wsb-r1-subpage-proofline h2 span{
  width:auto!important;
  white-space:normal!important;
  -webkit-hyphens:manual!important;
  hyphens:manual!important;
}

/* 0.9.229 — Mobile capability rail lock.
 * Previously optimised legacy pages may still carry horizontal flex/min-width
 * rules. The shared DNA wins on mobile: equal capability items must remain
 * fully visible and must never be clipped off-screen.
 */
@media(max-width:760px){
  .wsb-reproone-native-preview .wsb-r1-about-capability-rail{
    display:grid!important;
    grid-template-columns:repeat(3,minmax(0,1fr))!important;
    width:100%!important;
    max-width:100%!important;
    overflow:visible!important;
    gap:0!important;
    border-top:1px solid #252525!important;
    border-bottom:1px solid #252525!important;
  }
  .wsb-reproone-native-preview .wsb-r1-about-capability-rail span{
    min-width:0!important;
    width:auto!important;
    max-width:100%!important;
    min-height:68px!important;
    padding:0 5px!important;
    margin:0!important;
    border-right:1px solid #252525!important;
    border-bottom:1px solid #252525!important;
    font-size:clamp(9px,3vw,11px)!important;
    line-height:1.15!important;
    letter-spacing:.015em!important;
    text-align:center!important;
    white-space:normal!important;
    overflow-wrap:anywhere!important;
  }
  .wsb-reproone-native-preview .wsb-r1-about-capability-rail span:nth-child(3n){border-right:0!important}
  .wsb-reproone-native-preview .wsb-r1-about-capability-rail span:nth-last-child(-n+3){border-bottom:0!important}
}
@media(max-width:380px){
  .wsb-reproone-native-preview .wsb-r1-about-capability-rail span{
    min-height:64px!important;
    font-size:9px!important;
    padding-inline:3px!important;
  }
}
