/* Mi seguimiento — cliente final (29-sep-2026, Claude). */
.cp { background: linear-gradient(180deg, var(--ag-primary-subtle) 0, var(--ag-bg) 320px); color: var(--ag-ink); font-family: var(--ag-font); min-height: 100vh; }
.cp-wrap { width: min(760px, 100% - 32px); margin-inline: auto; }
.cp-top { position: sticky; top: 0; z-index: 5; background: var(--ag-surface); border-bottom: 1px solid var(--ag-line); }
.cp-top .cp-wrap { display: flex; align-items: center; justify-content: space-between; gap: 1rem; min-height: 64px; }
.cp-brand { display: inline-flex; align-items: center; gap: .6rem; min-width: 0; }
.cp-brand strong { display: block; font-weight: 800; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.cp-brand small { display: block; font-size: .75rem; color: var(--ag-muted); }
.cp-logo-img { width: 40px; height: 40px; border-radius: 12px; object-fit: cover; flex: none; }
.cp-top .btn { min-height: 42px; display: inline-flex; align-items: center; gap: .4rem; flex: none; }
.cp-top .btn[hidden] { display: none; }
.cp-hero { padding: 2rem 0 1rem; }
.cp-kicker { margin: 0 0 .35rem; color: var(--ag-primary-text); font-weight: 800; font-size: .78rem; letter-spacing: .06em; text-transform: uppercase; }
.cp-hero h1 { font-size: clamp(1.8rem, 5vw, 2.5rem); font-weight: 800; letter-spacing: -.02em; margin: 0 0 .4rem; }
.cp-sub { color: var(--ag-ink-2); font-size: 1.05rem; margin: 0; }
.cp-body { display: grid; gap: 1rem; }
.cp-cards { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fit, minmax(240px, 1fr)); }
.cp-card { background: var(--ag-surface); border: 1px solid var(--ag-line); border-radius: 20px; padding: 1.1rem 1.2rem; box-shadow: var(--ag-shadow-sm); }
.cp-cards .cp-card { display: flex; gap: .9rem; align-items: flex-start; }
.cp-cards .cp-card > .ico { width: 2.6rem; height: 2.6rem; padding: .6rem; border-radius: 14px; background: var(--ag-primary-subtle); color: var(--ag-primary-text); flex: none; }
.cp-card strong { display: block; font-size: 1.1rem; }
.cp-card p { margin: .2rem 0 0; }
.cp-label { display: block; font-size: .75rem; font-weight: 800; letter-spacing: .05em; text-transform: uppercase; color: var(--ag-muted); margin-bottom: .15rem; }
.cp-muted { color: var(--ag-muted); }
.cp-card .btn { margin-top: .6rem; min-height: 42px; }
.cp-ring { position: relative; width: 72px; height: 72px; flex: none; }
.cp-ring svg { width: 100%; height: 100%; transform: rotate(-90deg); }
.cp-ring circle { fill: none; stroke-width: 3.2; }
.cp-ring-track { stroke: var(--ag-surface-2); }
.cp-ring-value { stroke: var(--ag-primary); stroke-linecap: round; }
.cp-ring b { position: absolute; inset: 0; display: grid; place-content: center; text-align: center; font-size: 1.15rem; line-height: 1; }
.cp-ring small { display: block; font-size: .7rem; font-weight: 600; color: var(--ag-muted); }
.cp-timeline h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.1rem; margin: 0 0 1rem; }
.cp-timeline ol { list-style: none; margin: 0; padding: 0; display: grid; gap: 0; }
.cp-timeline li { display: grid; grid-template-columns: 36px minmax(0, 1fr); gap: .8rem; padding-bottom: 1.1rem; position: relative; }
.cp-timeline li:not(:last-child)::before { content: ""; position: absolute; left: 17px; top: 36px; bottom: 0; width: 2px; background: var(--ag-line); }
.cp-dot { width: 36px; height: 36px; border-radius: 50%; display: grid; place-content: center; background: var(--ag-primary); color: #fff; font-weight: 800; font-size: .9rem; }
.cp-timeline time { display: block; color: var(--ag-muted); font-size: .85rem; }
.cp-timeline li p { margin: .4rem 0 0; padding: .6rem .8rem; border-radius: 12px; background: var(--ag-bg); color: var(--ag-ink-2); white-space: pre-line; }
.cp-photos { display: flex; flex-wrap: wrap; gap: .5rem; margin-top: .6rem; }
.cp-photo { width: 96px; height: 96px; border-radius: 12px; border: 1px solid var(--ag-line); background: var(--ag-surface-2); display: grid; place-content: center; overflow: hidden; padding: 0; }
.cp-photo img { width: 100%; height: 100%; object-fit: cover; }
.cp-empty { display: flex; gap: .8rem; align-items: center; }
.cp-empty .ico { width: 2rem; height: 2rem; color: var(--ag-muted); flex: none; }
.cp-legal { color: var(--ag-muted); font-size: .8rem; margin: 1.5rem 0 3rem; }
@media (max-width: 480px) { .cp-top .btn span { display: none; } }
.cp-promos h2 { display: flex; align-items: center; gap: .5rem; font-size: 1.1rem; margin: 0 0 .9rem; }
.cp-promo-grid { display: grid; gap: .75rem; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); }
.cp-promo { display: grid; gap: .3rem; padding: 1rem; border-radius: 16px; background: linear-gradient(135deg, #fff5f8, #fff); border: 1px solid #f6d7e1; }
.cp-promo-label { justify-self: start; padding: .25rem .65rem; border-radius: 999px; background: #ffe4ec; color: #9d2a5a; font-weight: 800; font-size: .8rem; }
.cp-promo p { margin: 0; color: var(--ag-ink-2); font-size: .9rem; }
.cp-promo-foot { display: flex; flex-wrap: wrap; gap: .5rem; align-items: center; justify-content: space-between; margin-top: .3rem; }
.cp-promo-foot > small { color: var(--ag-muted); }
.cp-code { display: inline-flex; gap: .4rem; align-items: center; padding: .3rem .65rem; border: 2px dashed #e9a9c0; border-radius: 10px; }
.cp-code small { font-size: .66rem; font-weight: 700; text-transform: uppercase; color: var(--ag-muted); }
.cp-code b { font-family: ui-monospace, monospace; letter-spacing: .06em; color: #9d2a5a; }

.cp-plan progress { width: 100%; height: 8px; margin: .4rem 0; appearance: none; border: 0; border-radius: 99px; overflow: hidden; background: #eef2f5; }
.cp-plan progress::-webkit-progress-bar { background: #eef2f5; border-radius: 99px; }
.cp-plan progress::-webkit-progress-value { background: linear-gradient(90deg, #14857f, #3cc4a0); border-radius: 99px; }
.cp-plan progress::-moz-progress-bar { background: linear-gradient(90deg, #14857f, #3cc4a0); border-radius: 99px; }
.cp-late { color: #a1261a; font-weight: 600; }
.cp-compare-grid { display: grid; grid-template-columns: 1fr 1fr; gap: .75rem; }
.cp-compare-grid figure { margin: 0; }
.cp-compare-img { aspect-ratio: 3 / 4; border-radius: 14px; background: #f1f3f5; overflow: hidden; }
.cp-compare-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.cp-compare-grid figcaption { font-size: .82rem; margin-top: .35rem; text-align: center; }

/* Bonos del cliente (30-sep-2026) */
.cp-bono-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(230px, 1fr)); gap: .75rem; margin: .6rem 0; }
.cp-bono { position: relative; display: grid; gap: .1rem; padding: 1.1rem 1.2rem; border-radius: 20px; color: #fff; background: radial-gradient(380px 160px at 100% 0%, rgba(255,255,255,.25), transparent 60%), linear-gradient(135deg, #d4507a, #8e3fb8); box-shadow: 0 14px 30px rgba(142,63,184,.28); overflow: hidden; }
.cp-bono::after { content: "🎁"; position: absolute; right: .9rem; top: .7rem; font-size: 1.7rem; }
.cp-bono span { font-size: .72rem; font-weight: 700; text-transform: uppercase; letter-spacing: .06em; opacity: .9; }
.cp-bono strong { font-size: 1.9rem; font-weight: 800; line-height: 1.1; }
.cp-bono em { font-style: normal; font-weight: 700; }
.cp-bono small { opacity: .92; }
.cp-bono b { margin-top: .45rem; justify-self: start; font-family: ui-monospace, Menlo, monospace; letter-spacing: .12em; background: #fff; color: #8e3fb8; padding: .3rem .7rem; border-radius: 10px; }
.cp-top .btn-ghost { margin-left: auto; margin-right: .4rem; }

/* Tratamientos (1-oct-2026) */
.cp-treats { display: grid; gap: 1rem; margin: 1rem 0; }
.cp-h2 { font-size: 1.15rem; font-weight: 750; margin: 0; display: flex; align-items: center; gap: .45rem; }
.cp-treat { display: grid; gap: .8rem; }
.cp-treat-head { display: flex; gap: 1rem; align-items: center; }
.cp-treat-head strong { display: block; font-size: 1.15rem; }
.cp-treat-head p { margin: .2rem 0 0; color: var(--cp-muted, #6b6570); font-size: .9rem; }
.cp-treat-n { width: 72px; height: 72px; flex: none; border-radius: 50%; display: grid; place-items: center; align-content: center; background: color-mix(in srgb, var(--cp-brand, #0e6b66) 10%, #fff); }
.cp-treat-n b { font-size: 1.5rem; line-height: 1; } .cp-treat-n small { font-size: .7rem; color: var(--cp-muted, #6b6570); }
.cp-pill { display: inline-block; padding: .1rem .55rem; border-radius: 99px; font-size: .78rem; font-weight: 700; margin-right: .25rem; }
.cp-pill.is-ok { background: #dcfce7; color: #166534; } .cp-pill.is-due { background: #fef3c7; color: #92400e; } .cp-pill.is-late { background: #fee2e2; color: #991b1b; } .cp-pill.is-muted { background: #f1f5f9; color: #334155; }
.cp-steps { display: flex; gap: 5px; } .cp-step { flex: 1; height: 8px; border-radius: 99px; background: #ece7ee; } .cp-step.is-done { background: var(--cp-brand, #0e6b66); } .cp-step.is-next { background: color-mix(in srgb, var(--cp-brand, #0e6b66) 35%, #fff); }
.cp-treat-next { margin: 0; font-weight: 600; } .cp-treat.is-late .cp-treat-next { color: #b42318; }
.cp-treat-tl summary { cursor: pointer; font-weight: 650; color: var(--cp-brand, #0e6b66); }
.cp-treat-tl ol { list-style: none; padding: 0; margin: .6rem 0 0; display: grid; gap: .6rem; }
.cp-treat-tl li { display: flex; gap: .7rem; } .cp-treat-tl time { display: block; font-size: .82rem; color: var(--cp-muted, #6b6570); }
.cp-treat .btn { justify-self: start; }

/* QR de bonos y cupones (1-oct-2026) */
.cp-qr { width: 132px; height: 132px; margin: .5rem auto .25rem; padding: 6px; background: #fff; border-radius: 12px; box-shadow: 0 2px 8px rgba(0, 0, 0, .08); }
.cp-qr svg { width: 100%; height: 100%; display: block; }
.cp-qr-more summary { cursor: pointer; font-size: .82rem; font-weight: 650; color: var(--cp-brand, #0e6b66); margin-top: .35rem; }
