:root {
    --app-bg:#040b14;
    --shell-bg:#07111d;
    --panel-bg:#0b1726;
    --panel-bg-soft:#09131f;
    --panel-elevated:#0f1e32;
    --panel-hover:#13253c;
    --input-bg:#0f1d30;
    --hover-bg:#17304b;
    --border:rgba(148,163,184,.14);
    --border-soft:rgba(148,163,184,.08);
    --text:#f8fbff;
    --text-strong:#ffffff;
    --text-muted:rgba(241,245,249,.84);
    --text-soft:rgba(203,213,225,.68);
    --text-faint:rgba(148,163,184,.48);
    --accent:#3b82f6;
    --accent-hover:#2563eb;
    --accent-deep:#1d4ed8;
    --accent-deep-hover:#1e40af;
    --accent-soft-bg:rgba(59,130,246,.12);
    --accent-soft-border:rgba(59,130,246,.24);
    --accent-soft-text:#93c5fd;
    --toast-bg:rgba(9,18,30,.96);
    --toast-border:rgba(148,163,184,.08);
    --shadow-heavy:0 28px 70px rgba(0,0,0,.42);
    --shadow-card:0 18px 40px rgba(0,0,0,.32);
    --shadow-pop:0 12px 28px rgba(0,0,0,.28);
    --range-track:rgba(255,255,255,.14);
    --range-thumb:#ffffff;
    --backdrop:rgba(6,14,24,.82);
    --glass-bg:rgba(7,17,29,.82);
    --glass-bg-mobile:rgba(7,17,29,.9);
}

::-webkit-scrollbar {
 display: none;
}

::-webkit-scrollbar-track {
 display: none;
}

/* ===== Overflow safety / mobile viewport protection ===== */
html,
body {
    width: 100%;
    max-width: 100%;
    overflow: hidden;
    background:
        radial-gradient(circle at top, rgba(59,130,246,.08), transparent 34%),
        linear-gradient(180deg, #040b14 0%, #050d18 100%);
    color: var(--text);
}

body {
    position: fixed;
    inset: 0;
    margin: 0;
    padding: 0;
    overscroll-behavior: none;
    -webkit-text-size-adjust: 100%;
}

#app {
    width: 100%;
    max-width: 100%;
    height: 100dvh;
    overflow: hidden;
}

*,
*::before,
*::after {
    box-sizing: border-box;
    min-width: 0;
}

img,
video,
canvas,
svg {
    display: block;
    max-width: 100%;
}

button,
input,
select,
textarea,
a {
    min-width: 0;
    max-width: 100%;
}

.app-bg {
    background:
        radial-gradient(circle at top left, rgba(59,130,246,.05), transparent 26%),
        radial-gradient(circle at top right, rgba(37,99,235,.04), transparent 24%),
        var(--app-bg);
}

.app-shell {
    background:
        linear-gradient(180deg, rgba(255,255,255,.025), rgba(255,255,255,.01)),
        linear-gradient(180deg, rgba(59,130,246,.03), transparent 18%),
        var(--shell-bg);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.02);
}

.app-panel {
    background:
        linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,0)),
        var(--panel-bg);
    border-color: var(--border);
    color: var(--text);
}

.app-panel-soft {
    background:
        linear-gradient(180deg, rgba(255,255,255,.015), rgba(255,255,255,0)),
        var(--panel-bg-soft);
    border-color: var(--border-soft);
    color: var(--text);
}

.app-panel-elevated {
    background:
        linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,0)),
        var(--panel-elevated);
    border-color: var(--border);
    color: var(--text);
}

.app-input,
.app-select {
    width: 100%;
    max-width: 100%;
    background: linear-gradient(180deg, rgba(255,255,255,.02), rgba(255,255,255,0)), var(--input-bg);
    border-color: rgba(255,255,255,.05);
    color: var(--text);
    transition: border-color .18s ease, box-shadow .18s ease, background-color .18s ease;
}

.app-input::placeholder { color: var(--text-faint); }

.app-input:hover,
.app-select:hover {
    border-color: rgba(148,163,184,.12);
}

.app-input:focus,
.app-select:focus {
    outline: none;
    border-color: rgba(147,197,253,.24);
    box-shadow: 0 0 0 1px rgba(147,197,253,.18) inset, 0 0 0 4px rgba(59,130,246,.08);
}

.app-btn-accent,
.app-btn-deep,
.app-btn-secondary,
.nav-button,
.panel-card,
.panel-card-soft,
.metric-card {
    transition: background-color .18s ease, border-color .18s ease, color .18s ease, transform .18s ease, box-shadow .18s ease, filter .18s ease;
}

.app-btn-accent {
    background: linear-gradient(180deg, var(--accent), var(--accent-hover));
    color: #fff;
    border: 1px solid rgba(255,255,255,.06);
    box-shadow: 0 10px 24px rgba(37,99,235,.22), inset 0 1px 0 rgba(255,255,255,.12);
}
.app-btn-accent:hover {
    filter: brightness(1.05);
    box-shadow: 0 14px 28px rgba(37,99,235,.28), inset 0 1px 0 rgba(255,255,255,.14);
}
.app-btn-accent:active {
    transform: translateY(1px);
}

.app-btn-deep {
    background: linear-gradient(180deg, var(--accent-deep), var(--accent-deep-hover));
    color: #fff;
    border: 1px solid rgba(255,255,255,.06);
    box-shadow: 0 10px 22px rgba(29,78,216,.18), inset 0 1px 0 rgba(255,255,255,.1);
}
.app-btn-deep:hover {
    filter: brightness(1.05);
    box-shadow: 0 14px 26px rgba(29,78,216,.24), inset 0 1px 0 rgba(255,255,255,.12);
}
.app-btn-deep:active {
    transform: translateY(1px);
}

.app-btn-secondary {
    background: rgba(255,255,255,.04);
    border-color: rgba(255,255,255,.06);
    color: var(--text-muted);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.02);
}
.app-btn-secondary:hover,
.panel-card:hover,
.nav-button:hover {
  background: var(--hover-bg);
  border-color: var(--accent-soft-border);
  color: var(--text);
}

.panel-card:hover {
  background:
    linear-gradient(180deg, rgba(255,255,255,.022), rgba(255,255,255,0)),
    var(--panel-hover);
}

.app-btn-secondary:active {
    transform: translateY(1px);
}

.app-badge-accent {
    background: linear-gradient(180deg, rgba(59,130,246,.16), rgba(59,130,246,.1));
    border-color: var(--accent-soft-border);
    color: var(--accent-soft-text);
    box-shadow: inset 0 1px 0 rgba(255,255,255,.04);
}

.text-app { color: var(--text); }
.text-app-soft { color: var(--text-soft); }
.text-app-faint { color: var(--text-faint); }
.text-app-accent { color: var(--accent-soft-text); }
.border-app { border-color: var(--border); }
.border-app-soft { border-color: var(--border-soft); }
.app-shadow-heavy { box-shadow: var(--shadow-heavy); }
.app-shadow-card { box-shadow: var(--shadow-card); }
.app-shadow-pop { box-shadow: var(--shadow-pop); }

.app-glass {
    width: 100%;
    max-width: 100%;
    background:
        linear-gradient(180deg, rgba(255,255,255,.045), rgba(255,255,255,.015)),
        var(--glass-bg);
    border-color: var(--border);
    backdrop-filter: blur(18px);
    -webkit-backdrop-filter: blur(18px);
}

.panel-card {
    width: 100%;
    max-width: 100%;
    background:
        linear-gradient(180deg, rgba(255,255,255,.018), rgba(255,255,255,0)),
        var(--panel-bg);
    border: 1px solid rgba(148,163,184,.08);
    border-radius: 0;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.015);
}

.panel-card-soft {
    width: 100%;
    max-width: 100%;
    background:
        linear-gradient(180deg, rgba(255,255,255,.015), rgba(255,255,255,0)),
        var(--panel-bg-soft);
    border: 1px solid rgba(148,163,184,.07);
    border-radius: 0;
}

.section-title { letter-spacing: -.05em; }
.cover-shadow { box-shadow: 0 18px 34px rgba(0,0,0,.28); }

.nav-button {
    border-radius: 0;
    border: 1px solid transparent;
}

.nav-button-active {
    background: var(--accent-soft-bg);
    border-color: var(--accent-soft-border);
    color: #fff;
    box-shadow: inset 0 1px 0 rgba(255,255,255,.04), 0 8px 20px rgba(37,99,235,.12);
}

.metric-card {
    border-radius: 0;
    border: 1px solid rgba(148,163,184,.08);
    background: rgba(255,255,255,.03);
}

.table-shell {
    width: 100%;
    max-width: 100%;
    min-width: 0;
    overflow: hidden;
    border-radius: 0;
    border: 1px solid rgba(148,163,184,.08);
    background:
        linear-gradient(180deg, rgba(255,255,255,.015), rgba(255,255,255,0)),
        rgba(255,255,255,.02);
}

.media-tile {
    width: 100%;
    max-width: 100%;
    border-radius: 0;
    overflow: hidden;
    background: #000;
    box-shadow: inset 0 0 0 1px rgba(255,255,255,.02);
}

.hero-strip {
    background:
        radial-gradient(circle at top right, rgba(59,130,246,.22), transparent 38%),
        linear-gradient(135deg, rgba(59,130,246,.12), rgba(29,78,216,.06) 55%, transparent 100%);
}

.hero-grid {
    background-image:
        linear-gradient(rgba(255,255,255,.03) 1px, transparent 1px),
        linear-gradient(90deg, rgba(255,255,255,.03) 1px, transparent 1px);
    background-size: 22px 22px;
    mask-image: linear-gradient(180deg, rgba(0,0,0,.55), transparent 100%);
    -webkit-mask-image: linear-gradient(180deg, rgba(0,0,0,.55), transparent 100%);
}

.pill {
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
    border-radius: 0;
}

input[type="range"] {
    width: 100%;
    max-width: 100%;
    accent-color: var(--accent);
}

input[type="range"]::-webkit-slider-runnable-track {
    height: 4px;
    background: var(--range-track);
    border-radius: 0;
}

input[type="range"]::-moz-range-track {
    height: 4px;
    background: var(--range-track);
    border-radius: 0;
}

input[type="range"]::-webkit-slider-thumb {
    -webkit-appearance: none;
    appearance: none;
    margin-top: -6px;
    width: 16px;
    height: 16px;
    border: none;
    background: var(--range-thumb);
    border-radius: 0;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0,0,0,.35);
}

input[type="range"]::-moz-range-thumb {
    width: 16px;
    height: 16px;
    border: none;
    background: var(--range-thumb);
    border-radius: 0;
    cursor: pointer;
    box-shadow: 0 4px 14px rgba(0,0,0,.35);
}

@media (max-width: 1279px) {
    .desktop-rail {
        position: sticky;
        top: 12px;
    }
}

@media (max-width: 1023px) {
    .mobile-safe-bottom { padding-bottom: calc(env(safe-area-inset-bottom,0px) + 8px); }
    .mobile-nav-scroll {
        width: 100%;
        max-width: 100%;
        min-width: 0;
        overflow-x: auto;
        overflow-y: hidden;
        scrollbar-width: none;
    }
    .mobile-nav-scroll::-webkit-scrollbar { display: none; }

    .app-glass {
        background:
            linear-gradient(180deg, rgba(255,255,255,.04), rgba(255,255,255,.012)),
            var(--glass-bg-mobile);
    }
}

/* ===== Small phone hardening ===== */
@media (max-width: 499px) {
    .desktop-rail,
    .table-shell,
    .app-shell,
    .app-panel,
    .app-panel-soft,
    .app-panel-elevated,
    .app-glass,
    .panel-card,
    .panel-card-soft,
    .metric-card,
    .media-tile {
        width: 100%;
        max-width: 100%;
        min-width: 0;
    }

    .hero-strip,
    .hero-grid {
        max-width: 100%;
    }

    .app-btn-accent,
    .app-btn-deep,
    .app-btn-secondary,
    .nav-button {
        max-width: 100%;
    }
}   