/* Utility classes replacing style="..." attributes, so style-src can drop
 * 'unsafe-hashes'. The uN block was produced once by a mechanical transform;
 * the gN block below is hand-maintained and used by the page generators.
 * ADD A RULE HERE rather than reintroducing a style attribute — a style
 * attribute would need a CSP hash, and check-no-style-attrs.js will fail.
 * These replace style="..." attributes so style-src can drop 'unsafe-hashes'.
 * The class is repeated three times purely for specificity: it must outrank
 * ordinary authored rules the way an inline style did, while still LOSING to
 * an inline style set later by JS (el.style.x = ...). !important would win
 * that fight and break every runtime override, so it is deliberately absent.
 */
.u1.u1.u1{background:#0d7377;color:#fff;border:none;border-radius:6px;padding:8px 16px;font-size:.83rem;font-weight:600;cursor:pointer;font-family:'DM Sans',sans-serif}
.u2.u2.u2{background:#fff8e1}
.u3.u3.u3{background:#fff8e1;border-left:4px solid #8a5a00;border-radius:0 6px 6px 0;padding:14px 18px;font-size:.95rem;line-height:1.6;margin:24px 0}
.u4.u4.u4{background:none;border:none;color:#92400e;font-size:.8rem;text-decoration:underline;cursor:pointer;font-family:'DM Sans',sans-serif}
.u5.u5.u5{background:transparent;color:#fff;font-weight:500}
.u6.u6.u6{background:var(--bg)}
.u7.u7.u7{background:var(--bg);padding:64px 24px}
.u8.u8.u8{background:var(--white);padding:56px 24px}
.u9.u9.u9{border-color:var(--teal);border-width:2px}
.u10.u10.u10{border:1px solid #dfe9e7;padding:0.75rem;text-align:left}
.u11.u11.u11{border:1px solid #dfe9e7;padding:0.75rem;text-align:left;background:#f2f7f6;font-weight:700}
.u12.u12.u12{color:rgba(255,255,255,.2)}
.u13.u13.u13{color:rgba(255,255,255,.6);text-decoration:none;margin:0 8px}
.u14.u14.u14{color:var(--accent);font-weight:600}
.u15.u15.u15{color:var(--amber)}
.u16.u16.u16{color:var(--muted)}
.u17.u17.u17{color:var(--muted);font-size:.85rem;cursor:pointer}
.u18.u18.u18{color:var(--muted);font-size:.875rem}
.u19.u19.u19{color:var(--teal)}
.u20.u20.u20{color:var(--teal);font-weight:600}
.u21.u21.u21{color:var(--teal);font-weight:600;cursor:pointer}
.u22.u22.u22{color:var(--teal);font-weight:600;font-size:.9rem;text-decoration:none}
.u23.u23.u23{font-family:'DM Serif Display',serif;font-size:1.3rem}
.u24.u24.u24{font-family:'DM Serif Display',serif;font-size:1.4rem;margin-bottom:6px}
.u25.u25.u25{font-family:'DM Serif Display',serif;font-size:1.5rem;margin-bottom:8px}
.u26.u26.u26{font-size:.72rem;color:var(--faint);margin-top:12px;line-height:1.6}
.u27.u27.u27{font-size:.72rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--teal);margin-bottom:12px}
.u28.u28.u28{font-size:.75rem;color:var(--muted)}
.u29.u29.u29{font-size:.75rem;color:var(--muted);text-align:center;margin-top:14px}
.u30.u30.u30{font-size:.78rem;color:var(--muted);margin:14px 0 0;line-height:1.6}
.u31.u31.u31{font-size:.7rem;color:var(--muted);margin-top:10px}
.u32.u32.u32{font-size:.8125rem;color:var(--muted);text-align:center;margin-top:12px}
.u33.u33.u33{font-size:.82rem;color:var(--muted)}
.u34.u34.u34{font-size:.82rem;color:var(--muted);margin-bottom:20px}
.u35.u35.u35{font-size:.875rem;color:var(--muted);margin-bottom:4px}
.u36.u36.u36{font-size:.875rem;font-weight:600;margin-bottom:10px}
.u37.u37.u37{font-size:.8rem;color:var(--muted)}
.u38.u38.u38{font-size:.9rem;color:var(--ink);font-weight:500;margin-bottom:12px}
.u39.u39.u39{font-size:1.4rem}
.u40.u40.u40{font-size:11px;color:rgba(255,255,255,.35);margin:0 0 10px;text-transform:uppercase;letter-spacing:.12em}
.u41.u41.u41{font-size:13px;line-height:1.9;margin:0}
.u42.u42.u42{font-weight:600;font-size:.875rem;color:var(--ink)}
.u43.u43.u43{margin-bottom:6px}
.u44.u44.u44{margin-top:10px}
.u45.u45.u45{margin-top:12px}
.u46.u46.u46{margin-top:20px}
.u47.u47.u47{margin-top:28px}
.u48.u48.u48{margin-top:6px}
.u49.u49.u49{margin:12px 0}
.u50.u50.u50{margin:22px 0 0}
.u51.u51.u51{margin:8px 0 0}
.u52.u52.u52{padding:12px 20px;border:1.5px solid rgba(13,115,119,.3);border-radius:8px}
.u53.u53.u53{text-align:center}
.u54.u54.u54{text-align:center;color:var(--ink);font-size:1.6rem;margin:0 0 8px}
.u55.u55.u55{text-align:center;margin-bottom:32px}
.u56.u56.u56{text-align:center;margin:28px 0 0}
.u57.u57.u57{text-align:left;background:var(--white);border:1px solid var(--rule);border-radius:12px;padding:24px 26px;margin:12px auto 0;box-shadow:var(--shadow)}
.u58.u58.u58{text-align:right}

/* --- used by .github/scripts generators --- */
.g1.g1.g1{width:100%;border-collapse:collapse;margin:1.5rem 0}
.g2.g2.g2{border:1px solid #dfe9e7;padding:0.75rem;text-align:left;background:#f2f7f6;font-weight:700}
.g3.g3.g3{border:1px solid #dfe9e7;padding:0.75rem;text-align:left}
.g4.g4.g4{background:transparent;color:#fff;font-weight:500}
.g5.g5.g5{margin:12px 0}
/* No .g6-.g9 here: 0c08f1c minted TWO names for the same four rules — the
   codemod wrote .u43/.u44/.u46/.u48 into the tool pages while the same commit
   hand-edited generate-tool-pages.js to emit .g6-.g9. The generator was never
   re-run, so the duplicates sat unnoticed and made the generated pages look
   different from the committed ones. generate-tool-pages.js emits the uNN names
   now (same rules, and index.html already uses u44/u46/u48). Do not re-add. */

/* Related-guides block on blog posts. Added 2026-09-01 for internal linking:
   six posts — including the UB-04 guide, this site's best performer on Bing —
   had NO inbound link from any content page, so their only crawl path was the
   /blog/ index and the sitemap. Classes, not style attributes: a style="..."
   here would force 'unsafe-hashes' back into style-src (check-no-style-attrs.js
   fails the build on one). */
.related-guides{margin:32px 0 0;padding:20px 22px;border:1px solid #d7e3e0;border-radius:10px;background:#f6faf9}
.related-guides h2{font-size:1rem;margin:0 0 10px;color:#123}
.related-guides ul{margin:0;padding-left:20px}
.related-guides li{margin:6px 0;font-size:.9rem;line-height:1.5}

/* Post-purchase statement-descriptor note (issue #79). Shown once, on the
   report the purchase paid for — not on every later audit. */
.stmt-note{margin:14px 0 0;font-size:.82rem;color:var(--muted,#4a5c5b);text-align:center;line-height:1.55}
.stmt-note strong{color:var(--ink,#10201f);white-space:nowrap}

/* "Embed this on your site" block (generate-tool-pages.js embedBlock). */
.embed-box{margin:36px 0 24px;padding:22px 24px;border:1px solid var(--rule,#dfe9e7);border-radius:12px;background:var(--mint,#f2f7f6)}
.embed-box h2{font-size:19px;margin:0 0 6px}
.embed-box p{font-size:15px;margin:0 0 12px}
.embed-code{display:block;width:100%;min-height:150px;padding:10px 12px;font:12px/1.5 ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;color:#10201f;background:#fff;border:1px solid #c9d8d5;border-radius:8px;resize:vertical}
.embed-box .embed-actions{margin:10px 0 0;display:flex;align-items:center;gap:12px}
.embed-copy{font:inherit;font-size:14px;font-weight:600;padding:8px 18px;border-radius:7px;border:1px solid #0d7377;background:#fff;color:#0d7377;cursor:pointer}
.embed-copy:hover{background:#f2f7f6}
.embed-status{font-size:14px;color:#095c5f}
