/* ═══════════════════════════════════════════════════════════════
   Eventos (EV1) — Admin (ev-*, theme tokens: light and dark) and public pages (evp-*: the event's THEME — a closed list — with the
   organizer's color as its accent; «Automático» is light or dark by the visitor's system preference)
   ═══════════════════════════════════════════════════════════════ */

/* ── Admin ── */
.ev-page { display: grid; gap: 14px; }
/* The body of the event's tabs: a fieldset (disabled as a whole when the event is cancelled) that lays its cards out like the page. */
.ev-tabbody { display: grid; gap: 14px; border: 0; padding: 0; margin: 0; min-width: 0; min-inline-size: 0; }
/* A card is a grid item: without this its minimum width is its content's, and a table as wide as it needs (Devoluciones, the webhook
   deliveries) would stretch the whole page instead of scrolling inside its own box. */
.ev-page > *, .ev-tabbody > * { min-width: 0; }
.ev-tabbody.is-readonly .e-richtexteditor, .ev-tabbody.is-readonly .e-control-wrapper { pointer-events: none; opacity: .75; }
.ev-tabbody.is-readonly button:disabled, .ev-tabbody.is-readonly input:disabled, .ev-tabbody.is-readonly select:disabled, .ev-tabbody.is-readonly textarea:disabled { cursor: not-allowed; }
.ev-toolbar { display: flex; justify-content: space-between; align-items: center; gap: 12px; flex-wrap: wrap; }
.ev-toolbar__actions, .ev-actions { display: flex; gap: 8px; flex-wrap: wrap; align-items: center; }
.ev-filters { display: flex; gap: 6px; flex-wrap: wrap; }
.ev-filter { border: 1.5px solid var(--gray-100); background: var(--white); color: var(--gray-700); border-radius: 999px; padding: 5px 12px;
    font: inherit; font-size: 12px; font-weight: 600; cursor: pointer; }
.ev-filter.is-on { background: var(--blue-800); color: var(--white); border-color: var(--blue-800); }
.ev-card { background: var(--white); border: 1px solid var(--gray-100); border-radius: 14px; padding: 18px 20px; box-shadow: 0 1px 4px rgba(13,53,133,.06); }
.ev-card__title { margin: 0 0 12px; font-size: 16px; color: var(--blue-800); }
.ev-card__subtitle { margin: 18px 0 8px; font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); }
.ev-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 12px; }
.ev-field { display: flex; flex-direction: column; gap: 5px; font-size: 13px; font-weight: 600; color: var(--gray-700); }
.ev-field--wide { grid-column: 1 / -1; }
.ev-field input, .ev-field select, .ev-field textarea, .ev-search {
    padding: 9px 11px; border: 1.5px solid var(--gray-100); border-radius: 10px; background: var(--gray-50); color: var(--gray-900);
    font: inherit; font-weight: 400; }
.ev-field input:focus, .ev-field select:focus, .ev-field textarea:focus, .ev-search:focus { outline: none; border-color: var(--blue-600); background: var(--white); }
.ev-check { display: flex; gap: 8px; align-items: center; font-size: 13px; color: var(--gray-700); }
.ev-hint, .ev-sub { font-size: 12px; color: var(--gray-500); font-weight: 400; }
/* Help texts are sentences: the global label style (uppercase, spaced) made them hard to read inside a field's label. */
.ev-field .ev-hint, .ev-field .ev-sub { text-transform: none; letter-spacing: normal; }
.ev-sub.rich-text { font-size: 12px; color: var(--gray-500); } /* a session's description in the agenda table (RichTextView) */
.ev-sub.rich-text p, .ev-sub.rich-text ul, .ev-sub.rich-text ol { margin: 0 0 2px; }
.ev-intro { margin: 0 0 14px; font-size: 13px; line-height: 1.5; color: var(--gray-700); }
.ev-preview { font-family: ui-monospace, Menlo, Consolas, monospace; color: var(--gray-700); word-break: break-all; }
.ev-field input::placeholder, .ev-field textarea::placeholder { color: var(--gray-400); font-weight: 400; }
.ev-table { width: 100%; border-collapse: collapse; font-size: 14px; background: var(--white); border-radius: 14px; overflow: hidden; }
.ev-table th { text-align: left; font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); padding: 10px 12px;
    border-bottom: 1px solid var(--gray-100); }
.ev-table td { padding: 11px 12px; border-bottom: 1px solid var(--gray-100); color: var(--gray-700); vertical-align: top; }
.ev-table .num { text-align: right; white-space: nowrap; }
.ev-table tr.is-open td { background: var(--gray-50); }
/* An order's lines and tickets: the global reset leaves lists without padding, so their bullets fell outside the cell and the table cut them. */
.ev-list { margin: 8px 0 0; padding-left: 20px; }
.ev-link { color: var(--blue-600); font-weight: 600; text-decoration: none; display: inline-flex; gap: 4px; align-items: center; }
.ev-chip { display: inline-block; font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 999px; background: var(--gray-100); color: var(--gray-700); }
.ev-chip--published { background: var(--green-100); color: var(--green-600); }
.ev-chip--salesclosed { background: var(--gold-100); color: var(--gold-600); }
.ev-chip--finished, .ev-chip--cancelled { background: var(--gray-100); color: var(--gray-500); }
.ev-alert { padding: 10px 14px; border-radius: 10px; font-size: 13px; display: flex; gap: 8px; align-items: flex-start; }
.ev-alert--error { background: var(--red-100); color: var(--red-500); }
.ev-alert--ok { background: var(--green-100); color: var(--green-600); }
.ev-alert--info { background: var(--blue-50); color: var(--blue-800); }
.ev-alert a { color: inherit; font-weight: 700; }
.ev-empty { padding: 24px; text-align: center; color: var(--gray-500); font-size: 14px; }
.ev-head { display: flex; justify-content: space-between; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.ev-title { margin: 0; font-family: var(--font-display, Georgia, serif); font-size: 26px; color: var(--blue-800); }
/* EV6: thirteen tabs no longer fit in one row — they wrap instead of pushing the page wider than the window. */
.ev-tabs { display: flex; flex-wrap: wrap; gap: 0 4px; border-bottom: 1px solid var(--gray-100); }
.ev-tab { border: 0; background: none; padding: 10px 14px; font: inherit; font-size: 14px; font-weight: 600; color: var(--gray-500); cursor: pointer;
    border-bottom: 2px solid transparent; }
.ev-tab.is-on { color: var(--blue-800); border-bottom-color: var(--gold-600); }
.ev-type { border: 1.5px solid var(--gray-100); border-radius: 12px; padding: 14px 16px; margin-bottom: 10px; }
.ev-type__head { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.ev-seats { margin-top: 12px; display: grid; gap: 8px; }
.ev-seats__head { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; font-size: 13px; color: var(--gray-800); }
.ev-seats__gen { display: flex; gap: 10px; align-items: flex-end; flex-wrap: wrap; margin: 0; padding: 10px 12px; border: 1.5px dashed var(--gray-200); border-radius: 10px; }
.ev-seats__gen legend { padding: 0 6px; font-size: 12px; font-weight: 600; color: var(--gray-600); }
.ev-seats__gen .ev-field { flex: 0 1 140px; }
.ev-seats__table { display: grid; gap: 6px; }
.ev-seats__row { display: grid; grid-template-columns: minmax(70px, 110px) minmax(70px, 100px) minmax(70px, 100px) minmax(120px, 1fr) 70px auto; gap: 8px; align-items: center; }
.ev-seats__row--head { font-size: 11px; font-weight: 700; text-transform: uppercase; letter-spacing: .05em; color: var(--gray-500); }
.ev-seats__row input { width: 100%; min-width: 0; border: 1.5px solid var(--gray-200); border-radius: 8px; padding: 7px 9px; font: inherit; font-size: 13px; background: var(--white); color: var(--gray-800); }
.ev-seats__row input:focus { outline: none; border-color: var(--blue-600); }
.ev-seats__count { font-size: 13px; font-weight: 600; color: var(--gray-700); text-align: right; }
.ev-seats__actions { display: inline-flex; gap: 4px; }
.ev-icon-btn { display: inline-flex; align-items: center; justify-content: center; width: 30px; height: 30px; border: 1.5px solid var(--gray-200); border-radius: 8px; background: var(--white); color: var(--gray-700); cursor: pointer; }
.ev-icon-btn:hover:not(:disabled) { border-color: var(--blue-600); color: var(--blue-600); }
.ev-icon-btn:disabled { opacity: .4; cursor: default; }
.ev-icon-btn.is-on { border-color: var(--blue-600); color: var(--blue-600); background: var(--blue-50); }
.ev-icon-btn:focus-visible { outline: 2px solid var(--blue-600); outline-offset: 2px; }
.ev-icon-btn i { font-size: 16px; line-height: 1; }
/* The action's name inside an icon button: read by screen readers, not painted. */
.ev-icon-btn .visually-hidden { position: absolute; width: 1px; height: 1px; margin: -1px; padding: 0; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; border: 0; }
/* The actions of a table row: icons side by side, never wrapping (three text buttons stacked in three lines). */
.ev-rowactions { display: flex; flex-wrap: nowrap; gap: 6px; justify-content: flex-end; align-items: center; }
.ev-table td.ev-rowactions-cell { white-space: nowrap; width: 1%; vertical-align: middle; }
@media (max-width: 640px) { .ev-seats__row { grid-template-columns: 1fr 1fr 1fr; } .ev-seats__row--head { display: none; } }
.ev-flyer { display: flex; gap: 14px; align-items: center; flex-wrap: wrap; }
.ev-flyer__img { max-width: 280px; max-height: 160px; border-radius: 10px; border: 1px solid var(--gray-100); object-fit: cover; }
.ev-slug { display: flex; gap: 6px; align-items: center; }
.ev-slug input { flex: 1; }
.ev-color { display: flex; gap: 8px; align-items: center; }
.ev-color input[type=color] { width: 44px; height: 38px; padding: 2px; }
.ev-logo { max-height: 56px; max-width: 180px; object-fit: contain; }
.ev-history { margin: 0; padding-left: 18px; display: grid; gap: 4px; font-size: 13px; color: var(--gray-700); }
.ev-history b { color: var(--blue-800); }
.ev-seatform { align-items: flex-end; }
.ev-seatform .ev-field input { width: 110px; }
@media (max-width: 720px) { .ev-table th:nth-child(4), .ev-table td:nth-child(4) { display: none; } }

/* ── Public pages (portal) ─────────────────────────────────────────────────────────────────────────────────────────────────────────────
   THEMES. Every colour, radius and font of the public pages is a --evp-* variable, declared once per theme in the blocks below (the
   closed list of Flowtavia.Shared.Contracts/Events/EventThemes.cs; a test keeps both equal). The page's root (.evp) says which theme it
   wears (data-evp-theme) and the shell around it takes that theme's block. «Automático» is the shell's own block: light, or dark by the
   visitor's system preference. Any other theme is FIXED: its colours are its own and do not change with the visitor's scheme.
   The organizer's colour arrives as inline variables on .evp, computed by the server per theme: --evp-brand (fills, rules, never text),
   --evp-on-brand (the text on it), --evp-brand-2 (the second stop of a gradient), --evp-accent (the colour as TEXT: itself, or a
   darker / lighter variant that reaches 4.5:1 on the theme's surfaces), --evp-edge / --evp-hero-edge (the outline of the filled button
   where the colour alone would not stand out). Each block carries the defaults of the pages that have no organizer yet (loading).
   A browser without :has() paints a fixed theme's event with «Automático»: readable, only not dressed. */

/* «Automático», light */
.evp-shell {
    --evp-bg: #F7F9FC; --evp-card: #FFFFFF; --evp-text: #1F2937; --evp-muted: #5A7090; --evp-line: #E6ECF5;
    --evp-ok: #146C3C; --evp-ok-bg: #E3F4EA; --evp-danger: #B42323; --evp-danger-bg: #FBE7E7; --evp-info: #1D4E89; --evp-info-bg: #E4EEFA;
    --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
    --evp-brand: #0B1B3A; --evp-on-brand: #FFFFFF; --evp-brand-2: #071226; --evp-accent: #0B1B3A; --evp-edge: transparent; --evp-hero-edge: transparent; }
/* Shape, type and layout: the defaults («Automático»); each fixed theme changes what makes it itself. --evp-paper / --evp-ink: the
   white tile under a QR and under a sponsor's logo (drawn for a white page) — the same in every theme. */
.evp-shell {
    --evp-paper: #FFFFFF; --evp-ink: #1F2A44;
    --evp-radius: 18px; --evp-radius-sm: 12px; --evp-card-line: 1px; --evp-shadow: none; --evp-img-shadow: none; --evp-veil: 0;
    --evp-width: 960px; --evp-gap: 18px; --evp-pad: 22px 26px; --evp-hero-rule: 4px; --evp-time-col: 158px;
    --evp-font-body: "DM Sans", system-ui, sans-serif; --evp-font-title: "DM Serif Display", Georgia, serif;
    --evp-title-weight: 400; --evp-title-spacing: normal; --evp-title-size: clamp(26px, 5cqi, 40px);
    --evp-h2-font: inherit; --evp-h2-size: 18px; --evp-h2-weight: 700; --evp-h2-case: none; --evp-h2-spacing: normal;
    min-height: 100vh; background: var(--evp-bg); color: var(--evp-text); font-family: var(--evp-font-body); padding: 24px 16px 40px; box-sizing: border-box;
    container: evp / inline-size; }
/* «Automático», dark: by the visitor's preference… */
@media (prefers-color-scheme: dark) {
    .evp-shell:not([data-evp-scheme="light"]) {
        --evp-bg: #0B1322; --evp-card: #121C2E; --evp-text: #E6ECF5; --evp-muted: #9AAAC4; --evp-line: #22304A;
        --evp-ok: #7BDCA8; --evp-ok-bg: #12301F; --evp-danger: #F4958C; --evp-danger-bg: #3A1715; --evp-info: #9CC2F2; --evp-info-bg: #14263F;
        --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
        --evp-brand: #C9A04A; --evp-on-brand: #0B1B3A; --evp-brand-2: #DCC189; --evp-accent: #C9A04A; --evp-edge: transparent; --evp-hero-edge: transparent; }
}
/* …or because the Admin's preview asks to see it (a media query cannot be shared with a selector: the same block, checked by a test). */
.evp-shell[data-evp-scheme="dark"] {
    --evp-bg: #0B1322; --evp-card: #121C2E; --evp-text: #E6ECF5; --evp-muted: #9AAAC4; --evp-line: #22304A;
    --evp-ok: #7BDCA8; --evp-ok-bg: #12301F; --evp-danger: #F4958C; --evp-danger-bg: #3A1715; --evp-info: #9CC2F2; --evp-info-bg: #14263F;
    --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
    --evp-brand: #C9A04A; --evp-on-brand: #0B1B3A; --evp-brand-2: #DCC189; --evp-accent: #C9A04A; --evp-edge: transparent; --evp-hero-edge: transparent; }
/* «Automático» with an organizer's colour: one text-safe variant and one edge per scheme; this picks the light one (the dark one above). */
.evp[data-evp-brand="scheme"] { --evp-accent: var(--evp-accent-l); --evp-edge: var(--evp-edge-l); --evp-hero-edge: var(--evp-edge-l); }
@media (prefers-color-scheme: dark) {
    .evp[data-evp-brand="scheme"] { --evp-accent: var(--evp-accent-d); --evp-edge: var(--evp-edge-d); --evp-hero-edge: var(--evp-edge-d); }
}

/* «Claro clásico»: always light — white cards on a blue grey, a soft shadow, a classic serif for the titles. */
.evp-shell[data-evp-theme="claro"], .evp-shell:has([data-evp-theme="claro"]) {
    --evp-bg: #EEF1F6; --evp-card: #FFFFFF; --evp-text: #111827; --evp-muted: #4B5563; --evp-line: #DCE2EC;
    --evp-ok: #146C3C; --evp-ok-bg: #E3F4EA; --evp-danger: #B42323; --evp-danger-bg: #FBE7E7; --evp-info: #1D4E89; --evp-info-bg: #E4EEFA;
    --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
    --evp-brand: #0B1B3A; --evp-on-brand: #FFFFFF; --evp-brand-2: #071226; --evp-accent: #0B1B3A; --evp-edge: transparent; --evp-hero-edge: transparent;
    --evp-radius: 12px; --evp-radius-sm: 8px; --evp-shadow: 0 1px 2px rgb(17 24 39 / .06), 0 8px 24px rgb(17 24 39 / .06);
    --evp-font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
    --evp-font-title: Georgia, "Times New Roman", Times, serif; --evp-title-weight: 700; }

/* «Noche»: always dark — the flyer blurred as the header's backdrop under a veil, heavy titles, pills. */
.evp-shell[data-evp-theme="noche"], .evp-shell:has([data-evp-theme="noche"]) {
    --evp-bg: #09090E; --evp-card: #14141C; --evp-text: #F3F3F7; --evp-muted: #A6A6B8; --evp-line: #2B2B3A;
    --evp-ok: #7BDCA8; --evp-ok-bg: #12301F; --evp-danger: #F4958C; --evp-danger-bg: #3A1715; --evp-info: #9CC2F2; --evp-info-bg: #14263F;
    --evp-hero-bg: #0B0B12; --evp-hero-text: #FFFFFF; --evp-hero-muted: #D5D5E0;
    --evp-brand: #C9A04A; --evp-on-brand: #0B1B3A; --evp-brand-2: #DCC189; --evp-accent: #C9A04A; --evp-edge: transparent; --evp-hero-edge: transparent;
    --evp-radius: 16px; --evp-radius-sm: 999px; --evp-veil: .78; --evp-hero-rule: 0px; --evp-img-shadow: 0 18px 50px rgb(0 0 0 / .55);
    --evp-font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --evp-font-title: var(--evp-font-body);
    --evp-title-weight: 800; --evp-title-spacing: -.02em; --evp-title-size: clamp(28px, 5.4cqi, 46px);
    --evp-h2-size: 13px; --evp-h2-case: uppercase; --evp-h2-spacing: .12em; }

/* «Editorial»: cream paper, serif titles and text, hairlines instead of boxes, the flyer at one side. */
.evp-shell[data-evp-theme="editorial"], .evp-shell:has([data-evp-theme="editorial"]) {
    --evp-bg: #F5EFE3; --evp-card: #FFFCF6; --evp-text: #261E15; --evp-muted: #655747; --evp-line: #E3D8C5;
    --evp-ok: #1F5D36; --evp-ok-bg: #E2EFDD; --evp-danger: #9B2318; --evp-danger-bg: #F8E3DC; --evp-info: #234B7A; --evp-info-bg: #E3EAF2;
    --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
    --evp-brand: #261E15; --evp-on-brand: #FFFFFF; --evp-brand-2: #19140E; --evp-accent: #261E15; --evp-edge: transparent; --evp-hero-edge: transparent;
    --evp-radius: 2px; --evp-radius-sm: 2px; --evp-hero-rule: 0px; --evp-pad: 28px 32px; --evp-time-col: 184px;
    --evp-font-body: Georgia, "Times New Roman", Times, serif;
    --evp-font-title: "Iowan Old Style", "Palatino Linotype", Palatino, "Book Antiqua", Georgia, serif;
    --evp-title-weight: 400; --evp-title-spacing: -.01em; --evp-title-size: clamp(30px, 5.6cqi, 50px);
    --evp-h2-font: var(--evp-font-title); --evp-h2-size: 24px; --evp-h2-weight: 400; }

/* «Vibrante»: the header is a gradient of the organizer's colour; very round shapes, thick titles. */
.evp-shell[data-evp-theme="vibrante"], .evp-shell:has([data-evp-theme="vibrante"]) {
    --evp-bg: #F6F6FB; --evp-card: #FFFFFF; --evp-text: #15151F; --evp-muted: #53536B; --evp-line: #E4E4F0;
    --evp-ok: #146C3C; --evp-ok-bg: #E3F4EA; --evp-danger: #B42323; --evp-danger-bg: #FBE7E7; --evp-info: #1D4E89; --evp-info-bg: #E4EEFA;
    --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
    --evp-brand: #0B1B3A; --evp-on-brand: #FFFFFF; --evp-brand-2: #071226; --evp-accent: #0B1B3A; --evp-edge: transparent; --evp-hero-edge: transparent;
    --evp-radius: 26px; --evp-radius-sm: 999px; --evp-card-line: 0px; --evp-hero-rule: 0px; --evp-shadow: 0 10px 34px rgb(21 21 31 / .08);
    --evp-font-body: system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; --evp-font-title: var(--evp-font-body);
    --evp-title-weight: 800; --evp-title-spacing: -.025em; --evp-title-size: clamp(30px, 6cqi, 52px);
    --evp-h2-size: 22px; --evp-h2-weight: 800; --evp-h2-spacing: -.01em; }

/* «Minimal»: black on white, no boxes, a lot of air; the organizer's colour only fills the button. */
.evp-shell[data-evp-theme="minimal"], .evp-shell:has([data-evp-theme="minimal"]) {
    --evp-bg: #FFFFFF; --evp-card: #FFFFFF; --evp-text: #111111; --evp-muted: #5C5C5C; --evp-line: #E4E4E4;
    --evp-ok: #146C3C; --evp-ok-bg: #EDF6F0; --evp-danger: #B42323; --evp-danger-bg: #FBEDED; --evp-info: #1D4E89; --evp-info-bg: #EDF3FA;
    --evp-hero-bg: var(--evp-card); --evp-hero-text: var(--evp-text); --evp-hero-muted: var(--evp-muted);
    --evp-brand: #111111; --evp-on-brand: #FFFFFF; --evp-brand-2: #0B0B0B; --evp-accent: #111111; --evp-edge: transparent; --evp-hero-edge: transparent;
    --evp-radius: 0px; --evp-radius-sm: 0px; --evp-card-line: 0px; --evp-hero-rule: 0px; --evp-width: 760px; --evp-gap: 0px; --evp-pad: 40px 0;
    --evp-font-body: "Helvetica Neue", Helvetica, Arial, system-ui, sans-serif; --evp-font-title: var(--evp-font-body);
    --evp-title-weight: 300; --evp-title-spacing: -.03em; --evp-title-size: clamp(32px, 7cqi, 60px);
    --evp-h2-size: 12px; --evp-h2-weight: 600; --evp-h2-case: uppercase; --evp-h2-spacing: .18em; }

/* «Corporativo»: a navy header, straight corners, sober type. */
.evp-shell[data-evp-theme="corporativo"], .evp-shell:has([data-evp-theme="corporativo"]) {
    --evp-bg: #EDF0F5; --evp-card: #FFFFFF; --evp-text: #14213D; --evp-muted: #4F5D78; --evp-line: #D3DAE6;
    --evp-ok: #146C3C; --evp-ok-bg: #E3F4EA; --evp-danger: #B42323; --evp-danger-bg: #FBE7E7; --evp-info: #1D4E89; --evp-info-bg: #E4EEFA;
    --evp-hero-bg: #0B1B3A; --evp-hero-text: #FFFFFF; --evp-hero-muted: #C2CCDF;
    --evp-brand: #0B1B3A; --evp-on-brand: #FFFFFF; --evp-brand-2: #071226; --evp-accent: #0B1B3A; --evp-edge: transparent; --evp-hero-edge: #FFFFFF;
    --evp-radius: 4px; --evp-radius-sm: 4px; --evp-hero-rule: 0px;
    --evp-font-body: "Segoe UI", system-ui, -apple-system, Roboto, "Helvetica Neue", Arial, sans-serif; --evp-font-title: var(--evp-font-body);
    --evp-title-weight: 600; --evp-title-spacing: -.01em; --evp-title-size: clamp(26px, 4.6cqi, 38px);
    --evp-h2-size: 13px; --evp-h2-case: uppercase; --evp-h2-spacing: .1em; }
/* «Minimal» is monochrome: the colour as text is the text itself (it wins over the inline variable). */
[data-evp-theme="minimal"] { --evp-accent: var(--evp-text) !important; }

/* ── The page ── */
.evp { max-width: var(--evp-width); margin: 0 auto; display: grid; gap: var(--evp-gap); }
.evp > * { min-width: 0; }
.evp :focus-visible { outline: 2px solid var(--evp-text); outline-offset: 2px; }
.evp-hero :focus-visible { outline-color: var(--evp-hero-text); }
.evp-hero { position: relative; background: var(--evp-hero-bg); color: var(--evp-hero-text); border: var(--evp-card-line) solid var(--evp-line);
    border-radius: var(--evp-radius); overflow: hidden; box-shadow: var(--evp-shadow); }
.evp-hero__backdrop { display: none; }
/* The flyer is never cropped: whole, as wide as the header up to 520 px tall (a portrait poster keeps its sides free). height: auto —
   the <img> carries width/height attributes (1200×630); without it a phone kept the cap and cropped the flyer to its middle. */
.evp-hero__img { display: block; width: 100%; height: auto; max-height: 520px; object-fit: contain; }
.evp-hero__body { padding: var(--evp-pad); display: grid; gap: 8px; border-top: var(--evp-hero-rule) solid var(--evp-brand); }
.evp-org { display: inline-flex; gap: 10px; align-items: center; color: var(--evp-hero-muted); text-decoration: none; font-weight: 600; font-size: 14px; }
.evp-org img { max-height: 36px; max-width: 120px; object-fit: contain; }
.evp-title { margin: 0; font-family: var(--evp-font-title); font-weight: var(--evp-title-weight); letter-spacing: var(--evp-title-spacing);
    font-size: var(--evp-title-size); line-height: 1.1; overflow-wrap: anywhere; }
/* The icon stays beside the first line (on a phone the text wrapped UNDER it, leaving the icon alone on a line of its own). */
.evp-when, .evp-where { margin: 0; color: var(--evp-hero-muted); display: flex; gap: 8px; align-items: flex-start; }
.evp-when > i, .evp-where > i { flex: none; margin-top: .22em; }
.evp-where a { margin-left: 4px; white-space: nowrap; }
/* The organizer's colour can be any #RRGGBB, so it never colours text as it is: it underlines, borders and fills. Where the colour is
   wanted AS text (a link in the description, a session's hour) the page uses --evp-accent, the variant that reads on this theme. */
.evp-where a { color: var(--evp-hero-text); font-weight: 700; text-decoration-color: var(--evp-underline, var(--evp-brand)); text-decoration-thickness: 2px; text-underline-offset: 3px; }
.evp-cta { display: inline-block; justify-self: start; margin-top: 8px; font: inherit; font-weight: 700; background: var(--evp-brand); color: var(--evp-on-brand);
    padding: 12px 22px; border-radius: var(--evp-radius-sm); box-shadow: 0 0 0 2px var(--evp-edge); text-decoration: none; border: 0; cursor: pointer; }
.evp-hero .evp-cta { box-shadow: 0 0 0 2px var(--evp-hero-edge); }
.evp-cta:disabled { opacity: .55; cursor: default; }
.evp-badge { justify-self: start; padding: 6px 12px; border-radius: 999px; background: var(--evp-line); color: var(--evp-text); font-weight: 700; font-size: 13px; }
.evp-badge--soldout { background: var(--evp-danger-bg); color: var(--evp-danger); }
.evp-section { background: var(--evp-card); border: var(--evp-card-line) solid var(--evp-line); border-radius: var(--evp-radius); padding: var(--evp-pad); box-shadow: var(--evp-shadow); }
.evp-section h2 { margin: 0 0 14px; font-family: var(--evp-h2-font); font-size: var(--evp-h2-size); font-weight: var(--evp-h2-weight);
    text-transform: var(--evp-h2-case); letter-spacing: var(--evp-h2-spacing); }
.evp-types { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 12px; }
/* align-content: a card taller than its content (its row's height is the tallest card's) keeps its lines together at the top instead of
   spreading them, which also stretched its button into an oval. */
.evp-type { border: 1.5px solid var(--evp-line); border-radius: min(var(--evp-radius), 14px); padding: 14px 16px; display: grid; gap: 6px; align-content: start; min-width: 0; }
/* "Mis tickets": each card keeps its own height (one with the transfer form open, or without QR, next to one with its QR). */
.evp-types--tickets { align-items: start; }
.evp-type__head { display: flex; justify-content: space-between; gap: 10px; align-items: baseline; }
.evp-type__head h3 { margin: 0; font-size: 16px; }
.evp-type__price { color: var(--evp-text); font-size: 16px; font-weight: 700; white-space: nowrap; }
.evp-type__zone, .evp-type__avail { font-size: 13px; color: var(--evp-muted); }
.evp-hero .evp-type__zone { color: var(--evp-hero-muted); }
/* Benefits and a session's description are rich text (RichTextView, 20-oct-2026): they wear the theme's colours, not the Admin's
   .rich-text grey, and a list keeps the bullets the plain one-per-line benefits had. */
.evp-type__benefits.rich-text { color: inherit; }
.evp-type__benefits.rich-text { font-size: 14px; }
.evp-type__benefits.rich-text ul, .evp-type__benefits.rich-text ol { margin: 0; padding-left: 18px; }
.evp-type__benefits.rich-text p { margin: 0 0 4px; }
.evp-type__benefits.rich-text a, .evp-session__text.rich-text a { color: var(--evp-accent); text-underline-offset: 2px; }
.evp-session__text.rich-text p, .evp-session__text.rich-text ul, .evp-session__text.rich-text ol { margin: 0 0 4px; }
.evp-session__text.rich-text img, .evp-type__benefits.rich-text img { max-width: 100%; height: auto; }
.evp-description { line-height: 1.7; overflow-wrap: anywhere; }
.evp-description img { max-width: 100%; height: auto; }
.evp-description a { color: var(--evp-accent); text-underline-offset: 2px; }
.evp-cards { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 14px; }
.evp-card { background: var(--evp-card); border: 1px solid var(--evp-line); border-radius: min(var(--evp-radius), 16px); overflow: hidden; text-decoration: none; color: inherit; display: grid; align-content: start; }
.evp-card img { width: 100%; height: 150px; object-fit: cover; }
.evp-card__body { padding: 14px 16px; display: grid; gap: 4px; align-content: start; }
.evp-card__body b { font-size: 16px; }
.evp-card__body span { font-size: 13px; color: var(--evp-muted); }
.evp-form { display: grid; gap: 12px; }
.evp-form label { display: grid; gap: 5px; font-size: 13px; font-weight: 600; }
.evp-form label.evp-check { display: flex; gap: 10px; align-items: flex-start; font-weight: 500; line-height: 1.45; }
.evp-check input { flex: none; width: 18px; height: 18px; margin: 1px 0 0; accent-color: var(--evp-brand); }
.evp-form input[type=text], .evp-form input[type=email], .evp-form input[type=tel] { padding: 11px 12px; border-radius: min(var(--evp-radius-sm), 10px); border: 1.5px solid var(--evp-muted);
    background: var(--evp-bg); color: var(--evp-text); font: inherit; min-width: 0; }
.evp-qty { display: flex; justify-content: space-between; align-items: center; gap: 12px; padding: 12px 0; border-bottom: 1px solid var(--evp-line); }
.evp-qty__ctl { display: flex; align-items: center; gap: 10px; }
.evp-qty__ctl button { width: 34px; height: 34px; border-radius: min(var(--evp-radius-sm), 10px); border: 1.5px solid var(--evp-muted); background: var(--evp-card); color: var(--evp-text); font-size: 18px; cursor: pointer; }
.evp-qty__ctl button:disabled { opacity: .4; cursor: default; }
.evp-total { display: flex; justify-content: space-between; font-weight: 700; font-size: 16px; padding-top: 8px; }
.evp-error { padding: 10px 14px; border-radius: min(var(--evp-radius-sm), 10px); background: var(--evp-danger-bg); color: var(--evp-danger); font-size: 14px; }
.evp-ok { padding: 12px 14px; border-radius: min(var(--evp-radius-sm), 10px); background: var(--evp-ok-bg); color: var(--evp-ok); font-size: 14px; }
.evp-tickets { width: 100%; border-collapse: collapse; font-size: 14px; }
.evp-tickets td, .evp-tickets th { padding: 8px; border-bottom: 1px solid var(--evp-line); text-align: left; }
.evp-code { font-family: ui-monospace, Menlo, Consolas, monospace; font-weight: 700; letter-spacing: .06em; }
.evp-foot { text-align: center; font-size: 12px; color: var(--evp-muted); }
.evp-foot a { color: inherit; }
.evp-empty { max-width: 640px; margin: 10vh auto; text-align: center; color: var(--evp-muted); }
/* EV1b: Mis tickets, recover the link. The QR keeps its own white card in every theme (scanners need the contrast). */
.evp-recover { justify-self: start; font-size: 13px; color: var(--evp-hero-muted); text-decoration: underline; text-decoration-color: var(--evp-underline, var(--evp-brand)); text-underline-offset: 3px; }
.evp-qr { justify-self: start; width: 220px; max-width: 100%; height: auto; background: var(--evp-paper); padding: 8px; border-radius: 12px; border: 1px solid var(--evp-line); box-sizing: border-box; }
.evp-linkbtn { justify-self: start; padding: 8px 14px; border-radius: 999px; border: 1.5px solid var(--evp-muted); background: transparent; color: var(--evp-text);
    font: inherit; font-size: 13px; font-weight: 700; cursor: pointer; }
.evp-hero .evp-linkbtn { color: var(--evp-hero-text); border-color: var(--evp-hero-muted); }
.evp-linkbtn:hover, .evp-linkbtn:focus-visible { border-color: var(--evp-text); }
.evp-hero .evp-linkbtn:hover, .evp-hero .evp-linkbtn:focus-visible { border-color: var(--evp-hero-text); }
.evp-transfer { margin-top: 6px; padding-top: 12px; border-top: 1px solid var(--evp-line); }
.evp-transfer__actions { display: flex; flex-wrap: wrap; gap: 10px; align-items: center; }
.evp-transfer__actions .evp-cta { margin-top: 0; }
.evp-tickets + .evp-cta { margin-top: 16px; }

/* ── What each fixed theme does with the header and the sections (layout; the colours are the variables above) ── */
/* The flyer at one side (wide pages only): «Editorial» and «Corporativo» at the right, «Noche» at the left. */
@container evp (min-width: 720px) {
    :is([data-evp-theme="editorial"], [data-evp-theme="corporativo"], [data-evp-theme="noche"]) .evp-hero:has(.evp-hero__img) {
        display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr); align-items: center; }
    :is([data-evp-theme="editorial"], [data-evp-theme="corporativo"]) .evp-hero__img { order: 2; max-height: none; }
    [data-evp-theme="noche"] .evp-hero:has(.evp-hero__img) { grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); }
    [data-evp-theme="noche"] .evp-hero__img { margin: 24px 0 24px 24px; width: calc(100% - 24px); max-width: none; max-height: none; }
}
/* «Noche»: the flyer blurred behind a veil (the text sits on the veil, never on the bare image) and the flyer itself, whole, on top. */
[data-evp-theme="noche"] .evp-hero { isolation: isolate; }
[data-evp-theme="noche"] .evp-hero__backdrop { display: block; position: absolute; inset: -48px; width: calc(100% + 96px); height: calc(100% + 96px); max-width: none;
    object-fit: cover; filter: blur(32px); z-index: -2; }
[data-evp-theme="noche"] .evp-hero::before { content: ""; position: absolute; inset: 0; background: var(--evp-hero-bg); opacity: var(--evp-veil); z-index: -1; }
[data-evp-theme="noche"] .evp-hero__img { width: calc(100% - 32px); margin: 16px 16px 0; border-radius: 12px; box-shadow: var(--evp-img-shadow); }
[data-evp-theme="noche"] .evp-section h2, [data-evp-theme="corporativo"] .evp-section h2 { color: var(--evp-accent); }
/* «Editorial»: a rule in the organizer's colour under the title; sections open with a hairline instead of a box. */
[data-evp-theme="editorial"] .evp-title { padding-bottom: 14px; border-bottom: 3px solid var(--evp-brand); }
[data-evp-theme="editorial"] .evp-section { border-width: 1px 0 0; border-top-color: var(--evp-text); box-shadow: none; }
[data-evp-theme="editorial"] .evp-section h2 { font-style: italic; }
/* «Vibrante»: the header wears the colour, so its text is the text-on-colour and its button is inverted. */
[data-evp-theme="vibrante"] .evp-hero { --evp-hero-text: var(--evp-on-brand); --evp-hero-muted: var(--evp-on-brand); --evp-underline: currentColor;
    background: linear-gradient(135deg, var(--evp-brand), var(--evp-brand-2)); }
[data-evp-theme="vibrante"] .evp-hero .evp-cta { background: var(--evp-on-brand); color: var(--evp-brand); }
[data-evp-theme="vibrante"] .evp-hero__img { width: calc(100% - 28px); margin: 14px 14px 0; border-radius: 16px; }
[data-evp-theme="vibrante"] .evp-section h2 { padding-left: 14px; border-left: 6px solid var(--evp-brand); border-radius: 3px; }
/* «Minimal»: the title first and the flyer after it; sections are separated by a line, not boxed. */
[data-evp-theme="minimal"] .evp-hero { display: flex; flex-direction: column; overflow: visible; }
[data-evp-theme="minimal"] .evp-hero__img { order: 2; }
[data-evp-theme="minimal"] .evp-hero__body { padding-top: 16px; gap: 12px; }
[data-evp-theme="minimal"] .evp-section { border-top: 1px solid var(--evp-text); }
[data-evp-theme="minimal"] .evp-foot { padding-top: 28px; }
/* «Corporativo»: a rule in the organizer's colour closes the navy header. */
[data-evp-theme="corporativo"] .evp-hero { border: 0; border-bottom: 4px solid var(--evp-brand); }

/* ═══════════════════════════════════════════════════════════════
   Eventos EV2 — Admin: materials, attendees' access (ev-*) and the door mode (evd-*, made for a phone). Theme tokens only: the green and
   the red of the door's result are the state tokens (--green-500 / --red-500) with their own soft tone as text (--green-100 / --red-100),
   which flips with the theme and keeps the contrast in both (≥ 5:1 light, ≥ 6.5:1 dark).
   ═══════════════════════════════════════════════════════════════ */
.ev-alert--warn { background: var(--gold-100); color: var(--gold-600); }
.ev-chip--access-inside { background: var(--green-100); color: var(--green-600); }
.ev-chip--access-entered { background: var(--blue-50); color: var(--blue-800); }
.ev-chip--access-notarrived { background: var(--gray-100); color: var(--gray-700); }
.ev-chip--access-notvalid { background: var(--red-100); color: var(--red-600); }
.ev-chip--pending { background: var(--gold-100); color: var(--gold-600); white-space: nowrap; }
.ev-material.is-off { opacity: .75; }
.ev-matscope { margin: 12px 0; padding: 10px 12px; border: 1.5px dashed var(--gray-200); border-radius: 10px; display: grid; gap: 8px; }
.ev-matscope legend { padding: 0 6px; font-size: 12px; font-weight: 600; color: var(--gray-600); }
.ev-mattypes { display: flex; flex-wrap: wrap; gap: 8px 16px; padding-left: 24px; }
.ev-matactions { margin-top: 12px; }
.ev-matstats { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; margin-top: 12px; }
.ev-matstat { background: var(--gray-50); border: 1px solid var(--gray-100); border-radius: 10px; padding: 8px 10px; display: grid; gap: 2px; }
.ev-matstat b { font-size: 20px; color: var(--gray-900); line-height: 1.1; }
.ev-matstat span { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--gray-500); }
.ev-matstat--ok b { color: var(--green-600); }
.ev-matstat--pending b { color: var(--gold-600); }
.ev-mattable { margin-top: 10px; font-size: 13px; }
@media (max-width: 720px) { .ev-mattable th:nth-child(4), .ev-mattable td:nth-child(4) { display: table-cell; } }

/* ── Door mode ── */
.evd-page { max-width: 640px; gap: 12px; }
.evd-top { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; }
.evd-top__event { flex: 1 1 200px; min-width: 0; }
.evd-title { margin: 0; font-family: var(--font-display, Georgia, serif); font-size: 22px; line-height: 1.15; color: var(--blue-800); display: flex; gap: 8px; align-items: center; overflow-wrap: anywhere; }
.evd-h2 { margin: 0 0 10px; font-size: 14px; color: var(--gray-700); }
.evd-lead { margin: 0; font-size: 14px; color: var(--gray-700); }
.evd-back { display: inline-flex; align-items: center; gap: 6px; min-height: 44px; padding: 0 12px; border: 1.5px solid var(--gray-200); border-radius: 12px;
    background: var(--white); color: var(--gray-700); font-size: 14px; font-weight: 600; text-decoration: none; }
.evd-card { background: var(--white); border: 1px solid var(--gray-100); border-radius: 16px; padding: 14px; display: grid; gap: 10px; }
.evd-cardhead { display: flex; justify-content: space-between; align-items: center; gap: 8px; }
.evd-cardhead .evd-h2 { margin: 0; }
.evd-emptycard { text-align: center; color: var(--gray-700); padding: 28px 16px; }
.evd-emptycard i { font-size: 36px; color: var(--gray-400); }
.evd-emptycard p { margin: 0; }
.evd-events { list-style: none; margin: 0; padding: 0; display: grid; gap: 12px; }
.evd-event { text-decoration: none; color: inherit; }
.evd-event__name { font-size: 18px; font-weight: 700; color: var(--gray-900); overflow-wrap: anywhere; }
.evd-event__head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.evd-phase { flex: none; white-space: nowrap; }
.evd-phase--live { background: var(--green-100); color: var(--green-600); }
.evd-phase--ended { background: var(--gray-100); color: var(--gray-500); }
/* An event that already ended stays while its door's window is open: quieter than the ones in progress or about to start. */
.evd-event--ended { background: var(--gray-50); }
.evd-event--ended .evd-event__name { color: var(--gray-700); }
.evd-endednote { margin: 4px 2px 0; }
.evd-event__counts { display: flex; flex-wrap: wrap; gap: 6px 14px; font-size: 13px; color: var(--gray-700); }
.evd-event__counts b { color: var(--gray-900); }

/* Big buttons: at least 48 px tall, the whole width on a phone. */
.evd-btn { display: inline-flex; align-items: center; justify-content: center; gap: 8px; min-height: 48px; padding: 10px 18px; border-radius: 12px;
    border: 1.5px solid transparent; font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; text-decoration: none; }
.evd-btn i { font-size: 19px; }
.evd-btn--block { width: 100%; box-sizing: border-box; }
.evd-btn--primary { background: var(--navy-800); color: var(--on-accent); }
.evd-btn--primary i { color: var(--gold-300); }
.evd-btn--ghost { background: transparent; color: var(--gray-700); border-color: var(--gray-200); }
.evd-btn--danger { background: var(--red-100); color: var(--red-600); border-color: var(--red-border); }
.evd-btn:disabled { opacity: .5; cursor: not-allowed; }
.evd-btn:focus-visible, .evd-back:focus-visible, .evd-tabbtn:focus-visible, .evd-modebtn:focus-visible { outline: 2px solid var(--gold-500); outline-offset: 2px; }

.evd-counts { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 8px; }
.evd-count { background: var(--white); border: 1px solid var(--gray-100); border-radius: 14px; padding: 10px 8px; text-align: center; display: grid; gap: 2px; }
.evd-count b { font-size: 26px; line-height: 1; color: var(--blue-800); font-variant-numeric: tabular-nums; }
.evd-count span { font-size: 11px; text-transform: uppercase; letter-spacing: .05em; color: var(--gray-500); }
.evd-bytype { background: var(--white); border: 1px solid var(--gray-100); border-radius: 14px; padding: 10px 14px; font-size: 13px; color: var(--gray-700); }
.evd-bytype summary { cursor: pointer; font-weight: 600; min-height: 24px; }
.evd-bytype ul { list-style: none; margin: 8px 0 0; padding: 0; display: grid; gap: 6px; }
.evd-bytype li { display: flex; justify-content: space-between; gap: 12px; font-variant-numeric: tabular-nums; }

.evd-setup { grid-template-columns: 1fr; }
.evd-setup input[type=text], .evd-input, .evd-undo input { min-height: 48px; font-size: 16px; box-sizing: border-box; width: 100%; }
.evd-sound input { width: 20px; height: 20px; accent-color: var(--blue-600); }
.evd-tabs, .evd-mode { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; background: var(--gray-100); border-radius: 14px; padding: 4px; }
.evd-tabbtn, .evd-modebtn { min-height: 48px; border: 0; border-radius: 11px; background: transparent; color: var(--gray-700); font: inherit; font-size: 15px; font-weight: 700;
    cursor: pointer; display: inline-flex; align-items: center; justify-content: center; gap: 8px; }
.evd-tabbtn.is-on, .evd-modebtn.is-on { background: var(--white); color: var(--blue-800); box-shadow: 0 1px 3px rgba(13,53,133,.12); }
.evd-modebtn.is-on { background: var(--navy-800); color: var(--on-accent); }

.evd-camera__frame { position: relative; border-radius: 14px; overflow: hidden; background: var(--gray-100); aspect-ratio: 4 / 3; display: grid; place-items: center; }
.evd-video { display: none; width: 100%; height: 100%; object-fit: cover; }
.evd-camera__frame.is-on .evd-video { display: block; }
.evd-camera__idle { padding: 16px; text-align: center; color: var(--gray-700); display: grid; gap: 6px; justify-items: center; }
.evd-camera__idle i { font-size: 44px; color: var(--gray-400); }
.evd-camera__idle p { margin: 0; font-size: 14px; }
.evd-camera__hint { margin: 0; line-height: 1.45; }

.evd-searchrow { display: grid; grid-template-columns: minmax(0, 1fr) auto; gap: 8px; }
.evd-found, .evd-matlist { list-style: none; margin: 0; padding: 0; display: grid; gap: 10px; }
.evd-ticket-card { border: 1.5px solid var(--gray-100); border-radius: 14px; padding: 12px; display: grid; gap: 10px; }
.evd-ticket { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; }
.evd-ticket > div { min-width: 0; }
.evd-ticket .ev-chip { flex: none; white-space: nowrap; }
.evd-ticket__name { font-size: 17px; font-weight: 700; color: var(--gray-900); overflow-wrap: anywhere; }
.evd-ticket__actions { display: flex; flex-wrap: wrap; gap: 8px; }
.evd-ticket__actions .evd-btn { flex: 1 1 160px; }
.evd-ticket__actions:empty { display: none; }
.evd-undo { display: grid; gap: 10px; padding: 12px; border-radius: 12px; background: var(--gray-50); border: 1px dashed var(--gray-200); }
.evd-undo .ev-actions .evd-btn { flex: 1 1 140px; }

.evd-materials { display: grid; gap: 10px; }
.evd-mat { display: flex; justify-content: space-between; align-items: center; gap: 10px; border: 1.5px solid var(--gray-100); border-radius: 14px; padding: 12px; flex-wrap: wrap; }
.evd-mat.is-done { background: var(--gray-50); }
.evd-mat__body { flex: 1 1 180px; min-width: 0; display: grid; gap: 3px; }
.evd-mat__name { font-size: 16px; font-weight: 700; color: var(--gray-900); overflow-wrap: anywhere; }
.evd-mat__state { font-size: 13px; font-weight: 600; color: var(--gold-600); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.evd-mat__state--done { color: var(--green-600); }
.evd-mat .evd-btn { flex: 0 1 auto; }

/* The result: the whole screen, green or red. */
.evd-result { position: fixed; inset: 0; z-index: 2000; display: grid; align-content: center; justify-items: center; gap: 10px; padding: 24px 20px; text-align: center;
    cursor: pointer; overflow-y: auto; }
.evd-result--ok { background: var(--green-500); color: var(--green-100); }
.evd-result--no { background: var(--red-500); color: var(--red-100); }
.evd-result__icon { font-size: 96px; line-height: 1; }
.evd-result__title { font-size: clamp(34px, 11vw, 56px); font-weight: 800; line-height: 1.05; }
.evd-result__message { font-size: 18px; font-weight: 600; max-width: 34ch; overflow-wrap: anywhere; }
.evd-result__repeat { font-size: 14px; font-weight: 600; padding: 4px 12px; border: 1.5px solid currentColor; border-radius: 999px; }
.evd-result__ticket { margin-top: 8px; padding: 14px 18px; border-radius: 16px; border: 2px solid currentColor; display: grid; gap: 4px; font-size: 16px; max-width: 100%; box-sizing: border-box; }
.evd-result__holder { font-size: 24px; font-weight: 800; overflow-wrap: anywhere; }
.evd-result__materials { font-size: 14px; font-weight: 600; margin-top: 4px; }
.evd-result__hint { margin-top: 10px; font-size: 13px; font-weight: 600; letter-spacing: .04em; text-transform: uppercase; }

/* The Admin shell has no phone layout (a fixed sidebar): on a phone the door takes the whole width; «Eventos» at the top leads back. */
@media (max-width: 900px) {
  .admin-shell:has(.evd-page) .admin-sidebar { display: none; }
  .admin-main:has(.evd-page) { padding: 12px; }
}

/* ── Portal «Mis tickets» (EV2): the ticket at the door ── */
.evp-badge--used { background: var(--evp-line); color: var(--evp-muted); }
.evp-badge--inside { background: var(--evp-ok-bg); color: var(--evp-ok); }

/* ── Portal EV3: the cancellation policy, a cancelled event's notice, a ticket's state and its return / resale buttons ── */
.evp-notice { font-size: 15px; font-weight: 600; line-height: 1.45; border: 1px solid var(--evp-danger); }
.evp-badge--state { background: var(--evp-danger-bg); color: var(--evp-danger); }
/* «En reventa» is a state the owner chose, not a problem: the portal's informative tone, apart from the red of «Devuelto» and «Evento cancelado». */
.evp-badge--info { background: var(--evp-info-bg); color: var(--evp-info); }
.evp-policy__lines { margin: 0; padding-left: 20px; display: grid; gap: 4px; font-size: 14px; line-height: 1.5; }
.evp-policy__note { margin: 10px 0 0; font-size: 14px; color: var(--evp-muted); }
.evp-policy summary { cursor: pointer; font-weight: 700; font-size: 15px; }
.evp-policy[open] summary { margin-bottom: 12px; }
.evp-policy > small { display: block; margin-top: 10px; }
.evp-policy--inline { display: grid; gap: 8px; padding: 12px 14px; border: 1.5px solid var(--evp-line); border-radius: min(var(--evp-radius), 12px); background: var(--evp-bg); font-size: 14px; }
.evp-policy--inline .evp-policy__note { margin: 0; }
.evp-ticket-actions { margin-top: 4px; }
.evp-linkbtn:disabled { opacity: .55; cursor: default; }

/* ── Admin EV3: policies, refunds, resale and cancelling the event (theme tokens only) ── */
.ev-refundline { display: flex; flex-wrap: wrap; gap: 6px 16px; align-items: center; margin: 8px 0; font-size: 13px; color: var(--gray-700); }
.ev-refundline b { color: var(--gray-900); }
.ev-ordertickets li { margin-bottom: 6px; }
.ev-ordertickets li > .ev-chip, .ev-ordertickets li > .comms-btn, .ev-ordertickets li > .ev-hint { margin-left: 8px; }
.ev-refundactions { margin-top: 10px; }
.ev-refundform { margin-top: 10px; display: grid; gap: 10px; background: var(--white); color: var(--gray-700); }
.ev-refundform b { color: var(--blue-800); }
.ev-table--inner { margin-top: 4px; border: 1px solid var(--gray-100); }
.ev-refundfail { margin-top: 4px; font-size: 12px; color: var(--red-600); }
.ev-chip--refund-succeeded, .ev-chip--ticket-valid, .ev-chip--ticket-inside, .ev-chip--resale-sold { background: var(--green-100); color: var(--green-600); }
.ev-chip--refund-pending, .ev-chip--ticket-forresale, .ev-chip--resale-listed, .ev-chip--resale-beingbought { background: var(--gold-100); color: var(--gold-600); }
.ev-chip--refund-failed { background: var(--red-100); color: var(--red-600); }
.ev-chip--ticket-used { background: var(--blue-50); color: var(--blue-800); }
.ev-chip--ticket-refunded, .ev-chip--ticket-resold, .ev-chip--ticket-void { background: var(--gray-100); color: var(--gray-500); }
.ev-matstat--failed b { color: var(--red-600); }
.ev-scroll { overflow-x: auto; margin-top: 12px; }
/* «Devoluciones»: ten columns. Nothing wraps (each row is one or two lines) and the table is as wide as it needs: .ev-scroll scrolls it. */
.ev-table--refunds { width: max-content; min-width: 100%; font-size: 13px; }
.ev-table--refunds th, .ev-table--refunds td { padding: 9px 10px; white-space: nowrap; }
.ev-table--refunds td.ev-refunds__wrap { white-space: normal; min-width: 150px; max-width: 220px; overflow-wrap: break-word; }
.ev-table--refunds td.ev-refunds__reason { min-width: 240px; max-width: 340px; }
.ev-pager { margin-top: 12px; }
.ev-field--inline { flex-direction: row; align-items: center; gap: 8px; }
.ev-tiers { display: grid; gap: 8px; margin: 12px 0 8px; }
.ev-tier { display: flex; flex-wrap: wrap; gap: 10px; align-items: flex-end; padding: 10px 12px; border: 1.5px solid var(--gray-100); border-radius: 12px; }
.ev-tier .ev-field { flex: 1 1 180px; }
.ev-preview { margin-top: 18px; padding: 2px 14px 12px; border-radius: 12px; background: var(--gray-50); border: 1px solid var(--gray-100); color: var(--gray-700); font-size: 14px; }
.ev-preview .ev-list { margin: 0 0 8px; }
.ev-cancelpanel { border-color: var(--red-500); }
.ev-cancelpanel .ev-card__title { color: var(--red-600); }
.ev-cancelpanel .ev-list { margin: 0 0 14px; font-size: 13px; line-height: 1.6; color: var(--gray-700); }
.ev-cancelled .ev-card__title { color: var(--red-600); }
/* The refunds and resale tables scroll sideways on a phone instead of losing their fourth column (the amount). */
@media (max-width: 720px) { .ev-table--keep th:nth-child(4), .ev-table--keep td:nth-child(4), .ev-table--inner th:nth-child(4), .ev-table--inner td:nth-child(4) { display: table-cell; } }

/* The toolbar of a tab (its title, intro and main button) keeps its distance from the first card. */
.ev-card > .ev-toolbar { margin-bottom: 12px; }

/* ═══ EV5 · Reportes ═══ (theme tokens only: light and dark) */
.ev-report { display: grid; gap: 14px; }
.ev-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }
.ev-kpi { background: var(--white); border: 1px solid var(--gray-100); border-radius: 14px; padding: 14px 16px; display: grid; gap: 4px; align-content: start;
    box-shadow: 0 1px 4px rgba(13,53,133,.06); }
.ev-kpi__label { font-size: 11px; text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); font-weight: 700; }
.ev-kpi__value { font-size: 24px; line-height: 1.15; color: var(--gray-900); font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.ev-kpi__value small { font-size: 15px; font-weight: 600; color: var(--gray-500); }
.ev-kpi__note { font-size: 12px; color: var(--gray-500); line-height: 1.4; }
.ev-meter { display: block; height: 6px; border-radius: 999px; background: var(--gray-100); overflow: hidden; min-width: 60px; }
.ev-meter > span { display: block; height: 100%; border-radius: 999px; background: var(--blue-600); }
.ev-metercell { min-width: 150px; white-space: nowrap; }
.ev-metercell .ev-meter { display: inline-block; width: 90px; vertical-align: middle; margin-right: 8px; }
.ev-metercell > span:last-child { font-variant-numeric: tabular-nums; }
.ev-defs { font-size: 13px; color: var(--gray-700); }
.ev-defs summary, .ev-tabledetails summary { cursor: pointer; color: var(--blue-600); font-weight: 600; display: inline-flex; gap: 6px; align-items: center; }
.ev-defs dl { margin: 10px 0 0; display: grid; grid-template-columns: max-content 1fr; gap: 6px 14px; background: var(--white); border: 1px solid var(--gray-100);
    border-radius: 12px; padding: 14px 16px; }
.ev-defs dt { font-weight: 700; color: var(--gray-900); }
.ev-defs dd { margin: 0; line-height: 1.45; }
@media (max-width: 640px) { .ev-defs dl { grid-template-columns: 1fr; } .ev-defs dd { margin-bottom: 6px; } }
.ev-tabledetails { margin-top: 12px; font-size: 13px; }
.ev-proj { display: flex; justify-content: space-between; gap: 12px; align-items: flex-start; flex-wrap: wrap; }
.ev-proj__range { font-size: 22px; color: var(--gray-900); font-variant-numeric: tabular-nums; }
.ev-proj__why { margin: 12px 0 0; }
.ev-projbar { position: relative; height: 14px; border-radius: 999px; background: var(--gray-100); margin-top: 14px; overflow: hidden; }
.ev-projbar__sold { position: absolute; left: 0; top: 0; bottom: 0; background: var(--blue-600); border-radius: 999px 0 0 999px; }
.ev-projbar__range { position: absolute; top: 0; bottom: 0; background: var(--gold-500); opacity: .5; }
.ev-projbar__mark { position: absolute; top: 0; bottom: 0; width: 3px; margin-left: -1.5px; background: var(--gold-700); }
.ev-projbar__legend { display: flex; gap: 14px; flex-wrap: wrap; margin-top: 8px; align-items: center; }
.ev-swatch { display: inline-block; width: 12px; height: 8px; border-radius: 2px; margin-right: 5px; vertical-align: middle; }
.ev-swatch--sold { background: var(--blue-600); }
.ev-swatch--range { background: var(--gold-500); opacity: .5; }
.ev-swatch--mark { background: var(--gold-700); width: 3px; height: 12px; }
.ev-trend { margin: 0 0 12px; font-size: 13px; color: var(--gray-700); display: flex; gap: 6px; align-items: center; }
.ev-trend--up i { color: var(--green-600); }
.ev-trend--down i { color: var(--red-600); }
.ev-charts { display: grid; grid-template-columns: repeat(auto-fit, minmax(320px, 1fr)); gap: 18px; align-items: start; }
.ev-chart__title { margin: 0 0 6px; font-size: 13px; font-weight: 700; color: var(--gray-700); }
.ev-moneygrid { display: grid; grid-template-columns: minmax(0, 2fr) minmax(200px, 1fr); gap: 16px; align-items: start; }
@media (max-width: 860px) { .ev-moneygrid { grid-template-columns: 1fr; } }
.ev-moneynotes { display: grid; gap: 8px; }
.ev-moneynotes .ev-matstat b { font-size: 17px; }
.ev-money td { font-variant-numeric: tabular-nums; }
.ev-money__total td { font-weight: 700; color: var(--gray-900); border-top: 2px solid var(--gray-200); border-bottom: 0; }
.ev-chip--pending { background: var(--gold-100); color: var(--gold-700); }
.ev-aicard .ev-card__title { margin: 0; }
.ev-aicard .ev-toolbar { margin-bottom: 12px; }
.ev-ai__meta { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 10px; }
.ev-ai-badge { display: inline-flex; align-items: center; gap: 4px; padding: 2px 9px; border-radius: 999px; font-size: 11px; font-weight: 700;
    background: var(--gold-100); color: var(--gold-700); border: 1px solid var(--gold-200); }
.ev-ai__cols { display: grid; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); gap: 16px; }
.ev-ai__h { margin: 0 0 4px; font-size: 13px; color: var(--blue-800); display: flex; gap: 6px; align-items: center; }
.ev-ai__cols .ev-list { margin-top: 4px; font-size: 14px; line-height: 1.5; color: var(--gray-700); display: grid; gap: 4px; }
.ev-ai__legend { margin: 12px 0 0; }
/* A summary written with other figures: dimmed (still readable), and the button that writes a new one stands out. */
.ev-ai__cols.is-stale { opacity: .62; }
.ev-btn--attention { box-shadow: 0 0 0 3px var(--gold-100), 0 0 0 4px var(--gold-500); }
.ev-aicard .ev-alert { margin-bottom: 10px; }
.ev-repset__note { margin-top: 8px; }
.ev-cmp-picks { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 4px 14px; max-height: 232px; overflow-y: auto;
    border: 1px solid var(--gray-100); border-radius: 10px; padding: 8px; }
/* Names of events and sentences: the global label style (uppercase, spaced) is for field titles, not for these. */
.ev-cmp-pick, .ev-check--plain { text-transform: none; letter-spacing: normal; font-weight: 400; }
.ev-cmp-pick { padding: 6px 8px; border-radius: 8px; align-items: flex-start; }
.ev-cmp-pick.is-on { background: var(--blue-50); }

/* The charts (EvChart): marks wear the series colors, text wears the text tokens. Six series at most, in this fixed order; each line is
   also told apart by its dash and by its label. */
.evc-figure { margin: 0; }
.evc { display: block; width: 100%; height: auto; overflow: visible; }
.evc text { font-family: inherit; font-size: 11px; fill: var(--gray-500); font-variant-numeric: tabular-nums; }
.evc .evc-label { fill: var(--gray-700); font-weight: 600; }
.evc .evc-xtitle { fill: var(--gray-500); }
.evc-grid { stroke: var(--gray-100); stroke-width: 1; }
.evc-axis { stroke: var(--gray-300); stroke-width: 1; }
.evc-bar { fill: var(--blue-600); }
.evc-hit { fill: transparent; stroke: none; }
.evc-hit:hover { fill: var(--blue-600); fill-opacity: .08; }
.evc-line { fill: none; stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.evc-dot { stroke: var(--white); stroke-width: 2; }
/* Block B: six theme tokens that stay apart in the light AND the dark theme (each has its own dark value; --gold-500, never --gold-300,
   which points at itself in the dark theme), in an order that alternates cold and warm so neighbours differ most. Color is never the
   only cue: every series has its OWN dash (the first three used to be all solid) and its number at the end of the line and in the legend. */
.evc-s0 { stroke: var(--blue-600); }                               .evc-f0 { fill: var(--blue-600); }   .evc-b0 { background: var(--blue-600); }
.evc-s1 { stroke: var(--orange-500); stroke-dasharray: 9 4; }      .evc-f1 { fill: var(--orange-500); } .evc-b1 { background: var(--orange-500); }
.evc-s2 { stroke: var(--teal-500); stroke-dasharray: 2 5; }        .evc-f2 { fill: var(--teal-500); }   .evc-b2 { background: var(--teal-500); }
.evc-s3 { stroke: var(--purple-500); stroke-dasharray: 10 3 2 3; } .evc-f3 { fill: var(--purple-500); } .evc-b3 { background: var(--purple-500); }
.evc-s4 { stroke: var(--gold-500); stroke-dasharray: 5 3; }        .evc-f4 { fill: var(--gold-500); }   .evc-b4 { background: var(--gold-500); }
.evc-s5 { stroke: var(--green-500); stroke-dasharray: 14 3 2 3 2 3; } .evc-f5 { fill: var(--green-500); } .evc-b5 { background: var(--green-500); }
.evc-badge { stroke: var(--white); stroke-width: 1.5; }
.evc .evc-badge__n { fill: var(--white); font-size: 10px; font-weight: 700; }
.evc-leader { stroke: var(--gray-300); stroke-width: 1; stroke-dasharray: 1 3; }
.evc-range { stroke: var(--gold-600); stroke-width: 2; stroke-linecap: round; }
.evc-range--path { stroke-dasharray: 4 5; stroke-width: 1.5; }
.evc-range-dot { fill: var(--gold-600); stroke: var(--white); stroke-width: 2; }
.evc-legend { list-style: none; margin: 8px 0 0; padding: 0; display: flex; flex-wrap: wrap; gap: 6px 16px; font-size: 12px; color: var(--gray-700); }
.evc-legend li { display: inline-flex; gap: 6px; align-items: center; min-width: 0; max-width: 100%; }
.evc-legend__n { flex: none; width: 16px; height: 16px; border-radius: 50%; color: var(--white); font-size: 10px; font-weight: 700; line-height: 16px; text-align: center; font-variant-numeric: tabular-nums; }
/* A long event name is cut with «…» here (the whole name is the item's title), never in the middle of the drawing. */
.evc-legend__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; max-width: 34ch; }
.evc-key { width: 26px; height: 8px; display: inline-block; vertical-align: middle; margin-right: 4px; flex: none; }
.evc-caption { margin-top: 8px; font-size: 12px; color: var(--gray-500); line-height: 1.45; }

/* ── EV6 · Planning (Admin): agenda, schedule, vendors, sponsors, duplicate and the event's result ── */
.ev-sr { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0, 0, 0, 0); white-space: nowrap; border: 0; }
.ev-nowrap { white-space: nowrap; }
.ev-ellipsis { max-width: 240px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-neg { color: var(--red-600); }
.ev-file { position: absolute; width: 1px; height: 1px; opacity: 0; overflow: hidden; }
.ev-table tr.is-off td { color: var(--gray-500); }
.ev-daytitle { margin: 18px 0 0; }
.ev-agendatable td:nth-child(2) { min-width: 220px; }
.ev-warnline { display: flex; gap: 6px; align-items: center; margin-top: 4px; font-size: 12px; font-weight: 600; color: var(--gold-700); }
.ev-pairrow { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr) 30px; gap: 8px; align-items: center; margin-bottom: 8px; }
.ev-pairrow input { border: 1.5px solid var(--gray-200); border-radius: 10px; padding: 8px 10px; font: inherit; font-size: 14px; background: var(--gray-50); color: var(--gray-900); min-width: 0; }
.ev-pairrow input:focus { outline: none; border-color: var(--blue-600); background: var(--white); }
.ev-minititle { display: flex; gap: 6px; align-items: center; margin: 14px 0 8px; font-size: 12px; text-transform: uppercase; letter-spacing: .06em; color: var(--gray-500); }
.ev-minititle:first-child { margin-top: 0; }

.ev-progress { display: grid; gap: 6px; margin-bottom: 14px; }
.ev-progress__bar { height: 10px; border-radius: 999px; background: var(--gray-100); overflow: hidden; }
.ev-progress__bar > span { display: block; height: 100%; border-radius: 999px; background: var(--green-600); transition: width .2s; }
.ev-progress__text { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; font-size: 13px; color: var(--gray-700); }
.ev-stage { margin-top: 16px; }
.ev-stage__head { display: flex; justify-content: space-between; align-items: center; gap: 8px; padding-bottom: 6px; border-bottom: 2px solid var(--gray-100); margin-bottom: 4px; }
.ev-stage__head .ev-card__subtitle { margin: 0; }
.ev-stage__head small, .ev-vendorcard .ev-card__subtitle small { font-size: 12px; font-weight: 600; color: var(--gray-500); margin-left: 6px; }
.ev-task { display: grid; grid-template-columns: 20px minmax(0, 1fr) minmax(0, 170px) 92px 92px auto; gap: 12px; align-items: center; padding: 9px 4px; border-bottom: 1px solid var(--gray-100); font-size: 14px; color: var(--gray-700); }
.ev-task__check { width: 18px; height: 18px; accent-color: var(--green-600); cursor: pointer; }
.ev-task__body { display: grid; gap: 2px; min-width: 0; }
.ev-task__title { font-weight: 600; color: var(--gray-900); }
.ev-task.is-done .ev-task__title { text-decoration: line-through; color: var(--gray-500); font-weight: 500; }
.ev-task__who { display: flex; gap: 5px; align-items: center; font-size: 13px; color: var(--gray-500); overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.ev-task__due { font-size: 13px; white-space: nowrap; font-variant-numeric: tabular-nums; }
.ev-task__due.is-late { color: var(--red-600); font-weight: 700; }
.ev-task.is-overdue { background: var(--red-100); border-radius: 8px; }
.ev-task .ev-chip { justify-self: start; white-space: nowrap; }
@media (max-width: 900px) {
    .ev-task { grid-template-columns: 20px minmax(0, 1fr) auto; }
    .ev-task__who, .ev-task__due { grid-column: 2; }
    .ev-task .ev-chip { grid-column: 2; }
    .ev-task .ev-rowactions { grid-column: 3; grid-row: 1; }
}

.ev-picked { display: flex; gap: 8px; align-items: center; font-weight: 400; color: var(--gray-700); }
.ev-pick { list-style: none; margin: 0; padding: 4px; border: 1px solid var(--gray-200); border-radius: 10px; background: var(--white); display: grid; gap: 2px; }
.ev-pick__item { display: flex; flex-direction: column; align-items: flex-start; gap: 2px; width: 100%; padding: 8px 10px; border: 0; border-radius: 8px; background: none; font: inherit; color: var(--gray-900); cursor: pointer; text-align: left; }
.ev-pick__item span { font-size: 12px; color: var(--gray-500); font-weight: 400; }
.ev-pick__item:hover, .ev-pick__item:focus-visible { background: var(--blue-50); outline: none; }
.ev-vendortable td, .ev-sponsortable td, .ev-paytable td { vertical-align: middle; }
.ev-vendortable td:first-child, .ev-sponsortable td:nth-child(2) { min-width: 180px; }
.ev-vendorcard { margin-top: 14px; padding: 16px 18px; border: 1.5px solid var(--blue-600); border-radius: 14px; background: var(--gray-50); }
.ev-vendorcard > .ev-toolbar { margin-bottom: 12px; }
.ev-vendorcard .ev-card__subtitle { margin: 0; }
.ev-vendorcard .ev-matstats { margin: 0 0 12px; }
.ev-vendorcard .ev-matstat { background: var(--white); }
.ev-vendorcard .ev-matstat b { font-size: 18px; font-variant-numeric: tabular-nums; }
.ev-vendorcols { display: grid; grid-template-columns: repeat(auto-fit, minmax(300px, 1fr)); gap: 22px; align-items: start; }
.ev-deliverable { padding: 5px 0; text-transform: none; letter-spacing: normal; font-weight: 400; }
.ev-deliverable.is-done { color: var(--gray-500); text-decoration: line-through; }
.ev-docrow { display: grid; grid-template-columns: 22px minmax(0, 1fr) auto; gap: 10px; align-items: center; padding: 8px 10px; margin-bottom: 6px; border: 1px solid var(--gray-100); border-radius: 10px; background: var(--white); color: var(--gray-700); }
.ev-docrow > i { font-size: 20px; color: var(--blue-600); }
.ev-docrow__name { display: grid; gap: 1px; min-width: 0; font-size: 13px; }
.ev-docrow__name b { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: var(--gray-900); }
.ev-uploadrow { display: flex; gap: 8px; align-items: center; flex-wrap: wrap; margin: 10px 0 4px; }
.ev-uploadrow select { border: 1.5px solid var(--gray-200); border-radius: 10px; padding: 7px 10px; font: inherit; font-size: 13px; background: var(--white); color: var(--gray-900); }
.ev-uploadrow label { position: relative; cursor: pointer; text-transform: none; letter-spacing: normal; }
label.ev-icon-btn { position: relative; }
.ev-payform { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; margin: 12px 0 10px; }
.ev-payform .ev-field--wide { grid-column: 1 / -1; }
.ev-payform input { background: var(--white); }
.ev-paytable { margin-top: 0; }
.ev-logocell { width: 1%; }
.ev-sponsorlogo { display: flex; align-items: center; justify-content: center; width: 124px; height: 56px; object-fit: contain; border: 1px solid var(--gray-100); border-radius: 8px; background: #fff; padding: 4px; box-sizing: border-box; }
.ev-sponsorlogo--none { color: var(--gray-400); background: var(--gray-50); font-size: 18px; }
.ev-duplicate { border-color: var(--blue-600); }
.ev-dupcols { display: grid; grid-template-columns: repeat(auto-fit, minmax(260px, 1fr)); gap: 8px 24px; margin-bottom: 14px; }
.ev-dupcols .ev-list { margin: 0; }
.ev-resultkpis { margin-bottom: 14px; }
.ev-card > .ev-defs { margin: 14px 0 0; line-height: 1.5; }
.ev-kpi--gain .ev-kpi__value { color: var(--green-600); }
.ev-kpi--loss .ev-kpi__value { color: var(--red-600); }
.ev-alert .ev-actions { margin-top: 6px; }

/* ── EV6 · Public page: agenda and sponsors (colors from the page's own variables: light and dark) ── */
.evp-track { position: absolute; opacity: 0; width: 1px; height: 1px; }
.evp-tracklabel { display: inline-block; margin: 0 6px 8px 0; padding: 6px 13px; border: 1.5px solid var(--evp-line); border-radius: 999px; font-size: 13px; font-weight: 600; color: var(--evp-muted); cursor: pointer; user-select: none; }
.evp-track:checked + .evp-tracklabel { background: var(--evp-text); border-color: var(--evp-text); color: var(--evp-card); }
.evp-track:focus-visible + .evp-tracklabel { outline: 2px solid var(--evp-text); outline-offset: 2px; }
.evp-days { display: grid; gap: 20px; margin-top: 6px; }
.evp-day__title { margin: 0 0 4px; font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--evp-muted); padding-bottom: 8px; border-bottom: 2px solid var(--evp-brand); }
.evp-sessions { list-style: none; margin: 0; padding: 0; }
.evp-session { display: grid; grid-template-columns: var(--evp-time-col) minmax(0, 1fr); gap: 16px; padding: 14px 0; border-bottom: 1px solid var(--evp-line); }
.evp-session:last-child { border-bottom: 0; padding-bottom: 0; }
.evp-session__time { font-weight: 700; font-size: 14px; font-variant-numeric: tabular-nums; white-space: nowrap; padding-top: 2px; color: var(--evp-accent); }
.evp-session__body { display: grid; gap: 6px; min-width: 0; }
.evp-session__title { margin: 0; font-size: 16px; line-height: 1.3; overflow-wrap: anywhere; }
.evp-session__meta { margin: 0; display: flex; gap: 10px; flex-wrap: wrap; align-items: center; font-size: 13px; color: var(--evp-muted); }
.evp-session__meta span { display: inline-flex; gap: 4px; align-items: center; }
.evp-session__track { padding: 2px 9px; border-radius: 999px; background: var(--evp-line); color: var(--evp-text); font-weight: 600; font-size: 12px; }
.evp-session__text { margin: 0; font-size: 14px; line-height: 1.5; color: var(--evp-muted); overflow-wrap: anywhere; }
.evp-session__text.rich-text { color: var(--evp-muted); }
.evp-speakers { list-style: none; margin: 0; padding: 0; display: flex; gap: 4px 16px; flex-wrap: wrap; font-size: 13px; }
.evp-speakers span { color: var(--evp-muted); }
.evp-agenda__zone { margin: 14px 0 0; font-size: 12px; color: var(--evp-muted); }
.evp-track--0:checked ~ .evp-days .evp-session:not([data-track="0"]), .evp-track--1:checked ~ .evp-days .evp-session:not([data-track="1"]),
.evp-track--2:checked ~ .evp-days .evp-session:not([data-track="2"]), .evp-track--3:checked ~ .evp-days .evp-session:not([data-track="3"]),
.evp-track--4:checked ~ .evp-days .evp-session:not([data-track="4"]), .evp-track--5:checked ~ .evp-days .evp-session:not([data-track="5"]),
.evp-track--6:checked ~ .evp-days .evp-session:not([data-track="6"]), .evp-track--7:checked ~ .evp-days .evp-session:not([data-track="7"]) { display: none; }
.evp-track--0:checked ~ .evp-days .evp-day:not(:has([data-track="0"])), .evp-track--1:checked ~ .evp-days .evp-day:not(:has([data-track="1"])),
.evp-track--2:checked ~ .evp-days .evp-day:not(:has([data-track="2"])), .evp-track--3:checked ~ .evp-days .evp-day:not(:has([data-track="3"])),
.evp-track--4:checked ~ .evp-days .evp-day:not(:has([data-track="4"])), .evp-track--5:checked ~ .evp-days .evp-day:not(:has([data-track="5"])),
.evp-track--6:checked ~ .evp-days .evp-day:not(:has([data-track="6"])), .evp-track--7:checked ~ .evp-days .evp-day:not(:has([data-track="7"])) { display: none; }
.evp-tier + .evp-tier { margin-top: 18px; }
.evp-tier__title { margin: 0 0 10px; font-size: 13px; text-transform: uppercase; letter-spacing: .06em; color: var(--evp-muted); }
.evp-logos { list-style: none; margin: 0; padding: 0; display: flex; gap: 12px; flex-wrap: wrap; }
/* Logos are drawn for a white page: they sit on a white tile in every theme (--evp-paper / --evp-ink). */
.evp-logo { display: flex; }
.evp-logo > a, .evp-logo > img, .evp-logo > .evp-logo__name { display: flex; align-items: center; justify-content: center; min-width: 150px; height: 84px; padding: 12px 18px; box-sizing: border-box; border: 1px solid var(--evp-line); border-radius: min(var(--evp-radius), 14px); background: var(--evp-paper); color: var(--evp-ink); text-decoration: none; font-weight: 700; }
.evp-logo > a > img, .evp-logo > img { max-height: 60px; max-width: 170px; object-fit: contain; }
.evp-logo > a > img { display: block; }
.evp-logo > img { height: 84px; width: auto; }
.evp-logo > a:hover, .evp-logo > a:focus-visible { border-color: var(--evp-text); outline: none; box-shadow: 0 0 0 2px var(--evp-text); }
/* By the page's own width (the shell is the container), so the Admin's phone preview lays out like a phone. 528 = a 560 px window. */
@container evp (max-width: 528px) {
    .evp-session { grid-template-columns: 1fr; gap: 4px; }
    .evp-session__time { font-size: 13px; color: var(--evp-muted); }
    .evp-logo { flex: 1 1 calc(50% - 6px); }
    .evp-logo > a, .evp-logo > img, .evp-logo > .evp-logo__name { min-width: 0; width: 100%; }
}

/* ═══════════════════════════════════════════════════════════════
   Themes · Admin: the gallery (ev-theme*, the Admin's tokens: light and dark), its thumbnails (evp-thumb*: a tiny page drawn with the
   THEME's own variables — not an image, so a thumbnail can never differ from its theme), the preview and the description's editor.
   ═══════════════════════════════════════════════════════════════ */
.ev-themes { display: grid; grid-template-columns: repeat(auto-fill, minmax(200px, 1fr)); gap: 12px; }
.ev-theme { display: grid; gap: 6px; align-content: start; padding: 8px 8px 10px; text-align: left; border: 2px solid var(--gray-100); border-radius: 14px;
    background: var(--white); color: var(--gray-700); font: inherit; cursor: pointer; min-width: 0; }
.ev-theme:hover:not(:disabled) { border-color: var(--blue-600); }
.ev-theme.is-on, .ev-theme.is-on:hover:not(:disabled) { border-color: var(--gold-500); box-shadow: 0 0 0 3px var(--gold-100); }
.ev-theme:focus-visible { outline: 2px solid var(--blue-600); outline-offset: 2px; }
.ev-theme:disabled { cursor: not-allowed; opacity: .75; }
.ev-theme__thumbs { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); border-radius: 9px; overflow: hidden; border: 1px solid var(--gray-200); }
.ev-theme__name { display: flex; gap: 6px; align-items: center; font-size: 14px; font-weight: 700; color: var(--gray-900); }
.ev-theme__name i { color: var(--gold-600); font-size: 17px; }
.ev-theme__text { font-size: 12px; line-height: 1.4; color: var(--gray-500); }
.ev-themenote { margin: 10px 0 0; }
.ev-themepreview { margin-top: 14px; border: 1px solid var(--gray-100); border-radius: 14px; overflow: hidden; background: var(--gray-50); }
.ev-themepreview__bar { display: flex; gap: 8px 14px; align-items: center; justify-content: space-between; flex-wrap: wrap; padding: 10px 12px; border-bottom: 1px solid var(--gray-100);
    background: var(--white); font-size: 13px; color: var(--gray-700); }
.ev-themepreview__bar b { color: var(--gray-900); }
.ev-themepreview__stage { max-height: 720px; overflow: auto; }
.ev-themepreview__stage.is-phone { width: 390px; max-width: 100%; margin: 14px auto; border: 1px solid var(--gray-200); border-radius: 22px; }
.evp-shell--preview { min-height: 0; }
.ev-themepreview__note { margin: 0; padding: 8px 12px; border-top: 1px solid var(--gray-100); background: var(--white); }
/* The description's editor wears the surface of a FIXED theme: the organizer chooses a text colour or a highlight on the very
   background the visitor will see. (With «Automático» the editor keeps the Admin's own look and a note explains the colour rule.)
   !important: comms.css paints every rich-text editor with the Admin's tokens that way. */
.ev-editor.evp-shell { min-height: 0; padding: 0; background: none; color: inherit; font-family: inherit; container: none; }
.ev-editor.evp-shell[data-evp-theme]:not([data-evp-theme="auto"]) .e-rte-content,
.ev-editor.evp-shell[data-evp-theme]:not([data-evp-theme="auto"]) .e-rte-content .e-content { background: var(--evp-card) !important; color: var(--evp-text) !important; }
.ev-editor.evp-shell[data-evp-theme]:not([data-evp-theme="auto"]) .e-rte-content .e-content a { color: var(--evp-accent); }
.ev-editor.evp-shell[data-evp-theme]:not([data-evp-theme="auto"]) .e-rte-content .e-content { font-family: var(--evp-font-body); line-height: 1.7; }

.evp-thumb { display: block; min-height: 0; height: 138px; padding: 8px; overflow: hidden; line-height: 1; container: none; }
.evp-thumb__hero { display: block; position: relative; overflow: hidden; background: var(--evp-hero-bg); color: var(--evp-hero-text);
    border: var(--evp-card-line) solid var(--evp-line); border-radius: min(var(--evp-radius), 9px); box-shadow: var(--evp-shadow); }
.evp-thumb__img { display: block; height: 28px; background: linear-gradient(135deg, var(--evp-line), var(--evp-muted)); }
.evp-thumb__body { display: grid; gap: 5px; justify-items: start; padding: 7px 8px; border-top: min(var(--evp-hero-rule), 2px) solid var(--evp-brand); }
.evp-thumb__title { font-family: var(--evp-font-title); font-weight: var(--evp-title-weight); letter-spacing: var(--evp-title-spacing); font-size: 15px; font-style: normal; }
.evp-thumb__meta { display: block; width: 52px; height: 3px; border-radius: 2px; background: var(--evp-hero-muted); }
.evp-thumb__cta { display: block; width: 42px; height: 11px; border-radius: min(var(--evp-radius-sm), 6px); background: var(--evp-brand); box-shadow: 0 0 0 1px var(--evp-hero-edge); }
.evp-thumb__card { display: grid; gap: 4px; margin-top: 6px; padding: 7px 8px; background: var(--evp-card); border: var(--evp-card-line) solid var(--evp-line);
    border-radius: min(var(--evp-radius), 9px); box-shadow: var(--evp-shadow); }
.evp-thumb__h { display: block; width: 30px; height: 4px; border-radius: 2px; background: var(--evp-text); }
.evp-thumb__text { display: block; height: 3px; border-radius: 2px; background: var(--evp-muted); }
.evp-thumb__text--link { width: 44%; background: var(--evp-accent); }
.evp-thumb[data-evp-theme="editorial"] .evp-thumb__hero, .evp-thumb[data-evp-theme="corporativo"] .evp-thumb__hero, .evp-thumb[data-evp-theme="noche"] .evp-thumb__hero { display: flex; align-items: stretch; }
.evp-thumb[data-evp-theme="editorial"] .evp-thumb__img, .evp-thumb[data-evp-theme="corporativo"] .evp-thumb__img { order: 2; flex: 0 0 42%; height: auto; }
.evp-thumb[data-evp-theme="editorial"] .evp-thumb__body, .evp-thumb[data-evp-theme="corporativo"] .evp-thumb__body, .evp-thumb[data-evp-theme="noche"] .evp-thumb__body { flex: 1 1 auto; }
.evp-thumb[data-evp-theme="editorial"] .evp-thumb__title { padding-bottom: 3px; border-bottom: 2px solid var(--evp-brand); }
.evp-thumb[data-evp-theme="editorial"] .evp-thumb__card { border-width: 1px 0 0; border-top-color: var(--evp-text); box-shadow: none; }
.evp-thumb[data-evp-theme="corporativo"] .evp-thumb__hero { border: 0; border-bottom: 2px solid var(--evp-brand); }
.evp-thumb[data-evp-theme="noche"] .evp-thumb__img { flex: 0 0 38%; height: auto; margin: 6px 0 6px 6px; border-radius: 4px; box-shadow: var(--evp-img-shadow); }
.evp-thumb[data-evp-theme="noche"] .evp-thumb__h, .evp-thumb[data-evp-theme="corporativo"] .evp-thumb__h { background: var(--evp-accent); }
.evp-thumb[data-evp-theme="vibrante"] .evp-thumb__hero { color: var(--evp-on-brand); background: linear-gradient(135deg, var(--evp-brand), var(--evp-brand-2)); }
.evp-thumb[data-evp-theme="vibrante"] .evp-thumb__img { margin: 5px 5px 0; border-radius: 6px; }
.evp-thumb[data-evp-theme="vibrante"] .evp-thumb__meta, .evp-thumb[data-evp-theme="vibrante"] .evp-thumb__cta { background: var(--evp-on-brand); }
.evp-thumb[data-evp-theme="vibrante"] .evp-thumb__h { box-shadow: -5px 0 0 0 var(--evp-brand); margin-left: 5px; }
.evp-thumb[data-evp-theme="minimal"] .evp-thumb__hero { display: flex; flex-direction: column; }
.evp-thumb[data-evp-theme="minimal"] .evp-thumb__img { order: 2; }
.evp-thumb[data-evp-theme="minimal"] .evp-thumb__body, .evp-thumb[data-evp-theme="minimal"] .evp-thumb__card { padding-left: 0; padding-right: 0; }
.evp-thumb[data-evp-theme="minimal"] .evp-thumb__card { border-top: 1px solid var(--evp-text); }
