/*
 * V3.1 layer for Gutenberg/Kadence-built pages (homepage and future pages).
 *
 * Layout (columns, widths, gaps, section padding, backgrounds) is set in the
 * block controls. This file only adds what those controls cannot express:
 * the V3.1 type styles carried by "Additional CSS class" names, dividers,
 * the orbit/marquee enhancements and responsive fine-tuning.
 * Class reference: docs/COMPONENTS.md.
 */

/* ---------- Shared ---------- */
body.swp .entry-content > .kb-row-layout-wrap{margin-bottom:0}
body.swp .swp-sec.bt{border-top:1px solid var(--line)}
body.swp .kt-inside-inner-col > * + *{margin-top:0}
body.swp .kt-inside-inner-col{display:flex;flex-direction:column;gap:var(--s5)}
body.swp .wp-block-kadence-advancedheading.lbl,
body.swp p.lbl{font:500 12px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--faint);margin:0}
body.swp .wp-block-kadence-advancedheading.idx{font:500 12px/1.3 var(--mono);color:var(--green);letter-spacing:.04em;margin:0}
body.swp .kt-inside-inner-col p,body.swp .kt-inside-inner-col h1,body.swp .kt-inside-inner-col h2,body.swp .kt-inside-inner-col h3{margin:0}
/* italic text inside a heading = Instrument Serif accent (type italics in the editor) */
body.swp .h2 em,body.swp .role em,body.swp .ct-h em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em}
body.swp .h2 em{color:var(--muted)}
body.swp .role em{color:var(--text);font-size:1.12em}
body.swp .ct-h em{color:var(--green)}
body.swp .quote em{color:var(--green);font-style:italic}
/* "Section heading" pattern: index · title · link */
body.swp .sec-hd > .wp-block-group__inner-container{display:grid;grid-template-columns:120px minmax(0,1fr) auto;gap:var(--s5);align-items:end}
body.swp .sec-hd{margin-bottom:var(--s8)}
body.swp .sec-hd .idx{padding-bottom:12px}
body.swp .sec-hd-2 > .wp-block-group__inner-container{grid-template-columns:120px minmax(0,1fr)}
body.swp .sec-link a{display:inline-flex;align-items:center;gap:8px;min-height:44px;font-weight:600;font-size:15px;text-decoration:none;border-bottom:1px solid var(--line-2);color:var(--text);transition:border-color .2s,color .2s}
body.swp .sec-link a::after{content:"→";font-weight:400}
body.swp .sec-link a:hover{border-color:var(--green);color:var(--green)}
/* Kadence buttons: V3.1 size; colours come from Style Library presets */
body.swp .wp-block-kadence-advancedbtn.ctas{gap:var(--s3);padding-top:var(--s2)}
body.swp .ctas .kb-button{min-height:52px;font:600 15px/1 var(--sans);gap:10px}
body.swp .ctas .kb-button .kb-svg-icon-wrap{transition:transform .2s}
body.swp .ctas .kb-button:hover .kb-svg-icon-wrap{transform:translateX(3px)}
body.swp .kb-preset--swp-secondary:hover{border-color:var(--text)!important}

/* ---------- 1 Hero ---------- */
body.swp .swp-hero-row{min-height:600px;display:flex;align-items:center}
body.swp .swp-hero-row > .kt-row-column-wrap{width:100%}
body.swp .swp-hero-row .kt-inside-inner-col{max-width:600px}
body.swp .hello{display:flex;align-items:center;gap:var(--s3)}
body.swp .hello::after{content:"";height:1px;width:48px;background:var(--line-2)}
body.swp .swp-orbit{display:flex;justify-content:flex-end}
body.swp .swp-orbit .orbit{position:relative;right:auto;top:auto;transform:none;flex:none;margin-right:-8px}
body.swp .swp-orbit .disc-in > figure,body.swp .swp-orbit .disc-in .wp-block-kadence-image{margin:0;width:100%;height:100%}
body.swp .swp-orbit .disc-in img{width:100%;height:100%;object-fit:cover;object-position:50% 18%;max-width:none}
/* fact bar */
body.swp .swp-spec{border-top:1px solid var(--line);border-bottom:1px solid var(--line);margin-top:var(--s5)}
body.swp .swp-spec .kt-inside-inner-col{gap:6px;padding:var(--s4) var(--s5) var(--s4) 0}
body.swp .swp-spec .wp-block-kadence-column + .wp-block-kadence-column .kt-inside-inner-col{padding-left:var(--s5);border-left:1px solid var(--line)}
body.swp .spec-v{font-size:16px;font-weight:500;display:flex;align-items:center;gap:8px}
body.swp .spec-v.has-dot::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green);flex:none}

/* ---------- 2 Credibility ---------- */
body.swp .swp-cred-row{padding-block:var(--s4) var(--s7)}
body.swp .cred-q{font-size:26px;line-height:1.3;font-weight:500;letter-spacing:-.025em;color:var(--muted)}
body.swp .cred-q strong{color:var(--text);font-weight:600}
body.swp ul.tech{display:flex;flex-wrap:wrap;gap:var(--s5) var(--s6);list-style:none;margin:0;padding:0}
body.swp ul.tech li{display:inline-flex;align-items:center;gap:10px;font-size:14px;color:var(--muted);font-weight:500}
body.swp ul.tech img{width:20px!important;height:20px;filter:var(--mono-filter)}
body.swp ul.tech img.wide{width:30px!important;height:30px;margin:-5px -3px}

/* ---------- Brand marquee: Kadence Creative Kit "Marquee (Adv)" ----------
 * Motion, speed, gap, edge fade, pause-on-hover and the pause button are block
 * settings. This only adds the V3.1 look: muted logos, colour on hover, one
 * logo height, light/dark logo variants (CSS only, files untouched). */
body.swp .swp-brands{border-top:1px dashed var(--line-2);padding-top:var(--s5);position:relative}
body.swp .swp-brands > .wp-block-group__inner-container{display:flex;flex-direction:column;gap:var(--s4)}
body.swp .swp-logo-marquee .splide__toggle{position:absolute;top:calc(-1 * var(--s4) - 30px);right:0;width:32px;height:32px;padding:0;border-radius:8px;border:1px solid var(--line);background:transparent;color:var(--faint);display:grid;place-items:center;box-shadow:none;cursor:pointer}
body.swp .swp-logo-marquee .splide__toggle:hover{border-color:var(--line-2);color:var(--text);background:transparent}
body.swp .swp-logo-marquee .splide__toggle svg{width:14px;height:14px;fill:currentColor}
body.swp .swp-logo-marquee .kb-blocks-advanced-marquee-init{position:relative}
body.swp .swp-logo{margin:0;display:flex;align-items:center}
body.swp .swp-logo a{display:flex;align-items:center;border-radius:8px;padding:0 4px}
body.swp .swp-logo img{height:28px!important;width:auto!important;max-width:170px;object-fit:contain;transition:filter .25s,opacity .25s}
body.swp .swp-logo.is-mark img{height:34px!important}
body.swp.color-switch-dark .swp-logo--main img{filter:grayscale(1) brightness(0) invert(1);opacity:.55}
body.swp.color-switch-dark .swp-logo--main.has-dark{display:none}
body.swp.color-switch-dark .swp-logo--dark img{filter:grayscale(1);opacity:.6}
body.swp.color-switch-dark .swp-logo--main a:is(:hover,:focus-visible) img{opacity:1}
body.swp.color-switch-dark .swp-logo--dark a:is(:hover,:focus-visible) img{filter:none;opacity:1}
body.swp:not(.color-switch-dark) .swp-logo--dark{display:none}
body.swp:not(.color-switch-dark) .swp-logo--main img{filter:grayscale(1);opacity:.6}
body.swp:not(.color-switch-dark) .swp-logo--main a:is(:hover,:focus-visible) img{filter:none;opacity:1}
@media (max-width:640px){
  body.swp .swp-logo img{height:22px!important;max-width:130px}
  body.swp .swp-logo.is-mark img{height:28px!important}
}
/* why: the native marquee ignores prefers-reduced-motion; show a still, wrapped row */
@media (prefers-reduced-motion:reduce){
  body.swp .swp-logo-marquee .splide__list{width:auto!important;flex-wrap:wrap;justify-content:center;row-gap:12px}
  body.swp .swp-logo-marquee .splide__list > *{transform:none!important}
  body.swp .swp-logo-marquee .kb-marquee-clone,body.swp .swp-logo-marquee .splide__toggle{display:none!important}
  body.swp .swp-logo-marquee .splide__track{-webkit-mask-image:none!important;mask-image:none!important}
}

/* ---------- 3 Work / 5 Services: dynamic blocks reuse V3.1 classes ---------- */
body.swp .swp-work .empty,body.swp .wp-block-swp-featured-projects .empty{margin:0}

/* ---------- 4 About ---------- */
body.swp .swp-about .slot.about-img{aspect-ratio:4/5;margin:0;border-radius:16px}
body.swp .swp-about .slot.about-img img{width:100%;height:100%;object-fit:cover;object-position:70% 50%;position:relative;z-index:1;border-radius:0}
body.swp .swp-about .kt-inside-inner-col{gap:var(--s6)}
body.swp .quote{font-family:var(--serif);font-weight:400;font-size:52px;line-height:1.05;letter-spacing:-.01em}
body.swp .story{font-size:18px;line-height:1.65;color:var(--muted);max-width:560px}
body.swp .sig > .wp-block-group__inner-container,body.swp .sig.is-layout-flex{display:flex;align-items:center;gap:var(--s4)}
body.swp .sig{padding-top:var(--s5);border-top:1px solid var(--line)}
body.swp .sig .wp-block-image{margin:0}
body.swp .sig .wp-block-image img{width:36px;height:36px;border-radius:10px}
body.swp .sig-who{font-size:14px;line-height:1.45;color:var(--muted);margin:0}
body.swp .sig-who br{display:none} /* strong is already a block; the <br> added an empty line */
body.swp .sig .sig-link{margin:0 0 0 auto;font-size:15px}
body.swp .sig-who strong{display:block;font-size:16px;color:var(--text)}

/* ---------- 6 Ventures & TutsVela ---------- */
body.swp .swp-tv{position:relative;border:1px solid var(--line);overflow:hidden}
body.swp .swp-tv::before{content:"";position:absolute;left:0;top:0;bottom:0;width:4px;background:var(--tv);z-index:1}
body.swp .tv-kicker{color:var(--tv-ink)}
body.swp .tv-word{font-size:72px;line-height:.95;letter-spacing:-.055em;font-weight:700}
body.swp .tv-word mark{background:none;color:var(--tv);padding:0}
body.swp .tv-text{font-size:18px;max-width:420px}
body.swp .lessons > .wp-block-group__inner-container{display:flex;flex-direction:column;gap:var(--s3)}
body.swp .lesson{position:relative;display:grid;grid-template-columns:120px minmax(0,1fr);gap:var(--s4);align-items:center;padding:10px;border-radius:12px;background:var(--bg);border:1px solid var(--line)}
body.swp .lesson > .wp-block-group__inner-container{display:contents}
body.swp .lesson::before{content:"";grid-column:1;grid-row:1 / span 2;aspect-ratio:16/9;border-radius:8px;background:radial-gradient(circle at 50% 50%,var(--tv) 0 14px,transparent 15px),var(--raise)}
body.swp .lesson::after{content:"";grid-column:2;height:16px;background:linear-gradient(var(--raise),var(--raise)) 0 0/80% 6px no-repeat,linear-gradient(var(--raise),var(--raise)) 0 10px/50% 6px no-repeat}
body.swp .lesson .lbl{grid-column:2}
body.swp .lessons .lesson:nth-child(2){margin-left:var(--s7)}
body.swp .lessons .lesson:nth-child(3){margin-left:calc(var(--s7)*2)}
body.swp .swp-vens{margin-top:var(--s7);border-top:1px solid var(--line)}
body.swp .swp-vens .kt-inside-inner-col{gap:var(--s3);padding:var(--s6) var(--s6) var(--s4) 0}
body.swp .swp-vens .wp-block-kadence-column + .wp-block-kadence-column .kt-inside-inner-col{padding-left:var(--s6);border-left:1px solid var(--line)}
body.swp .swp-vens .wp-block-kadence-spacer{margin:0}
body.swp .swp-vens .kt-divider{border-radius:2px}
body.swp .ven-name{font-size:26px;letter-spacing:-.035em;font-weight:700}
body.swp .ven-text{font-size:15px}

/* ---------- 7 Contact ---------- */
body.swp .ct-h{font-size:80px;line-height:.98;letter-spacing:-.055em;font-weight:700;max-width:12ch}
body.swp .opts{border-top:1px solid var(--line)}
body.swp .swp-opt{margin:0}
body.swp .swp-opt .kt-blocks-info-box-link-wrap{display:grid!important;grid-template-columns:44px minmax(0,1fr) 24px;gap:var(--s4);align-items:center;padding:22px 0!important;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent!important;text-decoration:none;transition:padding .25s;box-shadow:none}
body.swp .swp-opt .kt-blocks-info-box-link-wrap:hover{padding-left:var(--s3)!important}
body.swp .swp-opt .kt-blocks-info-box-link-wrap::after{content:"→";color:var(--muted);font-size:18px}
body.swp .swp-opt .kt-blocks-info-box-media{width:44px;height:44px;border-radius:12px;border:1px solid var(--line)!important;display:grid;place-items:center;margin:0!important;padding:0!important;background:transparent}
body.swp .swp-opt .kt-blocks-info-box-media-container{margin:0!important}
body.swp .swp-opt .kt-info-svg-icon{color:var(--text);font-size:18px}
body.swp .swp-opt.prime .kt-blocks-info-box-media{background:var(--green);border-color:var(--green)!important}
body.swp .swp-opt.prime .kt-info-svg-icon{color:var(--green-ink)}
body.swp .swp-opt .kt-blocks-info-box-title{font-size:20px!important;letter-spacing:-.02em;font-weight:700;color:var(--text)!important;margin:0!important;line-height:1.2!important}
body.swp .swp-opt .kt-blocks-info-box-text{font-size:14px!important;color:var(--muted)!important;margin:0!important;line-height:1.4!important}
body.swp .swp-opt .kt-infobox-textcontent{text-align:left}

/* ---------- Responsive ---------- */
@media (max-width:1280px) and (min-width:1101px){body.swp .name{font-size:80px}}
@media (max-width:1100px){
  body.swp .swp-hero-row{min-height:0}
  body.swp .swp-orbit{justify-content:center}
  body.swp .swp-orbit .orbit{margin:var(--s4) auto var(--s6)}
}
@media (max-width:1024px){
  body.swp .h2{font-size:44px}
  body.swp .sec-hd > .wp-block-group__inner-container{grid-template-columns:1fr auto}
  body.swp .sec-hd .idx{grid-column:1/-1;padding:0}
  body.swp .sec-hd{margin-bottom:var(--s7)}
  body.swp .swp-spec .wp-block-kadence-column:nth-child(3) .kt-inside-inner-col{padding-left:0;border-left:0}
  body.swp .swp-spec .wp-block-kadence-column:nth-child(-n+2){border-bottom:1px solid var(--line)}
  body.swp .swp-about .slot.about-img{max-width:420px}
  body.swp .tv-word{font-size:56px}
  body.swp .ct-h{font-size:64px}
  body.swp .quote{font-size:44px}
}
@media (max-width:767px){
  body.swp .swp-vens .kt-inside-inner-col,
  body.swp .swp-vens .wp-block-kadence-column + .wp-block-kadence-column .kt-inside-inner-col{padding:var(--s5) 0;border-left:0}
  body.swp .swp-vens .wp-block-kadence-column + .wp-block-kadence-column{border-top:1px solid var(--line)}
}
@media (max-width:640px){
  body.swp .name{font-size:clamp(42px,13vw,56px);letter-spacing:-.05em}
  body.swp .role{font-size:22px}
  body.swp .lede{font-size:16px}
  body.swp .h2{font-size:34px}
  body.swp .sec-hd > .wp-block-group__inner-container{grid-template-columns:1fr}
  body.swp .cred-q{font-size:21px}
  body.swp .quote{font-size:34px}
  body.swp .tv-word{font-size:44px}
  body.swp .ct-h{font-size:clamp(40px,12vw,52px)}
  body.swp .swp-about .slot.about-img{aspect-ratio:4/3;max-width:none}
  body.swp .lessons .lesson:nth-child(n){margin-left:0}
  body.swp .swp-spec .kt-inside-inner-col{padding:var(--s4) var(--s3) var(--s4) 0}
  body.swp .swp-spec .wp-block-kadence-column:nth-child(even) .kt-inside-inner-col{padding-left:var(--s3)}
}

/* swp-v31.css gives .sec-hd a grid; on a Group block the grid belongs to the inner container */
body.swp .wp-block-group.sec-hd{display:block}
@media (max-width:1024px) and (min-width:641px){body.swp .swp-about .wp-block-kadence-image.slot{max-width:420px!important;width:100%}}

/* ================= Batch 03: inner pages ================= */
/* Page hero (About, Contact, Services, Work) and single headers */
body.swp .page-h1{font-size:72px;line-height:1.02;letter-spacing:-.05em;font-weight:700;max-width:18ch}
body.swp .page-h1 em{font-family:var(--serif);font-style:italic;font-weight:400;letter-spacing:-.01em;color:var(--muted)}
body.swp h1.wp-block-post-title.page-h1{margin:0}
body.swp .page-lede{font-size:18px;line-height:1.6;color:var(--muted);max-width:560px}
body.swp .swp-crumb{font:500 12px/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase}
body.swp .swp-crumb a{color:var(--faint);text-decoration:none}
body.swp .swp-crumb a::before{content:"← "}
body.swp .swp-crumb a:hover{color:var(--text)}
body.swp .wp-block-kadence-advancedbtn.ctas{justify-content:flex-start}
body.swp .swp-cta .kt-inside-inner-col{gap:var(--s5)}
body.swp .story a,body.swp .swp-milestone a{color:var(--text)}
body.swp .small{font-size:14px}
body.swp .step-t{font-size:22px;font-weight:600;letter-spacing:-.02em}
body.swp .swp-steps-row .kt-inside-inner-col{gap:var(--s3);padding-top:var(--s5);border-top:1px solid var(--line)}
body.swp ol.swp-steps{margin:0;padding-left:20px;color:var(--text);display:flex;flex-direction:column;gap:var(--s2)}
body.swp ol.swp-steps li::marker{font:500 13px var(--mono);color:var(--green)}
body.swp .swp-milestones{border-top:1px solid var(--line);padding-top:var(--s4)}
body.swp .swp-milestones > .wp-block-group__inner-container{display:flex;flex-direction:column;gap:var(--s2)}
/* social links: V3.1 outline pills instead of brand-coloured ones */
body.swp .swp-social.wp-block-social-links{gap:var(--s2)}
body.swp .swp-social .wp-social-link{background:transparent!important;color:var(--text)!important;border:1px solid var(--line);border-radius:12px}
body.swp .swp-social .wp-social-link:hover{border-color:var(--line-2);transform:none}
body.swp .swp-social .wp-block-social-link-anchor{padding:12px 16px;gap:10px}
body.swp .swp-social .wp-block-social-link-label{font-size:15px;font-weight:500}

/* Single project / service: body content from Gutenberg sits in the site container */
body.swp.single-project .entry-content > :not(.kb-row-layout-wrap):not(.alignfull),
body.swp.single-service .entry-content > :not(.kb-row-layout-wrap):not(.alignfull){max-width:calc(var(--max) + var(--pad) * 2);margin-inline:auto;padding-inline:var(--pad);box-sizing:border-box}
body.swp.single-service .entry-content > p,body.swp.single-project .entry-content > p{font-size:18px;line-height:1.7;color:var(--muted)}
body.swp.single-service .entry-content > p:first-child,body.swp.single-project .entry-content > p:first-child{padding-top:0}
body.swp .swp-case-hero .kt-inside-inner-col{gap:var(--s5)}
body.swp .swp-facts{border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
body.swp .swp-facts .kt-inside-inner-col{gap:6px;padding:var(--s4) var(--s5) var(--s4) 0}
body.swp .swp-facts .wp-block-kadence-column + .wp-block-kadence-column .kt-inside-inner-col{padding-left:var(--s5);border-left:1px solid var(--line)}
body.swp .swp-case-img img{border-radius:16px;border:1px solid var(--line)}
body.swp .swp-case-body h2{font-size:28px;letter-spacing:-.03em;margin-top:var(--s6)}

/* Work page: core Query Loop cards */
body.swp .swp-work-grid .wp-block-post-template{gap:var(--s7) var(--s6)}
body.swp .swp-work-grid .wp-block-post{display:flex;flex-direction:column;gap:var(--s3)}
body.swp .swp-work-grid .swp-card-img img,body.swp .kb-query-item .swp-card-img img{border-radius:16px;border:1px solid var(--line);background:var(--raise);transition:transform .4s ease}
body.swp .swp-work-grid .wp-block-post-title a{text-decoration:none;color:var(--text)}
body.swp .swp-work-grid .wp-block-post-terms a{color:var(--faint);text-decoration:none}
/* Batch 04: card meta (status · category), ACF summary, technologies; placeholder label on the image */
body.swp .swp-work-grid .swp-card-img,body.swp .kb-query-item .swp-card-img{position:relative;margin:0}
body.swp .swp-work-grid .swp-card-img a{display:block;border-radius:16px}
body.swp .swp-work-grid .swp-card-img img{transition:transform .4s ease}
body.swp .swp-work-grid .swp-card-img a:hover img{transform:scale(1.012)}
body.swp .wp-block-post-featured-image .ph.fx-tag{background:var(--bg);color:var(--muted)}
body.swp .swp-card-meta{gap:6px 14px;margin:var(--s2) 0 0}
body.swp .swp-card-meta > *{margin:0}
body.swp .swp-card-status{color:var(--green)!important}
body.swp .swp-card-status:has(.kb-inline-dynamic:empty),body.swp .swp-card-summary:has(.kb-inline-dynamic:empty),body.swp .swp-card-status:empty,body.swp .swp-card-summary:empty,body.swp .page-lede:empty{display:none}
body.swp .swp-work-grid .ptitle-s,body.swp .kb-query-item .ptitle-s{font-size:30px}
body.swp .kb-query-item .ptitle-s a{text-decoration:none;color:var(--text)}
body.swp .kb-query-item .ptitle-s a:hover{color:var(--green)}
body.swp .kb-query-item .swp-card-img a{display:block;border-radius:16px;overflow:hidden}
body.swp .kb-query-item .wp-block-post-terms a{color:var(--faint);text-decoration:none}
body.swp .kb-query-item a:focus-visible{outline:2px solid var(--green);outline-offset:3px}
body.swp .swp-work-grid .ptitle-s a:hover{color:var(--green)}
body.swp .swp-card-summary{margin:0;max-width:52ch}
body.swp .swp-tech-terms{font:500 12px/1.4 var(--mono);letter-spacing:.04em;color:var(--faint)}
body.swp .swp-tech-terms a{color:var(--faint);text-decoration:none}
body.swp .swp-tech-terms a:hover{color:var(--text)}
body.swp .swp-work-grid .wp-block-post a:focus-visible{outline:2px solid var(--green);outline-offset:3px}
/* Case study header: terms + external link (Kadence dynamic link; hidden when the ACF URL is empty) */
body.swp .swp-case-links{gap:var(--s4) var(--s5)}
body.swp .swp-case-terms{gap:6px 16px;align-items:baseline}
body.swp .swp-case-terms > *{margin:0}
body.swp .swp-case-terms .lbl a{color:var(--green);text-decoration:none}
body.swp .swp-ext-link:not(:has(a[href^="http"])){display:none}
/* Case study gallery (Kadence Element, ACF gallery): hide the whole section when the field is empty */
body.swp .kb-row-layout-wrap.swp-case-gallery:not(:has(.kadence-blocks-gallery-item)),
body.swp .wp-block-kadence-advancedgallery:not(:has(.kadence-blocks-gallery-item)){display:none}
body.swp .swp-case-shots img{border-radius:12px;border:1px solid var(--line)}
/* Batch 05: Work page on Kadence Query Loop (Adv). Filter buttons use the V3.1 filter pill (.fbtn):
   outline at rest, inverted when pressed. Card grid keeps the 16:10 card from Batch 04. */
body.swp .swp-work-filter{margin:0 0 var(--s6)}
body.swp .swp-work-filter .kadence-filter-wrap{border:0;padding:0;margin:0;min-width:0}
body.swp .swp-work-filter .buttons-options{display:flex;flex-wrap:wrap;gap:var(--s2)}
body.swp .swp-work-filter .kb-query-filter-filter-button{min-height:44px;padding:0 18px!important;border-radius:999px!important;border:1px solid var(--line-2)!important;background:transparent!important;color:var(--muted)!important;font:500 14px/1 var(--sans)!important;box-shadow:none!important}
body.swp .swp-work-filter .kb-query-filter-filter-button:hover{color:var(--text)!important;border-color:var(--text)!important}
body.swp .swp-work-filter .kb-query-filter-filter-button.pressed,body.swp .swp-work-filter .kb-query-filter-filter-button[aria-pressed="true"]{background:var(--text)!important;color:var(--bg)!important;border-color:var(--text)!important}
body.swp .swp-work-filter .kb-query-filter-filter-button:focus-visible{outline:2px solid var(--green);outline-offset:3px}
body.swp .wp-block-kadence-query .kb-query-grid-wrap{gap:var(--s7) var(--s6)!important;margin:0;padding:0}
body.swp .wp-block-kadence-query .kb-query-item{display:flex;flex-direction:column;gap:var(--s3)}
body.swp .wp-block-kadence-query .kb-query-item > *{margin:0}
@media (max-width:640px){
  body.swp .wp-block-kadence-query .kb-query-grid-wrap{grid-template-columns:minmax(0,1fr)!important;gap:var(--s6)!important}
  body.swp .swp-work-filter .buttons-options{flex-wrap:nowrap;overflow-x:auto;scrollbar-width:none;padding-bottom:2px}
  body.swp .swp-work-filter .btn-inner-wrap{flex:none}
}
/* Service header: "What's included" from the ACF deliverables repeater (Kadence Repeater), V3.1 .ticks look */
body.swp .swp-svc-included{border-top:1px solid var(--line);padding-top:var(--s5);max-width:760px}
body.swp .swp-svc-included > .wp-block-group__inner-container{display:flex;flex-direction:column;gap:var(--s4)}
body.swp .swp-ticks .wp-block-kadence-repeatertemplate{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:var(--s3) var(--s6)}
body.swp .swp-tick{margin:0;display:flex;gap:10px;align-items:flex-start;color:var(--text);font-size:16px;line-height:1.5}
body.swp .swp-tick::before{content:"";flex:none;width:16px;height:16px;margin-top:4px;background:var(--green);-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 6 9 17l-5-5'/%3E%3C/svg%3E") center/contain no-repeat}
@media (max-width:640px){body.swp .swp-ticks .wp-block-kadence-repeatertemplate{grid-template-columns:minmax(0,1fr)}}
body.swp .swp-empty{font-size:20px;font-weight:600;padding:var(--s6);border:1px solid var(--line);border-radius:16px;background:var(--surface);margin:0 0 var(--s5)}

/* Fluent Forms: V3.1 fields (colours from the Kadence palette, so dark/light both work) */
body.swp .swp-form .ff-el-group{margin-bottom:var(--s5)}
body.swp .swp-form .ff-el-input--label label{color:var(--text);font-weight:500;font-size:15px}
body.swp .swp-form .ff-el-form-control{background:var(--surface);border:1px solid var(--line-2);border-radius:12px;color:var(--text);min-height:52px;padding:12px 16px;font:400 16px/1.4 var(--sans)}
body.swp .swp-form textarea.ff-el-form-control{min-height:160px}
body.swp .swp-form .ff-el-form-control:focus{border-color:var(--green);box-shadow:0 0 0 3px color-mix(in srgb,var(--green) 25%,transparent);background:var(--surface);color:var(--text)}
body.swp .swp-form .ff-el-help-message,body.swp .swp-form .ff_tc_label{color:var(--muted)}
body.swp .swp-form .ff-el-is-required.asterisk-right label::after{color:var(--green)}
body.swp .swp-form .ff-btn-submit{background:var(--green)!important;color:var(--green-ink)!important;border:1px solid var(--green)!important;border-radius:12px!important;min-height:52px;padding:0 24px!important;font:600 15px/1 var(--sans)!important}
body.swp .swp-form .ff-btn-submit:hover{background:transparent!important;color:var(--green)!important;opacity:1}
body.swp .swp-form .ff-el-is-error .ff-el-form-control{border-color:var(--danger)}
body.swp .swp-form .error.text-danger{color:var(--danger)}
body.swp .swp-form .ff-message-success{background:var(--surface);border:1px solid var(--green);border-radius:12px;color:var(--text)}
body.swp .swp-form .ff-el-help-message{font-size:14px;margin-top:6px}
body.swp .swp-form .ff-el-tooltip svg,body.swp .swp-form .ff-el-tooltip{color:var(--faint);fill:currentColor}
body.swp .swp-form .ff-el-form-check-label,body.swp .swp-form .ff_tc_label{font-size:15px;line-height:1.5;color:var(--muted);display:flex;gap:10px;align-items:flex-start}
body.swp .swp-form input[type="checkbox"]{width:20px;height:20px;margin:2px 0 0;flex:none;accent-color:var(--green)}
/* FluentBooking embed */
body.swp .swp-booking{margin-top:var(--s5)}

@media (max-width:1024px){
  body.swp .page-h1{font-size:56px}
  body.swp .swp-facts .wp-block-kadence-column:nth-child(3) .kt-inside-inner-col{padding-left:0;border-left:0}
}
@media (max-width:640px){
  body.swp .page-h1{font-size:clamp(38px,11vw,48px)}
  body.swp .page-lede{font-size:16px}
  body.swp .swp-work-grid .wp-block-post-template{grid-template-columns:1fr!important}
  body.swp .swp-facts .kt-inside-inner-col{padding:var(--s4) var(--s3) var(--s4) 0}
}
/* hide a fact cell when its ACF field is empty (Kadence dynamic span renders empty) */
/* Kadence drops the dynamic span when the field is empty, leaving an empty .spec-v */
body.swp .swp-facts .wp-block-kadence-column:has(.spec-v .kb-inline-dynamic:empty),body.swp .swp-facts .wp-block-kadence-column:has(.spec-v:empty){display:none}
body.swp .swp-facts .wp-block-kadence-column:has(.spec-v .kb-inline-dynamic:empty) + .wp-block-kadence-column .kt-inside-inner-col,body.swp .swp-facts .wp-block-kadence-column:has(.spec-v:empty) + .wp-block-kadence-column .kt-inside-inner-col{border-left:0}

/* Legal documents (core blocks inside a Kadence row) */
body.swp .swp-legal{max-width:760px}
body.swp .swp-legal > .wp-block-group__inner-container > *{margin:0 0 var(--s4)}
body.swp .swp-legal h2{font-size:24px;letter-spacing:-.02em;margin-top:var(--s7)!important}
body.swp .swp-legal p,body.swp .swp-legal li{color:var(--muted);font-size:17px;line-height:1.7}
body.swp .swp-legal a{color:var(--text)}
body.swp .swp-review-note{border:1px dashed var(--warm);border-radius:12px;padding:var(--s4) var(--s5);color:var(--text)}
body.swp .swp-review-note p{margin:0;font-size:15px!important;color:var(--text)!important}

/* ================= Batch 06: visual refinement =================
 * Owner review (2026-11-08): headings too large, sparse CTAs, flat Work cards,
 * empty right halves on single pages, legal text not centred. Layout/columns are
 * Kadence row settings; this only adds type scale, card surfaces and states. */

/* Type scale: large but not oversized; titles wrap on words, not on one orphan */
body.swp .page-h1{font-size:60px;line-height:1.04;letter-spacing:-.045em;max-width:20ch;text-wrap:balance}
body.swp .ct-h{font-size:64px;line-height:1;letter-spacing:-.05em;text-wrap:balance}
body.swp .h2{text-wrap:balance}
body.swp.single-project h1.page-h1,body.swp.single-service h1.page-h1{font-size:56px;max-width:none}
body.swp .page-lede{text-wrap:pretty}
body.swp .story{text-wrap:pretty}

/* Panel: the one surface component (cards, meta, form, CTA options) */
body.swp .swp-panel{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:var(--s6)}
body.swp .swp-panel > .kt-inside-inner-col{gap:var(--s4)}

/* ---- Work: Kadence Query Loop (Adv) cards as distinct components ---- */
body.swp .wp-block-kadence-query .kb-query-item{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;gap:var(--s3);padding-bottom:var(--s6);position:relative;transition:border-color .25s,transform .25s,box-shadow .25s}
body.swp .wp-block-kadence-query .kb-query-item:hover{border-color:var(--line-2);transform:translateY(-2px);box-shadow:0 18px 40px -24px rgba(0,0,0,.45)}
body.swp .wp-block-kadence-query .kb-query-item:focus-within{border-color:var(--green)}
body.swp .wp-block-kadence-query .kb-query-item > :not(.swp-card-img):not(.kb-query-item-flip-back){padding-inline:var(--s6)}
body.swp .kb-query-item .swp-card-img{margin:0 0 var(--s2)!important;border-bottom:1px solid var(--line);background:var(--raise)}
body.swp .kb-query-item .swp-card-img a{border-radius:0}
body.swp .kb-query-item .swp-card-img img{border:0!important;border-radius:0!important;display:block}
body.swp .kb-query-item:hover .swp-card-img img{transform:scale(1.012)}
body.swp .kb-query-item .swp-card-meta{margin:0!important;gap:8px}
body.swp .kb-query-item .swp-card-status{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--line-2);border-radius:999px;padding:5px 10px 5px 9px;color:var(--text)!important}
body.swp .kb-query-item .swp-card-status::before{content:"";width:7px;height:7px;border-radius:50%;background:var(--green)}
body.swp .kb-query-item .swp-card-meta > .wp-block-post-terms{display:inline-flex;align-items:center;padding:5px 0}
body.swp .wp-block-kadence-query .ptitle-s{font-size:26px;line-height:1.15;letter-spacing:-.03em}
body.swp .kb-query-item .swp-card-summary{font-size:16px;line-height:1.55}
body.swp .kb-query-item .swp-tech-terms{margin-top:auto!important;padding-top:var(--s3)!important;border-top:1px dashed var(--line)}
body.swp .kb-query-item .swp-tech-terms:empty{display:none}
body.swp .kb-query-item .ptitle-s a::after{content:"";position:absolute;inset:0;z-index:1} /* whole card clickable; links in meta stay above */
body.swp .kb-query-item .wp-block-post-terms a,body.swp .kb-query-item .swp-tech-terms a{position:relative;z-index:2}
body.swp .kb-query-item .ptitle-s a:focus-visible{outline:none}
body.swp .kb-query-item:has(.ptitle-s a:focus-visible){outline:2px solid var(--green);outline-offset:3px}
body.swp .wp-block-kadence-query .kb-query-grid-wrap{gap:var(--s6)!important}

/* ---- Closing CTA (pattern "SWP · Closing CTA"): heading + copy + button | contact options ---- */
body.swp .swp-ct-row .kt-inside-inner-col{gap:var(--s5)}
body.swp .swp-ct-row > .kt-row-column-wrap{align-items:center}
body.swp .swp-ct-row .swp-opts-col > .kt-inside-inner-col{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:var(--s3) var(--s6)}
body.swp .swp-ct-row .swp-opts-col .swp-opt:last-child .kt-blocks-info-box-link-wrap,body.swp .swp-ct-row .swp-opts-col .opts > :last-child .kt-blocks-info-box-link-wrap{border-bottom:0}
body.swp .swp-ct-row .swp-opts-col .opts{border-top:0}
body.swp .swp-ct .swp-next{border-top:1px solid var(--line);padding-top:var(--s5);margin-top:var(--s2)}
body.swp .swp-next > .wp-block-group__inner-container{display:flex;flex-direction:column;gap:var(--s3)}
body.swp .swp-next ol.swp-steps{color:var(--muted);font-size:16px}

/* ---- Home: Writing & insights (core Query Loop) ---- */
body.swp .swp-writing-lede{margin-top:calc(-1 * var(--s5))!important;margin-bottom:var(--s6)!important;max-width:620px}
body.swp .swp-writing-grid .wp-block-post-template{gap:var(--s6);margin:0;padding:0}
body.swp .swp-writing-grid .wp-block-post{margin:0}
body.swp .swp-post-card{height:100%;background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;position:relative;transition:border-color .25s,transform .25s}
body.swp .swp-post-card:hover{border-color:var(--line-2);transform:translateY(-2px)}
body.swp .swp-post-card > .wp-block-group__inner-container,body.swp .swp-post-card{display:flex;flex-direction:column}
body.swp .swp-post-img{margin:0;border-bottom:1px solid var(--line);background:var(--raise)}
body.swp .swp-post-img img{display:block}
body.swp .swp-post-body{padding:var(--s5) var(--s6) var(--s6)}
body.swp .swp-post-body > .wp-block-group__inner-container,body.swp .swp-post-body{display:flex;flex-direction:column;gap:var(--s3)}
body.swp .swp-post-meta{gap:6px 14px;margin:0}
body.swp .swp-post-meta > *{margin:0}
body.swp .swp-post-meta a{color:var(--green);text-decoration:none;position:relative;z-index:2}
body.swp .swp-post-title{font-size:22px;line-height:1.25;letter-spacing:-.02em;margin:0}
body.swp .swp-post-title a{color:var(--text);text-decoration:none}
body.swp .swp-post-title a::after{content:"";position:absolute;inset:0;z-index:1}
body.swp .swp-post-title a:hover{color:var(--green)}
body.swp .swp-post-card:has(.swp-post-title a:focus-visible){outline:2px solid var(--green);outline-offset:3px}
body.swp .swp-post-title a:focus-visible{outline:none}
body.swp .swp-post-excerpt,body.swp .swp-post-excerpt p{margin:0;color:var(--muted);font-size:16px;line-height:1.55}
body.swp .swp-empty-state{border:1px dashed var(--line-2);border-radius:20px;padding:var(--s7) var(--s6);background:var(--surface);text-align:center}
body.swp .swp-empty-state > .wp-block-group__inner-container{display:flex;flex-direction:column;align-items:center;gap:var(--s3)}
body.swp .swp-empty-t{font-size:26px;line-height:1.2;letter-spacing:-.03em;font-weight:700;max-width:24ch}
body.swp .swp-writing .wp-block-kadence-advancedbtn.ctas{margin-top:var(--s6)}

/* ---- Single project / service: two-column header + metadata panel ---- */
body.swp .swp-case-top > .kt-row-column-wrap{align-items:end}
body.swp .swp-meta{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:var(--s2) var(--s6)}
body.swp .swp-meta > .wp-block-group__inner-container{display:flex;flex-direction:column}
body.swp .swp-meta-row{display:grid!important;grid-template-columns:110px minmax(0,1fr);gap:var(--s4);align-items:baseline;padding:14px 0;border-bottom:1px solid var(--line);margin:0!important}
body.swp .swp-meta-row > .wp-block-group__inner-container{display:contents}
body.swp .swp-meta-row:last-child{border-bottom:0}
body.swp .swp-meta-row > *{margin:0}
body.swp .swp-meta-row .spec-v{font-size:15px}
body.swp .swp-meta-row .spec-v a{color:var(--text)}
body.swp .swp-meta-row:has(.spec-v:empty),body.swp .swp-meta-row:has(.kb-inline-dynamic:empty),body.swp .swp-meta-row:has(.wp-block-post-terms:empty){display:none!important}
/* Batch 08: a Stack row whose post-terms block printed nothing keeps only its label; hide it, and hide the
   whole panel when no row has a value (project with no metadata yet, e.g. Digital Syrup). */
body.swp .swp-meta-row:not(:has(.spec-v,.kb-inline-dynamic,.wp-block-post-terms)){display:none!important}
body.swp .swp-meta:not(:has(.kb-inline-dynamic:not(:empty),.spec-v:not(:empty),.wp-block-post-terms:not(:empty))){display:none!important}
body.swp .swp-meta-row .swp-tech-terms{font:500 15px/1.5 var(--sans);letter-spacing:0;color:var(--text)}
body.swp .swp-meta-row .swp-tech-terms a{color:var(--text)}
body.swp .swp-status-v{display:inline-flex!important;align-items:center;gap:8px}
body.swp .swp-status-v::before{content:"";width:8px;height:8px;border-radius:50%;background:var(--green);flex:none}
body.swp .swp-case-img{margin:var(--s4) 0 0!important}
body.swp .swp-case-img img{border-radius:20px!important}

/* Case-study body: label column + reading column, one row per section */
body.swp .swp-cs .swp-cs-row{padding-block:var(--s7);border-top:1px solid var(--line)}
body.swp .swp-cs .swp-cs-row:first-child{border-top:0;padding-top:0}
body.swp .swp-cs .swp-cs-row > .wp-block-group__inner-container,body.swp .swp-cs .swp-cs-row.is-layout-flow{display:grid;grid-template-columns:minmax(0,4fr) minmax(0,8fr);gap:var(--s6)}
body.swp .swp-cs-h{font-size:24px;line-height:1.2;letter-spacing:-.025em;font-weight:700;margin:0}
body.swp .swp-cs-txt > .wp-block-group__inner-container,body.swp .swp-cs-txt{display:flex;flex-direction:column;gap:var(--s4)}
body.swp .swp-cs-txt p,body.swp .swp-cs-txt li{font-size:18px;line-height:1.7;color:var(--muted);margin:0;max-width:66ch}
body.swp .swp-cs-txt ul{margin:0;padding-left:0;list-style:none;display:flex;flex-direction:column;gap:10px}
body.swp .swp-cs-txt ul li{position:relative;padding-left:26px;color:var(--text)}
body.swp .swp-cs-txt ul li::before{content:"";position:absolute;left:0;top:.62em;width:12px;height:1px;background:var(--green)}
body.swp .swp-cs-txt a{color:var(--text)}

/* Related projects (Kadence Post Grid in the "Related projects" Element) */
body.swp .swp-related .kt-post-grid-wrap,body.swp .swp-related .kt-post-grid-layout-grid-wrap{gap:var(--s6)}
body.swp .swp-related .kt-blocks-post-grid-item{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;position:relative;transition:border-color .25s,transform .25s}
body.swp .swp-related .kt-blocks-post-grid-item:hover{border-color:var(--line-2);transform:translateY(-2px)}
body.swp .swp-related .kt-blocks-post-grid-item:focus-within{border-color:var(--green)}
body.swp .swp-related .kadence-post-image{margin:0;border-bottom:1px solid var(--line)}
body.swp .swp-related .kadence-post-image img{display:block;border-radius:0}
body.swp .swp-related .kt-blocks-post-grid-item-inner{padding:var(--s5) var(--s6) var(--s6)!important}
body.swp .swp-related .entry-title{font-size:22px!important;line-height:1.2!important;letter-spacing:-.02em;margin:0 0 8px!important}
body.swp .swp-related .entry-title a{color:var(--text);text-decoration:none}
body.swp .swp-related .entry-title a::after{content:"";position:absolute;inset:0;z-index:1}
body.swp .swp-related .entry-title a:hover{color:var(--green)}
body.swp .swp-related .entry-content p,body.swp .swp-related .kt-blocks-post-grid-item .entry-content{color:var(--muted);font-size:15px;line-height:1.55;margin:0}

/* ---- Services overview: cards (Kadence Info Box, one per service) ---- */
body.swp .swp-svc-cards .kt-inside-inner-col{height:100%}
body.swp .swp-svc-card{height:100%;margin:0}
body.swp .swp-svc-card .kt-blocks-info-box-link-wrap{height:100%;display:flex!important;flex-direction:column;align-items:flex-start!important;gap:var(--s4);background:var(--surface)!important;border:1px solid var(--line)!important;border-radius:20px!important;padding:var(--s6)!important;transition:border-color .25s,transform .25s;text-decoration:none}
body.swp .swp-svc-card .kt-blocks-info-box-link-wrap:hover{border-color:var(--line-2)!important;transform:translateY(-2px)}
body.swp .swp-svc-card .kt-blocks-info-box-link-wrap:focus-visible{outline:2px solid var(--green);outline-offset:3px}
body.swp .swp-svc-card .kt-blocks-info-box-media-container{margin:0!important}
body.swp .swp-svc-card .kt-blocks-info-box-media{width:48px;height:48px;border-radius:12px;border:1px solid var(--line-2)!important;display:grid;place-items:center;padding:0!important;margin:0!important;background:transparent!important}
body.swp .swp-svc-card .kt-info-svg-icon{color:var(--green);font-size:20px}
body.swp .swp-svc-card .kt-infobox-textcontent{display:flex;flex-direction:column;gap:10px;flex:1;text-align:left}
body.swp .swp-svc-card .kt-blocks-info-box-title{font-size:22px!important;line-height:1.2!important;letter-spacing:-.02em;font-weight:700;color:var(--text)!important;margin:0!important}
body.swp .swp-svc-card .kt-blocks-info-box-text{font-size:16px!important;line-height:1.55!important;color:var(--muted)!important;margin:0!important}
body.swp .swp-svc-card .kt-blocks-info-box-learnmore-wrap{margin-top:auto!important}
body.swp .swp-svc-card .kt-blocks-info-box-learnmore{margin:var(--s2) 0 0!important;padding:0!important;background:transparent!important;border:0!important;color:var(--text)!important;font:600 15px/1.2 var(--sans)!important}
body.swp .swp-svc-card .kt-blocks-info-box-learnmore::after{content:" →"}
body.swp .swp-svc-card .kt-blocks-info-box-link-wrap:hover .kt-blocks-info-box-learnmore{color:var(--green)!important}

/* Service single: included panel + process */
body.swp .swp-incl-panel .swp-ticks .wp-block-kadence-repeatertemplate{grid-template-columns:minmax(0,1fr)!important}
body.swp .swp-incl-panel .swp-svc-included{border-top:0;padding-top:0;max-width:none}

/* ---- About ---- */
body.swp .swp-about-hero .slot.about-img{aspect-ratio:4/5;margin:0;border-radius:20px;overflow:hidden}
body.swp .swp-about-hero .slot.about-img img{width:100%;height:100%;object-fit:cover;object-position:60% 40%;border-radius:0}
body.swp .swp-about-hero > .kt-row-column-wrap{align-items:center}
body.swp .swp-tv-panel{border-left:4px solid var(--tv)!important}
body.swp .swp-tv-panel .tv-kicker{color:var(--tv-ink)}
body.swp .swp-tv-year{font-size:56px;line-height:1;letter-spacing:-.05em;font-weight:700}
body.swp .swp-social-grid.wp-block-social-links{display:grid!important;grid-template-columns:repeat(5,minmax(0,1fr));gap:var(--s3)!important;margin:0}
body.swp .swp-social-grid .wp-social-link{margin:0!important;width:100%;border-radius:16px!important;background:var(--surface)!important;border:1px solid var(--line)!important;transition:border-color .2s,transform .2s}
body.swp .swp-social-grid .wp-social-link:hover{border-color:var(--line-2)!important;transform:translateY(-2px)}
body.swp .swp-social-grid .wp-block-social-link-anchor{width:100%;justify-content:flex-start;padding:20px!important;gap:12px!important;min-height:64px}
body.swp .swp-social-grid .wp-block-social-link-anchor svg{width:22px;height:22px}
body.swp .swp-social-grid .wp-block-social-link-label{font-size:15px;font-weight:600}
body.swp .swp-social-grid .wp-block-social-link-anchor:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:16px}

/* ---- Contact: form card + Fluent Forms controls ---- */
body.swp .swp-form-card > .kt-inside-inner-col{background:var(--surface);border:1px solid var(--line);border-radius:20px;padding:var(--s7)}
body.swp .swp-form-card .swp-form .ff-el-form-control{background:var(--bg)}
body.swp .swp-form-card .swp-form .ff-el-form-control:focus{background:var(--bg)}
body.swp .swp-form .ff-el-group{margin-bottom:var(--s5)}
body.swp .swp-form .ff-el-input--label{margin-bottom:8px}
body.swp .swp-form .ff-el-input--label label{font-size:15px;font-weight:600;letter-spacing:-.005em}
body.swp .swp-form .ff-el-form-control{min-height:52px;height:52px}
body.swp .swp-form textarea.ff-el-form-control{height:auto;min-height:168px;resize:vertical;line-height:1.55}
body.swp .swp-form .ff-el-form-control::placeholder{color:var(--faint);opacity:1}
body.swp .swp-form select.ff-el-form-control{appearance:none;-webkit-appearance:none;padding-right:44px;cursor:pointer;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='16' height='16' viewBox='0 0 24 24' fill='none' stroke='%23999' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 16px center;background-size:16px}
body.swp .swp-form select.ff-el-form-control option{background:var(--surface);color:var(--text)}
body.swp .swp-form .ff-el-form-control:focus-visible{outline:none}
body.swp .swp-form .ff-el-help-message{font-style:normal;color:var(--faint)}
body.swp .swp-form .ff-el-tc,body.swp .swp-form .ff_t_c{margin:0}
body.swp .swp-form .ff_tc_checkbox,body.swp .swp-form .ff-el-form-check-label{display:flex;gap:12px;align-items:flex-start}
body.swp .swp-form input[type="checkbox"]{appearance:none;-webkit-appearance:none;width:22px!important;height:22px!important;border:1.5px solid var(--line-2);border-radius:6px;background:var(--bg);display:inline-grid;place-content:center;cursor:pointer;transition:background .15s,border-color .15s;margin-top:1px}
body.swp .swp-form input[type="checkbox"]::before{content:"";width:12px;height:12px;transform:scale(0);transition:transform .12s;background:var(--green-ink);clip-path:polygon(14% 44%,0 65%,50% 100%,100% 16%,80% 0%,43% 62%)}
body.swp .swp-form input[type="checkbox"]:checked{background:var(--green);border-color:var(--green)}
body.swp .swp-form input[type="checkbox"]:checked::before{transform:scale(1)}
body.swp .swp-form input[type="checkbox"]:focus-visible{outline:2px solid var(--green);outline-offset:2px}
body.swp .swp-form .ff_tc_label a,body.swp .swp-form .ff-el-form-check-label a{color:var(--text);text-decoration:underline;text-underline-offset:3px}
body.swp .swp-form .ff_submit_btn_wrapper{margin-top:var(--s5);margin-bottom:0}
body.swp .swp-form .ff-btn-submit{min-width:180px;justify-content:center}
body.swp .swp-form .ff-btn-submit:focus-visible{outline:2px solid var(--green);outline-offset:3px}
body.swp .swp-form-intro{color:var(--muted);font-size:15px}
body.swp .swp-next-panel{background:transparent;border:1px solid var(--line);border-radius:20px;padding:var(--s6)}
body.swp .swp-next-panel > .wp-block-group__inner-container{display:flex;flex-direction:column;gap:var(--s4)}

/* ---- Legal documents: centred reading column ---- */
body.swp .swp-legal-hero .kt-inside-inner-col,body.swp .swp-legal{max-width:760px;margin-inline:auto;width:100%}
body.swp .swp-legal-hero .page-h1{max-width:none}
body.swp .swp-legal h2{font-size:26px}
body.swp .swp-legal h3{font-size:19px;letter-spacing:-.01em;margin-top:var(--s5)!important;color:var(--text)}
body.swp .swp-legal ul{padding-left:22px}
body.swp .swp-legal li{margin-bottom:6px}
body.swp .swp-legal-meta{font:500 12px/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--faint)}
body.swp .swp-legal .swp-legal-summary{background:var(--surface);border:1px solid var(--line);border-radius:16px;padding:var(--s5) var(--s6);color:var(--text)!important}

/* ---- Blog archive (Kadence posts page) ---- */
body.swp.blog .content-area,body.swp.archive .content-area{margin-top:var(--s8)}
body.swp.blog .loop-entry,body.swp.archive.category .loop-entry{background:var(--surface);border:1px solid var(--line);border-radius:20px;overflow:hidden;padding:0}
/* Batch 08: padding:0 — the 32px article padding left a band above the card image; the content wrap keeps its own padding. */

/* ---- Responsive ---- */
@media (max-width:1024px){
  body.swp .page-h1{font-size:48px}
  body.swp.single-project h1.page-h1,body.swp.single-service h1.page-h1{font-size:46px}
  body.swp .ct-h{font-size:52px}
  body.swp .swp-social-grid.wp-block-social-links{grid-template-columns:repeat(3,minmax(0,1fr))}
  body.swp .swp-cs .swp-cs-row > .wp-block-group__inner-container,body.swp .swp-cs .swp-cs-row.is-layout-flow{grid-template-columns:minmax(0,1fr);gap:var(--s4)}
  body.swp .swp-form-card > .kt-inside-inner-col{padding:var(--s6)}
}
@media (max-width:640px){
  body.swp .page-h1{font-size:clamp(34px,10vw,42px)}
  body.swp.single-project h1.page-h1,body.swp.single-service h1.page-h1{font-size:clamp(32px,9.5vw,40px)}
  body.swp .ct-h{font-size:clamp(36px,11vw,44px)}
  body.swp .swp-social-grid.wp-block-social-links{grid-template-columns:repeat(2,minmax(0,1fr))}
  body.swp .wp-block-kadence-query .kb-query-item > :not(.swp-card-img):not(.kb-query-item-flip-back){padding-inline:var(--s5)}
  body.swp .wp-block-kadence-query .kb-query-item{padding-bottom:var(--s5)}
  body.swp .swp-meta{padding:var(--s1) var(--s5)}
  body.swp .swp-meta-row{grid-template-columns:96px minmax(0,1fr)}
  body.swp .swp-form-card > .kt-inside-inner-col{padding:var(--s5)}
  body.swp .swp-ct-row .swp-opts-col > .kt-inside-inner-col{padding:var(--s2) var(--s5)}
  body.swp .swp-svc-card .kt-blocks-info-box-link-wrap{padding:var(--s5)!important}
  body.swp .swp-post-body{padding:var(--s5)}
  body.swp .swp-cs .swp-cs-row{padding-block:var(--s6)}
}
@media (prefers-reduced-motion:reduce){
  body.swp .kb-query-item,body.swp .swp-post-card,body.swp .swp-svc-card .kt-blocks-info-box-link-wrap,body.swp .swp-social-grid .wp-social-link,body.swp .swp-related .kt-blocks-post-grid-item{transition:none!important;transform:none!important}
}
/* Batch 06 fine-tuning after the first browser review */
body.swp .kb-query-item-flip-back{display:none}
body.swp .kb-query-item .swp-card-status:empty,body.swp .kb-query-item .swp-card-status:has(.kb-inline-dynamic:empty){display:none!important}
body.swp .swp-cs .swp-cs-row > .wp-block-group__inner-container,body.swp .swp-cs .swp-cs-row.is-layout-flow{align-items:start}
body.swp .swp-cs .swp-cs-row{padding-block:var(--s6)}
body.swp .swp-cs-h{padding-top:2px}
body.swp .swp-meta-row .swp-tech-terms{display:block!important}
/* The global fallback is brand artwork, not project imagery: on a single project page it would sit
   under the title like a screenshot, so it is shown only on cards (rule: never fake a screenshot). */
body.swp.single-project .swp-case-img:has(img[data-swp-placeholder]){display:none}
body.swp .sec-hd + .swp-social-intro,body.swp .sec-hd + .swp-writing-lede{margin-top:calc(-1 * var(--s5))!important}
body.swp .swp-social-intro{margin-bottom:var(--s5)!important}
body.swp .swp-about-hero .story,body.swp .swp-about-hero .page-lede{max-width:600px}
body.swp .swp-teach-row .story{max-width:620px}
body.swp .swp-form-t{font-size:28px;line-height:1.15;letter-spacing:-.03em;font-weight:700}
body.swp .swp-req{color:var(--green)}
body.swp .swp-form-card .kt-inside-inner-col > .lbl{margin-bottom:-12px!important}
body.swp .swp-svc-process .swp-steps-row{margin-top:0}
body.swp .swp-incl-panel .swp-svc-included > .wp-block-group__inner-container{gap:var(--s5)}
body.swp .swp-svc-top .ctas{padding-top:var(--s3)}
/* Footer (Batch 06): Contact column (block widget, Footer 4) + Legal menu in the bottom row (Kadence
   footer navigation, menu location "footer" = menu "Legal"; empty until a policy is published) */
body.swp .site-footer .swp-foot-contact{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--s3)}
body.swp .site-footer .swp-foot-contact a{color:var(--muted);text-decoration:none}
body.swp .site-footer .swp-foot-contact a:hover{color:var(--text)}
body.swp .site-footer .footer-widget4 .sft-text{margin-top:var(--s4);font-size:14px;color:var(--faint)}
body.swp .site-footer .footer-widget4 .widget-title{margin-bottom:var(--s4)!important}
body.swp .site-footer a:focus-visible{outline:2px solid var(--green);outline-offset:3px;border-radius:4px}
body.swp .site-bottom-footer-wrap .footer-html-inner{justify-content:flex-start;column-gap:var(--s6)}
body.swp .footer-navigation-wrap:not(:has(li)){display:none}
body.swp #colophon .footer-navigation .footer-menu-container > ul{gap:var(--s2) var(--s4);flex-wrap:wrap;justify-content:flex-end}
body.swp #colophon .footer-navigation .footer-menu-container > ul > li > a{font-size:13px;color:var(--faint);padding:4px 0}
body.swp #colophon .footer-navigation .footer-menu-container > ul > li > a:hover{color:var(--text)}
@media (max-width:767px){body.swp #colophon .footer-navigation .footer-menu-container > ul{justify-content:flex-start}}
/* Fluent Forms consent: space between the box and its text; no empty band under the button */
body.swp .swp-form .ff_t_c,body.swp .swp-form .ff-el-form-check-label > span{padding-left:0;margin-left:0}
body.swp .swp-form .ff-el-form-check-label input[type="checkbox"],body.swp .swp-form .ff_tc_checkbox input[type="checkbox"]{margin-right:12px!important}
body.swp .swp-form form{margin-bottom:0}
body.swp .swp-form .ff_submit_btn_wrapper,body.swp .swp-form .ff-el-group:last-child{margin-bottom:0}
body.swp .swp-svc-cards{gap:var(--s5)!important}
/* Blog posts page (Batch 06): intro + empty state come from the Kadence Element "Blog intro (posts page)" */
body.swp.blog section.error{display:none}
body.swp.blog:has(#archive-container) .swp-blog-empty{display:none}
body.swp .swp-blog-empty{margin:0 0 var(--s8)}
body.swp .swp-blog-empty .ctas{justify-content:center!important;margin-top:var(--s3)}
body.swp.blog .content-area{margin-top:var(--s7)}
/* the Element provides the page's h1; Kadence's archive header would repeat it (or say "Nothing Found") */
body.swp.blog .entry-header[class*="archive-title"]{display:none}
body.swp.blog .swp-blog-intro > .kt-row-column-wrap{padding-left:0;padding-right:0}
/* social cards: long labels ("YouTube · TutsVela") wrap inside the card instead of overlapping */
body.swp .swp-social-grid .wp-block-social-link-label{white-space:normal;min-width:0;line-height:1.25;overflow-wrap:anywhere;position:static!important;width:auto!important;height:auto!important;clip:auto!important;margin:0!important}
body.swp .swp-social-grid .wp-block-social-link-anchor{min-width:0}

/* ================= Batch 07: readable type scale =================
 * Owner: some text was too small. Measured (docs/qa/batch-07/audit-before.json): mono labels 11–12px,
 * chips 11px, Kadence post meta 12.8px, nav counters 10px. Kadence typography + Style Library presets
 * now carry the headline sizes (H1 60, H2 52, H3 26, nav 16, eyebrow/index presets 13px); this block
 * aligns the V3.1 classes that set their own sizes. Mono stays smaller than body (editorial hierarchy),
 * but never below 12px, and 13px for anything a visitor needs to read. */
:root{--fs-meta:13px;--fs-chip:12px;--fs-small:15px}
body.swp .wp-block-kadence-advancedheading.lbl,body.swp p.lbl,body.swp .lbl,
body.swp .wp-block-kadence-advancedheading.idx,body.swp .idx,
body.swp .swp-crumb,body.swp .facts dt,body.swp .xb .n,body.swp .kicker,
body.swp .swp-legal-meta,body.swp .swp-tech-terms,body.swp .site-footer .widget-title{font-size:var(--fs-meta)}
body.swp .tags li,body.swp .bar span,body.swp .fbtn small,body.swp .ph{font-size:var(--fs-chip)}
body.swp .tags li{padding:6px 10px}
body.swp #primary-menu > li > a::after{font-size:11px}
body.swp .site-bottom-footer-wrap .footer-html-inner,body.swp #colophon .footer-navigation .footer-menu-container > ul > li > a{font-size:14px}
body.swp .site-footer .footer-widget4 .sft-text{font-size:15px}
body.swp .swp-tick,body.swp .swp-svc-card .kt-blocks-info-box-text,body.swp .swp-post-excerpt,body.swp .swp-post-excerpt p{font-size:16px}
body.swp .swp-form .ff-el-help-message,body.swp .swp-form-intro,body.swp .small{font-size:var(--fs-small)}
body.swp .swp-next-panel ol.swp-steps,body.swp .swp-next ol.swp-steps{font-size:16px;color:var(--muted)}
/* Headline scale tuned for 1280: fluid between 1024 and 1440, no larger than the V3.1 desktop values */
body.swp .page-h1{font-size:clamp(44px,calc(24px + 2.5vw),60px)}
body.swp.single-project h1.page-h1,body.swp.single-service h1.page-h1{font-size:clamp(40px,calc(20px + 2.5vw),56px)}
body.swp .h2{font-size:clamp(36px,calc(20px + 2.2vw),52px)}
body.swp .ct-h{font-size:clamp(44px,calc(24px + 2.5vw),60px)}
body.swp .swp-cs-h{margin:0!important;line-height:1.25}
body.swp .swp-cs .swp-cs-row > .wp-block-group__inner-container > *,body.swp .swp-cs .swp-cs-row.is-layout-flow > *{margin-top:0!important;margin-bottom:0!important}
@media (max-width:1024px){
  body.swp .page-h1{font-size:44px}
  body.swp .h2{font-size:40px}
  body.swp .ct-h{font-size:48px}
}
@media (max-width:640px){
  body.swp .page-h1{font-size:clamp(32px,9.5vw,40px)}
  body.swp .h2{font-size:clamp(30px,8.6vw,34px)}
  body.swp .ct-h{font-size:clamp(34px,10vw,42px)}
  body.swp.single-project h1.page-h1,body.swp.single-service h1.page-h1{font-size:clamp(30px,9vw,38px)}
}
/* Touch targets on small screens (audit: logo links 22px, mobile menu items 30px, term links 16–19px) */
@media (max-width:767px){
  body.swp #mobile-drawer .mobile-navigation ul li > a{min-height:48px;display:flex;align-items:center}
  body.swp .swp-logo a{min-height:44px}
  body.swp .swp-case-terms a,body.swp .swp-meta-row .swp-tech-terms a{display:inline-flex;align-items:center;min-height:32px}
}
@media (max-width:767px){
  body.swp .site-footer .widget_nav_menu ul,body.swp .site-footer .swp-foot-contact{gap:0}
  body.swp .site-footer .widget_nav_menu a,body.swp .site-footer .swp-foot-contact a{display:flex;align-items:center;min-height:44px}
}

/* ================= Batch 07: blog (Kadence single post + archive) =================
 * Article typography for future tutorials: a 720px reading column, article-scale headings (the
 * global H2 is a 52px section title), readable code blocks, V3.1 meta. Layout stays Kadence's. */
body.swp.single-post .entry-header .entry-title{font-size:clamp(34px,calc(18px + 2.2vw),48px);line-height:1.08;letter-spacing:-.04em;text-wrap:balance}
body.swp.single-post .entry-taxonomies a,body.swp.blog .entry-taxonomies a{font:500 var(--fs-meta)/1.3 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--green);text-decoration:none}
body.swp.single-post .entry-meta,body.swp.blog .entry-meta{font-size:14px;color:var(--muted)}
body.swp.single-post .entry-meta a,body.swp.blog .entry-meta a{color:var(--text)}
body.swp.single-post .entry-content{font-size:18px;line-height:1.75}
body.swp.single-post .entry-content > *{max-width:720px;margin-left:auto;margin-right:auto}
body.swp.single-post .entry-content p,body.swp.single-post .entry-content li{color:var(--muted)}
body.swp.single-post .entry-content strong{color:var(--text)}
body.swp.single-post .entry-content h2{font-size:30px;line-height:1.2;letter-spacing:-.03em;margin:var(--s8) auto var(--s4)}
body.swp.single-post .entry-content h3{font-size:22px;line-height:1.3;letter-spacing:-.02em;margin:var(--s6) auto var(--s3)}
body.swp.single-post .entry-content ul,body.swp.single-post .entry-content ol{padding-left:1.3em}
body.swp.single-post .entry-content li{margin-bottom:8px}
body.swp.single-post .entry-content li::marker{color:var(--green)}
body.swp.single-post .entry-content a{color:var(--text);text-decoration:underline;text-decoration-color:var(--green);text-underline-offset:3px}
body.swp.single-post .entry-content a:hover{color:var(--green)}
body.swp .entry-content pre.wp-block-code{background:var(--surface);border:1px solid var(--line);border-radius:12px;padding:var(--s4) var(--s5);overflow-x:auto}
body.swp .entry-content pre.wp-block-code code{font:500 14px/1.6 var(--mono);color:var(--text);white-space:pre}
body.swp .entry-content :not(pre) > code{font:500 .88em var(--mono);background:var(--surface);border:1px solid var(--line);border-radius:6px;padding:1px 6px}
body.swp .swp-sample-note{border:1px dashed var(--warm);border-radius:12px;padding:var(--s4) var(--s5)!important;background:transparent}
body.swp .swp-sample-note p{margin:0;font-size:15px!important;color:var(--text)!important}
/* comments heading: same scale as article H2s, not a 52px section title */
body.swp .fluent-comments-block .flc_comments-title{font-size:24px;letter-spacing:-.02em}
/* Archive (/blog/) and category cards */
body.swp.blog .loop-entry .entry-content-wrap,body.swp.archive .loop-entry .entry-content-wrap{padding:var(--s6)}
body.swp.blog .loop-entry .entry-title,body.swp.archive .loop-entry .entry-title{font-size:24px;line-height:1.2;letter-spacing:-.025em}
body.swp.blog .loop-entry .entry-title a{color:var(--text);text-decoration:none}
body.swp.blog .loop-entry .entry-title a:hover{color:var(--green)}
body.swp.blog .loop-entry .entry-summary p{font-size:16px;line-height:1.6;color:var(--muted)}
body.swp.blog .loop-entry .post-more-link{font:600 15px/1.2 var(--sans);text-transform:none;letter-spacing:0;color:var(--text)}
body.swp.blog .loop-entry .post-more-link:hover{color:var(--green)}
body.swp.blog .loop-entry:hover{border-color:var(--line-2)}
body.swp.blog .loop-entry:focus-within{border-color:var(--green)}
/* footer bottom row: copyright and Legal links on one baseline */
body.swp .site-bottom-footer-inner-wrap{align-items:center}
@media (max-width:640px){
  body.swp.single-post .entry-content{font-size:17px}
  body.swp.single-post .entry-content h2{font-size:25px;margin-top:var(--s7)}
  body.swp.single-post .entry-content h3{font-size:20px}
  body.swp.blog .loop-entry .entry-content-wrap{padding:var(--s5)}
}
/* Home Writing: list items are display:grid (theme rule) and the card shrank to min-content when the
   first real post arrived (no featured image). Cards fill their grid cell. */
body.swp .swp-writing-grid .wp-block-post{display:block}
body.swp .swp-post-card{width:100%;box-sizing:border-box}
body.swp .swp-post-card:not(:has(.swp-post-img img)) .swp-post-body{padding-top:var(--s6)}
body.swp .swp-writing-grid .wp-block-post{border:0!important;padding:0!important}
/* Batch 07 after-audit: remaining small targets on mobile + code blocks that must not need sideways scroll */
@media (max-width:767px){
  body.swp #colophon .footer-navigation .footer-menu-container > ul > li > a{display:flex;align-items:center;min-height:44px;padding:0 4px}
  body.swp .kb-query-item .wp-block-post-terms a,body.swp .swp-case-cat a{display:inline-flex;align-items:center;min-height:32px}
  body.swp .entry-content pre.wp-block-code code{white-space:pre-wrap;overflow-wrap:anywhere}
}
/* Service explorer (Home, About): Kadence's .entry-content ul padding indented the list and the tick
   list by ~34px at every width (visible at 1280; costly at 360). Lists are layout here, not prose. */
body.swp .xp ul.xlist,body.swp .xp ul{padding-left:0;margin-left:0;list-style:none}
/* ---------------------------------------------------------------------------------------------------
   Batch 09 — page header system. V3.1 .phero-row: eyebrow on its own line, then title (left) and
   description (right) sharing one bottom line, so the header uses the full 1200px container instead of a
   560px column with empty space on the right. One rule set for every row with the class swp-phero
   (Services, Work, Contact, Book a Call, Blog intro element). Legal pages keep their centred reading column.
   Below 1025px the parts stack and the description may run up to 680px. */
body.swp .page-h1{text-wrap:balance}
body.swp .page-lede{max-width:680px}
@media (min-width:1025px){
  body.swp .swp-phero:not(.swp-legal-hero) > .kt-has-1-columns > .wp-block-kadence-column > .kt-inside-inner-col{display:grid;grid-template-columns:minmax(0,7fr) minmax(0,5fr);column-gap:var(--s8);row-gap:var(--s5);align-items:end}
  body.swp .swp-phero:not(.swp-legal-hero) > .kt-has-1-columns > .wp-block-kadence-column > .kt-inside-inner-col > *{grid-column:1 / -1}
  body.swp .swp-phero:not(.swp-legal-hero) > .kt-has-1-columns > .wp-block-kadence-column > .kt-inside-inner-col > .page-h1{grid-column:1;max-width:none}
  body.swp .swp-phero:not(.swp-legal-hero) > .kt-has-1-columns > .wp-block-kadence-column > .kt-inside-inner-col > .page-lede{grid-column:2;max-width:none;padding-bottom:.4em}
}
/* Two-column headers (About hero, case-study and service elements, legal column): the description fills
   its column rather than stopping at 560-600px. */
body.swp .swp-about-hero .page-lede,body.swp .swp-about-hero .story,body.swp .swp-case-top .page-lede,
body.swp .swp-svc-top .page-lede,body.swp .swp-legal-hero .page-lede{max-width:none}
@media (max-width:1024px){
  body.swp .swp-case-top .page-lede,body.swp .swp-svc-top .page-lede{max-width:680px}
}

/* Batch 09 — TutsVela video cards (real videos, Home). Thumbnail left, topic label and title right; the
   title link is stretched over the whole card, so each card is one link and one tab stop. */
body.swp .lesson.tv-video{grid-template-columns:168px minmax(0,1fr);grid-template-rows:auto auto;column-gap:var(--s4);row-gap:6px;align-items:start;padding:10px 16px 10px 10px;transition:border-color .2s ease,transform .2s ease}
body.swp .lesson.tv-video::before,body.swp .lesson.tv-video::after{content:none;display:none}
body.swp .lesson.tv-video .tv-thumb{grid-column:1;grid-row:1 / span 2;margin:0;align-self:center}
body.swp .lesson.tv-video .tv-thumb img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:8px}
body.swp .lesson.tv-video .tv-video-lbl{grid-column:2;grid-row:1;align-self:end;color:var(--tv-ink);margin:0}
body.swp .lesson.tv-video .tv-video-title{grid-column:2;grid-row:2;align-self:start;margin:0;font-size:16px;line-height:1.35;letter-spacing:-.01em;font-weight:600}
body.swp .lesson.tv-video .tv-video-title a{color:var(--text);text-decoration:none}
body.swp .lesson.tv-video .tv-video-title a::after{content:"";position:absolute;inset:0;border-radius:12px}
body.swp .lesson.tv-video:hover{border-color:var(--tv)}
body.swp .lesson.tv-video:hover .tv-video-title a{color:var(--tv-ink)}
body.swp .lesson.tv-video:focus-within{border-color:var(--tv);outline:2px solid var(--tv);outline-offset:2px}
body.swp .lesson.tv-video .tv-video-title a:focus-visible{outline:none}
body.swp .lessons .lesson.tv-video:nth-child(2){margin-left:var(--s6)}
body.swp .lessons .lesson.tv-video:nth-child(3){margin-left:calc(var(--s6)*2)}
@media (max-width:1100px){body.swp .lessons .lesson.tv-video:nth-child(n){margin-left:0}}
@media (max-width:640px){body.swp .lesson.tv-video{grid-template-columns:120px minmax(0,1fr)}body.swp .lesson.tv-video .tv-video-title{font-size:15px}}
@media (prefers-reduced-motion:reduce){body.swp .lesson.tv-video{transition:none}}

/* Batch 09 — single article: Kadence native header (breadcrumb, category, title, meta), featured image
   below it, unboxed content, Kadence native author box. Styling only; content comes from the user profile. */
body.swp.single-post .entry-hero-container-inner,body.swp.single-post .entry-header{max-width:820px;margin-left:auto;margin-right:auto}
body.swp.single-post .entry-header .entry-title{font-size:clamp(34px,calc(18px + 2.4vw),52px)}
body.swp.single-post .entry-header{margin-bottom:var(--s6)}
body.swp.single-post .post-thumbnail{max-width:1000px;margin:0 auto var(--s8);border-radius:16px;overflow:hidden;border:1px solid var(--line)}
body.swp .rank-math-breadcrumb p{margin:0 0 var(--s4);font:500 12px/1.4 var(--mono);color:var(--faint)}
body.swp .rank-math-breadcrumb a{color:var(--muted);text-decoration:none}
body.swp .rank-math-breadcrumb a:hover{color:var(--text)}
body.swp .rank-math-breadcrumb .separator{margin:0 6px;color:var(--line-2)}
body.swp .rank-math-breadcrumb .last{color:var(--faint)}
body.swp.single-post .entry-author{max-width:720px;margin:var(--s8) auto 0;padding:var(--s6);border:1px solid var(--line);border-radius:16px;background:var(--surface)}
body.swp.single-post .entry-author-profile{display:grid;grid-template-columns:96px minmax(0,1fr);column-gap:var(--s5);row-gap:4px;padding:0;align-items:start}
body.swp.single-post .entry-author-avatar{position:static;grid-row:1 / span 4;width:96px;height:96px;margin:0;border-radius:50%;overflow:hidden;background:var(--raise);border:1px solid var(--line)}
body.swp.single-post .entry-author-avatar img{display:block;width:100%;height:100%;object-fit:cover;object-position:50% 12%;border-radius:0}
body.swp.single-post .entry-author-name{grid-column:2;font-size:20px;line-height:1.3;letter-spacing:-.02em;font-weight:700;color:var(--text);margin:0}
body.swp.single-post .entry-author-occupation{grid-column:2;margin:0;font:500 12px/1.5 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--green)}
body.swp.single-post .entry-author-description{grid-column:2;margin-top:var(--s3);font-size:16px;line-height:1.65;color:var(--muted)}
body.swp.single-post .entry-author-description p{margin:0}
body.swp.single-post .entry-author-description a{color:var(--text);text-decoration:underline;text-decoration-color:var(--green);text-underline-offset:3px;white-space:nowrap}
body.swp.single-post .entry-author-follow{grid-column:2;display:flex;flex-wrap:wrap;gap:8px;margin-top:var(--s4)}
body.swp.single-post .entry-author-follow .social-button{display:inline-flex;align-items:center;justify-content:center;width:44px;height:44px;margin:0;border-radius:10px;border:1px solid var(--line);background:var(--bg);color:var(--muted);transition:color .2s ease,border-color .2s ease}
body.swp.single-post .entry-author-follow .social-button:hover,body.swp.single-post .entry-author-follow .social-button:focus-visible{color:var(--text);border-color:var(--green)}
body.swp.single-post .entry-author-follow .social-button svg{width:18px;height:18px}
body.swp.single-post .entry-related{margin-top:var(--s8)}
@media (max-width:640px){
  body.swp.single-post .entry-author{padding:var(--s5)}
  body.swp.single-post .entry-author-profile{grid-template-columns:64px minmax(0,1fr);column-gap:var(--s4)}
  body.swp.single-post .entry-author-avatar{width:64px;height:64px;grid-row:1 / span 2}
  body.swp.single-post .entry-author-description,body.swp.single-post .entry-author-follow{grid-column:1 / -1}
}

/* Batch 09 — Home "Writing & insights" now uses Kadence Query Loop (Adv) (query 273, card 274). Columns and
   gaps are set in the card (Kadence card settings: 3 / 2 / 1). The list item is only a wrapper here; the
   existing .swp-post-card inside it stays the visible card, so the approved design is unchanged. */
body.swp .swp-writing-grid .kb-query-item{display:block;padding:0;border:0;border-radius:0;background:none;box-shadow:none}
body.swp .swp-writing-grid .kb-query-item:hover{transform:none}
body.swp .wp-block-kadence-query.swp-writing-grid .kb-query-item > .swp-post-card{padding-inline:0}
/* Batch 09 — "Related work" section on service pages (Gutenberg content of the service). */
body.swp .swp-related-line a{color:var(--text);text-decoration:underline;text-decoration-color:var(--green);text-underline-offset:3px;font-weight:600}
body.swp .swp-related-line a:hover{color:var(--green)}

/* Batch 11 — FluentBooking calendar block: the app container is empty until its script renders the calendar
   (~530 px, or ~860 px when it stacks at ≤600 px), which pushed the following sections down (CLS 0.15 on
   Book a Call). Reserve slightly less than the rendered height so nothing jumps and no gap is left. */
body.swp .fluent-booking-calendar-block .fluent_booking_app{min-height:470px}
@media (min-width:641px){body.swp .fluent-booking-calendar-block .fluent_booking_app{min-height:505px}}
@media (max-width:600px){body.swp .fluent-booking-calendar-block .fluent_booking_app{min-height:840px}}
