@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/e5bab11d09.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/40fe3cf772.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 450;
  font-display: swap;
  src: url(/fonts/e5bab11d09.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 450;
  font-display: swap;
  src: url(/fonts/40fe3cf772.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/e5bab11d09.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/fonts/40fe3cf772.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/e5bab11d09.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/fonts/40fe3cf772.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/e5bab11d09.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'DM Sans';
  font-style: normal;
  font-weight: 700;
  font-display: swap;
  src: url(/fonts/40fe3cf772.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/fd6f40d144.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/52a6c245b9.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/28cfb3cb62.woff2) format('woff2');
  unicode-range: U+0100-02BA, U+02BD-02C5, U+02C7-02CC, U+02CE-02D7, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2020, U+20A0-20AB, U+20AD-20C0, U+2113, U+2C60-2C7F, U+A720-A7FF;
}
@font-face {
  font-family: 'Instrument Serif';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/fonts/2d243d02e5.woff2) format('woff2');
  unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root{--paper:#eeeee5;--ink:#253c31;--muted:#586458;--line:#253c3129;--dark:#14281f;--lime:#d4dfa5}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);color:var(--ink);font:16px/1.65 'DM Sans',sans-serif}a{color:inherit;text-decoration:none}a:focus-visible,summary:focus-visible{outline:3px solid #b66d4d;outline-offset:6px}header{display:flex;align-items:center;justify-content:space-between;gap:30px;padding:26px 5%}.wordmark{font-size:22px;font-weight:600;letter-spacing:-.7px}.wordmark span{display:block;font-size:12px;letter-spacing:0;font-weight:400;color:var(--muted)}header nav{display:flex;gap:34px;font-size:14px}header nav a:last-child{border-bottom:1px solid var(--ink)}.hero{margin:0 22px;border-radius:18px;background:var(--dark);color:var(--lime);padding:29px 4%;overflow:hidden;position:relative}.hero-top,.hero-footer{display:flex;justify-content:space-between;font-size:12px;letter-spacing:1px}.hero-top{color:#b1c0a8}.hero-copy{position:relative;z-index:1;padding:55px 0 0}h1,h2,h3,p{margin:0}h1{font-size:clamp(60px,7.6vw,125px);line-height:1.03;letter-spacing:-.055em;font-weight:450}em{font-family:'Instrument Serif',Georgia,serif;font-weight:400;letter-spacing:-.025em}.hero p{font-size:18px;max-width:450px;color:#becbb7;margin-top:30px}.hero-link{display:inline-flex;align-items:center;gap:50px;margin-top:28px;font-size:14px;border-bottom:1px solid #94a882;padding-bottom:10px}.hero-link span{font-size:22px}.field{height:280px;margin:-40px -4% 0;position:relative}.field canvas{height:100%;width:100%;display:block}.field>span{position:absolute;bottom:20px;right:5%;font-size:12px;color:#a9bba0}.hero-footer{border-top:1px solid #b0c39733;padding-top:20px;color:#a9bba0}.story-intro{max-width:890px;margin:0 auto;text-align:center;padding:110px 25px 75px}.eyebrow{font-size:12px;letter-spacing:1.3px;text-transform:uppercase}h2{font-size:clamp(40px,4.7vw,72px);line-height:1.08;letter-spacing:-.045em;font-weight:450}.story-intro h2{margin:25px 0}.story-intro p{max-width:680px;margin:auto;color:var(--muted);font-size:18px}.chapter-nav{position:sticky;top:0;z-index:5;background:#eeeee5f5;backdrop-filter:blur(15px);padding:18px 5%;border-block:1px solid var(--line);display:flex;align-items:center;gap:30px;box-shadow:0 8px 24px #253c3105}.chapter-nav a{font-size:14px;white-space:nowrap;position:relative}.chapter-nav a span{font-size:12px;margin-right:8px;color:var(--muted)}.chapter-nav a:after{content:'';position:absolute;bottom:-19px;left:0;right:0;height:2px;background:var(--ink);transform:scaleX(0);transition:transform .3s}.chapter-nav a[aria-current=true]:after{transform:scaleX(1)}.chapter-count{font-size:12px;margin-left:auto;color:var(--muted);white-space:nowrap}.chapter{padding:80px 5% 0;scroll-margin-top:25px}.chapter-heading{display:grid;grid-template-columns:170px 1fr;gap:35px;align-items:start;margin-bottom:45px}.chapter-number{font-family:'Instrument Serif',Georgia,serif;font-size:100px;line-height:.9;color:#829077}.chapter-number span{font:12px/1.6 'DM Sans',sans-serif;display:block;margin-top:20px;text-transform:uppercase;letter-spacing:1px}.chapter-heading h2{font-size:clamp(36px,3.8vw,59px)}.chapter-heading h2 em{color:#68775a}.chapter-heading p{max-width:670px;margin-top:23px;color:var(--muted);font-size:17px}.app-grid{display:grid;grid-template-columns:1fr 1fr;gap:25px}.app-card{border:1px solid #253c3120;border-radius:16px;overflow:hidden;background:#f8f8f1;min-width:0;box-shadow:0 9px 30px #19312005}.app-card.featured{grid-column:1/-1;display:grid;grid-template-columns:1.2fr 1fr}.app-visual{background:#dbe1cc;color:#3e6149;padding:22px 28px 20px;display:flex;flex-direction:column;justify-content:space-between;overflow:hidden;min-height:310px}.featured .app-visual{background:#203b2d;color:#c9d99c;min-height:400px}.visual-meta{display:flex;justify-content:space-between;gap:10px;font-size:12px}.visual-meta span:last-child{opacity:.72}.app-visual svg{display:block;width:100%;height:230px;overflow:visible}.featured .app-visual svg{height:290px}.app-visual svg text{font:14px 'DM Sans',sans-serif;fill:currentColor}.visual-caption{font-family:'Instrument Serif',Georgia,serif;font-size:26px;line-height:1.15;letter-spacing:-.2px;margin-top:12px}.app-copy{padding:30px 32px;display:flex;flex-direction:column;align-items:start}.featured .app-copy{padding:38px}.app-name{font-size:13px;font-weight:600;letter-spacing:.5px;color:#68785a}.app-copy h3{font-size:clamp(25px,2.5vw,37px);line-height:1.15;letter-spacing:-1px;font-weight:500;margin:14px 0 20px}.app-copy>p{color:var(--muted);max-width:550px}.methods{font-size:12px;color:#626e5d;margin:23px 0}.app-copy details{width:100%;border-top:1px solid var(--line);font-size:14px;margin-top:auto}.app-copy summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;padding:14px 0}.app-copy summary::-webkit-details-marker{display:none}.app-copy summary span{font-size:20px;line-height:1;transition:transform .2s}.app-copy details[open] summary span{transform:rotate(45deg)}.app-copy details p{font-size:15px;color:var(--muted);padding:0 0 18px}.source-link{display:flex;justify-content:space-between;width:100%;gap:15px;border-top:1px solid var(--line);padding-top:15px;font-size:14px}.source-link span{font-size:22px;line-height:1;transition:transform .25s}.source-link:hover span{transform:translate(3px,-3px)}.chapter-2 .featured .app-visual{background:#d5dec4;color:#3a5a3e}.chapter-2 .app-card:not(.featured) .app-visual{background:#2b4434;color:#d0dda9}.chapter-3 .featured .app-visual{background:#ba785a;color:#2b3528}.chapter-3 .app-card:not(.featured) .app-visual{background:#e4d9c1;color:#67503a}.chapter-4 .featured .app-visual{background:#1e3630;color:#d2dba2}.chapter-4 .app-card:not(.featured) .app-visual{background:#d0d9ce;color:#35564b}.chapter-5 .featured .app-visual{background:#d6dcb7;color:#36543b}.chapter-5 .app-card:not(.featured) .app-visual{background:#2a3e2c;color:#d5deab}.bridge{padding:55px 0 60px;border-bottom:1px solid var(--line);display:flex;align-items:center;gap:30px;font:25px/1.3 'Instrument Serif',Georgia,serif;color:#607052;max-width:100%}.bridge span{font:26px 'DM Sans',sans-serif}.about{padding:100px 7%;display:grid;grid-template-columns:1fr 1.2fr;gap:10%;background:#dce2d0;margin-top:70px}.about h2{margin-top:30px}.about p{color:var(--muted);margin-bottom:23px}.about .large-copy{font-size:25px;line-height:1.45;color:var(--ink);letter-spacing:-.5px}.principles{border-top:1px solid var(--line);padding:24px 0 0}.principles p{font-size:14px}.principles b{display:block;color:var(--ink);font-size:16px;font-weight:500}footer{padding:75px 6% 25px;background:var(--dark);color:#cbd7b2}.footer-title{display:block;position:relative;font-size:clamp(65px,9vw,140px);line-height:1.05;letter-spacing:-.04em;margin:35px 0 65px}.footer-title>span{position:absolute;right:0;top:10px}.footer-bottom{display:flex;justify-content:space-between;gap:20px;font-size:12px;border-top:1px solid #b0c39733;padding-top:25px}.skip{position:fixed;top:-100px;left:10px;background:var(--lime);padding:10px;z-index:10}.skip:focus{top:10px}.reveal{opacity:1;transform:none}.motion-ready .reveal:not(.in-view){opacity:0;transform:translateY(32px)}.motion-ready .reveal{transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.2,1)}.motion-ready .reveal:not(.in-view) .plot-line{stroke-dasharray:1600;stroke-dashoffset:1600}.motion-ready .reveal.in-view .plot-line{stroke-dasharray:1600;stroke-dashoffset:0;transition:stroke-dashoffset 2.2s cubic-bezier(.3,.1,.2,1) .15s}.motion-ready .reveal:not(.in-view) .plot-dot{opacity:0;transform:scale(.4)}.plot-dot{transform-box:fill-box;transform-origin:center}.motion-ready .in-view .plot-dot{transition:opacity 1s .3s,transform 1.2s .2s}.plot-bar{transform-box:fill-box;transform-origin:left bottom}.motion-ready .reveal:not(.in-view) .plot-bar{transform:scaleY(.05);opacity:0}.motion-ready .in-view .plot-bar{transition:transform 1.3s .2s,opacity 1s .2s}.motion-ready .reveal:not(.in-view) .plot-cell{opacity:0}.motion-ready .in-view .plot-cell{transition:opacity .8s;transition-delay:var(--delay,.2s)}
@media(min-width:1700px){body{max-width:1800px;margin:auto}}@media(min-width:2200px){html{zoom:1.25}}@media(min-width:3200px){html{zoom:1.75}}@media(max-width:1000px){.chapter-count{display:none}.chapter-nav{justify-content:space-between;gap:12px}.chapter-heading{grid-template-columns:100px 1fr}.featured .app-copy{padding:28px}.visual-meta{font-size:12px}.app-visual{padding:20px}.app-copy{padding:25px}.hero h1{font-size:8vw}}@media(max-width:700px){html{scroll-padding-top:75px}header{padding:22px 6%;gap:18px;align-items:start}.wordmark{font-size:18px}.wordmark span{font-size:12px;max-width:180px}header nav{gap:10px 17px;flex-wrap:wrap;max-width:140px;justify-content:end;font-size:13px}.hero{margin:0 10px;padding:24px 6%;border-radius:13px}.hero-top{font-size:12px;gap:20px}.hero-top span:first-child{max-width:140px}.hero-top span:last-child{text-align:right;max-width:100px}.hero-copy{padding-top:38px}.hero h1{font-size:clamp(45px,10.5vw,74px);line-height:1.06;letter-spacing:-.05em}.hero p{font-size:16px;margin-top:25px}.hero-link{margin-top:25px}.field{margin-top:0;height:210px}.field>span{bottom:8px}.hero-footer{font-size:12px;gap:15px;line-height:1.4}.story-intro{padding:65px 6% 45px}.story-intro h2{font-size:41px}.story-intro p{font-size:16px}.chapter-nav{overflow-x:auto;justify-content:flex-start;gap:25px;padding:17px 6%;scrollbar-width:thin}.chapter-nav a{font-size:14px}.chapter-nav a span{display:none}.chapter{padding:55px 5% 0}.chapter-heading{grid-template-columns:1fr;gap:20px;margin-bottom:28px}.chapter-number{font-size:55px;display:flex;align-items:center;gap:20px}.chapter-number span{margin:0}.chapter-heading h2{font-size:35px;line-height:1.12}.chapter-heading p{font-size:16px;margin-top:18px}.app-grid{grid-template-columns:1fr;gap:24px}.app-card.featured{grid-column:auto;display:flex;flex-direction:column}.app-visual,.featured .app-visual{min-height:285px;padding:20px}.app-visual svg,.featured .app-visual svg{height:205px}.visual-meta{font-size:12px;gap:18px}.visual-meta span:last-child{text-align:right}.visual-caption{font-size:24px}.app-copy,.featured .app-copy{padding:25px}.app-copy h3{font-size:28px}.app-copy>p{font-size:16px}.bridge{padding:35px 0 40px;font-size:23px;gap:22px}.about{grid-template-columns:1fr;gap:30px;padding:60px 6%;margin-top:45px}.about h2{font-size:46px;margin-top:20px}.about .large-copy{font-size:23px}footer{padding:60px 6% 25px}.footer-title{font-size:73px;margin:28px 0 55px}.footer-bottom{flex-wrap:wrap;gap:15px}.footer-bottom a:last-child{margin-left:auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}.motion-ready .reveal:not(.in-view){opacity:1;transform:none}.motion-ready .reveal:not(.in-view) .plot-line{stroke-dashoffset:0}.motion-ready .reveal:not(.in-view) .plot-dot,.motion-ready .reveal:not(.in-view) .plot-bar,.motion-ready .reveal:not(.in-view) .plot-cell{opacity:1;transform:none}}

/* bleed-20260916: on screens wider than the 1800px page cap, the coloured bands run edge to edge
   (the content stays where it is; only the background is painted out to the viewport). */
@media (min-width: 1801px){
  .about{box-shadow:0 0 0 100vmax #dce2d0;clip-path:inset(0 -100vmax)}
  footer{box-shadow:0 0 0 100vmax var(--dark);clip-path:inset(0 -100vmax)}
  .chapter-nav{box-shadow:0 8px 24px #253c3105,0 0 0 100vmax #eeeee5f5;clip-path:inset(0 -100vmax -32px -100vmax)}
}
