/* LLMs Ledger brand layer for the Roxlist public theme.
   Navy #0B253C · green #14B754 (accents, icons) · dark green #0D8039 (buttons/text on white, 5.0:1 with white). */
:root {
    --primary-rgb: 11, 37, 60;
    --secondary-rgb: 13, 128, 57;
    --muted: #5f6b7c;
    --ledger-navy: #0B253C;
    --ledger-navy-2: #12324f;
    --ledger-green: #14B754;
    --ledger-green-dark: #0D8039;
    --ledger-cream: #f7f5f0;
    --ledger-radius: 14px;
    --ledger-ease: cubic-bezier(.2, .7, .2, 1);
}

/* ---------- Layout ---------- */
body.main-body { min-height: 100vh; font-size: 15px; }
.fs-13 { font-size: .875rem !important; } .fs-12 { font-size: .8125rem !important; }
.btn { font-size: .9375rem; } .btn-sm { font-size: .875rem; } .btn-lg { font-size: 1.0625rem; }
.page { min-height: 100vh; display: flex; flex-direction: column; }
.page > .main-content { flex: 1 0 auto; }
.text-muted { color: var(--muted) !important; }
.btn-secondary, .btn-secondary:hover, .btn-secondary:focus, .btn-secondary:active { color: #fff !important; }
.btn-secondary:hover { filter: brightness(1.08); }
.brand-main img.desktop-logo { height: 36px; width: auto; }
.brand-main img.mobile-logo { height: 32px; width: auto; }
.footer-logo-img { height: 40px; width: auto; }
.footer-main .row > [class*="col-"] { margin-bottom: 1.5rem; }
.ledger-header-band { background: var(--ledger-navy); height: 72px; }
@media (max-width: 1199.98px) { .ledger-header-band { height: 64px; } }
.ledger-hero { background: radial-gradient(1200px 400px at 80% -10%, rgba(20,183,84,.18), transparent 60%), var(--ledger-navy); padding-bottom: 4.5rem !important; }
.ledger-hero h1, .ledger-hero p { color: #fff; }
.ledger-hero h1 { font-size: clamp(1.9rem, 3.5vw, 2.75rem); line-height: 1.15; }
.hero-check { border-radius: 10px; overflow: hidden; }
.hero-check .form-control { border: 0; border-radius: 0; }
.hero-check .btn { border-radius: 0; }
@media (max-width: 767.98px) { .hero-check { border-radius: 10px; } .hero-check .btn { border-radius: 0 0 10px 10px; } }
.page-header { height: auto; min-height: 56px; flex-wrap: wrap; gap: .25rem 1rem; padding-block: .75rem; }
.page-header .page-title { font-size: 1.25rem; margin: 0; font-weight: 600; line-height: 1.3; }
.text-danger { color: #b42323 !important; } .text-success { color: #0b6b32 !important; } .text-warning { color: #8a5a00 !important; }
.input-validation-error, .is-invalid { border-color: #b42323 !important; }
.input-validation-error:focus { box-shadow: 0 0 0 .2rem rgba(180,35,35,.15) !important; }
.field-validation-error { color: #b42323; font-size: .875rem; }
.alert .btn-close { background: transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%230b253c'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/.8em auto no-repeat !important; opacity: .7; }

/* ---------- Accessibility ---------- */
:focus-visible { outline: 3px solid var(--ledger-green) !important; outline-offset: 2px !important; box-shadow: none !important; }
.ledger-hero :focus-visible { outline-color: #fff !important; }
a.ledger-link { text-decoration: underline; text-underline-offset: 2px; }
.visually-hidden-focusable:focus { position: fixed; top: .5rem; left: .5rem; z-index: 2000; background: #fff; padding: .5rem 1rem; border-radius: 8px; }

/* ---------- Components ---------- */
.ledger-file {
    background: #0d1b2a; color: #e6edf3; border-radius: .5rem; padding: 1rem 1.25rem;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .85rem;
    white-space: pre-wrap; word-break: break-word; max-height: 640px; overflow: auto; margin: 0;
}
.ledger-copy { position: relative; }
.ledger-copy .btn { position: absolute; top: .5rem; right: .5rem; }
.ledger-copy .ledger-file { padding-right: 4.5rem; }
.status-pill { display: inline-flex; align-items: center; gap: .4rem; border-radius: 999px;
    padding: .2rem .7rem; font-size: .8rem; font-weight: 600; white-space: nowrap; }
.status-pill::before { content: ""; width: .5rem; height: .5rem; border-radius: 50%; background: currentColor; }
.status-current  { background: #e3f6ea; color: #0b6b32; }
.status-warning  { background: #fff4e0; color: #7a4f00; }
.status-error    { background: #fdeaea; color: #a12222; }
.status-pending  { background: #eef1f5; color: #3d4756; }
.score { font-weight: 700; }
.score-good { color: #0b6b32; } .score-ok { color: #8a5a00; } .score-bad { color: #b42323; }
.ledger-steps { display: flex; gap: .5rem; list-style: none; padding: 0; flex-wrap: wrap; }
.ledger-steps li { display: flex; align-items: center; gap: .5rem; color: var(--muted); font-weight: 500; }
.ledger-steps li + li::before { content: ""; width: 28px; height: 2px; background: #d8dde3; margin-right: .25rem; }
.ledger-steps span { width: 28px; height: 28px; border-radius: 50%; display: inline-grid; place-items: center; background: #e9edf1; font-size: .85rem; }
.ledger-steps .current { color: var(--ledger-navy); } .ledger-steps .current span { background: var(--ledger-navy); color: #fff; }
.ledger-steps .done span { background: var(--ledger-green-dark); color: #fff; }

/* ---------- Pricing ---------- */
.pricing-toggle { display: inline-flex; background: #e9edf1; border-radius: 999px; padding: 4px; gap: 4px; }
.pricing-toggle button { border: 0; background: transparent; border-radius: 999px; padding: .5rem 1.1rem; font-weight: 600; color: #3d4756; transition: background .2s, color .2s; }
.pricing-toggle button[aria-pressed="true"] { background: #fff; color: var(--ledger-navy); box-shadow: 0 1px 3px rgba(11,37,60,.15); }
.pricing-save { background: #e3f6ea; color: #0b6b32; border-radius: 999px; padding: .1rem .5rem; font-size: .75rem; margin-left: .35rem; }
.plan-grid { align-items: stretch; }
.plan-card { border: 1px solid #e3e7ec; border-radius: var(--ledger-radius); background: #fff; height: 100%; display: flex; flex-direction: column;
    padding: 1.75rem 1.5rem; transition: transform .25s var(--ledger-ease), box-shadow .25s var(--ledger-ease); }
.plan-card:hover { transform: translateY(-3px); box-shadow: 0 12px 30px rgba(11,37,60,.08); }
.plan-card .plan-name { font-size: 1.1rem; font-weight: 700; margin-bottom: .25rem; }
.plan-card .plan-freq { color: var(--muted); font-size: .9rem; }
.plan-card .plan-price { font-size: 2.5rem; font-weight: 800; line-height: 1; margin: 1.25rem 0 .25rem; color: var(--ledger-navy); }
.plan-card .plan-price small { font-size: .95rem; font-weight: 500; color: var(--muted); }
.plan-card .plan-note { color: var(--muted); font-size: .85rem; min-height: 1.3rem; }
.plan-card ul { list-style: none; padding: 0; margin: 1.25rem 0 1.5rem; flex: 1; }
.plan-card li { display: flex; gap: .55rem; margin-bottom: .6rem; font-size: .95rem; }
.plan-card li i { color: var(--ledger-green-dark); margin-top: .2rem; }
.plan-card.featured { background: var(--ledger-navy); color: #fff; border: 2px solid var(--ledger-green); position: relative;
    box-shadow: 0 24px 60px rgba(11,37,60,.35), 0 0 0 6px rgba(20,183,84,.12); }
@media (min-width: 1200px) { .plan-card.featured { transform: scale(1.06); z-index: 2; } .plan-card.featured:hover { transform: scale(1.06) translateY(-3px); } }
.plan-card.featured .plan-name, .plan-card.featured .plan-price { color: #fff; }
.plan-card.featured .plan-freq, .plan-card.featured .plan-note, .plan-card.featured .plan-price small { color: rgba(255,255,255,.75); }
.plan-card.featured li i { color: var(--ledger-green); }
.plan-ribbon { position: absolute; top: -14px; left: 50%; transform: translateX(-50%); background: var(--ledger-green); color: #062814;
    font-weight: 800; font-size: .75rem; letter-spacing: .06em; text-transform: uppercase; padding: .35rem .9rem; border-radius: 999px; white-space: nowrap;
    box-shadow: 0 4px 14px rgba(20,183,84,.45); }
.plan-card.featured .btn-cta { background: var(--ledger-green); color: #062814 !important; border: 0; font-weight: 800; }
.plan-card.featured .btn-cta:hover { filter: brightness(1.06); }
.plan-card:not(.featured) .btn-cta { background: #fff; border: 2px solid var(--ledger-navy); color: var(--ledger-navy) !important; font-weight: 700; }
.plan-card:not(.featured) .btn-cta:hover { background: var(--ledger-navy); color: #fff !important; }
.compare-table th, .compare-table td { text-align: center; vertical-align: middle; }
.compare-table th:first-child, .compare-table td:first-child { text-align: left; }
.compare-table .col-featured { background: rgba(20,183,84,.08); }
.compare-table .fe-check { color: var(--ledger-green-dark); font-size: 1.1rem; }
.compare-table .fe-minus { color: #b9c1cb; }

/* ---------- Loading states ---------- */
#ledger-progress { position: fixed; top: 0; left: 0; height: 3px; width: 0; z-index: 3000; background: linear-gradient(90deg, var(--ledger-green), #7fe0a5);
    box-shadow: 0 0 10px rgba(20,183,84,.7); opacity: 0; transition: width .3s var(--ledger-ease), opacity .3s; }
#ledger-progress.active { opacity: 1; }
.btn.is-loading { position: relative; pointer-events: none; opacity: .9; }
.btn .ledger-spinner, .ledger-spinner { display: inline-block; width: 1em; height: 1em; border: 2px solid currentColor; border-right-color: transparent;
    border-radius: 50%; vertical-align: -0.15em; animation: ledger-spin .7s linear infinite; margin-right: .5rem; }
@keyframes ledger-spin { to { transform: rotate(360deg); } }
.ledger-busy { position: fixed; inset: 0; z-index: 2500; display: none; place-items: center; background: rgba(247,245,240,.72); backdrop-filter: blur(2px); }
.ledger-busy.show { display: grid; animation: ledger-fade .2s ease both; }
.ledger-busy .card { width: min(90vw, 360px); padding: 1.5rem 2rem; text-align: center; border-radius: var(--ledger-radius); box-shadow: 0 20px 50px rgba(11,37,60,.18); }
.ledger-busy .ledger-mark { width: 48px; height: 48px; margin: 0 auto .75rem; animation: ledger-pulse 1.2s ease-in-out infinite; }
@keyframes ledger-pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(.88); opacity: .7; } }
.skeleton { background: linear-gradient(90deg, #eef1f4 25%, #f7f9fb 37%, #eef1f4 63%); background-size: 400% 100%; animation: ledger-shimmer 1.3s ease infinite; border-radius: 6px; }
@keyframes ledger-shimmer { 0% { background-position: 100% 50%; } 100% { background-position: 0 50%; } }
.main-content { animation: ledger-fade .35s ease backwards; }
@keyframes ledger-fade { from { opacity: 0; } to { opacity: 1; } }
.js .reveal { opacity: 0; transform: translateY(12px); transition: opacity .5s var(--ledger-ease), transform .5s var(--ledger-ease); }
.reveal.in { opacity: 1; transform: none; }
@media (prefers-reduced-motion: reduce) {
    *, *::before, *::after { animation-duration: .001ms !important; animation-iteration-count: 1 !important; transition-duration: .001ms !important; }
    .js .reveal { opacity: 1; transform: none; }
    /* Keep spinners turning slowly so users still see that something is happening. */
    .ledger-spinner, .btn .ledger-spinner { animation: ledger-spin 1.5s linear infinite !important; }
}
/* Mobile pricing: the recommended plan comes first, with a sticky call to action. */
.pricing-sticky { display: none; }
@media (max-width: 1199.98px) {
    .plan-col-featured { order: -1; }
    .pricing-sticky { display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 1030; gap: .75rem; align-items: center; justify-content: space-between;
        padding: .75rem 1rem; background: var(--ledger-navy); color: #fff; box-shadow: 0 -8px 24px rgba(11,37,60,.25); }
    .pricing-sticky .btn { background: var(--ledger-green); color: #062814 !important; font-weight: 800; border: 0; }
    body.has-sticky-cta footer { padding-bottom: 72px; }
    /* Keep keyboard focus clear of the fixed bar (WCAG 2.4.11). */
    html:has(body.has-sticky-cta) { scroll-padding-bottom: 88px; }
}

/* ---------- Validator results ---------- */
code { color: #0b5a2a; background: #eef1f5; padding: .1em .35em; border-radius: 4px; font-size: .9em; }
.ledger-file code, pre code { background: none; color: inherit; padding: 0; }
.issue-list .issue { padding: .85rem 0; border-bottom: 1px solid #edf0f3; }
.issue-list .issue:last-child { border-bottom: 0; padding-bottom: 0; }
.issue-list .issue:first-child { padding-top: 0; }
.issue-icon { font-size: 1.15rem; margin-top: .15rem; }
.issue-error .issue-icon { color: #b42323; } .issue-warning .issue-icon { color: #8a5a00; } .issue-info .issue-icon { color: var(--muted); }
.issue-label { font-size: .75rem; font-weight: 700; text-transform: uppercase; letter-spacing: .04em; margin-right: .5rem; }
.issue-error .issue-label { color: #b42323; } .issue-warning .issue-label { color: #8a5a00; } .issue-info .issue-label { color: var(--muted); }
.issue-line { font-size: .75rem; color: var(--muted); background: #eef1f5; border-radius: 999px; padding: .05rem .5rem; }
.issue-fix { background: #f3f8f5; border-left: 3px solid var(--ledger-green-dark); border-radius: 0 6px 6px 0; padding: .5rem .75rem; font-size: .95rem; }
.issue-fix-text { white-space: pre-wrap; font-family: inherit; }
.nofile-help .path-card { border: 1px solid #e3e7ec; border-radius: var(--ledger-radius); padding: 1.1rem; background: #fff; position: relative; }
.path-num { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--ledger-navy); color: #fff; font-weight: 700; font-size: .85rem; margin-bottom: .5rem; }
details > summary { cursor: pointer; }
details.card > summary { list-style: none; }
details.card > summary::after { content: "▸"; float: right; color: var(--muted); }
details.card[open] > summary::after { content: "▾"; }
#result:focus { outline: none; }
.input-validation-error:focus-visible, .is-invalid:focus-visible { outline-color: #b42323 !important; }

.verify-tabs { gap: .35rem; flex-wrap: wrap; }
.verify-tabs .nav-link { border: 1px solid #dfe4ea; color: var(--ledger-navy); font-weight: 600; padding: .4rem .85rem; }
.verify-tabs .nav-link.active { background: var(--ledger-navy); border-color: var(--ledger-navy); color: #fff; }
.verify-steps ol { padding-left: 1.2rem; } .verify-steps li { margin-bottom: .35rem; }
.legal h2 { margin-top: 1.75rem; }

/* Line-numbered file viewer (listing + validator) */
.file-viewer { border: 1px solid #e3e8ee; border-radius: .5rem; overflow: hidden; }
.file-viewer-bar { display: flex; justify-content: space-between; align-items: center; gap: .5rem; padding: .4rem .6rem; background: #f4f6f9; border-bottom: 1px solid #e3e8ee; }
.file-lines { list-style: none; margin: 0; padding: .6rem 0; max-height: 640px; overflow: auto; background: #0d1b2a; counter-reset: ln;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .85rem; }
.file-lines li { counter-increment: ln; display: flex; scroll-margin-top: 110px; }
.file-lines li::before { content: counter(ln); flex: 0 0 3.25rem; text-align: right; padding-right: .85rem; color: #8b9bb0; user-select: none; }
.file-lines li code { color: #e6edf3; white-space: pre-wrap; word-break: break-word; background: none; padding: 0 .85rem 0 0; font-size: inherit; }
.file-lines li.flagged { background: rgba(245,194,107,.14); box-shadow: inset 3px 0 0 #f5c26b; }
.file-lines li:target { background: rgba(20,183,84,.25); box-shadow: inset 3px 0 0 #14B754; }
a.issue-line { text-decoration: none; }
a.issue-line:hover { text-decoration: underline; }
.rules-details > summary { cursor: pointer; list-style-position: inside; }

.why-list li { padding: .35rem 0; }
.faq-accordion .accordion-button { font-weight: 600; }
.faq-accordion .accordion-button:not(.collapsed) { color: var(--ledger-navy); background: #eef7f1; box-shadow: none; }
.faq-accordion .accordion-button:focus-visible { outline: 3px solid #14B754; outline-offset: -3px; box-shadow: none; }

/* Blog */
.blog-card .card-body h2 a:hover { color: var(--ledger-green-dark) !important; }
.blog-body { font-size: 1.075rem; line-height: 1.75; }
.blog-body h2 { font-size: 1.5rem; margin-top: 2rem; }
.blog-body h3 { font-size: 1.2rem; margin-top: 1.5rem; }
.blog-body img { max-width: 100%; height: auto; border-radius: .5rem; }
.blog-body blockquote { border-left: 4px solid var(--ledger-green-dark); padding: .25rem 1rem; color: #3d4756; background: #f4f8f5; border-radius: 0 .5rem .5rem 0; }
.blog-body pre { background: #0d1b2a; color: #e6edf3; padding: 1rem; border-radius: .5rem; white-space: pre-wrap; font-size: .9rem; }
.blog-body a { color: var(--ledger-green-dark); text-decoration: underline; }
.blog-body table { width: 100%; border-collapse: collapse; margin: 1rem 0; }
.blog-body th, .blog-body td { border: 1px solid #e3e8ee; padding: .5rem .75rem; }
.blog-body .ql-align-center { text-align: center; }
.blog-body, .blog-body p, .blog-body li { word-break: normal; overflow-wrap: anywhere; overflow-wrap: break-word; }
.faq-accordion .accordion-item { scroll-margin-top: 110px; }

/* AI readiness */
.readiness-bar { height: 8px; background: #e8edf2; border-radius: 999px; overflow: hidden; }
.readiness-bar span { display: block; height: 100%; border-radius: 999px; }
.bg-good { background: #0D8039; } .bg-ok { background: #b7791f; } .bg-bad { background: #b42323; }

/* Accessibility and touch targets */
.ledger-menu-btn { background: none; border: 0; padding: 10px; min-width: 44px; min-height: 44px; color: inherit; }
.toc-links a { display: inline-block; padding: 4px 0; min-height: 24px; }
.form-check-input { width: 1.25rem; height: 1.25rem; margin-top: .15rem; }
.issue-fix, .issue-fix-text { overflow-wrap: anywhere; }
footer a { display: inline-block; padding: 3px 0; }

/* ---------- UAT round (Oct 3) ---------- */
/* Results get programmatic focus for screen readers; no visible ring for that. */
#result:focus, #result:focus-visible { outline: none !important; }
/* Text-style buttons follow the brand, not Bootstrap blue. */
.btn-link { color: var(--ledger-navy); text-decoration: underline; text-underline-offset: 2px; }
.btn-link:hover, .btn-link:focus { color: var(--ledger-green-dark); }
/* Compact header (phones and tablets): small mark logo, plain menu button, buttons on one line. */
.header-compact-actions .btn { white-space: nowrap; min-height: 36px; }
.header-2 .header-element:has(.ledger-menu-btn) { background: none !important; border: 0 !important; padding: 0 !important; }
.header-2 .ledger-menu-btn { min-width: 40px; min-height: 40px; }
.header-2 .ledger-menu-btn .header-link-icon { color: #fff; fill: #fff; font-size: 1.35rem; }
.sticky.sticky-pin .header-2 .ledger-menu-btn .header-link-icon { color: var(--ledger-navy); fill: var(--ledger-navy); }
@media (max-width: 575.98px) {
  .brand-main .desktop-logo { display: none !important; }
  .brand-main .mobile-logo.mobile-dark { display: inline-block !important; margin-inline: .5rem !important; }
  .brand-main .mobile-logo.mobile-color { display: none !important; }
  [data-theme-mode=light] .sticky.sticky-pin .brand-main .mobile-logo.mobile-dark { display: none !important; }
  [data-theme-mode=light] .sticky.sticky-pin .brand-main .mobile-logo.mobile-color { display: inline-block !important; margin-inline: .5rem !important; }
  .ledger-steps { flex-direction: column; align-items: flex-start; }
  .ledger-steps li + li::before { display: none; }
}
/* Equal-height listing cards in a row. */
.listing-row > [class*="col"] { display: flex; }
.listing-row > [class*="col"] > * { flex: 1 1 auto; width: 100%; }
/* Small links get a comfortable tap area. */
.breadcrumb a { display: inline-block; padding-block: 4px; }
.breadcrumb { align-items: center; }
.breadcrumb-item.active { padding-block: 4px; }

.g-page .g-remove { height: 38px; min-width: 38px; padding-block: 0; line-height: 1; }

/* ---------- Round 2 (Oct 4) ---------- */
@media (max-width: 767.98px) {
  .compare-table { min-width: 560px; }
  .compare-table th[scope=row] { min-width: 150px; position: sticky; left: 0; background: #fff; z-index: 1; }
}
.pricing-sticky .btn { white-space: nowrap; flex-shrink: 0; }
footer li a { display: inline-flex; align-items: baseline; gap: .25rem; }
.issue-code { float: right; font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace; font-size: .72rem; color: #5f6b7c; text-decoration: none; }
.issue-code:hover { text-decoration: underline; }

/* Commands keep their line breaks (a wrapped "--data-binary" can't be read); scroll sideways instead. */
.ledger-file-scroll { white-space: pre; word-break: normal; overflow-wrap: normal; overflow-x: auto; }
@media (max-width: 575.98px) { .ledger-file-scroll { padding-top: 2.75rem; } }

/* Focused elements stay clear of the sticky header (and, on /pricing, the sticky bottom bar). */
html { scroll-padding-top: 84px; }
@media (max-width: 1199.98px) {
    body.has-sticky-cta :focus-visible { scroll-margin-bottom: 96px; }
}
/* Phones: less empty space under the page header, and a short breadcrumb (Home / … / current). */
@media (max-width: 575.98px) {
    main > .bg-white.border-bottom ~ section.section:first-of-type { padding-top: 1.5rem; }
    .breadcrumb .breadcrumb-item:not(:first-child):not(:last-child) { display: none; }
    .breadcrumb .breadcrumb-item:last-child { max-width: 70vw; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
    /* Wide reference tables read as stacked cards. */
    .table-stack thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }
    .table-stack tr { display: block; padding: .75rem 0; border-bottom: 1px solid #edf0f3; }
    .table-stack td { display: block; border: 0; padding: .1rem .75rem; text-align: left !important; }
}

/* Generator step 4: keep it working */
.keep-card { border: 2px solid var(--ledger-green); }
.keep-plans { display: grid; gap: .75rem; }
.keep-plan { display: grid; grid-template-columns: 1fr auto; gap: .2rem 1rem; align-items: center; padding: .9rem 1.1rem; border: 1px solid #dfe4ea;
    border-radius: var(--ledger-radius); background: #fff; color: var(--ledger-navy); text-decoration: none; position: relative; transition: border-color .15s, box-shadow .15s; }
.keep-plan:hover, .keep-plan:focus-visible { border-color: var(--ledger-navy); box-shadow: 0 8px 22px rgba(11,37,60,.08); color: var(--ledger-navy); }
.keep-plan .keep-name { font-weight: 700; font-size: 1.05rem; grid-column: 1; }
.keep-plan .keep-price { font-weight: 800; margin-left: .35rem; }
.keep-plan .keep-price small { font-weight: 500; color: var(--muted); font-size: .8rem; }
.keep-plan .keep-what { grid-column: 1; color: #3d4756; font-size: .9rem; line-height: 1.45; }
.keep-plan .keep-go { grid-column: 2; grid-row: 1 / span 2; font-weight: 700; font-size: .9rem; white-space: nowrap; border: 2px solid var(--ledger-navy);
    border-radius: 8px; padding: .45rem .8rem; }
.keep-plan.featured { background: var(--ledger-navy); color: #fff; border-color: var(--ledger-navy); padding-top: 1.25rem; }
.keep-plan.featured .keep-price small, .keep-plan.featured .keep-what { color: rgba(255,255,255,.82); }
.keep-plan.featured .keep-go { background: var(--ledger-green); border-color: var(--ledger-green); color: #062814; }
.keep-plan.featured:hover { color: #fff; }
.keep-badge { position: absolute; top: -10px; left: 1rem; background: var(--ledger-green); color: #062814; font-size: .72rem; font-weight: 800;
    text-transform: uppercase; letter-spacing: .04em; padding: .15rem .55rem; border-radius: 999px; }
@media (max-width: 575.98px) { .keep-plan { grid-template-columns: 1fr; } .keep-plan .keep-go { grid-column: 1; grid-row: auto; justify-self: start; margin-top: .4rem; } }
.live-check { border: 1px solid #dfe4ea; border-radius: var(--ledger-radius); padding: .9rem 1rem; background: #f7f9fb; }
.live-dot { width: 10px; height: 10px; border-radius: 50%; background: #b8c1cc; flex: 0 0 10px; }
.live-check[data-state="checking"] .live-dot { background: #e0a800; animation: livepulse 1s ease-in-out infinite; }
.live-check[data-state="waiting"] .live-dot { background: #e0a800; }
.live-check[data-state="live"] { background: #eaf7ef; border-color: #a9dcbc; }
.live-check[data-state="live"] .live-dot { background: var(--ledger-green-dark); }
@keyframes livepulse { 50% { opacity: .35; } }
@media (prefers-reduced-motion: reduce) { .live-check[data-state="checking"] .live-dot { animation: none; } }

/* Footer links: wrapped labels (e.g. "WordPress AI consulting") stay tight, with even spacing between items */
footer .list-unstyled li { margin-bottom: .55rem; }
footer .list-unstyled li a { line-height: 1.35; padding: 2px 0; }

/* Site icons in the directory: the site's own favicon (stored by us) or a lettered tile */
.site-icon { width: var(--icon-size, 40px); height: var(--icon-size, 40px); flex: 0 0 auto; border-radius: 22%; object-fit: contain; background: #fff; box-shadow: 0 0 0 1px rgba(11,37,60,.12); padding: calc(var(--icon-size, 40px) * .1); }
.site-icon-letter { display: inline-flex; align-items: center; justify-content: center; padding: 0; color: #fff; font-weight: 700; font-size: calc(var(--icon-size, 40px) * .46); line-height: 1; box-shadow: none; user-select: none; }
.min-w-0 { min-width: 0; }
