/* ============================================================================
   Ported verbatim from frontend/dms_html/assets/theme.css.

   DO NOT hand-edit the [REBRAND] token values below. They are overridden at
   runtime by the Organisation row: base.html emits a :root block from
   {% brand_style org %} (apps/core/templatetags/dms.py), which is what makes
   the platform re-skinnable from the admin (mdfiles/PLAN.md §5).

   The .proto-bar and .device rules are prototype furniture and are unused by
   the Django templates; they are kept so the ported file stays diffable
   against the source.
   ========================================================================== */
/* ============================================================================
   Meridian Credit — Bootstrap 5 theme layer
   ----------------------------------------------------------------------------
   BRAND TOKEN BLOCK. This is the only place colour is declared. Rebrand the
   entire platform by editing the five values marked [REBRAND]; Bootstrap's own
   variables are mapped onto them below, so buttons, links, focus rings, tables
   and every component follow automatically.
   ========================================================================== */
:root{
  --ink:#0F172A;            /* [REBRAND] primary text / dark surfaces */
  --brand:#1E5EFF;          /* [REBRAND] primary action               */
  --brand-hover:#1A4FD6;    /* [REBRAND] primary action, hover        */
  --brand-tint:#EEF3FF;     /* [REBRAND] soft fills                   */
  --surface:#FFFFFF;        /* [REBRAND] card + control surface       */

  --ink-muted:#475569;
  --ink-soft:#64748B;
  --ink-faint:#94A3B8;
  --surface-subtle:#F8FAFC;
  --border:#E2E8F0;
  --border-strong:#CBD5E1;

  --success:#0E9F6E;  --success-tint:#ECFDF5;
  --warning:#C2740A;  --warning-tint:#FFFBEB;
  --danger:#DC2626;   --danger-tint:#FEF2F2;
  --info:#0891B2;     --info-tint:#ECFEFF;

  --shadow-card:0 1px 2px rgba(15,23,42,.06);
  --shadow-pop:0 12px 32px rgba(15,23,42,.12);

  /* ---- Bootstrap variable mapping ---- */
  --bs-primary:var(--brand);
  --bs-primary-rgb:30,94,255;
  --bs-body-color:var(--ink);
  --bs-body-bg:var(--surface-subtle);
  --bs-body-font-family:Inter,"Helvetica Neue",Helvetica,system-ui,sans-serif;
  --bs-body-font-size:.9375rem;
  --bs-body-line-height:1.55;
  --bs-border-color:var(--border);
  --bs-border-radius:.5rem;
  --bs-border-radius-sm:.375rem;
  --bs-border-radius-lg:.75rem;
  --bs-border-radius-xl:1rem;
  --bs-link-color:var(--brand);
  --bs-link-hover-color:var(--brand-hover);
  --bs-secondary-color:var(--ink-muted);
  --bs-tertiary-color:var(--ink-faint);
  --bs-emphasis-color:var(--ink);
  --bs-focus-ring-color:rgba(30,94,255,.28);
  --bs-focus-ring-width:3px;
}

/* ---------- base ---------- */
body{
  font-variant-numeric:tabular-nums lining-nums;
  -webkit-font-smoothing:antialiased;
}
a{text-decoration:none}
a:hover{text-decoration:underline}
h1,h2,h3,h4,h5{letter-spacing:-.02em;font-weight:600}
h1{font-size:2rem}
h2{font-size:1.5rem}
h3{font-size:1.25rem}
.display-hero{font-size:2.5rem;line-height:1.15;font-weight:600;letter-spacing:-.02em}
.text-muted-2{color:var(--ink-muted)!important}
.text-faint{color:var(--ink-faint)!important}
.text-soft{color:var(--ink-soft)!important}
.text-ink{color:var(--ink)!important}
.text-brand{color:var(--brand)!important}
.bg-ink{background:var(--ink)!important}
.bg-subtle{background:var(--surface-subtle)!important}
.bg-brand-tint{background:var(--brand-tint)!important}
.border-strong{border-color:var(--border-strong)!important}
.num{font-variant-numeric:tabular-nums lining-nums}
.money{font-variant-numeric:tabular-nums lining-nums;text-align:right}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,monospace}
.fine{font-size:.75rem;color:var(--ink-faint);line-height:1.45}
.eyebrow{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--ink-faint)}
.eyebrow-brand{font-size:.75rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:var(--brand)}
.dense{font-size:.875rem}

/* ---------- buttons ---------- */
.btn{font-weight:600;letter-spacing:-.01em;--bs-btn-border-radius:.5rem}
.btn-lg{height:48px;padding:0 1.375rem;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-size:.9375rem}
.btn:not(.btn-lg):not(.btn-sm){height:40px;padding:0 1rem;display:inline-flex;align-items:center;justify-content:center;gap:.5rem;font-size:.875rem}
.btn-sm{height:32px;padding:0 .75rem;display:inline-flex;align-items:center;justify-content:center;gap:.375rem;font-size:.8125rem}
.btn-primary{--bs-btn-bg:var(--brand);--bs-btn-border-color:var(--brand);--bs-btn-hover-bg:var(--brand-hover);--bs-btn-hover-border-color:var(--brand-hover);--bs-btn-active-bg:#1746BE;--bs-btn-active-border-color:#1746BE;--bs-btn-disabled-bg:var(--surface-subtle);--bs-btn-disabled-border-color:var(--border);--bs-btn-disabled-color:var(--ink-faint)}
.btn-outline-secondary{--bs-btn-color:var(--ink);--bs-btn-border-color:var(--border);--bs-btn-bg:var(--surface);--bs-btn-hover-color:var(--ink);--bs-btn-hover-bg:var(--surface-subtle);--bs-btn-hover-border-color:var(--border-strong);--bs-btn-active-bg:#F1F5F9;--bs-btn-active-border-color:var(--border-strong);--bs-btn-active-color:var(--ink)}
.btn-ghost{--bs-btn-color:var(--ink-muted);--bs-btn-bg:transparent;--bs-btn-border-color:transparent;--bs-btn-hover-color:var(--ink);--bs-btn-hover-bg:var(--surface-subtle);--bs-btn-hover-border-color:transparent}
.btn-danger{--bs-btn-bg:var(--danger);--bs-btn-border-color:var(--danger);--bs-btn-hover-bg:#B91C1C;--bs-btn-hover-border-color:#B91C1C}
.btn-danger-soft{--bs-btn-color:var(--danger);--bs-btn-bg:var(--danger-tint);--bs-btn-border-color:#FCA5A5;--bs-btn-hover-color:var(--danger);--bs-btn-hover-bg:#FEE2E2;--bs-btn-hover-border-color:var(--danger)}
.btn-on-ink{--bs-btn-color:var(--ink);--bs-btn-bg:#FFFFFF;--bs-btn-border-color:#FFFFFF;--bs-btn-hover-bg:#F1F5F9;--bs-btn-hover-border-color:#F1F5F9;--bs-btn-hover-color:var(--ink)}
.btn-on-ink-outline{--bs-btn-color:#FFFFFF;--bs-btn-bg:transparent;--bs-btn-border-color:rgba(255,255,255,.28);--bs-btn-hover-color:#FFFFFF;--bs-btn-hover-bg:rgba(255,255,255,.08);--bs-btn-hover-border-color:rgba(255,255,255,.5)}
.btn-icon{width:32px;height:32px;padding:0;flex:0 0 32px}
.btn-icon-lg{width:40px;height:40px;padding:0;flex:0 0 40px}

/* ---------- cards & surfaces ---------- */
.card{border-color:var(--border);border-radius:.75rem;box-shadow:var(--shadow-card);background:var(--surface)}
.card-flat{box-shadow:none}
.card-header,.card-footer{background:var(--surface);border-color:var(--border)}
.card-footer-subtle{background:var(--surface-subtle)}
.panel-subtle{border:1px solid var(--border);border-radius:.75rem;background:var(--surface-subtle)}
.panel-ink{border:1px solid var(--ink);border-radius:.75rem;overflow:hidden}
.panel-ink-head{background:var(--ink);color:#fff;padding:.75rem 1.25rem}
.elevated{box-shadow:var(--shadow-pop)}

/* ---------- forms ---------- */
.form-label{font-size:.8125rem;font-weight:600;color:var(--ink);margin-bottom:.375rem}
.form-control,.form-select{height:44px;border-color:var(--border);font-size:.9375rem;color:var(--ink);border-radius:.5rem}
textarea.form-control{height:auto}
.form-control:hover,.form-select:hover{border-color:var(--border-strong)}
.form-control:focus,.form-select:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(30,94,255,.28)}
.form-control::placeholder{color:var(--ink-faint)}
.form-control:disabled,.form-select:disabled{background:var(--surface-subtle);color:var(--ink-faint);cursor:not-allowed}
.form-control-sm,.form-select-sm{height:38px;font-size:.8125rem}
.input-group-text{background:var(--surface-subtle);border-color:var(--border);color:var(--ink-muted);font-size:.9375rem}
.is-invalid.form-control,.is-invalid.form-select{border-color:var(--danger)}
.is-invalid.form-control:focus{box-shadow:0 0 0 3px rgba(220,38,38,.28)}
.field-error{display:flex;gap:.375rem;align-items:flex-start;font-size:.8125rem;color:var(--danger);margin-top:.375rem}
.form-check-input{border-color:var(--border-strong);width:1.125rem;height:1.125rem;margin-top:.15rem}
.form-check-input:checked{background-color:var(--brand);border-color:var(--brand)}
.form-check-input:focus{box-shadow:0 0 0 3px rgba(30,94,255,.28);border-color:var(--brand)}
.form-switch .form-check-input{width:2.375rem;height:1.375rem}
.form-check-label{font-size:.875rem;color:var(--ink)}
.form-text{font-size:.8125rem;color:var(--ink-faint)}
.form-range::-webkit-slider-thumb{background:var(--surface);border:1.5px solid var(--brand);box-shadow:0 1px 2px rgba(15,23,42,.18);width:22px;height:22px}
.form-range::-moz-range-thumb{background:var(--surface);border:1.5px solid var(--brand);width:20px;height:20px}
.form-range::-webkit-slider-runnable-track{background:var(--border);height:6px;border-radius:999px}
.form-range::-moz-range-track{background:var(--border);height:6px;border-radius:999px}

/* option cards (radio / choice tiles) */
.option-card{display:flex;gap:.875rem;align-items:flex-start;width:100%;padding:1rem;border:1px solid var(--border);border-radius:.75rem;background:var(--surface);cursor:pointer;text-align:left}
.option-card:hover{border-color:var(--border-strong)}
.option-card.selected{border:1.5px solid var(--brand);background:var(--brand-tint)}
.option-card.disabled{opacity:.55;cursor:not-allowed}

/* ---------- chips / badges ---------- */
.chip{display:inline-flex;align-items:center;gap:.375rem;height:24px;padding:0 .625rem;border-radius:999px;font-size:.75rem;font-weight:600;white-space:nowrap}
.chip .dot{width:6px;height:6px;border-radius:999px;background:currentColor}
.chip-sm{height:22px;font-size:.6875rem;padding:0 .5rem}
.chip-success{color:var(--success);background:var(--success-tint)}
.chip-warning{color:var(--warning);background:var(--warning-tint)}
.chip-danger{color:var(--danger);background:var(--danger-tint)}
.chip-info{color:var(--info);background:var(--info-tint)}
.chip-brand{color:var(--brand);background:var(--brand-tint)}
.chip-neutral{color:var(--ink-muted);background:var(--surface-subtle);border:1px solid var(--border)}
.chip-on-ink{color:#fff;background:rgba(255,255,255,.12)}

/* ---------- tables ---------- */
.table{--bs-table-color:var(--ink);--bs-table-border-color:var(--border);font-size:.875rem;margin-bottom:0}
.table>thead th{background:var(--surface-subtle);color:var(--ink-muted);font-size:.75rem;font-weight:600;padding:.625rem 1rem;white-space:nowrap;border-bottom:1px solid var(--border)}
.table>tbody td{padding:.8125rem 1rem;vertical-align:middle;border-bottom-color:var(--border)}
.table-dense>thead th{padding:.5625rem .75rem;font-size:.6875rem}
.table-dense>tbody td{padding:.6875rem .75rem;font-size:.8125rem}
.table-hover>tbody>tr:hover>*{background:var(--surface-subtle)}
.table-sticky thead th{position:sticky;top:0;z-index:2}
.table-wrap{border:1px solid var(--border);border-radius:.75rem;background:var(--surface);box-shadow:var(--shadow-card);overflow:hidden}
.table-scroll{max-height:520px;overflow:auto}
tr.row-current>*{background:var(--brand-tint)!important;font-weight:600}
tr.row-current>td:first-child{box-shadow:inset 3px 0 0 var(--brand)}

/* ---------- nav / tabs ---------- */
.nav-tabs{border-bottom:1px solid var(--border);gap:.125rem}
.nav-tabs .nav-link{border:none;border-bottom:2px solid transparent;color:var(--ink-muted);font-size:.875rem;font-weight:600;padding:.625rem .75rem;border-radius:0}
.nav-tabs .nav-link:hover{border-color:transparent transparent var(--border-strong);color:var(--ink)}
.nav-tabs .nav-link.active{color:var(--ink);background:transparent;border-bottom-color:var(--brand)}
.segmented{display:inline-flex;padding:3px;border:1px solid var(--border);border-radius:.5rem;background:var(--surface-subtle);gap:2px}
.segmented .btn{height:34px;border:1px solid transparent;background:transparent;color:var(--ink-muted);box-shadow:none;border-radius:.375rem}
.segmented .btn.active{background:var(--surface);color:var(--ink);border-color:var(--border);box-shadow:var(--shadow-card)}

/* ---------- app shell ---------- */
.app-shell{display:flex;align-items:flex-start;min-height:100vh}
.app-sidebar{position:sticky;top:0;flex:0 0 248px;width:248px;height:100vh;background:var(--surface);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden}
.app-sidebar.rail{flex-basis:76px;width:76px}
.app-sidebar.rail .sidebar-label,.app-sidebar.rail .sidebar-foot,.app-sidebar.rail .wordmark{display:none}
.app-sidebar.rail .nav-item-app{justify-content:center;padding:0}
.nav-item-app{display:flex;align-items:center;gap:.75rem;width:100%;height:42px;padding:0 .75rem;border:none;border-radius:.5rem;background:transparent;color:var(--ink-muted);font-size:.875rem;font-weight:600;text-align:left;cursor:pointer;text-decoration:none;margin-bottom:2px}
.nav-item-app:hover{background:var(--surface-subtle);color:var(--ink);text-decoration:none}
.nav-item-app.active{background:var(--brand-tint);color:var(--brand)}
.nav-group-label{font-size:.625rem;font-weight:600;letter-spacing:.09em;text-transform:uppercase;color:var(--ink-faint);padding:.875rem .625rem .375rem}
.app-topbar{position:sticky;top:0;z-index:30;display:flex;align-items:center;gap:.75rem;padding:0 1.25rem;height:64px;background:rgba(255,255,255,.94);backdrop-filter:blur(8px);border-bottom:1px solid var(--border)}
.app-main{flex:1 1 auto;min-width:0;padding:2rem 1.5rem 6rem}
.brand-mark{display:inline-flex;align-items:center;justify-content:center;width:28px;height:28px;border-radius:.5rem;background:var(--ink);flex:0 0 28px}
.wordmark{font-size:1.0625rem;font-weight:600;letter-spacing:-.02em;color:var(--ink);white-space:nowrap}
.kbd-hint{display:inline-flex;align-items:center;height:20px;padding:0 .375rem;border:1px solid var(--border);border-radius:.3125rem;background:var(--surface-subtle);color:var(--ink-faint);font-size:.6875rem;font-weight:600}
.notif-dot{position:absolute;top:-4px;right:-4px;display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 5px;border-radius:999px;background:var(--danger);color:#fff;font-size:.6875rem;font-weight:600;border:2px solid var(--surface)}
.avatar{display:inline-flex;align-items:center;justify-content:center;border-radius:999px;background:var(--brand-tint);color:var(--brand);font-weight:600}
.avatar-sm{width:28px;height:28px;font-size:.75rem}
.avatar-md{width:40px;height:40px;font-size:.875rem}

/* ---------- wizard ---------- */
.step-row{display:flex;align-items:flex-start;gap:.75rem;width:100%;padding:.625rem .5rem;border:none;border-radius:.5rem;background:transparent;cursor:pointer;text-align:left;text-decoration:none}
.step-row:hover{background:var(--surface-subtle);text-decoration:none}
.step-row.active{background:var(--brand-tint)}
.step-dot{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px;border-radius:999px;flex:0 0 24px;font-size:.75rem;font-weight:600;background:var(--surface);border:1px solid var(--border);color:var(--ink-faint)}
.step-dot.done{background:var(--brand);border-color:var(--brand);color:#fff}
.step-dot.current{background:var(--surface);border:2px solid var(--brand);color:var(--brand)}
.step-dot.error{background:var(--danger-tint);border-color:var(--danger);color:var(--danger)}
.step-title{font-size:.875rem;font-weight:600;color:var(--ink-faint)}
.step-row.active .step-title,.step-row.done .step-title{color:var(--ink)}
.step-row.has-error .step-title{color:var(--danger)}
.step-hint{font-size:.75rem;color:var(--ink-faint)}
.rail-sticky{position:sticky;top:1.5rem}

/* rule trace */
.rule-row{display:flex;align-items:flex-start;gap:.625rem;padding:.6875rem .875rem;border-bottom:1px solid var(--border)}
.rule-row.margin{background:var(--warning-tint)}
.rule-row.fail{background:var(--danger-tint)}
.rule-mark{display:inline-flex;align-items:center;justify-content:center;width:18px;height:18px;border-radius:999px;flex:0 0 18px;margin-top:1px;font-size:.6875rem;font-weight:700;color:#fff;background:var(--success)}
.rule-mark.margin{background:var(--warning)}
.rule-mark.fail{background:var(--danger)}

/* OTP */
.otp-input{width:48px;height:56px;text-align:center;font-size:1.25rem;font-weight:600;border:1px solid var(--border);border-radius:.5rem;background:var(--surface);color:var(--ink)}
.otp-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(30,94,255,.28);outline:none}
.otp-input.error{border-color:var(--danger)}
.otp-input.ok{border-color:var(--success)}

/* consent panel */
.consent-scroll{max-height:264px;overflow-y:auto;padding:1.25rem;border:1px solid var(--border);border-radius:.5rem;background:var(--surface-subtle);font-size:.875rem;line-height:1.65;color:var(--ink-muted)}
.consent-scroll p{margin-bottom:.875rem}
.consent-scroll p:last-child{margin-bottom:0}
.consent-scroll strong{color:var(--ink)}

/* document tiles */
.doc-tile{flex:1 1 240px;min-width:0;border:1px solid var(--border);border-radius:.75rem;background:var(--surface);box-shadow:var(--shadow-card);padding:1.125rem}
.doc-tile.empty{border:1.5px dashed var(--border-strong);background:var(--surface-subtle);box-shadow:none}
.doc-tile.rejected{border-color:var(--danger);background:var(--danger-tint)}
.doc-thumb{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border-radius:.5rem;aspect-ratio:4/3;background:#E2E8F0}
.doc-tile.empty .doc-thumb{background:var(--surface)}
.state-dot{width:8px;height:8px;border-radius:999px;flex:0 0 8px;background:var(--ink-faint)}
.state-dot.uploaded{background:var(--success)}
.state-dot.uploading{background:var(--info);animation:pulseDot 1s ease-in-out infinite}
.state-dot.rejected{background:var(--danger)}
.dropzone{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.5rem;padding:2rem 1.5rem;border:1.5px dashed var(--border-strong);border-radius:.75rem;background:var(--surface);cursor:pointer}
.dropzone:hover{border-color:var(--brand);background:var(--brand-tint)}

/* ---------- placeholder imagery (strict rule: solid fill + label + dimensions) ---------- */
.ph{background:#E2E8F0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.25rem;border-radius:.75rem;text-align:center;padding:.5rem}
.ph-label{font-size:.875rem;font-weight:500;color:#64748B}
.ph-dims{font-size:.75rem;color:#94A3B8}
.ph-sm .ph-label{font-size:.75rem}
.ph-sm .ph-dims{font-size:.6875rem}
.ph-circle{border-radius:999px}
.ph-grey{filter:grayscale(1)}

/* ---------- overlays ---------- */
.modal-content{border:none;border-radius:1rem;box-shadow:var(--shadow-pop)}
.modal-header,.modal-footer{border-color:var(--border)}
.modal-footer{background:var(--surface-subtle)}
.modal-title{font-size:1.25rem;font-weight:600;letter-spacing:-.02em}
.offcanvas{border-left:1px solid var(--border)}
.offcanvas-header{border-bottom:1px solid var(--border)}
.offcanvas-footer{border-top:1px solid var(--border);background:var(--surface-subtle);padding:1rem 1.5rem}
.toast{border-color:var(--border);box-shadow:var(--shadow-pop);border-radius:.75rem}
.tooltip-inner{background:var(--ink);border-radius:.5rem;font-size:.75rem}
.accordion-item{border-color:var(--border);background:transparent}
.accordion-button{font-size:1rem;font-weight:600;letter-spacing:-.01em;color:var(--ink);background:transparent;padding:1.25rem 0;box-shadow:none}
.accordion-button:not(.collapsed){color:var(--brand);background:transparent;box-shadow:none}
.accordion-button:focus{box-shadow:none;border-color:transparent}
.accordion-button::after{margin-left:auto}
.accordion-body{padding:0 0 1.375rem;font-size:.9375rem;color:var(--ink-muted);max-width:70ch}
.alert{border-radius:.75rem;font-size:.875rem}
.alert-success-soft{background:var(--success-tint);border:1px solid #A7F3D0;color:#065F46}
.alert-warning-soft{background:var(--warning-tint);border:1px solid #FDE68A;color:#92400E}
.alert-danger-soft{background:var(--danger-tint);border:1px solid #FECACA;color:#991B1B}
.alert-info-soft{background:var(--info-tint);border:1px solid #A5F3FC;color:#155E75}

/* progress */
.progress{background:var(--border);border-radius:999px}
.progress-bar{background:var(--brand)}
.progress-thin{height:4px}

/* ---------- mobile frames (for breakpoint sheets) ---------- */
.device{width:390px;height:780px;border:1px solid var(--border);border-radius:24px;background:var(--surface);box-shadow:var(--shadow-pop);overflow:hidden;display:flex;flex-direction:column;position:relative}
.device-scroll{flex:1 1 auto;overflow-y:auto}
.device-bar{padding:.875rem 1.25rem;border-bottom:1px solid var(--border);background:var(--surface)}
.device-foot{padding:.75rem 1.25rem;border-top:1px solid var(--border);background:rgba(255,255,255,.96);display:flex;gap:.75rem}
.device-caption{font-size:.8125rem;font-weight:600;color:var(--ink-muted);margin-bottom:.75rem}
.tap-target{min-height:44px}

/* ---------- screen index chrome (prototype furniture, not product UI) ---------- */
.proto-bar{background:var(--ink);padding:.625rem 1.5rem;display:flex;align-items:center;gap:1rem;flex-wrap:wrap;position:sticky;top:0;z-index:60}
.proto-bar .proto-label{font-size:.6875rem;font-weight:600;letter-spacing:.08em;text-transform:uppercase;color:#64748B}
.proto-link{height:26px;padding:0 .625rem;border-radius:999px;font-size:.75rem;font-weight:600;border:1px solid #334155;background:transparent;color:#94A3B8;text-decoration:none;display:inline-flex;align-items:center;white-space:nowrap}
.proto-link:hover{color:#fff;border-color:#64748B;text-decoration:none}
.proto-link.active{background:#fff;border-color:#fff;color:var(--ink)}

/* ---------- animation ---------- */
@keyframes pulseDot{0%,100%{opacity:1}50%{opacity:.35}}
@keyframes spin{to{transform:rotate(360deg)}}
.spin{animation:spin 1s linear infinite}
.spin-slow{animation:spin 1.4s linear infinite}

/* ---------- accessibility ---------- */
:focus-visible{outline:none;box-shadow:0 0 0 3px rgba(30,94,255,.28)}
.skip-link{position:absolute;left:-9999px;top:0;z-index:100;background:var(--surface);padding:.75rem 1rem;border:1px solid var(--brand);border-radius:.5rem;font-weight:600}
.skip-link:focus{left:1rem;top:1rem}

@media print{
  .proto-bar,.app-sidebar,.app-topbar{display:none!important}
  .app-main{padding:0}
}
