
/* ═══════════════════════════════════════════════════════════════════════════
   EARLY SPLASH — paints and starts spinning BEFORE the heavy file is parsed.

   Why the loader looked like a frozen red dot: the old splash markup sits
   ~19,000 lines into a 7.9 MB document, so the browser had to parse most of
   the file before that element even existed. By then the main thread was
   saturated, so the animation could not start cleanly and stalled on a single
   frame (the red circle is the top-most of the three, which is why it looked
   like one red dot).

   This cover is declared at the very top of the head, and its element is the
   first node inside the document body, so it paints on the first frame, starts
   animating immediately, and — promoted to the GPU via will-change — keeps
   spinning while the rest of the document parses.

   It also removes the "old content flash": an opaque cover exists from the
   first painted frame until the app is ready, so nothing underneath can ever
   be seen half-built.
   ═══════════════════════════════════════════════════════════════════════════ */
@keyframes tapx-l3-0{ 0%,20%{transform:rotate(0)} 100%{transform:rotate(360deg)} }
@keyframes tapx-l3-1{ 50%{transform:rotate(var(--s,90deg))} 100%{transform:rotate(0)} }
#tapx-early-splash{
  position:fixed; inset:0; z-index:2147483647; background:#ffffff;
  display:flex; align-items:center; justify-content:center;
  transition:opacity .45s ease; opacity:1;
}
#tapx-early-splash.tapx-es-hide{ opacity:0; pointer-events:none; }
#tapx-early-splash .tapx-es-ldr{
  width:58px; aspect-ratio:1; border-radius:50%; background:#E3AAD6;
  transform-origin:top; display:grid;
  animation:tapx-l3-0 1s infinite linear;
  will-change:transform; backface-visibility:hidden;
}
#tapx-early-splash .tapx-es-ldr::before,
#tapx-early-splash .tapx-es-ldr::after{
  content:""; grid-area:1/1; background:#F4DD51; border-radius:50%;
  transform-origin:top; animation:inherit; animation-name:tapx-l3-1;
  will-change:transform; backface-visibility:hidden;
}
#tapx-early-splash .tapx-es-ldr::after{ background:#F10C49; --s:180deg; }
/* the old late cover is redundant while this one is up — avoids two covers */
#tapx-splash{ display:none !important; }


/* ═══ EARLY LANDING GUARD (top of <head>, before the overlay node exists) ═════
   The login overlay (#tapx-login-overlay) sits far down the document, but a CSS
   rule down there reveals it whenever its inline display isn't literally
   'display:none'. To beat every timing race we place the authoritative guard
   HERE, at the very top of <head>: whenever <html> carries `tapx-landing-guard`
   the overlay/dash overlay are display:none !important and cannot paint, no
   matter what any later CSS or inline style says. The first head script (below)
   adds this class synchronously on every non-login visit; login/register clicks
   and the auth reload remove it. Because this rule is parsed first, the portal
   can never flash on the landing. */
html.tapx-landing-guard #tapx-login-overlay,
html.tapx-landing-guard #tapx-dash-overlay {
    display: none !important;
    visibility: hidden !important;
    opacity: 0 !important;
    pointer-events: none !important;
}


  /* ── HERO FIRST-PAINT COLOR LOCK (kills the yellow/light-blue draft flash) ──
     The FINAL light-mode hero colors were defined ~80k lines below in the
     file, so during the browser's top-to-bottom parse the hero painted in its
     DRAFT palette first — light-blue headline (rule ~L5916) + yellow typewriter
     (rule ~L62792) — and only flipped to navy once the parser reached the late
     rules (~L95357). That long gap WAS the flash. These rules sit up here in
     <head>, before the hero paints, and use higher specificity than every draft
     rule (html:not(.dark) + #hero + .hero-landing-ambient + target), so the
     hero is the final navy from the very first frame and no later rule can flip
     it back. Light-mode only — the dashboard dark theme is untouched. */
  html:not(.dark) #hero.hero-landing-ambient .hero-headline-fines{
    color:#0a2540 !important; text-shadow:none !important;
  }
  html:not(.dark) #hero.hero-landing-ambient #hero-typewriter-line,
  html:not(.dark) #hero.hero-landing-ambient #hero-typewriter-text,
  html:not(.dark) #hero.hero-landing-ambient #hero-typewriter-cursor{
    color:#0a2540 !important; text-shadow:none !important;
  }
  html:not(.dark) #hero.hero-landing-ambient .text-slate-800{
    color:#1e293b !important;
  }


  /* Hide the native calendar/clock picker icon on ALL date/time fields
     (dashboard + landing page). Field still works; only the icon is removed. */
  input[type="date"]::-webkit-calendar-picker-indicator,
  input[type="datetime-local"]::-webkit-calendar-picker-indicator,
  input[type="month"]::-webkit-calendar-picker-indicator,
  input[type="week"]::-webkit-calendar-picker-indicator,
  input[type="time"]::-webkit-calendar-picker-indicator {
    display: none !important;
    opacity: 0 !important;
    -webkit-appearance: none !important;
    appearance: none !important;
    width: 0 !important;
    height: 0 !important;
    padding: 0 !important;
    margin: 0 !important;
    pointer-events: none !important;
  }
  input[type="date"]::-webkit-inner-spin-button,
  input[type="datetime-local"]::-webkit-inner-spin-button,
  input[type="month"]::-webkit-inner-spin-button,
  input[type="time"]::-webkit-inner-spin-button {
    display: none !important;
    -webkit-appearance: none !important;
    appearance: none !important;
  }


  /* ════════════════════════════════════════════════════════════════════
     CROSS-DEVICE / CROSS-BROWSER FIELD CONSISTENCY  (UI-only)
     Makes <select> dropdowns and date / time inputs render IDENTICALLY on
     Chrome, Safari, Firefox, Edge, iOS and Android by removing each
     browser's native control chrome and normalizing the internal layout.
     It ONLY touches native rendering — every field keeps its OWN class
     styling (colour, border, radius, height, padding, font), so the design
     already shown on the reference device becomes the standard everywhere.
     No script, value, validation, workflow or layout logic is changed.
     ════════════════════════════════════════════════════════════════════ */

  /* 1 ── Keep text sizes uniform: stop mobile browsers auto-inflating text. */
  html { -webkit-text-size-adjust: 100%; -moz-text-size-adjust: 100%; text-size-adjust: 100%; }

  /* 2 ── Strip native chrome (arrow, bezel, inner shadow, spinners) from every
          select + date/time input so no browser paints its own version. The
          field's own class still supplies colour / border / radius / size. */
  select,
  input[type="date"],
  input[type="time"],
  input[type="month"],
  input[type="week"],
  input[type="datetime-local"] {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    box-sizing: border-box;
    background-clip: padding-box;
    font-family: inherit;          /* native controls otherwise use the OS font */
  }
  select::-ms-expand { display: none; }   /* legacy Edge / IE arrow */

  /* 3 ── Fallback dropdown arrow ONLY for selects that don't already draw one
          (the two themed classes keep their existing arrows — no double arrow,
          and no select ends up with NO arrow after appearance:none). */
  select:not(.tapx-sel):not(.fine-check-input-dark) {
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' stroke='%2394a3b8' stroke-width='1.6' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 0.85rem center;
    background-size: 0.75rem;
    padding-right: 2.2rem;
  }

  /* 4 ── DATE / TIME inputs: pin the value text to the same position, size,
          font and colour on every browser. (WebKit/Blink expose these
          pseudo-elements; Firefox & others render a plain field that
          appearance:none already normalizes.) Higher-specificity per-field
          rules elsewhere still win, so themed fields keep their exact look. */
  input[type="date"]::-webkit-datetime-edit,
  input[type="time"]::-webkit-datetime-edit,
  input[type="month"]::-webkit-datetime-edit,
  input[type="datetime-local"]::-webkit-datetime-edit {
    padding: 0; margin: 0; line-height: 1.2;
    font-family: inherit; font-size: inherit; color: inherit;
  }
  input[type="date"]::-webkit-datetime-edit-fields-wrapper,
  input[type="time"]::-webkit-datetime-edit-fields-wrapper,
  input[type="datetime-local"]::-webkit-datetime-edit-fields-wrapper {
    padding: 0; margin: 0;
  }
  input[type="date"]::-webkit-datetime-edit-text,
  input[type="datetime-local"]::-webkit-datetime-edit-text { padding: 0 0.12em; }
  input[type="date"]::-webkit-datetime-edit-month-field,
  input[type="date"]::-webkit-datetime-edit-day-field,
  input[type="date"]::-webkit-datetime-edit-year-field,
  input[type="time"]::-webkit-datetime-edit-hour-field,
  input[type="time"]::-webkit-datetime-edit-minute-field,
  input[type="time"]::-webkit-datetime-edit-ampm-field {
    padding: 0; font-variant-numeric: tabular-nums;
  }
  /* Pin value to the left on every engine (iOS sometimes centres it). */
  input[type="date"], input[type="time"], input[type="month"],
  input[type="datetime-local"], input[type="week"] { text-align: left; }


  /* Employee table: hide the standalone UID (4th) and Emirates (5th) columns.
     UID is shown under EID instead (see row render). */
  .emp-table thead th:nth-child(4),
  .emp-table tbody tr:not(.emp-doc-detail-row) td:nth-child(4),
  .emp-table thead th:nth-child(5),
  .emp-table tbody tr:not(.emp-doc-detail-row) td:nth-child(5) {
    display: none !important;
  }
  /* Docs module: hide the stat boxes row */
  #document-stats-grid { display: none !important; }


  /* While booting straight into the dashboard, hide the landing + login and
     show a TRANSPARENT loader with the 1TapX logo + a soft smoke effect.
     The class is removed the moment the dashboard overlay is shown. */
  html.tapx-booting-dash body > *:not(#sanctuary-backdrop):not(#tapx-dash-overlay):not(#tapx-boot-loader):not(script):not(style){
    display: none !important;
  }
  html.tapx-booting-dash #tapx-login-overlay { display: none !important; }

  #tapx-boot-loader{
    display:none; position:fixed; inset:0; z-index:999999;
    align-items:center; justify-content:center; background:transparent; pointer-events:none;
    opacity:1; transition:opacity .55s ease;
  }
  html.tapx-booting-dash #tapx-boot-loader,
  html.tapx-initial-loading #tapx-boot-loader{ display:flex; }
  html.tapx-loader-fade #tapx-boot-loader{ opacity:0; }
  /* LANDING first-paint: opaque branded cover. The dashboard boot path keeps
     a transparent loader (over the sanctuary backdrop), but the landing path
     must FULLY hide the heavy first paint / raw typewriter default text /
     unstyled FOUC until everything is ready, then fade to reveal. Fixed light
     brand bg (NOT keyed on html.dark, since early boot adds html.dark before
     the landing forces light — keying on it would cause a dark to light flash). */
  html.tapx-initial-loading:not(.tapx-booting-dash) #tapx-boot-loader{
    background:#ffffff;
    pointer-events:auto;
  }
  /* ── EARLIEST-PAINT FOUC KILLER (landing) ──────────────────────────────
     The #tapx-boot-loader DIV lives deep in <body> (~line 17k), so it only
     exists after the browser has already parsed/painted a chunk of the heavy
     hero — that late div alone can't stop the "old/unstyled version flashes
     5-6 times" effect. This html::before paints the moment <html> exists
     (the very first inline script adds .tapx-initial-loading in <head>),
     i.e. BEFORE any body content is painted. It is a fully opaque, fixed,
     full-viewport cover that hides every intermediate/unstyled paint
     (raw typewriter default text, half-applied Tailwind, 3D init reflow)
     until window.load settles, then fades out smoothly. Fixed light brand
     bg (NOT keyed on html.dark) so there is never a dark→light flash. */
  html.tapx-initial-loading:not(.tapx-booting-dash)::before{
    content:"";
    position:fixed; inset:0; z-index:999990;
    background:#ffffff;
    pointer-events:none;
    opacity:1; transition:opacity .5s ease;
  }
  html.tapx-loader-fade:not(.tapx-booting-dash)::before{ opacity:0; }
  /* Soft drifting smoke wisps (gold/amber + cyan so they read on light OR dark) */
  #tapx-boot-loader .tapx-bl-smoke{
    position:absolute; width:360px; height:360px; border-radius:50%;
    background:radial-gradient(circle, rgba(255,215,0,0.20), rgba(255,200,80,0.06) 45%, transparent 70%);
    filter:blur(34px); will-change:transform,opacity;
    animation:tapx-bl-smoke 3.4s ease-in-out infinite;
  }
  #tapx-boot-loader .tapx-bl-smoke.s2{ width:300px; height:300px; animation-delay:-1.2s;
    background:radial-gradient(circle, rgba(0,219,231,0.15), transparent 62%); }
  #tapx-boot-loader .tapx-bl-smoke.s3{ width:430px; height:430px; animation-delay:-2.3s;
    background:radial-gradient(circle, rgba(255,255,255,0.10), transparent 66%); }
  @keyframes tapx-bl-smoke{
    0%,100%{ transform:scale(0.85) translate(-8px,8px); opacity:0.5; }
    50%{ transform:scale(1.18) translate(8px,-10px); opacity:0.95; }
  }
  #tapx-boot-loader .tapx-bl-logo{
    position:relative; z-index:2;
    width:clamp(120px,26vw,168px); height:clamp(120px,26vw,168px);
    background-image:var(--tapx-brand-logo);
    background-size:contain; background-position:center; background-repeat:no-repeat;
    filter:drop-shadow(0 0 26px rgba(255,215,0,0.45)) drop-shadow(0 6px 18px rgba(0,0,0,0.22));
    animation:tapx-bl-pulse 1.8s ease-in-out infinite;
  }
  @keyframes tapx-bl-pulse{ 0%,100%{ opacity:0.80; transform:scale(1);} 50%{ opacity:1; transform:scale(1.06);} }
  @media (prefers-reduced-motion: reduce){
    #tapx-boot-loader .tapx-bl-smoke, #tapx-boot-loader .tapx-bl-logo{ animation:none; }
  }
  /* ── User-provided tri-dot loader (pink / yellow / red) ── */
  .tapx-tri-loader{
    width:28px; aspect-ratio:1; border-radius:50%;
    background:#E3AAD6; transform-origin:top; display:grid;
    animation:tapx-l3-0 1s infinite linear;
  }
  .tapx-tri-loader::before,
  .tapx-tri-loader::after{
    content:""; grid-area:1/1; background:#F4DD51; border-radius:50%;
    transform-origin:top; animation:inherit; animation-name:tapx-l3-1;
  }
  .tapx-tri-loader::after{ background:#F10C49; --s:180deg; }
  @keyframes tapx-l3-0{ 0%,20%{transform:rotate(0)} 100%{transform:rotate(360deg)} }
  @keyframes tapx-l3-1{ 50%{transform:rotate(var(--s,90deg))} 100%{transform:rotate(0)} }


/* Instant white cover during boot so the long <head> parse + dark-theme switch
   never flash black/blue. Removed (together with #tapx-splash) once the app is ready. */
html.tapx-splashing{ background:#ffffff !important; }


    #settings-subscription-mount .tapx-sub-detail-card {
        background: linear-gradient(135deg, rgba(217, 119, 6, 0.10), rgba(146, 64, 14, 0.06));
        border: 1px solid rgba(217, 119, 6, 0.25);
        border-radius: 16px;
        padding: 22px;
        margin-bottom: 16px;
    }
    #settings-subscription-mount .tapx-sub-detail-head {
        display: flex;
        align-items: center;
        gap: 14px;
        padding-bottom: 16px;
        margin-bottom: 16px;
        border-bottom: 1px solid rgba(255,255,255,0.08);
    }
    #settings-subscription-mount .tapx-sub-detail-icon {
        width: 52px; height: 52px;
        border-radius: 13px;
        background: linear-gradient(135deg, #f59e0b, #d97706);
        display: flex; align-items: center; justify-content: center;
        color: #fff;
        box-shadow: 0 6px 18px rgba(245, 158, 11, 0.32);
    }
    #settings-subscription-mount .tapx-sub-detail-title {
        font-size: 17px;
        font-weight: 900;
        color: #fff;
        margin: 0;
    }
    #settings-subscription-mount .tapx-sub-detail-sub {
        font-size: 11px;
        color: #94a3b8;
        font-weight: 700;
        margin-top: 3px;
        text-transform: uppercase;
        letter-spacing: 0.06em;
    }
    #settings-subscription-mount .tapx-sub-status-pill {
        margin-left: auto;
        padding: 5px 11px;
        border-radius: 20px;
        font-size: 10px; font-weight: 900;
        text-transform: uppercase; letter-spacing: 0.07em;
        background: rgba(16, 185, 129, 0.18);
        color: #34d399;
        border: 1px solid rgba(16, 185, 129, 0.4);
    }
    #settings-subscription-mount .tapx-sub-status-pill.is-overdue {
        background: rgba(239, 68, 68, 0.18);
        color: #f87171;
        border-color: rgba(239, 68, 68, 0.4);
    }
    #settings-subscription-mount .tapx-sub-detail-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 12px;
    }
    #settings-subscription-mount .tapx-sub-detail-item {
        background: rgba(0, 0, 0, 0.18);
        border: 1px solid rgba(255,255,255,0.05);
        border-radius: 11px;
        padding: 12px 14px;
        display: flex;
        align-items: flex-start;
        gap: 10px;
    }
    #settings-subscription-mount .tapx-sub-detail-item .mat {
        font-size: 18px;
        color: #fbbf24;
        flex-shrink: 0;
        margin-top: 1px;
    }
    #settings-subscription-mount .tapx-sub-detail-item-label {
        font-size: 9.5px;
        font-weight: 800;
        color: #94a3b8;
        text-transform: uppercase;
        letter-spacing: 0.06em;
    }
    #settings-subscription-mount .tapx-sub-detail-item-val {
        font-size: 13px;
        font-weight: 900;
        color: #fff;
        margin-top: 3px;
        line-height: 1.25;
    }
    #settings-subscription-mount .tapx-sub-detail-item-sub {
        font-size: 10px;
        font-weight: 600;
        color: #64748b;
        margin-top: 2px;
    }
    #settings-subscription-mount .tapx-sub-features {
        background: rgba(255,255,255,0.03);
        border: 1px solid rgba(255,255,255,0.06);
        border-radius: 14px;
        padding: 16px;
    }
    #settings-subscription-mount .tapx-sub-features h5 {
        font-size: 11px;
        font-weight: 900;
        color: #94a3b8;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        margin: 0 0 10px;
    }
    #settings-subscription-mount .tapx-sub-features ul {
        list-style: none;
        padding: 0; margin: 0;
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 8px 14px;
    }
    #settings-subscription-mount .tapx-sub-features li {
        font-size: 11px;
        font-weight: 700;
        color: #cbd5e1;
        display: flex;
        align-items: center;
        gap: 7px;
    }
    #settings-subscription-mount .tapx-sub-features li .check {
        color: #10b981;
        font-size: 14px;
        flex-shrink: 0;
    }


    /* Billing sidebar item (matches existing settings-subnav-item style) */
    .settings-subnav-item[data-set-tab="billing"] {
        position: relative;
    }
    .settings-subnav-item[data-set-tab="billing"] .tapx-billing-dot {
        position: absolute;
        top: 10px; right: 10px;
        width: 7px; height: 7px;
        border-radius: 50%;
        background: #ef4444;
        box-shadow: 0 0 0 3px rgba(239, 68, 68, 0.20);
        display: none;
    }
    .settings-subnav-item[data-set-tab="billing"].has-overdue .tapx-billing-dot { display: block; animation: tapx-bill-pulse 1.8s ease-in-out infinite; }
    @keyframes tapx-bill-pulse {
        0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0.4); }
        50%      { box-shadow: 0 0 0 6px rgba(239, 68, 68, 0); }
    }
    /* Billing panel */
    #tapx-billing-panel { display: none; }
    .settings-tab-panel[data-tab-panel="billing"] { display: none; }
    .settings-tab-panel[data-tab-panel="billing"].is-active { display: block; }
    .tapx-billing-header {
        display: flex;
        align-items: center;
        justify-content: space-between;
        margin-bottom: 18px;
    }
    .tapx-billing-header h3 {
        font-size: 13px;
        font-weight: 900;
        color: #ffffff;
        text-transform: uppercase;
        letter-spacing: 0.12em;
        margin: 0;
    }
    .tapx-billing-sub-tier {
        font-size: 10px;
        font-weight: 800;
        text-transform: uppercase;
        letter-spacing: 0.05em;
        padding: 4px 10px;
        border-radius: 20px;
        background: rgba(217, 119, 6, 0.15);
        color: #fbbf24;
        border: 1px solid rgba(217, 119, 6, 0.3);
    }
    .tapx-bill-current {
        background: linear-gradient(135deg, rgba(217, 119, 6, 0.10), rgba(146, 64, 14, 0.06));
        border: 1px solid rgba(217, 119, 6, 0.25);
        border-radius: 14px;
        padding: 18px;
        margin-bottom: 18px;
    }
    .tapx-bill-current.is-overdue {
        background: linear-gradient(135deg, rgba(239, 68, 68, 0.12), rgba(127, 29, 29, 0.06));
        border-color: rgba(239, 68, 68, 0.4);
        animation: tapx-bill-overdue-pulse 2.6s ease-in-out infinite;
    }
    @keyframes tapx-bill-overdue-pulse {
        0%, 100% { box-shadow: 0 0 0 0 rgba(239, 68, 68, 0); }
        50%      { box-shadow: 0 0 0 6px rgba(239, 68, 68, 0.10); }
    }
    .tapx-bill-current.is-paid {
        background: linear-gradient(135deg, rgba(16, 185, 129, 0.10), rgba(6, 95, 70, 0.06));
        border-color: rgba(16, 185, 129, 0.30);
    }
    .tapx-bill-row-top {
        display: flex;
        align-items: flex-start;
        justify-content: space-between;
        margin-bottom: 14px;
    }
    .tapx-bill-label {
        font-size: 10px;
        font-weight: 800;
        color: #94a3b8;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        margin-bottom: 4px;
    }
    .tapx-bill-month {
        font-size: 18px;
        font-weight: 900;
        color: #fff;
    }
    .tapx-bill-status-badge {
        font-size: 10px;
        font-weight: 900;
        text-transform: uppercase;
        letter-spacing: 0.06em;
        padding: 5px 11px;
        border-radius: 20px;
    }
    .tapx-bill-status-Pending { background: rgba(217, 119, 6, 0.18); color: #fbbf24; border: 1px solid rgba(217, 119, 6, 0.4); }
    .tapx-bill-status-Paid    { background: rgba(16, 185, 129, 0.18); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.4); }
    .tapx-bill-status-Overdue { background: rgba(239, 68, 68, 0.18); color: #f87171; border: 1px solid rgba(239, 68, 68, 0.4); }
    .tapx-bill-grid {
        display: grid;
        grid-template-columns: 1fr 1fr;
        gap: 12px;
        padding: 12px;
        background: rgba(0,0,0,0.15);
        border-radius: 10px;
        margin-bottom: 14px;
    }
    .tapx-bill-grid > div {
        font-size: 11px;
        color: #cbd5e1;
    }
    .tapx-bill-grid b {
        font-size: 12px;
        color: #fff;
        font-weight: 800;
        display: block;
        margin-top: 2px;
    }
    .tapx-bill-pay-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding-top: 14px;
        border-top: 1px solid rgba(255,255,255,0.08);
    }
    .tapx-bill-amount {
        font-size: 22px;
        font-weight: 900;
        color: #fff;
    }
    .tapx-bill-amount-sub {
        font-size: 10px;
        font-weight: 700;
        color: #94a3b8;
        margin-left: 4px;
    }
    .tapx-bill-pay-btn {
        background: linear-gradient(135deg, #f59e0b, #d97706);
        color: #fff;
        padding: 11px 22px;
        border-radius: 11px;
        font-size: 11px;
        font-weight: 900;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        border: 0;
        cursor: pointer;
        transition: transform 0.15s, box-shadow 0.2s;
        box-shadow: 0 4px 16px rgba(245, 158, 11, 0.32);
    }
    .tapx-bill-pay-btn:hover { transform: translateY(-1px); box-shadow: 0 8px 22px rgba(245, 158, 11, 0.5); }
    .tapx-bill-pay-btn.is-overdue { background: linear-gradient(135deg, #ef4444, #dc2626); box-shadow: 0 4px 16px rgba(239, 68, 68, 0.4); }
    .tapx-bill-pay-btn.is-paid { background: rgba(16, 185, 129, 0.15); color: #34d399; border: 1px solid rgba(16, 185, 129, 0.4); box-shadow: none; cursor: default; }
    .tapx-bill-pay-btn.is-paid:hover { transform: none; box-shadow: none; }
    /* History */
    .tapx-bill-history-title {
        font-size: 11px;
        font-weight: 900;
        color: #94a3b8;
        text-transform: uppercase;
        letter-spacing: 0.08em;
        margin: 22px 0 10px;
    }
    .tapx-bill-history-empty {
        text-align: center;
        padding: 30px 14px;
        color: #64748b;
        font-size: 11px;
        background: rgba(255,255,255,0.02);
        border: 1px dashed rgba(255,255,255,0.08);
        border-radius: 10px;
    }
    .tapx-bill-history-list {
        display: flex;
        flex-direction: column;
        gap: 8px;
    }
    .tapx-bill-history-row {
        display: grid;
        grid-template-columns: 1fr auto auto auto;
        gap: 14px;
        align-items: center;
        padding: 11px 14px;
        background: rgba(255,255,255,0.03);
        border: 1px solid rgba(255,255,255,0.06);
        border-radius: 10px;
    }
    .tapx-bill-history-row > div:first-child { font-size: 12px; font-weight: 800; color: #fff; }
    .tapx-bill-history-row > div:first-child small { display: block; font-size: 10px; font-weight: 600; color: #64748b; margin-top: 2px; }
    .tapx-bill-history-amt { font-size: 12px; font-weight: 800; color: #fff; tabular-nums: true; }
    .tapx-bill-history-date { font-size: 10px; font-weight: 600; color: #94a3b8; }
    /* LOCK OVERLAY */
    body.tapx-billing-locked [id^="panel-"]:not(#panel-settings):not(#panel-recycle) {
        position: relative;
        pointer-events: none;
        filter: blur(2px) grayscale(0.4);
    }
    body.tapx-billing-locked .dash-card[id^="panel-"]:not(#panel-settings):not(#panel-recycle)::after {
        content: "";
        position: absolute;
        inset: 0;
        background: rgba(15, 23, 42, 0.55);
        pointer-events: auto;
        z-index: 50;
        border-radius: inherit;
    }
    #tapx-billing-lock-banner {
        position: fixed;
        top: 50%; left: 50%;
        transform: translate(-50%, -50%);
        z-index: 99997;
        background: linear-gradient(135deg, #1e293b, #0f172a);
        border: 2px solid #ef4444;
        border-radius: 18px;
        padding: 28px 32px;
        box-shadow: 0 30px 80px rgba(0,0,0,0.6), 0 0 0 6px rgba(239, 68, 68, 0.15);
        display: none;
        max-width: 420px;
        text-align: center;
        pointer-events: auto;
    }
    body.tapx-billing-locked:not(.tapx-on-settings) #tapx-billing-lock-banner { display: block; animation: tapx-pp-pop-in 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); }
    #tapx-billing-lock-banner .tapx-lock-icon {
        width: 56px; height: 56px;
        border-radius: 50%;
        background: linear-gradient(135deg, #ef4444, #dc2626);
        margin: 0 auto 14px;
        display: flex; align-items: center; justify-content: center;
        color: #fff;
        box-shadow: 0 8px 24px rgba(239, 68, 68, 0.4);
    }
    #tapx-billing-lock-banner h3 {
        font-size: 16px;
        font-weight: 900;
        color: #fff;
        margin: 0 0 6px;
    }
    #tapx-billing-lock-banner p {
        font-size: 12px;
        color: #cbd5e1;
        margin: 0 0 18px;
        line-height: 1.5;
    }
    #tapx-billing-lock-banner .tapx-lock-btn {
        background: linear-gradient(135deg, #ef4444, #dc2626);
        color: #fff;
        padding: 11px 26px;
        border-radius: 11px;
        font-size: 12px; font-weight: 900;
        text-transform: uppercase; letter-spacing: 0.08em;
        border: 0; cursor: pointer;
        box-shadow: 0 6px 20px rgba(239, 68, 68, 0.4);
    }
    #tapx-billing-lock-banner .tapx-lock-btn:hover { transform: translateY(-1px); }
    /* ════════════════════════════════════════════════════════════════════════
       LANDING PAGE — never surface the subscription paywall here.
       This file is the public LANDING page (logged-in users are redirected to
       the real client dashboard in dashboard.html). The "Subscription Payment
       Overdue / Pay Bill Now" lock belongs ONLY in that dashboard, where it is
       shown when the admin has actually SENT a bill. On the landing page it must
       NEVER appear — not on a fresh device, not before redirect, regardless of
       any bill synced from the database. So we hard-neutralise every lock effect
       here (CSS only — no billing function is touched; the dashboard's own lock
       is unaffected). ════════════════════════════════════════════════════════ */
    #tapx-billing-lock-banner,
    body.tapx-billing-locked #tapx-billing-lock-banner,
    body.tapx-billing-locked:not(.tapx-on-settings) #tapx-billing-lock-banner { display: none !important; }
    body.tapx-billing-locked [id^="panel-"] { pointer-events: auto !important; filter: none !important; }
    body.tapx-billing-locked .dash-card[id^="panel-"]::after { content: none !important; display: none !important; }
    /* PAYMENT PORTAL MODAL — reused from previous design */
    #tapx-billing-pay-modal {
        position: fixed; inset: 0;
        background: rgba(0,0,0,0.78); backdrop-filter: blur(8px);
        z-index: 999999;
        display: none;
        align-items: center; justify-content: center;
        padding: 20px;
    }
    #tapx-billing-pay-modal.is-open { display: flex; animation: tapx-pp-fade-in 0.22s ease; }
    @keyframes tapx-pp-fade-in { from { opacity: 0; } to { opacity: 1; } }
    @keyframes tapx-pp-slide-up { from { opacity: 0; transform: translateY(20px) scale(0.97); } to { opacity: 1; transform: translateY(0) scale(1); } }
    @keyframes tapx-pp-pop-in { 0% { transform: scale(0); opacity: 0; } 60% { transform: scale(1.15); opacity: 1; } 100% { transform: scale(1); } }
    @keyframes tapx-pp-spin { to { transform: rotate(360deg); } }
    #tapx-billing-pay-modal .tapx-pp-panel {
        background: #0f172a;
        border: 1px solid rgba(255,255,255,0.12);
        border-radius: 20px;
        width: 100%; max-width: 440px;
        max-height: 90vh; overflow-y: auto;
        box-shadow: 0 30px 80px rgba(0,0,0,0.7);
        animation: tapx-pp-slide-up 0.32s cubic-bezier(0.16, 1, 0.3, 1);
    }
    #tapx-billing-pay-modal .tapx-pp-header { padding: 20px 24px 16px; border-bottom: 1px solid rgba(255,255,255,0.08); display: flex; align-items: center; gap: 12px; }
    #tapx-billing-pay-modal .tapx-pp-header-icon { width: 38px; height: 38px; border-radius: 10px; background: linear-gradient(135deg, #f59e0b, #d97706); display: flex; align-items: center; justify-content: center; color: white; }
    #tapx-billing-pay-modal .tapx-pp-header h3 { font-size: 15px; font-weight: 900; color: #fff; margin: 0; }
    #tapx-billing-pay-modal .tapx-pp-header p { font-size: 10.5px; font-weight: 600; color: #94a3b8; margin-top: 2px; }
    #tapx-billing-pay-modal .tapx-pp-close { margin-left: auto; background: rgba(255,255,255,0.06); border: 0; border-radius: 8px; width: 30px; height: 30px; color: #cbd5e1; cursor: pointer; font-size: 18px; line-height: 1; display: flex; align-items: center; justify-content: center; }
    #tapx-billing-pay-modal .tapx-pp-close:hover { background: rgba(255,255,255,0.12); color: #fff; }
    #tapx-billing-pay-modal .tapx-pp-body { padding: 20px 24px; }
    #tapx-billing-pay-modal .tapx-pp-summary { background: linear-gradient(135deg, rgba(245, 158, 11, 0.12), rgba(217, 119, 6, 0.06)); border: 1px solid rgba(245, 158, 11, 0.25); border-radius: 12px; padding: 14px; margin-bottom: 18px; display: flex; align-items: center; justify-content: space-between; }
    #tapx-billing-pay-modal .tapx-pp-summary-plan { font-size: 11px; font-weight: 700; color: #fbbf24; text-transform: uppercase; letter-spacing: 0.06em; }
    #tapx-billing-pay-modal .tapx-pp-summary-name { font-size: 14px; font-weight: 900; color: #fff; margin-top: 2px; }
    #tapx-billing-pay-modal .tapx-pp-summary-amt { font-size: 20px; font-weight: 900; color: #fff; }
    #tapx-billing-pay-modal .tapx-pp-field { margin-bottom: 14px; }
    #tapx-billing-pay-modal .tapx-pp-field-label { display: block; font-size: 10px; font-weight: 800; color: #94a3b8; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 6px; }
    #tapx-billing-pay-modal .tapx-pp-field input { width: 100%; box-sizing: border-box; background: rgba(255,255,255,0.04); border: 1px solid rgba(255,255,255,0.10); border-radius: 10px; padding: 11px 13px; color: #fff; font-size: 13px; font-weight: 600; outline: none; transition: border-color 0.15s, background 0.15s; font-family: inherit; }
    #tapx-billing-pay-modal .tapx-pp-field input:focus { border-color: #f59e0b; background: rgba(245,158,11,0.05); }
    #tapx-billing-pay-modal .tapx-pp-field input::placeholder { color: #475569; font-weight: 500; }
    #tapx-billing-pay-modal .tapx-pp-row { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
    #tapx-billing-pay-modal .tapx-pp-secure { font-size: 10px; font-weight: 700; color: #64748b; display: flex; align-items: center; gap: 6px; margin-bottom: 14px; }
    #tapx-billing-pay-modal .tapx-pp-pay { width: 100%; background: linear-gradient(135deg, #f59e0b, #d97706); color: #fff; padding: 13px; border-radius: 12px; font-size: 13px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; border: 0; cursor: pointer; transition: transform 0.15s, box-shadow 0.2s; box-shadow: 0 4px 18px rgba(245, 158, 11, 0.35); }
    #tapx-billing-pay-modal .tapx-pp-pay:hover { transform: translateY(-1px); box-shadow: 0 8px 24px rgba(245, 158, 11, 0.5); }
    #tapx-billing-pay-modal .tapx-pp-processing { text-align: center; padding: 40px 20px; }
    #tapx-billing-pay-modal .tapx-pp-spinner { width: 60px; height: 60px; border: 4px solid rgba(245, 158, 11, 0.2); border-top-color: #f59e0b; border-radius: 50%; margin: 0 auto 18px; animation: tapx-pp-spin 0.9s linear infinite; }
    #tapx-billing-pay-modal .tapx-pp-processing h4 { font-size: 15px; font-weight: 900; color: #fff; margin: 0 0 6px; }
    #tapx-billing-pay-modal .tapx-pp-processing p { font-size: 11.5px; color: #94a3b8; margin: 0; }
    #tapx-billing-pay-modal .tapx-pp-success { text-align: center; padding: 40px 20px; }
    #tapx-billing-pay-modal .tapx-pp-success-icon { width: 72px; height: 72px; margin: 0 auto 18px; border-radius: 50%; background: linear-gradient(135deg, #10b981, #059669); display: flex; align-items: center; justify-content: center; color: white; animation: tapx-pp-pop-in 0.5s cubic-bezier(0.34, 1.56, 0.64, 1); box-shadow: 0 8px 28px rgba(16, 185, 129, 0.4); }
    #tapx-billing-pay-modal .tapx-pp-success h4 { font-size: 16px; font-weight: 900; color: #fff; margin: 0 0 6px; }
    #tapx-billing-pay-modal .tapx-pp-success p { font-size: 12px; color: #94a3b8; margin: 0 0 22px; }
    #tapx-billing-pay-modal .tapx-pp-success-done { background: linear-gradient(135deg, #10b981, #059669); color: #fff; padding: 11px 32px; border-radius: 10px; font-size: 11px; font-weight: 900; text-transform: uppercase; letter-spacing: 0.08em; border: 0; cursor: pointer; }


    .fines-discount-badge.fines-discount-multi {
        display: inline-flex;
        flex-direction: column;
        align-items: flex-start;
        gap: 1px;
        margin-top: 0;
        padding: 4px 8px;
        border-radius: 6px;
        background: rgba(245, 158, 11, 0.10);
        border: 1px solid rgba(245, 158, 11, 0.30);
        line-height: 1.15;
        vertical-align: middle;
    }
    .fines-discount-badge.fines-discount-multi .fines-disc-after {
        font-size: 11.5px;
        font-weight: 900;
        color: #16a34a;
        font-variant-numeric: tabular-nums;
        letter-spacing: 0.01em;
        white-space: nowrap;
    }
    #tapx-dash-overlay.dark .fines-discount-badge.fines-discount-multi .fines-disc-after {
        color: #4ade80;
    }
    .fines-discount-badge.fines-discount-multi .fines-disc-days {
        font-size: 9px;
        font-weight: 700;
        color: #64748b;
        text-transform: lowercase;
        letter-spacing: 0.02em;
        white-space: nowrap;
    }
    #tapx-dash-overlay.dark .fines-discount-badge.fines-discount-multi .fines-disc-days {
        color: #94a3b8;
    }
    .fines-discount-badge.fines-discount-multi .fines-disc-pct {
        font-size: 10px;
        font-weight: 800;
        color: #f59e0b;
        letter-spacing: 0.02em;
        white-space: nowrap;
    }


    /* Force Step 3 login form completely hidden — register is the only
       path. Tabs row also hidden so user can't accidentally switch. */
    #tapx-s3-tabs-row,
    #tapx-s3-form-login,
    #tapx-s3-tab-login {
        display: none !important;
        visibility: hidden !important;
        height: 0 !important;
        overflow: hidden !important;
    }
    /* Register form always visible regardless of internal tab state. */
    #tapx-s3-form-register {
        display: block !important;
    }


    /* Hide the existing "Login with PIN" card section + OR divider —
       we're consolidating into a single form with a checkbox toggle. */
    #tapx-login-pin-section,
    #tapx-login-divider {
        display: none !important;
    }

    /* Login mode toggle checkbox — sits above the password field.
       Compact width — only as wide as needed. */
    #tapx-login-mode-row {
        display: inline-flex;
        width: fit-content;
        max-width: fit-content;
        align-items: center;
        gap: 10px;
        padding: 8px 14px;
        border-radius: 12px;
        border: 1px solid rgba(125, 211, 252, 0.35);
        background: rgba(56, 189, 248, 0.05);
        margin: 0 0 14px;
        cursor: pointer;
        user-select: none;
        transition: border-color .2s, background .2s;
    }
    #tapx-login-mode-row:hover {
        border-color: rgba(56, 189, 248, 0.55);
    }
    #tapx-login-mode-row.is-active {
        border-color: #38bdf8;
        background: rgba(56, 189, 248, 0.12);
    }
    #tapx-login-mode-checkbox {
        width: 16px;
        height: 16px;
        accent-color: #38bdf8;
        cursor: pointer;
        flex: 0 0 auto;
        margin: 0;
    }
    #tapx-login-mode-label {
        font-size: 12px;
        font-weight: 800;
        letter-spacing: 0.04em;
        color: #0f172a;
        cursor: pointer;
        white-space: nowrap;
    }
    #tapx-login-mode-row.is-active #tapx-login-mode-label {
        color: #0369a1;
    }

    /* PIN entry block — sits BELOW the password field, hidden by default */
    #tapx-login-pin-inline {
        display: none;
        margin: 0 0 14px;
    }
    body.tapx-login-pin-mode #tapx-login-pin-inline {
        display: block;
    }
    /* When PIN mode is active, hide the ENTIRE password .field wrapper
       (label + input + eye icon + error message all hidden together).
       The wrapper is tagged with [data-tapx-pass-field] on boot. */
    body.tapx-login-pin-mode [data-tapx-pass-field] {
        display: none !important;
    }
    /* Belt-and-suspenders fallback selectors */
    body.tapx-login-pin-mode #login-pass,
    body.tapx-login-pin-mode #login-pass-err {
        display: none !important;
    }
    #tapx-login-pin-inline .tapx-lpi-label {
        display: block;
        font-size: 11px;
        font-weight: 800;
        letter-spacing: 0.08em;
        color: #475569;
        text-transform: uppercase;
        margin: 0 0 8px;
    }
    #tapx-login-pin-inline .tapx-pin6 {
        margin: 0;
    }
    #tapx-login-pin-inline .tapx-pin6 input {
        flex: 1;
        height: 48px;
        max-width: 48px;
    }


    /* ── 6-box PIN entry widget ─────────────────────────────────────── */
    .tapx-pin6 {
        display: flex;
        gap: 10px;
        justify-content: space-between;
        margin: 6px 0 4px;
    }
    .tapx-pin6 input {
        flex: 1;
        height: 52px;
        max-width: 56px;
        text-align: center;
        font-size: 22px;
        font-weight: 800;
        border-radius: 12px;
        border: 1.5px solid rgba(125, 211, 252, 0.55);
        background: #ffffff;
        color: #0f172a;
        font-family: 'Lexend', sans-serif;
        transition: border-color .2s, box-shadow .2s;
        outline: none;
        padding: 0;
    }
    .tapx-pin6 input:focus {
        border-color: #38bdf8;
        box-shadow: 0 0 0 3px rgba(56, 189, 248, 0.15);
    }
    .tapx-pin6 input.is-filled {
        border-color: #38bdf8;
        background: #f0f9ff;
    }
    .tapx-pin6 input.is-err {
        border-color: #ef4444;
        background: #fef2f2;
    }

    /* ── Setup PIN toggle row ────────────────────────────────────────── */
    .tapx-pin-toggle-row {
        display: flex;
        align-items: center;
        justify-content: space-between;
        gap: 14px;
        padding: 12px 14px;
        border-radius: 12px;
        border: 1px solid rgba(125, 211, 252, 0.35);
        background: rgba(56, 189, 248, 0.05);
        margin: 4px 0 8px;
    }
    .tapx-pin-toggle-row .tapx-pin-toggle-lbl {
        font-size: 11px;
        font-weight: 800;
        letter-spacing: 0.06em;
        color: #0f172a;
        flex: 1;
    }
    .tapx-pin-toggle-row .tapx-pin-toggle-sub {
        font-size: 9.5px;
        font-weight: 600;
        color: #64748b;
        margin-top: 2px;
    }
    .tapx-toggle-switch {
        position: relative;
        width: 44px;
        height: 24px;
        flex: 0 0 auto;
        cursor: pointer;
    }
    .tapx-toggle-switch input { display: none; }
    .tapx-toggle-switch .tapx-toggle-track {
        position: absolute; inset: 0;
        background: #cbd5e1;
        border-radius: 9999px;
        transition: background .2s;
    }
    .tapx-toggle-switch .tapx-toggle-thumb {
        position: absolute;
        top: 2px; left: 2px;
        width: 20px; height: 20px;
        background: #fff;
        border-radius: 50%;
        box-shadow: 0 1px 3px rgba(0,0,0,0.15);
        transition: left .2s;
    }
    .tapx-toggle-switch input:checked + .tapx-toggle-track {
        background: #38bdf8;
    }
    .tapx-toggle-switch input:checked + .tapx-toggle-track + .tapx-toggle-thumb {
        left: 22px;
    }

    /* ── Setup PIN section (shown only when toggle on) ───────────────── */
    #tapx-setup-pin-section {
        display: none;
        margin-top: 8px;
        animation: tapx-fade-in .25s ease;
    }
    #tapx-setup-pin-section.is-open { display: block; }
    @keyframes tapx-fade-in {
        from { opacity: 0; transform: translateY(-4px); }
        to { opacity: 1; transform: translateY(0); }
    }

    /* ── Login page 2-section layout (Username/Password + PIN) ───────── */
    #form-login .tapx-login-sections {
        display: grid;
        grid-template-columns: 1fr;
        gap: 18px;
        margin-top: 6px;
    }
    .tapx-login-section-card {
        padding: 16px;
        border-radius: 14px;
        border: 1px solid rgba(125, 211, 252, 0.35);
        background: rgba(56, 189, 248, 0.04);
    }
    .tapx-login-section-title {
        font-size: 10px;
        font-weight: 900;
        letter-spacing: 0.14em;
        text-transform: uppercase;
        color: #0369a1;
        margin: 0 0 12px;
    }


/* ═══════════════════════════════════════════════════════════════════════
   DASHBOARD THEME — Light Blue Sidebar + Eye-Comfort Main (restored)
   ─────────────────────────────────────────────────────────────────────
   Premium but clean: glass cards with multi-layer shadows, stat sheen
   sweeps, gold gradient buttons, frosted-glass header — no animated
   orbs, no sliding rails, no shimmer sweeps.
   ═══════════════════════════════════════════════════════════════════════ */

/* ── 1. SIDEBAR BACKGROUND — LIGHT BLUE GRADIENT ── */
#tapx-dash-overlay:not(.dark) .dash-sidebar,
#tapx-dash-overlay:not(.dark) aside.dash-sidebar {
    background: linear-gradient(180deg, #e8f1fc 0%, #d4e3f5 35%, #c0d4ec 65%, #e8f1fc 100%) !important;
    border-right: 1px solid rgba(30, 64, 175, 0.18) !important;
    box-shadow:
        4px 0 24px rgba(30, 64, 175, 0.08),
        inset -1px 0 0 rgba(255, 255, 255, 0.50) !important;
}

/* ── 2. TOP LOGO/BRAND AREA — refined on light blue ── */
#tapx-dash-overlay:not(.dark) .dash-sidebar > div:first-child {
    background: linear-gradient(135deg, rgba(30, 64, 175, 0.06) 0%, rgba(255, 215, 0, 0.04) 100%);
    border-bottom: 1px solid rgba(30, 64, 175, 0.15) !important;
}
#tapx-dash-overlay:not(.dark) .dash-sidebar .font-black.text-white {
    color: #0a1a3a !important;
    text-shadow: 0 1px 2px rgba(255, 255, 255, 0.40);
}
#tapx-dash-overlay:not(.dark) .dash-sidebar .text-gray-500 {
    color: #1e40af !important;
    opacity: 0.80;
}

/* ── 3. NAV LINKS — BLACK text on light blue ── */
#tapx-dash-overlay:not(.dark) .dash-sidebar .nav-link,
#tapx-dash-overlay:not(.dark) .dash-sidebar a,
#tapx-dash-overlay:not(.dark) .dash-sidebar button,
#tapx-dash-overlay:not(.dark) #dash-nav .nav-link,
#tapx-dash-overlay:not(.dark) #dash-nav a {
    color: #0a1a3a !important;
    font-weight: 600;
    letter-spacing: -0.01em;
    background: transparent;
    border-radius: 0.75rem;
    padding: 0.7rem 0.9rem;
    transition: all 0.25s cubic-bezier(.22, 1, .36, 1) !important;
}

/* ── 4. NAV LINK HOVER ── */
#tapx-dash-overlay:not(.dark) .dash-sidebar .nav-link:hover,
#tapx-dash-overlay:not(.dark) #dash-nav .nav-link:hover {
    color: #0a1a3a !important;
    background: linear-gradient(90deg, rgba(30, 64, 175, 0.10) 0%, rgba(30, 64, 175, 0.04) 100%) !important;
    transform: translateX(3px);
    box-shadow:
        inset 2px 0 0 #1e40af,
        0 2px 8px rgba(30, 64, 175, 0.10) !important;
}

/* ── 5. ACTIVE STATE ── */
#tapx-dash-overlay:not(.dark) .dash-sidebar .nav-link.active,
#tapx-dash-overlay:not(.dark) #dash-nav .nav-link.active,
#tapx-dash-overlay:not(.dark) .dash-sidebar .nav-link[aria-current="page"] {
    color: #1e40af !important;
    background: linear-gradient(90deg, rgba(30, 64, 175, 0.18) 0%, rgba(255, 215, 0, 0.06) 100%) !important;
    font-weight: 800;
    box-shadow:
        inset 3px 0 0 #1e40af,
        0 0 0 1px rgba(30, 64, 175, 0.25),
        0 4px 16px rgba(30, 64, 175, 0.12) !important;
}

/* ── 6. DIVIDER + RECYCLE BADGE ── */
#tapx-dash-overlay:not(.dark) .dash-sidebar > nav > div[style*="margin"][style*="height"] {
    background: rgba(30, 64, 175, 0.18) !important;
}
#tapx-dash-overlay:not(.dark) #sidebar-recycle-badge {
    background: rgba(30, 64, 175, 0.15) !important;
    color: #1e40af !important;
}

/* ── 7. SIDEBAR SCROLLBAR ── */
#tapx-dash-overlay:not(.dark) #dash-nav::-webkit-scrollbar { width: 4px; }
#tapx-dash-overlay:not(.dark) #dash-nav::-webkit-scrollbar-thumb {
    background: rgba(30, 64, 175, 0.25);
    border-radius: 4px;
}
#tapx-dash-overlay:not(.dark) #dash-nav::-webkit-scrollbar-thumb:hover {
    background: rgba(30, 64, 175, 0.45);
}

/* ── 8. MAIN AREA — eye-comfort gradient ── */
#tapx-dash-overlay:not(.dark) #dash-main,
#tapx-dash-overlay:not(.dark) main#dash-main {
    background:
        radial-gradient(ellipse at top, rgba(255, 215, 0, 0.04) 0%, transparent 50%),
        radial-gradient(ellipse at bottom, rgba(0, 163, 255, 0.04) 0%, transparent 50%),
        linear-gradient(180deg, #f8fafd 0%, #eef3f9 50%, #f8fafd 100%) !important;
    color: #0f172a !important;
}
#tapx-dash-overlay:not(.dark) #dash-main .text-white,
#tapx-dash-overlay:not(.dark) main#dash-main .text-white {
    color: #0a1a3a !important;
}
#tapx-dash-overlay:not(.dark) #dash-main .text-gray-400 { color: #475569 !important; }
#tapx-dash-overlay:not(.dark) #dash-main .text-gray-500 { color: #64748b !important; }

/* ── 9. CARDS — premium soft elevation ── */
#tapx-dash-overlay:not(.dark) .dash-card,
#tapx-dash-overlay:not(.dark) section.dash-card {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(252, 254, 255, 0.95) 100%) !important;
    border: 1px solid rgba(15, 23, 42, 0.05) !important;
    border-radius: 1rem !important;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.04),
        0 4px 12px rgba(15, 23, 42, 0.04),
        0 16px 40px rgba(15, 23, 42, 0.03),
        inset 0 1px 0 rgba(255, 255, 255, 0.8) !important;
    transition: box-shadow 0.35s cubic-bezier(.22, 1, .36, 1), transform 0.35s cubic-bezier(.22, 1, .36, 1) !important;
}
#tapx-dash-overlay:not(.dark) .dash-card:hover {
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 8px 24px rgba(15, 23, 42, 0.06),
        0 24px 60px rgba(15, 23, 42, 0.05),
        inset 0 1px 0 rgba(255, 255, 255, 0.9) !important;
}

/* ── 10. STAT BOXES — sheen sweep on hover ── */
#tapx-dash-overlay:not(.dark) .emp-stat-card,
#tapx-dash-overlay:not(.dark) .invoices-stat-card {
    background: linear-gradient(135deg, #ffffff 0%, #fafbfd 100%) !important;
    border: 1px solid rgba(15, 23, 42, 0.06) !important;
    border-radius: 0.75rem !important;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.03),
        inset 0 1px 0 rgba(255, 255, 255, 0.9) !important;
    transition: all 0.3s cubic-bezier(.22, 1, .36, 1) !important;
    position: relative;
    overflow: hidden;
    cursor: pointer;
}
#tapx-dash-overlay:not(.dark) .emp-stat-card::before,
#tapx-dash-overlay:not(.dark) .invoices-stat-card::before {
    content: "";
    position: absolute;
    top: 0; left: -100%;
    width: 100%; height: 100%;
    background: linear-gradient(90deg, transparent, rgba(255, 215, 0, 0.08), transparent);
    transition: left 0.6s cubic-bezier(.22, 1, .36, 1);
}
#tapx-dash-overlay:not(.dark) .emp-stat-card:hover,
#tapx-dash-overlay:not(.dark) .invoices-stat-card:hover {
    transform: translateY(-3px);
    border-color: rgba(255, 215, 0, 0.40) !important;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.06),
        0 10px 28px rgba(180, 130, 40, 0.12),
        inset 0 1px 0 rgba(255, 255, 255, 1) !important;
}
#tapx-dash-overlay:not(.dark) .emp-stat-card:hover::before,
#tapx-dash-overlay:not(.dark) .invoices-stat-card:hover::before {
    left: 100%;
}
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-gray-500 { color: #6b7280 !important; }
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-white,
#tapx-dash-overlay:not(.dark) .emp-stat-card span[class*="font-black"] { color: #0f172a !important; }
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-accent-blue { color: #1d4ed8 !important; }
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-amber-300,
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-amber-400 { color: #b45309 !important; }
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-emerald-400 { color: #047857 !important; }
#tapx-dash-overlay:not(.dark) .emp-stat-card .text-red-400 { color: #b91c1c !important; }

/* ── 11. HEADINGS ── */
#tapx-dash-overlay:not(.dark) section.dash-card h2.text-accent-blue,
#tapx-dash-overlay:not(.dark) section.dash-card h2 {
    color: #0c1e4a !important;
    font-weight: 900 !important;
    letter-spacing: 0.05em !important;
}
#tapx-dash-overlay:not(.dark) section.dash-card h2 .material-symbols-outlined {
    color: #b8860b !important;
}

/* ── 12. TABLES ── */
#tapx-dash-overlay:not(.dark) .emp-table {
    background: #ffffff !important;
    color: #1a1a1a !important;
}
#tapx-dash-overlay:not(.dark) .emp-table thead tr {
    background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%) !important;
    border-bottom: 2px solid rgba(15, 23, 42, 0.10) !important;
}
#tapx-dash-overlay:not(.dark) .emp-table thead th { color: #475569 !important; }
#tapx-dash-overlay:not(.dark) .emp-table tbody tr {
    border-bottom: 1px solid rgba(15, 23, 42, 0.05) !important;
    transition: background 0.22s cubic-bezier(.22, 1, .36, 1) !important;
}
#tapx-dash-overlay:not(.dark) .emp-table tbody tr:nth-child(even) { background: rgba(248, 250, 252, 0.5); }
#tapx-dash-overlay:not(.dark) .emp-table tbody tr:hover {
    background: linear-gradient(90deg, rgba(255, 215, 0, 0.06) 0%, rgba(255, 215, 0, 0.02) 100%) !important;
}

/* ── 13. TOP HEADER — frosted glass ── */
#tapx-dash-overlay:not(.dark) header {
    background: rgba(255, 255, 255, 0.92) !important;
    backdrop-filter: blur(16px) saturate(180%);
    -webkit-backdrop-filter: blur(16px) saturate(180%);
    border-bottom: 1px solid rgba(15, 23, 42, 0.06) !important;
    box-shadow: 0 4px 24px rgba(15, 23, 42, 0.04) !important;
}

/* ── 14. BUTTONS — gold premium gradient (UNIFIED LIGHT + DARK MODE) ──
   Per user request: ALL Add buttons across the dashboard should have
   the same gold pill design with bold black text — in both light and
   dark modes. Previously dark mode used a dark navy gradient. */
#tapx-dash-overlay .dash-module-toolbar__add,
#tapx-dash-overlay button[id^="btn-add"] {
    background: linear-gradient(135deg, #FFD700 0%, #b8860b 100%) !important;
    color: #0a1a2f !important;
    border: none !important;
    border-radius: 0.5rem !important;
    font-weight: 900 !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.30),
        0 4px 14px rgba(180, 130, 40, 0.30) !important;
    transition: all 0.2s ease !important;
}
#tapx-dash-overlay .dash-module-toolbar__add:hover,
#tapx-dash-overlay button[id^="btn-add"]:hover {
    transform: translateY(-2px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.40),
        0 6px 20px rgba(180, 130, 40, 0.40) !important;
    filter: brightness(1.05);
}
#tapx-dash-overlay .dash-module-toolbar__add:active,
#tapx-dash-overlay button[id^="btn-add"]:active {
    transform: translateY(0) scale(0.96);
}

/* ── 15. SEARCH/FILTER FIELDS ── */
#tapx-dash-overlay:not(.dark) .dash-module-toolbar__bar,
#tapx-dash-overlay:not(.dark) .dash-module-toolbar__search,
#tapx-dash-overlay:not(.dark) .dash-module-toolbar__field {
    background: #ffffff !important;
    border: 1px solid rgba(15, 23, 42, 0.10) !important;
    color: #0f172a !important;
}
#tapx-dash-overlay:not(.dark) .dash-module-toolbar__search input,
#tapx-dash-overlay:not(.dark) .dash-module-toolbar__field input,
#tapx-dash-overlay:not(.dark) .dash-module-toolbar__field select {
    color: #0f172a !important;
    background: transparent !important;
}

/* ── 16. FILTER PILL TABS — SOLID GOLD GRADIENT (matches ADD button)
   Per user request: ALL filter tabs (Docs module's All/Vehicles/
   Employees/Commercial, Fines module's same, etc.) look exactly
   like the ADD button — solid gold gradient pill with black bold
   uppercase text. Applied in BOTH light and dark modes.
   • Active tab: gold gradient + inset shadow (sunken/pressed look)
   • Inactive tab: gold gradient slightly muted (brightness 0.92)
   • Hover (inactive): brightens to full + subtle lift */
#tapx-dash-overlay .tapx-doc-filter-tab,
#tapx-dash-overlay [class*="filter-tab"]:not(.tapx-doc-filter-tab--active):not([class*="filter-tab--active"]) {
    background: linear-gradient(135deg, #FFD700 0%, #b8860b 100%) !important;
    color: #0a1a2f !important;
    border: none !important;
    border-radius: 0.5rem !important;
    padding: 0.45rem 0.95rem !important;
    font-size: 0.7rem !important;
    font-weight: 900 !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    filter: brightness(0.92);
    opacity: 0.85;
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.30),
        0 2px 8px rgba(180, 130, 40, 0.20) !important;
    transition: all 0.2s ease !important;
}
#tapx-dash-overlay .tapx-doc-filter-tab:hover,
#tapx-dash-overlay [class*="filter-tab"]:not(.tapx-doc-filter-tab--active):not([class*="filter-tab--active"]):hover {
    filter: brightness(1.05);
    opacity: 1;
    transform: translateY(-1px);
    box-shadow:
        inset 0 1px 0 rgba(255, 255, 255, 0.40),
        0 6px 20px rgba(180, 130, 40, 0.40) !important;
}
/* ACTIVE state — same gold gradient + WHITE text + inset shadow (pressed look) */
#tapx-dash-overlay .tapx-doc-filter-tab--active,
#tapx-dash-overlay [class*="filter-tab--active"] {
    background: linear-gradient(135deg, #FFD700 0%, #b8860b 100%) !important;
    color: #ffffff !important;
    border: none !important;
    border-radius: 0.5rem !important;
    padding: 0.45rem 0.95rem !important;
    font-size: 0.7rem !important;
    font-weight: 900 !important;
    letter-spacing: 0.16em !important;
    text-transform: uppercase !important;
    filter: brightness(1);
    opacity: 1;
    text-shadow: 0 1px 2px rgba(0, 0, 0, 0.25);
    box-shadow:
        inset 0 2px 6px rgba(180, 130, 40, 0.45),
        0 1px 0 rgba(255, 255, 255, 0.25) !important;
    transform: translateY(0);
    transition: all 0.2s ease !important;
}

/* ── 17. MINI-SIDEBARS (horizontal) ── */
#tapx-dash-overlay #panel-documents-wrapper,
#tapx-dash-overlay [id*="toll"][class*="grid-cols"][class*="220px"],
#tapx-dash-overlay [id*="settings"][class*="grid-cols"][class*="220px"] {
    grid-template-columns: 1fr !important;
}
#tapx-dash-overlay #toll-mini-sidebar,
#tapx-dash-overlay #settings-subnav,
#tapx-dash-overlay #docs-mini-sidebar {
    width: 100% !important;
    max-width: 100% !important;
    height: auto !important;
    margin-bottom: 0.75rem !important;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.96) 0%, rgba(247, 250, 252, 0.92) 100%) !important;
    border: 1px solid rgba(15, 23, 42, 0.08) !important;
    border-radius: 0.85rem !important;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.04),
        0 4px 16px rgba(15, 23, 42, 0.04) !important;
    padding: 0.5rem !important;
    overflow: visible !important;
    backdrop-filter: blur(8px);
}
#tapx-dash-overlay #docs-mini-sidebar > div:first-child,
#tapx-dash-overlay #toll-mini-sidebar > div:first-child { display: none !important; }
#tapx-dash-overlay #docs-view-tabs,
#tapx-dash-overlay #toll-mini-sidebar [role="tablist"],
#tapx-dash-overlay #toll-mini-sidebar > div:not(:first-child),
#tapx-dash-overlay #settings-subnav,
#tapx-dash-overlay #settings-subnav > ul,
#tapx-dash-overlay #settings-subnav > nav {
    display: flex !important;
    flex-direction: row !important;
    flex-wrap: wrap !important;
    align-items: center !important;
    gap: 0.4rem !important;
    padding: 0.35rem !important;
}
#tapx-dash-overlay #docs-mini-sidebar button,
#tapx-dash-overlay #toll-mini-sidebar button,
#tapx-dash-overlay #toll-mini-sidebar a,
#tapx-dash-overlay #settings-subnav button,
#tapx-dash-overlay #settings-subnav a {
    width: auto !important;
    padding: 0.55rem 1rem !important;
    border-radius: 0.6rem !important;
    flex: 0 0 auto !important;
    white-space: nowrap !important;
    display: inline-flex !important;
    align-items: center !important;
    gap: 0.45rem !important;
    font-size: 0.78rem !important;
    font-weight: 700 !important;
    transition: all 0.22s cubic-bezier(.22, 1, .36, 1) !important;
}
#tapx-dash-overlay:not(.dark) #docs-mini-sidebar button,
#tapx-dash-overlay:not(.dark) #toll-mini-sidebar button,
#tapx-dash-overlay:not(.dark) #toll-mini-sidebar a,
#tapx-dash-overlay:not(.dark) #settings-subnav button,
#tapx-dash-overlay:not(.dark) #settings-subnav a {
    color: #000000 !important;
    background: transparent !important;
    border: 1px solid transparent !important;
}
#tapx-dash-overlay:not(.dark) #docs-mini-sidebar button:hover,
#tapx-dash-overlay:not(.dark) #toll-mini-sidebar button:hover,
#tapx-dash-overlay:not(.dark) #toll-mini-sidebar a:hover,
#tapx-dash-overlay:not(.dark) #settings-subnav button:hover,
#tapx-dash-overlay:not(.dark) #settings-subnav a:hover {
    background: linear-gradient(135deg, rgba(255, 215, 0, 0.12) 0%, rgba(255, 215, 0, 0.04) 100%) !important;
    border-color: rgba(255, 215, 0, 0.25) !important;
    transform: translateY(-1px);
}

/* ── 18. UNIVERSAL HORIZONTAL TAB BAR ── */
.tapx-h-tabbar {
    display: flex;
    flex-wrap: wrap;
    gap: 0.4rem;
    padding: 0.4rem;
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.98) 0%, rgba(248, 250, 252, 0.94) 100%);
    border: 1px solid rgba(15, 23, 42, 0.06);
    border-radius: 0.85rem;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.03),
        0 4px 14px rgba(15, 23, 42, 0.04),
        inset 0 1px 0 rgba(255, 255, 255, 0.7);
    backdrop-filter: blur(8px);
}
.tapx-h-tab {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 0.45rem;
    padding: 0.6rem 1.1rem;
    border-radius: 0.6rem;
    color: #0f172a;
    background: transparent;
    border: 1px solid transparent;
    font-size: 0.78rem;
    font-weight: 700;
    letter-spacing: -0.005em;
    transition: all 0.28s cubic-bezier(.22, 1, .36, 1);
    cursor: pointer;
    white-space: nowrap;
}
.tapx-h-tab .material-symbols-outlined {
    color: #6b7280;
    transition: color 0.2s ease, transform 0.2s ease;
}
.tapx-h-tab:hover {
    background: linear-gradient(135deg, rgba(255, 215, 0, 0.12) 0%, rgba(255, 215, 0, 0.04) 100%);
    border-color: rgba(255, 215, 0, 0.25);
    color: #0a1a3a;
    transform: translateY(-1px);
}
.tapx-h-tab:hover .material-symbols-outlined {
    color: #b8860b;
    transform: scale(1.10);
}
.tapx-h-tab--active,
.tapx-h-tab[aria-selected="true"] {
    background: linear-gradient(135deg, rgba(255, 215, 0, 0.22) 0%, rgba(0, 163, 255, 0.08) 100%);
    border-color: rgba(255, 215, 0, 0.45);
    color: #0a1a3a;
    font-weight: 800;
    box-shadow:
        inset 0 0 0 1px rgba(255, 215, 0, 0.25),
        0 2px 10px rgba(180, 130, 40, 0.12);
}
.tapx-h-tab--active .material-symbols-outlined,
.tapx-h-tab[aria-selected="true"] .material-symbols-outlined {
    color: #b8860b;
}

/* ── 19. WORKFORCE HORIZONTAL BAR ── */
.tapx-mini-sidebar--horizontal {
    width: 100% !important;
    max-width: 100% !important;
    margin: 0 0 0.85rem 0 !important;
    padding: 0 !important;
    background: transparent !important;
    border: none !important;
    box-shadow: none !important;
    height: auto !important;
}
.tapx-mini-sidebar--horizontal .tapx-mini-card {
    background: linear-gradient(135deg, rgba(255, 255, 255, 0.95) 0%, rgba(247, 250, 252, 0.92) 100%) !important;
    border: 1px solid rgba(15, 23, 42, 0.08) !important;
    border-radius: 0.85rem !important;
    box-shadow:
        0 1px 2px rgba(15, 23, 42, 0.04),
        0 4px 16px rgba(15, 23, 42, 0.04) !important;
    padding: 0.5rem !important;
    backdrop-filter: blur(8px);
    display: flex;
    flex-direction: row;
    align-items: center;
    gap: 0.55rem;
    flex-wrap: wrap;
}
.tapx-mini-sidebar--horizontal .tapx-mini-card-list {
    display: flex !important;
    flex-direction: row !important;
    align-items: center;
    gap: 0.4rem;
    flex-wrap: wrap;
    flex: 1;
    padding: 0 !important;
    background: transparent !important;
}
.tapx-mini-sidebar--horizontal .tapx-mini-item {
    display: inline-flex !important;
    align-items: center;
    gap: 0.45rem;
    padding: 0.55rem 0.95rem !important;
    border-radius: 0.6rem !important;
    color: #0a1a3a !important;
    background: transparent !important;
    border: 1px solid transparent !important;
    font-size: 0.78rem !important;
    font-weight: 700 !important;
    transition: all 0.22s cubic-bezier(.22, 1, .36, 1) !important;
    white-space: nowrap;
    width: auto !important;
    box-shadow: none !important;
}
.tapx-mini-sidebar--horizontal .tapx-mini-item-icon .material-symbols-outlined {
    color: #6b7280;
    font-size: 17px;
    transition: color 0.2s ease, transform 0.2s ease;
}
.tapx-mini-sidebar--horizontal .tapx-mini-item:hover {
    background: linear-gradient(135deg, rgba(30, 64, 175, 0.10) 0%, rgba(30, 64, 175, 0.04) 100%) !important;
    border-color: rgba(30, 64, 175, 0.25) !important;
    transform: translateY(-1px);
}
.tapx-mini-sidebar--horizontal .tapx-mini-item:hover .tapx-mini-item-icon .material-symbols-outlined {
    color: #1e40af;
    transform: scale(1.10);
}
.tapx-mini-sidebar--horizontal .tapx-mini-item.active {
    background: linear-gradient(135deg, rgba(30, 64, 175, 0.18) 0%, rgba(255, 215, 0, 0.05) 100%) !important;
    border-color: rgba(30, 64, 175, 0.40) !important;
    color: #1e40af !important;
    font-weight: 800 !important;
    box-shadow:
        inset 0 0 0 1px rgba(30, 64, 175, 0.20),
        0 2px 8px rgba(30, 64, 175, 0.10) !important;
}
.tapx-mini-sidebar--horizontal .tapx-mini-item.active .tapx-mini-item-icon .material-symbols-outlined {
    color: #1e40af;
}
.tapx-mini-sidebar--horizontal .tapx-mini-item-badge {
    background: rgba(30, 64, 175, 0.10);
    color: #1e40af;
    font-size: 0.62rem;
    font-weight: 800;
    padding: 0.1rem 0.5rem;
    border-radius: 999px;
    min-width: 18px;
    text-align: center;
}

/* ── 20. PREMIUM SCROLLBAR ── */
#tapx-dash-overlay:not(.dark) ::-webkit-scrollbar { width: 8px; height: 8px; }
#tapx-dash-overlay:not(.dark) ::-webkit-scrollbar-track {
    background: rgba(15, 23, 42, 0.04);
    border-radius: 4px;
}
#tapx-dash-overlay:not(.dark) ::-webkit-scrollbar-thumb {
    background: rgba(15, 23, 42, 0.18);
    border-radius: 4px;
}
#tapx-dash-overlay:not(.dark) ::-webkit-scrollbar-thumb:hover {
    background: rgba(255, 215, 0, 0.55);
}

/* ── 21. SMOOTH SCROLL + PANEL TRANSITIONS ── */
#tapx-dash-overlay #dash-main,
#tapx-dash-overlay .overflow-x-auto,
#tapx-dash-overlay .overflow-y-auto { scroll-behavior: smooth; }

[data-inv-panel], [data-pay-panel] {
    animation: tapxPanelFade 0.28s cubic-bezier(.22, 1, .36, 1);
}
@keyframes tapxPanelFade {
    from { opacity: 0; transform: translateY(4px); }
    to   { opacity: 1; transform: translateY(0);   }
}

/* ── 22. MODAL — premium glass ── */
#pay-add-form {
    background: radial-gradient(ellipse at center, rgba(15, 23, 42, 0.45) 0%, rgba(15, 23, 42, 0.65) 100%) !important;
}
#pay-modal-inner {
    box-shadow:
        0 30px 90px rgba(0, 0, 0, 0.35),
        0 0 0 1px rgba(16, 185, 129, 0.25),
        inset 0 1px 0 rgba(255, 255, 255, 1) !important;
}
#pay-add-form input,
#pay-add-form select {
    transition: border-color 0.22s ease, box-shadow 0.22s ease !important;
}
#pay-add-form input:focus,
#pay-add-form select:focus {
    border-color: #10b981 !important;
    box-shadow: 0 0 0 3px rgba(16, 185, 129, 0.12) !important;
    outline: none !important;
}

/* ── 23. PREMIUM FOCUS RINGS — buttons/links only ──
   Removed from inputs/selects per user request — form fields stay
   neutral when focused (no gold outline). Keyboard nav accessibility
   for buttons/links is preserved. */
#tapx-dash-overlay:not(.dark) button:focus-visible,
#tapx-dash-overlay:not(.dark) a:focus-visible {
    outline: 2px solid #FFD700 !important;
    outline-offset: 2px !important;
}

/* ── 24. RESPONSIVE ── */
@media (max-width: 1024px) {
    #tapx-dash-overlay:not(.dark) .dash-sidebar {
        box-shadow: 8px 0 40px rgba(30, 64, 175, 0.20) !important;
    }
}

/* ── 25. REDUCED MOTION ── */
@media (prefers-reduced-motion: reduce) {
    .dash-card, .emp-stat-card, .invoices-stat-card, .tapx-h-tab,
    [data-inv-panel], [data-pay-panel] {
        animation: none !important;
        transition: none !important;
    }
    .emp-stat-card::before, .invoices-stat-card::before { display: none !important; }
}
