/* ==========================================================================
   iSelect theme — brand override for Bootstrap 5.3
   violet #4f3496 · lime #d3f242 · ink #202035
   Bricolage Grotesque (display) · Instrument Sans (body) · Space Mono (technical)
   ========================================================================== */

/* ---- 1 · tokens ---------------------------------------------------------- */
:root{
  --is-violet:#4f3496;   --is-violet-2:#43297f;   --is-violet-deep:#221250;
  --is-lime:#d3f242;     --is-lime-soft:#eef9b8;
  --is-ink:#202035;      --is-ink-soft:#5b5876;
  --is-paper:#f7f5ff;    --is-line:#ddd8ef;
  --is-display:'Bricolage Grotesque', system-ui, sans-serif;
  --is-body:'Instrument Sans', system-ui, sans-serif;
  --is-mono:'Space Mono', ui-monospace, 'Courier New', monospace;
  --is-ease:cubic-bezier(.22,1.15,.32,1);
  --is-shadow-sm:0 1px 2px rgba(24,12,52,.06), 0 10px 28px -18px rgba(24,12,52,.22);
  --is-shadow-lg:0 2px 4px rgba(24,12,52,.06), 0 26px 60px -24px rgba(24,12,52,.35);
}

/* ---- 2 · Bootstrap's own variable layer ---------------------------------- */
:root{
  --bs-primary:#4f3496;             --bs-primary-rgb:79,52,150;
  --bs-primary-bg-subtle:#f1edff;   --bs-primary-border-subtle:#d4c9ee;
  --bs-secondary:#202035;           --bs-secondary-rgb:32,32,53;
  --bs-body-font-family:var(--is-body);
  --bs-body-font-size:.95rem;
  --bs-body-color:#202035;
  --bs-body-bg:#f7f5ff;             /* lavender paper — flip to #fff for white pages */
  --bs-border-radius:.75rem;
  --bs-border-color:#ddd8ef;
  --bs-link-color:#4f3496;          --bs-link-color-rgb:79,52,150;
  --bs-link-hover-color:#35246b;    --bs-link-hover-color-rgb:53,36,107;
  --bs-focus-ring-color:rgba(79,52,150,.28);
  --bs-heading-color:#202035;
}

/* ---- 3 · typography ------------------------------------------------------ */
body{ font-family:var(--is-body); letter-spacing:.005em; -webkit-font-smoothing:antialiased; }

h1,h2,h3,h4,h5,h6,.h1,.h2,.h3,.h4,.h5,.h6{
  font-family:var(--is-display); font-weight:700;
  letter-spacing:-.02em; color:var(--is-ink);
}
h1,.h1{ font-weight:800; letter-spacing:-.025em; }
.display-1,.display-2,.display-3,.display-4,.display-5,.display-6{
  font-family:var(--is-display); font-weight:800; letter-spacing:-.03em;
}
.lead{ color:var(--is-ink-soft); }
.kicker{                                   /* new utility — the mono eyebrow label */
  font:700 .72rem/1.4 var(--is-mono);
  letter-spacing:.28em; text-transform:uppercase; color:var(--is-violet);
}
::selection{ background:var(--is-lime); color:var(--is-ink); }

/* ---- 4 · buttons ---------------------------------------------------------- */
.btn{
  --bs-btn-font-weight:600;
  --bs-btn-border-radius:.8rem;
  position:relative; overflow:hidden;
  transition:transform .18s var(--is-ease), box-shadow .25s ease,
             background-color .2s ease, border-color .2s ease, color .2s ease;
}
.btn:hover{ transform:translateY(-1px); }
.btn:active{ transform:translateY(0) scale(.98); }
.btn:focus-visible{ box-shadow:0 0 0 .25rem rgba(79,52,150,.28); }

.btn-primary{
  --bs-btn-bg:#4f3496;              --bs-btn-border-color:#4f3496;        --bs-btn-color:#fff;
  --bs-btn-hover-bg:#43297f;        --bs-btn-hover-border-color:#43297f;  --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:#3a2170;       --bs-btn-active-border-color:#3a2170; --bs-btn-active-color:#fff;
  --bs-btn-disabled-bg:#9b8cc4;     --bs-btn-disabled-border-color:#9b8cc4;
  box-shadow:0 10px 24px -12px rgba(79,52,150,.7);
}
.btn-primary:hover{ box-shadow:0 14px 30px -12px rgba(79,52,150,.85); }

/* sheen sweep on solid buttons */
.btn-primary::after, .btn-dark::after, .btn-lime::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(105deg, transparent 32%, rgba(255,255,255,.28) 50%, transparent 68%);
  transform:translateX(-130%); transition:transform .55s ease;
}
.btn-primary:hover::after, .btn-dark:hover::after, .btn-lime:hover::after{ transform:translateX(130%); }

.btn-outline-primary{
  --bs-btn-color:#4f3496;           --bs-btn-border-color:#c9bce8;
  --bs-btn-hover-bg:#f1edff;        --bs-btn-hover-border-color:#4f3496;  --bs-btn-hover-color:#35246b;
  --bs-btn-active-bg:#e9e2fb;       --bs-btn-active-border-color:#4f3496; --bs-btn-active-color:#35246b;
}
.btn-secondary{
  --bs-btn-bg:#202035;              --bs-btn-border-color:#202035;        --bs-btn-color:#fff;
  --bs-btn-hover-bg:#2e2e4a;        --bs-btn-hover-border-color:#2e2e4a;  --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:#171728;       --bs-btn-active-border-color:#171728;
}
.btn-outline-secondary{
  --bs-btn-color:#5b5876;           --bs-btn-border-color:#d5d1e6;
  --bs-btn-hover-bg:#202035;        --bs-btn-hover-border-color:#202035;  --bs-btn-hover-color:#fff;
  --bs-btn-active-bg:#202035;       --bs-btn-active-border-color:#202035; --bs-btn-active-color:#fff;
}
/* brand showpiece — additive, use as class="btn btn-lime" */
.btn-lime{
  --bs-btn-bg:#d3f242;              --bs-btn-border-color:#d3f242;        --bs-btn-color:#202035;
  --bs-btn-hover-bg:#c4e630;        --bs-btn-hover-border-color:#c4e630;  --bs-btn-hover-color:#202035;
  --bs-btn-active-bg:#b3d427;       --bs-btn-active-border-color:#b3d427; --bs-btn-active-color:#202035;
  --bs-btn-focus-shadow-rgb:211,242,66;
  box-shadow:0 10px 24px -12px rgba(160,190,20,.8);
}
.btn-link{ --bs-btn-color:#4f3496; font-weight:600; }

/* ---- 5 · forms ------------------------------------------------------------ */
.form-label{
  font:700 .7rem/1.4 var(--is-mono);
  letter-spacing:.18em; text-transform:uppercase;
  color:var(--is-ink-soft); margin-bottom:.45rem;
}
.form-control, .form-select{
  border-color:var(--is-line); color:var(--is-ink);
  transition:border-color .2s ease, box-shadow .25s ease;
}
.form-control::placeholder{ color:#a5a0bd; }
.form-control:focus, .form-select:focus{
  border-color:var(--is-violet);
  box-shadow:0 0 0 .25rem rgba(79,52,150,.14);
}
.form-control.is-invalid, .form-select.is-invalid{ border-color:#e64569; }
.form-control.is-invalid:focus{ box-shadow:0 0 0 .25rem rgba(230,69,105,.14); }
.form-check-input{ border-color:#c9c3e0; transition:background-color .15s ease, border-color .15s ease; }
.form-check-input:checked{ background-color:var(--is-violet); border-color:var(--is-violet); }
.form-check-input:focus{ border-color:var(--is-violet); box-shadow:0 0 0 .25rem rgba(79,52,150,.14); }
.form-text{ font-family:var(--is-mono); font-size:.72rem; letter-spacing:.04em; color:var(--is-ink-soft); }
.input-group-text{
  font-family:var(--is-mono); font-size:.78rem;
  background:var(--is-paper); border-color:var(--is-line); color:var(--is-ink-soft);
}
.form-range::-webkit-slider-thumb{ background:var(--is-violet); }
.form-range::-moz-range-thumb{ background:var(--is-violet); }

/* ---- 6 · cards ------------------------------------------------------------ */
.card{
  --bs-card-border-radius:1rem;
  --bs-card-inner-border-radius:calc(1rem - 1px);
  --bs-card-border-color:var(--is-line);
  --bs-card-bg:#fff;
  box-shadow:var(--is-shadow-sm);
  transition:transform .25s var(--is-ease), box-shadow .3s ease, border-color .25s ease;
}
.card:hover{ border-color:#c9bce8; }
.card-lift:hover{ transform:translateY(-4px); box-shadow:var(--is-shadow-lg); }  /* additive */
.card-header{
  background:linear-gradient(180deg,#fdfcff,#f8f6ff);
  font:700 .72rem/1.5 var(--is-mono);
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--is-ink-soft); border-bottom-color:var(--is-line);
}
.card-title{ font-family:var(--is-display); font-weight:700; letter-spacing:-.01em; }
.card-footer{ background:transparent; border-top-color:var(--is-line); }

/* ---- 7 · navbar ----------------------------------------------------------- */
.navbar{ --bs-navbar-padding-y:.85rem; }
.navbar-brand{ font-family:var(--is-display); font-weight:800; letter-spacing:-.01em; }
.navbar .nav-link{ position:relative; font-weight:600; transition:color .2s ease, opacity .2s ease; }
.navbar .nav-link::after{
  content:""; position:absolute;
  left:.5rem; right:.5rem; bottom:.3rem; height:2px; border-radius:2px;
  background:var(--is-violet);
  transform:scaleX(0); transform-origin:left center;
  transition:transform .3s var(--is-ease);
}
.navbar .nav-link:hover::after,
.navbar .nav-link.active::after,
.navbar .nav-link.show::after{ transform:scaleX(1); }

/* ---- 8 · badges · breadcrumb · pagination --------------------------------- */
.badge{
  font-family:var(--is-mono); font-weight:700;
  font-size:.64rem; letter-spacing:.14em; text-transform:uppercase;
  padding:.45em .7em; border-radius:.45rem;
}
.breadcrumb{ font-family:var(--is-mono); font-size:.72rem; letter-spacing:.08em; text-transform:uppercase; }
.page-link{ font-weight:600; color:var(--is-violet); border-color:var(--is-line);
  transition:background-color .2s ease, color .2s ease; }
.page-item.active .page-link{
  background:var(--is-violet); border-color:var(--is-violet);
  box-shadow:0 6px 16px -8px rgba(79,52,150,.7);
}
.page-link:hover{ background:var(--is-paper); color:var(--is-violet-2); }

/* ---- 9 · tables ----------------------------------------------------------- */
.table thead th{
  font:700 .68rem/1.5 var(--is-mono);
  letter-spacing:.16em; text-transform:uppercase;
  color:var(--is-ink-soft); background:var(--is-paper);
  border-bottom:2px solid var(--is-violet); padding:.8rem .9rem;
}
.table td{ padding:.8rem .9rem; vertical-align:middle; }
.table tbody tr{ transition:background-color .15s ease; }
.table tbody tr:hover{ background:rgba(211,242,66,.10); }   /* lime row hover */

/* ---- 10 · alerts ---------------------------------------------------------- */
.alert{ border:0; border-left:.3rem solid; border-radius:.8rem; }
.alert-primary{ border-left-color:var(--is-violet); background:#f1edff; color:#35246b; }
.alert-success{ border-left-color:#84b52c; background:#f4fae1; color:#3d560e; }
.alert-danger { border-left-color:#e64569; background:#fdeef2; color:#a1234a; }
.alert-warning{ border-left-color:#dfa10e; background:#fdf5df; color:#775505; }
.alert-info   { border-left-color:#3f8fbd; background:#e9f4fa; color:#1d5a7d; }

/* ---- 11 · modals · dropdowns · offcanvas ---------------------------------- */
.modal-backdrop{ -webkit-backdrop-filter:blur(5px); backdrop-filter:blur(5px); }
.modal-content{
  border:0; border-radius:1.25rem; overflow:hidden;
  box-shadow:0 40px 100px -24px rgba(16,7,42,.6);
}
.modal-header{ border-bottom:1px solid var(--is-line); }
.modal-footer{ border-top:1px solid var(--is-line); }
.dropdown-menu{
  border:1px solid var(--is-line); border-radius:.9rem;
  padding:.45rem; box-shadow:var(--is-shadow-lg);
  animation:is-drop .22s var(--is-ease);
}
@keyframes is-drop{ from{ opacity:0; transform:translateY(-6px);} to{ opacity:1; transform:none;} }
.dropdown-item{ border-radius:.55rem; font-weight:500;
  transition:background-color .15s ease, color .15s ease; }
.dropdown-item:hover, .dropdown-item:focus{ background:#f1edff; color:#35246b; }
.dropdown-header{ font:700 .66rem/1.5 var(--is-mono);
  letter-spacing:.18em; text-transform:uppercase; color:var(--is-ink-soft); }

/* ---- 12 · brand utilities ------------------------------------------------- */
.bg-ambient{                              /* the violet field from the login shell */
  background:
    radial-gradient(1000px 520px at 88% -12%, rgba(211,242,66,.16), transparent 60%),
    radial-gradient(820px 620px at -12% 112%, rgba(122,84,220,.4), transparent 62%),
    linear-gradient(158deg, #4f3496 0%, #2a1866 62%, #221250 100%);
  background-attachment:fixed;
}
.bg-ambient-grid{ position:relative; }
.bg-ambient-grid::before{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:
    repeating-linear-gradient(0deg,  rgba(255,255,255,.05) 0 1px, transparent 1px 56px),
    repeating-linear-gradient(90deg, rgba(255,255,255,.05) 0 1px, transparent 1px 56px);
  -webkit-mask-image:radial-gradient(1200px 800px at 50% 15%, #000 30%, transparent 80%);
          mask-image:radial-gradient(1200px 800px at 50% 15%, #000 30%, transparent 80%);
}
.text-lime{ color:#d3f242 !important; }
.bg-lime{ background-color:#d3f242 !important; }
.text-ink{ color:#202035 !important; }
.border-soft{ border-color:var(--is-line) !important; }
.shadow-brand{ box-shadow:var(--is-shadow-sm) !important; }
.shadow-brand-lg{ box-shadow:var(--is-shadow-lg) !important; }

/* scroll-reveal helper — pair with the tiny observer below */
.rise{ opacity:0; transform:translateY(18px);
  transition:opacity .6s ease, transform .6s var(--is-ease); }
.rise.is-in{ opacity:1; transform:none; }

/* ---- 13 · motion safety --------------------------------------------------- */
@media (prefers-reduced-motion:reduce){
  .btn, .card, .navbar .nav-link::after, .rise, .dropdown-menu, .page-link{
    transition:none !important; animation:none !important; }
  .rise{ opacity:1; transform:none; }
  .btn:hover, .card-lift:hover{ transform:none; }
}
