:root {
    --pvl-primary:  #1e7a8c;
    --pvl-navy:     #1e2d5a;
    --pvl-gold:     #c9a84c;
    --pvl-gold-lt:  #fdf6e3;
}
/* Pavilion – Frontend styles
   Palette: deep green #1e7a8c, warm white #f8faf8, accent #3d8fa6 */

.bcm { font-family: inherit; color: #222; }
/* ── Member Profile public page ─────────────────────────── */
.pvl-my-profile { font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; color: #0f172a; }
.pvl-my-profile input[type="text"],
.pvl-my-profile input[type="tel"],
.pvl-my-profile input[type="email"],
.pvl-my-profile input[type="date"],
.pvl-my-profile select,
.pvl-my-profile textarea {
    width: 100%; padding: 8px 12px; border: 1px solid #e2e8f0; border-radius: 8px;
    font-size: 13px; font-family: inherit; box-sizing: border-box; color: #0f172a;
    background: #fff; transition: border-color .15s;
}
.pvl-my-profile input:focus, .pvl-my-profile select:focus, .pvl-my-profile textarea:focus {
    outline: none; border-color: #1e7a8c; box-shadow: 0 0 0 3px rgba(30,122,140,.1);
}
.pvl-my-profile .pvl-profile-field-group { margin-bottom: 14px; }
.pvl-my-profile .pvl-profile-field-label { font-size: 11px; font-weight: 700; color: #64748b; text-transform: uppercase; letter-spacing: .05em; margin-bottom: 5px; display: block; }


.bcm__heading {
    font-size: 1.4rem;
    font-weight: 700;
    color: #1e7a8c;
    margin-bottom: 1.2rem;
}
.bcm__heading--sub { font-size: 1.1rem; margin-top: 2rem; }

/* Notices */
.pvl-notice {
    padding: 12px 16px;
    border-radius: 6px;
    margin-bottom: 1rem;
    font-weight: 500;
}
.pvl-notice--success { background: #e6f4ec; border-left: 4px solid #3d8fa6; color: #1e7a8c; }
.pvl-notice--error   { background: #fdecea; border-left: 4px solid #c62828; color: #7b1010; }

/* Form rows */
.pvl-form__row { margin-bottom: 1.2rem; }

.pvl-label {
    display: block;
    font-weight: 600;
    font-size: 0.9rem;
    color: #444;
    margin-bottom: 6px;
    text-transform: uppercase;
    letter-spacing: 0.04em;
}
.pvl-label--sub { text-transform: none; font-weight: 500; color: #666; margin-top: 1rem; }

.pvl-input,
.pvl-select,
.pvl-textarea {
    width: 100%;
    max-width: 340px;
    padding: 9px 12px;
    border: 2px solid #b8dde5;
    border-radius: 6px;
    font-size: 1rem;
    background: #fff;
    transition: border-color 0.2s;
}
.pvl-input:focus,
.pvl-select:focus,
.pvl-textarea:focus {
    outline: none;
    border-color: #3d8fa6;
}
.pvl-select--small { max-width: 100px; }
.pvl-textarea      { max-width: 440px; resize: vertical; }

/* Session slot buttons */
.pvl-slots {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 0.8rem;
}

.pvl-slot {
    padding: 10px 18px;
    border: 2px solid #b8dde5;
    border-radius: 8px;
    background: #fff;
    cursor: pointer;
    font-size: 0.95rem;
    text-align: center;
    line-height: 1.4;
    transition: all 0.15s;
}
.pvl-slot small { color: #666; font-size: 0.82rem; }

.pvl-slot--free:hover  { border-color: #3d8fa6; background: #f0f8fb; }
.pvl-slot--selected    { border-color: #1e7a8c; background: #1e7a8c; color: #fff; }
.pvl-slot--selected small { color: #a8d4b8; }

.pvl-slot--taken {
    border-color: #e0d4d4;
    background: #fafafa;
    color: #aaa;
    cursor: not-allowed;
    text-decoration: line-through;
}

.pvl-slot--flexible {
    border-style: dashed;
    color: #3d8fa6;
}
.pvl-slot--flexible:hover { background: #f0f8fb; }

/* Custom time row */
.pvl-flexible__times {
    display: flex;
    align-items: center;
    gap: 12px;
    flex-wrap: wrap;
}
.pvl-flexible__times input { max-width: 140px; }

/* Buttons */
.pvl-btn {
    display: inline-block;
    padding: 11px 24px;
    border-radius: 6px;
    border: none;
    font-size: 1rem;
    font-weight: 600;
    cursor: pointer;
    transition: background 0.15s;
}
.pvl-btn--primary {
    background: #1e7a8c;
    color: #fff;
}
.pvl-btn--primary:hover { background: #25643f; }

.pvl-btn--cancel {
    background: transparent;
    border: 2px solid #c62828;
    color: #c62828;
    padding: 5px 14px;
    font-size: 0.88rem;
}
.pvl-btn--cancel:hover { background: #fdecea; }

/* Table */
.pvl-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 0.95rem;
}
.pvl-table th,
.pvl-table td { padding: 10px 14px; text-align: left; border-bottom: 1px solid #e4ece7; }
.pvl-table th { background: #f0f8fb; font-weight: 600; color: #1e7a8c; font-size: 0.85rem; text-transform: uppercase; letter-spacing: 0.04em; }
.pvl-table tr:hover td { background: #fafffe; }

.pvl-divider { border: none; border-top: 2px solid #e4ece7; margin: 2rem 0; }
.pvl-empty   { color: #888; font-style: italic; }

.pvl-tag { font-size: 0.8rem; color: #999; border: 1px solid #ddd; padding: 2px 8px; border-radius: 20px; }
.pvl-loading { color: #888; font-style: italic; }

/* ══════════════════════════════════════════
   MY ROTA (frontend)
   ══════════════════════════════════════════ */
.pvl-role-dot-sm {
    display: inline-block;
    width: 9px; height: 9px;
    border-radius: 50%;
    margin-right: 5px;
    vertical-align: middle;
}
.pvl-status-badge {
    display: inline-block;
    padding: 2px 9px;
    border-radius: 20px;
    font-size: 0.8rem;
    font-weight: 600;
}
.pvl-status--confirmed  { background: #e6f4ec; color: #1e7a8c; }
.pvl-status--assigned   { background: #fff8e1; color: #7a6000; }
.pvl-status--declined   { background: #fdecea; color: #c62828; }
.pvl-status--no_show    { background: #fdecea; color: #c62828; }

.pvl-btn--small { padding: 5px 12px; font-size: 0.85rem; }

/* ══════════════════════════════════════════
   AVAILABILITY FORM (frontend)
   ══════════════════════════════════════════ */
.pvl-avail-toggle { display: flex; gap: 12px; }
.pvl-avail-option {
    cursor: pointer;
    border: 2px solid #b8dde5;
    border-radius: 8px;
    padding: 8px 18px;
    display: flex;
    align-items: center;
    gap: 6px;
    font-weight: 600;
    transition: all 0.15s;
}
.pvl-avail-option input { display: none; }
.pvl-avail-option--available:has(input:checked)   { background: #e6f4ec; border-color: #1e7a8c; color: #1e7a8c; }
.pvl-avail-option--unavailable:has(input:checked) { background: #fdecea; border-color: #c62828; color: #c62828; }

/* ══════════════════════════════════════════
   MY PROFILE (frontend)
   ══════════════════════════════════════════ */
.pvl-profile-summary {
    display: grid;
    grid-template-columns: repeat(auto-fill, minmax(200px,1fr));
    gap: 12px;
    margin-bottom: 1.5rem;
}
.pvl-profile-summary__item {
    background: #f6fbf7;
    border: 1px solid #b8dde5;
    border-radius: 8px;
    padding: 12px 16px;
}
.pvl-profile-summary__label {
    display: block;
    font-size: 0.78rem;
    color: #888;
    text-transform: uppercase;
    letter-spacing: .04em;
    margin-bottom: 4px;
}
.pvl-profile-summary__value { font-weight: 600; color: #1e7a8c; font-size: 0.95rem; }

/* ══════════════════════════════════════════
   AVAILABILITY GRID (public weekly sheet)
   ══════════════════════════════════════════ */
.pvl-avail-grid-wrap { font-family: inherit; }

.pvl-avail-nav {
    display: flex;
    align-items: center;
    gap: 14px;
    margin-bottom: 1rem;
    flex-wrap: wrap;
}
.pvl-avail-title {
    flex: 1;
    text-align: center;
    font-size: 1.2rem;
    font-weight: 700;
    color: #1e7a8c;
    margin: 0;
}

.pvl-colour-key {
    display: flex;
    gap: 10px;
    flex-wrap: wrap;
    margin-bottom: 1rem;
}
.pvl-key-chip {
    display: inline-block;
    padding: 3px 12px;
    border-radius: 4px;
    font-size: 0.8rem;
    font-weight: 600;
}
.pvl-key--free    { background: #e6f4ec; color: #1e7a8c; border: 1px solid #3d8fa6; }
.pvl-key--booked  { background: #fff3cd; color: #7a6000; border: 1px solid #c09000; }
.pvl-key--rollup  { background: #e8f0fe; color: #1a3a8c; border: 1px solid #2980b9; }
.pvl-key--friendly{ background: #fde8f0; color: #8c1a3a; border: 1px solid #c0294a; }
.pvl-key--unavail { background: #fdecea; color: #8b0000; border: 1px solid #c62828; }

.pvl-avail-grid-outer { overflow-x: auto; -webkit-overflow-scrolling: touch; }

.pvl-avail-sheet {
    border-collapse: collapse;
    min-width: 700px;
    width: 100%;
    font-size: 0.82rem;
}
.pvl-avail-sheet th,
.pvl-avail-sheet td {
    border: 1px solid #b8dde5;
    padding: 5px 7px;
    vertical-align: middle;
    text-align: center;
}
.pvl-avail-sheet thead th { background: #1e7a8c; color: #fff; font-weight: 700; }
.pvl-avail-sheet__subhead th { background: #e6f4ec; color: #1e7a8c; font-size: 0.75rem; padding: 3px 4px; }
.pvl-avail-sheet__time-cell { text-align: left; min-width: 80px; white-space: nowrap; background: #f6fbf7; font-size: 0.85rem; }
.pvl-avail-time-sep { color: #888; margin: 0 2px; }

/* Slot cells */
.pvl-avail-cell { min-width: 60px; height: 40px; }
.pvl-avail-cell--free     { background: #f6fbf7; }
.pvl-avail-cell--booked   { background: #fff8e1; }
.pvl-avail-cell--rollup   { background: #e8f0fe; font-weight: 700; font-size: 0.75rem; color: #1a3a8c; }
.pvl-avail-cell--friendly { background: #fde8f0; font-weight: 700; font-size: 0.75rem; color: #8c1a3a; }
.pvl-avail-cell--unavail  { background: #fdecea; color: #8b0000; font-size: 0.75rem; }

.pvl-free-label    { color: #3d8fa6; font-weight: 600; font-size: 0.72rem; }
.pvl-avail-booked-label { color: #c09000; font-weight: 600; font-size: 0.72rem; }
.pvl-player-name   { font-size: 0.78rem; display: block; }
.pvl-arr-tick      { color: #1e7a8c; font-size: 0.9rem; margin-left: 3px; }

.pvl-avail-sheet__arrive td { background: #fafff8; }
.pvl-avail-arrive-note { font-size: 0.72rem; color: #666; font-style: italic; }

.pvl-avail-note { font-size: 0.8rem; color: #888; margin-top: 0.8rem; }

/* ══════════════════════════════════════════
   EVENTS LIST
   ══════════════════════════════════════════ */
.pvl-events-list { display: flex; flex-direction: column; gap: 16px; }

.pvl-event-card {
    border: 1px solid #b8dde5;
    border-radius: 10px;
    background: #fff;
    overflow: hidden;
}
.pvl-event-card__header {
    display: flex;
    align-items: flex-start;
    gap: 16px;
    padding: 16px;
    background: #f6fbf7;
    border-bottom: 1px solid #e4ece7;
}
.pvl-event-card__date {
    text-align: center;
    background: #1e7a8c;
    color: #fff;
    border-radius: 8px;
    padding: 8px 12px;
    min-width: 52px;
    flex-shrink: 0;
}
.pvl-event-card__day { display: block; font-size: 1.6rem; font-weight: 700; line-height: 1; }
.pvl-event-card__mon { display: block; font-size: 0.78rem; text-transform: uppercase; }
.pvl-event-card__info { flex: 1; }
.pvl-event-card__title { margin: 0 0 6px; font-size: 1.05rem; color: #1e7a8c; }
.pvl-event-card__meta { font-size: 0.85rem; color: #666; display: flex; flex-wrap: wrap; gap: 10px; }
.pvl-event-card__badge { flex-shrink: 0; }
.pvl-event-card__desc { padding: 12px 16px; font-size: 0.9rem; color: #444; }
.pvl-event-card__action { padding: 12px 16px; border-top: 1px solid #eef3f0; display: flex; align-items: center; gap: 10px; }

/* ══════════════════════════════════════════
   EXPENSE CLAIM FORM
   ══════════════════════════════════════════ */
.pvl-expenses-form .description { font-size: 0.85rem; color: #666; margin: 4px 0 8px; }

/* ══════════════════════════════════════════
   AVAILABILITY GRID (spreadsheet replacement)
   ══════════════════════════════════════════ */
.pvl-avail-grid-page { font-family: inherit; }

/* Week nav */
.pvl-week-nav { display:flex; align-items:center; gap:10px; flex-wrap:wrap; margin-bottom:1rem; }
.pvl-btn--outline { background:transparent; border:2px solid #1e7a8c; color:#1e7a8c; padding:7px 16px; border-radius:6px; cursor:pointer; font-size:.9rem; font-weight:600; text-decoration:none; }
.pvl-btn--outline:hover { background:#f0f8fb; }
.pvl-btn--small { padding:5px 12px; font-size:.85rem; }

/* Colour key */
.pvl-colour-key { display:flex; gap:10px; flex-wrap:wrap; margin-bottom:.8rem; font-size:.82rem; }
.pvl-key { padding:3px 10px; border-radius:4px; font-weight:600; }
.pvl-key--free     { background:#e6f4ec; color:#1e7a8c; border:1px solid #3d8fa6; }
.pvl-key--booked   { background:#fff3cd; color:#7a5200; border:1px solid #c09000; }
.pvl-key--rollup   { background:#e8f0ff; color:#1a3080; border:1px solid #4a6cdc; }
.pvl-key--friendly { background:#f3e5f5; color:#5b1a80; border:1px solid #8b4dc8; }
.pvl-key--closed   { background:#fdecea; color:#c62828; border:1px solid #c62828; }

/* Notes */
.pvl-avail-note { background:#f6fbf7; border:1px solid #b8dde5; border-radius:6px; padding:10px 14px; margin-bottom:1rem; font-size:.88rem; }
.pvl-avail-note p { margin:0 0 4px; }
.pvl-rollup-note  { background:#e8f0ff; border-left:4px solid #4a6cdc; padding:6px 12px; border-radius:0 6px 6px 0; font-size:.88rem; margin-bottom:.5rem; }
.pvl-match-note   { background:#f3e5f5; border-left:4px solid #8b4dc8; padding:6px 12px; border-radius:0 6px 6px 0; font-size:.88rem; margin-bottom:.5rem; }
.pvl-steward-note { background:#fff8e1; border-left:4px solid #c09000; padding:6px 12px; border-radius:0 6px 6px 0; font-size:.85rem; margin-bottom:.5rem; }

/* Day section */
.pvl-day-section { margin-bottom:2rem; }
.pvl-day-section--today .pvl-day-heading { color:#1e7a8c; }
.pvl-day-heading { font-size:1.1rem; font-weight:700; border-bottom:2px solid #1e7a8c; padding-bottom:4px; margin-bottom:.6rem; display:flex; align-items:center; gap:10px; }
.pvl-closed-badge { background:#c62828; color:#fff; font-size:.7rem; padding:2px 8px; border-radius:10px; }
.pvl-today-badge  { background:#1e7a8c; color:#fff; font-size:.7rem; padding:2px 8px; border-radius:10px; }

/* Grid table */
.pvl-grid-scroll { overflow-x:auto; -webkit-overflow-scrolling:touch; }
.pvl-avail-table { border-collapse:collapse; min-width:500px; width:100%; font-size:.82rem; }
.pvl-avail-table th { background:#1e7a8c; color:#fff; padding:6px 8px; text-align:center; white-space:nowrap; }
.pvl-avail-table td { border:1px solid #d0d9d4; padding:0; vertical-align:top; }
.pvl-col-time { width:52px; }
.pvl-col-rink { min-width:110px; }
.pvl-cell-time { background:#f6fbf7; padding:6px 8px; font-weight:600; text-align:center; font-size:.8rem; white-space:nowrap; }

/* Cell types */
.pvl-cell--free     { background:#e6f4ec; }
.pvl-cell--booked   { background:#fff3cd; }
.pvl-cell--rollup   { background:#e8f0ff; }
.pvl-cell--friendly { background:#f3e5f5; }
.pvl-cell--closed   { background:#fafafa; }

.pvl-cell-label { padding:8px 6px; text-align:center; font-weight:700; font-size:.78rem; letter-spacing:.04em; }
.pvl-cell-label--free     { color:#1e7a8c; }
.pvl-cell-label--rollup   { color:#1a3080; }
.pvl-cell-label--friendly { color:#5b1a80; }
.pvl-cell-label--unavail  { color:#aaa; }
.pvl-book-link { color:#1e7a8c; text-decoration:none; display:block; }
.pvl-book-link:hover { text-decoration:underline; }

/* Players table inside booked cell */
.pvl-players-table { width:100%; border-collapse:collapse; }
.pvl-player-row td { padding:3px 5px; border-bottom:1px dashed #e8d080; font-size:.78rem; }
.pvl-player-row--empty td { opacity:.4; }
.pvl-player-row:last-child td { border-bottom:none; }
.pvl-player-name  { max-width:80px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.pvl-player-arrived { width:20px; text-align:center; }

.pvl-arrived-btn { width:20px; height:20px; border:none; border-radius:3px; cursor:pointer; font-size:.7rem; font-weight:700; line-height:1; }
.pvl-arrived-btn--yes { background:#1e7a8c; color:#fff; }
.pvl-arrived-btn--no  { background:#ddd; color:#666; }
.pvl-arrived-static     { font-size:.75rem; color:#bbb; }
.pvl-arrived-static--yes{ color:#1e7a8c; font-weight:700; }

/* ── Skeleton screens — public templates ── */
@keyframes pvl-shimmer {
    0%   { background-position: -600px 0; }
    100% { background-position:  600px 0; }
}
.pvl-skel {
    background: linear-gradient(90deg,#f1f5f9 25%,#e8edf3 50%,#f1f5f9 75%);
    background-size: 1200px 100%;
    animation: pvl-shimmer 1.6s infinite linear;
    border-radius: 5px;
    display: block;
}
.pvl-skel--text    { height: 13px; border-radius: 4px; }
.pvl-skel--title   { height: 18px; border-radius: 4px; }
.pvl-skel--avatar  { width: 64px; height: 64px; border-radius: 50%; }
.pvl-skel--kpi     { height: 90px; border-radius: 10px; }
.pvl-skel--card    { height: 80px; border-radius: 10px; }
.pvl-skel--row     { height: 48px; border-radius: 8px; }
.pvl-skel--chart   { height: 120px; border-radius: 10px; }
.pvl-skeleton-screen { display: block; }
.pvl-skeleton-screen.pvl-skel-hidden { display: none; }
.pvl-real-content   { display: none; }
.pvl-real-content.pvl-skel-ready { display: block; }

/* ── Force white text on ALL portal buttons — no blue underline ever ── */
.pvl-pbtn,
.pvl-pbtn:link,
.pvl-pbtn:visited,
.pvl-pbtn:hover,
.pvl-pbtn:active,
.pvl-pbtn:focus,
.pvl-pnav__link,
.pvl-pnav__link:link,
.pvl-pnav__link:visited,
.pvl-pnav__link:hover,
.pvl-pnav__link:active,
.pvl-pnav__link:focus,
.pvl-db-action,
.pvl-db-action:link,
.pvl-db-action:visited,
.pvl-db-action:hover {
    text-decoration: none !important;
}
.pvl-pbtn,
.pvl-pbtn:link,
.pvl-pbtn:visited,
.pvl-pbtn:hover,
.pvl-pbtn:active,
.pvl-pbtn:focus {
    color: #fff !important;
}
