/* Formula Library and Calculators */
.formula-lab { --fl-line: var(--pmcq-line, #d7e2e8); }
.fl-tabs { display: flex; gap: .4rem; flex-wrap: wrap; margin-bottom: .75rem; }
.fl-tabs button { flex: 1 1 180px; border: 2px solid var(--fl-line); background: #fff; color: var(--bs-primary); border-radius: 12px; padding: .5rem .8rem; font-weight: 700; cursor: pointer; }
.fl-tabs button.on { background: var(--bs-primary); border-color: var(--bs-primary); color: #fff; }
.fl-toast { position: fixed; left: 50%; bottom: 1.2rem; transform: translateX(-50%); background: rgba(15, 23, 42, .93); color: #fff; padding: .55rem 1rem; border-radius: 10px; font-size: .9rem; z-index: 2000; max-width: 92vw; text-align: center; }
.fl-toast[hidden] { display: none; }

.fl-layout { display: grid; grid-template-columns: 380px minmax(0, 1fr); gap: 1rem; align-items: start; }
.fl-side { padding: .8rem; position: sticky; top: .5rem; }
.fl-main { padding: 1rem 1.1rem; min-width: 0; }
.fl-search { position: relative; margin-bottom: .6rem; }
.fl-search i { position: absolute; left: .75rem; top: .6rem; color: #6b7b88; }
.fl-search input { padding-left: 2.1rem; }
.fl-subjects, .fl-only { display: flex; flex-wrap: wrap; gap: .3rem; margin-bottom: .55rem; align-items: center; }
.fl-subjects button, .fl-only button { border: 1px solid var(--fl-line); background: #fff; border-radius: 999px; padding: .2rem .7rem; font-size: .85rem; color: var(--bs-primary); cursor: pointer; }
.fl-subjects button.on, .fl-only button.on { background: var(--bs-primary); color: #fff; border-color: var(--bs-primary); }
.fl-list { max-height: 62vh; overflow-y: auto; border: 1px solid var(--fl-line); border-radius: 10px; background: #fff; }
.fl-group { position: sticky; top: 0; background: #eef5f8; color: var(--bs-primary); font-size: .74rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; padding: .3rem .7rem; z-index: 1; }
.fl-item { display: flex; align-items: center; gap: .4rem; padding: .5rem .7rem; border-top: 1px solid #eef2f5; cursor: pointer; }
.fl-item:hover { background: #f6fafc; }
.fl-item.on { background: #e6f0f5; box-shadow: inset 3px 0 0 var(--bs-primary); }
.fl-item-main { flex: 1; min-width: 0; }
.fl-item-name { font-weight: 600; font-size: .93rem; }
.fl-item-expr { font-family: "Cambria Math", Cambria, Georgia, serif; color: #475569; font-size: .88rem; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.fl-item-ch { font-size: .72rem; color: #6b7b88; }
.fl-star { border: 0; background: transparent; color: #b8c2c9; font-size: 1.05rem; padding: .15rem .3rem; cursor: pointer; }
.fl-star.on { color: #e0a526; }
.fl-star.big { font-size: 1.4rem; margin-left: auto; }

.fl-calc-head { display: flex; align-items: center; gap: .6rem; flex-wrap: wrap; margin-bottom: .3rem; }
.fl-back { display: none; }
.fl-crumb { font-size: .82rem; color: #6b7b88; }
.fl-title { font-size: 1.35rem; color: var(--bs-primary); margin: 0 0 .4rem; }
.fl-expr { font-family: "Cambria Math", Cambria, Georgia, serif; font-size: 1.7rem; padding: .55rem .9rem; background: #f3f7fb; border-left: 4px solid var(--bs-primary); border-radius: 8px; margin-bottom: .6rem; overflow-x: auto; }
.fl-note { font-size: .9rem; background: #fff7e0; border-left: 3px solid #e0a526; border-radius: 6px; padding: .4rem .65rem; }
.fl-legend { display: flex; flex-wrap: wrap; gap: .25rem 1rem; font-size: .85rem; color: #475569; margin-bottom: .8rem; }
.fl-legend b { font-family: "Cambria Math", Cambria, Georgia, serif; color: var(--bs-primary); }
.fl-label { font-size: .78rem; font-weight: 700; text-transform: uppercase; letter-spacing: .03em; color: var(--bs-primary); margin: .6rem 0 .3rem; }
.fl-modes { display: flex; flex-wrap: wrap; gap: .35rem; }
.fl-mode { border: 2px solid var(--fl-line); background: #fff; border-radius: 10px; padding: .3rem .8rem; font-weight: 600; font-family: "Cambria Math", Cambria, Georgia, serif; font-size: 1.05rem; cursor: pointer; }
.fl-mode.on { background: var(--bs-primary); color: #fff; border-color: var(--bs-primary); }

.fl-inputs { display: grid; grid-template-columns: repeat(auto-fit, minmax(270px, 1fr)); gap: .6rem .9rem; margin-bottom: .7rem; }
.fl-in label { display: block; font-size: .85rem; margin-bottom: .15rem; }
.fl-in label b { font-family: "Cambria Math", Cambria, Georgia, serif; font-size: 1.05rem; color: var(--bs-primary); }
.fl-in label span { color: #6b7b88; }
.fl-in label em { font-size: .72rem; background: #e2e8f0; border-radius: 999px; padding: 0 .4rem; font-style: normal; }
.fl-in-row { display: flex; gap: .4rem; }
.fl-in-row input { flex: 1 1 auto; min-width: 0; font-size: 1.05rem; }
.fl-unit { flex: 0 0 auto; width: auto; max-width: 9rem; }
.fl-fixed { align-self: center; font-size: .85rem; color: #6b7b88; white-space: nowrap; }
.fl-in.const { opacity: .85; }
.fl-in-err { color: #b91c1c; font-size: .78rem; }
.fl-in-err[hidden] { display: none; }

.fl-result { border: 2px solid #16a34a; background: #f0fdf4; border-radius: 12px; padding: .8rem 1rem; margin-bottom: .6rem; }
.fl-result.empty { border-style: dashed; border-color: var(--fl-line); background: #fafcfd; color: #6b7b88; }
.fl-result.bad { border-color: #dc2626; background: #fef2f2; color: #991b1b; }
.fl-out { display: flex; align-items: center; flex-wrap: wrap; gap: .5rem; padding: .15rem 0; }
.fl-out-sym { font-family: "Cambria Math", Cambria, Georgia, serif; font-size: 1.3rem; color: #166534; }
.fl-out-val { font-family: Consolas, "Courier New", monospace; font-size: 1.7rem; font-weight: 700; color: #14532d; word-break: break-all; }
.fl-copy { border: 0; background: transparent; color: #166534; font-size: 1.1rem; cursor: pointer; }
.fl-steps { border: 1px solid var(--fl-line); border-radius: 10px; padding: .5rem .8rem; background: #fff; margin-bottom: .7rem; }
.fl-steps summary { cursor: pointer; font-weight: 700; color: var(--bs-primary); }
.fl-steps ol { margin: .6rem 0 0; padding-left: 1.2rem; }
.fl-steps li { margin-bottom: .5rem; }
.fl-math { font-family: "Cambria Math", Cambria, Georgia, serif; font-size: 1.1rem; background: #f3f7fb; border-radius: 6px; padding: .2rem .55rem; margin-top: .2rem; overflow-x: auto; }
.fl-math.strong { font-weight: 700; background: #e7f7ee; display: inline-block; }
.fl-card { border: 1px solid var(--fl-line); border-radius: 12px; padding: .8rem 1rem; margin-top: .8rem; background: #fcfdfe; }
.fl-card h3 { font-size: 1rem; color: var(--bs-primary); margin-bottom: .5rem; }
.fl-chips { display: flex; flex-wrap: wrap; gap: .35rem; }
.fl-chip { border: 1px solid var(--fl-line); background: #fff; border-radius: 999px; padding: .2rem .7rem; font-size: .85rem; color: var(--bs-primary); cursor: pointer; }
.fl-chip:hover, .fl-chip.on { background: var(--bs-primary); color: #fff; }
.fl-conv-form { display: flex; flex-wrap: wrap; gap: .7rem; margin-bottom: .8rem; }
.fl-conv-form label { font-size: .8rem; color: #6b7b88; display: flex; flex-direction: column; gap: .15rem; }
.fl-conv-form select, .fl-conv-form input { min-width: 11rem; }
.fl-index summary { cursor: pointer; }

@media (max-width: 991px) {
  .fl-layout { grid-template-columns: 1fr; }
  .fl-side { position: static; }
  .fl-list { max-height: 55vh; }
  .fl-layout:not(.open) .fl-main { display: none; }
  .fl-layout.open .fl-side { display: none; }
  .fl-back { display: inline-block; }
  .fl-expr { font-size: 1.4rem; }
}
