/**
 * Lucena Tactical PTT - Sovereign Command & Control (C2) Tactical Theme
 * Compliance Standard: tactical-comms-c2-uiux-architect
 * Ergonomics: MIL-STD-1472H / ISO 11064 adapted for C2 Touch/Desktop Terminals
 *
 * Directives:
 * 1. 100% Sovereign Offline / Air-Gapped (Zero external network dependencies)
 * 2. True Tactical OLED Dark Palette (#12161A base, #1A2026 surface, #222B32 card)
 * 3. Squared Tactical Geometry (border-radius: 0px !important)
 * 4. Zero Transition Latency (Instant visual state snapping under operational stress)
 * 5. Fitts' Law Glove-Friendly Hit Targets (Min 44px-48px touch targets)
 * 6. High-Contrast Deterministic Semantic Status Cues (Green, Amber, Red, Cyan)
 */

:root {
    /* Tactical OLED Dark Palette */
    --ptt-base-bg: #12161A;
    --ptt-surface-bg: #1A2026;
    --ptt-card-bg: #222B32;
    --ptt-card-header-bg: #161D24;
    --ptt-border: #2D3843;
    --ptt-border-subtle: #242E37;
    --ptt-border-focus: #00B0FF;

    /* High-Legibility Typography */
    --ptt-text-primary: #E1E7EC;
    --ptt-text-secondary: #8E9CA8;
    --ptt-text-muted: #6B7885;

    /* Deterministic Tactical Semantic Indicators */
    --ptt-status-green: #00E676;
    --ptt-status-amber: #FFB300;
    --ptt-status-red: #FF3D00;
    --ptt-status-cyan: #00B0FF;
    --ptt-status-slate: #6C757D;

    /* Bootstrap Overrides */
    --bs-body-bg: var(--ptt-base-bg);
    --bs-body-color: var(--ptt-text-primary);
    --bs-card-bg: var(--ptt-card-bg);
    --bs-card-border-color: var(--ptt-border);
    --bs-border-color: var(--ptt-border);
}

/* ==========================================================================
   1. ZERO-LATENCY TRANSITION OVERRIDE (ELIMINATE RENDERING DELAYS UNDER STRESS)
   ========================================================================== */
*, *::before, *::after {
    transition: none !important;
    animation-duration: 0.001ms !important;
    scroll-behavior: auto !important;
}

/* Retain only operational spinning/blinking indicators */
.fa-spin {
    animation: fa-spin 1s infinite linear !important;
}

@keyframes tactical-pulse-sos {
    0% { box-shadow: 0 0 10px rgba(255, 61, 0, 0.4); }
    100% { box-shadow: 0 0 25px rgba(255, 61, 0, 0.9); }
}

.tactical-pulse-emergency {
    animation: tactical-pulse-sos 0.8s infinite alternate !important;
}

/* ==========================================================================
   2. SQUARED TACTICAL GEOMETRY (BORDER-RADIUS: 0PX STRICT MIL/C2 STANDARD)
   ========================================================================== */
html, body,
.card, .card-header, .card-footer,
.btn, .btn-group, .btn-group > .btn,
.form-control, .form-select, .form-check-input,
.input-group, .input-group-text,
.badge, .alert,
.nav-link, .nav-pills .nav-link,
.dropdown-menu, .dropdown-item,
.modal-content, .modal-header, .modal-footer,
.table,
.pagination, .page-item, .page-link,
.list-group, .list-group-item,
#tacticalMap, .vu-meter-bar, .vu-fill,
.toast, .tooltip, .popover {
    border-radius: 0 !important;
}

/* ==========================================================================
   3. BASE TYPOGRAPHY & LAYOUT FOUNDATIONS
   ========================================================================== */
body {
    background-color: var(--ptt-base-bg);
    color: var(--ptt-text-primary);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    font-size: 0.9rem;
    letter-spacing: -0.01em;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* High-legibility monospaced data cues */
code, kbd, samp, pre, .font-monospace, .tactical-code {
    font-family: SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace !important;
    letter-spacing: 0.04em;
}

/* High contrast navbar */
.navbar {
    background-color: var(--ptt-surface-bg) !important;
    border-bottom: 1px solid var(--ptt-border) !important;
    min-height: 56px;
}

.navbar-brand {
    font-size: 1.05rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* Sidebar navigation */
.sidebar {
    background-color: var(--ptt-surface-bg);
    border-right: 1px solid var(--ptt-border);
    min-height: calc(100vh - 56px);
}

.nav-link {
    color: var(--ptt-text-secondary);
    font-weight: 600;
    font-size: 0.85rem;
    min-height: 48px; /* Fitts' Law touch target */
    padding: 0.75rem 1rem;
    display: flex;
    align-items: center;
    gap: 12px;
    border-left: 3px solid transparent;
}

.nav-link:hover {
    color: #ffffff;
    background-color: #242E37;
    border-left-color: var(--ptt-border);
}

.nav-link.active {
    color: #ffffff;
    background-color: #1E2833;
    border-left-color: var(--ptt-status-cyan);
    font-weight: 700;
}

.nav-link i {
    width: 20px;
    text-align: center;
    font-size: 1rem;
}

/* ==========================================================================
   4. CARDS & PANELS
   ========================================================================== */
.card {
    background-color: var(--ptt-card-bg);
    border: 1px solid var(--ptt-border);
    box-shadow: 0 2px 4px rgba(0, 0, 0, 0.4);
}

.card-header {
    background-color: var(--ptt-card-header-bg);
    border-bottom: 1px solid var(--ptt-border);
    font-weight: 700;
    font-size: 0.85rem;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    padding: 0.75rem 1rem;
}

/* ==========================================================================
   5. FITTS' LAW TOUCH TARGETS & CONTROLS (MIN 44-48PX)
   ========================================================================== */
/* Form inputs and selects */
.form-control, .form-select {
    background-color: #14191F !important;
    border: 1px solid var(--ptt-border) !important;
    color: var(--ptt-text-primary) !important;
    min-height: 44px;
    font-size: 0.9rem;
    padding: 0.5rem 0.85rem;
}

.form-control:focus, .form-select:focus {
    border-color: var(--ptt-status-cyan) !important;
    box-shadow: 0 0 0 1px var(--ptt-status-cyan) !important;
    outline: none;
}

.form-control-sm, .form-select-sm {
    min-height: 40px;
    font-size: 0.85rem;
    padding: 0.4rem 0.65rem;
}

.input-group-text {
    background-color: #1A2129 !important;
    border: 1px solid var(--ptt-border) !important;
    color: var(--ptt-text-secondary) !important;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
}

/* Buttons */
.btn {
    font-weight: 700;
    letter-spacing: 0.04em;
    border-width: 1px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 44px; /* Glove/touch ergonomic hit area */
    padding: 0.6rem 1.1rem;
    font-size: 0.85rem;
    text-transform: uppercase;
}

.btn-sm {
    min-height: 38px;
    padding: 0.4rem 0.8rem;
    font-size: 0.8rem;
}

.btn-lg {
    min-height: 52px;
    padding: 0.75rem 1.5rem;
    font-size: 1rem;
}

/* Button variants with tactical high contrast */
.btn-primary {
    background-color: #0077B6;
    border-color: #0096C7;
    color: #ffffff;
}

.btn-primary:hover, .btn-primary:active {
    background-color: #023E8A;
    border-color: var(--ptt-status-cyan);
    color: #ffffff;
}

.btn-outline-primary {
    color: var(--ptt-status-cyan);
    border-color: var(--ptt-status-cyan);
}

.btn-outline-primary:hover {
    background-color: var(--ptt-status-cyan);
    color: #000000;
}

.btn-danger {
    background-color: var(--ptt-status-red);
    border-color: #D32F2F;
    color: #ffffff;
}

.btn-danger:hover, .btn-danger:active {
    background-color: #B71C1C;
    border-color: #FF5252;
}

.btn-outline-danger {
    color: var(--ptt-status-red);
    border-color: var(--ptt-status-red);
}

.btn-outline-danger:hover {
    background-color: var(--ptt-status-red);
    color: #ffffff;
}

.btn-outline-secondary {
    color: var(--ptt-text-secondary);
    border-color: var(--ptt-border);
    background-color: #1A2128;
}

.btn-outline-secondary:hover {
    color: #ffffff;
    background-color: #2D3843;
    border-color: var(--ptt-text-secondary);
}

/* ==========================================================================
   6. DETERMINISTIC STATUS BADGES & CALLSIGNS
   ========================================================================== */
.badge {
    font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-weight: 700;
    font-size: 0.75rem;
    letter-spacing: 0.05em;
    padding: 0.35rem 0.6rem;
    text-transform: uppercase;
    border: 1px solid transparent;
}

/* Status variants */
.badge-status-idle {
    background-color: rgba(0, 230, 118, 0.15) !important;
    color: var(--ptt-status-green) !important;
    border-color: var(--ptt-status-green) !important;
}

.badge-status-busy {
    background-color: rgba(255, 179, 0, 0.2) !important;
    color: var(--ptt-status-amber) !important;
    border-color: var(--ptt-status-amber) !important;
}

.badge-status-tx {
    background-color: rgba(0, 176, 255, 0.2) !important;
    color: var(--ptt-status-cyan) !important;
    border-color: var(--ptt-status-cyan) !important;
}

.badge-status-sos {
    background-color: rgba(255, 61, 0, 0.25) !important;
    color: var(--ptt-status-red) !important;
    border-color: var(--ptt-status-red) !important;
}

/* Priority Hierarchy Badges */
.badge-priority-5 { background-color: var(--ptt-status-red) !important; color: #ffffff !important; border-color: #FF5252 !important; font-weight: 800; }
.badge-priority-4 { background-color: #E65100 !important; color: #ffffff !important; border-color: #FF9800 !important; font-weight: 800; }
.badge-priority-3 { background-color: #0077B6 !important; color: #ffffff !important; border-color: var(--ptt-status-cyan) !important; }
.badge-priority-2 { background-color: #1B5E20 !important; color: #ffffff !important; border-color: var(--ptt-status-green) !important; }
.badge-priority-1 { background-color: #37474F !important; color: #CFD8DC !important; border-color: #546E7A !important; }

.tactical-node-badge {
    font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 0.72rem;
    letter-spacing: 0.06em;
    font-weight: 700;
}

/* ==========================================================================
   7. TACTICAL DISPATCH & PTT CONTROLLER STYLING
   ========================================================================== */
.tactical-ptt-panel {
    background-color: #181F26;
    border: 2px solid var(--ptt-border);
    padding: 1.5rem;
}

/* Big Squared Tactical PTT Trigger */
.ptt-button-tactical {
    width: 100%;
    max-width: 280px;
    height: 140px;
    border: 3px solid var(--ptt-border);
    background: #1E2833;
    color: var(--ptt-text-primary);
    font-family: SFMono-Regular, Menlo, Monaco, Consolas, monospace;
    font-size: 1.15rem;
    font-weight: 800;
    letter-spacing: 0.08em;
    cursor: pointer;
    outline: none;
    user-select: none;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: 10px;
    box-shadow: inset 0 0 15px rgba(0, 0, 0, 0.6);
}

.ptt-button-tactical:hover {
    border-color: var(--ptt-status-cyan);
    color: #ffffff;
    background: #24303E;
}

.ptt-button-tactical.transmitting {
    background: #004D40 !important;
    border-color: var(--ptt-status-green) !important;
    color: #ffffff !important;
    box-shadow: 0 0 20px rgba(0, 230, 118, 0.4), inset 0 0 15px rgba(0, 230, 118, 0.3) !important;
}

.ptt-button-tactical.busy {
    background: #4E342E !important;
    border-color: var(--ptt-status-amber) !important;
    color: #ffffff !important;
    box-shadow: 0 0 15px rgba(255, 179, 0, 0.3) !important;
}

.ptt-button-tactical.preempted {
    background: #3E1010 !important;
    border-color: var(--ptt-status-red) !important;
    color: #ffffff !important;
}

/* Squelch Audio VU Meter */
.vu-meter-bar {
    height: 14px;
    background-color: #10151A;
    border: 1px solid var(--ptt-border);
    overflow: hidden;
    position: relative;
}

.vu-fill {
    height: 100%;
    width: 0%;
    background: linear-gradient(90deg, #00E676 0%, #FFB300 75%, #FF3D00 100%);
}

/* Channel selection list items */
.channel-item {
    background-color: #181F26;
    border: 1px solid var(--ptt-border);
    border-left: 4px solid transparent;
    cursor: pointer;
    padding: 0.75rem 1rem;
    margin-bottom: 4px;
    min-height: 56px;
    display: flex;
    flex-direction: column;
    justify-content: center;
}

.channel-item:hover {
    background-color: #202A34;
    border-color: #384654;
}

.channel-item.active {
    background-color: #1D2A38;
    border-color: var(--ptt-status-cyan);
    border-left: 4px solid var(--ptt-status-cyan);
}

/* ==========================================================================
   8. TACTICAL TABLES & AUDIT FEEDS
   ========================================================================== */
.table {
    --bs-table-bg: transparent;
    --bs-table-color: var(--ptt-text-primary);
    --bs-table-border-color: var(--ptt-border);
    border-collapse: collapse;
}

.table th {
    background-color: var(--ptt-surface-bg);
    color: var(--ptt-text-secondary);
    font-size: 0.75rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.06em;
    border-bottom: 2px solid var(--ptt-border);
    padding: 0.75rem 0.85rem;
}

.table td {
    padding: 0.75rem 0.85rem;
    vertical-align: middle;
    border-bottom: 1px solid var(--ptt-border-subtle);
}

.table-hover tbody tr:hover {
    background-color: #1A232C !important;
}

/* Pagination */
.pagination .page-link {
    background-color: var(--ptt-surface-bg);
    border-color: var(--ptt-border);
    color: var(--ptt-text-primary);
    min-width: 44px;
    min-height: 44px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
}

.pagination .page-item.active .page-link {
    background-color: var(--ptt-status-cyan);
    border-color: var(--ptt-status-cyan);
    color: #000000;
}
