/* v1.2 — Menu → Solvers, compact look (user 2026-11-03 「太宽了 点开又没有什么信息
   反正不太好看」, picked A on static/_review_solvers_look.html 「a好」): a 340px
   dialog; the list and the version page each sit in ONE white hairline box (no
   cream box around white cards); the versions are one-line radio rows (version
   left, release month right, the current one with a gold dot on a pale gold row).
   Structure unchanged since 2026-10-27: the list, then the solver's own page in
   the same dialog with the versions stacked. Reuses character.css for the shell
   and licenses.css for the letter tile. */

.sv-dialog { width: 340px; padding: 16px 18px 14px; }
.sv-dialog .char-hd h3 { font-size: 15px; }
.sv-dialog .char-foot { margin-top: 14px; }
/* the letter tile without the Licenses list's 48px slot */
.sv-dialog .lic-slot { flex: 0 0 auto; width: auto; }
.sv-dialog .lic-tile { width: 26px; height: 26px; border-radius: 6px; }

/* one box, rows split by hairlines */
.sv-box { border: 1px solid var(--b2-line, #E5E7EB); border-radius: 8px; background: var(--b2-surface, #fff); overflow: hidden; }
.sv-box .lic-empty { padding: 14px 0 12px; }
.sv-list { margin-top: 12px; }
.sv-row { display: flex; align-items: center; gap: 10px; width: 100%; box-sizing: border-box; padding: 9px 12px; color: inherit; }
.sv-row + .sv-row { border-top: 1px solid var(--b2-line, #E5E7EB); }

/* list rows */
.sv-solver { cursor: pointer; transition: background-color .12s ease-out; }
.sv-solver:hover { background: var(--b2-sunken, #F9FAFB); }
.sv-solver:focus-visible { outline: 2px solid rgba(224, 182, 94, 0.5); outline-offset: -2px; }
.sv-rowmain { display: flex; flex-direction: column; gap: 1px; min-width: 0; flex: 1 1 auto; }
.sv-name { font-size: 13px; font-weight: 600; color: var(--b2-ink, #111216); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sv-sub { font-size: 11px; color: var(--b2-ink-3, #6B7280); }
.sv-cur { flex: 0 0 auto; font-size: 12px; color: var(--b2-ink-2, #4B5563); white-space: nowrap; }

/* page header: "‹ Solvers" back on the left where the list's title stood */
.sv-back {
    border: none;
    background: none;
    font: inherit;
    font-size: 12.5px;
    color: var(--b2-ink-3, #6B7280);
    cursor: pointer;
    padding: 2px 4px 2px 0;
    flex: 1;
    text-align: left;
}
.sv-back:hover { color: var(--b2-ink, #111216); }
.sv-hidden-title { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); margin: 0; }
.sv-title { display: flex; align-items: center; gap: 9px; margin: 10px 0 0; }
.sv-title h4 { margin: 0; font-size: 14px; font-weight: 650; }
.sv-lab {
    margin: 14px 0 6px;
    font-size: 10.5px;
    font-weight: 700;
    letter-spacing: .06em;
    text-transform: uppercase;
    color: var(--b2-ink-3, #6B7280);
}

/* versions from two publishers (2026-11-05, review A): one small site label
   ("openfoam.com" / "openfoam.org") above each publisher's box */
.sv-site {
    margin: 8px 0 5px;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .04em;
    color: var(--b2-ink-3, #6B7280);
}

/* versions: one-line radio rows in one box */
.sv-opt {
    border: none;
    border-radius: 0;
    background: var(--b2-surface, #fff);
    font: inherit;
    text-align: left;
    cursor: pointer;
    transition: background-color .12s ease-out;
}
.sv-opt:hover { background: var(--b2-sunken, #F9FAFB); }
.sv-opt:focus-visible { outline: 2px solid rgba(224, 182, 94, 0.5) !important; outline-offset: -2px !important; }
.sv-opt.on, .sv-opt.on:hover { background: #FBF7EC; }
.sv-radio {
    width: 14px;
    height: 14px;
    flex: 0 0 14px;
    border-radius: 50%;
    border: 1.5px solid var(--b2-line-strong, #9CA3AF);
    box-sizing: border-box;
}
.sv-opt.on .sv-radio {
    border-color: var(--b2-user-rule, #E0B65E);
    background: var(--b2-user-rule, #E0B65E);
    box-shadow: inset 0 0 0 3px var(--b2-surface, #fff);
}
.sv-ver { font-size: 13px; font-weight: 600; color: var(--b2-ink, #111216); }
.sv-rel { margin-left: auto; font-size: 11.5px; color: var(--b2-ink-3, #6B7280); white-space: nowrap; }
