/**
 * Unified Design System - Complete Stylesheet
 * A compact, eye-friendly design system with flat, dimmed aesthetics
 * Font: JetBrains Mono (monospace throughout)
 * Palette: Green-tinted monochromatic
 */

/* ============================================================================
   CSS CUSTOM PROPERTIES (DESIGN TOKENS)
   ========================================================================= */

:root {
    /* Legacy Spacing Aliases */
    --spacing-xs: var(--space-xs);
    --spacing-sm: var(--space-sm);
    --spacing-md: var(--space-md);
    --spacing-lg: var(--space-lg);
    --spacing-xl: var(--space-xl);
    --spacing-xxl: calc(var(--space-xl) + var(--space-sm));
    --spacing-3xl: calc(var(--space-xl) + var(--space-lg));

    /* Legacy Typography Aliases */
    --font-size-xs: var(--font-xs);
    --font-size-sm: var(--font-sm);
    --font-size-md: var(--font-md);
    --font-size-lg: var(--font-lg);
    --font-size-base: var(--font-md);
    --font-mono: "JetBrains Mono", monospace;
    --font-sans: "Inter", "Helvetica Neue", Arial, sans-serif;

    /* Legacy Base Metrics */
    --scale-factor: 1;
    --base-font-size: var(--font-xl);
    --base-spacing: var(--space-xl);
    --base-panel-padding: var(--space-lg);
    --base-border-radius: 8px;
    --border-radius: var(--base-border-radius);
    --border-radius-sm: calc(var(--base-border-radius) / 2);
    --border-color: var(--border-primary);

    /* Legacy Color Aliases */
    --accent: var(--accent-primary);
    --bg-body: var(--bg-primary);
    --border: var(--border-primary);
    --color-accent-hover: var(--accent-hover);
    --color-accent-primary: var(--accent-primary);
    --color-bg-elevated: var(--bg-elevated);
    --color-bg-primary: var(--bg-primary);
    --color-bg-secondary: var(--bg-secondary);
    --color-bg-tertiary: var(--bg-tertiary);
    --color-border-accent: color-mix(
        in srgb,
        var(--accent-primary) 65%,
        var(--border-primary) 35%
    );
    --color-border-primary: var(--border-primary);
    --color-border-secondary: var(--border-secondary);
    --color-text-muted: var(--text-muted);
    --color-text-primary: var(--text-primary);
    --color-text-secondary: var(--text-secondary);
    --error: var(
        --color-error
    ); /* Retained for selectors targeting legacy `--error` alias */
    --error-bg: var(--color-error-bg);
    --error-color: var(
        --color-error
    ); /* Retained for selectors targeting legacy `--error-color` alias */
    --fg: var(--text-primary);
    --primary-color: var(--accent-primary);
    --surface-color: var(--bg-secondary);
    --text-color: var(--text-primary);
    --text-tertiary: var(--text-dim);
    --color-text-muted: var(--text-muted);
    --success-color: var(--color-success);
    --success: var(--success-color);
    --success-bg: var(--color-success-bg);
    --danger-color: var(--color-danger);
    --danger: var(--danger-color);
    --danger-bg: var(--color-error-bg);
    --warning-color: var(--color-warning);
    --warning: var(--warning-color);
    --warning-bg: var(--color-warning-bg);

    /* Legacy Overlay & Accent Aliases */
    --color-black: #000000;
    --color-black-90: color-mix(in srgb, var(--color-black) 90%, transparent);
    --color-black-85: color-mix(in srgb, var(--color-black) 85%, transparent);
    --bg-overlay: color-mix(
        in srgb,
        var(--bg-primary) 65%,
        var(--color-black-90) 35%
    );
    --accent-gold: color-mix(
        in srgb,
        var(--color-warning) 70%,
        var(--accent-primary) 30%
    );
    --accent-gold-translucent: color-mix(
        in srgb,
        var(--accent-gold) 24%,
        transparent
    );
    --accent-green: var(--accent-primary);
    --accent-green-hover: var(--accent-hover);

    /* Legacy Map Measurement Aliases */
    --measurement-label-bg: color-mix(
        in srgb,
        var(--bg-elevated) 75%,
        var(--color-black-85) 25%
    );
    --measurement-label-border: color-mix(
        in srgb,
        var(--text-white) 20%,
        transparent
    );
    --measurement-label-shadow: var(--shadow-sm);

    /* Legacy OAuth Brand Colors */
    --oauth-discord-color: #5865f2;
    --oauth-twitch-color: #9146ff;
    --oauth-google-color: #4285f4;

    /* Legacy Player Status Aliases */
    --player-special: var(
        --color-success,
        #22c55e
    ); /* Bright green for admins/friends */
    --player-special-light: color-mix(
        in srgb,
        var(--player-special) 55%,
        var(--text-white) 45%
    );
    --player-enemy: var(
        --color-danger,
        #ef4444
    ); /* High-contrast red for enemies */
    --player-enemy-light: color-mix(
        in srgb,
        var(--player-enemy) 55%,
        var(--text-white) 45%
    );
    --player-friend: var(--color-info, #60a5fa); /* Distinct blue for allies */
    --player-friend-light: color-mix(
        in srgb,
        var(--player-friend) 55%,
        var(--text-white) 45%
    );
    --player-hidden: var(--text-muted);

    /* Legacy Accent Helpers */
    --accent-secondary: color-mix(
        in srgb,
        var(--accent-primary) 70%,
        var(--text-secondary) 30%
    );
    --accent-secondary-hover: color-mix(
        in srgb,
        var(--accent-secondary) 80%,
        var(--text-white) 20%
    );
    --bg-hover: color-mix(
        in srgb,
        var(--bg-elevated) 80%,
        var(--accent-primary) 20%
    );
    --hover: var(--bg-hover);
    --input-bg: var(--bg-input);
    --card-bg: var(--bg-secondary);
    --text-white: color-mix(in srgb, white 92%, var(--bg-primary) 8%);

    --color-success-bg: color-mix(
        in srgb,
        var(--color-success) 16%,
        var(--bg-primary) 84%
    );
    --color-success-border: color-mix(
        in srgb,
        var(--color-success) 70%,
        var(--bg-primary) 30%
    );
    --color-warning-bg: color-mix(
        in srgb,
        var(--color-warning) 16%,
        var(--bg-primary) 84%
    );
    --color-warning-border: color-mix(
        in srgb,
        var(--color-warning) 70%,
        var(--bg-primary) 30%
    );
    --color-error: var(--color-danger);
    --color-error-bg: color-mix(
        in srgb,
        var(--color-danger) 16%,
        var(--bg-primary) 84%
    );
    --color-error-border: color-mix(
        in srgb,
        var(--color-danger) 70%,
        var(--bg-primary) 30%
    );
    --color-info-bg: color-mix(
        in srgb,
        var(--color-info) 16%,
        var(--bg-primary) 84%
    );
    --color-info-border: color-mix(
        in srgb,
        var(--color-info) 70%,
        var(--bg-primary) 30%
    );

    /* Legacy Status Aliases */
    --success: var(--color-success);
    --success-color: var(--color-success);
    --success-bg: var(--color-success-bg);
    --success-muted: color-mix(
        in srgb,
        var(--color-success) 20%,
        var(--bg-primary) 80%
    );
    --success-soft: color-mix(
        in srgb,
        var(--color-success) 12%,
        var(--text-white) 88%
    );

    --warning: var(--color-warning);
    --warning-color: var(--color-warning);
    --warning-bg: var(--color-warning-bg);
    --warning-muted: color-mix(
        in srgb,
        var(--color-warning) 20%,
        var(--bg-primary) 80%
    );
    --warning-soft: color-mix(
        in srgb,
        var(--color-warning) 12%,
        var(--text-white) 88%
    );

    --danger: var(--color-danger);
    --danger-color: var(--color-danger);
    --danger-bg: var(--color-error-bg);
    --danger-muted: color-mix(
        in srgb,
        var(--color-danger) 20%,
        var(--bg-primary) 80%
    );
    --danger-soft: color-mix(
        in srgb,
        var(--color-danger) 12%,
        var(--text-white) 88%
    );

    --shadow-sm: 0 2px 6px rgba(0, 0, 0, 0.35);
    --shadow-md: 0 8px 20px rgba(0, 0, 0, 0.45);
    --shadow-lg: 0 16px 40px rgba(0, 0, 0, 0.5);
    --shadow-xl: 0 22px 56px rgba(0, 0, 0, 0.55);
    --shadow-glow: 0 0 0 1px
        color-mix(in srgb, var(--accent-primary) 35%, transparent);
    --shadow-focus: 0 0 0 3px
        color-mix(in srgb, var(--accent-primary) 45%, transparent);
    --shadow-glow-primary: 0 0 20px
        color-mix(in srgb, var(--accent-primary) 40%, transparent);
    --shadow-glow-success: 0 0 18px
        color-mix(in srgb, var(--color-success) 40%, transparent);
    --shadow-glow-danger: 0 0 18px
        color-mix(in srgb, var(--color-danger) 40%, transparent);
    /* Backgrounds - Very dark with subtle variations */
    --bg-primary: #0a0a0a; /* Main page background */
    --bg-secondary: #131313; /* Card/panel background */
    --bg-tertiary: #0e0e0e; /* Nested elements, list items */
    --bg-elevated: #101010; /* Buttons, slightly raised elements */
    --bg-input: #0c0c0c; /* Form inputs */

    /* Text - Green-tinted grays */
    --text-primary: #7a8a7a; /* Main content text */
    --text-secondary: #556655; /* Headers, labels */
    --text-dim: #445544; /* Supporting text, hints */
    --text-muted: #334433; /* Placeholder, disabled text */

    /* Accents - Desaturated greens */
    --accent-primary: #5a6a5a; /* Primary actions, selections */
    --accent-hover: #6a7a6a; /* Hover state */
    --accent-active: #4a5a4a; /* Active/pressed state */

    /* Status Colors - Subtle variations */
    --color-success: #4a5a4a; /* Success states */
    --color-warning: #5a5a4a; /* Warnings */
    --color-danger: #5a4a4a; /* Errors, destructive actions */
    --color-info: #4a5a5a; /* Informational */

    /* Borders - Very subtle */
    --border-primary: #202020; /* Main borders */
    --border-secondary: #1a1a1a; /* Subtle dividers */
    --border-focus: #2a3a2a; /* Focus indicators */

    /* Spacing Scale */
    --space-4xs: 2px; /* Micro adjustments, thin dividers */
    --space-3xs: 3px; /* Compact indicators, fine-tuned spacing */
    --space-xxs: 4px; /* Tight badges, inline control gaps */
    --space-xs: 5px; /* Very tight - icon padding, between related items */
    --space-sm: 8px; /* Tight - form field gaps, button padding */
    --space-md: 12px; /* Standard - card padding, section gaps */
    --space-lg: 16px; /* Loose - major section separation */
    --space-xl: 20px; /* Very loose - page margins, major divisions */

    /* Typography Scale */
    --font-xs: 10px; /* Labels, metadata, badges */
    --font-sm: 11px; /* Secondary text, form inputs */
    --font-md: 12px; /* Body text (default) */
    --font-lg: 13px; /* Section headers */
    --font-xl: 14px; /* Page titles */

    /* Transitions */
    --transition-fast: 100ms ease; /* Quick interactions (hover, focus) */
    --transition-base: 150ms ease; /* Standard transitions */

    /* Component Measurements */
    --bg-tertiary-rgb: 14, 14, 14;
    --color-danger-rgb: 90, 74, 74;
    --modal-width-default: 500px;
    --modal-width-narrow: 360px;
    --modal-width-wide: 720px;
    --accordion-content-max-height: 400px;
    --tooltip-offset: var(--space-xxs);
    --tooltip-arrow-size: var(--space-sm);
    --dropdown-menu-offset: var(--space-4xs);
    --dropdown-arrow-distance: 6px;
    --dropdown-arrow-size: 10px;
    --breadcrumb-collapsed-width: 120px;
}

/* ============================================================================
   BASE & RESET STYLES
   ========================================================================= */

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

html,
body {
    height: 100%;
}

body {
    font-family: "JetBrains Mono", monospace;
    background: var(--bg-primary);
    color: var(--text-primary);
    font-size: var(--font-md);
    line-height: 1.4;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* Remove default focus outline, custom styles added below */
*:focus {
    outline: none;
}

/* Custom focus visible indicator */
*:focus-visible {
    outline: 1px solid var(--border-focus);
    outline-offset: 2px;
}

/* ============================================================================
   TYPOGRAPHY
   ========================================================================= */

h1,
h2,
h3,
h4,
h5,
h6 {
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

p {
    line-height: 1.5;
}

code {
    font-family: "JetBrains Mono", monospace;
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    padding: 2px 4px;
    font-size: var(--font-xs);
    color: var(--text-secondary);
}

pre {
    font-family: "JetBrains Mono", monospace;
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    padding: var(--space-sm);
    overflow-x: auto;
    font-size: var(--font-xs);
    line-height: 1.5;
}

strong {
    font-weight: 500;
    color: var(--text-secondary);
}

/* ============================================================================
   BUTTONS
   ========================================================================= */

.btn {
    font-family: "JetBrains Mono", monospace;
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 400;
    cursor: pointer;
    background: var(--bg-elevated);
    color: var(--text-secondary);
    border: 1px solid var(--border-primary);
    padding: 5px var(--space-sm);
    transition: all var(--transition-fast);
    display: inline-block;
    text-align: center;
    text-decoration: none;
}

.btn:hover {
    background: var(--bg-secondary);
    border-color: var(--border-focus);
    color: var(--text-primary);
}

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

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

.btn:disabled:hover {
    background: var(--bg-elevated);
    border-color: var(--border-primary);
    color: var(--text-secondary);
    transform: none;
}

/* Button Variants */
.btn--primary {
    background: var(--accent-primary);
    color: var(--bg-primary);
    border-color: var(--accent-primary);
}

.btn--primary:hover {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
}

.btn--primary:disabled:hover {
    background: var(--accent-primary);
    border-color: var(--accent-primary);
}

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

.btn--success:hover {
    background: var(--color-success);
    border-color: var(--color-success);
    color: var(--bg-primary);
}

.btn--warning {
    border-color: var(--color-warning);
    color: var(--color-warning);
}

.btn--warning:hover {
    background: var(--color-warning);
    border-color: var(--color-warning);
    color: var(--bg-primary);
}

.btn--danger {
    border-color: var(--color-danger);
    color: var(--color-danger);
}

.btn--danger:hover {
    background: var(--color-danger);
    border-color: var(--color-danger);
    color: var(--bg-primary);
}

/* Button Sizes */
.btn--small {
    padding: 3px var(--space-xs);
    font-size: var(--font-xs);
}

.btn--large {
    padding: 7px var(--space-md);
    font-size: var(--font-sm);
}

.btn--full {
    width: 100%;
}

/* UDS header icon actions (distinct from legacy .icon-btn controls) */
.icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: calc(var(--space-lg) * 2);
    height: calc(var(--space-lg) * 2);
    border: 1px solid var(--border-primary);
    background: var(--bg-secondary);
    color: var(--text-secondary);
    text-decoration: none;
    transition: all var(--transition-fast);
}

.icon-button:hover {
    background: var(--bg-tertiary);
    border-color: var(--border-focus);
    color: var(--text-primary);
}

.icon-button:focus-visible {
    outline: 2px solid var(--border-focus);
    outline-offset: 2px;
    background: var(--bg-tertiary);
    color: var(--text-primary);
}

.icon-button svg {
    width: calc(var(--space-lg) + var(--space-xs));
    height: calc(var(--space-lg) + var(--space-xs));
}

.back-link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xxs);
    padding: var(--space-xxs) var(--space-sm);
    border: 1px solid var(--accent-primary);
    color: var(--accent-primary);
    text-decoration: none;
    font-size: var(--font-xs);
    transition: all var(--transition-fast);
}

.back-link:hover {
    background: var(--accent-primary);
    border-color: var(--accent-hover);
    color: var(--bg-primary);
}

.back-link:focus-visible {
    outline: 2px solid var(--accent-hover);
    outline-offset: 2px;
    background: var(--accent-primary);
    color: var(--bg-primary);
}

/* Icon Buttons */
.icon-btn {
    width: 28px;
    height: 28px;
    padding: 0;
    display: grid;
    place-items: center;
    font-size: 12px;
    line-height: 1;
}

.icon-btn[aria-pressed="true"] {
    background: var(--accent-active);
    border-color: var(--accent-primary);
    color: var(--text-primary);
}

/* Link Buttons */
.link-btn {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    padding: 5px var(--space-sm);
    color: var(--text-secondary);
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    text-decoration: none;
    font-family: "JetBrains Mono", monospace;
    display: inline-block;
    transition: all var(--transition-fast);
}

.link-btn:hover {
    border-color: var(--border-focus);
    color: var(--text-primary);
    background: var(--bg-tertiary);
}

/* Button Grids */
.btn-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-xs);
}

.btn-grid--three {
    grid-template-columns: repeat(3, 1fr);
}

.btn-grid--four {
    grid-template-columns: repeat(4, 1fr);
}

/* ============================================================================
   FORM CONTROLS
   ========================================================================= */

/* Text Inputs */
input[type="text"],
input[type="number"],
input[type="email"],
input[type="password"],
input[type="search"],
input[type="tel"],
input[type="url"],
input[type="date"],
input[type="time"],
select,
textarea {
    width: 100%;
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    color: var(--text-primary);
    padding: 6px var(--space-sm);
    font-size: var(--font-sm);
    font-family: "JetBrains Mono", monospace;
    transition: border-color var(--transition-fast);
}

input:focus,
select:focus,
textarea:focus {
    outline: none;
    border-color: var(--border-focus);
}

input::placeholder,
textarea::placeholder {
    color: var(--text-muted);
}

/* Remove number input spinners */
input[type="number"]::-webkit-inner-spin-button,
input[type="number"]::-webkit-outer-spin-button {
    -webkit-appearance: none;
    margin: 0;
}

input[type="number"] {
    -moz-appearance: textfield;
}

/* Select Dropdowns */
select {
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='10' viewBox='0 0 10 10'%3E%3Cpath fill='%23445544' d='M5 7L2 4h6z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 8px center;
    padding-right: 28px;
}

select optgroup {
    color: var(--text-secondary);
    font-weight: 500;
}

select option {
    color: var(--text-primary);
    font-weight: 400;
}

/* Textarea */
textarea {
    resize: vertical;
    min-height: 60px;
}

/* Checkboxes */
input[type="checkbox"] {
    width: 14px;
    height: 14px;
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    border-radius: 2px;
    margin: 0;
    flex-shrink: 0;
}

input[type="checkbox"]:checked {
    background: var(--accent-primary);
    border-color: var(--accent-primary);
}

input[type="checkbox"]:checked::after {
    content: "✓";
    display: block;
    text-align: center;
    color: var(--bg-primary);
    font-size: 10px;
    line-height: 12px;
}

input[type="checkbox"]:focus {
    outline: none;
    border-color: var(--border-focus);
}

/* Radio Buttons */
input[type="radio"] {
    width: 14px;
    height: 14px;
    cursor: pointer;
    -webkit-appearance: none;
    -moz-appearance: none;
    appearance: none;
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    border-radius: 50%;
    margin: 0;
    flex-shrink: 0;
}

input[type="radio"]:checked {
    background: var(--accent-primary);
    border-color: var(--accent-primary);
}

input[type="radio"]:checked::after {
    content: "";
    display: block;
    width: 6px;
    height: 6px;
    border-radius: 50%;
    background: var(--bg-primary);
    margin: 3px auto;
}

input[type="radio"]:focus {
    outline: none;
    border-color: var(--border-focus);
}

/* Range Slider */
input[type="range"] {
    width: 100%;
    height: 3px;
    background: var(--bg-tertiary);
    outline: none;
    -webkit-appearance: none;
    cursor: pointer;
}

input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    width: 12px;
    height: 12px;
    background: var(--accent-primary);
    cursor: pointer;
}

input[type="range"]::-moz-range-thumb {
    width: 12px;
    height: 12px;
    background: var(--accent-primary);
    cursor: pointer;
    border: none;
}

/* File Input */
input[type="file"] {
    font-size: var(--font-xs);
    color: var(--text-secondary);
    cursor: pointer;
}

input[type="file"]::file-selector-button {
    background: var(--bg-elevated);
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    padding: 5px var(--space-sm);
    font-family: "JetBrains Mono", monospace;
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    cursor: pointer;
    margin-right: var(--space-sm);
    transition: all var(--transition-fast);
}

input[type="file"]::file-selector-button:hover {
    background: var(--bg-secondary);
    border-color: var(--border-focus);
    color: var(--text-primary);
}

/* Labels */
.field-label {
    font-size: var(--font-xs);
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--text-dim);
    font-weight: 400;
    display: block;
}

label:has(input[type="checkbox"]),
label:has(input[type="radio"]) {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    cursor: pointer;
    font-size: var(--font-sm);
    color: var(--text-secondary);
}

/* Fieldsets */
fieldset {
    border: none;
    padding: 0;
    margin: 0;
}

legend {
    font-size: var(--font-xs);
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--text-dim);
    font-weight: 400;
    padding: 0;
    margin-bottom: var(--space-sm);
}

/* Field Groups */
.field-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.password-input-wrapper {
    --password-toggle-space: 4rem;
    position: relative;
    display: flex;
    align-items: center;
    width: 100%;
}

.password-input-wrapper input {
    width: 100%;
    padding-right: calc(var(--password-toggle-space) * var(--scale-factor));
}

.password-toggle {
    position: absolute;
    top: 50%;
    right: var(--space-sm);
    transform: translateY(-50%);
    border: none;
    background: transparent;
    color: var(--text-muted);
    font-size: var(--font-xs);
    font-weight: 600;
    cursor: pointer;
    line-height: 1;
    padding: var(--space-3xs) var(--space-xs);
    border-radius: var(--border-radius-sm);
    transition:
        color 0.15s ease,
        background-color 0.15s ease;
}

.password-toggle:hover,
.password-toggle:focus-visible {
    color: var(--accent-primary);
    background: color-mix(in srgb, var(--accent-primary) 12%, transparent);
}

.password-toggle:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
}

.password-toggle[aria-pressed="true"] {
    color: var(--accent-secondary);
}

.password-toggle__text {
    pointer-events: none;
}

.field-grid {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-sm);
}

/* ============================================================================
   BADGES & PILLS
   ========================================================================= */

.badge {
    display: inline-block;
    background: var(--bg-elevated);
    border: 1px solid var(--border-primary);
    color: var(--text-dim);
    padding: 2px 5px;
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

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

.badge--warning {
    border-color: var(--color-warning);
    color: var(--color-warning);
}

.badge--danger {
    border-color: var(--color-danger);
    color: var(--color-danger);
}

.badge--info {
    border-color: var(--color-info);
    color: var(--color-info);
}

.status-pill {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    background: var(--bg-elevated);
    border: 1px solid var(--border-primary);
    padding: 3px var(--space-sm);
    font-size: var(--font-xs);
    color: var(--text-secondary);
}

.status-pill__dot {
    width: 4px;
    height: 4px;
    border-radius: 50%;
    background: var(--accent-primary);
}

/* ============================================================================
   ALERTS & MESSAGES
   ========================================================================= */

.alert {
    position: relative;
    padding: var(--space-sm);
    border: 1px solid var(--border-primary);
    border-left-width: 2px;
    font-size: var(--font-xs);
    line-height: 1.5;
    display: flex;
    gap: var(--space-sm);
    align-items: flex-start;
}

.alert--info {
    border-left-color: var(--color-info);
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

.alert--success {
    border-left-color: var(--color-success);
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

.alert--warning {
    border-left-color: var(--color-warning);
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

.alert--danger {
    border-left-color: var(--color-danger);
    background: color-mix(in srgb, var(--color-danger) 12%, transparent);
    color: var(--color-danger);
}

.alert--inline {
    display: inline-flex;
    align-items: center;
}

.alert--toast {
    min-width: 220px;
    max-width: 320px;
    background: var(--bg-elevated);
}

.alert__icon {
    font-size: 16px;
    line-height: 1;
    color: inherit;
    opacity: 0.7;
    flex-shrink: 0;
}

.alert__content {
    flex: 1;
    min-width: 0;
}

.alert__title {
    font-size: var(--font-sm);
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: var(--space-4xs);
}

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

.alert__actions {
    display: flex;
    gap: var(--space-xxs);
    margin-top: var(--space-xs);
}

.alert__close {
    position: absolute;
    top: var(--space-xs);
    right: var(--space-xs);
    background: none;
    border: none;
    color: var(--text-dim);
    font-size: var(--font-md);
    cursor: pointer;
    padding: var(--space-4xs);
    transition: color var(--transition-fast);
}

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

.hint {
    font-size: var(--font-xs);
    color: var(--text-dim);
    background: var(--bg-tertiary);
    border-left: 2px solid var(--accent-primary);
    padding: var(--space-sm);
    line-height: 1.5;
}

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

.hint code {
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    padding: 2px 4px;
    font-size: var(--font-xs);
    color: var(--text-secondary);
}

/* ============================================================================
   EMPTY STATES
   ========================================================================= */

.empty-state {
    font-size: var(--font-xs);
    color: var(--text-muted);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-secondary);
    padding: var(--space-lg);
    text-align: center;
    line-height: 1.5;
}

.empty-state__icon {
    font-size: 24px;
    margin-bottom: var(--space-sm);
    opacity: 0.5;
}

.empty-state__title {
    color: var(--text-secondary);
    margin-bottom: var(--space-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

/* ============================================================================
   PROGRESS BARS
   ========================================================================= */

.progress {
    width: 100%;
    height: var(--space-xs);
    background: var(--bg-tertiary);
    border: 1px solid var(--border-primary);
    overflow: hidden;
}

.progress-bar {
    height: 100%;
    background: var(--accent-primary);
    transition: width var(--transition-base);
}

.progress--sm {
    height: var(--space-3xs);
}

.progress--lg {
    height: var(--space-sm);
}

.progress--indeterminate .progress-bar {
    position: relative;
    width: 30%;
    animation: progress-indeterminate 1.4s ease-in-out infinite;
}

.progress__label {
    margin-top: var(--space-xs);
    font-size: var(--font-xs);
    color: var(--text-dim);
    display: flex;
    justify-content: space-between;
}

.progress-steps {
    display: flex;
    gap: var(--space-sm);
    margin-top: var(--space-sm);
}

.progress-step {
    flex: 1;
    height: var(--space-xxs);
    background: var(--border-secondary);
    position: relative;
}

.progress-step::after {
    content: "";
    position: absolute;
    inset: 0;
    background: var(--accent-primary);
    opacity: 0;
    transition: opacity var(--transition-base);
}

.progress-step.is-complete::after,
.progress-step.is-active::after {
    opacity: 1;
}

@keyframes progress-indeterminate {
    0% {
        left: -30%;
    }

    50% {
        left: 30%;
    }

    100% {
        left: 100%;
    }
}

/* ============================================================================
   TABLES
   ========================================================================= */

table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--font-xs);
}

th {
    text-align: left;
    font-weight: 500;
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    padding: var(--space-xs) var(--space-sm);
    border-bottom: 1px solid var(--border-primary);
    background: var(--bg-tertiary);
    position: relative;
}

td {
    padding: var(--space-xs) var(--space-sm);
    color: var(--text-primary);
    border-bottom: 1px solid var(--border-secondary);
}

tr:hover {
    background: var(--bg-tertiary);
}

tbody tr:last-child td {
    border-bottom: none;
}

.table-container {
    width: 100%;
    overflow-x: auto;
    border: 1px solid var(--border-primary);
    background: var(--bg-secondary);
}

.table--compact th,
.table--compact td {
    padding: var(--space-xxs) var(--space-sm);
}

.table--spacious th,
.table--spacious td {
    padding: var(--space-sm) var(--space-md);
}

.table--striped tbody tr:nth-child(odd) {
    background: rgba(var(--bg-tertiary-rgb), 0.6);
}

.table--bordered th,
.table--bordered td {
    border: 1px solid var(--border-primary);
}

.table--hover tbody tr {
    transition: background var(--transition-fast);
}

.table--interactive tbody tr:hover {
    background: var(--bg-elevated);
    cursor: pointer;
}

.table__actions {
    display: flex;
    gap: var(--space-xxs);
    justify-content: flex-end;
}

.table-cell--numeric {
    text-align: right;
    font-variant-numeric: tabular-nums;
}

.table-cell--status {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xxs);
}

.table__badge {
    padding: var(--space-4xs) var(--space-xxs);
    border: 1px solid var(--border-secondary);
    background: var(--bg-tertiary);
    color: var(--text-secondary);
}

.table--sticky-header {
    border-collapse: separate;
    border-spacing: 0;
}

.table--sticky-header thead th {
    position: sticky;
    top: 0;
    z-index: 1;
}

.table--sortable th {
    cursor: pointer;
    padding-right: calc(var(--space-sm) + var(--space-md));
}

.table--sortable th::after {
    content: "";
    position: absolute;
    right: var(--space-xs);
    top: 50%;
    width: var(--space-sm);
    height: var(--space-sm);
    border-right: 1px solid var(--text-dim);
    border-bottom: 1px solid var(--text-dim);
    transform: translateY(-70%) rotate(45deg);
    opacity: 0.4;
    transition:
        transform var(--transition-fast),
        opacity var(--transition-fast);
}

.table--sortable th.is-sorted-asc::after {
    transform: translateY(-30%) rotate(225deg);
    opacity: 1;
}

.table--sortable th.is-sorted-desc::after {
    transform: translateY(-70%) rotate(45deg);
    opacity: 1;
}

/* ============================================================================
   TABS
   ========================================================================= */

.tabs {
    display: flex;
    gap: 1px;
    border-bottom: 1px solid var(--border-primary);
    margin-bottom: var(--space-sm);
}

.tab {
    background: transparent;
    border: none;
    color: var(--text-dim);
    padding: var(--space-xs) var(--space-md);
    font-family: "JetBrains Mono", monospace;
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    cursor: pointer;
    border-bottom: 2px solid transparent;
    transition: all var(--transition-fast);
}

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

.tab[aria-selected="true"] {
    color: var(--text-primary);
    border-bottom-color: var(--accent-primary);
}

/* ============================================================================
   ACCORDION
   ========================================================================= */

.accordion {
    border: 1px solid var(--border-primary);
}

.accordion-item {
    border-bottom: 1px solid var(--border-secondary);
}

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

.accordion-header {
    width: 100%;
    background: transparent;
    border: none;
    color: var(--text-secondary);
    padding: var(--space-sm);
    font-family: "JetBrains Mono", monospace;
    font-size: var(--font-sm);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    text-align: left;
    cursor: pointer;
    display: flex;
    justify-content: space-between;
    align-items: center;
    transition: all var(--transition-fast);
    position: relative;
    padding-right: calc(var(--space-sm) + 12px);
}

.accordion-header:hover {
    background: var(--bg-tertiary);
    color: var(--text-primary);
}

.accordion-header::after {
    content: "";
    position: absolute;
    right: var(--space-xs);
    top: 50%;
    width: 8px;
    height: 8px;
    border-right: 1px solid var(--text-dim);
    border-bottom: 1px solid var(--text-dim);
    transform: translateY(-50%) rotate(45deg);
    transition:
        transform var(--transition-fast),
        border-color var(--transition-fast);
}

.accordion-header[aria-expanded="true"]::after,
.accordion-item.is-open .accordion-header::after {
    transform: translateY(-50%) rotate(225deg);
    border-color: var(--text-secondary);
}

.accordion-content {
    padding: var(--space-sm);
    font-size: var(--font-xs);
    color: var(--text-primary);
    line-height: 1.5;
    display: none;
    background: var(--bg-tertiary);
    border-top: 1px solid var(--border-secondary);
}

.accordion-content.active {
    display: block;
}

.accordion-content.is-animated {
    display: block;
    max-height: 0;
    overflow: hidden;
    transition: max-height var(--transition-base);
}

.accordion-content.is-animated.is-open {
    max-height: var(--accordion-content-max-height);
}

/* ============================================================================
   CARDS & PANELS
   ========================================================================= */

.card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    padding: var(--space-md);
}

.card-header {
    font-size: var(--font-sm);
    color: var(--text-secondary);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: var(--space-sm);
    padding-bottom: var(--space-xs);
    border-bottom: 1px solid var(--border-primary);
    font-weight: 500;
}

.card-body {
    font-size: var(--font-xs);
    color: var(--text-primary);
    line-height: 1.5;
}

.section-title {
    font-size: var(--font-sm);
    letter-spacing: 0.04em;
    text-transform: uppercase;
    color: var(--text-secondary);
    font-weight: 500;
    border-bottom: 1px solid var(--border-primary);
    padding-bottom: var(--space-xs);
    margin-bottom: var(--space-sm);
}

.subsection-title {
    font-size: var(--font-xs);
    letter-spacing: 0.03em;
    text-transform: uppercase;
    color: var(--text-dim);
    font-weight: 500;
    margin-bottom: var(--space-xs);
}

/* ============================================================================
   MODALS
   ========================================================================= */

.modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0, 0, 0, 0.7);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 100;
    opacity: 0;
    pointer-events: none;
    visibility: hidden;
    transition: opacity var(--transition-base);
}

.modal-overlay.active {
    opacity: 1;
    pointer-events: all;
    visibility: visible;
}

.modal {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    padding: var(--space-lg);
    max-width: var(--modal-width-default);
    width: 90%;
    max-height: 80vh;
    overflow-y: auto;
    transform: translateY(var(--space-md));
    transition: transform var(--transition-base);
}

.modal-header {
    font-size: var(--font-lg);
    color: var(--text-primary);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: var(--space-md);
    padding-bottom: var(--space-sm);
    border-bottom: 1px solid var(--border-primary);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

.modal-overlay.active .modal {
    transform: translateY(0);
}

.modal-body {
    font-size: var(--font-xs);
    color: var(--text-primary);
    line-height: 1.6;
    margin-bottom: var(--space-md);
}

.modal-footer {
    display: flex;
    justify-content: flex-end;
    gap: var(--space-xs);
}

.modal--narrow {
    max-width: var(--modal-width-narrow);
}

.modal--wide {
    max-width: var(--modal-width-wide);
}

.modal--fullscreen {
    width: 100%;
    max-width: none;
    height: 100%;
    max-height: none;
    border-radius: 0;
}

.modal-close {
    background: none;
    border: none;
    color: var(--text-dim);
    cursor: pointer;
    font-size: 16px;
    padding: 0;
    width: 24px;
    height: 24px;
    transition: color var(--transition-fast);
}

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

/* ============================================================================
   LOADING STATES
   ========================================================================= */

.spinner {
    width: 20px;
    height: 20px;
    border-radius: 50%;
    border: 2px solid var(--border-primary);
    border-top-color: var(--accent-primary);
    animation: spin 1s linear infinite;
    flex-shrink: 0;
}

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

.spinner-container {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
    width: 100%;
    padding: var(--space-lg) 0;
    color: var(--text-secondary);
    font-size: var(--font-xs);
    text-align: center;
}

.spinner-container--inline {
    display: inline-flex;
    flex-direction: row;
    justify-content: flex-start;
    align-items: center;
    width: auto;
    padding: 0;
    margin-inline-end: var(--space-xs);
}

.spinner-text {
    color: var(--text-muted);
    font-size: var(--font-xs);
}

/* ============================================================================
   LISTS
   ========================================================================= */

.list {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: var(--border-secondary);
    border: 1px solid var(--border-primary);
}

.list-item {
    background: var(--bg-tertiary);
    padding: var(--space-sm);
    font-size: var(--font-xs);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-sm);
}

.list-item:hover {
    background: var(--bg-elevated);
}

/* Enhanced Item List */
.item-list {
    display: flex;
    flex-direction: column;
    gap: 1px;
    background: var(--border-secondary);
    border: 1px solid var(--border-primary);
}

.item {
    background: var(--bg-tertiary);
    padding: var(--space-sm);
    font-size: var(--font-xs);
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-sm);
}

.item:hover {
    background: var(--bg-elevated);
}

.item__content {
    flex: 1;
    min-width: 0;
}

.item__label {
    color: var(--text-primary);
    font-weight: 500;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    margin-bottom: 2px;
}

.item__meta {
    color: var(--text-dim);
    font-size: var(--font-xs);
}

.item__actions {
    display: flex;
    gap: 3px;
}

.item__action {
    padding: 3px 5px;
    font-size: var(--font-xs);
}

/* ============================================================================
   TOOLTIPS
   ========================================================================= */

.tooltip-container {
    position: relative;
    display: inline-block;
}

.tooltip {
    position: absolute;
    bottom: calc(100% + var(--tooltip-offset));
    left: 50%;
    transform: translateX(-50%);
    background: var(--bg-elevated);
    border: 1px solid var(--border-primary);
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--font-xs);
    color: var(--text-secondary);
    white-space: nowrap;
    pointer-events: none;
    opacity: 0;
    transition: opacity var(--transition-fast);
    z-index: 10;
}

.tooltip::after {
    content: "";
    position: absolute;
    left: 50%;
    transform: translateX(-50%) rotate(45deg);
    width: var(--tooltip-arrow-size);
    height: var(--tooltip-arrow-size);
    background: var(--bg-elevated);
    border-left: 1px solid var(--border-primary);
    border-top: 1px solid var(--border-primary);
    bottom: calc(var(--tooltip-offset) * -1);
    transform-origin: center;
}

.tooltip-container:hover .tooltip {
    opacity: 1;
}

.tooltip--bottom {
    top: calc(100% + var(--tooltip-offset));
    bottom: auto;
}

.tooltip--bottom::after {
    top: calc(var(--tooltip-offset) * -1);
    bottom: auto;
    border-left: none;
    border-top: none;
    border-right: 1px solid var(--border-primary);
    border-bottom: 1px solid var(--border-primary);
}

.tooltip--left {
    left: auto;
    right: calc(100% + var(--tooltip-offset));
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
}

.tooltip--left::after {
    left: auto;
    right: calc(var(--tooltip-offset) * -1);
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
}

.tooltip--right {
    left: calc(100% + var(--tooltip-offset));
    top: 50%;
    bottom: auto;
    transform: translateY(-50%);
}

.tooltip--right::after {
    left: calc(var(--tooltip-offset) * -1);
    top: 50%;
    transform: translateY(-50%) rotate(45deg);
}

/* ============================================================================
   NAVIGATION
   ========================================================================= */

/* Breadcrumbs */
.breadcrumbs {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    font-size: var(--font-xs);
    color: var(--text-dim);
}

.breadcrumb-item {
    color: var(--text-dim);
    text-decoration: none;
    transition: color var(--transition-fast);
}

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

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

.breadcrumbs__separator {
    color: var(--text-muted);
    opacity: 0.6;
}

.breadcrumbs--collapsed {
    gap: var(--space-xxs);
}

.breadcrumbs--collapsed .breadcrumb-item {
    max-width: var(--breadcrumb-collapsed-width);
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

/* Pagination */
.pagination {
    display: flex;
    gap: var(--space-xs);
    align-items: center;
}

.page-btn {
    padding: 4px var(--space-sm);
    font-size: var(--font-xs);
    min-width: 32px;
    text-align: center;
}

.page-btn.active {
    background: var(--accent-primary);
    color: var(--bg-primary);
    border-color: var(--accent-primary);
}

.page-btn:hover:not(.active):not(:disabled) {
    border-color: var(--border-focus);
    color: var(--text-secondary);
}

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

.pagination__ellipsis {
    font-size: var(--font-xs);
    color: var(--text-muted);
    padding: 0 var(--space-xs);
}

.pagination--compact {
    gap: var(--space-4xs);
}

.pagination--spacious {
    gap: var(--space-sm);
}

/* ============================================================================
   DROPDOWN
   ========================================================================= */

.dropdown {
    position: relative;
    display: inline-block;
}

.dropdown-menu {
    position: absolute;
    top: calc(100% + var(--dropdown-menu-offset));
    left: 0;
    background: var(--bg-elevated);
    border: 1px solid var(--border-primary);
    min-width: 150px;
    display: none;
    z-index: 10;
    padding: var(--space-4xs) 0;
}

.dropdown.active .dropdown-menu {
    display: block;
}

.dropdown-menu--right {
    left: auto;
    right: 0;
}

.dropdown-menu--up {
    top: auto;
    bottom: calc(100% + var(--dropdown-menu-offset));
}

.dropdown-menu::before {
    content: "";
    position: absolute;
    top: calc(var(--dropdown-arrow-distance) * -1);
    left: var(--space-lg);
    width: var(--dropdown-arrow-size);
    height: var(--dropdown-arrow-size);
    transform: rotate(45deg);
    background: var(--bg-elevated);
    border-left: 1px solid var(--border-primary);
    border-top: 1px solid var(--border-primary);
}

.dropdown-menu--right::before {
    left: auto;
    right: var(--space-lg);
}

.dropdown-menu--up::before {
    top: auto;
    bottom: calc(var(--dropdown-arrow-distance) * -1);
    border-left: none;
    border-top: none;
    border-right: 1px solid var(--border-primary);
    border-bottom: 1px solid var(--border-primary);
}

.dropdown-item {
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--font-xs);
    color: var(--text-secondary);
    cursor: pointer;
    border-bottom: 1px solid var(--border-secondary);
    transition: all var(--transition-fast);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-xs);
}

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

.dropdown-item:hover {
    background: var(--bg-tertiary);
    color: var(--text-primary);
}

.dropdown-item--danger {
    color: var(--color-danger);
}

.dropdown-item--danger:hover {
    background: rgba(var(--color-danger-rgb), 0.2);
}

.dropdown-divider {
    height: 1px;
    background: var(--border-secondary);
    margin: var(--space-4xs) 0;
}

/* ============================================================================
   LAYOUT UTILITIES
   ========================================================================= */

.app-shell {
    display: grid;
    grid-template-columns: minmax(0, 240px) minmax(0, 1fr) minmax(0, 240px);
    gap: var(--space-lg);
    padding: var(--space-lg);
    min-height: calc(100vh - (var(--space-xl) * 3));
    width: 100%;
    box-sizing: border-box;
}

.app-shell.app-shell--single-column {
    grid-template-columns: minmax(0, 1fr);
    padding-inline: max(var(--space-md), 2vw);
}

.app-shell.app-shell--single-column .app-shell__sidebar {
    display: none;
}

.app-shell--single-column .app-shell__main .page-content {
    width: 100%;
    max-width: none;
    margin-inline: auto;
}

.app-shell__sidebar {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
    min-width: 0;
}

.app-shell__main {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
    min-width: 0;
}

[data-shared-header-placeholder] {
    display: block;
    min-height: clamp(6rem, 12vw, 10rem);
    padding-bottom: var(--space-lg);
    border-bottom: 1px solid var(--border-primary);
}

.page-header {
    --status-pill-height: calc(var(--font-xs) + 6px);
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: var(--space-lg);
    padding-bottom: var(--space-lg);
    border-bottom: 1px solid var(--border-primary);
    flex-wrap: nowrap;
}

.page-header .status-pill {
    min-height: var(--status-pill-height);
}

.page-header .icon-button {
    width: var(--status-pill-height);
    min-width: var(--status-pill-height);
    height: var(--status-pill-height);
    padding: 0;
    font-size: var(--font-sm);
    line-height: 1;
}

.page-header .icon-button svg {
    width: calc(var(--font-xs) + 2px);
    height: calc(var(--font-xs) + 2px);
}

/* Header left container: logo + title horizontal layout */
.hdr-left {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    column-gap: 10px;
    align-items: center;
    min-width: 0;
    flex: 1 1 auto;
}

.logo-cell {
    padding: 2px;
}

.logo-cell__icon {
    display: inline-flex;
    line-height: 0;
}

.logo-cell__icon svg {
    width: 100%;
    height: 100%;
    display: block;
}

.page-header__title {
    display: flex;
    flex-direction: column;
    gap: var(--space-xxs);
    min-width: 0;
}

.page-content {
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

.page-header__title .page-header__heading {
    font-size: var(--font-xl);
    font-weight: 500;
    letter-spacing: 0.05em;
    text-transform: uppercase;
    color: var(--text-primary);
    display: flex;
    align-items: center;
    min-width: 0;
    overflow: hidden;
}

.page-header__title .page-header__heading .server-name {
    display: block;
    max-width: 100%;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
}

.page-header__meta {
    color: var(--text-secondary);
    font-size: var(--font-sm);
}

.page-header__actions {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    flex-shrink: 0;
}

/* Logo button (wolf icon) */
.home-btn {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background: var(--accent-primary);
    text-decoration: none;
    outline: none;
    transition: box-shadow var(--transition-fast);
    --logo-disk: color-mix(
        in oklch,
        oklch(70% 0.12 140) 90%,
        var(--bg-secondary) 82%
    );
    --logo-ink: oklch(18% 0 120);
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -webkit-user-drag: none;
    user-drag: none;
}

.home-btn .logo-cell__icon {
    width: 34px;
    height: 34px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.home-btn [data-app-logo] svg {
    width: 34px;
    height: 34px;
    display: block;
}

.home-btn img {
    width: 34px;
    height: 34px;
    object-fit: contain;
    pointer-events: none;
    user-select: none;
    -webkit-user-drag: none;
}

/* Bezel effect for logo depth */
.bezel img,
.bezel [data-app-logo] svg {
    filter: drop-shadow(0 0 0.5px rgba(0, 0, 0, 0.95))
        drop-shadow(0 0 0.5px rgba(0, 0, 0, 0.95))
        drop-shadow(0 0 0.35px rgba(255, 255, 255, 0.08));
}

/* Halo glow effect on hover */
.halo::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: 999px;
    box-shadow: 0 0 0 color-mix(in srgb, var(--accent-primary) 0%, transparent);
    pointer-events: none;
    transition: box-shadow var(--transition-fast);
}

.halo:hover::after {
    box-shadow: 0 0 12px
        color-mix(in srgb, var(--accent-primary) 45%, transparent);
}

.halo:active::after {
    box-shadow: 0 0 8px
        color-mix(in srgb, var(--accent-primary) 70%, transparent);
}

.home-btn:focus-visible {
    outline: 2px solid var(--border-focus);
    outline-offset: 3px;
}

/* Account widget button */
.account-widget {
    position: relative;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 34px;
    height: 34px;
    border-radius: 999px;
    background: var(--bg-tertiary);
    color: var(--text-secondary);
    text-decoration: none;
    outline: none;
    transition:
        background var(--transition-fast),
        color var(--transition-fast),
        box-shadow var(--transition-fast);
    cursor: pointer;
    user-select: none;
    -webkit-user-select: none;
    -webkit-touch-callout: none;
    -webkit-user-drag: none;
    user-drag: none;
}

.account-widget.guest {
    background: var(--accent-primary);
    color: var(--bg-primary);
}

.account-widget.guest:hover::after {
    box-shadow: 0 0 8px
        color-mix(in srgb, var(--accent-primary) 20%, transparent);
}

.account-widget.guest:active::after {
    box-shadow: 0 0 6px
        color-mix(in srgb, var(--accent-primary) 35%, transparent);
}

/* Halo glow effect on hover for account button */
.account-widget::after {
    content: "";
    position: absolute;
    inset: -1px;
    border-radius: 999px;
    box-shadow: 0 0 0 color-mix(in srgb, var(--accent-primary) 0%, transparent);
    pointer-events: none;
    transition: box-shadow var(--transition-fast);
}

.account-widget:hover::after {
    box-shadow: 0 0 12px
        color-mix(in srgb, var(--accent-primary) 45%, transparent);
}

.account-widget:active::after {
    box-shadow: 0 0 8px
        color-mix(in srgb, var(--accent-primary) 70%, transparent);
}

.account-widget:focus-visible {
    outline: 2px solid var(--border-focus);
    outline-offset: 3px;
}

.account-widget.authenticated {
    background: var(--color-success);
    color: var(--bg-primary);
}

.account-widget.authenticated::after {
    box-shadow: 0 0 0 color-mix(in srgb, var(--color-success) 0%, transparent);
}

.account-widget.authenticated:hover::after {
    box-shadow: 0 0 12px
        color-mix(in srgb, var(--color-success) 45%, transparent);
}

.account-widget.authenticated:active::after {
    box-shadow: 0 0 8px
        color-mix(in srgb, var(--color-success) 70%, transparent);
}

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

.account-widget.guest .account-avatar {
    color: var(--bg-primary);
}

.account-widget.authenticated .account-avatar {
    color: var(--bg-primary);
}

.avatar {
    width: 34px;
    height: 34px;
    border-radius: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 14px;
    color: var(--bg-primary);
    font-weight: 600;
    flex-shrink: 0;
    filter: drop-shadow(0 0 0.5px rgba(0, 0, 0, 0.95))
        drop-shadow(0 0 0.5px rgba(0, 0, 0, 0.95))
        drop-shadow(0 0 0.35px rgba(255, 255, 255, 0.08));
}

/* Page header bottom accent border */
.page-header__bottom-accent {
    position: relative;
    padding-bottom: calc(var(--space-lg) * 0.5);
    margin-bottom: calc(var(--space-xl) * 0.5);
    border-bottom: 1px solid var(--border-secondary);
}

.page-header__bottom-accent::after {
    content: "";
    position: absolute;
    bottom: -1px;
    left: 0;
    width: 100px;
    height: 2px;
    background: linear-gradient(90deg, var(--accent-primary), transparent);
    opacity: 0.6;
}

html[data-hide-panels="true"] .app-shell {
    grid-template-columns: minmax(0, 1fr);
}

html[data-hide-panels="true"] .app-shell__sidebar {
    display: none;
}

html[data-single-card-layout="true"] body {
    display: flex;
    flex-direction: column;
}

html[data-single-card-layout="true"] .app-shell {
    flex: 1;
    min-height: 100vh;
}

html[data-single-card-layout="true"] .app-shell__main {
    flex: 1;
    justify-content: center;
}

html[data-single-card-layout="true"] .page-content {
    flex: 1;
    align-items: center;
    justify-content: center;
    padding-block: clamp(var(--space-lg), 10vh, calc(var(--space-xl) * 3));
    width: 100%;
}

html[data-single-card-layout="true"] .page-content > .card {
    margin-inline: auto;
}

@media (max-width: 640px), (max-height: 700px) {
    html[data-single-card-layout="true"] .page-content {
        justify-content: flex-start;
        padding-block: var(--space-xl);
    }
}

.flex-row {
    display: flex;
    gap: var(--space-sm);
    flex-wrap: wrap;
    align-items: center;
}

.inline-flex {
    display: inline-flex;
}

.align-center {
    align-items: center;
}

.justify-center {
    justify-content: center;
}

.justify-end {
    justify-content: flex-end;
}

.justify-between {
    justify-content: space-between;
}

.gap-sm {
    gap: var(--space-sm);
}

.gap-md {
    gap: var(--space-md);
}

.gap-lg {
    gap: var(--space-lg);
}

.flex-col {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

.grid-2 {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: var(--space-sm);
}

.grid-3 {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: var(--space-sm);
}

.grid-4 {
    display: grid;
    grid-template-columns: repeat(4, 1fr);
    gap: var(--space-sm);
}

.component-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--space-sm);
}

/* ============================================================================
   DASHBOARD BUILDING BLOCKS
   ========================================================================= */

.hero {
    position: relative;
    display: grid;
    gap: calc(var(--space-lg) + var(--space-sm));
    padding: calc(var(--space-xl) * 1.4);
    border: 1px solid var(--border-primary);
    background-color: var(--bg-secondary);
    background-image: linear-gradient(
        160deg,
        color-mix(in srgb, var(--accent-primary) 32%, var(--bg-secondary) 68%),
        color-mix(in srgb, var(--bg-secondary) 85%, transparent 15%)
    );
    overflow: hidden;
}

.hero::before {
    content: attr(data-hero-label);
    position: absolute;
    top: calc(var(--space-sm) * -1);
    inset-inline-end: calc(var(--space-xl) * 1.5);
    font-size: clamp(72px, 12vw, 120px);
    letter-spacing: 0.35em;
    text-transform: uppercase;
    color: color-mix(in srgb, var(--accent-primary) 12%, transparent);
    pointer-events: none;
    white-space: nowrap;
}

.hero__eyebrow {
    font-size: var(--font-xs);
    letter-spacing: 0.35em;
    text-transform: uppercase;
    color: var(--text-dim);
}

.hero__title {
    font-size: clamp(28px, 4vw, 42px);
    letter-spacing: 0.14em;
    text-transform: uppercase;
    color: var(--text-secondary);
    line-height: 1.1;
}

.hero__lede {
    max-width: 62ch;
    font-size: var(--font-lg);
    color: var(--text-primary);
}

.hero__actions {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-md);
    margin-top: var(--space-sm);
}

.hero__meta {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
    gap: var(--space-md);
}

.hero__meta-item {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
    padding: var(--space-md);
    border: 1px solid var(--border-secondary);
    background: color-mix(in srgb, var(--bg-tertiary) 85%, transparent);
    transition:
        border-color var(--transition-fast),
        background var(--transition-fast);
}

.hero__meta-item:hover {
    border-color: var(--border-focus);
    background: color-mix(
        in srgb,
        var(--bg-tertiary) 70%,
        var(--accent-primary) 30%
    );
}

.hero__meta-label {
    font-size: var(--font-xs);
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.hero__meta-value {
    font-size: var(--font-sm);
    color: var(--text-secondary);
}

.summary-pills {
    list-style: none;
    margin: 0;
    padding: 0;
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-sm);
}

.summary-pill {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    padding: calc(var(--space-xs) + 2px) var(--space-md);
    border: 1px solid var(--border-primary);
    background: var(--bg-elevated);
    color: var(--text-secondary);
    font-size: var(--font-xs);
    letter-spacing: 0.08em;
    text-transform: uppercase;
    transition:
        background var(--transition-fast),
        border-color var(--transition-fast),
        color var(--transition-fast);
}

.summary-pill:hover {
    background: var(--bg-secondary);
    border-color: var(--border-focus);
    color: var(--text-primary);
}

.summary-pill__meta {
    color: var(--text-muted);
    font-size: var(--font-xs);
    letter-spacing: 0.04em;
}

.tile-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(220px, 1fr));
    gap: var(--space-md);
}

.tile-card {
    position: relative;
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    padding: calc(var(--space-lg) * 1.1);
    border: 1px solid var(--border-primary);
    background-color: var(--bg-secondary);
    background: color-mix(in srgb, var(--bg-secondary) 90%, transparent);
    transition:
        border-color var(--transition-fast),
        transform var(--transition-fast),
        background var(--transition-fast);
}

.tile-card:hover {
    border-color: var(--border-focus);
    transform: translateY(-2px);
    background-color: var(--bg-secondary);
    background: color-mix(
        in srgb,
        var(--bg-secondary) 75%,
        var(--accent-primary) 25%
    );
}

.tile-card__eyebrow {
    font-size: var(--font-xs);
    letter-spacing: 0.2em;
    text-transform: uppercase;
    color: var(--text-muted);
}

.tile-card__title {
    font-size: var(--font-lg);
    color: var(--text-secondary);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.tile-card__meta {
    display: flex;
    flex-wrap: wrap;
    gap: var(--space-xs);
    color: var(--text-muted);
    font-size: var(--font-xs);
}

.panel {
    display: flex;
    flex-direction: column;
    border: 1px solid var(--border-primary);
    background: var(--bg-secondary);
}

.panel__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: var(--space-md);
    padding: var(--space-sm) var(--space-md);
    background: var(--bg-tertiary);
    border-bottom: 1px solid var(--border-primary);
    color: var(--text-secondary);
    font-size: var(--font-sm);
    letter-spacing: 0.06em;
    text-transform: uppercase;
}

.panel__title {
    color: var(--text-secondary);
    font-size: var(--font-sm);
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

.panel__meta {
    color: var(--text-muted);
    font-size: var(--font-xs);
    letter-spacing: 0.04em;
}

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

.panel__body {
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
    padding: var(--space-md);
    color: var(--text-primary);
}

/* Recent activity feed */
.event-item {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    padding: var(--space-xs) var(--space-sm);
    border: 1px solid var(--border-primary);
    border-radius: var(--border-radius-sm);
    background: var(--bg-tertiary);
}

.event-item--empty {
    justify-content: center;
    color: var(--text-muted);
}

.event-item.event-join {
    border-left: 3px solid var(--color-success);
    background: color-mix(in srgb, var(--color-success) 8%, transparent);
}

.event-item.event-leave {
    border-left: 3px solid var(--color-danger);
    background: color-mix(in srgb, var(--color-danger) 8%, transparent);
}

.event-content {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    flex: 1;
    min-width: 0;
}

.event-content strong {
    font-weight: 600;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    line-height: 1.5;
    display: inline;
}

.event-content strong a {
    font-weight: inherit;
    line-height: 1.5;
    display: inline;
    padding: 0;
    margin: 0;
    vertical-align: baseline;
}

.event-time {
    display: inline-flex;
    align-items: center;
    font-variant-numeric: tabular-nums;
    background: var(--bg-secondary);
    padding: 0 var(--space-xs);
    border-radius: var(--border-radius-sm);
}

.relative-time {
    display: inline-flex;
    align-items: center;
    white-space: nowrap;
}

.panel__footer {
    padding: var(--space-sm) var(--space-md);
    border-top: 1px solid var(--border-primary);
    background: color-mix(in srgb, var(--bg-tertiary) 90%, transparent);
    color: var(--text-muted);
    font-size: var(--font-xs);
}

/* ============================================================================
   ACCESSIBILITY
   ========================================================================= */

.sr-only {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

/* ============================================================================
   SCROLLBARS (WEBKIT)
   ========================================================================= */

html {
    scrollbar-width: thin;
    scrollbar-color: var(--border-primary) var(--bg-primary);
}

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

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

::-webkit-scrollbar-thumb {
    background: var(--border-primary);
    border-radius: 0;
}

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

/* ============================================================================
   RESPONSIVE BREAKPOINTS
   ========================================================================= */

@media (max-width: 1100px) {
    /* Two-column layouts become single column */
    .app-shell {
        grid-template-columns: minmax(0, 1fr);
    }

    .app-shell__sidebar {
        display: none;
    }

    .layout-two-col {
        grid-template-columns: 1fr;
    }

    .hero {
        padding: calc(var(--space-xl) * 1.1);
    }

    .hero::before {
        inset-inline-end: var(--space-xl);
        font-size: clamp(56px, 14vw, 96px);
    }
}

@media (max-width: 768px) {
    body {
        font-size: var(--font-sm);
    }

    .page-header {
        flex-direction: row;
        align-items: center;
        gap: var(--space-md);
    }

    .page-header__title {
        min-width: 0;
    }

    .page-header__actions {
        align-self: center;
    }

    .btn-grid,
    .field-grid,
    .grid-2,
    .grid-3,
    .grid-4 {
        grid-template-columns: 1fr;
    }

    .component-grid {
        grid-template-columns: 1fr;
    }

    .hero {
        gap: var(--space-lg);
    }

    .hero__title {
        font-size: clamp(24px, 8vw, 34px);
    }

    .hero__meta {
        grid-template-columns: minmax(0, 1fr);
    }

    .tile-grid {
        grid-template-columns: minmax(0, 1fr);
    }

    .summary-pills {
        gap: var(--space-xs);
    }

    /* Stack flex rows on mobile */
    .flex-row {
        flex-direction: column;
        align-items: stretch;
    }
}

@media (max-width: 600px) {
    .hero::before {
        display: none;
    }
}

/* ============================================================================
   DEMO/SHOWCASE UTILITIES (OPTIONAL)
   ========================================================================= */

.demo-box {
    background: var(--bg-tertiary);
    border: 1px solid var(--border-primary);
    padding: var(--space-sm);
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
}

.component-label {
    font-size: var(--font-xs);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.03em;
}

.code-snippet {
    background: var(--bg-primary);
    border: 1px solid var(--border-secondary);
    padding: var(--space-xs);
    font-size: var(--font-xs);
    color: var(--text-dim);
    overflow-x: auto;
    font-family: "JetBrains Mono", monospace;
}

.color-swatch {
    height: 50px;
    border: 1px solid var(--border-primary);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: var(--font-xs);
    color: var(--text-primary);
}

/* ============================================================================
   UDS PAGE COMPATIBILITY LAYER
   Wrap Unified Design System pages in a container with `.uds-page` (or the legacy
   `.legacy-context` alias) so these overrides apply without affecting the rest of the
   design system.
   ========================================================================= */

/* Layout helpers ---------------------------------------------------------- */
:is(.legacy-context, .uds-page) {
    /* Preserve legacy rhythm and typography tokens for compatibility views */
    --legacy-heading-gap: 10px;
    --legacy-heading-weight: 600;
}

:is(.legacy-context, .uds-page) .container {
    width: 100%;
    max-width: 1100px;
    margin: 0 auto;
    padding: var(--space-xl) var(--space-lg);
}

/* Loading helpers --------------------------------------------------------- */
:is(.legacy-context, .uds-page) .loading {
    color: var(--accent-primary);
    text-align: center;
    padding: calc(var(--space-xl) * var(--scale-factor));
}

:is(.legacy-context, .uds-page) .loading-spinner {
    width: calc(var(--space-md) * 2);
    height: calc(var(--space-md) * 2);
    border-radius: 50%;
    border: var(--space-3xs) solid
        color-mix(in srgb, var(--accent-primary) 35%, var(--border-primary) 65%);
    border-top-color: var(--accent-primary);
    animation: spin 1s linear infinite;
    margin: 0 auto calc(var(--space-md) * var(--scale-factor));
}

:is(.legacy-context, .uds-page) .loading-spinner-inline {
    display: inline-block;
    width: var(--space-lg);
    height: var(--space-lg);
    border-radius: 50%;
    border: var(--space-4xs) solid
        color-mix(in srgb, var(--accent-primary) 35%, var(--border-primary) 65%);
    border-top-color: var(--accent-primary);
    animation: spin 1s linear infinite;
    vertical-align: middle;
    margin-right: calc(var(--space-sm) * var(--scale-factor));
}

:is(.legacy-context, .uds-page) .layout {
    display: flex;
    gap: var(--space-lg);
    flex: 1 1 auto;
}

html[data-hide-panels="true"] :is(.legacy-context, .uds-page) .side-panel {
    display: none;
}

:is(.legacy-context, .uds-page) .content-centered {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-lg);
    min-height: 100%;
}

:is(.legacy-context, .uds-page) .content-narrow {
    width: 100%;
    max-width: 720px;
    margin: 0 auto;
}

:is(.legacy-context, .uds-page) .container-wide {
    width: 100%;
    max-width: 1400px;
    margin: 0 auto;
    padding: calc(var(--space-xl) * var(--scale-factor));
}

/* Section helpers -------------------------------------------------------- */
:is(.legacy-context, .uds-page) .section {
    margin-top: var(--space-lg);
}

:is(.legacy-context, .uds-page) .section h1,
:is(.legacy-context, .uds-page) .section h2,
:is(.legacy-context, .uds-page) .section h3,
:is(.legacy-context, .uds-page) .section h4,
:is(.legacy-context, .uds-page) .section h5,
:is(.legacy-context, .uds-page) .section h6 {
    margin: 0 0 var(--legacy-heading-gap, var(--space-sm)) 0;
    font-weight: var(--legacy-heading-weight, 500);
}

:is(.legacy-context, .uds-page) .section h2 {
    font-size: var(--font-xl);
}

:is(.legacy-context, .uds-page) .container-narrow {
    width: 100%;
    max-width: 600px;
    margin: 0 auto;
    padding: calc(var(--space-xl) * var(--scale-factor));
}

:is(.legacy-context, .uds-page) .nav-actions {
    display: flex;
    align-items: center;
    gap: calc((var(--space-sm) + var(--space-4xs)) * var(--scale-factor));
}

:is(.legacy-context, .uds-page) .status-bar {
    display: flex;
    gap: calc(var(--space-xl) * var(--scale-factor));
    flex-wrap: wrap;
    font-size: calc(var(--font-lg) * var(--scale-factor));
    color: var(--text-secondary);
    align-items: center;
}

:is(.legacy-context, .uds-page) .status-item {
    padding: calc(var(--space-xxs) * var(--scale-factor))
        calc(var(--space-sm) * var(--scale-factor));
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
}

:is(.legacy-context, .uds-page) .status-item.online {
    color: var(--color-success);
    border-color: var(--color-success-border);
}

:is(.legacy-context, .uds-page) .status-item.time {
    color: var(--color-info);
    border-color: var(--color-info-border);
}

:is(.legacy-context, .uds-page) .status-item.error {
    color: var(--color-danger);
    border-color: var(--color-error-border);
}

:is(.legacy-context, .uds-page) .status-item.warning {
    color: var(--color-warning);
    border-color: var(--color-warning-border);
}

:is(.legacy-context, .uds-page) .main-title {
    font-size: calc((var(--font-xl) + var(--font-xs)) * var(--scale-factor));
    font-weight: 500;
    color: var(--text-secondary);
    margin: 0;
    letter-spacing: normal;
    text-transform: none;
}

:is(.legacy-context, .uds-page) .auth-layout {
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    gap: var(--space-lg);
    min-height: 100%;
    padding: calc(var(--space-xl) * 1.5) 0;
}

@media (max-width: 640px) {
    :is(.legacy-context, .uds-page) .auth-layout {
        justify-content: flex-start;
        padding-top: calc(var(--space-xl) * 2);
    }
}

:is(.legacy-context, .uds-page) .side-panel {
    flex: 0 0 220px;
    padding: var(--space-lg);
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

:is(.legacy-context, .uds-page) .content {
    flex: 1 1 auto;
    padding: var(--space-lg);
    display: flex;
    flex-direction: column;
    gap: var(--space-lg);
}

/* Header + navigation ---------------------------------------------------- */
:is(.legacy-context, .uds-page) .header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-md);
    padding: var(--space-lg) 0;
    margin-bottom: calc(var(--space-xl) * 2);
    border-bottom: 1px solid var(--border-primary);
}

:is(.legacy-context, .uds-page) .header-left {
    display: flex;
    flex-direction: column;
    gap: var(--space-xxs);
}

:is(.legacy-context, .uds-page) .header-right {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
}

:is(.legacy-context, .uds-page) .title,
:is(.legacy-context, .uds-page) .header .title,
:is(.legacy-context, .uds-page) .header h1 {
    font-size: var(--font-xl);
    font-weight: 500;
    color: var(--text-primary);
    letter-spacing: 0.05em;
    text-transform: uppercase;
}

:is(.legacy-context, .uds-page) .subtitle {
    color: var(--text-secondary);
    font-size: var(--font-sm);
    margin: 0;
}

:is(.legacy-context, .uds-page) .back-link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xxs);
    color: var(--accent-primary);
    text-decoration: none;
    font-size: var(--font-xs);
    padding: var(--space-xxs) var(--space-sm);
    border: 1px solid var(--accent-primary);
    border-radius: 0;
    transition: all var(--transition-fast);
}

:is(.legacy-context, .uds-page) .back-link:hover {
    background: var(--accent-primary);
    color: var(--bg-primary);
    border-color: var(--accent-hover);
}

:is(.legacy-context, .uds-page) .icon-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: calc(var(--space-lg) * 2);
    height: calc(var(--space-lg) * 2);
    border-radius: 0;
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    text-decoration: none;
    transition: all var(--transition-fast);
}

:is(.legacy-context, .uds-page) .icon-button:hover {
    background: var(--bg-secondary);
    color: var(--text-primary);
    border-color: var(--border-focus);
}

:is(.legacy-context, .uds-page) .icon-button svg {
    width: calc(var(--space-lg) + var(--space-xs));
    height: calc(var(--space-lg) + var(--space-xs));
}

:is(.legacy-context, .uds-page) .footer {
    border-top: 1px solid var(--border-primary);
    margin-top: calc(var(--space-xl) * 2);
    padding-top: var(--space-lg);
    text-align: center;
    font-size: var(--font-xs);
    color: var(--text-muted);
}

/* Card patterns ----------------------------------------------------------- */
:is(.legacy-context, .uds-page) .card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    padding: calc(var(--space-lg) * 1.5);
}

:is(.legacy-context, .uds-page) .card-header {
    margin-bottom: var(--space-lg);
    text-align: center;
}

:is(.legacy-context, .uds-page) .card-title {
    color: var(--accent-primary);
    font-size: var(--font-xl);
    font-weight: 500;
    margin-bottom: var(--space-xs);
}

:is(.legacy-context, .uds-page) .card-subtitle {
    color: var(--text-secondary);
    font-size: var(--font-sm);
}

:is(.legacy-context, .uds-page) .card-body {
    display: flex;
    flex-direction: column;
    gap: var(--space-md);
}

:is(.legacy-context, .uds-page) .card-footer {
    margin-top: var(--space-lg);
    padding-top: var(--space-md);
    border-top: 1px solid var(--border-primary);
}

:is(.legacy-context, .uds-page) .main-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: calc(var(--space-lg) + var(--space-sm));
    margin-bottom: calc(var(--space-lg) + var(--space-md));
}

@media (max-width: 768px) {
    :is(.legacy-context, .uds-page) .main-grid {
        grid-template-columns: 1fr;
    }
}

:is(.legacy-context, .uds-page) .panel {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    overflow: hidden;
}

:is(.legacy-context, .uds-page) .panel-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: var(--space-sm) var(--space-md);
    background: var(--bg-tertiary);
    border-bottom: 1px solid var(--border-primary);
    font-size: var(--font-sm);
    color: var(--text-secondary);
}

:is(.legacy-context, .uds-page) .panel-count {
    color: var(--text-dim);
    font-size: var(--font-xs);
}

:is(.legacy-context, .uds-page) .panel-body {
    padding: var(--space-md);
    max-height: 420px;
    overflow-y: auto;
    display: flex;
    flex-direction: column;
    gap: var(--space-sm);
}

/* Form helpers ------------------------------------------------------------ */
:is(.legacy-context, .uds-page) .form-group {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
    margin-bottom: var(--space-md);
}

:is(.legacy-context, .uds-page) .input-control,
:is(.legacy-context, .uds-page) .form-input {
    width: 100%;
    padding: var(--space-sm) var(--space-md);
    background: var(--bg-input);
    border: 1px solid var(--border-primary);
    color: var(--text-primary);
    font-size: var(--font-md);
    font-family: "JetBrains Mono", monospace;
    transition:
        border-color var(--transition-fast),
        transform var(--transition-fast);
    min-height: 42px;
}

:is(.legacy-context, .uds-page) .input-control:focus,
:is(.legacy-context, .uds-page) .form-input:focus {
    border-color: var(--border-focus);
    transform: translateY(-1px);
}

:is(.legacy-context, .uds-page) .input-control::placeholder,
:is(.legacy-context, .uds-page) .form-input::placeholder {
    color: var(--text-muted);
}

:is(.legacy-context, .uds-page) .input-control.valid,
:is(.legacy-context, .uds-page) .form-input.valid {
    border-color: var(--color-success);
}

:is(.legacy-context, .uds-page) .input-control.invalid,
:is(.legacy-context, .uds-page) .form-input.invalid {
    border-color: var(--color-danger);
}

:is(.legacy-context, .uds-page) .form-hint {
    display: block;
    color: var(--text-dim);
    font-size: var(--font-xs);
}

:is(.legacy-context, .uds-page) .form-checkbox {
    display: flex;
    align-items: center;
    gap: var(--space-xs);
    color: var(--text-secondary);
    font-size: var(--font-sm);
}

:is(.legacy-context, .uds-page) .form-checkbox input[type="checkbox"] {
    width: auto;
    height: auto;
    accent-color: var(--accent-primary);
}

:is(.legacy-context, .uds-page) .form-actions,
:is(.legacy-context, .uds-page) .btn-group {
    display: flex;
    align-items: center;
    gap: var(--space-sm);
    flex-wrap: wrap;
}

:is(.legacy-context, .uds-page) .form-actions {
    justify-content: space-between;
}

:is(.legacy-context, .uds-page) .form-actions .btn,
:is(.legacy-context, .uds-page) .form-actions button,
:is(.legacy-context, .uds-page) .form-actions a,
:is(.legacy-context, .uds-page) .btn-group > .btn,
:is(.legacy-context, .uds-page) .btn-group > button,
:is(.legacy-context, .uds-page) .btn-group > a {
    flex: 1 1 160px;
}

:is(.legacy-context, .uds-page) .form-links {
    display: flex;
    flex-direction: column;
    gap: var(--space-xs);
    text-align: center;
    margin-top: var(--space-lg);
    padding-top: var(--space-md);
    border-top: 1px solid var(--border-primary);
}

:is(.legacy-context, .uds-page) .form-links a {
    color: var(--accent-primary);
    text-decoration: none;
    transition: color var(--transition-fast);
}

:is(.legacy-context, .uds-page) .form-links a:hover {
    color: var(--accent-hover);
    text-decoration: underline;
}

:is(.legacy-context, .uds-page) .inline-link {
    color: var(--accent-primary);
    text-decoration: underline;
    text-underline-offset: 2px;
    transition: color var(--transition-fast);
}

:is(.legacy-context, .uds-page) .inline-link:hover,
:is(.legacy-context, .uds-page) .inline-link:focus {
    color: var(--accent-hover);
    text-decoration: underline;
    text-underline-offset: 2px;
}

:is(.legacy-context, .uds-page) .inline-link:focus-visible {
    outline: 2px solid var(--accent-hover);
    outline-offset: 2px;
}

:is(.legacy-context, .uds-page) .button-content {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
}

/* Status messaging -------------------------------------------------------- */
:is(.legacy-context, .uds-page) .status-message {
    padding: var(--space-sm) var(--space-md);
    border: 1px solid var(--border-primary);
    background: var(--bg-tertiary);
    color: var(--text-secondary);
    font-size: var(--font-sm);
    display: flex;
    align-items: center;
    gap: var(--space-sm);
}

:is(.legacy-context, .uds-page) .status-message-icon {
    font-size: var(--font-md);
}

:is(.legacy-context, .uds-page) .status-message.success {
    border-color: var(--color-success);
    color: var(--color-success);
    background: color-mix(in srgb, var(--color-success) 20%, transparent);
}

:is(.legacy-context, .uds-page) .status-message.error {
    border-color: var(--color-danger);
    color: var(--color-danger);
    background: color-mix(in srgb, var(--color-danger) 20%, transparent);
}

:is(.legacy-context, .uds-page) .status-message.warning {
    border-color: var(--color-warning);
    color: var(--color-warning);
    background: color-mix(in srgb, var(--color-warning) 20%, transparent);
}

:is(.legacy-context, .uds-page) .status-message.info {
    border-color: var(--color-info);
    color: var(--color-info);
    background: color-mix(in srgb, var(--color-info) 20%, transparent);
}

/* Navigation grid --------------------------------------------------------- */
:is(.legacy-context, .uds-page) .nav-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(140px, 1fr));
    gap: var(--space-sm);
    margin-bottom: var(--space-xl);
}

@media (max-width: 480px) {
    :is(.legacy-context, .uds-page) .nav-grid {
        grid-template-columns: repeat(3, minmax(0, 1fr));
    }
}

:is(.legacy-context, .uds-page) .nav-link {
    display: block;
    padding: var(--space-sm) var(--space-md);
    border: 1px solid var(--border-primary);
    background: var(--bg-tertiary);
    color: var(--accent-primary);
    text-decoration: none;
    text-align: center;
    font-size: var(--font-sm);
    transition:
        background var(--transition-fast),
        border-color var(--transition-fast),
        transform var(--transition-fast);
}

:is(.legacy-context, .uds-page) .nav-link:hover {
    background: var(--bg-secondary);
    border-color: var(--accent-hover);
    transform: translateY(-1px);
}

/* Button variants --------------------------------------------------------- */
/* Legacy variants rely on the core .btn definition declared in the main button section above. */
:is(.legacy-context, .uds-page) button:not([class]),
:is(.legacy-context, .uds-page) button[class=""] {
    font-family: "JetBrains Mono", monospace;
    font-size: var(--font-xs);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    font-weight: 400;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: var(--space-xs);
    background-color: var(--bg-elevated);
    background-clip: padding-box;
    color: var(--text-secondary);
    border: 1px solid var(--border-primary);
    padding: var(--space-xs) var(--space-sm);
    border-radius: var(--border-radius-sm);
    transition:
        background-color var(--transition-fast),
        border-color var(--transition-fast),
        color var(--transition-fast);
    text-decoration: none;
}

:is(.legacy-context, .uds-page) button:not([class]):hover,
:is(.legacy-context, .uds-page) button[class=""]:hover {
    background-color: var(--bg-secondary);
    border-color: var(--border-focus);
    color: var(--text-primary);
}

:is(.legacy-context, .uds-page) button:not([class]):focus-visible,
:is(.legacy-context, .uds-page) button[class=""]:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: 2px;
    box-shadow: 0 0 0 3px var(--border-focus);
    border-color: var(--accent-primary);
}

:is(.legacy-context, .uds-page) button:not([class]):disabled,
:is(.legacy-context, .uds-page) button[class=""]:disabled,
:is(.legacy-context, .uds-page) button:not([class]):disabled:hover,
:is(.legacy-context, .uds-page) button[class=""]:disabled:hover {
    opacity: 0.4;
    cursor: not-allowed;
    background-color: var(--bg-elevated);
    border-color: var(--border-primary);
    color: var(--text-secondary);
    transform: none;
}

:is(.legacy-context, .uds-page) .btn-primary {
    background: var(--accent-primary);
    color: var(--bg-primary);
    border-color: var(--accent-primary);
}

:is(.legacy-context, .uds-page) .btn-primary:hover,
:is(.legacy-context, .uds-page) .btn-primary:focus {
    background: var(--accent-hover);
    border-color: var(--accent-hover);
    color: var(--bg-primary);
}

:is(.legacy-context, .uds-page) .btn-secondary {
    background: var(--bg-tertiary);
    color: var(--text-secondary);
    border-color: var(--border-primary);
}

:is(.legacy-context, .uds-page) .btn-secondary:hover,
:is(.legacy-context, .uds-page) .btn-secondary:focus {
    background: var(--bg-secondary);
    color: var(--text-primary);
    border-color: var(--border-focus);
}

:is(.legacy-context, .uds-page) .btn-success {
    --btn-variant-color: var(--color-success);
}

:is(.legacy-context, .uds-page) .btn-warning {
    --btn-variant-color: var(--color-warning);
}

:is(.legacy-context, .uds-page) .btn-error,
:is(.legacy-context, .uds-page) .btn-danger {
    --btn-variant-color: var(--color-danger);
}

:is(.legacy-context, .uds-page) .btn-success,
:is(.legacy-context, .uds-page) .btn-warning,
:is(.legacy-context, .uds-page) .btn-error,
:is(.legacy-context, .uds-page) .btn-danger {
    background: var(--btn-variant-color);
    border-color: var(--btn-variant-color);
    color: var(--bg-primary);
}

:is(.legacy-context, .uds-page) .btn-success:hover,
:is(.legacy-context, .uds-page) .btn-success:focus,
:is(.legacy-context, .uds-page) .btn-warning:hover,
:is(.legacy-context, .uds-page) .btn-warning:focus,
:is(.legacy-context, .uds-page) .btn-error:hover,
:is(.legacy-context, .uds-page) .btn-error:focus,
:is(.legacy-context, .uds-page) .btn-danger:hover,
:is(.legacy-context, .uds-page) .btn-danger:focus {
    background: color-mix(
        in srgb,
        var(--btn-variant-color) 85%,
        var(--text-white) 15%
    );
    border-color: color-mix(
        in srgb,
        var(--btn-variant-color) 75%,
        var(--border-focus) 25%
    );
    color: var(--bg-primary);
}

:is(.legacy-context, .uds-page) .btn-small,
:is(.legacy-context, .uds-page) .btn.btn-small {
    padding: var(--space-xs) var(--space-sm);
    font-size: var(--font-xs);
}

:is(.legacy-context, .uds-page) .back-link {
    display: inline-flex;
    align-items: center;
    gap: var(--space-xs);
    padding: var(--space-xs) var(--space-sm);
    border: 1px solid var(--accent-primary);
    color: var(--accent-primary);
    text-decoration: none;
    transition:
        background var(--transition-fast),
        color var(--transition-fast);
}

:is(.legacy-context, .uds-page) .back-link:hover {
    background: var(--accent-primary);
    color: var(--bg-primary);
}

/* Skins page -------------------------------------------------------------- */
:is(.legacy-context, .uds-page) .skins-page {
    background: var(--bg-primary);
    color: var(--text-primary);
    font-family: "JetBrains Mono", monospace;
}

:is(.legacy-context, .uds-page) .skins-page__status-bar {
    display: flex;
    gap: var(--space-lg);
    flex-wrap: wrap;
    font-size: var(--font-md);
    color: var(--text-muted);
    align-items: center;
    margin-bottom: var(--space-xl);
}

@media (max-width: 768px) {
    :is(.legacy-context, .uds-page)
        .skins-page__status-bar
        .skins-page__status-item--secondary {
        display: none;
    }
}

:is(.legacy-context, .uds-page) .skins-page__status-item {
    padding: var(--space-sm) var(--space-md);
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    color: var(--text-secondary);
    font-size: var(--font-md);
}

:is(.legacy-context, .uds-page) .skins-page__status-item--count-only {
    background: none;
    border: none;
    padding: 0;
    color: var(--text-muted);
}

:is(.legacy-context, .uds-page) .skins-page__filters {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    padding: var(--space-xl);
    margin-bottom: calc(var(--space-xl) + var(--space-xs));
}

:is(.legacy-context, .uds-page) .skins-page__filters-row {
    display: flex;
    gap: var(--space-xl);
    flex-wrap: wrap;
    align-items: center;
}

:is(.legacy-context, .uds-page) .skins-page__filter-label {
    font-size: var(--font-md);
    color: var(--text-secondary);
    font-weight: 500;
}

:is(.legacy-context, .uds-page) .skins-page__filter-select {
    background: var(--bg-tertiary);
    border: 1px solid var(--border-secondary);
    color: var(--text-primary);
    padding: var(--space-sm) var(--space-lg);
    font-size: var(--font-md);
    cursor: pointer;
}

:is(.legacy-context, .uds-page) .skins-page__filter-select:focus-visible {
    border-color: var(--border-focus);
}

:is(.legacy-context, .uds-page) .skins-page__grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: var(--space-xl);
    margin-bottom: calc(var(--space-xl) + var(--space-md));
}

@media (min-width: 1024px) {
    :is(.legacy-context, .uds-page) .skins-page__grid {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* Ensure 2 columns on tablet */
@media (min-width: 768px) and (max-width: 1023px) {
    :is(.legacy-context, .uds-page) .skins-page__grid {
        grid-template-columns: repeat(2, 1fr);
    }
}

/* Single column on mobile */
@media (max-width: 767px) {
    :is(.legacy-context, .uds-page) .skins-page__grid {
        grid-template-columns: 1fr;
    }
}

:is(.legacy-context, .uds-page) .skins-page__card {
    background: var(--bg-secondary);
    border: 1px solid var(--border-primary);
    overflow: hidden;
    transition:
        border-color var(--transition-base),
        background var(--transition-base);
}

:is(.legacy-context, .uds-page) .skins-page__card:hover {
    border-color: var(--accent-primary);
    background: var(--bg-elevated);
}

:is(.legacy-context, .uds-page) .skins-page__card-image {
    width: 100%;
    aspect-ratio: 280 / 200;
    background: var(--bg-tertiary);
    display: flex;
    align-items: center;
    justify-content: center;
    position: relative;
    overflow: hidden;
}

:is(.legacy-context, .uds-page) .skins-page__card-image img {
    max-width: 100%;
    max-height: 100%;
    object-fit: contain;
}

:is(.legacy-context, .uds-page) .skins-page__card-image-placeholder {
    color: var(--text-muted);
    font-size: var(--font-md);
}

:is(.legacy-context, .uds-page) .skins-page__card-info {
    padding: var(--space-lg);
}

:is(.legacy-context, .uds-page) .skins-page__card-name {
    font-size: var(--font-xl);
    font-weight: 600;
    color: var(--text-primary);
    margin-bottom: var(--space-xs);
}

:is(.legacy-context, .uds-page) .skins-page__card-type {
    font-size: var(--font-sm);
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin-bottom: var(--space-sm);
}

:is(.legacy-context, .uds-page) .skins-page__card-creator {
    font-size: var(--font-md);
    color: var(--text-secondary);
    margin-bottom: var(--space-md);
}

:is(.legacy-context, .uds-page) .skins-page__card-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: var(--space-sm);
}

:is(.legacy-context, .uds-page) .skins-page__card-price {
    font-size: var(--font-lg);
    font-weight: 600;
    color: var(--accent-primary);
}

:is(.legacy-context, .uds-page) .skins-page__action-button {
    background: var(--bg-tertiary);
    border: 1px solid var(--accent-primary);
    color: var(--text-secondary);
    padding: var(--space-xs) var(--space-md);
    text-decoration: none;
    font-size: var(--font-sm);
    text-transform: uppercase;
    letter-spacing: 0.03em;
    transition:
        background var(--transition-base),
        color var(--transition-base),
        border-color var(--transition-base);
}

:is(.legacy-context, .uds-page) .skins-page__action-button:hover {
    background: var(--accent-primary);
    color: var(--bg-primary);
}

:is(.legacy-context, .uds-page) .skins-page__action-button:focus-visible {
    outline: 2px solid var(--accent-primary);
    outline-offset: var(--space-4xs);
}

:is(.legacy-context, .uds-page) .skins-page__error {
    background: color-mix(
        in srgb,
        var(--color-danger) 20%,
        var(--bg-secondary) 80%
    );
    border: 1px solid
        color-mix(in srgb, var(--color-danger) 55%, var(--border-primary) 45%);
    color: var(--color-danger);
    padding: var(--space-lg);
    margin: var(--space-xl) 0;
    text-align: center;
}

:is(.legacy-context, .uds-page) .skins-page__footer {
    margin-top: calc(var(--space-xl) * 2.5);
    text-align: center;
    color: var(--text-muted);
    font-size: var(--font-md);
    border-top: 1px solid var(--border-primary);
    padding-top: var(--space-xl);
}
