/**
 * Main Styles - Dark Theme
 *
 * Modern design system with:
 * - Dark color palette
 * - Clean, professional interface
 * - Subtle animations and interactions
 * - Optimized for developer experience
 *
 * @version 5.1.0
 * @theme Dark
 */

/* =============================================================================
   FOUC Prevention - Critical Styles
   ============================================================================= */

/* Hide body content until stylesheets are fully loaded */
body:not(.styles-loaded) {
    visibility: hidden !important;
}

/* =============================================================================
   Design Tokens
   ============================================================================= */

:root {
    /* ==========================================================================
       Dark Color System - GitHub Style Neutral
       ========================================================================== */

    /* Primary Backgrounds */
    --color-bg-primary: #0d1117;
    --color-bg-secondary: #161b22;
    --color-bg-tertiary: #21262d;
    --color-bg-elevated: #30363d;

    /* Surface Colors */
    --color-surface-base: #0d1117;
    --color-surface-raised: #161b22;
    --color-surface-overlay: #21262d;
    --color-surface-interactive: #21262d;

    /* Hover States */
    --color-bg-hover: #21262d;
    --color-surface-hover: #30363d;

    /* Borders - Simplified system */
    --color-border-muted: #21262d;
    /* Subtle dividers */
    --color-border-default: #30363d;
    /* Standard borders */
    --color-border-emphasis: #6e7681;
    /* Hover/focus states */
    --color-border-strong: #8b949e;
    /* Active elements */

    /* Text Colors - Refined hierarchy */
    --color-text-primary: #e6edf3;
    --color-text-secondary: #8b949e;
    --color-text-tertiary: #7d8590;
    --color-text-disabled: #484f58;
    --color-text-inverse: #0d1117;
    --color-text-link: #58a6ff;

    /* Brand Colors - GitHub Blue */
    --color-brand-primary: #1f6feb;
    --color-brand-primary-hover: #388bfd;
    --color-brand-primary-active: #1f6feb;
    --color-brand-secondary: #8957e5;
    --color-brand-accent: #ff7b72;

    /* Semantic Colors - Muted/Professional */
    --color-success: #238636;
    --color-success-hover: #2ea043;
    --color-success-light: rgba(46, 160, 67, 0.15);
    --color-success-text: #3fb950;

    --color-warning: #9e6a03;
    --color-warning-hover: #bb8009;
    --color-warning-light: rgba(187, 128, 9, 0.15);
    --color-warning-text: #d29922;

    --color-error: #da3633;
    --color-error-hover: #f85149;
    --color-error-light: rgba(248, 81, 73, 0.15);
    --color-error-text: #f85149;

    --color-info: #1f6feb;
    --color-info-hover: #388bfd;
    --color-info-light: rgba(56, 139, 253, 0.15);
    --color-info-text: #58a6ff;

    /* ==========================================================================
       Typography - Scale
       ========================================================================== */

    /* Font Families */
    --font-family-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", "Noto Sans", Helvetica, Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji";
    --font-family-mono: ui-monospace, SFMono-Regular, "SF Mono", Menlo, Consolas, "Liberation Mono", monospace;

    /* Font Sizes */
    --font-size-xxs: 10px;
    --font-size-xs: 12px;
    --font-size-sm: 14px;
    --font-size-base: 16px;
    --font-size-md: 18px;
    --font-size-lg: 20px;
    --font-size-xl: 24px;
    --font-size-2xl: 32px;
    --font-size-3xl: 40px;
    --font-size-4xl: 48px;
    --font-size-5xl: 64px;

    /* Font Weights */
    --font-weight-normal: 400;
    --font-weight-medium: 500;
    --font-weight-semibold: 600;
    --font-weight-bold: 600;

    /* Line Heights */
    --line-height-none: 1;
    --line-height-tight: 1.25;
    --line-height-normal: 1.5;
    --line-height-relaxed: 1.6;

    /* Letter Spacing */
    --letter-spacing-tight: -0.01em;
    --letter-spacing-normal: 0;
    --letter-spacing-wide: 0.01em;

    /* ==========================================================================
       Spacing - Scale
       ========================================================================== */

    --spacing-1: 4px;
    --spacing-2: 8px;
    --spacing-3: 12px;
    --spacing-4: 16px;
    --spacing-5: 20px;
    --spacing-6: 24px;
    --spacing-8: 32px;
    --spacing-10: 40px;
    --spacing-12: 48px;
    --spacing-16: 64px;
    --spacing-20: 80px;
    --spacing-24: 96px;

    /* ==========================================================================
       Border Radius - Rectangular Geometry (0-4px)
       ========================================================================== */

    --radius-sm: 2px;
    /* Badges, tiny elements */
    --radius-md: 4px;
    /* Buttons, inputs, cards */
    --radius-lg: 4px;
    /* Modals, large containers (kept consistent) */
    --radius-pill: 4px;
    /* Overriding pill shapes to be rectangular */

    /* ==========================================================================
       Shadows - Minimal
       ========================================================================== */

    --shadow-sm: 0 1px 0 rgba(27, 31, 36, 0.04);
    --shadow-md: 0 3px 6px rgba(140, 149, 159, 0.15);
    --shadow-lg: 0 8px 24px rgba(140, 149, 159, 0.2);
    --shadow-focus: 0 0 0 2px rgba(31, 111, 235, 0.3);
    /* Focus states */
    --shadow-modal: 0 8px 24px rgba(0, 0, 0, 0.5);
    /* Modal overlays */
    --shadow-button-active: inset 0 1px 0 rgba(27, 31, 36, 0.1);
    /* Button pressed */

    /* ==========================================================================
       Animation & Timing
       ========================================================================== */

    --duration-fast: 0.15s;
    --duration-default: 0.2s;

    --ease-smooth: cubic-bezier(0.3, 0, 0.5, 1);
    --ease-out: cubic-bezier(0.33, 1, 0.68, 1);

    --transition-default: all var(--duration-fast) var(--ease-smooth);

    /* ==========================================================================
       Icon Sizes
       ========================================================================== */

    --icon-size-xs: 12px;
    --icon-size-sm: 16px;
    --icon-size-base: 20px;
    --icon-size-lg: 24px;
    --icon-size-xl: 32px;

    /* ==========================================================================
       Layout
       ========================================================================== */

    --header-height: 64px;
    --nav-height: 48px;
    --container-max-width: 1280px;

    /* ==========================================================================
       Input Widths
       ========================================================================== */

    --input-width-full: 100%;
    --input-width-medium: 320px;
    --input-width-small: 160px;
    --input-width-tiny: 80px;
}

/* =============================================================================
   Reset & Base Styles
   ============================================================================= */

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

html {
    -webkit-text-size-adjust: 100%;
    scroll-behavior: smooth;
}

body {
    font-family: var(--font-family-sans);
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-regular);
    line-height: var(--line-height-normal);
    color: var(--color-text-primary);
    background-color: var(--color-bg-primary);
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
    text-rendering: optimizeLegibility;
    font-feature-settings: "kern" 1, "liga" 1, "calt" 1;
    overflow-x: hidden;
}

/* Clean background - no decorative patterns */

/* =============================================================================
   Typography
   ============================================================================= */

h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: var(--font-weight-semibold);
    line-height: var(--line-height-tight);
    color: var(--color-text-primary);
    margin-bottom: var(--spacing-4);
}

h1 {
    font-size: 2rem;
    font-weight: var(--font-weight-semibold);
    letter-spacing: -0.02em;
}

h2 {
    font-size: 2rem;
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    letter-spacing: -0.02em;
    margin-bottom: var(--spacing-8);
}

h3 {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-semibold);
    margin-bottom: var(--spacing-5);
}

h4 {
    font-size: var(--font-size-base);
    font-weight: var(--font-weight-medium);
}

p {
    margin-bottom: var(--spacing-4);
    color: var(--color-text-secondary);
    line-height: var(--line-height-relaxed);
    max-width: 70ch;
}

a {
    color: var(--color-text-link);
    text-decoration: none;
    transition: var(--transition-default);
}

a:hover {
    color: var(--color-brand-primary-hover);
    text-decoration: underline;
}

/* =============================================================================
   Layout Components
   ============================================================================= */

#app {
    min-height: 100vh;
    display: flex;
    flex-direction: column;
}

/* Header */
.app-header {
    position: sticky;
    top: 0;
    z-index: 100;
    background-color: var(--color-bg-secondary);
    height: var(--header-height);
    backdrop-filter: blur(10px);
    display: flex;
    align-items: center;
}

.header-content {
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 var(--spacing-6);
    width: 100%;
    height: 100%;
    display: flex;
    align-items: center;
    justify-content: flex-start;
}

.app-title {
    font-size: var(--font-size-xl);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    display: flex;
    align-items: center;
    gap: var(--spacing-1);
    margin: 0;
}

/* Badge Style Logo - Two Teams Concept */
.title-t,
.title-b {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 32px;
    height: 32px;
    border-radius: var(--radius-md);
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-semibold);
    color: white;
    transition: var(--transition-default);
}

/* T - Team 1 (Blue) */
.title-t {
    background: #2f81f7;
}

/* B - Team 2 (Purple) */
.title-b {
    background: #8b5cf6;
}

.app-title-link {
    text-decoration: none;
    color: inherit;
    display: flex;
    align-items: center;
    gap: var(--spacing-2);
    transition: var(--transition-default);
    border-radius: var(--radius-md);
    padding: var(--spacing-2) var(--spacing-3);
    margin: calc(var(--spacing-2) * -1) calc(var(--spacing-3) * -1);
}

.app-title-link:hover {
    text-decoration: none;
    opacity: 0.8;
}

.app-title-link:hover .app-title {
    text-decoration: none;
}

/* App Logo */
.app-logo {
    flex-shrink: 0;
    transition: var(--transition-default);
}

.app-subtitle {
    font-size: var(--font-size-sm);
    color: var(--color-text-tertiary);
    font-weight: var(--font-weight-regular);
}

/* Navigation */
.app-nav {
    background-color: var(--color-bg-secondary);
    border-bottom: 1px solid var(--color-border-default);
    height: var(--nav-height);
    position: sticky;
    top: var(--header-height);
    z-index: 90;
    margin: 0;
}

.app-nav .nav-container {
    max-width: var(--container-max-width);
    margin: 0 auto;
    padding: 0 var(--spacing-6);
    height: 100%;
    display: flex;
    align-items: center;
    gap: var(--spacing-2);
}

.nav-link {
    padding: var(--spacing-2) var(--spacing-4);
    font-size: var(--font-size-sm);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-secondary);
    border-radius: var(--radius-md);
    border: 1px solid transparent;
    transition: var(--transition-default);
    white-space: nowrap;
}

.nav-link:hover {
    color: var(--color-text-primary);
    background-color: var(--color-surface-overlay);
    border-color: var(--color-border-default);
    text-decoration: none;
}

.nav-link.active {
    color: var(--color-text-primary);
    background-color: var(--color-surface-raised);
    border-color: var(--color-border-strong);
    font-weight: var(--font-weight-semibold);
}

.nav-link.disabled {
    color: var(--color-text-muted);
    opacity: 0.5;
    cursor: not-allowed;
}

.nav-link.disabled:hover {
    color: var(--color-text-muted);
    background-color: transparent;
    border-color: transparent;
}

/* Main Content */
.app-main {
    flex: 1;
    max-width: var(--container-max-width);
    width: 100%;
    margin: 0 auto;
    padding: var(--spacing-8) var(--spacing-6);
}

.page {
    animation: fadeInUp var(--duration-slow) var(--ease-out);
}

@keyframes fadeInUp {
    from {
        opacity: 0;
        transform: translateY(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.page-header {
    margin-bottom: var(--spacing-6);
    padding-bottom: var(--spacing-3);
}

.page-header h2 {
    margin-bottom: 0;
    font-size: var(--font-size-2xl);
    font-weight: var(--font-weight-semibold);
    color: var(--color-text-primary);
    letter-spacing: -0.02em;
}

/* Footer */
.app-footer {
    background-color: transparent;
    border-top: 1px solid var(--color-border-default);
    padding: var(--spacing-8) var(--spacing-6);
    margin-top: auto;
}

.app-footer .footer-content {
    max-width: var(--container-max-width);
    margin: 0 auto;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--spacing-2);
}

.app-footer a {
    display: inline-flex;
    align-items: center;
    gap: var(--spacing-2);
    color: var(--color-text-secondary);
    font-size: var(--font-size-sm);
}

.app-footer a:hover {
    color: var(--color-text-link);
    text-decoration: none;
}

.github-icon {
    width: 16px;
    height: 16px;
}

.footer-separator {
    color: var(--color-text-tertiary);
    line-height: 1;
}

/* =============================================================================
   State Components
   ============================================================================= */

.loading {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    padding: var(--spacing-16);
    color: var(--color-text-tertiary);
}

/* Page loading state for lazy-loaded pages */
.page-loading {
    display: flex;
    justify-content: center;
    align-items: center;
    min-height: 200px;
}

.loading-spinner {
    width: 2rem;
    height: 2rem;
    border: 2px solid var(--color-border-subtle);
    border-top-color: var(--color-brand-primary);
    border-right-color: var(--color-brand-primary);
    border-radius: 50%;
    animation: spin 1s linear infinite;
    margin-bottom: var(--spacing-4);
}

.page-loading .loading-spinner {
    margin-bottom: 0;
}

@keyframes spin {
    to {
        transform: rotate(360deg);
    }
}

.empty-state {
    text-align: center;
    padding: var(--spacing-12) var(--spacing-8);
    animation: fadeIn 0.3s ease-out;
}

@keyframes fadeIn {
    from {
        opacity: 0;
        transform: translateY(10px);
    }

    to {
        opacity: 1;
        transform: translateY(0);
    }
}

.empty-icon {
    font-size: 4rem;
    margin-bottom: var(--spacing-4);
    opacity: 0.4;
    color: var(--color-text-secondary);
}

.empty-state__icon {
    margin-bottom: var(--spacing-4);
    opacity: 0.4;
    color: var(--color-text-secondary);
}

.empty-state__title {
    font-size: var(--font-size-lg);
    font-weight: var(--font-weight-medium);
    color: var(--color-text-primary);
    margin-bottom: var(--spacing-2);
}

.empty-state__message {
    font-size: var(--font-size-sm);
    color: var(--color-text-tertiary);
    max-width: 50ch;
    margin: 0 auto;
    line-height: var(--line-height-relaxed);
}

.empty-state__description {
    font-size: var(--font-size-sm);
    color: var(--color-text-tertiary);
    max-width: 50ch;
    margin: 0 auto;
    line-height: var(--line-height-relaxed);
}

.error-state {
    background-color: var(--color-error-light);
    border: 1px solid var(--color-error);
    border-radius: var(--radius-md);
    padding: var(--spacing-4);
    margin: var(--spacing-4) 0;
}

.error-icon {
    color: var(--color-error);
    margin-right: var(--spacing-2);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    vertical-align: middle;
}

.error-icon svg {
    display: block;
}

/* =============================================================================
   Scrollbar
   ============================================================================= */

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

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

::-webkit-scrollbar-thumb {
    background: var(--color-border-default);
    border-radius: 2px;
}

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

/* =============================================================================
   Selection
   ============================================================================= */

::selection {
    background-color: rgba(47, 129, 247, 0.2);
    color: var(--color-text-primary);
}

/* =============================================================================
   Focus States - Minimal and accessible
   ============================================================================= */

*:focus-visible {
    outline: 2px solid var(--color-brand-primary);
    outline-offset: 2px;
}

/* Form controls have border-based focus */
input:focus-visible,
select:focus-visible,
textarea:focus-visible {
    outline: none;
}

/* =============================================================================
   Responsive Design
   ============================================================================= */

@media (max-width: 768px) {
    :root {
        --header-height: 3.5rem;
        --nav-height: 3rem;
    }

    .header-content,
    .app-nav .nav-container,
    .app-main,
    .app-footer .footer-content {
        padding: 0 var(--spacing-4);
    }

    .app-main {
        padding: var(--spacing-6) var(--spacing-4);
    }

    .app-title {
        font-size: var(--font-size-lg);
        padding: 0;
    }

    .app-subtitle {
        display: none;
    }

    .nav-link {
        padding: var(--spacing-2) var(--spacing-3);
        font-size: var(--font-size-sm);
    }

    h2 {
        font-size: var(--font-size-xl);
    }

    /* Touch target improvements */
    .btn:not(.btn-sm) {
        min-height: 48px;
        padding: var(--spacing-4) var(--spacing-5);
    }

    .position-checkbox {
        min-height: 48px;
        padding: calc(var(--spacing-3) + var(--spacing-1) / 2);
    }

    .form-group {
        margin-bottom: var(--spacing-6);
    }
}

@media (max-width: 544px) {
    .app-nav .nav-container {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
    }

    .nav-link {
        white-space: nowrap;
    }

    .app-header {
        height: var(--header-height);
    }
}

/* =============================================================================
   Print Styles
   ============================================================================= */

@media print {

    .app-header,
    .app-nav,
    .app-footer {
        display: none;
    }

    .app-main {
        padding: 0;
        max-width: none;
    }
}

/* =============================================================================
   Reduced Motion
   ============================================================================= */

@media (prefers-reduced-motion: reduce) {

    *,
    *::before,
    *::after {
        animation-duration: 0.01ms !important;
        animation-iteration-count: 1 !important;
        transition-duration: 0.01ms !important;
    }

    html {
        scroll-behavior: auto;
    }
}

/* =============================================================================
   High Contrast
   ============================================================================= */

@media (prefers-contrast: high) {
    :root {
        --color-border-default: #57606a;
        --color-text-primary: #ffffff;
        --color-text-secondary: #d0d7de;
    }
}