/* Rail fence cipher tool */
.tool-in label.rf-inl { display: inline; margin: 0; font-weight: 600; }
.rf-opts { gap: 14px 22px; }
.rf-opts input[type="radio"], .rf-opts input[type="checkbox"], #rf-fill { width: 18px; height: 18px; accent-color: var(--accent); margin: 0; }
.rf-grid-opts { display: grid; grid-template-columns: repeat(auto-fit, minmax(210px, 1fr)); gap: 4px 16px; margin: 10px 0; }
.rf-grid-opts input[type="number"] { width: 100%; box-sizing: border-box; }
#rf-out { background: var(--bg-subtle); font-family: var(--font-mono); letter-spacing: .04em; }
.rf-h { font-size: 18px; margin: 22px 0 6px; }
.rf-scroll { overflow-x: auto; max-width: 100%; padding: 8px 6px; background: var(--bg-subtle); border-radius: var(--radius-sm); }
.rf-grid { border-collapse: separate; border-spacing: 2px; margin: 0 auto; font: 700 15px/1 var(--font-mono); }
.rf-grid th { padding: 0 8px 0 2px; font: 600 12px var(--font-sans); color: var(--muted); text-align: right; white-space: nowrap; position: sticky; left: 0; background: var(--bg-subtle); }
.rf-grid td { min-width: 26px; width: 26px; height: 28px; text-align: center; padding: 0; }
.rf-grid td.rf-on { background: var(--accent-tint); color: var(--ink); border: 1px solid var(--accent); border-radius: 3px; }
.rf-grid td.rf-off { background: none; }
.rf-sp { color: var(--muted); font-weight: 400; }
.rf-readout { list-style: none; margin: 10px 0 0; padding: 0; }
.rf-readout li { margin: 2px 0; overflow-wrap: anywhere; }
.rf-readout code { font-family: var(--font-mono); font-weight: 700; letter-spacing: .06em; }
.rf-rn { display: inline-block; min-width: 56px; font-size: 12px; color: var(--muted); font-weight: 600; }
.rf-list { list-style: none; margin: 10px 0 0; padding: 0; display: grid; gap: 8px; }
.rf-hit { padding: 10px 12px; border: 1px solid var(--line); border-radius: var(--radius-md); background: var(--bg-card); min-width: 0; }
.rf-best { border-color: var(--accent); box-shadow: 0 0 0 2px var(--accent-tint); }
.rf-hh { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 4px 12px; margin-bottom: 4px; }
.rf-conf { color: var(--ink-secondary); font-size: 13px; }
.rf-ht { font: 600 15px/1.5 var(--font-mono); overflow-wrap: anywhere; margin-bottom: 8px; }
.rf-ptext { font: 600 18px/1.7 var(--font-mono); word-break: break-word; white-space: pre-wrap; color: #0f172a; min-height: 1.7em; border-bottom: 1px solid #94a3b8; }
.rf-sh { margin: 14px 0 4px; font-weight: 700; color: #0f172a; }
.rf-sheet .rf-scroll { background: none; padding: 0; }
.rf-sheet .rf-grid td.rf-on { background: #fff; color: #0f172a; border-color: #64748b; }
.rf-sheet .rf-grid th { background: none; color: #334155; }
@media (max-width: 480px) { .rf-sheet { padding: 20px 12px; } .rf-grid td { min-width: 24px; width: 24px; } }
@media print {
  .rf-grid { font-size: 11pt; }
  .rf-grid td { min-width: 17pt; width: 17pt; height: 20pt; }
  .rf-grid td.rf-on { border-color: #000 !important; background: #fff !important; color: #000 !important; }
  .rf-grid th { color: #000; }
  .rf-sh, .rf-ptext { color: #000; }
  .rf-ptext { border-color: #000; }
  .rf-scroll { overflow: visible; }
}
