:root { --bs-primary: #2563eb; --bs-primary-rgb: 37,99,235; --bs-link-color: #2563eb; --bs-link-color-rgb: 37,99,235; --bs-link-hover-color: #1d4ed8; --bs-body-font-family: Inter, system-ui, -apple-system, "Segoe UI", Roboto, sans-serif; --bs-border-radius: .6rem; --bs-border-radius-lg: .9rem; --rating: #f59e0b; }
[data-bs-theme="light"] { --bs-body-bg: #fff; --bs-body-color: #0f172a; --bs-tertiary-bg: #f8fafc; --surface: #f8fafc; }
[data-bs-theme="dark"] { --bs-link-color: #6ea0ff; --bs-link-color-rgb: 110,160,255; --surface: #0f172a; --bs-body-bg: #0b1220; }
.btn-primary { --bs-btn-bg: #2563eb; --bs-btn-border-color: #2563eb; --bs-btn-hover-bg: #1d4ed8; --bs-btn-hover-border-color: #1d4ed8; --bs-btn-active-bg: #1e40af; --bs-btn-active-border-color: #1e40af; }
.btn-outline-primary { --bs-btn-color: #2563eb; --bs-btn-border-color: #2563eb; --bs-btn-hover-bg: #2563eb; --bs-btn-hover-border-color: #2563eb; }
body { line-height: 1.6; }
.skip-link:focus { position: fixed; top: .5rem; left: .5rem; z-index: 2000; background: #fff; padding: .5rem 1rem; border-radius: .5rem; }
.site-nav { background: color-mix(in srgb, var(--bs-body-bg) 92%, transparent); backdrop-filter: blur(10px); border-bottom: 1px solid var(--bs-border-color); }
.brand { display: inline-flex; align-items: center; gap: .5rem; font-weight: 800; letter-spacing: -.02em; font-size: .95rem; }
.brand-mark { display: grid; place-items: center; width: 2rem; height: 2rem; background: #2563eb; color: #fff; border-radius: .5rem; font-size: .8rem; }
.hero { background: radial-gradient(60rem 30rem at 85% -10%, rgba(37,99,235,.12), transparent), var(--surface); border-bottom: 1px solid var(--bs-border-color); }
.page-hero { background: var(--surface); border-bottom: 1px solid var(--bs-border-color); padding: 2.5rem 0 2rem; }
.article-hero { background: var(--surface); border-bottom: 1px solid var(--bs-border-color); padding: 2.5rem 0 2rem; }
.mw-760 { max-width: 760px; } .mw-520 { max-width: 520px; }
.section { padding-top: 2.5rem; padding-bottom: 1rem; }
.band-dark { background: #0f172a; color: #e2e8f0; margin-top: 2.5rem; }
.band-dark h2 { color: #fff; }
.terminal-card { background: #0f172a; color: #e2e8f0; border: 0; border-radius: 1rem; }
.card { border-color: var(--bs-border-color); border-radius: .9rem; }
.topic-card, .provider-card, .route-card { transition: box-shadow .15s, transform .15s; }
.topic-card:hover, .provider-card:hover, .route-card:hover { box-shadow: 0 .5rem 1.5rem rgba(15,23,42,.08); transform: translateY(-2px); }
.route-card { color: inherit; }
.prose { font-size: 1.05rem; } .prose h2 { margin-top: 2rem; font-size: 1.5rem; } .prose h3 { margin-top: 1.5rem; font-size: 1.2rem; } .prose p, .prose li { color: var(--bs-secondary-color); } .prose strong { color: var(--bs-body-color); }
.provider-logo { display: inline-grid; place-items: center; width: 2.75rem; height: 2.75rem; border-radius: .7rem; background: rgba(37,99,235,.12); color: #2563eb; font-weight: 800; flex: none; }
.provider-logo.lg { width: 4rem; height: 4rem; font-size: 1.3rem; border-radius: 1rem; }
.stars { color: var(--rating); letter-spacing: .05em; }
.price { font-size: 1.6rem; font-weight: 800; line-height: 1.1; } .price small { font-size: .8rem; font-weight: 500; color: var(--bs-secondary-color); }
.spec-list { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .25rem .75rem; font-size: .9rem; }
@media (max-width: 575.98px) { .spec-list { grid-template-columns: repeat(2, minmax(0, 1fr)); } }
.plan-card:hover { border-color: #2563eb; }
.filter-card { background: var(--bs-body-bg); }
@media (min-width: 992px) { .finder-form { position: sticky; top: 5.5rem; } }
.status { display: inline-block; width: .7rem; height: .7rem; border-radius: 50%; background: #94a3b8; }
.status.live { background: #10b981; } .status.next { background: #f59e0b; }
.site-footer { background: var(--surface); border-top: 1px solid var(--bs-border-color); }
.site-footer a { color: var(--bs-secondary-color); text-decoration: none; } .site-footer a:hover { color: #2563eb; }
.site-footer li { margin-bottom: .35rem; }
:focus-visible { outline: 3px solid #2563eb; outline-offset: 2px; }

.search-nav input { min-width: 11rem; }
@media (min-width: 992px) and (max-width: 1199.98px) { .search-nav { display: none !important; } }
