/* Reset & Base */
* {
    margin: 0;
    padding: 0;
    box-sizing: border-box;
    -webkit-tap-highlight-color: transparent;
    /* Remove blue highlight on mobile tap */
}

body {
    font-family: var(--font-main);
    background-color: var(--bg-app);
    color: var(--text-primary);
    line-height: 1.5;
    overflow-x: hidden;
    min-height: 100vh;
    padding-bottom: 80px;
    /* Space for bottom nav */
    -webkit-user-select: none;
    -moz-user-select: none;
    -ms-user-select: none;
    user-select: none;
    -webkit-touch-callout: none;
}

input,
textarea {
    -webkit-user-select: text;
    -moz-user-select: text;
    -ms-user-select: text;
    user-select: text;
}

a {
    text-decoration: none;
    color: var(--color-primary);
}

html {
    color-scheme: dark;
}

button {
    cursor: pointer;
    font-family: inherit;
    border: none;
}

button:focus-visible,
.text-link {
    background: none;
    border: none;
    color: var(--color-primary);
    font-size: 0.85rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    text-decoration: underline;
    opacity: 0.8;
    transition: var(--transition-fast);
}

.text-link:hover {
    opacity: 1;
}

.margin-top-xs {
    margin-top: 8px;
}

.margin-top-md {
    margin-top: 16px;
}

.margin-bottom-md {
    margin-bottom: 16px;
}

input:focus {
    outline: none;
    border-color: var(--color-primary);
    box-shadow: 0 0 10px rgba(0, 255, 149, 0.2);
}

/* Native browser cleanup */

input::-webkit-contacts-auto-fill-button,
input::-webkit-credentials-auto-fill-button {
    visibility: hidden;
    display: none !important;
    pointer-events: none;
    position: absolute;
    right: 0;
}

input::-webkit-password-toggle {
    display: none;
}

/* Scrollbar */
ul {
    list-style: none;
}

/* Utilities */
.hidden {
    display: none !important;
}

.highlight {
    color: var(--color-primary);
    text-shadow: var(--shadow-neon);
}

/* Prevent body scroll when modal is open */
body.modal-open {
    overflow: hidden;
    position: fixed;
    width: 100%;
}

html {
    background-color: var(--bg-app) !important;
}

.flex-1 {
    flex: 1 !important;
}

.btn-disabled-red {
    background: #ef4444 !important;
    border-color: #ef4444 !important;
    opacity: 0.5 !important;
    cursor: not-allowed !important;
}

/* --- UTILITIES --- */
.text-center {
    text-align: center !important;
}

.text-left {
    text-align: left !important;
}

.text-right {
    text-align: right !important;
}

.text-secondary {
    color: var(--text-secondary) !important;
}

.text-muted {
    color: var(--text-muted) !important;
}

.text-primary {
    color: var(--text-primary) !important;
}

.text-danger {
    color: #ef4444 !important;
}

.text-bold {
    font-weight: bold !important;
}

.text-uppercase {
    text-transform: uppercase !important;
}

.letter-spacing-1 {
    letter-spacing: 1px !important;
}

.letter-spacing-2 {
    letter-spacing: 2px !important;
}

.pos-relative {
    position: relative !important;
}

.pos-absolute {
    position: absolute !important;
}

.w-100 {
    width: 100% !important;
}

.w-fit {
    width: fit-content !important;
}

.align-self-center {
    align-self: center !important;
}

.cursor-pointer {
    cursor: pointer !important;
}

/* Margins & Padding */
.m-0 {
    margin: 0 !important;
}

.mt-0 {
    margin-top: 0 !important;
}

.mt-10 {
    margin-top: 10px !important;
}

.mt-15 {
    margin-top: 15px !important;
}

.mt-20 {
    margin-top: 20px !important;
}

.mt-24 {
    margin-top: 24px !important;
}

.mt-25 {
    margin-top: 25px !important;
}

.mt-30 {
    margin-top: 30px !important;
}

.mt-40 {
    margin-top: 40px !important;
}

.mb-0 {
    margin-bottom: 0 !important;
}

.mb-5 {
    margin-bottom: 5px !important;
}

.mb-6 {
    margin-bottom: 6px !important;
}

.mb-8 {
    margin-bottom: 8px !important;
}

.mb-10 {
    margin-bottom: 10px !important;
}

.mb-12 {
    margin-bottom: 12px !important;
}

.mb-15 {
    margin-bottom: 15px !important;
}

.mb-20 {
    margin-bottom: 20px !important;
}

.mb-24 {
    margin-bottom: 24px !important;
}

.mb-25 {
    margin-bottom: 25px !important;
}

.my-15 {
    margin-top: 15px !important;
    margin-bottom: 15px !important;
}

.p-10 {
    padding: 10px !important;
}

.p-12 {
    padding: 12px !important;
}

.p-15 {
    padding: 15px !important;
}

.p-16 {
    padding: 16px !important;
}

.p-20 {
    padding: 20px !important;
}

.p-24 {
    padding: 24px !important;
}

.p-30 {
    padding: 30px !important;
}

.pr-10 {
    padding-right: 10px !important;
}

.pt-0 {
    padding-top: 0 !important;
}

.pt-8 {
    padding-top: 8px !important;
}

.pt-15 {
    padding-top: 15px !important;
}

.pt-20 {
    padding-top: 20px !important;
}

/* Border Radius */
.br-8 {
    border-radius: 8px !important;
}

.br-12 {
    border-radius: 12px !important;
}

.br-16 {
    border-radius: 16px !important;
}

.br-20 {
    border-radius: 20px !important;
}

.br-50 {
    border-radius: 50% !important;
}

/* Colors & Backgrounds */
.bg-rgba-3 {
    background: rgba(255, 255, 255, 0.03) !important;
}

.bg-rgba-5 {
    background: rgba(255, 255, 255, 0.05) !important;
}

.bg-rgba-10 {
    background: rgba(255, 255, 255, 0.1) !important;
}

.bg-danger-10 {
    background: rgba(239, 68, 68, 0.1) !important;
}

.bg-warning-10 {
    background: rgba(255, 193, 7, 0.1) !important;
}

.border-rgba-10 {
    border: 1px solid rgba(255, 255, 255, 0.1) !important;
}

.border-danger-30 {
    border: 1px solid rgba(239, 68, 68, 0.3) !important;
}

.border-danger-50 {
    border: 1px solid rgba(239, 68, 68, 0.5) !important;
}

.border-dashed {
    border-style: dashed !important;
}

/* Flex Helpers */
.flex {
    display: flex !important;
}

.flex-column {
    display: flex !important;
    flex-direction: column !important;
}

.align-center {
    align-items: center !important;
}

.align-start {
    align-items: flex-start !important;
}

.justify-center {
    justify-content: center !important;
}

.gap-4 {
    gap: 4px !important;
}

.gap-8 {
    gap: 8px !important;
}

.gap-10 {
    gap: 10px !important;
}

.gap-15 {
    gap: 15px !important;
}

.flex-center {
    display: flex !important;
    align-items: center !important;
    justify-content: center !important;
}

.flex-between {
    display: flex !important;
    align-items: center !important;
    justify-content: space-between !important;
}

/* Typography Extra */
.fs-08 {
    font-size: 0.8rem !important;
}

.fs-085 {
    font-size: 0.85rem !important;
}

.fs-09 {
    font-size: 0.9rem !important;
}

.fs-11 {
    font-size: 1.1rem !important;
}

.fs-14 {
    font-size: 1.4rem !important;
}

.lh-14 {
    line-height: 1.4 !important;
}

.lh-15 {
    line-height: 1.5 !important;
}

.lh-16 {
    line-height: 1.6 !important;
}