/* ===================================
   SayShan - Grid/utility compat
   Several pages (service pages, contact) are written with Bootstrap-style class names
   (row / col-* / g-* / spacing / flex helpers) but Bootstrap is not loaded. This is the
   small subset they use, with logical properties so RTL mirrors. Gutter = 1.5rem (g-4).
   =================================== */
.row { --gx: 1.5rem; --gy: 0; display: flex; flex-wrap: wrap; margin-inline: calc(var(--gx) / -2); margin-top: calc(var(--gy) * -1); }
.row > * { box-sizing: border-box; flex-shrink: 0; width: 100%; max-width: 100%; padding-inline: calc(var(--gx) / 2); margin-top: var(--gy); }
.g-4 { --gx: 1.5rem; --gy: 1.5rem; }
.col-12 { flex: 0 0 auto; width: 100%; }
.col-6 { flex: 0 0 auto; width: 50%; }
@media (min-width: 768px) {
    .col-md-6 { flex: 0 0 auto; width: 50%; }
}
@media (min-width: 992px) {
    .col-lg-3 { flex: 0 0 auto; width: 25%; }
    .col-lg-4 { flex: 0 0 auto; width: 33.3333%; }
    .col-lg-5 { flex: 0 0 auto; width: 41.6667%; }
    .col-lg-6 { flex: 0 0 auto; width: 50%; }
    .col-lg-7 { flex: 0 0 auto; width: 58.3333%; }
    .mb-lg-0 { margin-bottom: 0 !important; }
}
.d-flex { display: flex !important; }
.flex-wrap { flex-wrap: wrap !important; }
.align-items-center { align-items: center !important; }
.align-items-start { align-items: flex-start !important; }
.justify-content-center { justify-content: center !important; }
.h-100 { height: 100% !important; }
.text-center { text-align: center !important; }
.mx-auto { margin-inline: auto !important; }
.gap-2 { gap: .5rem !important; } .gap-3 { gap: 1rem !important; } .gap-4 { gap: 1.5rem !important; }
.me-2 { margin-inline-end: .5rem !important; } .me-3 { margin-inline-end: 1rem !important; }
.mt-1 { margin-top: .25rem !important; } .mt-4 { margin-top: 1.5rem !important; }
.mb-0 { margin-bottom: 0 !important; } .mb-1 { margin-bottom: .25rem !important; } .mb-2 { margin-bottom: .5rem !important; }
.mb-3 { margin-bottom: 1rem !important; } .mb-4 { margin-bottom: 1.5rem !important; } .mb-5 { margin-bottom: 3rem !important; }
.p-3 { padding: 1rem !important; } .p-4 { padding: 1.5rem !important; } .p-5 { padding: 3rem !important; }
.px-4 { padding-inline: 1.5rem !important; } .px-5 { padding-inline: 3rem !important; }
.py-1 { padding-block: .25rem !important; } .py-2 { padding-block: .5rem !important; } .py-3 { padding-block: 1rem !important; } .py-5 { padding-block: 3rem !important; }

/* Bootstrap-style typography / position helpers used by the web-application page */
.display-5 { font-size: clamp(1.9rem, 3.2vw, 3rem); line-height: 1.2; }
.fw-bold { font-weight: 700 !important; }
.lead { font-size: 1.15rem; font-weight: 400; line-height: 1.7; }
.sticky-top { position: sticky; z-index: 10; }
.position-relative { position: relative !important; }
.overflow-hidden { overflow: hidden !important; }
.rounded-pill { border-radius: 50rem !important; }
.mt-5 { margin-top: 3rem !important; }

/* Accordion + collapse (Bootstrap markup, toggled by public/js/collapse-compat.js) */
.collapse:not(.show) { display: none; }
.collapse.show { display: block; animation: collapseIn .35s ease; }
@keyframes collapseIn { from { opacity: 0; transform: translateY(-6px); } to { opacity: 1; transform: none; } }
.accordion-header { margin: 0; font-size: inherit; }
.accordion-button { position: relative; display: flex; align-items: center; justify-content: space-between; gap: 1rem; width: 100%; text-align: start; cursor: pointer; font: inherit; }
.accordion-button::after { content: ""; flex: 0 0 auto; width: .6rem; height: .6rem; border-inline-end: 2px solid currentColor; border-block-end: 2px solid currentColor; transform: rotate(45deg); margin-block-start: -.2rem; transition: transform .3s ease; }
.accordion-button:not(.collapsed)::after { transform: rotate(-135deg); margin-block-start: .2rem; }
.accordion-button:focus-visible { outline: 2px solid var(--primary); outline-offset: -2px; }
