/* ============================================================
   GE-Bootstrap — Gate-E's own BS5-compatible class library.
   Same class names as Bootstrap 5, no Bootstrap dependency.
   All colors/sizes driven by theme variables (see theme.css)
   so each owner/tenant can re-theme by overriding :root vars.
   ============================================================ */

:root{
  --bs-primary:var(--ge-primary,#143C77);
  --bs-secondary:var(--ge-muted,#5B6B7F);
  --bs-success:var(--ge-success,#0E7A4A);
  --bs-danger:var(--ge-danger,#D0342E);
  --bs-warning:var(--ge-warning,#B26A00);
  --bs-info:#0C6DBD;
  --bs-light:#F7F9FC;
  --bs-dark:#14202E;
  --bs-body-bg:var(--ge-bg,#F4F6F9);
  --bs-body-color:var(--ge-text,#14202E);
  --bs-border-color:var(--ge-border,#E3E8EF);
  --bs-border-radius:var(--ge-radius-sm,10px);
  --bs-font-sans-serif:var(--ge-font-en,system-ui,sans-serif);
}

/* ---------- Reboot ---------- */
*,*::before,*::after{box-sizing:border-box;}
img,svg{vertical-align:middle;}
hr{margin:1rem 0;border:0;border-top:1px solid var(--bs-border-color);opacity:1;}

/* ---------- Layout: container & grid ---------- */
.container,.container-fluid{width:100%;padding-inline:12px;margin-inline:auto;}
.container{max-width:720px;}
.row{display:flex;flex-wrap:wrap;margin-inline:-12px;}
.row>*{padding-inline:12px;width:100%;}
.col{flex:1 0 0%;}
.col-auto{flex:0 0 auto;width:auto;}
.col-1{flex:0 0 auto;width:8.3333%;}.col-2{flex:0 0 auto;width:16.6667%;}.col-3{flex:0 0 auto;width:25%;}
.col-4{flex:0 0 auto;width:33.3333%;}.col-5{flex:0 0 auto;width:41.6667%;}.col-6{flex:0 0 auto;width:50%;}
.col-7{flex:0 0 auto;width:58.3333%;}.col-8{flex:0 0 auto;width:66.6667%;}.col-9{flex:0 0 auto;width:75%;}
.col-10{flex:0 0 auto;width:83.3333%;}.col-11{flex:0 0 auto;width:91.6667%;}.col-12{flex:0 0 auto;width:100%;}
@media (min-width:576px){
  .col-sm-3{flex:0 0 auto;width:25%;}.col-sm-4{flex:0 0 auto;width:33.3333%;}.col-sm-6{flex:0 0 auto;width:50%;}
  .col-sm-8{flex:0 0 auto;width:66.6667%;}.col-sm-12{flex:0 0 auto;width:100%;}
}
@media (min-width:768px){
  .col-md-2{flex:0 0 auto;width:16.6667%;}.col-md-3{flex:0 0 auto;width:25%;}.col-md-4{flex:0 0 auto;width:33.3333%;}
  .col-md-6{flex:0 0 auto;width:50%;}.col-md-8{flex:0 0 auto;width:66.6667%;}.col-md-9{flex:0 0 auto;width:75%;}
  .col-md-12{flex:0 0 auto;width:100%;}
}
@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-6{flex:0 0 auto;width:50%;}
  .col-lg-8{flex:0 0 auto;width:66.6667%;}.col-lg-12{flex:0 0 auto;width:100%;}
}

/* ---------- Display ---------- */
.d-none{display:none!important;}.d-inline{display:inline!important;}.d-inline-block{display:inline-block!important;}
.d-block{display:block!important;}.d-flex{display:flex!important;}.d-inline-flex{display:inline-flex!important;}
.d-grid{display:grid!important;}.d-table{display:table!important;}
@media (min-width:576px){.d-sm-none{display:none!important;}.d-sm-block{display:block!important;}.d-sm-flex{display:flex!important;}.d-sm-inline-block{display:inline-block!important;}}
@media (min-width:768px){.d-md-none{display:none!important;}.d-md-block{display:block!important;}.d-md-flex{display:flex!important;}.d-md-inline-block{display:inline-block!important;}}
@media (min-width:992px){.d-lg-none{display:none!important;}.d-lg-block{display:block!important;}.d-lg-flex{display:flex!important;}}
.d-print-none{}
@media print{.d-print-none{display:none!important;}.d-print-block{display:block!important;}}

/* ---------- Flex utilities ---------- */
.flex-row{flex-direction:row!important;}.flex-column{flex-direction:column!important;}
.flex-row-reverse{flex-direction:row-reverse!important;}.flex-column-reverse{flex-direction:column-reverse!important;}
.flex-wrap{flex-wrap:wrap!important;}.flex-nowrap{flex-wrap:nowrap!important;}
.flex-fill{flex:1 1 auto!important;}
.flex-grow-0{flex-grow:0!important;}.flex-grow-1{flex-grow:1!important;}
.flex-shrink-0{flex-shrink:0!important;}.flex-shrink-1{flex-shrink:1!important;}
.justify-content-start{justify-content:flex-start!important;}.justify-content-end{justify-content:flex-end!important;}
.justify-content-center{justify-content:center!important;}.justify-content-between{justify-content:space-between!important;}
.justify-content-around{justify-content:space-around!important;}.justify-content-evenly{justify-content:space-evenly!important;}
.align-items-start{align-items:flex-start!important;}.align-items-end{align-items:flex-end!important;}
.align-items-center{align-items:center!important;}.align-items-baseline{align-items:baseline!important;}
.align-items-stretch{align-items:stretch!important;}
.align-self-start{align-self:flex-start!important;}.align-self-end{align-self:flex-end!important;}
.align-self-center{align-self:center!important;}.align-self-stretch{align-self:stretch!important;}
.order-0{order:0!important;}.order-1{order:1!important;}.order-2{order:2!important;}
.order-3{order:3!important;}.order-first{order:-1!important;}.order-last{order:6!important;}
.gap-0{gap:0!important;}.gap-1{gap:.25rem!important;}.gap-2{gap:.5rem!important;}
.gap-3{gap:1rem!important;}.gap-4{gap:1.5rem!important;}.gap-5{gap:3rem!important;}
.vstack{display:flex;flex:1 1 auto;flex-direction:column;align-self:stretch;}
.hstack{display:flex;flex-direction:row;align-items:center;align-self:stretch;}

/* ---------- Spacing (m/p 0-5 + auto) ---------- */
.m-0{margin:0!important;}.m-1{margin:.25rem!important;}.m-2{margin:.5rem!important;}.m-3{margin:1rem!important;}.m-4{margin:1.5rem!important;}.m-5{margin:3rem!important;}.m-auto{margin:auto!important;}
.mt-0{margin-top:0!important;}.mt-1{margin-top:.25rem!important;}.mt-2{margin-top:.5rem!important;}.mt-3{margin-top:1rem!important;}.mt-4{margin-top:1.5rem!important;}.mt-5{margin-top:3rem!important;}.mt-auto{margin-top:auto!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;}.mb-auto{margin-bottom:auto!important;}
.ms-0{margin-inline-start:0!important;}.ms-1{margin-inline-start:.25rem!important;}.ms-2{margin-inline-start:.5rem!important;}.ms-3{margin-inline-start:1rem!important;}.ms-4{margin-inline-start:1.5rem!important;}.ms-5{margin-inline-start:3rem!important;}.ms-auto{margin-inline-start:auto!important;}
.me-0{margin-inline-end:0!important;}.me-1{margin-inline-end:.25rem!important;}.me-2{margin-inline-end:.5rem!important;}.me-3{margin-inline-end:1rem!important;}.me-4{margin-inline-end:1.5rem!important;}.me-5{margin-inline-end:3rem!important;}.me-auto{margin-inline-end:auto!important;}
.mx-0{margin-inline:0!important;}.mx-1{margin-inline:.25rem!important;}.mx-2{margin-inline:.5rem!important;}.mx-3{margin-inline:1rem!important;}.mx-4{margin-inline:1.5rem!important;}.mx-5{margin-inline:3rem!important;}.mx-auto{margin-inline:auto!important;}
.my-0{margin-block:0!important;}.my-1{margin-block:.25rem!important;}.my-2{margin-block:.5rem!important;}.my-3{margin-block:1rem!important;}.my-4{margin-block:1.5rem!important;}.my-5{margin-block:3rem!important;}
.p-0{padding:0!important;}.p-1{padding:.25rem!important;}.p-2{padding:.5rem!important;}.p-3{padding:1rem!important;}.p-4{padding:1.5rem!important;}.p-5{padding:3rem!important;}
.pt-0{padding-top:0!important;}.pt-1{padding-top:.25rem!important;}.pt-2{padding-top:.5rem!important;}.pt-3{padding-top:1rem!important;}.pt-4{padding-top:1.5rem!important;}.pt-5{padding-top:3rem!important;}
.pb-0{padding-bottom:0!important;}.pb-1{padding-bottom:.25rem!important;}.pb-2{padding-bottom:.5rem!important;}.pb-3{padding-bottom:1rem!important;}.pb-4{padding-bottom:1.5rem!important;}.pb-5{padding-bottom:3rem!important;}
.ps-0{padding-inline-start:0!important;}.ps-1{padding-inline-start:.25rem!important;}.ps-2{padding-inline-start:.5rem!important;}.ps-3{padding-inline-start:1rem!important;}.ps-4{padding-inline-start:1.5rem!important;}.ps-5{padding-inline-start:3rem!important;}
.pe-0{padding-inline-end:0!important;}.pe-1{padding-inline-end:.25rem!important;}.pe-2{padding-inline-end:.5rem!important;}.pe-3{padding-inline-end:1rem!important;}.pe-4{padding-inline-end:1.5rem!important;}.pe-5{padding-inline-end:3rem!important;}
.px-0{padding-inline:0!important;}.px-1{padding-inline:.25rem!important;}.px-2{padding-inline:.5rem!important;}.px-3{padding-inline:1rem!important;}.px-4{padding-inline:1.5rem!important;}.px-5{padding-inline:3rem!important;}
.py-0{padding-block:0!important;}.py-1{padding-block:.25rem!important;}.py-2{padding-block:.5rem!important;}.py-3{padding-block:1rem!important;}.py-4{padding-block:1.5rem!important;}.py-5{padding-block:3rem!important;}

/* ---------- Sizing ---------- */
.w-25{width:25%!important;}.w-50{width:50%!important;}.w-75{width:75%!important;}.w-100{width:100%!important;}.w-auto{width:auto!important;}
.h-25{height:25%!important;}.h-50{height:50%!important;}.h-75{height:75%!important;}.h-100{height:100%!important;}.h-auto{height:auto!important;}
.mw-100{max-width:100%!important;}.mh-100{max-height:100%!important;}
.vw-100{width:100vw!important;}.vh-100{height:100vh!important;}.min-vh-100{min-height:100vh!important;}

/* ---------- Typography ---------- */
.fs-1{font-size:2.5rem!important;}.fs-2{font-size:2rem!important;}.fs-3{font-size:1.75rem!important;}
.fs-4{font-size:1.5rem!important;}.fs-5{font-size:1.25rem!important;}.fs-6{font-size:1rem!important;}
.fw-light{font-weight:300!important;}.fw-normal{font-weight:400!important;}.fw-medium{font-weight:500!important;}
.fw-semibold{font-weight:600!important;}.fw-bold{font-weight:700!important;}.fw-bolder{font-weight:800!important;}
.fst-italic{font-style:italic!important;}.fst-normal{font-style:normal!important;}
.lh-1{line-height:1!important;}.lh-sm{line-height:1.25!important;}.lh-base{line-height:1.5!important;}.lh-lg{line-height:2!important;}
.small{font-size:.875em;}
.text-start{text-align:start!important;}.text-center{text-align:center!important;}.text-end{text-align:end!important;}
.text-lowercase{text-transform:lowercase!important;}.text-uppercase{text-transform:uppercase!important;}.text-capitalize{text-transform:capitalize!important;}
.text-wrap{white-space:normal!important;}.text-nowrap{white-space:nowrap!important;}
.text-break{word-wrap:break-word!important;word-break:break-word!important;}
.text-truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.text-decoration-none{text-decoration:none!important;}.text-decoration-underline{text-decoration:underline!important;}
.text-decoration-line-through{text-decoration:line-through!important;}

/* ---------- Text & background colors ---------- */
.text-primary{color:var(--bs-primary)!important;}.text-secondary{color:var(--bs-secondary)!important;}
.text-success{color:var(--bs-success)!important;}.text-danger{color:var(--bs-danger)!important;}
.text-warning{color:var(--bs-warning)!important;}.text-info{color:var(--bs-info)!important;}
.text-light{color:var(--bs-light)!important;}.text-dark{color:var(--bs-dark)!important;}
.text-muted,.text-body-secondary{color:var(--bs-secondary)!important;}
.text-white{color:#fff!important;}.text-body{color:var(--bs-body-color)!important;}
.bg-primary{background-color:var(--bs-primary)!important;}.bg-secondary{background-color:var(--bs-secondary)!important;}
.bg-success{background-color:var(--bs-success)!important;}.bg-danger{background-color:var(--bs-danger)!important;}
.bg-warning{background-color:var(--bs-warning)!important;}.bg-info{background-color:var(--bs-info)!important;}
.bg-light{background-color:var(--bs-light)!important;}.bg-dark{background-color:var(--bs-dark)!important;}
.bg-white{background-color:#fff!important;}.bg-body{background-color:var(--bs-body-bg)!important;}.bg-transparent{background-color:transparent!important;}
.bg-opacity-10{--bs-bg-opacity:.1;}.bg-opacity-25{--bs-bg-opacity:.25;}.bg-opacity-50{--bs-bg-opacity:.5;}

/* ---------- Borders ---------- */
.border{border:1px solid var(--bs-border-color)!important;}
.border-0{border:0!important;}
.border-top{border-top:1px solid var(--bs-border-color)!important;}.border-top-0{border-top:0!important;}
.border-bottom{border-bottom:1px solid var(--bs-border-color)!important;}.border-bottom-0{border-bottom:0!important;}
.border-start{border-inline-start:1px solid var(--bs-border-color)!important;}.border-start-0{border-inline-start:0!important;}
.border-end{border-inline-end:1px solid var(--bs-border-color)!important;}.border-end-0{border-inline-end:0!important;}
.border-primary{border-color:var(--bs-primary)!important;}.border-secondary{border-color:var(--bs-secondary)!important;}
.border-success{border-color:var(--bs-success)!important;}.border-danger{border-color:var(--bs-danger)!important;}
.border-warning{border-color:var(--bs-warning)!important;}.border-light{border-color:var(--bs-light)!important;}.border-dark{border-color:var(--bs-dark)!important;}
.border-1{border-width:1px!important;}.border-2{border-width:2px!important;}.border-3{border-width:3px!important;}
.rounded{border-radius:var(--bs-border-radius)!important;}
.rounded-0{border-radius:0!important;}.rounded-1{border-radius:4px!important;}.rounded-2{border-radius:8px!important;}
.rounded-3{border-radius:12px!important;}.rounded-4{border-radius:16px!important;}.rounded-5{border-radius:24px!important;}
.rounded-circle{border-radius:50%!important;}.rounded-pill{border-radius:50rem!important;}
.rounded-top{border-top-left-radius:var(--bs-border-radius)!important;border-top-right-radius:var(--bs-border-radius)!important;}
.rounded-bottom{border-bottom-left-radius:var(--bs-border-radius)!important;border-bottom-right-radius:var(--bs-border-radius)!important;}

/* ---------- Shadows, position, overflow ---------- */
.shadow-none{box-shadow:none!important;}
.shadow-sm{box-shadow:0 1px 2px rgba(16,24,40,.06)!important;}
.shadow{box-shadow:0 4px 14px rgba(16,24,40,.10)!important;}
.shadow-lg{box-shadow:0 16px 48px rgba(16,24,40,.18)!important;}
.position-static{position:static!important;}.position-relative{position:relative!important;}
.position-absolute{position:absolute!important;}.position-fixed{position:fixed!important;}.position-sticky{position:sticky!important;}
.top-0{top:0!important;}.top-50{top:50%!important;}.top-100{top:100%!important;}
.bottom-0{bottom:0!important;}.bottom-50{bottom:50%!important;}.bottom-100{bottom:100%!important;}
.start-0{inset-inline-start:0!important;}.start-50{inset-inline-start:50%!important;}.start-100{inset-inline-start:100%!important;}
.end-0{inset-inline-end:0!important;}.end-50{inset-inline-end:50%!important;}.end-100{inset-inline-end:100%!important;}
.translate-middle{transform:translate(-50%,-50%)!important;}
.translate-middle-x{transform:translateX(-50%)!important;}.translate-middle-y{transform:translateY(-50%)!important;}
.overflow-auto{overflow:auto!important;}.overflow-hidden{overflow:hidden!important;}
.overflow-visible{overflow:visible!important;}.overflow-scroll{overflow:scroll!important;}
.overflow-x-auto{overflow-x:auto!important;}.overflow-y-auto{overflow-y:auto!important;}
.opacity-0{opacity:0!important;}.opacity-25{opacity:.25!important;}.opacity-50{opacity:.5!important;}
.opacity-75{opacity:.75!important;}.opacity-100{opacity:1!important;}
.pe-none{pointer-events:none!important;}.pe-auto{pointer-events:auto!important;}
.user-select-none{user-select:none!important;}.user-select-all{user-select:all!important;}
.visually-hidden{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important;}
.stretched-link::after{position:absolute;inset:0;z-index:1;content:"";}

/* ---------- Buttons ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:1px solid transparent;border-radius:var(--bs-border-radius);font-size:14px;font-weight:600;line-height:1.4;padding:.65rem 1.25rem;cursor:pointer;text-decoration:none;text-align:center;background:none;color:var(--bs-body-color);transition:background .12s,border-color .12s;}
.btn:focus-visible{outline:2px solid var(--bs-primary);outline-offset:2px;}
.btn:disabled,.btn.disabled{opacity:.55;pointer-events:none;}
.btn-primary{background:var(--bs-primary);border-color:var(--bs-primary);color:#fff;}
.btn-primary:hover{filter:brightness(.9);}
.btn-secondary{background:var(--bs-secondary);border-color:var(--bs-secondary);color:#fff;}
.btn-success{background:var(--ge-pay,var(--bs-success));border-color:transparent;color:#fff;}
.btn-success:hover{filter:brightness(.94);}
.btn-danger{background:var(--bs-danger);border-color:var(--bs-danger);color:#fff;}
.btn-warning{background:var(--bs-warning);border-color:var(--bs-warning);color:#fff;}
.btn-info{background:var(--bs-info);border-color:var(--bs-info);color:#fff;}
.btn-light{background:var(--bs-light);border-color:var(--bs-border-color);color:var(--bs-body-color);}
.btn-dark{background:var(--bs-dark);border-color:var(--bs-dark);color:#fff;}
.btn-link{border:none;color:var(--bs-primary);text-decoration:none;padding:.35rem .5rem;background:none;}
.btn-outline-primary{border-color:var(--bs-primary);color:var(--bs-primary);background:#fff;}
.btn-outline-primary:hover{background:var(--ge-primary-soft,#F0F4FA);}
.btn-outline-secondary{border-color:var(--bs-border-color);color:var(--bs-body-color);background:#fff;}
.btn-outline-secondary:hover{background:var(--bs-light);}
.btn-outline-success{border-color:var(--bs-success);color:var(--bs-success);background:#fff;}
.btn-outline-danger{border-color:var(--bs-danger);color:var(--bs-danger);background:#fff;}
.btn-sm{padding:.45rem .9rem;font-size:12.5px;border-radius:8px;}
.btn-lg{padding:.85rem 1.6rem;font-size:16px;border-radius:12px;}
.btn-close{width:1em;height:1em;border:0;background:transparent;font-size:1.2rem;line-height:1;cursor:pointer;color:var(--bs-secondary);}
.d-grid .btn{width:100%;}

/* ---------- Badge & alerts ---------- */
.badge{display:inline-flex;align-items:center;font-size:11px;font-weight:700;letter-spacing:.4px;line-height:1;padding:.35em .8em;border-radius:50rem;white-space:nowrap;}
.alert{position:relative;padding:.9rem 1.1rem;border:1px solid transparent;border-radius:var(--bs-border-radius);font-size:13.5px;line-height:1.6;}
.alert-primary{background:var(--ge-primary-soft,#F0F4FA);border-color:#C8D6EA;color:var(--bs-primary);}
.alert-success{background:var(--ge-success-bg,#E4F4EC);border-color:#B7E1C9;color:var(--bs-success);}
.alert-danger{background:var(--ge-danger-bg,#FBE7E6);border-color:#F0B9B6;color:var(--bs-danger);}
.alert-warning{background:var(--ge-warning-bg,#FCF0DC);border-color:#EDD3A8;color:var(--bs-warning);}
.alert-secondary{background:var(--ge-border-soft,#EEF1F5);border-color:var(--bs-border-color);color:var(--bs-secondary);}
.alert-link{font-weight:700;color:inherit;}

/* ---------- Card ---------- */
.card{position:relative;display:flex;flex-direction:column;background:#fff;border:1px solid var(--bs-border-color);border-radius:var(--ge-radius,16px);}
.card-header{padding:.9rem 1.4rem;border-bottom:1px solid var(--ge-border-soft,#EEF1F5);font-weight:600;}
.card-body{flex:1 1 auto;padding:1.4rem;}
.card-footer{padding:.9rem 1.4rem;border-top:1px solid var(--ge-border-soft,#EEF1F5);}
.card-title{margin:0 0 .5rem;font-size:1.05rem;font-weight:700;}
.card-subtitle{margin:-.25rem 0 .5rem;color:var(--bs-secondary);font-size:.85rem;}
.card-text{margin:0 0 .75rem;}

/* ---------- List group ---------- */
.list-group{display:flex;flex-direction:column;border-radius:var(--bs-border-radius);}
.list-group-item{position:relative;display:block;padding:.8rem 1rem;background:#fff;border:1px solid var(--bs-border-color);margin-top:-1px;}
.list-group-item:first-child{border-top-left-radius:inherit;border-top-right-radius:inherit;margin-top:0;}
.list-group-item:last-child{border-bottom-left-radius:inherit;border-bottom-right-radius:inherit;}
.list-group-item.active{background:var(--ge-primary-soft,#F0F4FA);border-color:var(--bs-primary);color:var(--bs-primary);z-index:2;}
.list-group-flush .list-group-item{border-inline:0;border-radius:0;}
.list-group-item-action{width:100%;text-align:start;cursor:pointer;}
.list-group-item-action:hover{background:var(--bs-light);}

/* ---------- Tables ---------- */
.table{width:100%;border-collapse:collapse;caption-side:bottom;font-size:13px;}
.table th,.table td{padding:.6rem .55rem;border-bottom:1px solid var(--ge-border-soft,#EEF1F5);text-align:start;vertical-align:middle;}
.table thead th{font-size:11px;color:var(--bs-secondary);font-weight:700;letter-spacing:.4px;text-transform:uppercase;border-bottom:2px solid var(--bs-primary);}
.table-striped tbody tr:nth-of-type(odd){background:#FAFBFD;}
.table-hover tbody tr:hover{background:var(--bs-light);}
.table-bordered th,.table-bordered td{border:1px solid var(--bs-border-color);}
.table-sm th,.table-sm td{padding:.3rem .4rem;}
.table-responsive{overflow-x:auto;-webkit-overflow-scrolling:touch;}

/* ---------- Forms ---------- */
.form-label{display:block;font-size:12px;color:var(--bs-secondary);font-weight:600;margin-bottom:.4rem;}
.form-text{font-size:11.5px;color:var(--ge-faint,#8A98A9);margin-top:.3rem;}
.form-control,.form-select{display:block;width:100%;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);padding:.8rem .9rem;font-size:14px;background:#fff;color:var(--bs-body-color);appearance:none;}
.form-select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235B6B7F' stroke-width='1.6' fill='none'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right .9rem center;padding-inline-end:2rem;cursor:pointer;}
html[dir="rtl"] .form-select{background-position:left .9rem center;}
.form-control:focus,.form-select:focus{outline:2px solid var(--bs-primary);outline-offset:1px;border-color:var(--bs-primary);}
.form-control:disabled,.form-select:disabled{background:var(--bs-light);opacity:.7;}
.form-control-sm{padding:.45rem .6rem;font-size:12.5px;}
.form-control-lg{padding:1rem 1.1rem;font-size:16px;}
.form-check{display:flex;align-items:center;gap:.5rem;min-height:1.4rem;}
.form-check-input{width:1.05em;height:1.05em;accent-color:var(--bs-primary);cursor:pointer;flex:none;margin:0;}
.form-check-label{font-size:13.5px;cursor:pointer;}
.form-switch .form-check-input{width:2em;}
.form-range{width:100%;accent-color:var(--bs-primary);}
.input-group{display:flex;direction:ltr;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);background:#fff;overflow:hidden;align-items:stretch;}
.input-group:focus-within{outline:2px solid var(--bs-primary);outline-offset:1px;}
.input-group .form-control,.input-group .form-select{border:none;border-radius:0;flex:1;min-width:0;}
.input-group .form-control:focus,.input-group .form-select:focus{outline:none;}
.input-group .form-select{width:auto;background-color:var(--bs-light);flex:none;}
.input-group-text{display:flex;align-items:center;background:var(--bs-light);padding:0 .9rem;font-size:13.5px;font-weight:600;color:var(--bs-secondary);flex:none;border-inline-start:1px solid var(--ge-border-soft,#EEF1F5);}
.is-invalid{border-color:var(--bs-danger)!important;}
.invalid-feedback{display:block;font-size:11.5px;color:var(--bs-danger);margin-top:.3rem;}
.is-valid{border-color:var(--bs-success)!important;}
.valid-feedback{display:block;font-size:11.5px;color:var(--bs-success);margin-top:.3rem;}

/* ---------- Nav / tabs / pills ---------- */
.nav{display:flex;flex-wrap:wrap;list-style:none;margin:0;padding:0;gap:2px;}
.nav-link{display:block;padding:.55rem .9rem;color:var(--bs-secondary);text-decoration:none;font-size:13.5px;font-weight:600;border:none;background:none;cursor:pointer;border-radius:8px;}
.nav-link:hover{color:var(--bs-primary);}
.nav-link.active{color:var(--bs-primary);}
.nav-tabs{border-bottom:1px solid var(--bs-border-color);}
.nav-tabs .nav-link{border-radius:8px 8px 0 0;margin-bottom:-1px;border:1px solid transparent;}
.nav-tabs .nav-link.active{background:#fff;border-color:var(--bs-border-color) var(--bs-border-color) #fff;}
.nav-pills .nav-link.active{background:var(--bs-primary);color:#fff;}

/* ---------- Dropdown ---------- */
.dropdown{position:relative;}
.dropdown-menu{position:absolute;top:100%;inset-inline-start:0;z-index:1000;min-width:10rem;padding:.4rem 0;margin-top:.25rem;background:#fff;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);box-shadow:0 10px 30px rgba(16,24,40,.14);}
.dropdown-item{display:block;width:100%;padding:.5rem 1rem;border:0;background:none;text-align:start;font-size:13.5px;cursor:pointer;color:var(--bs-body-color);text-decoration:none;}
.dropdown-item:hover{background:var(--bs-light);}
.dropdown-item.active{background:var(--ge-primary-soft,#F0F4FA);color:var(--bs-primary);}
.dropdown-divider{height:0;margin:.4rem 0;border-top:1px solid var(--ge-border-soft,#EEF1F5);}

/* ---------- Modal ---------- */
.modal-backdrop{position:fixed;inset:0;z-index:1050;background:rgba(10,18,30,.5);}
.modal{position:fixed;inset:0;z-index:1055;display:flex;align-items:center;justify-content:center;padding:1.25rem;}
.modal-dialog{width:100%;max-width:420px;}
.modal-content{background:#fff;border-radius:var(--ge-radius,16px);box-shadow:0 20px 50px rgba(10,18,30,.3);display:flex;flex-direction:column;}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:1.1rem 1.4rem .6rem;}
.modal-title{margin:0;font-size:16px;font-weight:700;}
.modal-body{padding:.5rem 1.4rem 1rem;}
.modal-footer{display:flex;gap:.6rem;justify-content:flex-end;padding:.6rem 1.4rem 1.3rem;}

/* ---------- Progress / spinner / placeholder ---------- */
.progress{height:.75rem;background:var(--ge-border-soft,#EEF1F5);border-radius:50rem;overflow:hidden;}
.progress-bar{height:100%;background:var(--bs-primary);border-radius:50rem;transition:width .3s;}
.spinner-border{display:inline-block;width:1.6rem;height:1.6rem;border:.22em solid currentColor;border-inline-end-color:transparent;border-radius:50%;animation:spinner-border .75s linear infinite;}
@keyframes spinner-border{to{transform:rotate(360deg);}}
.spinner-grow{display:inline-block;width:1.6rem;height:1.6rem;background:currentColor;border-radius:50%;opacity:0;animation:spinner-grow .75s linear infinite;}
@keyframes spinner-grow{0%{transform:scale(0);}50%{opacity:1;transform:none;}}
.placeholder{display:inline-block;min-height:1em;background:currentColor;opacity:.25;border-radius:4px;cursor:wait;}
.placeholder-glow .placeholder{animation:placeholder-glow 2s ease-in-out infinite;}
@keyframes placeholder-glow{50%{opacity:.1;}}

/* ---------- Breadcrumb & pagination ---------- */
.breadcrumb{display:flex;flex-wrap:wrap;gap:.4rem;list-style:none;margin:0;padding:0;font-size:12.5px;color:var(--bs-secondary);}
.breadcrumb-item+.breadcrumb-item::before{content:"/";padding-inline-end:.4rem;color:var(--ge-faint,#8A98A9);}
.breadcrumb-item.active{color:var(--bs-body-color);font-weight:600;}
.pagination{display:flex;list-style:none;margin:0;padding:0;gap:4px;}
.page-link{display:flex;align-items:center;justify-content:center;min-width:2.2rem;height:2.2rem;padding:0 .5rem;border:1px solid var(--bs-border-color);border-radius:8px;background:#fff;color:var(--bs-primary);font-size:13px;font-weight:600;text-decoration:none;cursor:pointer;}
.page-link:hover{background:var(--bs-light);}
.page-item.active .page-link{background:var(--bs-primary);border-color:var(--bs-primary);color:#fff;}
.page-item.disabled .page-link{color:var(--ge-faint,#8A98A9);pointer-events:none;}

/* ---------- Accordion ---------- */
.accordion{display:flex;flex-direction:column;gap:0;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);overflow:hidden;}
.accordion-item{border-bottom:1px solid var(--ge-border-soft,#EEF1F5);}
.accordion-item:last-child{border-bottom:0;}
.accordion-button{display:flex;align-items:center;justify-content:space-between;width:100%;padding:.9rem 1.1rem;border:0;background:#fff;font-size:13.5px;font-weight:600;cursor:pointer;text-align:start;}
.accordion-button:not(.collapsed){background:var(--ge-primary-soft,#F0F4FA);color:var(--bs-primary);}
.accordion-body{padding:.9rem 1.1rem;font-size:13px;color:var(--bs-secondary);line-height:1.7;}

/* ---------- Toast ---------- */
.toast{max-width:340px;background:#fff;border:1px solid var(--bs-border-color);border-radius:var(--bs-border-radius);box-shadow:0 10px 30px rgba(16,24,40,.14);overflow:hidden;font-size:13px;}
.toast-header{display:flex;align-items:center;gap:.5rem;padding:.55rem .9rem;border-bottom:1px solid var(--ge-border-soft,#EEF1F5);font-weight:600;}
.toast-body{padding:.75rem .9rem;}
