/* Local UI framework layer inspired by Bootstrap semantics.
   Kept self-hosted to preserve CSP, privacy and offline deploys. */
:root{
  --bs-gutter-x:1.5rem;
  --bs-gutter-y:0;
  --bs-body-bg:var(--color-background,#0b1114);
  --bs-body-color:var(--color-text,#f4f7f4);
  --bs-primary:var(--color-primary,#176C4F);
  --bs-secondary:var(--color-surface-muted,#172126);
  --bs-border-color:var(--color-border,#26343b);
  --bs-border-radius:var(--radius-md,10px);
}
.container-fluid{width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-right:auto;margin-left:auto}
.row{display:flex;flex-wrap:wrap;margin-top:calc(-1 * var(--bs-gutter-y));margin-right:calc(-.5 * var(--bs-gutter-x));margin-left:calc(-.5 * var(--bs-gutter-x))}
.row>*{box-sizing:border-box;flex-shrink:0;width:100%;max-width:100%;padding-right:calc(var(--bs-gutter-x)*.5);padding-left:calc(var(--bs-gutter-x)*.5);margin-top:var(--bs-gutter-y)}
.g-0{--bs-gutter-x:0;--bs-gutter-y:0}.g-2{--bs-gutter-x:.5rem;--bs-gutter-y:.5rem}.g-3{--bs-gutter-x:1rem;--bs-gutter-y:1rem}.g-4{--bs-gutter-x:1.5rem;--bs-gutter-y:1.5rem}
.col{flex:1 0 0%}.col-12{flex:0 0 auto;width:100%}
@media(min-width:768px){.col-md-4{flex:0 0 auto;width:33.333333%}.col-md-6{flex:0 0 auto;width:50%}.col-md-8{flex:0 0 auto;width:66.666667%}}
@media(min-width:992px){.col-lg-3{flex:0 0 auto;width:25%}.col-lg-4{flex:0 0 auto;width:33.333333%}.col-lg-6{flex:0 0 auto;width:50%}.col-lg-8{flex:0 0 auto;width:66.666667%}.col-lg-9{flex:0 0 auto;width:75%}}
.d-flex{display:flex!important}.d-grid{display:grid!important}.d-none{display:none!important}.align-items-center{align-items:center!important}.align-items-start{align-items:flex-start!important}.justify-content-between{justify-content:space-between!important}.justify-content-end{justify-content:flex-end!important}.flex-wrap{flex-wrap:wrap!important}
.gap-1{gap:.25rem!important}.gap-2{gap:.5rem!important}.gap-3{gap:1rem!important}.gap-4{gap:1.5rem!important}
.mt-0{margin-top:0!important}.mt-2{margin-top:.5rem!important}.mt-3{margin-top:1rem!important}.mt-4{margin-top:1.5rem!important}.mb-0{margin-bottom:0!important}.mb-2{margin-bottom:.5rem!important}.mb-3{margin-bottom:1rem!important}.mb-4{margin-bottom:1.5rem!important}
.p-0{padding:0!important}.p-2{padding:.5rem!important}.p-3{padding:1rem!important}.p-4{padding:1.5rem!important}
.text-muted{color:var(--color-text-muted,#8e9b96)!important}.text-secondary{color:var(--color-text-secondary,#c7d0cb)!important}.text-end{text-align:right!important}.text-center{text-align:center!important}
.card{background:var(--color-surface,#11191d);border:1px solid color-mix(in srgb,var(--color-border,#26343b) 82%,#fff 18%);border-radius:var(--bs-border-radius);min-width:0}.card-body{padding:1.25rem}.card-title{margin:0 0 .5rem;font-size:1.125rem}.card-subtitle{margin:0 0 1rem;color:var(--color-text-muted,#8e9b96)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.45rem;min-height:40px;padding:.65rem .9rem;border-radius:var(--radius-sm,6px);border:1px solid transparent;font-weight:800;text-decoration:none;cursor:pointer;transition:background .18s,border-color .18s,transform .18s}.btn:hover{transform:translateY(-1px)}
.btn-primary{background:var(--color-primary,#176C4F);border-color:var(--color-primary,#176C4F);color:var(--color-secondary,#F7FAF7)}.btn-secondary{background:var(--color-surface-muted,#172126);border-color:var(--color-border,#26343b);color:var(--color-text-secondary,#c7d0cb)}.btn-danger{background:color-mix(in srgb,var(--color-danger,#ef6a62) 14%,transparent);border-color:color-mix(in srgb,var(--color-danger,#ef6a62) 36%,transparent);color:#ffb5af}
.form-label{display:block;margin-bottom:.45rem;color:var(--color-text-muted,#8e9b96);font-size:.75rem;font-weight:800}.form-control,.form-select{display:block;width:100%;min-height:44px;padding:.72rem .8rem;border:1px solid var(--color-border,#26343b);border-radius:var(--radius-sm,6px);background:#0c1316;color:var(--color-text,#f4f7f4)}.form-text{margin-top:.4rem;color:var(--color-text-muted,#8e9b96);font-size:.78rem}
.badge{display:inline-flex;align-items:center;gap:.35rem;padding:.35rem .55rem;border-radius:999px;border:1px solid transparent;font-size:.72rem;font-weight:900}.badge-success{background:color-mix(in srgb,var(--color-success,#4fce7a) 14%,transparent);border-color:color-mix(in srgb,var(--color-success,#4fce7a) 30%,transparent);color:#91e7ab}.badge-warning{background:color-mix(in srgb,var(--color-warning,#e4b84f) 15%,transparent);border-color:color-mix(in srgb,var(--color-warning,#e4b84f) 32%,transparent);color:#f0cf75}
.alert{padding:.9rem 1rem;border-radius:var(--radius-md,10px);border:1px solid transparent}.alert-info{background:color-mix(in srgb,var(--color-info,#6da7d8) 12%,transparent);border-color:color-mix(in srgb,var(--color-info,#6da7d8) 28%,transparent);color:var(--color-text-secondary,#c7d0cb)}.alert-warning{background:color-mix(in srgb,var(--color-warning,#e4b84f) 13%,transparent);border-color:color-mix(in srgb,var(--color-warning,#e4b84f) 30%,transparent);color:#f0cf75}
.nav{display:flex;flex-wrap:wrap;gap:.5rem;padding-left:0;margin:0;list-style:none}.nav-pills .nav-link{border:0;border-radius:var(--radius-sm,6px);background:transparent;color:var(--color-text-muted,#8e9b96);padding:.65rem .9rem;font-weight:800}.nav-pills .nav-link.active{background:var(--color-secondary,#F7FAF7);color:#102119}
.table-responsive{width:100%;overflow-x:auto}.w-100{width:100%!important}
