/* =============================================================================

   VICSTATE CAD — clean industrial dark

   - Sans body, mono only for codes/IDs/plates

   - Hairline 1px borders, sharp corners

   - Generous whitespace, no scanlines, no all-caps headings

   - Amber is an accent for actions only — base UI is monochrome slate

   ============================================================================= */



@import url('https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap');



:root {

    /* Surfaces — dark, low-saturation */

    --bg-primary:     #0b0d10;

    --bg-secondary:   #11141a;

    --bg-tertiary:    #161a21;

    --bg-elevated:    #1a1f27;

    --bg-hover:       #1c2129;



    /* Hairline borders */

    --border-faint:   #1a1e25;

    --border-default: #232831;

    --border-strong:  #2e343f;



    /* Text — soft, not pure white */

    --text-primary:   #e3e6ea;

    --text-secondary: #99a2ad;

    --text-muted:     #5d6672;



    /* Accent — amber, used sparingly */

    --accent:         #e89c3a;

    --accent-hover:   #f0ad4e;

    --accent-dim:     #6e4c1c;

    --accent-bg:      rgba(232, 156, 58, 0.08);



    /* Semantic */

    --success:        #4eb56b;

    --success-dim:    #2a6638;

    --success-bg:     rgba(78, 181, 107, 0.08);



    --danger:         #d4524c;

    --danger-hover:   #de6864;

    --danger-bg:      rgba(212, 82, 76, 0.08);



    --info:           #5a9fd4;

    --info-bg:        rgba(90, 159, 212, 0.08);



    /* Typography */

    --font-sans: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;

    --font-mono: 'JetBrains Mono', 'IBM Plex Mono', 'Consolas', 'Menlo', monospace;

    --font-system: var(--font-sans);



    --radius-sm: 0;

    --radius-md: 0;

    --radius-lg: 0;



    /* Spacing scale (use these, not magic numbers) */

    --space-1: 4px;

    --space-2: 8px;

    --space-3: 12px;

    --space-4: 16px;

    --space-5: 20px;

    --space-6: 24px;

    --space-8: 32px;

}



/* ==========================================================================

   RESET / BASE

   ========================================================================== */

*, *::before, *::after { box-sizing: border-box; }



html, body {

    margin: 0;

    padding: 0;

    background: var(--bg-primary);

    color: var(--text-primary);

    font-family: var(--font-sans);

    font-size: 14px;

    line-height: 1.55;

    -webkit-font-smoothing: antialiased;

    -moz-osx-font-smoothing: grayscale;

}



/* No hover underlines anywhere */

a, a:hover, a:focus, a:active { text-decoration: none !important; }

a { color: inherit; }



h1, h2, h3, h4, h5, h6 {

    font-family: var(--font-sans);

    font-weight: 600;

    margin: 0;

    color: var(--text-primary);

    letter-spacing: -0.01em;

}

h1 { font-size: 22px; }

h2 { font-size: 14px; color: var(--text-secondary); font-weight: 500; }

h3 { font-size: 16px; }

h4 { font-size: 12px; color: var(--text-secondary); font-weight: 600; text-transform: uppercase; letter-spacing: 0.06em; }



p { margin: 0 0 var(--space-2); }

small { font-size: 12px; color: var(--text-muted); }



/* Mono used only for codes, plates, serials, IDs, callsigns */

code, kbd, pre, .mono { font-family: var(--font-mono); }



/* ==========================================================================

   FORMS

   ========================================================================== */

input, select, textarea, button {

    font-family: var(--font-sans);

    font-size: 14px;

    color: var(--text-primary);

}

input[type="text"], input[type="number"], input[type="date"], input[type="search"],

input[type="email"], input[type="password"], select, textarea {

    width: 100%;

    background: var(--bg-primary);

    border: 1px solid var(--border-default);

    padding: 9px 12px;

    color: var(--text-primary);

    transition: border-color 0.12s;

}

input:focus, select:focus, textarea:focus {

    outline: none;

    border-color: var(--text-secondary);

}

textarea { resize: vertical; min-height: 72px; font-family: var(--font-sans); }



label {

    display: block;

    font-size: 11px;

    font-weight: 600;

    color: var(--text-secondary);

    margin-bottom: var(--space-1);

    text-transform: uppercase;

    letter-spacing: 0.04em;

}



::placeholder { color: var(--text-muted); opacity: 1; }



/* ==========================================================================

   BUTTONS

   ========================================================================== */

.btn {

    display: inline-flex;

    align-items: center;

    justify-content: center;

    gap: 6px;

    padding: 7px 14px;

    background: var(--bg-tertiary);

    border: 1px solid var(--border-strong);

    color: var(--text-primary);

    font-family: var(--font-sans);

    font-size: 13px;

    font-weight: 500;

    cursor: pointer;

    transition: background 0.12s, border-color 0.12s, color 0.12s;

    text-decoration: none;

    white-space: nowrap;

    line-height: 1.3;

}

.btn:hover {

    background: var(--bg-hover);

    border-color: var(--text-muted);

}

.btn:active { transform: translateY(1px); }

.btn:disabled { opacity: 0.4; cursor: not-allowed; }

.btn:disabled:hover { background: var(--bg-tertiary); border-color: var(--border-strong); }



.btn-primary {

    background: var(--accent);

    color: #1a1207;

    border-color: var(--accent);

    font-weight: 600;

}

.btn-primary:hover {

    background: var(--accent-hover);

    border-color: var(--accent-hover);

    color: #1a1207;

}



.btn-success {

    background: var(--success);

    color: #0a1f10;

    border-color: var(--success);

    font-weight: 600;

}

.btn-success:hover { background: #5cc079; border-color: #5cc079; }



.btn-danger {

    background: var(--danger-bg);

    border-color: var(--danger);

    color: var(--danger);

}

.btn-danger:hover {

    background: var(--danger);

    color: #fff;

    border-color: var(--danger);

}



.btn-warning {

    background: var(--accent-bg);

    border-color: var(--accent-dim);

    color: var(--accent);

}

.btn-warning:hover {

    background: var(--accent);

    color: #1a1207;

    border-color: var(--accent);

}



.btn-sm  { padding: 4px 10px; font-size: 12px; }

.btn-xs  { padding: 3px 8px; font-size: 11px; }



.btn-icon {

    width: 30px; height: 30px;

    padding: 0;

    background: transparent;

    border: 1px solid var(--border-default);

    color: var(--text-secondary);

}

.btn-icon:hover { color: var(--text-primary); border-color: var(--text-muted); }



/* ==========================================================================

   TOPBAR

   ========================================================================== */

.topbar {

    display: flex;

    align-items: center;

    justify-content: space-between;

    height: 56px;

    padding: 0 var(--space-5);

    background: var(--bg-secondary);

    border-bottom: 1px solid var(--border-default);

    position: sticky;

    top: 0;

    z-index: 100;

}

.topbar-left { display: flex; align-items: center; gap: var(--space-4); }

.topbar-right { display: flex; align-items: center; gap: var(--space-2); }



.brand { display: flex; align-items: center; gap: var(--space-3); }

.brand-mark {

    width: 32px; height: 32px;

    display: flex; align-items: center; justify-content: center;

    background: var(--bg-tertiary);

    border: 1px solid var(--border-strong);

    color: var(--text-secondary);

    font-family: var(--font-mono);

    font-weight: 600;

    font-size: 11px;

}

.brand-mark.mark-police {

    border-color: var(--danger);

    color: var(--danger);

}

.brand-text {

    display: flex; flex-direction: column; line-height: 1.2;

    font-size: 14px; font-weight: 600;

}

.brand-text small {

    font-size: 11px;

    color: var(--text-muted);

    margin-top: 2px;

    font-weight: 400;

    letter-spacing: 0.02em;

}



.user-pill {

    display: inline-flex;

    align-items: center;

    gap: var(--space-2);

    padding: 4px 10px;

    background: var(--bg-tertiary);

    border: 1px solid var(--border-default);

    font-size: 12px;

}

.user-pill img {

    width: 20px; height: 20px;

    border-radius: 50%;

}



.role-tag {

    display: inline-block;

    font-size: 10px;

    font-weight: 600;

    padding: 1px 6px;

    margin-left: 4px;

    border: 1px solid;

}

.role-tag.admin    { color: var(--accent); border-color: var(--accent-dim); }

.role-tag.police   { color: var(--danger); border-color: var(--danger); }

.role-tag.civilian { color: var(--info);   border-color: var(--info); }



/* ==========================================================================

   LEAP RESTRICTED BANNER

   ========================================================================== */

.leap-banner {

    background: var(--bg-secondary);

    color: var(--danger);

    text-align: center;

    font-size: 11px;

    font-weight: 500;

    letter-spacing: 0.02em;

    padding: 6px 12px;

    border-bottom: 1px solid var(--border-default);

}



/* ==========================================================================

   LAYOUT

   ========================================================================== */

.container {

    max-width: 1500px;

    margin: 0 auto;

    padding: var(--space-6);

}



.page-header {

    display: flex;

    justify-content: space-between;

    align-items: flex-start;

    gap: var(--space-4);

    margin: 0 0 var(--space-6);

    flex-wrap: wrap;

}

.page-header h1 { margin: 0; }

.page-header .subtitle {

    color: var(--text-secondary);

    font-size: 13px;

    margin-top: 4px;

}



.grid { display: grid; gap: var(--space-4); }

.grid-2 { grid-template-columns: repeat(auto-fit, minmax(380px, 1fr)); }

.grid-3 { grid-template-columns: repeat(auto-fit, minmax(280px, 1fr)); }



.flex { display: flex; }

.flex-between { display: flex; justify-content: space-between; align-items: center; }

.gap-8 { gap: var(--space-2); }

.gap-12 { gap: var(--space-3); }

.wrap { flex-wrap: wrap; }



/* ==========================================================================

   CARD

   ========================================================================== */

.card {

    background: var(--bg-secondary);

    border: 1px solid var(--border-default);

    margin-bottom: var(--space-4);

}

.card-header {

    display: flex;

    align-items: center;

    justify-content: space-between;

    padding: var(--space-4) var(--space-5);

    border-bottom: 1px solid var(--border-default);

}

.card-header h2 {

    font-size: 14px;

    color: var(--text-primary);

    font-weight: 600;

    text-transform: none;

    letter-spacing: 0;

}

.card-meta {

    color: var(--text-muted);

    font-size: 12px;

}

.card-body {

    padding: var(--space-5);

}



/* ==========================================================================

   TABS

   ========================================================================== */

.tabs {

    display: flex;

    gap: 0;

    border-bottom: 1px solid var(--border-default);

    margin-bottom: var(--space-5);

}

.tab {

    background: transparent;

    border: none;

    border-bottom: 2px solid transparent;

    padding: 12px 18px;

    margin-bottom: -1px;

    color: var(--text-secondary);

    font-family: var(--font-sans);

    font-size: 13px;

    font-weight: 500;

    cursor: pointer;

    transition: color 0.12s, border-color 0.12s;

}

.tab:hover { color: var(--text-primary); }

.tab.active {

    color: var(--text-primary);

    border-bottom-color: var(--accent);

}



/* CRITICAL: panels are hidden by default, only the active one shows */

.tab-panel { display: none; }

.tab-panel.active { display: block; }



/* ==========================================================================

   TABLES

   ========================================================================== */

.data-table {

    width: 100%;

    border-collapse: collapse;

    font-size: 13px;

}

.data-table th {

    background: var(--bg-tertiary);

    color: var(--text-muted);

    text-align: left;

    padding: 10px var(--space-4);

    font-weight: 600;

    font-size: 11px;

    text-transform: uppercase;

    letter-spacing: 0.05em;

    border-bottom: 1px solid var(--border-default);

}

.data-table td {

    padding: 10px var(--space-4);

    border-bottom: 1px solid var(--border-faint);

    vertical-align: middle;

}

.data-table tr:last-child td { border-bottom: none; }

.data-table tr:hover td { background: var(--bg-tertiary); }

.data-table.compact th, .data-table.compact td { padding: 6px 12px; font-size: 12px; }



/* ==========================================================================

   STAT TILES

   ========================================================================== */

.stat-grid {

    display: grid;

    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));

    gap: 1px;

    background: var(--border-default);

    border: 1px solid var(--border-default);

}

.stat-tile {

    background: var(--bg-secondary);

    padding: var(--space-5);

}

.stat-label {

    font-size: 11px;

    color: var(--text-muted);

    margin-bottom: var(--space-2);

    text-transform: uppercase;

    letter-spacing: 0.06em;

}

.stat-value {

    font-size: 26px;

    font-weight: 700;

    color: var(--text-primary);

    font-family: var(--font-mono);

    letter-spacing: -0.02em;

}



/* ==========================================================================

   PORTAL CARDS (home page)

   ========================================================================== */

.portal-card {

    display: flex;

    flex-direction: column;

    gap: var(--space-2);

    padding: var(--space-6);

    background: var(--bg-secondary);

    border: 1px solid var(--border-default);

    color: var(--text-primary);

    transition: border-color 0.12s, background 0.12s;

}

.portal-card:hover {

    border-color: var(--text-muted);

    background: var(--bg-tertiary);

}

.portal-icon { font-size: 28px; opacity: 0.7; }

.portal-title {

    font-size: 16px;

    font-weight: 600;

    color: var(--text-primary);

    margin-top: var(--space-2);

}

.portal-desc {

    font-size: 13px;

    color: var(--text-secondary);

    flex: 1;

    line-height: 1.5;

}

.portal-card .btn { align-self: flex-start; margin-top: var(--space-2); }



/* ==========================================================================

   FORM FIELDS

   ========================================================================== */

.form-field { margin-bottom: var(--space-4); }

.form-field label {

    margin-bottom: var(--space-1);

}

.form-field small {

    display: block;

    margin-top: var(--space-1);

    color: var(--text-muted);

    font-size: 12px;

}

.form-field.span-2 { grid-column: span 2; }



/* ==========================================================================

   MODAL

   ========================================================================== */

.modal-backdrop {

    position: fixed;

    inset: 0;

    background: rgba(0, 0, 0, 0.65);

    display: none;

    align-items: flex-start;

    justify-content: center;

    padding: 60px var(--space-4);

    z-index: 1000;

    overflow-y: auto;

}

.modal-backdrop.open { display: flex; }

.modal {

    background: var(--bg-elevated);

    border: 1px solid var(--border-strong);

    width: 100%;

    max-width: 600px;

    max-height: 90vh;

    overflow-y: auto;

    position: relative;

}

.modal-xl { max-width: 1100px; }

.modal-large { max-width: 900px; }



.modal-header {

    display: flex;

    justify-content: space-between;

    align-items: center;

    padding: var(--space-4) var(--space-5);

    border-bottom: 1px solid var(--border-default);

}

.modal-header h3 {

    color: var(--text-primary);

}

.modal-body { padding: var(--space-5); }

.modal-footer {

    display: flex;

    justify-content: flex-end;

    gap: var(--space-2);

    padding: var(--space-4) var(--space-5);

    border-top: 1px solid var(--border-default);

}



/* ==========================================================================

   STATUS / DUTY / LIC / FLAG / CAT PILLS

   ========================================================================== */

.status-pill, .duty-pill, .lic-mini, .cat-pill, .flag-pill {

    display: inline-block;

    padding: 2px 8px;

    font-size: 11px;

    font-weight: 600;

    border: 1px solid var(--border-default);

    background: var(--bg-tertiary);

    color: var(--text-secondary);

}



/* status-pill (rego status, generic) */

.status-pill.status-valid    { color: var(--success); border-color: var(--success-dim); background: var(--success-bg); }

.status-pill.status-pending  { color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.status-pill.status-suspended{ color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.status-pill.status-revoked  { color: var(--danger);  border-color: var(--danger);      background: var(--danger-bg); }

.status-pill.status-active   { color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.status-pill.status-resolved { color: var(--info);    border-color: var(--info);        background: var(--info-bg); }

.status-pill.status-closed   { color: var(--text-muted); }

.status-pill.status-none     { color: var(--text-muted); }



/* duty pill */

.duty-pill {

    padding: 4px 10px;

    font-weight: 600;

    font-family: var(--font-mono);

    font-size: 12px;

}

.duty-pill.duty-on      { color: var(--success); border-color: var(--success-dim); background: var(--success-bg); }

.duty-pill.duty-off     { color: var(--text-muted); }

.duty-pill.duty-emerg   {

    color: #fff; background: var(--danger); border-color: var(--danger);

    animation: pulseDanger 1.4s ease-in-out infinite;

}

@keyframes pulseDanger {

    0%, 100% { box-shadow: 0 0 0 0 rgba(212, 82, 76, 0.5); }

    50%      { box-shadow: 0 0 0 6px rgba(212, 82, 76, 0); }

}



/* mini licence badge in lookup tables */

.lic-mini {

    min-width: 22px;

    text-align: center;

    margin-right: 3px;

    padding: 1px 6px;

    font-size: 10px;

    font-family: var(--font-mono);

    font-weight: 600;

}

.lic-mini.lic-valid     { color: var(--success); border-color: var(--success-dim); background: var(--success-bg); }

.lic-mini.lic-pending   { color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.lic-mini.lic-suspended { color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.lic-mini.lic-revoked   { color: var(--danger);  border-color: var(--danger);      background: var(--danger-bg); }

.lic-mini.lic-permanent { color: #fff;            border-color: var(--danger);      background: var(--danger); }

.lic-mini.lic-none      { color: var(--text-muted); }



/* category pill */

.cat-pill {

    min-width: 22px;

    text-align: center;

    padding: 2px 8px;

    font-family: var(--font-mono);

    font-weight: 600;

}

.cat-pill.cat-a, .cat-pill.cat-b { color: var(--info); border-color: var(--info); background: var(--info-bg); }

.cat-pill.cat-c { color: var(--accent); border-color: var(--accent-dim); background: var(--accent-bg); }

.cat-pill.cat-h { color: var(--danger); border-color: var(--danger); background: var(--danger-bg); }



/* flag pill */

.flag-pill { padding: 2px 8px; font-weight: 600; }

.flag-pill.big { padding: 4px 10px; font-size: 12px; }

.flag-pill.small { padding: 1px 6px; font-size: 10px; }



.flag-pill.flag-violent           { color: var(--danger); border-color: var(--danger); background: var(--danger-bg); }

.flag-pill.flag-armed-dangerous   { color: var(--danger); border-color: var(--danger); background: var(--danger-bg); }

.flag-pill.flag-bolo              { color: var(--accent); border-color: var(--accent-dim); background: var(--accent-bg); }

.flag-pill.flag-mental-health     { color: var(--info);   border-color: var(--info);   background: var(--info-bg); }

.flag-pill.flag-gang-affiliated   { color: var(--text-secondary); border-color: var(--border-strong); }

.flag-pill.flag-wanted            { color: var(--danger); border-color: var(--danger); background: var(--danger-bg); }



/* ==========================================================================

   FLAG WARNING BANNER

   ========================================================================== */

.flag-banner {

    background: var(--danger-bg);

    border: 1px solid var(--danger);

    color: var(--danger);

    padding: var(--space-4) var(--space-5);

    margin-bottom: var(--space-5);

    text-align: center;

    font-weight: 600;

    font-size: 14px;

}

.flag-banner-flags {

    display: flex; flex-wrap: wrap; justify-content: center;

    gap: var(--space-2); margin-top: var(--space-3);

}

.flag-banner-list {

    margin-top: var(--space-4);

    text-align: left;

    background: rgba(0, 0, 0, 0.35);

    padding: var(--space-3) var(--space-4);

    border: 1px solid var(--danger);

    font-weight: 400;

    font-size: 13px;

    color: var(--text-primary);

}

.flag-banner-item {

    padding: 6px 0;

    border-bottom: 1px solid var(--border-faint);

    display: flex;

    align-items: center;

    gap: var(--space-2);

    flex-wrap: wrap;

}

.flag-banner-item:last-child { border-bottom: none; }

.flag-banner-item button { margin-left: auto; }



.auto-tag {

    display: inline-block;

    background: var(--danger);

    color: #fff;

    font-size: 9px;

    font-weight: 700;

    letter-spacing: 0.06em;

    padding: 1px 5px;

    text-transform: uppercase;

}



/* ==========================================================================

   PLATE / SERIAL / CODE — mono, subtle highlight

   ========================================================================== */

.plate, .code {

    display: inline-block;

    font-family: var(--font-mono);

    font-weight: 600;

    letter-spacing: 0.04em;

}

.plate {

    background: var(--bg-tertiary);

    color: var(--text-primary);

    padding: 2px 8px;

    border: 1px solid var(--border-strong);

    font-size: 12px;

}

.code {

    color: var(--accent);

    background: var(--accent-bg);

    padding: 1px 6px;

    font-size: 12px;

    border: 1px solid var(--accent-dim);

}



/* ==========================================================================

   LICENCE TILES

   ========================================================================== */

.licence-grid {

    display: grid;

    grid-template-columns: repeat(3, 1fr);

    gap: var(--space-3);

    padding: 0 var(--space-5) var(--space-5);

}

@media (max-width: 720px) { .licence-grid { grid-template-columns: 1fr; } }



.licence-tile {

    background: var(--bg-tertiary);

    border: 1px solid var(--border-default);

    padding: var(--space-4);

    display: flex;

    flex-direction: column;

    gap: var(--space-2);

}

.licence-tile.tile-barred {

    border-color: var(--danger);

    background: linear-gradient(180deg, var(--danger-bg) 0%, var(--bg-tertiary) 100%);

}

.licence-label {

    font-size: 11px;

    color: var(--text-muted);

    text-transform: uppercase;

    letter-spacing: 0.06em;

    font-weight: 600;

}

.licence-status {

    display: inline-block;

    padding: 4px 10px;

    font-size: 13px;

    font-weight: 600;

    border: 1px solid;

    align-self: flex-start;

}

.licence-status.status-valid     { color: var(--success); border-color: var(--success-dim); background: var(--success-bg); }

.licence-status.status-pending   { color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.licence-status.status-suspended { color: var(--accent);  border-color: var(--accent-dim);  background: var(--accent-bg); }

.licence-status.status-revoked   { color: var(--danger);  border-color: var(--danger);      background: var(--danger-bg); }

.licence-status.status-none      { color: var(--text-muted); border-color: var(--border-default); }



.licence-meta {

    font-size: 12px;

    color: var(--text-secondary);

    line-height: 1.4;

}

.licence-meta.danger {

    color: var(--danger);

    font-weight: 500;

}



.lic-control {

    background: var(--bg-primary);

    border: 1px solid var(--border-default);

    padding: 6px 8px;

    color: var(--text-primary);

    font-size: 12px;

    width: 100%;

}



.vicroads-block {

    background: var(--bg-tertiary);

    border: 1px solid var(--border-default);

    margin: 0 var(--space-5) var(--space-4);

}

.vicroads-name {

    padding: var(--space-3) var(--space-5);

    font-size: 14px;

    font-weight: 600;

    color: var(--text-primary);

    border-bottom: 1px solid var(--border-default);

}



/* ==========================================================================

   SEARCH ROW

   ========================================================================== */

.search-row {

    display: flex;

    gap: var(--space-2);

    margin-bottom: var(--space-4);

}

.search-row input { flex: 1; }



/* ==========================================================================

   PROFILE

   ========================================================================== */

.profile-section {

    border-top: 1px solid var(--border-default);

    padding-top: var(--space-5);

    margin-top: var(--space-5);

}

.profile-section h4 {

    margin: 0 0 var(--space-3);

}



.profile-grid {

    display: grid;

    grid-template-columns: 1fr 1fr;

    gap: 6px var(--space-5);

    font-size: 13px;

    margin-bottom: var(--space-3);

}

.profile-grid .muted { color: var(--text-muted); font-weight: 500; font-size: 12px; }



.record-item {

    background: var(--bg-tertiary);

    border-left: 2px solid var(--accent-dim);

    padding: var(--space-3) var(--space-4);

    margin-bottom: var(--space-3);

}

.record-head { font-size: 13px; margin-bottom: var(--space-1); }

.charge-line {

    font-size: 12px;

    padding: 2px 0;

    color: var(--text-secondary);

}

.narrative {

    margin-top: var(--space-2);

    padding: var(--space-2) var(--space-3);

    background: var(--bg-primary);

    border-left: 2px solid var(--border-strong);

    font-size: 12px;

    color: var(--text-secondary);

    font-style: italic;

}



/* ==========================================================================

   RESPONDERS LIST

   ========================================================================== */

.responders {

    display: flex;

    flex-wrap: wrap;

    gap: var(--space-1);

    margin-top: var(--space-1);

}

.responder-chip {

    display: inline-flex;

    align-items: center;

    gap: 5px;

    padding: 2px 8px;

    font-size: 11px;

    font-weight: 500;

    border: 1px solid;

    background: var(--bg-tertiary);

    font-family: var(--font-mono);

}

.responder-chip.responding { color: var(--accent); border-color: var(--accent-dim); background: var(--accent-bg); }

.responder-chip.on-scene   { color: var(--success); border-color: var(--success-dim); background: var(--success-bg); }



/* ==========================================================================

   AUTOSUGGEST

   ========================================================================== */

.autosuggest-wrap { position: relative; }

.autosuggest-list {

    position: absolute;

    top: 100%; left: 0; right: 0;

    background: var(--bg-elevated);

    border: 1px solid var(--border-strong);

    border-top: none;

    z-index: 50;

    max-height: 280px;

    overflow-y: auto;

    display: none;

}

.autosuggest-list.open { display: block; }

.autosuggest-item {

    padding: 8px var(--space-3);

    border-bottom: 1px solid var(--border-faint);

    cursor: pointer;

    display: flex;

    align-items: center;

    gap: var(--space-3);

    font-size: 13px;

}

.autosuggest-item:hover, .autosuggest-item.active { background: var(--bg-tertiary); }



/* ==========================================================================

   CHARGES LIST + TOTALS BAR

   ========================================================================== */

.charges-list { margin: var(--space-3) 0; }

.charge-row {

    display: flex;

    justify-content: space-between;

    align-items: flex-start;

    gap: var(--space-3);

    padding: var(--space-3) var(--space-4);

    background: var(--bg-tertiary);

    border-left: 2px solid var(--accent-dim);

    margin-bottom: 6px;

    flex-wrap: wrap;

}

.charge-meta { flex: 1 1 60%; min-width: 240px; font-size: 12px; }

.charge-inputs {

    display: flex;

    align-items: center;

    gap: 6px;

    flex-wrap: wrap;

}

.charge-inputs label {

    font-size: 10px;

    color: var(--text-muted);

    margin: 0;

}

.charge-inputs input[type="number"] {

    width: 90px;

    padding: 4px 8px;

    font-size: 12px;

}



.totals-bar {

    display: flex;

    gap: var(--space-6);

    padding: var(--space-3) var(--space-4);

    background: var(--bg-tertiary);

    border: 1px solid var(--border-default);

    margin-top: var(--space-3);

    font-size: 13px;

    flex-wrap: wrap;

}

.totals-bar strong { color: var(--text-secondary); font-weight: 500; margin-right: 4px; }



/* ==========================================================================

   TOASTS

   ========================================================================== */

.toast-stack {

    position: fixed;

    top: 72px;

    right: var(--space-4);

    display: flex;

    flex-direction: column;

    gap: var(--space-2);

    z-index: 9999;

}

.toast {

    background: var(--bg-elevated);

    border: 1px solid var(--border-strong);

    padding: var(--space-3) var(--space-4);

    font-size: 13px;

    min-width: 260px;

    max-width: 380px;

    border-left: 3px solid var(--text-secondary);

}

.toast.success { border-left-color: var(--success); }

.toast.error   { border-left-color: var(--danger); color: var(--danger); }



/* ==========================================================================

   MISC HELPERS

   ========================================================================== */

.muted, .text-muted { color: var(--text-muted); }

.text-secondary    { color: var(--text-secondary); }

.text-success      { color: var(--success); }

.text-warning      { color: var(--accent); }

.text-danger       { color: var(--danger); }

.small             { font-size: 12px; }

.empty {

    padding: var(--space-8) var(--space-4);

    text-align: center;

    color: var(--text-muted);

    font-size: 13px;

}

.empty.small { padding: var(--space-4); }

.hidden { display: none !important; }



/* ==========================================================================

   SCROLLBAR

   ========================================================================== */

::-webkit-scrollbar { width: 10px; height: 10px; }

::-webkit-scrollbar-track { background: var(--bg-primary); }

::-webkit-scrollbar-thumb { background: var(--border-strong); }

::-webkit-scrollbar-thumb:hover { background: var(--text-muted); }



::selection { background: var(--accent); color: #1a1207; }



/* ==========================================================================

   HERO (landing page logo block)

   ========================================================================== */

.hero {

    display: flex;

    align-items: center;

    gap: var(--space-6);

    padding: var(--space-6) var(--space-5);

    margin-bottom: var(--space-5);

    background: var(--bg-secondary);

    border: 1px solid var(--border-default);

}

.hero-logo {

    width: 120px;

    height: 120px;

    object-fit: contain;

    flex-shrink: 0;

}

.hero-text {

    display: flex;

    flex-direction: column;

    gap: var(--space-1);

}

.hero-title {

    font-size: 28px;

    font-weight: 700;

    color: var(--text-primary);

    letter-spacing: -0.02em;

    line-height: 1.1;

}

.hero-tagline {

    font-size: 15px;

    color: var(--text-secondary);

    font-style: italic;

}



@media (max-width: 600px) {

    .hero { flex-direction: column; text-align: center; }

    .hero-logo { width: 96px; height: 96px; }

    .hero-title { font-size: 22px; }

}

