.oap-tool { margin:1.5rem 0; }
.oap-cards { display:grid; grid-template-columns:repeat(auto-fit,minmax(min(100%,260px),1fr)); gap:10px; border:1px solid var(--line); border-radius:12px; padding:14px; }
.oap-card { display:flex; gap:10px; align-items:center; background:var(--soft); padding:12px; border-radius:8px; cursor:pointer; }
.oap-card strong,.oap-limit,.oap-only { display:block; }
.oap-group { border:1px solid var(--line); border-radius:10px; margin:18px 0; padding:0 14px 8px; }
.oap-group legend { font-weight:700; padding:0 6px; }
.oap-facility { display:flex; gap:12px; padding:14px 0; cursor:pointer; font-size:1rem; }
.oap-facility + .oap-facility { border-top:1px solid var(--line); }
.oap-facility input,.oap-card input { flex-shrink:0; width:22px; height:22px; accent-color:var(--brand); }
.oap-facility input { margin-top:5px; }
.oap-limit { color:var(--muted); }
.oap-only { color:#704500; }
.oap-unavailable { color:#666; background:#f4f4f4; cursor:default; }
.oap-fare { margin:24px 0; }
.oap-result { background:#eef4ff; border:1px solid #b8cafa; border-radius:12px; padding:16px; }
.oap-result h3 { margin-top:0; }
.oap-result dl { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:8px 12px; }
.oap-result dd { margin:0; text-align:right; font-weight:700; }
#oap-comparison { font-weight:700; }
#oap-error { color:#963400; }
.oap-rule { font-size:1rem; }
.oap-rule small { color:var(--muted); }
@media(max-width:480px) { .oap-result dl { grid-template-columns:1fr; } .oap-result dd { text-align:left; margin-bottom:8px; } }

.oap-mobile-summary { display:none; }
.oap-invalid { opacity:.55; }
@media(max-width:480px) {
  body { padding-bottom:calc(108px + env(safe-area-inset-bottom)); }
  html { scroll-padding-bottom:120px; }
  .oap-mobile-summary { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:8px; position:fixed; inset:auto 0 0; z-index:10; padding:10px 12px calc(10px + env(safe-area-inset-bottom)); background:#eef4ff; border-top:2px solid #b8cafa; box-shadow:0 -2px 8px #0001; font-size:.8rem; line-height:1.5; }
  .oap-mobile-summary strong { display:block; font-size:.85rem; }
  .oap-mobile-summary.oap-invalid { opacity:1; color:var(--muted); background:var(--soft); }
}
