/* bs-shim.css — Bootstrap visual shim for migration period
   Covers JS states + component visuals until HTML is converted to Tailwind */

/* ── Collapse ───────────────────────────────────────────── */
/* Tailwind v3 generates .collapse { visibility: collapse } as a utility.
   Bootstrap uses .collapse as a component class (panel show/hide).
   Override here so children of .collapse panels are always visible. */
.collapse { visibility: visible !important; }
.collapse:not(.show){display:none!important}
/* No CSS transition on .collapsing — Bootstrap's 5ms JS fallback fires
   immediately, moving state to .collapse (display:none) fast enough
   that the flex-parent gap is reclaimed without visible stutter.
   Smooth animation will be added back with Alpine.js in a later phase. */
.collapsing{height:0;overflow:hidden}
/* Allow absolutely-positioned children (e.g. combobox menus) to render outside the collapse panel */
.collapse.show{overflow:visible!important}

/* ── Offcanvas ──────────────────────────────────────────── */
.offcanvas{position:fixed;bottom:0;z-index:1045;display:flex;flex-direction:column;max-width:100%;visibility:hidden;background:#fff;background-clip:padding-box;outline:0;transition:transform .3s ease-in-out}
.offcanvas.showing,.offcanvas.show:not(.hiding){visibility:visible}
.offcanvas.showing,.offcanvas.hiding{transition:transform .3s ease-in-out}
.offcanvas-start{top:0;left:0;width:280px;border-right:1px solid rgba(0,0,0,.1);transform:translateX(-100%)}
.offcanvas-end{top:0;right:0;width:280px;border-left:1px solid rgba(0,0,0,.1);transform:translateX(100%)}
.offcanvas-top{top:0;left:0;right:0;height:auto;max-height:100%;border-bottom:1px solid rgba(0,0,0,.1);transform:translateY(-100%)}
.offcanvas-bottom{left:0;right:0;height:auto;max-height:100%;border-top:1px solid rgba(0,0,0,.1);transform:translateY(100%)}
.offcanvas.show{transform:none}
.offcanvas-header{display:flex;align-items:center;padding:1rem;justify-content:space-between}
.offcanvas-title{margin:0;line-height:1.5}
.offcanvas-body{flex-grow:1;padding:1rem;overflow-y:auto}
.offcanvas-backdrop{position:fixed;top:0;left:0;z-index:1040;width:100vw;height:100vh;background:#0f172a}
.offcanvas-backdrop.fade{opacity:0;transition:opacity .15s linear}
.offcanvas-backdrop.fade.show{opacity:.15}
/* On large screens (lg:), hide offcanvas entirely since the desktop sidebar is used */
@media(min-width:1024px){.offcanvas{--bs-offcanvas-width:280px}.offcanvas:not(.show){visibility:hidden}}

/* ── Modal ──────────────────────────────────────────────── */
.modal{display:none;position:fixed;inset:0;z-index:1055;overflow-x:hidden;overflow-y:auto}
.modal-dialog{position:relative;width:auto;margin:.5rem;pointer-events:none}
@media(min-width:576px){.modal-dialog{max-width:500px;margin:1.75rem auto}}
.modal-dialog-lg,.modal-lg{max-width:800px}
.modal-dialog-xl,.modal-xl{max-width:1140px}
.modal-content{position:relative;display:flex;flex-direction:column;width:100%;background:#fff;border:1px solid rgba(0,0,0,.2);border-radius:.5rem;box-shadow:0 .5rem 1rem rgba(0,0,0,.5);pointer-events:auto}
.modal-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid #dee2e6;border-radius:.5rem .5rem 0 0}
.modal-title{margin:0;font-size:1.1rem;font-weight:600}
.modal-body{position:relative;flex:1 1 auto;padding:1rem}
.modal-footer{display:flex;align-items:center;justify-content:flex-end;gap:.5rem;padding:.75rem 1rem;border-top:1px solid #dee2e6;border-radius:0 0 .5rem .5rem}
.modal-backdrop{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:1050}
.modal-backdrop.fade{opacity:0;transition:opacity .15s linear}
.modal-backdrop.show{opacity:1}
.modal-scrollbar-measure{position:absolute;top:-9999px;width:50px;height:50px;overflow:scroll}

/* ── Dropdown ───────────────────────────────────────────── */
.dropdown{position:relative}
.dropdown-menu{display:none;position:absolute;z-index:1000;min-width:10rem;background:#fff;border:1px solid rgba(0,0,0,.15);border-radius:.375rem;padding:.25rem 0;box-shadow:0 .5rem 1rem rgba(0,0,0,.175)}
.dropdown-menu.show{display:block}
.dropdown-item{display:block;width:100%;padding:.35rem 1rem;clear:both;font-weight:400;color:#212529;text-align:inherit;text-decoration:none;white-space:nowrap;background:0 0;border:0;cursor:pointer}
.dropdown-item:hover,.dropdown-item:focus{color:#1e2125;background:#f8f9fa}
.dropdown-divider{height:0;margin:.5rem 0;overflow:hidden;border-top:1px solid rgba(0,0,0,.15)}
.dropdown-header{padding:.5rem 1rem;font-size:.875rem;color:#6c757d}

/* ── Fade ───────────────────────────────────────────────── */
.fade{opacity:0;transition:opacity .15s linear}
.fade.show{opacity:1}

/* ── Buttons ────────────────────────────────────────────── */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font-weight:500;line-height:1.5;text-align:center;text-decoration:none;vertical-align:middle;cursor:pointer;user-select:none;background:transparent;border:1px solid transparent;padding:.375rem .75rem;font-size:.9rem;border-radius:.5rem;transition:color .15s ease,background .15s ease,border-color .15s ease,box-shadow .15s ease}
.btn:focus-visible{outline:2px solid #6366f1;outline-offset:2px}
.btn:disabled,.btn.disabled{opacity:.65;pointer-events:none}
.btn-sm{padding:.25rem .5rem;font-size:.8rem;border-radius:.375rem}
.btn-lg{padding:.5rem 1rem;font-size:1.1rem;border-radius:.5rem}
.btn-primary{color:#fff;background:#6366f1;border-color:#6366f1}
.btn-primary:hover{color:#fff;background:#4f46e5;border-color:#4f46e5}
.btn-primary:active{color:#fff;background:#4338ca;border-color:#4338ca}
.btn-secondary{color:#fff;background:#6c757d;border-color:#6c757d}
.btn-secondary:hover{color:#fff;background:#5c636a;border-color:#565e64}
.btn-success{color:#fff;background:#198754;border-color:#198754}
.btn-success:hover{color:#fff;background:#157347}
.btn-danger{color:#fff;background:#dc3545;border-color:#dc3545}
.btn-danger:hover{color:#fff;background:#bb2d3b}
.btn-warning{color:#000;background:#ffc107;border-color:#ffc107}
.btn-warning:hover{color:#000;background:#ffca2c}
.btn-info{color:#000;background:#0dcaf0;border-color:#0dcaf0}
.btn-info:hover{color:#000;background:#31d2f2}
.btn-light{color:#000;background:#f8f9fa;border-color:#f8f9fa}
.btn-light:hover{color:#000;background:#e9ecef}
.btn-dark{color:#fff;background:#212529;border-color:#212529}
.btn-dark:hover{color:#fff;background:#1c1f23}
.btn-link{color:#6366f1;text-decoration:underline;background:0;border:0}
.btn-link:hover{color:#4f46e5}
.btn-outline-primary{color:#6366f1;border-color:#6366f1}
.btn-outline-primary:hover{color:#fff;background:#6366f1}
.btn-outline-secondary{color:#6c757d;border-color:#6c757d}
.btn-outline-secondary:hover{color:#fff;background:#6c757d}
.btn-outline-success{color:#198754;border-color:#198754}
.btn-outline-success:hover{color:#fff;background:#198754}
.btn-outline-danger{color:#dc3545;border-color:#dc3545}
.btn-outline-danger:hover{color:#fff;background:#dc3545}
.btn-outline-warning{color:#ffc107;border-color:#ffc107}
.btn-outline-warning:hover{color:#000;background:#ffc107}
.btn-outline-info{color:#0dcaf0;border-color:#0dcaf0}
.btn-outline-info:hover{color:#000;background:#0dcaf0}
.btn-outline-light{color:#f8f9fa;border-color:#f8f9fa}
.btn-outline-light:hover{color:#000;background:#f8f9fa}
.btn-outline-dark{color:#212529;border-color:#212529}
.btn-outline-dark:hover{color:#fff;background:#212529}
.btn-close{box-sizing:content-box;width:1em;height:1em;padding:.25em;color:#000;background:transparent url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16' fill='%23000'%3e%3cpath d='M.293.293a1 1 0 0 1 1.414 0L8 6.586 14.293.293a1 1 0 1 1 1.414 1.414L9.414 8l6.293 6.293a1 1 0 0 1-1.414 1.414L8 9.414l-6.293 6.293a1 1 0 0 1-1.414-1.414L6.586 8 .293 1.707a1 1 0 0 1 0-1.414z'/%3e%3c/svg%3e") center/.75em no-repeat;border:0;border-radius:.375rem;opacity:.5;cursor:pointer}
.btn-close:hover{opacity:.75}
/* btn-check: visually hidden checkbox used as toggle button
   !important ensures @tailwindcss/forms [type='checkbox'] resets don't override */
.btn-check{position:absolute!important;clip:rect(0,0,0,0)!important;pointer-events:none!important;opacity:0!important;width:0!important;height:0!important;overflow:hidden!important}

/* ── Forms ──────────────────────────────────────────────── */
.form-control{display:block;padding:.375rem .75rem;font-size:.9rem;font-weight:400;line-height:1.5;color:#212529;background:#fff;border:1px solid #ced4da;border-radius:.5rem;transition:border-color .15s ease,box-shadow .15s ease;appearance:none}
.form-control:focus{color:#212529;background:#fff;border-color:#818cf8;outline:0;box-shadow:0 0 0 .2rem rgba(99,102,241,.25)}
.form-control::placeholder{color:#6c757d}
.form-control:disabled{background:#e9ecef;opacity:1}
.form-control-sm{padding:.25rem .5rem;font-size:.8rem;border-radius:.375rem}
.form-control-lg{padding:.5rem 1rem;font-size:1.1rem;border-radius:.5rem}
.form-select{display:block;padding:.375rem 2.25rem .375rem .75rem;font-size:.9rem;font-weight:400;line-height:1.5;color:#212529;background:#fff url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e") right .75rem center/16px no-repeat;border:1px solid #ced4da;border-radius:.5rem;appearance:none}
.form-select:focus{border-color:#818cf8;outline:0;box-shadow:0 0 0 .2rem rgba(99,102,241,.25)}
.form-select-sm{padding:.25rem 2.25rem .25rem .5rem;font-size:.8rem;border-radius:.375rem}
.form-label{margin-bottom:.5rem;font-weight:500;font-size:.875rem}
.form-text{margin-top:.25rem;font-size:.875rem;color:#6c757d}
.form-check{display:flex;align-items:center;gap:.5rem;padding-left:0;margin-bottom:.125rem}
.form-check-input{width:1em;height:1em;margin:0;cursor:pointer;border:1px solid rgba(0,0,0,.25);border-radius:.25em;appearance:none;background:#fff}
.form-check-input:checked{background-color:#6366f1;border-color:#6366f1}
.form-check-label{cursor:pointer}
.invalid-feedback{display:none;font-size:.875rem;color:#dc3545}
.is-invalid~.invalid-feedback,.is-invalid~.invalid-tooltip{display:block}
.is-invalid .form-control,.form-control.is-invalid{border-color:#dc3545}

/* ── Input Group ────────────────────────────────────────── */
.input-group{position:relative;display:flex;align-items:stretch;width:100%}
.input-group>.form-control,.input-group>.form-select{position:relative;flex:1 1 auto;width:1%;min-width:0}
.input-group-text{display:flex;align-items:center;padding:.375rem .75rem;font-size:.9rem;font-weight:400;line-height:1.5;color:#212529;text-align:center;white-space:nowrap;background:#e9ecef;border:1px solid #ced4da;border-radius:.5rem}
.input-group>:not(:first-child){margin-left:-1px;border-top-left-radius:0;border-bottom-left-radius:0}
.input-group>:not(:last-child){border-top-right-radius:0;border-bottom-right-radius:0}

/* ── Alert ──────────────────────────────────────────────── */
.alert{position:relative;padding:.75rem 1rem;border:1px solid transparent;border-radius:.5rem;margin-bottom:1rem}
.alert-success{color:#0a3622;background:#d1e7dd;border-color:#a3cfbb}
.alert-danger{color:#58151c;background:#f8d7da;border-color:#f1aeb5}
.alert-warning{color:#664d03;background:#fff3cd;border-color:#ffe69c}
.alert-info{color:#055160;background:#cff4fc;border-color:#9eeaf9}
.alert-primary{color:#2d2f79;background:#e2e3ff;border-color:#c5c8ff}
.alert-dismissible{padding-right:3rem}
.alert-dismissible .btn-close{position:absolute;top:0;right:0;z-index:2;padding:.9375rem 1rem}

/* ── Card ───────────────────────────────────────────────── */
.card{position:relative;display:flex;flex-direction:column;min-width:0;background:#fff;border:1px solid rgba(0,0,0,.125);border-radius:.5rem}
.card-body{flex:1 1 auto;padding:1rem}
.card-header{padding:.5rem 1rem;background:rgba(0,0,0,.03);border-bottom:1px solid rgba(0,0,0,.125)}
.card-footer{padding:.5rem 1rem;background:rgba(0,0,0,.03);border-top:1px solid rgba(0,0,0,.125)}
.card-title{margin-bottom:.5rem;font-weight:600}
.card-text:last-child{margin-bottom:0}

/* ── Badge ──────────────────────────────────────────────── */
.badge{display:inline-block;padding:.35em .65em;font-size:.75em;font-weight:700;line-height:1;text-align:center;white-space:nowrap;vertical-align:baseline;border-radius:.375rem}
.bg-primary{background:#6366f1!important}
.bg-secondary{background:#6c757d!important}
.bg-success{background:#198754!important}
.bg-danger{background:#dc3545!important}
.bg-warning{background:#ffc107!important;color:#000!important}
.bg-info{background:#0dcaf0!important;color:#000!important}
.bg-light{background:#f8f9fa!important;color:#000!important}
.bg-dark{background:#212529!important}

/* ── Table ──────────────────────────────────────────────── */
.table{width:100%;margin-bottom:1rem;color:#212529;vertical-align:top;border-color:#dee2e6}
.table>:not(caption)>*>*{padding:.5rem;border-bottom:1px solid #dee2e6}
.table>thead{vertical-align:bottom}
.table-hover>tbody>tr:hover>*{background:rgba(0,0,0,.05)}
.table-light{--bs-table-bg:#f8f9fa;background:#f8f9fa}
.table-responsive{overflow-x:auto}
.align-middle{vertical-align:middle!important}

/* ── Nav / Navbar ───────────────────────────────────────── */
.navbar{display:flex;align-items:center;flex-wrap:wrap;padding:.5rem 1rem}
.navbar-brand{font-size:1.25rem;font-weight:700;text-decoration:none}
.nav{display:flex;flex-wrap:wrap;padding-left:0;list-style:none}
.nav-link{padding:.5rem 1rem;text-decoration:none}

/* ── Progress ───────────────────────────────────────────── */
.progress{display:flex;height:1rem;overflow:hidden;background:#e9ecef;border-radius:.375rem}
.progress-bar{display:flex;align-items:center;justify-content:center;overflow:hidden;color:#fff;text-align:center;white-space:nowrap;background:#6366f1;transition:width .6s ease}

/* ── Tooltip ────────────────────────────────────────────── */
.tooltip{position:absolute;z-index:1080;display:block;pointer-events:none;opacity:0;transition:opacity .15s linear}
.tooltip.show{opacity:.9}
.tooltip-inner{max-width:200px;padding:3px 8px;color:#fff;text-align:center;background:#000;border-radius:4px;font-size:.8rem}

/* ── Carousel ───────────────────────────────────────────── */
.carousel{position:relative}
.carousel-inner{position:relative;width:100%;overflow:hidden}
.carousel-item{position:relative;display:none;float:left;width:100%;backface-visibility:hidden}
.carousel-item.active,.carousel-item-next,.carousel-item-prev{display:block}
.carousel-fade .carousel-item{opacity:0;transition-property:opacity;transform:none}
.carousel-fade .carousel-item.active{opacity:1}
.carousel-fade .carousel-item-next.carousel-item-start,
.carousel-fade .carousel-item-prev.carousel-item-end{z-index:1;opacity:0}
.carousel-fade .active.carousel-item-start,
.carousel-fade .active.carousel-item-end{z-index:0;opacity:0;transition:opacity 0s .6s}

/* ── Grid basics ────────────────────────────────────────── */
.container,.container-fluid{width:100%;padding-right:.75rem;padding-left:.75rem;margin-right:auto;margin-left:auto}
.container{max-width:1320px}
.row{display:flex;flex-wrap:wrap;margin-right:-.75rem;margin-left:-.75rem}
[class*="col-"],[class="col"]{padding-right:.75rem;padding-left:.75rem;box-sizing:border-box}
.col{flex:1 0 0%}.col-auto{flex:0 0 auto;width:auto}
.col-1{flex:0 0 auto;width:8.333%}.col-2{flex:0 0 auto;width:16.667%}
.col-3{flex:0 0 auto;width:25%}.col-4{flex:0 0 auto;width:33.333%}
.col-5{flex:0 0 auto;width:41.667%}.col-6{flex:0 0 auto;width:50%}
.col-7{flex:0 0 auto;width:58.333%}.col-8{flex:0 0 auto;width:66.667%}
.col-9{flex:0 0 auto;width:75%}.col-10{flex:0 0 auto;width:83.333%}
.col-11{flex:0 0 auto;width:91.667%}.col-12{flex:0 0 auto;width:100%}
@media(min-width:576px){.col-sm-4{flex:0 0 auto;width:33.333%}.col-sm-6{flex:0 0 auto;width:50%}.col-sm-8{flex:0 0 auto;width:66.667%}}
@media(min-width:768px){.col-md-4{flex:0 0 auto;width:33.333%}.col-md-5{flex:0 0 auto;width:41.667%}.col-md-6{flex:0 0 auto;width:50%}.col-md-8{flex:0 0 auto;width:66.667%}.col-md-12{flex:0 0 auto;width:100%}}
@media(min-width:992px){.col-lg-4{flex:0 0 auto;width:33.333%}.col-lg-5{flex:0 0 auto;width:41.667%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-8{flex:0 0 auto;width:66.667%}}

/* ── Common utility classes (Bootstrap-compat) ──────────── */
.d-none{display:none!important}.d-block{display:block!important}
.d-flex{display:flex!important}.d-inline{display:inline!important}
.d-inline-flex{display:inline-flex!important}.d-inline-block{display:inline-block!important}
.d-grid{display:grid!important}
@media(min-width:768px){.d-md-flex{display:flex!important}.d-md-none{display:none!important}.d-md-block{display:block!important}.d-md-inline-flex{display:inline-flex!important}}
@media(min-width:992px){.d-lg-flex{display:flex!important}.d-lg-none{display:none!important}.d-lg-block{display:block!important}}
.flex-column{flex-direction:column!important}.flex-row{flex-direction:row!important}
.flex-wrap{flex-wrap:wrap!important}.flex-nowrap{flex-wrap:nowrap!important}
.flex-shrink-0{flex-shrink:0!important}.flex-grow-1{flex-grow: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}
.align-items-start{align-items:flex-start!important}
.align-items-center{align-items:center!important}
.align-items-end{align-items:flex-end!important}
.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}
.fw-bold{font-weight:700!important}.fw-semibold{font-weight:600!important}.fw-normal{font-weight:400!important}
.fs-5{font-size:1.25rem!important}.fs-6{font-size:1rem!important}
.text-start{text-align:left!important}.text-center{text-align:center!important}.text-end{text-align:right!important}
.text-muted{color:#6c757d!important}.text-dark{color:#212529!important}
.text-primary{color:#6366f1!important}.text-success{color:#198754!important}
.text-danger{color:#dc3545!important}.text-warning{color:#ffc107!important}
.text-decoration-none{text-decoration:none!important}
.small,.text-sm{font-size:.875rem!important}
.lh-1{line-height:1!important}
.w-100{width:100%!important}.h-100{height:100%!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}.mt-3{margin-top:1rem!important}
.mt-4{margin-top:1.5rem!important}.me-1{margin-right:.25rem!important}
.me-2{margin-right:.5rem!important}.ms-auto{margin-left:auto!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}
.py-2{padding-top:.5rem!important;padding-bottom:.5rem!important}
.py-3{padding-top:1rem!important;padding-bottom:1rem!important}
.py-4{padding-top:1.5rem!important;padding-bottom:1.5rem!important}
.py-5{padding-top:3rem!important;padding-bottom:3rem!important}
.px-3{padding-left:1rem!important;padding-right:1rem!important}
.px-4{padding-left:1.5rem!important;padding-right:1.5rem!important}
.shadow{box-shadow:0 .5rem 1rem rgba(0,0,0,.15)!important}
.shadow-sm{box-shadow:0 .125rem .25rem rgba(0,0,0,.075)!important}
.border{border:1px solid #dee2e6!important}
.border-0{border:0!important}.border-bottom{border-bottom:1px solid #dee2e6!important}
.rounded{border-radius:.375rem!important}.rounded-3{border-radius:.5rem!important}
.rounded-circle{border-radius:50%!important}
.overflow-hidden{overflow:hidden!important}
.position-relative{position:relative!important}.position-absolute{position:absolute!important}
.top-0{top:0!important}.start-100{left:100%!important}
.translate-middle{transform:translate(-50%,-50%)!important}
.p-1{padding:.25rem!important}
.border-start{border-left:1px solid #dee2e6!important}
.border-3{border-width:3px!important}
.border-primary{border-color:#6366f1!important}
.bg-white{background:#fff!important}

/* ── visually-hidden ────────────────────────────────────── */
.visually-hidden,.visually-hidden-focusable:not(:focus):not(:focus-within){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}
