/* =========================================================
   POKERPATH — Complete Stylesheet v6
   Visual overhaul: accent bars, thermometer animations,
   skeleton loaders, dark-mode, stagger animations
   ========================================================= */

/* =========================================================
   DESIGN TOKENS (no external fonts — system stack only)
   ========================================================= */
:root {
    /* ---- Design System v1.0 — Locked Token Set ---- */
    --pp-bg:             #f8fafc;
    --pp-surface:        #ffffff;
    --pp-surface-alt:    #f1f5f9;
    --pp-border:         #e2e8f0;
    --pp-border-strong:  #cbd5e1;
    --pp-primary:        #16a34a;
    --pp-primary-hover:  #15803d;
    --pp-primary-active: #166534;
    --pp-accent:         #22c55e;
    --pp-accent-soft:    #dcfce7;
    --pp-text-primary:   #0f172a;
    --pp-text-secondary: #475569;
    --pp-text-muted:     #94a3b8;
    --pp-success:        #16a34a;
    --pp-warning:        #f59e0b;
    --pp-danger:         #dc2626;
    --pp-therm-empty:    #e5e7eb;
    --pp-therm-warm:     #f59e0b;
    --pp-therm-hot:      #22c55e;
    --pp-therm-fire:     #ef4444;
    --pp-space-1:        4px;
    --pp-space-2:        8px;
    --pp-space-3:        12px;
    --pp-space-4:        16px;
    --pp-space-5:        20px;
    --pp-space-6:        24px;
    /* ---- Structural tokens ---- */
    --pp-radius-sm:      6px;
    --pp-radius-md:      8px;
    --pp-radius-lg:      12px;
    --pp-radius-xl:      16px;
    --pp-shadow-sm:      0 1px 3px rgba(0,0,0,0.08);
    --pp-shadow-md:      0 4px 12px rgba(0,0,0,0.12);
    --pp-shadow-lg:      0 8px 24px rgba(0,0,0,0.16);
    /* ---- Typography ---- */
    --pp-font:           Inter, system-ui, -apple-system, sans-serif;
    --pp-font-heading:   var(--pp-font);
    /* ---- Legacy aliases (backward compat for existing rules) ---- */
    --pp-white:          #ffffff;
    --pp-navy:           #0d0f1a;
    --pp-navy-light:     #161a2b;
    --pp-gold:           #c8a84b;
    --pp-gold-light:     #d4b85a;
    --pp-blue:           var(--pp-primary);
    --pp-blue-light:     var(--pp-accent-soft);
    --pp-green:          var(--pp-success);
    --pp-green-dark:     var(--pp-primary-hover);
    --pp-green-light:    var(--pp-accent-soft);
    --pp-green-mid:      var(--pp-accent);
    --pp-fire:           var(--pp-therm-fire);
    --pp-fire-dark:      var(--pp-danger);
    --pp-yellow:         var(--pp-therm-warm);
    --pp-gray-50:        var(--pp-bg);
    --pp-gray-100:       var(--pp-surface-alt);
    --pp-gray-200:       var(--pp-border);
    --pp-gray-300:       var(--pp-border-strong);
    --pp-gray-500:       var(--pp-text-muted);
    --pp-gray-600:       #64748b;
    --pp-gray-700:       var(--pp-text-secondary);
    --pp-gray-800:       #1e293b;
    --pp-gray-900:       var(--pp-text-primary);
    --pp-amber-bg:       #FAEEDA;
    --pp-amber-border:   #E8C27A;
    --pp-amber-text:     #633806;
    --pp-card-bg:        var(--pp-surface);
    --pp-text:           var(--pp-text-primary);
}

/* =========================================================
   DARK THEME — Tournament Coach
   ========================================================= */
.pp-theme-dark {
    --pp-bg:             #0d0f1a;
    --pp-surface:        #161a2b;
    --pp-surface-alt:    #1f2438;
    --pp-border:         #2a2f45;
    --pp-border-strong:  #3b4260;
    --pp-primary:        #22c55e;
    --pp-primary-hover:  #16a34a;
    --pp-primary-active: #15803d;
    --pp-accent:         #4ade80;
    --pp-accent-soft:    rgba(34,197,94,0.12);
    --pp-text-primary:   #f1f5f9;
    --pp-text-secondary: #cbd5e1;
    --pp-text-muted:     #94a3b8;
    --pp-success:        #22c55e;
    --pp-warning:        #f59e0b;
    --pp-danger:         #ef4444;
    --pp-therm-empty:    #2a2f45;
    --pp-therm-warm:     #f59e0b;
    --pp-therm-hot:      #22c55e;
    --pp-therm-fire:     #ef4444;
    /* Legacy alias overrides for dark mode */
    --pp-navy:           #0d0f1a;
    --pp-navy-light:     #161a2b;
    --pp-card-bg:        var(--pp-surface);
    --pp-text:           var(--pp-text-primary);
    --pp-gray-50:        var(--pp-bg);
    --pp-gray-100:       var(--pp-surface-alt);
    --pp-gray-200:       var(--pp-border);
    --pp-gray-300:       var(--pp-border-strong);
    --pp-gray-700:       var(--pp-text-secondary);
    --pp-gray-900:       var(--pp-text-primary);
    --pp-blue:           var(--pp-primary);
    --pp-blue-light:     var(--pp-accent-soft);
    --pp-green:          var(--pp-success);
    --pp-green-dark:     var(--pp-primary-hover);
    --pp-white:          #f1f5f9;
}

/* =========================================================
   DARK THEME — Component surface overrides (Fix 1 + Fix 7)
   ========================================================= */
.pp-theme-dark .pp-card,
.pp-theme-dark .pp-cc-wrap,
.pp-theme-dark .pp-cc-cal,
.pp-theme-dark .pp-cc-link-card,
.pp-theme-dark .pp-cc-section,
.pp-theme-dark .pp-cc-notif-wrap,
.pp-theme-dark .pp-coach-card {
    background: var(--pp-surface) !important;
    color: var(--pp-text-primary) !important;
    border-color: var(--pp-border) !important;
}

.pp-theme-dark .pp-cc-label,
.pp-theme-dark .pp-cc-meta,
.pp-theme-dark .pp-pref-label,
.pp-theme-dark .pp-pref-val,
.pp-theme-dark .pp-cc-count,
.pp-theme-dark .pp-cc-title,
.pp-theme-dark h2,
.pp-theme-dark h3,
.pp-theme-dark p,
.pp-theme-dark span,
.pp-theme-dark td,
.pp-theme-dark th {
    color: var(--pp-text-primary) !important;
}

.pp-theme-dark .pp-text-muted,
.pp-theme-dark .pp-cc-sub,
.pp-theme-dark .pp-last-updated,
.pp-theme-dark .pp-card-posted {
    color: var(--pp-text-muted) !important;
}

.pp-theme-dark .pp-cc-cal-wrap,
.pp-theme-dark .pp-cc-cal-grid,
.pp-theme-dark table {
    background: var(--pp-surface) !important;
}

/* =========================================================
   KEYFRAME ANIMATIONS
   ========================================================= */
@keyframes pp-shimmer {
    0%   { background-position: -400px 0; }
    100% { background-position: 400px 0; }
}
@keyframes pp-fill {
    from { width: 0; }
}
@keyframes pp-pulse {
    0%, 100% { opacity: 1; }
    50%      { opacity: .65; }
}
@keyframes pp-slide-up {
    from { opacity: 0; transform: translateY(20px); }
    to   { opacity: 1; transform: translateY(0); }
}
@keyframes pp-fade-in {
    from { opacity: 0; }
    to   { opacity: 1; }
}
@keyframes pp-toast-in {
    from { opacity: 0; transform: translateY(16px) scale(.96); }
    to   { opacity: 1; transform: translateY(0) scale(1); }
}

/* =========================================================
   BASE / TYPOGRAPHY
   ========================================================= */
.pp-search-wrap,
.pp-my-tournaments,
.pp-auth-wrap,
.pp-preferences,
.pp-my-account,
.pp-upgrade-wrap,
.pp-single-tournament {
    max-width: 1100px;
    margin: 0 auto;
    font-family: var(--pp-font);
    color: var(--pp-text);
    line-height: 1.5;
}

.pp-search-wrap h1,
.pp-search-wrap h2,
.pp-search-wrap h3,
.pp-my-account h1,
.pp-my-account h2,
.pp-my-account h3,
.pp-single-tournament h1,
.pp-single-tournament h2,
.pp-upgrade-wrap h1,
.pp-upgrade-wrap h2 {
    font-family: var(--pp-font-heading);
    font-weight: 700;
    letter-spacing: -0.01em;
}

/* =========================================================
   TYPOGRAPHY SCALE — Design System v1.0
   ========================================================= */
.pp-page-title    { font-size: 28px; font-weight: 700; line-height: 1.2; color: var(--pp-text-primary); }
.pp-section-title { font-size: 20px; font-weight: 600; line-height: 1.3; color: var(--pp-text-primary); }
.pp-card-title    { font-size: 16px; font-weight: 600; line-height: 1.3; }
.pp-card-casino   { font-size: 14px; font-weight: 500; line-height: 1.4; color: var(--pp-text-secondary); }
.pp-body-text     { font-size: 14px; font-weight: 400; line-height: 1.5; color: var(--pp-text-primary); }
.pp-grid-label    { font-size: 11px; font-weight: 600; line-height: 1.2; letter-spacing: 0.04em; text-transform: uppercase; color: var(--pp-text-secondary) !important; }
.pp-grid-value    { font-size: 15px; font-weight: 600; line-height: 1.3; color: var(--pp-text-primary); }
.pp-badge         { font-size: 11px; font-weight: 600; line-height: 1; }
.pp-btn           { font-size: 13px; font-weight: 600; line-height: 1; }
.pp-footnote      { font-size: 12px; font-weight: 400; line-height: 1.4; color: var(--pp-text-muted); }

/* =========================================================
   FILTER AREA
   ========================================================= */
.pp-filters {
    background: var(--pp-navy);
    border-radius: var(--pp-radius-lg);
    padding: 24px;
    margin-bottom: 24px;
}
.pp-filter-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 16px 14px;
    margin-bottom: 16px;
}
.pp-filter-group label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: rgba(255,255,255,0.7);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}
.pp-filter {
    width: 100%;
    padding: 9px 10px;
    border: 1px solid #333;
    border-radius: var(--pp-radius-sm);
    background: var(--pp-navy-light);
    color: #fff;
    font-size: 14px;
    box-sizing: border-box;
    min-height: 44px;
    transition: border-color .2s;
}
.pp-filter:focus {
    outline: none;
    border-color: var(--pp-gold);
    box-shadow: 0 0 0 3px rgba(200,168,75,0.25);
}
.pp-filter-actions {
    display: flex;
    gap: 12px;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 4px;
}
.pp-filter-count {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    background: var(--pp-gold);
    color: var(--pp-navy);
    font-size: 11px;
    font-weight: 700;
    min-width: 20px;
    height: 20px;
    border-radius: 10px;
    padding: 0 6px;
}

/* Active filter chips */
.pp-active-filters {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-bottom: 16px;
}
.pp-filter-chip {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px 4px 12px;
    background: rgba(255,255,255,0.12);
    color: #fff;
    font-size: 13px;
    border-radius: 20px;
    border: 1px solid rgba(255,255,255,0.15);
    transition: background .15s;
}
.pp-filter-chip:hover {
    background: rgba(255,255,255,0.2);
}
.pp-filter-chip button {
    background: none;
    border: none;
    color: rgba(255,255,255,0.6);
    cursor: pointer;
    font-size: 15px;
    line-height: 1;
    padding: 0;
    margin-left: 2px;
}
.pp-filter-chip button:hover {
    color: #fff;
}

/* =========================================================
   BUTTONS
   ========================================================= */
.pp-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 20px;
    border: none;
    border-radius: var(--pp-radius-sm);
    font-size: 14px;
    font-weight: 600;
    font-family: var(--pp-font);
    cursor: pointer;
    transition: background .15s, transform .1s, box-shadow .15s;
    text-decoration: none;
    gap: 6px;
    line-height: 1.2;
}
.pp-btn:active {
    transform: scale(0.97);
}
.pp-btn-primary {
    height: 36px;
    padding: 0 14px;
    border-radius: 8px;
    background: var(--pp-primary);
    color: #fff;
    border: none;
}
.pp-btn-primary:hover  { background: var(--pp-primary-hover); }
.pp-btn-primary:active { background: var(--pp-primary-active); }
.pp-btn-primary:disabled,
.pp-btn-primary[disabled] { opacity: 0.5; }

.pp-btn-secondary {
    height: 36px;
    padding: 0 14px;
    border-radius: 8px;
    background: transparent;
    border: 1px solid var(--pp-border);
    color: var(--pp-text-primary);
}
.pp-btn-secondary:hover  { background: var(--pp-surface-alt); }
.pp-btn-secondary:active { border-color: var(--pp-border-strong); }

.pp-btn-icon {
    width: 32px;
    height: 32px;
    padding: 0;
    border-radius: 6px;
    background: transparent;
    border: none;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    cursor: pointer;
    transition: background .15s;
}
.pp-btn-icon:hover  { background: var(--pp-surface-alt); }
.pp-btn-icon:active { background: var(--pp-border); }

.pp-btn-small {
    padding: 6px 14px;
    font-size: 13px;
}
.pp-btn-full {
    width: 100%;
}
.pp-btn:disabled,
.pp-btn[disabled] {
    opacity: 0.5;
    cursor: not-allowed;
    transform: none;
}

/* =========================================================
   QUICK SEARCH PRESETS
   ========================================================= */
.pp-search-presets {
    display: flex;
    justify-content: center;
    flex-wrap: wrap;
    gap: 12px;
    margin-bottom: 20px;
    padding: 0 16px;
}
.pp-presets-label {
    color: rgba(255,255,255,0.92);  /* FIX 5 — was 0.7, too faint on dark filter bg */
    font-size: 12px;
    font-weight: 700;
    letter-spacing: 0.02em;
    display: inline-flex;
    align-items: center;
}
.pp-preset-btn {
    min-width: 120px;
    height: 36px;
    padding: 0 16px;
    border-radius: 8px;
    border: 1.5px solid rgba(255,255,255,0.4);
    background: rgba(255,255,255,0.12);
    color: #ffffff !important;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 6px;
    transition: all .15s;
    backdrop-filter: blur(4px);
    white-space: nowrap;
}
.pp-preset-btn:hover,
.pp-preset-btn.active {
    background: var(--pp-primary);
    border-color: var(--pp-primary);
    color: #ffffff !important;
}
.pp-recent-searches {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
}
.pp-recent-btn {
    padding: 4px 12px;
    border-radius: 14px;
    border: 1px solid var(--pp-gray-200);
    background: var(--pp-gray-50);
    color: var(--pp-gray-700);
    font-size: 12px;
    cursor: pointer;
    transition: all .15s;
}
.pp-recent-btn:hover {
    border-color: var(--pp-blue);
    color: var(--pp-blue);
}

/* =========================================================
   MOBILE FILTER TOGGLE
   ========================================================= */
/* Old mobile filter toggle — replaced by pp-search-controls */
.pp-mobile-filter-toggle {
    display: none !important;
}
.pp-mobile-filter-arrow { display: none; }

/* =========================================================
   SEARCH CONTROLS — Filter + Sort buttons
   ========================================================= */
.pp-search-controls {
    display: flex;
    flex-direction: column;
    gap: 8px;
    margin-bottom: 16px;
}
.pp-search-filter-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 14px 20px;
    background: var(--pp-primary);
    color: #fff;
    border: none;
    border-radius: var(--pp-radius-md);
    font-size: 15px;
    font-weight: 700;
    cursor: pointer;
    min-height: 48px;
    transition: background 0.15s;
}
.pp-search-filter-btn:hover {
    background: var(--pp-primary-hover);
}
.pp-search-filter-btn svg {
    flex-shrink: 0;
}
.pp-search-sort-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
    width: 100%;
    padding: 12px 20px;
    background: transparent;
    color: var(--pp-primary);
    border: 2px solid var(--pp-primary);
    border-radius: var(--pp-radius-md);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 44px;
    transition: background 0.15s, color 0.15s;
}
.pp-search-sort-btn:hover {
    background: var(--pp-accent-soft);
}
.pp-search-sort-btn svg {
    flex-shrink: 0;
}

/* =========================================================
   CARDS
   ========================================================= */
.pp-card {
    background: var(--pp-card-bg);
    border-radius: var(--pp-radius-lg);
    box-shadow: var(--pp-shadow-md);
    border: 1px solid var(--pp-gray-300);
    border-left: 4px solid transparent;
    margin-bottom: 16px;
    overflow: hidden;
    transition: transform .2s, box-shadow .2s;
    animation: pp-fade-in .4s ease both;
    animation-delay: calc(var(--i, 0) * 60ms);
}
.pp-card:hover {
    transform: translateY(-2px);
    box-shadow: var(--pp-shadow-lg);
}

/* Zone accent bars */
.pp-card-zone-empty  { border-left-color: var(--pp-gray-300); }
.pp-card-zone-yellow { border-left-color: var(--pp-yellow); }
.pp-card-zone-green  { border-left-color: var(--pp-green); }
.pp-card-zone-fire   { border-left-color: var(--pp-fire); }

/* Card header */
.pp-card-header {
    padding: 10px 14px 8px;
    border-bottom: 1px solid var(--pp-gray-100);
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
}
.pp-card-header-left { flex: 1; min-width: 0; }
.pp-card-header-right {
    text-align: right;
    flex-shrink: 0;
}
.pp-card-badges {
    display: flex;
    flex-wrap: wrap;
    gap: 5px;
    margin-bottom: 6px;
}
.pp-card-title {
    font-size: 16px;
    font-weight: 700;
    color: var(--pp-gray-900);
    margin: 0 0 4px 0;
    line-height: 1.3;
}
.pp-card-title-link {
    color: #1a6b47;
    text-decoration: none;
}
.pp-card-title-link:hover { text-decoration: underline; }
.pp-card-casino {
    font-size: 13px;
    color: var(--pp-text-secondary);
    font-weight: 500;
}
.pp-card-date {
    font-size: 14px;
    font-weight: 700;
    color: var(--pp-text-primary);
}
.pp-card-time {
    font-size: 13px;
    color: var(--pp-text-secondary);
    margin-top: 2px;
    font-weight: 500;
}

/* Card body */
.pp-card-body { padding: 8px 14px; }

/* Info grid */
.pp-card-grid {
    display: grid;
    grid-template-columns: repeat(3, 1fr);
    gap: 10px 14px;
    margin-bottom: 16px;
}
.pp-card-grid-item { display: flex; flex-direction: column; gap: 3px; }
.pp-grid-label {
    font-size: 11px;
    color: #444 !important;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    font-weight: 700;
}
.pp-grid-value {
    font-size: 15px;
    font-weight: 700;
    color: var(--pp-text-primary);
}
.pp-grid-value-green { color: var(--pp-green); }

/* Thermometer */
.pp-card-therm { margin-bottom: 10px; }
.pp-card-therm-meta {
    display: flex;
    justify-content: space-between;
    align-items: center;
    margin-bottom: 6px;
}
.pp-therm-count-num {
    font-size: 13px;
    color: var(--pp-text-primary);
    font-weight: 600;
}
.pp-therm-wrap {
    padding: 0 18px 14px;
    display: block;
    width: 100%;
}
.pp-therm-bar {
    width: 100% !important;
    height: 16px !important;
    background: #b0b0a8 !important;
    border-radius: 8px !important;
    overflow: hidden;
    position: relative;
    border: 1px solid #999 !important;
    display: block !important;
}
.pp-therm-fill {
    height: 100%;
    border-radius: 8px;
    transition: width .6s ease;
    min-height: 16px;
}
.pp-therm-fill.pp-therm-yellow,
.pp-therm-fill.pp-fill-yellow { background: linear-gradient(90deg, #f59e0b, #d97706); }
.pp-therm-fill.pp-therm-green,
.pp-therm-fill.pp-fill-green  { background: linear-gradient(90deg, #10b981, #059669); }
.pp-therm-fill.pp-therm-fire,
.pp-therm-fill.pp-fill-fire   { background: linear-gradient(90deg, #ef4444, #dc2626); }
.pp-therm-fill.pp-fill-empty  { background: transparent; }

/* Zone labels */
.pp-therm-zone-label {
    font-size: 11px;
    font-weight: 700;
    padding: 3px 10px;
    border-radius: 10px;
}
.pp-therm-zone-empty  { background: var(--pp-gray-200); color: var(--pp-gray-600); }
.pp-therm-zone-yellow { background: #fde68a; color: #78350f; }
.pp-therm-zone-green  { background: #a7f3d0; color: #064e3b; }
.pp-therm-zone-fire   { background: #fecaca; color: #7f1d1d; }

/* Actions row */
.pp-card-actions {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 8px 14px 10px;
    gap: 8px;
    border-top: 1px solid var(--pp-gray-200);
    flex-wrap: wrap;
}
.pp-card-actions-left {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
}
.pp-card-actions-center {
    display: none;
}
.pp-card-actions-right {
    display: flex;
    align-items: center;
    flex-shrink: 0;
}

/* Save button */
.pp-save-btn {
    padding: 6px 12px !important;
    border-radius: var(--pp-radius-sm) !important;
    border: 1px solid var(--pp-gray-300) !important;
    background: var(--pp-white);
    color: var(--pp-gray-700) !important;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all .2s;
    display: inline-flex !important;
    align-items: center;
    gap: 4px;
}
.pp-save-btn:hover {
    border-color: var(--pp-blue) !important;
    color: var(--pp-blue) !important;
}
.pp-save-btn.pp-saved {
    background: var(--pp-blue-light);
    border-color: var(--pp-blue) !important;
    color: var(--pp-blue) !important;
    font-weight: 600;
}

/* Share icons */
.pp-share-icons {
    display: flex;
    gap: 5px;
    align-items: center;
    padding-left: 8px;
    border-left: 1px solid var(--pp-gray-200);
    margin-left: 4px;
}
.pp-share-icon-btn {
    background: none;
    border: none;
    padding: 0;
    cursor: pointer;
}
.pp-si {
    width: 28px !important;
    height: 28px !important;
    border-radius: 6px !important;
    display: flex !important;
    align-items: center;
    justify-content: center;
    font-size: 12px;
    font-weight: 600;
    cursor: pointer;
    transition: opacity .15s;
}
.pp-si:hover { opacity: 0.8; }
.pp-si-fb    { background: #1877F2 !important; color: #fff !important; }
.pp-si-x     { background: #000 !important; color: #fff !important; }
.pp-si-email { background: #EA4335 !important; color: #fff !important; }
.pp-si-copy  { background: var(--pp-gray-100) !important; color: var(--pp-gray-700) !important; border: 1px solid var(--pp-gray-200) !important; }

/* Card footer */
.pp-card-footer {
    padding: 6px 14px;
    background: var(--pp-gray-50);
    border-top: 1px solid var(--pp-gray-100);
    font-size: 11px;
    color: var(--pp-gray-500);
    display: flex;
    justify-content: space-between;
    align-items: center;
}

/* Badge additions */
.pp-badge-soon     { background: #dcfce7; color: #166534; }
.pp-badge-free     { background: #d1fae5; color: #065f46; }
.pp-badge-verified { background: #dbeafe; color: #1e40af; }
.pp-badge-multi    { background: #ede9fe; color: #5b21b6; }

/* Responsive grid */
@media (max-width: 600px) {
    .pp-card-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 400px) {
    .pp-card-grid { grid-template-columns: 1fr; }
    /* .pp-card-actions override moved to Zip 2 mobile card block */
}

/* =========================================================
   BADGES
   ========================================================= */
.pp-badge {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    border-radius: 20px;
    white-space: nowrap;
}
.pp-badge-happening {
    background: #dcfce7;
    color: var(--pp-green-dark);
}
.pp-badge-cancelled {
    background: #fde2e2;
    color: #b91c1c;
}
.pp-badge-postponed {
    background: var(--pp-amber-bg);
    color: var(--pp-amber-text);
}

/* =========================================================
   THERMOMETER — pulse and legacy stubs (bar/fill defined in CARDS section above)
   ========================================================= */
.pp-therm-fill.pp-pulse {
    animation: pp-fill .8s ease both, pp-pulse 2s ease-in-out infinite 1s;
}
.pp-therm-count {
    font-size: 12px;
    font-weight: 600;
    color: var(--pp-gray-700);
    margin-top: 4px;
}

/* Legacy mercury / bulb thermometer */
.pp-therm-mercury { display: none; }
.pp-therm-bulb    { display: none; }

/* =========================================================
   INTEREST BUTTON
   ========================================================= */
.pp-interest-btn {
    padding: 6px 14px;
    border-radius: var(--pp-radius-sm);
    border: 1px solid var(--pp-gray-300);
    background: var(--pp-white);
    color: var(--pp-gray-700);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all .2s;
    display: inline-flex;
    align-items: center;
    gap: 5px;
}
.pp-interest-btn:hover {
    border-color: var(--pp-blue);
    color: var(--pp-blue);
}
.pp-interest-btn.pp-interested {
    background: var(--pp-blue-light);
    border-color: var(--pp-blue);
    color: var(--pp-blue);
    font-weight: 600;
}

/* =========================================================
   SHARE BUTTONS
   ========================================================= */
.pp-share-inline {
    display: inline-flex;
    gap: 6px;
    align-items: center;
    position: relative;
}
.pp-share-wrap {
    position: relative;
    display: inline-block;
}
.pp-share-toggle {
    width: 32px;
    height: 32px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--pp-gray-200);
    background: var(--pp-white);
    color: var(--pp-gray-500);
    font-size: 15px;
    cursor: pointer;
    transition: all .15s;
}
.pp-share-toggle:hover {
    background: var(--pp-blue-light);
    color: var(--pp-blue);
    border-color: var(--pp-blue);
}
.pp-share-popover {
    display: none !important;
    position: absolute;
    bottom: calc(100% + 8px);
    left: 50%;
    transform: translateX(-50%);
    background: var(--pp-white);
    border: 1px solid var(--pp-gray-200);
    border-radius: 10px;
    box-shadow: 0 4px 16px rgba(0,0,0,0.12);
    padding: 6px;
    z-index: 9999;
    min-width: 160px;
    flex-direction: column;
    gap: 2px;
}
.pp-share-popover.pp-share-popover-open {
    display: flex !important;
}
.pp-share-option {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 12px;
    border: none;
    background: none;
    border-radius: 6px;
    font-size: 13px;
    color: var(--pp-gray-700);
    cursor: pointer;
    width: 100%;
    text-align: left;
    transition: background .12s;
    white-space: nowrap;
}
.pp-share-option:hover { background: var(--pp-gray-50); }
.pp-share-option-icon {
    width: 22px;
    height: 22px;
    border-radius: 4px;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    flex-shrink: 0;
}
.pp-share-fb-icon    { background: #1877F2; color: #fff; }
.pp-share-tw-icon    { background: #000; color: #fff; }
.pp-share-email-icon { background: #EA4335; color: #fff; }
.pp-share-copy-icon  { background: var(--pp-gray-100); color: var(--pp-gray-700); }
.pp-share-icon {
    width: 30px;
    height: 30px;
    border-radius: 50%;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--pp-gray-200);
    background: var(--pp-white);
    color: var(--pp-gray-500);
    font-size: 14px;
    cursor: pointer;
    transition: all .15s;
}
.pp-share-icon:hover {
    background: var(--pp-blue-light);
    color: var(--pp-blue);
    border-color: var(--pp-blue);
}
.pp-share-label {
    font-size: 12px;
    color: var(--pp-gray-500);
}

/* =========================================================
   REPORT BUTTON
   ========================================================= */
.pp-report-btn {
    display: inline-flex !important;
    align-items: center;
    gap: 5px;
    font-size: 12px !important;
    color: var(--pp-gray-500) !important;
    background: none;
    border: 1px solid var(--pp-gray-300) !important;  /* FIX 3 — match Save/Interest border weight */
    border-radius: var(--pp-radius-sm) !important;
    cursor: pointer;
    padding: 5px 10px !important;
    transition: color .15s, background .15s, border-color .15s;
    font-weight: 500;
}
.pp-report-btn::before {
    content: none !important;
    display: none !important;
}
.pp-report-btn:hover {
    color: #b91c1c !important;
    background: #fef2f2;
    border-color: #fca5a5 !important;
}

/* =========================================================
   VERIFIED / STALE / ACCURACY
   ========================================================= */
.pp-verified-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    font-weight: 600;
    color: var(--pp-green);
}
.pp-unverified-badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--pp-gray-500);
}
.pp-stale-warning {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    font-size: 12px;
    color: var(--pp-amber-text);
    background: var(--pp-amber-bg);
    padding: 2px 8px;
    border-radius: var(--pp-radius-sm);
}
.pp-accuracy-notice,
.pp-disclaimer {
    font-size: 12px;
    color: var(--pp-text-primary);
    line-height: 1.5;
    padding: 12px 16px;
    background: rgba(255,255,255,0.92);
    border: 1px solid rgba(255,255,255,0.3);
    border-radius: var(--pp-radius-md);
    margin-top: 16px;
    backdrop-filter: blur(4px);
}
.pp-last-updated {
    font-size: 12px;
    color: var(--pp-gray-500);
}
/* v6.9.70-r2 — "Posted {date}" freshness line in the card body. Additive; mirrors
   the muted .pp-last-updated treatment so it reads as intentional meta, not body copy. */
.pp-card-posted {
    margin-top: 6px;
    font-size: 12px;
    color: var(--pp-gray-500);
}

/* =========================================================
   CANCELLED BANNER
   ========================================================= */
.pp-cancelled-banner {
    background: #fde2e2;
    color: #b91c1c;
    padding: 12px 18px;
    border-radius: var(--pp-radius-md);
    font-weight: 600;
    font-size: 14px;
    text-align: center;
    margin-bottom: 16px;
}

/* =========================================================
   SPINNER & SKELETON LOADERS
   ========================================================= */
.pp-spinner {
    display: flex;
    justify-content: center;
    padding: 40px;
}
.pp-spinner::after {
    content: '';
    width: 32px;
    height: 32px;
    border: 3px solid var(--pp-gray-200);
    border-top-color: var(--pp-blue);
    border-radius: 50%;
    animation: pp-spin .6s linear infinite;
}
@keyframes pp-spin {
    to { transform: rotate(360deg); }
}

.pp-skeleton {
    background: linear-gradient(90deg, var(--pp-gray-100) 25%, var(--pp-gray-50) 50%, var(--pp-gray-100) 75%);
    background-size: 800px 100%;
    animation: pp-shimmer 1.6s infinite linear;
    border-radius: var(--pp-radius-md);
}
.pp-skeleton-card {
    height: 180px;
    margin-bottom: 16px;
    border-radius: var(--pp-radius-lg);
}
.pp-skeleton-line {
    height: 14px;
    margin-bottom: 10px;
    border-radius: 4px;
}
.pp-skeleton-line.short { width: 60%; }

/* =========================================================
   EMPTY / NO RESULTS
   ========================================================= */
.pp-no-results,
.pp-empty {
    text-align: center;
    padding: 60px 20px;
    color: var(--pp-gray-500);
}
.pp-no-results .pp-empty-icon,
.pp-empty .pp-empty-icon {
    font-size: 48px;
    margin-bottom: 16px;
    display: block;
    opacity: .5;
}
.pp-no-results p,
.pp-empty p {
    font-size: 15px;
    line-height: 1.5;
    max-width: 400px;
    margin: 0 auto;
}

/* =========================================================
   PAGINATION
   ========================================================= */
.pp-pagination {
    display: flex;
    justify-content: center;
    align-items: center;
    gap: 4px;
    margin: 24px 0;
}
.pp-pagination button,
.pp-pagination span {
    min-width: 36px;
    height: 36px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-sm);
    background: var(--pp-white);
    color: var(--pp-gray-700);
    font-size: 14px;
    font-weight: 500;
    cursor: pointer;
    transition: all .15s;
}
.pp-pagination button:hover {
    background: var(--pp-blue-light);
    border-color: var(--pp-blue);
    color: var(--pp-blue);
}
.pp-pagination button.active {
    background: var(--pp-blue);
    border-color: var(--pp-blue);
    color: #fff;
}
.pp-pagination button:disabled {
    opacity: .4;
    cursor: default;
}
.pp-pagination .pp-ellipsis {
    border: none;
    background: none;
    cursor: default;
    color: var(--pp-gray-500);
    min-width: 28px;
}

/* =========================================================
   AUTH / MODAL
   ========================================================= */
.pp-auth-wrap {
    max-width: 420px;
}
.pp-auth-tabs {
    display: flex;
    border-bottom: 2px solid var(--pp-gray-200);
    margin-bottom: 24px;
}
.pp-tab-btn {
    flex: 1;
    padding: 12px;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -2px;
    font-size: 14px;
    font-weight: 600;
    color: var(--pp-gray-500);
    cursor: pointer;
    transition: all .15s;
}
.pp-tab-btn.active {
    color: var(--pp-blue);
    border-bottom-color: var(--pp-blue);
}
.pp-tab-panel {
    display: none;
}
.pp-tab-panel.active {
    display: block;
    animation: pp-fade-in .25s ease;
}

/* Forms */
.pp-form {
    display: flex;
    flex-direction: column;
    gap: 14px;
}
.pp-form-row {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.pp-form-row label {
    font-size: 13px;
    font-weight: 600;
    color: var(--pp-gray-700);
}
.pp-form-row input,
.pp-form-row select {
    padding: 10px 12px;
    border: 1px solid var(--pp-gray-300);
    border-radius: var(--pp-radius-sm);
    font-size: 14px;
    font-family: var(--pp-font);
    transition: border-color .15s, box-shadow .15s;
}
.pp-form-row input:focus,
.pp-form-row select:focus {
    outline: none;
    border-color: var(--pp-blue);
    box-shadow: 0 0 0 3px rgba(24,95,165,0.15);
}

.pp-password-wrap {
    position: relative;
}
.pp-password-wrap input {
    width: 100%;
    padding-right: 44px;
    box-sizing: border-box;
}
.pp-show-password {
    position: absolute;
    right: 10px;
    top: 50%;
    transform: translateY(-50%);
    background: none;
    border: none;
    color: var(--pp-gray-500);
    cursor: pointer;
    font-size: 13px;
}
.pp-show-password:hover { color: var(--pp-gray-900); }

/* Google auth */
.pp-google-btn {
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 10px;
    width: 100%;
    padding: 11px 16px;
    border: 1px solid var(--pp-gray-300);
    border-radius: var(--pp-radius-sm);
    background: var(--pp-white);
    font-size: 14px;
    font-weight: 500;
    color: var(--pp-gray-700);
    cursor: pointer;
    transition: background .15s, box-shadow .15s;
}
.pp-google-btn:hover {
    background: var(--pp-gray-50);
    box-shadow: var(--pp-shadow-sm);
}
.pp-auth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 16px 0;
    font-size: 12px;
    color: var(--pp-gray-500);
}
.pp-auth-divider::before,
.pp-auth-divider::after {
    content: '';
    flex: 1;
    height: 1px;
    background: var(--pp-gray-200);
}

/* Modal overlay + slide-up */
.pp-modal-overlay {
    position: fixed;
    inset: 0;
    background: rgba(0,0,0,0.5);
    backdrop-filter: blur(4px);
    -webkit-backdrop-filter: blur(4px);
    display: flex;
    align-items: center;
    justify-content: center;
    z-index: 10000;
    animation: pp-fade-in .2s ease;
}
.pp-modal {
    background: var(--pp-card-bg);
    border-radius: var(--pp-radius-xl);
    padding: 32px;
    max-width: 440px;
    width: 90%;
    max-height: 90vh;
    overflow-y: auto;
    box-shadow: var(--pp-shadow-lg);
    animation: pp-slide-up .3s ease;
    position: relative;
}
.pp-modal-close {
    position: absolute;
    top: 16px;
    right: 16px;
    background: none;
    border: none;
    font-size: 22px;
    color: var(--pp-gray-500);
    cursor: pointer;
    width: 32px;
    height: 32px;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    transition: background .15s;
}
.pp-modal-close:hover {
    background: var(--pp-gray-100);
    color: var(--pp-gray-900);
}
/* Focus-trap visible ring */
.pp-modal :focus-visible {
    outline: 2px solid var(--pp-blue);
    outline-offset: 2px;
}

/* =========================================================
   TOAST NOTIFICATIONS
   ========================================================= */
.pp-toast {
    position: fixed;
    bottom: 24px;
    left: 50%;
    transform: translateX(-50%);
    background: var(--pp-gray-900);
    color: #fff;
    padding: 12px 24px;
    border-radius: 28px;
    font-size: 14px;
    font-weight: 500;
    box-shadow: var(--pp-shadow-lg);
    z-index: 10001;
    animation: pp-toast-in .3s ease;
    white-space: nowrap;
    max-width: 90vw;
    overflow: hidden;
    text-overflow: ellipsis;
}
.pp-toast-success { background: var(--pp-green-dark); }
.pp-toast-error   { background: var(--pp-fire-dark); }

/* =========================================================
   SIGNUP CTA / FIXED BAR
   ========================================================= */
.pp-signup-cta {
    background: linear-gradient(135deg, var(--pp-navy) 0%, var(--pp-navy-light) 100%);
    color: #fff;
    padding: 32px;
    border-radius: var(--pp-radius-lg);
    text-align: center;
    margin: 24px 0;
}
.pp-signup-cta h2 {
    font-family: var(--pp-font-heading);
    margin: 0 0 8px;
}
.pp-signup-cta p {
    opacity: .8;
    margin: 0 0 20px;
}
.pp-cta-fixed-bar {
    position: fixed;
    bottom: 0;
    left: 0;
    right: 0;
    background: var(--pp-navy);
    color: #fff;
    padding: 14px 20px;
    display: flex;
    align-items: center;
    justify-content: center;
    gap: 16px;
    z-index: 9999;
    box-shadow: 0 -2px 12px rgba(0,0,0,0.2);
    font-size: 14px;
}

/* =========================================================
   SINGLE TOURNAMENT
   ========================================================= */
.pp-single-tournament {
    padding: 24px 0;
}
.pp-single-title {
    font-family: var(--pp-font-heading);
    font-size: 24px;
    font-weight: 700;
    margin: 0 0 16px;
    color: var(--pp-gray-900);
}
.pp-single-details {
    background: var(--pp-card-bg);
    border: 1px solid var(--pp-border);
    border-radius: var(--pp-radius-lg);
    overflow: hidden;
}
.pp-single-row {
    display: flex;
    padding: 12px 18px;
    border-bottom: 1px solid var(--pp-gray-100);
    font-size: 14px;
    gap: 12px;
}
.pp-single-row:last-child {
    border-bottom: none;
}
.pp-single-row dt,
.pp-single-row .label {
    min-width: 140px;
    font-weight: 600;
    color: var(--pp-gray-700);
    flex-shrink: 0;
}
.pp-single-row dd,
.pp-single-row .value {
    color: var(--pp-gray-900);
    margin: 0;
}

/* =========================================================
   MY ACCOUNT
   ========================================================= */
.pp-my-account {
    max-width: 720px;
    padding: 24px 0;
}
.pp-account-identity {
    display: flex;
    align-items: center;
    gap: 16px;
    margin-bottom: 28px;
}
.pp-avatar {
    width: 56px;
    height: 56px;
    border-radius: 50%;
    background: var(--pp-blue-light);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 22px;
    font-weight: 700;
    color: var(--pp-blue);
    flex-shrink: 0;
}
.pp-greeting {
    font-size: 18px;
    font-weight: 600;
    font-family: var(--pp-font-heading);
    color: var(--pp-gray-900);
}
.pp-badge-free,
.pp-badge-plus {
    display: inline-flex;
    align-items: center;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.pp-badge-free {
    background: var(--pp-gray-100);
    color: var(--pp-gray-700);
}
.pp-badge-plus {
    background: linear-gradient(135deg, var(--pp-gold) 0%, var(--pp-gold-light) 100%);
    color: #fff;
}

.pp-account-section {
    background: var(--pp-card-bg);
    border: 1px solid var(--pp-border);
    border-radius: var(--pp-radius-lg);
    padding: 20px;
    margin-bottom: 20px;
}
.pp-section-title {
    font-family: var(--pp-font-heading);
    font-size: 16px;
    font-weight: 700;
    color: var(--pp-gray-900);
    margin: 0 0 14px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.pp-empty-state {
    text-align: center;
    padding: 28px 16px;
    color: var(--pp-gray-500);
    font-size: 14px;
}
.pp-empty-state .pp-empty-icon {
    font-size: 36px;
    display: block;
    margin-bottom: 10px;
    opacity: .5;
}

/* Saved items preview (My Path) */
.pp-section-count {
    color: var(--pp-text-muted, #94a3b8);
    font-size: 13px;
    font-weight: 400;
    margin-left: 4px;
}
.pp-saved-preview-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.pp-saved-preview-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 10px 0;
    border-bottom: 1px solid var(--pp-border, #e8e8e4);
}
.pp-saved-preview-row:last-child {
    border-bottom: none;
}
.pp-saved-preview-info {
    flex: 1;
    min-width: 0;
}
.pp-saved-preview-name {
    color: var(--pp-text-primary, #1a1a2e);
    font-size: 13px;
    font-weight: 500;
    margin: 0 0 2px;
    white-space: nowrap;
    overflow: hidden;
    text-overflow: ellipsis;
}
.pp-saved-preview-meta {
    color: var(--pp-text-muted, #94a3b8);
    font-size: 12px;
    margin: 0;
}
.pp-saved-preview-buyin {
    color: var(--pp-primary, #22c55e);
    font-size: 13px;
    font-weight: 500;
    flex-shrink: 0;
    margin-left: 12px;
}

/* Locked / blurred premium content */
.pp-locked-box {
    position: relative;
    border-radius: var(--pp-radius-lg);
    overflow: hidden;
}
.pp-blur-preview {
    filter: blur(4px);
    pointer-events: none;
    user-select: none;
}
.pp-lock-overlay {
    position: absolute;
    inset: 0;
    display: flex;
    flex-direction: column;
    align-items: center;
    justify-content: center;
    background: rgba(255,255,255,0.75);
    gap: 12px;
    text-align: center;
    padding: 20px;
}
.pp-lock-overlay .lock-icon {
    font-size: 28px;
}
.pp-lock-overlay p {
    font-size: 14px;
    color: var(--pp-gray-700);
    margin: 0;
}

/* Quick actions */
.pp-quick-actions {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(140px, 1fr));
    gap: 10px;
}
.pp-quick-actions button {
    padding: 10px 12px;
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-md);
    background: var(--pp-white);
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all .15s;
    text-align: center;
}
.pp-quick-actions button:hover {
    border-color: var(--pp-blue);
    color: var(--pp-blue);
    background: var(--pp-blue-light);
}

/* Preferences */
.pp-prefs-list {
    display: flex;
    flex-direction: column;
    gap: 0;
}
.pp-pref-row {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 0;
    border-bottom: 1px solid var(--pp-gray-100);
}
.pp-pref-row:last-child { border-bottom: none; }

.pp-pref-section {
    margin-bottom: 20px;
}
.pp-pref-section h4 {
    font-size: 13px;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: var(--pp-gray-500);
    margin: 0 0 8px;
}

/* Toggle switch */
.pp-pref-toggle {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}
.pp-toggle-label { display: none; }
.pp-toggle-switch {
    position: relative;
    width: 44px;
    height: 24px;
    background: var(--pp-gray-300);
    border-radius: 12px;
    transition: background .2s;
    flex-shrink: 0;
}
.pp-toggle-switch::after {
    content: '';
    position: absolute;
    top: 3px;
    left: 3px;
    width: 18px;
    height: 18px;
    background: #fff;
    border-radius: 50%;
    transition: transform .2s;
    box-shadow: 0 1px 3px rgba(0,0,0,0.2);
}
.pp-pref-toggle input:checked + .pp-toggle-switch {
    background: var(--pp-blue);
}
.pp-pref-toggle input:checked + .pp-toggle-switch::after {
    transform: translateX(20px);
}
.pp-pref-toggle input { display: none; }
.pp-toggle-text {
    font-size: 14px;
    color: var(--pp-gray-700);
}

/* Plus block / upgrade */
.pp-plus-block {
    background: linear-gradient(135deg, var(--pp-navy) 0%, #2d2d50 100%);
    color: #fff;
    padding: 24px;
    border-radius: var(--pp-radius-lg);
    text-align: center;
    margin-bottom: 20px;
}
.pp-plus-block h3 {
    font-family: var(--pp-font-heading);
    margin: 0 0 8px;
}
.pp-plus-block p {
    opacity: .8;
    font-size: 14px;
    margin: 0 0 16px;
}
.pp-upgrade-btn {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 10px 24px;
    background: var(--pp-gold);
    color: #fff;
    border: none;
    border-radius: var(--pp-radius-sm);
    font-size: 14px;
    font-weight: 700;
    cursor: pointer;
    transition: background .15s, transform .1s;
}
.pp-upgrade-btn:hover { background: var(--pp-gold-light); }
.pp-upgrade-btn:active { transform: scale(0.97); }

.pp-account-footer {
    text-align: center;
    padding: 20px 0;
    font-size: 12px;
    color: var(--pp-gray-500);
}
.pp-account-footer a {
    color: var(--pp-blue);
    text-decoration: none;
}
.pp-account-footer a:hover {
    text-decoration: underline;
}

/* Coaches grid */
.pp-coaches-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
    gap: 16px;
}
.pp-coach-card {
    background: var(--pp-card-bg);
    border: 1px solid var(--pp-border);
    border-radius: var(--pp-radius-lg);
    padding: 20px;
    text-align: center;
    transition: box-shadow .2s, transform .2s;
}
.pp-coach-card:hover {
    box-shadow: var(--pp-shadow-md);
    transform: translateY(-1px);
}
.pp-coach-card img {
    width: 64px;
    height: 64px;
    border-radius: 50%;
    object-fit: cover;
    margin-bottom: 10px;
}
.pp-coach-card h4 {
    font-family: var(--pp-font-heading);
    font-size: 15px;
    font-weight: 600;
    margin: 0 0 4px;
}
.pp-coach-card p {
    font-size: 13px;
    color: var(--pp-gray-500);
    margin: 0;
}
.pp-coach-label { font-size: 14px; font-weight: 600; color: var(--pp-gray-900); margin-bottom: 4px; }
.pp-coach-desc { font-size: 12px; color: var(--pp-gray-500); line-height: 1.4; }
.pp-coach-shortcut { font-size: 13px; color: var(--pp-blue); text-decoration: none; font-weight: 600; }
.pp-coach-shortcut:hover { text-decoration: underline; }

/* =========================================================
   UPGRADE PAGE
   ========================================================= */
.pp-upgrade-wrap {
    max-width: 680px;
    margin: 0 auto;
    padding: 32px 0;
    text-align: center;
}
.pp-upgrade-wrap h1 {
    font-family: var(--pp-font-heading);
    font-size: 28px;
}
.pp-upgrade-wrap .pp-plan-card {
    background: var(--pp-card-bg);
    border: 2px solid var(--pp-gold);
    border-radius: var(--pp-radius-xl);
    padding: 32px;
    text-align: left;
    margin-bottom: 20px;
}
.pp-upgrade-wrap .pp-plan-card ul {
    list-style: none;
    padding: 0;
    margin: 16px 0;
}
.pp-upgrade-wrap .pp-plan-card li {
    padding: 6px 0;
    font-size: 14px;
    display: flex;
    align-items: center;
    gap: 8px;
}
.pp-upgrade-wrap .pp-plan-card li::before {
    content: '\2713';
    color: var(--pp-green);
    font-weight: 700;
}

/* =========================================================
   TOUR CALENDAR
   ========================================================= */
.pp-tour-calendar-wrap {
    margin-bottom: 24px;
}
.pp-tour-calendar-wrap .calendar-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 12px;
}
.pp-tour-calendar-wrap .calendar-grid {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
    gap: 4px;
}
.pp-tour-calendar-wrap .calendar-day {
    aspect-ratio: 1;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 13px;
    border-radius: var(--pp-radius-sm);
    cursor: pointer;
    transition: background .15s;
}
.pp-tour-calendar-wrap .calendar-day:hover {
    background: var(--pp-blue-light);
}
.pp-tour-calendar-wrap .calendar-day.active {
    background: var(--pp-blue);
    color: #fff;
    font-weight: 600;
}
.pp-tour-calendar-wrap .calendar-day.has-events {
    position: relative;
}
.pp-tour-calendar-wrap .calendar-day.has-events::after {
    content: '';
    position: absolute;
    bottom: 4px;
    width: 5px;
    height: 5px;
    background: var(--pp-gold);
    border-radius: 50%;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 768px) {
    /* .pp-mobile-filter-toggle replaced by .pp-search-controls */
    .pp-filters {
        border-radius: var(--pp-radius-md);
        padding: 16px;
    }
    .pp-filters.pp-filters-collapsed .pp-filter-grid,
    .pp-filters.pp-filters-collapsed .pp-filter-actions,
    .pp-filters.pp-filters-collapsed .pp-active-filters {
        display: none;
    }
    .pp-filter-grid {
        grid-template-columns: 1fr;
    }
    .pp-card-header {
        flex-direction: column;
        gap: 8px;
    }
    .pp-card-meta {
        flex-direction: column;
        gap: 4px;
    }
    /* .pp-card-actions mobile rules moved to Zip 2 mobile card block */
    .pp-single-row {
        flex-direction: column;
        gap: 2px;
    }
    .pp-single-row dt,
    .pp-single-row .label {
        min-width: 0;
    }
    .pp-account-identity {
        flex-direction: column;
        text-align: center;
    }
    .pp-quick-actions {
        grid-template-columns: 1fr 1fr;
    }
    .pp-coaches-grid {
        grid-template-columns: 1fr;
    }
    .pp-modal {
        width: 95%;
        padding: 24px 20px;
        border-radius: var(--pp-radius-lg);
    }
    .pp-signup-cta {
        padding: 24px 18px;
    }
    .pp-cta-fixed-bar {
        flex-direction: column;
        gap: 10px;
        text-align: center;
        padding: 12px 16px;
    }
    .pp-pagination button,
    .pp-pagination span {
        min-width: 32px;
        height: 32px;
        font-size: 13px;
    }
    .pp-toast {
        left: 16px;
        right: 16px;
        transform: none;
        text-align: center;
        border-radius: var(--pp-radius-lg);
    }
    /* Fix 6 — preset buttons wrap instead of scroll on mobile */
    .pp-search-presets {
        flex-wrap: wrap;
        justify-content: center;
        gap: 8px;
        padding: 0 12px;
        overflow-x: unset;
    }
    .pp-preset-btn {
        min-width: unset;
        flex: 0 1 auto;
        white-space: nowrap;
    }
    .pp-tour-calendar-wrap .calendar-day {
        font-size: 11px;
    }
}

/* =========================================================
   DARK MODE — REMOVED in v4.2.3-r3
   The @media (prefers-color-scheme: dark) { :root { } } block
   and all component overrides inside it have been deleted.
   Dark theme is now exclusively opt-in via .pp-theme-dark
   (defined at top of file, line ~83). Public pages stay light
   regardless of OS dark-mode setting.
   ========================================================= */

/* =========================================================
   TOURNAMENT COACH
   ========================================================= */
.pp-tc-wrap {
    max-width: 780px;
    margin: 0 auto;
    padding: 16px;
    font-family: var(--pp-font);
}

/* =========================================================
   Locked state — Tournament Coach (free users)
   Uses .pp-theme-dark wrapper so dark tokens resolve.
   ========================================================= */
.pp-tc-locked-wrap {
    background: var(--pp-bg);
    min-height: 100vh;
    padding: 120px 20px 60px;
    font-family: var(--pp-font);
}
.pp-tc-locked-inner {
    max-width: 480px;
    margin: 0 auto;
    text-align: center;
}
.pp-tc-locked-icon {
    margin-bottom: 24px;
    line-height: 1;
}
.pp-tc-locked-title {
    font-size: 26px;
    font-weight: 700;
    color: var(--pp-text-primary);
    margin: 0 0 8px;
}
.pp-tc-locked-subtitle {
    font-size: 15px;
    color: var(--pp-text-secondary);
    margin: 0 0 16px;
    font-weight: 400;
}
.pp-tc-locked-urgency {
    font-size: 14px;
    color: var(--pp-text-muted);
    font-style: italic;
    margin: 0 0 32px;
}

/* Feature card */
.pp-tc-locked-features {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: var(--pp-radius-lg);
    padding: 24px;
    margin: 0 0 32px;
    text-align: left;
}
.pp-tc-locked-feature {
    display: flex;
    align-items: flex-start;
    gap: 14px;
    padding: 10px 0;
}
.pp-tc-locked-feature + .pp-tc-locked-feature {
    border-top: 1px solid var(--pp-border);
}
.pp-tc-locked-feature-icon {
    flex-shrink: 0;
    width: 28px;
    height: 28px;
    display: flex;
    align-items: center;
    justify-content: center;
    background: var(--pp-accent-soft);
    border: 1px solid rgba(34,197,94,0.25);
    border-radius: 6px;
    color: var(--pp-primary);
}
.pp-tc-locked-feature-text {
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.pp-tc-locked-feature-text strong {
    font-size: 14px;
    font-weight: 600;
    color: var(--pp-text-primary);
}
.pp-tc-locked-feature-text span {
    font-size: 13px;
    color: var(--pp-text-muted);
    line-height: 1.45;
}

/* CTA button */
.pp-tc-locked-cta {
    display: block;
    width: 100%;
    padding: 16px 24px;
    background: var(--pp-primary);
    color: #fff !important;
    border-radius: var(--pp-radius-md);
    font-size: 16px;
    font-weight: 700;
    text-decoration: none;
    text-align: center;
    min-height: 44px;
    transition: background 0.2s;
    box-sizing: border-box;
}
.pp-tc-locked-cta:hover {
    background: var(--pp-primary-hover);
    color: #fff !important;
}

/* Trust line */
.pp-tc-locked-trust {
    font-size: 12px;
    color: var(--pp-text-muted);
    margin: 14px 0 0;
}

/* Mobile adjustments */
@media (max-width: 768px) {
    .pp-tc-locked-wrap {
        padding: 40px 16px;
    }
    .pp-tc-locked-title {
        font-size: 22px;
    }
    .pp-tc-locked-features {
        padding: 18px 16px;
    }
}

/* Header with profile tags */
.pp-tc-header {
    margin-bottom: 20px;
}
.pp-tc-title {
    font-size: 22px;
    font-weight: 700;
    color: var(--pp-gray-900);
    margin: 0 0 12px;
}
.pp-tc-profile-row {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
    margin-bottom: 8px;
}
.pp-tc-profile-tag {
    display: inline-flex;
    align-items: center;
    font-size: 13px;
    font-weight: 500;
    color: var(--pp-gray-700);
    background: var(--pp-gray-50);
    border: 1px solid var(--pp-gray-200);
    border-radius: 20px;
    padding: 4px 12px;
    gap: 4px;
}
.pp-tc-edit-profile {
    font-size: 13px;
    color: var(--pp-blue) !important;
    text-decoration: none !important;
    font-weight: 600;
    margin-left: 4px;
    white-space: nowrap;     /* v4.24.4 — F: prevent 3-line back-link wrap */
    flex-shrink: 0;          /* v4.24.4 — F: keep full width inside flex profile-row */
}
.pp-tc-edit-profile:hover {
    text-decoration: underline !important;
}
.pp-tc-fallback-notice {
    background: var(--pp-amber-bg);
    border: 1px solid var(--pp-amber-border);
    border-radius: var(--pp-radius-md);
    padding: 10px 14px;
    font-size: 13px;
    color: var(--pp-amber-text);
    line-height: 1.5;
    margin-top: 8px;
}
.pp-tc-fallback-notice a {
    color: var(--pp-amber-text);
    font-weight: 600;
}

/* Refine panel */
.pp-tc-refine {
    margin-bottom: 20px;
}
.pp-tc-refine-toggle {
    display: inline-flex;
    align-items: center;
    padding: 8px 16px;
    background: var(--pp-white);
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-md);
    font-size: 13px;
    font-weight: 600;
    color: var(--pp-gray-700);
    cursor: pointer;
    transition: all 0.2s;
    min-height: 36px;
    font-family: var(--pp-font);
}
.pp-tc-refine-toggle:hover {
    background: var(--pp-gray-50);
    border-color: var(--pp-gray-300);
}
.pp-tc-refine-panel {
    background: var(--pp-white);
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-lg);
    padding: 20px;
    margin-top: 12px;
    box-shadow: var(--pp-shadow-sm);
}
.pp-tc-refine-panel.pp-tc-open {
    display: block;
}
.pp-tc-refine-row {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(160px, 1fr));
    gap: 14px;
    margin-bottom: 16px;
}
.pp-tc-refine-field label {
    display: block;
    font-size: 12px;
    font-weight: 600;
    color: var(--pp-gray-700);
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.3px;
}
.pp-tc-refine-field select,
.pp-tc-refine-field input {
    width: 100%;
    padding: 9px 10px;
    border: 1px solid var(--pp-gray-300);
    border-radius: var(--pp-radius-sm);
    font-size: 14px;
    font-family: var(--pp-font);
    min-height: 40px;
    box-sizing: border-box;
    color: #111 !important;
    background-color: #fff !important;
}
.pp-tc-refine-field select option {
    color: #111;
}
.pp-tc-refine-field select:focus,
.pp-tc-refine-field input:focus {
    outline: none;
    border-color: var(--pp-blue);
    box-shadow: 0 0 0 3px rgba(24,95,165,0.1);
}
.pp-tc-refine-submit {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 10px 20px;
    background: var(--pp-blue);
    color: var(--pp-white);
    border: none;
    border-radius: var(--pp-radius-md);
    font-size: 14px;
    font-weight: 600;
    cursor: pointer;
    min-height: 40px;
    font-family: var(--pp-font);
    transition: background 0.2s;
}
.pp-tc-refine-submit:hover {
    background: #0C447C;
}
.pp-tc-refine-reset {
    display: inline-flex;
    align-items: center;
    margin-left: 12px;
    font-size: 13px;
    color: var(--pp-gray-500) !important;
    text-decoration: none !important;
}
.pp-tc-refine-reset:hover {
    color: var(--pp-gray-700) !important;
}

/* Results */
.pp-tc-results {
    display: flex;
    flex-direction: column;
    gap: 12px;
}
.pp-tc-why-label {
    font-size: 12px;
    color: var(--pp-text-secondary);
    padding: 10px 18px 0;
}
.pp-tc-why-pill {
    display: inline-flex;
    align-items: center;
    padding: 2px 10px;
    background: var(--pp-accent-soft);
    color: var(--pp-primary);
    border-radius: 20px;
    font-size: 11px;
    font-weight: 600;
}

/* Empty state */
.pp-tc-empty {
    text-align: center;
    padding: 48px 24px;
    background: var(--pp-white);
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-lg);
}
.pp-tc-empty-icon {
    font-size: 48px;
    margin-bottom: 12px;
    line-height: 1;
}
.pp-tc-empty-title {
    font-size: 18px;
    font-weight: 600;
    color: var(--pp-gray-900);
    margin-bottom: 8px;
}
.pp-tc-empty-desc {
    font-size: 14px;
    color: var(--pp-gray-500);
    line-height: 1.6;
    margin-bottom: 16px;
    max-width: 400px;
    margin-left: auto;
    margin-right: auto;
}
.pp-tc-empty-link {
    display: inline-block;
    color: var(--pp-blue) !important;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none !important;
}
.pp-tc-empty-link:hover {
    text-decoration: underline !important;
}

/* Browse all footer */
.pp-tc-browse-all {
    text-align: center;
    padding: 20px 0;
    border-top: 1px solid var(--pp-gray-200);
    margin-top: 20px;
}
.pp-tc-browse-all a {
    color: var(--pp-blue) !important;
    font-weight: 600;
    font-size: 14px;
    text-decoration: none !important;
}
.pp-tc-browse-all a:hover {
    text-decoration: underline !important;
}

/* Tournament Coach responsive */
@media (max-width: 768px) {
    .pp-tc-wrap {
        padding: 12px;
    }
    .pp-tc-refine-row {
        grid-template-columns: 1fr 1fr;
    }
}
@media (max-width: 480px) {
    .pp-tc-refine-row {
        grid-template-columns: 1fr;
    }
}

/* =========================================================
   TOURNAMENT COACH — Calendar Grid, List, & Navigation
   (tour calendar UI rendered by JS from class-pp-tour-calendar)
   ========================================================= */

/* Calendar navigation */
.pp-tc-nav {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-bottom: 16px;
    gap: 12px;
}
.pp-tc-nav-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    padding: 8px 16px;
    background: var(--pp-white);
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-md);
    font-size: 14px;
    font-weight: 600;
    color: var(--pp-gray-700);
    cursor: pointer;
    min-height: 36px;
    font-family: var(--pp-font);
    transition: background 0.2s, border-color 0.2s;
}
.pp-tc-nav-btn:hover {
    background: var(--pp-gray-50);
    border-color: var(--pp-gray-300);
}
#pp-tc-prev { /* alias for nav btn */ }
#pp-tc-next { /* alias for nav btn */ }
.pp-tc-month-title {
    font-size: 20px;
    font-weight: 700;
    color: var(--pp-gray-900);
    margin: 0;
    text-align: center;
    flex: 1;
}

/* Calendar grid wrapper and loading */
#pp-tc-grid-wrap {
    margin-bottom: 20px;
}
#pp-tc-loading,
.pp-tc-loading {
    text-align: center;
    padding: 40px 20px;
    color: var(--pp-gray-500);
}

/* Calendar grid — 7 columns for days */
#pp-tc-grid,
.pp-tc-grid {
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-lg);
    overflow: hidden;
    background: var(--pp-white);
}
.pp-tc-day-name {
    padding: 8px 4px;
    text-align: center;
    font-size: 12px;
    font-weight: 600;
    color: var(--pp-gray-500);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    background: var(--pp-gray-50);
    border-bottom: 1px solid var(--pp-gray-200);
}
.pp-tc-cells {
    display: grid;
    grid-template-columns: repeat(7, 1fr);
}
.pp-tc-cell {
    min-height: 80px;
    padding: 6px;
    border-right: 1px solid var(--pp-gray-100);
    border-bottom: 1px solid var(--pp-gray-100);
    background: var(--pp-white);
    position: relative;
    transition: background 0.15s;
}
.pp-tc-cell:nth-child(7n) {
    border-right: none;
}
.pp-tc-cell:hover {
    background: var(--pp-gray-50);
}
.pp-tc-empty-cell {
    background: var(--pp-gray-50);
    opacity: 0.5;
}
.pp-tc-today {
    background: var(--pp-blue-light) !important;
    border-color: var(--pp-blue);
}
.pp-tc-has-events {
    cursor: pointer;
}
.pp-tc-date-num {
    font-size: 13px;
    font-weight: 600;
    color: var(--pp-gray-700);
    margin-bottom: 4px;
}
.pp-tc-today .pp-tc-date-num {
    color: var(--pp-blue);
    font-weight: 700;
}

/* Calendar event pills */
.pp-tc-cal-event {
    display: block;
    font-size: 11px;
    line-height: 1.3;
    padding: 2px 4px;
    margin-bottom: 2px;
    border-radius: 3px;
    background: var(--pp-blue-light);
    color: var(--pp-blue);
    cursor: pointer;
    overflow: hidden;
    text-overflow: ellipsis;
    white-space: nowrap;
    transition: background 0.15s;
}
.pp-tc-cal-event:hover {
    background: #cce0f5;
}
.pp-tc-more-events {
    font-size: 10px;
    color: var(--pp-gray-500);
    padding: 1px 4px;
    font-weight: 600;
}

/* Monthly tour list below calendar */
#pp-tc-list-wrap,
.pp-tc-list-wrap {
    margin-top: 20px;
}
.pp-tc-list-title {
    font-size: 18px;
    font-weight: 700;
    color: var(--pp-gray-900);
    margin: 0 0 12px;
}
#pp-tc-list,
.pp-tc-list {
    display: flex;
    flex-direction: column;
    gap: 10px;
}
.pp-tc-tour-item {
    background: var(--pp-white);
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-md);
    overflow: hidden;
    cursor: pointer;
    transition: box-shadow 0.2s, transform 0.1s;
}
.pp-tc-tour-item:hover {
    box-shadow: var(--pp-shadow-md);
    transform: translateY(-1px);
}
.pp-tc-tour-item-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 12px 16px;
    background: var(--pp-navy);
    color: var(--pp-white);
    gap: 8px;
    flex-wrap: wrap;
}
.pp-tc-tour-item-name {
    font-size: 15px;
    font-weight: 700;
    color: #f1f5f9 !important;
}
.pp-tc-tour-item-dates {
    font-size: 13px;
    color: rgba(255, 255, 255, 0.7);
    white-space: nowrap;
}
.pp-tc-tour-item-body {
    padding: 12px 16px;
    font-size: 14px;
    color: var(--pp-gray-700);
    line-height: 1.6;
}

/* ==========================================================
   TOUR CARD ACTIONS (r4)
   ========================================================== */
.pp-tc-tour-actions {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 16px;
    border-top: 1px solid var(--pp-gray-100);
    gap: 8px;
    flex-wrap: wrap;
}
.pp-tc-tour-actions-left {
    display: flex;
    align-items: center;
    gap: 8px;
    flex-wrap: wrap;
}
.pp-tc-tour-actions-right {
    display: flex;
    align-items: center;
    margin-left: auto;
}

/* Tour save button */
.pp-tour-save-btn {
    padding: 6px 12px !important;
    border-radius: var(--pp-radius-sm) !important;
    border: 1px solid var(--pp-gray-300) !important;
    background: var(--pp-white);
    color: var(--pp-gray-700) !important;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
    transition: all .2s;
    display: inline-flex !important;
    align-items: center;
    gap: 4px;
}
.pp-tour-save-btn:hover {
    border-color: var(--pp-blue) !important;
    color: var(--pp-blue) !important;
}
.pp-tour-save-btn.pp-tour-saved {
    background: var(--pp-blue-light);
    border-color: var(--pp-blue) !important;
    color: var(--pp-blue) !important;
    font-weight: 600;
}

/* Tour share icons — inherit from existing .pp-share-icons */
.pp-tour-share-icons {
    display: inline-flex;
    gap: 4px;
    align-items: center;
}

/* Tour report button */
.pp-tour-report-btn {
    display: inline-flex !important;
    align-items: center;
    gap: 5px;
    padding: 4px 10px;
    border-radius: var(--pp-radius-sm);
    border: 1px solid var(--pp-gray-200);
    background: transparent;
    color: var(--pp-gray-500);
    font-size: 12px;
    cursor: pointer;
    white-space: nowrap;
    transition: color .15s, background .15s, border-color .15s;
    font-weight: 500;
}
.pp-tour-report-btn:hover {
    color: #b91c1c !important;
    background: #fef2f2;
    border-color: #fca5a5 !important;
}

/* Mobile responsive — tour actions */
@media (max-width: 768px) {
    .pp-tc-tour-actions {
        padding: 8px 14px;
        gap: 6px;
    }
    .pp-tour-save-btn {
        padding: 4px 10px !important;
        font-size: 12px !important;
        min-height: 30px;
    }
    .pp-tour-report-btn {
        padding: 3px 8px !important;
        font-size: 11px !important;
        min-height: 28px;
    }
}

/* Refine form (class used on the Tournament Coach form element) */
.pp-tc-refine-form {
    /* inherits from pp-tc-refine-panel contents */
}
/* Refine button ID (toggle) — styled via .pp-tc-refine-toggle above */
#pp-tc-refine-btn {
    /* inherits from .pp-tc-refine-toggle */
}

/* Filter element IDs used in tour calendar */
#pp-tc-region,
#pp-tc-state,
#pp-tc-buyin-min,
#pp-tc-buyin-max {
    /* styled via .pp-filter class in filter section */
}
#pp-tc-apply {
    /* styled via .pp-btn.pp-btn-primary */
}
#pp-tc-clear {
    /* styled via .pp-btn.pp-btn-secondary */
}
#pp-tc-empty {
    text-align: center;
    padding: 32px 20px;
    color: var(--pp-gray-500);
    font-size: 14px;
}

/* ==========================================================
   TOUR SEARCH CONTROLS (r3)
   ========================================================== */
.pp-tc-search-controls {
    display: flex;
    flex-direction: column;
    gap: 10px;
    margin-bottom: 16px;
}

/* Search input wrapper */
.pp-tc-search-input-wrap {
    position: relative;
    width: 100%;
}
.pp-tc-search-icon {
    position: absolute;
    left: 12px;
    top: 50%;
    transform: translateY(-50%);
    color: var(--pp-gray-400);
    pointer-events: none;
    display: flex;
    align-items: center;
}
.pp-tc-search-input {
    width: 100%;
    padding: 10px 12px 10px 38px;
    border: 1px solid var(--pp-gray-200);
    border-radius: var(--pp-radius-md);
    background: var(--pp-white);
    color: var(--pp-gray-900);
    font-size: 14px;
    font-family: var(--pp-font);
    box-sizing: border-box;
    min-height: 44px;
    transition: border-color 0.2s, box-shadow 0.2s;
}
.pp-tc-search-input:focus {
    outline: none;
    border-color: var(--pp-primary);
    box-shadow: 0 0 0 3px rgba(34, 139, 34, 0.15);
}
.pp-tc-search-input::placeholder {
    color: var(--pp-gray-400);
}

/* Button row */
.pp-tc-btn-row {
    display: flex;
    gap: 10px;
}

/* Filter toggle button — primary green, full width */
.pp-tc-filter-toggle-btn {
    flex: 1;
    min-height: 44px;
    padding: 0 16px;
    font-size: 14px;
    font-weight: 600;
    gap: 8px;
    border-radius: var(--pp-radius-md);
    background: var(--pp-primary);
    color: #fff;
    border: none;
    cursor: pointer;
    transition: background 0.15s, transform 0.1s;
}
.pp-tc-filter-toggle-btn:hover {
    background: var(--pp-primary-hover);
}
.pp-tc-filter-toggle-btn:active {
    background: var(--pp-primary-active);
    transform: scale(0.97);
}
.pp-tc-filter-toggle-btn svg {
    flex-shrink: 0;
}

/* Sort button — secondary style */
.pp-tc-sort-btn {
    min-height: 44px;
    padding: 0 16px;
    font-size: 14px;
    font-weight: 600;
    gap: 8px;
    border-radius: var(--pp-radius-md);
    background: var(--pp-white);
    color: var(--pp-gray-700);
    border: 1px solid var(--pp-gray-200);
    cursor: pointer;
    white-space: nowrap;
    transition: background 0.15s, border-color 0.15s, transform 0.1s;
}
.pp-tc-sort-btn:hover {
    background: var(--pp-gray-50);
    border-color: var(--pp-gray-300);
}
.pp-tc-sort-btn:active {
    transform: scale(0.97);
}
.pp-tc-sort-btn svg {
    flex-shrink: 0;
}

/* Desktop: buttons side by side (default flex row) */
/* Mobile: stack vertically */
@media (max-width: 768px) {
    .pp-tc-btn-row {
        flex-direction: column;
    }
    .pp-tc-sort-btn {
        width: 100%;
        justify-content: center;
    }
}

/* Tour calendar responsive */
@media (max-width: 768px) {
    .pp-tc-nav {
        gap: 8px;
    }
    .pp-tc-month-title {
        font-size: 16px;
    }
    .pp-tc-cell {
        min-height: 60px;
        padding: 4px;
    }
    .pp-tc-date-num {
        font-size: 11px;
    }
    .pp-tc-cal-event {
        font-size: 10px;
    }
    .pp-tc-tour-item-header {
        flex-direction: column;
        align-items: flex-start;
    }
}
@media (max-width: 480px) {
    .pp-tc-cell {
        min-height: 48px;
        padding: 2px;
    }
    .pp-tc-cal-event {
        font-size: 9px;
        padding: 1px 2px;
    }
}

/* (All pp-cc-* rules consolidated in v4.2.1 polished section below) */

/* ==========================================================
   v4.2.1 — COMMAND CENTER POLISHED STYLES (deduplicated)
   ========================================================== */

/* Command center layout */
.pp-cc-wrap { max-width: 860px; margin: 0 auto; padding-top: 120px; padding-right: 0; padding-bottom: 0; padding-left: 0; }

/* Header clearance for fixed Elementor header */
.pp-cc-wrap,
.pp-search-wrap,
.pp-my-tournaments,
.pp-tc-wrap,
.pp-onboarding-wrap,
.pp-my-account-wrap,
.pp-upgrade-wrap,
.pp-login-wrap,
.pp-register-wrap { padding-top: 120px; }

/* Header */
.pp-cc-header { margin-bottom: 1.5rem; }
.pp-cc-title-row {
    display: flex; align-items: flex-start; justify-content: space-between;
    flex-wrap: wrap; gap: 12px; margin-bottom: 10px;
}
.pp-cc-title-block { flex: 1; }
.pp-cc-title { font-size: 1.4rem; font-weight: 700; color: #1a1a1a; margin: 0; line-height: 1.2; }
.pp-cc-subtitle { font-size: 0.82rem; color: #888; margin: 4px 0 0; }
.pp-cc-profile-row { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; }
.pp-cc-profile-tag {
    display: inline-block; font-size: 0.78rem;
    padding: 4px 12px; background: #f4f4f0;
    border: 1px solid #e5e5e0; border-radius: 20px;
    color: #444; line-height: 1.3;
}
.pp-cc-edit-profile {
    font-size: 0.8rem; color: #888; text-decoration: none;
    margin-left: 4px; transition: color 0.15s;
}
.pp-cc-edit-profile:hover { color: #1a6b47; text-decoration: underline; }

/* Indicators */
.pp-cc-indicators {
    display: flex; gap: 8px; flex-wrap: wrap;
    align-items: center; flex-shrink: 0;
}
.pp-cc-indicator {
    display: flex; align-items: center; gap: 6px;
    padding: 5px 12px; background: #fff;
    border: 1px solid #e5e5e0; border-radius: 20px;
    font-size: 0.78rem;
}
.pp-cc-ind-disabled { opacity: 0.5; cursor: default; }
.pp-cc-ind-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.pp-cc-ind-amber { background: #EF9F27; }
.pp-cc-ind-red { background: #E24B4A; }
.pp-cc-ind-label { font-weight: 600; color: #333; }
.pp-cc-ind-badge {
    font-size: 0.68rem; background: transparent; color: #aaa;
    padding: 1px 7px; border-radius: 10px;
    border: 1px dashed #ccc; font-style: italic;
}

/* Generic section card */
.pp-cc-section {
    background: #fff; border: 1px solid #e8e8e4; border-radius: 10px;
    padding: 16px 18px; margin-bottom: 12px;
}
.pp-cc-section-label {
    font-size: 0.72rem; font-weight: 700; color: #999;
    letter-spacing: 0.06em; text-transform: uppercase; margin-bottom: 10px;
}

/* Notifications */
.pp-cc-notif-row {
    display: flex; align-items: flex-start; gap: 12px;
    padding: 10px 0; border-bottom: 1px solid #f0f0ec;
}
.pp-cc-notif-row:last-child { border-bottom: none; padding-bottom: 0; }
.pp-cc-notif-icon {
    width: 32px; height: 32px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; flex-shrink: 0;
}
.pp-cc-icon-heat { background: #FAEEDA; color: #854F0B; }
.pp-cc-icon-soon { background: #E1F5EE; color: #0F6E56; }
.pp-cc-notif-msg { font-size: 0.88rem; color: #222; line-height: 1.45; }
.pp-cc-notif-detail { font-size: 0.78rem; color: #888; margin-top: 2px; }
.pp-cc-notif-footer { padding: 12px 0 2px; border-top: 1px solid #f4f4f0; margin-top: 4px; }
.pp-cc-notif-footer a { font-size: 0.78rem; color: #999; text-decoration: none; }
.pp-cc-notif-footer a:hover { color: #1a6b47; text-decoration: underline; }
.pp-cc-notif-empty {
    padding: 24px 0; font-size: 0.88rem; color: #aaa;
    text-align: center;
}

/* Refine panel */
.pp-cc-refine { margin-bottom: 1rem; }
.pp-cc-refine-toggle {
    background: none; border: 1px solid #ddd; border-radius: 6px;
    padding: 7px 14px; font-size: 0.82rem; color: #555; cursor: pointer;
    transition: background 0.15s;
}
.pp-cc-refine-toggle:hover { background: #f8f8f5; }
.pp-cc-refine-panel {
    margin-top: 10px; background: #fafaf8;
    border: 1px solid #e8e8e4; border-radius: 8px;
    padding: 14px 16px;
}
.pp-cc-refine-row { display: flex; flex-wrap: wrap; gap: 10px; margin-bottom: 12px; }
.pp-cc-refine-field { display: flex; flex-direction: column; gap: 4px; flex: 1; min-width: 130px; }
.pp-cc-refine-field label { font-size: 0.75rem; color: #666; font-weight: 600; }
.pp-cc-refine-field select,
.pp-cc-refine-field input[type="date"] {
    padding: 6px 8px; border: 1px solid #ddd; border-radius: 5px;
    font-size: 0.82rem; background: #fff; color: #333;
}
.pp-cc-refine-submit {
    padding: 7px 16px; background: #1a6b47; color: #fff;
    border: none; border-radius: 6px; font-size: 0.82rem;
    cursor: pointer; margin-right: 10px; transition: background 0.15s;
}
.pp-cc-refine-submit:hover { background: #155a3c; }
.pp-cc-refine-reset { font-size: 0.8rem; color: #888; text-decoration: none; }
.pp-cc-refine-reset:hover { color: #555; }

/* Profile row spacing */
.pp-cc-header .pp-cc-profile-row { margin-top: 8px; }
.pp-cc-profile-tag { display: inline-block; }

/* Calendar section — override generic section padding */
.pp-cc-cal-section { padding: 0; overflow: hidden; }
.pp-cc-cal-header {
    display: flex; align-items: center; gap: 10px;
    padding: 14px 16px; border-bottom: 1px solid #f0f0ec;
}
.pp-cc-cal-month-label { font-size: 1.05rem; font-weight: 700; color: #1a1a1a; flex: 1; }
.pp-cc-cal-nav {
    background: #fff; border: 1px solid #e0e0dc; border-radius: 8px;
    width: 32px; height: 32px;
    display: flex; align-items: center; justify-content: center;
    cursor: pointer; font-size: 14px; color: #555;
    flex-shrink: 0; line-height: 1;
    transition: background 0.15s, border-color 0.15s;
}
.pp-cc-cal-nav:hover { background: #f4f4f0; border-color: #ccc; }
.pp-cc-cal-count { font-size: 0.78rem; color: #888; white-space: nowrap; }
.pp-cc-cal-dow-row {
    display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
    border-bottom: 1px solid #f0f0ec;
}
.pp-cc-cal-dow-row > div {
    text-align: center; padding: 8px 2px;
    font-size: 0.72rem; color: #999; font-weight: 700;
    letter-spacing: 0.03em; text-transform: uppercase;
}
.pp-cc-cal-body {
    display: grid; grid-template-columns: repeat(7, minmax(0, 1fr));
    border-top: 1px solid #f0f0ec;
}
.pp-cc-cal-day {
    min-height: 64px; padding: 5px;
    border-right: 1px solid #f4f4f0; border-bottom: 1px solid #f4f4f0;
    overflow: hidden; position: relative;
}
.pp-cc-cal-day:nth-child(7n) { border-right: none; }
.pp-cc-cal-last-col { border-right: none; }
.pp-cc-cal-empty { background: #fafaf8; }
.pp-cc-cal-daynum {
    font-size: 0.72rem; color: #aaa; font-weight: 600;
    margin-bottom: 3px;
    width: 22px; height: 22px;
    display: flex; align-items: center; justify-content: center;
    border-radius: 50%;
}
.pp-cc-daynum-today {
    background: #1D9E75; color: #fff; font-weight: 700;
}
.pp-cc-cal-event {
    font-size: 0.63rem; padding: 2px 5px; border-radius: 4px;
    background: #E1F5EE; color: #0F6E56; font-weight: 600;
    margin-bottom: 2px; white-space: nowrap;
    overflow: hidden; text-overflow: ellipsis; cursor: default;
    line-height: 1.3;
}
.pp-cc-cal-loading {
    grid-column: span 7; text-align: center;
    padding: 32px; font-size: 0.85rem; color: #bbb;
}

/* Quick link cards */
.pp-cc-links-row {
    display: grid; grid-template-columns: 1fr 1fr;
    gap: 10px; margin-bottom: 10px;
}
.pp-cc-link-card {
    display: flex; align-items: center; justify-content: space-between;
    padding: 16px 18px; background: #fff;
    border: 1px solid #e8e8e4; border-radius: 10px;
    text-decoration: none;
    transition: background 0.15s, border-color 0.15s, box-shadow 0.15s;
}
.pp-cc-link-card:hover {
    background: #fafaf8; border-color: #d0d0cc;
    box-shadow: 0 2px 8px rgba(0,0,0,0.04);
}
.pp-cc-link-title { font-size: 0.9rem; font-weight: 600; color: #222; }
.pp-cc-link-sub { font-size: 0.78rem; color: #888; margin-top: 3px; }
.pp-cc-link-arrow { font-size: 1.1rem; color: #bbb; flex-shrink: 0; margin-left: 10px; transition: transform 0.15s; }
.pp-cc-link-card:hover .pp-cc-link-arrow { transform: translateX(2px); }
.pp-cc-link-badge {
    display: inline-flex; align-items: center; justify-content: center;
    min-width: 20px; height: 20px; border-radius: 10px;
    font-size: 0.7rem; font-weight: 700; padding: 0 5px;
    background: #E1F5EE; color: #0F6E56; margin-left: 6px;
}

/* Coach status section */
.pp-coach-status-section { margin-bottom: 12px; }
.pp-coach-status-label {
    font-size: 0.72rem; font-weight: 700; color: #999;
    letter-spacing: 0.06em; text-transform: uppercase;
    margin-bottom: 10px; padding: 0 2px;
}
/* v4.24.4 — E: 5-card grid as 3+2 centered (was 4+1 orphan).
   6-column basis; each card spans 2 cols. Cards 4 + 5 explicitly
   placed to center on row 2 (cols 2-3 and 4-5; cols 1 and 6 empty). */
.pp-coach-status-grid {
    display: grid; grid-template-columns: repeat(6, 1fr); gap: 10px;
}
.pp-coach-status-grid > .pp-coach-card {
    grid-column: span 2;
}
.pp-coach-status-grid > .pp-coach-card:nth-child(4) {
    grid-column: 2 / span 2;
}
.pp-coach-status-grid > .pp-coach-card:nth-child(5) {
    grid-column: 4 / span 2;
}
.pp-coach-card {
    background: #fff; border: 1px solid #e8e8e4; border-radius: 10px;
    padding: 14px 16px; display: flex; flex-direction: column; gap: 8px;
    transition: box-shadow 0.15s, border-color 0.15s;
}
.pp-coach-card:hover {
    border-color: #d0d0cc;
    box-shadow: 0 2px 8px rgba(0,0,0,0.05);
}
.pp-coach-card-name { font-size: 0.85rem; font-weight: 600; color: #333; line-height: 1.3; }
.pp-coach-card-status {
    display: inline-flex; align-items: center; gap: 5px;
    font-size: 0.75rem;
}
.pp-coach-status-dot { width: 7px; height: 7px; border-radius: 50%; flex-shrink: 0; }
.pp-coach-dot-soon { background: #ccc; }
.pp-coach-dot-active { background: var(--pp-accent); }
.pp-coach-card-active { text-decoration: none; cursor: pointer; }
.pp-coach-card-active:hover { border-color: var(--pp-accent) !important; }

/* ==========================================================
   TRAVEL COACH (v4.2.6)
   ========================================================== */
.pp-tc-featured-card {
    border-color: #22c55e !important;
    background: #1a2535 !important;
}
.pp-tc-tour-title {
    font-size: 0.95rem;
    font-weight: 700;
    color: var(--pp-text-primary);
    margin: 0 0 4px;
}
.pp-tc-tour-venue {
    font-size: 0.82rem;
    color: var(--pp-text-muted);
    margin: 0 0 10px;
}
.pp-tc-tour-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 12px;
}
.pp-tc-chip {
    display: inline-block;
    padding: 3px 10px;
    border-radius: 12px;
    font-size: 0.72rem;
    font-weight: 600;
    background: var(--pp-surface-alt);
    color: var(--pp-text-secondary);
    white-space: nowrap;
}
.pp-tc-aff-safe    { background: #14532d; color: #22c55e; }
.pp-tc-aff-warn    { background: #451a03; color: #f59e0b; }
.pp-tc-aff-danger  { background: #450a0a; color: #ef4444; }

.pp-tc-hotel-btn {
    display: block;
    width: 100%;
    padding: 10px 16px;
    background: #16a34a;
    color: #fff;
    border: none;
    border-radius: 8px;
    font-size: 0.88rem;
    font-weight: 600;
    text-align: center;
    text-decoration: none;
    cursor: pointer;
    margin-bottom: 4px;
    font-family: var(--pp-font);
    transition: background 0.15s;
}
.pp-tc-hotel-btn:hover { background: #15803d; color: #fff; }
.pp-tc-hotel-hint {
    font-size: 0.72rem;
    color: var(--pp-text-muted);
    text-align: center;
    margin: 0 0 8px;
}
.pp-tc-flights-btn {
    display: block;
    width: 100%;
    padding: 8px 16px;
    background: var(--pp-surface-alt);
    color: var(--pp-text-muted);
    border: 1px solid var(--pp-border);
    border-radius: 8px;
    font-size: 0.82rem;
    font-weight: 500;
    text-align: center;
    cursor: default;
    margin-bottom: 12px;
    font-family: var(--pp-font);
    opacity: 0.6;
}
.pp-tc-plan-checks {
    display: flex;
    gap: 16px;
    flex-wrap: wrap;
}
.pp-tc-plan-check {
    display: flex;
    align-items: center;
    gap: 6px;
    color: var(--pp-text-muted);
    font-size: 0.78rem;
    cursor: pointer;
}
.pp-tc-plan-check input[type="checkbox"] {
    accent-color: var(--pp-accent);
    width: 16px;
    height: 16px;
    cursor: pointer;
}
.pp-tc-tour-card {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 10px;
}
.pp-tc-tour-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 8px;
    margin-bottom: 8px;
}
.pp-tc-status-chip {
    display: inline-block;
    padding: 2px 8px;
    border-radius: 10px;
    font-size: 0.68rem;
    font-weight: 600;
    white-space: nowrap;
}
.pp-tc-chip-needed { background: rgba(245,158,11,0.15); color: #f59e0b; }
.pp-tc-chip-done   { background: rgba(34,197,94,0.15); color: #22c55e; }

/* Trip cost estimate (v4.2.9) */
.pp-tc-trip-cost {
    background: #1f2438;
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 12px;
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.pp-tc-trip-cost-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
}
.pp-tc-trip-cost-label {
    color: #94a3b8;
    font-size: 12px;
}
.pp-tc-trip-cost-value {
    color: #f1f5f9;
    font-size: 12px;
    font-weight: 500;
}
.pp-tc-trip-cost-total .pp-tc-trip-cost-label {
    color: #f1f5f9;
    font-weight: 500;
    font-size: 13px;
}
.pp-tc-trip-cost-total .pp-tc-trip-cost-value {
    color: #22c55e;
    font-size: 13px;
}
.pp-tc-trip-cost-total {
    border-top: 1px solid #2a2f45;
    padding-top: 6px;
    margin-top: 2px;
}
.pp-tc-trip-cost-note {
    color: #475569;
    font-size: 10px;
    margin: 4px 0 0;
    font-style: italic;
}

/* Budget pressure chips (v4.2.9) */
.pp-tc-chip-danger  { background: #450a0a; color: #ef4444; }
.pp-tc-chip-warn    { background: #451a03; color: #f59e0b; }
.pp-tc-chip-neutral { background: #1f2438; color: #94a3b8; border: 1px solid #2a2f45; }
.pp-tc-chip-safe    { background: #14532d; color: #22c55e; }

@media (max-width: 600px) {
    .pp-tc-plan-checks { flex-direction: column; gap: 8px; }
    .pp-tc-tour-card-header { flex-direction: column; }
}

/* Tournament Coach prep (v4.3.0) */
.pp-tc-prep-section { }
.pp-tc-prep-subtitle {
    color: #94a3b8;
    font-size: 12px;
    margin: -8px 0 12px;
}
.pp-tc-prep-card {
    background: #1f2438;
    border: 1px solid #2a2f45;
    border-radius: 10px;
    padding: 14px 16px;
    margin-bottom: 12px;
}
.pp-tc-prep-card:last-child { margin-bottom: 0; }
.pp-tc-prep-card-header {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    margin-bottom: 12px;
}
.pp-tc-prep-card-title {
    color: #f1f5f9;
    font-size: 13px;
    font-weight: 500;
    margin: 0 0 3px;
}
.pp-tc-prep-card-meta {
    color: #94a3b8;
    font-size: 11px;
    margin: 0;
}
.pp-tc-prep-card-date {
    text-align: right;
    flex-shrink: 0;
    margin-left: 12px;
}
.pp-tc-prep-date-main {
    color: #f1f5f9;
    font-size: 13px;
    font-weight: 500;
    margin: 0 0 2px;
}
.pp-tc-prep-days-away {
    color: #22c55e;
    font-size: 11px;
    margin: 0;
}
.pp-tc-prep-signals {
    display: grid;
    grid-template-columns: repeat(5, 1fr);
    gap: 8px;
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid #2a2f45;
}
.pp-tc-prep-signal {
    display: flex;
    flex-direction: column;
    gap: 3px;
}
.pp-tc-prep-signal-label {
    color: #94a3b8;
    font-size: 9px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.pp-tc-prep-signal-value {
    color: #f1f5f9;
    font-size: 11px;
    font-weight: 500;
}
.pp-tc-prep-checklist {
    display: flex;
    flex-direction: column;
    gap: 8px;
}
.pp-tc-checklist-label {
    color: #94a3b8;
    font-size: 10px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0 0 4px;
}
.pp-tc-check-row {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
}
.pp-tc-check-row input[type="checkbox"] {
    accent-color: var(--pp-accent);
    width: 16px;
    height: 16px;
    cursor: pointer;
}
.pp-tc-check-label {
    color: #cbd5e1;
    font-size: 12px;
    transition: color 0.15s;
}
.pp-tc-check-done {
    color: #22c55e;
    text-decoration: line-through;
    opacity: 0.7;
}
@media (max-width: 480px) {
    .pp-tc-prep-signals {
        grid-template-columns: repeat(3, 1fr);
    }
}

/* Travel Coach verdict (v4.2.7) */
.pp-tc-verdict {
    border-radius: 8px;
    padding: 10px 14px;
    margin-bottom: 12px;
    display: flex;
    align-items: flex-start;
    gap: 10px;
}
.pp-tc-verdict-label {
    font-size: 13px;
    font-weight: 500;
    flex-shrink: 0;
    min-width: 60px;
}
.pp-tc-verdict-msg {
    font-size: 12px;
    line-height: 1.5;
}
.pp-tc-verdict-plan {
    background: #14532d;
    border: 1px solid #22c55e;
}
.pp-tc-verdict-plan .pp-tc-verdict-label { color: #22c55e; }
.pp-tc-verdict-plan .pp-tc-verdict-msg { color: #bbf7d0; }
.pp-tc-verdict-wait {
    background: #451a03;
    border: 1px solid #f59e0b;
}
.pp-tc-verdict-wait .pp-tc-verdict-label { color: #f59e0b; }
.pp-tc-verdict-wait .pp-tc-verdict-msg { color: #fcd34d; }
.pp-tc-verdict-skip {
    background: #450a0a;
    border: 1px solid #ef4444;
}
.pp-tc-verdict-skip .pp-tc-verdict-label { color: #ef4444; }
.pp-tc-verdict-skip .pp-tc-verdict-msg { color: #fca5a5; }

.pp-coach-status-text { color: #aaa; font-style: italic; }
.pp-coach-card-desc {
    font-size: 0.75rem; color: #aaa; line-height: 1.4;
}

/* ==========================================================
   BANKROLL COACH (v4.2.5)
   All rules under .pp-theme-dark context
   ========================================================== */
/* v4.22.0 Cycle 2a — orphaned classes removed (pp-bc-metrics-grid, pp-bc-metric,
   pp-bc-metric-label, pp-bc-metric-value). They were used by Travel Coach v4.21.1
   markup that has now been replaced by pp-tc-panel / pp-tc-stat-row. */
.pp-bc-value-green   { color: var(--pp-accent) !important; }
.pp-bc-value-healthy { color: var(--pp-accent) !important; }
.pp-bc-value-risky   { color: #f59e0b !important; }
.pp-bc-value-danger  { color: var(--pp-danger) !important; }

/* Exposure bar */
.pp-bc-exposure-label {
    display: flex;
    justify-content: space-between;
    align-items: center;
    font-size: 0.82rem;
    color: var(--pp-text-secondary);
    margin-bottom: 6px;
}
.pp-bc-exposure-value {
    font-weight: 700;
}
.pp-bc-bar-track {
    height: 6px;
    background: var(--pp-therm-empty, #2a2f45);
    border-radius: 3px;
    overflow: hidden;
    margin-bottom: 6px;
}
.pp-bc-bar-fill {
    height: 100%;
    border-radius: 3px;
    transition: width 0.4s ease;
}
.pp-bc-bar-healthy { background: var(--pp-accent); }
.pp-bc-bar-risky   { background: #f59e0b; }
.pp-bc-bar-danger  { background: var(--pp-danger); }
.pp-bc-bar-legend {
    display: flex;
    gap: 12px;
    font-size: 0.7rem;
    color: var(--pp-text-muted);
}
.pp-bc-legend-safe   { color: var(--pp-accent); }
.pp-bc-legend-risky  { color: #f59e0b; }
.pp-bc-legend-danger { color: var(--pp-danger); }

/* New language-aligned class names (v4.2.7) */
.pp-bc-value-on-track { color: #22c55e !important; }
.pp-bc-bar-on-track   { background: #22c55e; }
.pp-bc-legend-on-track { color: #22c55e; }
.pp-bc-value-tight    { color: #f59e0b !important; }
.pp-bc-bar-tight      { background: #f59e0b; }
.pp-bc-legend-tight   { color: #f59e0b; }
.pp-bc-value-over     { color: #ef4444 !important; }
.pp-bc-bar-over       { background: #ef4444; }
.pp-bc-legend-over    { color: #ef4444; }

/* Visual breakdown charts (v4.2.8) */
.pp-bc-visual-card { }
.pp-bc-charts-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 16px;
}
.pp-bc-chart-wrap {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.pp-bc-chart-title {
    color: #94a3b8;
    font-size: 11px;
    font-weight: 500;
    text-transform: uppercase;
    letter-spacing: 0.05em;
    margin: 0;
}
.pp-bc-chart-delta {
    font-size: 13px;
    font-weight: 500;
    margin: 0;
}
.pp-bc-delta-over   { color: #ef4444; }
.pp-bc-delta-tight  { color: #f59e0b; }
.pp-bc-delta-under  { color: #22c55e; }
.pp-bc-delta-safe   { color: #22c55e; }
.pp-bc-chart-container {
    position: relative;
    height: 140px;
    width: 100%;
}

/* Shot allowance message in assessment */
.pp-bc-assessment-shot {
    color: #a78bfa;
    font-size: 13px;
    font-style: italic;
    margin: 8px 0 0;
    padding-top: 8px;
    border-top: 1px solid #3b1f6b;
    line-height: 1.5;
}

@media (max-width: 480px) {
    .pp-bc-charts-grid {
        grid-template-columns: 1fr;
    }
    .pp-bc-chart-container {
        height: 160px;
    }
}

/* v4.22.0 Cycle 2a — orphaned coach-assessment classes removed (pp-bc-assessment,
   pp-bc-assessment-header, pp-bc-assessment-headline, pp-bc-assessment-body).
   Travel Coach now uses pp-tc-assess; Bankroll Coach v4.21.0 already moved to
   pp-bc-assess (different class). */

/* Plan sections */
.pp-bc-plan-section {
    margin-bottom: 12px;
    padding-bottom: 12px;
    border-bottom: 1px solid var(--pp-border);
}
.pp-bc-plan-section:last-child { border-bottom: none; margin-bottom: 0; padding-bottom: 0; }
.pp-bc-plan-section-header {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 0.82rem;
    color: var(--pp-text-secondary);
    margin-bottom: 8px;
}

/* Badges */
.pp-bc-badge {
    display: inline-block;
    padding: 2px 10px;
    border-radius: 12px;
    font-size: 0.7rem;
    font-weight: 700;
    text-transform: uppercase;
    letter-spacing: 0.04em;
    white-space: nowrap;
}
.pp-bc-badge-play    { background: rgba(34,197,94,0.15); color: var(--pp-accent); }
.pp-bc-badge-consider { background: rgba(245,158,11,0.15); color: #f59e0b; }
.pp-bc-badge-skip    { background: rgba(239,68,68,0.15); color: var(--pp-danger); }

/* Event rows */
.pp-bc-event-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid var(--pp-border);
    font-size: 0.85rem;
    color: var(--pp-text-primary);
}
.pp-bc-event-row:last-child { border-bottom: none; }
.pp-bc-event-info {
    display: flex;
    flex-direction: column;
    gap: 2px;
    flex: 1;
    min-width: 0;
}
.pp-bc-event-tag {
    display: inline-block;
    padding: 1px 6px;
    border-radius: 4px;
    font-size: 0.65rem;
    font-weight: 600;
    background: rgba(124,58,237,0.15);
    color: #c4b5fd;
    margin-left: 6px;
    vertical-align: middle;
}
.pp-bc-event-meta {
    font-size: 0.75rem;
    color: var(--pp-text-muted);
}

/* Optimization */
.pp-bc-optimize-intro {
    font-size: 0.85rem;
    color: var(--pp-text-secondary);
    margin: 0 0 8px;
}
.pp-bc-optimize-list {
    margin: 0;
    padding: 0 0 0 18px;
    font-size: 0.85rem;
    color: var(--pp-text-primary);
    line-height: 1.6;
}
.pp-bc-optimize-list li { margin-bottom: 4px; }

/* Empty state */
.pp-bc-empty {
    text-align: center;
    padding: 20px 10px;
    color: var(--pp-text-muted);
    font-size: 0.88rem;
}

/* Settings */
.pp-bc-settings-hint {
    font-size: 0.78rem;
    color: var(--pp-text-muted);
    margin: 0 0 12px;
}
.pp-bc-settings-list { margin-bottom: 10px; }
.pp-bc-setting-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0;
    border-bottom: 1px solid var(--pp-border);
    font-size: 0.85rem;
    color: var(--pp-text-primary);
}
.pp-bc-setting-row:last-child { border-bottom: none; }
.pp-bc-setting-value {
    font-weight: 600;
    color: var(--pp-text-secondary);
}
.pp-bc-edit-toggle {
    background: none;
    border: none;
    color: var(--pp-accent);
    font-size: 0.82rem;
    font-weight: 600;
    cursor: pointer;
    padding: 0;
    font-family: var(--pp-font);
}
.pp-bc-edit-toggle:hover { text-decoration: underline; }
.pp-bc-inline-edit {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--pp-border);
}
.pp-bc-edit-field {
    margin-bottom: 10px;
}
.pp-bc-edit-field label {
    display: block;
    font-size: 0.75rem;
    font-weight: 600;
    color: var(--pp-text-muted);
    text-transform: uppercase;
    letter-spacing: 0.04em;
    margin-bottom: 4px;
}
.pp-bc-edit-field input {
    width: 100%;
    padding: 8px 10px;
    border: 1px solid var(--pp-border);
    border-radius: 6px;
    background: var(--pp-surface);
    color: var(--pp-text-primary);
    font-size: 0.88rem;
    box-sizing: border-box;
    min-height: 40px;
    font-family: var(--pp-font);
}
.pp-bc-edit-field input:focus {
    outline: none;
    border-color: var(--pp-accent);
    box-shadow: 0 0 0 3px rgba(74,222,128,0.15);
}

/* Mobile responsive */
@media (max-width: 600px) {
    .pp-bc-metrics-grid {
        grid-template-columns: 1fr;
    }
    .pp-bc-bar-legend {
        flex-wrap: wrap;
    }
}

/* Notification footer + empty state */
.pp-cc-notif-footer { padding: 12px 0 2px; border-top: 1px solid #f4f4f0; margin-top: 4px; }
.pp-cc-notif-footer a { font-size: 0.78rem; color: #999; text-decoration: none; }
.pp-cc-notif-footer a:hover { color: #1a6b47; text-decoration: underline; }
.pp-cc-notif-empty {
    padding: 20px 0; font-size: 0.88rem; color: #aaa;
    text-align: center;
}

/* Indicator "soon" badge — dashed border to signal placeholder */
.pp-cc-ind-badge {
    font-size: 0.68rem; background: transparent; color: #aaa;
    padding: 1px 7px; border-radius: 10px;
    border: 1px dashed #ccc; font-style: italic;
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
    .pp-cc-link-card,
    .pp-cc-link-arrow,
    .pp-cc-cal-nav,
    .pp-coach-card,
    .pp-cc-save-btn,
    .pp-ob-fill,
    .pp-ob-step-panel,
    .pp-ob-toggle,
    .pp-ob-tog-thumb,
    .pp-therm-fill { transition: none; animation: none; }
}

/* Responsive — 600px for calendar, 540px for layout */
@media (max-width: 600px) {
    .pp-cc-title-row { flex-direction: column; gap: 10px; }
    .pp-cc-indicators { width: 100%; flex-direction: row; }
    .pp-cc-acc-sub { display: none; }
    .pp-cc-cal-day { min-height: 48px; padding: 3px; }
    .pp-cc-cal-daynum { width: 20px; height: 20px; font-size: 0.68rem; }
    .pp-cc-cal-event { font-size: 0.58rem; padding: 1px 3px; }
    .pp-coach-status-grid { grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 540px) {
    .pp-cc-links-row { grid-template-columns: 1fr; }
    .pp-cc-indicators { flex-direction: column; align-items: flex-start; }
}

/* ==========================================================
   ONBOARDING — v4.2.2 (pp-ob-* classes)
   ========================================================== */

.pp-onboarding-wrap {
    max-width: 680px;
    margin: 0 auto;
    padding: 2rem 1rem 3rem;
    font-family: var(--pp-font, sans-serif);
}

/* Header */
.pp-ob-header { text-align: center; margin-bottom: 2rem; }
.pp-ob-logo { font-size: 0.85rem; font-weight: 700; color: #1a6b47; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 6px; }
.pp-ob-badge { display: inline-block; font-size: 0.75rem; font-weight: 600; color: #1a6b47; background: #E1F5EE; border: 1px solid #9FE1CB; border-radius: 20px; padding: 3px 12px; margin-bottom: 12px; }
.pp-ob-title { font-size: 1.75rem; font-weight: 700; color: #111; margin: 0 0 8px; }
.pp-ob-sub { font-size: 0.95rem; color: #666; margin: 0; }

/* Progress bar */
.pp-ob-progress { margin-bottom: 2rem; }
.pp-ob-steps { display: flex; justify-content: space-between; margin-bottom: 10px; }
.pp-ob-step { display: flex; flex-direction: column; align-items: center; gap: 5px; flex: 1; }
.pp-ob-dot {
    width: 32px; height: 32px; border-radius: 50%;
    display: flex; align-items: center; justify-content: center;
    font-size: 0.8rem; font-weight: 700;
    background: #e5e5e0; color: #888;
    border: 2px solid #e5e5e0;
    transition: all 0.2s;
}
.pp-ob-dot.pp-ob-active { background: #1a6b47; color: #fff; border-color: #1a6b47; }
.pp-ob-dot.pp-ob-done { background: #E1F5EE; color: #1a6b47; border-color: #9FE1CB; }
.pp-ob-step-label { font-size: 0.72rem; color: #aaa; font-weight: 500; }
.pp-ob-step-label.pp-ob-active { color: #1a6b47; font-weight: 700; }
.pp-ob-track { height: 4px; background: #e5e5e0; border-radius: 2px; overflow: hidden; margin-bottom: 6px; }
.pp-ob-fill { height: 100%; background: #1a6b47; border-radius: 2px; transition: width 0.4s ease; }
.pp-ob-pct { font-size: 0.78rem; color: #888; text-align: right; }

/* Card */
.pp-ob-card {
    background: #fff;
    border: 1px solid #e8e8e4;
    border-radius: 12px;
    padding: 1.5rem;
    margin-bottom: 1rem;
}
.pp-ob-eyebrow { font-size: 0.72rem; font-weight: 700; color: #1a6b47; text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 6px; }
.pp-ob-card-title { font-size: 1.15rem; font-weight: 700; color: #111; margin: 0 0 6px; }
.pp-ob-card-desc { font-size: 0.88rem; color: #666; margin: 0 0 1.25rem; }

/* Fields */
.pp-ob-field { margin-bottom: 1.25rem; }
.pp-ob-field-label { font-size: 0.88rem; font-weight: 600; color: #333; margin-bottom: 3px; }
.pp-ob-field-hint { font-size: 0.78rem; color: #888; margin-bottom: 8px; }

/* Radio options */
.pp-ob-options { display: flex; flex-direction: column; gap: 8px; }
.pp-ob-option {
    display: flex; align-items: flex-start; gap: 10px;
    padding: 10px 14px;
    border: 1.5px solid #e5e5e0;
    border-radius: 8px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    background: #fafaf8;
}
.pp-ob-option:hover { border-color: #1a6b47; background: #f0fdf6; }
.pp-ob-option input[type="radio"] { margin-top: 2px; accent-color: #1a6b47; flex-shrink: 0; }
.pp-ob-option-text { display: flex; flex-direction: column; gap: 2px; }
.pp-ob-option-label { font-size: 0.88rem; font-weight: 600; color: #222; }
.pp-ob-option-hint { font-size: 0.78rem; color: #888; }

/* Select and input */
.pp-ob-select,
.pp-ob-input {
    width: 100%;
    padding: 9px 12px;
    border: 1.5px solid #e5e5e0;
    border-radius: 8px;
    font-size: 0.9rem;
    color: #222;
    background: #fff;
    transition: border-color 0.15s;
    box-sizing: border-box;
}
.pp-ob-select:focus,
.pp-ob-input:focus { border-color: #1a6b47; outline: none; }

/* Range slider */
.pp-ob-range { width: 100%; accent-color: #1a6b47; }
.pp-ob-range-val { font-size: 1rem; font-weight: 700; color: #1a6b47; margin-top: 4px; display: block; }

/* Toggle / checkbox rows */
.pp-ob-toggle-row {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 0;
    border-bottom: 1px solid #f0f0ec;
}
.pp-ob-toggle-row:last-child { border-bottom: none; }
.pp-ob-toggle-label { font-size: 0.88rem; font-weight: 600; color: #222; }
.pp-ob-toggle-hint { font-size: 0.78rem; color: #888; margin-top: 2px; }
.pp-ob-toggle-row input[type="checkbox"] { accent-color: #1a6b47; width: 18px; height: 18px; flex-shrink: 0; }

/* Buttons */
.pp-ob-btn-next {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 11px 24px;
    background: #1a6b47; color: #fff;
    border: none; border-radius: 8px;
    font-size: 0.95rem; font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.pp-ob-btn-next:hover { background: #155a3c; }

.pp-ob-btn-back {
    display: inline-flex; align-items: center; gap: 6px;
    padding: 11px 18px;
    background: none; color: #555;
    border: 1px solid #ddd; border-radius: 8px;
    font-size: 0.9rem; font-weight: 500;
    cursor: pointer;
    transition: background 0.15s;
    margin-right: 10px;
}
.pp-ob-btn-back:hover { background: #f4f4f0; }

.pp-ob-link {
    background: none; border: none;
    color: #888; font-size: 0.82rem;
    cursor: pointer; text-decoration: underline;
    padding: 0;
}
.pp-ob-link:hover { color: #555; }

.pp-ob-actions { display: flex; align-items: center; margin-top: 1rem; }
.pp-ob-defaults { margin-top: 10px; }

/* Review step */
.pp-ob-review-row {
    display: flex; align-items: center; justify-content: space-between;
    padding: 10px 0; border-bottom: 1px solid #f0f0ec;
    font-size: 0.88rem;
}
.pp-ob-review-row:last-child { border-bottom: none; }
.pp-ob-review-label { color: #888; }
.pp-ob-review-val { font-weight: 600; color: #222; }

/* Responsive */
@media (max-width: 540px) {
    .pp-ob-title { font-size: 1.4rem; }
    .pp-ob-card { padding: 1.1rem; }
    .pp-ob-steps { gap: 4px; }
    .pp-ob-dot { width: 26px; height: 26px; font-size: 0.72rem; }
    .pp-ob-step-label { font-size: 0.65rem; }
}

/* Step panels */
.pp-ob-step-panel { animation: pp-fade-in 0.3s ease; }

/* Footer (nav between steps) */
.pp-ob-footer {
    display: flex; align-items: center; justify-content: space-between;
    margin-top: 1.25rem; padding-top: 0.75rem;
    border-top: 1px solid #f0f0ec;
}
.pp-ob-count { font-size: 0.78rem; color: #888; font-weight: 500; }

/* Type cards (Step 1 player type) */
.pp-ob-type-grid {
    display: grid; grid-template-columns: 1fr 1fr; gap: 10px;
}
@media (max-width: 540px) { .pp-ob-type-grid { grid-template-columns: 1fr; } }
.pp-ob-type-card {
    display: flex; flex-direction: column; gap: 2px;
    padding: 14px 16px;
    border: 1.5px solid #e5e5e0;
    border-radius: 10px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    background: #fafaf8;
}
.pp-ob-type-card:hover { border-color: #1a6b47; background: #f0fdf6; }
.pp-ob-type-name { font-size: 0.9rem; font-weight: 600; color: #222; }
.pp-ob-type-sub { font-size: 0.78rem; color: #888; }
.pp-ob-radio-hidden { position: absolute; opacity: 0; pointer-events: none; }

/* Selected state — shared across cards, pills, presets, goals, travel */
.pp-ob-selected { border-color: #1a6b47 !important; background: #f0fdf6 !important; }

/* Pills (buy-in range, frequency) */
.pp-ob-pills { display: flex; flex-wrap: wrap; gap: 8px; }
.pp-ob-pill {
    display: inline-flex; align-items: center;
    padding: 8px 16px;
    border: 1.5px solid #e5e5e0;
    border-radius: 20px;
    font-size: 0.88rem; font-weight: 500; color: #333;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    background: #fafaf8;
}
.pp-ob-pill:hover { border-color: #1a6b47; background: #f0fdf6; }
.pp-ob-microcopy { font-size: 0.78rem; color: #999; margin-top: 8px; }

/* Travel grid (Step 1) */
.pp-ob-travel-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
@media (max-width: 540px) { .pp-ob-travel-grid { grid-template-columns: 1fr; } }
.pp-ob-travel-card {
    display: flex; flex-direction: column; align-items: center; gap: 4px;
    padding: 16px 12px; text-align: center;
    border: 1.5px solid #e5e5e0;
    border-radius: 10px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    background: #fafaf8;
}
.pp-ob-travel-card:hover { border-color: #1a6b47; background: #f0fdf6; }
.pp-ob-travel-icon { font-size: 1.4rem; }
.pp-ob-travel-label { font-size: 0.88rem; font-weight: 600; color: #222; }
.pp-ob-travel-sub { font-size: 0.75rem; color: #888; }

/* Path preview (Step 1) */
.pp-ob-preview {
    background: #f8f8f6; border: 1px solid #e8e8e4; border-radius: 10px;
    padding: 14px 16px; margin-top: 1rem;
}
.pp-ob-preview-label {
    font-size: 0.72rem; font-weight: 700; text-transform: uppercase;
    letter-spacing: 0.06em; color: #1a6b47; margin-bottom: 8px;
}
.pp-ob-preview div { font-size: 0.85rem; color: #444; padding: 3px 0; }

/* Powers / microcopy footer */
.pp-ob-powers {
    font-size: 0.78rem; color: #999; margin-top: 1rem;
    padding-top: 0.75rem; border-top: 1px solid #f0f0ec;
}

/* Bankroll slider (Step 2) */
.pp-ob-bankroll-row { display: flex; align-items: center; gap: 16px; }
.pp-ob-slider { flex: 1; accent-color: #1a6b47; }
.pp-ob-bankroll-val { font-size: 1.1rem; font-weight: 700; color: #1a6b47; min-width: 80px; text-align: right; }
.pp-ob-presets { display: flex; gap: 8px; margin-top: 8px; }
.pp-ob-preset {
    padding: 6px 14px;
    border: 1.5px solid #e5e5e0;
    border-radius: 20px;
    background: #fafaf8;
    font-size: 0.82rem; font-weight: 500; color: #555;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
}
.pp-ob-preset:hover { border-color: #1a6b47; background: #f0fdf6; }
.pp-ob-rec-buyin { font-size: 0.82rem; color: #1a6b47; font-weight: 600; margin-top: 8px; }

/* Goal list (Step 2) */
.pp-ob-goal-list { display: flex; flex-direction: column; gap: 8px; }
.pp-ob-goal-item {
    display: flex; align-items: center; gap: 10px;
    padding: 10px 14px;
    border: 1.5px solid #e5e5e0;
    border-radius: 8px;
    cursor: pointer;
    transition: border-color 0.15s, background 0.15s;
    background: #fafaf8;
}
.pp-ob-goal-item:hover { border-color: #1a6b47; background: #f0fdf6; }
.pp-ob-goal-radio {
    width: 18px; height: 18px;
    border: 2px solid #ccc;
    border-radius: 50%;
    flex-shrink: 0;
    transition: border-color 0.15s, background 0.15s;
}
.pp-ob-goal-radio.pp-ob-selected { border-color: #1a6b47; background: #1a6b47; box-shadow: inset 0 0 0 3px #fff; }
.pp-ob-goal-text { font-size: 0.88rem; font-weight: 500; color: #222; }

/* Social proof (Step 3) */
.pp-ob-social-proof {
    font-size: 0.82rem; color: #1a6b47; font-weight: 500;
    background: #E1F5EE; border-radius: 8px;
    padding: 8px 14px; margin-bottom: 1rem;
}

/* Notification rows (Step 3) */
.pp-ob-notif-list { display: flex; flex-direction: column; gap: 0; }
.pp-ob-notif-row {
    display: flex; align-items: flex-start; justify-content: space-between; gap: 16px;
    padding: 14px 0;
    border-bottom: 1px solid #f0f0ec;
}
.pp-ob-notif-row:last-child { border-bottom: none; }
.pp-ob-notif-body { flex: 1; }
.pp-ob-notif-title { font-size: 0.9rem; font-weight: 600; color: #222; }
.pp-ob-notif-desc { font-size: 0.82rem; color: #666; margin-top: 2px; }
.pp-ob-notif-sub { margin-top: 6px; font-size: 0.82rem; color: #555; display: flex; align-items: center; gap: 6px; }
.pp-ob-mini-select {
    padding: 4px 8px; border: 1px solid #ddd; border-radius: 6px;
    font-size: 0.82rem; color: #333; background: #fff;
}

/* Custom toggles (Step 3) */
.pp-ob-toggle {
    width: 44px; height: 24px;
    border-radius: 12px;
    background: #ccc;
    position: relative;
    cursor: pointer;
    flex-shrink: 0;
    transition: background 0.2s;
    margin-top: 2px;
}
.pp-ob-tog-thumb {
    width: 20px; height: 20px;
    border-radius: 50%;
    background: #fff;
    position: absolute;
    top: 2px; left: 2px;
    transition: transform 0.2s;
    box-shadow: 0 1px 3px rgba(0,0,0,0.15);
}
.pp-ob-tog-on { background: #1a6b47; }
.pp-ob-tog-on .pp-ob-tog-thumb { transform: translateX(20px); }

/* Review step (Step 4) */
.pp-ob-review-section { margin-bottom: 1.25rem; }
.pp-ob-rk { color: #888; font-size: 0.85rem; }
.pp-ob-rv { font-weight: 600; color: #222; font-size: 0.85rem; }
.pp-ob-rv-green { color: #1a6b47; }
.pp-ob-identity { font-size: 0.9rem; color: #333; font-weight: 500; margin: 1rem 0 0.5rem; text-align: center; }

/* Unlock section (Step 4) */
.pp-ob-unlock {
    background: #f0fdf6; border: 1px solid #9FE1CB; border-radius: 10px;
    padding: 16px 18px; margin-top: 1rem;
}
.pp-ob-unlock-title { font-size: 0.88rem; font-weight: 700; color: #1a6b47; margin-bottom: 8px; }
.pp-ob-unlock-item { font-size: 0.85rem; color: #333; padding: 3px 0; }

/* Launch button variant */
.pp-ob-btn-launch { background: linear-gradient(135deg, #1a6b47, #0d9488); }
.pp-ob-btn-launch:hover { background: linear-gradient(135deg, #155a3c, #047857); }

/* ==========================================================
   NAV USER DROPDOWN — v4.2.2
   ========================================================== */

#pp-nav-user {
    position: fixed;
    top: 12px;
    right: 16px;
    z-index: 99999;
}
.pp-nav-avatar-btn {
    width: 36px; height: 36px;
    border-radius: 50%;
    border: 2px solid #1a6b47;
    background: none;
    cursor: pointer;
    padding: 0;
    overflow: hidden;
    display: flex; align-items: center; justify-content: center;
    transition: box-shadow 0.15s;
}
.pp-nav-avatar-btn:hover { box-shadow: 0 0 0 3px rgba(26,107,71,0.2); }
.pp-nav-avatar-img { width: 100%; height: 100%; object-fit: cover; }
.pp-nav-avatar-placeholder {
    width: 100%; height: 100%;
    background: #1a6b47; color: #fff;
    display: flex; align-items: center; justify-content: center;
    font-size: 14px; font-weight: 700;
}
.pp-nav-login-btn {
    display: inline-flex; align-items: center;
    padding: 7px 16px;
    background: #1a6b47; color: #fff;
    border-radius: 20px;
    font-size: 13px; font-weight: 600;
    text-decoration: none;
    transition: background 0.15s;
}
.pp-nav-login-btn:hover { background: #155a3c; color: #fff; }
.pp-nav-dropdown {
    display: none;
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    background: #fff;
    border: 1px solid #e8e8e4;
    border-radius: 12px;
    box-shadow: 0 8px 24px rgba(0,0,0,0.12);
    min-width: 200px;
    overflow: hidden;
    z-index: 99999;
}
.pp-nav-dropdown.pp-nav-dropdown-open { display: block; }
.pp-nav-dropdown-header {
    padding: 12px 16px;
    border-bottom: 1px solid #f0f0ec;
    background: #fafaf8;
}
.pp-nav-dropdown-name { font-size: 13px; font-weight: 600; color: #222; }
.pp-nav-dropdown-badge {
    display: inline-block; margin-top: 3px;
    font-size: 11px; font-weight: 600; color: #1a6b47;
    background: #E1F5EE; border-radius: 10px; padding: 2px 8px;
}
.pp-nav-dropdown-links { padding: 6px; }
.pp-nav-dropdown-link {
    display: flex; align-items: center; gap: 8px;
    padding: 9px 12px;
    font-size: 13px; color: #333;
    text-decoration: none;
    border-radius: 8px;
    transition: background 0.12s;
}
.pp-nav-dropdown-link:hover { background: #f4f4f0; color: #111; }
.pp-nav-dropdown-link span { font-size: 14px; width: 18px; text-align: center; flex-shrink: 0; }
.pp-nav-dropdown-upgrade { color: #1a6b47; font-weight: 600; }
.pp-nav-dropdown-divider { height: 1px; background: #f0f0ec; margin: 4px 0; }
.pp-nav-dropdown-logout { color: #888; }
.pp-nav-dropdown-logout:hover { color: #b91c1c; background: #fef2f2; }

/* Account panel nav links (sidebar/shortcode) */
.pp-nav-link {
    display: block; padding: 6px 0;
    font-size: 14px; color: #333;
    text-decoration: none;
    transition: color 0.12s;
}
.pp-nav-link:hover { color: var(--pp-blue); }

/* Inline profile edit */
.pp-inline-field { margin-bottom: 10px; }
.pp-inline-label { display: block; font-size: 0.82rem; font-weight: 600; color: #555; margin-bottom: 4px; }
.pp-inline-actions { display: flex; align-items: center; margin-top: 12px; }
.pp-footer-logout { color: #888; font-weight: 500; }
.pp-footer-logout:hover { color: #b91c1c; }

/* My Path dashboard logout prominence */
.pp-account-footer {
    display: flex; gap: 16px; align-items: center;
    padding: 16px 0 4px;
    border-top: 1px solid #f0f0ec;
    margin-top: 8px;
    font-size: 13px;
}
.pp-account-footer a { color: #888; text-decoration: none; }
.pp-account-footer a:hover { color: #333; }

/* =========================================================
   FIX 1 — Mobile nav overlay (pp-* scoped only)
   ========================================================= */

/*
 * ROOT CAUSE — VERIFIED:
 * The WordPress theme mobile hamburger (confirmed: Astra theme) opens a
 * full-viewport nav panel. The plugin's #pp-nav-user element sits at
 * z-index:99999, which floats it above Astra's nav overlay (typically
 * z-index:99 to 9999), making the avatar/login button visible on top of
 * the open menu and giving the appearance of "page content bleeding
 * through."
 *
 * TWO-PART FIX:
 *
 * Part A — Theme-side (CSS added here, scoped to @media mobile):
 *   When the Astra hamburger is open (body gains .ast-header-break-point-active
 *   via JS), the plugin's fixed elements step below the theme overlay.
 *   Astra mobile overlay selectors verified for Astra ≥ 3.6:
 *     .ast-mobile-popup-wrapper  — full-viewport slide panel
 *     .ast-mobile-popup          — the panel itself
 *   No Astra internal display/layout properties are changed — only
 *   the plugin element z-index is suppressed.
 *
 * Part B — JS side (MutationObserver in pokerpath.js):
 *   Watches body class for Astra + 13 other common theme open states.
 *   Adds body.pp-theme-nav-open which the CSS below also uses as a fallback
 *   for themes other than Astra.
 *
 * If the live site uses a different theme or different Astra version:
 *   → Apply the equivalent z-index suppression via WordPress Customizer
 *     "Additional CSS" using the theme's actual hamburger-open body class:
 *     @media (max-width: 768px) {
 *         body.YOUR-THEME-OPEN-CLASS #pp-nav-user { z-index: 0 !important; }
 *     }
 */

/* Full-screen backdrop when plugin account dropdown is open on mobile */
.pp-nav-mobile-backdrop {
    display: none;
    position: fixed;
    inset: 0;
    background: rgba(13,15,26,0.98);
    z-index: 99998;
    animation: pp-fade-in .2s ease;
}
.pp-nav-mobile-backdrop.pp-open { display: block; }

@media (max-width: 768px) {
    /* Part A — suppress plugin fixed elements below Astra mobile nav overlay */
    /* Astra adds .ast-header-break-point-active to body when hamburger opens */
    body.ast-header-break-point-active #pp-nav-user,
    body.pp-theme-nav-open #pp-nav-user,
    body.ast-mobile-popup-active #pp-nav-user {
        z-index: 0 !important;
        pointer-events: none;
    }
    /* Also suppress the CTA fixed bar so it doesn't bleed through */
    body.ast-header-break-point-active .pp-cta-fixed-bar,
    body.pp-theme-nav-open .pp-cta-fixed-bar {
        z-index: 0 !important;
    }

    /* Plugin account dropdown — expand to full panel on mobile.
       IDs (#pp-nav-user, #pp-nav-dropdown) are used because the PHP
       outputs these specific IDs; class-only targeting is not available
       without modifying PHP (which is out of scope). */
    #pp-nav-user {
        top: 10px;
        right: 12px;
        z-index: 99999;
        display: flex;
        align-items: center;
        height: 44px;   /* Fix 7 — consistent height across all pages */
    }
    .pp-nav-dropdown {
        position: fixed;
        top: 56px;
        right: 0;
        left: 0;
        bottom: 0;
        border-radius: 0;
        min-width: unset;
        overflow-y: auto;
        border: none;
        border-top: 1px solid #e8e8e4;
        background: #ffffff;   /* solid — no bleed-through */
        z-index: 99999;
        box-shadow: none;
    }
    .pp-nav-dropdown-links { padding: 12px; }
    .pp-nav-dropdown-link {
        padding: 14px 16px;
        font-size: 15px;
        border-radius: 10px;
    }
    .pp-nav-login-btn,
    .pp-nav-avatar-btn {
        flex-shrink: 0;
    }
}

/* =========================================================
   FIX 2 — Scroll-to-top button
   ========================================================= */
.pp-scroll-top {
    position: fixed;
    bottom: 80px;
    right: 12px;
    width: 40px;
    height: 40px;
    border-radius: 50%;
    background: var(--pp-primary);
    color: #fff;
    border: none;
    cursor: pointer;
    display: none;
    align-items: center;
    justify-content: center;
    z-index: 999;
    box-shadow: var(--pp-shadow-md);
    transition: background .15s, opacity .2s, transform .2s;
    opacity: 0;
    transform: translateY(8px);
}
.pp-scroll-top.pp-scroll-top-visible {
    display: flex;
    opacity: 1;
    transform: translateY(0);
}
.pp-scroll-top:hover { background: var(--pp-primary-hover); }
.pp-scroll-top svg { pointer-events: none; }
@media (max-width: 768px) {
    .pp-scroll-top {
        bottom: 16px !important;
        right: 16px !important;
    }
}

/* =========================================================
   FIX 5 — Quick Actions primary button color
   ========================================================= */
.pp-quick-actions .pp-btn-primary {
    background: var(--pp-primary) !important;
    color: #fff !important;
    border-color: var(--pp-primary) !important;
}
.pp-quick-actions .pp-btn-primary:hover {
    background: var(--pp-primary-hover) !important;
    border-color: var(--pp-primary-hover) !important;
}
/* Also guard the general quick-action button hover state */
.pp-quick-actions button:hover {
    border-color: var(--pp-primary) !important;
    color: var(--pp-primary) !important;
    background: var(--pp-accent-soft) !important;
}

/* =========================================================
   FIX 7 — Nav user header consistency
   ========================================================= */
/* Ensure only one control shows at a time (PHP controls which
   child is rendered, but we guard display here) */
#pp-nav-user {
    display: flex;
    align-items: center;
    gap: 8px;
}
/* Prevent both login and avatar showing simultaneously */
#pp-nav-user .pp-nav-login-btn + .pp-nav-avatar-btn,
#pp-nav-user .pp-nav-avatar-btn + .pp-nav-login-btn {
    display: none;
}

/* =========================================================
   MOBILE POLISH — v4.2.2-mobile-3
   Fixes: header consistency, contrast, card actions, coach
   readability, quick-search, footer clearance, theme guard
   All selectors plugin-scoped (pp-* only). No PHP changes.
   ========================================================= */

/* ── FIX 1 ADDENDUM — Mobile header consistent height ─────── */
/* The MutationObserver (pokerpath.js) + z-index suppression
   from mobile-2 remain in place. This addendum enforces a
   consistent 44px touch-safe height on #pp-nav-user across
   every page on mobile so the header band never shifts. */
@media (max-width: 768px) {
    #pp-nav-user {
        min-height: 44px;
        box-sizing: border-box;
    }
    /* Guest state: login button is a pill — vertically center it */
    .pp-nav-login-btn {
        line-height: 1;
        padding-top: 8px;
        padding-bottom: 8px;
    }
    /* Logged-in: avatar circle — enforce size so it never shifts */
    .pp-nav-avatar-btn {
        width: 36px;
        height: 36px;
        flex-shrink: 0;
    }
}

/* ── FIX 2 + FIX 4 — Tournament Coach dark-theme contrast ──── */
/*
 * All .pp-cc-* and .pp-coach-* classes use hardcoded light-hex
 * values instead of CSS variables, so they don't respond to
 * .pp-theme-dark tokens automatically. The existing broad rule
 * (.pp-theme-dark h2/p/span) catches text nodes, but backgrounds,
 * borders, and non-element-tagged colors need explicit overrides.
 *
 * All rules below are scoped to .pp-theme-dark — no effect on
 * light pages.
 */

/* Profile tags (header pill row showing player profile) */
.pp-theme-dark .pp-cc-profile-tag,
.pp-theme-dark .pp-tc-profile-tag {
    background: rgba(255,255,255,0.09) !important;
    border-color: rgba(255,255,255,0.18) !important;
    color: rgba(255,255,255,0.88) !important;
}

/* Section labels ("YOUR COACHES", "NOTIFICATIONS", etc.) */
.pp-theme-dark .pp-cc-section-label,
.pp-theme-dark .pp-coach-status-label {
    color: rgba(255,255,255,0.58) !important;
}

/* Status indicator row (Travel, Bankroll indicator chips) */
.pp-theme-dark .pp-cc-indicator {
    background: rgba(255,255,255,0.07) !important;
    border-color: rgba(255,255,255,0.14) !important;
}
.pp-theme-dark .pp-cc-ind-label {
    color: rgba(255,255,255,0.88) !important;
}
/* "soon" dashed pill — was #aaa text / #ccc border: nearly invisible */
.pp-theme-dark .pp-cc-ind-badge {
    color: rgba(255,255,255,0.52) !important;
    border-color: rgba(255,255,255,0.22) !important;
    background: transparent !important;
}

/* Notification rows */
.pp-theme-dark .pp-cc-notif-row {
    border-bottom-color: rgba(255,255,255,0.07) !important;
}
.pp-theme-dark .pp-cc-notif-detail {
    color: rgba(255,255,255,0.5) !important;
}
.pp-theme-dark .pp-cc-notif-footer {
    border-top-color: rgba(255,255,255,0.07) !important;
}
.pp-theme-dark .pp-cc-notif-footer a {
    color: rgba(255,255,255,0.45) !important;
}
.pp-theme-dark .pp-cc-notif-footer a:hover {
    color: rgba(255,255,255,0.82) !important;
}
.pp-theme-dark .pp-cc-notif-empty {
    color: rgba(255,255,255,0.35) !important;
}

/* Refine panel */
.pp-theme-dark .pp-cc-refine-panel {
    background: rgba(255,255,255,0.04) !important;
    border-color: rgba(255,255,255,0.1) !important;
}
.pp-theme-dark .pp-cc-refine-field label {
    color: rgba(255,255,255,0.6) !important;
}
.pp-theme-dark .pp-cc-refine-toggle {
    background: rgba(255,255,255,0.06) !important;
    border-color: rgba(255,255,255,0.16) !important;
    color: rgba(255,255,255,0.75) !important;
}

/* Quick-link cards (My Tournaments / My Recommendations shortcuts) */
.pp-theme-dark .pp-cc-link-sub {
    color: rgba(255,255,255,0.5) !important;
}
.pp-theme-dark .pp-cc-link-arrow {
    color: rgba(255,255,255,0.28) !important;
}
.pp-theme-dark .pp-cc-link-badge {
    background: rgba(34,197,94,0.18) !important;
    color: var(--pp-accent) !important;
}

/* "Your Coaches" grid */
.pp-theme-dark .pp-coach-card-name {
    color: rgba(255,255,255,0.88) !important;
}
.pp-theme-dark .pp-coach-card-desc {
    color: rgba(255,255,255,0.45) !important;
}
.pp-theme-dark .pp-coach-status-text {
    color: rgba(255,255,255,0.4) !important;
}
.pp-theme-dark .pp-coach-dot-soon {
    background: rgba(255,255,255,0.22) !important;
}

/* Calendar surrounding UI */
.pp-theme-dark .pp-cc-cal-count {
    color: rgba(255,255,255,0.5) !important;
}
.pp-theme-dark .pp-cc-cal-header {
    border-bottom-color: rgba(255,255,255,0.07) !important;
}
/* v4.24.4 — A: Calendar month label readable on dark theme */
.pp-theme-dark .pp-cc-cal-month-label {
    color: var(--pp-text-primary) !important;
}
/* v4.24.4 — C: Link card titles readable on dark theme */
.pp-theme-dark .pp-cc-link-title {
    color: var(--pp-text-primary) !important;
}
.pp-theme-dark .pp-cc-cal-dow-row > div {
    color: rgba(255,255,255,0.45) !important;
}
.pp-theme-dark .pp-cc-cal-nav {
    background: rgba(255,255,255,0.07) !important;
    border-color: rgba(255,255,255,0.15) !important;
    color: rgba(255,255,255,0.72) !important;
}
.pp-theme-dark .pp-cc-cal-nav:hover {
    background: rgba(255,255,255,0.13) !important;
    border-color: rgba(255,255,255,0.25) !important;
}
.pp-theme-dark .pp-cc-cal-day {
    border-right-color: rgba(255,255,255,0.05) !important;
    border-bottom-color: rgba(255,255,255,0.05) !important;
    background: var(--pp-surface) !important;
}
.pp-theme-dark .pp-cc-cal-empty {
    background: rgba(0,0,0,0.18) !important;
}
.pp-theme-dark .pp-cc-cal-daynum {
    color: rgba(255,255,255,0.45) !important;
}
.pp-theme-dark .pp-cc-cal-loading {
    color: rgba(255,255,255,0.35) !important;
}

/* Fallback notice / amber disclaimer box on dark */
.pp-theme-dark .pp-tc-fallback-notice {
    background: rgba(212,160,18,0.12) !important;
    border-color: rgba(212,160,18,0.38) !important;
    color: #fbbf24 !important;
}
.pp-theme-dark .pp-tc-fallback-notice a {
    color: #fbbf24 !important;
}

/* Edit-profile link on dark */
.pp-theme-dark .pp-cc-edit-profile {
    color: var(--pp-accent) !important;
}
.pp-theme-dark .pp-tc-edit-profile {
    color: var(--pp-accent) !important;
}

/* cc-title / subtitle hardcoded (#1a1a1a / #888) not caught by tag rules */
.pp-theme-dark .pp-cc-title {
    color: var(--pp-text-primary) !important;
}
.pp-theme-dark .pp-cc-subtitle {
    color: rgba(255,255,255,0.52) !important;
}

/* ── FIX 3 ADDENDUM — Card action row cohesion ─────────────── */
/* Share separator matches updated Report/Save/Interest border weight */
.pp-share-icons {
    border-left-color: var(--pp-gray-300);
}
/* Card action mobile rules — consolidated in Zip 2 mobile card block below */

/* ── FIX 4 ADDENDUM — Coach mobile readability at small sizes ─ */
@media (max-width: 600px) {
    .pp-cc-profile-tag,
    .pp-tc-profile-tag {
        font-size: 0.76rem;
        padding: 3px 10px;
    }
    .pp-cc-title {
        font-size: 1.2rem;
    }
    .pp-cc-subtitle {
        font-size: 0.8rem;
    }
    /* Prevent indicators row from overflowing on narrow screens */
    .pp-cc-indicators {
        flex-wrap: wrap;
        gap: 6px;
    }
    .pp-cc-indicator {
        font-size: 0.74rem;
        padding: 4px 10px;
    }
    .pp-cc-ind-badge {
        font-size: 0.65rem;
    }
    /* Coach status grid: 2-col is fine; tighten cards on small screens */
    .pp-coach-card {
        padding: 12px 14px;
    }
    .pp-coach-card-name {
        font-size: 0.82rem;
    }
}

/* ── FIX 5 ADDENDUM — Quick search mobile spacing ─────────── */
@media (max-width: 768px) {
    .pp-search-presets {
        gap: 10px;
        padding: 4px 12px 2px;
    }
    .pp-preset-btn {
        font-size: 12px;
        height: 34px;
        padding: 0 14px;
        min-width: unset;
    }
}

/* ── FIX 6 — Plugin content bottom clearance ────────────────── */
/*
 * WordPress theme footer cannot be suppressed with plugin-scoped
 * selectors without risking global side-effects. If theme footer
 * content needs hiding, use WordPress Customizer Additional CSS:
 *   @media (max-width: 768px) { .YOUR-THEME-FOOTER-CLASS { display: none; } }
 *
 * Within plugin scope: ensure wrappers have enough bottom padding
 * so plugin content never visually runs into the theme footer.
 */
@media (max-width: 768px) {
    .pp-search-wrap,
    .pp-my-tournaments,
    .pp-cc-wrap,
    .pp-tc-wrap,
    .pp-onboarding-wrap,
    .pp-upgrade-wrap {
        padding-bottom: 32px;
    }
    /* Guest: CTA fixed bar sits at bottom — give content clearance */
    .pp-search-wrap {
        padding-bottom: 90px;
    }
    /* CTA bar: subtle top separator for a branded anchor feel */
    .pp-cta-fixed-bar {
        border-top: 1px solid rgba(255,255,255,0.12);
        backdrop-filter: blur(6px);
    }
}

/* ── FIX 7 ADDENDUM — Light-theme card guard: auth + onboarding ─ */
/* These page wrappers render light-theme cards but were not in
   the original scoped guard list. Scoped to named containers only —
   no broad .pp-card override. */
.pp-onboarding-wrap .pp-card,
.pp-auth-wrap .pp-card {
    background: #ffffff !important;
    color: #0f172a !important;
    border-color: #e2e8f0 !important;
}
.pp-onboarding-wrap .pp-card-header,
.pp-onboarding-wrap .pp-card-body,
.pp-onboarding-wrap .pp-card-footer,
.pp-auth-wrap .pp-card-header,
.pp-auth-wrap .pp-card-body,
.pp-auth-wrap .pp-card-footer {
    background: transparent !important;
}

/* ==========================================================
   MOBILE FOUNDATION — v4.2.3 Zip 1
   Scope: @media (max-width: 768px) only. No desktop changes.
   No PHP changes. No JS changes. No new file enqueues.
   Baseline: pp-complete-v4.2.2-mobile-3.
   All selectors are plugin-scoped (pp-* prefix only).
   CSS variables used throughout.
   ========================================================== */

/* ──────────────────────────────────────────────────────────
   FIX 2 — MOBILE TYPOGRAPHY SCALE
   Problem: Heading and body sizes designed for desktop read
   too large and uncompressed on 375–430px mobile viewports.
   Fix: tighten heading scale only. Body text (14px) unchanged.
   ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

    /* Page title: 28px → 21px */
    .pp-page-title {
        font-size: 21px;
        letter-spacing: -0.01em;
    }

    /* Section title: 20px → 16px */
    .pp-section-title {
        font-size: 16px;
        margin-bottom: 10px;
    }

    /* Card title: 16px → 14px */
    .pp-card-title {
        font-size: 14px;
        line-height: 1.3;
    }

    /* Info grid values: 15px → 13px */
    .pp-grid-value {
        font-size: 13px;
    }
    .pp-grid-label {
        font-size: 10px;
        letter-spacing: 0.03em;
    }

    /* Command center heading: 1.4rem (~22px) → 1.1rem (~17px) */
    .pp-cc-title {
        font-size: 1.1rem !important;
    }

    /* Tournament Coach title: 22px → 18px */
    .pp-tc-title {
        font-size: 18px;
    }

    /* Onboarding title: 1.75rem (~28px) → 1.35rem (~22px) */
    .pp-ob-title {
        font-size: 1.35rem;
    }

    /* Calendar month title: 20px → 15px (already set in existing rule,
       this reinforces it) */
    .pp-tc-month-title {
        font-size: 15px;
    }

    /* Coach section label: already 0.72rem, keep but reinforce */
    .pp-cc-section-label {
        font-size: 0.7rem;
        letter-spacing: 0.07em;
    }

    /* Tour list title */
    .pp-tc-list-title {
        font-size: 15px;
    }

}

/* ──────────────────────────────────────────────────────────
   FIX 3 — MOBILE SPACING SCALE
   Problem: Cards have desktop-sized padding and sections have
   too much vertical breathing room, wasting viewport height.
   Fix: tighten card, section, and wrapper spacing on mobile.
   Desktop padding-top: 120px is excessive for Astra header
   (~70px) — reduced to 80px to reclaim visible content area.
   ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

    /* Wrapper top clearance. v4.12.0 — bumped mobile clearance from 80px back
       to 120px to match desktop. The 80px baseline (set when r4 first added
       .pp-stage-coach to the list) wasn't quite enough to clear the Astra
       mobile header + sticky elements below it; player reported buttons still
       being covered. 120px on both viewports is safer and makes the
       mobile/desktop layout visually consistent. */
    .pp-cc-wrap,
    .pp-search-wrap,
    .pp-my-tournaments,
    .pp-tc-wrap,
    .pp-onboarding-wrap,
    .pp-my-account-wrap,
    .pp-upgrade-wrap,
    .pp-login-wrap,
    .pp-register-wrap,
    .pp-stage-coach {
        padding-top: 120px;
    }

    /* Card internal padding */
    .pp-card-header {
        padding: 8px 12px 6px;
    }
    .pp-card-body {
        padding: 6px 12px;
    }
    .pp-card-footer {
        padding: 4px 12px;
    }
    .pp-card-actions {
        padding: 6px 12px 8px;
    }
    .pp-card {
        margin-bottom: 10px;
    }

    /* Info grid */
    .pp-card-grid {
        gap: 8px 10px;
        margin-bottom: 10px;
    }

    /* Thermometer wrap */
    .pp-therm-wrap {
        padding: 0 12px 10px;
    }

    /* Filter panel */
    .pp-filters {
        padding: 10px 12px;
        margin-bottom: 12px;
    }

    /* Command center section cards */
    .pp-cc-section {
        padding: 10px 12px;
        margin-bottom: 8px;
    }
    .pp-cc-header {
        margin-bottom: 12px;
    }
    .pp-cc-link-card {
        padding: 10px 12px;
    }
    .pp-cc-links-row {
        gap: 8px;
        margin-bottom: 8px;
    }

    /* Refine panel */
    .pp-tc-refine-panel,
    .pp-cc-refine-panel {
        padding: 12px 14px;
    }

    /* Single tournament view */
    .pp-single-tournament {
        padding: 12px 0;
    }
    .pp-single-row {
        padding: 10px 14px;
    }

    /* Onboarding card */
    .pp-ob-card {
        padding: 1.1rem;
    }
    .pp-ob-header {
        margin-bottom: 1.25rem;
    }

    /* Upgrade page */
    .pp-upgrade-wrap {
        padding: 80px 0 24px;
    }
    .pp-upgrade-wrap .pp-plan-card {
        padding: 20px 16px;
    }
}

/* ──────────────────────────────────────────────────────────
   FIX 4 — MOBILE BUTTON SIZES
   Problem: Desktop buttons (36–40px height) feel oversized and
   heavy on small screens. Min 44px touch target must be
   maintained for primary CTAs; secondary inline buttons can
   be smaller since they're not primary actions.
   ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

    /* Primary action button: keep 36px (still accessible; avoid
       making CTAs smaller than desktop on mobile) */
    .pp-btn-primary {
        height: 36px;
        padding: 0 16px;
        font-size: 13px;
    }

    /* Secondary button: tighten slightly */
    .pp-btn-secondary {
        height: 34px;
        padding: 0 14px;
        font-size: 13px;
    }

    /* Save / Interest: compact inline buttons — readability over tap-size
       since they are adjacent to card content, not standalone CTAs */
    .pp-save-btn {
        padding: 4px 10px !important;
        font-size: 12px !important;
        min-height: 30px;
    }
    .pp-interest-btn {
        padding: 4px 10px;
        font-size: 12px;
        min-height: 30px;
    }

    /* Report: de-emphasized, smallest of the trio */
    .pp-report-btn {
        padding: 3px 8px !important;
        font-size: 11px !important;
        min-height: 28px;
    }

    /* Quick search presets */
    .pp-preset-btn {
        height: 32px;
        padding: 0 12px;
        font-size: 12px;
        min-width: unset;
    }

    /* Mobile filter toggle button */
    /* Coach/upgrade CTAs — keep large for conversions (44px min) */
    .pp-tc-upgrade-btn {
        padding: 12px 24px;
        font-size: 15px;
        min-height: 44px;
    }
    .pp-ob-btn-next {
        padding: 10px 22px;
        font-size: 0.9rem;
        min-height: 44px;
    }

    /* Nav dropdown links — keep 44px for accessibility */
    .pp-nav-dropdown-link {
        padding: 12px 14px;
        min-height: 44px;
    }
}

/* ──────────────────────────────────────────────────────────
   FIX 5 — PILL / LABEL READABILITY
   Problem (a): .pp-tc-profile-tag uses var(--pp-gray-50) as
   background — in dark OS mode resolves to #18182a (very dark),
   creating dark pill on a light page.
   Problem (b): .pp-cc-profile-tag uses hardcoded #f4f4f0 bg
   with #444 text — no visual separation from page background.
   Fix: use brand accent tint for pill bg (matches existing
   --pp-accent-soft token). Applies only at mobile via existing
   .pp-theme-dark overrides for coach pages (from mobile-3).
   ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

    /* Tournament Coach profile pills (light-page version) */
    .pp-tc-profile-tag {
        background: var(--pp-accent-soft) !important;    /* #dcfce7 — light green */
        border-color: var(--pp-accent) !important;        /* #22c55e */
        color: var(--pp-primary-active) !important;       /* #166534 — dark green, readable */
        font-weight: 600;
        font-size: 12px;
    }

    /* Command center profile pills */
    .pp-cc-profile-tag {
        background: var(--pp-accent-soft) !important;
        border-color: var(--pp-accent) !important;
        color: var(--pp-primary-active) !important;
        font-weight: 600;
        font-size: 12px;
    }

    /* Status indicator chips (Travel, Bankroll) */
    .pp-cc-indicator {
        font-size: 0.74rem;
        padding: 4px 10px;
    }

    /* Badge sizing on mobile */
    .pp-badge {
        font-size: 10px;
        padding: 2px 8px;
        letter-spacing: 0.04em;
    }

    /* Thermometer zone labels */
    .pp-therm-zone-empty,
    .pp-therm-zone-yellow,
    .pp-therm-zone-green,
    .pp-therm-zone-fire {
        font-size: 10px;
        padding: 2px 8px;
    }

    /* Filter chips */
    .pp-filter-chip {
        font-size: 11px;
        padding: 3px 8px;
    }
}

/* ──────────────────────────────────────────────────────────
   FIX 6 — LOGIN BUTTON / HAMBURGER OVERLAP
   Problem: #pp-nav-user (position:fixed; right:12px) renders
   the guest "Log In" pill directly over the Astra mobile
   hamburger button which also sits at the top-right corner.
   Fix: on mobile guest view (login button present), shift
   #pp-nav-user to the LEFT side so hamburger has clear space.
   For logged-in (avatar), push slightly leftward from edge.
   Uses CSS :has() — supported in all modern browsers (2023+).
   Falls back gracefully in older browsers (no positioning).
   ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

    /*
     * Guest state: login pill moves to left side of header.
     * Astra hamburger at right is now unobstructed.
     * The .pp-nav-dropdown is already fullscreen fixed on mobile
     * (from mobile-2 fix), so left-positioning has no side-effect.
     */
    #pp-nav-user:has(.pp-nav-login-btn) {
        left: 16px !important;
        right: auto !important;
    }

    /*
     * Logged-in state: avatar circle pushed left of hamburger.
     * Astra hamburger is typically 40-44px wide from right edge.
     * right: 56px gives the hamburger ~44px clear space.
     */
    #pp-nav-user:has(.pp-nav-avatar-btn) {
        right: 56px !important;
    }
}

/* ──────────────────────────────────────────────────────────
   FIX 7 — POKER TOURS CARD HEADER CONTRAST
   Problem: .pp-tc-tour-item-name uses var(--pp-gold) (#c8a84b).
   If var(--pp-navy) fails to render on the header background
   (theme reset, cascade issue, or variable override on mobile),
   gold text on a light/white surface = 2.17:1 contrast (fail).
   Fix: hardcode navy background with !important, and use white
   text on the tour name instead of gold — white-on-navy = 16:1.
   Gold is a detail color, not a legibility color at small sizes.
   ────────────────────────────────────────────────────────── */
@media (max-width: 768px) {

    /* Tour item card: tighten overall */
    .pp-tc-tour-item {
        margin-bottom: 8px;
    }

    /* Tour header: force dark background regardless of cascade */
    .pp-tc-tour-item-header {
        background: var(--pp-navy, #0d0f1a) !important;
        padding: 10px 14px;
        flex-wrap: wrap;
        gap: 6px;
    }

    /* Tour name: white instead of gold — guaranteed 16:1 on navy */
    .pp-tc-tour-item-name {
        color: var(--pp-white, #ffffff) !important;
        font-size: 14px;
        line-height: 1.3;
    }

    /* Tour dates: lift opacity from 0.7 → 0.88 for readability */
    .pp-tc-tour-item-dates {
        color: rgba(255, 255, 255, 0.88) !important;
        font-size: 12px;
        white-space: normal;  /* allow wrapping on narrow screens */
    }

    /* Tour body: slightly tighter */
    .pp-tc-tour-item-body {
        padding: 10px 14px;
        font-size: 13px;
    }
}

/* END MOBILE FOUNDATION v4.2.3 Zip 1 */

/* ==========================================================
   ZIP 2 — MOBILE CARD PROGRESSIVE DISCLOSURE
   Scope: restructure tournament cards for fast mobile scanning.
   Desktop layout is unchanged — new wrappers are transparent.
   All mobile rules under @media (max-width: 768px).
   ========================================================== */

/* --- Desktop: new mobile wrappers are invisible or merged --- */
.pp-card-summary   { display: none; }
.pp-card-expand    { display: none; }
.pp-card-body-grid { display: block; }

/* Desktop: recombine split action rows into one visual row.
   .pp-card-actions-wrap is a flex container that merges both
   .pp-card-actions-primary and .pp-card-actions-secondary into
   a single row matching the original unified .pp-card-actions. */
.pp-card-actions-wrap {
    display: flex;
    align-items: center;
    padding: 8px 14px 10px;
    gap: 8px;
    border-top: 1px solid var(--pp-gray-200);
    flex-wrap: wrap;
}
/* On desktop, individual action rows lose their own chrome */
.pp-card-actions-primary,
.pp-card-actions-secondary {
    display: contents;
}
/* Contents children flatten into the wrap row — restore left/right */
.pp-card-actions-wrap .pp-card-actions-left {
    display: flex;
    gap: 8px;
    align-items: center;
}
.pp-card-actions-wrap .pp-card-actions-right {
    display: flex;
    align-items: center;
    flex-shrink: 0;
    margin-left: auto;
}

/* --- Filter panel: collapsed state (used by JS on mobile) --- */
.pp-filters.pp-filters-collapsed .pp-filter-grid,
.pp-filters.pp-filters-collapsed .pp-filter-actions {
    display: none;
}

/* ==========================================================
   MOBILE CARD LAYOUT
   ========================================================== */
@media (max-width: 768px) {

    /* ── Card container ───────────────────────────────────── */
    .pp-card {
        border-left-width: 3px;
    }

    /* ── Header: stack vertically ─────────────────────────── */
    .pp-card-header {
        flex-direction: column;
        gap: 4px;
        padding: 10px 12px 6px;
    }
    .pp-card-header-right {
        display: flex;
        gap: 8px;
        align-items: center;
    }
    .pp-card-date {
        font-size: 13px;
    }
    .pp-card-time {
        font-size: 12px;
    }
    .pp-card-title {
        font-size: 15px;
    }
    .pp-card-casino {
        font-size: 12px;
    }
    /* Limit to first badge on mobile */
    .pp-card-badges {
        gap: 4px;
    }
    .pp-card-badges .pp-badge:nth-child(n+2) {
        display: none;
    }

    /* ── Summary row (buy-in + guarantee) — mobile only ──── */
    .pp-card-summary {
        display: flex;
        gap: 16px;
        padding: 6px 12px 4px;
        border-bottom: 1px solid var(--pp-gray-100);
    }
    .pp-card-summary-item {
        display: flex;
        flex-direction: column;
        gap: 1px;
    }
    .pp-card-summary-item .pp-grid-label {
        font-size: 10px;
    }
    .pp-card-summary-item .pp-grid-value {
        font-size: 14px;
    }

    /* ── Card body: hide the full grid, show only therm ──── */
    .pp-card-body {
        padding: 6px 12px 8px;
    }
    .pp-card-body-grid {
        display: none;
    }
    .pp-card-therm {
        margin-bottom: 4px;
    }
    .pp-card-therm-meta {
        margin-bottom: 4px;
    }
    .pp-therm-count-num {
        font-size: 12px;
    }
    .pp-therm-zone-label {
        font-size: 10px;
        padding: 2px 8px;
    }

    /* ── Actions wrap: vertical stack on mobile ───────────── */
    .pp-card-actions-wrap {
        display: flex;
        flex-direction: column;
        padding: 0;
        border-top: 1px solid var(--pp-gray-200);
        gap: 0;
    }

    /* ── Primary actions (Save + Interest) ────────────────── */
    .pp-card-actions-primary {
        display: flex;
        padding: 6px 12px 4px;
        border-top: none;
    }
    .pp-card-actions-primary .pp-card-actions-left {
        display: flex;
        flex-direction: row;
        gap: 8px;
        flex: 1;
    }
    .pp-card-actions-primary .pp-save-btn,
    .pp-card-actions-primary .pp-interest-btn {
        flex: 1;
        justify-content: center;
        font-size: 13px;
        padding: 8px 10px !important;
    }

    /* ── Secondary actions (Share + Report) ────────────────── */
    .pp-card-actions-secondary {
        display: flex;
        align-items: center;
        justify-content: space-between;
        padding: 4px 12px 6px;
        border-top: none;
    }
    .pp-card-actions-secondary .pp-share-icons {
        border-left: none;
        margin-left: 0;
        padding-left: 0;
        gap: 4px;
    }
    .pp-card-actions-secondary .pp-card-actions-right {
        flex-shrink: 0;
        margin-left: auto;
    }
    .pp-card-actions-secondary .pp-report-btn {
        font-size: 0;
        padding: 6px !important;
        min-width: 28px;
        min-height: 28px;
        display: inline-flex !important;
        align-items: center;
        justify-content: center;
    }
    .pp-card-actions-secondary .pp-report-btn svg {
        width: 14px;
        height: 14px;
    }

    /* ── Expand section ────────────────────────────────────── */
    .pp-card-expand {
        display: block;
        border-top: 1px solid var(--pp-gray-100);
    }
    .pp-card-expand-toggle {
        display: flex;
        align-items: center;
        justify-content: center;
        gap: 6px;
        width: 100%;
        padding: 8px 12px;
        background: var(--pp-gray-50);
        border: none;
        cursor: pointer;
        font-size: 12px;
        font-weight: 600;
        color: var(--pp-text-secondary);
        letter-spacing: 0.02em;
    }
    .pp-card-expand-toggle:hover {
        background: var(--pp-gray-100);
    }
    .pp-card-expand-arrow {
        font-size: 10px;
        line-height: 1;
    }
    .pp-card-expand-content {
        padding: 10px 12px;
        border-top: 1px solid var(--pp-gray-100);
    }
    .pp-card-expand-content .pp-card-grid {
        grid-template-columns: repeat(2, 1fr);
        gap: 8px 10px;
        margin-bottom: 10px;
    }
    .pp-card-expand-content .pp-card-footer {
        border-top: none;
        padding: 6px 0 0;
    }

    /* ── Hide desktop footer (shown inside expand instead) ── */
    .pp-card > .pp-card-footer {
        display: none;
    }

    /* ── Filter panel: presets visible on mobile ──────────── */
    .pp-search-presets {
        display: flex;
    }
}

/* END ZIP 2 — MOBILE CARD PROGRESSIVE DISCLOSURE */

/* ── v4.4.0 additions ──────────────────────────────────────────────────── */

/* Best Move card */
.pp-bc-best-move { border-left: 3px solid var(--pp-accent); }
.pp-bc-best-move-msg { font-size: 0.95rem; font-weight: 500; line-height: 1.5; margin: 0; color: var(--pp-text-primary); }

/* Shot labels */
.pp-shot-label {
    display: inline-block; font-size: 0.68rem; font-weight: 700;
    padding: 2px 8px; border-radius: 999px; margin-left: 6px;
    vertical-align: middle; text-transform: uppercase; letter-spacing: 0.04em;
}
.pp-shot-label-safe        { background: var(--pp-accent-soft); color: var(--pp-accent); }
.pp-shot-label-controlled  { background: #fef9c3; color: #92400e; }
.pp-shot-label-expensive   { background: #fee2e2; color: #b91c1c; }
.pp-theme-dark .pp-shot-label-controlled { background: rgba(245,158,11,0.15); color: #fbbf24; }
.pp-theme-dark .pp-shot-label-expensive  { background: rgba(239,68,68,0.15);  color: #f87171; }

/* Prep message */
.pp-tc-prep-msg {
    font-size: 0.83rem; color: var(--pp-text-muted);
    margin: 10px 0 0; padding-top: 10px;
    border-top: 1px solid var(--pp-border); line-height: 1.5;
}

/* My Path default bankroll note */
.pp-mp-bankroll-note { font-size: 0.78rem; color: var(--pp-text-muted); margin: 0 0 10px; }
.pp-mp-bankroll-note a { color: var(--pp-accent); text-decoration: none; }
.pp-mp-bankroll-note a:hover { text-decoration: underline; }

/* ============================================================
   v4.23.6 — My Path full visual upgrade
   Wraps both Plus dashboard + free-user view in pp-cc-wrap pp-theme-dark
   pp-mp-page pp-mp-wrap-tight; layers pp-mp-card chrome on top of legacy
   .pp-account-section via compound class (per founder ruling 6).
   ============================================================ */

.pp-mp-wrap-tight {
    padding-top: 24px !important;
}

.pp-mp-page {
    /* Outer page modifier — reserved for future overrides. */
}

/* v4.23.6 .pp-mp-card single-class rule REMOVED in v4.23.7 — its properties
   are subsumed into the new .pp-mp-page .pp-account-section.pp-mp-card compound
   selector at end of file (HUNK 1.1) which beats the external (0,2,0) theme rule. */

/* Locked coach card variant — full color (not dimmed), lock icon top-right,
   Player Plus badge bottom-center. Used in free-view locked-coaches-grid teaser.
   v4.23.7 HUNK 3: added padding-bottom: 36px to make room for the absolute-positioned
   .pp-mp-coach-lock-badge that previously overlapped .pp-coach-desc text. */
.pp-mp-coach-card-locked {
    position: relative;
    padding-bottom: 36px !important;
}

.pp-mp-coach-lock-icon {
    position: absolute;
    top: 10px;
    right: 10px;
    width: 16px;
    height: 16px;
    color: var(--pp-text-muted);
}

.pp-mp-coach-lock-badge {
    position: absolute;
    bottom: 8px;
    left: 50%;
    transform: translateX(-50%);
    display: inline-flex;
    align-items: center;
    padding: 2px 8px;
    border-radius: 999px;
    background: rgba(212, 175, 55, 0.18);
    color: #fbbf24;
    font-size: 9px;
    font-weight: 700;
    letter-spacing: 0.08em;
    text-transform: uppercase;
}

/* Free-view dark-theme rectification for legacy promo blocks
   (Gate 6 v1 REVISE Medium 5 fix: the pp-locked-box, pp-blur-preview,
   pp-lock-overlay, pp-plus-block, pp-tournament-list, pp-next-step-strip,
   pp-lock-title, pp-lock-sub blocks were styled for the light theme; the
   v4.23.6 dark wrapper would have made their text unreadable without
   these overrides). Markup is preserved verbatim per founder ruling 5. */
.pp-mp-free-view .pp-locked-box,
.pp-mp-free-view .pp-blur-preview,
.pp-mp-free-view .pp-lock-overlay,
.pp-mp-free-view .pp-plus-block,
.pp-mp-free-view .pp-tournament-list,
.pp-mp-free-view .pp-next-step-strip {
    color: var(--pp-text-primary);
}

.pp-mp-free-view .pp-plus-block {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 20px;
}

.pp-mp-free-view .pp-plus-trigger,
.pp-mp-free-view .pp-plus-headline,
.pp-mp-free-view .pp-plus-sub,
.pp-mp-free-view .pp-plus-benefits li,
.pp-mp-free-view .pp-price-tag {
    color: var(--pp-text-primary);
}

.pp-mp-free-view .pp-plus-headline {
    color: #fbbf24;
}

.pp-mp-free-view .pp-locked-box {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 16px;
}

.pp-mp-free-view .pp-lock-title,
.pp-mp-free-view .pp-lock-sub {
    color: var(--pp-text-primary);
}

/* ── v4.5.0 Shot Selection Coach ────────────────────────────────────────── */

/* Page layout */
.pp-ss-page { max-width: 680px; margin: 0 auto; }

/* Selector */
.pp-ss-selector { display: flex; align-items: center; gap: 10px; margin-bottom: 1.5rem; }
.pp-ss-selector label { font-size: 12px; color: var(--pp-text-muted); white-space: nowrap; }
.pp-ss-selector select { flex: 1; font-size: 13px; padding: 7px 10px; border: 1px solid var(--pp-border); border-radius: 8px; background: var(--pp-surface); color: var(--pp-text-primary); }

/* v4.23.0 — URL parameter notice (Migration 5).
   Surfaced when ?tournament_id=N targets a saved-but-past tournament (Case C)
   or an unsaved tournament (Case D). System tokens with var() fallbacks for
   tokens that don't yet exist in the design-token block (--pp-warning-bg). */
.pp-ss-url-notice {
    background: var(--pp-warning-bg, rgba(245, 158, 11, 0.12));
    border-left: 3px solid var(--pp-warning, #f59e0b);
    border-radius: 6px;
    padding: 10px 14px;
    margin-bottom: 16px;
    font-size: 13px;
    color: var(--pp-text-primary);
    line-height: 1.5;
}

/* Verdict card */
.pp-ss-verdict-card { background: var(--pp-surface); border: 1px solid var(--pp-border); border-radius: 12px; padding: 1.5rem; margin-bottom: 1rem; border-left: 4px solid var(--pp-border); }
.pp-ss-verdict-play   { border-left-color: #22c55e; }
.pp-ss-verdict-adjust { border-left-color: #f59e0b; }
.pp-ss-verdict-skip   { border-left-color: #ef4444; }

.pp-ss-verdict-label { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pp-text-muted); margin-bottom: 6px; }
.pp-ss-verdict-text { font-size: 22px; font-weight: 500; margin-bottom: 6px; color: var(--pp-text-primary); }
.pp-ss-verdict-text.pp-ss-verdict-play   { color: #16a34a; }
.pp-ss-verdict-text.pp-ss-verdict-adjust { color: #b45309; }
.pp-ss-verdict-text.pp-ss-verdict-skip   { color: #dc2626; }
.pp-theme-dark .pp-ss-verdict-text.pp-ss-verdict-play   { color: #4ade80; }
.pp-theme-dark .pp-ss-verdict-text.pp-ss-verdict-adjust { color: #fbbf24; }
.pp-theme-dark .pp-ss-verdict-text.pp-ss-verdict-skip   { color: #f87171; }

.pp-ss-confidence { font-size: 12px; color: var(--pp-text-muted); margin-bottom: 12px; }
.pp-ss-directive { font-size: 14px; color: var(--pp-text-secondary); line-height: 1.6; margin-bottom: 2px; }

/* Breakdown grid */
.pp-ss-breakdown { background: var(--pp-bg); border-radius: 8px; padding: 1rem; margin-bottom: 1rem; display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.pp-ss-breakdown-item { display: flex; flex-direction: column; gap: 3px; }
.pp-ss-breakdown-label { font-size: 11px; color: var(--pp-text-muted); text-transform: uppercase; letter-spacing: 0.05em; }
.pp-ss-breakdown-value { font-size: 14px; font-weight: 500; color: var(--pp-text-primary); }

/* Section cards */
.pp-ss-card { background: var(--pp-surface); border: 1px solid var(--pp-border); border-radius: 12px; padding: 1.25rem; margin-bottom: 1rem; }
.pp-ss-card-title { font-size: 11px; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; color: var(--pp-text-muted); margin-bottom: 10px; }

/* Reasoning */
.pp-ss-reason-row { display: flex; align-items: flex-start; gap: 8px; margin-bottom: 8px; font-size: 13px; color: var(--pp-text-secondary); line-height: 1.5; }
.pp-ss-reason-dot { width: 6px; height: 6px; border-radius: 50%; flex-shrink: 0; margin-top: 5px; }
.pp-ss-reason-dot-red    { background: #ef4444; }
.pp-ss-reason-dot-amber  { background: #f59e0b; }
.pp-ss-reason-dot-green  { background: #22c55e; }
.pp-ss-icm-note { font-size: 12px; color: var(--pp-text-muted); font-style: italic; padding: 8px 0 0; border-top: 1px solid var(--pp-border); margin-top: 8px; }

/* Alternatives */
.pp-ss-alt-row { display: flex; align-items: center; justify-content: space-between; padding: 10px 0; border-bottom: 1px solid var(--pp-border); }
.pp-ss-alt-row:last-child { border-bottom: none; padding-bottom: 0; }
.pp-ss-alt-name { font-size: 13px; font-weight: 500; color: var(--pp-text-primary); }
.pp-ss-alt-meta { font-size: 12px; color: var(--pp-text-muted); margin-top: 2px; }

/* Quick adjustments */
.pp-ss-adjust-row { display: flex; align-items: center; gap: 8px; padding: 8px 0; border-bottom: 1px solid var(--pp-border); font-size: 13px; color: var(--pp-text-secondary); }
.pp-ss-adjust-row:last-child { border-bottom: none; }
.pp-ss-adjust-result { font-weight: 500; color: #16a34a; }
.pp-theme-dark .pp-ss-adjust-result { color: #4ade80; }

/* Shot advice link on tournament cards */
.pp-shot-advice-link { font-size: 12px; color: var(--pp-accent); text-decoration: none; padding: 4px 8px; border: 1px solid var(--pp-accent); border-radius: 999px; white-space: nowrap; }
.pp-shot-advice-link:hover { background: var(--pp-accent-soft); }

/* Evaluate link on My Path rows */
.pp-ss-evaluate-link { font-size: 12px; color: var(--pp-accent); text-decoration: none; white-space: nowrap; margin-left: 8px; }
.pp-ss-evaluate-link:hover { text-decoration: underline; }

/* Empty state */
.pp-ss-empty { text-align: center; padding: 3rem 1rem; }
.pp-ss-empty-title { font-size: 18px; font-weight: 500; color: var(--pp-text-primary); margin-bottom: 8px; }
.pp-ss-empty-sub { font-size: 14px; color: var(--pp-text-secondary); margin-bottom: 1.5rem; }

/* ============================================================
   v4.23.4 visual upgrade — Shot Selection
   Mirrors Bankroll Coach patterns under namespace-pure pp-ss-* rules.
   No cross-namespace consumption of pp-bc-* classes. Hero classes
   (pp-coach-page-title / pp-coach-page-subtitle) reused directly.
   ============================================================ */

/* Wrapper padding override (parallel to pp-bc-wrap-tight) */
.pp-ss-wrap-tight {
    padding-top: 24px !important;
}

/* Tournament selector — replaces naked HTML select with card chrome */
.pp-ss-selector-card {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 12px 14px;
    margin-bottom: 16px;
}

.pp-ss-selector-label {
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    color: var(--pp-text-muted);
    margin-bottom: 6px;
}

.pp-ss-selector-card select {
    width: 100%;
    border: none;
    background: transparent;
    color: var(--pp-text-primary);
    font-size: 15px;
    font-weight: 500;
    padding: 4px 0;
    cursor: pointer;
    appearance: none;
    -webkit-appearance: none;
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath fill='%2394a3b8' d='M6 8L0 0h12z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right center;
    padding-right: 20px;
}

.pp-ss-selector-card select:focus {
    outline: none;
}

/* Verdict pill — added top-right of verdict card header */
.pp-ss-verdict-pill {
    display: inline-flex;
    align-items: center;
    gap: 6px;
    padding: 4px 10px;
    border-radius: 999px;
    font-size: 10px;
    font-weight: 700;
    letter-spacing: 0.10em;
    text-transform: uppercase;
    white-space: nowrap;
}

.pp-ss-verdict-pill::before {
    content: '';
    width: 6px;
    height: 6px;
    border-radius: 50%;
}

.pp-ss-verdict-pill.pp-ss-verdict-skip {
    background: rgba(239, 68, 68, 0.12);
    border: 1px solid rgba(239, 68, 68, 0.3);
    color: #f87171;
}
.pp-ss-verdict-pill.pp-ss-verdict-skip::before {
    background: #ef4444;
}

.pp-ss-verdict-pill.pp-ss-verdict-adjust {
    background: rgba(245, 158, 11, 0.12);
    border: 1px solid rgba(245, 158, 11, 0.3);
    color: #fbbf24;
}
.pp-ss-verdict-pill.pp-ss-verdict-adjust::before {
    background: #f59e0b;
}

.pp-ss-verdict-pill.pp-ss-verdict-play {
    background: rgba(34, 197, 94, 0.12);
    border: 1px solid rgba(34, 197, 94, 0.3);
    color: #4ade80;
}
.pp-ss-verdict-pill.pp-ss-verdict-play::before {
    background: #22c55e;
}

/* Verdict card header — flex row to position pill top-right */
.pp-ss-verdict-header {
    display: flex;
    justify-content: space-between;
    align-items: center;
    gap: 12px;
    margin-bottom: 14px;
}

/* Stat row pattern (mirror of pp-bc-stat-row) — replaces 2-col breakdown grid */
.pp-ss-stat-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 14px 0;
    border-bottom: 1px solid var(--pp-border);
}

.pp-ss-stat-row:last-child {
    border-bottom: none;
}

.pp-ss-stat-label {
    font-size: 14px;
    color: var(--pp-text-secondary);
}

.pp-ss-stat-value {
    font-size: 17px;
    font-weight: 500;
    color: var(--pp-text-primary);
    text-align: right;
}

.pp-ss-stat-value-money {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif;
    font-size: 19px;
}

/* Inline pill chip on stat values (mirror of pp-bc-micro-pct) */
.pp-ss-micro-pct {
    display: inline-flex;
    align-items: center;
    padding: 3px 9px;
    border-radius: 999px;
    background: rgba(245, 158, 11, 0.15);
    color: #fbbf24;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    margin-left: 8px;
    vertical-align: middle;
}

/* Inline status word with em-dash separator (e.g., "— On Track") */
.pp-ss-row-status {
    color: #4ade80;
    font-weight: 500;
}

.pp-ss-row-status::before {
    content: '— ';
    color: var(--pp-text-faint, #64748b);
    font-weight: 400;
}

/* Section card with right-aligned context (mirror of pp-bc-panel-header) */
.pp-ss-card-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding-bottom: 14px;
    border-bottom: 1px solid var(--pp-border);
    margin-bottom: 4px;
}

/* v4.23.4 Blocker 2 — utility modifier for card-headers that don't render a
   separator border (Coach Reasoning, Quick Adjustments). Replaces inline
   static-spacing styles. The Quick Adjustments site additionally needs
   margin-bottom: 12px and keeps that one differing property as inline override. */
.pp-ss-card-header-flat {
    border-bottom: none;
    padding-bottom: 0;
    margin-bottom: 0;
}

.pp-ss-card-context {
    font-size: 12px;
    font-style: italic;
    color: var(--pp-text-faint, #64748b);
}

/* Thermometer bar (mirror of pp-bc-bar-section family) */
.pp-ss-thermo-row {
    padding: 14px 0;
    border-bottom: 1px solid var(--pp-border);
}

.pp-ss-thermo-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 10px;
}

.pp-ss-thermo-label {
    font-size: 14px;
    color: var(--pp-text-secondary);
}

.pp-ss-thermo-value {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif;
    font-size: 17px;
    color: var(--pp-text-primary);
}

.pp-ss-thermo-track {
    height: 8px;
    background: var(--pp-bg, #0f1820);
    border-radius: 4px;
    overflow: hidden;
    margin-bottom: 8px;
}

.pp-ss-thermo-fill {
    height: 100%;
    background: linear-gradient(90deg, #4ade80 0%, #6ee7b7 100%);
    border-radius: 4px;
}

.pp-ss-thermo-scale {
    display: flex;
    justify-content: space-between;
    font-size: 11px;
    color: var(--pp-text-faint, #64748b);
}

/* Quick adjustment gold gradient cards (NON-INTERACTIVE — visual only) */
.pp-ss-adjust-cta {
    display: block;
    width: 100%;
    background: linear-gradient(
        135deg,
        rgb(251, 226, 138) 0%,
        rgb(230, 195, 77) 50%,
        rgb(212, 175, 55) 100%
    );
    border: none;
    border-radius: 14px;
    padding: 16px 18px;
    text-align: left;
    color: #1a1a1a;
    margin-bottom: 12px;
    box-shadow: 0 4px 16px rgba(212, 175, 55, 0.25);
}

.pp-ss-adjust-cta:last-child {
    margin-bottom: 0;
}

.pp-ss-adjust-action {
    font-size: 16px;
    font-weight: 700;
    line-height: 1.3;
    margin-bottom: 4px;
}

.pp-ss-adjust-impact {
    font-size: 13px;
    font-weight: 500;
    color: rgba(26, 26, 26, 0.75);
}

.pp-ss-adjust-impact::before {
    content: '→ ';
    font-weight: 700;
}

/* Verdict text — keep existing color logic from pp-ss-verdict-skip/-adjust/-play
   compound selectors (lines 5392-5398), but bump font-size for upgraded look.
   This declaration overrides the original pp-ss-verdict-text rule by source order. */
.pp-ss-verdict-text {
    font-size: 26px;
    font-weight: 500;
    color: var(--pp-text-primary);
    line-height: 1.15;
    margin-bottom: 10px;
}

/* Fix Shot Selection nav button to match standard nav styling */
.menu-item a[href*="shot-selection"] {
    background: transparent !important;
    color: inherit !important;
    padding: inherit !important;
    border-radius: 0 !important;
}

/* Nav fixes */
.menu-item a[href*="table-coach"] { background: transparent !important; color: inherit !important; padding: inherit !important; border-radius: 0 !important; }
.menu-item a[href*="shot-selection"] { background: transparent !important; color: inherit !important; padding: inherit !important; border-radius: 0 !important; }

/* Fixed nav padding — non-coach pages */
.ast-header-break-point .site-content,
.main-header-bar-wrap ~ .site-content,
body.ast-header-fixed .site-content {
    padding-top: 80px;
}

/* =========================================================================
   v4.20.2 W5 — Tour calendar saved-tour highlight
   =========================================================================
   Cells containing at least one user-saved tour get a gold left-border
   accent and a faintly tinted background. The .pp-tc-cal-event-saved
   class on the inner event-marker uses the gold accent for the marker
   text/border too — makes it visually clear which event is the user's
   saved one when a cell holds multiple events. Logged-out users see
   no .pp-tc-cell-saved class (savedTourSet is empty), so all cells
   render with the default neutral accent.
*/
.pp-tc-cell.pp-tc-cell-saved {
    border-left: 3px solid #d4af37;
    background: rgba(212, 175, 55, 0.06);
}
.pp-tc-cal-event.pp-tc-cal-event-saved {
    color: #b8860b;
    font-weight: 500;
}

/* =========================================================================
   v4.20.2 W6 — Date-grouped results: date headers
   =========================================================================
   .pp-results-date-header — tournament list date headers (rendered between
                             groups by pokerpath.js renderResults).
   .pp-tc-list-date-header  — tour list date-range headers (rendered between
                             groups by pokerpath.js renderMonthList).
   Both carry id="date-header-YYYY-MM-DD" so the calendar's smooth-scroll
   click handlers can anchor to them. Visual treatment: gold uppercase label,
   subtle bottom border, generous top margin (so the header reads as
   separating one group from the next).
*/
.pp-results-date-header,
.pp-tc-list-date-header {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.5px;
    text-transform: uppercase;
    color: #d4af37;
    margin: 18px 0 10px;
    padding-bottom: 6px;
    border-bottom: 1px solid rgba(212, 175, 55, 0.25);
    scroll-margin-top: 100px; /* respect sticky-header so the header isn't hidden under it on smooth-scroll */
}
.pp-results-date-header:first-of-type,
.pp-tc-list-date-header:first-of-type {
    margin-top: 4px;
}

/* =========================================================
   v4.20.2-r3 Fix 3 — .pp-date-header (NEW class for shared
   styling of date-group headers across tournaments + tours)

   ── HOMEPAGE PROTECTION AUDIT ─────────────────────────────
   - .pp-date-header is a NEW class introduced in r3.
   - It is added by JS renderers (renderResults for tournaments,
     renderMonthList for tours) onto date-group header divs.
   - Homepage uses [pp_search_open] / [pp_search] but never
     renders results inline — runSearch() on the homepage path
     redirects to /tournaments/?... rather than rendering
     locally. Therefore renderResults() never executes on
     homepage and .pp-date-header never appears on homepage.
   - Tours uses [pp_tour_calendar] which renders only on
     /poker-tours/ via renderMonthList. Not on homepage.
   - Conclusion: .pp-date-header CANNOT match any homepage
     element. Selector cannot affect homepage rendering.
   ========================================================= */

.pp-date-header {
    display: block;
    font-size: 13px;
    font-weight: 600;
    text-transform: uppercase;
    letter-spacing: 0.6px;
    color: #b58a1a; /* darker gold for AAA contrast on light bg */
    margin: 22px 0 10px;
    padding: 6px 0 6px 12px;
    border-left: 3px solid #d4af37;
    background: rgba(212, 175, 55, 0.06);
    border-radius: 0 4px 4px 0;
    scroll-margin-top: 100px;
}
.pp-date-header:first-of-type {
    margin-top: 8px;
}
@media (max-width: 768px) {
    .pp-date-header {
        font-size: 12px;
        padding: 5px 0 5px 10px;
        margin: 16px 0 8px;
    }
}

/* =========================================================
   v4.20.2-r3 Fix 4 — .pp-sort-bar + .pp-sort-select (NEW
   classes for results sort UI on /tournaments/ + /poker-tours/)

   ── HOMEPAGE PROTECTION AUDIT ─────────────────────────────
   - Both classes are NEW in r3.
   - .pp-sort-bar is rendered by JS only in two code paths:
       1. renderResults() — tournaments page (gated by
          PP.is_homepage check — runSearch on homepage
          redirects rather than renders, so renderResults
          never runs on homepage).
       2. renderMonthList() — tours page (only fires inside
          the [pp_tour_calendar] container, which is not on
          homepage).
   - Selectors below cannot match any element on the
     homepage because the JS renderers never inject the
     element on homepage.
   ========================================================= */

.pp-sort-bar {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
    margin: 8px 0 14px;
    padding: 10px 14px;
    background: var(--pp-gray-50, #f9fafb);
    border: 1px solid var(--pp-gray-200, #e5e7eb);
    border-radius: var(--pp-radius-md, 8px);
    font-size: 14px;
    color: var(--pp-gray-700, #374151);
}
.pp-sort-bar .pp-sort-bar-count {
    font-weight: 500;
    flex: 1 1 auto;
    min-width: 0;
}
.pp-sort-bar .pp-sort-bar-label {
    font-weight: 500;
    color: var(--pp-gray-600, #4b5563);
}
.pp-sort-bar .pp-sort-select {
    padding: 6px 10px;
    border: 1px solid var(--pp-gray-300, #d1d5db);
    border-radius: 6px;
    background: #fff;
    font-size: 14px;
    color: var(--pp-gray-800, #1f2937);
    cursor: pointer;
    min-height: 36px;
}
.pp-sort-bar .pp-sort-select:focus {
    outline: 2px solid var(--pp-primary, #1f7a3a);
    outline-offset: 1px;
}
@media (max-width: 768px) {
    .pp-sort-bar {
        gap: 8px;
        padding: 10px 12px;
    }
    .pp-sort-bar .pp-sort-select {
        flex: 1 1 100%;
    }
}

/* ============================================================
   BANKROLL COACH v4.21.0 — Cycle 1 visual pass
   Self-contained typography per Gate 6 v3.1 PATCH 2
   ============================================================ */

.pp-bc-panel,
.pp-bc-assess {
    font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', system-ui, sans-serif;
    font-feature-settings: 'tnum';
    font-variant-numeric: tabular-nums;
}

.pp-bc-panel {
    background: #161b2e;
    border-radius: 10px;
    margin-bottom: 12px;
    overflow: hidden;
}
.pp-bc-panel-header {
    padding: 12px 14px 8px;
    display: flex;
    justify-content: space-between;
    align-items: baseline;
}
.pp-bc-panel-label {
    font-size: 10px;
    font-weight: 600;
    color: #5a667a;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}
.pp-bc-panel-meta {
    font-size: 11px;
    font-weight: 500;
    color: #7d8aa0;
}
.pp-bc-panel-body {
    padding: 4px 14px 14px;
}

.pp-bc-stat-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 9px 0;
    border-bottom: 1px solid #232940;
}
.pp-bc-stat-row:last-child { border-bottom: none; }
.pp-bc-stat-label {
    font-size: 12px;
    font-weight: 500;
    color: #b8c0cf;
}
.pp-bc-stat-value {
    font-size: 18px;
    font-weight: 600;
    color: #e6ebf2;
    letter-spacing: -0.02em;
}
.pp-bc-value-green, .pp-bc-stat-value.pp-bc-value-green { color: #4ade80; }
.pp-bc-value-on-track, .pp-bc-stat-value.pp-bc-value-on-track { color: #4ade80; }
.pp-bc-value-tight, .pp-bc-stat-value.pp-bc-value-tight { color: #f59e0b; }
.pp-bc-value-over, .pp-bc-stat-value.pp-bc-value-over { color: #f87171; }

.pp-bc-micro-pct {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    margin-left: 6px;
    padding: 1px 5px;
    border-radius: 3px;
    vertical-align: middle;
    letter-spacing: 0;
}
.pp-bc-micro-pct-over { background: rgba(239, 68, 68, 0.15); color: #f87171; }
.pp-bc-micro-pct-under { background: rgba(93, 202, 165, 0.15); color: #4ade80; }

.pp-bc-bar-section {
    padding-top: 10px;
    margin-top: 6px;
    border-top: 1px solid #232940;
}
.pp-bc-bar-header {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-bottom: 8px;
}
.pp-bc-bar-title {
    font-size: 11px;
    font-weight: 500;
    color: #7d8aa0;
}
.pp-bc-bar-delta {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.01em;
}
.pp-bc-delta-over { color: #f87171; }
.pp-bc-delta-under { color: #4ade80; }
.pp-bc-bar-track {
    background: #1a2038;
    height: 24px;
    border-radius: 3px;
    overflow: hidden;
    display: flex;
    position: relative;
}
.pp-bc-bar-segment { height: 100%; }
.pp-bc-bar-segment-budget { background: #5dcaa5; }
.pp-bc-bar-segment-over { background: #ef4444; }
.pp-bc-bar-axis {
    display: flex;
    justify-content: space-between;
    margin-top: 6px;
    font-size: 10px;
    color: #7d8aa0;
    font-weight: 500;
}
.pp-bc-bar-exposure-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    margin-top: 12px;
    padding-top: 8px;
    border-top: 1px solid #232940;
}
.pp-bc-bar-exposure-label {
    font-size: 11px;
    font-weight: 500;
    color: #7d8aa0;
}
.pp-bc-bar-exposure-value {
    font-size: 13px;
    font-weight: 600;
    letter-spacing: -0.01em;
}

.pp-bc-assess {
    background: #1a1530;
    border: 1px solid #5d4ab7;
    border-radius: 10px;
    padding: 14px;
    margin-bottom: 12px;
}
.pp-bc-assess-header {
    display: flex;
    align-items: center;
    gap: 7px;
    font-size: 10px;
    font-weight: 600;
    color: #8b7fd6;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 10px;
}
.pp-bc-assess-icon {
    display: inline-flex;
    width: 14px;
    height: 14px;
    border: 1px solid #8b7fd6;
    border-radius: 50%;
    align-items: center;
    justify-content: center;
    font-size: 10px;
    font-style: italic;
    font-weight: 600;
}
.pp-bc-assess-headline {
    font-size: 17px;
    font-weight: 600;
    color: #e6ebf2;
    letter-spacing: -0.02em;
    margin-bottom: 10px;
}
.pp-bc-assess-body {
    font-size: 13px;
    color: #b8c0cf;
    line-height: 1.5;
    margin-bottom: 4px;
}
.pp-bc-assess-shot {
    font-size: 11px;
    font-weight: 500;
    color: #7d8aa0;
    line-height: 1.4;
    margin-top: 10px;
    padding-top: 8px;
    border-top: 1px solid #2a2540;
    font-style: italic;
}

.pp-bc-plan-summary-row {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 8px 0 12px;
    border-bottom: 1px solid #232940;
}
.pp-bc-plan-summary-text {
    font-size: 13px;
    font-weight: 600;
    color: #b8c0cf;
}
.pp-bc-badge {
    font-size: 10px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 4px;
    letter-spacing: 0.06em;
}
.pp-bc-badge-skip { background: #3a1a20; color: #f0997b; }
.pp-bc-badge-consider { background: #2a2540; color: #aea6e8; }
.pp-bc-badge-play { background: #0e2a23; color: #5dcaa5; }

.pp-bc-event-row {
    display: grid;
    grid-template-columns: 1fr auto;
    gap: 10px;
    padding: 10px 0;
    border-bottom: 1px solid #232940;
    align-items: center;
}
.pp-bc-event-row:last-child { border-bottom: none; }
.pp-bc-event-name {
    font-size: 13px;
    font-weight: 600;
    color: #e6ebf2;
    line-height: 1.25;
    word-break: break-word;
    overflow-wrap: anywhere;
    white-space: normal;
}
@media (max-width: 600px) {
    .pp-bc-event-name {
        font-size: 0.82rem;
    }
}
.pp-bc-event-tag {
    background: #2a2540;
    color: #aea6e8;
    font-size: 9px;
    font-weight: 600;
    padding: 1px 5px;
    border-radius: 3px;
    margin-left: 6px;
    letter-spacing: 0.04em;
    vertical-align: middle;
}
.pp-bc-event-meta {
    font-size: 11px;
    font-weight: 500;
    color: #7d8aa0;
    margin-top: 3px;
}
.pp-bc-event-meta-amount {
    color: #b8c0cf;
    font-weight: 600;
}

.pp-bc-optimize-section {
    margin-top: 14px;
    padding-top: 12px;
    border-top: 1px solid #232940;
}
.pp-bc-optimize-label {
    font-size: 10px;
    font-weight: 600;
    color: #5a667a;
    letter-spacing: 0.12em;
    text-transform: uppercase;
    margin-bottom: 8px;
}
.pp-bc-optimize-list {
    list-style: none;
    padding: 0;
    margin: 0;
}
.pp-bc-optimize-list li {
    font-size: 12px;
    color: #b8c0cf;
    line-height: 1.55;
    margin-bottom: 4px;
    padding-left: 14px;
    position: relative;
}
.pp-bc-optimize-list li::before {
    content: "→";
    position: absolute;
    left: 0;
    color: #7d8aa0;
    font-weight: 500;
}

.pp-bc-setting-row {
    display: flex;
    justify-content: space-between;
    padding: 9px 0;
    border-bottom: 1px solid #232940;
}
.pp-bc-setting-row:last-child { border-bottom: none; }
.pp-bc-setting-label {
    font-size: 12px;
    font-weight: 500;
    color: #b8c0cf;
}
.pp-bc-setting-value {
    font-size: 13px;
    font-weight: 600;
    color: #e6ebf2;
    letter-spacing: -0.01em;
}
.pp-bc-settings-hint {
    font-size: 11px;
    color: #7d8aa0;
    margin-bottom: 6px;
    margin-top: 0;
}

.pp-bc-edit-toggle {
    background: #1a2038;
    color: #e6ebf2;
    border: 1px solid #2e3550;
    padding: 9px 16px;
    border-radius: 6px;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    margin-top: 12px;
    font-family: inherit;
    letter-spacing: -0.01em;
    transition: background 0.15s ease, border-color 0.15s ease;
    display: inline-block;
}
.pp-bc-edit-toggle:hover {
    background: #232940;
    border-color: #3a4055;
}

.pp-bc-empty {
    padding: 16px 0;
    text-align: center;
}
.pp-bc-empty p {
    color: #7d8aa0;
    font-size: 13px;
    margin-bottom: 12px;
}


/* ============================================================
   BANKROLL COACH v4.21.1 — Cycle 1 v3.6 visual cleanup
   Title styling matches homepage hero, tight top spacing,
   functional Skip button. Scoped to .pp-bc-* selectors only.
   ============================================================ */

/* R3 — Bankroll-specific override of the 120px Elementor header clearance.
   Shared .pp-cc-wrap rule (line 2857-2872) keeps its 120px for Tournament
   Coach and other consumers. */
.pp-bc-wrap-tight {
    padding-top: 24px !important;
}

/* R1 — Hero-style page title (Playfair Display + gold gradient).
   Site-wide Playfair Display loading is handled by the theme/plugin
   (see pp-v4-19-fixes.css §18). NEW class — does NOT override
   shared .pp-cc-title used by Tournament Coach. */
.pp-coach-page-title {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif;
    font-weight: 500;
    font-size: 30px;
    letter-spacing: 0.5px;
    text-align: center;
    line-height: 1.1;
    margin: 0 0 8px;
    background-image: linear-gradient(rgb(251, 226, 138) 0%, rgb(230, 195, 77) 35%, rgb(212, 175, 55) 65%, rgb(156, 119, 26) 100%);
    background-clip: text;
    -webkit-background-clip: text;
    -webkit-text-fill-color: transparent;
    color: transparent;
}

.pp-coach-page-subtitle {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif;
    font-weight: 400;
    font-size: 14px;
    letter-spacing: 0.5px;
    text-align: center;
    color: #94a3b8;
    margin: 0 0 16px;
    font-style: italic;
}

/* R2 — Edit profile link wrapper (centered below subtitle). */
.pp-bc-edit-profile-wrap {
    text-align: center;
    margin-bottom: 16px;
}

/* R4 — Functional Skip button styling (looks like a tappable button,
   not a static badge). Disabled / hover / active states for tactile UX. */
.pp-bc-skip-btn {
    cursor: pointer;
    border: 1px solid #5a2a30;
    background: #3a1a20;
    color: #f0997b;
    font-size: 10px;
    font-weight: 600;
    padding: 4px 10px;
    border-radius: 4px;
    letter-spacing: 0.06em;
    transition: background 0.15s ease, border-color 0.15s ease;
    font-family: inherit;
}
.pp-bc-skip-btn:hover,
.pp-bc-skip-btn:active {
    background: #4a2228;
    border-color: #7a3540;
}
.pp-bc-skip-btn:disabled {
    opacity: 0.6;
    cursor: not-allowed;
}


/* ============================================================
   TRAVEL COACH v4.22.0 — Cycle 2a visual pass
   Section 7 visual contract. Self-contained .pp-tc-* namespace
   parallel to Bankroll Coach v4.21.1's .pp-bc-panel pattern.
   ============================================================ */

/* Wrapper override (Elementor clearance, parallel to .pp-bc-wrap-tight) */
.pp-tc-wrap-tight {
    padding-top: 24px !important;
}

/* v4.23.5 — Stage Coach hero retrofit. Targets .pp-stage-coach wrappers.
   Defense-in-depth against the @media (max-width: 768px) mobile-clearance rule
   at line ~4787 that includes .pp-stage-coach in a 120px padding-top list.
   Source-order analysis suggests css/stage-coach.css already overrides that
   rule, but we add this !important class explicitly so the spacing is locked. */
.pp-sc-wrap-tight {
    padding-top: 24px !important;
}

/* Edit profile wrap (centered link below subtitle).
   Note: .pp-coach-page-title and .pp-coach-page-subtitle
   already exist after the Cycle 2a Change 1 rename — DO NOT
   redefine them here. */
.pp-tc-edit-profile-wrap {
    text-align: center;
    margin-bottom: 24px;
}

/* Travel Coach panel (snapshot) — stat-row pattern */
.pp-tc-panel {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 16px 16px 18px;
    margin-bottom: 14px;
}

.pp-tc-panel-label {
    font-family: "Inter", sans-serif;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: var(--pp-text-muted);
    margin: 0 0 14px;
}

.pp-tc-panel-aside {
    font-family: "Inter", sans-serif;
    font-size: 11px;
    font-weight: 400;
    letter-spacing: 0.04em;
    text-transform: none;
    color: var(--pp-text-muted);
    float: right;
}

.pp-tc-stat-row {
    display: flex;
    justify-content: space-between;
    align-items: baseline;
    padding: 10px 0;
    border-bottom: 1px solid var(--pp-border);
}

.pp-tc-stat-row:last-child {
    border-bottom: none;
}

.pp-tc-stat-label {
    font-size: 14px;
    color: var(--pp-text);
    font-weight: 500;
}

.pp-tc-stat-value {
    font-size: 18px;
    font-weight: 700;
    color: var(--pp-text);
    font-feature-settings: "tnum" 1;
}

.pp-tc-stat-value.muted {
    color: var(--pp-text-muted);
    font-weight: 500;
    font-size: 14px;
}

/* Coach Assessment card — purple-bordered */
.pp-tc-assess {
    background: #1a1530;
    border: 1px solid #5d4ab7;
    border-radius: 12px;
    padding: 16px 16px 18px;
    margin-bottom: 14px;
}

.pp-tc-assess-header {
    display: flex;
    align-items: center;
    gap: 8px;
    margin-bottom: 10px;
}

.pp-tc-assess-icon {
    width: 18px;
    height: 18px;
    border-radius: 50%;
    border: 1.5px solid rgba(139, 92, 246, 0.55);
    display: grid;
    place-items: center;
    font-size: 11px;
    font-weight: 700;
    color: #c4b5fd;
    font-style: italic;
    font-family: "Playfair Display", serif;
}

.pp-tc-assess-label {
    font-family: "Inter", sans-serif;
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.16em;
    text-transform: uppercase;
    color: #c4b5fd;
}

.pp-tc-assess-headline {
    font-size: 18px;
    font-weight: 600;
    margin: 0 0 8px;
    color: var(--pp-text);
}

.pp-tc-assess-body {
    font-size: 14px;
    line-height: 1.5;
    color: var(--pp-text-secondary);
    margin: 0 0 6px;
}

.pp-tc-assess-cost {
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid rgba(139, 92, 246, 0.18);
    font-size: 13px;
    color: var(--pp-text);
}

.pp-tc-assess-cost b {
    color: var(--pp-text);
    font-weight: 700;
    font-feature-settings: "tnum" 1;
}

.pp-tc-assess-cost span {
    color: var(--pp-text-muted);
    font-style: italic;
    font-size: 12px;
}

.pp-tc-assess-rule {
    height: 1px;
    background: rgba(139, 92, 246, 0.18);
    border: none;
    margin: 14px 0 12px;
}

.pp-tc-assess-aside {
    font-size: 12px;
    color: #a78bfa;
    margin: 0;
    font-style: italic;
}

/* Bankroll status strip (replaces duplicated panel) */
.pp-tc-bankroll-strip {
    background: var(--pp-bg);
    border: 1px solid var(--pp-border);
    border-radius: 10px;
    padding: 12px 14px;
    margin-bottom: 14px;
    font-size: 13px;
    display: flex;
    justify-content: space-between;
    align-items: center;
    flex-wrap: wrap;
    gap: 8px;
}

.pp-tc-bankroll-strip-label {
    color: var(--pp-text-muted);
    font-weight: 600;
    letter-spacing: 0.04em;
    font-size: 11px;
    text-transform: uppercase;
}

.pp-tc-bankroll-strip-data {
    color: var(--pp-text);
    font-feature-settings: "tnum" 1;
}

.pp-tc-bankroll-strip-data b {
    color: var(--pp-text);
    font-weight: 700;
}

.pp-tc-bankroll-strip-data .sep {
    color: var(--pp-text-secondary);
    margin: 0 6px;
}

.pp-tc-bankroll-link {
    color: var(--pp-green);
    text-decoration: none;
    font-size: 12px;
    white-space: nowrap;
}

/* Section divider */
.pp-tc-divider {
    font-family: "Inter", sans-serif;
    font-size: 10px;
    font-weight: 600;
    letter-spacing: 0.18em;
    text-transform: uppercase;
    color: var(--pp-text-muted);
    margin: 8px 4px 10px;
}

/* Tour card — Cycle 2a scaffold (Drive/Fly + Lodging tiering = 2b) */
.pp-tc-tour-card {
    background: var(--pp-surface-alt);
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 16px;
    margin-bottom: 14px;
}

.pp-tc-tour-head {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    margin-bottom: 4px;
}

.pp-tc-tour-meta {
    font-size: 13px;
    color: var(--pp-text-secondary);
    margin: 0 0 14px;
}

.pp-tc-tour-meta b {
    color: var(--pp-text);
    font-weight: 500;
}

/* Affordability badges */
.pp-tc-aff-badge {
    font-size: 11px;
    font-weight: 600;
    letter-spacing: 0.06em;
    padding: 4px 10px;
    border-radius: 999px;
    white-space: nowrap;
}

.pp-tc-aff-safe {
    background: var(--pp-accent-soft);
    color: var(--pp-green);
    border: 1px solid rgba(52, 211, 153, 0.4);
}

.pp-tc-aff-controlled {
    background: rgba(245, 158, 11, 0.12);
    color: var(--pp-warning);
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.pp-tc-aff-expensive {
    background: rgba(239, 68, 68, 0.12);
    color: var(--pp-danger);
    border: 1px solid rgba(239, 68, 68, 0.4);
}

/* Pills row (buyin + planning status) */
.pp-tc-pills {
    display: flex;
    flex-wrap: wrap;
    gap: 6px;
    margin-bottom: 14px;
}

.pp-tc-pill {
    font-size: 11px;
    font-weight: 500;
    padding: 4px 10px;
    border-radius: 999px;
    white-space: nowrap;
}

.pp-tc-pill-buyin {
    background: rgba(255,255,255,0.04);
    color: var(--pp-text-secondary);
    border: 1px solid var(--pp-border);
}

.pp-tc-pill-needed {
    background: rgba(245, 158, 11, 0.12);
    color: var(--pp-warning);
    border: 1px solid rgba(245, 158, 11, 0.4);
}

.pp-tc-pill-planned {
    background: var(--pp-accent-soft);
    color: var(--pp-green);
    border: 1px solid rgba(52, 211, 153, 0.4);
}

/* Plan toggles (existing functionality preserved — JS still binds to .pp-tc-plan-toggle on the INPUT element) */
.pp-tc-plan-toggles {
    display: flex;
    gap: 14px;
    margin-top: 12px;
    padding-top: 12px;
    border-top: 1px solid var(--pp-border);
}

.pp-tc-plan-toggle-row {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--pp-text);
    cursor: pointer;
}

/* Empty state card */
.pp-tc-empty-card {
    background: var(--pp-surface-alt);
    border: 1px dashed var(--pp-border);
    border-radius: 12px;
    padding: 24px 16px;
    text-align: center;
    color: var(--pp-text-secondary);
    font-size: 13px;
    margin-bottom: 14px;
    line-height: 1.6;
}

.pp-tc-empty-card a {
    color: var(--pp-green);
    text-decoration: underline;
    text-underline-offset: 3px;
}

.pp-tc-empty-card b {
    color: var(--pp-text);
    font-weight: 500;
    display: block;
    margin-bottom: 6px;
    font-size: 14px;
}

/* ============================================================
   v4.23.7 — My Path readability cascade fix
   ============================================================
   Compound selectors at (0,3,0) specificity + !important on backgrounds
   to beat external Aasta theme/builder rules at (0,2,0) source-order-unknown.
   Per mini-recon Drift #1: the offending .pp-my-account .pp-account-section
   rule is in theme/builder, not our project files.
   ============================================================ */

/* === HUNK 1.1 — Section card chrome (replaces v4.23.6 .pp-mp-card) === */
.pp-mp-page .pp-account-section.pp-mp-card {
    background: var(--pp-surface) !important;
    border: 1px solid var(--pp-border) !important;
    border-radius: 12px;
    padding: 18px;
    margin-bottom: 16px;
}

/* === HUNK 1.2 — Identity card === */
.pp-mp-page .pp-account-identity {
    background: var(--pp-surface) !important;
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 16px 18px;
    margin-bottom: 16px;
    color: var(--pp-text-primary);
}

.pp-mp-page .pp-account-identity .pp-greeting {
    color: var(--pp-text-primary);
    font-weight: 600;
}

.pp-mp-page .pp-account-identity .pp-avatar,
.pp-mp-page .pp-account-identity .pp-avatar-plus {
    background: var(--pp-surface-alt, #243140);
    color: var(--pp-text-primary);
}

/* === HUNK 1.3 — Section titles (typography on dark surface) === */
.pp-mp-page .pp-section-title {
    color: var(--pp-text-primary);
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.12em;
    text-transform: uppercase;
}

/* === HUNK 1.4 — Profile rows (border + label/val text colors) === */
.pp-mp-page .pp-pref-row {
    border-bottom-color: var(--pp-border);
}

.pp-mp-page .pp-pref-label {
    color: var(--pp-text-secondary, #94a3b8) !important;
}

.pp-mp-page .pp-pref-val {
    color: var(--pp-text-primary) !important;
}

.pp-mp-page .pp-pref-note {
    color: var(--pp-text-muted) !important;
    font-style: italic;
}

.pp-mp-page .pp-badge-type {
    background: rgba(212, 175, 55, 0.18) !important;
    color: #fbbf24 !important;
    padding: 3px 10px;
    border-radius: 999px;
    font-size: 11px;
    font-weight: 700;
    text-transform: uppercase;
}

/* === HUNK 1.5 — Edit button (override Aasta theme button styling) === */
.pp-mp-page button.pp-edit-link,
.pp-mp-page a.pp-edit-link {
    background: transparent !important;
    border: 1px solid var(--pp-border) !important;
    color: var(--pp-text-primary) !important;
    padding: 6px 14px !important;
    border-radius: 8px !important;
    font-size: 12px !important;
    font-weight: 500 !important;
    cursor: pointer !important;
    text-decoration: none !important;
}

.pp-mp-page button.pp-edit-link:hover,
.pp-mp-page a.pp-edit-link:hover {
    background: var(--pp-surface-alt, #243140) !important;
    color: #fbbf24 !important;
}

/* === HUNK 1.6 — Quick action links (override Aasta button styling) === */
.pp-mp-page .pp-action-primary {
    display: inline-block;
    background: linear-gradient(135deg, #fbbf24 0%, #d4af37 100%) !important;
    color: #1a1a2e !important;
    padding: 12px 20px !important;
    border-radius: 8px !important;
    font-weight: 600 !important;
    text-decoration: none !important;
    text-align: center !important;
    border: none !important;
}

.pp-mp-page .pp-action-secondary {
    display: inline-block;
    background: transparent !important;
    border: 1px solid var(--pp-border) !important;
    color: var(--pp-text-primary) !important;
    padding: 12px 20px !important;
    border-radius: 8px !important;
    font-weight: 500 !important;
    text-decoration: none !important;
    text-align: center !important;
}

.pp-mp-page .pp-action-primary:hover {
    transform: translateY(-1px);
}

.pp-mp-page .pp-action-secondary:hover {
    background: var(--pp-surface-alt, #243140) !important;
    color: #fbbf24 !important;
}

/* === HUNK 1.7 — Link colors (View all, Browse links, Coach shortcut, Upgrade link) === */
.pp-mp-page .pp-view-all,
.pp-mp-page .pp-browse-link,
.pp-mp-page .pp-coach-shortcut,
.pp-mp-page .pp-upgrade-link,
.pp-mp-page .pp-upgrade-link-strong {
    color: #fbbf24 !important;
    text-decoration: none !important;
    font-weight: 500;
}

.pp-mp-page .pp-view-all:hover,
.pp-mp-page .pp-browse-link:hover,
.pp-mp-page .pp-coach-shortcut:hover,
.pp-mp-page .pp-upgrade-link:hover,
.pp-mp-page .pp-upgrade-link-strong:hover {
    text-decoration: underline !important;
}

/* === HUNK 1.8 — Empty state container === */
.pp-mp-page .pp-empty-state {
    color: var(--pp-text-muted) !important;
}

.pp-mp-page .pp-empty-state p {
    color: var(--pp-text-secondary, #94a3b8) !important;
}

/* === HUNK 1.9 — Footer (override hardcoded #888/#333) === */
.pp-mp-page .pp-account-footer {
    color: var(--pp-text-muted);
}

.pp-mp-page .pp-account-footer a,
.pp-mp-page .pp-account-footer .pp-footer-logout {
    color: var(--pp-text-muted) !important;
    text-decoration: none !important;
}

.pp-mp-page .pp-account-footer a:hover,
.pp-mp-page .pp-account-footer .pp-footer-logout:hover {
    color: var(--pp-text-primary) !important;
}

/* === HUNK 2 — Free-view-only cascade fixes === */

.pp-mp-free-view .pp-tournament-list {
    background: transparent !important;
    color: var(--pp-text-primary) !important;
}

.pp-mp-free-view .pp-tournament-list .pp-empty-state p {
    color: var(--pp-text-secondary, #94a3b8) !important;
}

.pp-mp-free-view .pp-next-step-strip {
    background: var(--pp-surface-alt, #243140) !important;
    border: 1px solid var(--pp-border) !important;
    border-radius: 8px;
    padding: 12px 16px;
    color: var(--pp-text-primary) !important;
}

.pp-mp-free-view .pp-next-step-strip span {
    color: var(--pp-text-secondary, #94a3b8) !important;
}

.pp-mp-free-view .pp-next-step-strip a {
    color: #fbbf24 !important;
    text-decoration: none !important;
}

.pp-mp-free-view .pp-badge-free {
    background: rgba(148, 163, 184, 0.18) !important;
    color: #cbd5e1 !important;
}

/* === HUNK 5 — Signin gate dark theme (My Path-only via .pp-mp-signin-view scoping) === */

.pp-mp-signin-view .pp-auth-wrap {
    background: var(--pp-surface);
    border: 1px solid var(--pp-border);
    border-radius: 12px;
    padding: 24px;
    max-width: 440px;
    margin: 0 auto;
}

.pp-mp-signin-view .pp-google-btn {
    background: #ffffff !important;
    color: #444 !important;
    border: 1px solid #dadce0 !important;
    padding: 12px 20px !important;
    border-radius: 8px !important;
    text-decoration: none !important;
    display: flex !important;
    align-items: center !important;
    gap: 10px !important;
    justify-content: center !important;
    font-weight: 500 !important;
    width: 100%;
}

.pp-mp-signin-view .pp-google-btn:hover {
    background: #f8f9fa !important;
}

.pp-mp-signin-view .pp-auth-divider {
    display: flex;
    align-items: center;
    gap: 12px;
    margin: 20px 0;
    color: var(--pp-text-muted);
}

.pp-mp-signin-view .pp-auth-divider hr {
    flex: 1;
    border: none;
    border-top: 1px solid var(--pp-border);
}

.pp-mp-signin-view .pp-auth-tabs {
    display: flex;
    gap: 8px;
    margin-bottom: 20px;
    border-bottom: 1px solid var(--pp-border);
}

.pp-mp-signin-view .pp-tab-btn {
    background: transparent !important;
    border: none !important;
    color: var(--pp-text-secondary, #94a3b8) !important;
    padding: 10px 16px !important;
    cursor: pointer !important;
    font-size: 14px !important;
    font-weight: 500 !important;
    border-bottom: 2px solid transparent !important;
}

.pp-mp-signin-view .pp-tab-btn.pp-tab-active {
    color: #fbbf24 !important;
    border-bottom-color: #fbbf24 !important;
}

.pp-mp-signin-view .pp-form-group {
    margin-bottom: 16px;
}

.pp-mp-signin-view .pp-form-group label {
    display: block;
    color: var(--pp-text-secondary, #94a3b8) !important;
    font-size: 12px !important;
    font-weight: 600 !important;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

.pp-mp-signin-view .pp-form-group input {
    width: 100%;
    background: var(--pp-surface-alt, #243140) !important;
    border: 1px solid var(--pp-border) !important;
    color: var(--pp-text-primary) !important;
    padding: 10px 12px !important;
    border-radius: 8px !important;
    font-size: 14px !important;
}

.pp-mp-signin-view .pp-form-group input:focus {
    outline: none !important;
    border-color: #fbbf24 !important;
}

.pp-mp-signin-view .pp-password-wrap {
    position: relative;
}

.pp-mp-signin-view .pp-show-password {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    background: transparent !important;
    border: none !important;
    color: var(--pp-text-muted) !important;
    cursor: pointer !important;
}

.pp-mp-signin-view .pp-btn-primary {
    background: linear-gradient(135deg, #fbbf24 0%, #d4af37 100%) !important;
    color: #1a1a2e !important;
    border: none !important;
    padding: 12px 20px !important;
    border-radius: 8px !important;
    font-weight: 600 !important;
    cursor: pointer !important;
    width: 100%;
}

.pp-mp-signin-view .pp-btn-full {
    width: 100% !important;
}

.pp-mp-signin-view .pp-form-error {
    color: #f87171 !important;
    font-size: 13px;
    margin-top: 8px;
}

.pp-mp-signin-view .pp-form-hint,
.pp-mp-signin-view .pp-form-note {
    color: var(--pp-text-muted) !important;
    font-size: 12px;
    margin-top: 6px;
}

.pp-mp-signin-view .pp-auth-footer-link {
    text-align: center;
    margin-top: 16px;
}

.pp-mp-signin-view .pp-auth-footer-link a {
    color: var(--pp-text-muted) !important;
    text-decoration: none !important;
    font-size: 13px;
}

.pp-mp-signin-view .pp-auth-footer-link a:hover {
    color: #fbbf24 !important;
}

/* ============================================================
   v4.23.9 — Coach cards become mini-hero blocks.
   Coach names mirror hero h1 typography (Inter + gold gradient).
   Coach taglines mirror hero subtitle typography (Playfair italic).
   Win all viewport sizes via compound specificity (0,2,0) +
   !important + later source order than the existing line-3103,
   line-4523, and line-4632 .pp-coach-card-name rules.
   ============================================================ */

/* === HUNK 7.1 — My Path coach grids (Plus dashboard + free-view) === */

.pp-mp-page .pp-coach-label {
    font-family: Inter, system-ui, -apple-system, sans-serif !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.3px !important;
    background: linear-gradient(rgb(251, 226, 138) 0%, rgb(230, 195, 77) 35%, rgb(212, 175, 55) 65%, rgb(156, 119, 26) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    margin-bottom: 6px;
    text-align: center;
}

.pp-mp-page .pp-coach-desc {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif !important;
    font-style: italic !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    letter-spacing: 0.5px !important;
    color: rgb(148, 163, 184) !important;
    -webkit-text-fill-color: rgb(148, 163, 184) !important;
    text-align: center;
}

/* === HUNK 7.2 — Tournament Coach "Your Coaches" grid (desktop) === */

.pp-cc-wrap .pp-coach-card-name {
    font-family: Inter, system-ui, -apple-system, sans-serif !important;
    font-size: 20px !important;
    font-weight: 700 !important;
    line-height: 1.2 !important;
    letter-spacing: -0.3px !important;
    background: linear-gradient(rgb(251, 226, 138) 0%, rgb(230, 195, 77) 35%, rgb(212, 175, 55) 65%, rgb(156, 119, 26) 100%) !important;
    -webkit-background-clip: text !important;
    background-clip: text !important;
    -webkit-text-fill-color: transparent !important;
    color: transparent !important;
    margin-bottom: 6px;
    text-align: center;
}

.pp-cc-wrap .pp-coach-card-desc {
    font-family: "Playfair Display", Georgia, "Times New Roman", serif !important;
    font-style: italic !important;
    font-size: 13px !important;
    font-weight: 400 !important;
    line-height: 1.5 !important;
    letter-spacing: 0.5px !important;
    color: rgb(148, 163, 184) !important;
    -webkit-text-fill-color: rgb(148, 163, 184) !important;
    text-align: center;
}

/* === HUNK 7.3 — Mobile override (compound specificity beats existing line-4632 media query) === */

@media (max-width: 600px) {
    .pp-mp-page .pp-coach-label,
    .pp-cc-wrap .pp-coach-card-name {
        font-size: 18px !important;
    }
    .pp-mp-page .pp-coach-desc,
    .pp-cc-wrap .pp-coach-card-desc {
        font-size: 12px !important;
    }
}

/* ====================================================== */
/* v4.24.7 — Hero shell                                   */
/* ====================================================== */
.pp-tc-hero {
    background: var(--pp-card-bg, #252b3d);
    border: 1px solid var(--pp-border, #3a4055);
    border-left: 3px solid #4ade80;
    border-radius: 8px;
    padding: 16px;
    margin: 16px 0;
}
.pp-tc-hero-eyebrow {
    font-size: 11px;
    color: var(--pp-text-secondary, #9ba3b8);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}
.pp-tc-hero-title {
    font-size: 18px;
    color: var(--pp-text-primary, #e8eaf0);
    font-weight: 500;
    margin-bottom: 4px;
}
.pp-tc-hero-when {
    font-size: 12px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin-bottom: 10px;
}
.pp-tc-hero-why {
    font-size: 13px;
    color: var(--pp-text-primary, #e8eaf0);
    line-height: 1.5;
    margin-bottom: 14px;
    opacity: 0.85;
}
.pp-tc-hero-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.pp-tc-hero-cta-primary {
    background: #4ade80;
    color: #1a1f2e;
    border: none;
    padding: 8px 14px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    text-decoration: none;
    display: inline-block;
}
.pp-tc-hero-cta-primary:hover,
.pp-tc-hero-cta-primary:focus {
    background: #22c55e;
    color: #1a1f2e;
    text-decoration: none;
}
/* end v4.24.7 — Hero shell */

/* ====================================================== */
/* v4.24.8 — Travel Coach page                            */
/* ====================================================== */
.pp-travel-page {
    max-width: 760px;
    margin: 0 auto;
    padding: 16px;
    color: var(--pp-text-primary, #e8eaf0);
}
.pp-travel-header {
    margin-bottom: 16px;
}
.pp-travel-header h1 {
    font-size: 22px;
    font-weight: 600;
    color: var(--pp-text-primary, #e8eaf0);
    margin: 0 0 4px;
}
.pp-travel-tagline {
    font-size: 13px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin: 0;
    opacity: 0.85;
}
.pp-travel-actions {
    margin-bottom: 12px;
}
.pp-travel-add-btn {
    background: #4ade80;
    color: #1a1f2e;
    border: none;
    padding: 9px 14px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}
.pp-travel-add-btn:hover,
.pp-travel-add-btn:focus {
    background: #22c55e;
}
.pp-travel-form-wrap {
    background: var(--pp-card-bg, #252b3d);
    border: 1px solid var(--pp-border, #3a4055);
    border-radius: 8px;
    padding: 16px;
    margin-bottom: 16px;
}
.pp-travel-form label {
    display: block;
    font-size: 12px;
    color: var(--pp-text-secondary, #9ba3b8);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 12px;
}
.pp-travel-form input[type="text"],
.pp-travel-form input[type="date"],
.pp-travel-form textarea {
    display: block;
    width: 100%;
    margin-top: 4px;
    padding: 8px 10px;
    background: #1a1f2e;
    border: 1px solid var(--pp-border, #3a4055);
    border-radius: 4px;
    color: var(--pp-text-primary, #e8eaf0);
    font-size: 14px;
    text-transform: none;
    letter-spacing: normal;
    font-family: inherit;
    box-sizing: border-box;
}
.pp-travel-form-actions {
    display: flex;
    gap: 8px;
    margin-top: 8px;
}
.pp-travel-save-btn {
    background: #4ade80;
    color: #1a1f2e;
    border: none;
    padding: 8px 14px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}
.pp-travel-save-btn:hover,
.pp-travel-save-btn:focus {
    background: #22c55e;
}
.pp-travel-cancel-btn {
    background: transparent;
    color: var(--pp-text-secondary, #9ba3b8);
    border: 1px solid var(--pp-border, #3a4055);
    padding: 8px 14px;
    border-radius: 4px;
    font-size: 13px;
    cursor: pointer;
}
.pp-travel-cancel-btn:hover,
.pp-travel-cancel-btn:focus {
    color: var(--pp-text-primary, #e8eaf0);
    border-color: #4ade80;
}
.pp-travel-form-error {
    color: #f87171;
    font-size: 13px;
    margin-top: 10px;
    padding: 8px 10px;
    background: rgba(248, 113, 113, 0.08);
    border: 1px solid rgba(248, 113, 113, 0.3);
    border-radius: 4px;
}
.pp-travel-trips-list,
.pp-travel-past-trips {
    margin-top: 16px;
}
.pp-travel-trips-list h2,
.pp-travel-past-trips h2 {
    font-size: 14px;
    font-weight: 500;
    color: var(--pp-text-secondary, #9ba3b8);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin: 0 0 8px;
}
.pp-travel-empty {
    background: var(--pp-card-bg, #252b3d);
    border: 1px dashed var(--pp-border, #3a4055);
    border-radius: 8px;
    padding: 14px;
    color: var(--pp-text-secondary, #9ba3b8);
    font-size: 13px;
}
.pp-travel-trip-row {
    display: flex;
    justify-content: space-between;
    align-items: flex-start;
    gap: 12px;
    background: var(--pp-card-bg, #252b3d);
    border: 1px solid var(--pp-border, #3a4055);
    border-radius: 8px;
    padding: 12px 14px;
    margin-bottom: 8px;
}
.pp-travel-trip-main {
    flex: 1;
    min-width: 0;
}
.pp-travel-trip-destination {
    font-size: 15px;
    font-weight: 500;
    color: var(--pp-text-primary, #e8eaf0);
    margin-bottom: 2px;
}
.pp-travel-trip-dates {
    font-size: 12px;
    color: var(--pp-text-secondary, #9ba3b8);
}
.pp-travel-trip-days-until {
    display: inline-block;
    margin-left: 6px;
    padding: 1px 6px;
    background: rgba(74, 222, 128, 0.15);
    color: #4ade80;
    border-radius: 3px;
    font-size: 11px;
    font-weight: 500;
}
.pp-travel-trip-notes {
    font-size: 12px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin-top: 4px;
    opacity: 0.85;
    word-wrap: break-word;
}
.pp-travel-trip-actions {
    display: flex;
    gap: 6px;
    flex-shrink: 0;
}
.pp-travel-edit-btn,
.pp-travel-delete-btn {
    background: transparent;
    color: var(--pp-text-secondary, #9ba3b8);
    border: 1px solid var(--pp-border, #3a4055);
    padding: 4px 10px;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
}
.pp-travel-edit-btn:hover,
.pp-travel-edit-btn:focus {
    color: var(--pp-text-primary, #e8eaf0);
    border-color: #4ade80;
}
.pp-travel-delete-btn:hover,
.pp-travel-delete-btn:focus {
    color: #f87171;
    border-color: #f87171;
}
.pp-travel-past-toggle {
    margin-top: 16px;
    text-align: center;
}
.pp-travel-past-toggle-btn {
    background: transparent;
    color: var(--pp-text-secondary, #9ba3b8);
    border: 1px solid var(--pp-border, #3a4055);
    padding: 6px 14px;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
}
.pp-travel-past-toggle-btn:hover,
.pp-travel-past-toggle-btn:focus {
    color: var(--pp-text-primary, #e8eaf0);
    border-color: #4ade80;
}
.pp-travel-locked {
    background: var(--pp-card-bg, #252b3d);
    border: 1px solid var(--pp-border, #3a4055);
    border-radius: 8px;
    padding: 24px;
    text-align: center;
}
.pp-travel-locked-icon {
    font-size: 36px;
    margin-bottom: 8px;
    color: #4ade80;
}
.pp-travel-locked-title {
    font-size: 20px;
    color: var(--pp-text-primary, #e8eaf0);
    margin: 0 0 6px;
}
.pp-travel-locked-desc {
    font-size: 13px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin: 0 0 12px;
    opacity: 0.9;
}
.pp-travel-locked-features {
    list-style: none;
    padding: 0;
    margin: 0 0 16px;
    font-size: 13px;
    color: var(--pp-text-primary, #e8eaf0);
}
.pp-travel-locked-features li {
    margin: 4px 0;
}
.pp-travel-upgrade-btn {
    display: inline-block;
    background: #4ade80;
    color: #1a1f2e;
    padding: 9px 18px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    text-decoration: none;
}
.pp-travel-upgrade-btn:hover,
.pp-travel-upgrade-btn:focus {
    background: #22c55e;
    color: #1a1f2e;
    text-decoration: none;
}
/* end v4.24.8 — Travel Coach page                        */

/* ====================================================== */
/* v4.24.9 — Best 3 Decisions                             */
/* ====================================================== */
.pp-tc-best3 {
    margin: 16px 0;
}
.pp-tc-section-label {
    font-size: 11px;
    color: var(--pp-text-secondary, #9ba3b8);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 8px;
}
.pp-tc-best3-list {
    display: flex;
    flex-direction: column;
    gap: 6px;
}
.pp-tc-best3-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px;
    background: var(--pp-card-bg, #252b3d);
    border: 0.5px solid var(--pp-border, #3a4055);
    border-radius: 6px;
    text-decoration: none;
    color: inherit;
}
.pp-tc-best3-row:hover,
.pp-tc-best3-row:focus {
    border-color: #4ade80;
}
.pp-tc-best3-rank {
    width: 22px;
    height: 22px;
    border-radius: 50%;
    background: var(--pp-border, #3a4055);
    color: var(--pp-text-primary, #e8eaf0);
    font-size: 11px;
    font-weight: 500;
    display: flex;
    align-items: center;
    justify-content: center;
    flex-shrink: 0;
}
.pp-tc-best3-row:first-child .pp-tc-best3-rank {
    background: #4ade80;
    color: #1a1f2e;
}
.pp-tc-best3-main {
    flex: 1;
    display: flex;
    flex-direction: column;
    gap: 2px;
    min-width: 0;
}
.pp-tc-best3-name {
    font-size: 13px;
    color: var(--pp-text-primary, #e8eaf0);
    font-weight: 500;
}
.pp-tc-best3-meta {
    font-size: 11px;
    color: var(--pp-text-secondary, #9ba3b8);
}
.pp-tc-best3-reason {
    font-size: 11px;
    color: var(--pp-text-secondary, #9ba3b8);
    font-style: italic;
}
.pp-tc-best3-verdict {
    font-size: 10px;
    font-weight: 600;
    padding: 4px 8px;
    border-radius: 4px;
    flex-shrink: 0;
    text-transform: uppercase;
    letter-spacing: 0.5px;
}
.pp-tc-best3-verdict-play {
    background: #4ade80;
    color: #1a1f2e;
}
.pp-tc-best3-verdict-consider {
    background: #fbbf24;
    color: #1a1f2e;
}
/* end v4.24.9 — Best 3 Decisions */

/* ====================================================== */
/* v4.24.10 — Indicator strip + Cross-Coach Insight +     */
/* smooth scroll behavior                                  */
/* ====================================================== */

/* Smooth scroll for anchor navigation. CSS-only, no JS.  */
/* (Gate 6 fix #3 — delivers the smooth-scroll behavior   */
/*  the expected-result section claims.)                  */
html { scroll-behavior: smooth; }

/* Indicator strip */
.pp-tc-indicator {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 8px;
    padding: 8px 12px;
    background: var(--pp-card-bg, #252b3d);
    border: 0.5px solid var(--pp-border, #3a4055);
    border-radius: 8px;
    margin: 12px 0;
    font-size: 12px;
    color: var(--pp-text-primary, #e8eaf0);
}
.pp-tc-indicator-left {
    display: flex;
    align-items: center;
    gap: 8px;
}
.pp-tc-indicator-right {
    font-size: 11px;
    color: var(--pp-text-secondary, #9ba3b8);
}
.pp-tc-indicator-dot {
    width: 8px;
    height: 8px;
    border-radius: 50%;
    display: inline-block;
}
.pp-tc-indicator-health-dot {
    font-weight: 500;
}
/* Dot color modifiers — shared between indicator and any
   future status dot. Hex values match v4.24.5 confidence map. */
.pp-tc-dot-green   { background: #4ade80; color: #4ade80; }
.pp-tc-dot-yellow  { background: #fbbf24; color: #fbbf24; }
.pp-tc-dot-red     { background: #f87171; color: #f87171; }
.pp-tc-dot-neutral { background: #9ba3b8; color: #9ba3b8; }

/* Cross-Coach Insight box */
.pp-tc-insight {
    background: var(--pp-card-bg, #252b3d);
    border: 1px solid #534ab7;
    border-radius: 8px;
    padding: 12px;
    margin: 12px 0;
}
.pp-tc-insight-eyebrow {
    font-size: 10px;
    color: #a78bfa;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin-bottom: 6px;
}
.pp-tc-insight-title {
    font-size: 13px;
    color: var(--pp-text-primary, #e8eaf0);
    font-weight: 500;
    margin-bottom: 4px;
}
.pp-tc-insight-subtitle {
    font-size: 11px;
    color: var(--pp-text-secondary, #cdd2dc);
    margin-bottom: 10px;
}
.pp-tc-insight-cta {
    display: inline-block;
    background: #a78bfa;
    color: #1a1f2e;
    border: none;
    padding: 6px 12px;
    border-radius: 4px;
    font-size: 11px;
    font-weight: 500;
    text-decoration: none;
}
.pp-tc-insight-cta:hover, .pp-tc-insight-cta:focus {
    background: #9070ed;
    color: #1a1f2e;
    text-decoration: none;
}

/* Anchor target for Insight CTA — invisible scroll target */
.pp-tc-anchor {
    display: block;
    height: 0;
    overflow: hidden;
    visibility: hidden;
}
/* end v4.24.10 — Indicator + Insight + smooth scroll */

/* ====================================================== */
/* v4.24.11 — WNA rebuild + Notification Settings +       */
/* Hero CTA contrast polish + h1/nav overlap polish       */
/* ====================================================== */

/* WNA section — rebuilt to use category badges + dismiss button.
   Selectors are .pp-wna-* to avoid collision with the legacy
   .pp-cc-notif-* classes still used elsewhere. */
.pp-wna-section {
    padding: 12px;
}
.pp-wna-row {
    display: flex;
    align-items: flex-start;
    gap: 10px;
    padding: 10px;
    background: var(--pp-card-bg, #252b3d);
    border: 0.5px solid var(--pp-border, #3a4055);
    border-radius: 6px;
    margin-bottom: 6px;
    transition: opacity 0.2s ease, transform 0.2s ease;
}
.pp-wna-row-dismissing {
    opacity: 0;
    transform: translateX(20px);
}
.pp-wna-body {
    flex: 1;
    min-width: 0;
}
.pp-wna-msg {
    font-size: 13px;
    color: var(--pp-text-primary, #e8eaf0);
    font-weight: 500;
}
.pp-wna-detail {
    font-size: 11px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin-top: 2px;
}
.pp-wna-dismiss-btn {
    background: transparent;
    color: var(--pp-text-secondary, #9ba3b8);
    border: 1px solid var(--pp-border, #3a4055);
    border-radius: 4px;
    width: 28px;
    height: 28px;
    line-height: 1;
    font-size: 16px;
    cursor: pointer;
    flex-shrink: 0;
    padding: 0;
}
.pp-wna-dismiss-btn:hover,
.pp-wna-dismiss-btn:focus {
    color: var(--pp-text-primary, #e8eaf0);
    border-color: #f87171;
}
.pp-wna-dismiss-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
/* Category badges — hex values match the locked v4.24.11 palette. */
.pp-wna-badge {
    display: inline-block;
    font-size: 10px;
    font-weight: 600;
    padding: 2px 8px;
    border-radius: 3px;
    text-transform: uppercase;
    letter-spacing: 0.5px;
    color: #1a1f2e;
    flex-shrink: 0;
    line-height: 1.4;
}
.pp-wna-badge-bankroll   { background: #f87171; }
.pp-wna-badge-trip       { background: #fbbf24; }
.pp-wna-badge-tournament { background: #4ade80; }
.pp-wna-badge-table      { background: #60a5fa; color: #1a1f2e; }
.pp-wna-badge-system     { background: #9ba3b8; }

/* /notification-settings/ page UI */
.pp-notif-settings {
    max-width: 760px;
    margin: 0 auto;
    padding: 16px;
    color: var(--pp-text-primary, #e8eaf0);
}
.pp-notif-settings-header h1 {
    font-size: 22px;
    font-weight: 600;
    color: var(--pp-text-primary, #e8eaf0);
    margin: 0 0 4px;
}
.pp-notif-settings-tagline {
    font-size: 13px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin: 0 0 16px;
    opacity: 0.85;
}
.pp-notif-section-label {
    font-size: 13px;
    font-weight: 500;
    color: var(--pp-text-secondary, #9ba3b8);
    text-transform: uppercase;
    letter-spacing: 0.5px;
    margin: 16px 0 8px;
}
.pp-notif-category-row {
    display: flex;
    align-items: center;
    padding: 8px 10px;
    background: var(--pp-card-bg, #252b3d);
    border: 0.5px solid var(--pp-border, #3a4055);
    border-radius: 6px;
    margin-bottom: 6px;
}
.pp-notif-category-label {
    display: flex;
    align-items: center;
    gap: 10px;
    cursor: pointer;
    color: var(--pp-text-primary, #e8eaf0);
    font-size: 13px;
    width: 100%;
}
.pp-notif-category-name {
    flex: 1;
}
.pp-notif-save-row {
    display: flex;
    align-items: center;
    gap: 10px;
    margin-top: 10px;
}
.pp-notif-save-btn {
    background: #4ade80;
    color: #1a1f2e;
    border: none;
    padding: 8px 16px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    cursor: pointer;
}
.pp-notif-save-btn:hover,
.pp-notif-save-btn:focus {
    background: #22c55e;
}
.pp-notif-save-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.pp-notif-save-status {
    font-size: 12px;
    color: var(--pp-text-secondary, #9ba3b8);
}
.pp-notif-dismissed-count {
    color: var(--pp-text-secondary, #9ba3b8);
    font-weight: 400;
    margin-left: 4px;
}
.pp-notif-dismissed-empty {
    background: var(--pp-card-bg, #252b3d);
    border: 1px dashed var(--pp-border, #3a4055);
    border-radius: 6px;
    padding: 14px;
    color: var(--pp-text-secondary, #9ba3b8);
    font-size: 13px;
}
.pp-notif-dismissed-row {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 8px 10px;
    background: var(--pp-card-bg, #252b3d);
    border: 0.5px solid var(--pp-border, #3a4055);
    border-radius: 6px;
    margin-bottom: 6px;
}
.pp-notif-dismissed-meta {
    flex: 1;
    font-size: 12px;
    color: var(--pp-text-secondary, #9ba3b8);
}
.pp-notif-restore-btn {
    background: transparent;
    color: var(--pp-text-secondary, #9ba3b8);
    border: 1px solid var(--pp-border, #3a4055);
    padding: 4px 12px;
    border-radius: 4px;
    font-size: 12px;
    cursor: pointer;
    flex-shrink: 0;
}
.pp-notif-restore-btn:hover,
.pp-notif-restore-btn:focus {
    color: var(--pp-text-primary, #e8eaf0);
    border-color: #4ade80;
}
.pp-notif-restore-btn:disabled {
    opacity: 0.5;
    cursor: not-allowed;
}
.pp-notif-locked {
    background: var(--pp-card-bg, #252b3d);
    border: 1px solid var(--pp-border, #3a4055);
    border-radius: 8px;
    padding: 24px;
    text-align: center;
}
.pp-notif-locked-title {
    font-size: 20px;
    color: var(--pp-text-primary, #e8eaf0);
    margin: 0 0 6px;
}
.pp-notif-locked-desc {
    font-size: 13px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin: 0 0 16px;
    opacity: 0.9;
}
.pp-notif-upgrade-btn {
    display: inline-block;
    background: #4ade80;
    color: #1a1f2e;
    padding: 9px 18px;
    border-radius: 4px;
    font-size: 13px;
    font-weight: 500;
    text-decoration: none;
}
.pp-notif-upgrade-btn:hover,
.pp-notif-upgrade-btn:focus {
    background: #22c55e;
    color: #1a1f2e;
    text-decoration: none;
}

/* === Polish #1 — Hero CTA contrast ====================== */
/* Strengthens text contrast on the v4.24.7 Hero CTA without
   modifying the v4.24.7 marked block. Re-declared selector =>
   later rule wins. */
.pp-tc-hero-cta-primary {
    color: #0f1419;
    font-weight: 600;
}
.pp-tc-hero-cta-primary:hover,
.pp-tc-hero-cta-primary:focus {
    color: #0f1419;
}
/* === end Polish #1 ====================================== */

/* === Polish #2 — h1/nav overlap ========================= */
/* The Tournament Coach <h1> and the Notification Settings <h1>
   were too close to the sticky nav at mobile breakpoints. Add
   a small top margin to both. */
.pp-cc-wrap h1.pp-cc-title,
.pp-notif-settings-header h1 {
    margin-top: 12px;
}
@media (max-width: 768px) {
    .pp-cc-wrap h1.pp-cc-title,
    .pp-notif-settings-header h1 {
        margin-top: 18px;
    }
}
/* === end Polish #2 ====================================== */

/* end v4.24.11 — WNA + settings + polish #1 + polish #2 */

/* ====================================================== */
/* v4.24.12 — Mobile responsive pass + calendar coloring  */
/* + WNA dismissed count + h2/h1 nav-overlap polish       */
/* ====================================================== */

/* ── PIECE B: Calendar event color-coding by category ──
   Selector .pp-cc-cal-event resolved via R1 (pokerpath.js
   line 2416 renders these via renderCCCalendar()). Category
   data attribute set by the v4.24.12 sub-block inside wrapper #7
   in pokerpath.js (PATH B3 PREFERRED). Palette hex values match
   the v4.24.11 .pp-wna-badge-* declarations — NOT redeclared,
   just reused on a different selector. */
.pp-cc-cal-event[data-pp-cat="bankroll"] {
    background: #f87171;
    color: #1a1f2e;
}
.pp-cc-cal-event[data-pp-cat="trip"] {
    background: #fbbf24;
    color: #1a1f2e;
}
.pp-cc-cal-event[data-pp-cat="tournament"] {
    background: #4ade80;
    color: #1a1f2e;
}
.pp-cc-cal-event[data-pp-cat="table"] {
    background: #60a5fa;
    color: #1a1f2e;
}
.pp-cc-cal-event[data-pp-cat="system"] {
    background: #9ba3b8;
    color: #1a1f2e;
}

/* ── PIECE C: WNA dismissed-count badge ──
   New selector — does not modify any v4.24.11 .pp-wna-* rule. */
.pp-wna-dismissed-count {
    margin-left: 6px;
    font-size: 10px;
    color: var(--pp-text-secondary, #9ba3b8);
    font-weight: 400;
}

/* ── PIECE D: v4.24.11 polish #2 selector correction ──
   R2 + R8 confirmed v4.24.11 polish #2 missed the actual elements:
     /tournament-coach/ uses <h2 class="pp-cc-title"> inside
       <div class="pp-cc-header"><div class="pp-cc-title-row">
     /travel-coach/ (via PP_Travel::render_shortcode) uses <h1>
       inside <div class="pp-travel-header"> (h1 has no class).
   v4.24.11 selectors h1.pp-cc-title and .pp-notif-settings-header h1
   never matched on those two pages. v4.24.11 rules are NOT modified;
   v4.24.12 adds correctly-targeted overrides with !important to win
   the cascade. Hero CTA polish #1 (.pp-tc-hero-cta-primary) IS
   working in v4.24.11 — selector matches; no override required. */
.pp-cc-header .pp-cc-title-row h2.pp-cc-title,
.pp-travel-header h1 {
    margin-top: 24px !important;
    padding-top: 12px !important;
}

/* ── PIECE A: Mobile responsive pass ──
   Single @media block at the locked breakpoint per R4
   (max-width: 768px — dominant convention in the file).
   Touch targets ≥44px on every interactive element (WCAG).
   iOS input zoom prevented via font-size ≥16px on form inputs. */
@media (max-width: 768px) {
    /* Indicator strip — stack vertically */
    .pp-tc-indicator {
        flex-direction: column;
        align-items: stretch;
        gap: 6px;
    }
    .pp-tc-indicator-right { text-align: left; }

    /* Hero — adjust padding + font sizes */
    .pp-tc-hero { padding: 12px; }
    .pp-tc-hero-title { font-size: 16px; }
    .pp-tc-hero-when,
    .pp-tc-hero-why { font-size: 12px; }
    .pp-tc-hero-cta-primary {
        min-height: 44px;
        padding: 10px 16px;
    }

    /* Cross-Coach Insight */
    .pp-tc-insight { padding: 10px; }
    .pp-tc-insight-title { font-size: 13px; }
    .pp-tc-insight-cta {
        min-height: 44px;
        padding: 10px 16px;
    }

    /* Best 3 rows — stack rank + main + verdict */
    .pp-tc-best3-row {
        flex-wrap: wrap;
        gap: 8px;
        min-height: 44px;
    }
    .pp-tc-best3-main {
        flex: 1 1 100%;
        order: 2;
        min-width: 0;
    }
    .pp-tc-best3-rank { order: 1; }
    .pp-tc-best3-verdict {
        order: 3;
        margin-left: auto;
    }

    /* WNA rows — touch targets on buttons */
    .pp-wna-row { flex-wrap: wrap; }
    .pp-wna-dismiss-btn {
        min-width: 44px;
        min-height: 44px;
    }

    /* Coach card grid — single column (R6 selector: .pp-coach-status-grid) */
    .pp-coach-status-grid {
        grid-template-columns: 1fr;
    }

    /* Calendar grid + events (R7: .pp-cc-cal-body | R1: .pp-cc-cal-event) */
    .pp-cc-cal-body {
        font-size: 11px;
    }
    .pp-cc-cal-event {
        font-size: 9px;
        padding: 2px 4px;
    }

    /* /travel-coach/ — iOS zoom prevention + touch targets */
    .pp-travel-form input[type="text"],
    .pp-travel-form input[type="date"],
    .pp-travel-form textarea {
        font-size: 16px;     /* prevents iOS auto-zoom on focus */
        min-height: 44px;
    }
    .pp-travel-add-btn,
    .pp-travel-save-btn,
    .pp-travel-cancel-btn,
    .pp-travel-edit-btn,
    .pp-travel-delete-btn {
        min-height: 44px;
        padding: 10px 16px;
    }
    /* The "Show past trips" toggle is a button — needs touch target too. */
    .pp-travel-past-toggle-btn {
        min-height: 44px;
        padding: 10px 16px;
    }

    /* /notification-settings/ */
    .pp-notif-settings { padding: 12px; }
    .pp-notif-category-row { flex-wrap: wrap; }
    .pp-notif-category-label {
        min-height: 44px;
    }
    .pp-notif-save-btn,
    .pp-notif-restore-btn {
        min-height: 44px;
    }
}
/* end v4.24.12 — mobile + calendar coloring + WNA count + h2/h1 polish */

/* ====================================================== */
/* v4.24.13 — TC hero header parity + coach grid 5-col    */
/* fix (override prior 6-col span-2 layout). All prior    */
/* marked blocks remain byte-identical per orphan/append  */
/* discipline.                                            */
/* ====================================================== */

/* ── PIECE A: TC hero header (matches Travel Coach pattern) */
.pp-tc-header {
    text-align: center;
    padding-top: 24px;
    padding-bottom: 16px;
}
/* Share h1 styling with Travel Coach via comma selector.
   Declarations BYTE-IDENTICAL to the v4.24.8 Travel block's
   .pp-travel-header h1 rule per R3 quote. */
.pp-travel-header h1,
.pp-tc-header h1 {
    font-size: 22px;
    font-weight: 600;
    color: var(--pp-text-primary, #e8eaf0);
    margin: 0 0 4px;
}
.pp-travel-tagline,
.pp-tc-tagline {
    font-size: 13px;
    color: var(--pp-text-secondary, #9ba3b8);
    margin: 0;
    opacity: 0.85;
}

/* ── PIECE C: Coach card grid responsive fix.
   The prior pre-marked-block rule (pokerpath.css line 3079)
   sets grid-template-columns: repeat(6, 1fr) with each card
   spanning 2 columns + explicit nth-child(4)/nth-child(5)
   placement — produces the 3+2 desktop layout with empty
   corners that Jason caught. Override to a clean 5-column
   row by:
     1. forcing grid-template-columns: repeat(5, minmax(135px, 1fr))
     2. resetting grid-column to auto on each card (defeats
        span 2 + explicit placements)
     3. re-asserting mobile single-column with !important
        so v4.24.13's desktop !important rule doesn't win
        at narrow widths. */
.pp-coach-status-grid {
    grid-template-columns: repeat(5, minmax(135px, 1fr)) !important;
}
.pp-coach-status-grid > .pp-coach-card,
.pp-coach-status-grid > .pp-coach-card:nth-child(4),
.pp-coach-status-grid > .pp-coach-card:nth-child(5) {
    grid-column: auto !important;
}
@media (max-width: 768px) {
    .pp-coach-status-grid {
        grid-template-columns: 1fr !important;
    }
}
/* end v4.24.13 — TC hero header + coach grid 5-col fix */

/* ====================================================== */
/* v4.24.14 — TC hero Stage Coach parity + 120px blank    */
/* space fix. Hero text styling inherits Stage Coach's    */
/* existing .pp-coach-page-title / .pp-coach-page-subtitle */
/* CSS — no new hero text rules added.                    */
/* All 7 prior marked blocks remain byte-identical per    */
/* orphan/append discipline.                              */
/* ====================================================== */

/* ── PIECE B: Kill orphan 120px padding-top on .pp-cc-wrap
   TC-SCOPED via body.page-id-575 (R4 proved .pp-cc-wrap is
   SHARED across 8+ coach pages — global override forbidden;
   R8 confirms WP body class page-id-575 unique to TC per
   live DOM evidence from v4.24.13 Phase 10).
   Every other coach page already overrides via its own
   *-wrap-tight class (Bankroll, Travel, My Path, Shot
   Selection, Stage Coach). TC never added one — the 120px
   blank space is the result of TC inheriting the shared
   default. v4.24.14 fixes via body-class scope.
   16px breathing room between hero subtitle and the
   indicator strip; smaller than the 24px other coaches use
   because TC's hero now lives ABOVE .pp-cc-wrap (Stage Coach
   pattern — h1/subtitle outside the wrapper) so less internal
   padding is needed. */
body.page-id-575 .pp-cc-wrap {
    padding-top: 16px !important;
}
/* end v4.24.14 — TC hero Stage Coach parity + blank space fix */

/* ====================================================== */
/* v5.0.0 — Site-Wide Repair                              */
/*   Group D: tournament detail centered hero + clearance */
/*   Group E: universal nav-overlap (.pp-coach-page-title)*/
/*   Group F: .pp-tc-header defensive grid override       */
/*   Group I: green CTA contrast                          */
/* All 8 prior marked blocks remain byte-identical per    */
/* append-only / orphan policy. No edits to prior rules.  */
/* ====================================================== */

/* ── PIECE A — Group E: universal nav-overlap clearance.
   Live recon (R8) measured the fixed nav at ~158px on mobile
   and ~80px on desktop. The shared title class
   .pp-coach-page-title sits at the top of 6 coach pages
   (TC, Bankroll, Travel, Stage, Shot Selection, Table) plus
   /my-path/ and ships with no top padding — the gold-serif
   title is rendered behind the nav. Add a single universal
   rule using the shared title class. */
.pp-coach-page-title {
    padding-top: 80px;
}

/* Tournaments index page: the search hero (.pp-search-wrap
   or first heading) also needs nav clearance. Scope via
   the body class WP emits for the /tournaments/ page so
   we don't add padding to every page that ever uses the
   class. */
body.page-tournaments .pp-search-wrap,
body.page-template-tournaments .pp-search-wrap,
.pp-tournaments-page .pp-search-wrap {
    padding-top: 80px;
}

/* Homepage hero: first .pp-home-hero heading needs the
   same clearance. Scoped to body.home to avoid cascading
   to any reuse of .pp-home-hero outside the front page. */
body.home .pp-home-hero {
    padding-top: 80px;
}

/* Register page: the .pp-auth-wrap container ships with
   no top spacing. Scoped via the page slug. */
body.page-register .pp-auth-wrap {
    padding-top: 80px;
}

/* ── PIECE B — Group F: defensive .pp-tc-header override.
   Live DOM (Jason recon) shows .pp-tc-header computes to
   display: grid; grid-template-columns: 191.406px 169.445px
   72.625px ... × 5 — producing the broken 7-column side-by-
   side layout on TC + My Recommendations.
   Grep of plugin CSS (R9) found ZERO matches for grid-
   template-columns or the hardcoded pixel values on
   .pp-tc-header. The grid is owned by the Astra theme
   wrapper (D15 forbids theme edits). Defensive override
   forces normal block flow so the header h1 + subtitle
   stack vertically. */
.pp-tc-header {
    display: block !important;
    grid-template-columns: none !important;
}

/* ── PIECE C — Group D: tournament detail layout fix.
   R7 confirmed plugin owns the template via single_template
   filter at priority 999 — Astra does NOT own this page, so
   D15 not triggered. The detail body opens with
   <main class="pp-tournament-detail">
       <article class="pp-td-wrap"> ...
   Add nav clearance to .pp-tournament-detail (universal
   .pp-coach-page-title rule above does not apply because
   tournament detail uses .pp-td-title not .pp-coach-
   page-title). Center the badges + hero + actions row so
   the layout matches Jason's mockup. */
.pp-tournament-detail {
    padding-top: 80px;
}
.pp-tournament-detail .pp-td-wrap {
    max-width: 900px;
    margin: 0 auto;
}
.pp-tournament-detail .pp-td-badges,
.pp-tournament-detail .pp-td-hero,
.pp-tournament-detail .pp-td-actions {
    text-align: center;
}
.pp-tournament-detail .pp-td-actions {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 12px;
}
.pp-tournament-detail .pp-td-badges {
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 8px;
}

/* ── PIECE D — Group I: green CTA contrast.
   Live recon (R11) measured .pp-tc-hero-cta-primary at
   background #4ade80 with color #04ce78 — fails WCAG AA
   contrast. Force background darker (#22c55e) and text
   high-contrast (#0a0f1a) so the button is readable in
   both light + dark themes.
   Specificity: !important is used because the existing
   green CTA rules ship with inline-style fallback in
   pokerpath.js (sacred — not unlocked this cycle); a
   plain selector would lose the cascade against inline
   style attributes. */
.pp-tc-hero-cta-primary,
.pp-tc-hero-cta,
a.pp-tc-hero-cta-primary,
a.pp-tc-hero-cta {
    background-color: #22c55e !important;
    color: #0a0f1a !important;
}
.pp-tc-hero-cta-primary:hover,
.pp-tc-hero-cta:hover,
a.pp-tc-hero-cta-primary:hover,
a.pp-tc-hero-cta:hover {
    background-color: #16a34a !important;
    color: #0a0f1a !important;
}

/* Mobile nudge: on narrow viewports the universal 80px
   padding above pushes content too far down on phones
   where the nav is roughly the same height but the
   viewport is shorter. Trim 20px on mobile. */
@media (max-width: 768px) {
    .pp-coach-page-title,
    body.page-tournaments .pp-search-wrap,
    body.page-template-tournaments .pp-search-wrap,
    .pp-tournaments-page .pp-search-wrap,
    body.home .pp-home-hero,
    body.page-register .pp-auth-wrap,
    .pp-tournament-detail {
        padding-top: 60px;
    }
}
/* end v5.0.0 — Site-Wide Repair (Groups D/E/F/I) */

/* ====================================================== */
/* v5.1.0 — Finish Everything                              */
/*   Group D-completion: tournament detail (real classes)  */
/*   Group E-completion: working selectors (drop fake body  */
/*     classes used in v5.0.0)                              */
/*   Group F-contrast: My Recommendations .pp-tc-title      */
/*     readable on dark background                          */
/* All 9 prior marked blocks (v4.24.7 .. v5.0.0) remain    */
/* byte-identical. No edits to prior rules.                */
/* ====================================================== */

/* ── PIECE A — Group D-completion.
   v5.0.0 PIECE C targeted .pp-td-hero — a class that does
   NOT exist in templates/single-tournament.php render
   output. Actual class is .pp-td-header (verified in
   class-pp-tournament-detail.php:212). The v5.0.0 rule
   therefore matched nothing; the hero never got centered.
   Re-target the real classes here. Also center
   .pp-td-interest (thermometer block) and .pp-td-meta
   (Tournament details section), which v5.0.0 didn't
   address. */
.pp-tournament-detail .pp-td-header {
    text-align: center;
}
.pp-tournament-detail .pp-td-interest {
    display: flex;
    justify-content: center;
}
.pp-tournament-detail .pp-td-meta {
    max-width: 720px;
    margin-left: auto;
    margin-right: auto;
}
.pp-tournament-detail .pp-td-section-title {
    text-align: center;
}

/* ── PIECE B — Group E-completion.
   v5.0.0 PIECE A used three selectors that NEVER match in
   vanilla WordPress: body.page-tournaments,
   body.page-template-tournaments, .pp-tournaments-page.
   WP doesn't emit slug-based body classes by default, and
   the plugin doesn't register a body_class filter (grep
   confirms ZERO matches for body_class across the plugin).
   The v5.0.0 rule was dead — .pp-search-wrap never got
   80px clearance on /tournaments/.
   Replace with selectors that DO match:

   1. .pp-search-wrap (plain) — pushes any standalone
      [pp_search] rendering down by 80px.
   2. .pp-home-hero .pp-search-wrap — cancel rule 1 inside
      home hero (search inside hero already gets the
      hero's own 80px padding from v5.0.0 PIECE A).
   3. .pp-auth-wrap (plain) — pushes [pp_register] AND
      [pp_login] wrappers down. v5.0.0 PIECE A used
      body.page-register .pp-auth-wrap (body.page-register
      doesn't exist). Drop the body-class scope.

   .pp-home-hero rule from v5.0.0 PIECE A already works
   (body.home IS emitted by WP for the front page). No
   change needed there. */
.pp-search-wrap {
    padding-top: 80px;
}
.pp-home-hero .pp-search-wrap {
    padding-top: 0;
}
.pp-auth-wrap {
    padding-top: 80px;
}

/* ── PIECE C — Group F-contrast.
   .pp-tc-title (line 2130) uses color: var(--pp-gray-900)
   → var(--pp-text-primary) → #0f172a (light theme).
   My Recommendations renders <div class="pp-tc-wrap">
   WITHOUT a .pp-theme-dark class (compare to Tournament
   Coach at class-pp-shortcodes.php:3163 which uses
   "pp-cc-wrap pp-theme-dark"). On the dark page background
   Astra serves, #0f172a is dark-on-dark → invisible.
   The wrapper is a markup site we cannot edit this cycle
   (class-pp-shortcodes.php unlock is helper-only). Force
   high-contrast color via CSS scoped to .pp-tc-wrap. */
.pp-tc-wrap .pp-tc-title {
    color: #F1F5F9 !important;
}

/* ── PIECE D — Mobile nudge for the new selectors.
   v5.0.0 mobile rule trimmed padding to 60px on the
   selectors it knew. Add the v5.1.0 selectors to the
   same trim. */
@media (max-width: 768px) {
    .pp-search-wrap,
    .pp-auth-wrap {
        padding-top: 60px;
    }
    .pp-home-hero .pp-search-wrap {
        padding-top: 0;
    }
    .pp-tournament-detail .pp-td-meta {
        max-width: 100%;
    }
}
/* end v5.1.0 — Finish Everything (Groups D/E/F) */

/* ====================================================== */
/* v5.2.2 — Block D5: profile-tag pill contrast on        */
/*   My Recommendations.                                   */
/* FIRST CSS unlock since v5.0.0 — authorized by v5.2.2    */
/* build prompt Block D5. Append-only / no edits to prior  */
/* rules. 6-point unlock proof carried in build report.    */
/* ====================================================== */

/* ── PIECE A — My Recommendations profile pill contrast.
   .pp-tc-wrap renders the My Recommendations page (see
   class-pp-shortcodes.php:3906). The header row contains
   <span class="pp-tc-profile-tag"> pills (lines 3912, 3915,
   3918). Existing CSS:
     • .pp-tc-profile-tag (pokerpath.css:2143) → light-theme
       palette using --pp-gray-50 / --pp-gray-200 / --pp-gray-700.
     • .pp-theme-dark .pp-tc-profile-tag (pokerpath.css:4446) →
       dark-friendly override (rgba whites).
   .pp-tc-wrap at line 3906 lacks the .pp-theme-dark class
   (compare with .pp-cc-wrap pp-theme-dark at :3163), so the
   dark override never engages and the pills render with the
   light palette on a dark site background — low contrast.
   Wrapper markup edit is OUT of scope this cycle; force the
   correct palette via a wrapper-scoped CSS rule. The other
   .pp-tc-wrap usage at class-pp-shortcodes.php:2759 already
   sits inside .pp-cc-wrap.pp-theme-dark, where the existing
   :4446 rule wins for any .pp-tc-profile-tag — so this new
   selector is dominated there and only affects the
   My Recommendations rendering. */
.pp-tc-wrap .pp-tc-profile-tag {
    /* v5.2.3 Block D — bumped from 0.09/0.18 to 0.15/0.25 per Phase 11 finding
       that 0.09 background is too subtle on the dark page (pills fade into
       background). Same selector, same scope, same !important — only the two
       alpha values changed. Color value at 0.88 unchanged. */
    background: rgba(255,255,255,0.15) !important;
    border-color: rgba(255,255,255,0.25) !important;
    color: rgba(255,255,255,0.88) !important;
}
/* end v5.2.2 — Block D5 profile-tag pill contrast (v5.2.3 D opacity bump applied) */

/* ====================================================== */
/* v5.2.3 — Block D: My Recommendations card definition.  */
/* SECOND CSS unlock since v5.0.0 — authorized by v5.2.3   */
/* build prompt Block D. Append-only / no edits to prior   */
/* rules beyond the pill-opacity bump above.               */
/* ====================================================== */

/* ── PIECE A — My Recommendations card edge definition.
   .pp-card (pokerpath.css:544) sets a 1px var(--pp-gray-300)
   border globally — sufficient on light pages but the My
   Recommendations page renders on Astra's dark background,
   where gray-300 borders disappear into the surface and the
   cards lose perceived edge. Add a subtle elevation shadow
   scoped to .pp-tc-wrap .pp-card so the card definition only
   strengthens inside My Recommendations and every other .pp-card
   render site (search results, tournament listing, etc.) keeps
   the existing visual exactly. Box-shadow chosen over a border
   bump because the existing .pp-card already has var(--pp-shadow-md)
   in its base rule — this is an additive specificity bump using
   the same shadow vocabulary, not a new border treatment. */
.pp-tc-wrap .pp-card {
    box-shadow: 0 1px 3px rgba(0,0,0,0.08), 0 4px 12px rgba(0,0,0,0.12) !important;
}
/* end v5.2.3 — Block D My Recommendations card definition */

/* ====================================================== */
/* v5.5.8 — Fix 6 CASCADE CONSOLIDATION (Hero-only final). */
/*                                                          */
/* Lineage:                                                 */
/*   v4.19.5 §15  → 92px / 76px  (pp-v4-19-fixes.css)      */
/*   v4.19.7-r2  → 88px / 72px  (pp-v4-19-fixes.css)      */
/*   v5.5.5-fix1 → 170px / 140px (pokerpath.css)           */
/*   v5.5.8      → 180px desktop guest, 212px desktop AB,  */
/*                 145px mobile guest, 191px mobile AB     */
/*                 (HERO ONLY — see Gate 8 ruling below)   */
/*                                                          */
/* Why this cycle (live-prod measurement 2026-05-20):       */
/* Computed .pp-hero padding-top in production = 88px      */
/* (NOT the 170px in the v5.5.5-fix1 source). Two rules    */
/* at identical specificity (0,3,2) with !important both   */
/* claimed the winning slot — last-loaded won, which       */
/* depending on enqueue order was the v4.19.7-r2 88px      */
/* line in pp-v4-19-fixes.css. Title visibly overlapped    */
/* the 131px nav band by ~43px.                             */
/*                                                          */
/* Strategy B (ChatGPT Gate 6 ruling):                      */
/*   1. ONE winning rule per state. Use a higher-          */
/*      specificity selector that all prior cascade-       */
/*      tied rules cannot reach:                            */
/*        html body.home main.site-main .pp-hero           */
/*      specificity 0,4,3 — beats the prior pattern        */
/*      html body.home .pp-hero.pp-hero (0,3,2) AND        */
/*      Customizer Additional CSS at 0,2,2.                */
/*   2. Neutralize the legacy pp-v4-19-fixes.css §15 rule  */
/*      (comment-out with paper-trail). See that file.     */
/*   3. Add admin-bar variants — body.admin-bar selector.  */
/*                                                          */
/* Gate 8 ruling (Hero-only ship):                          */
/*   Hero rules APPROVED via live-DOM evidence (all 4      */
/*   states proven overlap=FALSE).                          */
/*   Tournaments rules STRIPPED — earlier patched variant   */
/*   did not win cascade per live evidence on the          */
/*   /tournaments/ page. Restored to v5.5.7 baseline state. */
/*   Mobile calendar Option 2 DEFERRED — logged-out gate   */
/*   was not live-verified before Gate 8.                  */
/*                                                          */
/* Live-DOM math (LIVE-VERIFIED 2026-05-19 + Gate-6-locked  */
/* + Gate-8-confirmed for hero):                            */
/*   Home .pp-hero natural top  = 0 (guest) / 32 (admin)   */
/*   Nav bottom desktop         = 131 (guest) / 163 (admin)*/
/*   Nav bottom mobile          = ~110 (guest) / ~156 (AB) */
/*     (admin-bar collapses to 46px on mobile per          */
/*      WordPress core .admin-bar mobile breakpoint)        */
/*                                                          */
/* Home values (Gate-6-locked, Gate-8-confirmed):            */
/*   Desktop guest  : 180px  → title at 0+180=180  (49px   */
/*                              clearance over navBot 131) */
/*   Desktop admin  : 212px  → title at 32+212=244 (81px   */
/*                              clearance over navBot 163) */
/*   Mobile  guest  : 145px  → title at 0+145=145  (35px   */
/*                              clearance over navBot 110) */
/*   Mobile  admin  : 191px  → title at 0+191=191  (35px   */
/*                              clearance over navBot 156) */
/*                                                          */
/* Selectors used (specificity in parentheses):              */
/*   html body.home main.site-main .pp-hero       (0,4,3)  */
/*   html body.admin-bar.home main.site-main .pp-hero      */
/*                                                  (0,4,3)*/
/*     All 4 rules carry !important; cascade winners are    */
/*     unambiguous against the 0,3,2 legacy v5.5.5-fix1     */
/*     rule (still present, harmless) and the neutralized   */
/*     pp-v4-19-fixes.css §15 rule (commented out).         */
/*                                                          */
/* Blast radius:                                             */
/*   - html body.home main.site-main .pp-hero → Home only.  */
/*   - Coach pages NOT touched: their clearance flows       */
/*     through .pp-coach-page-title and per-coach wrappers, */
/*     neither of which appear in this rule block.          */
/*   - /tournaments/ NOT touched in v5.5.8 — Gate 8 stripped*/
/*     all .pp-tournaments-cal-v17 rules from this cycle.   */
/*   - NO body padding. NO global shift. NO nav repos. NO   */
/*     z-index changes. NO theme/functions.php/theme.json/  */
/*     Astra parent changes. NO theme activation change.    */
/* ====================================================== */
/* v5.5.8 FINAL (Gate 8 Hero-only ruling):                                  */
/* Gate 8 ruling: Hero portion APPROVED, Tournaments rules STRIPPED         */
/* (didn't win cascade per live evidence), Mobile grid Option 2 DEFERRED   */
/* (logged-out gate not live-verified).                                     */
/*                                                                          */
/* Final shipped rules: the 4 .pp-hero rules below with !important and     */
/* specificity 0,4,3 — proven via live-DOM evidence to clear nav in all 4  */
/* hero states (desktop guest, desktop admin-bar, mobile guest, mobile     */
/* admin-bar). Tournaments selectors and mobile calendar Option 2 are NOT  */
/* in this build; they may return in a future cycle with live evidence.    */
html body.home main.site-main .pp-hero {
    padding-top: 180px !important;
}
html body.admin-bar.home main.site-main .pp-hero {
    padding-top: 212px !important;
}
@media (max-width: 768px) {
    html body.home main.site-main .pp-hero {
        padding-top: 145px !important;
    }
    html body.admin-bar.home main.site-main .pp-hero {
        padding-top: 191px !important;
    }
}
/* end v5.5.8 — Fix 6 cascade consolidation (Gate 8 Hero-only final) */

/* ======================================================================== */
/* v6.6.0 — Partner dashboard tournament list (read-only).                  */
/* Reuses the locked .pp-card anatomy above; only the partner wrapper,      */
/* per-casino section header, card grid, "showing X of Y" line and empty    */
/* state are new. All colors via existing tokens so dark theme inherits.    */
/* ======================================================================== */
.pp-partner-tournaments { margin-top: 24px; }

.pp-partner-casino-section { margin-bottom: 28px; }

.pp-partner-casino-section h2 {
    font-size: 18px;
    font-weight: 700;
    line-height: 1.3;
    margin: 0 0 12px;
    padding-bottom: 6px;
    color: var(--pp-text-primary);
    border-bottom: 2px solid var(--pp-green);
}

.pp-partner-tournament-grid {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
    gap: 14px;
}

.pp-partner-showing {
    margin: 12px 0 0;
    font-size: 12px;
    color: var(--pp-text-secondary);
}

.pp-partner-empty {
    margin: 0;
    padding: 16px;
    font-size: 14px;
    text-align: center;
    color: var(--pp-text-secondary);
    border: 1px dashed var(--pp-gray-300);
    border-radius: 8px;
}

@media (max-width: 768px) {
    .pp-partner-tournament-grid { grid-template-columns: 1fr; }
}
/* end v6.6.0 — Partner dashboard tournament list */

/* ======================================================================== */
/* v6.8.0 — Partner analytics (aggregate-only, read-only). Mobile-first.    */
/* All colors via existing tokens so dark theme inherits; soft surfaces use */
/* a literal green that matches the locked --pp-green hue.                   */
/* ======================================================================== */
.pp-pa{
    margin-top:24px;
    background:var(--pp-bg-primary, #fff);
    border:1px solid var(--pp-gray-300);
    border-radius:14px;
    padding:18px;
}
.pp-pa-ic{width:14px;height:14px;stroke:currentColor;fill:none;stroke-width:2;stroke-linecap:round;stroke-linejoin:round;vertical-align:-2px;}
.pp-pa-topbar{display:flex;align-items:center;justify-content:space-between;gap:8px;}
.pp-pa-eyebrow{font-size:12px;color:var(--pp-text-secondary);}
.pp-pa-pill{
    font-size:12px;font-weight:500;color:var(--pp-green);
    background:rgba(22,163,74,.12);
    padding:3px 10px;border-radius:8px;
    display:inline-flex;align-items:center;gap:5px;
}
.pp-pa-casino{font-size:20px;font-weight:700;line-height:1.25;margin-top:2px;color:var(--pp-text-primary);}
.pp-pa-ctx{font-size:12px;color:var(--pp-text-secondary);margin-bottom:14px;display:flex;align-items:center;gap:5px;}
.pp-pa-cards{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:20px;}
.pp-pa-stat{background:var(--pp-bg-secondary, #f8fafc);border:1px solid var(--pp-gray-300);border-radius:10px;padding:10px;}
.pp-pa-stat .lbl{font-size:12px;color:var(--pp-text-secondary);}
.pp-pa-stat .val{font-size:22px;font-weight:700;margin-top:2px;color:var(--pp-text-primary);}
.pp-pa-sec{font-size:13px;font-weight:600;color:var(--pp-text-secondary);margin:0 0 4px;display:flex;align-items:center;gap:6px;}
.pp-pa-subt{font-size:11px;color:var(--pp-text-secondary);opacity:.8;margin:0 0 10px;}
.pp-pa-bars{display:flex;align-items:flex-end;gap:5px;height:84px;margin-bottom:6px;}
.pp-pa-bars div{flex:1;background:var(--pp-green);border-radius:3px 3px 0 0;min-height:2px;}
.pp-pa-axis{display:flex;justify-content:space-between;font-size:11px;color:var(--pp-text-secondary);opacity:.8;margin-bottom:18px;}
.pp-pa-row{display:flex;align-items:center;gap:8px;margin-bottom:8px;font-size:13px;}
.pp-pa-row:last-of-type{margin-bottom:20px;}
.pp-pa-k{width:64px;color:var(--pp-text-secondary);}
.pp-pa-track{flex:1;background:var(--pp-bg-secondary, #f8fafc);border:1px solid var(--pp-gray-300);border-radius:4px;height:14px;}
.pp-pa-fill{background:var(--pp-green);height:12px;border-radius:3px;}
.pp-pa-v{width:36px;text-align:right;font-weight:600;color:var(--pp-text-primary);}
.pp-pa-top{margin-bottom:20px;}
.pp-pa-item{display:flex;justify-content:space-between;gap:10px;padding:9px 0;border-bottom:1px solid var(--pp-gray-300);font-size:14px;color:var(--pp-text-primary);}
.pp-pa-item:last-child{border-bottom:none;}
.pp-pa-item .pp-pa-n{font-weight:600;}
.pp-pa-chan{background:var(--pp-bg-secondary, #f8fafc);border:1px solid var(--pp-gray-300);border-radius:10px;padding:10px 12px;font-size:13px;color:var(--pp-text-primary);}
.pp-pa-l{display:flex;justify-content:space-between;padding:3px 0;}
.pp-pa-foot{font-size:11px;color:var(--pp-text-secondary);border-top:1px solid var(--pp-gray-300);padding-top:9px;margin-top:16px;}
.pp-pa-empty{margin-top:6px;border:1px dashed var(--pp-gray-300);border-radius:12px;padding:18px;text-align:center;background:var(--pp-bg-secondary, #f8fafc);}
.pp-pa-empty .h{font-size:14px;font-weight:600;margin-bottom:6px;color:var(--pp-text-primary);}
.pp-pa-empty .p{font-size:12px;color:var(--pp-text-secondary);line-height:1.55;}
/* end v6.8.0 — Partner analytics */

/* ======================================================================== */
/* v6.9.0 — Partner analytics teaser (locked card for free/expired partners) */
/* ======================================================================== */
.pp-pa-locked .pp-pa-lockwrap{
    position:relative;
    border:1px solid var(--pp-gray-300);
    border-radius:12px;
    overflow:hidden;
    margin-top:6px;
}
.pp-pa-blur{
    filter:blur(5px);
    opacity:.55;
    padding:14px;
    pointer-events:none;
    user-select:none;
}
.pp-pa-overlay{
    position:absolute;
    inset:0;
    display:flex;
    flex-direction:column;
    align-items:center;
    justify-content:center;
    text-align:center;
    gap:8px;
    padding:18px;
    background:rgba(248,250,252,.74);
}
.pp-pa-lock-ic{ color:var(--pp-text-secondary); }
.pp-pa-lock-title{ font-size:16px; font-weight:700; color:var(--pp-text-primary); }
.pp-pa-unlock-list{
    list-style:none;
    margin:2px 0 4px;
    padding:0;
    font-size:12px;
    color:var(--pp-text-secondary);
    line-height:1.7;
}
.pp-pa-upgrade{
    margin-top:4px;
    background:var(--pp-green);
    color:#fff;
    border:none;
    border-radius:8px;
    padding:9px 18px;
    font-size:14px;
    font-weight:600;
    cursor:not-allowed;
    opacity:.95;
}
.pp-pa-trial{ font-size:12px; color:var(--pp-text-secondary); }
/* end v6.9.0 — Partner analytics teaser */

/* =================================================================== 
   v6.9.60 r2 - Poker Tours calendar weekday-row grid fix (visual-audit #1).
   ADDITIVE / append-only: modifies NO existing rule. Scoped to the legacy
   tours calendar container (#pp-tc-grid; class-pp-tour-calendar.php:126),
   so ONLY the weekday header grids. Specificity (1,1,0)+!important beats the
   Group F defensive ".pp-tc-header{display:block!important}" (0,1,0)+!important,
   which still protects the My Recommendations + Tournament Coach headers
   (neither is a descendant of #pp-tc-grid). /tournaments/ (pp-tc17) untouched.
   =================================================================== */
#pp-tc-grid .pp-tc-header {
    display: grid !important;
    grid-template-columns: repeat(7, 1fr) !important;
}
/* end v6.9.60 r2 - Poker Tours calendar grid fix */
