/*
 * =============================================
 * RISU DESIGN SYSTEM v1.0
 * Sistema de diseño centralizado
 * =============================================
 */

/* ===== GOOGLE FONTS ===== */
@import url('https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700;800;900&display=swap');

/* ===== CSS VARIABLES (TOKENS) ===== */
:root {
    /* Primary Colors */
    --risu-primary: #5B7FFF;
    --risu-primary-light: #E8EDFF;
    --risu-primary-dark: #4A6AE5;
    
    /* Secondary / Accent Colors */
    --risu-secondary: #FF8B5A;
    --risu-secondary-light: #FFF0EB;
    
    /* Semantic Colors */
    --risu-success: #22C55E;
    --risu-success-light: #E8FFF0;
    --risu-danger: #EF4444;
    --risu-danger-light: #FEF2F2;
    --risu-warning: #F59E0B;
    --risu-warning-light: #FFFBEB;
    
    /* Decorative Accents */
    --risu-pink: #FFB8D0;
    --risu-yellow: #FFE066;
    --risu-mint: #7DDDB3;
    --risu-purple: #A78BFA;
    
    /* Backgrounds */
    --risu-bg-main: #F0F4FF;
    --risu-bg-card: #FFFFFF;
    --risu-bg-elevated: #FFFFFF;
    
    /* Text Colors */
    --risu-text-dark: #2D3446;
    --risu-text-muted: #8E95A9;
    --risu-text-light: #FFFFFF;
    
    /* Borders & Lines */
    --risu-border: #E8ECF4;
    --risu-border-focus: var(--risu-primary);
    
    /* Shadows */
    --risu-shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.04);
    --risu-shadow-md: 0 4px 20px rgba(0, 0, 0, 0.06);
    --risu-shadow-lg: 0 8px 32px rgba(91, 127, 255, 0.12);
    --risu-shadow-primary: 0 4px 15px rgba(91, 127, 255, 0.35);
    --risu-shadow-success: 0 4px 15px rgba(34, 197, 94, 0.35);
    --risu-shadow-danger: 0 4px 15px rgba(239, 68, 68, 0.35);
    
    /* Border Radius */
    --risu-radius-xs: 6px;
    --risu-radius-sm: 10px;
    --risu-radius-md: 14px;
    --risu-radius-lg: 20px;
    --risu-radius-xl: 28px;
    --risu-radius-full: 9999px;
    
    /* Spacing */
    --risu-space-xs: 4px;
    --risu-space-sm: 8px;
    --risu-space-md: 16px;
    --risu-space-lg: 24px;
    --risu-space-xl: 32px;
    --risu-space-2xl: 48px;
    
    /* Typography */
    --risu-font-family: 'Nunito', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif;
    --risu-font-mono: 'SF Mono', 'Monaco', 'Consolas', monospace;
    
    /* Transitions */
    --risu-transition-fast: 0.15s ease;
    --risu-transition-base: 0.3s ease;
    --risu-transition-slow: 0.5s ease;
    
    /* Z-Index Scale */
    --risu-z-base: 1;
    --risu-z-dropdown: 100;
    --risu-z-sticky: 200;
    --risu-z-modal: 500;
    --risu-z-toast: 900;
    --risu-z-max: 9999;
}

/* ===== RESET & BASE ===== */
*,
*::before,
*::after {
    box-sizing: border-box;
    margin: 0;
    padding: 0;
}

html {
    -webkit-text-size-adjust: 100%;
    -webkit-tap-highlight-color: transparent;
}

body {
    font-family: var(--risu-font-family);
    font-size: 16px;
    line-height: 1.5;
    color: var(--risu-text-dark);
    background-color: var(--risu-bg-main);
    min-height: 100vh;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ===== TYPOGRAPHY ===== */
h1, h2, h3, h4, h5, h6 {
    font-weight: 800;
    line-height: 1.2;
    color: var(--risu-text-dark);
}

h1 { font-size: 28px; }
h2 { font-size: 24px; }
h3 { font-size: 20px; }
h4 { font-size: 18px; }
h5 { font-size: 16px; }
h6 { font-size: 14px; }

p {
    color: var(--risu-text-muted);
    line-height: 1.6;
}

a {
    color: var(--risu-primary);
    text-decoration: none;
    font-weight: 700;
    transition: color var(--risu-transition-fast);
}

a:hover {
    color: var(--risu-secondary);
}

/* ===== LAYOUT COMPONENTS ===== */

/* Card */
.risu-card {
    background: var(--risu-bg-card);
    border-radius: var(--risu-radius-xl);
    box-shadow: var(--risu-shadow-md);
    padding: var(--risu-space-lg);
}

.risu-card--elevated {
    box-shadow: var(--risu-shadow-lg);
}

/* Header Gradient */
.risu-header {
    background: linear-gradient(135deg, var(--risu-primary), #7B96FF);
    border-radius: var(--risu-radius-xl);
    padding: var(--risu-space-lg);
    color: var(--risu-text-light);
    position: relative;
    overflow: hidden;
}

.risu-header::before {
    content: '';
    position: absolute;
    top: -50%;
    right: -20%;
    width: 200px;
    height: 200px;
    background: rgba(255, 255, 255, 0.1);
    border-radius: 50%;
}

.risu-header::after {
    content: '';
    position: absolute;
    bottom: -30%;
    left: -10%;
    width: 150px;
    height: 150px;
    background: rgba(255, 255, 255, 0.08);
    border-radius: 50%;
}

/* Section */
.risu-section {
    margin-bottom: var(--risu-space-lg);
}

/* ===== FORM ELEMENTS ===== */

/* Input Group */
.risu-input-group {
    margin-bottom: var(--risu-space-lg);
}

.risu-label {
    display: block;
    font-size: 13px;
    font-weight: 700;
    color: var(--risu-text-dark);
    margin-bottom: var(--risu-space-sm);
    text-transform: uppercase;
    letter-spacing: 0.5px;
}

/* Input Field */
.risu-input {
    width: 100%;
    padding: 16px;
    font-family: var(--risu-font-family);
    font-size: 15px;
    font-weight: 600;
    color: var(--risu-text-dark);
    background: var(--risu-bg-main);
    border: 2px solid transparent;
    border-radius: var(--risu-radius-md);
    outline: none;
    transition: all var(--risu-transition-base);
}

.risu-input::placeholder {
    color: var(--risu-text-muted);
    font-weight: 500;
}

.risu-input:focus {
    background: var(--risu-bg-card);
    border-color: var(--risu-primary);
    box-shadow: 0 0 0 4px var(--risu-primary-light);
}

.risu-input--with-icon {
    padding-left: 50px;
}

/* Input with Icon Wrapper */
.risu-input-wrapper {
    position: relative;
}

.risu-input-icon {
    position: absolute;
    left: 16px;
    top: 50%;
    transform: translateY(-50%);
    font-size: 20px;
    color: var(--risu-text-muted);
    pointer-events: none;
    transition: color var(--risu-transition-base);
}

.risu-input-wrapper:focus-within .risu-input-icon {
    color: var(--risu-primary);
}

/* Large Input (for points, etc) */
.risu-input--large {
    padding: 20px;
    font-size: 28px;
    font-weight: 800;
    text-align: center;
    border: 3px solid var(--risu-border);
}

.risu-input--large:focus {
    border-color: var(--risu-primary);
}

/* ===== BUTTONS ===== */
.risu-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 18px 24px;
    font-family: var(--risu-font-family);
    font-size: 16px;
    font-weight: 800;
    border: none;
    border-radius: var(--risu-radius-md);
    cursor: pointer;
    transition: all var(--risu-transition-base);
    text-decoration: none;
}

.risu-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none !important;
}

/* Primary Button */
.risu-btn--primary {
    color: var(--risu-text-light);
    background: linear-gradient(135deg, var(--risu-primary), #7B96FF);
    box-shadow: var(--risu-shadow-primary);
}

.risu-btn--primary:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 6px 25px rgba(91, 127, 255, 0.45);
}

/* Success Button */
.risu-btn--success {
    color: var(--risu-text-light);
    background: linear-gradient(135deg, var(--risu-success), #4ADE80);
    box-shadow: var(--risu-shadow-success);
}

.risu-btn--success:hover:not(:disabled) {
    transform: translateY(-2px);
    box-shadow: 0 6px 25px rgba(34, 197, 94, 0.45);
}

/* Warning Button */
.risu-btn--warning {
    color: var(--risu-text-dark);
    background: linear-gradient(135deg, var(--risu-yellow), #FFD43B);
    box-shadow: 0 4px 15px rgba(255, 224, 102, 0.4);
}

/* Danger Button */
.risu-btn--danger {
    color: var(--risu-text-light);
    background: linear-gradient(135deg, var(--risu-danger), #F87171);
    box-shadow: var(--risu-shadow-danger);
}

/* Dark Button */
.risu-btn--dark {
    color: var(--risu-text-light);
    background: linear-gradient(135deg, var(--risu-text-dark), #3D4559);
    box-shadow: 0 4px 15px rgba(45, 52, 70, 0.25);
}

/* Outline Button */
.risu-btn--outline {
    color: var(--risu-text-muted);
    background: transparent;
    border: 2px solid var(--risu-border);
    box-shadow: none;
}

.risu-btn--outline:hover:not(:disabled) {
    border-color: var(--risu-text-muted);
    color: var(--risu-text-dark);
}

/* Ghost Button (for headers) */
.risu-btn--ghost {
    background: rgba(255, 255, 255, 0.2);
    color: var(--risu-text-light);
    padding: 10px 16px;
    font-size: 13px;
    width: auto;
    backdrop-filter: blur(10px);
}

.risu-btn--ghost:hover:not(:disabled) {
    background: rgba(255, 255, 255, 0.3);
}

/* Small Button */
.risu-btn--sm {
    padding: 12px 16px;
    font-size: 14px;
}

/* ===== TABS ===== */
.risu-tabs {
    display: flex;
    background: var(--risu-bg-main);
    border-radius: var(--risu-radius-md);
    padding: 5px;
    margin-bottom: var(--risu-space-lg);
}

.risu-tab {
    flex: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    padding: 14px 16px;
    border: none;
    background: transparent;
    font-family: var(--risu-font-family);
    font-size: 14px;
    font-weight: 700;
    color: var(--risu-text-muted);
    border-radius: var(--risu-radius-sm);
    cursor: pointer;
    transition: all var(--risu-transition-base);
}

.risu-tab:hover:not(.risu-tab--active) {
    color: var(--risu-text-dark);
}

.risu-tab--active {
    background: var(--risu-bg-card);
    color: var(--risu-primary);
    box-shadow: var(--risu-shadow-md);
}

/* ===== BADGES ===== */
.risu-badge {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 6px 12px;
    font-size: 13px;
    font-weight: 700;
    border-radius: var(--risu-radius-full);
}

.risu-badge--primary {
    background: var(--risu-primary-light);
    color: var(--risu-primary);
}

.risu-badge--success {
    background: var(--risu-success-light);
    color: var(--risu-success);
}

.risu-badge--warning {
    background: var(--risu-warning-light);
    color: var(--risu-warning);
}

.risu-badge--danger {
    background: var(--risu-danger-light);
    color: var(--risu-danger);
}

.risu-badge--light {
    background: rgba(255, 255, 255, 0.2);
    color: var(--risu-text-light);
}

/* ===== MESSAGES / ALERTS ===== */
.risu-message {
    padding: 14px 18px;
    border-radius: var(--risu-radius-sm);
    font-size: 14px;
    font-weight: 600;
    text-align: center;
    animation: risu-fadeIn 0.3s ease;
}

.risu-message--success {
    background: var(--risu-success-light);
    color: var(--risu-success);
}

.risu-message--warning {
    background: var(--risu-warning-light);
    color: var(--risu-warning);
}

.risu-message--error {
    background: var(--risu-danger-light);
    color: var(--risu-danger);
}

/* ===== REWARD ITEMS ===== */
.risu-reward {
    display: flex;
    justify-content: space-between;
    align-items: center;
    background: var(--risu-bg-card);
    padding: 14px 16px;
    border-radius: var(--risu-radius-md);
    margin-bottom: 10px;
    transition: all var(--risu-transition-fast);
}

.risu-reward--available {
    border-left: 4px solid var(--risu-success);
}

.risu-reward--upcoming {
    border-left: 4px solid var(--risu-secondary);
}

.risu-reward__name {
    font-size: 14px;
    font-weight: 700;
    color: var(--risu-text-dark);
}

.risu-reward__points {
    font-size: 13px;
    font-weight: 800;
    padding: 6px 12px;
    border-radius: var(--risu-radius-full);
}

.risu-reward--available .risu-reward__points {
    background: var(--risu-success-light);
    color: var(--risu-success);
}

.risu-reward--upcoming .risu-reward__points {
    background: var(--risu-secondary-light);
    color: var(--risu-secondary);
}

/* ===== DIVIDER ===== */
.risu-divider {
    display: flex;
    align-items: center;
    margin: var(--risu-space-lg) 0;
    color: var(--risu-text-muted);
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 1px;
}

.risu-divider::before,
.risu-divider::after {
    content: '';
    flex: 1;
    height: 2px;
    background: var(--risu-border);
    border-radius: 1px;
}

.risu-divider::before { margin-right: var(--risu-space-md); }
.risu-divider::after { margin-left: var(--risu-space-md); }

/* ===== BOTTOM NAVIGATION ===== */
.risu-bottom-nav {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--risu-bg-card);
    /* safe-area-inset-bottom para iPhones con home indicator */
    padding: 12px 20px calc(24px + env(safe-area-inset-bottom, 0px));
    display: flex;
    justify-content: space-around;
    box-shadow: 0 -4px 20px rgba(0, 0, 0, 0.08);
    border-top-left-radius: var(--risu-radius-xl);
    border-top-right-radius: var(--risu-radius-xl);
    z-index: var(--risu-z-sticky);
    /* Promoción a capa GPU: estabiliza position:fixed en iOS Safari y Android
       Chrome cuando la barra de URL se retrae/expande durante el scroll. Sin
       esto, el nav puede “saltar” o parecer que se mueve con la página. */
    transform: translateZ(0);
    -webkit-transform: translateZ(0);
    will-change: transform;
    /* Asegura que no sea afectado por el rubber-banding del body */
    backface-visibility: hidden;
    -webkit-backface-visibility: hidden;
}

.risu-nav-item {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    background: none;
    border: none;
    font-family: var(--risu-font-family);
    font-size: 11px;
    font-weight: 700;
    color: var(--risu-text-muted);
    cursor: pointer;
    padding: 8px 16px;
    border-radius: var(--risu-radius-sm);
    transition: all var(--risu-transition-fast);
}

.risu-nav-item:hover {
    color: var(--risu-text-dark);
}

.risu-nav-item--active {
    color: var(--risu-primary);
    background: var(--risu-primary-light);
}

.risu-nav-icon {
    font-size: 24px;
}

/* ===== DECORATIVE SHAPES ===== */
.risu-bg-shapes {
    position: fixed;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
    pointer-events: none;
    overflow: hidden;
    z-index: 0;
}

.risu-shape {
    position: absolute;
    border-radius: 50%;
    opacity: 0.6;
    animation: risu-float 8s ease-in-out infinite;
}

.risu-shape--1 {
    width: 200px;
    height: 200px;
    background: linear-gradient(135deg, var(--risu-pink), var(--risu-primary-light));
    top: -50px;
    right: -50px;
}

.risu-shape--2 {
    width: 150px;
    height: 150px;
    background: linear-gradient(135deg, var(--risu-mint), var(--risu-yellow));
    bottom: 10%;
    left: -40px;
    animation-delay: -2s;
}

.risu-shape--3 {
    width: 100px;
    height: 100px;
    background: linear-gradient(135deg, var(--risu-secondary), var(--risu-yellow));
    top: 40%;
    right: -30px;
    animation-delay: -4s;
}

.risu-shape--4 {
    width: 80px;
    height: 80px;
    background: linear-gradient(135deg, var(--risu-primary), var(--risu-mint));
    bottom: 20%;
    right: 20%;
    animation-delay: -6s;
}

/* ===== ANIMATIONS ===== */
@keyframes risu-float {
    0%, 100% { transform: translateY(0) rotate(0deg); }
    50% { transform: translateY(-20px) rotate(5deg); }
}

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

@keyframes risu-slideUp {
    from { opacity: 0; transform: translateY(30px); }
    to { opacity: 1; transform: translateY(0); }
}

@keyframes risu-shake {
    0%, 100% { transform: translateX(0); }
    25% { transform: translateX(-5px); }
    75% { transform: translateX(5px); }
}

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

@keyframes risu-pulse {
    0%, 100% { transform: scale(1); }
    50% { transform: scale(1.05); }
}

@keyframes risu-jackpotPop {
    0% { transform: translateX(-50%) scale(0.5); opacity: 0; }
    100% { transform: translateX(-50%) scale(1); opacity: 1; }
}

/* Animation Classes */
.risu-animate-fadeIn { animation: risu-fadeIn 0.4s ease; }
.risu-animate-slideUp { animation: risu-slideUp 0.6s ease-out; }
.risu-animate-shake { animation: risu-shake 0.4s ease; }
.risu-animate-pulse { animation: risu-pulse 2s ease-in-out infinite; }

/* ===== SPINNER ===== */
.risu-spinner {
    width: 20px;
    height: 20px;
    border: 3px solid rgba(255, 255, 255, 0.3);
    border-top-color: white;
    border-radius: 50%;
    animation: risu-spin 0.8s linear infinite;
}

.risu-spinner--dark {
    border-color: rgba(0, 0, 0, 0.1);
    border-top-color: var(--risu-primary);
}

/* ===== JACKPOT ALERT ===== */
.risu-jackpot {
    display: none;
    position: fixed;
    top: 20px;
    left: 50%;
    transform: translateX(-50%);
    z-index: var(--risu-z-max);
    background: linear-gradient(135deg, var(--risu-success), var(--risu-mint));
    color: white;
    padding: 24px 32px;
    border-radius: var(--risu-radius-lg);
    font-size: 18px;
    font-weight: 800;
    text-align: center;
    box-shadow: 0 10px 40px rgba(34, 197, 94, 0.4);
    min-width: 300px;
    max-width: 90vw;
    animation: risu-jackpotPop 0.5s cubic-bezier(0.175, 0.885, 0.32, 1.275);
}

.risu-jackpot--visible {
    display: block;
}

/* ===== OFFLINE BANNER ===== */
.risu-offline-banner {
    display: none;
    position: fixed;
    bottom: 80px;
    left: var(--risu-space-md);
    right: var(--risu-space-md);
    background: var(--risu-warning);
    color: white;
    padding: 14px 20px;
    border-radius: var(--risu-radius-md);
    font-size: 14px;
    font-weight: 700;
    text-align: center;
    z-index: var(--risu-z-sticky);
    box-shadow: 0 4px 20px rgba(245, 158, 11, 0.4);
}

.risu-offline-banner--visible {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
}

/* ===== UTILITIES ===== */
.risu-text-center { text-align: center; }
.risu-text-left { text-align: left; }
.risu-text-right { text-align: right; }

.risu-text-muted { color: var(--risu-text-muted); }
.risu-text-primary { color: var(--risu-primary); }
.risu-text-success { color: var(--risu-success); }
.risu-text-danger { color: var(--risu-danger); }

.risu-font-bold { font-weight: 700; }
.risu-font-black { font-weight: 900; }

.risu-mt-sm { margin-top: var(--risu-space-sm); }
.risu-mt-md { margin-top: var(--risu-space-md); }
.risu-mt-lg { margin-top: var(--risu-space-lg); }
.risu-mb-sm { margin-bottom: var(--risu-space-sm); }
.risu-mb-md { margin-bottom: var(--risu-space-md); }
.risu-mb-lg { margin-bottom: var(--risu-space-lg); }

.risu-p-md { padding: var(--risu-space-md); }
.risu-p-lg { padding: var(--risu-space-lg); }

.risu-hidden { display: none !important; }
.risu-visible { display: block !important; }

.risu-flex { display: flex; }
.risu-flex-center { display: flex; align-items: center; justify-content: center; }
.risu-flex-between { display: flex; align-items: center; justify-content: space-between; }
.risu-flex-col { flex-direction: column; }
.risu-gap-sm { gap: var(--risu-space-sm); }
.risu-gap-md { gap: var(--risu-space-md); }

/* ===== RESPONSIVE ===== */
@media (max-width: 420px) {
    :root {
        --risu-radius-xl: 24px;
        --risu-radius-lg: 18px;
    }
    
    h1 { font-size: 24px; }
    h2 { font-size: 20px; }
    
    .risu-card {
        padding: var(--risu-space-md);
    }
    
    .risu-btn {
        padding: 16px 20px;
        font-size: 15px;
    }
    
    .risu-shape--1 { width: 150px; height: 150px; }
    .risu-shape--2 { width: 100px; height: 100px; }
    .risu-shape--3 { width: 70px; height: 70px; }
}

/* ===== INTL-TEL-INPUT OVERRIDES ===== */
.iti {
    width: 100%;
}

.iti__tel-input {
    width: 100%;
    padding: 16px 16px 16px 52px;
    font-family: var(--risu-font-family);
    font-size: 15px;
    font-weight: 600;
    color: var(--risu-text-dark);
    background: var(--risu-bg-main);
    border: 2px solid transparent;
    border-radius: var(--risu-radius-md);
    outline: none;
    transition: all var(--risu-transition-base);
}

.iti__tel-input:focus {
    background: var(--risu-bg-card);
    border-color: var(--risu-primary);
    box-shadow: 0 0 0 4px var(--risu-primary-light);
}

/* ===== QR READER OVERRIDES ===== */
#reader {
    width: 100%;
    border-radius: var(--risu-radius-lg);
    overflow: hidden;
    border: 3px dashed var(--risu-border);
    background: var(--risu-bg-main);
}

#reader video {
    border-radius: var(--risu-radius-lg);
}
