/* ═══════════════════════════════════════════════════════════════════════════
   admin.css — Panel Admin & Negocio | Real del Monte
   Tokens: #843823 primary | #fcf9f4 surface | #2c1a14 sidebar
   ═══════════════════════════════════════════════════════════════════════════ */

/* ── Reset & base ─────────────────────────────────────────────────────────── */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

:root {
    --primary:     #843823;
    --primary-dk:  #5c2718;
    --primary-lt:  #c97a52;
    --surface:     #f6f4f0;
    --surface-2:   #eee9e0;
    --sidebar-bg:  #2c1a14;
    --sidebar-txt: #d4b896;
    --border:      #e4dcd0;
    --text:        #2c2218;
    --text-muted:  #8a7a6d;
    --success:     #2d7a4f;
    --warning:     #c27d1a;
    --error-clr:   #b03a2e;
    --info:        #1a6c93;
    --radius:      12px;
    --radius-lg:   16px;
    --shadow-sm:   0 1px 3px rgba(40,20,5,.06);
    --shadow:      0 4px 20px rgba(40,20,5,.08);
    --shadow-lg:   0 8px 30px rgba(40,20,5,.12);
    --fz-sm:       .825rem;
    --fz-base:     .9375rem;
    --transition:  .2s cubic-bezier(.4,0,.2,1);
}

body {
    font-family: 'Work Sans', system-ui, sans-serif;
    font-size: var(--fz-base);
    color: var(--text);
    background: var(--surface);
    line-height: 1.6;
}

/* ── Layout sidebar + main ────────────────────────────────────────────────── */
.admin-body {
    display: flex;
    min-height: 100vh;
    background: var(--surface);
}

.admin-sidebar {
    width: 240px;
    min-height: 100vh;
    background: var(--sidebar-bg);
    display: flex;
    flex-direction: column;
    position: sticky;
    top: 0;
    align-self: flex-start;
    flex-shrink: 0;
}

.admin-sidebar__logo {
    padding: 1.35rem 1.15rem;
    border-bottom: 1px solid rgba(255,255,255,.06);
}
.admin-sidebar__logo a {
    display: flex;
    align-items: center;
    gap: .65rem;
    text-decoration: none;
}
.admin-sidebar__logo img {
    border-radius: 10px;
    object-fit: cover;
}
.admin-sidebar__logo span {
    color: #fff;
    font-weight: 600;
    font-size: 1rem;
    letter-spacing: -.01em;
}

.admin-sidebar__nav {
    flex: 1;
    padding: 1rem .75rem;
    display: flex;
    flex-direction: column;
    gap: .25rem;
}

.admin-nav-item {
    display: flex;
    align-items: center;
    gap: .6rem;
    padding: .7rem .9rem;
    border-radius: 10px;
    color: var(--sidebar-txt);
    text-decoration: none;
    font-size: var(--fz-sm);
    font-weight: 500;
    transition: background var(--transition), color var(--transition);
    position: relative;
}
.admin-nav-item:hover { background: rgba(255,255,255,.08); color: #fff; }
.admin-nav-item.active {
    background: var(--primary);
    color: #fff;
    box-shadow: 0 2px 8px rgba(132,56,35,.3);
}

.admin-sidebar__footer {
    padding: 1.1rem 1rem;
    border-top: 1px solid rgba(255,255,255,.06);
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .5rem;
    font-size: var(--fz-sm);
}
.admin-user {
    display: flex;
    align-items: center;
    gap: .3rem;
    color: var(--sidebar-txt);
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.admin-logout {
    color: #c97a52;
    text-decoration: none;
    font-size: .8rem;
    white-space: nowrap;
    flex-shrink: 0;
}
.admin-logout:hover { color: #fff; }

/* ── Main content ─────────────────────────────────────────────────────────── */
.admin-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    min-width: 0;
    background: var(--surface);
}

.admin-topbar {
    background: rgba(255,255,255,.85);
    backdrop-filter: blur(12px);
    -webkit-backdrop-filter: blur(12px);
    border-bottom: 1px solid var(--border);
    padding: .9rem 1.5rem;
    display: flex;
    align-items: center;
    gap: .75rem;
    flex-wrap: wrap;
}

.admin-page-title {
    font-family: 'Work Sans', system-ui, sans-serif;
    font-size: 1.25rem;
    font-weight: 700;
    color: var(--text);
    flex: 1;
    letter-spacing: -.02em;
}

.admin-breadcrumb {
    display: flex;
    align-items: center;
    gap: .3rem;
    font-size: var(--fz-sm);
    color: var(--text-muted);
}
.admin-breadcrumb a { color: var(--primary); text-decoration: none; }
.admin-breadcrumb a:hover { text-decoration: underline; }
.admin-breadcrumb .current { color: var(--text); }

.admin-content {
    padding: 1.5rem;
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    max-width: 1100px;
    width: 100%;
}

/* ── Login page ───────────────────────────────────────────────────────────── */
.admin-login-page {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 100vh;
    background: var(--surface-2);
}

.admin-login-card {
    background: #fff;
    border-radius: var(--radius);
    box-shadow: var(--shadow);
    padding: 2.5rem 2rem;
    width: 100%;
    max-width: 420px;
}

.admin-login-logo {
    text-align: center;
    margin-bottom: 2rem;
}
.admin-login-logo img {
    border-radius: 50%;
    object-fit: cover;
    margin-bottom: .75rem;
}
.admin-login-logo h1 {
    font-family: 'Newsreader', Georgia, serif;
    font-size: 1.4rem;
    font-weight: 400;
    color: var(--primary);
}
.admin-login-logo p {
    font-size: var(--fz-sm);
    color: var(--text-muted);
}

/* ── Stat cards ───────────────────────────────────────────────────────────── */
.stat-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: .85rem;
}

.stat-card {
    background: #fff;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    padding: 1.25rem;
    display: flex;
    align-items: center;
    gap: .9rem;
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--transition), transform var(--transition);
}
.stat-card:hover {
    box-shadow: var(--shadow);
    transform: translateY(-1px);
}

.stat-card__icon {
    width: 44px;
    height: 44px;
    border-radius: var(--radius);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 1.3rem;
    flex-shrink: 0;
}
.stat-card__icon--amber  { background: #fef3c7; }
.stat-card__icon--blue   { background: #dbeafe; }
.stat-card__icon--red    { background: #fee2e2; }
.stat-card__icon--green  { background: #d1fae5; }
.stat-card__icon--purple { background: #ede9fe; }
.stat-card__icon--teal   { background: #ccfbf1; }

.stat-card__body {
    display: flex;
    flex-direction: column;
    gap: .1rem;
}
.stat-card__value {
    font-size: 1.6rem;
    font-weight: 700;
    line-height: 1;
    color: var(--text);
}
.stat-card__label {
    font-size: .78rem;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: .04em;
}

/* ── Charts ───────────────────────────────────────────────────────────────── */
.chart-row {
    display: grid;
    grid-template-columns: 2fr 1fr;
    gap: 1rem;
}
.chart-card {
    background: #fff;
    border-radius: var(--radius);
    border: 1px solid var(--border);
    padding: 1.25rem;
    box-shadow: var(--shadow-sm);
}
.chart-card--wide { grid-column: span 1; }
.chart-card__title {
    font-size: .85rem;
    font-weight: 600;
    color: var(--text-muted);
    text-transform: uppercase;
    letter-spacing: .05em;
    margin-bottom: .75rem;
}

/* ── Tables ───────────────────────────────────────────────────────────────── */
.table-scroll { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.admin-table {
    width: 100%;
    border-collapse: collapse;
    font-size: var(--fz-sm);
}
.admin-table th {
    background: var(--surface);
    text-align: left;
    padding: .7rem .9rem;
    font-weight: 600;
    font-size: .75rem;
    text-transform: uppercase;
    letter-spacing: .05em;
    color: var(--text-muted);
    border-bottom: 2px solid var(--border);
}
.admin-table td {
    padding: .7rem .9rem;
    border-bottom: 1px solid var(--border);
    vertical-align: middle;
}
.admin-table tbody tr {
    transition: background var(--transition);
}
.admin-table tbody tr:hover { background: rgba(132,56,35,.03); }
.admin-table__empty {
    text-align: center;
    color: var(--text-muted);
    padding: 2rem;
}

/* ── Badges ───────────────────────────────────────────────────────────────── */
.badge {
    display: inline-block;
    padding: .15rem .55rem;
    border-radius: 100px;
    font-size: .75rem;
    font-weight: 600;
    letter-spacing: .03em;
}
.badge--success { background: #d1fae5; color: #065f46; }
.badge--warning { background: #fef3c7; color: #92400e; }
.badge--error   { background: #fee2e2; color: #991b1b; }
.badge--gray    { background: #f3f4f6; color: #4b5563; }
.badge--info    { background: #dbeafe; color: #1e40af; }
.badge-pill {
    background: var(--error-clr);
    color: #fff;
    border-radius: 100px;
    font-size: .7rem;
    padding: .1rem .4rem;
    font-weight: 700;
    line-height: 1.4;
}

/* ── Buttons ──────────────────────────────────────────────────────────────── */
.admin-btn {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    padding: .6rem 1.15rem;
    border-radius: 10px;
    font-family: 'Work Sans', sans-serif;
    font-size: var(--fz-sm);
    font-weight: 600;
    cursor: pointer;
    border: 1.5px solid transparent;
    text-decoration: none;
    transition: all var(--transition);
    white-space: nowrap;
}
.admin-btn--primary {
    background: var(--primary);
    color: #fff;
    border-color: var(--primary);
    box-shadow: 0 2px 6px rgba(132,56,35,.2);
}
.admin-btn--primary:hover { background: var(--primary-dk); border-color: var(--primary-dk); box-shadow: 0 4px 12px rgba(132,56,35,.25); transform: translateY(-1px); }
.admin-btn--success {
    background: #059669;
    color: #fff;
    border-color: #059669;
    box-shadow: 0 2px 6px rgba(5,150,105,.2);
}
.admin-btn--success:hover { background: #047857; transform: translateY(-1px); }
.admin-btn--danger  {
    background: var(--error-clr);
    color: #fff;
    border-color: var(--error-clr);
}
.admin-btn--danger:hover { background: #922b21; }
.admin-btn--ghost {
    background: #fff;
    color: var(--text);
    border-color: var(--border);
}
.admin-btn--ghost:hover { background: var(--surface-2); border-color: #ccc; }
.admin-btn--sm   { padding: .4rem .8rem; font-size: .8rem; border-radius: 8px; }
.admin-btn--full { width: 100%; justify-content: center; }

/* ── Forms ────────────────────────────────────────────────────────────────── */
.admin-field {
    display: flex;
    flex-direction: column;
    gap: .4rem;
    margin-bottom: 1rem;
}
.admin-field label {
    font-size: .8rem;
    font-weight: 600;
    color: var(--text);
    letter-spacing: .01em;
}
.admin-field input,
.admin-field select,
.admin-field textarea {
    width: 100%;
    box-sizing: border-box;
    min-width: 0;
    padding: .65rem .9rem;
    border: 1.5px solid var(--border);
    border-radius: 10px;
    font-family: inherit;
    font-size: var(--fz-base);
    color: var(--text);
    background: #fff;
    transition: border-color var(--transition), box-shadow var(--transition);
    outline: none;
}
.admin-field input:focus,
.admin-field select:focus,
.admin-field textarea:focus {
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(132,56,35,.1);
}
.admin-field small { font-size: .78rem; color: var(--text-muted); }
.admin-fields-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 0 1.15rem;
    min-width: 0;
}
.admin-field--full { grid-column: span 2; }
.admin-field-row {
    display: flex;
    justify-content: flex-end;
    gap: .75rem;
    margin-top: .75rem;
}
.required { color: var(--error-clr); }

.admin-form-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 1.75rem;
    box-shadow: var(--shadow-sm);
    overflow: hidden;
    min-width: 0;
}
.admin-form-card h3 {
    font-family: 'Work Sans', system-ui, sans-serif;
    font-size: 1.1rem;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 1.25rem;
    letter-spacing: -.01em;
}
.admin-form-hint {
    background: var(--surface-2);
    border-radius: 7px;
    padding: .75rem 1rem;
    font-size: var(--fz-sm);
    color: var(--text-muted);
    margin-bottom: 1.25rem;
}

/* ── Alerts ───────────────────────────────────────────────────────────────── */
.admin-alert {
    padding: .75rem 1rem;
    border-radius: var(--radius);
    font-size: var(--fz-sm);
    margin-bottom: .5rem;
    font-weight: 500;
}
.admin-alert--success { background: #ecfdf5; color: #065f46; border: 1px solid #a7f3d0; }
.admin-alert--error   { background: #fef2f2; color: #991b1b; border: 1px solid #fecaca; }
.admin-alert--info    { background: #eff6ff; color: #1e40af; border: 1px solid #bfdbfe; }

.admin-alert-banner {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    padding: 1rem 1.25rem;
    border-radius: var(--radius);
    font-size: var(--fz-sm);
    flex-wrap: wrap;
}
.admin-alert-banner--warning {
    background: #fffbeb;
    color: #92400e;
    border: 1px solid #fde68a;
}
.admin-alert-banner--info {
    background: #eff6ff;
    color: #1e3a8a;
    border: 1px solid #bfdbfe;
}

/* ── Sections ─────────────────────────────────────────────────────────────── */
.admin-section {
    background: #fff;
    border-radius: var(--radius-lg);
    border: 1px solid var(--border);
    padding: 1.5rem;
    box-shadow: var(--shadow-sm);
}
.admin-section__title {
    font-family: 'Work Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
    margin-bottom: 1rem;
    display: flex;
    align-items: center;
    gap: .5rem;
    letter-spacing: -.01em;
}

.admin-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: .75rem;
    margin-bottom: 1rem;
}

.admin-empty-state {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: .65rem;
    padding: 3rem 1rem;
    color: var(--text-muted);
    font-size: var(--fz-sm);
    text-align: center;
}
.text-muted { color: var(--text-muted); }

/* ── Coupon validation layouts ─────────────────────────────────────────────── */
.cupon-validar-layout {
    display: grid;
    grid-template-columns: 1fr 380px;
    gap: 1.5rem;
    align-items: start;
}
.cupon-preview-card {
    background: #fff;
    border: 2px solid var(--border);
    border-radius: var(--radius);
    padding: 1.5rem;
}
.cupon-preview-card__badge {
    display: flex;
    align-items: center;
    gap: .5rem;
    margin-bottom: .75rem;
    font-size: var(--fz-sm);
    color: var(--text-muted);
}
.cupon-preview-card__img {
    width: 100%;
    max-height: 200px;
    object-fit: cover;
    border-radius: 7px;
    margin-bottom: 1rem;
}
.cupon-preview-card__title {
    font-family: 'Newsreader', Georgia, serif;
    font-size: 1.4rem;
    font-weight: 400;
    color: var(--primary);
    margin-bottom: .5rem;
}
.cupon-preview-card__discount .discount-value {
    font-size: 2.2rem;
    font-weight: 700;
    color: var(--primary);
}
.cupon-preview-card__desc { margin: .75rem 0; color: var(--text-muted); }
.cupon-preview-card__conditions {
    background: var(--surface-2);
    border-radius: 7px;
    padding: .75rem;
    font-size: var(--fz-sm);
    margin-top: .75rem;
}
.cupon-preview-card__meta {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: .4rem .8rem;
    margin-top: 1rem;
    font-size: var(--fz-sm);
}
.cupon-preview-card__meta dt { font-weight: 600; color: var(--text-muted); }

/* ── Pending coupons grid ─────────────────────────────────────────────────── */
.cupon-pending-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
    gap: 1rem;
}
.cupon-pending-card {
    background: #fff;
    border: 1.5px solid #fcd34d;
    border-radius: var(--radius);
    padding: 1rem;
    display: flex;
    flex-direction: column;
    gap: .5rem;
}
.cupon-pending-card__header {
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
    font-size: var(--fz-sm);
}
.cupon-pending-card h3 {
    font-size: .95rem;
    font-weight: 600;
    color: var(--text);
}

/* ── Coupon queue items (negocio) ─────────────────────────────────────────── */
.cupon-queue-item {
    display: flex;
    align-items: center;
    gap: .85rem;
    padding: 1rem 1.15rem;
    background: #fff;
    border: 1.5px solid var(--border);
    border-radius: var(--radius);
    margin-bottom: .6rem;
    transition: border-color var(--transition), box-shadow var(--transition);
}
.cupon-queue-item:hover {
    border-color: var(--primary-lt);
    box-shadow: var(--shadow-sm);
}
.cupon-queue-item--active {
    border-color: #86efac;
    background: linear-gradient(135deg, #f0fdf4 0%, #fafff8 100%);
}
.cupon-queue-item__order {
    width: 30px;
    height: 30px;
    background: var(--surface-2);
    border-radius: 8px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-weight: 700;
    font-size: .85rem;
    color: var(--text-muted);
    flex-shrink: 0;
}
.cupon-queue-item--active .cupon-queue-item__order {
    background: #dcfce7;
    color: #166534;
}
.cupon-queue-item__info {
    flex: 1;
    display: flex;
    align-items: center;
    gap: .5rem;
    flex-wrap: wrap;
    min-width: 0;
}
.cupon-queue-item__info strong { font-size: .9rem; }
.cupon-queue-item__info small  { color: var(--text-muted); font-size: .78rem; }
.cupon-queue-item__actions {
    display: flex;
    gap: .4rem;
    flex-shrink: 0;
}

/* ── Coupon active card ───────────────────────────────────────────────────── */
.cupon-active-card {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 1rem;
    flex-wrap: wrap;
    padding: 1rem 1.15rem;
    background: linear-gradient(135deg, var(--surface) 0%, var(--surface-2) 100%);
    border-radius: var(--radius);
    border: 1px solid var(--border);
}
.cupon-active-card__info { display: flex; flex-direction: column; gap: .25rem; }
.cupon-active-card__info h3 { font-size: 1rem; font-weight: 700; color: var(--primary); }
.cupon-active-card__info p { font-size: var(--fz-sm); color: var(--text-muted); margin: 0; }

/* ── QR Scanner UI ────────────────────────────────────────────────────────── */
.qr-scanner-wrap {
    position: relative;
    width: 100%;
    max-width: 360px;
    aspect-ratio: 1;
    background: #111;
    border-radius: var(--radius-lg);
    overflow: hidden;
    margin-bottom: .75rem;
}
#qrVideo {
    width: 100%;
    height: 100%;
    object-fit: cover;
    display: block;
}
.qr-scanner-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    align-items: center;
    justify-content: center;
}
.qr-scanner-frame {
    width: 66%;
    height: 66%;
    border: 3px solid #fff;
    border-radius: 6px;
    box-shadow: 0 0 0 100vmax rgba(0,0,0,.4);
}
.scanner-status {
    font-size: var(--fz-sm);
    color: var(--text-muted);
}
.scan-result {
    padding: 1rem;
    border-radius: 8px;
    font-size: var(--fz-sm);
    font-weight: 600;
    margin-top: .5rem;
}
.scan-result--ok    { background: #d1fae5; color: #065f46; }
.scan-result--error { background: #fee2e2; color: #991b1b; }

/* ── Auth forms (turista) ─────────────────────────────────────────────────── */
.auth-section {
    display: flex;
    align-items: center;
    justify-content: center;
    min-height: 70vh;
    padding: 2rem 1rem;
}
.auth-card {
    background: rgba(255,255,255,.95);
    border: 1px solid var(--border);
    border-radius: var(--radius);
    padding: 2.5rem 2rem;
    width: 100%;
    max-width: 400px;
    box-shadow: var(--shadow);
}
.auth-card__title {
    font-family: 'Newsreader', Georgia, serif;
    font-size: 1.5rem;
    font-weight: 400;
    color: var(--primary);
    margin-bottom: .3rem;
}
.auth-card__sub { font-size: var(--fz-sm); color: var(--text-muted); margin-bottom: 1.5rem; }
.auth-field { display: flex; flex-direction: column; gap: .3rem; margin-bottom: 1rem; }
.auth-field label { font-size: var(--fz-sm); font-weight: 600; }
.auth-field input {
    padding: .65rem .85rem;
    border: 1.5px solid var(--border);
    border-radius: 7px;
    font-size: var(--fz-base);
    font-family: inherit;
    outline: none;
    transition: border-color .15s;
}
.auth-field input:focus { border-color: var(--primary); }
.auth-btn {
    width: 100%;
    padding: .75rem;
    background: var(--primary);
    color: #fff;
    border: none;
    border-radius: 7px;
    font-family: 'Work Sans', sans-serif;
    font-size: var(--fz-base);
    font-weight: 600;
    cursor: pointer;
    margin-top: .5rem;
    transition: background .15s;
}
.auth-btn:hover { background: var(--primary-dk); }
.auth-switch {
    text-align: center;
    font-size: var(--fz-sm);
    color: var(--text-muted);
    margin-top: 1.25rem;
}
.auth-switch a { color: var(--primary); text-decoration: none; }
.auth-alert {
    padding: .65rem .9rem;
    border-radius: 7px;
    font-size: var(--fz-sm);
    margin-bottom: 1rem;
}
.auth-alert--error   { background: #fee2e2; color: #991b1b; }
.auth-alert--success { background: #d1fae5; color: #065f46; }

/* ── Negocio theme overrides ──────────────────────────────────────────────── */
.negocio-theme .admin-sidebar { background: #1b2332; }
.negocio-theme .admin-nav-item.active { background: var(--primary); }
.negocio-theme .admin-logout { color: #7ab3d4; }

/* ── Hamburger & sidebar mobile ───────────────────────────────────────────── */
.hamburger-btn {
    display: none;
    background: none;
    border: none;
    color: var(--text);
    cursor: pointer;
    padding: .35rem;
    border-radius: 6px;
    line-height: 0;
    flex-shrink: 0;
}
.hamburger-btn:hover { background: var(--surface-2); }

.sidebar-close {
    display: none;
    background: none;
    border: none;
    color: var(--sidebar-txt);
    cursor: pointer;
    padding: .25rem;
    border-radius: 6px;
    line-height: 0;
    margin-left: auto;
}
.sidebar-close:hover { color: #fff; }

.sidebar-overlay {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,.45);
    z-index: 998;
    opacity: 0;
    transition: opacity .25s;
}
.sidebar-overlay.is-visible {
    display: block;
    opacity: 1;
}

/* ── Responsive ───────────────────────────────────────────────────────────── */
@media (max-width: 900px) {
    .hamburger-btn { display: flex; }
    .sidebar-close { display: flex; }

    .admin-sidebar {
        position: fixed;
        left: 0; top: 0;
        width: 260px;
        height: 100vh;
        z-index: 999;
        transform: translateX(-100%);
        transition: transform .28s cubic-bezier(.4,0,.2,1);
        flex-direction: column;
    }
    .admin-sidebar.is-open {
        transform: translateX(0);
    }

    .admin-sidebar__logo {
        display: flex;
        align-items: center;
        justify-content: space-between;
    }

    .admin-body { flex-direction: column; }
    .cupon-validar-layout { grid-template-columns: 1fr; }
    .chart-row { grid-template-columns: 1fr; }

    .admin-topbar {
        padding: .85rem 1rem;
        gap: .75rem;
        position: sticky;
        top: 0;
        z-index: 100;
    }
}

@media (max-width: 600px) {
    .admin-content { padding: 1rem; }
    .stat-grid { grid-template-columns: 1fr 1fr; gap: .75rem; }
    .admin-fields-grid { grid-template-columns: 1fr; }
    .admin-field--full { grid-column: span 1; }
    .admin-form-card { padding: 1.15rem; }
    .admin-section { padding: 1rem; }
    .cupon-queue-item { flex-direction: column; align-items: flex-start; gap: .6rem; }
    .cupon-queue-item__actions { width: 100%; flex-wrap: wrap; }
    .admin-toolbar { flex-direction: column; align-items: flex-start; gap: .5rem; }
}

@media (max-width: 380px) {
    .stat-grid { grid-template-columns: 1fr; }
    .admin-content { padding: .75rem; }
}

/* ═══════════════════════════════════════════════════════════
   ESTILOS: CONFIG DEL SISTEMA
═══════════════════════════════════════════════════════════ */
.config-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(340px, 1fr));
    gap: 1.25rem;
    margin-top: 1rem;
}
.config-section {
    background: #faf7f0;
    border: 1px solid #e8dfc8;
    border-radius: 12px;
    padding: 1.25rem 1.4rem;
}
.config-section__title {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 1rem;
    color: #7A3B10;
    margin: 0 0 1rem;
    padding-bottom: .55rem;
    border-bottom: 1px solid #e0d0b0;
    display: flex;
    align-items: center;
    gap: .5rem;
}
.config-section .admin-form-group { margin-bottom: .85rem; }
.config-section .admin-label { font-size: .8rem; color: #7A6840; font-weight: 600; margin-bottom: .3rem; }
.config-section .admin-input {
    padding: .5rem .75rem;
    background: #fff;
    border: 1px solid #d6c8a0;
    border-radius: 8px;
    width: 100%;
    font-size: .87rem;
    color: #3d3020;
    transition: border-color .15s;
}
.config-section .admin-input:focus { outline: none; border-color: #C9944A; box-shadow: 0 0 0 3px rgba(201,148,74,.15); }
.config-section .admin-input[readonly] { background: #f0ebe0; color: #8c7c60; cursor: not-allowed; }
.config-section .admin-input-hint { font-size: .74rem; color: #9E8B72; margin-top: .25rem; display: block; }

/* ═══════════════════════════════════════════════════════════
   ESTILOS: FORMULARIO ADMIN (base compartido)
═══════════════════════════════════════════════════════════ */
.admin-form-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem 1.25rem;
}
.admin-form-group {
    display: flex;
    flex-direction: column;
}
.admin-label {
    font-size: .8rem;
    font-weight: 600;
    color: var(--text-muted);
    margin-bottom: .35rem;
    letter-spacing: .01em;
}
.admin-input,
select.admin-input,
textarea.admin-input {
    padding: .6rem .85rem;
    border: 1.5px solid var(--border);
    border-radius: 10px;
    background: #fff;
    font-size: .875rem;
    color: var(--text);
    font-family: inherit;
    transition: border-color var(--transition), box-shadow var(--transition);
    width: 100%;
    box-sizing: border-box;
    min-width: 0;
}
.admin-input:focus,
select.admin-input:focus,
textarea.admin-input:focus {
    outline: none;
    border-color: var(--primary);
    box-shadow: 0 0 0 3px rgba(132,56,35,.1);
}
textarea.admin-input { resize: vertical; min-height: 80px; }
.admin-hint {
    font-size: .74rem;
    color: var(--text-muted);
    margin-top: .3rem;
    line-height: 1.4;
}
.admin-hint a { color: var(--primary); text-decoration: underline; }

/* ═══════════════════════════════════════════════════════════
   ESTILOS: LUGAR DE INTERÉS (crear / editar) — MODERNO
═══════════════════════════════════════════════════════════ */
.lugar-edit-layout {
    display: flex;
    flex-direction: column;
    gap: 1.25rem;
    max-width: 780px;
}

/* Tarjeta de sección */
.lugar-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 1.5rem 1.75rem;
    box-shadow: var(--shadow-sm);
    transition: box-shadow var(--transition);
}
.lugar-card:hover {
    box-shadow: var(--shadow);
}
.lugar-card__header {
    display: flex;
    align-items: center;
    gap: .6rem;
    margin-bottom: 1.15rem;
    padding-bottom: .75rem;
    border-bottom: 1px solid var(--surface-2);
}
.lugar-card__icon {
    width: 36px;
    height: 36px;
    border-radius: 10px;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.lugar-card__icon--info    { background: #eff6ff; color: #2563eb; }
.lugar-card__icon--text    { background: #f0fdf4; color: #16a34a; }
.lugar-card__icon--clock   { background: #fefce8; color: #ca8a04; }
.lugar-card__icon--map     { background: #fdf2f8; color: #db2777; }
.lugar-card__icon--image   { background: #f5f3ff; color: #7c3aed; }
.lugar-card__icon--publish { background: #ecfdf5; color: #059669; }
.lugar-card__title {
    font-family: 'Work Sans', system-ui, sans-serif;
    font-size: 1rem;
    font-weight: 700;
    color: var(--text);
    letter-spacing: -.01em;
}
.lugar-card__subtitle {
    font-size: .78rem;
    color: var(--text-muted);
    margin-top: .1rem;
}

/* Grid dentro de tarjeta */
.lugar-card .admin-form-grid {
    gap: .9rem 1.1rem;
}

/* Preview de imagen */
.lugar-img-preview {
    position: relative;
    border-radius: 12px;
    overflow: hidden;
    border: 1.5px solid var(--border);
    background: var(--surface-2);
    max-width: 320px;
    margin-bottom: .75rem;
}
.lugar-img-preview img {
    display: block;
    width: 100%;
    height: 180px;
    object-fit: cover;
}
.lugar-img-preview--empty {
    display: flex;
    align-items: center;
    justify-content: center;
    height: 120px;
    color: var(--text-muted);
    font-size: .82rem;
    gap: .4rem;
}

/* Mapa interactivo para coordenadas */
.lugar-map-preview {
    height: 260px;
    border-radius: 12px;
    border: 1.5px solid var(--border);
    margin-top: .5rem;
    z-index: 0;
}

/* Toggle switch moderno */
.lugar-toggle {
    display: flex;
    align-items: center;
    gap: .75rem;
    cursor: pointer;
    user-select: none;
    padding: .5rem 0;
}
.lugar-toggle input[type="checkbox"] {
    display: none;
}
.lugar-toggle__track {
    width: 44px;
    height: 24px;
    background: #d1d5db;
    border-radius: 12px;
    position: relative;
    transition: background var(--transition);
    flex-shrink: 0;
}
.lugar-toggle__track::after {
    content: '';
    position: absolute;
    top: 2px;
    left: 2px;
    width: 20px;
    height: 20px;
    background: #fff;
    border-radius: 50%;
    transition: transform var(--transition);
    box-shadow: 0 1px 3px rgba(0,0,0,.15);
}
.lugar-toggle input:checked + .lugar-toggle__track {
    background: var(--success);
}
.lugar-toggle input:checked + .lugar-toggle__track::after {
    transform: translateX(20px);
}
.lugar-toggle__label {
    font-size: .875rem;
    font-weight: 500;
    color: var(--text);
}
.lugar-toggle__hint {
    font-size: .74rem;
    color: var(--text-muted);
}

/* Botones de acción del form */
.lugar-actions {
    display: flex;
    gap: .75rem;
    align-items: center;
    padding-top: .5rem;
}

/* Back link mejorado */
.lugar-back {
    display: inline-flex;
    align-items: center;
    gap: .35rem;
    font-size: .825rem;
    font-weight: 500;
    color: var(--text-muted);
    text-decoration: none;
    transition: color var(--transition);
    margin-bottom: .25rem;
}
.lugar-back:hover { color: var(--primary); }
.lugar-back svg { transition: transform var(--transition); }
.lugar-back:hover svg { transform: translateX(-2px); }

/* File input custom */
.lugar-file-input {
    position: relative;
}
.lugar-file-input input[type="file"] {
    width: 100%;
    padding: .55rem .75rem;
    border: 1.5px dashed var(--border);
    border-radius: 10px;
    background: var(--surface);
    font-size: .82rem;
    color: var(--text-muted);
    cursor: pointer;
    transition: border-color var(--transition), background var(--transition);
}
.lugar-file-input input[type="file"]:hover {
    border-color: var(--primary-lt);
    background: #faf6f2;
}

@media (max-width: 600px) {
    .admin-form-grid { grid-template-columns: 1fr; }
    .admin-form-grid > [style*="grid-column"] { grid-column: 1 !important; }
    .lugar-card { padding: 1.15rem; }
    .lugar-img-preview { max-width: 100%; }
}
.admin-form-row {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 1rem;
}
@media (max-width: 600px) {
    .lugar-fields-grid { grid-template-columns: 1fr; }
    .lugar-field--full { grid-column: 1; }
    .admin-form-row { grid-template-columns: 1fr; }
    .config-grid { grid-template-columns: 1fr; }
}

/* ═══════════════════════════════════════════════════════════
   ESTILOS: AUTH SOCIAL (botones login)
═══════════════════════════════════════════════════════════ */
.auth-divider {
    display: flex;
    align-items: center;
    gap: .75rem;
    margin: 1.25rem 0;
    color: #b0a08c;
    font-size: .78rem;
}
.auth-divider::before,
.auth-divider::after { content: ''; flex: 1; height: 1px; background: #e0d0b0; }

.auth-social {
    display: flex;
    gap: .65rem;
    justify-content: center;
    flex-wrap: wrap;
}
.auth-social__btn {
    display: flex;
    align-items: center;
    gap: .45rem;
    padding: .55rem 1.1rem;
    border-radius: 8px;
    font-size: .85rem;
    font-weight: 600;
    text-decoration: none;
    border: 1px solid transparent;
    cursor: pointer;
    transition: opacity .15s, box-shadow .15s;
}
.auth-social__btn:hover { opacity: .88; box-shadow: 0 2px 8px rgba(0,0,0,.12); }
.auth-social__btn--whatsapp { background: #25D366; color: #fff; border-color: #1fba58; }
.auth-social__btn--google   { background: #fff;    color: #3c4043; border-color: #dadce0; }
.auth-social__btn--facebook { background: #1877F2; color: #fff;    border-color: #1467c7; }

/* ═══════════════════════════════════════════════════════════
   ESTILOS: MODAL DE RESEÑAS
═══════════════════════════════════════════════════════════ */
.resena-modal {
    position: fixed;
    inset: 0;
    background: rgba(10,8,4,.55);
    z-index: 9999;
    display: flex;
    align-items: flex-end;
    justify-content: center;
    padding: 0;
    transition: opacity .22s;
}
.resena-modal[aria-hidden="true"] { display: none; }

.resena-modal__contenido {
    background: #FAF7F0;
    border-radius: 18px 18px 0 0;
    width: 100%;
    max-width: 480px;
    max-height: 80vh;
    overflow-y: auto;
    padding: 1.4rem 1.5rem 2rem;
    box-shadow: 0 -8px 32px rgba(0,0,0,.18);
    animation: slideUp .28s ease;
}
@keyframes slideUp {
    from { transform: translateY(60px); opacity: 0; }
    to   { transform: translateY(0);    opacity: 1; }
}

.resena-modal__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: .9rem;
}
.resena-modal__titulo {
    font-family: 'Playfair Display', Georgia, serif;
    font-size: 1.1rem;
    color: #7A3B10;
    margin: 0;
}
.resena-modal__cerrar {
    background: none;
    border: none;
    font-size: 1.2rem;
    color: #9E8B72;
    cursor: pointer;
    padding: 4px 8px;
    border-radius: 6px;
    line-height: 1;
}
.resena-modal__cerrar:hover { background: #ede5d0; color: #3d2c18; }

.resena-modal__promedio {
    text-align: center;
    font-size: 1.3rem;
    margin-bottom: .8rem;
    color: #C9944A;
}
.resena-prom-num { font-size: .9rem; color: #7A6840; vertical-align: middle; }

.resena-modal__cargando { text-align: center; color: #9E8B72; font-size: .88rem; padding: 1rem 0; }
.resena-modal__empty    { text-align: center; color: #9E8B72; font-style: italic; padding: .75rem 0; }

.resena-item {
    border-bottom: 1px solid #e8dfc8;
    padding: .75rem 0;
}
.resena-item:last-child { border-bottom: none; }
.resena-item__header { display: flex; justify-content: space-between; align-items: center; margin-bottom: .3rem; }
.resena-item__nombre { font-weight: 600; font-size: .88rem; color: #3d2c18; }
.resena-item__estrellas { color: #C9944A; font-size: .95rem; letter-spacing: .05em; }
.resena-item__texto { font-size: .83rem; color: #5a4830; margin: 0; line-height: 1.5; }

.resena-modal__form {
    border-top: 1px solid #e8dfc8;
    padding-top: 1rem;
    margin-top: .5rem;
}
.resena-estrellas { display: flex; gap: .35rem; margin-bottom: .75rem; }
.resena-estrella {
    background: none;
    border: none;
    font-size: 1.6rem;
    cursor: pointer;
    color: #d6c8a0;
    line-height: 1;
    padding: 2px;
    transition: color .1s, transform .1s;
}
.resena-estrella.is-active,
.resena-estrella:hover { color: #C9944A; transform: scale(1.15); }
.resena-textarea {
    width: 100%;
    border: 1px solid #d6c8a0;
    border-radius: 8px;
    padding: .6rem .8rem;
    font-size: .87rem;
    font-family: inherit;
    color: #3d2c18;
    resize: vertical;
    min-height: 70px;
    box-sizing: border-box;
    background: #fff;
}
.resena-textarea:focus { outline: none; border-color: #C9944A; box-shadow: 0 0 0 3px rgba(201,148,74,.15); }
.resena-submit {
    display: block;
    width: 100%;
    padding: .65rem;
    background: #C9944A;
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: .9rem;
    font-weight: 600;
    cursor: pointer;
    margin-top: .75rem;
    font-family: 'Work Sans', sans-serif;
    transition: background .15s;
}
.resena-submit:hover   { background: #a87838; }
.resena-submit:disabled { background: #c8b898; cursor: not-allowed; }
.resena-msg { font-size: .82rem; margin-top: .5rem; text-align: center; min-height: 1.2em; }

/* ============================================================
   BARRA DE PROGRESO — perfil negocio
   ============================================================ */
.progress-card {
    background: #fff;
    border: 1px solid var(--border);
    border-radius: var(--radius-lg);
    padding: 1.5rem 1.75rem;
    margin-bottom: 1rem;
    box-shadow: var(--shadow-sm);
}
.progress-card--complete {
    border-color: #a7f3d0;
}
.progress-card--compact {
    padding: 1.25rem 1.5rem;
}
.progress-card__header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: .75rem;
}
.progress-card__title {
    display: flex;
    align-items: center;
    gap: .5rem;
    font-size: 1.05rem;
    font-weight: 600;
    color: #2c2c2c;
}
.progress-card__icon {
    font-size: 1.2rem;
}
.progress-card__pct {
    font-size: 1.4rem;
    font-weight: 700;
    color: #C9944A;
}
.progress-card--complete .progress-card__pct {
    color: #38a169;
}

/* Barra */
.progress-bar {
    width: 100%;
    height: 8px;
    background: var(--surface-2);
    border-radius: 99px;
    overflow: hidden;
    margin-bottom: 1rem;
}
.progress-bar__fill {
    height: 100%;
    background: linear-gradient(90deg, var(--primary), var(--primary-lt));
    border-radius: 99px;
    transition: width .6s ease;
}
.progress-card--complete .progress-bar__fill {
    background: linear-gradient(90deg, #38a169, #68d391);
}

/* Pasos */
.progress-card__steps {
    display: flex;
    flex-wrap: wrap;
    gap: .45rem .6rem;
}
.progress-step {
    display: inline-flex;
    align-items: center;
    gap: .3rem;
    font-size: .8rem;
    color: var(--text-muted);
    background: var(--surface);
    border: 1px solid var(--border);
    border-radius: 8px;
    padding: .3rem .65rem;
    transition: all .2s;
}
.progress-step--done {
    color: #166534;
    background: #ecfdf5;
    border-color: #a7f3d0;
}
.progress-step__check {
    font-size: .9rem;
    line-height: 1;
}
.progress-step--done .progress-step__check {
    color: #38a169;
    font-weight: 700;
}
.progress-step__label {
    font-weight: 500;
}
.progress-card__hint {
    margin-top: .75rem;
    font-size: .8rem;
    color: var(--text-muted);
    line-height: 1.4;
}

@media (max-width: 600px) {
    .progress-card { padding: 1rem 1.15rem; }
    .progress-card__title { font-size: .9rem; }
    .progress-card__pct { font-size: 1.1rem; }
    .progress-card__steps { gap: .35rem; }
    .progress-step { font-size: .75rem; padding: .2rem .5rem; }
}

/* ============================================================
   FIREBASE UPLOAD — progreso de subida
   ============================================================ */
.firebase-progress {
    display: none;
    margin-top: .5rem;
    font-size: .85rem;
    color: #8c7a62;
    background: #f5f0e8;
    border-radius: 6px;
    padding: .5rem .75rem;
    position: relative;
    overflow: hidden;
}
.firebase-progress::before {
    content: '';
    position: absolute;
    left: 0; top: 0; bottom: 0;
    width: var(--progress, 0%);
    background: rgba(201, 148, 74, 0.18);
    border-radius: 6px;
    transition: width .3s;
}
.firebase-progress--done {
    color: #276749;
    background: #e6f7e6;
}
.firebase-progress--done::before {
    background: rgba(56, 161, 105, 0.15);
    width: 100%;
}
