/* Blitz Code, blitzcode.co. One stylesheet. Tokens first; dark tokens are repeated twice on purpose
   (system dark when nothing is chosen, and an explicit choice), see "Dark tokens". scripts/check.mjs reads this block. */

@font-face{font-family:"Newsreader";font-style:normal;font-weight:200 800;font-display:swap;src:url("fonts/newsreader-latin.woff2?v=01817351") format("woff2")}
@font-face{font-family:"Newsreader";font-style:italic;font-weight:200 800;font-display:swap;src:url("fonts/newsreader-italic-latin.woff2?v=e384e318") format("woff2")}

:root{
  color-scheme:light;
  --bg:#FAF8F7; --surface:#FFFFFF; --ink:#16152B; --muted:#585670; --line:#E6E2EC;
  --p-violet:#ECE8FF; --p-blue:#E0EBFF; --p-peach:#FFEADF; --p-pink:#FFE4F0; --p-grey:#F0EEF4;
  --accent:#5A3DE0; --need:#B3341E;
  --btn-bg:#16152B; --btn-fg:#FFFFFF;
  --band-bg:#242350; --band-ink:#F4F2FF; --band-muted:#C9C7E6;
  --mark-body:#27203D; --mark-violet:#7353FD; --mark-coral:#FD6861; --mark-counter:#FFFFFF; --mark-bolt:#F6535F;
  --win-bg:#F3F2F6; --nav-bg:rgba(255,255,255,.80); --shadow:rgba(36,35,80,.18);
  --stage-a:rgba(124,92,255,.50); --stage-b:rgba(47,123,255,.38); --stage-c:rgba(255,106,61,.42); --stage-d:rgba(242,55,155,.30); --stage-base:#EEE9FF;
  --serif:"Newsreader",ui-serif,"Iowan Old Style",Georgia,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"SF Pro Text","Helvetica Neue",ui-sans-serif,system-ui,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --r-lg:36px; --r-md:22px; --r-sm:14px;
  --gutter:clamp(16px,4vw,32px);
}

/* Dark tokens: system dark when no choice is stored */
@media (prefers-color-scheme:dark){
  :root:not([data-theme="light"]){
    color-scheme:dark;
    --bg:#100F1F; --surface:#1A1935; --ink:#F2F0FB; --muted:#A8A6C2; --line:#2B2A4E;
    --p-violet:#1E1A47; --p-blue:#15244A; --p-peach:#2B1C26; --p-pink:#2A1830; --p-grey:#1A1932;
    --accent:#A99BFF; --need:#FF9A86;
    --btn-bg:#F2F0FB; --btn-fg:#16152B;
    --band-bg:#1B1A44; --band-ink:#F4F2FF; --band-muted:#BDBBDD;
    --mark-body:#E6DEFA; --mark-violet:#8F78FF; --mark-coral:#FF7D6E; --mark-counter:#15122B; --mark-bolt:#FF6B63;
    --win-bg:#232228; --nav-bg:rgba(26,25,53,.78); --shadow:rgba(0,0,0,.5);
    --stage-a:rgba(124,92,255,.34); --stage-b:rgba(47,123,255,.24); --stage-c:rgba(255,106,61,.22); --stage-d:rgba(242,55,155,.18); --stage-base:#191740;
  }
}
/* Dark tokens: explicit choice */
:root[data-theme="dark"]{
  color-scheme:dark;
  --bg:#100F1F; --surface:#1A1935; --ink:#F2F0FB; --muted:#A8A6C2; --line:#2B2A4E;
  --p-violet:#1E1A47; --p-blue:#15244A; --p-peach:#2B1C26; --p-pink:#2A1830; --p-grey:#1A1932;
  --accent:#A99BFF; --need:#FF9A86;
  --btn-bg:#F2F0FB; --btn-fg:#16152B;
  --band-bg:#1B1A44; --band-ink:#F4F2FF; --band-muted:#BDBBDD;
  --mark-body:#E6DEFA; --mark-violet:#8F78FF; --mark-coral:#FF7D6E; --mark-counter:#15122B; --mark-bolt:#FF6B63;
  --win-bg:#232228; --nav-bg:rgba(26,25,53,.78); --shadow:rgba(0,0,0,.5);
  --stage-a:rgba(124,92,255,.34); --stage-b:rgba(47,123,255,.24); --stage-c:rgba(255,106,61,.22); --stage-d:rgba(242,55,155,.18); --stage-base:#191740;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:88px;-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font:400 17px/1.6 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%}
img{height:auto}
a{color:inherit}
p{margin:0}
:focus-visible{outline:3px solid var(--accent);outline-offset:3px;border-radius:8px}
.wrap{width:min(1120px,100% - 2*var(--gutter));margin-inline:auto}
.sr{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip{position:absolute;left:-999px;top:8px;background:var(--btn-bg);color:var(--btn-fg);padding:12px 18px;border-radius:999px;z-index:100;text-decoration:none}
.skip:focus{left:8px}
.ico{width:20px;height:20px;flex:none}

h1,h2,h3{font-family:var(--serif);font-weight:400;letter-spacing:-.022em;line-height:1.06;margin:0}
code{font:500 .88em var(--mono);padding:.1em .4em;border-radius:7px;background:var(--p-grey)}

/* Nav: a floating pill */
.nav{position:sticky;top:14px;z-index:50;margin:14px auto 0;width:min(1000px,100% - 2*var(--gutter));display:flex;align-items:center;gap:10px;padding:6px 6px 6px 14px;border-radius:999px;background:var(--nav-bg);backdrop-filter:blur(16px) saturate(1.4);-webkit-backdrop-filter:blur(16px) saturate(1.4);border:1px solid var(--line);box-shadow:0 8px 30px -12px var(--shadow)}
.brand{display:flex;align-items:center;gap:10px;min-height:44px;text-decoration:none;font-weight:600;letter-spacing:-.01em;margin-right:auto}
.brand svg{width:28px;height:27px}
.nav-links{display:flex;gap:2px;list-style:none;margin:0;padding:0}
.nav-links a{display:flex;align-items:center;min-height:44px;padding:0 13px;border-radius:999px;text-decoration:none;font-size:15px;color:var(--muted)}
.nav-links a:hover{color:var(--ink);background:var(--p-grey)}
.theme{display:flex;padding:3px;border-radius:999px;background:var(--p-grey)}
.theme button{display:flex;align-items:center;justify-content:center;gap:8px;min-width:44px;height:44px;padding:0 16px;border:0;border-radius:999px;background:transparent;color:var(--muted);font:500 15px/1 var(--sans);cursor:pointer}
.theme button:hover{color:var(--ink)}
.theme button[aria-pressed="true"]{background:var(--surface);color:var(--ink);box-shadow:0 0 0 2px var(--accent)}
.theme .ico{width:18px;height:18px}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:0 26px;border-radius:999px;border:1px solid transparent;font:500 16px/1 var(--sans);text-decoration:none;cursor:pointer;transition:transform .18s,box-shadow .18s,background .18s}
.btn-ink{background:var(--btn-bg);color:var(--btn-fg)}
.btn-ink:hover{transform:translateY(-1px);box-shadow:0 10px 24px -8px var(--shadow)}
.btn-line{background:var(--surface);color:var(--ink);border-color:var(--line)}
.btn-line:hover{background:var(--p-grey)}
.nav .btn{min-height:44px;padding:0 20px;font-size:15px}

/* Hero */
.hero{text-align:center;padding:clamp(32px,4.4vw,56px) 0 0}
.hero-icon{width:clamp(84px,7vw,100px);height:auto;margin:0 auto 20px;filter:drop-shadow(0 22px 30px var(--shadow))}
.eyebrow{display:inline-flex;align-items:center;gap:10px;padding:7px 16px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:14.5px;color:var(--muted)}
.eyebrow i{width:8px;height:8px;border-radius:50%;background:var(--need);display:inline-block}
h1{font-size:clamp(40px,4.9vw,68px);margin:20px auto 0;max-width:15.5em}
.lede{font-size:clamp(18px,2.1vw,21px);color:var(--muted);max-width:38em;margin:18px auto 0}
.cta{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:26px}
.fine{font-size:14.5px;color:var(--muted);margin-top:16px}
.stage{position:relative;margin-top:clamp(28px,3.4vw,44px);border-radius:var(--r-lg);padding:clamp(16px,4vw,56px) clamp(12px,4vw,64px) 0;overflow:hidden;isolation:isolate;
  background:radial-gradient(55% 70% at 8% 8%,var(--stage-a),transparent 62%),radial-gradient(50% 60% at 0% 100%,var(--stage-b),transparent 62%),radial-gradient(50% 60% at 100% 95%,var(--stage-c),transparent 62%),radial-gradient(40% 50% at 96% 6%,var(--stage-d),transparent 62%),var(--stage-base)}
/* two offset layers echo the stacked B of the mark */
.stage .imgs{margin-bottom:-1.6%}
.stage::before,.stage::after{content:"";position:absolute;left:50%;bottom:0;height:56%;border-radius:30px 30px 0 0;z-index:-1}
.stage::before{width:min(90%,1000px);background:var(--mark-violet);opacity:.5;transform:translateX(-50%) translateX(-26px) rotate(-1.4deg)}
.stage::after{width:min(90%,1000px);background:var(--mark-coral);opacity:.45;transform:translateX(-50%) translateX(26px) rotate(1.4deg)}

/* Product images: a light and a dark version, switched by the theme tokens */
.shot{margin:0}
.shot picture{display:block}
.shot img{display:block;max-width:100%;height:auto;margin-inline:auto}
.shot .imgs{container-type:inline-size}
.shot.win .wb{background:var(--win-bg);border-radius:1.32cqw}
.shot.win .imgs{filter:drop-shadow(0 22px 40px var(--shadow))}
.shot.win img{filter:none}
.shot .dk{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .shot .lt{display:none}:root:not([data-theme="light"]) .shot .dk{display:block}}
:root[data-theme="dark"] .shot .lt{display:none}
:root[data-theme="dark"] .shot .dk{display:block}
.shot.crop img{border-radius:16px;box-shadow:0 18px 44px -18px var(--shadow),0 0 0 1px var(--line)}
.shot figcaption{font-size:13.5px;color:var(--muted);margin-top:12px;text-align:center}

/* Sections */
section{padding:clamp(64px,9vw,120px) 0 0}
.sec-h{text-align:center;max-width:20ch;margin:0 auto;font-size:clamp(34px,5.2vw,58px)}
.sec-p{text-align:center;color:var(--muted);max-width:36em;margin:18px auto 0;font-size:18px}

/* Chapters: one idea, one image, on a soft colour panel */
.chapters{display:grid;gap:clamp(16px,2.4vw,28px);margin-top:clamp(40px,5vw,64px)}
.panel{border-radius:var(--r-lg);padding:clamp(24px,4vw,56px);display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.35fr);gap:clamp(24px,4vw,64px);align-items:center;overflow:hidden}
.panel.flip{grid-template-columns:minmax(0,1.35fr) minmax(0,1fr)}
.panel.flip .pt{order:2}
.panel.narrow{grid-template-columns:minmax(0,1fr) 430px}
.panel.imgwide{grid-template-columns:minmax(0,1fr) minmax(0,640px)}
.panel.imgwide.flip{grid-template-columns:minmax(0,640px) minmax(0,1fr)}
.panel.stack{grid-template-columns:1fr}
.panel.stack .pt{max-width:640px}
.c-violet{background:var(--p-violet)} .c-blue{background:var(--p-blue)} .c-peach{background:var(--p-peach)} .c-pink{background:var(--p-pink)} .c-grey{background:var(--p-grey)}
.kicker{display:inline-flex;align-items:center;gap:8px;font:600 13px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}
.kicker .ico{width:18px;height:18px}
.need .kicker{color:var(--need)}
.pt h3{font-size:clamp(30px,3.8vw,46px)}
.pt p{color:var(--muted);margin-top:16px;max-width:30em;font-size:17.5px}
.pt p strong{color:var(--ink);font-weight:600}
.gets{margin-top:28px}
.gets-h{display:block;font:600 13px/1 var(--sans);letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:16px}
.gets ul{list-style:none;margin:0;padding:0;display:grid;gap:18px}
.gets li{display:flex;gap:14px;align-items:flex-start}
.gets .gi{width:40px;height:40px;border-radius:13px;background:var(--surface);color:var(--accent);display:grid;place-items:center;flex:none;box-shadow:0 0 0 1px var(--line)}
.gets strong{display:block;font-weight:600;font-size:17px;line-height:1.35;color:var(--ink)}
.gets .t{display:block;color:var(--muted);font-size:15.5px;line-height:1.5;margin-top:2px;max-width:34em}
.gets .t strong{display:inline;font-size:inherit;color:var(--ink)}
.panel.native .pt{max-width:none}
.gets.cols ul{grid-template-columns:repeat(2,minmax(0,1fr));gap:24px 48px}
.panel .shot{align-self:center}
.chapters.flush{margin-top:0}
.gallery{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px;margin-top:clamp(36px,5vw,56px);align-items:stretch}
.tile{background:var(--p-grey);border-radius:var(--r-md);padding:clamp(12px,1.4vw,16px);display:flex;align-items:center;justify-content:center}
.tile .shot{width:100%}
.stack-img{margin-top:0}

/* More: icon grid */
.more-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:14px;margin-top:clamp(28px,4vw,44px)}
.card{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:22px}
.card .ic{width:44px;height:44px;border-radius:14px;display:grid;place-items:center;background:var(--p-violet);color:var(--accent);margin-bottom:16px}
.card:nth-child(4n+2) .ic{background:var(--p-blue)} .card:nth-child(4n+3) .ic{background:var(--p-peach)} .card:nth-child(4n) .ic{background:var(--p-pink)}
.card h4{margin:0;font:600 17px/1.3 var(--sans)}
.card p{margin:8px 0 0;font-size:15.5px;color:var(--muted);line-height:1.5}
.soon{display:inline-block;margin-top:12px;font:600 12px/1 var(--sans);padding:5px 10px;border-radius:999px;background:var(--p-grey);color:var(--muted)}

/* Free and open source: the one dark band */
.band{border-radius:var(--r-lg);background:var(--band-bg);color:var(--band-ink);padding:clamp(32px,6vw,80px);position:relative;overflow:hidden;isolation:isolate}
.band::before{content:"";position:absolute;right:-90px;top:-90px;width:380px;height:380px;border-radius:50%;background:radial-gradient(circle,rgba(242,55,155,.38),transparent 65%);z-index:-1}
.band::after{content:"";position:absolute;left:-100px;bottom:-120px;width:400px;height:400px;border-radius:50%;background:radial-gradient(circle,rgba(59,108,255,.42),transparent 65%);z-index:-1}
.band h2{font-size:clamp(34px,5.4vw,60px);max-width:16ch}
.band .lead{color:var(--band-muted);max-width:34em;margin-top:18px;font-size:18px}
.band .lead code{background:rgba(255,255,255,.12);color:var(--band-ink)}
.tri{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:40px}
.tri div{background:rgba(255,255,255,.07);border:1px solid rgba(255,255,255,.13);border-radius:var(--r-md);padding:24px}
.tri .ico{color:#FFB3A8;margin-bottom:14px;width:24px;height:24px}
.tri b{display:block;font-weight:600;margin-bottom:6px;font-size:17px}
.tri span{color:var(--band-muted);font-size:15.5px;line-height:1.5;display:block}
.band .by{margin-top:32px;font-size:14.5px;color:var(--band-muted)}

/* Start, needs, FAQ */
.steps{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin-top:44px;list-style:none;padding:0}
.step{background:var(--surface);border:1px solid var(--line);border-radius:var(--r-md);padding:26px}
.step .no{width:36px;height:36px;border-radius:50%;background:var(--p-violet);display:grid;place-items:center;font-weight:600;margin-bottom:16px}
.step b{display:block;font-size:19px;margin-bottom:4px}
.step span{color:var(--muted);font-size:16px}
.needs{display:flex;flex-wrap:wrap;gap:10px;justify-content:center;margin:32px 0 0;padding:0;list-style:none}
.needs li{padding:10px 18px;border-radius:999px;background:var(--surface);border:1px solid var(--line);font-size:15.5px}
.faq{max-width:780px;margin:44px auto 0}
.faq details{border-top:1px solid var(--line)}
.faq details:last-child{border-bottom:1px solid var(--line)}
.faq summary{cursor:pointer;font-weight:500;list-style:none;display:flex;justify-content:space-between;align-items:center;gap:16px;min-height:44px;padding:18px 4px;font-size:18px}
.faq summary::-webkit-details-marker{display:none}
.faq summary::after{content:"+";font-size:26px;line-height:1;color:var(--muted)}
.faq details[open] summary::after{content:"\2212"}
.faq p{margin:0 0 20px;color:var(--muted);max-width:42em;padding:0 4px}

.final{text-align:center;padding:clamp(72px,10vw,140px) 0 clamp(56px,8vw,96px)}
.final img{width:clamp(120px,14vw,168px);margin:0 auto 28px;filter:drop-shadow(0 26px 36px var(--shadow))}
.final h2{font-size:clamp(36px,5.8vw,68px);max-width:14ch;margin-inline:auto}

footer{border-top:1px solid var(--line);padding:36px 0 56px;color:var(--muted);font-size:15px}
footer .f{display:flex;flex-wrap:wrap;gap:8px 28px;justify-content:space-between;align-items:center}
footer .f b{color:var(--ink);font-weight:600}
footer nav{display:flex;gap:6px 22px;flex-wrap:wrap}
footer nav a{display:inline-flex;align-items:center;min-height:44px}
footer .foot-theme{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:18px}
footer .foot-label{font-weight:600;color:var(--ink)}
footer p{margin:14px 0 0;max-width:60em;font-size:14px}

/* 404 */
.nf{text-align:center;padding:clamp(80px,14vw,180px) 0}
.nf img{width:120px;margin:0 auto 24px}
.nf h1{font-size:clamp(36px,6vw,64px);max-width:16ch}

@media (max-width:980px){
  .nav-links{display:none}
  .more-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media (max-width:860px){
  .panel,.panel.flip,.panel.narrow,.panel.imgwide,.panel.imgwide.flip{grid-template-columns:1fr}
  .panel.flip .pt{order:0}
  .tri,.steps,.gets.cols ul{grid-template-columns:1fr}
  .stage::before,.stage::after{height:40%}
}
@media (max-width:600px){
  body{font-size:16.5px}
  .nav{gap:6px;padding-left:12px}
  .nav .btn{width:auto;white-space:nowrap;padding:0 16px;font-size:14px}
  .brand{white-space:nowrap}
  .brand span{font-size:16px}
  .more-grid,.gallery{grid-template-columns:1fr}
  .btn{width:100%}
  .cta{flex-direction:column;align-items:stretch}
  /* phones: panels and the hero stage run edge to edge so product images are shown as large as the screen allows */
  .panel{margin-inline:calc(-1*var(--gutter));border-radius:28px;padding:28px 0 8px;gap:20px}
  .panel .pt{padding-inline:var(--gutter)}
  .panel .shot figcaption{padding-bottom:14px}
  .panel .shot.crop img{border-radius:0;box-shadow:none}
  .stage{margin-inline:calc(-1*var(--gutter));border-radius:28px;padding:20px 0 0}
  .shot.win .wb{border-radius:2.6cqw}
  .tile{padding:10px;margin-inline:calc(-1*var(--gutter));border-radius:22px}
  .tile .shot.crop img{border-radius:12px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
