/*
 * SEOpeck "Shadow Board" design system.
 *
 * The site is a tool wall: a pegboard ground, charcoal foam for the header/footer/drawer, and every tool
 * seated in its own cut-out pocket. Each category board reveals its own coloured under-foam (--under) in the
 * icon wells. The page gets calmer the deeper you go: pegboard on the homepage, a pegboard band on category
 * pages, a plain bench on tool pages.
 *
 * Loaded after app.css (Bootstrap 5 + the old theme), all.min.css and additional.css. Tool UIs keep their
 * Bootstrap/old-theme classes; the "Tool internals" section restyles those shared classes for every tool.
 * Light and dark themes: html[data-theme] (set before paint by the inline script in layouts/main).
 */

/* ---------- Font: Archivo (SIL OFL, public/fonts/archivo/OFL.txt), variable width 62-125 and weight 100-900 ---------- */
@font-face {
  font-family: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(../fonts/archivo/archivo-latin.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: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(../fonts/archivo/archivo-latin-ext.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: "Archivo";
  font-style: normal;
  font-weight: 100 900;
  font-stretch: 62% 125%;
  font-display: swap;
  src: url(../fonts/archivo/archivo-vietnamese.woff2) format("woff2");
  unicode-range: U+0102-0103, U+0110-0111, U+0128-0129, U+0168-0169, U+01A0-01A1, U+01AF-01B0, U+0300-0301, U+0303-0304, U+0308-0309, U+0323, U+0329, U+1EA0-1EF9, U+20AB;
}

/* ---------- Tokens ---------- */
:root {
  --font: "Archivo", system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --mono: ui-monospace, "SF Mono", "Cascadia Mono", "Segoe UI Mono", Consolas, "Liberation Mono", monospace;

  /* Pegboard wall */
  --wall: #e3e6e9;
  --hole: #c4cad0;
  /* Foam: the board panel, its cut-out pockets, and a tool lifted out of its pocket */
  --panel: #ffffff;
  --panel-edge: #d3d8dd;
  --pocket: #eef0f2;
  --lift: #ffffff;
  /* Ink */
  --ink: #15181b;
  --ink-2: #414850;
  --ink-3: #59616a;
  --line: #dde1e5;
  --line-strong: #aeb6be;
  /* Charcoal foam: header, footer, drawer */
  --char: #1a1d21;
  --char-2: #24282d;
  --char-3: #30353b;
  --char-pocket: #101215;
  --char-ink: #f1f3f5;
  --char-ink-2: #aab2ba;
  /* Signals */
  --yellow: #ffc400;
  --yellow-hover: #ffd23d;
  --link: #1159e0;
  --focus: #2f7bff;
  --pass: #0f7a48;
  --warn: #8f5500;
  --fail: #b8322a;
  --pass-bg: #e2f4ea;
  --warn-bg: #fff0cc;
  --fail-bg: #fde5e2;
  --field: #ffffff;
  --tape: #1a1d21;
  --tape-ink: #ffffff;
  /* Default under-foam (overridden per board) */
  --under: #ffc400;
  /* Depth */
  --shadow-panel: 0 1px 0 rgba(21, 24, 27, .04), 0 14px 34px -20px rgba(21, 24, 27, .30);
  --shadow-lift: 0 2px 4px rgba(21, 24, 27, .07), 0 16px 30px -12px rgba(21, 24, 27, .34);
  --cut: inset 0 2px 3px rgba(0, 0, 0, .24), inset 0 0 0 1px rgba(0, 0, 0, .07);
  --pocket-shadow: inset 0 1px 3px rgba(21, 24, 27, .10);
  /* Shape and motion */
  --r-sm: 8px;
  --r: 12px;
  --r-lg: 18px;
  --ease: cubic-bezier(.16, 1, .3, 1);
  --wrap: 1240px;
  --gutter: 24px;
  color-scheme: light;
}

html[data-theme="dark"] {
  --wall: #111316;
  --hole: #1e2226;
  --panel: #191c20;
  --panel-edge: #2a2f35;
  --pocket: #131619;
  --lift: #23272c;
  --ink: #eceef1;
  --ink-2: #c1c7cd;
  --ink-3: #9aa2ab;
  --line: #2a2f35;
  --line-strong: #444c54;
  --char: #0b0d0f;
  --char-2: #171a1d;
  --char-3: #23272c;
  --char-pocket: #060708;
  --link: #7aaeff;
  --focus: #5b9bff;
  --pass: #52d18f;
  --warn: #f3b544;
  --fail: #ff8177;
  --pass-bg: rgba(82, 209, 143, .12);
  --warn-bg: rgba(243, 181, 68, .13);
  --fail-bg: rgba(255, 129, 119, .13);
  --field: #121417;
  --tape: #2c3137;
  --shadow-panel: 0 1px 0 rgba(0, 0, 0, .5), 0 18px 38px -22px rgba(0, 0, 0, .9);
  --shadow-lift: 0 2px 4px rgba(0, 0, 0, .45), 0 18px 32px -12px rgba(0, 0, 0, .8);
  --cut: inset 0 2px 4px rgba(0, 0, 0, .45), inset 0 0 0 1px rgba(0, 0, 0, .25);
  --pocket-shadow: inset 0 1px 4px rgba(0, 0, 0, .55);
  color-scheme: dark;

  /* Old theme: its .dark rules paint text with --color-white and panels with --color-dark*; keep that
     convention (tool views rely on it) and only move the dark panel colours onto this palette. */
  --color-black: #15181b;
  --color-dark: #111316;
  --color-dark-light: #191c20;
  --color-dark-lighter: #23272c;
  --color-dark-border: #444c54;
  --color-border: #2a2f35;
  --color-placeholder: #7d858e;
}

/* Under-foam colour per category board. Same lightness band so dark ink icons read on every one. */
[data-board="seo-web-tools"]     { --under: #ffc400; }
[data-board="network-tools"]     { --under: #5d97ff; }
[data-board="encoding-tools"]    { --under: #a68cff; }
[data-board="image-tools"]       { --under: #ff8455; }
[data-board="format-converters"] { --under: #35c890; }
[data-board="text-tools"]        { --under: #ff82b8; }
[data-board="security"]          { --under: #ff6b66; }
[data-board="unit-converters"]   { --under: #9fd24e; }
[data-board="url-domains"]       { --under: #34c4e0; }
[data-board="fun-utilities"]     { --under: #ffa53d; }
[data-board="calculators"]       { --under: #a3b0c0; }
[data-board="developer-tools"]   { --under: #d98cf0; }
[data-board="pdf-tools"]         { --under: #ef8f6f; }

/* Old theme variables in light mode: primary becomes ink so leftover old-theme accents stop being indigo. */
:root {
  --color-primary: #15181b;
  --color-black: #15181b;
  --color-border: #dde1e5;
  --color-placeholder: #7b838c;
  --font-family: var(--font);
  --bs-body-font-family: var(--font);
  --bs-link-color: var(--link);
  --bs-link-hover-color: var(--link);
  --bs-link-color-rgb: 17, 89, 224;
  --bs-primary: #15181b;
  --bs-primary-rgb: 21, 24, 27;
  --bs-border-radius: 10px;
  --bs-focus-ring-color: rgba(47, 123, 255, .35);
}
html[data-theme="dark"] {
  --bs-body-bg: #111316;
  --bs-body-color: #eceef1;
  --bs-body-color-rgb: 236, 238, 241;
  --bs-secondary-color: #9aa2ab;
  --bs-border-color: #2a2f35;
  --bs-link-color-rgb: 122, 174, 255;
  --bs-primary: #eceef1;
  --bs-primary-rgb: 236, 238, 241;
  --bs-tertiary-bg: #1b1e22;
  --bs-secondary-bg: #202328;
  --bs-emphasis-color: #fff;
}

/* ---------- Base ---------- */
html { scroll-padding-top: 88px; }
/* The old theme animates "all" on every text element and styles bare header/footer elements; switch that off. */
.sp :is(p, form, input, h1, h2, h3, h4, h5, h6, ul, li, ol, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section) { transition: none; }
/* ...and hard-codes their colour; let them inherit instead (element-level specificity, so any class wins). */
:where(.sp) :is(p, form, input, ul, li, ol, article, aside, details, figcaption, figure, footer, header, hgroup, menu, nav, section) { color: inherit; }
.sp header { margin-bottom: 0; }
.sp header.rail { margin: 0; }
.sp footer.foot { display: block; min-height: 0; margin: 0; border-radius: 0; filter: none; background: var(--char); padding: 56px 0 28px; }
body.sp {
  margin: 0;
  padding: 0;
  background: var(--wall);
  color: var(--ink);
  font-family: var(--font);
  font-size: 16px;
  line-height: 1.6;
  font-stretch: 100%;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  text-rendering: optimizeLegibility;
}
.sp h1, .sp h2, .sp h3, .sp h4, .sp h5, .sp h6 { font-family: var(--font); color: var(--ink); text-wrap: balance; }
.sp p { text-wrap: pretty; }
:where(.sp) a { color: var(--link); text-underline-offset: 3px; text-decoration-thickness: 1px; }
.sp ::selection { background: var(--yellow); color: #15181b; }
.sp :focus-visible { outline: 3px solid var(--focus); outline-offset: 2px; border-radius: 6px; }
.sp code, .sp kbd, .sp pre, .sp samp { font-family: var(--mono); }
.sp img { max-width: 100%; }
.sp .table, .sp table { font-variant-numeric: tabular-nums; }
.sp { scrollbar-color: var(--line-strong) transparent; }
.sp ::-webkit-scrollbar { width: 12px; height: 12px; }
.sp ::-webkit-scrollbar-thumb { background: var(--line-strong); border-radius: 10px; border: 3px solid var(--wall); }
.sp ::-webkit-scrollbar-track { background: transparent; }
.sp input, .sp textarea, .sp select, .sp button { font-family: var(--font); }
.sp input, .sp textarea { caret-color: var(--focus); }

.sr-only {
  position: absolute !important; width: 1px; height: 1px; padding: 0; margin: -1px;
  overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0;
}
.wrap { max-width: var(--wrap); margin: 0 auto; padding-left: var(--gutter); padding-right: var(--gutter); }
.wrap--read { max-width: 820px; }

.pegboard {
  background-color: var(--wall);
  background-image: radial-gradient(circle, var(--hole) 1.7px, transparent 2.2px);
  background-size: 18px 18px;
  background-position: 9px 9px;
}

.skip-link {
  position: absolute; left: 12px; top: -60px; z-index: 200;
  background: var(--yellow); color: #15181b; font-weight: 700; padding: 10px 16px; border-radius: 8px; text-decoration: none;
}
.skip-link:focus { top: 12px; }

/* Label-maker tape: wide white capitals on a flat charcoal (or yellow) strip. */
.tape {
  display: inline-flex; align-items: center; gap: 6px;
  height: 22px; padding: 0 9px 0 10px;
  background: var(--tape);
  color: var(--tape-ink);
  border-radius: 3px;
  font-size: 11px; font-weight: 700; font-stretch: 112%; line-height: 1;
  letter-spacing: .1em; text-transform: uppercase; white-space: nowrap;
}
.tape--yellow { background: var(--yellow); color: #15181b; }

/* Slot marks: one mark per tool in a board; marks turn hollow for tools a search has lifted out. */
.ticks { display: inline-flex; gap: 2px; align-items: center; }
.ticks i { display: block; width: 3px; height: 12px; border-radius: 1px; background: var(--under); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, .18); transition: background-color .2s, box-shadow .2s; }
.ticks i.is-off { background: transparent; box-shadow: inset 0 0 0 1px var(--line-strong); }

.arrow-link {
  display: inline-flex; align-items: center; gap: 6px;
  font-weight: 600; font-size: 14px; color: var(--ink-2); text-decoration: none;
}
.arrow-link svg { transition: transform .3s var(--ease); }
.arrow-link:hover { color: var(--link); }
.arrow-link:hover svg { transform: translateX(3px); }

/* ---------- Header rail (charcoal foam) ---------- */
.rail {
  position: sticky; top: 0; z-index: 60;
  background: var(--char);
  color: var(--char-ink);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .05) inset, 0 8px 24px -16px rgba(0, 0, 0, .6);
}
.rail__bar { display: flex; align-items: center; gap: 20px; height: 64px; }
.rail__logo { display: flex; align-items: center; flex: 0 0 auto; border-radius: 6px; }
.rail__logo img { display: block; height: 32px; width: auto; }
.rail__nav { display: flex; align-items: center; }
.rail__nav ul { display: flex; gap: 2px; list-style: none; margin: 0; padding: 0; }
.rail__nav a {
  display: block; padding: 8px 12px; border-radius: 8px;
  color: var(--char-ink-2); font-size: 15px; font-weight: 500; text-decoration: none;
  transition: color .15s, background-color .15s;
}
.rail__nav a:hover { color: var(--char-ink); background: var(--char-2); }
.rail__nav a[aria-current="page"] { color: var(--char-ink); box-shadow: inset 0 -2px 0 var(--yellow); border-radius: 8px 8px 0 0; }
.rail__tools { display: flex; align-items: center; gap: 10px; margin-left: auto; }

.quickfind { position: relative; width: min(380px, 32vw); }
.quickfind__field { position: relative; display: flex; align-items: center; }
.quickfind__field > svg { position: absolute; left: 12px; color: var(--char-ink-2); pointer-events: none; }
.quickfind input {
  width: 100%; height: 40px;
  padding: 0 40px 0 38px;
  background: var(--char-2);
  border: 1px solid var(--char-3);
  border-radius: 10px;
  color: var(--char-ink);
  font-size: 15px;
  transition: border-color .15s, background-color .15s, box-shadow .15s;
}
.quickfind input::placeholder { color: #8d959e; opacity: 1; }
.quickfind input:focus { outline: none; border-color: var(--yellow); background: #0f1114; box-shadow: 0 0 0 3px rgba(255, 196, 0, .22); }
.quickfind kbd, .finder kbd {
  position: absolute; right: 10px;
  display: grid; place-items: center; min-width: 22px; height: 22px; padding: 0 6px;
  border-radius: 5px; border: 1px solid var(--char-3); background: var(--char);
  color: var(--char-ink-2); font: 600 12px/1 var(--mono);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .06);
  pointer-events: none;
}
.quickfind input:focus ~ kbd { opacity: 0; }

.quickfind__results {
  position: absolute; top: calc(100% + 8px); right: 0; left: 0; min-width: 340px;
  background: var(--panel); color: var(--ink);
  border: 1px solid var(--panel-edge); border-radius: 14px;
  box-shadow: 0 24px 48px -20px rgba(0, 0, 0, .45), 0 2px 6px rgba(0, 0, 0, .08);
  padding: 6px; margin: 0; list-style: none;
  max-height: min(70vh, 520px); overflow: auto;
}
.quickfind__results[hidden] { display: none; }
.quickfind__results li { margin: 0; }
.quickfind__results a {
  display: grid; grid-template-columns: 30px minmax(0, 1fr); gap: 2px 12px; align-items: center;
  padding: 9px 10px; border-radius: 10px; color: var(--ink); text-decoration: none;
}
.quickfind__results a .well { grid-row: span 2; }
.quickfind__results a b { font-weight: 600; font-size: 14.5px; line-height: 1.25; }
.quickfind__results a small { font-size: 12.5px; color: var(--ink-3); line-height: 1.35; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.quickfind__results a mark { background: none; color: inherit; padding: 0; box-shadow: inset 0 -.42em 0 rgba(255, 196, 0, .55); }
.quickfind__results [aria-selected="true"] a, .quickfind__results a:hover { background: var(--pocket); }
.quickfind__note { padding: 12px 12px; font-size: 14px; color: var(--ink-3); }

/* A small well: the coloured cut-out a tool icon sits in. */
.well {
  display: grid; place-items: center; flex: 0 0 auto;
  width: 30px; height: 30px; border-radius: 7px;
  background: var(--under); box-shadow: var(--cut);
}
.well img, .well svg { width: 17px; height: 17px; filter: brightness(0); opacity: .82; }
.well--dot { width: 12px; height: 12px; border-radius: 4px; }

.icon-btn {
  display: grid; place-items: center; width: 40px; height: 40px; flex: 0 0 auto;
  border-radius: 10px; border: 1px solid var(--char-3); background: var(--char-2);
  color: var(--char-ink); cursor: pointer; padding: 0;
  transition: background-color .15s, border-color .15s;
}
.icon-btn:hover { background: var(--char-3); border-color: #3a4047; }
.theme-toggle .i-sun { display: none; }
html[data-theme="dark"] .theme-toggle .i-sun { display: block; }
html[data-theme="dark"] .theme-toggle .i-moon { display: none; }
.rail__menu { display: none; }

/* Category strip under the header bar. */
.boards-nav { background: var(--char); border-top: 1px solid rgba(255, 255, 255, .06); }
.boards-nav ul {
  display: flex; gap: 2px; list-style: none; margin: 0; padding: 0 0 0;
  overflow-x: auto; scrollbar-width: none;
}
.boards-nav ul::-webkit-scrollbar { display: none; }
.boards-nav a {
  display: flex; align-items: center; gap: 7px; white-space: nowrap;
  padding: 11px 8px; color: var(--char-ink-2); font-size: 13.5px; font-stretch: 92%; font-weight: 500; text-decoration: none;
  border-bottom: 2px solid transparent;
  transition: color .15s, border-color .15s;
}
.boards-nav a:hover { color: var(--char-ink); }
.boards-nav a[aria-current="page"] { color: var(--char-ink); border-bottom-color: var(--under); }
.boards-nav .well--dot { box-shadow: inset 0 1px 2px rgba(0, 0, 0, .45); }

/* Language / account controls from the old header, kept working. */
.rail .header-language-btn-group, .rail .login-btn-main { position: relative; }
.rail .header-language-btn { display: flex; align-items: center; gap: 6px; height: 40px; padding: 0 10px; background: var(--char-2); border: 1px solid var(--char-3); border-radius: 10px; color: var(--char-ink); }
.rail .login-btn { display: grid; place-items: center; width: 40px; height: 40px; border-radius: 10px; background: var(--char-2); border: 1px solid var(--char-3); }
.rail .login-btn svg path { fill: var(--char-ink); }

/* ---------- Homepage ---------- */
.home-wall { padding-bottom: 72px; }
.wall-hero {
  display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(0, 1fr);
  gap: 56px; align-items: center;
  padding-top: 64px; padding-bottom: 16px;
}
.wall-hero h1 {
  margin: 0 0 20px;
  font-size: clamp(40px, 5.4vw, 70px); line-height: .98; font-weight: 800; font-stretch: 74%;
  letter-spacing: -.012em; max-width: 12ch;
}
.wall-hero__lead { margin: 0 0 30px; font-size: 18px; line-height: 1.6; color: var(--ink-2); max-width: 50ch; }

.finder {
  position: relative; display: flex; align-items: center; gap: 12px;
  height: 64px; padding: 0 12px 0 18px;
  background: var(--field);
  border: 2px solid var(--ink);
  border-radius: 14px;
  box-shadow: 0 1px 0 rgba(0, 0, 0, .03), 0 18px 36px -22px rgba(21, 24, 27, .55);
  transition: box-shadow .2s, border-color .2s;
}
.finder:focus-within { box-shadow: 0 0 0 4px rgba(47, 123, 255, .28), 0 18px 36px -22px rgba(21, 24, 27, .55); }
.finder > svg { flex: 0 0 auto; color: var(--ink-2); }
.finder input {
  flex: 1 1 auto; min-width: 0; height: 100%;
  border: 0; outline: 0; background: transparent;
  color: var(--ink); font-size: 19px; font-weight: 500;
}
.finder input::placeholder { color: var(--ink-3); opacity: 1; }
.finder input::-webkit-search-cancel-button { display: none; }
.finder__readout { flex: 0 0 auto; font-variant-numeric: tabular-nums; }
.finder__clear {
  display: none; place-items: center; width: 34px; height: 34px; flex: 0 0 auto;
  border: 0; border-radius: 8px; background: var(--pocket); color: var(--ink-2); cursor: pointer;
}
.finder.has-query .finder__clear { display: grid; }
.finder__hint { margin: 12px 0 0; font-size: 13.5px; color: var(--ink-3); }
.finder__hint kbd { position: static; display: inline-grid; background: var(--panel); border-color: var(--line-strong); color: var(--ink-2); height: 20px; min-width: 20px; font-size: 11px; vertical-align: 1px; }

/* The drawer: charcoal foam with the popular tools seated in it. */
.drawer {
  position: relative;
  background: var(--char) linear-gradient(180deg, rgba(255, 255, 255, .035), rgba(255, 255, 255, 0) 40%);
  color: var(--char-ink);
  border-radius: 22px;
  padding: 20px;
  box-shadow: 0 34px 60px -34px rgba(0, 0, 0, .7), 0 2px 0 rgba(255, 255, 255, .04) inset, 0 0 0 1px rgba(0, 0, 0, .25);
}
.drawer__head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin: 2px 4px 16px; }
.drawer__head h2 { margin: 0; color: var(--char-ink); font-size: 17px; font-weight: 800; font-stretch: 85%; letter-spacing: .06em; text-transform: uppercase; }
.drawer__grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.drawer .slot { background: var(--char-pocket); box-shadow: inset 0 2px 6px rgba(0, 0, 0, .65), inset 0 0 0 1px rgba(255, 255, 255, .03); }
.drawer .slot::before { border-color: rgba(255, 255, 255, .22); }
.drawer .slot__link { color: var(--char-ink); }
.drawer .slot__link:hover, .drawer .slot__link:focus-visible { background: var(--char-3); box-shadow: 0 16px 28px -12px rgba(0, 0, 0, .9), inset 0 1px 0 rgba(255, 255, 255, .06); }
.drawer .slot h2 { color: var(--char-ink); }
.drawer .slot p { color: var(--char-ink-2); }

/* Boards */
.boards { padding-top: 24px; }
.toolboard { margin-top: 48px; scroll-margin-top: 90px; }
.toolboard[hidden] { display: none; }
.board__head { display: flex; align-items: center; gap: 12px 16px; flex-wrap: wrap; margin: 0 2px 14px; }
.board__name {
  display: flex; align-items: center; gap: 12px;
  margin: 0; font-size: clamp(20px, 2.1vw, 26px); line-height: 1.1; font-weight: 800; font-stretch: 76%;
  letter-spacing: .01em; text-transform: uppercase;
}
.board__name a { color: var(--ink); text-decoration: none; }
.board__name a:hover { text-decoration: underline; text-decoration-thickness: 2px; }
.board__name .well { width: 22px; height: 22px; border-radius: 6px; }
.board__count { display: inline-flex; align-items: center; gap: 10px; font-size: 13px; color: var(--ink-3); font-variant-numeric: tabular-nums; }
.board__head .arrow-link { margin-left: auto; }

.board__panel {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(262px, 1fr)); gap: 8px;
  padding: 10px;
  background: var(--panel);
  border: 1px solid var(--panel-edge);
  border-radius: var(--r-lg);
  box-shadow: var(--shadow-panel);
}
.board__panel--roomy { grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 10px; padding: 12px; }

/* A slot: a pocket cut into the foam. The tool (the link) sits in it and lifts out on hover, leaving the
   painted outline (::before) behind: the shadow-board gesture. */
.slot {
  position: relative; min-width: 0;
  background: var(--pocket);
  border-radius: var(--r);
  box-shadow: var(--pocket-shadow);
}
.slot::before {
  content: ""; position: absolute; inset: 5px;
  border: 1.5px dashed var(--line-strong); border-radius: 9px;
  opacity: 0; transition: opacity .2s;
  pointer-events: none;
}
.slot__link {
  position: relative; display: grid; grid-template-columns: 44px minmax(0, 1fr); gap: 3px 14px; align-content: start;
  height: 100%; padding: 14px 16px 15px 14px;
  border-radius: var(--r);
  color: var(--ink); text-decoration: none;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease), background-color .2s;
}
.slot__link:hover, .slot__link:focus-visible { transform: translate(-3px, -4px); background: var(--lift); box-shadow: var(--shadow-lift); color: var(--ink); }
.slot__link:focus-visible { outline-offset: 0; }
.slot:hover::before, .slot:focus-within::before { opacity: 1; }
.slot__link .content-cats-icon {
  grid-row: span 2; display: grid; place-items: center;
  width: 44px; height: 44px; margin: 0; border-radius: 10px;
  background: var(--under); box-shadow: var(--cut);
}
.sp .slot__link .content-cats-icon img { display: block; width: 24px; height: 24px; max-width: none; max-height: none; object-fit: contain; filter: brightness(0); opacity: .8; }
.slot__link h2, .slot__link h3 { margin: 2px 0 0; font-size: 15.5px; line-height: 1.28; font-weight: 650; letter-spacing: 0; color: inherit; text-transform: none; }
.slot__link p { margin: 0; font-size: 13.5px; line-height: 1.45; color: var(--ink-3); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }
.slot__link.locked { opacity: .75; }
.board__panel--roomy .slot__link { padding: 18px 18px 19px 16px; grid-template-columns: 52px minmax(0, 1fr); gap: 4px 16px; }
.board__panel--roomy .slot__link .content-cats-icon { width: 52px; height: 52px; border-radius: 12px; }
.sp .board__panel--roomy .slot__link .content-cats-icon img { width: 28px; height: 28px; }
.board__panel--roomy .slot__link h2 { font-size: 16.5px; }
.board__panel--roomy .slot__link p { font-size: 14px; -webkit-line-clamp: 3; }

/* Search: lifting tools off the wall. */
.slot.is-lifting { animation: slot-out .22s var(--ease) forwards; }
.slot.is-landing { animation: slot-in .36s var(--ease); }
.slot[hidden] { display: none; }
@keyframes slot-out { to { opacity: 0; transform: translateY(-10px) scale(.96); } }
@keyframes slot-in { from { opacity: 0; transform: translateY(8px); } }
.finder-empty {
  margin: 40px 0 0; padding: 36px 24px; text-align: center;
  border: 2px dashed var(--line-strong); border-radius: var(--r-lg);
  color: var(--ink-2); font-size: 17px;
}
.finder-empty[hidden] { display: none; }
.finder-empty button { margin-top: 14px; }
body.is-searching .drawer { opacity: .5; }

/* ---------- Page heads (category, blog, pages) ---------- */
.page-head { padding: 36px 0 44px; border-bottom: 1px solid var(--panel-edge); }
.page-head h1 {
  margin: 10px 0 14px;
  font-size: clamp(36px, 4.6vw, 60px); line-height: 1; font-weight: 800; font-stretch: 74%; letter-spacing: -.01em;
}
.page-head--board h1 { display: flex; align-items: center; gap: 18px; text-transform: uppercase; letter-spacing: 0; }
.page-head--board h1 .well { width: 44px; height: 44px; border-radius: 11px; }
.page-head__meta { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin: 0 0 20px; color: var(--ink-3); font-size: 14px; font-variant-numeric: tabular-nums; }
.page-head__lead { margin: 0; max-width: 68ch; font-size: 18px; line-height: 1.65; color: var(--ink-2); }
.page-head__lead p { margin: 0 0 12px; }
.page-head__lead p:last-child { margin-bottom: 0; }
.page-body { padding-top: 32px; padding-bottom: 72px; }

.crumbs ol { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 0; list-style: none; margin: 0; padding: 0; font-size: 13.5px; }
.crumbs li { display: flex; align-items: center; color: var(--ink-3); }
.crumbs li + li::before { content: "/"; margin: 0 9px; color: var(--line-strong); }
.crumbs a { color: var(--ink-2); text-decoration: none; }
.crumbs a:hover { color: var(--link); text-decoration: underline; }
.crumbs [aria-current] { color: var(--ink-3); }

/* Old breadcrumb markup (tool pages include it): same look as .crumbs. */
.sp .tool-breadcrumb .breadcrumb { --bs-breadcrumb-divider: "/"; --bs-breadcrumb-divider-color: var(--line-strong); --bs-breadcrumb-item-padding-x: 9px; margin: 0 0 18px; font-size: 13.5px; }
.sp .tool-breadcrumb .breadcrumb-item a { color: var(--ink-2); }
.sp .tool-breadcrumb .breadcrumb-item a:hover { color: var(--link); }
.sp .tool-breadcrumb .breadcrumb-item.active,
.sp .tool-breadcrumb .breadcrumb-item + .breadcrumb-item::before { color: var(--ink-3); }

.section-title { margin: 56px 0 16px; font-size: 22px; font-weight: 800; font-stretch: 80%; text-transform: uppercase; letter-spacing: .02em; }

.guides { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 12px; list-style: none; margin: 0; padding: 0; }
.guides a {
  display: flex; flex-direction: column; gap: 6px; height: 100%;
  padding: 18px 20px; background: var(--panel); border: 1px solid var(--panel-edge); border-radius: var(--r);
  color: var(--ink); text-decoration: none; box-shadow: var(--shadow-panel);
  transition: transform .4s var(--ease), box-shadow .4s var(--ease);
}
.guides a:hover { transform: translateY(-3px); box-shadow: var(--shadow-lift); }
.guides b { font-size: 16.5px; font-weight: 650; line-height: 1.3; }
.guides span { font-size: 14px; color: var(--ink-3); line-height: 1.5; }

.chips { display: flex; flex-wrap: wrap; gap: 8px; list-style: none; margin: 0; padding: 0; }
.chips a {
  display: inline-flex; align-items: center; gap: 8px;
  padding: 8px 14px 8px 10px; border-radius: 10px;
  background: var(--panel); border: 1px solid var(--panel-edge); color: var(--ink);
  font-size: 14.5px; font-weight: 500; text-decoration: none;
  transition: border-color .15s, transform .3s var(--ease);
}
.chips a:hover { border-color: var(--ink-3); transform: translateY(-2px); }
.chips .ticks { margin-left: 2px; }

/* ---------- Tool pages: the bench ---------- */
.bench {
  display: grid; grid-template-columns: minmax(0, 1fr) 300px; gap: 32px; align-items: start;
  padding-top: 28px; padding-bottom: 72px;
}
.bench__main { min-width: 0; }

/* Tool header: icon well, title and summary side by side (markup comes from each tool's header partial). */
.bench .single-page-sec { display: grid; grid-template-columns: 64px minmax(0, 1fr); column-gap: 20px; margin: 0; padding: 0; background: none; }
.bench .single-page-sec > * { grid-column: 1 / -1; }
.bench .single-page-sec > .single-page-icon {
  grid-column: 1; grid-row: span 2; align-self: start;
  display: grid; place-items: center; width: 64px; height: 64px; margin: 4px 0 0; padding: 0;
  border-radius: 15px; background: var(--under); box-shadow: var(--cut);
}
.bench .single-page-sec > .single-page-icon svg,
.bench .single-page-sec > .single-page-icon img { width: 34px; height: 34px; filter: brightness(0); opacity: .82; }
.sp .bench .single-page-sec > .single-page-main-title {
  grid-column: 2; margin: 0 0 6px;
  font-size: clamp(30px, 3.4vw, 44px); line-height: 1.04; font-weight: 800; font-stretch: 78%; letter-spacing: -.005em; color: var(--ink);
}
.sp .bench .single-page-sec > .single-page-main-desc { grid-column: 2; margin: 0; font-size: 17px; line-height: 1.55; color: var(--ink-2); max-width: 62ch; max-height: none; overflow: visible; }
.sp .bench .single-page-sec > .single-page-main-title { max-width: none; }
.sp .single-page-sec { margin-bottom: 0; }
/* The old theme clamps every paragraph in the work surface to a 19px line and hides overflow. */
.sp .single-page-sec .single-page-inner p { line-height: 1.65; overflow: visible; }
.sp .bench .single-page-sec > .tool-breadcrumb { margin-bottom: 4px; }

/* The work surface. Old markup puts the help text in the same box after <hr class="small-marg">;
   that rule becomes a strip of wall, so the tool and its documentation read as two panels. */
.sp .bench .single-page-inner {
  margin-top: 26px; padding: 30px 32px 34px;
  background: var(--panel); color: var(--ink);
  border: 1px solid var(--panel-edge); border-radius: var(--r-lg);
  box-shadow: var(--shadow-panel);
}
.sp .bench .single-page-inner > hr.small-marg {
  height: 26px; margin: 34px -33px 30px; padding: 0;
  border: 0; border-top: 1px solid var(--panel-edge); border-bottom: 1px solid var(--panel-edge);
  background: var(--wall); opacity: 1;
}
.sp .bench .single-page-inner > hr.small-marg ~ h2,
.sp .bench .single-page-inner > .tool-doc-title {
  margin: 0 0 14px; font-size: clamp(24px, 2.4vw, 30px); line-height: 1.1; font-weight: 800; font-stretch: 80%; color: var(--ink);
}
.sp .bench .single-page-inner p { color: var(--ink-2); }
.sp .tool-description { max-width: 72ch; font-size: 16.5px; line-height: 1.72; color: var(--ink-2); }
.sp .tool-description p { color: var(--ink-2); margin-bottom: 14px; line-height: 1.72; }
.sp .tool-description h3 { margin: 30px 0 10px; font-size: 20px; font-weight: 700; font-stretch: 90%; color: var(--ink); }
.sp .tool-description strong { color: var(--ink); }
.sp .tool-description ol, .sp .tool-description ul { padding-left: 1.3rem; }
.sp .tool-description li::marker { color: var(--ink-3); font-variant-numeric: tabular-nums; }
.sp .tool-description .tool-faq dt { margin-top: 18px; color: var(--ink); font-weight: 650; }
.sp .tool-description .tool-faq dd { color: var(--ink-2); }
.sp .tool-description a { color: var(--link); }

/* The old "Related tools" grid duplicates the board beside the tool. */
.bench__main > .content-sec { display: none; }

/* Board beside the tool: the category's tools, with this one's slot left empty ("open now"). */
.bench-board { position: sticky; top: 84px; }
.bench-board__panel {
  background: var(--panel); border: 1px solid var(--panel-edge); border-radius: var(--r-lg);
  box-shadow: var(--shadow-panel); padding: 16px 12px 12px;
}
.bench-board__head { display: flex; flex-direction: column; gap: 8px; margin: 0 6px 12px; }
.bench-board__head h2 { display: flex; align-items: center; gap: 10px; margin: 0; font-size: 16px; line-height: 1.15; font-weight: 800; font-stretch: 80%; text-transform: uppercase; letter-spacing: .02em; }
.bench-board__head h2 a { color: var(--ink); text-decoration: none; }
.bench-board__head h2 a:hover { text-decoration: underline; }
.bench-board__head .well { width: 18px; height: 18px; border-radius: 5px; }
.bench-board__list {
  list-style: none; margin: 0; padding: 0; display: grid; gap: 2px;
  max-height: calc(100vh - 250px); overflow-x: hidden; overflow-y: auto; overscroll-behavior: contain;
}
.bench-board__list a {
  display: flex; align-items: center; gap: 10px; padding: 6px 8px; border-radius: 9px;
  color: var(--ink); font-size: 14.5px; font-weight: 500; line-height: 1.3; text-decoration: none;
  transition: background-color .15s, transform .3s var(--ease);
}
.bench-board__list a:hover { background: var(--pocket); transform: translateX(2px); }
.bench-board__list .is-current {
  display: flex; align-items: center; gap: 10px; padding: 5px 8px 5px 7px; margin: 2px 0;
  border: 1.5px dashed var(--line-strong); border-radius: 9px;
  color: var(--ink-3); font-size: 14.5px; font-weight: 500; line-height: 1.3;
}
.bench-board__list .is-current .well { background: transparent; box-shadow: inset 0 0 0 1.5px var(--line-strong); }
.bench-board__list .is-current .well img { opacity: .35; }
html[data-theme="dark"] .bench-board__list .is-current .well img { filter: brightness(0) invert(1); }
.bench-board__list .is-current .tape { margin-left: auto; height: 20px; font-size: 10px; padding: 0 7px; }
.bench-board__list .well { width: 28px; height: 28px; border-radius: 7px; }
.bench-board__list .well img { width: 16px; height: 16px; }
.bench-board__all { display: block; margin: 10px 6px 2px; }
.bench-board .other-boards { margin-top: 16px; }
.bench-board .other-boards h2 { margin: 0 6px 10px; font-size: 13px; font-weight: 700; color: var(--ink-3); text-transform: uppercase; letter-spacing: .08em; font-stretch: 100%; }
.bench-board .other-boards .chips a { padding: 6px 10px 6px 8px; font-size: 13.5px; }

/* Ad slots keep their place without looking like content. */
.sp .bench [class*="ad-"], .sp .bench [class*="ads-"] { margin-top: 20px; }

/* ---------- Tool internals: shared classes every tool uses ---------- */
.sp .custom-label, .sp .form-label, .sp .single-page-inner label:not(.form-check-label):not(.btn) {
  color: var(--ink); font-size: 14.5px; font-weight: 650; margin-bottom: 7px; letter-spacing: 0;
}
.sp .form-group { margin-bottom: 18px; }

.sp .custom-input, .sp .form-control, .sp .form-select, .sp .custom-textarea {
  background-color: var(--field);
  color: var(--ink);
  border: 1.5px solid var(--line-strong);
  border-radius: 10px;
  box-shadow: inset 0 1px 2px rgba(0, 0, 0, .05);
  font-size: 16px; font-weight: 500;
  transition: border-color .15s, box-shadow .15s;
}
.sp .custom-input { height: 50px; padding: 0 16px; }
.sp .custom-input.form-select, .sp .form-select { padding-right: 40px; background-position: right 14px center; }
.sp .form-control, .sp .form-select { min-height: 44px; }
.sp .form-control-lg { min-height: 50px; }
.sp .form-control-sm, .sp .form-select-sm { min-height: 36px; font-size: 14px; }
.sp .custom-textarea, .sp textarea.form-control { padding: 14px 16px; line-height: 1.55; border-radius: 12px; }
.sp .custom-input::placeholder, .sp .custom-textarea::placeholder, .sp .form-control::placeholder { color: var(--ink-3); opacity: .85; }
.sp .custom-input:hover, .sp .custom-textarea:hover, .sp .form-control:hover, .sp .form-select:hover { border-color: var(--ink-3); }
.sp .custom-input:focus, .sp .custom-input:active, .sp .custom-textarea:focus, .sp .custom-textarea:active,
.sp .form-control:focus, .sp .form-select:focus {
  background-color: var(--field); color: var(--ink);
  border-color: var(--focus); outline: none;
  box-shadow: 0 0 0 4px rgba(47, 123, 255, .22);
}
.sp .custom-input:disabled, .sp .form-control:disabled, .sp .form-control[readonly], .sp .custom-textarea[readonly] { background-color: var(--pocket); }
html[data-theme="dark"] .form-select { --bs-form-select-bg-img: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23c1c7cd' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e"); }
.sp .form-check-input { border-color: var(--line-strong); background-color: var(--field); }
.sp .form-check-input:checked { background-color: var(--ink); border-color: var(--ink); }
html[data-theme="dark"] .sp .form-check-input:checked, html[data-theme="dark"] .form-check-input:checked { background-color: var(--yellow); border-color: var(--yellow); }
.sp .form-range::-webkit-slider-thumb { background: var(--ink); }
.sp .form-range::-moz-range-thumb { background: var(--ink); }
.sp .form-text, .sp .text-muted { color: var(--ink-3) !important; }
.sp .input-group-text { background: var(--pocket); color: var(--ink-2); border: 1.5px solid var(--line-strong); }

/* Buttons. Primary = safety yellow with ink; "dark" = charcoal; bordered = outline. */
.sp .custom--btn, .sp .btn-primary {
  display: inline-flex; align-items: center; justify-content: center; gap: 8px;
  background: var(--yellow); color: #15181b;
  border: 1px solid rgba(0, 0, 0, .12);
  border-radius: 10px; font-weight: 700; letter-spacing: .005em;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset, 0 1px 2px rgba(0, 0, 0, .14), 0 6px 14px -8px rgba(160, 110, 0, .55);
  transition: background-color .15s, transform .2s var(--ease), box-shadow .2s;
}
.sp .custom--btn:hover, .sp .custom--btn:focus-visible, .sp .btn-primary:hover {
  background: var(--yellow-hover); color: #15181b; opacity: 1; transform: translateY(-1px);
  box-shadow: 0 1px 0 rgba(255, 255, 255, .5) inset, 0 3px 6px rgba(0, 0, 0, .14), 0 10px 20px -10px rgba(160, 110, 0, .6);
}
.sp .custom--btn:active, .sp .btn-primary:active { transform: translateY(1px); background: var(--yellow); color: #15181b; box-shadow: inset 0 2px 3px rgba(0, 0, 0, .18); }
.sp .custom--btn svg path { fill: currentColor; }
.sp .custom--btn:hover svg path, .sp .custom--btn:focus svg path, .sp .custom--btn:active svg path { fill: currentColor; }
.sp .custom--btn.disabled, .sp .custom--btn:disabled { background: var(--yellow); color: #15181b; opacity: .55; transform: none; }
.sp .custom--btn.btn__dark, .sp .btn-dark {
  background: var(--ink); color: var(--panel); border-color: transparent;
  box-shadow: 0 1px 0 rgba(255, 255, 255, .08) inset, 0 1px 2px rgba(0, 0, 0, .2), 0 6px 14px -8px rgba(0, 0, 0, .5);
}
.sp .custom--btn.btn__dark:hover, .sp .custom--btn.btn__dark:focus-visible, .sp .btn-dark:hover { background: var(--ink-2); color: var(--panel); opacity: 1; }
.sp .custom--btn.btn__dark:active { background: var(--ink); color: var(--panel); }
.sp .custom--btn.btn__dark.disabled, .sp .custom--btn.btn__dark:disabled { background: var(--ink); color: var(--panel); }
.sp .custom--btn.btn__light { background: var(--panel); color: var(--ink); border: 1.5px solid var(--line-strong); box-shadow: none; }
.sp .custom--btn.btn__light:hover { background: var(--pocket); color: var(--ink); }
.sp .custom--btn.btn__bordered, .sp .btn-outline-primary, .sp .btn-outline-secondary {
  background: transparent; color: var(--ink); border: 1.5px solid var(--ink-3); box-shadow: none;
}
.sp .custom--btn.btn__bordered:hover, .sp .btn-outline-primary:hover, .sp .btn-outline-secondary:hover { background: var(--pocket); color: var(--ink); border-color: var(--ink); }
.sp .custom--btn.btn__bordered.btn__dark { background: transparent; color: var(--ink); border-color: var(--ink-3); }
.sp .custom--btn.red { background: var(--fail); color: #fff; }
.sp .button__sm { height: 32px; padding: 0 12px; font-size: 14px; line-height: 1; }
.sp .button__md { height: 42px; padding: 0 20px; font-size: 15px; line-height: 1; }
.sp .button__lg { height: 50px; padding: 0 28px; font-size: 16.5px; line-height: 1; }
.sp .button__xl { height: 58px; padding: 0 36px; font-size: 18px; line-height: 1; }
.sp .btn { border-radius: 10px; font-weight: 600; }
.sp .btn-secondary { background: var(--pocket); color: var(--ink); border: 1.5px solid var(--line-strong); }
.sp .btn-secondary:hover { background: var(--panel); color: var(--ink); border-color: var(--ink-3); }
.sp .btn-light { background: var(--pocket); color: var(--ink); border-color: var(--line); }

/* Copy buttons sit on top of result fields. */
.sp .copy-btn {
  display: inline-flex; align-items: center; gap: 6px;
  border-radius: 8px; background: var(--ink); color: var(--panel); border: 0;
  font-size: 13px; font-weight: 650;
}
.sp .copy-btn:hover { background: var(--ink-2); color: var(--panel); }
.sp .copy-btn svg path { fill: currentColor; }
.sp .copy-textarea-btn .copy-btn { right: 10px; top: 10px; }

/* Alerts and result boxes. */
.sp .alert { border-radius: 12px; border: 1px solid transparent; }
.sp .alert.bg-danger, .sp .alert-danger { background: var(--fail-bg) !important; border-color: color-mix(in srgb, var(--fail) 30%, transparent) !important; color: var(--fail); }
.sp .alert.bg-danger .text-light, .sp .alert.bg-danger h5, .sp .alert.bg-danger p { color: var(--fail) !important; }
.sp .alert.bg-success, .sp .alert-success { background: var(--pass-bg) !important; border-color: color-mix(in srgb, var(--pass) 30%, transparent) !important; color: var(--pass); }
.sp .alert.bg-success .text-light, .sp .alert.bg-success h5, .sp .alert.bg-success p { color: var(--pass) !important; }
.sp .alert-warning { background: var(--warn-bg); color: var(--warn); border-color: color-mix(in srgb, var(--warn) 30%, transparent); }
.sp .alert-info, .sp .alert-primary, .sp .alert-secondary, .sp .alert-light { background: var(--pocket); color: var(--ink); border-color: var(--line); }
.sp .alert h5 { font-size: 15.5px; font-weight: 600; }
.sp .bg-light { background-color: var(--pocket) !important; color: var(--ink); }
.sp .bg-white { background-color: var(--panel) !important; }
.sp .text-dark { color: var(--ink) !important; }
.sp .bg-light .text-dark, .sp .bg-light.text-dark { color: var(--ink) !important; }
.sp .border, .sp .border-top, .sp .border-bottom { border-color: var(--line) !important; }
.sp .card { --bs-card-bg: var(--panel); --bs-card-border-color: var(--line); --bs-card-cap-bg: var(--pocket); --bs-card-border-radius: 12px; --bs-card-inner-border-radius: 11px; color: var(--ink); }
.sp .list-group { --bs-list-group-bg: var(--panel); --bs-list-group-border-color: var(--line); --bs-list-group-color: var(--ink); }
.sp .table { --bs-table-bg: transparent; --bs-table-color: var(--ink); --bs-table-border-color: var(--line); --bs-table-striped-bg: var(--pocket); --bs-table-striped-color: var(--ink); --bs-table-hover-bg: var(--pocket); --bs-table-hover-color: var(--ink); color: var(--ink); }
.sp .table > :not(caption) > * > * { border-bottom-color: var(--line); }
.sp .table thead th { font-size: 12.5px; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-3); }
.sp .nav-tabs { --bs-nav-tabs-border-color: var(--line); --bs-nav-tabs-link-active-bg: var(--panel); --bs-nav-tabs-link-active-color: var(--ink); --bs-nav-tabs-link-active-border-color: var(--line) var(--line) var(--panel); }
.sp .nav-link { color: var(--ink-2); }
.sp .progress { background: var(--pocket); border-radius: 99px; }
.sp .progress-bar { background: var(--ink); }
.sp .badge.bg-primary { background: var(--ink) !important; color: var(--panel); }
.sp pre { background: var(--pocket); color: var(--ink); border: 1px solid var(--line); border-radius: 10px; padding: 14px 16px; }
.sp code { color: var(--ink); background: var(--pocket); padding: .1em .35em; border-radius: 5px; font-size: .9em; }
.sp pre code { background: none; padding: 0; }
.sp details > summary { cursor: pointer; font-weight: 600; color: var(--ink); }

/* SEO Checker / AI Crawler Checker: scores read like instrument readouts. */
.sp .seo-score { gap: 24px; padding: 22px 24px; border-radius: 14px; border: 1px solid var(--line); background: var(--pocket); box-shadow: var(--pocket-shadow); }
.sp .seo-score-number { font-size: 64px; font-weight: 800; font-stretch: 70%; font-variant-numeric: tabular-nums; letter-spacing: -.02em; }
.sp .seo-score-number span { font-size: 20px; font-stretch: 90%; }
.sp .seo-score-pass .seo-score-number { color: var(--pass); }
.sp .seo-score-warn .seo-score-number { color: var(--warn); }
.sp .seo-score-fail .seo-score-number { color: var(--fail); }
.sp .seo-group { font-size: 15px; font-weight: 800; font-stretch: 85%; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-2); }
.sp .seo-check { border-bottom-color: var(--line); }
.sp .seo-check-advice, .sp .ai-crawler-rule { color: var(--ink-3); }
.sp .seo-badge { border-radius: 3px; font-stretch: 110%; text-transform: uppercase; letter-spacing: .08em; font-size: 10.5px; font-weight: 800; padding: 5px 8px; background: var(--pocket); color: var(--ink-2); }
.sp .seo-check-pass .seo-badge, .sp .seo-badge.seo-check-pass { background: var(--pass-bg); color: var(--pass); }
.sp .seo-check-warn .seo-badge, .sp .seo-badge.seo-check-warn { background: var(--warn-bg); color: var(--warn); }
.sp .seo-check-fail .seo-badge, .sp .seo-badge.seo-check-fail { background: var(--fail-bg); color: var(--fail); }
.sp .seo-alert-fail { background: var(--fail-bg); color: var(--fail); }
.sp .seo-alert-warn { background: var(--warn-bg); color: var(--warn); }
.sp .ai-crawler-robots { background: var(--pocket); color: var(--ink); }

/* Website Speed Test: device tabs, score dials, metric readouts, fixes as expandable rows. */
.sp .speed-wait { margin: 12px 0 0; font-size: 14.5px; color: var(--ink-3); }
.sp .speed-target { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 16px; margin-bottom: 14px; }
.sp .speed-target p { margin: 0; }
.sp .speed-rerun { margin: 0; }
.sp .speed-note.speed-variance { margin: 10px 0 0; font-size: 13.5px; color: var(--ink-3); }
.sp .speed-cached { display: inline-block; margin-left: 4px; font-size: 13px; color: var(--ink-3); }
.sp .speed-tabs { display: inline-flex; gap: 4px; padding: 4px; margin-bottom: 18px; border-radius: 12px; background: var(--pocket); box-shadow: var(--pocket-shadow); }
.sp .speed-tab {
  display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 18px;
  border: 0; border-radius: 9px; background: transparent; color: var(--ink-2); font-size: 15px; font-weight: 700; cursor: pointer;
}
.sp .speed-tab:hover { color: var(--ink); }
.sp .speed-tab[aria-selected="true"] { background: var(--lift); color: var(--ink); box-shadow: 0 1px 2px rgba(0, 0, 0, .12), 0 0 0 1px var(--line); }
.sp .speed-gauges { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 12px; }
.sp .speed-gauge {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 6px;
  padding: 16px 8px 14px; border-radius: 14px; border: 1px solid var(--line); background: var(--pocket); box-shadow: var(--pocket-shadow);
}
.sp .speed-gauge svg { transform: rotate(-90deg); }
.sp .speed-gauge-track { fill: none; stroke: var(--line); stroke-width: 6; }
.sp .speed-gauge-fill { fill: none; stroke: var(--tone, var(--ink-3)); stroke-width: 6; stroke-linecap: round; }
.sp .speed-gauge-num {
  position: absolute; top: 16px; left: 50%; width: 84px; height: 84px; margin-left: -42px;
  display: flex; align-items: center; justify-content: center;
  font-size: 26px; font-weight: 800; font-stretch: 75%; font-variant-numeric: tabular-nums; color: var(--tone, var(--ink-3));
}
.sp .speed-gauge-label { font-size: 13.5px; font-weight: 700; text-align: center; color: var(--ink-2); }
.sp .speed-pass { --tone: var(--pass); }
.sp .speed-warn { --tone: var(--warn); }
.sp .speed-fail { --tone: var(--fail); }
.sp .speed-note { color: var(--ink-2); font-size: 15px; }
.sp .speed-note .seo-badge { min-width: 0; margin-right: 4px; vertical-align: 1px; }
.sp .speed-metrics { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; }
.sp .speed-metric {
  display: flex; flex-direction: column; gap: 2px; padding: 12px 14px;
  border-radius: 12px; border: 1px solid var(--line); border-top: 4px solid var(--tone, var(--line-strong)); background: var(--panel);
}
.sp .speed-metric-name { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 800; letter-spacing: .06em; color: var(--ink-3); }
.sp .speed-metric-name abbr { text-decoration: none; cursor: help; }
.sp .speed-core { padding: 1px 5px; border-radius: 3px; background: var(--pocket); font-size: 10px; letter-spacing: .08em; text-transform: uppercase; }
.sp .speed-metric-value { font-size: 24px; font-weight: 800; font-stretch: 80%; font-variant-numeric: tabular-nums; color: var(--ink); }
.sp .speed-metric-status { font-size: 13px; font-weight: 700; color: var(--tone, var(--ink-3)); }
.sp .speed-lab { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 16px; align-items: start; }
.sp .speed-shot { display: block; border-radius: 10px; border: 1px solid var(--line); box-shadow: 0 6px 18px -10px rgba(0, 0, 0, .35); }
.sp .speed-shot-mobile { width: 120px; }
.sp .speed-shot-desktop { width: 220px; }
.sp .speed-fixes { list-style: none; padding: 0; margin: 0; }
.sp .speed-fix { border-bottom: 1px solid var(--line); }
.sp .speed-fix > summary {
  display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; padding: 12px 0;
  list-style: none; font-weight: 600;
}
.sp .speed-fix > summary::-webkit-details-marker { display: none; }
.sp .speed-fix > summary::after { content: "+"; margin-left: auto; font-weight: 700; color: var(--ink-3); }
.sp .speed-fix[open] > summary::after { content: "\2212"; }
.sp .speed-fix .seo-badge { min-width: 70px; }
.sp .speed-fix-title { min-width: 0; flex: 1 1 260px; }
.sp .speed-fix-value { margin-left: 8px; font-weight: 500; color: var(--ink-3); }
.sp .speed-saving { padding: 2px 8px; border-radius: 999px; background: var(--pocket); color: var(--ink-2); font-size: 12.5px; font-weight: 700; font-variant-numeric: tabular-nums; white-space: nowrap; }
.sp .speed-fix > p { margin: 0 0 14px; padding-left: 82px; font-size: 14.5px; color: var(--ink-2); }
.sp .speed-issues { margin-top: 12px; padding: 12px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .speed-issues .seo-check:last-child { border-bottom: 0; }
.sp .speed-credit { margin: 18px 0 0; font-size: 13px; color: var(--ink-3); }

/* Domain Rating Checker */
.sp .dr-table td { vertical-align: middle; }
.sp .dr-meter { display: flex; align-items: center; gap: 12px; }
.sp .dr-value { min-width: 44px; font-size: 22px; font-weight: 800; font-stretch: 80%; font-variant-numeric: tabular-nums; }
.sp .dr-bar { flex: 1 1 auto; max-width: 260px; height: 8px; border-radius: 99px; background: var(--pocket); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .12); overflow: hidden; }
.sp .dr-bar span { display: block; height: 100%; border-radius: 99px; background: var(--ink); }
.sp .dr-none { color: var(--ink-3); }
.sp .dr-credit { font-size: 13.5px; color: var(--ink-3); }

/* Broken Link Checker */
.sp .blc-scope { border: 0; padding: 0; margin: 0 0 18px; min-width: 0; }
.sp .blc-scope legend { float: none; width: auto; margin-bottom: 7px; }
.sp .blc-options { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; }
.sp .single-page-inner label.blc-option {
  display: flex; align-items: flex-start; gap: 10px; margin: 0; padding: 12px 14px;
  border-radius: 12px; border: 1.5px solid var(--line-strong); background: var(--field); cursor: pointer;
  font-weight: 500; font-size: 14px; color: var(--ink-2);
}
.sp .blc-option input { margin-top: 4px; accent-color: var(--ink); }
.sp .blc-option strong { display: block; font-size: 15px; color: var(--ink); }
.sp .single-page-inner label.blc-option:has(input:checked) { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.sp .blc-actions .spinner-border { margin-right: 2px; }
.sp .blc-bar { height: 8px; border-radius: 99px; background: var(--pocket); box-shadow: inset 0 1px 2px rgba(0, 0, 0, .12); overflow: hidden; }
.sp .blc-bar span { display: block; height: 100%; background: var(--yellow); border-radius: 99px; transition: width .3s var(--ease); }
.sp .blc-status { margin: 10px 0 16px; font-size: 15px; color: var(--ink-2); }
.sp .blc-filters { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 14px; }
.sp .blc-filter {
  display: inline-flex; align-items: center; gap: 8px; height: 38px; padding: 0 12px 0 14px;
  border-radius: 10px; border: 1.5px solid var(--line-strong); background: var(--panel); color: var(--ink-2);
  font-size: 14px; font-weight: 700; cursor: pointer;
}
.sp .blc-filter:hover { border-color: var(--ink-3); color: var(--ink); }
.sp .blc-filter[aria-pressed="true"] { background: var(--ink); border-color: var(--ink); color: var(--panel); }
.sp .blc-count { min-width: 24px; padding: 1px 7px; border-radius: 99px; background: var(--pocket); color: var(--ink); font-size: 12.5px; text-align: center; font-variant-numeric: tabular-nums; }
.sp .blc-filter-broken .blc-count { background: var(--fail-bg); color: var(--fail); }
.sp .blc-filter[aria-pressed="true"] .blc-count { background: var(--panel); color: var(--ink); }
.sp .blc-clean { background: var(--pass-bg); color: var(--pass); }
.sp .blc-table td { vertical-align: top; font-size: 14.5px; }
.sp .blc-result { width: 150px; }
.sp .blc-result .seo-badge { min-width: 0; }
.sp .blc-code { display: block; margin-top: 5px; font-size: 12.5px; color: var(--ink-3); }
.sp .blc-link a { font-weight: 600; }
.sp .blc-final { margin-top: 2px; font-size: 13px; color: var(--ink-3); }
.sp .blc-meta { display: flex; flex-wrap: wrap; align-items: center; gap: 6px; margin-top: 5px; font-size: 13px; color: var(--ink-3); }
.sp .blc-tag { padding: 0 6px; border-radius: 3px; background: var(--pocket); font-size: 11px; font-weight: 700; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-2); }
.sp .blc-text { min-width: 0; overflow-wrap: anywhere; }
.sp .blc-found { width: 30%; font-size: 13.5px; }
.sp .blc-found summary { font-size: 13px; font-weight: 600; color: var(--ink-3); }
.sp .blc-more { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 12px; }
.sp .blc-page-errors { margin: 10px 0 0; padding-left: 18px; font-size: 14px; color: var(--ink-2); }

/* Image Geotagger */
.sp .geo-private svg { flex: 0 0 auto; }
.sp .geo-private { display: flex; align-items: center; gap: 8px; padding: 10px 14px; border-radius: 10px; background: var(--pass-bg); color: var(--pass); font-size: 14.5px; font-weight: 600; }
.sp .geo-tool .seo-group:first-of-type { margin-top: 22px; }
.sp .single-page-inner label.geo-drop {
  display: flex; flex-direction: column; align-items: center; gap: 6px; margin: 0; padding: 30px 18px;
  border-radius: 14px; border: 2px dashed var(--line-strong); background: var(--pocket); color: var(--ink-2);
  text-align: center; cursor: pointer; transition: border-color .15s, background-color .15s;
}
.sp .single-page-inner label.geo-drop:hover, .sp .single-page-inner label.geo-drop.is-dragging { border-color: var(--ink); background: var(--panel); }
.sp .geo-drop:focus-within { outline: 3px solid var(--focus); outline-offset: 2px; }
.sp .geo-picker { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.sp .geo-drop-title { font-size: 16.5px; font-weight: 700; color: var(--ink); }
.sp .geo-drop-hint { font-size: 13.5px; color: var(--ink-3); }
.sp .geo-files { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 8px; }
.sp .geo-file { display: flex; align-items: center; gap: 12px; padding: 10px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .geo-file img { flex: 0 0 auto; width: 64px; height: 64px; object-fit: cover; border-radius: 8px; background: var(--pocket); }
.sp .geo-file-body { flex: 1 1 auto; min-width: 0; }
.sp .geo-file-name { font-weight: 600; font-size: 14.5px; }
.sp .geo-file-meta, .sp .geo-file-note { font-size: 13px; color: var(--ink-3); }
.sp .geo-file-note { color: var(--warn); }
.sp .geo-link-btn { margin-left: 4px; padding: 0; border: 0; background: none; color: var(--link); font-size: 13px; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.sp .geo-file-actions { display: flex; align-items: center; gap: 6px; }
.sp .geo-file-actions a.btn { text-decoration: none; }
.sp .geo-remove { display: inline-flex; align-items: center; justify-content: center; width: 32px; height: 32px; border: 0; border-radius: 8px; background: transparent; color: var(--ink-3); cursor: pointer; }
.sp .geo-remove:hover { background: var(--pocket); color: var(--ink); }
.sp .geo-search { margin-bottom: 14px; }
.sp .geo-search-row { display: flex; gap: 8px; }
.sp .geo-search-row .custom-input { flex: 1 1 auto; min-width: 0; }
.sp .geo-places { list-style: none; margin: 8px 0 0; padding: 4px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); box-shadow: var(--shadow-lift, 0 8px 22px -12px rgba(0, 0, 0, .35)); }
.sp .geo-places button { display: block; width: 100%; padding: 9px 10px; border: 0; border-radius: 8px; background: none; color: var(--ink); font-size: 14.5px; text-align: left; cursor: pointer; }
.sp .geo-places button:hover, .sp .geo-places button:focus-visible { background: var(--pocket); }
.sp .geo-small { margin: 6px 0 0; font-size: 13px; color: var(--ink-3); }
.sp .geo-coords { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; }
.sp .geo-details .geo-coords { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.sp .geo-optional { margin-left: 4px; font-size: 12px; font-weight: 600; color: var(--ink-3); }
.sp .geo-buttons { display: flex; flex-wrap: wrap; gap: 8px; margin: 12px 0 0; }
.sp .geo-map-wrap { margin-top: 12px; }
.sp .geo-map { height: 360px; margin-top: 8px; border-radius: 12px; border: 1px solid var(--line); overflow: hidden; z-index: 0; }
.sp .geo-details { margin-top: 22px; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .geo-details > summary { margin-bottom: 4px; }
.sp .geo-details[open] > summary { margin-bottom: 14px; }
.sp .geo-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 22px; }
.sp .geo-done { margin-top: 16px; padding: 14px 16px; border-radius: 12px; background: var(--pass-bg); color: var(--pass); }
.sp .geo-done p { margin: 0; font-weight: 600; }

/* Lookup tools (hosting, CMS, email records, domain age, security headers): headline, cards and key/value tables. */
.sp .lookup-hero { display: flex; flex-direction: column; gap: 4px; padding: 20px 22px; border-radius: 14px; border: 1px solid var(--line); background: var(--pocket); box-shadow: var(--pocket-shadow); }
.sp .lookup-hero-label { font-size: 12.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.sp .lookup-hero-value { font-size: 28px; font-weight: 800; font-stretch: 85%; line-height: 1.15; color: var(--ink); }
.sp .lookup-hero-note { font-size: 14px; color: var(--ink-2); }
.sp .lookup-cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(170px, 1fr)); gap: 10px; margin-top: 12px; }
.sp .lookup-card { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .lookup-card-label { font-size: 12px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.sp .lookup-card strong { font-size: 16.5px; color: var(--ink); }
.sp .lookup-card span:last-child { font-size: 13px; color: var(--ink-3); overflow-wrap: anywhere; }
.sp .lookup-table th { width: 200px; font-size: 14px; font-weight: 700; color: var(--ink-2); vertical-align: top; }
.sp .lookup-table td { font-size: 14.5px; vertical-align: top; }
.sp .lookup-row { display: grid; grid-template-columns: 2fr 1fr; gap: 0 12px; }
.sp .grade-letter { min-width: 72px; text-align: center; }
.sp .headers-raw, .sp .dns-record { max-height: 320px; overflow: auto; font-size: 13px; white-space: pre-wrap; word-break: break-all; }
.sp .tech-list { list-style: none; display: flex; flex-wrap: wrap; gap: 8px; margin: 0; padding: 0; }
.sp .tech-chip { display: inline-flex; align-items: center; gap: 8px; padding: 7px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); font-size: 14.5px; }
.sp .tech-chip span { padding: 0 6px; border-radius: 4px; background: var(--pocket); color: var(--ink-3); font-size: 12px; font-weight: 700; font-variant-numeric: tabular-nums; }
.sp .dkim-key { display: flex; flex-wrap: wrap; gap: 4px 12px; padding: 10px 14px; margin-bottom: 8px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); font-size: 14.5px; }
.sp .dkim-key span { color: var(--ink-3); }
.sp .dmarc-tags { list-style: none; margin: 0 0 8px; padding: 0; display: grid; gap: 6px; }
.sp .dmarc-tags li { display: flex; flex-wrap: wrap; gap: 4px 10px; font-size: 14.5px; }
.sp .dmarc-tags li > span:first-child { min-width: 170px; font-weight: 700; color: var(--ink-2); }
.sp .seo-group .seo-badge { min-width: 0; margin-left: 8px; vertical-align: 3px; }
.sp .age-table td { vertical-align: top; font-size: 14.5px; }
.sp .age-soon { color: var(--fail); font-weight: 700; }

/* Open Graph Checker: network-style previews. */
.sp .og-previews { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 16px; }
.sp .og-card { margin: 0; min-width: 0; }
.sp .og-card figcaption { margin-bottom: 6px; font-size: 12.5px; font-weight: 800; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.sp .og-frame { overflow: hidden; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); }
.sp .og-row { display: flex; align-items: stretch; }
.sp .og-img { position: relative; overflow: hidden; background: var(--pocket); }
.sp .og-img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.sp .og-img-wide { aspect-ratio: 1.91 / 1; }
.sp .og-img-x { aspect-ratio: 2 / 1; border-radius: 14px; }
.sp .og-x .og-frame { border-radius: 16px; }
.sp .og-img-square { flex: 0 0 96px; width: 96px; min-height: 96px; }
.sp .og-body { display: flex; flex-direction: column; gap: 2px; min-width: 0; padding: 10px 12px; }
.sp .og-domain { font-size: 12.5px; color: var(--ink-3); overflow-wrap: anywhere; }
.sp .og-title { font-size: 15px; font-weight: 700; line-height: 1.3; color: var(--ink); overflow-wrap: anywhere; }
.sp .og-desc { font-size: 13.5px; line-height: 1.4; color: var(--ink-2); overflow-wrap: anywhere; }
.sp .og-x-title { position: absolute; left: 10px; bottom: 10px; max-width: calc(100% - 20px); padding: 2px 6px; border-radius: 4px; background: rgba(0, 0, 0, .6); color: #fff; font-size: 13px; }
.sp .og-under { margin-top: 4px; font-size: 13px; color: var(--ink-3); }
.sp .og-whatsapp .og-frame { background: color-mix(in srgb, var(--pass-bg) 60%, var(--panel)); }

/* SEO Competitor Comparison */
.sp .cmp-inputs { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; }
.sp .cmp-summary { display: grid; grid-template-columns: repeat(var(--cols, 2), minmax(0, 1fr)); gap: 10px; }
.sp .cmp-site { display: flex; flex-direction: column; gap: 4px; min-width: 0; padding: 14px 16px; border-radius: 14px; border: 1px solid var(--line); background: var(--panel); }
.sp .cmp-site.is-you { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.sp .cmp-site-tag { font-size: 11.5px; font-weight: 800; letter-spacing: .08em; text-transform: uppercase; color: var(--ink-3); }
.sp .cmp-site-host { font-size: 16px; }
.sp .cmp-error { font-size: 13.5px; color: var(--fail); }
.sp .cmp-metrics { display: grid; gap: 6px; margin: 8px 0 0; }
.sp .cmp-metrics > div { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; padding: 6px 8px; border-radius: 8px; background: var(--pocket); }
.sp .cmp-metrics > div.is-best { background: var(--pass-bg); }
.sp .cmp-metrics dt { font-size: 13px; font-weight: 600; color: var(--ink-2); }
.sp .cmp-metrics dd { margin: 0; font-size: 18px; font-weight: 800; font-stretch: 85%; font-variant-numeric: tabular-nums; }
.sp .cmp-metrics dd small { font-size: 12px; font-weight: 600; color: var(--ink-3); }
.sp .cmp-metrics dd.cmp-age { font-size: 13.5px; font-weight: 700; font-stretch: 100%; text-align: right; }
.sp .cmp-metrics > div.is-best dd { color: var(--pass); }
.sp .cmp-table th[scope="row"] { font-size: 14px; font-weight: 700; color: var(--ink-2); white-space: nowrap; }
.sp .cmp-table td { font-size: 13.5px; vertical-align: top; min-width: 150px; overflow-wrap: anywhere; }
.sp .cmp-dot { display: inline-block; width: 9px; height: 9px; margin-right: 6px; border-radius: 50%; background: var(--line-strong); vertical-align: 1px; }
.sp .cmp-pass .cmp-dot { background: var(--pass); }
.sp .cmp-warn .cmp-dot { background: var(--warn); }
.sp .cmp-fail .cmp-dot { background: var(--fail); }

/* Website SEO Audit and XML Sitemap Generator */
.sp .crawl-limit { max-width: 320px; }
.sp .audit-issues { list-style: none; display: grid; gap: 6px; margin: 0; padding: 0; }
.sp .audit-issue {
  display: flex; align-items: center; gap: 12px; width: 100%; padding: 10px 12px; text-align: left;
  border-radius: 10px; border: 1px solid var(--line); background: var(--panel); color: var(--ink); font-size: 15px; cursor: pointer;
}
.sp .audit-issue:hover { border-color: var(--ink-3); }
.sp .audit-issue.is-active { border-color: var(--ink); box-shadow: inset 0 0 0 1px var(--ink); }
.sp .audit-issue .seo-badge { min-width: 74px; }
.sp .audit-issue-label { flex: 1 1 auto; min-width: 0; font-weight: 600; }
.sp .audit-title { max-width: 360px; overflow-wrap: anywhere; }
.sp .audit-title small { color: var(--ink-3); }
.sp .sitemap-xml { font-family: var(--mono); font-size: 13px; }
.sp .sitemap-reason { display: inline-block; margin-right: 14px; }

/* Keyword Ideas Generator */
.sp .kw-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 12px; }
.sp .kw-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; }
.sp .kw-toolbar .custom-input { flex: 1 1 220px; min-width: 0; height: 42px; }
.sp .kw-list { list-style: none; margin: 0; padding: 0; columns: 2; column-gap: 24px; }
.sp .kw-list li { display: flex; align-items: center; gap: 8px; padding: 6px 0; border-bottom: 1px solid var(--line); break-inside: avoid; }
.sp .kw-text { flex: 1 1 auto; min-width: 0; font-size: 15px; overflow-wrap: anywhere; }
.sp .kw-words { flex: 0 0 auto; font-size: 11.5px; color: var(--ink-3); white-space: nowrap; }
.sp .kw-search { flex: 0 0 auto; display: inline-flex; padding: 4px; border-radius: 6px; color: var(--ink-3); }
.sp .kw-search:hover { background: var(--pocket); color: var(--ink); }

/* Local Citation Finder */
.sp .cite-section { margin-top: 6px; }
.sp .cite-list { list-style: none; margin: 0; padding: 0; display: grid; gap: 6px; }
.sp .cite-item { display: flex; align-items: center; gap: 12px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); }
.sp .cite-item.is-done { background: var(--pass-bg); border-color: color-mix(in srgb, var(--pass) 35%, transparent); }
.sp .cite-item .form-check-input { flex: 0 0 auto; width: 20px; height: 20px; margin: 0; }
.sp .cite-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.sp .single-page-inner label.cite-name { margin: 0; font-size: 15px; font-weight: 700; cursor: pointer; }
.sp .cite-item.is-done .cite-name { text-decoration: line-through; text-decoration-thickness: 1px; }
.sp .cite-note { font-size: 13px; color: var(--ink-3); }
.sp .cite-item .seo-badge { min-width: 0; }
.sp .cite-item .btn { flex: 0 0 auto; text-decoration: none; }
.sp .cite-searches { list-style: none; margin: 0; padding: 0; display: grid; gap: 8px; }
.sp .cite-searches li { display: flex; flex-direction: column; gap: 2px; padding: 10px 12px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); }
.sp .cite-searches a { font-weight: 700; }
.sp .cite-searches code { font-size: 12.5px; background: none; padding: 0; color: var(--ink-3); }

/* ---------- Blog ---------- */
.post-feature {
  display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: center;
  background: var(--panel); border: 1px solid var(--panel-edge); border-radius: 22px;
  box-shadow: var(--shadow-panel); overflow: hidden; color: var(--ink); text-decoration: none;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease);
}
.post-feature:hover { transform: translateY(-3px); box-shadow: var(--shadow-lift); color: var(--ink); }
.post-feature__img { aspect-ratio: 1230 / 700; background: var(--pocket); overflow: hidden; }
.post-feature__img img, .post-card__img img { display: block; width: 100%; height: 100%; object-fit: cover; }
.post-feature__body { padding: 36px 40px; }
.post-feature h2 { margin: 14px 0 12px; font-size: clamp(26px, 2.8vw, 36px); line-height: 1.08; font-weight: 800; font-stretch: 80%; color: var(--ink); }
.post-feature p { margin: 0 0 20px; color: var(--ink-2); font-size: 16.5px; line-height: 1.6; }

.post-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(300px, 1fr)); gap: 20px; margin-top: 24px; }
.post-card {
  display: flex; flex-direction: column; height: 100%;
  background: var(--panel); border: 1px solid var(--panel-edge); border-radius: var(--r-lg);
  box-shadow: var(--shadow-panel); overflow: hidden; color: var(--ink); text-decoration: none;
  transition: transform .4s var(--ease), box-shadow .4s var(--ease);
}
.post-card:hover { transform: translateY(-4px); box-shadow: var(--shadow-lift); color: var(--ink); }
.post-card__img { aspect-ratio: 1230 / 700; background: var(--pocket); overflow: hidden; }
.post-card__body { display: flex; flex-direction: column; gap: 10px; padding: 18px 20px 20px; flex: 1 1 auto; }
.post-card h2 { margin: 0; font-size: 19px; line-height: 1.25; font-weight: 700; font-stretch: 92%; color: var(--ink); }
.post-card p { margin: 0; font-size: 14.5px; line-height: 1.55; color: var(--ink-3); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }
.post-foot { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.post-card .post-foot { margin-top: auto; padding-top: 14px; border-top: 1px solid var(--line); }
.post-feature h2 { margin-top: 0; }
.post-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13.5px; color: var(--ink-3); font-variant-numeric: tabular-nums; }

.sp .blog-pagination { display: flex; gap: 6px; list-style: none; padding: 0; margin: 36px 0 0; justify-content: center; }
.sp .blog-pagination a, .sp .blog-pagination span {
  display: grid; place-items: center; min-width: 40px; height: 40px; padding: 0 10px;
  border-radius: 10px; background: var(--panel); border: 1px solid var(--panel-edge); color: var(--ink); text-decoration: none; font-weight: 600;
}
.sp .blog-pagination a.active { background: var(--ink); color: var(--panel); border-color: var(--ink); }
.sp .blog-pagination a span { display: inline; min-width: 0; height: auto; padding: 0; border: 0; background: none; color: inherit; }
.sp .blog-pagination a:hover { border-color: var(--ink-3); }

/* Reading layout: blog posts, About/Privacy pages, contact. */
.read-head { padding: 36px 0 36px; border-bottom: 1px solid var(--panel-edge); }
.read-head h1 { margin: 16px 0 16px; font-size: clamp(34px, 4.4vw, 56px); line-height: 1.02; font-weight: 800; font-stretch: 76%; letter-spacing: -.01em; }
.read-head__lead { margin: 0; font-size: 19px; line-height: 1.6; color: var(--ink-2); max-width: 62ch; }
.byline { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; margin: 0; color: var(--ink-3); font-size: 14.5px; }
.byline a { color: var(--ink); font-weight: 650; text-decoration: none; }
.byline a:hover { text-decoration: underline; }
.byline .dot { width: 4px; height: 4px; border-radius: 50%; background: var(--line-strong); }
.read-figure { margin: 32px 0 8px; border-radius: 20px; overflow: hidden; background: var(--pocket); box-shadow: var(--shadow-panel); aspect-ratio: 1230 / 700; }
.read-figure img { display: block; width: 100%; height: 100%; object-fit: cover; }
.read-sheet {
  margin-top: 28px; padding: 40px 48px 44px;
  background: var(--panel); border: 1px solid var(--panel-edge); border-radius: 22px; box-shadow: var(--shadow-panel);
}

.prose { font-size: 17.5px; line-height: 1.75; color: var(--ink-2); max-width: 70ch; }
.prose > :first-child { margin-top: 0; }
.prose p { margin: 0 0 1.15em; color: var(--ink-2); }
.prose h2 { margin: 1.9em 0 .6em; font-size: 28px; line-height: 1.15; font-weight: 800; font-stretch: 82%; color: var(--ink); }
.prose h3 { margin: 1.6em 0 .5em; font-size: 21px; line-height: 1.25; font-weight: 700; font-stretch: 92%; color: var(--ink); }
.prose h4 { margin: 1.4em 0 .4em; font-size: 17.5px; font-weight: 700; color: var(--ink); }
.prose a { color: var(--link); text-decoration: underline; text-underline-offset: 3px; }
.prose a:hover { text-decoration-thickness: 2px; }
.prose strong { color: var(--ink); font-weight: 650; }
.prose ul, .prose ol { padding-left: 1.3em; margin: 0 0 1.2em; }
.prose li { margin: .35em 0; }
.prose li::marker { color: var(--ink-3); }
.prose blockquote { margin: 1.4em 0; padding: 4px 0 4px 20px; border-left: 1px solid var(--line-strong); color: var(--ink); font-size: 1.05em; }
.prose img { border-radius: 14px; height: auto; }
.prose hr { border: 0; border-top: 1px solid var(--line); margin: 2.2em 0; opacity: 1; }
.prose table { width: 100%; border-collapse: collapse; margin: 1.4em 0; font-size: 15.5px; display: block; overflow-x: auto; }
.prose th, .prose td { padding: 10px 12px; border-bottom: 1px solid var(--line); text-align: left; vertical-align: top; }
.prose th { font-size: 12.5px; text-transform: uppercase; letter-spacing: .06em; color: var(--ink-3); font-weight: 700; }
.prose pre { font-size: 14.5px; line-height: 1.6; overflow-x: auto; }
.prose code { font-size: .86em; }

/* Contact form (Livewire) inside the read sheet. */
.read-sheet .custom--btn { margin-top: 6px; }

/* ---------- Footer (charcoal foam) ---------- */
.foot { background: var(--char); color: var(--char-ink-2); padding: 56px 0 28px; }
.foot__grid { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1.2fr) minmax(0, .8fr); gap: 48px; }
.foot__brand img { display: block; height: 34px; width: auto; }
.foot__tagline { margin: 16px 0 24px; color: var(--char-ink); font-size: 20px; line-height: 1.3; font-weight: 700; font-stretch: 85%; max-width: 26ch; }
.foot__cta { padding: 18px 20px; border-radius: 14px; background: var(--char-2); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .05); max-width: 420px; }
.foot__cta h3 { display: none; } /* the admin text starts with a one-word label above its heading */
.foot__cta h2 { margin: 0 0 6px; font-size: 17px; font-weight: 700; color: var(--char-ink); }
.foot__cta p { margin: 0 0 14px; font-size: 14.5px; line-height: 1.5; color: var(--char-ink-2); }
.foot h2.foot__title { margin: 4px 0 16px; font-size: 13px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--char-ink-2); }
.foot ul { list-style: none; margin: 0; padding: 0; }
.foot__boards { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 4px 20px; }
.foot__boards a, .foot__links a {
  display: inline-flex; align-items: center; gap: 9px; padding: 5px 0;
  color: var(--char-ink); font-size: 14.5px; text-decoration: none; opacity: .88;
}
.foot__boards a:hover, .foot__links a:hover { opacity: 1; text-decoration: underline; }
.foot__base {
  display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap;
  margin-top: 48px; padding-top: 22px; border-top: 1px solid rgba(255, 255, 255, .08);
  font-size: 13.5px; color: var(--char-ink-2);
}
.foot__base strong { color: var(--char-ink); font-weight: 650; }
.sp .foot .custom--btn { height: 40px; padding: 0 16px; font-size: 14.5px; }

/* Cookie consent bar (shown while html[data-consent="unset"]). Reject and Accept are styled identically. */
.consent-bar {
  position: fixed; left: 16px; bottom: 16px; z-index: 90; max-width: 440px;
  display: none; padding: 16px 16px 14px 18px; border-radius: 14px;
  background: var(--char); color: var(--char-ink); font-size: 14.5px; line-height: 1.5;
  box-shadow: 0 20px 40px -18px rgba(0, 0, 0, .6), 0 0 0 1px rgba(255, 255, 255, .08);
}
html[data-consent="unset"] .consent-bar { display: block; }
.sp .consent-bar p { margin: 0 0 12px; color: var(--char-ink); }
.sp .consent-bar a { color: var(--char-ink); text-decoration: underline; }
.consent-bar__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.consent-btn {
  height: 38px; padding: 0 16px; border-radius: 10px; cursor: pointer;
  border: 1.5px solid rgba(255, 255, 255, .28); background: var(--char-2); color: var(--char-ink);
  font: inherit; font-size: 14px; font-weight: 700; line-height: 1;
  transition: background-color .15s, border-color .15s;
}
.consent-btn:hover { background: var(--char-3); border-color: rgba(255, 255, 255, .5); }
.consent-btn--quiet { border-color: transparent; background: transparent; text-decoration: underline; text-underline-offset: 3px; }
.consent-btn--quiet:hover { background: var(--char-2); border-color: transparent; }
.foot__linkbtn {
  padding: 5px 0; border: 0; background: none; cursor: pointer;
  color: var(--char-ink); font: inherit; font-size: 14.5px; opacity: .88;
}
.foot__linkbtn:hover { opacity: 1; text-decoration: underline; }

/* Sheet dialog: a panel over a dimmed page (cookie settings, email the report). Native <dialog>. */
.sheet-dialog {
  width: min(520px, calc(100vw - 32px)); max-height: calc(100dvh - 32px); overflow: auto;
  margin: auto; padding: 22px 24px 24px;
  border: 1px solid var(--panel-edge); border-radius: var(--r-lg);
  background: var(--panel); color: var(--ink); box-shadow: var(--shadow-lift);
}
.sheet-dialog::backdrop { background: rgba(16, 18, 21, .6); }
.sheet-dialog__head { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin-bottom: 8px; }
.sp .sheet-dialog__head h2 { margin: 0; font-size: 24px; line-height: 1.15; font-weight: 800; font-stretch: 85%; color: var(--ink); }
.sheet-dialog__close {
  display: grid; place-items: center; width: 38px; height: 38px; flex: 0 0 auto; padding: 0; cursor: pointer;
  border: 1px solid var(--line); border-radius: var(--r-sm); background: var(--panel); color: var(--ink-2);
}
.sheet-dialog__close:hover { background: var(--pocket); color: var(--ink); }
.sp .sheet-dialog__lead { margin: 0 0 18px; font-size: 15px; line-height: 1.55; color: var(--ink-2); }
.sheet-dialog__actions { display: flex; flex-wrap: wrap; justify-content: flex-end; gap: 10px; margin-top: 20px; }

.consent-list { list-style: none; margin: 0; padding: 0; border: 1px solid var(--line); border-radius: var(--r); background: var(--pocket); }
.consent-list li { padding: 14px 16px; }
.consent-list li + li { border-top: 1px solid var(--line); }
.consent-list__row { display: flex; align-items: center; justify-content: space-between; gap: 16px; margin: 0; }
label.consent-list__row { cursor: pointer; }
.consent-list__name { font-size: 16px; font-weight: 700; color: var(--ink); }
.sp .consent-list p { margin: 4px 0 0; font-size: 14px; line-height: 1.5; color: var(--ink-3); }

/* "Email me this report": the button under a tool result and its dialog. */
.report-mail-cta { display: flex; align-items: center; flex-wrap: wrap; gap: 8px 14px; margin: 22px 0 6px; }
.sp .report-mail-cta .custom--btn svg { flex: 0 0 auto; }
.sp .report-mail-cta span { font-size: 14px; color: var(--ink-3); }
.report-mail .custom-input { margin: 6px 0 0; }
.report-mail__trap { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }
.report-mail__opt {
  display: grid; grid-template-columns: auto minmax(0, 1fr); gap: 10px; align-items: start;
  margin: 16px 0 0; padding: 12px 14px; border-radius: var(--r); background: var(--pocket); cursor: pointer;
}
.sp .report-mail__opt .form-check-input { width: 20px; height: 20px; margin: 1px 0 0; border-width: 1.5px; cursor: pointer; }
.report-mail__opt strong { display: block; font-size: 15px; font-weight: 650; color: var(--ink); }
.report-mail__opt small { display: block; margin-top: 2px; font-size: 13.5px; line-height: 1.45; color: var(--ink-3); }
.sp .report-mail__status { min-height: 0; margin: 10px 0 0; font-size: 14.5px; color: var(--ink-2); }
.sp .report-mail__status:empty { display: none; }
.sp .report-mail__status.is-error { color: var(--fail); font-weight: 600; }
.report-mail .sheet-dialog__actions { margin-top: 18px; }
.sp .report-mail__fine { margin: 16px 0 0; font-size: 13px; line-height: 1.5; color: var(--ink-3); }
.report-mail__done { padding: 6px 0 0; text-align: center; }
.report-mail__tick { display: inline-grid; place-items: center; width: 52px; height: 52px; border-radius: 14px; background: var(--pass-bg); color: var(--pass); }
.sp .report-mail__done h3 { margin: 14px 0 6px; font-size: 20px; font-weight: 800; font-stretch: 85%; }
.sp .report-mail__done p { margin: 0 auto; max-width: 40ch; font-size: 15px; color: var(--ink-2); }
.report-mail__done .sheet-dialog__actions { justify-content: center; }

/* On/off switch: a checkbox with role="switch". Softened rectangle, no pill (DESIGN.md). */
.switch {
  -webkit-appearance: none; appearance: none; position: relative; flex: 0 0 auto;
  width: 46px; height: 26px; margin: 0; border: 0; border-radius: 8px; cursor: pointer;
  background: var(--line-strong); transition: background-color .15s;
}
.switch::after {
  content: ""; position: absolute; top: 3px; left: 3px; width: 20px; height: 20px; border-radius: 6px;
  background: #fff; box-shadow: 0 1px 2px rgba(0, 0, 0, .3); transition: transform .2s var(--ease);
}
.switch:checked { background: var(--ink); }
.switch:checked::after { transform: translateX(20px); }
html[data-theme="dark"] .switch:checked { background: var(--yellow); }
html[data-theme="dark"] .switch:checked::after { background: #15181b; }

/* ---------- Pages still on the old markup (paste bin view, account, pricing) ---------- */
.sp #main-content > .single-page-sec { max-width: var(--wrap); margin: 0 auto; padding: 32px var(--gutter) 72px; }
.sp .single-page-sec .single-page-inner {
  padding: 30px 32px; background: var(--panel); color: var(--ink);
  border: 1px solid var(--panel-edge); border-radius: var(--r-lg); box-shadow: var(--shadow-panel);
}
.sp .single-page-sec .single-page-main-title { font-size: clamp(30px, 3.4vw, 44px); line-height: 1.05; font-weight: 800; font-stretch: 78%; color: var(--ink); }
.sp .single-page-sec .single-page-main-desc { font-size: 17px; color: var(--ink-2); }
.sp .single-page-sec .single-page-inner h2, .sp .single-page-sec .single-page-inner h3 { color: var(--ink); }
.sp .single-page-sec .single-page-inner p, .sp .single-page-sec .single-page-inner li { color: var(--ink-2); }

/* ---------- Motion preferences ---------- */
@media (prefers-reduced-motion: reduce) {
  .slot__link, .arrow-link svg, .guides a, .post-card, .post-feature, .chips a, .bench-board__list a, .switch, .switch::after { transition: none; }
  .slot__link:hover, .slot__link:focus-visible { transform: none; }
  .slot.is-lifting, .slot.is-landing { animation: none; }
}

/* ---------- Responsive ---------- */
@media (max-width: 1180px) {
  .bench { grid-template-columns: minmax(0, 1fr); }
  .bench-board { position: static; }
  .bench-board__list { max-height: none; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 4px 8px; }
}
@media (max-width: 1080px) {
  .rail__nav a { padding: 8px 9px; font-size: 14.5px; }
  .quickfind { width: min(300px, 30vw); }
}
@media (max-width: 991px) {
  .wall-hero { grid-template-columns: minmax(0, 1fr); gap: 32px; padding-top: 44px; }
  .wall-hero h1 { max-width: 16ch; }
  .rail__bar { gap: 12px; }
  .rail__menu { display: grid; }
  .rail__nav {
    position: absolute; left: 0; right: 0; top: 100%;
    display: none; padding: 8px 16px 16px; background: var(--char);
    border-top: 1px solid rgba(255, 255, 255, .06); box-shadow: 0 20px 30px -20px rgba(0, 0, 0, .6);
  }
  .rail__nav.is-open { display: block; }
  .rail__nav ul { flex-direction: column; gap: 2px; }
  .rail__nav a { padding: 12px 12px; font-size: 16px; }
  .rail__nav a[aria-current="page"] { box-shadow: none; border-radius: 8px; background: var(--char-2); }
  .rail__nav a[aria-current="page"]::after { content: ""; display: inline-block; width: 7px; height: 7px; margin-left: 10px; border-radius: 2px; background: var(--yellow); vertical-align: 2px; }
  .quickfind { width: auto; flex: 1 1 auto; max-width: 420px; }
  .foot__grid { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .foot__grid > :first-child { grid-column: 1 / -1; }
  .post-feature { grid-template-columns: minmax(0, 1fr); }
  .post-feature__body { padding: 26px 26px 30px; }
}
@media (max-width: 640px) {
  :root { --gutter: 16px; }
  .rail__bar { height: 58px; gap: 8px; }
  .rail__logo img { height: 26px; }
  .quickfind kbd { display: none; }
  .quickfind input { padding-right: 12px; font-size: 16px; }
  .quickfind__results { position: fixed; top: 64px; left: 12px; right: 12px; min-width: 0; }
  .wall-hero { padding-top: 32px; gap: 28px; }
  .wall-hero__lead { font-size: 16.5px; margin-bottom: 22px; }
  .finder { height: 56px; padding: 0 8px 0 14px; }
  .finder input { font-size: 17px; }
  .finder__hint { display: none; }
  .drawer { padding: 14px; border-radius: 18px; }
  .drawer__grid { gap: 8px; }
  .drawer .slot__link { grid-template-columns: minmax(0, 1fr); gap: 10px; padding: 12px; }
  .drawer .slot__link .content-cats-icon { grid-row: auto; width: 38px; height: 38px; }
  .drawer .slot__link p { display: none; }
  .drawer .slot__link h2 { font-size: 14.5px; }
  .toolboard { margin-top: 36px; }
  .board__head .arrow-link { margin-left: 0; }
  .board__panel { grid-template-columns: minmax(0, 1fr); padding: 8px; gap: 6px; }
  .slot__link { padding: 12px 12px 13px; grid-template-columns: 40px minmax(0, 1fr); gap: 2px 12px; }
  .slot__link .content-cats-icon { width: 40px; height: 40px; }
  .slot__link p { -webkit-line-clamp: 1; }
  .bench { padding-top: 18px; gap: 24px; }
  .bench .single-page-sec { grid-template-columns: 48px minmax(0, 1fr); column-gap: 14px; }
  .bench .single-page-sec > .single-page-icon { width: 48px; height: 48px; border-radius: 12px; }
  .bench .single-page-sec > .single-page-icon svg, .bench .single-page-sec > .single-page-icon img { width: 26px; height: 26px; }
  .sp .bench .single-page-sec > .single-page-main-desc { font-size: 15.5px; }
  .sp .bench .single-page-inner { padding: 20px 16px 24px; border-radius: 14px; margin-left: -4px; margin-right: -4px; }
  .sp .bench .single-page-inner > hr.small-marg { margin: 28px -17px 24px; }
  .sp .custom-input { height: 48px; }
  .sp .button__lg { height: 48px; padding: 0 22px; }
  .read-sheet { padding: 24px 18px 28px; border-radius: 16px; }
  .prose { font-size: 16.5px; }
  .foot__grid { grid-template-columns: minmax(0, 1fr); gap: 32px; }
  .foot__boards { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
  .consent-bar { left: 8px; right: 8px; bottom: 8px; max-width: none; }
  .consent-btn { flex: 1 1 auto; }
  .sheet-dialog { width: 100%; max-width: none; max-height: calc(100dvh - 24px); margin: auto 0 0; padding: 20px 16px 22px; border-radius: 18px 18px 0 0; }
  .sheet-dialog__actions .custom--btn { flex: 1 1 auto; }
}

/* Free SEO tools on phones */
@media (max-width: 640px) {
  .sp .speed-gauges { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .sp .speed-lab { grid-template-columns: minmax(0, 1fr); }
  .sp .speed-shot-desktop { width: 100%; max-width: 320px; }
  .sp .speed-fix > p { padding-left: 0; }
  .sp .speed-tabs { display: flex; }
  .sp .speed-tab { flex: 1 1 0; justify-content: center; }
  .sp .blc-options { grid-template-columns: minmax(0, 1fr); }
  .sp .blc-table thead { display: none; }
  .sp .blc-table tr { display: block; padding: 12px 0; border-bottom: 1px solid var(--line); }
  .sp .blc-table > :not(caption) > * > td { display: block; width: auto; padding: 2px 0; border: 0; }
  .sp .blc-result .blc-code { display: inline; margin: 0 0 0 6px; }
  .sp .blc-found { font-size: 13px; color: var(--ink-3); }
  .sp .blc-found::before { content: "Found on "; }
  .sp .geo-coords, .sp .geo-details .geo-coords { grid-template-columns: minmax(0, 1fr); }
  .sp .geo-file { flex-wrap: wrap; }
  .sp .geo-file-actions { width: 100%; justify-content: flex-end; }
  .sp .lookup-row, .sp .cmp-inputs, .sp .kw-options, .sp .og-previews { grid-template-columns: minmax(0, 1fr); }
  .sp .cmp-summary { grid-template-columns: minmax(0, 1fr); }
  .sp .kw-list { columns: 1; }
  .sp .lookup-table th { width: 120px; }
  .sp .lookup-hero-value { font-size: 23px; }
  .sp .cite-item { flex-wrap: wrap; }
  .sp .cite-body { flex-basis: calc(100% - 40px); }
  .sp .dmarc-tags li > span:first-child { min-width: 0; width: 100%; }
}
@media (min-width: 641px) and (max-width: 991px) {
  .sp .cmp-summary { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

/* ------------------------------------------------------------------ Kit tools (public/js/kit): calculators, converters, text, image, developer and security tools */
.sp .kit-mono, .sp .kit-mono.custom-textarea, .sp .kit-mono.custom-input { font-family: var(--mono); font-size: 14px; }
.sp .kit-label-row { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 4px 12px; }
.sp .kit-links { display: inline-flex; gap: 14px; }
.sp .kit-link { padding: 0; border: 0; background: none; color: var(--link); font-size: 13.5px; font-weight: 600; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.sp .kit-meta { font-size: 13px; font-weight: 600; color: var(--ink-3); }
.sp .kit-options { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 12px 18px; margin: 4px 0 16px; }
.sp .kit-option-checkbox { flex-basis: 100%; }
.sp .kit-field { display: flex; flex-direction: column; gap: 6px; min-width: 170px; margin: 0; font-size: 13.5px; font-weight: 700; color: var(--ink-2); }
.sp .kit-field > span strong { color: var(--ink); }
.sp .kit-field .custom-input, .sp .kit-field .form-select { height: 44px; }
.sp .kit-field.kit-wide, .sp .kit-wide { flex: 1 1 280px; }
.sp .kit-check { display: inline-flex; align-items: center; gap: 8px; margin: 0; font-size: 14.5px; color: var(--ink-2); cursor: pointer; }
.sp .kit-check .form-check-input { margin: 0; flex: 0 0 auto; }
.sp .kit-color { width: 64px; height: 44px; padding: 3px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); cursor: pointer; }
.sp .kit-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; margin: 12px 0 0; }
.sp .kit-toolbar { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 0 14px; }
.sp .kit-toolbar .blc-filter code { font-family: var(--mono); font-size: 12.5px; color: inherit; background: none; padding: 0; }
.sp .kit-result { margin-top: 18px; }
.sp .kit-summary { margin: 0 0 10px; font-size: 15px; font-weight: 600; color: var(--ink); }
.sp .kit-table { margin: 0 0 12px; font-size: 14.5px; }
.sp .kit-table td, .sp .kit-table th { vertical-align: top; overflow-wrap: anywhere; }
.sp .kit-table .kit-key { width: 40%; font-weight: 700; color: var(--ink-2); }
.sp .kit-rowcopy { width: 1%; white-space: nowrap; text-align: right; }
.sp .kit-sizes { display: flex; flex-wrap: wrap; gap: 8px 16px; margin: 0; padding: 0; border: 0; }
.sp .kit-sizes legend { width: 100%; margin-bottom: 4px; font-size: 13.5px; }
.sp .kit-extra { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 6px; }
.sp .kit-extra a.btn { text-decoration: none; }

/* Calculators */
.sp .kit-fields { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 0 16px; }
.sp .kit-fields .kit-wide { grid-column: 1 / -1; }
.sp .kit-input-wrap { position: relative; display: flex; align-items: center; }
.sp .kit-input-wrap .custom-input { flex: 1 1 auto; min-width: 0; }
.sp .kit-prefix, .sp .kit-suffix { flex: 0 0 auto; padding: 0 10px; font-size: 14px; font-weight: 700; color: var(--ink-3); }
.sp .kit-results { display: grid; grid-template-columns: repeat(auto-fill, minmax(190px, 1fr)); gap: 10px; margin-top: 8px; }
.sp .kit-res { display: flex; flex-direction: column; gap: 3px; min-width: 0; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .kit-res.is-main { grid-column: 1 / -1; background: var(--pocket); box-shadow: var(--pocket-shadow); }
.sp .kit-res-label { font-size: 12.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-3); }
.sp .kit-res-value { font-size: 20px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--ink); overflow-wrap: anywhere; }
.sp .kit-res.is-main .kit-res-value { font-size: 30px; font-stretch: 85%; }
.sp .kit-res-note { font-size: 13px; color: var(--ink-3); }

/* Unit converters */
.sp .units-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr) auto minmax(0, 1.3fr); align-items: end; gap: 0 12px; }
.sp .units-swap { display: inline-flex; align-items: center; justify-content: center; width: 44px; height: 50px; margin-bottom: 1rem; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); color: var(--ink-2); cursor: pointer; }
.sp .units-swap:hover { border-color: var(--ink-3); color: var(--ink); }
.sp .units-answer { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; padding: 18px 20px; border-radius: 14px; background: var(--pocket); box-shadow: var(--pocket-shadow); }
.sp .units-eq { font-size: 15px; color: var(--ink-2); }
.sp .units-value { font-size: 30px; font-weight: 800; font-stretch: 85%; font-variant-numeric: tabular-nums; color: var(--ink); overflow-wrap: anywhere; }
.sp .units-unit { font-size: 15px; font-weight: 600; color: var(--ink-2); }
.sp .units-answer .btn { margin-left: auto; }

/* Image editors */
.sp .kit-canvas { display: block; max-width: 100%; height: auto; margin: 14px auto 0; border-radius: 10px; border: 1px solid var(--line); background: repeating-conic-gradient(var(--pocket) 0 25%, var(--panel) 0 50%) 0 0 / 20px 20px; }
.sp .censor-canvas { cursor: crosshair; touch-action: none; }
.sp .hw-canvas { background: #fff; }
.sp .crop-stage { max-height: 560px; border-radius: 10px; overflow: hidden; background: var(--pocket); }
.sp .crop-stage img { display: block; max-width: 100%; }
.sp .adjust-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 10px 18px; margin: 12px 0; }
.sp .merge-list { list-style: none; margin: 14px 0 0; padding: 0; display: grid; gap: 6px; }
.sp .merge-list li { display: flex; align-items: center; gap: 10px; padding: 6px 8px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); font-size: 14px; }
.sp .merge-list img { width: 48px; height: 48px; object-fit: cover; border-radius: 6px; flex: 0 0 auto; }
.sp .merge-list span { flex: 1 1 auto; min-width: 0; }
.sp .merge-list .geo-remove:disabled { opacity: .35; cursor: default; }
.sp .pdf-list .geo-remove { flex: 0 0 32px; }

/* Developer tools */
.sp .jv-path { display: flex; flex-wrap: wrap; align-items: center; gap: 8px; margin: 0 0 10px; padding: 8px 12px; border-radius: 10px; background: var(--pocket); font-size: 14px; }
.sp .jv-path > span { font-weight: 800; font-size: 12px; letter-spacing: .06em; text-transform: uppercase; color: var(--ink-3); }
.sp .jv-path code { font-family: var(--mono); color: var(--ink); background: none; }
.sp .jv-tree { max-height: 620px; overflow: auto; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); font-family: var(--mono); font-size: 13.5px; line-height: 1.7; }
.sp .jv-tree summary { cursor: pointer; }
.sp .jv-kids { margin-left: 5px; padding-left: 20px; border-left: 1px dashed var(--line-strong); }
.sp .jv-row > span { cursor: pointer; }
.sp .jv-key { color: var(--ink-2); font-weight: 700; }
.sp .jv-meta { margin-left: 6px; color: var(--ink-3); font-size: 12px; }
.sp .jv-string { color: #0f7a48; }
.sp .jv-number { color: #1159e0; }
.sp .jv-boolean { color: #a1470d; }
.sp .jv-null { color: var(--ink-3); font-style: italic; }
html[data-theme="dark"] .sp .jv-string { color: #5fd49a; }
html[data-theme="dark"] .sp .jv-number { color: #7aaeff; }
html[data-theme="dark"] .sp .jv-boolean { color: #ffa86b; }
.sp .rx-pattern { display: flex; align-items: center; gap: 4px; font-family: var(--mono); font-size: 18px; color: var(--ink-3); }
.sp .rx-pattern .custom-input { flex: 1 1 auto; min-width: 0; }
.sp .rx-preview, .sp .hl-preview { max-height: 360px; overflow: auto; margin: 6px 0 12px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); font-family: var(--mono); font-size: 13.5px; white-space: pre-wrap; word-break: break-word; }
.sp .hl-preview { white-space: pre; }
.sp .hl-preview code { font-family: var(--mono); background: none; padding: 0; }
.sp .rx-m { padding: 0 1px; border-radius: 3px; background: #ffe082; color: #15181b; }
.sp .rx-m.rx-1 { background: #9fd8ff; }
.sp .cron-expr { font-size: 22px; letter-spacing: .08em; }
.sp .cron-fields { display: grid; grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); gap: 10px 14px; margin: 6px 0 16px; }
.sp .cron-fields .kit-field { min-width: 0; }
.sp .cron-desc { font-size: 22px; }
.sp .cron-next { margin: 0; padding-left: 20px; font-family: var(--mono); font-size: 14px; line-height: 1.8; }
.sp .jwt-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px 16px; margin-bottom: 12px; }
.sp .jwt-grid .kit-field { min-width: 0; }
.sp .dns-record { margin: 6px 0 0; padding: 12px 14px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); font-family: var(--mono); }
.sp .jwt-token { color: var(--ink); }
.sp .diff-wrap { max-height: 640px; overflow: auto; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .diff-table { width: 100%; border-collapse: collapse; font-family: var(--mono); font-size: 13px; line-height: 1.55; }
.sp .diff-table td { padding: 1px 8px; vertical-align: top; font-family: var(--mono); white-space: pre-wrap; word-break: break-word; }
.sp .diff-table .dn { width: 1%; padding: 1px 6px; text-align: right; color: var(--ink-3); background: var(--pocket); user-select: none; white-space: nowrap; }
.sp .diff-table .dl, .sp .diff-table .dr { width: 49%; }
.sp .diff-table .d-del .dl, .sp .diff-table .d-chg .dl { background: var(--fail-bg); }
.sp .diff-table .d-add .dr, .sp .diff-table .d-chg .dr, .sp .diff-unified tr.d-add td.dl { background: var(--pass-bg); }
.sp .diff-unified tr.d-del td.dl { background: var(--fail-bg); }
.sp .diff-table del { background: rgba(214, 48, 49, .42); color: inherit; text-decoration: none; border-radius: 2px; }
.sp .diff-table ins { background: rgba(20, 160, 90, .42); color: inherit; text-decoration: none; border-radius: 2px; }
.sp .ssh-host { margin: 0 0 14px; padding: 14px 16px 4px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .ssh-host legend { float: none; width: auto; padding: 0 6px; margin: 0; font-size: 13.5px; }

/* Security and SEO generators */
.sp .aes-pass { display: flex; gap: 8px; }
.sp .aes-pass .custom-input { flex: 1 1 auto; min-width: 0; }
.sp .csp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 12px 16px; margin-bottom: 14px; }
.sp .csp-grid .kit-field { min-width: 0; }
.sp .csp-warn { margin: 0 0 14px; padding: 12px 16px 12px 32px; border-radius: 12px; background: var(--warn-bg); color: var(--warn); font-size: 14px; }
.sp .csp-out { margin: 12px 0 0; }
.sp .csp-out .btn { margin-top: 6px; }
.sp .hreflang-row { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 2fr) auto; align-items: center; gap: 8px; margin-bottom: 8px; }
.sp .key-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 6px; }
.sp .key-list li { display: flex; align-items: center; gap: 10px; padding: 8px 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); }
.sp .key-list code { flex: 1 1 auto; min-width: 0; font-family: var(--mono); font-size: 13.5px; color: var(--ink); background: none; overflow-wrap: anywhere; }
.sp .tech-chip { display: inline-flex; align-items: center; gap: 6px; padding: 6px 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); font-size: 14px; }
.sp .canonical-url { font-size: 20px; }

/* Server-side lookups added with the kit tools */
.sp .schema-path { margin-left: 6px; font-family: var(--mono); font-size: 12px; font-weight: 400; color: var(--ink-3); }
.sp .schema-err { color: var(--fail); }
.sp .schema-tree { padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); font-size: 14px; line-height: 1.6; overflow-x: auto; }
.sp .schema-tree ul { list-style: none; margin: 0; padding: 0 0 0 18px; border-left: 1px dashed var(--line-strong); }
.sp .schema-node > summary { cursor: pointer; }
.sp .schema-key { font-weight: 700; color: var(--ink-2); }
.sp .schema-type { display: inline-block; margin-left: 6px; padding: 0 6px; border-radius: 4px; background: var(--pocket); font-size: 12px; font-weight: 800; color: var(--ink); }
.sp .schema-value { margin-left: 6px; color: var(--ink); }
.sp .schema-leaf { padding: 1px 0; }
.sp .sm-tree { list-style: none; margin: 0; padding: 0; }
.sp .sm-row { display: grid; grid-template-columns: minmax(0, 1.4fr) minmax(0, 1fr) auto; align-items: center; gap: 12px; padding: 6px 0; border-bottom: 1px solid var(--line); font-size: 14px; }
.sp .sm-depth-0 .sm-label { font-weight: 700; }
.sp .sm-depth-1 .sm-label { padding-left: 20px; }
.sp .sm-depth-2 .sm-label { padding-left: 40px; color: var(--ink-2); }
.sp .sm-bar, .sp .kd-bar { display: block; height: 8px; border-radius: 4px; background: var(--pocket); overflow: hidden; }
.sp .sm-bar i, .sp .kd-bar i { display: block; height: 100%; border-radius: 4px; background: var(--ink-2); }
.sp .kd-bar { display: inline-block; width: 80px; margin-right: 6px; vertical-align: middle; }
.sp .sm-count { font-variant-numeric: tabular-nums; font-weight: 700; text-align: right; white-space: nowrap; }
.sp .sm-count small { margin-left: 4px; font-weight: 400; color: var(--ink-3); }
.sp .kd-table td { font-size: 14.5px; vertical-align: middle; }
.sp .pwa-colours { display: flex; flex-wrap: wrap; gap: 14px; margin: 14px 0 0; font-size: 14px; color: var(--ink-2); }
.sp .pwa-colours span { display: inline-flex; align-items: center; gap: 6px; }
.sp .pwa-colours i { width: 22px; height: 22px; border-radius: 6px; border: 1px solid var(--line); }
.sp .sub-dead td { color: var(--ink-3); }
.sp .sub-table th:first-child { width: auto; }
.sp .cve-desc { margin: 14px 0; font-size: 15.5px; line-height: 1.6; }
.sp .cve-link { padding: 0; border: 0; background: none; color: var(--link); font-weight: 700; text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }
.sp .cve-date { display: inline; margin-left: 6px; }
.sp .cve-refs { margin: 8px 0 0; padding-left: 18px; font-size: 14px; }
.sp .cve-pager { display: flex; gap: 10px; margin-top: 14px; }
.sp .bl-report { margin-top: 14px; padding: 14px 16px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .bl-head { display: flex; flex-wrap: wrap; align-items: baseline; gap: 4px 12px; margin-bottom: 10px; }
.sp .bl-head strong { font-family: var(--mono); font-size: 18px; }
.sp .bl-head .blc-code { display: inline; margin: 0; }
.sp .bl-head .seo-badge { margin-left: auto; }
.sp .bl-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(250px, 1fr)); gap: 6px 16px; }
.sp .bl-item { display: flex; flex-wrap: wrap; align-items: center; gap: 4px 8px; padding: 4px 0; font-size: 14px; }
.sp .bl-item a { color: var(--ink); text-decoration: none; }
.sp .bl-item a:hover { text-decoration: underline; }
.sp .bl-dot { flex: 0 0 auto; width: 10px; height: 10px; border-radius: 50%; background: var(--pass); }
.sp .bl-listed .bl-dot { background: var(--fail); }
.sp .bl-error .bl-dot { background: var(--line-strong); }
.sp .bl-state { margin-left: auto; font-size: 12.5px; font-weight: 700; color: var(--ink-3); }
.sp .bl-listed .bl-state { color: var(--fail); }
.sp .bl-item .blc-code { flex-basis: 100%; margin: 0 0 0 18px; }
.sp .bl-steps { margin: 8px 0 0; padding-left: 20px; font-size: 14.5px; }
.sp .lookup-table thead th { width: auto; }
.sp .dns-prop-table td { font-size: 14px; }
.sp .dns-prop-table td:first-child { width: 32%; }
.sp .dns-prop-table td:nth-child(3), .sp .dns-prop-table td:nth-child(4) { width: 1%; white-space: nowrap; }
.sp .dns-auth td { background: var(--pocket); }
.sp .dns-val { font-family: var(--mono); font-size: 13px; }
.sp .asn-tags { display: flex; flex-wrap: wrap; gap: 6px; margin: 6px 0 0; }
.sp .asn-tags span { padding: 3px 8px; border-radius: 6px; background: var(--pocket); font-family: var(--mono); font-size: 13px; }
.sp .asn-prefixes { font-family: var(--mono); }

@media (max-width: 640px) {
  .sp .kit-fields, .sp .jwt-grid, .sp .hreflang-row { grid-template-columns: minmax(0, 1fr); }
  .sp .units-row { grid-template-columns: minmax(0, 1fr) auto; }
  .sp .units-row > .form-group:first-child, .sp .units-row > .form-group:last-child { grid-column: 1 / -1; }
  .sp .units-value, .sp .kit-res.is-main .kit-res-value { font-size: 24px; }
  .sp .kit-field { min-width: 0; flex: 1 1 100%; }
  .sp .sm-row { grid-template-columns: minmax(0, 1fr) auto; }
  .sp .sm-bar { display: none; }
  .sp .diff-table { font-size: 12px; }
  .sp .bl-head .seo-badge { margin-left: 0; }
}

/* ------------------------------------------------------------------ Report actions: share menu and print / save as PDF */
.sp .report-actions { display: flex; flex-wrap: wrap; align-items: flex-start; gap: 10px 14px; margin: 22px 0 6px; }
.sp .report-actions .report-mail-cta { margin: 0; }
.sp .report-share { position: relative; display: flex; flex-wrap: wrap; gap: 10px; }
.sp .report-share .custom--btn svg { flex: 0 0 auto; }
.sp .report-share-menu { position: absolute; z-index: 20; top: calc(100% + 8px); left: 0; width: min(360px, calc(100vw - 32px)); padding: 14px; border-radius: 14px; border: 1px solid var(--line); background: var(--panel); box-shadow: 0 14px 34px -14px rgba(0, 0, 0, .35); }
.sp .report-share-link { display: flex; flex-direction: column; gap: 4px; margin: 0 0 8px; font-size: 12.5px; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--ink-3); }
.sp .report-share-link input { width: 100%; height: 40px; padding: 0 10px; border-radius: 8px; border: 1px solid var(--line); background: var(--pocket); color: var(--ink); font-family: var(--mono); font-size: 13px; text-transform: none; letter-spacing: 0; font-weight: 400; }
.sp .report-share-apps { display: flex; flex-wrap: wrap; gap: 6px; margin: 12px 0 8px; }
.sp .report-share-apps a { padding: 6px 10px; border-radius: 8px; border: 1px solid var(--line); color: var(--ink); font-size: 13.5px; font-weight: 600; text-decoration: none; }
.sp .report-share-apps a:hover { border-color: var(--ink-3); }
.sp .report-share-menu p { margin: 0; font-size: 12.5px; color: var(--ink-3); }

/* AI Crawler Checker: reasons, suggestions and the robots.txt fixer */
.sp .ai-crawler-why { margin-top: 4px; font-size: 13.5px; color: var(--ink-3); }
.sp .ai-crawler-table td { vertical-align: top; }
.sp .ai-fix { margin-top: 26px; padding: 18px 20px; border-radius: 14px; border: 1px solid var(--line); background: var(--panel); }
.sp .ai-fix > .seo-group { margin-top: 0; }
.sp .ai-fix-intro { margin: 0 0 14px; font-size: 14.5px; color: var(--ink-2); }
.sp .ai-fix-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: 8px; margin: 0 0 14px; }
.sp .ai-fix-item { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 8px 10px; border-radius: 10px; background: var(--pocket); }
.sp .ai-fix-item code { font-size: 13px; color: var(--ink); background: none; padding: 0; }
.sp .ai-fix-kind { display: block; font-size: 11.5px; font-weight: 700; letter-spacing: .04em; text-transform: uppercase; color: var(--ink-3); }
.sp .ai-fix-switch { display: inline-flex; flex: 0 0 auto; padding: 2px; border-radius: 8px; border: 1px solid var(--line); background: var(--panel); }
.sp .ai-fix-switch button { padding: 4px 9px; border: 0; border-radius: 6px; background: none; color: var(--ink-3); font-size: 12.5px; font-weight: 700; cursor: pointer; }
.sp .ai-fix-switch button[aria-pressed="true"]:first-child { background: var(--pass-bg); color: var(--pass); }
.sp .ai-fix-switch button[aria-pressed="true"]:last-child { background: var(--fail-bg); color: var(--fail); }
.sp .ai-fix-changes { margin: 0 0 12px; font-size: 14.5px; }
.sp .ai-fix-changes ul { margin: 6px 0 0; padding-left: 20px; }
.sp .ai-fix-changes code { font-size: 13px; }
.sp .ai-fix-steps { margin: 8px 0 0; padding-left: 20px; font-size: 14.5px; line-height: 1.6; }

@media print {
  .rail, .boards-nav, .bench-board, .foot, .consent-bar, .single-page-sec form, .report-actions, .ai-fix,
  .single-page-inner > hr, .single-page-inner > h2, .tool-description, ins.adsbygoogle, .single-page-sec > .my-5.text-center,
  .single-page-inner > .my-5.text-center, .single-page-icon, .breadcrumb { display: none !important; }
  .bench .single-page-sec { display: block !important; }
  body, .sp { background: #fff !important; }
  .bench, .bench__main { display: block !important; max-width: none !important; margin: 0 !important; padding: 0 !important; }
  .seo-report details { display: block; }
  .seo-report details > *:not(summary) { display: block; }
}

/* ------------------------------------------------------------------ PDF tools (public/js/kit/pdf-tools.js, pdf-edit.js) */
.sp .seo-alert-pass { background: var(--pass-bg); color: var(--pass); }
.sp .pdf-file { display: flex; align-items: center; gap: 12px; padding: 12px 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--panel); }
.sp .pdf-file svg { flex: 0 0 auto; color: var(--fail); }
.sp .pdf-file > span { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; }
.sp .pdf-file small, .sp .pdf-list-name small { font-size: 13px; color: var(--ink-3); }
.sp .pdf-list li { gap: 8px; }
.sp .pdf-list .pdf-list-n { flex: 0 0 26px; width: 26px; height: 26px; display: inline-flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--pocket); font-size: 12.5px; font-weight: 800; color: var(--ink-2); }
.sp .pdf-list .pdf-list-name { flex: 1 1 0; min-width: 0; display: flex; flex-direction: column; }
.sp .pdf-range { flex: 0 0 130px; width: 130px; height: 36px; padding: 0 10px; font-size: 13.5px; }
.sp .pdf-pagebar { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 8px 14px; margin: 0 0 12px; font-size: 14.5px; }
.sp .pdf-pagebar-actions { display: inline-flex; flex-wrap: wrap; align-items: center; gap: 6px; }
.sp .pdf-grid { list-style: none; margin: 0 0 14px; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(128px, 1fr)); gap: 12px; }
.sp .pdf-thumb { display: flex; flex-direction: column; gap: 6px; min-width: 0; }
.sp .pdf-grid-organize .pdf-thumb { cursor: grab; }
.sp .pdf-thumb-page { position: relative; display: flex; align-items: center; justify-content: center; aspect-ratio: 3 / 4; padding: 6px; border-radius: 10px; border: 2px solid var(--line); background: var(--pocket); overflow: hidden; cursor: pointer; }
.sp .pdf-grid-organize .pdf-thumb-page { cursor: grab; }
.sp .pdf-thumb-page img { max-width: 100%; max-height: 100%; box-shadow: 0 1px 4px rgba(0, 0, 0, .18); transition: transform .2s; background: #fff; }
.sp .pdf-thumb-wait { font-size: 20px; color: var(--ink-3); }
.sp .pdf-thumb.is-removed .pdf-thumb-page { border-color: var(--fail); opacity: .55; }
.sp .pdf-thumb.is-picked .pdf-thumb-page { border-color: var(--pass); }
.sp .pdf-thumb-mark { position: absolute; top: 6px; right: 6px; width: 26px; height: 26px; display: flex; align-items: center; justify-content: center; border-radius: 50%; background: var(--fail); color: #fff; font-weight: 800; font-size: 14px; }
.sp .pdf-thumb-mark.is-ok { background: var(--pass); }
.sp .pdf-thumb-foot { display: flex; align-items: center; justify-content: space-between; gap: 4px; font-size: 13px; font-weight: 700; color: var(--ink-2); }
.sp .pdf-thumb-foot a { font-weight: 600; }
.sp .pdf-thumb-tools { display: inline-flex; gap: 2px; }
.sp .pdf-thumb-tools span { display: inline-flex; gap: 2px; }
.sp .pdf-thumb-tools button { width: 26px; height: 26px; padding: 0; border: 1px solid var(--line); border-radius: 6px; background: var(--panel); color: var(--ink-2); font-size: 13px; line-height: 1; cursor: pointer; }
.sp .pdf-thumb-tools button:hover:not(:disabled) { border-color: var(--ink-3); color: var(--ink); }
.sp .pdf-thumb-tools button:disabled { opacity: .35; cursor: default; }
.sp .pdf-grid-out .pdf-thumb-page, .sp .pdf-grid-images .pdf-thumb-page { cursor: default; }
.sp .pdf-grid-images .pdf-thumb-page img { object-fit: contain; }
.sp .pdf-wm-preview { display: flex; align-items: center; justify-content: center; height: 150px; margin: 0 0 12px; border-radius: 10px; border: 1px solid var(--line); background: #fff; overflow: hidden; }
.sp .pdf-wm-preview span { font-family: Helvetica, Arial, sans-serif; font-weight: 700; white-space: nowrap; }
.sp .sign-pad { display: block; width: 100%; max-width: 640px; aspect-ratio: 900 / 260; border-radius: 12px; border: 2px dashed var(--line-strong); background: #fff; cursor: crosshair; touch-action: none; }
.sp .sign-current { display: flex; align-items: center; gap: 12px; margin: 10px 0 0; font-size: 14px; color: var(--ink-2); }
.sp .sign-current img { max-height: 56px; max-width: 260px; padding: 4px 8px; border-radius: 8px; background: #fff; border: 1px solid var(--line); }
.sp .sign-stage { position: relative; width: 100%; max-width: 760px; margin: 0 auto 8px; border: 1px solid var(--line); border-radius: 6px; background: #fff; overflow: hidden; cursor: copy; user-select: none; }
.sp .sign-stage > img { display: block; width: 100%; height: auto; pointer-events: none; }
.sp .sign-box { position: absolute; border: 1.5px dashed var(--focus); border-radius: 4px; cursor: move; touch-action: none; }
.sp .sign-box img { width: 100%; height: 100%; object-fit: contain; pointer-events: none; }
.sp .sign-remove { position: absolute; top: -12px; right: -12px; width: 24px; height: 24px; padding: 0; border: 0; border-radius: 50%; background: var(--fail); color: #fff; font-size: 12px; line-height: 1; cursor: pointer; }
.sp .sign-resize { position: absolute; right: -7px; bottom: -7px; width: 14px; height: 14px; border-radius: 3px; background: var(--focus); cursor: nwse-resize; }

@media (max-width: 640px) {
  .sp .pdf-grid { grid-template-columns: repeat(auto-fill, minmax(96px, 1fr)); gap: 8px; }
  .sp .pdf-list li { flex-wrap: wrap; }
  .sp .pdf-range { flex: 1 1 100%; width: 100%; order: 5; }
  .sp .pdf-thumb-tools button { width: 24px; height: 24px; }
}

/* ---- Batch C: heading checker, alt text checker, robots.txt tester ---- */
.sp .hc-counts { display: flex; flex-wrap: wrap; gap: 6px; margin: 14px 0 4px; }
.sp .hc-count { display: inline-flex; gap: 6px; align-items: baseline; padding: 4px 10px; border-radius: 8px; border: 1px solid var(--line); background: var(--panel); font-size: 14px; font-variant-numeric: tabular-nums; }
.sp .hc-count b { font-size: 12px; color: var(--ink-3); }
.sp .hc-count.is-zero { opacity: .5; }
.sp .hc-outline { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 4px; }
.sp .hc-outline li { margin-top: 0; margin-bottom: 0; display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 10px; padding: 6px 10px; border-radius: 8px; background: var(--pocket); font-size: 14.5px; min-width: 0; }
.sp .hc-outline .hc-l2 { margin-left: 18px; } .sp .hc-outline .hc-l3 { margin-left: 36px; } .sp .hc-outline .hc-l4 { margin-left: 54px; }
.sp .hc-outline .hc-l5 { margin-left: 72px; } .sp .hc-outline .hc-l6 { margin-left: 90px; }
.sp .hc-outline li.has-issue { box-shadow: inset 3px 0 0 var(--warn); }
.sp .hc-tag { flex: 0 0 auto; font-size: 11.5px; font-weight: 800; letter-spacing: .06em; color: var(--ink-3); }
.sp .hc-l1 .hc-tag { color: var(--ink); }
.sp .hc-text { flex: 1 1 200px; min-width: 0; overflow-wrap: anywhere; }
.sp .hc-issue { font-size: 12px; font-weight: 700; padding: 1px 7px; border-radius: 5px; background: var(--warn-bg); color: var(--warn); }
.sp .alt-list { list-style: none; margin: 12px 0 0; padding: 0; display: grid; gap: 8px; }
.sp .alt-item { display: flex; gap: 12px; padding: 10px; border-radius: 10px; border: 1px solid var(--line); background: var(--panel); min-width: 0; }
.sp .alt-thumb { flex: 0 0 72px; height: 72px; border-radius: 8px; background: var(--pocket); overflow: hidden; display: flex; align-items: center; justify-content: center; }
.sp .alt-thumb img { max-width: 100%; max-height: 100%; object-fit: contain; }
.sp .alt-body { flex: 1 1 auto; min-width: 0; display: flex; flex-direction: column; gap: 3px; align-items: flex-start; }
.sp .alt-text { font-size: 14.5px; overflow-wrap: anywhere; }
.sp .alt-src { font-size: 12.5px; color: var(--ink-3); }
.sp .alt-item.seo-check-fail .seo-badge { background: var(--fail-bg); color: var(--fail); }
.sp .alt-item.seo-check-warn .seo-badge { background: var(--warn-bg); color: var(--warn); }
.sp .alt-item.seo-check-pass .seo-badge { background: var(--pass-bg); color: var(--pass); }
.sp .text-fail { color: var(--fail); }
.sp .rt-file { font-family: var(--mono); max-height: 360px; overflow: auto; margin: 8px 0 0; padding: 8px 0 8px 3.4em; border-radius: 10px; border: 1px solid var(--line); background: var(--pocket); font-size: 13px; line-height: 1.6; }
.sp .rt-file li { margin: 0; padding: 0 10px; min-height: 1.6em; font-family: var(--mono); white-space: pre-wrap; overflow-wrap: anywhere; color: var(--ink-2); }
.sp .rt-file li::marker { color: var(--ink-3); font-size: 11.5px; }
.sp .rt-file li.is-group { background: rgba(127, 127, 127, .08); color: var(--ink); }
.sp .rt-file li.is-disallow { background: var(--fail-bg); color: var(--fail); font-weight: 700; }
.sp .rt-file li.is-allow { background: var(--pass-bg); color: var(--pass); font-weight: 700; }
@media (max-width: 640px) {
  .sp .hc-outline .hc-l3, .sp .hc-outline .hc-l4, .sp .hc-outline .hc-l5, .sp .hc-outline .hc-l6 { margin-left: 30px; }
  .sp .alt-thumb { flex-basis: 52px; height: 52px; }
}

/* ---- Batch C: UTM builder, favicon generator, background remover, crop, redact, doc to PDF ---- */
.sp .utm-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); }
.sp .utm-grid small, .sp .kit-field small { font-weight: 500; color: var(--ink-3); }
.sp .utm-history { list-style: none; margin: 6px 0 0; padding: 0; display: grid; gap: 4px; }
.sp .utm-history .kit-link { text-align: left; font-size: 13px; font-family: var(--mono); }
.sp .fav-preview { display: flex; flex-wrap: wrap; align-items: center; gap: 18px; margin: 16px 0 4px; padding: 14px; border-radius: 12px; border: 1px solid var(--line); background: var(--pocket); }
.sp .fav-tab { display: inline-flex; align-items: center; gap: 8px; min-width: 220px; max-width: 100%; padding: 8px 12px; border-radius: 10px 10px 0 0; background: var(--panel); box-shadow: 0 1px 0 var(--line); font-size: 13px; }
.sp .fav-tab span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.sp .fav-tab i { font-style: normal; color: var(--ink-3); }
.sp .fav-sizes { display: flex; flex-wrap: wrap; align-items: flex-end; gap: 16px; }
.sp .fav-sizes figure { margin: 0; display: flex; flex-direction: column; align-items: center; gap: 6px; }
.sp .fav-sizes figcaption { font-size: 12px; color: var(--ink-3); }
.sp .fav-sizes img { image-rendering: auto; }
.sp .fav-apple { border-radius: 16px; box-shadow: 0 2px 6px rgba(0, 0, 0, .2); }
.sp .bg-compare { position: relative; display: grid; max-width: 720px; margin: 0 auto; border-radius: 12px; overflow: hidden; border: 1px solid var(--line); background: #fff; }
.sp .bg-compare.is-checker { background: repeating-conic-gradient(#e6e8eb 0% 25%, #ffffff 0% 50%) 0 0 / 22px 22px; }
.sp .bg-compare img { grid-area: 1 / 1; display: block; width: 100%; height: auto; }
.sp .bg-compare .bg-compare-before { clip-path: inset(0 calc(100% - var(--split)) 0 0); }
.sp .bg-compare::after { content: ""; position: absolute; top: 0; bottom: 0; left: var(--split); width: 2px; margin-left: -1px; background: #fff; box-shadow: 0 0 0 1px rgba(0, 0, 0, .25); pointer-events: none; }
.sp .bg-compare-range { position: absolute; inset: 0; width: 100%; height: 100%; margin: 0; opacity: 0; cursor: ew-resize; }
.sp .crop-layout { display: grid; grid-template-columns: minmax(0, 300px) minmax(0, 1fr); gap: 20px; align-items: start; }
.sp .crop-stage { position: relative; width: 100%; border: 1px solid var(--line); border-radius: 6px; overflow: hidden; background: #fff; }
.sp .crop-stage img { display: block; width: 100%; height: 100%; object-fit: fill; }
.sp .crop-box { position: absolute; border: 2px dashed var(--focus); box-shadow: 0 0 0 9999px rgba(21, 24, 27, .55); pointer-events: none; }
.sp .crop-fields { display: grid; gap: 4px; margin-bottom: 8px; }
.sp .crop-input { display: flex; align-items: center; gap: 8px; }
.sp .crop-input .form-range { flex: 1; }
.sp .crop-input .custom-input { width: 76px; height: 36px; padding: 0 8px; }
.sp .crop-input em { font-style: normal; color: var(--ink-3); }
.sp .redact-find { margin-bottom: 14px; }
.sp .redact-find-row { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }
.sp .redact-find-row .custom-input { flex: 1 1 240px; min-width: 0; }
.sp .redact-stage { position: relative; max-width: 760px; margin: 0 auto; border: 1px solid var(--line); border-radius: 6px; background: #fff; overflow: hidden; cursor: crosshair; user-select: none; touch-action: none; }
.sp .redact-stage > img { display: block; width: 100%; height: auto; pointer-events: none; }
.sp .redact-box { position: absolute; background: #000; outline: 1px solid rgba(255, 255, 255, .5); }
.sp .redact-box.is-drawing { background: rgba(0, 0, 0, .55); outline: 1.5px dashed var(--focus); }
.sp .redact-box .sign-remove { top: -10px; right: -10px; width: 20px; height: 20px; font-size: 10px; }
.sp .doc-file { position: relative; cursor: pointer; }
@media (max-width: 640px) {
  .sp .crop-layout { grid-template-columns: 1fr; }
  .sp .crop-stage { max-width: 260px; margin: 0 auto; }
  .sp .fav-preview { gap: 12px; }
  .sp .fav-tab { min-width: 0; width: 100%; }
}

/* ---- Author box (blog posts) and footer social links ---- */
.author-box { margin: 32px 0 0; padding: 20px 22px; border-radius: 14px; border: 1px solid var(--line); background: var(--pocket); }
.author-box p { margin: 0; }
.author-box__label { font-size: 12.5px; font-weight: 700; letter-spacing: .1em; text-transform: uppercase; color: var(--ink-3); }
.author-box__name { margin-top: 6px !important; font-size: 18px; font-weight: 700; }
.author-box__name a { color: var(--ink); text-decoration: none; }
.author-box__name a:hover { text-decoration: underline; }
.author-box__name span { display: block; font-size: 14px; font-weight: 500; color: var(--ink-3); }
.author-box__bio { margin-top: 10px !important; font-size: 15px; line-height: 1.6; color: var(--ink-2); }
.author-box__links { list-style: none; margin: 14px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 8px; }
.author-box__links a { display: inline-block; padding: 5px 12px; border-radius: 999px; border: 1px solid var(--line-strong); font-size: 13.5px; font-weight: 600; color: var(--ink); text-decoration: none; }
.author-box__links a:hover { border-color: var(--ink-3); background: var(--panel); }
.foot__social { display: flex; flex-wrap: wrap; align-items: center; gap: 6px 14px; margin: -8px 0 22px; font-size: 14px; }
.foot__social span { color: var(--char-ink-2); }
.foot__social a, .foot__maker a { color: var(--char-ink); text-decoration: underline; text-underline-offset: 3px; opacity: .9; }
.foot__social a:hover, .foot__maker a:hover { opacity: 1; }
