:root{--brand-red: #df001d;--brand-gray: #54575b;--ground: #ffffff;--surface: #ffffff;--surface-muted: #f3f3f4;--ink: #2b2e31;--ink-soft: #6e7176;--line: #e3e4e5;--line-strong: #8e9296;--accent: var(--brand-red);--chrome: #ffffff;--chrome-ink: var(--ink);--danger: var(--brand-red);--danger-soft: #fceaec;--success: #28684a;--success-soft: #eef3f0;--warning: #8a6100;--warning-soft: #f7f2e8;--font-sans: system-ui, -apple-system, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-brand: "Times New Roman", Times, Georgia, serif;--radius: 2px;--radius-lg: var(--radius);--shadow: none;--space-xs: .25rem;--space-sm: .5rem;--space-md: 1rem;--space-lg: 1.5rem;--space-xl: 2.5rem;--on-accent: #ffffff;--on-dark: #ffffff;--on-camera: rgba(255, 255, 255, .9);--chrome-ink-suave: rgba(43, 46, 49, .06);--chrome-ink-borde: rgba(43, 46, 49, .24);--overlay-scrim: rgba(0, 0, 0, .45);--camera-backdrop: #000000;--ink-scrim: rgba(43, 46, 49, .8)}*{box-sizing:border-box}html,body,#root{height:100%}body{margin:0;overflow-x:hidden;background:var(--ground);color:var(--ink);font-family:var(--font-sans);-webkit-tap-highlight-color:transparent}button{font-family:inherit}.logotipo-img{display:block;width:auto;object-fit:contain}.logotipo-img--sm{height:28px}.logotipo-img--md{height:44px}.logotipo{display:inline-flex;align-items:center;gap:var(--space-sm)}.logotipo__cuadrado{flex:0 0 auto;background:var(--brand-red)}.logotipo__texto{display:flex;flex-direction:column;align-items:flex-end;color:var(--brand-gray);font-family:var(--font-brand);line-height:1}.logotipo__lidherma{letter-spacing:.28em;margin-right:-.28em}.logotipo__skinhouse{margin-top:.28em;letter-spacing:.02em;font-size:.75em}.logotipo__skinhouse b{font-weight:700}.logotipo--sm .logotipo__cuadrado{width:18px;height:18px}.logotipo--sm .logotipo__lidherma{font-size:.9375rem}.logotipo--md .logotipo__cuadrado{width:28px;height:28px}.logotipo--md .logotipo__lidherma{font-size:1.375rem}.app-shell{min-height:100%;display:flex;flex-direction:column}.app-header{position:sticky;top:0;z-index:10;display:grid;grid-template-columns:1fr auto 1fr;grid-template-areas:". marca salir" "local local local" "nav nav nav";align-items:center;gap:var(--space-sm) var(--space-md);padding:var(--space-md) var(--space-md) 0;background:var(--chrome);color:var(--chrome-ink);border-bottom:1px solid var(--line)}.app-header .logotipo,.app-header .logotipo-img{grid-area:marca;justify-self:center}.app-header-location{grid-area:local;display:flex;align-items:center;gap:var(--space-sm);min-width:0;font-weight:600;font-size:.9375rem;color:var(--ink-soft)}.app-header-location-dot{width:8px;height:8px;border-radius:50%;background:var(--success);flex-shrink:0}.app-header-location-nombre{min-width:0;overflow-wrap:break-word}.app-header-nav{grid-area:nav;display:flex;flex-wrap:wrap;gap:var(--space-lg);margin-top:var(--space-md)}.app-header-link{position:relative;display:inline-flex;align-items:center;gap:var(--space-sm);padding:var(--space-sm) 0;min-height:44px;border-bottom:2px solid transparent;color:var(--ink-soft);text-decoration:none;font-weight:600}.app-header-link.is-active{color:var(--ink);border-bottom-color:var(--accent)}.app-header-badge{display:inline-flex;align-items:center;justify-content:center;min-width:20px;height:20px;padding:0 var(--space-sm);border-radius:var(--radius);background:var(--accent);color:var(--on-accent);font-size:.75rem;font-weight:700}.app-header-logout{grid-area:salir;justify-self:end;background:transparent;border:1px solid var(--chrome-ink-borde);color:var(--ink-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);min-height:40px;font-weight:600;cursor:pointer}.app-content{flex:1;display:flex;flex-direction:column}.btn{-webkit-appearance:none;-moz-appearance:none;appearance:none;border:none;border-radius:var(--radius);padding:var(--space-md) var(--space-lg);font-size:1rem;font-weight:600;cursor:pointer;min-height:48px}.btn:disabled{background:var(--surface-muted);color:var(--ink-soft);border:1px solid var(--line);cursor:not-allowed}.btn-lg{min-height:60px;font-size:1.15rem;padding:var(--space-md) var(--space-lg)}.btn-primary{background:var(--accent);color:var(--on-accent)}.btn-secondary{background:var(--surface);color:var(--ink);border:1px solid var(--line-strong)}.btn-ghost{background:transparent;color:var(--ink-soft);text-decoration:underline}.field{display:flex;flex-direction:column;gap:var(--space-sm);margin-bottom:var(--space-md)}.field label{font-weight:700;font-size:.95rem;color:var(--ink)}.field input,.field select,.confirm-form input,.manual-entry input{min-height:52px;font-size:1.15rem;padding:var(--space-sm) var(--space-md);border:1px solid var(--line-strong);border-radius:var(--radius);background:var(--surface);color:var(--ink)}.field input:focus,.field select:focus,.confirm-form input:focus,.manual-entry input:focus{outline:2px solid var(--accent);outline-offset:1px}.field-error{color:var(--danger);font-weight:600;margin:0}.field-label{font-weight:700;font-size:.95rem;color:var(--ink)}.field-hint{color:var(--ink-soft);margin:0}.scanner-error{color:var(--danger);background:var(--danger-soft);border-left:2px solid var(--danger);border-radius:var(--radius);padding:var(--space-md) var(--space-md);font-weight:700;font-size:1.1875rem;margin:var(--space-md) var(--space-md)}.login-screen{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-lg)}.login-form{width:100%;max-width:360px;padding:0}.login-form .logotipo{margin-bottom:var(--space-xl)}.login-form .btn{width:100%}.login-title{margin:0;font-size:1.4rem;font-weight:600;letter-spacing:-.01em;color:var(--ink)}.login-subtitle{margin:var(--space-xs) 0 var(--space-xl);color:var(--ink-soft)}.scanner-screen{display:flex;flex-direction:column;flex:1}.scanner-camera{position:relative;flex:1;min-height:55vh;background:var(--camera-backdrop);overflow:hidden;display:flex;align-items:center;justify-content:center}.scanner-camera-oculta{display:none}.scanner-video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover}.scanner-viewfinder{position:relative;width:min(70vw,280px);aspect-ratio:1;border:2px solid var(--on-camera);border-radius:var(--radius);box-shadow:0 0 0 999px var(--overlay-scrim)}.scanner-hint{position:relative;color:var(--on-dark);background:var(--ink-scrim);padding:var(--space-sm) var(--space-md);border-radius:var(--radius);margin:0 var(--space-md);font-weight:600;text-align:center}.scanner-hint-warning{background:var(--warning);color:var(--on-dark)}.manual-entry{padding:var(--space-md);background:var(--surface);border-top:1px solid var(--line)}.manual-entry label{display:block;font-weight:700;margin-bottom:var(--space-sm)}.manual-entry-row{display:flex;gap:var(--space-sm)}.manual-entry-row input{flex:1;text-transform:uppercase}.reservation-panel{flex:1;padding:var(--space-lg);display:flex;flex-direction:column;gap:var(--space-lg)}.reservation-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-lg);text-align:center}.reservation-card-name{margin:0 0 var(--space-sm);font-size:1.6rem;font-weight:600;letter-spacing:-.01em}.reservation-card-benefit{margin:0 0 var(--space-xs);font-size:1.2rem;color:var(--ink);font-weight:600}.reservation-card-terms{margin:0 0 var(--space-md);color:var(--ink-soft)}.reservation-card-clock{margin:0;font-weight:700;font-size:1.1rem}.reservation-card-clock.is-expired{color:var(--danger)}.reservation-actions{display:flex;flex-direction:column;gap:var(--space-md)}.confirm-form{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-lg)}.confirm-form-actions{display:flex;flex-direction:column;gap:var(--space-md);margin-top:var(--space-sm)}.scanner-success{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:var(--space-lg);padding:var(--space-lg);text-align:center}.pending-screen{padding:var(--space-lg)}.pending-title{margin:0 0 var(--space-xs)}.pending-subtitle{color:var(--ink-soft);margin:0 0 var(--space-lg)}.pending-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:var(--space-sm)}.pending-item{background:var(--surface);border:1px solid var(--line);border-left:2px solid var(--warning);border-radius:var(--radius);padding:var(--space-md) var(--space-md)}.pending-item-main{display:flex;justify-content:space-between;font-weight:700;margin-bottom:var(--space-xs)}.pending-item-meta{display:flex;justify-content:space-between;color:var(--ink-soft);font-size:.9rem}.pending-item-actions{display:flex;gap:var(--space-sm);margin-top:var(--space-sm)}.pending-amount-form{margin-top:var(--space-sm)}.pending-amount-form .field{margin-bottom:var(--space-sm)}.admin-placeholder{padding:var(--space-xl);color:var(--ink-soft)}.app-loading{flex:1;display:flex;align-items:center;justify-content:center;padding:var(--space-lg);color:var(--ink-soft)}.app-shell-admin .app-header-admin{gap:var(--space-lg)}.admin-screen{padding:var(--space-xl) var(--space-md);max-width:1120px;width:100%}.admin-screen h1{margin:0 0 var(--space-lg);font-size:1.5rem;font-weight:600;letter-spacing:-.01em}.admin-screen h2{margin:var(--space-xl) 0 var(--space-sm);font-size:.6875rem;font-weight:700;text-transform:uppercase;letter-spacing:.12em;color:var(--ink-soft)}.segment-builder-hint{color:var(--ink-soft);margin:0 0 var(--space-lg)}.segment-builder-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:var(--space-sm) var(--space-lg)}.segment-builder-checkbox{display:flex;align-items:center;gap:var(--space-sm);font-weight:700;margin-bottom:var(--space-md)}.segment-builder-count{margin:var(--space-sm) 0 var(--space-lg);min-height:1.5em}.segment-count{font-size:1.3rem;font-weight:700;color:var(--ink);margin:0}.segment-count-loading,.segment-count-hint{color:var(--ink-soft);margin:0}.segment-count-empty{color:var(--warning);background:var(--warning-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);font-weight:600;margin:0}.segment-count-error{color:var(--danger);margin:0}.segment-builder-save{display:flex;flex-wrap:wrap;align-items:flex-end;gap:var(--space-md);padding-top:var(--space-md);border-top:1px solid var(--line)}.segment-builder-save .field{flex:1;margin-bottom:0}.segment-save-success{color:var(--success);background:var(--success-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);margin-top:var(--space-md);font-weight:600}.segment-save-error{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);margin-top:var(--space-md);font-weight:700;font-size:1.1875rem}.segment-saved-list ul{margin:0;padding-left:var(--space-lg)}.segment-saved-empty{color:var(--ink-soft)}.users-filters{display:flex;gap:var(--space-lg);flex-wrap:wrap}.users-warning{color:var(--warning);background:var(--warning-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);font-weight:600;margin:var(--space-sm) 0 var(--space-md)}.users-error{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);font-weight:700;font-size:1.1875rem;margin:var(--space-sm) 0 var(--space-md)}.users-empty{color:var(--ink-soft);padding:var(--space-md) 0}.users-table-hint{display:none;color:var(--ink-soft);font-size:.8125rem;margin:var(--space-sm) 0 0}@media(max-width:640px){.users-table-hint{display:block}}.users-table-scroll{width:100%;overflow-x:auto}.users-table{width:100%;min-width:640px;border-collapse:collapse;margin-top:var(--space-sm)}.users-table th,.users-table td{text-align:left;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--line)}.users-table th{color:var(--ink-soft);font-size:.6875rem;text-transform:uppercase;letter-spacing:.12em}.users-badge-review{display:inline-block;background:var(--warning-soft);color:var(--warning);border-radius:var(--radius);padding:var(--space-xs) var(--space-sm);font-size:.8rem;font-weight:700}.campaign-hint{color:var(--ink-soft);font-size:.9rem;margin:var(--space-xs) 0 0}.campaign-channels{border:none;padding:0;margin:0 0 var(--space-md)}.campaign-channels legend{font-weight:700;margin-bottom:var(--space-sm)}.campaign-channel-option{display:flex;align-items:center;gap:var(--space-sm);margin-bottom:var(--space-sm)}.campaign-confirm-warning{background:var(--warning-soft);color:var(--warning);border-radius:var(--radius);padding:var(--space-md) var(--space-md);font-weight:600}.campaign-confirm-summary{display:grid;grid-template-columns:max-content 1fr;gap:var(--space-sm) var(--space-md);margin:var(--space-md) 0}.campaign-confirm-summary dt{color:var(--ink-soft);font-weight:600}.campaign-confirm-summary dd{margin:0;font-weight:700}.campaign-confirm-empty{color:var(--danger);background:var(--danger-soft);border-radius:var(--radius);padding:var(--space-sm) var(--space-md);font-weight:700;font-size:1.1875rem}.campaign-confirm-error{color:var(--danger);font-weight:600}.campaign-confirm-actions{display:flex;gap:var(--space-md);margin-top:var(--space-md)}.campaign-success{background:var(--success-soft);border-radius:var(--radius);padding:var(--space-lg);text-align:center}.campaign-success p{color:var(--success);font-weight:600;margin:0 0 var(--space-md)}.metrics-summary{display:flex;gap:var(--space-lg);flex-wrap:wrap;margin-bottom:var(--space-lg)}.metrics-tile{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-lg) var(--space-lg);display:flex;flex-direction:column;gap:var(--space-sm);min-width:220px}@media(max-width:640px){.metrics-tile{flex:1 1 100%}}.metrics-tile-label{color:var(--ink-soft);font-size:.6875rem;text-transform:uppercase;letter-spacing:.12em}.metrics-tile-value{font-size:1.6rem;font-weight:600;letter-spacing:-.01em}.metrics-tile-value-empty{font-size:1rem;font-weight:600;color:var(--ink-soft)}.metrics-tile-note{color:var(--ink-soft);font-size:.85rem}.metrics-segments-hint{color:var(--ink-soft);margin:0 0 var(--space-md)}.metrics-segments-empty{color:var(--ink-soft)}.metrics-cards{display:grid;gap:var(--space-md);list-style:none;margin:0 0 var(--space-lg);padding:0}.metrics-card{background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);padding:var(--space-md) var(--space-lg)}.metrics-card-titulo{margin:0 0 var(--space-sm);font-weight:600}.metrics-card-datos{margin:0}.metrics-card-fila{display:flex;align-items:baseline;justify-content:space-between;gap:var(--space-md);padding:var(--space-xs) 0;border-bottom:1px solid var(--line)}.metrics-card-fila:last-child{border-bottom:none}.metrics-card-fila dt{color:var(--ink-soft);font-size:.8125rem}.metrics-card-fila dd{margin:0;font-weight:600;font-size:1.0625rem}.metrics-table-scroll{display:none;width:100%;overflow-x:auto}.metrics-table{width:100%;min-width:480px;border-collapse:collapse}.metrics-table th,.metrics-table td{text-align:left;padding:var(--space-sm) var(--space-md);border-bottom:1px solid var(--line)}.metrics-table th{color:var(--ink-soft);font-size:.6875rem;text-transform:uppercase;letter-spacing:.12em}@media(min-width:641px){.metrics-cards{display:none}.metrics-table-scroll{display:block}}.metrics-locations{margin-top:var(--space-xl)}
