/* Listado de campañas: editorial, con portadas grandes para las que aceptan lectores. */
.campaigns-page { max-width: 1160px; }

.cp-hero { display: grid; grid-template-columns: minmax(0, 1.4fr) auto; align-items: end; gap: 2rem; padding: 1rem 0 2rem; border-bottom: 1px solid #e8e5ec; }
.cp-hero h1 { font: 500 clamp(2.2rem, 5vw, 3.6rem)/1.08 "Poppins", sans-serif; letter-spacing: -.06em; color: #24212b; margin: 1rem 0 1rem; }
.cp-hero h1 em { font-family: Georgia, serif; font-weight: 400; color: #784dfe; letter-spacing: -.04em; }
.cp-hero p { max-width: 560px; margin: 0; color: #77717f; font-size: .92rem; line-height: 1.8; }
.cp-hero p strong { color: #5f34e0; font-weight: 600; }
.cp-steps { list-style: none; margin: 0; padding: 0; display: grid; gap: .55rem; }
.cp-steps li { display: flex; align-items: center; gap: .7rem; font-size: .82rem; color: #4c4658; white-space: nowrap; }
.cp-steps span { display: grid; place-items: center; width: 1.8rem; height: 1.8rem; border-radius: 50%; background: var(--violet-tint); color: var(--violet-dark); font-size: .75rem; font-weight: 600; }

.cp-genres { display: flex; flex-wrap: wrap; gap: .45rem; margin: 1.5rem 0 .5rem; }
.cp-genres a { padding: .4rem .95rem; border: 1px solid #e2dfee; border-radius: 999px; background: #fff; color: #4c4658; font-size: .8rem; text-decoration: none; }
.cp-genres a:hover { border-color: #bba6ff; color: var(--violet-dark); }
.cp-genres a[aria-current="true"] { background: var(--violet); border-color: var(--violet); color: #fff; }

.cp-section { margin-top: 2.75rem; }
.cp-section-heading { display: flex; align-items: baseline; justify-content: space-between; flex-wrap: wrap; gap: .25rem 1rem; }
.cp-section-heading p { margin: 0; color: #77717f; font-size: .8rem; }
.cp-section-title { font: 400 clamp(1.4rem, 2.6vw, 1.8rem)/1.2 Georgia, serif; color: #24212b; letter-spacing: -.03em; margin: 0 0 1.1rem; }
.cp-badges { display: flex; flex-wrap: wrap; gap: .35rem; }

/* Portadas */
.cp-cover { position: relative; overflow: hidden; border-radius: 3px; background: #f2edff; box-shadow: 3px 6px 9px #30293822, 9px 12px 22px #30293812; }
.cp-cover img { display: block; width: 100%; height: 100%; object-fit: cover; }
.cp-cover-placeholder { display: flex; flex-direction: column; justify-content: space-between; padding: 14px; background: #44365c; color: #fff; border-left: 4px solid #ffffff20; }
.cp-cover-placeholder span { font: 20px/1.15 Georgia, serif; overflow-wrap: break-word; hyphens: auto; display: -webkit-box; -webkit-line-clamp: 4; -webkit-box-orient: vertical; overflow: hidden; }
.cp-cover-placeholder small { font-size: 7px; letter-spacing: .12em; text-transform: uppercase; opacity: .8; }
.cp-cover-sm { width: 92px; height: 138px; flex-shrink: 0; }
.cp-cover-sm.cp-cover-placeholder { padding: 9px; }
.cp-cover-sm.cp-cover-placeholder span { font-size: 14px; }
.cp-cover-xs { width: 40px; height: 60px; flex-shrink: 0; box-shadow: 2px 3px 6px #30293822; }
.cp-cover-xs.cp-cover-placeholder { padding: 5px; }
.cp-cover-xs.cp-cover-placeholder span { font-size: 8px; -webkit-line-clamp: 3; }
.cp-cover-xs.cp-cover-placeholder small { display: none; }

/* Tu lectura en curso */
.cp-mine { display: flex; align-items: center; gap: 1.5rem; padding: 1.4rem 1.6rem; border: 1px solid #d0bfff; border-left: 4px solid var(--violet); border-radius: 14px; background: #faf8ff; color: inherit; text-decoration: none; }
.cp-mine-body { flex: 1; min-width: 0; }
.cp-mine h3 { margin: .6rem 0 .15rem; font-size: 1.25rem; color: #24212b; }
.cp-mine p { margin: 0; color: #77717f; font-size: .85rem; }
.cp-mine .cp-mine-deadline { margin-top: .6rem; color: var(--violet-dark); font-weight: 500; }
.cp-mine-cta { flex-shrink: 0; padding: .7rem 1.2rem; border-radius: 999px; background: var(--violet); color: #fff; font-size: .82rem; font-weight: 600; }
.cp-mine:hover .cp-mine-cta { background: var(--violet-dark); }

/* Abiertas: tarjetas con portada */
.cp-grid { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(240px, 1fr)); gap: 1.25rem; }
.cp-card { position: relative; display: flex; flex-direction: column; height: 100%; border: 1px solid #e8e5ec; border-radius: 16px; background: #fff; color: inherit; text-decoration: none; overflow: hidden; }
.cp-card:hover { border-color: #bba6ff; box-shadow: 0 12px 30px #32245a0f; }
.cp-card-stage { display: flex; justify-content: center; align-items: flex-end; height: 250px; padding: 1.6rem 1rem 1.2rem; background: #f3f1ed; }
.cp-card-stage .cp-cover { width: 136px; height: 204px; }
.cp-card-body { display: flex; flex-direction: column; flex: 1; padding: 1.1rem 1.2rem 1.25rem; }
.cp-card h3 { margin: .7rem 0 .2rem; font-family: "Lexend", sans-serif; font-size: 1.02rem; font-weight: 600; letter-spacing: -.02em; line-height: 1.35; color: #24212b; overflow-wrap: anywhere; }
.cp-author { margin: 0; color: #77717f; font-size: .8rem; }
.cp-card-meta { margin-top: auto; padding-top: 1rem; display: grid; gap: .45rem; font-size: .78rem; }
.cp-card-meta strong { color: #24212b; font-weight: 600; }
.cp-card-meta .cp-full { color: var(--danger); }
.cp-quota { display: block; height: 5px; border-radius: 999px; background: #efeaf9; overflow: hidden; }
.cp-quota span { display: block; height: 100%; border-radius: inherit; background: var(--violet); }
.cp-deadline { color: var(--violet-dark); }
.campaigns-page .cp-card.is-featured {
    --ticket-cut: 212px;
    border-color: #c49936;
    background: linear-gradient(120deg, #fff7d9, #fffdf4 48%, #f9e7ad);
    box-shadow: 0 5px 18px #92631420, inset 0 0 0 3px #fff4ca;
    -webkit-mask-image: radial-gradient(circle 10px at 0 var(--ticket-cut), transparent 98%, #000 100%), radial-gradient(circle 10px at 100% var(--ticket-cut), transparent 98%, #000 100%);
    -webkit-mask-composite: source-in;
    mask-image: radial-gradient(circle 10px at 0 var(--ticket-cut), transparent 98%, #000 100%), radial-gradient(circle 10px at 100% var(--ticket-cut), transparent 98%, #000 100%);
    mask-composite: intersect;
}
.cp-card.is-featured::before {
    content: "";
    position: absolute;
    inset: 6px;
    border: 1px solid #aa79294d;
    border-radius: 10px;
    pointer-events: none;
    z-index: 1;
}
.cp-card.is-featured .cp-card-stage {
    border-bottom: 1px dashed #a8792e;
    background: linear-gradient(115deg, #bd8b2c 0%, #e9c76d 16%, #fff1b8 32%, #d6aa4a 49%, #f9e8a6 67%, #fff5cf 78%, #c99a39 100%);
    background-size: 200% 100%;
}
.cp-card.is-featured .cp-card-body { background: linear-gradient(110deg, #ffffff40, transparent); }
.cp-card.is-featured .badge-featured { border: 1px solid #bb8b30; background: linear-gradient(110deg, #f8df91, #fff4c8, #ebc66c); color: #69450b; }
.cp-card.is-featured .cp-quota { background: #eadbb4; }
.cp-card.is-featured .cp-quota span { background: linear-gradient(90deg, #ab761d, #e0b64e); }
.cp-card.is-featured:hover { border-color: #a6751c; box-shadow: 0 8px 24px #8a5a0029, inset 0 0 0 3px #fff4ca; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .cp-card.is-featured .cp-card-stage { transition: background-position .7s ease; }
    .cp-card.is-featured:hover .cp-card-stage { background-position: 100% 0; }
}
@media (max-width: 600px) {
    .campaigns-page .cp-card.is-featured { --ticket-cut: 158px; }
}

/* En curso y finalizadas: lista compacta */
.cp-compact { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(340px, 100%), 1fr)); gap: .6rem; }
.cp-compact a { display: grid; grid-template-columns: auto minmax(0, 1fr); align-content: center; align-items: center; column-gap: .9rem; row-gap: .5rem; height: 100%; padding: .7rem .9rem; border: 1px solid #e8e5ec; border-radius: 12px; background: #fff; color: inherit; text-decoration: none; }
.cp-compact .cp-cover { grid-column: 1; grid-row: 1 / span 2; }
.cp-compact a:hover { border-color: #bba6ff; }
.cp-compact-text { flex: 1; min-width: 0; }
.cp-compact strong { display: block; font-size: .9rem; color: #24212b; overflow-wrap: anywhere; }
.cp-compact-text span { font-size: .75rem; color: #77717f; }
.cp-compact .cp-badges { grid-column: 2; justify-content: flex-start; min-width: 0; }
.cp-finished .cp-compact a { background: #fcfcfc; }
.cp-finished .cp-cover-xs { filter: saturate(.6); opacity: .85; }
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket).is-featured,
.campaigns-page .cp-compact a.is-featured {
    position: relative;
    border: 1px solid #b78727;
    outline: 1px dashed #b7872780;
    outline-offset: -7px;
    background: linear-gradient(115deg, #d9af50 0%, #fff0b7 23%, #f5dc8f 45%, #fff7d7 67%, #d7a747 100%);
    box-shadow: inset 0 0 0 3px #fff0bd, 0 4px 14px #8a5a0018;
    -webkit-mask-image: radial-gradient(circle 8px at 0 50%, transparent 98%, #000 100%), radial-gradient(circle 8px at 100% 50%, transparent 98%, #000 100%);
    -webkit-mask-composite: source-in;
    mask-image: radial-gradient(circle 8px at 0 50%, transparent 98%, #000 100%), radial-gradient(circle 8px at 100% 50%, transparent 98%, #000 100%);
    mask-composite: intersect;
}
.campaigns-page .cp-compact a.is-featured .cp-compact-text { border-left: 1px dashed #a8792e; padding-left: .8rem; }
.campaigns-page .cp-compact a.is-featured .cp-compact-text span,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket).is-featured p { color: #6f5326; }
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket).is-featured .cp-mine-cta { background: #795415; }
.campaigns-page .cp-compact a.is-featured:hover,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket).is-featured:hover { border-color: #805710; }
.cp-finished .pagination { margin-top: 1.25rem; }

@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .cp-card, .cp-card-stage .cp-cover { transition: transform .25s ease, box-shadow .25s ease, border-color .25s ease; }
    .cp-card:hover .cp-card-stage .cp-cover { transform: translateY(-5px); }
}
@media (max-width: 760px) {
    .cp-hero { grid-template-columns: minmax(0, 1fr); gap: 1.25rem; }
    .cp-steps { grid-auto-flow: column; justify-content: start; gap: 1rem; }
    .cp-mine { flex-wrap: wrap; }
    .cp-mine-cta { width: 100%; text-align: center; }
    .cp-compact { grid-template-columns: minmax(0, 1fr); }
}
@media (max-width: 540px) {
    .cp-steps { grid-auto-flow: row; }
    .cp-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .75rem; }
    .cp-card-stage { height: 190px; padding: 1rem .5rem .9rem; }
    .cp-card-stage .cp-cover { width: 100px; height: 150px; }
    .cp-card-body { padding: .85rem; }
    .cp-card h3 { font-size: .9rem; }
    .cp-card-stage .cp-cover-placeholder { padding: 10px; }
    .cp-card-stage .cp-cover-placeholder span { font-size: 14px; }
}

/* ===== Detalle de campaña ===== */
.campaign-detail { max-width: 1100px; }
.cd-hero { display: grid; grid-template-columns: minmax(260px, 360px) minmax(0, 1fr); gap: clamp(1.5rem, 4vw, 3.5rem); align-items: center; margin-top: 1rem; }
.cd-stage { display: flex; justify-content: center; align-items: center; padding: 2.5rem 1.5rem; border-radius: 20px; background: #f3f1ed; }
.cd-hero.is-featured .cd-stage { background: linear-gradient(180deg, #fff6df, #f3f1ed); box-shadow: 0 0 0 1px #f0d38a; }
.cd-info { min-width: 0; }
.cd-info h1 { margin: 1rem 0 .35rem; font: 500 clamp(2rem, 4.5vw, 3.2rem)/1.08 "Poppins", sans-serif; letter-spacing: -.055em; color: #24212b; overflow-wrap: anywhere; }
.cd-author { margin: 0; color: #77717f; font-size: 1rem; }
.cd-genres { display: flex; flex-wrap: wrap; gap: .4rem; margin-top: 1rem; }
.cd-genres span { padding: .25rem .75rem; border: 1px solid #e2dfee; border-radius: 999px; background: #fff; font-size: .75rem; color: #4c4658; }
.cd-facts { display: grid; grid-template-columns: repeat(auto-fit, minmax(130px, 1fr)); gap: 1px; margin: 1.6rem 0 0; border: 1px solid #e8e5ec; border-radius: 14px; overflow: hidden; background: #e8e5ec; }
.cd-facts div { padding: .8rem 1rem; background: #fff; }
.cd-facts dt { font-size: .65rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #77717f; }
.cd-facts dd { margin: .25rem 0 0; font-size: .92rem; font-weight: 500; color: #24212b; }
.cd-facts dd small { color: #77717f; font-weight: 400; }
.cd-action { margin-top: 1.6rem; }
.cd-action .btn-primary, .cd-action .btn-secondary-light { padding: .9rem 1.6rem; border-radius: 999px; font-size: .92rem; }
.cd-action form { margin: 0; }
.cd-action p { margin: .8rem 0 0; color: #77717f; font-size: .85rem; }
.cd-action p strong { color: var(--violet-dark); }
.cd-action p a { color: var(--violet-dark); }

/* Tu recorrido */
.cd-journey { margin-top: 2.5rem; padding: 1.5rem; border: 1px solid #e1d6f4; border-radius: 20px; background: linear-gradient(135deg, #f7f2ff, #fcfaff); }
.cd-journey-heading { display: flex; justify-content: space-between; align-items: baseline; flex-wrap: wrap; gap: .25rem 1rem; margin-bottom: 1.25rem; }
.cd-journey-heading h2 { margin: 0; font: 400 1.6rem/1.2 Georgia, serif; color: #24212b; }
.cd-journey-status { margin: 0; padding: .5rem .8rem; border-radius: 9px; background: #eee5fc; color: #76519e; font-size: .78rem; font-weight: 500; }
.cd-journey-status.is-done { color: var(--success); }
.cd-steps { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 1rem; counter-reset: step; }
.cd-steps li { position: relative; display: flex; flex-direction: column; gap: .9rem; padding: 1.1rem; border: 1px solid #e8e1ef; border-radius: 14px; background: #ffffffc9; counter-increment: step; min-width: 0; }
.cd-step-mark { display: grid; place-items: center; width: 2rem; height: 2rem; border-radius: 50%; border: 2px solid #d9d3e6; color: #9a92a8; font-size: .8rem; font-weight: 700; }
.cd-step-mark::before { content: counter(step); }
.cd-steps .cd-step-heading { display: flex; flex-direction: row; align-items: center; justify-content: space-between; gap: .75rem; height: 58px; min-height: 58px; }
.cd-step-heading .cd-step-mark { flex-shrink: 0; }
.cd-step-art { display: block; width: 66px; height: 58px; object-fit: contain; }
@media (max-width: 600px) {
    .cd-steps .cd-step-heading { height: 54px; min-height: 54px; }
    .cd-step-art { width: 64px; height: 54px; }
}
.cd-steps .is-done .cd-step-mark { border-color: #e4d8f3; background: #eee5f8; color: #8d68b2; }
.cd-steps .is-done .cd-step-mark::before { content: "✓"; }
.cd-steps .is-current { border-color: #b59adf; background: #fff; box-shadow: 0 6px 22px #8b61ba12; }
.cd-steps .is-current .cd-step-mark { border-color: var(--violet); color: var(--violet-dark); }
.cd-steps .is-next { background: #faf7fd; }
.cd-steps .is-next .cd-step-art { opacity: .65; }
.cd-steps h3 { margin: 0 0 .4rem; font-size: .9rem; line-height: 1.45; color: #493456; }
.cd-steps p { margin: 0; font-size: .8rem; color: #77717f; line-height: 1.6; overflow-wrap: anywhere; }
.cd-steps p a { color: var(--violet-dark); }
.cd-steps p strong { color: var(--violet-dark); }
.cd-steps .btn-primary { display: inline-block; margin-top: .3rem; min-height: 40px; border-radius: 9px; }
.cd-rejected { color: var(--danger) !important; }
.cd-review-form { display: grid; gap: .55rem; margin-top: .85rem; }
.cd-review-form[hidden] { display: none; }
.cd-review-form input { box-sizing: border-box; width: 100%; min-width: 0; min-height: 42px; padding: .6rem .75rem; border: 1px solid #e0d5ee; border-radius: 9px; background: #fcfaff; font: inherit; font-size: .82rem; }
.cd-review-form input:focus { outline: 2px solid var(--violet); outline-offset: 1px; }
.cd-leave { margin-top: .6rem; }
.cd-leave button { padding: 0; border: 0; background: none; color: #77717f; font: inherit; font-size: .75rem; text-decoration: underline; cursor: pointer; }
.cd-leave button:hover { color: var(--danger); }

/* Sinopsis y lateral */
.cd-body { display: grid; grid-template-columns: minmax(0, 1fr) 320px; gap: 2.5rem; margin-top: 3rem; padding-top: 2.5rem; border-top: 1px solid #e8e5ec; }
.cd-synopsis h2 { margin: .6rem 0 1rem; font: 400 1.8rem/1.2 Georgia, serif; color: #24212b; }
.cd-synopsis p { max-width: 68ch; margin: 0; color: #4c4658; font-size: 1rem; line-height: 1.9; overflow-wrap: anywhere; }
.cd-aside { align-self: start; padding: 1.4rem; border: 1px solid #e8e5ec; border-radius: 16px; background: #fff; }
.cd-aside h2 { margin: 0 0 .8rem; font-size: 1rem; color: #24212b; }
.cd-aside ol { margin: 0; padding-left: 1.1rem; display: grid; gap: .5rem; font-size: .85rem; color: #4c4658; line-height: 1.6; }
.cd-aside-points { display: flex; align-items: baseline; gap: .4rem; margin: 1.1rem 0 0; padding-top: 1rem; border-top: 1px solid #eeebf6; font-size: .8rem; color: #77717f; }
.cd-aside-points span { font: 700 1.6rem/1 "Poppins", sans-serif; color: var(--violet); letter-spacing: -.03em; }
.cd-aside-note { margin: .6rem 0 0; font-size: .75rem; color: #9a92a8; }

@media (max-width: 860px) {
    .cd-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    .cd-body { grid-template-columns: minmax(0, 1fr); gap: 1.5rem; }
}
@media (max-width: 640px) {
    .cd-hero { grid-template-columns: minmax(0, 1fr); }
    .cd-stage { padding: 1.75rem 1rem; }
    .cd-journey { padding: 1.2rem; }
    .cd-steps { grid-template-columns: minmax(0, 1fr); }
    .cd-action .btn-primary, .cd-action .btn-secondary-light { width: 100%; }
}
.cd-action .btn-primary span { margin-left: .5rem; }

/* Libro 3D del detalle, como en PipbukSite: tapa, lomo, cantos de páginas y contratapa.
   --book-depth es el grosor a la escala de referencia (320 px de tapa); se escala al ancho real. */
.cd-stage { perspective: 1400px; position: relative; padding: 3rem 2rem 3.5rem; }
.cd-stage::after { content: ""; position: absolute; bottom: 1.4rem; left: 22%; width: 60%; height: 30px; background: radial-gradient(ellipse, #30203950, transparent 70%); filter: blur(12px); transform: rotate(-7deg); pointer-events: none; }
.cd-book { --book-width: 240px; --depth: calc(var(--book-depth, 32px) * .75); position: relative; z-index: 1; width: var(--book-width); aspect-ratio: 2 / 3; transform-style: preserve-3d; transform: rotateX(7deg) rotateY(-26deg) rotateZ(-3deg); transition: transform .5s ease; }
.cd-book > div { position: absolute; }
.cd-book-front { inset: 0; display: flex; flex-direction: column; justify-content: space-between; padding: 24px 20px 26px 26px; overflow: hidden; background: #44365c; color: #fff; transform: translateZ(calc(var(--depth) / 2)); box-shadow: inset 1px 0 2px #fff5, 0 1px 2px #0005; backface-visibility: hidden; }
.cd-book-front::after { content: ""; position: absolute; inset: 0; background: linear-gradient(90deg, #0006 0%, #0001 2%, #ffffff30 3%, #0003 4%, transparent 7%, #ffffff0a 70%, #ffffff26 100%); pointer-events: none; z-index: 2; }
.cd-book-front img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: fill; z-index: 1; }
.cd-book-front small { position: relative; font-size: .5rem; letter-spacing: .2em; color: #ffffffc4; }
.cd-book-front span { position: relative; font: 400 1.75rem/1.2 Georgia, serif; letter-spacing: -.02em; overflow-wrap: break-word; hyphens: auto; }
.cd-book-back { inset: 0; background: #44365c; transform: translateZ(calc(var(--depth) / -2)); box-shadow: 12px 20px 32px #30203928; }
.cd-book-spine { left: 0; top: 0; width: var(--depth); height: 100%; display: grid; place-items: center; background: #3a2d4f; transform-origin: left; transform: translateZ(calc(var(--depth) / -2)) rotateY(-90deg); box-shadow: inset 6px 0 10px #0006, inset -2px 0 3px #fff3; overflow: hidden; }
.cd-book-spine span { writing-mode: vertical-rl; color: #fff9; font-size: 9px; letter-spacing: 3px; white-space: nowrap; }
.cd-book-pages { right: 2px; top: 5px; bottom: 5px; width: max(1px, calc(var(--depth) - 4px)); transform-origin: right; transform: translateZ(calc(var(--depth) / 2 - 2px)) rotateY(-90deg); background: repeating-linear-gradient(90deg, #e2d9c9 0, #fcf8ef 1px, #fcf8ef 2px, #d5cbbb 3px); box-shadow: inset 0 0 5px #88785c50; }
.cd-book-top { left: 4px; right: 3px; top: 4px; height: max(1px, calc(var(--depth) - 4px)); transform-origin: top; transform: translateZ(calc(var(--depth) / -2 + 2px)) rotateX(90deg); background: repeating-linear-gradient(0deg, #d9d0bf 0, #fbf7ed 1px, #eee7d9 3px); box-shadow: inset 0 2px 4px #74654935; }
/* Lomo y contratapa toman el color dominante de la portada (lo calcula app.js). */
.cd-book.has-binding-color .cd-book-back,
.cd-book.has-binding-color .cd-book-spine { background: linear-gradient(100deg, #00000024, #ffffff12 45%, #00000018), var(--binding-color); }
.cd-book.has-binding-color .cd-book-spine span { color: var(--binding-ink); opacity: .7; }
@media (hover: hover) and (prefers-reduced-motion: no-preference) {
    .cd-stage:hover .cd-book { transform: translateY(-6px) rotateX(5deg) rotateY(-14deg) rotateZ(-1deg); }
}
@media (prefers-reduced-motion: no-preference) {
    /* En el contenedor: animar el elemento 3D (opacidad) lo aplanaría. */
    .cd-stage { animation: cd-book-arrive .85s cubic-bezier(.2, .7, .2, 1) both; }
    @keyframes cd-book-arrive { from { opacity: 0; translate: 0 24px; } to { opacity: 1; translate: 0 0; } }
}
@media (prefers-reduced-motion: reduce) { .cd-book { transition: none; } }
@media (max-width: 640px) {
    .cd-stage { padding: 2rem 1rem 2.5rem; }
    .cd-book { --book-width: 180px; --depth: calc(var(--book-depth, 32px) * .5625); }
    .cd-book-front span { font-size: 1.3rem; }
}
/* Botón deshabilitado del detalle: el estilo "light" base es para fondos oscuros. */
.cd-action .btn-secondary-light[disabled] { background: #f0edf7; border: 1px solid #e2dfee; color: #77717f; cursor: not-allowed; opacity: 1; }

/* ===== Ficha de libro (reutiliza el hero y el cuerpo del detalle de campaña) ===== */
.book-detail .cd-info h1 { margin-top: .6rem; }
.bd-campaign { margin-top: 1.6rem; padding: 1.25rem 1.4rem; border: 1px solid #d0bfff; border-radius: 16px; background: #faf8ff; }
.bd-campaign.is-featured { border-color: #f0d38a; background: linear-gradient(180deg, #fffaf0, #fff); }
.bd-campaign.is-empty { border-style: dashed; background: #fff; }
.bd-campaign-head { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .65rem 1rem; margin-bottom: .75rem; }
.bd-campaign-head .community-eyebrow { flex: 0 0 auto; }
.bd-campaign-head .badge { flex: 0 0 auto; white-space: nowrap; }
.bd-campaign-title { margin: .6rem 0 .3rem; font-size: 1.05rem; font-weight: 600; color: #24212b; }
.bd-campaign p { margin: 0 0 .9rem; color: #77717f; font-size: .86rem; line-height: 1.7; }
.bd-campaign p:last-child { margin-bottom: 0; }
.bd-campaign p strong { color: var(--violet-dark); }
.bd-campaign p a { color: var(--violet-dark); }
.bd-campaign .btn-primary, .bd-campaign .btn-secondary { border-radius: 999px; }
.bd-campaign .btn-primary span { margin-left: .4rem; }
.bd-mine { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: .5rem 1rem; margin-top: 1.6rem; padding: 1rem 1.3rem; border: 1px solid #d0bfff; border-left: 4px solid var(--violet); border-radius: 14px; background: #faf8ff; color: #24212b; text-decoration: none; font-size: .9rem; }
.bd-mine span { color: var(--violet-dark); font-weight: 600; font-size: .85rem; }
.bd-history { list-style: none; margin: 0; padding: 0; display: grid; gap: .4rem; }
.bd-history a { display: flex; justify-content: space-between; gap: .75rem; padding: .55rem .7rem; border-radius: 10px; background: #faf8ff; color: #24212b; font-size: .82rem; text-decoration: none; }
.bd-history a:hover { background: var(--violet-tint); }
.bd-history small { color: #77717f; white-space: nowrap; }
.bd-related { margin-top: 3.5rem; }

/* ===== Detalle de campaña: se presenta como un evento sobre el libro, no como su ficha ===== */
.cc-hero { position: relative; display: grid; grid-template-columns: minmax(0, 1fr) 220px; gap: 2.5rem; align-items: center; margin-top: 1rem; padding: clamp(1.75rem, 4vw, 2.75rem); border-radius: 24px; color: #fff; background: radial-gradient(120% 140% at 100% 0%, #784dfe 0%, #4a2fae 45%, #24164f 100%); overflow: hidden; isolation: isolate; }
/* Bordes troquelados de "entrada" a los costados. */
.cc-hero::before, .cc-hero::after { content: ""; position: absolute; top: 50%; width: 28px; height: 28px; margin-top: -14px; border-radius: 50%; background: var(--bg, #fcfcfc); z-index: 1; }
.cc-hero::before { left: -14px; }
.cc-hero::after { right: -14px; }
.cc-hero.is-featured { background: radial-gradient(120% 140% at 100% 0%, #f0c35a 0%, #b9791c 45%, #4a2a07 100%); }
.cc-hero-main { min-width: 0; }
.cc-hero-top { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: .75rem; }
.cc-kicker { font-size: .7rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; color: #ffffffcc; }
.cc-hero h1 { margin: 1rem 0 .4rem; font: 500 clamp(2rem, 4.5vw, 3.2rem)/1.08 "Poppins", sans-serif; letter-spacing: -.05em; color: #fff; overflow-wrap: anywhere; }
.cc-hero h1 span { display: block; margin-bottom: .3rem; font: italic 400 clamp(1.1rem, 2vw, 1.4rem)/1.2 Georgia, serif; letter-spacing: 0; color: #ffffffb3; }
.cc-sub { margin: 0; color: #ffffffcc; font-size: .92rem; }

/* Línea de tiempo */
.cc-timeline { position: relative; margin: 2.2rem 0 4.4rem; }
.cc-track { position: relative; height: 8px; border-radius: 999px; background: #ffffff26; }
.cc-enroll { position: absolute; inset: 0 auto 0 0; border-radius: 999px; background: #ffffff33; }
.cc-progress { position: absolute; inset: 0 auto 0 0; border-radius: 999px; background: #fff; }
.cc-today { position: absolute; top: 50%; width: 18px; height: 18px; margin: -9px 0 0 -9px; border: 3px solid #fff; border-radius: 50%; background: #784dfe; box-shadow: 0 0 0 5px #ffffff30; }
.is-featured .cc-today { background: #b9791c; }
.cc-today span { position: absolute; bottom: 150%; left: 50%; transform: translateX(-50%); padding: .1rem .45rem; border-radius: 6px; background: #fff; color: #24164f; font-size: .65rem; font-weight: 700; white-space: nowrap; }
.cc-marks { list-style: none; margin: 0; padding: 0; position: relative; height: 0; }
.cc-marks li { position: absolute; top: .75rem; transform: translateX(-50%); display: grid; gap: .1rem; text-align: center; font-size: .72rem; color: #ffffffb3; white-space: nowrap; }
.cc-marks li:first-child { transform: none; text-align: left; }
.cc-marks li:last-child { transform: translateX(-100%); text-align: right; }
.cc-marks strong { color: #fff; font-size: .68rem; font-weight: 600; letter-spacing: .06em; text-transform: uppercase; }

/* Cifras clave */
.cc-stats { display: grid; grid-auto-flow: column; grid-auto-columns: minmax(0, 1fr); gap: 1px; margin: 0; border-radius: 14px; overflow: hidden; background: #ffffff26; }
.cc-stats div { padding: .9rem 1rem; background: #ffffff14; }
.cc-stats dt { font-size: .65rem; font-weight: 600; letter-spacing: .12em; text-transform: uppercase; color: #ffffffb3; }
.cc-stats dd { margin: .3rem 0 0; font-size: 1.35rem; font-weight: 600; color: #fff; line-height: 1.2; }
.cc-stats dd small { font-size: .75rem; font-weight: 400; color: #ffffffb3; }
.cc-action p { color: #ffffffcc; }
.cc-action p a, .cc-action p strong { color: #fff; }
.cc-action .btn-primary { background: #fff; color: #4a2fae; box-shadow: 0 8px 20px #0000002a; }
.cc-action .btn-primary:hover { background: #f2edff; }
.is-featured .cc-action .btn-primary { color: #7a4a06; }
.cc-action .btn-secondary-light[disabled] { background: #ffffff1f; border-color: #ffffff40; color: #ffffffcc; }

/* El libro, en segundo plano */
.cc-book { display: flex; flex-direction: column; align-items: center; gap: .6rem; color: #fff; text-decoration: none; }
.cc-book-cover { width: 150px; height: 225px; transform: rotate(4deg); box-shadow: 0 18px 36px #00000055; transition: transform .3s ease; }
.cc-book-cover.cp-cover-placeholder span { font-size: 18px; }
.cc-book:hover .cc-book-cover { transform: rotate(0) translateY(-4px); }
.cc-book-label { margin-top: .6rem; font-size: .65rem; letter-spacing: .14em; text-transform: uppercase; color: #ffffffb3; }
.cc-book-link { font-size: .85rem; font-weight: 600; }
.cc-book:hover .cc-book-link { text-decoration: underline; }

/* Sobre el libro */
.cc-about h2 { margin-bottom: .3rem; }
.cc-about-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .6rem; margin: 0 0 1.2rem !important; color: #77717f !important; font-size: .85rem !important; }
.cc-about-meta span { padding: .15rem .6rem; border: 1px solid #e2dfee; border-radius: 999px; background: #fff; font-size: .72rem; color: #4c4658; }
.cc-about-link { display: inline-block; margin-top: 1.2rem; color: var(--violet-dark); font-size: .85rem; font-weight: 500; text-decoration: none; }
.cc-about-link:hover { text-decoration: underline; }

@media (prefers-reduced-motion: reduce) { .cc-book-cover { transition: none; } }
@media (max-width: 760px) {
    .cc-hero { grid-template-columns: minmax(0, 1fr); }
    .cc-book { flex-direction: row; justify-content: flex-start; flex-wrap: wrap; order: -1; }
    .cc-book-cover { width: 70px; height: 105px; }
    .cc-book-cover.cp-cover-placeholder { padding: 7px; justify-content: center; }
    .cc-book-cover.cp-cover-placeholder span { font-size: 9px; -webkit-line-clamp: 5; }
    .cc-book-cover.cp-cover-placeholder small { display: none; }
    .cc-book-label { margin: 0; flex-basis: calc(100% - 90px); }
    .cc-hero::before, .cc-hero::after { display: none; }
}
@media (max-width: 540px) {
    .cc-stats { grid-auto-flow: row; grid-template-columns: minmax(0, 1fr); }
    .cc-marks li:not(:first-child):not(:last-child) { display: none; }
    .cc-action .btn-primary, .cc-action .btn-secondary-light { width: 100%; }
}

/* Campañas: invitación a leer y hacer circular historias. */
body:has(.campaigns-page) { background: #fdfbfc; }
.page.campaigns-page { border: 0; box-shadow: none; background: transparent; padding: 0; }
.campaigns-page .cp-hero { grid-template-columns: minmax(0, 1.6fr) minmax(180px, .8fr); gap: 2rem; align-items: center; padding: 2.5rem 3rem; border: 1px solid #eee5fa; border-radius: 22px; background: linear-gradient(115deg, #faf7fc, #eee6fa); }
.cp-hero-copy { min-width: 0; }
.campaigns-page .cp-hero h1 { color: #171344; font: 500 clamp(2.1rem, 4vw, 3.6rem)/1.1 Georgia, serif; letter-spacing: -.045em; }
.campaigns-page .cp-hero h1 em { color: #8051ff; }
.campaigns-page .cp-hero p { font-size: .85rem; color: #666184; }
.cp-promo-art { width: 100%; max-width: 300px; height: auto; justify-self: center; }
.cp-hero-link, .cp-share-banner > a { display: inline-flex; align-items: center; gap: 1rem; padding: .75rem 1.2rem; border-radius: 999px; background: #8051ff; color: #fff; font-size: .78rem; text-decoration: none; margin-top: 1.3rem; }
.cp-hero-link:hover, .cp-share-banner > a:hover { background: #6433dc; }
.cp-how { display: flex; align-items: center; justify-content: space-between; gap: 1.5rem; margin: 1.4rem 0 2rem; padding: 1.3rem 1.5rem; border-bottom: 1px solid #eee6f6; }
.cp-how h2 { margin: .4rem 0 0; font: 500 1.35rem Georgia, serif; color: #171344; }
.campaigns-page .cp-steps { display: flex; flex-wrap: wrap; gap: 1rem; }
.campaigns-page .cp-steps li { font-size: .75rem; }
.cp-catalog-anchor { scroll-margin-top: 100px; }
.campaigns-page .cp-section-title { color: #171344; font-size: clamp(1.5rem, 2.6vw, 2rem); }
.campaigns-page .cp-genres a { border-radius: 9px; min-height: 38px; display: inline-flex; align-items: center; background: #faf7ff; }
.campaigns-page .cp-genres a[aria-current='true'] { background: #8051ff; }
.campaigns-page .cp-card-stage { background: linear-gradient(140deg, #f6f0fc, #eee8f5); }
.campaigns-page .cp-card { border-color: #e8e0f2; box-shadow: 0 3px 16px #32245a04; }
.campaigns-page .cp-card h3 { color: #171344; }
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket) { background: linear-gradient(100deg, #f5f0ff, #fff); }
.cp-share-banner { display: flex; align-items: center; gap: 1.8rem; padding: 1.6rem 2rem; margin-top: 3rem; border-radius: 18px; background: #f0eaff; }
.cp-share-banner > img { width: 120px; height: auto; flex-shrink: 0; }
.cp-share-banner > div { flex: 1; min-width: 0; }
.cp-share-banner h2 { color: #171344; font: 500 1.6rem/1.25 Georgia, serif; margin: .5rem 0; }
.cp-share-banner p { color: #666184; font-size: .8rem; line-height: 1.7; margin: 0; }
.cp-share-banner > a { margin: 0; flex-shrink: 0; }
@media (max-width: 900px) { .cp-how { align-items: flex-start; flex-direction: column; } .cp-share-banner { flex-wrap: wrap; } .cp-share-banner > a { margin-left: auto; } }
@media (max-width: 600px) {
    .campaigns-page .cp-hero { grid-template-columns: minmax(0, 1fr); padding: 1.5rem; gap: .5rem; }
    .cp-promo-art { max-width: 180px; }
    .campaigns-page .cp-hero h1 { font-size: 2.2rem; }
    .cp-how { padding: 1rem .25rem; }
    .campaigns-page .cp-steps { gap: .6rem; }
    .campaigns-page .cp-steps li { white-space: normal; }
    .cp-share-banner { flex-direction: column; align-items: flex-start; padding: 1.4rem; gap: 1rem; }
    .cp-share-banner > img { width: 85px; }
    .cp-share-banner > div { flex: auto; width: 100%; }
    .cp-share-banner h2 { font-size: 1.3rem; }
    .cp-share-banner > a { margin-left: 0; max-width: 100%; justify-content: center; }
}
.cp-grid > li { display:flex; flex-direction:column; min-width:0; }
.cp-grid > li > .cp-card { height:auto; flex:1; }
.cp-grid > li > .campaign-share { margin-top:.75rem; }

/* Compartir discreto dentro de las tarjetas del catálogo. */
.campaigns-page .cp-grid > li, .campaigns-page .cp-mine-share-card { position:relative; }
.campaigns-page .cp-mine-share-card { margin-bottom:1rem; }
.campaigns-page .cp-grid > li > .campaign-share,
.campaigns-page .cp-mine-share-card > .campaign-share { position:absolute; right:10px; bottom:10px; z-index:1; margin:0; }
.campaigns-page .campaign-share > summary { display:grid; place-items:center; width:44px; height:44px; min-height:44px; padding:0; border:1px solid transparent; border-radius:50%; background:transparent; color:#8b7c9d; box-shadow:none; }
.campaigns-page .campaign-share > summary:hover { background:#f0e9fa; border-color:#e3d8f0; color:#6c43a4; box-shadow:none; transform:none; }
.campaigns-page .campaign-share > summary .campaign-share-label,
.campaigns-page .campaign-share > summary .campaign-share-plus { display:none; }
.campaigns-page .cp-grid > li:has(> .campaign-share) .cp-card-body { padding-bottom:1rem; }
.campaigns-page .cp-mine-share-card:has(> .campaign-share) > .cp-mine { padding-bottom:3.5rem; }

/* Tickets de papel: pigmento mate y bordes dibujados a lápiz. */
.campaigns-page .cp-card:not(.is-featured),
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket):not(.is-featured),
.campaigns-page .cp-compact a:not(.is-featured) {
    --paper-cut: 50%;
    position: relative;
    border: 1px solid #a69aaf;
    border-radius: 13px 17px 12px 16px / 16px 12px 17px 13px;
    background-color: #faf6ee;
    background-image: repeating-radial-gradient(ellipse at 20% 30%, #79634c09 0 1px, transparent 1px 4px), linear-gradient(115deg, #f4ecdf, #fffcf5 52%, #eee6f1);
    box-shadow: inset 0 0 0 3px #fffcf580, 0 4px 14px #51435c12;
    -webkit-mask-image: radial-gradient(circle 9px at 0 var(--paper-cut), transparent 98%, #000 100%), radial-gradient(circle 9px at 100% var(--paper-cut), transparent 98%, #000 100%);
    -webkit-mask-composite: source-in;
    mask-image: radial-gradient(circle 9px at 0 var(--paper-cut), transparent 98%, #000 100%), radial-gradient(circle 9px at 100% var(--paper-cut), transparent 98%, #000 100%);
    mask-composite: intersect;
}
.campaigns-page .cp-card:not(.is-featured) { --paper-cut: 212px; }
.campaigns-page .cp-card:not(.is-featured)::before,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket):not(.is-featured)::before,
.campaigns-page .cp-compact a:not(.is-featured)::before {
    content: "";
    position: absolute;
    inset: 5px 6px 6px 5px;
    border: 1px solid #81718d55;
    border-radius: 11px 15px 10px 14px / 14px 10px 15px 11px;
    transform: rotate(-.3deg);
    pointer-events: none;
    z-index: 1;
}
.campaigns-page .cp-card:not(.is-featured) .cp-card-stage {
    position: relative;
    isolation: isolate;
    border-bottom: 1px dashed #8d7b9b;
    background: repeating-radial-gradient(ellipse at 70% 40%, #fff9ee25 0 1px, transparent 1px 4px), radial-gradient(ellipse at 18% 75%, #c7badb 0%, #d8cce6 34%, transparent 68%), radial-gradient(ellipse at 90% 20%, #d9b9bb 0%, #ead3ce 28%, transparent 65%), #ede3ee;
}
.campaigns-page .cp-card:not(.is-featured) .cp-card-stage::before {
    content: "";
    position: absolute;
    inset: 15px 12px 18px;
    z-index: -1;
    border-top: 3px solid #fffaf04d;
    border-bottom: 5px solid #9b85b126;
    border-radius: 45% 12% 32% 9%;
    background: linear-gradient(175deg, #fff7e52b, #baa7d24d);
    transform: rotate(-4deg);
}
.campaigns-page .cp-compact a:not(.is-featured) .cp-compact-text { border-left: 1px dashed #9b89a6; padding-left: .8rem; }
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket):not(.is-featured) { border-left: 1px solid #a69aaf; }
.community-dashboard .campaign-ticket:not(.is-featured) {
    --notch-border: #b8adbf;
    border-color: #b8adbf;
    box-shadow: 0 3px 10px #51435c0a;
}
.community-dashboard .campaign-ticket:not(.is-featured)::before {
    border-color: #81718d26;
}
.campaigns-page .cp-card:not(.is-featured):hover,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket):not(.is-featured):hover,
.campaigns-page .cp-compact a:not(.is-featured):hover { border-color: #79618d; }
@media (max-width:600px) {
    .campaigns-page .cp-card:not(.is-featured) { --paper-cut: 158px; }
}

/* El contorno sigue la curva de los recortes del ticket. */
.campaigns-page .cp-card,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket),
.campaigns-page .cp-compact a {
    --notch-y: 50%;
    --notch-radius: 9px;
    --notch-border: #a69aaf;
}
.campaigns-page .cp-card:not(.is-featured) { --notch-y: var(--paper-cut); }
.campaigns-page .cp-card.is-featured { --notch-y: var(--ticket-cut); --notch-radius: 10px; --notch-border: #c49936; }
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket).is-featured,
.campaigns-page .cp-compact a.is-featured { --notch-radius: 8px; --notch-border: #b78727; }
.campaigns-page .cp-card::after,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket)::after,
.campaigns-page .cp-compact a::after {
    content: "";
    position: absolute;
    inset: 0;
    background: radial-gradient(circle at 0 var(--notch-y), transparent calc(var(--notch-radius) - 1px), var(--notch-border) var(--notch-radius), var(--notch-border) calc(var(--notch-radius) + 1px), transparent calc(var(--notch-radius) + 1.5px)), radial-gradient(circle at 100% var(--notch-y), transparent calc(var(--notch-radius) - 1px), var(--notch-border) var(--notch-radius), var(--notch-border) calc(var(--notch-radius) + 1px), transparent calc(var(--notch-radius) + 1.5px));
    pointer-events: none;
    z-index: 2;
}

/* Destellos sobre el papel, sin interferir con el contenido ni los enlaces. */
.campaigns-page .cp-card,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket),
.campaigns-page .cp-compact a {
    --ticket-spark: #d5bcff;
    --ticket-glow: #a47be530;
    isolation: isolate;
}
.campaigns-page .cp-card.is-featured,
:is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket).is-featured,
.campaigns-page .cp-compact a.is-featured {
    --ticket-spark: #fff3ad;
    --ticket-glow: #e5b74140;
}
@media (prefers-reduced-motion: no-preference) {
    .campaigns-page .cp-card::after,
    :is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket)::after,
    .campaigns-page .cp-compact a::after {
        /* La primera capa viaja; las dos últimas conservan el borde de la muesca. */
        background-image:
            linear-gradient(115deg, transparent 35%, #fffdf300 40%, #fffdf375 49%, #ffffffad 50%, #fffdf34d 52%, transparent 61%),
            radial-gradient(ellipse 2px 8px at 86% 17%, var(--ticket-spark) 10%, transparent 100%),
            radial-gradient(ellipse 8px 2px at 86% 17%, var(--ticket-spark) 10%, transparent 100%),
            radial-gradient(ellipse 1.5px 5px at 13% 78%, var(--ticket-spark) 10%, transparent 100%),
            radial-gradient(ellipse 5px 1.5px at 13% 78%, var(--ticket-spark) 10%, transparent 100%),
            radial-gradient(circle at 0 var(--notch-y), transparent calc(var(--notch-radius) - 1px), var(--notch-border) var(--notch-radius), var(--notch-border) calc(var(--notch-radius) + 1px), transparent calc(var(--notch-radius) + 1.5px)),
            radial-gradient(circle at 100% var(--notch-y), transparent calc(var(--notch-radius) - 1px), var(--notch-border) var(--notch-radius), var(--notch-border) calc(var(--notch-radius) + 1px), transparent calc(var(--notch-radius) + 1.5px));
        background-size: 300% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%, 100% 100%;
        background-repeat: no-repeat;
        animation: ticket-magic-shine 7s ease-in-out infinite;
        box-shadow: inset 0 0 18px var(--ticket-glow);
        border-radius: inherit;
    }
    .campaigns-page .cp-grid > li:nth-child(2n) .cp-card::after,
    .campaigns-page .cp-compact li:nth-child(2n) a::after { animation-delay: -3.5s; }
    .campaigns-page .cp-card:hover::after,
    :is(.campaigns-page .cp-mine, .community-dashboard .campaign-ticket):hover::after,
    .campaigns-page .cp-compact a:hover::after { animation-duration: 3s; }
}
@keyframes ticket-magic-shine {
    0%, 12% { background-position: 100% 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0; }
    48%, 100% { background-position: 0% 0, 0 0, 0 0, 0 0, 0 0, 0 0, 0 0; }
}

/* Tarjetas de campañas compactas, con espacio para compartir junto a los datos. */
.campaigns-page .cp-grid { align-items:start; gap:1rem; }
.campaigns-page .cp-card-stage { box-sizing:border-box; align-items:center; height:212px; padding:16px; }
.campaigns-page .cp-card-stage .cp-cover { width:120px; height:180px; }
.campaigns-page .cp-card-body { flex:initial; padding:14px 16px 16px; }
.campaigns-page .cp-card h3 { margin:.55rem 0 .2rem; }
.campaigns-page .cp-card-meta { margin-top:0; padding-top:.65rem; gap:.35rem; }
.campaigns-page .cp-grid > li:has(> .campaign-share) .cp-card-meta { min-height:44px; padding-right:0; padding-bottom:32px; }
.campaigns-page .cp-card .cp-badges { align-items:center; gap:.3rem .45rem; }
.campaigns-page .cp-card .cp-badges .badge { white-space:nowrap; font-size:.65rem; padding:.25rem .45rem; line-height:1.4; }
.campaigns-page .cp-card .cp-author { overflow-wrap:anywhere; }
.campaigns-page .cp-grid > li > .campaign-share { right:6px; bottom:6px; }
@media (max-width:600px) {
    .campaigns-page .cp-grid { gap:.75rem; }
    .campaigns-page .cp-card-stage { height:158px; padding:12px 8px; }
    .campaigns-page .cp-card-stage .cp-cover { width:88px; height:132px; }
    .campaigns-page .cp-card-body { padding:12px; }
    .campaigns-page .cp-grid > li:has(> .campaign-share) .cp-card-body { padding-bottom:12px; }
}

.community-dashboard .campaign-ticket .campaign-row-body,
.community-dashboard .campaign-ticket .dashboard-hero-body {
    border-left: 1px dashed #9b89a6;
    padding-left: 1rem;
}
.community-dashboard .campaign-ticket.is-featured .campaign-row-body,
.community-dashboard .campaign-ticket.is-featured .dashboard-hero-body { border-left-color: #a8792e; }
.community-dashboard .campaign-ticket.is-featured h2 { color: #624312; }
.community-dashboard .campaign-ticket.is-featured .badge-featured { background: #fff4c8; color: #69450b; border: 1px solid #bb8b30; }
.community-dashboard .campaign-list:has(> .campaign-row:only-child) {
    grid-template-columns: minmax(0, 520px);
}
.community-dashboard .campaign-row:only-child .campaign-row-top {
    justify-content: flex-start;
    gap: .4rem;
}
.community-dashboard .campaign-row:only-child .campaign-row-top h2 {
    flex: 0 0 100%;
    margin-bottom: .25rem;
}
.community-dashboard .campaign-row:only-child .campaign-row-body { min-width: 0; }
.community-dashboard .dashboard-hero-active.campaign-ticket { max-width: 680px; box-sizing: border-box; }

/* El ticket del catálogo continúa en el interior de la campaña. */
.campaign-detail .cc-hero {
    --ticket-ink: #463653;
    --ticket-edge: #a18bb0;
    border: 1px solid var(--ticket-edge);
    border-radius: 18px 24px 17px 22px;
    color: var(--ticket-ink);
    background: repeating-radial-gradient(ellipse at 20% 30%, #79634c09 0 1px, transparent 1px 4px), radial-gradient(ellipse at 0 90%, #c7badb 0%, transparent 65%), radial-gradient(ellipse at 100% 0, #ead3ce, transparent 65%), #faf6ee;
    box-shadow: inset 0 0 0 5px #fffaf34d, 0 8px 28px #51435c14;
    -webkit-mask-image: radial-gradient(circle 14px at 0 50%, transparent 98%, #000 100%), radial-gradient(circle 14px at 100% 50%, transparent 98%, #000 100%);
    -webkit-mask-composite: source-in;
    mask-image: radial-gradient(circle 14px at 0 50%, transparent 98%, #000 100%), radial-gradient(circle 14px at 100% 50%, transparent 98%, #000 100%);
    mask-composite: intersect;
}
.campaign-detail .cc-hero.is-featured {
    --ticket-ink: #624312;
    --ticket-edge: #b78727;
    background: linear-gradient(115deg, #d9af50, #fff0b7 23%, #f5dc8f 45%, #fff7d7 67%, #d7a747);
}
.campaign-detail .cc-hero::before {
    display: block; inset: 7px; width: auto; height: auto; margin: 0;
    border: 1px solid var(--ticket-edge); border-radius: 13px 19px 12px 17px;
    background: transparent; opacity: .55; pointer-events: none;
}
.campaign-detail .cc-hero::after {
    display: block; inset: 0; width: auto; height: auto; margin: 0; border-radius: inherit;
    background: radial-gradient(circle at 0 50%, transparent 13px, var(--ticket-edge) 14px 15px, transparent 15.5px), radial-gradient(circle at 100% 50%, transparent 13px, var(--ticket-edge) 14px 15px, transparent 15.5px);
    pointer-events: none;
}
.campaign-detail .cc-hero h1,
.campaign-detail .cc-hero h1 span,
.campaign-detail .cc-kicker,
.campaign-detail .cc-sub,
.campaign-detail .cc-sub a,
.campaign-detail .cc-marks li,
.campaign-detail .cc-marks strong,
.campaign-detail .cc-stats dt,
.campaign-detail .cc-stats dd,
.campaign-detail .cc-stats dd small,
.campaign-detail .cc-action p,
.campaign-detail .cc-action p a,
.campaign-detail .cc-action p strong,
.campaign-detail .cc-book,
.campaign-detail .cc-book-label { color: var(--ticket-ink); }
.campaign-detail .cc-track { background: #69517826; }
.campaign-detail .cc-enroll { background: #69517826; }
.campaign-detail .cc-progress { background: var(--ticket-ink); }
.campaign-detail .cc-stats { background: #fff9ec55; border: 1px dashed var(--ticket-edge); }
.campaign-detail .cc-stats div { background: #fff9ec33; }
.campaign-detail .cc-book { border-left: 1px dashed var(--ticket-edge); padding-left: 1.5rem; }
.campaign-detail .cc-action .btn-primary { background: var(--ticket-ink); color: #fffaf0; }
.campaign-detail .cc-action .btn-secondary-light[disabled] { background: #fff9ec66; border-color: var(--ticket-edge); color: var(--ticket-ink); }
.cc-ticket-glimmer { position: absolute; inset: 0; pointer-events: none; z-index: 2; }
@media (prefers-reduced-motion: no-preference) {
    .cc-ticket-glimmer {
        background-image: linear-gradient(115deg, transparent 35%, #fffdf300 40%, #fffdf375 49%, #ffffffad 50%, #fffdf34d 52%, transparent 61%), radial-gradient(ellipse 2px 8px at 90% 12%, #fffaf0, transparent), radial-gradient(ellipse 8px 2px at 90% 12%, #fffaf0, transparent);
        background-size: 300% 100%, 100% 100%, 100% 100%;
        background-repeat: no-repeat;
        animation: cc-ticket-shine 7s ease-in-out infinite;
    }
}
@keyframes cc-ticket-shine {
    0%, 12% { background-position: 100% 0, 0 0, 0 0; }
    48%, 100% { background-position: 0% 0, 0 0, 0 0; }
}
@media (max-width: 760px) {
    .campaign-detail .cc-book { border-left: 0; border-bottom: 1px dashed var(--ticket-edge); padding: 0 0 1rem; }
}
