/* BTSTPD: the Bootstrapped Studios journal.
   "Bootstrapped" with the vowels taken out, and the posts are the same: no
   filler. Six letters, six colours from the studio logo, six topics. The
   wordmark is the one loud thing; everything else stays quiet. */

@font-face{
  font-family:"Lexend";
  src:url("/fonts/lexend.woff2?v=1ec8f6ee2750554b") format("woff2-variations"),url("/fonts/lexend.woff2?v=1ec8f6ee2750554b") format("woff2");
  font-weight:100 900;font-display:swap;
}

:root{
  --paper:#FFFFFF;
  --ink:#000000;
  --text:#1C1C1C;
  --muted:#5C5C5C;
  --hair:#E7E7E7;
  --g:#5DBB46; --y:#F5E04A; --o:#F79420; --r:#E8403A; --p:#9B4E9E; --b:#2E9BD6;
  --gut:clamp(20px,5vw,64px);
  --max:1180px;
  --read:40rem;
  --ease:cubic-bezier(.2,.7,.2,1);
  color-scheme:light dark;
}
@media (prefers-color-scheme:dark){
  :root{--paper:#000000;--ink:#FFFFFF;--text:#E9E9E9;--muted:#A6A6A6;--hair:#262626}
}

/* one topic, one letter, one colour; --on is the ink that reads on it */
.t-local-search{--c:var(--g);--on:#000}
.t-decisions{--c:var(--y);--on:#000}
.t-conversion{--c:var(--o);--on:#000}
.t-cost{--c:var(--r);--on:#000}
.t-standards{--c:var(--p);--on:#FFF}
.t-automation{--c:var(--b);--on:#000}

*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  margin:0;background:var(--paper);color:var(--text);
  font-family:"Lexend",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-weight:340;font-size:1.0625rem;line-height:1.6;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;
  text-rendering:optimizeLegibility;
}
a{color:inherit}
main{overflow-x:hidden;overflow-x:clip}
img{max-width:100%;height:auto;display:block}
:focus-visible{outline:2px solid var(--ink);outline-offset:3px;border-radius:4px}
.skip{position:absolute;left:var(--gut);top:-60px;padding:10px 16px;background:var(--ink);color:var(--paper);border-radius:999px;text-decoration:none;z-index:10}
.skip:focus{top:12px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}

/* ------------------------------------------------------------ the mark --- */
.mark{display:inline-flex;font-weight:820;letter-spacing:-.045em;line-height:.8}
.mark span:nth-child(1){color:var(--g)}
.mark span:nth-child(2){color:var(--y)}
.mark span:nth-child(3){color:var(--o)}
.mark span:nth-child(4){color:var(--r)}
.mark span:nth-child(5){color:var(--p)}
.mark span:nth-child(6){color:var(--b)}

/* ---------------------------------------------------------------- bar --- */
.bar{display:flex;align-items:center;justify-content:space-between;gap:24px;padding-top:22px;padding-bottom:22px}
.bar .mark{font-size:1.45rem;text-decoration:none}
.bar a.home{text-decoration:none;border-radius:6px}
.studio{
  display:inline-flex;align-items:center;gap:.55em;text-decoration:none;
  font-size:.92rem;font-weight:420;color:var(--muted);padding:8px 0;
  transition:color .2s var(--ease);
}
.studio svg{width:.95em;height:.95em;transition:transform .25s var(--ease)}
.studio:hover{color:var(--ink)}
.studio:hover svg{transform:translate(2px,-2px)}

/* --------------------------------------------------------------- home --- */
.hero{padding-top:clamp(28px,7vw,96px);padding-bottom:clamp(28px,5vw,64px);container-type:inline-size}
/* 3.94em is the wordmark's own advance, so it lands on both gutters */
.hero h1{margin:0;font-size:calc(100cqi / 3.94);line-height:.8}
.hero .mark{display:flex}
.hero p{margin:clamp(20px,3vw,36px) 0 0;max-width:34ch;font-size:clamp(1.15rem,2vw,1.45rem);line-height:1.4;font-weight:360;color:var(--ink)}
@media (prefers-reduced-motion:no-preference){
  .hero .mark span{display:inline-block;animation:settle .9s var(--ease) both}
  .hero .mark span:nth-child(2){animation-delay:.06s}
  .hero .mark span:nth-child(3){animation-delay:.12s}
  .hero .mark span:nth-child(4){animation-delay:.18s}
  .hero .mark span:nth-child(5){animation-delay:.24s}
  .hero .mark span:nth-child(6){animation-delay:.30s}
}
@keyframes settle{from{transform:translateY(.32em);opacity:0}to{transform:none;opacity:1}}

.topics{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0 0 clamp(28px,4vw,44px);list-style:none}
.topics button{
  display:inline-flex;align-items:center;gap:.55em;cursor:pointer;
  font:inherit;font-size:.92rem;font-weight:430;color:var(--ink);
  padding:.55em 1em .55em .8em;border-radius:999px;
  background:transparent;border:1px solid var(--hair);
  transition:background-color .2s var(--ease),border-color .2s var(--ease),color .2s var(--ease);
}
.topics button:hover{border-color:var(--ink)}
.topics button[aria-pressed="true"]{background:var(--c,var(--ink));border-color:var(--c,var(--ink));color:var(--on,var(--paper))}
.topics button[data-topic=""]{padding-left:1em}
.dot{width:.62em;height:.62em;border-radius:50%;background:var(--c);flex:none}
.topics button[aria-pressed="true"] .dot{background:var(--on)}

.lead{
  display:block;text-decoration:none;color:var(--on);background:var(--c);
  border-radius:clamp(22px,3vw,34px);padding:clamp(26px,5vw,60px);
  margin-bottom:clamp(20px,3vw,32px);position:relative;overflow:hidden;
  transition:transform .45s var(--ease);
}
.lead:hover{transform:translateY(-3px)}
.lead .topic{display:inline-flex;align-items:center;gap:.5em;font-size:.95rem;font-weight:460}
.lead .topic .dot{background:var(--on)}
.lead h2{margin:clamp(18px,3vw,30px) 0 0;max-width:16ch;font-size:clamp(2.1rem,5.6vw,4.4rem);font-weight:720;line-height:1;letter-spacing:-.035em}
.lead p{margin:clamp(14px,2vw,22px) 0 0;max-width:46ch;font-size:clamp(1rem,1.6vw,1.2rem);line-height:1.5;font-weight:380}
.lead .meta{margin-top:clamp(22px,3vw,34px);font-size:.92rem;font-weight:420;opacity:.82}
.lead .letter{
  position:absolute;right:clamp(18px,3vw,44px);bottom:-.06em;
  font-size:clamp(9rem,22vw,18rem);font-weight:850;line-height:.8;letter-spacing:-.06em;
  color:var(--on);opacity:.11;pointer-events:none;user-select:none;
}

.posts{list-style:none;margin:0;padding:0;border-top:1px solid var(--hair)}
.posts li{border-bottom:1px solid var(--hair)}
.posts a{
  display:grid;grid-template-columns:11rem minmax(0,1fr) auto;align-items:baseline;gap:20px;
  padding:clamp(18px,2.4vw,26px) 0;text-decoration:none;color:var(--ink);
}
.posts .topic{display:inline-flex;align-items:center;gap:.55em;font-size:.88rem;font-weight:430;color:var(--muted)}
.posts h3{margin:0;font-size:clamp(1.15rem,2.1vw,1.55rem);font-weight:560;line-height:1.2;letter-spacing:-.015em;text-wrap:balance}
.posts time{font-size:.88rem;color:var(--muted);white-space:nowrap;font-variant-numeric:tabular-nums}
.posts h3 span{background:linear-gradient(var(--c),var(--c)) 0 100%/0 .14em no-repeat;transition:background-size .4s var(--ease)}
.posts a:hover h3 span,.posts a:focus-visible h3 span{background-size:100% .14em}
.posts li[hidden],.lead[hidden]{display:none}
.empty{padding:28px 0;color:var(--muted)}

@media (max-width:760px){
  .posts a{grid-template-columns:minmax(0,1fr) auto;gap:6px 16px}
  .posts .topic{grid-column:1/-1}
  .posts h3{grid-column:1}
  .posts time{grid-column:2;align-self:end}
}

/* ------------------------------------------------------------ article --- */
.progress{position:fixed;inset:0 0 auto 0;height:3px;background:var(--c);transform:scaleX(0);transform-origin:0 50%;z-index:20}
.art-head{position:relative;padding-top:clamp(28px,6vw,80px);padding-bottom:clamp(28px,4vw,48px)}
.art-head .letter{
  position:absolute;right:calc(var(--gut) * -.4);top:clamp(-10px,1vw,20px);z-index:-1;
  font-size:clamp(14rem,38vw,34rem);font-weight:850;line-height:.78;letter-spacing:-.06em;
  color:var(--c);opacity:.95;pointer-events:none;user-select:none;
}
.art-head .topic{
  display:inline-flex;align-items:center;gap:.55em;text-decoration:none;font-size:.95rem;font-weight:460;color:var(--ink);
  background:var(--paper);padding:.4em .9em .4em .7em;border-radius:999px;border:1px solid var(--hair);
}
.art-head .topic:hover{border-color:var(--ink)}
.art-head h1{
  margin:clamp(20px,3vw,32px) 0 0;max-width:15ch;color:var(--ink);
  font-size:clamp(2.5rem,6.6vw,5.2rem);font-weight:740;line-height:.98;letter-spacing:-.04em;text-wrap:balance;
}
.byline{display:flex;flex-wrap:wrap;gap:6px 26px;margin-top:clamp(22px,3vw,32px);font-size:.95rem;color:var(--muted)}
.byline b{font-weight:520;color:var(--ink)}
.art-head{isolation:isolate}
/* on a phone the letter becomes the article's initial, above the title, never behind it */
@media (max-width:760px){
  .art-head .letter{position:static;display:block;z-index:auto;font-size:clamp(6.5rem,34vw,9rem);line-height:.74;margin:0 0 22px -.04em}
}

.prose{max-width:var(--read);padding-bottom:clamp(40px,6vw,72px);font-size:clamp(1.06rem,1.25vw,1.19rem);line-height:1.68;color:var(--text)}
.prose > :first-child{margin-top:0}
.prose p,.prose ul,.prose ol,.prose blockquote,.prose .note,.prose .callout{margin:0 0 1.15em}
.prose h2{margin:2.1em 0 .6em;font-size:clamp(1.45rem,2.4vw,1.85rem);font-weight:680;line-height:1.15;letter-spacing:-.025em;color:var(--ink);text-wrap:balance}
.prose h3{margin:1.6em 0 .5em;font-size:1.2rem;font-weight:620;line-height:1.25;color:var(--ink)}
.prose strong,.prose b{font-weight:600;color:var(--ink)}
.prose a{
  color:var(--ink);text-decoration-line:underline;text-decoration-color:var(--c);
  text-decoration-thickness:.12em;text-underline-offset:.2em;transition:text-decoration-thickness .2s var(--ease);
}
.prose a:hover{text-decoration-thickness:.3em}
.prose ul,.prose ol{padding-left:1.25em}
.prose li{margin:.35em 0;padding-left:.2em}
.prose ul li::marker{color:var(--c)}
.prose ol li::marker{color:var(--ink);font-weight:600}
.prose blockquote{
  margin:1.8em 0;padding:0 0 0 clamp(18px,2.4vw,28px);border-left:4px solid var(--c);
  font-size:clamp(1.3rem,2.2vw,1.65rem);line-height:1.35;font-weight:460;letter-spacing:-.015em;color:var(--ink);
}
.prose blockquote p{margin:0}
.prose .editorial-note{font-size:.88rem;color:var(--muted);margin-bottom:1.6em}
.prose .note{
  padding:clamp(18px,2.4vw,26px);border-radius:20px;
  background:color-mix(in srgb,var(--c) 13%,var(--paper));color:var(--ink);
}
.prose .note b{display:block;margin-bottom:.3em}
.prose .note p:empty{display:none}
.prose .callout{
  margin-top:2.4em;padding:clamp(22px,3.2vw,36px);border-radius:24px;
  background:var(--c);color:var(--on);
}
.prose .callout p{margin:0 0 .8em}
.prose .callout > b,.prose .callout strong{display:block;font-size:1.3rem;font-weight:680;line-height:1.2;letter-spacing:-.02em;color:var(--on);margin-bottom:.5em}
.prose .callout a{color:var(--on);text-decoration-color:currentColor}
.prose .callout a.btn{
  display:inline-flex;margin-top:.5em;text-decoration:none;font-weight:540;font-size:1rem;
  background:var(--on);color:var(--c);padding:.75em 1.3em;border-radius:999px;
  transition:transform .25s var(--ease);
}
.prose .callout a.btn:hover{transform:translateY(-2px)}

.more{padding-bottom:clamp(40px,6vw,72px)}
.more-in{max-width:var(--read)}
.more h2{margin:0 0 14px;font-size:1rem;font-weight:500;color:var(--muted)}
/* the reading column is narrow, so these rows always stack */
.more .posts a{grid-template-columns:minmax(0,1fr) auto;gap:6px 16px}
.more .posts .topic{grid-column:1/-1}
.more .posts time{align-self:end}

/* -------------------------------------------------------- studio band --- */
.band{
  margin:clamp(24px,4vw,56px) 0 0;padding:clamp(34px,6vw,80px) 0;
  background:var(--ink);color:var(--paper);
}
.band .wrap{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,1fr);gap:clamp(24px,5vw,72px);align-items:end}
.band h2{margin:0;font-size:clamp(1.9rem,4.4vw,3.4rem);font-weight:720;line-height:1.02;letter-spacing:-.035em;max-width:17ch}
.band p{margin:0 0 22px;font-size:1.05rem;line-height:1.55;color:color-mix(in srgb,var(--paper) 78%,var(--ink));max-width:36ch}
.band .go{
  display:inline-flex;align-items:center;gap:.6em;text-decoration:none;font-weight:540;
  background:var(--paper);color:var(--ink);padding:.85em 1.4em;border-radius:999px;transition:transform .25s var(--ease);
}
.band .go:hover{transform:translateY(-2px)}
.band .spectrum{display:flex;height:6px;border-radius:999px;overflow:hidden;margin-bottom:28px;max-width:180px}
.band .spectrum i{flex:1}
.band .spectrum i:nth-child(1){background:var(--g)}.band .spectrum i:nth-child(2){background:var(--y)}
.band .spectrum i:nth-child(3){background:var(--o)}.band .spectrum i:nth-child(4){background:var(--r)}
.band .spectrum i:nth-child(5){background:var(--p)}.band .spectrum i:nth-child(6){background:var(--b)}
@media (max-width:760px){.band .wrap{grid-template-columns:1fr;align-items:start}}

.foot{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px 28px;padding-top:28px;padding-bottom:36px;font-size:.88rem;color:var(--muted)}
.foot a{text-decoration-color:var(--hair);text-underline-offset:.2em}
.foot a:hover{color:var(--ink);text-decoration-color:currentColor}
.foot nav{display:flex;flex-wrap:wrap;gap:8px 22px}

/* ---------------------------------------------------------------- 404 --- */
.lost{padding-top:clamp(40px,10vw,140px);padding-bottom:clamp(60px,10vw,140px)}
.lost h1{margin:0;font-size:clamp(3rem,10vw,7rem);font-weight:780;letter-spacing:-.045em;line-height:.95;color:var(--ink)}
.lost p{max-width:36ch;font-size:1.15rem}
.lost a{font-weight:500}

@media print{.bar,.band,.progress,.more,.topics,.art-head .letter{display:none}body{font-size:12pt}}
