/* ── Base ─────────────────────────────────────────────── */
:root{--brand:#0d6efd;--brand-dark:#0b5ed7;--success:#198754;--warn:#ffc107;--danger:#dc3545;--gray-100:#f8f9fa;--gray-200:#e9ecef;--radius:0.5rem;--shadow:0 1px 3px rgba(0,0,0,.08);}
html{font-size:14px;position:relative;min-height:100%;}
@media(min-width:768px){html{font-size:16px;}}
body{-webkit-font-smoothing:antialiased;background:var(--gray-100);display:flex;flex-direction:column;min-height:100vh;margin:0;}
body > main, body > .container, body > .container-fluid{flex:1;}

/* ── Focus ring ──────────────────────────────────────── */
.btn:focus,.btn:active:focus,.btn-link.nav-link:focus,.form-control:focus,.form-check-input:focus{
  box-shadow:0 0 0 .1rem #fff,0 0 0 .25rem var(--brand);
}

/* ── Mobile-first card system ────────────────────────── */
.card{border:none;border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:1rem;}
.card-header{background:#fff;border-bottom:1px solid var(--gray-200);font-weight:600;}

/* ── Inline-edit cells ───────────────────────────────── */
[data-ie]{cursor:pointer;padding:4px 8px;border-radius:4px;transition:background .15s;}
[data-ie]:hover{background:var(--gray-200);}
[data-ie].ie-editing{background:#fff;box-shadow:inset 0 0 0 2px var(--brand);padding:0;}
[data-ie].ie-editing input,[data-ie].ie-editing select,[data-ie].ie-editing textarea{
  border:none;outline:none;width:100%;padding:4px 8px;background:transparent;font:inherit;
}
.ie-saving{opacity:.5;pointer-events:none;}
.ie-ok{animation:iePulse .4s;}
@keyframes iePulse{0%{background:rgba(25,135,84,.2);}100%{background:transparent;}}

/* ── Toast notifications ─────────────────────────────── */
#toast-rack{position:fixed;bottom:1rem;left:50%;transform:translateX(-50%);z-index:9999;display:flex;flex-direction:column-reverse;gap:.5rem;width:90%;max-width:380px;}
.toast-msg{padding:.65rem 1rem;border-radius:var(--radius);color:#fff;font-size:.875rem;box-shadow:0 4px 12px rgba(0,0,0,.15);animation:toastIn .25s ease-out;}
.toast-msg.ok{background:var(--success);}.toast-msg.err{background:var(--danger);}
@keyframes toastIn{from{opacity:0;transform:translateY(10px);}to{opacity:1;transform:translateY(0);}}

/* ── Stepper (client dashboard) ──────────────────────── */
.step-bar{display:flex;gap:0;margin-bottom:1.5rem;}
.step-bar .step{flex:1;text-align:center;padding:.75rem .25rem;font-size:.8rem;font-weight:600;background:var(--gray-200);color:#6c757d;position:relative;transition:background .3s,color .3s;}
.step-bar .step.active{background:var(--brand);color:#fff;}
.step-bar .step.done{background:var(--success);color:#fff;}
.step-bar .step:first-child{border-radius:var(--radius) 0 0 var(--radius);}
.step-bar .step:last-child{border-radius:0 var(--radius) var(--radius) 0;}
.step-badge{display:inline-block;width:22px;height:22px;line-height:22px;border-radius:50%;background:rgba(255,255,255,.3);font-size:.75rem;margin-right:4px;}

/* ── Progress ring ───────────────────────────────────── */
.progress-ring{width:80px;height:80px;margin:0 auto 1rem;}
.progress-ring circle{fill:none;stroke-width:6;stroke-linecap:round;}
.progress-ring .bg{stroke:var(--gray-200);}.progress-ring .fg{stroke:var(--brand);transition:stroke-dashoffset .6s ease;}

/* ── Responsive table → cards on mobile ──────────────── */
@media(max-width:767.98px){
  .table-responsive-cards thead{display:none;}
  .table-responsive-cards tbody tr{display:block;margin-bottom:.75rem;background:#fff;border-radius:var(--radius);box-shadow:var(--shadow);padding:.75rem;}
  .table-responsive-cards tbody td{display:flex;justify-content:space-between;padding:.25rem 0;border:none;font-size:.875rem;}
  .table-responsive-cards tbody td::before{content:attr(data-label);font-weight:600;margin-right:auto;padding-right:.5rem;}
}

/* ── Compact mobile form tweaks ──────────────────────── */
@media(max-width:575.98px){
  .container,.container-fluid{padding-left:.75rem;padding-right:.75rem;}
  h1,.h1{font-size:1.4rem;}h2,.h2{font-size:1.2rem;}
  .btn{padding:.45rem .75rem;font-size:.875rem;}
}

/* ── Signature pad ───────────────────────────────────── */
.sig-pad{border:2px dashed var(--gray-200);border-radius:var(--radius);touch-action:none;cursor:crosshair;width:100%;max-width:400px;height:160px;background:#fff;}

/* ── File upload drop zone ───────────────────────────── */
.drop-zone{border:2px dashed var(--gray-200);border-radius:var(--radius);padding:2rem;text-align:center;color:#6c757d;transition:border-color .2s,background .2s;cursor:pointer;}
.drop-zone.drag-over{border-color:var(--brand);background:rgba(13,110,253,.04);}
.drop-zone input[type=file]{display:none;}

/* ── Misc helpers ────────────────────────────────────── */
.text-truncate-2{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;}
.gap-2{gap:.5rem!important;}.gap-3{gap:1rem!important;}
.fs-sm{font-size:.85rem;}.text-muted-sm{font-size:.8rem;color:#6c757d;}
.form-floating>.form-control-plaintext::placeholder,.form-floating>.form-control::placeholder{color:var(--bs-secondary-color);text-align:end;}
.form-floating>.form-control-plaintext:focus::placeholder,.form-floating>.form-control:focus::placeholder{text-align:start;}