/*
==================================================
|                 INDEX.CSS                      |
==================================================
|   TABLE OF CONTENTS
|-------------------------------------------------
| 1.  IMPORTS
| 2.  THEME VARIABLES
| 3.  GENERAL TYPOGRAPHY
| 4.  LAYOUT
|       - Header
|       - Main Container
| 5.  COMPONENTS
|       - Cards
|       - Lists
|       - Indicators Stats
|       - Camera, Map Schema
|       - QR Code
|       - Tables Grids (Bootstrap, Grid.js)
|       - Forms Buttons
| 6.  RESPONSIVE (MEDIA QUERIES)
==================================================
*/

/* Import Fonts */
@font-face {
    font-family: 'PT Mono';
    src: url('../webfonts/PTMono-Regular.woff2') format('woff2'),
        url('../webfonts/PTMono-Regular.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Roboto Mono';
    src: url('../webfonts/RobotoMono-Regular.woff2') format('woff2'),
        url('../webfonts/RobotoMono-Regular.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

@font-face {
    font-family: 'Roboto Condensed';
    src: url('../webfonts/RobotoCondensed-Regular.woff2') format('woff2'),
        url('../webfonts/RobotoCondensed-Regular.woff') format('woff');
    font-weight: normal;
    font-style: normal;
    font-display: swap;
}

/* --- Theme Variables --- */
:root {
    --background-gradient-start: #0A1A2F;
    --background-gradient-end: #000000;
    --text-color: #FFFFFF;
    --accent1-red: #9F2D20;
    --accent1-gray: #A8ADB4;
    --accent2-green: #67C23A;
    --accent3-red: #EA1D24;
    --error-color: #FF3B30;
    --interactive-color: #00FFFF;
    --neutral-status-color: #888888;
    --font-header: 'Roboto Condensed', sans-serif;
    --font-body: 'Roboto Mono', monospace;
}

/* --- General Styles --- */
html, body {
    height: 100vh;
    overflow: hidden;
    font-family: var(--font-body);
    font-size: 16px;
    color: var(--text-color);
    background-color: var(--background-gradient-end);
    background-image: radial-gradient(circle at 25% 25%, var(--background-gradient-start) 0%, transparent 70%),
                      radial-gradient(circle at 75% 75%, var(--background-gradient-start) 0%, transparent 70%);
}

.camera-feed > iframe {
    flex-grow: 1;
    border: none;
    width: 100%;
}

body.bg-light {
    background-color: var(--background-gradient-end);
    background-image: radial-gradient(circle at 25% 25%, var(--background-gradient-start) 0%, transparent 70%),
                      radial-gradient(circle at 75% 75%, var(--background-gradient-start) 0%, transparent 70%);
}
.page-scrollable {
    overflow-y: auto;
}

h1, h2, h3, h4, h5, h6 {
    font-family: var(--font-header);
    color: var(--text-color);
    font-weight: 700;
    text-transform: uppercase;
}

h1 { font-size: 32px; }
h2 { font-size: 28px; }
h5 { font-size: 20px; }


a {
    color: var(--interactive-color);
    text-decoration: none;
}
a:hover {
    color: var(--text-color);
    text-decoration: underline;
}

h1 a, h2 a, h3 a, h4 a, h5 a, h6 a {
    color: inherit;
}

.main-container {
    height: 100vh;
    padding: 1rem;
}

.main-row {
    height: 100%;
}

/* --- Header Styles --- */
.app-header {
    background: linear-gradient(to right, var(--background-gradient-start), var(--background-gradient-end));
    border-bottom: 1px solid var(--accent1-gray);
    padding: 0.5rem 1rem;
    display: flex;
    justify-content: flex-start;
    align-items: center;
    color: var(--text-color);
    font-family: 'PT Mono', monospace;
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    z-index: 1000;
    height: 100px;
}

.logos-container {
    display: flex;
    align-items: center;
    gap: 2rem;
    height: inherit;
}

.logo {
    height: 60%;
}

body > .container-fluid, body > .container {
    padding-top: 110px;
}

.app-header .header-title {
    text-align: center;
    position: absolute;
    left: 50%;
    transform: translateX(-50%);
}

.app-header .header-title h1 {
    margin: 0;
    font-size: 1.8rem;
    line-height: 1.2;
    color: var(--text-color);
    font-family: inherit;
    white-space: nowrap;
}

.app-header .header-title p {
    margin: 0;
    font-size: 1.3rem;
    line-height: 1.2;
    color: var(--accent1-gray);
    white-space: nowrap;
}

/* ==================================================
   5. COMPONENTS
   ================================================== */

/* --- Cards --- */
.card {
    background-color: transparent;
    border: 1px solid var(--accent1-gray);
    color: var(--text-color);
    border-radius: .25rem;
}

.main-row .card {
    height: 100%;
}

.card-header, .card-footer {
    background-color: transparent;
    border-bottom: 1px solid var(--accent1-gray);
}
.card-header h5{
    color: var(--text-color);
}

.card-title {
    color: var(--text-color);
    font-family: var(--font-header);
}

.card .card-title a {
    color: inherit;
}

.card a {
    color: var(--interactive-color);
}


.card-body {
    color: var(--text-color);
}
.card-body-scrollable {
    overflow-y: auto;
    overflow-x: hidden;
}
.infoblock-container .card {
    border: none;
}

.infoblock-container .card-body {
    padding: 10px;
}
/* --- Lists --- */
.list-group-item {
    background-color: transparent;
    padding: 0;
    color: var(--text-color);
}

/*
 * Override Bootstrap's .list-group-flush styles to ensure
 * our custom .security-goal-item boxes have their own,
 * self-contained borders.
 */
.list-group-flush > .list-group-item.security-goal-item {
    border-width: 1px;
}

.list-group-flush {
    border-radius: 0;
}

.track-image-placeholder {
    flex-grow: 1;
    background-color: rgba(10, 26, 47, 0.5);
    display: flex;
    align-items: center;
    justify-content: center;
    text-align: center;
    min-height: 200px;
    border-radius: .25rem;
    border: 1px dashed var(--accent1-gray);
}

/* --- Camera & Video --- */
.camera-feed h6 {
    text-align: center;
    color: var(--text-color);
}

.virtual-camera-container {
    background-color: transparent;
    width: 100%;
    flex-grow: 1;
    min-height: 150px;
    outline: 1px solid #00FFFF;
}

.iframe-camera {
    outline: 1px solid #00FFFF;
}

/* --- Indicators & Stats --- */

.security-goal-item {
    display: flex;
    align-items: center;
    padding: 0.5rem;
    border-radius: 0;
    margin-bottom: 0.5rem;
    border-width: 2px !important;
    border-style: solid;
    gap: 0.3rem;
}

.security-goal-marker {
    width: 32px;
    height: 32px;
    flex-shrink: 0;
}

.security-goal-id {
    font-weight: bold;
    font-family: var(--font-header);
    margin-right: 0.5rem;
}

.security-goal-text {
    font-size: 0.9em;
}

.goal-success {
    border-color: var(--accent2-green);
    background-color: rgba(103, 194, 58, 0.1);
    color: var(--accent2-green);
}

.goal-fail {
    border-color: var(--error-color);
    background-color: rgba(255, 59, 48, 0.1);
    color: var(--error-color);
}

.goal-wait {
    border-color: var(--accent1-gray);
    background-color: rgba(168, 173, 184, 0.1);
    color: var(--accent1-gray);
}

.game-stats {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-family: var(--font-body);
    font-size: 1.25em;
    font-weight: bold;
    gap: 1rem;
}

.game-stats strong {
    font-family: 'Roboto Mono', monospace;
    color: var(--interactive-color);
}

.time-box {
    background-color: rgba(103, 194, 58, 0.2);
    padding: 0.8rem 1.5rem;
    border: 1px solid var(--accent2-green);
}

.time-box strong {
    color: var(--accent2-green);
    font-size: 1.7em;
}

.team-box {
    border: 2px dashed var(--accent3-red);
    padding: 0.5rem 1rem;
    background-color: rgba(234, 29, 36, 0.15);
    text-align: right;
}

.team-box .team-name strong {
    font-family: var(--font-header);
    color: var(--text-color);
    text-transform: uppercase;
}

.team-details {
    font-size: 0.8em;
    color: var(--accent1-gray);
    margin-top: 0.25rem;
}

/* --- Tables --- */
.table {
    --bs-table-color: var(--text-color);
    --bs-table-bg: transparent;
    --bs-table-border-color: var(--accent1-gray);
    --bs-table-striped-color: var(--text-color);
    --bs-table-striped-bg: rgba(0, 0, 0, 0.2);
    --bs-table-hover-color: var(--text-color);
    --bs-table-hover-bg: rgba(0, 0, 0, 0.4);
    color: var(--text-color);
}

.table-sm th, .table-sm td {
    padding: .3rem;
}

.table th {
    color: var(--text-color);
    text-transform: uppercase;
    border-bottom-width: 2px;
}

/* --- Forms --- */
.form-label {
    color: var(--text-color);
    font-family: var(--font-header);
}

.form-control, .form-select {
    background-color: var(--background-gradient-start);
    border: 1px solid var(--accent1-gray);
    color: var(--text-color);
}

.form-control:focus, .form-select:focus {
    background-color: #000;
    color: var(--text-color);
    border-color: var(--interactive-color);
    box-shadow: 0 0 0 .25rem rgba(0, 255, 255, 0.25);
}

.btn-primary {
    background-color: var(--accent2-green);
    border-color: var(--accent2-green);
    color: #000;
}
.btn-primary:hover {
    background-color: #85d65b;
    border-color: #85d65b;
}

.btn-secondary {
    background-color: var(--accent1-gray);
    border-color: var(--accent1-gray);
    color: #000;
}

/* --- QR Code --- */
.qr-code-container {
    width: 96px;
    height: 96px;
    flex-shrink: 0;
    background: url("data:image/svg+xml,%3Csvg width='96' height='96' viewBox='0 0 96 96' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M9 1 H 95 V 87 L 87 95 H 1 V 9 Z' stroke='%2367C23A' stroke-width='2' fill='%2320472F'/%3E%3C/svg%3E") center center/contain no-repeat;
    padding: 12px;
    display: flex;
    justify-content: center;
    align-items: center;
    box-sizing: border-box;
}

.qr-code-container img {
    max-width: 100%;
    max-height: 100%;
}
.table-wrapper {
    max-height: 50vh;
    overflow-y: auto;
}

/* --- Status Indicators for Tables --- */
.status-cell {
    padding: .3rem .5rem;
    border-radius: 4px;
    text-align: center;
    color: var(--text-color);
    font-weight: bold;
}

.status-waiting {
    background-color: #E6A23C;
    color: #000;
}

.status-in-flight {
    background-color: var(--accent2-green);
    color: #000;
}

.status-completed {
    background-color: var(--interactive-color);
    color: #000;
}

.status-box {
    padding: 0.1rem 0.3rem;
    text-align: center;
    font-weight: normal;
    border: 1px solid;
    display: inline-block;
    font-size: 0.8em;
    line-height: 1.2;
}

.status-box-waiting {
    color: #E6A23C !important;
    border-color: #E6A23C !important;
    background-color: rgba(230, 162, 60, 0.2) !important;
}

.status-box-in-flight {
    color: #00FFFF !important;
    border-color: #00FFFF !important;
    background-color: rgba(0, 255, 255, 0.2) !important;
}

.status-box-completed {
    color: #67C23A !important;
    border-color: #67C23A !important;
    background-color: rgba(103, 194, 58, 0.2) !important;
}

/* --- Openlayers override --- */

.ol-zoom {
    display: none;
}

.ol-rotate-reset {
    display: none !important;
}

/* --- Grid.js Table Styles --- */
.gridjs-container {
    color: var(--text-color);
    background-color: transparent;
    border: 1px solid var(--accent1-gray);
    border-radius: .25rem;
}

#flight-requests-grid .gridjs-container,
#leaderboard-grid .gridjs-container,
#announcements-grid .gridjs-container,
#announcements-main-grid .gridjs-container,
#teams-grid .gridjs-container {
    border: none;
}

.gridjs-table {
    width: 100%;
    table-layout: fixed;
}

.gridjs-wrapper {
    overflow-x: hidden;
    -webkit-overflow-scrolling: touch;
    border-radius: 0px !important;
}

.gridjs-search-input {
    background-color: var(--background-gradient-start) !important;
    border: 1px solid var(--accent1-gray);
    color: var(--text-color);
}

.gridjs-pagination .gridjs-summary,
.gridjs-pagination .gridjs-pages {
    color: var(--text-color);
}

.gridjs-pagination .gridjs-pages button {
    background-color: var(--accent1-gray) !important;
    border-color: var(--accent1-gray);
    color: #000;
}

.gridjs-pagination .gridjs-pages button:hover {
    background-color: var(--interactive-color) !important;
    border-color: var(--interactive-color);
}

.gridjs-pagination .gridjs-pages button:disabled {
    background-color: #333;
    color: #777;
}

.gridjs-th, .gridjs-td {
    background-color: transparent !important;
    border-color: var(--accent1-gray) !important;
    padding: 8px !important;
    word-wrap: break-word;
    overflow-wrap: break-word;
}

.gridjs-th {
    background-color: transparent !important;
    color: var(--text-color) !important;
    text-transform: uppercase;
}

.gridjs-tbody, td.gridjs-td {
  background-color: transparent;
}

/* Add ellipsis for long team names */
td.gridjs-td[data-column-id='team_name'],
td.gridjs-td[data-column-id='team'] {
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}

/* --- Custom Main Page Grids --- */
#flight-queue-grid .gridjs-td,
#leaderboard-main-grid .gridjs-td,
#flight-queue-grid .gridjs-th,
#leaderboard-main-grid .gridjs-th {
    background: transparent !important;
}
#flight-queue-grid .gridjs-container,
#leaderboard-main-grid .gridjs-container {
    border: 2px solid transparent !important;
    border-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%2300FFFF' stroke-width='2' stroke-dasharray='22, 4' stroke-dashoffset='0' stroke-linecap='butt'/%3e%3c/svg%3e") 1 stretch !important;
    padding: 0 !important;
    border-radius: 0 !important;
}

#flight-queue-grid .gridjs-table,
#leaderboard-main-grid .gridjs-table {
    border-collapse: collapse !important;
}

#flight-queue-grid .gridjs-th,
#flight-queue-grid .gridjs-td,
#leaderboard-main-grid .gridjs-th,
#leaderboard-main-grid .gridjs-td {
    border: none !important;
}

#flight-queue-grid .gridjs-tr:nth-child(odd) .gridjs-td,
#leaderboard-main-grid .gridjs-tr:nth-child(odd) .gridjs-td {
    background-color: #083344 !important;
}

#flight-queue-grid .gridjs-tr:nth-child(even) .gridjs-td,
#leaderboard-main-grid .gridjs-tr:nth-child(even) .gridjs-td {
    background-color: #083243 !important;
}

#flight-queue-grid .gridjs-head .gridjs-tr .gridjs-th,
#leaderboard-main-grid .gridjs-head .gridjs-tr .gridjs-th {
    background-color: #083243 !important;
}

#flight-queue-grid .gridjs-table tr:hover td,
#leaderboard-main-grid .gridjs-table tr:hover td {
    background-color: rgba(0, 0, 0, 0.6) !important;
}

.gridjs-footer {
    background-color: transparent !important;
}
#announcements-main-grid thead {
    display: none;
}

#announcements-main-grid .gridjs-tbody,
#announcements-main-grid td.gridjs-td {
    background-color: transparent !important;
    border: none !important;
}

.table-bordered {
    border: 1px solid var(--accent1-gray);
}

/* --- Map & Schema --- */
#top-left-container {
    gap: 1rem;
}

#top-left-container > #left-column {
    flex: 0 0 40%;
}

#top-left-container > #abstract-schema {
    flex: 1 1 60%;
    overflow: auto;
}

#top-left-container .mission-description {
    width: 150%;
    position: relative;
    z-index: 1;
}

#abstract-schema svg {
    width: 100%;
    height: 100%;
}

#map {
    height: 70%;
    margin-top: auto;
    border: 1px solid #00FFFF;
    border-radius: .25rem;
}

/* --- Custom Modal Styles --- */
.modal-content {
    background-color: var(--background-gradient-start);
    border: 1px solid var(--accent1-gray);
    color: var(--text-color);
}
.modal-header {
    border-bottom: 1px solid var(--accent1-gray);
}
.modal-header .btn-close {
    filter: invert(1) grayscale(100%) brightness(200%);
}
.modal-title {
    color: var(--text-color);
}
.modal-body {
    color: var(--text-color);
}
.modal-footer {
    border-top: 1px solid var(--accent1-gray);
}

/* --- Toastr Overrides --- */
#toast-container > .toast-success {
    background-color: var(--accent2-green) !important;
}

#toast-container > .toast-warning {
    background-color: rgb(122, 122, 0) !important;
}

/* ==================================================
   7. RESPONSIVE (MEDIA QUERIES)
   ================================================== */

@media (max-width: 768px) {
    /* General layout adjustments for smaller screens */
    html, body {
        height: auto;
        overflow-y: auto;
        font-size: 14px;
    }

    .main-container, .main-row {
        height: auto;
    }

    .main-row > .col-md-6 {
        height: auto !important;
        margin-bottom: 1rem;
    }

    .main-row > .col-md-6:last-child {
        margin-bottom: 0;
    }

    /* Typography adjustments */
    h1 { font-size: 24px; }
    h5 { font-size: 18px; }
    .card-title { font-size: 1.1rem; }

    /* Header adjustments */
    .app-header {
        height: 70px;
    }

    .logos-container {
        display: none;
    }

    .app-header .header-title {
        position: relative;
        transform: none;
        left: auto;
        flex-grow: 1;
        text-align: center;
    }
    
    .app-header .header-title h1 {
        font-size: 1.1rem;
    }
    
    .app-header .header-title p {
        font-size: 0.8rem;
    }

    body > .container-fluid, body > .container {
        padding-top: 80px;
    }
    
    /* Component adjustments */
    .qr-code-container { display: none; }
    .game-stats { font-size: 1em; }

    /* Map and Schema adjustments */
    #map {
        display: none;
    }
    #top-left-container {
        flex-direction: column;
    }
    #top-left-container > #left-column {
        order: 1;
        width: 100%;
    }
    #top-left-container > #abstract-schema {
        order: 2;
        width: 100%;
        height: 300px;
    }
    #top-left-container .mission-description {
        width: 100%;
        margin-bottom: 1rem;
    }

    /* Table adjustments */
    .table-sm th, .table-sm td {
        padding: .2rem;
        font-size: 0.7rem;
    }
    .table-sm .col-team {
        max-width: 90px;
        white-space: nowrap;
        overflow: hidden;
        text-overflow: ellipsis;
    }
    .table-sm .col-type { width: 25%; }
    .table-sm .col-status { width: 30%; }
    .table-sm .col-time { width: 20%; }
    .table-sm .col-rank { width: 15%; }
    .table-sm .col-score { width: 20%; }

    /* Custom Main Page Grids for mobile*/
    #flight-queue-grid .gridjs-container,
    #leaderboard-main-grid .gridjs-container {
        border-image: url("data:image/svg+xml,%3csvg width='100%25' height='100%25' xmlns='http://www.w3.org/2000/svg'%3e%3crect width='100%25' height='100%25' fill='none' stroke='%2300FFFF' stroke-width='2' stroke-dasharray='10, 2' stroke-dashoffset='0' stroke-linecap='butt'/%3e%3c/svg%3e") 1 stretch !important;
    }
}