/* ══════════════════════════════════════════════════════════════
   Bootstrap 5.3 layer of the app (replaces the old theme bundle).
   Loaded after lib/bootstrap: fonts, brand palette, the grey scale, dark mode surfaces,
   and the few helper classes the pages use that plain Bootstrap does not have
   (fs-*, spacing 6–20, symbol, badge-light-*, btn-light-*, ...).
   ══════════════════════════════════════════════════════════════ */
@font-face { font-family: "IRANSansWeb"; src: url("/assets/fonts/IRANSansWeb.woff2") format("woff2"), url("/assets/fonts/IRANSansWeb.woff") format("woff"); font-weight: 400; font-display: swap; }
@font-face { font-family: "IRANSansWeb"; src: url("/assets/fonts/IRANSansWeb_Light.woff2") format("woff2"); font-weight: 300; font-display: swap; }
@font-face { font-family: "IRANSansWeb"; src: url("/assets/fonts/IRANSansWeb_Medium.woff2") format("woff2"), url("/assets/fonts/IRANSansWeb_Medium.woff") format("woff"); font-weight: 500; font-display: swap; }
@font-face { font-family: "IRANSansWeb"; src: url("/assets/fonts/IRANSansWeb_Bold.woff2") format("woff2"), url("/assets/fonts/IRANSansWeb_Bold.woff") format("woff"); font-weight: 700; font-display: swap; }

:root, [data-bs-theme="light"] {
    --bs-font-sans-serif: IRANSansWeb, system-ui, -apple-system, "Segoe UI", sans-serif;
    --bs-gray-100: #f9f9f9; --bs-gray-200: #f1f1f4; --bs-gray-300: #dbdfe9; --bs-gray-400: #c4cada;
    --bs-gray-500: #99a1b7; --bs-gray-600: #78829d; --bs-gray-700: #4b5675; --bs-gray-800: #252f4a; --bs-gray-900: #071437;
    --bs-primary: #10b981; --bs-primary-rgb: 16, 185, 129;
    --bs-success: #10b981; --bs-success-rgb: 16, 185, 129;
    --bs-info: #0ea5e9; --bs-info-rgb: 14, 165, 233;
    --bs-warning: #f59e0b; --bs-warning-rgb: 245, 158, 11;
    --bs-danger: #e11d48; --bs-danger-rgb: 225, 29, 72;
    --bs-body-bg: #eef1f7; --bs-body-bg-rgb: 238, 241, 247;
    --bs-body-color: #0f172a; --bs-secondary-color: #5b6b82;
    --bs-border-color: rgba(15, 23, 42, .1);
    --bs-card-bg: #fff;
    --bs-link-color: #047857; --bs-link-hover-color: #065f46;
    --bs-border-radius: .75rem; --bs-border-radius-lg: 1rem;
    --bs-app-header-height: 64px;
}
[data-bs-theme="dark"] {
    --bs-body-bg: #080c18; --bs-body-bg-rgb: 8, 12, 24;
    --bs-body-color: #eaeef8; --bs-secondary-color: #8a94b0;
    --bs-border-color: rgba(148, 163, 209, .16);
    --bs-card-bg: #11182b;
    --bs-gray-100: #151c30; --bs-gray-200: #1c2540; --bs-gray-300: #263052; --bs-gray-400: #3a4568;
    --bs-gray-500: #5b6583; --bs-gray-600: #8a94b0; --bs-gray-700: #aab3cc; --bs-gray-800: #d3d9ea; --bs-gray-900: #eef1fa;
    --bs-link-color: #34d399; --bs-link-hover-color: #6ee7b7;
}
body { font-family: var(--bs-font-sans-serif); }

/* brand buttons (Bootstrap 5.3 reads these variables) */
.btn-primary { --bs-btn-bg: #10b981; --bs-btn-border-color: #10b981; --bs-btn-hover-bg: #059669; --bs-btn-hover-border-color: #059669; --bs-btn-active-bg: #047857; --bs-btn-active-border-color: #047857; --bs-btn-color: #04261c; --bs-btn-hover-color: #fff; --bs-btn-active-color: #fff; --bs-btn-disabled-bg: #10b981; --bs-btn-disabled-border-color: #10b981; --bs-btn-disabled-color: #04261c; }
.btn-success { --bs-btn-bg: #10b981; --bs-btn-border-color: #10b981; --bs-btn-hover-bg: #059669; --bs-btn-hover-border-color: #059669; --bs-btn-color: #04261c; --bs-btn-hover-color: #fff; }
.text-primary { color: #047857 !important; }
[data-bs-theme="dark"] .text-primary { color: #34d399 !important; }
.form-check-input:checked { background-color: #10b981; border-color: #10b981; }
.form-control:focus, .form-select:focus { border-color: #10b981; box-shadow: 0 0 0 .2rem rgba(16, 185, 129, .18); }
.card { --bs-card-border-color: var(--bs-border-color); --bs-card-border-radius: 1.25rem; box-shadow: 0 1px 2px rgba(15, 23, 42, .04); }
.card-header { background: transparent; }
.table { --bs-table-bg: transparent; }

/* ── type scale (fs-1..8 and the big display sizes) ── */
.fs-8 { font-size: .85rem !important; } .fs-7 { font-size: .95rem !important; }
.fs-2x { font-size: 2rem !important; } .fs-3x { font-size: 2.5rem !important; } .fs-4x { font-size: 3rem !important; } .fs-5x { font-size: 3.5rem !important; }
.fs-2hx { font-size: 2.25rem !important; } .fs-2tx { font-size: 2.75rem !important; } .fs-2qx { font-size: 2.5rem !important; }

/* ── spacing 6–20 (Bootstrap stops at 5) ── */
.m-6{margin:1.5rem!important}.p-6{padding:1.5rem!important}
.mx-6{margin-inline:1.5rem!important}.px-6{padding-inline:1.5rem!important}
.my-6{margin-block:1.5rem!important}.py-6{padding-block:1.5rem!important}
.mt-6{margin-top:1.5rem!important}.pt-6{padding-top:1.5rem!important}
.mb-6{margin-bottom:1.5rem!important}.pb-6{padding-bottom:1.5rem!important}
.ms-6{margin-inline-start:1.5rem!important}.ps-6{padding-inline-start:1.5rem!important}
.me-6{margin-inline-end:1.5rem!important}.pe-6{padding-inline-end:1.5rem!important}
.gap-6{gap:1.5rem!important}.g-6{--bs-gutter-x:1.5rem;--bs-gutter-y:1.5rem}
.m-7{margin:1.75rem!important}.p-7{padding:1.75rem!important}
.mx-7{margin-inline:1.75rem!important}.px-7{padding-inline:1.75rem!important}
.my-7{margin-block:1.75rem!important}.py-7{padding-block:1.75rem!important}
.mt-7{margin-top:1.75rem!important}.pt-7{padding-top:1.75rem!important}
.mb-7{margin-bottom:1.75rem!important}.pb-7{padding-bottom:1.75rem!important}
.ms-7{margin-inline-start:1.75rem!important}.ps-7{padding-inline-start:1.75rem!important}
.me-7{margin-inline-end:1.75rem!important}.pe-7{padding-inline-end:1.75rem!important}
.gap-7{gap:1.75rem!important}.g-7{--bs-gutter-x:1.75rem;--bs-gutter-y:1.75rem}
.m-8{margin:2rem!important}.p-8{padding:2rem!important}
.mx-8{margin-inline:2rem!important}.px-8{padding-inline:2rem!important}
.my-8{margin-block:2rem!important}.py-8{padding-block:2rem!important}
.mt-8{margin-top:2rem!important}.pt-8{padding-top:2rem!important}
.mb-8{margin-bottom:2rem!important}.pb-8{padding-bottom:2rem!important}
.ms-8{margin-inline-start:2rem!important}.ps-8{padding-inline-start:2rem!important}
.me-8{margin-inline-end:2rem!important}.pe-8{padding-inline-end:2rem!important}
.gap-8{gap:2rem!important}.g-8{--bs-gutter-x:2rem;--bs-gutter-y:2rem}
.m-9{margin:2.25rem!important}.p-9{padding:2.25rem!important}
.mx-9{margin-inline:2.25rem!important}.px-9{padding-inline:2.25rem!important}
.my-9{margin-block:2.25rem!important}.py-9{padding-block:2.25rem!important}
.mt-9{margin-top:2.25rem!important}.pt-9{padding-top:2.25rem!important}
.mb-9{margin-bottom:2.25rem!important}.pb-9{padding-bottom:2.25rem!important}
.ms-9{margin-inline-start:2.25rem!important}.ps-9{padding-inline-start:2.25rem!important}
.me-9{margin-inline-end:2.25rem!important}.pe-9{padding-inline-end:2.25rem!important}
.gap-9{gap:2.25rem!important}.g-9{--bs-gutter-x:2.25rem;--bs-gutter-y:2.25rem}
.m-10{margin:2.5rem!important}.p-10{padding:2.5rem!important}
.mx-10{margin-inline:2.5rem!important}.px-10{padding-inline:2.5rem!important}
.my-10{margin-block:2.5rem!important}.py-10{padding-block:2.5rem!important}
.mt-10{margin-top:2.5rem!important}.pt-10{padding-top:2.5rem!important}
.mb-10{margin-bottom:2.5rem!important}.pb-10{padding-bottom:2.5rem!important}
.ms-10{margin-inline-start:2.5rem!important}.ps-10{padding-inline-start:2.5rem!important}
.me-10{margin-inline-end:2.5rem!important}.pe-10{padding-inline-end:2.5rem!important}
.gap-10{gap:2.5rem!important}.g-10{--bs-gutter-x:2.5rem;--bs-gutter-y:2.5rem}
.m-11{margin:2.75rem!important}.p-11{padding:2.75rem!important}
.mx-11{margin-inline:2.75rem!important}.px-11{padding-inline:2.75rem!important}
.my-11{margin-block:2.75rem!important}.py-11{padding-block:2.75rem!important}
.mt-11{margin-top:2.75rem!important}.pt-11{padding-top:2.75rem!important}
.mb-11{margin-bottom:2.75rem!important}.pb-11{padding-bottom:2.75rem!important}
.ms-11{margin-inline-start:2.75rem!important}.ps-11{padding-inline-start:2.75rem!important}
.me-11{margin-inline-end:2.75rem!important}.pe-11{padding-inline-end:2.75rem!important}
.gap-11{gap:2.75rem!important}.g-11{--bs-gutter-x:2.75rem;--bs-gutter-y:2.75rem}
.m-12{margin:3rem!important}.p-12{padding:3rem!important}
.mx-12{margin-inline:3rem!important}.px-12{padding-inline:3rem!important}
.my-12{margin-block:3rem!important}.py-12{padding-block:3rem!important}
.mt-12{margin-top:3rem!important}.pt-12{padding-top:3rem!important}
.mb-12{margin-bottom:3rem!important}.pb-12{padding-bottom:3rem!important}
.ms-12{margin-inline-start:3rem!important}.ps-12{padding-inline-start:3rem!important}
.me-12{margin-inline-end:3rem!important}.pe-12{padding-inline-end:3rem!important}
.gap-12{gap:3rem!important}.g-12{--bs-gutter-x:3rem;--bs-gutter-y:3rem}
.m-13{margin:3.25rem!important}.p-13{padding:3.25rem!important}
.mx-13{margin-inline:3.25rem!important}.px-13{padding-inline:3.25rem!important}
.my-13{margin-block:3.25rem!important}.py-13{padding-block:3.25rem!important}
.mt-13{margin-top:3.25rem!important}.pt-13{padding-top:3.25rem!important}
.mb-13{margin-bottom:3.25rem!important}.pb-13{padding-bottom:3.25rem!important}
.ms-13{margin-inline-start:3.25rem!important}.ps-13{padding-inline-start:3.25rem!important}
.me-13{margin-inline-end:3.25rem!important}.pe-13{padding-inline-end:3.25rem!important}
.gap-13{gap:3.25rem!important}.g-13{--bs-gutter-x:3.25rem;--bs-gutter-y:3.25rem}
.m-14{margin:3.5rem!important}.p-14{padding:3.5rem!important}
.mx-14{margin-inline:3.5rem!important}.px-14{padding-inline:3.5rem!important}
.my-14{margin-block:3.5rem!important}.py-14{padding-block:3.5rem!important}
.mt-14{margin-top:3.5rem!important}.pt-14{padding-top:3.5rem!important}
.mb-14{margin-bottom:3.5rem!important}.pb-14{padding-bottom:3.5rem!important}
.ms-14{margin-inline-start:3.5rem!important}.ps-14{padding-inline-start:3.5rem!important}
.me-14{margin-inline-end:3.5rem!important}.pe-14{padding-inline-end:3.5rem!important}
.gap-14{gap:3.5rem!important}.g-14{--bs-gutter-x:3.5rem;--bs-gutter-y:3.5rem}
.m-15{margin:3.75rem!important}.p-15{padding:3.75rem!important}
.mx-15{margin-inline:3.75rem!important}.px-15{padding-inline:3.75rem!important}
.my-15{margin-block:3.75rem!important}.py-15{padding-block:3.75rem!important}
.mt-15{margin-top:3.75rem!important}.pt-15{padding-top:3.75rem!important}
.mb-15{margin-bottom:3.75rem!important}.pb-15{padding-bottom:3.75rem!important}
.ms-15{margin-inline-start:3.75rem!important}.ps-15{padding-inline-start:3.75rem!important}
.me-15{margin-inline-end:3.75rem!important}.pe-15{padding-inline-end:3.75rem!important}
.gap-15{gap:3.75rem!important}.g-15{--bs-gutter-x:3.75rem;--bs-gutter-y:3.75rem}
.m-16{margin:4rem!important}.p-16{padding:4rem!important}
.mx-16{margin-inline:4rem!important}.px-16{padding-inline:4rem!important}
.my-16{margin-block:4rem!important}.py-16{padding-block:4rem!important}
.mt-16{margin-top:4rem!important}.pt-16{padding-top:4rem!important}
.mb-16{margin-bottom:4rem!important}.pb-16{padding-bottom:4rem!important}
.ms-16{margin-inline-start:4rem!important}.ps-16{padding-inline-start:4rem!important}
.me-16{margin-inline-end:4rem!important}.pe-16{padding-inline-end:4rem!important}
.gap-16{gap:4rem!important}.g-16{--bs-gutter-x:4rem;--bs-gutter-y:4rem}
.m-17{margin:4.25rem!important}.p-17{padding:4.25rem!important}
.mx-17{margin-inline:4.25rem!important}.px-17{padding-inline:4.25rem!important}
.my-17{margin-block:4.25rem!important}.py-17{padding-block:4.25rem!important}
.mt-17{margin-top:4.25rem!important}.pt-17{padding-top:4.25rem!important}
.mb-17{margin-bottom:4.25rem!important}.pb-17{padding-bottom:4.25rem!important}
.ms-17{margin-inline-start:4.25rem!important}.ps-17{padding-inline-start:4.25rem!important}
.me-17{margin-inline-end:4.25rem!important}.pe-17{padding-inline-end:4.25rem!important}
.gap-17{gap:4.25rem!important}.g-17{--bs-gutter-x:4.25rem;--bs-gutter-y:4.25rem}
.m-18{margin:4.5rem!important}.p-18{padding:4.5rem!important}
.mx-18{margin-inline:4.5rem!important}.px-18{padding-inline:4.5rem!important}
.my-18{margin-block:4.5rem!important}.py-18{padding-block:4.5rem!important}
.mt-18{margin-top:4.5rem!important}.pt-18{padding-top:4.5rem!important}
.mb-18{margin-bottom:4.5rem!important}.pb-18{padding-bottom:4.5rem!important}
.ms-18{margin-inline-start:4.5rem!important}.ps-18{padding-inline-start:4.5rem!important}
.me-18{margin-inline-end:4.5rem!important}.pe-18{padding-inline-end:4.5rem!important}
.gap-18{gap:4.5rem!important}.g-18{--bs-gutter-x:4.5rem;--bs-gutter-y:4.5rem}
.m-19{margin:4.75rem!important}.p-19{padding:4.75rem!important}
.mx-19{margin-inline:4.75rem!important}.px-19{padding-inline:4.75rem!important}
.my-19{margin-block:4.75rem!important}.py-19{padding-block:4.75rem!important}
.mt-19{margin-top:4.75rem!important}.pt-19{padding-top:4.75rem!important}
.mb-19{margin-bottom:4.75rem!important}.pb-19{padding-bottom:4.75rem!important}
.ms-19{margin-inline-start:4.75rem!important}.ps-19{padding-inline-start:4.75rem!important}
.me-19{margin-inline-end:4.75rem!important}.pe-19{padding-inline-end:4.75rem!important}
.gap-19{gap:4.75rem!important}.g-19{--bs-gutter-x:4.75rem;--bs-gutter-y:4.75rem}
.m-20{margin:5rem!important}.p-20{padding:5rem!important}
.mx-20{margin-inline:5rem!important}.px-20{padding-inline:5rem!important}
.my-20{margin-block:5rem!important}.py-20{padding-block:5rem!important}
.mt-20{margin-top:5rem!important}.pt-20{padding-top:5rem!important}
.mb-20{margin-bottom:5rem!important}.pb-20{padding-bottom:5rem!important}
.ms-20{margin-inline-start:5rem!important}.ps-20{padding-inline-start:5rem!important}
.me-20{margin-inline-end:5rem!important}.pe-20{padding-inline-end:5rem!important}
.gap-20{gap:5rem!important}.g-20{--bs-gutter-x:5rem;--bs-gutter-y:5rem}
.me-n7{margin-inline-end:-1.75rem!important}
@media (min-width:992px){.px-lg-6{padding-inline:1.5rem!important}.ms-lg-6{margin-inline-start:1.5rem!important}.gap-lg-6{gap:1.5rem!important}}
@media (min-width:1200px){.mb-xl-6{margin-bottom:1.5rem!important}}
@media (min-width:992px){.px-lg-7{padding-inline:1.75rem!important}.ms-lg-7{margin-inline-start:1.75rem!important}.gap-lg-7{gap:1.75rem!important}}
@media (min-width:1200px){.mb-xl-7{margin-bottom:1.75rem!important}}
@media (min-width:992px){.px-lg-8{padding-inline:2rem!important}.ms-lg-8{margin-inline-start:2rem!important}.gap-lg-8{gap:2rem!important}}
@media (min-width:1200px){.mb-xl-8{margin-bottom:2rem!important}}
@media (min-width:992px){.px-lg-9{padding-inline:2.25rem!important}.ms-lg-9{margin-inline-start:2.25rem!important}.gap-lg-9{gap:2.25rem!important}}
@media (min-width:1200px){.mb-xl-9{margin-bottom:2.25rem!important}}
@media (min-width:992px){.px-lg-10{padding-inline:2.5rem!important}.ms-lg-10{margin-inline-start:2.5rem!important}.gap-lg-10{gap:2.5rem!important}}
@media (min-width:1200px){.mb-xl-10{margin-bottom:2.5rem!important}}
@media (min-width:992px){.px-lg-11{padding-inline:2.75rem!important}.ms-lg-11{margin-inline-start:2.75rem!important}.gap-lg-11{gap:2.75rem!important}}
@media (min-width:1200px){.mb-xl-11{margin-bottom:2.75rem!important}}
@media (min-width:992px){.px-lg-12{padding-inline:3rem!important}.ms-lg-12{margin-inline-start:3rem!important}.gap-lg-12{gap:3rem!important}}
@media (min-width:1200px){.mb-xl-12{margin-bottom:3rem!important}}
@media (min-width:992px){.px-lg-13{padding-inline:3.25rem!important}.ms-lg-13{margin-inline-start:3.25rem!important}.gap-lg-13{gap:3.25rem!important}}
@media (min-width:1200px){.mb-xl-13{margin-bottom:3.25rem!important}}
@media (min-width:992px){.px-lg-14{padding-inline:3.5rem!important}.ms-lg-14{margin-inline-start:3.5rem!important}.gap-lg-14{gap:3.5rem!important}}
@media (min-width:1200px){.mb-xl-14{margin-bottom:3.5rem!important}}
@media (min-width:992px){.px-lg-15{padding-inline:3.75rem!important}.ms-lg-15{margin-inline-start:3.75rem!important}.gap-lg-15{gap:3.75rem!important}}
@media (min-width:1200px){.mb-xl-15{margin-bottom:3.75rem!important}}
@media (min-width:992px){.px-lg-16{padding-inline:4rem!important}.ms-lg-16{margin-inline-start:4rem!important}.gap-lg-16{gap:4rem!important}}
@media (min-width:1200px){.mb-xl-16{margin-bottom:4rem!important}}
@media (min-width:992px){.px-lg-17{padding-inline:4.25rem!important}.ms-lg-17{margin-inline-start:4.25rem!important}.gap-lg-17{gap:4.25rem!important}}
@media (min-width:1200px){.mb-xl-17{margin-bottom:4.25rem!important}}
@media (min-width:992px){.px-lg-18{padding-inline:4.5rem!important}.ms-lg-18{margin-inline-start:4.5rem!important}.gap-lg-18{gap:4.5rem!important}}
@media (min-width:1200px){.mb-xl-18{margin-bottom:4.5rem!important}}
@media (min-width:992px){.px-lg-19{padding-inline:4.75rem!important}.ms-lg-19{margin-inline-start:4.75rem!important}.gap-lg-19{gap:4.75rem!important}}
@media (min-width:1200px){.mb-xl-19{margin-bottom:4.75rem!important}}
@media (min-width:992px){.px-lg-20{padding-inline:5rem!important}.ms-lg-20{margin-inline-start:5rem!important}.gap-lg-20{gap:5rem!important}}
@media (min-width:1200px){.mb-xl-20{margin-bottom:5rem!important}}
@media (min-width:576px){.pe-sm-10{padding-inline-end:2.5rem!important}.position-sm-relative{position:relative!important}}

/* ── sizes ── */
.w-1px{width:1px!important}.w-5px{width:5px!important}.w-25px{width:25px!important}.w-80px{width:80px!important}.w-125px{width:125px!important}.w-150px{width:150px!important}.w-200px{width:200px!important}.w-250px{width:250px!important}
.h-2px{height:2px!important}.h-25px{height:25px!important}.h-35px{height:35px!important}
.min-w-100px{min-width:100px!important}.min-w-125px{min-width:125px!important}.min-w-150px{min-width:150px!important}.min-w-175px{min-width:175px!important}.min-w-200px{min-width:200px!important}.min-w-250px{min-width:250px!important}.min-w-300px{min-width:300px!important}.min-h-50px{min-height:50px!important}
.mw-350px{max-width:350px!important}.mw-500px{max-width:500px!important}.mw-650px{max-width:650px!important}
@media (min-width:992px){.w-lg-50{width:50%!important}.w-lg-250px{width:250px!important}.flex-lg-row-fluid{flex:1 1 auto!important;min-width:0}.flex-lg-row-auto{flex:0 0 auto!important}}
@media (min-width:1200px){.w-xl-350px{width:350px!important}}
.flex-column-fluid{flex:1 0 auto}.flex-stack{display:flex;align-items:center;justify-content:space-between;flex-wrap:wrap}
.cursor-pointer{cursor:pointer}.scroll-y{overflow-y:auto}
.gs-0{--bs-gutter-x:0}

/* ── grey helpers ── */
.text-gray-700{color:var(--bs-gray-700)!important}.bg-gray-300{background-color:var(--bs-gray-300)!important}.bg-gray-500{background-color:var(--bs-gray-500)!important}.border-gray-300{border-color:var(--bs-gray-300)!important}
.text-hover-primary:hover{color:#10b981!important}

/* ── cards and avatars ── */
.card-toolbar{display:flex;align-items:center;margin:0}.card-px{padding-inline:1.75rem!important}.card-bordered{border:1px solid var(--bs-border-color)}
.symbol{display:inline-block;flex-shrink:0;position:relative;border-radius:.75rem}
.symbol .symbol-label{display:flex;align-items:center;justify-content:center;font-weight:500;background-color:var(--bs-gray-100);background-size:cover;background-position:center;border-radius:.75rem;width:100%;height:100%}
.symbol.symbol-circle,.symbol.symbol-circle .symbol-label,.symbol.symbol-circle img{border-radius:50%}
.symbol>img{width:100%;height:100%;object-fit:cover;border-radius:.75rem}
.symbol-40px{width:40px;height:40px}.symbol-45px{width:45px;height:45px}.symbol-50px{width:50px;height:50px}.symbol-100px{width:100px;height:100px}
.bullet{display:inline-block;width:.4rem;height:.4rem;border-radius:50%;background:var(--bs-gray-400);flex-shrink:0}
.separator-dashed{border-bottom:1px dashed var(--bs-border-color)}
.breadcrumb-separatorless .breadcrumb-item+.breadcrumb-item::before{content:none}

/* ── forms ── */
.required::after{content:"*";color:var(--bs-danger);margin-inline-start:.25rem}
.input-group-solid .form-control,.input-group-solid .input-group-text{background-color:var(--bs-gray-100);border-color:transparent}
.form-check-custom{display:flex;align-items:center}.form-check-custom .form-check-input{margin:0}
.form-check-solid .form-check-input{background-color:var(--bs-gray-200);border-color:transparent}
.form-check-sm .form-check-input{width:1.1rem;height:1.1rem}
.indicator-progress{display:none}[data-fb-indicator="on"] .indicator-progress{display:inline-block}[data-fb-indicator="on"] .indicator-label{display:none}

/* ── soft badges, soft buttons, tinted backgrounds ── */
.badge-light{background:var(--bs-gray-200);color:var(--bs-gray-700)}.badge-sm{font-size:.7rem;padding:.2em .5em}
.badge-success{background:#10b981;color:#fff}.badge-danger{background:#e11d48;color:#fff}
.badge-light-primary,.badge-light-success{background:rgba(16,185,129,.14);color:#047857}
.badge-light-info{background:rgba(14,165,233,.14);color:#0369a1}
.badge-light-warning{background:rgba(245,158,11,.16);color:#b45309}
.badge-light-danger{background:rgba(225,29,72,.12);color:#be123c}
.badge-light-secondary{background:var(--bs-gray-200);color:var(--bs-gray-700)}
.badge-light-dark{background:rgba(15,23,42,.1);color:var(--bs-body-color)}
[data-bs-theme="dark"] .badge-light-primary,[data-bs-theme="dark"] .badge-light-success{color:#34d399}
[data-bs-theme="dark"] .badge-light-info{color:#38bdf8}[data-bs-theme="dark"] .badge-light-warning{color:#fbbf24}[data-bs-theme="dark"] .badge-light-danger{color:#fb7185}
.bg-light-primary{background:rgba(16,185,129,.12)!important}.bg-light-info{background:rgba(14,165,233,.12)!important}.bg-light-warning{background:rgba(245,158,11,.14)!important}
.btn-light-primary{background:rgba(16,185,129,.12);color:#047857;border-color:transparent}.btn-light-primary:hover,.btn-active-light-primary:hover,.btn-active-light-primary.active{background:#10b981;color:#fff}
.btn-light-danger{background:rgba(225,29,72,.1);color:#be123c;border-color:transparent}.btn-light-danger:hover{background:#e11d48;color:#fff}
.btn-bg-light{background:var(--bs-gray-100)}.btn-color-gray-700{color:var(--bs-gray-700)}
.btn-active-primary:hover,.btn-active-primary.active{background:#10b981;color:#fff}
.btn-active-color-primary:hover,.btn-active-color-primary.active{color:#10b981}.btn-active-color-warning:hover,.btn-active-color-warning.active{color:#f59e0b}
[data-bs-theme="dark"] .btn-light-primary{color:#34d399}[data-bs-theme="dark"] .btn-light-danger{color:#fb7185}

/* ── base the whole app was sized for (the old theme's root: 13px, 12px on phones; body is a flex column) ── */
html, body { height: 100%; margin: 0; padding: 0; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; font-size: 13px !important; font-weight: 400; }
@media (max-width: 991.98px) { html, body { font-size: 12px !important; } }
body { display: flex; flex-direction: column; }
body a:hover, body a:active, body a:focus { text-decoration: none !important; }
a { transition: color .2s ease; }
canvas { user-select: none; }
.form-control-solid, .form-select-solid { background-color: var(--bs-gray-100); border-color: transparent; color: var(--bs-body-color); }
.form-control-solid:focus, .form-select-solid:focus { background-color: var(--bs-gray-200); }
.card { --bs-card-border-radius: .85rem; }
.btn.btn-icon { display: inline-flex; align-items: center; justify-content: center; padding: 0; height: calc(1.5em + 1.55rem + 2px); width: calc(1.5em + 1.55rem + 2px); line-height: 1; }
.btn.btn-icon.btn-sm, .btn-group-sm > .btn.btn-icon { height: calc(1.5em + 1.1rem + 2px); width: calc(1.5em + 1.1rem + 2px); }
.btn.btn-icon.btn-lg { height: calc(1.5em + 1.65rem + 2px); width: calc(1.5em + 1.65rem + 2px); }
.breadcrumb-item { display: flex; align-items: center; }

/* A closed offcanvas sits outside the screen (transform); on phones that widens the layout viewport and shifts the whole page.
   Closed = not rendered; opening slides it in with an animation instead of a transition. */
.offcanvas:not(.show):not(.showing):not(.hiding) { display: none !important; }
@keyframes fb-offcanvas-end { from { transform: translateX(100%); } to { transform: none; } }
@keyframes fb-offcanvas-start { from { transform: translateX(-100%); } to { transform: none; } }
[dir="ltr"] .offcanvas-end.showing { animation: fb-offcanvas-end .3s ease-in-out; }
[dir="rtl"] .offcanvas-end.showing { animation: fb-offcanvas-start .3s ease-in-out; }
[dir="ltr"] .offcanvas-start.showing { animation: fb-offcanvas-start .3s ease-in-out; }
[dir="rtl"] .offcanvas-start.showing { animation: fb-offcanvas-end .3s ease-in-out; }

/* icon inside the top filter selects: sits over the Choices box, small and muted, never blocks clicks */
.filter-select-wrapper .filter-select-icon { z-index: 5; pointer-events: none; font-size: 13px !important; color: var(--muted, #7e8299) !important; margin-inline-start: .7rem !important; inset-inline-start: 0; }
.filter-select-static > i { font-size: 13px; }

/* the filter row shrinks with the room it has (it used to overflow into the theme switch on mid-size screens) */
.iot-top-page .toolbar-filters { min-width: 0; flex: 1 1 0; justify-content: flex-end; gap: .5rem; }
.iot-top-page .toolbar-filters > .filter-select-wrapper,
.iot-top-page .toolbar-filters > .filter-select-static { flex: 1 1 120px; min-width: 96px; max-width: 240px; }
.iot-top-page .toolbar-filters > .btn { flex: 0 0 auto; }
.iot-top-page .page-title { flex: 0 1 auto; max-width: 40%; overflow: hidden; }
.iot-top-page .toolbar-actions { min-width: 0; flex: 1 1 0; justify-content: flex-end; }

/* the four inline filters need about 1400px next to the sidebar; below that the filter button opens them as a panel */
.fb-filters-inline { display: none !important; }
.fb-filters-btn { display: inline-flex !important; }
@media (min-width: 1400px) {
    .fb-filters-inline { display: flex !important; }
    .fb-filters-btn { display: none !important; }
}
.iot-top-page .toolbar-actions, .iot-top-page .toolbar-filters { flex-wrap: nowrap; }
.iot-top-page .toolbar-filters > .filter-select-wrapper, .iot-top-page .toolbar-filters > .filter-select-static { flex: 1 1 100px; min-width: 84px; }
