:root{color-scheme:light;--bg:#F4F0E7;--bg-2:#EBE5D8;--card-bg:#FBF9F4;--card-hi:#FFFDF8;--card-hover:#FFFDF8;--hdr-bg:rgba(244,240,231,.9);--ink:#1A1C1A;--ink-2:#474A45;--ink-3:#63665F;--rule:#D9D1BF;--rule-2:#C4BAA3;--hover:rgba(26,28,26,.06);--link:#1F5240;--em:#1E4A3B;--verm:#B23A1A;--verm-soft:rgba(178,58,26,.14);--focus:#B23A1A;--btn-bg:#1A1C1A;--btn-ink:#F4F0E7;--btn-hover:#1E4A3B;--pill-bg:#E2EADF;--pill-ink:#1E4A3B;--code-bg:#EEE9DD;--grain:rgba(26,28,26,.035);--ok-bg:#DCEBE1;--ok-ink:#1E4A3B;--low-bg:#F6E7C8;--low-ink:#6E4A08;--upd-bg:#DDE6F2;--upd-ink:#234A78;--del-bg:#F5DCD3;--del-ink:#8E2F14;--warn:#B07A12;--warn-bg:#FBF1DE;--warn-ink:#5C3A0E;--out-bg:#E4EDE6;--out-line:#9DB8A8;--map-bg:#ECE6D9;--map-grid:rgba(26,28,26,.16);--map-hatch:rgba(30,74,59,.14);--band-bg:#1E4A3B;--band-ink:#F4F0E7;--band-ink-2:#CBDACF;--band-ink-3:#B3CABD;--band-accent:#EDC2AF;--band-rule:rgba(244,240,231,.22);--ftr-bg:#1A1C1A;--ftr-ink:#F4F0E7;--ftr-ink-2:#C9C6BC;--ftr-ink-3:#A19E94;--ftr-rule:#34372F;--ftr-ring:rgba(244,240,231,.18);--mark-ring:rgba(26,28,26,0);--s-bg:#FFFFFF;--s-line:#E3E5E8;--s-border:#DADCE0;--s-head:#F8F9FA;--s-ink:#202124;--s-ink-2:#5F6368;--s-new:#E6EEE8;--s-new-ink:#1E4A3B;--s-sel:#1A73E8;--s-ok-bg:#DCEBE1;--s-ok:#1E4A3B;--s-low-bg:#F6E7C8;--s-low:#6E4A08;--s-empty-bg:#ECEAE4;--s-empty:#55584F;--lbl-bg:#FFFFFF;--lbl-line:#C9BFA8;--lbl-ink:#1A1C1A;--shadow:0 1px 0 rgba(60,48,20,.06),0 24px 48px -28px rgba(60,48,20,.35);--shadow-lg:0 1px 0 rgba(60,48,20,.08),0 34px 70px -34px rgba(60,48,20,.45)}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){color-scheme:dark;--bg:#111412;--bg-2:#161A17;--card-bg:#191D1A;--card-hi:#1E231F;--card-hover:#1E231F;--hdr-bg:rgba(17,20,18,.88);--ink:#ECE8DE;--ink-2:#BDB9AE;--ink-3:#9A968B;--rule:#2B322D;--rule-2:#3B443D;--hover:rgba(236,232,222,.07);--link:#9AD3B8;--em:#9AD3B8;--verm:#F0916F;--verm-soft:rgba(240,145,111,.16);--focus:#F0916F;--btn-bg:#ECE8DE;--btn-ink:#111412;--btn-hover:#FFFFFF;--pill-bg:#203329;--pill-ink:#A8E0C4;--code-bg:#1F2420;--grain:rgba(236,232,222,.022);--ok-bg:#1F3A2E;--ok-ink:#A8E0C4;--low-bg:#3A2F15;--low-ink:#F0CF86;--upd-bg:#1E2C3F;--upd-ink:#A9C6EE;--del-bg:#3D211A;--del-ink:#F2A88F;--warn:#E2B55A;--warn-bg:#2A2415;--warn-ink:#F0D9A6;--out-bg:#1C2B23;--out-line:#3F6152;--map-bg:#1A1F1B;--map-grid:rgba(236,232,222,.12);--map-hatch:rgba(154,211,184,.12);--band-bg:#172520;--band-ink:#ECE8DE;--band-ink-2:#BCCBC2;--band-ink-3:#A2B6AA;--band-accent:#F0B39C;--band-rule:rgba(236,232,222,.16);--ftr-bg:#0B0D0C;--ftr-ink:#ECE8DE;--ftr-ink-2:#BDB9AE;--ftr-ink-3:#8F8C82;--ftr-rule:#252A26;--ftr-ring:rgba(236,232,222,.2);--mark-ring:rgba(236,232,222,.2);--s-bg:#151916;--s-line:#262C28;--s-border:#333A35;--s-head:#1B201C;--s-ink:#E3DFD5;--s-ink-2:#9A968B;--s-new:#18302A;--s-new-ink:#A8E0C4;--s-sel:#7FB2FF;--s-ok-bg:#1F3A2E;--s-ok:#A8E0C4;--s-low-bg:#3A2F15;--s-low:#F0CF86;--s-empty-bg:#2A2E2A;--s-empty:#C2BEB3;--lbl-bg:#1E231F;--lbl-line:#4A544C;--lbl-ink:#ECE8DE;--shadow:0 1px 0 rgba(0,0,0,.4),0 24px 48px -28px rgba(0,0,0,.7);--shadow-lg:0 1px 0 rgba(0,0,0,.5),0 34px 70px -34px rgba(0,0,0,.85)}}
:root[data-theme="dark"]{color-scheme:dark;--bg:#111412;--bg-2:#161A17;--card-bg:#191D1A;--card-hi:#1E231F;--card-hover:#1E231F;--hdr-bg:rgba(17,20,18,.88);--ink:#ECE8DE;--ink-2:#BDB9AE;--ink-3:#9A968B;--rule:#2B322D;--rule-2:#3B443D;--hover:rgba(236,232,222,.07);--link:#9AD3B8;--em:#9AD3B8;--verm:#F0916F;--verm-soft:rgba(240,145,111,.16);--focus:#F0916F;--btn-bg:#ECE8DE;--btn-ink:#111412;--btn-hover:#FFFFFF;--pill-bg:#203329;--pill-ink:#A8E0C4;--code-bg:#1F2420;--grain:rgba(236,232,222,.022);--ok-bg:#1F3A2E;--ok-ink:#A8E0C4;--low-bg:#3A2F15;--low-ink:#F0CF86;--upd-bg:#1E2C3F;--upd-ink:#A9C6EE;--del-bg:#3D211A;--del-ink:#F2A88F;--warn:#E2B55A;--warn-bg:#2A2415;--warn-ink:#F0D9A6;--out-bg:#1C2B23;--out-line:#3F6152;--map-bg:#1A1F1B;--map-grid:rgba(236,232,222,.12);--map-hatch:rgba(154,211,184,.12);--band-bg:#172520;--band-ink:#ECE8DE;--band-ink-2:#BCCBC2;--band-ink-3:#A2B6AA;--band-accent:#F0B39C;--band-rule:rgba(236,232,222,.16);--ftr-bg:#0B0D0C;--ftr-ink:#ECE8DE;--ftr-ink-2:#BDB9AE;--ftr-ink-3:#8F8C82;--ftr-rule:#252A26;--ftr-ring:rgba(236,232,222,.2);--mark-ring:rgba(236,232,222,.2);--s-bg:#151916;--s-line:#262C28;--s-border:#333A35;--s-head:#1B201C;--s-ink:#E3DFD5;--s-ink-2:#9A968B;--s-new:#18302A;--s-new-ink:#A8E0C4;--s-sel:#7FB2FF;--s-ok-bg:#1F3A2E;--s-ok:#A8E0C4;--s-low-bg:#3A2F15;--s-low:#F0CF86;--s-empty-bg:#2A2E2A;--s-empty:#C2BEB3;--lbl-bg:#1E231F;--lbl-line:#4A544C;--lbl-ink:#ECE8DE;--shadow:0 1px 0 rgba(0,0,0,.4),0 24px 48px -28px rgba(0,0,0,.7);--shadow-lg:0 1px 0 rgba(0,0,0,.5),0 34px 70px -34px rgba(0,0,0,.85)}
/* Cellbrook v2 "Almanac". Light + dark themes. No frameworks. Fonts self-hosted (OFL 1.1, see /assets/fonts/FONTS-LICENSE.txt).
   Theme variables are generated by build_v2.py and prepended above this file. */
@font-face{font-family:"CB Serif";font-style:normal;font-weight:380 620;font-display:swap;src:url(/assets/fonts/cb-serif.woff2) format("woff2")}
@font-face{font-family:"CB Serif";font-style:italic;font-weight:400;font-display:swap;src:url(/assets/fonts/cb-serif-italic.woff2) format("woff2")}
@font-face{font-family:"CB Sans";font-weight:400;font-display:swap;src:url(/assets/fonts/cb-sans-400.woff2) format("woff2")}
@font-face{font-family:"CB Sans";font-weight:500;font-display:swap;src:url(/assets/fonts/cb-sans-500.woff2) format("woff2")}
@font-face{font-family:"CB Sans";font-weight:600;font-display:swap;src:url(/assets/fonts/cb-sans-600.woff2) format("woff2")}
@font-face{font-family:"CB Mono";font-weight:400;font-display:swap;src:url(/assets/fonts/cb-mono-400.woff2) format("woff2")}
@font-face{font-family:"CB Mono";font-weight:500;font-display:swap;src:url(/assets/fonts/cb-mono-500.woff2) format("woff2")}
:root{
  --serif:"CB Serif",Georgia,"Times New Roman",serif;
  --sans:"CB Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Arial,sans-serif;
  --mono:"CB Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --max:1200px; --gutter:clamp(20px,4vw,44px); --r:4px; --r-lg:6px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:88px}
body{margin:0;font:17px/1.62 var(--sans);color:var(--ink);background-color:var(--bg);
  background-image:radial-gradient(var(--grain) 1px,transparent 1px);background-size:4px 4px;
  -webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizeLegibility}
img,svg{display:block;max-width:100%;height:auto}
a{color:var(--link);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{color:var(--ink)}
:focus-visible{outline:2px solid var(--focus);outline-offset:3px;border-radius:2px}
h1,h2,h3,h4{font-family:var(--serif);font-weight:440;line-height:1.08;letter-spacing:-.018em;margin:0 0 .45em;color:var(--ink)}
h1{font-size:clamp(2.6rem,5.6vw,4.9rem);line-height:1;letter-spacing:-.028em;font-weight:420}
h2{font-size:clamp(1.9rem,3.6vw,3rem);letter-spacing:-.022em}
h3{font-size:1.42rem;font-weight:500;letter-spacing:-.01em}
h1 em,h2 em{font-style:italic;font-weight:400;color:var(--em)}
p{margin:0 0 1em}
strong{font-weight:600}
code,kbd{font-family:var(--mono);font-size:.86em;background:var(--code-bg);border:1px solid var(--rule);border-radius:3px;padding:.06em .36em;color:var(--ink)}
hr{border:0;border-top:1px solid var(--rule);margin:2em 0}
.wrap{max-width:var(--max);margin:0 auto;padding:0 var(--gutter)}
.wrap.narrow>*{max-width:760px}
.notfound .wrap.narrow>*{margin-left:auto;margin-right:auto}
.skip{position:absolute;left:-9999px;top:8px;z-index:100;background:var(--btn-bg);color:var(--btn-ink);padding:10px 14px;border-radius:var(--r)}
.skip:focus{left:12px}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap}
.mono{font-family:var(--mono)}

/* header */
.hdr{position:sticky;top:0;z-index:50;background:var(--hdr-bg);-webkit-backdrop-filter:saturate(1.4) blur(10px);backdrop-filter:saturate(1.4) blur(10px);border-bottom:1px solid var(--rule)}
.hdr .wrap{display:flex;align-items:center;gap:24px;min-height:68px}
.brand{display:inline-flex;align-items:center;gap:11px;color:var(--ink);text-decoration:none;font:560 1.42rem/1 var(--serif);letter-spacing:-.012em}
.brand:hover{color:var(--ink)}
.brand svg{width:30px;height:30px;flex:none}
.brand .mk-ring{stroke:var(--mark-ring)}
.nav{margin-left:auto;display:flex;gap:2px}
.nav a{color:var(--ink-2);text-decoration:none;font-size:.95rem;font-weight:500;padding:8px 12px;border-radius:var(--r);position:relative}
.nav a:hover{color:var(--ink);background:var(--hover)}
.nav a[aria-current="page"]{color:var(--ink)}
.nav a[aria-current="page"]::after{content:"";position:absolute;left:12px;right:12px;bottom:3px;height:1.5px;background:var(--verm)}
.theme-toggle{flex:none;display:inline-grid;place-items:center;width:40px;height:40px;border-radius:50%;border:1px solid var(--rule-2);background:transparent;color:var(--ink);cursor:pointer;padding:0;transition:background .15s,border-color .15s}
.theme-toggle:hover{background:var(--hover);border-color:var(--ink-3)}
.theme-toggle svg{width:18px;height:18px}
.theme-toggle .i-sun{display:none}
:root[data-theme="dark"] .theme-toggle .i-sun{display:block}
:root[data-theme="dark"] .theme-toggle .i-moon{display:none}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]) .theme-toggle .i-sun{display:block}:root:not([data-theme="light"]) .theme-toggle .i-moon{display:none}}
@media (max-width:760px){
  .hdr .wrap{flex-wrap:wrap;gap:0 12px;padding-top:10px;min-height:0}
  .brand{margin-right:auto}
  .nav{order:3;margin:6px calc(var(--gutter) * -1) 0;padding:0 calc(var(--gutter) - 10px);width:calc(100% + var(--gutter) * 2);overflow-x:auto;scrollbar-width:none;border-top:1px solid var(--rule)}
  .nav::after{content:'';flex:0 0 28px}
  .nav{-webkit-mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent);mask-image:linear-gradient(90deg,#000 calc(100% - 36px),transparent)}
  .nav::-webkit-scrollbar{display:none}
  .nav a{padding:11px 10px;white-space:nowrap;font-size:.92rem}
  .nav a[aria-current="page"]::after{left:10px;right:10px;bottom:4px}
}

/* buttons & badges */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:9px;min-height:48px;padding:0 22px;border-radius:var(--r);font:500 .98rem/1.2 var(--sans);text-decoration:none;border:1px solid transparent;transition:background .15s,border-color .15s,color .15s}
.btn-primary{background:var(--btn-bg);color:var(--btn-ink)}
.btn-primary:hover{background:var(--btn-hover);color:var(--btn-ink)}
.btn-ghost{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn-ghost:hover{background:var(--btn-bg);color:var(--btn-ink);border-color:var(--btn-bg)}
.soon{display:inline-flex;align-items:center;gap:11px;min-height:48px;padding:0 18px;border-radius:var(--r);border:1px dashed var(--rule-2);color:var(--ink-2);font:500 .9rem/1.3 var(--mono);letter-spacing:-.01em}
.soon .dot,.status .dot{width:8px;height:8px;border-radius:50%;background:var(--verm);box-shadow:0 0 0 4px var(--verm-soft);flex:none}
.eyebrow,.kicker,.label{display:inline-flex;align-items:center;gap:10px;font:500 .76rem/1.2 var(--mono);letter-spacing:.13em;text-transform:uppercase;color:var(--ink-3);margin:0 0 18px}
.eyebrow a{color:var(--ink-2)}
.eyebrow svg{flex:none}
.kicker-no{color:var(--verm)}
.pill{display:inline-block;font:500 .72rem/1.2 var(--mono);letter-spacing:.06em;text-transform:uppercase;padding:4px 8px;border-radius:2px;background:var(--pill-bg);color:var(--pill-ink);vertical-align:middle}
.actions{display:flex;flex-wrap:wrap;gap:12px;align-items:center}

/* sections */
.hero{padding:clamp(56px,9vw,112px) 0 clamp(44px,7vw,88px);border-bottom:1px solid var(--rule)}
.hero p.lede,.lede{font-size:clamp(1.08rem,1.6vw,1.24rem);color:var(--ink-2);max-width:36em;margin-bottom:32px}
.section{padding:clamp(56px,8vw,104px) 0}
.section.alt{background:var(--bg-2);border-top:1px solid var(--rule);border-bottom:1px solid var(--rule)}
.section-head{max-width:720px;margin-bottom:44px}
.section-head p{color:var(--ink-2);font-size:1.08rem}
.muted{color:var(--ink-2)} .small{font-size:.92rem} .tiny{font-size:.84rem;color:var(--ink-3)}

/* grid & cards: hairline ledger cells instead of floating cards */
.grid{display:grid;gap:0;border-top:1px solid var(--rule);border-left:1px solid var(--rule)}
.g2{grid-template-columns:repeat(2,minmax(0,1fr))} .g3{grid-template-columns:repeat(3,minmax(0,1fr))}
@media (max-width:900px){.g3{grid-template-columns:1fr 1fr}}
@media (max-width:620px){.g2,.g3{grid-template-columns:1fr}}
.card{background:var(--card-bg);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:28px 26px 30px}
.card h3{margin-bottom:.4em}
.card h2{font-size:1.5rem;margin-bottom:.4em}
.card p:last-child{margin-bottom:0}
.card .ico{width:38px;height:38px;display:grid;place-items:center;margin-bottom:18px;color:var(--em);border:1px solid var(--rule-2);border-radius:50%}
.card .ico svg{width:19px;height:19px}
.card .logo-row{margin-bottom:16px}
a.card{display:block;text-decoration:none;color:inherit;transition:background .15s}
a.card:hover{background:var(--card-hover)}
a.card h2,a.card h3{color:var(--ink)}
a.card h2::after,a.card h3::after{content:" \2192";font-family:var(--sans);font-size:.8em;color:var(--ink-3);transition:color .15s}
a.card:hover h2::after,a.card:hover h3::after{color:var(--verm)}

/* figures */
.shot{margin:0;border-radius:var(--r-lg);overflow:hidden;border:1px solid var(--rule-2);background:#fff;box-shadow:var(--shadow)}
.shot img{width:100%}
figure figcaption{font-size:.86rem;color:var(--ink-3);margin-top:12px;font-style:italic;font-family:var(--serif)}
.shot-wrap{margin:0}
.shot-wrap figcaption{text-align:center}
.checks{list-style:none;padding:0;margin:0 0 24px}
.checks li{position:relative;padding-left:28px;margin:.55em 0;color:var(--ink-2)}
.checks li::before{content:"";position:absolute;left:2px;top:.5em;width:14px;height:8px;border-left:1.8px solid var(--em);border-bottom:1.8px solid var(--em);transform:rotate(-45deg)}

/* steps */
.steps{counter-reset:s;list-style:none;padding:0;margin:0;display:grid;gap:0;grid-template-columns:repeat(3,minmax(0,1fr));border-top:2px solid var(--ink)}
@media (max-width:820px){.steps{grid-template-columns:1fr}}
.steps li{counter-increment:s;padding:26px 28px 6px 0;border-bottom:1px solid var(--rule)}
.steps li+li{padding-left:28px;border-left:1px solid var(--rule)}
@media (max-width:820px){.steps li+li{padding-left:0;border-left:0}}
.steps li::before{content:counter(s,decimal-leading-zero);display:block;font:300 2.6rem/1 var(--serif);color:var(--verm);margin-bottom:14px}
.steps h3{font-size:1.25rem}
.steps p{color:var(--ink-2)}

/* gallery */
.gallery{display:grid;gap:56px}
.gallery .row{display:grid;grid-template-columns:1fr 1.6fr;gap:48px;align-items:center}
.gallery .row:nth-child(even){grid-template-columns:1.6fr 1fr}
.gallery .row:nth-child(even) .txt{order:2}
.gallery .txt h3{font-size:1.7rem}
@media (max-width:860px){.gallery .row,.gallery .row:nth-child(even){grid-template-columns:1fr;gap:20px}.gallery .row:nth-child(even) .txt{order:0}}

/* tables */
.table-wrap{overflow-x:auto;border-top:2px solid var(--ink);border-bottom:1px solid var(--rule);background:var(--card-bg)}
table{border-collapse:collapse;width:100%;font-size:.96rem}
th,td{text-align:left;padding:14px 16px;border-bottom:1px solid var(--rule);vertical-align:top}
thead th{font:500 .74rem/1.3 var(--mono);text-transform:uppercase;letter-spacing:.1em;color:var(--ink-3);background:transparent}
tbody tr:last-child th,tbody tr:last-child td{border-bottom:0}
tbody th{font-weight:600}
td.c,th.c{text-align:center}
.yes{color:var(--em);font-weight:600}
.no{color:var(--ink-3)}

/* pricing */
.plans{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));border-top:2px solid var(--ink);border-left:1px solid var(--rule)}
@media (max-width:720px){.plans{grid-template-columns:1fr}}
.plan{background:var(--card-bg);border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);padding:32px 30px;display:flex;flex-direction:column}
.plan.featured{background:var(--card-hi);box-shadow:inset 0 3px 0 var(--verm)}
.plan h2{font:500 .8rem/1.2 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);display:flex;align-items:center;gap:10px;margin-bottom:18px}
.price{font:400 clamp(3rem,5vw,4rem)/1 var(--serif);letter-spacing:-.02em;margin:0 0 8px;color:var(--ink)}
.price small{font:400 1rem var(--sans);color:var(--ink-3);letter-spacing:0}
.plan .alt-price{color:var(--ink-2);margin-bottom:20px}
.plan .checks{flex:1}
.plan .soon{align-self:flex-start}
.note{background:var(--card-bg);border-left:3px solid var(--em);padding:18px 22px;color:var(--ink-2)}
.note strong{color:var(--ink)}
.callout{background:var(--warn-bg);border-left:3px solid var(--warn);padding:16px 20px;color:var(--warn-ink)}

/* FAQ */
.faq{max-width:860px;border-top:2px solid var(--ink)}
.faq details{border-bottom:1px solid var(--rule)}
.faq summary{cursor:pointer;list-style:none;padding:20px 44px 20px 0;font:500 1.22rem/1.35 var(--serif);position:relative;color:var(--ink)}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before,.faq summary::after{content:"";position:absolute;right:8px;top:50%;width:14px;height:1.5px;background:var(--ink-2);transition:transform .2s}
.faq summary::after{transform:rotate(90deg)}
.faq details[open] summary::after{transform:rotate(0)}
.faq summary:hover{color:var(--em)}
.faq details>div{color:var(--ink-2);padding:0 0 22px;max-width:720px}
.faq details>div p:last-child{margin:0}

/* page heads, prose, docs */
.page-head{padding:clamp(48px,7vw,96px) 0 clamp(28px,4vw,44px);border-bottom:1px solid var(--rule);margin-bottom:clamp(36px,5vw,56px)}
.page-head h1{max-width:16em}
.page-head p{color:var(--ink-2);font-size:1.14rem;max-width:40em}
.page-head .eyebrow{margin-bottom:22px}
.prose{max-width:740px}
.prose h2{font-size:clamp(1.6rem,2.6vw,2.05rem);margin-top:2em;padding-top:.2em}
.prose h3{margin-top:1.8em}
.prose ul,.prose ol{padding-left:1.3em}
.prose li{margin:.4em 0}
.prose li::marker{color:var(--ink-3)}
.prose .table-wrap{margin:1.2em 0 1.8em}
.meta{font:500 .8rem/1.4 var(--mono);color:var(--ink-3);letter-spacing:.02em}
.docs{display:grid;grid-template-columns:230px minmax(0,1fr);gap:64px;align-items:start}
.toc{position:sticky;top:96px;font-size:.92rem}
.toc p{font:500 .74rem/1.2 var(--mono);text-transform:uppercase;letter-spacing:.12em;color:var(--ink-3);margin-bottom:10px}
.toc ol{list-style:none;padding:0;margin:0;border-left:1px solid var(--rule)}
.toc a{display:block;padding:5px 0 5px 14px;color:var(--ink-2);text-decoration:none;margin-left:-1px;border-left:1.5px solid transparent}
.toc a:hover{color:var(--ink);border-left-color:var(--verm)}
@media (max-width:900px){.docs{grid-template-columns:1fr;gap:20px}.docs>*{min-width:0}.toc{position:static;background:var(--card-bg);border:1px solid var(--rule);padding:16px 18px}}
.addr{font-style:normal;line-height:1.7}
.contact-card{display:grid;gap:6px}
.crumbs{font:500 .78rem/1.4 var(--mono);letter-spacing:.06em;text-transform:uppercase;color:var(--ink-3);margin-bottom:16px}
.crumbs a{color:var(--ink-2)}
.prose pre{background:var(--code-bg);border:1px solid var(--rule);border-radius:var(--r);padding:14px 16px;overflow-x:auto;font-size:.85rem;line-height:1.6;margin:1em 0 1.4em}
.prose pre code{background:none;border:0;padding:0;font-size:inherit;white-space:pre}
.prose li>pre{margin:.6em 0}
.cta{margin:1.8em 0;border:1px solid var(--rule-2);border-left:3px solid var(--em)}
.cta .cta-head{display:flex;align-items:center;gap:10px;font-weight:600;color:var(--ink);margin-bottom:.5em}
.cta .cta-head svg{width:24px;height:24px}
.guide-list{columns:2;column-gap:48px;padding-left:1.2em;max-width:920px}
.guide-list li{margin:.5em 0;break-inside:avoid}
@media (max-width:720px){.guide-list{columns:1}}
.product-hero .lede{max-width:36em}
.product-hero h1{max-width:13em}
.license-key{margin:18px 0 8px;padding:18px 20px;background:var(--card-bg);border:2px solid var(--em);border-radius:var(--r);overflow-x:auto;user-select:all;-webkit-user-select:all}
.license-key code{background:none;border:0;padding:0;font-size:1.05rem;font-weight:500;letter-spacing:.02em;word-break:break-all;white-space:pre-wrap}
.thanks .table-wrap{margin-top:16px}
.notfound{text-align:center;padding:clamp(72px,14vw,160px) 0}
.notfound .code{font:300 5rem/1 var(--serif);color:var(--verm);margin-bottom:.2em}
.notfound .actions{justify-content:center}
.center{text-align:center}
.mt0{margin-top:0}.mb0{margin-bottom:0}.mt2{margin-top:2rem}
.hero.center{text-align:center}
.hero.center .lede{margin-left:auto;margin-right:auto}
.hero.center .actions,.hero.center .eyebrow{justify-content:center}
.grid-bg{position:relative}

/* CTA band */
.band{background:var(--band-bg);color:var(--band-ink);border-radius:var(--r-lg);padding:clamp(30px,5vw,56px);display:flex;flex-wrap:wrap;gap:24px;align-items:center;justify-content:space-between}
.band h2{color:var(--band-ink);margin:0 0 8px}
.band p{color:var(--band-ink-2);margin:0;max-width:40em}
.band a{color:var(--band-ink)}
.band .soon{border-color:var(--band-rule);color:var(--band-ink)}

/* footer */
.ftr{margin-top:clamp(64px,9vw,112px);background:var(--ftr-bg);color:var(--ftr-ink-2);padding:64px 0 40px;font-size:.94rem;background-image:none}
.ftr .wrap{display:grid;grid-template-columns:1.5fr 1fr 1fr 1fr;gap:36px}
.ftr .brand{color:var(--ftr-ink);font-size:1.6rem}
.ftr .brand .mk-ring{stroke:var(--ftr-ring)}
.ftr p{margin:14px 0 0;line-height:1.7}
.ftr a{color:var(--ftr-ink)}
.ftr nav p{font:500 .74rem/1.2 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ftr-ink-3);margin:6px 0 14px}
.ftr nav a{display:block;text-decoration:none;padding:4px 0;color:var(--ftr-ink-2)}
.ftr nav a:hover{color:var(--ftr-ink)}
.ftr .legal{grid-column:1/-1;border-top:1px solid var(--ftr-rule);padding-top:22px;margin-top:12px;font-size:.84rem;color:var(--ftr-ink-3);display:flex;flex-wrap:wrap;gap:6px 24px;justify-content:space-between}
.ftr .legal a{color:var(--ftr-ink-2)}
@media (max-width:900px){.ftr .wrap{grid-template-columns:1fr 1fr}.ftr .wrap>div:first-child{grid-column:1/-1}}

/* ============ home ============ */
.hero-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.25fr);gap:clamp(32px,4.5vw,64px);align-items:center}
.status{display:flex;align-items:center;gap:12px;margin:30px 0 0;font:.84rem/1.45 var(--mono);color:var(--ink-3)}
.specimen{margin:0;background:var(--card-bg);border:1px solid var(--rule-2);padding:18px 18px 14px;box-shadow:var(--shadow-lg)}
.specimen-tab{display:flex;justify-content:space-between;gap:12px;font:500 .7rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);padding:2px 2px 14px;border-bottom:1px solid var(--rule);margin-bottom:14px}
.specimen figcaption{display:flex;justify-content:space-between;gap:16px;padding-top:12px;margin:0;font-size:.98rem;color:var(--ink-2)}
.ill{font:400 .68rem/1.6 var(--mono);font-style:normal;color:var(--ink-3);white-space:nowrap;letter-spacing:.08em;text-transform:uppercase}
.sheet{border:1px solid var(--s-border);background:var(--s-bg);color:var(--s-ink);font:13px/1.2 var(--sans);overflow:hidden}
.sheet-bar{display:flex;align-items:center;gap:10px;padding:8px 10px;border-bottom:1px solid var(--s-border)}
.sheet-bar .fx{font:italic 400 14px var(--serif);color:var(--s-ink-2)}
.sheet-bar code{font:12px var(--mono);color:var(--s-ink);background:none;border:0;padding:0;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sheet table{width:100%;border-collapse:collapse;table-layout:auto;font-size:12.5px}
.sheet th,.sheet td{border:1px solid var(--s-line);padding:8px 7px;text-align:left;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:middle}
.sheet thead th{background:var(--s-head);color:var(--s-ink-2);font:500 11px var(--sans);letter-spacing:0;text-transform:none;text-align:center;padding:5px}
.sheet thead th.new{background:var(--s-new);color:var(--s-new-ink)}
.sheet td:first-child,.sheet th:first-child{width:34px;background:var(--s-head);color:var(--s-ink-2);text-align:center;font-size:11px;font-weight:400}
.sheet .hdr-row td{font-weight:600}
.sheet .num{font:12px var(--mono)}
.sheet .c-row{width:34px}
@media (max-width:1279px){.sheet .hide-t{display:none}}
.sheet .num{padding:8px 6px;font-size:11.5px}
.sheet td.sel{box-shadow:inset 0 0 0 2px var(--s-sel)}
.sheet-bar .ref{font:500 11px var(--sans);color:var(--s-ink-2);padding-right:10px;border-right:1px solid var(--s-border)}
.st{display:inline-block;font:500 10.5px/1 var(--mono);letter-spacing:.02em;padding:4px 6px;border-radius:2px}
.sheet .st.ok{background:var(--s-ok-bg);color:var(--s-ok)}.sheet .st.low{background:var(--s-low-bg);color:var(--s-low)}.sheet .st.empty{background:var(--s-empty-bg);color:var(--s-empty)}
.st.ok{background:var(--ok-bg);color:var(--ok-ink)}.st.low{background:var(--low-bg);color:var(--low-ink)}.st.upd{background:var(--upd-bg);color:var(--upd-ink)}.st.del{background:var(--del-bg);color:var(--del-ink)}

.ba{padding:clamp(36px,5vw,56px) 0;border-bottom:1px solid var(--rule)}
.ba-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:0;border-left:1px solid var(--rule)}
.ba-item{padding:4px 26px 6px;border-right:1px solid var(--rule)}
.ba-name{font:500 .74rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 14px}
.ba-row{display:grid;grid-template-columns:minmax(0,1fr) 22px minmax(0,1fr);align-items:center;gap:8px}
.cell{display:block;font:.82rem/1.4 var(--sans);padding:9px 11px;border:1px solid var(--rule-2);background:var(--card-bg);min-height:60px;color:var(--ink-2)}
.cell.out{background:var(--out-bg);border-color:var(--out-line);color:var(--ink)}
.cell b{display:block;font-weight:600;color:var(--ink)}
.cell.mono{font:.78rem/1.4 var(--mono)}
.arrow{height:1.5px;background:var(--ink-3);position:relative}
.arrow::after{content:"";position:absolute;right:-1px;top:-4px;border:4.5px solid transparent;border-left:6px solid var(--ink-3);border-right:0}
@media (max-width:900px){.ba-grid{grid-template-columns:1fr;border-left:0}.ba-item{border-right:0;padding:18px 0;border-bottom:1px solid var(--rule)}.ba-item:last-child{border-bottom:0}}

.index-head{display:grid;grid-template-columns:1fr 2fr;gap:40px;align-items:end;padding-bottom:28px;border-bottom:2px solid var(--ink)}
.index-head .label{margin:0 0 12px}
.index-head h2{margin:0}
.entry{display:grid;grid-template-columns:110px minmax(0,1.25fr) minmax(0,1fr);gap:clamp(24px,4vw,56px);padding:48px 0;border-bottom:1px solid var(--rule);align-items:start}
.entry-no{font:300 4rem/1 var(--serif);color:var(--verm)}
.entry h3{font-size:clamp(2rem,3vw,2.5rem);font-weight:440;display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-bottom:14px}
.entry h3 a{color:inherit;text-decoration:none}
.entry h3 a:hover{color:var(--em)}
.entry h3 svg{width:34px;height:34px}
.tag{font:500 .7rem/1 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.entry p{color:var(--ink-2);max-width:36em}
.facts{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));margin:0 0 24px;border-top:1px solid var(--rule)}
.facts div{padding:12px 14px 0 0}
.facts dt{font:500 .68rem/1 var(--mono);letter-spacing:.11em;text-transform:uppercase;color:var(--ink-3);margin-bottom:7px}
.facts dd{margin:0;font-size:.92rem;line-height:1.45}
.more{font-weight:500;text-decoration:none;border-bottom:1px solid currentColor;padding-bottom:2px}
.entry-art{border:1px solid var(--rule-2);background:var(--card-bg);min-height:200px}
.map-art svg{width:100%}
.map-art .m-bg{fill:var(--map-bg)}.map-art .m-grid{stroke:var(--map-grid)}.map-art .m-hatch{stroke:var(--map-hatch)}
.map-art .m-route{stroke:var(--verm)}.map-art .m-pt{fill:var(--em)}.map-art .m-txt{fill:var(--ink-2);font:10px var(--mono)}
.cal-art{padding:14px;display:grid;gap:8px;align-content:start}
.cal-row{display:grid;grid-template-columns:88px minmax(0,1fr) auto;gap:12px;align-items:center;padding:11px 12px;background:var(--card-hi);border:1px solid var(--rule);border-left:3px solid var(--em);font-size:.88rem}
.cal-row .mono{font-size:.76rem;color:var(--ink-3)}
.cal-row.gone{border-left-color:var(--verm)}.cal-row.gone span:nth-child(2){text-decoration:line-through;color:var(--ink-3)}
.label-art{padding:16px;display:grid;grid-template-columns:1fr 1fr;gap:10px}
.lbl{background:var(--lbl-bg);border:1px dashed var(--lbl-line);border-radius:6px;padding:12px 14px;font:.8rem/1.45 var(--sans);color:var(--lbl-ink)}
.lbl b{display:block;font-weight:600}

.access{padding:clamp(64px,8vw,104px) 0;border-top:1px solid var(--rule)}
.access-head{display:grid;grid-template-columns:1.2fr 1fr;gap:48px;align-items:end;margin-bottom:36px}
.access-head p{color:var(--ink-2);margin:0}
.acc{border-top:2px solid var(--ink);background:var(--card-bg)}
.acc .row{display:grid;grid-template-columns:minmax(0,1.3fr) repeat(3,minmax(0,1fr));border-bottom:1px solid var(--rule)}
.acc .row>*{padding:15px 18px;font-size:.95rem;border-right:1px solid var(--rule);margin:0;display:flex;align-items:center;gap:10px}
.acc .row>*:last-child{border-right:0}
.acc .head>*{font:500 .74rem/1.2 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3)}
.acc .row>[role="rowheader"]{color:var(--ink);font-weight:500}
.acc .y::before,.acc .n::before,.acc .p::before{content:"";flex:none;width:8px;height:8px;border-radius:50%}
.acc .y::before{background:var(--em)}
.acc .n{color:var(--ink-3)}.acc .n::before{border:1.5px solid var(--ink-3);width:5px;height:5px}
.acc .p::before{background:var(--warn)}
.acc .lbl-m{display:none}
.fine{font-size:.86rem;color:var(--ink-3);margin:14px 0 0}

.principles{background:var(--band-bg);color:var(--band-ink);padding:clamp(72px,9vw,124px) 0}
.principles .label{color:var(--band-ink-3)}
.principles h2{color:var(--band-ink)}.principles h2 em{color:var(--band-accent)}
.pr-grid{display:grid;grid-template-columns:1fr 1.4fr;gap:clamp(40px,7vw,104px)}
.pr-intro>p:last-child{color:var(--band-ink-2);font-size:1.1rem;margin-top:22px;max-width:26em}
.ledger{list-style:none;margin:0;padding:0;border-top:1px solid var(--band-rule)}
.ledger li{display:grid;grid-template-columns:52px 1fr;gap:14px;padding:22px 0;border-bottom:1px solid var(--band-rule)}
.ln{font:italic 400 1.35rem/1.1 var(--serif);color:var(--band-accent)}
.ledger h3{font:600 1.04rem/1.35 var(--sans);color:var(--band-ink);margin-bottom:6px;letter-spacing:0}
.ledger p{margin:0;color:var(--band-ink-2);font-size:.97rem}
.ledger a{color:var(--band-ink)}

.price-table{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));border-left:1px solid var(--rule);border-top:2px solid var(--ink)}
.pcol{padding:32px 28px;border-right:1px solid var(--rule);border-bottom:1px solid var(--rule);background:var(--card-bg);display:flex;flex-direction:column}
.pcol.pro{background:var(--card-hi);box-shadow:inset 0 3px 0 var(--verm)}
.pname{font:500 .76rem/1.2 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3);margin:0 0 18px}
.pamt{font:400 3.8rem/1 var(--serif);margin:0 0 8px;letter-spacing:-.02em}
.pamt small{font:400 1rem var(--sans);color:var(--ink-3);margin-left:4px;letter-spacing:0}
.pnote{margin:0 0 20px;color:var(--ink-2);font-size:.95rem}
.pcol ul{margin:0 0 20px;padding:0;list-style:none;font-size:.95rem;flex:1}
.pcol li{padding:9px 0;border-top:1px dotted var(--rule-2)}
.pcol .more{align-self:flex-start;font-size:.95rem}
.pay-line{display:flex;align-items:center;gap:10px;margin:22px 0 0;font-size:.92rem;color:var(--ink-2)}
.pay-line svg{width:18px;height:18px;color:var(--em);flex:none}

.colophon{background:var(--bg-2);border-top:2px solid var(--ink);padding:clamp(64px,8vw,104px) 0}
.co-grid{display:grid;grid-template-columns:1.2fr 1fr;gap:clamp(40px,7vw,104px)}
.colophon .co-grid>div>p:last-child{color:var(--ink-2);max-width:32em;margin-top:20px}
.co-facts{margin:0;border-top:1px solid var(--rule-2)}
.co-facts div{display:grid;grid-template-columns:120px 1fr;gap:16px;padding:14px 0;border-bottom:1px solid var(--rule-2)}
.co-facts dt{font:500 .7rem/1.9 var(--mono);letter-spacing:.12em;text-transform:uppercase;color:var(--ink-3)}
.co-facts dd{margin:0}
.home-band{padding:clamp(56px,7vw,88px) 0 0}
.colophon+.home-band{padding-top:clamp(56px,7vw,88px)}

@media (max-width:980px){
  .hero-grid,.pr-grid,.co-grid,.access-head{grid-template-columns:1fr}
  .access-head{gap:14px}
  .entry{grid-template-columns:64px minmax(0,1fr)}
  .entry-art{grid-column:2}
  .entry-no{font-size:2.8rem}
  .index-head{grid-template-columns:1fr;gap:4px}
  .price-table{grid-template-columns:1fr}
}
@media (max-width:640px){
  body{font-size:16px}
  .entry{grid-template-columns:minmax(0,1fr);gap:16px;padding:36px 0}
  .entry-art{grid-column:1}
  .facts{grid-template-columns:1fr}
  .facts div{display:grid;grid-template-columns:84px 1fr;gap:10px;padding:10px 0;border-bottom:1px solid var(--rule)}
  .facts dt{margin:3px 0 0}
  .sheet table{table-layout:auto}
  .sheet .c-a,.sheet .c-b,.sheet .c-h{width:auto}
  .sheet .hide-m{display:none}
  .sheet th,.sheet td{padding:7px 6px;font-size:12px}
  .specimen{padding:14px 12px 12px}
  .specimen figcaption{flex-direction:column;gap:6px}
  .label-art{grid-template-columns:1fr}
  .ledger li{grid-template-columns:38px 1fr}
  .co-facts div{grid-template-columns:1fr;gap:2px}
  .acc{border-top:0;background:transparent;display:grid;gap:12px}
  .acc .head{display:none}
  .acc .row{grid-template-columns:1fr;border:1px solid var(--rule);background:var(--card-bg)}
  .acc .row>*{border-right:0;padding:10px 16px;border-bottom:1px solid var(--rule)}
  .acc .row>*:last-child{border-bottom:0}
  .acc .row>[role="rowheader"]{font-family:var(--serif);font-size:1.15rem;font-weight:500;padding-top:14px}
  .acc .lbl-m{display:inline;margin-left:auto;font:500 .68rem/1 var(--mono);letter-spacing:.1em;text-transform:uppercase;color:var(--ink-3);padding-left:12px}
  .ftr .wrap{grid-template-columns:1fr 1fr;gap:28px}
  .pcol{padding:28px 22px}
  .band{padding:28px 22px}
}
@media (prefers-reduced-motion:reduce){*{transition:none!important;scroll-behavior:auto!important}}
@media print{.hdr,.ftr,.skip,.theme-toggle{display:none}body{background:#fff;color:#000}}

/* ---- product shots: <picture> wrapper behaves like the old <img> */
picture.shot-pic{display:contents}
/* ---- mobile menu button + slide-down panel (only when the theme/menu script runs: html.js) */
.menu-btn{display:none;width:40px;height:40px;border:1px solid var(--rule-2);border-radius:50%;background:transparent;color:var(--ink);cursor:pointer;align-items:center;justify-content:center;padding:0}
.menu-btn:hover{background:var(--hover)}
.mb-bars{position:relative;display:block;width:16px;height:12px}
.mb-bars i{position:absolute;left:0;width:16px;height:1.5px;border-radius:1px;background:currentColor;transition:transform .2s ease,opacity .2s ease}
.mb-bars i:nth-child(1){top:0}.mb-bars i:nth-child(2){top:5.25px}.mb-bars i:nth-child(3){top:10.5px}
.menu-open .mb-bars i:nth-child(1){transform:translateY(5.25px) rotate(45deg)}
.menu-open .mb-bars i:nth-child(2){opacity:0}
.menu-open .mb-bars i:nth-child(3){transform:translateY(-5.25px) rotate(-45deg)}
@media (max-width:760px){
  .js .hdr .wrap{padding-bottom:10px;row-gap:0}
  .js .hdr .theme-toggle{order:2}
  .js .menu-btn:not([hidden]){display:inline-flex;order:3;margin-left:8px}
  .js .hdr .nav{order:4;display:grid;grid-template-columns:1fr;gap:0;margin:0 calc(var(--gutter) * -1);padding:0 var(--gutter);width:calc(100% + var(--gutter) * 2);
    overflow:hidden;max-height:0;visibility:hidden;border-top:0;-webkit-mask-image:none;mask-image:none;transition:max-height .28s ease,visibility 0s linear .28s}
  .js .hdr .nav::after{content:none}
  .js .hdr.menu-open .nav{max-height:70vh;visibility:visible;border-top:1px solid var(--rule);padding-top:6px;padding-bottom:14px;transition:max-height .28s ease}
  .js .hdr .nav a{display:block;padding:14px 2px;border-bottom:1px solid var(--rule);font-size:1.05rem}
  .js .hdr .nav a:last-child{border-bottom:0}
  .js .hdr .nav a[aria-current]{box-shadow:inset 3px 0 0 var(--verm);padding-left:14px;color:var(--ink)}
  .js .hdr .nav a[aria-current]::after{content:none}
  .js .hdr.menu-open .nav{margin-top:10px;margin-bottom:-10px}
}
@media (prefers-reduced-motion:reduce){.js .hdr .nav,.mb-bars i{transition:none!important}}
.band .btn-primary{background:var(--band-ink);color:var(--band-bg)}.band .btn-primary:hover{background:var(--band-ink-2);color:var(--band-bg)}
