/* The Innovation Quotient, Q4 2026 - Platypus Labs
   Every rule is scoped under .iq-root so nothing reaches the theme.
   Fonts are enqueued separately by the plugin. */
.iq-root{
  --iq-ink:#0e0e0e;
  --iq-body:#1b1b1b;
  --iq-muted:#555555;
  --iq-rule:#dcdcdc;
  --iq-lime:#d4f225;
  --iq-orange:#f04e22;
  --iq-teal:#1fcfa8;
  --iq-magenta:#c930ba;
  --iq-yellow:#ffde41;
  --iq-dim:#bdbdbd;
  --iq-olive:#3a3a00;
  --iq-deepteal:#0b3d33;
  --iq-pad:clamp(20px,5vw,40px);
  --iq-max:860px;
  /* Clearance for joshlinkner.com's fixed site header, which floats over the
     page: measured 105px at 1440, 107px at 1024 and 768, 91px on a phone, so
     107 covers the worst case. The hero's top padding and the anchor offsets
     both derive from it - change this one value if the header changes, or set
     it to 0 if the report is ever used under a header that is not fixed. */
  --iq-headroom:107px;

  font-family:'Manrope',-apple-system,BlinkMacSystemFont,'Segoe UI',Helvetica,Arial,sans-serif;
  color:var(--iq-body);
  background:#ffffff;
  font-size:17px;
  line-height:1.62;
  -webkit-font-smoothing:antialiased;
}
/* NOTE: do not put overflow-x on .iq-root while the bleed is on. Themes drop
   this block into a narrow column (Beaver Builder gives it ~820px), and any
   overflow value other than visible clips the full-bleed sections to that
   column instead of letting them reach the window edges. In the fallback,
   where nothing bleeds, clipping is safe and still guards against stray
   horizontal scroll. */
.iq-root:not(.iq-root--bleed){overflow-x:clip;}

/* ---- reset against theme styles ----
   :where() keeps these at zero specificity so the component
   classes below always win, whatever the theme throws at them. */
.iq-root *,.iq-root *::before,.iq-root *::after{box-sizing:border-box;}
.iq-root :where(h1,h2,h3,h4,h5,h6,p,ul,ol,li,figure,figcaption,blockquote,small,b,strong,em,i){
  margin:0;padding:0;border:0;background:none;font-family:inherit;font-size:inherit;
  font-weight:inherit;font-style:normal;color:inherit;line-height:inherit;letter-spacing:normal;}
.iq-root :where(ul,ol){list-style:none;}
.iq-root :where(img){max-width:100%;height:auto;display:block;border:0;border-radius:0;box-shadow:none;}
.iq-root :where(a){color:inherit;text-decoration:none;box-shadow:none;}
.iq-root :where(a:hover){color:inherit;}
.iq-root :where(hr){border:0;margin:0;}

/* ---- layout ---- */
.iq-wrap{max-width:var(--iq-max);margin:0 auto;padding:0 var(--iq-pad);}
.iq-bleed{margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);width:100vw;}
.iq-root:not(.iq-root--bleed) .iq-bleed{margin-left:0;margin-right:0;width:auto;border-radius:24px;}
.iq-sec{padding:clamp(44px,7vw,76px) 0;}
.iq-sec + .iq-sec{padding-top:0;}

/* ---- the chevron mark ---- */
.iq-chev{display:block;width:17px;flex:0 0 17px;}
.iq-chev--lg{width:46px;flex-basis:46px;}

/* ---- eyebrow ---- */
.iq-eyebrow{border-top:2.5px solid var(--iq-ink);padding-top:14px;display:flex;align-items:center;gap:11px;margin-bottom:26px;}
.iq-eyebrow span{font-size:12px;font-weight:800;letter-spacing:.055em;text-transform:uppercase;color:var(--iq-muted);line-height:1.2;}

/* ---- headings ---- */
.iq-h2{font-size:clamp(28px,4.4vw,40px);font-weight:800;line-height:1.1;letter-spacing:-.018em;color:var(--iq-ink);margin-bottom:22px;}
.iq-h3{font-size:clamp(23px,3.2vw,30px);font-weight:800;line-height:1.14;letter-spacing:-.015em;color:var(--iq-ink);margin:46px 0 18px;}
.iq-hl{background:var(--iq-lime);box-decoration-break:clone;-webkit-box-decoration-break:clone;padding:.06em .18em;margin:0 -.04em;}
/* On the black hero and section dividers the display type is large enough that
   the default highlight band reads too tall. Draw it as a centred gradient of a
   fixed height instead: 1.265em, 15% shorter than the 1.49em default. */
.iq-hero h1 .iq-hl,
.iq-div h2 .iq-hl{
  background-color:transparent;
  background-image:linear-gradient(var(--iq-lime),var(--iq-lime));
  background-repeat:no-repeat;
  background-position:center;
  background-size:100% 1.265em;
  background-origin:border-box;
  background-clip:border-box;
}

/* ---- body copy ---- */
.iq-p{margin-bottom:21px;max-width:68ch;}
.iq-p:last-child{margin-bottom:0;}
.iq-lede{font-size:clamp(19px,2.3vw,22px);font-weight:800;line-height:1.38;color:var(--iq-ink);letter-spacing:-.01em;margin-bottom:26px;max-width:62ch;}
.iq-em{color:var(--iq-orange);font-weight:800;}
.iq-cite{color:var(--iq-muted);}

/* ---- hero ---- */
.iq-hero{background:var(--iq-ink);color:#fff;padding:calc(var(--iq-headroom) + clamp(28px,4vw,52px)) 0 clamp(52px,7vw,80px);}
/* anchors land clear of the fixed header rather than behind it */
.iq-root [id^="iq-s"]{scroll-margin-top:calc(var(--iq-headroom) + 12px);}
.iq-hero__top{display:flex;justify-content:space-between;align-items:flex-start;gap:24px;flex-wrap:wrap;margin-bottom:clamp(60px,12vw,130px);}
.iq-logo{width:clamp(78px,11vw,104px);height:auto;}
.iq-hero__meta{text-align:right;}
.iq-kicker{color:var(--iq-lime);font-size:14px;font-weight:800;letter-spacing:.06em;margin-bottom:10px;}
.iq-hero__theme{font-size:clamp(16px,2.2vw,19px);font-weight:800;line-height:1.3;}
.iq-hero h1{font-size:clamp(46px,10vw,86px);font-weight:800;line-height:1.02;letter-spacing:-.03em;margin:22px 0 20px;}
.iq-hero h1 .iq-hl{color:var(--iq-ink);}
.iq-hero__sub{font-size:clamp(18px,2.6vw,23px);color:#e8e8e8;}
.iq-hero__by{border-top:1px solid #4a4a4a;margin-top:clamp(44px,8vw,86px);padding-top:18px;font-size:15px;font-weight:800;}

/* ---- founders ---- */
.iq-sig{font-family:'EB Garamond',Georgia,serif;font-style:italic;font-size:22px;color:var(--iq-body);margin-top:30px;}
.iq-sig small{display:block;font-size:14px;color:#8a8a8a;margin-top:4px;}
.iq-people{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:26px;margin-top:30px;}
.iq-person{display:flex;align-items:center;gap:18px;}
.iq-person img{width:88px;height:88px;border-radius:50%;object-fit:cover;flex:0 0 88px;}
.iq-person b{display:block;font-size:21px;font-weight:800;color:var(--iq-ink);line-height:1.2;}
.iq-person em{font-family:'EB Garamond',Georgia,serif;font-style:italic;font-size:15px;color:#8a8a8a;display:block;line-height:1.4;margin-top:4px;}
.iq-divline{border-top:2.5px solid var(--iq-ink);margin:42px 0 32px;}

/* ---- contents ---- */
.iq-toc{border-top:2px solid var(--iq-ink);}
.iq-toc li{border-bottom:1px solid var(--iq-rule);}
.iq-toc a{display:grid;grid-template-columns:52px 1fr;gap:4px 14px;padding:15px 4px;align-items:baseline;transition:background .15s;}
.iq-toc a:hover{background:#fafaf5;}
.iq-toc .n{font-size:24px;font-weight:800;color:var(--iq-orange);line-height:1;}
.iq-toc .t{font-size:19px;font-weight:800;color:var(--iq-ink);line-height:1.25;}
.iq-toc .d{grid-column:2;font-size:14.5px;color:var(--iq-muted);line-height:1.45;}
@media(min-width:760px){
  .iq-toc a{grid-template-columns:62px 1fr 300px;}
  .iq-toc .d{grid-column:3;grid-row:1;}
}

/* ---- section divider ---- */
.iq-div{background:var(--iq-ink);color:#fff;padding:clamp(56px,10vw,120px) 0;}
.iq-div__num{color:var(--iq-lime);font-size:14px;font-weight:800;letter-spacing:.09em;text-transform:uppercase;text-align:right;margin-bottom:clamp(40px,9vw,96px);}
.iq-div h2{font-size:clamp(38px,8vw,66px);font-weight:800;line-height:1.04;letter-spacing:-.028em;margin:20px 0 18px;}
.iq-div h2 .iq-hl{color:var(--iq-ink);}
.iq-div p{font-size:clamp(16px,2.2vw,19px);color:#e0e0e0;max-width:56ch;}

/* ---- finding tiles ---- */
.iq-grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(265px,1fr));gap:18px;margin-top:34px;}
.iq-grid3{display:grid;grid-template-columns:repeat(auto-fit,minmax(230px,1fr));gap:18px;margin-top:34px;}
.iq-tile{border-radius:18px;padding:26px 24px 30px;}
.iq-tile small{display:block;font-size:14px;font-weight:800;margin-bottom:16px;opacity:.85;}
.iq-tile b{font-size:18px;font-weight:800;line-height:1.35;display:block;}
.iq-lime{background:var(--iq-lime);color:var(--iq-ink);}
.iq-orange{background:var(--iq-orange);color:#fff;}
.iq-teal{background:var(--iq-teal);color:var(--iq-ink);}
.iq-magenta{background:var(--iq-magenta);color:#fff;}
.iq-yellow{background:var(--iq-yellow);color:var(--iq-ink);}
.iq-black{background:var(--iq-ink);color:#fff;}

/* ---- numbered findings list ---- */
.iq-fnd{display:grid;grid-template-columns:58px 1fr;gap:6px 14px;margin-bottom:34px;}
.iq-fnd .n{font-size:28px;font-weight:800;color:var(--iq-orange);line-height:1;}
.iq-fnd h3{font-size:19px;font-weight:800;color:var(--iq-ink);line-height:1.32;margin:0;}
.iq-fnd p{grid-column:2;font-size:16px;line-height:1.6;}

/* ---- dot list ---- */
.iq-dots li{display:grid;grid-template-columns:16px 1fr;gap:14px;margin-bottom:16px;align-items:start;}
.iq-dots .dot{width:16px;height:16px;border-radius:5px;margin-top:7px;}
.iq-dots b{font-weight:800;color:var(--iq-ink);}

/* ---- stat callouts ---- */
.iq-stat{border-radius:18px;padding:clamp(26px,4vw,34px);margin:36px 0;}
.iq-stat .big{font-size:clamp(40px,7.6vw,62px);font-weight:800;line-height:1;letter-spacing:-.03em;margin-bottom:14px;}
.iq-stat .cap{font-size:16px;line-height:1.5;max-width:60ch;}
.iq-stat.iq-black .cap{color:var(--iq-dim);}
.iq-stat.iq-black .big{color:var(--iq-lime);}
.iq-stat.iq-lime .cap{color:var(--iq-olive);}
.iq-stat.iq-teal .cap{color:var(--iq-deepteal);}
.iq-stat.iq-orange .big,.iq-stat.iq-magenta .big{color:#fff;}
.iq-stat__split{display:grid;gap:26px;align-items:center;}
@media(min-width:720px){.iq-stat__split{grid-template-columns:1.1fr .9fr;}}

/* ---- number cards ---- */
.iq-num{border-radius:18px;padding:28px 24px 26px;display:flex;flex-direction:column;}
.iq-num .hd{font-size:17.5px;font-weight:800;line-height:1.38;margin-bottom:14px;}
.iq-num .sub{font-size:14.5px;line-height:1.5;margin-bottom:auto;padding-bottom:20px;opacity:.9;}
.iq-num .src{font-size:12.5px;font-weight:800;letter-spacing:.03em;text-transform:uppercase;text-decoration:underline;text-underline-offset:3px;align-self:flex-start;}
.iq-num .src:hover{text-decoration-thickness:2px;}
.iq-acc-o{color:var(--iq-orange);}
.iq-acc-l{color:var(--iq-lime);}
.iq-acc-y{color:var(--iq-yellow);}

/* ---- charts ---- */
.iq-bars{display:grid;gap:14px;margin:18px 0 20px;}
.iq-bar{display:grid;grid-template-columns:minmax(120px,170px) 1fr;gap:14px;align-items:center;}
.iq-bar .lbl{font-size:14.5px;color:var(--iq-deepteal);}
.iq-bar .track{display:flex;align-items:center;gap:12px;}
.iq-bar .fill{height:20px;border-radius:999px;background:var(--iq-ink);flex:0 0 auto;}
.iq-bar .val{font-size:15.5px;font-weight:800;color:var(--iq-ink);}
@media(max-width:560px){.iq-bar{grid-template-columns:1fr;gap:4px;}}
.iq-chartcap{font-size:13.5px;color:var(--iq-deepteal);margin-top:18px;}
.iq-chartlabel{font-size:13px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--iq-ink);margin-bottom:18px;}

.iq-ratiofig{--iq-cell:clamp(38px,8.5vw,56px);}
.iq-ratio{display:grid;grid-template-columns:repeat(4,var(--iq-cell));gap:10px;align-items:end;}
.iq-ratio i{display:block;width:100%;height:clamp(72px,16vw,104px);border-radius:10px;border:2px solid var(--iq-ink);}
.iq-ratio i.on{background:var(--iq-ink);}
.iq-ratiofig figcaption{display:grid;grid-template-columns:repeat(4,var(--iq-cell));gap:10px;margin-top:10px;font-size:13px;font-weight:600;color:var(--iq-olive);}
.iq-ratiofig figcaption span:first-child{grid-column:1;text-align:center;}
.iq-ratiofig figcaption span:last-child{grid-column:2/5;text-align:center;}

.iq-vs{display:flex;gap:26px;align-items:flex-end;justify-content:flex-start;}
.iq-vs div{text-align:center;}
.iq-vs .k{font-size:15px;font-weight:800;color:var(--iq-lime);margin-bottom:8px;}
.iq-vs i{display:block;width:clamp(72px,16vw,104px);background:var(--iq-lime);border-radius:8px;}
.iq-vs .c{font-size:12.5px;color:var(--iq-dim);margin-top:8px;line-height:1.35;}

/* ---- pull quote ---- */
.iq-quote{padding:clamp(48px,8vw,92px) 0;background:#fafaf8;}
.iq-quote blockquote{font-size:clamp(25px,4.6vw,40px);font-weight:800;line-height:1.26;letter-spacing:-.02em;color:var(--iq-ink);max-width:22.8ch;}
.iq-quote .mark{color:var(--iq-orange);}
.iq-quote .attr{display:flex;align-items:center;gap:16px;margin-top:34px;}
.iq-quote .attr img{width:68px;height:68px;border-radius:50%;object-fit:cover;flex:0 0 68px;}
.iq-quote .attr span{font-size:13px;font-weight:800;letter-spacing:.05em;text-transform:uppercase;color:var(--iq-orange);}

/* ---- innovators ---- */
.iq-inv{margin-bottom:56px;}
.iq-inv__hd{display:grid;gap:22px;align-items:center;margin-bottom:26px;}
@media(min-width:680px){.iq-inv__hd{grid-template-columns:300px 1fr;gap:34px;}}
.iq-inv__hd img{width:100%;max-width:340px;aspect-ratio:1;object-fit:cover;}
.iq-inv__hd h3{font-size:clamp(26px,4vw,34px);font-weight:800;color:var(--iq-ink);line-height:1.1;margin:0 0 12px;}
.iq-inv__hd .role{font-size:13px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--iq-orange);line-height:1.45;}

/* ---- experiments ---- */
.iq-explist{display:grid;gap:12px;margin:30px 0 34px;}
.iq-explist a{border-radius:999px;padding:18px 30px;display:flex;gap:22px;align-items:center;font-size:18px;font-weight:800;transition:transform .15s;}
.iq-explist a:hover{transform:translateX(4px);}
.iq-explist .r{width:34px;flex:0 0 34px;}
.iq-exp{border-radius:22px;padding:clamp(30px,5vw,46px);margin-bottom:18px;position:relative;overflow:hidden;}
.iq-exp .r{font-size:clamp(26px,4vw,32px);font-weight:800;line-height:1;margin-bottom:22px;}
.iq-exp h3{font-size:clamp(28px,5.4vw,42px);font-weight:800;line-height:1.08;letter-spacing:-.02em;margin:0 0 28px;}
.iq-exp .rule{height:1.5px;background:currentColor;opacity:.75;margin-bottom:26px;max-width:560px;}
.iq-exp .pill{display:inline-block;background:var(--iq-ink);color:var(--iq-lime);font-size:12px;font-weight:800;letter-spacing:.07em;text-transform:uppercase;padding:9px 20px;border-radius:999px;margin-bottom:24px;}
.iq-exp.iq-black .pill{background:#fff;color:var(--iq-ink);}
.iq-exp p{font-size:clamp(17px,2.4vw,20px);line-height:1.52;max-width:52ch;}

/* ---- resources ---- */
.iq-books li{border-bottom:1px solid var(--iq-rule);padding:18px 0;}
.iq-books .t{font-size:21px;font-weight:800;color:var(--iq-ink);text-decoration:underline;text-underline-offset:4px;text-decoration-thickness:1.5px;display:inline-block;line-height:1.25;}
.iq-books a.t:hover{color:var(--iq-orange);}
.iq-books .meta{font-size:12.5px;font-weight:800;letter-spacing:.04em;text-transform:uppercase;color:var(--iq-orange);margin:7px 0 7px;}
.iq-books .d{font-size:15.5px;color:var(--iq-body);line-height:1.5;}

/* ---- services + cta ---- */
.iq-svc{border-radius:18px;padding:26px 22px 28px;}
.iq-svc b{display:block;font-size:18px;font-weight:800;line-height:1.25;margin-bottom:16px;}
.iq-svc p{font-size:15px;line-height:1.5;}
.iq-cta{background:var(--iq-ink);color:#fff;border-radius:20px;padding:clamp(26px,4vw,34px);margin-top:30px;display:flex;gap:24px;align-items:center;justify-content:space-between;flex-wrap:wrap;}
.iq-cta p{font-size:17px;max-width:40ch;line-height:1.5;}
.iq-btn{background:var(--iq-lime);color:var(--iq-ink);font-size:17px;font-weight:800;padding:16px 30px;border-radius:999px;white-space:nowrap;transition:transform .15s;}
.iq-btn:hover{transform:scale(1.04);color:var(--iq-ink);}

/* ---- full-width colour bands ----
   The stat callouts, the five experiment cards and the closing CTA break out
   of the text column and run edge to edge. The side padding re-creates the
   column inside the band, so their content still lines up with the body copy
   above and below: (viewport - column) / 2, plus the column's own gutter.
   These rules come last so they override the component definitions above. */
.iq-stat,.iq-exp,.iq-cta{
  margin-left:calc(50% - 50vw);
  margin-right:calc(50% - 50vw);
  width:100vw;
  border-radius:0;
  /* calc(50vw - 50%) is the exact distance from the window edge back to the
     text column, whatever width the theme gives us: the percentage resolves
     against the same box the negative margin above used. Do not express this
     as (100vw - 860px)/2 - that assumes the column is the width we designed
     to, and page builders hand us something narrower. */
  padding-left:calc(50vw - 50%);
  padding-right:calc(50vw - 50%);
}

/* Same correction for the inner column of the full-bleed sections: the hero,
   the eleven dividers and the pull quotes. Scoped to --bleed and placed after
   the component rules so it beats their padding shorthands. */
.iq-root--bleed .iq-bleed{
  padding-left:calc(50vw - 50%);
  padding-right:calc(50vw - 50%);
}
.iq-stat{padding-top:clamp(38px,5.5vw,58px);padding-bottom:clamp(38px,5.5vw,58px);
  margin-top:clamp(40px,6vw,60px);margin-bottom:clamp(40px,6vw,60px);}
/* the five experiment bands stack flush, so the colours run together */
.iq-exp{padding-top:clamp(44px,6.5vw,72px);padding-bottom:clamp(44px,6.5vw,72px);margin-bottom:0;}
.iq-cta{padding-top:clamp(36px,5vw,52px);padding-bottom:clamp(36px,5vw,52px);
  margin-top:clamp(44px,6vw,64px);}

/* Without the bleed class the whole page stays inside its container, so these
   fall back to the inset cards they were. */
.iq-root:not(.iq-root--bleed) :is(.iq-stat,.iq-exp,.iq-cta){
  margin-left:0;margin-right:0;width:auto;
  padding-left:clamp(26px,4vw,34px);padding-right:clamp(26px,4vw,34px);}
.iq-root:not(.iq-root--bleed) .iq-stat{border-radius:18px;}
.iq-root:not(.iq-root--bleed) .iq-exp{border-radius:22px;margin-bottom:18px;}
.iq-root:not(.iq-root--bleed) .iq-cta{border-radius:20px;}

.iq-foot{border-top:1px solid var(--iq-rule);margin-top:60px;padding:28px 0 10px;font-size:13.5px;color:var(--iq-muted);}

/* ---- host page ----
   The only two rules in this file that reach outside .iq-root. Both are gated
   on :has(.iq-root), so they can match only the page the report is on and
   nothing else on the site. They remove the theme's post byline and the gap
   it leaves above the report, which would otherwise show as a white bar over
   the black cover. Delete them if you want the theme's own header back. */
.entry-content:has(.iq-root){margin-top:0;}
.entry-header:has(+ .entry-content .iq-root){display:none;}
