/* ══════════════════════════════════════════════════════════════
   PUBLIC PROFILE + SERIES
   ══════════════════════════════════════════════════════════════ */

/*
 * NOTE (bugfix scope): These rules previously duplicated the "PUBLIC
 * PROFILE" block in theme.css with slightly different values and, worse,
 * used two class names that don't match theme.css:
 *   - `.goppo-profile-stats`    vs `.goppo-profile-stats-row`
 *   - `.goppo-profile-notes`    vs `.goppo-notes-section`
 * Whichever PHP template renders, one stylesheet's rules were dead.
 *
 * The selectors below now list BOTH names, so the styling applies
 * regardless of which class the markup uses. Once you've confirmed which
 * name the PHP emits, feel free to drop the unused alias.
 *
 * Reminder: if this section is meant to supersede the equivalent block in
 * theme.css, delete that block — otherwise every future edit has to be
 * made in two places.
 */

/* ── Profile hero ──────────────────────────────────────────── */
.goppo-profile-hero {
    padding: clamp(48px, 8vw, 80px) 0 clamp(32px, 5vw, 48px);
    background: radial-gradient(circle at 20% 20%, var(--nh-primary-soft), transparent 55%);
    border-bottom: 1px solid var(--nh-border);
}
.goppo-profile-hero-inner {
    display: flex;
    align-items: center;
    gap: 32px;
    flex-wrap: wrap;
}
.goppo-profile-avatar {
    width: 128px; height: 128px;
    border-radius: 50%;
    object-fit: cover;
    border: 4px solid var(--nh-bg);
    box-shadow: var(--nh-shadow-xl);
    flex-shrink: 0;
}
.goppo-profile-info { min-width: 0; flex: 1; }
/*
 * BUGFIX: Previously redeclared without the flex layout declared in
 * theme.css. If this stylesheet ever loads before theme.css (or the
 * theme.css block is removed), the name loses its inline-pill layout.
 * Declaring the full set here makes the file self-sufficient.
 */
.goppo-profile-name {
    font-size: clamp(1.75rem, 3vw, 2.5rem);
    margin: 0 0 4px;
    letter-spacing: -0.03em;
    line-height: 1.15;
    display: flex;
    align-items: center;
    gap: 10px;
    flex-wrap: wrap;
}
.goppo-profile-handle {
    color: var(--nh-text-muted);
    font-weight: 700;
    font-size: 15px;
    margin-bottom: 12px;
}
.goppo-profile-bio {
    color: var(--nh-text-muted);
    font-size: 15px;
    max-width: 640px;
    margin: 0 0 16px;
    line-height: 1.6;
}
/*
 * BUGFIX: This file used `.goppo-profile-stats`; theme.css used
 * `.goppo-profile-stats-row`. Aliased to cover both.
 */
.goppo-profile-stats,
.goppo-profile-stats-row {
    display: flex;
    gap: 20px;
    font-size: 13px;
    color: var(--nh-text-muted);
    flex-wrap: wrap;
    margin-bottom: 16px;
}
.goppo-profile-stats strong,
.goppo-profile-stats-row strong { color: var(--nh-text); font-weight: 800; }

/*
 * BUGFIX: Same alias pattern — `.goppo-profile-notes` here vs
 * `.goppo-notes-section` in theme.css.
 */
.goppo-profile-notes,
.goppo-notes-section { padding: clamp(40px, 6vw, 64px) 0 80px; }

.goppo-section-title {
    font-size: 1rem;
    font-weight: 800;
    text-transform: uppercase;
    letter-spacing: .5px;
    color: var(--nh-text-muted);
    margin: 0 0 24px;
}

@media (max-width: 700px) {
    .goppo-profile-hero-inner { flex-direction: column; text-align: center; }
    .goppo-profile-avatar { width: 96px; height: 96px; }
    .goppo-profile-stats,
    .goppo-profile-stats-row { justify-content: center; }
}

/* ── Series page ───────────────────────────────────────────── */

.goppo-series-hero {
    position: relative;
    padding: clamp(80px, 12vw, 160px) 0 clamp(48px, 8vw, 80px);
    background: linear-gradient(135deg, #1e1b4b, #4c1d95);
    background-size: cover;
    background-position: center;
    color: #fff;
    text-align: center;
    overflow: hidden;
}
.goppo-series-hero.no-cover {
    background: linear-gradient(135deg, var(--nh-primary), var(--nh-primary-2));
    /* Re-declare after the shorthand so `.no-cover` doesn't reset them. */
    background-size: cover;
    background-position: center;
}
.goppo-series-hero-overlay {
    position: absolute; inset: 0;
    background: linear-gradient(180deg, rgba(15,23,42,.35), rgba(15,23,42,.75));
    pointer-events: none;
}
.goppo-series-hero-inner { position: relative; z-index: 2; }
.goppo-series-eyebrow {
    display: inline-block;
    padding: 6px 14px;
    border-radius: 999px;
    background: rgba(255,255,255,.15);
    backdrop-filter: blur(8px);
    font-size: 12px;
    font-weight: 800;
    letter-spacing: .5px;
    text-transform: uppercase;
    margin-bottom: 20px;
    color: #fff;
}
.goppo-series-title {
    font-size: clamp(2rem, 5vw, 3.5rem);
    margin: 0 0 16px;
    letter-spacing: -0.03em;
    line-height: 1.1;
    color: #fff;
}
.goppo-series-desc {
    font-size: clamp(1rem, 1.5vw, 1.15rem);
    color: rgba(255,255,255,.85);
    max-width: 640px;
    margin: 0 auto 24px;
    line-height: 1.6;
}
.goppo-series-meta {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 12px;
    flex-wrap: wrap;
    font-size: 13px;
    color: rgba(255,255,255,.8);
}
.goppo-series-author {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    color: #fff !important;
    font-weight: 700;
    text-decoration: none;
}
.goppo-series-author img {
    width: 28px; height: 28px;
    border-radius: 50%;
    border: 2px solid rgba(255,255,255,.35);
}

.goppo-series-toc { padding: clamp(48px, 8vw, 80px) 0; }

/*
 * BUGFIX: `counter-reset: chapters` was declared but never paired with a
 * `counter-increment` or a `content: counter(...)` consumer. The chapter
 * numbers are rendered server-side. Removed the dead rule.
 */
.goppo-chapter-list {
    list-style: none;
    margin: 0;
    padding: 0;
    display: grid;
    gap: 12px;
}
.goppo-chapter-link {
    display: flex;
    align-items: center;
    gap: 20px;
    padding: 22px 24px;
    background: var(--nh-bg);
    border: 1px solid var(--nh-border);
    border-radius: var(--nh-radius);
    color: var(--nh-text) !important;
    text-decoration: none;
    transition: transform .2s var(--nh-ease-out), box-shadow .2s var(--nh-ease), border-color .2s var(--nh-ease);
}
.goppo-chapter-link:hover {
    transform: translateX(4px);
    box-shadow: var(--nh-shadow-lg);
    border-color: var(--nh-primary);
}
.goppo-chapter-num {
    font-size: 24px;
    font-weight: 900;
    color: var(--nh-primary);
    min-width: 44px;
    letter-spacing: -0.03em;
    opacity: .7;
}
.goppo-chapter-body { flex: 1; min-width: 0; }
.goppo-chapter-title {
    font-size: 17px;
    margin: 0 0 4px;
    letter-spacing: -0.02em;
    color: var(--nh-text);
}
.goppo-chapter-excerpt {
    font-size: 13.5px;
    color: var(--nh-text-muted);
    margin: 0;
    line-height: 1.5;
}
.goppo-chapter-arrow {
    font-size: 20px;
    color: var(--nh-text-muted);
    flex-shrink: 0;
    transition: transform .15s var(--nh-ease), color .15s var(--nh-ease);
}
.goppo-chapter-link:hover .goppo-chapter-arrow { color: var(--nh-primary); transform: translateX(4px); }

@media (max-width: 700px) {
    .goppo-chapter-link { padding: 18px 18px; gap: 14px; }
    .goppo-chapter-num { font-size: 20px; min-width: 32px; }
    .goppo-chapter-title { font-size: 15px; }
}

/* ── Series manager (shortcode) ────────────────────────────── */
.goppo-series-manager { max-width: 900px; margin: 0 auto; }
.goppo-series-head {
    display: flex; align-items: center; justify-content: space-between;
    gap: 16px; margin-bottom: 24px; flex-wrap: wrap;
}
.goppo-series-list { display: grid; gap: 12px; }
.goppo-series-card {
    display: flex; align-items: center; justify-content: space-between;
    gap: 20px; padding: 20px 22px;
    background: var(--nh-bg-soft);
    border: 1px solid var(--nh-border);
    border-radius: var(--nh-radius);
    flex-wrap: wrap;
}
.goppo-series-card-body { flex: 1; min-width: 0; }
.goppo-series-card-body h3 { margin: 8px 0 4px; font-size: 16px; }
.goppo-series-card-body p { margin: 0; color: var(--nh-text-muted); font-size: 13.5px; }
.goppo-series-card-meta {
    display: flex; gap: 10px; font-size: 11px;
    text-transform: uppercase; letter-spacing: .4px;
    color: var(--nh-text-muted); font-weight: 700;
}
.goppo-series-visibility.is-public { color: #059669; }
/* Dark mode parity with the equivalent rule in theme.css (.goppo-sp-tag.pub). */
html.nh-dark .goppo-series-visibility.is-public { color: #34d399; }
.goppo-series-card-actions { display: flex; gap: 6px; flex-wrap: wrap; }

.goppo-btn-primary, .goppo-btn-ghost {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 9px 14px; border-radius: 10px;
    font-size: 13px; font-weight: 700; font-family: inherit;
    cursor: pointer; text-decoration: none; line-height: 1;
    /*
     * BUGFIX: `transform` was missing from the transition list, so the
     * `:hover { transform: translateY(-1px) }` below was an instant snap
     * instead of a smooth lift. Added transform and box-shadow to match
     * the feel of `.noteshub-cta`.
     */
    transition: background .15s ease, border-color .15s ease, color .15s ease,
                transform .15s var(--nh-ease), box-shadow .15s ease;
}
.goppo-btn-primary {
    background: linear-gradient(135deg, var(--nh-primary), var(--nh-primary-2));
    color: #fff; border: none; box-shadow: var(--nh-shadow-glow);
}
.goppo-btn-primary:hover { color: #fff; transform: translateY(-1px); box-shadow: 0 12px 28px -6px var(--nh-primary-glow); }
.goppo-btn-ghost {
    background: transparent; border: 1px solid var(--nh-border);
    color: var(--nh-text);
}
.goppo-btn-ghost:hover { border-color: var(--nh-primary); color: var(--nh-primary); }
.goppo-btn-ghost.goppo-danger:hover { border-color: var(--nh-danger); color: var(--nh-danger); }