/* Shared base theme for the utility-tools portfolio. Light + dark, no deps. */
:root{
  --bg:#f7f8fa; --surface:#ffffff; --surface-2:#eef1f5; --border:#d9dee6;
  --ink:#161a20; --ink-soft:#4a5361; --ink-faint:#7a8494;
  --accent:#2f6df6; --accent-ink:#1b4fd0;
  --good:#1a8f4c; --warn:#b4770a; --bad:#c62f38; --crit:#8b1a6e;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
  --radius:10px; --maxw:960px;
}
@media (prefers-color-scheme:dark){:root:not([data-theme="light"]){
  --bg:#0e1116; --surface:#161b22; --surface-2:#1d232c; --border:#2b333f;
  --ink:#e8edf4; --ink-soft:#b3bdca; --ink-faint:#7d8896;
  --accent:#5b8bff; --accent-ink:#8fb0ff;
  --good:#3fce7c; --warn:#e0a53a; --bad:#ff6b73; --crit:#e06bc0;
}}
:root[data-theme="dark"]{
  --bg:#0e1116; --surface:#161b22; --surface-2:#1d232c; --border:#2b333f;
  --ink:#e8edf4; --ink-soft:#b3bdca; --ink-faint:#7d8896;
  --accent:#5b8bff; --accent-ink:#8fb0ff;
  --good:#3fce7c; --warn:#e0a53a; --bad:#ff6b73; --crit:#e06bc0;
}
*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{margin:0;background:var(--bg);color:var(--ink);font-family:var(--sans);
  line-height:1.55;font-size:16px}
.wrap{max-width:var(--maxw);margin:0 auto;padding:0 16px}
header.site{border-bottom:1px solid var(--border);background:var(--surface)}
header.site .wrap{display:flex;align-items:center;justify-content:space-between;
  gap:12px;padding-top:14px;padding-bottom:14px;flex-wrap:wrap}
header.site .brand{font-weight:700;letter-spacing:-.01em;font-size:1.05rem}
header.site nav a{color:var(--ink-soft);text-decoration:none;margin-left:14px;font-size:.92rem}
header.site nav a:hover{color:var(--accent-ink)}
main{padding:28px 0 56px}
h1{font-size:1.7rem;line-height:1.2;margin:.2em 0 .3em;letter-spacing:-.02em}
h2{font-size:1.15rem;margin:1.8em 0 .5em}
.lede{color:var(--ink-soft);font-size:1.05rem;max-width:68ch;margin:0 0 1.4em}
.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);
  padding:18px 18px;margin:0 0 18px}
label{display:block;font-weight:600;font-size:.9rem;margin:0 0 6px}
.hint{color:var(--ink-faint);font-size:.82rem;font-weight:400}
input[type=text],input[type=number],select,textarea{
  width:100%;padding:10px 12px;border:1px solid var(--border);border-radius:8px;
  background:var(--surface-2);color:var(--ink);font-size:1rem;font-family:var(--sans)}
input:focus,select:focus,textarea:focus{outline:2px solid var(--accent);outline-offset:1px;border-color:var(--accent)}
button{background:var(--accent);color:#fff;border:0;border-radius:8px;padding:10px 16px;
  font-size:.95rem;font-weight:600;cursor:pointer;font-family:var(--sans)}
button:hover{filter:brightness(1.06)}
button.ghost{background:transparent;color:var(--ink-soft);border:1px solid var(--border)}
.row{display:flex;gap:12px;flex-wrap:wrap}
.row>*{flex:1 1 180px}
table{width:100%;border-collapse:collapse;font-size:.9rem}
th,td{text-align:right;padding:8px 10px;border-bottom:1px solid var(--border)}
th:first-child,td:first-child{text-align:left}
thead th{position:sticky;top:0;background:var(--surface);color:var(--ink-soft);
  font-size:.78rem;text-transform:uppercase;letter-spacing:.04em;border-bottom:2px solid var(--border)}
tbody tr:hover{background:var(--surface-2)}
code,.mono{font-family:var(--mono);font-size:.88em}
.pill{display:inline-block;padding:2px 9px;border-radius:999px;font-size:.78rem;font-weight:700}
.pill.good{background:color-mix(in srgb,var(--good) 18%,transparent);color:var(--good)}
.pill.warn{background:color-mix(in srgb,var(--warn) 20%,transparent);color:var(--warn)}
.pill.bad{background:color-mix(in srgb,var(--bad) 18%,transparent);color:var(--bad)}
.pill.crit{background:color-mix(in srgb,var(--crit) 20%,transparent);color:var(--crit)}
.pill.muted{background:var(--surface-2);color:var(--ink-faint)}
.note{font-size:.85rem;color:var(--ink-faint);border-top:1px solid var(--border);
  margin-top:22px;padding-top:14px}
.note a{color:var(--accent-ink)}
.tablewrap{overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius)}
.big{font-size:2rem;font-weight:800;letter-spacing:-.02em;line-height:1.1}
.themed-toggle{background:none;border:1px solid var(--border);color:var(--ink-soft);
  border-radius:8px;padding:5px 10px;font-size:.8rem;cursor:pointer}
footer.site{border-top:1px solid var(--border);color:var(--ink-faint);font-size:.82rem;padding:20px 0}

/* ad slots */
.ad-slot{margin:22px 0;min-height:90px;display:flex;align-items:center;justify-content:center}
.ad-ph{width:100%;min-height:90px;border:1px dashed var(--border);border-radius:8px;
  display:flex;align-items:center;justify-content:center;color:var(--ink-faint);
  font-size:.72rem;letter-spacing:.15em;text-transform:uppercase;background:var(--surface-2)}
.prose p{max-width:72ch;color:var(--ink-soft)}
.prose h2{color:var(--ink)}
.prose a{color:var(--accent-ink)}
.toolgrid{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:16px;margin:22px 0}
.toolgrid a.tool{display:block;text-decoration:none;color:inherit;background:var(--surface);
  border:1px solid var(--border);border-radius:var(--radius);padding:18px;transition:border-color .15s}
.toolgrid a.tool:hover{border-color:var(--accent)}
.toolgrid .tool h3{margin:0 0 6px;font-size:1.05rem}
.toolgrid .tool p{margin:0;font-size:.9rem;color:var(--ink-soft)}

/* FAQ (accessible <details>; content stays crawlable for FAQPage schema) */
.faq{margin:8px 0 4px}
.faq details{border:1px solid var(--border);border-radius:8px;margin:0 0 8px;background:var(--surface);padding:0 14px}
.faq summary{cursor:pointer;font-weight:600;padding:12px 2px;font-size:.95rem;list-style:none}
.faq summary::-webkit-details-marker{display:none}
.faq summary::before{content:"+";color:var(--accent);font-weight:700;margin-right:8px}
.faq details[open] summary::before{content:"–"}
.faq details[open] summary{border-bottom:1px solid var(--border);margin-bottom:6px}
.faq p{margin:0 0 12px;color:var(--ink-soft);font-size:.92rem;max-width:70ch}
