/* SolarOwnersHub */
:root {
  --bg: #ffffff; --bg2: #f4f7f5; --ink: #14202e; --muted: #5b6878; --line: #e2e7ef;
  --brand: #0e7a5f; --brand-ink: #0a5c47; --accent: #ffc83d; --good: #0f8a4c; --bad: #c0392b;
  --radius: 10px; --shadow: 0 1px 2px rgba(20,32,46,.06), 0 4px 16px rgba(20,32,46,.06);
  --font: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
}
@media (prefers-color-scheme: dark) {
  :root:not([data-theme="light"]) {
    --bg: #0f1520; --bg2: #172030; --ink: #e8edf5; --muted: #9aa8bb; --line: #263247;
    --brand: #3fbf95; --brand-ink: #7fdcbc; --shadow: none;
  }
}
*, *::before, *::after { box-sizing: border-box; }
html { -webkit-text-size-adjust: 100%; }
body { margin: 0; background: var(--bg); color: var(--ink); font: 16px/1.6 var(--font); }
a { color: var(--brand); text-underline-offset: 2px; }
a:hover { color: var(--brand-ink); }
img, svg { max-width: 100%; }
h1, h2, h3 { line-height: 1.25; margin: 1.6em 0 .6em; }
h1 { font-size: clamp(1.7rem, 3.5vw, 2.4rem); margin-top: .6em; letter-spacing: -.01em; }
h2 { font-size: 1.35rem; }
p, ul, ol { margin: 0 0 1em; }
code, pre, .mono { font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .9em; }
.wrap { max-width: 1080px; margin: 0 auto; padding: 0 16px; }
.muted { color: var(--muted); }
.small { font-size: .85rem; }

/* Header */
.site-header { border-bottom: 1px solid var(--line); background: var(--bg); position: sticky; top: 0; z-index: 10; }
.hdr { display: flex; align-items: center; gap: 16px; min-height: 60px; flex-wrap: wrap; }
.brand { font-weight: 800; font-size: 1.15rem; color: var(--ink); text-decoration: none; display: inline-flex; align-items: center; gap: 6px; }
.brand .sfx { color: var(--muted); font-weight: 600; }
.brand .logo { background: var(--brand); color: var(--accent); border-radius: 7px; width: 28px; height: 28px; display: inline-grid; place-items: center; font-size: 16px; }
.nav { display: flex; gap: 4px; margin-left: auto; flex-wrap: wrap; }
.nav a { color: var(--ink); text-decoration: none; padding: 8px 10px; border-radius: 8px; font-size: .95rem; }
.nav a:hover, .nav a[aria-current] { background: var(--bg2); }
.nav-toggle { display: none; margin-left: auto; background: none; border: 1px solid var(--line); color: var(--ink); border-radius: 8px; padding: 6px 10px; font-size: 1.1rem; }
@media (max-width: 760px) {
  .nav-toggle { display: block; }
  .nav { display: none; width: 100%; flex-direction: column; padding-bottom: 10px; margin-left: 0; }
  .nav.open { display: flex; }
}

.main { padding-bottom: 40px; }
.crumbs { font-size: .85rem; color: var(--muted); margin-top: 16px; }
.crumbs a { color: var(--muted); }
.hero { padding: 24px 0 8px; }
.lead { font-size: 1.1rem; color: var(--muted); max-width: 760px; }
.updated { color: var(--muted); font-size: .9rem; margin-top: -.4em; }
.intro p { font-size: 1.05rem; max-width: 780px; }
.note { background: var(--bg2); border-left: 3px solid var(--accent); padding: 10px 14px; border-radius: 6px; }
.source { color: var(--muted); font-size: .85rem; border-top: 1px solid var(--line); padding-top: 10px; margin-top: 24px; }
.notice { background: var(--bg2); border: 1px dashed var(--line); border-radius: var(--radius); padding: 18px; margin: 20px 0; }

/* Cards */
.cards { display: grid; grid-template-columns: repeat(auto-fit, minmax(160px, 1fr)); gap: 12px; margin: 20px 0; }
.card { background: var(--bg2); border-radius: var(--radius); padding: 14px 16px; }
.card-label { color: var(--muted); font-size: .85rem; }
.card-value { font-size: 1.6rem; font-weight: 800; line-height: 1.2; margin: 4px 0; overflow-wrap: anywhere; }
.card-sub { color: var(--muted); font-size: .85rem; }

/* Buttons & forms */
.btn { display: inline-block; background: var(--brand); color: #fff; border: 0; border-radius: 8px; padding: 10px 16px; font: inherit; font-weight: 600; text-decoration: none; cursor: pointer; }
.btn:hover { background: var(--brand-ink); color: #fff; }
.btn-ghost { background: transparent; color: var(--brand); border: 1px solid var(--brand); }
.btn-ghost:hover { background: var(--bg2); color: var(--brand-ink); }
.btn-danger { background: var(--bad); }
.btn-cta { background: #0f8a4c; white-space: nowrap; }
.btn-cta:hover { background: #0b6e3c; }
input, select, textarea { font: inherit; color: var(--ink); background: var(--bg); border: 1px solid var(--line); border-radius: 8px; padding: 9px 10px; width: 100%; max-width: 100%; }
input:focus, select:focus, textarea:focus { outline: 2px solid var(--brand); outline-offset: 1px; }
.picker { display: flex; gap: 8px; align-items: flex-end; flex-wrap: wrap; margin: 12px 0 20px; }
.picker label { display: flex; flex-direction: column; gap: 4px; font-weight: 600; font-size: .9rem; flex: 1 1 260px; max-width: 360px; }

/* Tables */
.table-wrap { overflow-x: auto; margin: 12px 0 20px; border: 1px solid var(--line); border-radius: var(--radius); }
table.data { border-collapse: collapse; width: 100%; font-size: .95rem; }
table.data caption { text-align: left; padding: 10px 12px; color: var(--muted); font-size: .85rem; }
table.data th, table.data td { padding: 9px 12px; border-bottom: 1px solid var(--line); text-align: right; white-space: nowrap; }
table.data th:first-child, table.data td:first-child { text-align: left; }
table.data thead th { background: var(--bg2); font-size: .85rem; position: sticky; top: 0; }
table.data tbody th { font-weight: 600; }
table.data tbody tr:hover { background: var(--bg2); }
table.sortable thead th[data-sort] { cursor: pointer; user-select: none; }
table.sortable thead th[data-sort]::after { content: " ↕"; color: var(--muted); font-size: .8em; }
table.sortable thead th.asc::after { content: " ↑"; color: var(--ink); }
table.sortable thead th.desc::after { content: " ↓"; color: var(--ink); }

/* Charts */
.chart-wrap { margin: 12px 0 24px; }
.chart { width: 100%; height: auto; display: block; }
.chart .grid { stroke: var(--line); stroke-width: 1; }
.chart .axis { fill: var(--muted); font-size: 12px; font-family: var(--font); }
.chart .line1 { fill: none; stroke: var(--brand); stroke-width: 2.5; stroke-linejoin: round; }
.chart .line2 { fill: none; stroke: var(--muted); stroke-width: 1.5; stroke-dasharray: 4 3; }
.chart .dot { fill: var(--brand); }
.chart .bar { fill: var(--accent); stroke: #e0b400; }
.legend { font-size: .85rem; color: var(--muted); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.legend span { display: inline-block; width: 18px; height: 3px; background: var(--brand); margin-left: 8px; }
.legend .k2 { background: var(--muted); }

/* Offers */
.offer { display: grid; grid-template-columns: 1fr auto; gap: 8px 16px; align-items: center; border: 2px solid #0f8a4c; border-radius: var(--radius); padding: 16px 18px; margin: 20px 0; background: color-mix(in srgb, #0f8a4c 5%, var(--bg)); }
.offer-title { margin: 0 0 4px; font-size: 1.15rem; }
.offer-body p { margin: 0; }
.offer .disclosure { grid-column: 1 / -1; font-size: .78rem; color: var(--muted); margin: 0; }
@media (max-width: 600px) { .offer { grid-template-columns: 1fr; } .btn-cta { text-align: center; } }
.ad { margin: 20px 0; text-align: center; min-height: 0; }

/* Lists */
.cols { columns: 4 150px; padding-left: 0; list-style: none; }
.cols li { margin-bottom: 4px; break-inside: avoid; }
.link-cards { list-style: none; padding: 0; display: grid; grid-template-columns: repeat(auto-fit, minmax(230px, 1fr)); gap: 12px; }
.link-cards a { display: block; height: 100%; border: 1px solid var(--line); border-radius: var(--radius); padding: 14px; text-decoration: none; color: var(--ink); }
.link-cards a:hover { border-color: var(--brand); box-shadow: var(--shadow); }
.link-cards strong { display: block; color: var(--brand); margin-bottom: 4px; }
.link-cards span { color: var(--muted); font-size: .9rem; }
.state-links { margin-top: 32px; }
.assumptions li { margin-bottom: 4px; }

/* FAQ */
.faq details { border: 1px solid var(--line); border-radius: 8px; padding: 10px 14px; margin-bottom: 8px; }
.faq summary { font-weight: 600; cursor: pointer; }
.faq details p { margin: 8px 0 0; }

/* Calculators */
.calc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 20px; background: var(--bg2); border-radius: var(--radius); padding: 18px; margin: 16px 0; }
.calc-fields { display: grid; gap: 12px; align-content: start; }
.calc-fields label { display: block; font-weight: 600; font-size: .9rem; }
.calc fieldset { border: 1px solid var(--line); border-radius: 8px; padding: 8px 12px 12px; display: grid; gap: 10px; }
.calc legend { font-size: .85rem; color: var(--muted); }
.calc-out { background: var(--bg); border-radius: var(--radius); padding: 16px; align-self: start; }
.calc-out .big { font-size: 2rem; font-weight: 800; line-height: 1.2; }
.calc-out dl { display: grid; grid-template-columns: auto auto; gap: 6px 12px; margin: 12px 0 0; }
.calc-out dt { color: var(--muted); }
.calc-out dd { margin: 0; text-align: right; font-weight: 600; }
@media (max-width: 760px) { .calc { grid-template-columns: 1fr; } }

/* Prose */
.prose { max-width: 760px; }
.prose h2 { margin-top: 1.4em; }

/* Footer */
.site-footer { border-top: 1px solid var(--line); background: var(--bg2); padding: 28px 0 16px; margin-top: 40px; }
.foot-cols { display: grid; grid-template-columns: 2fr 1fr 1fr; gap: 24px; }
.foot-cols ul { list-style: none; padding: 0; margin: 0; }
.foot-cols li { margin-bottom: 4px; }
.foot-cols a { color: var(--ink); text-decoration: none; }
.foot-cols a:hover { text-decoration: underline; }
.foot-h { font-size: .9rem; margin: 0 0 8px; color: var(--muted); text-transform: uppercase; letter-spacing: .04em; }
@media (max-width: 700px) { .foot-cols { grid-template-columns: 1fr; } }

/* Admin */
/* admin layout: grouped sidebar + one topic per screen */
.is-admin .wrap{ max-width: 1320px; }
.is-admin .site-header .nav,.is-admin .nav-toggle,.is-admin .site-footer{ display: none; }
.is-admin .admin{ display: grid; grid-template-columns: 220px minmax(0, 1fr); gap: 28px; align-items: start; margin-top: 16px; }
.is-admin .admin:has(> .admin-main:only-child){ grid-template-columns: minmax(0, 1fr); }
.is-admin .admin-side{ position: sticky; top: 12px; }
.is-admin .admin-side > summary{ display: none; }
.is-admin .admin-nav{ display: grid; gap: 14px; }
.is-admin .admin-group{ display: grid; gap: 2px; }
.is-admin .admin-group-h{ font-size: .72rem; text-transform: uppercase; letter-spacing: .06em; color: var(--muted); font-weight: 700; padding: 0 10px 2px; }
.is-admin .admin-nav a{ padding: 6px 10px; border-radius: 6px; text-decoration: none; color: var(--ink); font-size: .92rem; display: flex; justify-content: space-between; align-items: center; gap: 6px; }
.is-admin .admin-nav a:hover{ background: var(--bg2); }
.is-admin .admin-nav a[aria-current]{ background: var(--brand); color: #fff; }
.is-admin .badge{ display: inline-block; min-width: 1.5em; padding: 0 6px; border-radius: 999px; background: #e8a400; color: #1a1a1a; font-size: .75rem; font-weight: 700; text-align: center; line-height: 1.5; }
.is-admin .muted-badge{ background: var(--bg2); color: var(--muted); font-weight: 600; }
.is-admin .admin-main h1{ margin-top: 0; }
.is-admin .admin-intro{ color: var(--muted); margin: -4px 0 16px; max-width: 760px; }
.is-admin .tabs{ display: flex; gap: 4px; flex-wrap: wrap; border-bottom: 1px solid var(--line); margin: 0 0 14px; }
.is-admin .tabs a{ padding: 8px 12px; text-decoration: none; color: var(--ink); border-bottom: 3px solid transparent; margin-bottom: -1px; font-size: .92rem; }
.is-admin .tabs a[aria-current]{ border-bottom-color: var(--brand); font-weight: 700; color: var(--brand); }
.is-admin .list-tools{ display: flex; gap: 10px; flex-wrap: wrap; align-items: center; justify-content: space-between; margin: 0 0 12px; }
.is-admin .list-tools .search input{ width: 240px; max-width: 100%; }
.is-admin .pager{ display: flex; gap: 12px; align-items: center; margin: 12px 0; }
.is-admin .quick{ display: flex; flex-wrap: wrap; gap: 8px; }
.is-admin .admin-todo{ border: 1px solid var(--line); border-left: 4px solid #e8a400; border-radius: var(--radius); padding: 10px 16px; margin: 0 0 18px; }
.is-admin .admin-todo h2{ margin: 4px 0 6px; font-size: 1.05rem; }
.is-admin .admin-todo ul{ margin: 0; padding-left: 18px; }
.is-admin .sticky-actions{ position: sticky; bottom: 0; background: var(--bg); padding: 10px 0; border-top: 1px solid var(--line); }
.is-admin code.copy{ user-select: all; cursor: copy; white-space: nowrap; }
@media (max-width: 860px) {
  .is-admin .admin{ grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .is-admin .admin-side{ position: static; border: 1px solid var(--line); border-radius: var(--radius); padding: 6px 10px; }
  .is-admin .admin-side > summary{ display: block; cursor: pointer; font-weight: 700; padding: 4px 0; }
  .is-admin .admin-nav{ grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); padding: 8px 0; }
}
.flash { padding: 10px 14px; border-radius: 8px; margin: 12px 0; }
.flash.ok { background: color-mix(in srgb, var(--good) 14%, var(--bg)); border: 1px solid var(--good); }
.flash.err { background: color-mix(in srgb, var(--bad) 12%, var(--bg)); border: 1px solid var(--bad); }
.form { display: grid; gap: 14px; max-width: 760px; }
.form.narrow { max-width: 380px; }
.form label { display: grid; gap: 4px; font-weight: 600; font-size: .92rem; }
.form label small { font-weight: 400; color: var(--muted); }
.form label.check { display: flex; align-items: center; gap: 8px; }
.form label.check input { width: auto; }
.form fieldset { border: 1px solid var(--line); border-radius: var(--radius); padding: 12px 16px 16px; display: grid; gap: 12px; }
.form legend { font-weight: 700; padding: 0 6px; }
.form .actions { display: flex; gap: 8px; }
.inline { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.inline input[type=file] { width: auto; }
pre.code { background: var(--bg2); padding: 12px; border-radius: 8px; overflow-x: auto; white-space: pre-wrap; word-break: break-all; font-size: .82rem; }
.checks { list-style: none; padding: 0; columns: 2 260px; }
.checks .ok { color: var(--good); }
.checks .bad { color: var(--bad); }
.is-admin table.data td { white-space: normal; text-align: left; }

/* Mobile safety net: long words/links wrap, nothing pushes the page sideways */
body{overflow-x:clip}
.main,.prose,.intro,.card,.offer,.faq,.source,.crumbs{overflow-wrap:break-word}
.main > *{max-width:100%}
img,svg,iframe,video{max-width:100%}
.prose table{display:block;max-width:100%;overflow-x:auto}
@media (max-width:400px){.card-value{font-size:1.35rem}.cards{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.card{padding:10px 12px}}

.brand .sfx{margin-left:-6px}

/* ---------- v2: blog, ads, popup, lead form, calculators ---------- */
.post-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:16px;margin:12px 0 20px}
@media (max-width:860px){.post-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (max-width:560px){.post-grid{grid-template-columns:minmax(0,1fr)}}
.post-card{border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--bg);transition:box-shadow .15s,transform .15s}
.post-card:hover{box-shadow:var(--shadow);transform:translateY(-2px)}
.post-card a{display:flex;flex-direction:column;height:100%;color:var(--ink);text-decoration:none}
.post-card img{width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;display:block;background:#0b1f4d}
.post-card .post-cat{margin:12px 14px 0;font-size:.75rem;font-weight:700;color:var(--brand);text-transform:uppercase;letter-spacing:.04em}
.post-card h3{margin:6px 14px 6px;font-size:1.05rem;line-height:1.35}
.post-card p{margin:0 14px 10px;color:var(--muted);font-size:.92rem}
.post-card .post-meta{margin:auto 14px 14px;color:var(--muted);font-size:.8rem}
.cat-chips{display:flex;flex-wrap:wrap;gap:8px;margin:8px 0 18px}
.cat-chips a{border:1px solid var(--line);border-radius:999px;padding:6px 14px;text-decoration:none;color:var(--ink);font-size:.9rem}
.cat-chips a.on,.cat-chips a:hover{border-color:var(--brand);color:var(--brand);background:var(--bg2)}
.post{max-width:780px}
.post .kicker{margin:8px 0 0;font-size:.8rem;font-weight:700;text-transform:uppercase;letter-spacing:.05em}
.post .kicker a{text-decoration:none}
.byline{color:var(--muted);font-size:.9rem;margin:-4px 0 14px}
.post-hero{width:100%;height:auto;border-radius:var(--radius);display:block;margin:0 0 16px;aspect-ratio:16/9;background:#0b1f4d}
.toc{border:1px solid var(--line);border-radius:var(--radius);padding:12px 18px;margin:16px 0;background:var(--bg2)}
.toc-h{font-weight:700;margin:0 0 6px}.toc ol{margin:0;padding-left:20px}.toc li{margin:4px 0}
.prose table{border-collapse:collapse;margin:14px 0;font-size:.95rem}
.prose th,.prose td{border:1px solid var(--line);padding:8px 10px;text-align:left;vertical-align:top}
.prose thead th{background:var(--bg2)}
.prose h2{scroll-margin-top:80px}
.sources ul{font-size:.9rem;color:var(--muted)}
.editorial-note{font-size:.85rem;color:var(--muted);border-top:1px solid var(--line);padding-top:10px;margin-top:20px}
.steps li{margin:6px 0}
.link-cards.big a{padding:18px}
.two-col{display:grid;grid-template-columns:1fr 1fr;gap:24px}
@media (max-width:640px){.two-col{grid-template-columns:1fr}}
.rank-list{padding-left:22px;margin:0}.rank-list li{padding:6px 0;border-bottom:1px solid var(--line);display:list-item}
.rank-list li span{float:right;font-weight:700}
/* ads */
.ad{margin:22px auto;text-align:center;overflow:hidden;max-width:100%}
.ad-label{display:block;font-size:.65rem;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);margin-bottom:4px}
.ad-ph{border:2px dashed #c3cde0;border-radius:10px;padding:18px;color:var(--muted);font-size:.85rem;background:repeating-linear-gradient(45deg,transparent,transparent 8px,rgba(11,95,255,.04) 8px,rgba(11,95,255,.04) 16px)}
.ad-sticky{display:none}
@media (max-width:760px){
  .ad-sticky{display:block;position:fixed;left:0;right:0;bottom:0;z-index:40;background:var(--bg);box-shadow:0 -2px 10px rgba(0,0,0,.15);padding:4px 34px 4px 4px;min-height:54px}
  .ad-sticky .ad{margin:0}
  .ad-sticky-x{position:absolute;top:4px;right:4px;width:26px;height:26px;border-radius:50%;border:0;background:#e6eaf2;cursor:pointer;font-size:16px;line-height:1}
  body.has-sticky-ad{padding-bottom:64px}
}
/* popup */
.pop{position:fixed;inset:0;z-index:60;background:rgba(8,20,52,.55);display:flex;align-items:center;justify-content:center;padding:16px}
.pop[hidden]{display:none}
.pop-box{position:relative;background:var(--bg);color:var(--ink);border-radius:16px;max-width:440px;width:100%;padding:26px 22px 18px;box-shadow:0 20px 60px rgba(0,0,0,.3);text-align:center;border-top:6px solid #0f8a4c}
.pop-t{font-size:1.35rem;font-weight:800;margin:0 0 8px;line-height:1.25}
.pop-x{position:absolute;top:8px;right:10px;border:0;background:none;font-size:26px;cursor:pointer;color:var(--muted);line-height:1}
.pop-no{border:0;background:none;color:var(--muted);text-decoration:underline;cursor:pointer;margin-top:10px;font:inherit;font-size:.85rem}
.pop .btn{display:block;width:100%;margin-top:8px;padding:13px}
.pop .disclosure{font-size:.72rem;color:var(--muted);margin:10px 0 0}
.pop-form{display:grid;gap:10px;text-align:left}
.pop-consent{font-size:.78rem;color:var(--muted);display:flex;gap:8px;align-items:flex-start}
.pop-consent input{width:auto;margin-top:3px}
.pop-msg{margin:0;font-size:.9rem;color:var(--good)}
.pop-form.done input,.pop-form.done .pop-consent,.pop-form.done button{display:none}
.hp{position:absolute!important;left:-9999px!important;width:1px;height:1px;overflow:hidden}
body.pop-open{overflow:hidden}
/* lead form */
.lead-form{max-width:620px;display:grid;gap:14px;background:var(--bg2);padding:20px;border-radius:var(--radius)}
.lead-form label{display:grid;gap:4px;font-weight:600;font-size:.92rem}
.lead-form .two{display:grid;grid-template-columns:1fr 1fr;gap:12px}
@media (max-width:520px){.lead-form .two{grid-template-columns:1fr}}
.lead-form .consent{display:flex;gap:10px;font-weight:400;font-size:.8rem;color:var(--muted);align-items:flex-start}
.lead-form .consent input{width:auto;margin-top:3px}
.flash.err{background:#fdecea;border:1px solid var(--bad);padding:10px 14px;border-radius:8px}

[hidden]{display:none!important}
/* v3: interlinking, author, related */
.byline a{color:inherit;font-weight:600}
.byline .avatar{display:inline-grid;place-items:center;width:22px;height:22px;border-radius:50%;background:var(--brand,#0b5fff);color:#ffd23f;font-size:.75rem;margin-right:6px;vertical-align:-5px}
.read-also{border-left:4px solid var(--brand,#0b5fff);background:var(--bg2);border-radius:0 var(--radius) var(--radius) 0;padding:12px 16px;margin:22px 0}
.read-also span{display:block;font-size:.75rem;text-transform:uppercase;letter-spacing:.06em;color:var(--muted);font-weight:700}
.read-also a{font-weight:700}
.prev-next{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin:28px 0}
.prev-next a{display:block;border:1px solid var(--line);border-radius:var(--radius);padding:12px 14px;text-decoration:none;color:var(--ink);font-weight:600}
.prev-next a:last-child{text-align:right}
.prev-next span{display:block;font-size:.8rem;color:var(--muted);font-weight:400}
.author-head{display:flex;gap:18px;align-items:flex-start;margin-bottom:8px}
.author-avatar{flex:0 0 72px;height:72px;border-radius:50%;display:grid;place-items:center;background:var(--brand,#0b5fff);color:#ffd23f;font-size:2rem}
.author-head h1{margin-top:0}
.editorial-note p{margin:.3em 0}
@media (max-width:560px){.prev-next{grid-template-columns:1fr}.prev-next a:last-child{text-align:left}.author-head{flex-direction:column}.author-avatar{flex-basis:auto;width:56px;height:56px}}

/* v4: solar owners platform */
.warn-c{color:#b26a00}
.stars{position:relative;display:inline-block;width:5.4em;height:1em;vertical-align:-2px;font-size:1rem;line-height:1}
.stars::before,.stars-fill::before{content:"★★★★★";letter-spacing:.08em;position:absolute;left:0;top:0}
.stars::before{color:var(--line)}
.stars-fill{position:absolute;left:0;top:0;height:100%;overflow:hidden;white-space:nowrap}
.stars-fill::before{color:#e8a400}
.stars.none{width:auto;font-size:.85rem;color:var(--muted)}.stars.none::before{content:none}
.pill{display:inline-block;font-size:.72rem;font-weight:700;padding:1px 8px;border-radius:999px;border:1px solid currentColor;line-height:1.5;white-space:nowrap}
.pill-active{color:var(--good)}.pill-closed{color:var(--bad)}.pill-restructured{color:#b26a00}
.brand-cards a{display:grid;gap:4px}
.brand-meta{font-size:.82rem;color:var(--muted)}
.brand-rating{font-size:.9rem}
.brand-head{display:flex;flex-wrap:wrap;gap:10px;align-items:center;margin:-4px 0 6px}
.notice.warn{border-left:4px solid #b26a00}
table.facts th{width:30%;white-space:normal}
.pros-cons{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr));gap:16px;margin:8px 0 20px}
.pros-cons>div{border:1px solid var(--line);border-radius:var(--radius);padding:12px 16px}
.pros-cons h3{margin:.2em 0 .4em}
ul.pros,ul.cons{list-style:none;padding:0;margin:0;display:grid;gap:8px}
ul.pros li,ul.cons li{padding-left:26px;position:relative}
ul.pros li::before{content:"✓";position:absolute;left:0;color:var(--good);font-weight:800}
ul.cons li::before{content:"✕";position:absolute;left:0;color:var(--bad);font-weight:800}
.cta-box{border:2px solid var(--brand);border-radius:var(--radius);padding:16px 18px;margin:22px 0;background:var(--bg2)}
.cta-box h2{margin:.1em 0 .4em;font-size:1.2rem}
.lead-mini{display:flex;flex-wrap:wrap;gap:10px;align-items:end}
.lead-mini label{display:grid;gap:4px;font-size:.9rem;flex:1 1 160px}
.lead-mini input{padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:var(--bg);color:var(--ink)}
.reviews .review,.comments .comment{border-top:1px solid var(--line);padding:12px 0}
.review header{display:flex;flex-wrap:wrap;gap:8px;align-items:center}
.review-summary{display:flex;flex-wrap:wrap;gap:18px;align-items:center;margin:8px 0 14px}
.big-rating{font-size:2.6rem;font-weight:800;line-height:1}.big-rating small{font-size:1rem;color:var(--muted)}
.dist{list-style:none;margin:0;padding:0;display:grid;gap:3px;min-width:200px;font-size:.85rem}
.dist li{display:grid;grid-template-columns:28px 1fr 28px;gap:8px;align-items:center}
.dist .bar{height:8px;background:var(--bg2);border-radius:4px;overflow:hidden}.dist .bar span{display:block;height:100%;background:#e8a400}
.reply{background:var(--bg2);border-radius:8px;padding:8px 12px;margin-top:6px;font-size:.92rem}
details.write{margin-top:14px;border:1px solid var(--line);border-radius:var(--radius);padding:10px 14px}
details.write summary{font-weight:700;cursor:pointer}
.ugc-form{display:grid;gap:12px;margin-top:10px}
.ugc-form label{display:grid;gap:4px;font-size:.9rem}
.ugc-form input:not([type=checkbox]):not([type=radio]),.ugc-form textarea,.ugc-form select{padding:10px;border:1px solid var(--line);border-radius:8px;font:inherit;background:var(--bg);color:var(--ink);width:100%}
.ugc-form .two{display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,220px),1fr));gap:12px}
.rating-in{border:0;padding:0;margin:0;display:flex;flex-wrap:wrap;gap:6px 14px}
.rating-in legend{font-size:.9rem;margin-bottom:4px}
.rating-in label{display:inline-flex;gap:4px;align-items:center;color:#e8a400;font-size:1rem}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}
.consent{display:flex!important;gap:8px;align-items:flex-start;font-size:.85rem!important}
.consent input{margin-top:4px}
.action-cards{list-style:none;margin:18px 0 0;padding:0;display:grid;grid-template-columns:repeat(auto-fit,minmax(min(100%,230px),1fr));gap:12px}
.action-cards a{display:grid;gap:4px;height:100%;padding:16px;border-radius:var(--radius);background:var(--brand);color:#fff;text-decoration:none}
.action-cards a span{opacity:.88;font-size:.92rem}
.action-cards a:hover{background:var(--brand-ink);color:#fff}
.quick-quote{margin:18px 0}
.quick-quote .calc-fields{grid-template-columns:repeat(auto-fit,minmax(min(100%,160px),1fr));align-items:end}
.eyebrow{font-size:.75rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);font-weight:700;margin:0 0 6px}
.orphan-strip{background:var(--bg2);border-radius:var(--radius);padding:12px 16px;margin:22px 0}
.chip{display:inline-block;border:1px solid var(--line);border-radius:999px;padding:3px 12px;margin:3px 4px 3px 0;text-decoration:none;background:var(--bg)}
.result-card{border-radius:var(--radius);padding:16px 18px;margin:18px 0;border:2px solid var(--line)}
.result-card.good{border-color:var(--good)}.result-card.warn{border-color:#b26a00}.result-card.bad{border-color:var(--bad)}
.verdict{font-size:1.5rem;font-weight:800;margin:0}
.result-card.good .verdict{color:var(--good)}.result-card.warn .verdict{color:#b26a00}.result-card.bad .verdict{color:var(--bad)}
.mod-item{border:1px solid var(--line);border-radius:var(--radius);padding:12px;margin:10px 0}
.reply-form{display:grid;gap:6px;margin-top:8px}.reply-form textarea{width:100%}
.filters{display:flex;flex-wrap:wrap;gap:10px;align-items:end;margin:12px 0}
.quick-quote{display:block}
.quick-quote .eyebrow{margin-bottom:10px}
/* review widgets */
.widget-reviews,.widget-top{border:1px solid var(--line);border-radius:12px;padding:14px 16px;margin:24px 0;background:var(--card,#fff)}
.widget-reviews h2,.widget-top h2{margin-top:0}
.w-summary{margin:4px 0 8px}.w-links{font-size:.9rem;margin:10px 0}
.w-rating{text-decoration:none;white-space:nowrap}
/* guide editor (admin) */
.is-admin .card{background:var(--bg);border:1px solid var(--line);border-radius:12px;padding:16px 18px;margin-bottom:16px}
.is-admin .card h2{font-size:1.05rem;margin:0 0 10px}.is-admin .card h3{font-size:.95rem;margin:14px 0 6px}
.is-admin .card label{display:grid;gap:4px;font-weight:600;font-size:.92rem;margin-bottom:12px}
.is-admin .card input:not([type=checkbox]):not([type=radio]),.is-admin .card select,.is-admin .card textarea{width:100%}
.is-admin .card label.check{display:flex;gap:8px;align-items:center;font-weight:400}
.is-admin .row-between{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.is-admin .row-between .tabs{margin:0;border:0}
.is-admin .btn-sm{padding:5px 10px;font-size:.85rem}.is-admin .btn.block{display:block;width:100%}
.is-admin .btn-danger{background:#b3261e;border-color:#b3261e;color:#fff}
.is-admin .tag{display:inline-block;padding:1px 9px;border-radius:20px;font-size:.75rem;font-weight:700;background:var(--bg2)}
.is-admin .tag.ok{background:#e3f5e8;color:#16723a}.is-admin .tag.warn{background:#fff1dc;color:#8a5200}.is-admin .tag.info{background:#e3effd;color:#1d55a8}
.is-admin .nowrap{white-space:nowrap}.is-admin .small{font-size:.85rem}
.is-admin .posts-table td{vertical-align:top}.is-admin .posts-table .post-title{font-weight:700;text-decoration:none;color:var(--ink)}.is-admin .posts-table .post-title:hover{text-decoration:underline}
.is-admin .list-filter{margin:6px 0 12px}.is-admin .list-filter input[type=search]{width:300px;max-width:100%}.is-admin .list-filter select{width:auto}
.is-admin .schedule-card{border-left:4px solid var(--brand)!important}.is-admin .schedule-card form{gap:6px}.is-admin .schedule-card .small.muted{margin:8px 0 0}
.is-admin .ed-cols{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:16px;align-items:start}
@media (max-width:1100px){.is-admin .ed-cols{grid-template-columns:1fr}}
.is-admin .col-side .card:first-child{position:sticky;top:12px}
.is-admin .prefix-input{display:flex;align-items:stretch;border:1px solid var(--line);border-radius:8px;overflow:hidden;font-weight:400}
.is-admin .prefix-input span{background:var(--bg2);padding:9px 10px;color:var(--muted);white-space:nowrap;font-size:.85rem;max-width:55%;overflow:hidden;text-overflow:ellipsis}
.is-admin .prefix-input input{border:0!important;border-radius:0!important}
.is-admin .counter{font-weight:400;font-size:.8rem;margin-left:6px}.is-admin .counter.ok{color:#16723a}.is-admin .counter.warn{color:#a86400}.is-admin .counter.bad{color:#b3261e}
.is-admin .serp{border:1px solid var(--line);border-radius:8px;padding:12px 14px;font-family:Arial,sans-serif;max-width:620px;margin:6px 0;background:#fff}
.is-admin .serp-url{color:#202124;font-size:.8rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.is-admin .serp-title{color:#1a0dab;font-size:1.2rem;line-height:1.3;margin:2px 0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.is-admin .serp-desc{color:#4d5156;font-size:.875rem;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.is-admin .ed-bar{display:flex;flex-wrap:wrap;gap:4px;padding:6px;border:1px solid var(--line);border-bottom:0;border-radius:8px 8px 0 0;background:var(--bg2);position:sticky;top:0;z-index:2}
.is-admin .ed-bar button{border:1px solid var(--line);background:var(--bg);color:var(--ink);border-radius:6px;padding:4px 9px;cursor:pointer;font:inherit;font-size:.82rem}
.is-admin .ed-bar button:hover,.is-admin .ed-bar button.on{border-color:var(--brand);color:var(--brand)}
.is-admin .ed-area{min-height:320px;border:1px solid var(--line);border-radius:0 0 8px 8px;padding:12px 18px;background:var(--bg);outline:none;overflow:auto;max-height:75vh;font-weight:400}
.is-admin .ed-area:focus{border-color:var(--brand)}
.is-admin .ed-area img{max-width:100%;height:auto}.is-admin .ed-area table{border-collapse:collapse}.is-admin .ed-area td,.is-admin .ed-area th{border:1px solid var(--line);padding:5px 8px}
.is-admin .ed-area blockquote{border-left:3px solid var(--brand);margin:0;padding-left:12px;color:var(--muted)}
.is-admin .ed-area .sc{display:block;background:#fff8e3;border:1px dashed #e8a400;border-radius:8px;padding:8px 12px;margin:8px 0;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;color:#6b4e00;user-select:all}
.is-admin .ed-area .sc::before{content:"★ Review widget: ";font-family:system-ui,sans-serif;font-weight:700}
.is-admin textarea.ed-src{border-radius:0 0 8px 8px;min-height:520px;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:.85rem;background:#1e1e1e;color:#e6e6e6;line-height:1.5}
.is-admin .rep-row{display:grid;gap:6px;border:1px dashed var(--line);padding:10px;border-radius:8px;margin-bottom:8px}
.is-admin .src-row{grid-template-columns:1fr 1fr auto;align-items:center}
@media (max-width:700px){.is-admin .src-row{grid-template-columns:1fr}}
.is-admin .rep-row button{justify-self:end}
.is-admin .thumb{width:100%;border-radius:8px;margin-bottom:10px}
.is-admin .seo-checks{list-style:none;padding:0;margin:0;font-size:.88rem}.is-admin .seo-checks li{padding:3px 0}.is-admin .seo-checks li.ok{color:#16723a}.is-admin .seo-checks li.bad{color:#b3261e}
.is-admin .seo-checks .muted{color:var(--muted)}
.is-admin .seo-score{font-size:1rem;padding:6px 10px!important;border-radius:6px;margin-bottom:6px;background:var(--bg2);color:var(--ink)!important}
.is-admin .seo-score.ok{background:#e3f5e8}.is-admin .seo-score.warn{background:#fff1dc}.is-admin .seo-score.bad{background:#fdecea}
.is-admin .schedule-card select{width:auto}
/* front-end fixes: text tables wrap, checkboxes stay small, pager spacing */
table.data.facts th,table.data.facts td,table.data.text th,table.data.text td{white-space:normal;text-align:left;vertical-align:top}
table.data.facts th{width:30%;min-width:110px}
table.data.text td:first-child{min-width:120px}
.consent input[type=checkbox],label.check input[type=checkbox]{width:auto!important;flex:0 0 auto;min-width:16px;height:16px}
.pager{display:flex;gap:14px;align-items:center;flex-wrap:wrap;margin:16px 0}
.table-wrap{max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
@media (max-width:600px){table.data.facts th{width:38%}table.data th,table.data td{padding:8px 10px}}
