/* Tagwright (thedigipimp.org) v1.0: its own design system. Paper + ink + one signal accent ("tag lime").
   Type: Funnel Display (display), Reddit Sans (text), Reddit Mono (links and tags). Self-hosted, OFL. */
@font-face{font-family:"Funnel Display";src:url(fonts/funnel-display-latin-700-normal.woff2) format("woff2");font-weight:700;font-display:swap}
@font-face{font-family:"Funnel Display";src:url(fonts/funnel-display-latin-800-normal.woff2) format("woff2");font-weight:800;font-display:swap}
@font-face{font-family:"Reddit Sans";src:url(fonts/reddit-sans-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Reddit Sans";src:url(fonts/reddit-sans-latin-400-italic.woff2) format("woff2");font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:"Reddit Sans";src:url(fonts/reddit-sans-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}
@font-face{font-family:"Reddit Mono";src:url(fonts/reddit-mono-latin-400-normal.woff2) format("woff2");font-weight:400;font-display:swap}
@font-face{font-family:"Reddit Mono";src:url(fonts/reddit-mono-latin-600-normal.woff2) format("woff2");font-weight:600;font-display:swap}

:root{
  --paper:#f5f3ec; --paper-2:#ece9df; --card:#fffefa; --ink:#13151a; --ink-2:#2b2f38; --mute:#5b6070; --line:#d9d5c8; --line-2:#c4bfae;
  --lime:#c8f04a; --lime-ink:#1d2400; --lime-soft:#eefbc4;
  --c-source:#0f7c78; --c-medium:#6a46c9; --c-campaign:#d2552f; --c-content:#9a6a14; --c-term:#4a5a72; --c-id:#7d3c64;
  --ok:#1e7246; --warn:#8a5300; --bad:#b0261b; --bad-soft:#fbe9e6; --warn-soft:#fbf1dc; --ok-soft:#e5f4ea;
  --f-display:"Funnel Display",ui-sans-serif,system-ui,sans-serif; --f-text:"Reddit Sans",ui-sans-serif,system-ui,-apple-system,"Segoe UI",sans-serif;
  --f-mono:"Reddit Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;
  --r:14px; --r-sm:9px; --shadow:0 1px 0 rgba(19,21,26,.04),0 12px 32px -18px rgba(19,21,26,.28);
  --gut:clamp(16px,4vw,40px); --max:1200px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{margin:0;background:var(--paper);color:var(--ink);font:400 1.0625rem/1.6 var(--f-text);overflow-x:hidden}
img,svg{max-width:100%}
a{color:var(--ink);text-decoration-thickness:1px;text-underline-offset:3px}
a:hover{text-decoration-thickness:2px}
:focus-visible{outline:3px solid var(--c-medium);outline-offset:2px;border-radius:4px}
.mono,code,textarea.mono,input.mono{font-family:var(--f-mono);font-size:.92em}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}
.skip{position:absolute;left:-999px;top:8px;background:var(--lime);color:var(--lime-ink);padding:8px 14px;border-radius:8px;z-index:50}
.skip:focus{left:12px}
.shell{max-width:var(--max);margin:0 auto;padding:0 var(--gut)}
.ico{width:1.15em;height:1.15em;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;vertical-align:-.2em;flex:none}

/* ---------- type ---------- */
.h1,.h2,.hero__h,.band__h{font-family:var(--f-display);font-weight:800;letter-spacing:-.02em;line-height:1.04;margin:0 0 .4em}
.h1{font-size:clamp(2.1rem,5vw,3.6rem)}
.h2{font-size:clamp(1.7rem,3.4vw,2.6rem)}
.h3{font-family:var(--f-display);font-weight:700;font-size:1.45rem;letter-spacing:-.01em;margin:0 0 .6em}
.h4{font-weight:600;font-size:1.05rem;margin:0 0 .5em}
.kicker{display:inline-flex;align-items:center;gap:.45em;font:600 .78rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.14em;color:var(--lime);margin:0 0 1.1rem}
.kicker--dark{color:var(--mute)}
.lede{font-size:clamp(1.05rem,1.6vw,1.22rem);color:var(--ink-2);max-width:62ch;margin:0 0 1rem}
.hl{background:var(--lime);padding:0 .14em;border-radius:.12em;-webkit-box-decoration-break:clone;box-decoration-break:clone}
.pill{display:inline-block;font:600 .7rem/1 var(--f-text);letter-spacing:.08em;text-transform:uppercase;background:var(--ink);color:var(--lime);padding:.38em .6em;border-radius:99px;vertical-align:.15em}

/* ---------- buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5em;font:600 1rem/1 var(--f-text);padding:.85em 1.25em;border-radius:999px;border:1.5px solid transparent;text-decoration:none;cursor:pointer;transition:transform .12s ease,background .12s ease}
.btn:hover{transform:translateY(-1px)}
.btn:active{transform:none}
.btn--lime{background:var(--lime);color:var(--lime-ink);border-color:var(--lime)}
.btn--lime:hover{background:#d6f76d}
.btn--ink{background:var(--ink);color:#fff;border-color:var(--ink)}
.btn--line{background:transparent;color:var(--ink);border-color:var(--ink)}
.btn--ghost{background:transparent;color:var(--mute);border-color:var(--line-2)}
.btn--danger{background:var(--bad);color:#fff;border-color:var(--bad)}
.btn--sm{font-size:.88rem;padding:.6em .95em}
.btn--lg{font-size:1.06rem;padding:1em 1.5em}
.arrow{font-weight:600;text-decoration:none;border-bottom:2px solid var(--lime);padding-bottom:2px}
.arrow::after{content:" \2192"}
.arrow--back::after{content:""}
.arrow--back::before{content:"\2190 "}

/* ---------- top bar ---------- */
.bar{position:sticky;top:0;z-index:20;background:rgba(19,21,26,.97);color:#fff;border-bottom:1px solid #2a2e37}
.bar__in{display:flex;align-items:center;gap:28px;min-height:64px}
.brand{display:inline-flex;align-items:center;gap:10px;color:#fff;text-decoration:none}
.brand__tag{width:32px;height:32px}
.brand__body{fill:var(--lime)}
.brand__hole{fill:var(--ink)}
.brand__line{stroke:var(--ink);stroke-width:2.6;stroke-linecap:round}
.brand__word{font:800 1.35rem/1 var(--f-display);letter-spacing:-.02em}
.bar__nav{display:none;gap:4px;margin-left:auto}
.bar__nav a{color:#c9ccd4;text-decoration:none;font-weight:600;font-size:.95rem;padding:.55em .8em;border-radius:8px}
.bar__nav a:hover{color:#fff;background:#232731}
.bar__nav a[aria-current]{color:#fff;box-shadow:inset 0 -2px 0 var(--lime);border-radius:0}
.bar__cta{display:none}

/* ---------- phone tab bar ---------- */
.tabbar{position:fixed;left:0;right:0;bottom:0;z-index:30;display:grid;grid-template-columns:repeat(5,1fr);background:var(--ink);border-top:1px solid #2a2e37;padding:6px 4px calc(6px + env(safe-area-inset-bottom))}
.tabbar a{display:flex;flex-direction:column;align-items:center;gap:3px;color:#aab0bc;text-decoration:none;font:600 .7rem/1.1 var(--f-text);padding:6px 2px;border-radius:10px;min-height:44px;justify-content:center}
.tabbar .ico{width:22px;height:22px}
.tabbar a[aria-current]{color:var(--lime);background:#1f232b}
body{padding-bottom:76px}

@media (min-width:900px){
  .bar__nav{display:flex}
  .bar__cta{display:inline-flex;font-size:.9rem;padding:.7em 1.1em}
  .tabbar{display:none}
  body{padding-bottom:0}
}

/* ---------- hero ---------- */
.hero{background:var(--ink);color:#f2f3f5;padding:clamp(40px,7vw,96px) 0 clamp(48px,7vw,104px);position:relative;overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(60% 80% at 92% 10%,rgba(200,240,74,.16),transparent 60%),repeating-linear-gradient(90deg,rgba(255,255,255,.035) 0 1px,transparent 1px 72px);pointer-events:none}
.hero__in{position:relative;display:grid;gap:40px}
.hero__h{font-size:clamp(2.4rem,6vw,4.6rem);line-height:1.12;color:#fff;margin-bottom:.4em}
.hero__h .hl{color:var(--ink)}
.hero__lede{font-size:clamp(1.08rem,1.7vw,1.28rem);color:#c9ccd4;max-width:56ch;margin:0 0 1.4rem}
.hero__lede .mono{color:var(--lime)}
.hero__points{list-style:none;padding:0;margin:0;display:grid;gap:.6rem;color:#dfe2e8}
.hero__points li{padding-left:1.6em;position:relative}
.hero__points li::before{content:"";position:absolute;left:0;top:.45em;width:.85em;height:.6em;border-left:2.5px solid var(--lime);border-bottom:2.5px solid var(--lime);transform:rotate(-45deg)}
.bench{background:var(--card);color:var(--ink);border-radius:20px;padding:clamp(18px,2.6vw,30px);box-shadow:0 30px 60px -30px rgba(0,0,0,.6),0 0 0 1px rgba(255,255,255,.06)}
.bench__label{display:flex;align-items:center;gap:.5em;font:600 .8rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin:0 0 16px}
@media (min-width:980px){.hero__in{grid-template-columns:1.08fr .92fr;align-items:center;gap:64px}}

/* ---------- forms ---------- */
.builder{display:grid;gap:14px 16px;grid-template-columns:1fr}
.field{display:grid;gap:6px;min-width:0}
.field label,.checker label,.filter label{font-weight:600;font-size:.92rem;display:flex;align-items:center;gap:.45em;flex-wrap:wrap}
.field small{display:block;width:100%;font-weight:400;color:var(--mute);font-size:.82rem}
input[type=text],input[type=search],textarea,select{width:100%;font:inherit;font-size:1rem;color:var(--ink);background:#fff;border:1.5px solid var(--line-2);border-radius:var(--r-sm);padding:.72em .85em;min-height:46px}
textarea{resize:vertical;line-height:1.45}
input:focus,textarea:focus,select:focus{border-color:var(--ink);outline:3px solid var(--lime);outline-offset:0}
.field--source input,.field--source select{border-left:5px solid var(--c-source)}
.field--medium input,.field--medium select{border-left:5px solid var(--c-medium)}
.field--campaign input{border-left:5px solid var(--c-campaign)}
.dot{display:inline-block;width:.7em;height:.7em;border-radius:3px;background:var(--mute);flex:none}
.dot--source{background:var(--c-source)}.dot--medium{background:var(--c-medium)}.dot--campaign{background:var(--c-campaign)}
.dot--content{background:var(--c-content)}.dot--term{background:var(--c-term)}.dot--id{background:var(--c-id)}
.style{border:1.5px dashed var(--line-2);border-radius:var(--r-sm);padding:10px 14px;margin:0;display:flex;flex-wrap:wrap;gap:6px 18px}
.style legend{font-weight:600;font-size:.92rem;padding:0 6px}
.style label{font-size:.95rem;display:inline-flex;gap:.4em;align-items:center}
.builder__go,.checker__go{display:flex;flex-wrap:wrap;align-items:center;gap:12px 18px;margin-top:4px}
.builder__more{color:var(--mute);font-size:.92rem}
@media (min-width:640px){
  .builder{grid-template-columns:repeat(3,1fr)}
  .builder .field--wide,.builder .style,.builder .builder__go{grid-column:1/-1}
  .builder--compact{grid-template-columns:repeat(3,1fr)}
}
.hero .builder--compact{grid-template-columns:1fr}
@media (min-width:640px){.hero .builder--compact{grid-template-columns:1fr 1fr}.hero .builder--compact .field--campaign{grid-column:1/-1}}

/* ---------- anatomy strip (signature) ---------- */
.anatomy{display:block;overflow:hidden;max-width:100%;font-family:var(--f-mono);font-size:clamp(.86rem,1.25vw,1.02rem);line-height:2.1;background:var(--card);border:1.5px solid var(--ink);border-radius:var(--r);padding:18px 20px;word-break:break-all;overflow-wrap:anywhere;box-shadow:6px 6px 0 var(--ink)}
.anatomy--labels{padding-top:26px;line-height:2.9}
.seg{border-radius:6px;padding:.18em .1em}
.seg--base{color:var(--ink-2)}
.seg--join,.seg--q,.seg--frag{color:var(--mute)}
.seg--frag{background:var(--paper-2)}
.seg[data-label]{position:relative;padding:.22em .35em}
.seg[data-label]::before{content:attr(data-label);position:absolute;left:.35em;max-width:9em;overflow:hidden;top:-1.55em;font:600 .62rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.1em;white-space:nowrap;color:inherit}
.seg__k{opacity:.62}
.seg--source{background:#d8f0ee;color:#08514e}.seg--medium{background:#e7e0fb;color:#43278f}.seg--campaign{background:#fbe1d8;color:#8f3114}
.seg--content{background:#f5e8cc;color:#6a470b}.seg--term{background:#e1e6ee;color:#2e3a4d}.seg--id{background:#f2dceb;color:#5c2848}

/* ---------- anatomy section ---------- */
.anat{padding:clamp(56px,8vw,110px) 0 clamp(40px,6vw,80px)}
.anat__head{max-width:760px;margin-bottom:34px}
.anat__legend{list-style:none;padding:0;margin:34px 0 0;display:grid;gap:14px 28px;grid-template-columns:1fr}
.anat__legend li{display:block;color:var(--ink-2)}
.anat__legend .dot{margin-right:.45em}
.anat__fine{color:var(--mute);margin-top:24px;max-width:70ch}
@media (min-width:760px){.anat__legend{grid-template-columns:1fr 1fr}}
@media (min-width:1100px){.anat__legend{grid-template-columns:repeat(3,1fr)}}

/* ---------- benches ---------- */
.benches{padding:clamp(40px,6vw,90px) 0;border-top:1px solid var(--line)}
.benches__grid{display:grid;gap:18px;margin-top:30px}
.panel{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:28px 26px 30px;display:flex;flex-direction:column;gap:8px}
.panel p{margin:0 0 10px;color:var(--ink-2)}
.panel .arrow{margin-top:auto;align-self:flex-start}
.panel__n{font:800 .9rem/1 var(--f-display);color:var(--mute)!important;letter-spacing:.06em}
.panel__h{font:800 1.9rem/1 var(--f-display);letter-spacing:-.02em;margin:0 0 6px}
.panel--ink{background:var(--ink);border-color:var(--ink);color:#fff}
.panel--ink p{color:#c9ccd4}
.panel--ink .arrow{color:#fff}
@media (min-width:860px){.benches__grid{grid-template-columns:repeat(3,1fr)}}

/* ---------- channel preview ---------- */
.preview{padding:clamp(48px,7vw,100px) 0;background:var(--paper-2)}
.preview__in{display:grid;gap:32px;align-items:center}
.preview p{color:var(--ink-2);max-width:56ch}
.ctable,.ptable,.btable,.rtable,.stable{width:100%;border-collapse:collapse;background:var(--card);border-radius:var(--r);overflow:hidden;font-size:.97rem}
.ctable th,.ctable td,.ptable th,.ptable td,.btable th,.btable td,.rtable th,.rtable td,.stable th,.stable td{text-align:left;padding:.75em .9em;border-bottom:1px solid var(--line);vertical-align:top}
.ctable thead th,.ptable thead th,.btable thead th,.rtable thead th,.stable thead th{font:600 .74rem/1.2 var(--f-text);text-transform:uppercase;letter-spacing:.1em;color:var(--mute);background:var(--paper)}
.ctable td:last-child{font-weight:600}
.ctable tr.is-bad td:last-child{color:var(--bad)}
@media (min-width:900px){.preview__in{grid-template-columns:.9fr 1.1fr;gap:64px}}

/* ---------- lime pricing band ---------- */
.band{background:var(--lime);color:var(--lime-ink);padding:clamp(48px,7vw,96px) 0}
.band__in{display:grid;gap:32px}
.band__h{font-size:clamp(1.9rem,4vw,3.1rem)}
.band__copy p{font-size:1.1rem;max-width:56ch}
.band__prices{display:grid;gap:10px;align-content:start}
.band__p{display:flex;align-items:baseline;gap:.6em;margin:0;border-bottom:1.5px solid rgba(29,36,0,.25);padding-bottom:10px}
.band__amt{font:800 2.2rem/1 var(--f-display);letter-spacing:-.02em;min-width:4.2ch}
.band__preview{margin:8px 0 12px;background:rgba(255,255,255,.55);border-radius:var(--r-sm);padding:12px 14px}
.band .btn{justify-self:start}
@media (min-width:900px){.band__in{grid-template-columns:1.2fr .8fr;gap:64px}}

/* ---------- faq ---------- */
.faq{padding:clamp(48px,7vw,96px) 0}
.faq__in{display:grid;gap:24px}
.faq details{border-top:1.5px solid var(--ink);padding:16px 0}
.faq details:last-child{border-bottom:1.5px solid var(--ink)}
.faq summary{font:700 1.2rem/1.3 var(--f-display);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px}
.faq summary::after{content:"+";font-weight:800}
.faq details[open] summary::after{content:"\2013"}
.faq details p{margin:.7em 0 0;color:var(--ink-2);max-width:68ch}
@media (min-width:900px){.faq__in{grid-template-columns:.8fr 1.2fr;gap:64px}}

/* ---------- inner pages ---------- */
.page-head{padding:clamp(36px,6vw,80px) 0 clamp(24px,4vw,40px)}
.page-head--ink{background:var(--ink);color:#fff;padding-bottom:clamp(40px,6vw,80px)}
.page-head--ink .lede{color:#c9ccd4}
.page-head--msg{min-height:42vh}
.preview-note{background:var(--lime-soft);border:1.5px solid var(--lime);border-radius:var(--r-sm);padding:14px 16px;max-width:70ch}
.work{display:grid;gap:28px;padding-bottom:72px}
.work__form,.checker{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:clamp(18px,2.5vw,28px);box-shadow:var(--shadow);display:grid;gap:12px;align-self:start}
.work__out{display:grid;gap:22px;align-content:start;min-width:0}
@media (min-width:1080px){.work{grid-template-columns:minmax(0,1fr) minmax(0,1fr);gap:40px}}
.checker--bulk{margin-bottom:22px}
.empty{border:2px dashed var(--line-2);border-radius:var(--r);padding:28px;color:var(--mute)}
.empty__h{font:700 1.25rem/1.2 var(--f-display);color:var(--ink);margin:0 0 6px}
.empty--line{padding:16px}
.alert{background:var(--bad-soft);border:1.5px solid var(--bad);border-radius:var(--r);padding:16px 18px}
.alert__h{font-weight:700;margin:0 0 8px;color:var(--bad)}
.after{color:var(--mute);margin:0}

/* result */
.result{display:grid;gap:16px;min-width:0}
.result__head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.result__h{font:700 1.35rem/1.2 var(--f-display);margin:0}
.result__raw-l{font-size:.85rem;color:var(--mute);font-weight:600}
.result__raw{min-height:0;background:var(--paper);font-size:.9rem}
.result__grid{display:grid;gap:16px}
.result__k{font:600 .74rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.12em;color:var(--mute);margin:0 0 8px}
@media (min-width:700px){.result__grid{grid-template-columns:.8fr 1.2fr}}
.channel{background:var(--ink);color:#fff;border-radius:var(--r);padding:18px 20px}
.channel__k{font:600 .72rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.12em;color:#9ea4b0;margin:0 0 10px}
.channel__v{font:800 1.75rem/1.05 var(--f-display);color:var(--lime);margin:0 0 10px;letter-spacing:-.01em}
.channel__rule{font-size:.93rem;color:#d4d7de;margin:0}
.channel__fine{font-size:.85rem;color:#aab0bc;margin:10px 0 0}
.channel__fine a{color:#fff}
.findings{list-style:none;margin:0;padding:0;display:grid;gap:8px}
.finding{display:grid;grid-template-columns:auto auto 1fr;gap:8px;align-items:start;padding:10px 12px;border-radius:var(--r-sm);font-size:.95rem;margin:0}
.finding .ico{width:18px;height:18px;margin-top:.15em}
.finding__lvl{font:600 .72rem/1.9 var(--f-text);text-transform:uppercase;letter-spacing:.08em}
.finding--error{background:var(--bad-soft);color:#5e140e}.finding--error .finding__lvl,.finding--error .ico{color:var(--bad)}
.finding--warn{background:var(--warn-soft);color:#4a2d00}.finding--warn .finding__lvl,.finding--warn .ico{color:var(--warn)}
.finding--ok{background:var(--ok-soft);color:#0f3d25}.finding--ok .finding__lvl,.finding--ok .ico{color:var(--ok)}
p.finding{grid-template-columns:auto 1fr}

/* point-of-use price */
.meter{display:grid;gap:4px 18px;border-top:2px solid var(--ink);padding:14px 0 0;margin-top:6px}
.meter__what{margin:0;color:var(--ink-2);font-size:.95rem}
.meter__price{margin:0;font-weight:600}
.meter__price strong{background:var(--lime);padding:.05em .35em;border-radius:4px}
.meter__link{font-size:.9rem;color:var(--mute)}
@media (min-width:760px){.meter{grid-template-columns:1fr auto;align-items:end}.meter__link{grid-column:2;grid-row:1/3;align-self:center}}

/* tables that may be wide */
.scroller{overflow-x:auto;max-width:100%;border-radius:var(--r);border:1px solid var(--line);margin:16px 0}
.btable{min-width:760px}
.btable tr.is-bad td:first-child{box-shadow:inset 4px 0 0 var(--bad)}
.btable tr.is-warn td:first-child{box-shadow:inset 4px 0 0 var(--warn)}
.btable tr.is-ok td:first-child{box-shadow:inset 4px 0 0 var(--ok)}
.btable__link{word-break:break-all;max-width:360px}
.rtable{min-width:560px}
.rtable th[scope=row]{white-space:nowrap}

/* ---------- Tag Book ---------- */
.split{display:grid;gap:36px}
@media (min-width:960px){.split{grid-template-columns:1.2fr .8fr;align-items:end;gap:64px}}
.start{margin-top:24px}
.start__fine{color:#aab0bc;font-size:.92rem;margin:12px 0 0}
.ticks{list-style:none;padding:0;margin:0;display:grid;gap:14px}
.ticks li{border-left:3px solid var(--lime);padding:2px 0 2px 14px;color:#d4d7de}
.ticks strong{color:#fff;display:block}
.bookhead{padding:clamp(28px,5vw,56px) 0 20px}
.keybox{background:var(--card);border:1.5px solid var(--ink);border-radius:var(--r);padding:16px 18px;display:grid;gap:8px;max-width:820px;margin:8px 0 22px}
.keybox--new{background:var(--lime-soft);border-color:var(--ink);box-shadow:6px 6px 0 var(--ink)}
.keybox__h{font-weight:700;margin:0}
.keybox__url{margin:0;word-break:break-all;font-size:.98rem}
.keybox__fine{margin:0;color:var(--mute);font-size:.88rem}
.keybox .btn{justify-self:start}
.stats{display:flex;flex-wrap:wrap;gap:12px;margin:0}
.stats div{background:var(--card);border:1px solid var(--line);border-radius:var(--r-sm);padding:10px 16px;min-width:120px}
.stats dt{font:600 .7rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.12em;color:var(--mute)}
.stats dd{margin:6px 0 0;font:800 1.6rem/1 var(--f-display)}
.stats small{font:400 .8rem var(--f-text);color:var(--mute)}
.stats .is-bad dd{color:var(--bad)}
.flash{background:var(--ok-soft);color:#0f3d25;border-radius:var(--r-sm);padding:10px 14px;margin:16px 0 0;font-weight:600}
.booklay{display:grid;gap:22px;padding-bottom:80px}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:clamp(18px,2.5vw,28px);box-shadow:var(--shadow);display:grid;gap:16px;min-width:0}
.card__head{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap}
.card__head .h3{margin:0}
.card__tools{display:flex;gap:8px}
.card--danger{border-color:#e7b9b3}
@media (min-width:1080px){.booklay{grid-template-columns:minmax(0,1.05fr) minmax(0,.95fr)}#build{grid-row:span 2}#ledger{grid-column:2}}
.filter{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.filter input,.filter select{flex:1 1 180px;width:auto}
.ledger{list-style:none;margin:0;padding:0;display:grid}
.ledger__row{display:grid;gap:10px;padding:14px 0;border-top:1px solid var(--line)}
.ledger__main{min-width:0}
.ledger__tags{display:flex;flex-wrap:wrap;gap:6px;margin:0 0 6px}
.tagchip{font:600 .78rem/1 var(--f-mono);padding:.4em .55em;border-radius:6px}
.tagchip--source{background:#d8f0ee;color:#08514e}.tagchip--medium{background:#e7e0fb;color:#43278f}.tagchip--campaign{background:#fbe1d8;color:#8f3114}.tagchip--content{background:#f5e8cc;color:#6a470b}
.ledger__url{margin:0;word-break:break-all;font-size:.86rem;color:var(--ink-2)}
.ledger__meta{margin:4px 0 0;font-size:.82rem;color:var(--mute)}
.ledger__act{display:flex;gap:8px;align-items:center}
.ledger__act form{margin:0}
@media (min-width:640px){.ledger__row{grid-template-columns:1fr auto;align-items:start}}
.rules{display:grid;gap:12px}
.drift{border-top:1px solid var(--line);padding-top:14px}
.driftlist{list-style:none;padding:0;margin:0;display:grid;gap:8px;font-size:.9rem}
.driftlist li{display:grid;gap:2px;background:var(--warn-soft);border-radius:var(--r-sm);padding:8px 10px;word-break:break-all}
.del{display:grid;gap:12px}
.del label{display:flex;gap:.5em;align-items:flex-start}

/* campaign sheet (print) */
.sheet{padding:28px 0 60px}
.sheet__head{border-bottom:3px solid var(--ink);margin:18px 0 12px;padding-bottom:10px}
.sheet__brand{font:600 .78rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.14em;color:var(--mute);margin:0 0 8px}
.stable{font-size:.9rem}
.stable__url{word-break:break-all}
.sheet .scroller{border:0}
@media print{
  .bar,.tabbar,.foot,.sheet__no-print,.skip{display:none!important}
  body{background:#fff;padding:0;font-size:10pt}
  .stable{border-radius:0}.stable th,.stable td{padding:4pt 5pt}
}

/* ---------- guide / prose ---------- */
.guide{display:grid;gap:28px;padding-bottom:80px}
.toc{display:flex;flex-wrap:wrap;gap:8px;align-self:start}
.toc a{font-size:.9rem;font-weight:600;text-decoration:none;border:1.5px solid var(--line-2);border-radius:99px;padding:.4em .8em;background:var(--card)}
@media (min-width:1000px){.guide{grid-template-columns:220px minmax(0,1fr);gap:56px}.toc{position:sticky;top:88px;flex-direction:column}.toc a{border-radius:8px}}
.prose{max-width:76ch;min-width:0}
.prose--narrow{padding-bottom:80px}
.prose h2{font:800 1.7rem/1.15 var(--f-display);letter-spacing:-.01em;margin:2em 0 .6em;scroll-margin-top:90px}
.prose h2:first-child{margin-top:0}
.prose li{margin:.35em 0}
.defs dt{font-weight:600;display:flex;align-items:center;gap:.5em;margin-top:1em}
.defs dd{margin:.25em 0 0 1.2em;color:var(--ink-2)}
.patterns code{background:var(--paper-2);padding:.1em .35em;border-radius:5px;word-break:break-all}
.srcs dt{font-weight:600;margin-top:.8em}
.srcs dd{margin:.2em 0 0;color:var(--ink-2);font-size:.9rem}
.not-google{color:var(--mute);font-size:.9rem}

/* pricing */
.plans{display:grid;gap:18px;padding-bottom:40px}
.plan{background:var(--card);border:1px solid var(--line);border-radius:var(--r);padding:28px;display:grid;gap:8px;align-content:start}
.plan--pro{background:var(--ink);color:#fff;border-color:var(--ink);box-shadow:8px 8px 0 var(--lime)}
.plan__h{font:700 1.3rem/1 var(--f-display);margin:0}
.plan__amt{font:800 3rem/1 var(--f-display);letter-spacing:-.03em;margin:8px 0 0}
.plan__amt span{font:400 1rem var(--f-text);color:var(--mute);letter-spacing:0}
.plan--pro .plan__amt span,.plan--pro .plan__alt{color:#aab0bc}
.plan__alt{margin:0;color:var(--mute)}
.plan__list{padding-left:1.1em;margin:10px 0 0}
.plan__note{margin:14px 0 0;padding-top:12px;border-top:1px dashed var(--line-2);color:var(--ink-2);font-size:.95rem;line-height:1.45}
.plan__note strong{font-weight:700}
.plan--pro .plan__note{border-top-color:#4a4f5c;color:#d5d9e0}
@media (min-width:900px){.plans{grid-template-columns:1fr 1.15fr 1fr;align-items:start}}

/* ---------- footer ---------- */
.foot{background:var(--ink);color:#c9ccd4;padding:56px 0 24px;margin-top:0}
.foot a{color:#fff}
.foot__grid{display:grid;gap:28px}
.foot__word{font:800 1.8rem/1 var(--f-display);color:#fff;margin:0 0 6px}
.foot__line{color:var(--lime);margin:0 0 10px;font-weight:600}
.foot__small{font-size:.9rem;margin:0}
.foot__col{display:grid;gap:8px;align-content:start}
.foot__col a{text-decoration:none;font-size:.95rem}
.foot__col a:hover{text-decoration:underline}
.foot__h{font:600 .72rem/1 var(--f-text);text-transform:uppercase;letter-spacing:.14em;color:#8a90a0;margin:0 0 4px}
.foot .not-google{color:#aab0bc;margin:0}
.foot__base{display:flex;flex-wrap:wrap;justify-content:space-between;gap:10px;border-top:1px solid #2a2e37;margin-top:36px;padding-top:18px;font-size:.88rem}
.foot__base p{margin:0}
@media (min-width:860px){.foot__grid{grid-template-columns:1.4fr 1fr 1fr 1.4fr}}

@media (prefers-reduced-motion:reduce){*{transition:none!important}}

/* ---------- v1.1.0: AdEngine banner (adengine.us) ----------
   One labelled slot between the main content and the footer, on home, guide, pricing, about and the empty builder and
   checker only. The label and the reserved height are on the <ins>, so when tag.js (or ae-size.js) hides a slot it cannot
   fill, the label and the space go with it (and the wrapper's own spacing with :has). 110px = 16px label + 4px gap + 90px
   banner; 270px on phones (300x250). The pages already end with their own bottom padding, so the slot adds space only
   below, before the dark footer. display stays in this file and is never !important: tag.js hides a slot with
   style.display='none'. The label follows the table-heading style (Reddit Sans 600, capitals) in --mute (5.6:1 on paper). */
.ae-slot{padding:0 var(--gut) clamp(48px,7vw,88px)}
.ae-slot:has(> ins.adengine[style*="display: none"]){display:none}
.ae-slot ins.adengine{display:block;max-width:728px;min-height:110px;margin:0 auto;text-align:center;text-decoration:none}
.ae-slot ins.adengine::before{content:"Advertisement";display:block;margin-bottom:4px;font:600 11px/16px var(--f-text);letter-spacing:.1em;text-indent:.1em;text-transform:uppercase;color:var(--mute)}
.ae-slot ins.adengine a{display:inline-block;vertical-align:top}
@media (max-width:767px){.ae-slot ins.adengine{max-width:300px;min-height:270px}}
@media print{.ae-slot{display:none}}
