/* ============================================================
   Leadership Intensive — cohort portal shared styles
   Used by every portal page so all cohorts share one design:
   - persistent portal nav (Welcome · Sessions · Video Library)
   - welcome hero (Shane photo + personal message)
   - hub navigation cards
   - programme schedule table + add-to-calendar buttons
   - sessions week-rail
   ============================================================ */

/* ── Branded banner (portal login page) ─────────────────────── */
.portal-login-banner {
  width: 100%;
  background: var(--navy);
  line-height: 0;
}
.portal-login-banner img {
  display: block;
  width: 100%;
  height: auto;        /* full-bleed, whole banner shown, never cropped, no side bars */
}

/* ── Persistent portal navigation ───────────────────────────── */
.portal-nav {
  position: sticky;
  /* Dock directly beneath the sticky site header (height set by JS).
     z-index sits BELOW the site header (50) so the header and its
     Podcast dropdown always render above the portal nav. */
  top: var(--portal-nav-top, 74px);
  z-index: 40;
  background: var(--navy);
  border-bottom: 1px solid rgba(255, 255, 255, 0.12);
}
.portal-nav-inner {
  max-width: 1080px;
  margin: 0 auto;
  padding: 0 1.25rem;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  min-height: 48px;
}
.portal-nav-links {
  display: flex;
  gap: 0.1rem;
  overflow-x: auto;
  -webkit-overflow-scrolling: touch;
  scrollbar-width: none;
}
.portal-nav-links::-webkit-scrollbar { display: none; }
.pn-link {
  display: inline-flex;
  align-items: center;
  gap: 0.45rem;
  padding: 0.6rem 0.9rem;
  font-size: 0.82rem;
  font-weight: 600;
  color: rgba(255, 255, 255, 0.7);
  text-decoration: none;
  white-space: nowrap;
  border-bottom: 2.5px solid transparent;
  transition: color 0.15s, border-color 0.15s;
}
.pn-link svg { flex-shrink: 0; opacity: 0.9; }
.pn-link:hover { color: #fff; }
.pn-link.pn-active {
  color: #fff;
  border-bottom-color: var(--orange);
}
.pn-signout {
  background: transparent;
  border: 1.5px solid rgba(255, 255, 255, 0.28);
  color: rgba(255, 255, 255, 0.85);
  font-family: inherit;
  font-weight: 600;
  font-size: 0.76rem;
  padding: 0.4rem 0.85rem;
  border-radius: 5px;
  cursor: pointer;
  white-space: nowrap;
  flex-shrink: 0;
  transition: background 0.15s, border-color 0.15s;
}
.pn-signout:hover {
  background: rgba(255, 255, 255, 0.12);
  border-color: rgba(255, 255, 255, 0.5);
}

/* ── Welcome hero (Shane photo + personal message) ──────────── */
.welcome-hero {
  display: flex;
  align-items: center;
  gap: 1.85rem;
}
.welcome-photo {
  display: block;
  width: 164px;
  height: 164px;
  border-radius: 50%;
  overflow: hidden;
  border: 3px solid rgba(255, 255, 255, 0.6);
  box-shadow: 0 8px 26px rgba(0, 0, 0, 0.2);
  flex-shrink: 0;
  background: #eceae3;
  /* Force GPU compositing so border-radius clips the child image on all browsers */
  transform: translateZ(0);
  -webkit-transform: translateZ(0);
}
.welcome-photo img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.welcome-text { min-width: 0; }
.welcome-sig {
  margin-top: 0.85rem;
  color: rgba(255, 255, 255, 0.9);
  font-style: italic;
  font-size: 0.98rem;
}
@media (max-width: 640px) {
  .welcome-hero { flex-direction: column; align-items: flex-start; gap: 1.15rem; }
  .welcome-photo { width: 118px; height: 118px; }
}

/* ── Hub navigation cards (Sessions · Video Library) ────────── */
.portal-hub {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1.1rem;
  margin-top: 1.5rem;
}
@media (max-width: 640px) { .portal-hub { grid-template-columns: 1fr; } }
.hub-tile {
  display: flex;
  flex-direction: column;
  gap: 0.55rem;
  background: #fff;
  border: 1px solid rgba(0, 0, 0, 0.09);
  border-radius: 12px;
  padding: 1.5rem 1.6rem;
  text-decoration: none;
  color: var(--ink);
  transition: box-shadow 0.2s, transform 0.2s, border-color 0.2s;
}
.hub-tile:hover {
  box-shadow: 0 14px 34px rgba(0, 60, 95, 0.12);
  transform: translateY(-2px);
  border-color: rgba(0, 60, 95, 0.2);
}
.hub-tile-icon {
  width: 44px;
  height: 44px;
  border-radius: 10px;
  display: flex;
  align-items: center;
  justify-content: center;
  background: rgba(200, 24, 110, 0.08);
  color: var(--magenta);
}
.hub-tile.tile-library .hub-tile-icon {
  background: rgba(0, 60, 95, 0.08);
  color: var(--navy);
}
.hub-tile h3 {
  margin: 0;
  font-size: 1.15rem;
  letter-spacing: -0.01em;
}
.hub-tile p {
  margin: 0;
  font-size: 0.92rem;
  color: var(--ink-soft);
  line-height: 1.55;
}
.hub-tile-go {
  margin-top: 0.35rem;
  font-size: 0.85rem;
  font-weight: 700;
  color: var(--magenta);
}
.hub-tile.tile-library .hub-tile-go { color: var(--navy); }

/* Small helper cards (key links row) */
.portal-quicklinks {
  display: flex;
  flex-wrap: wrap;
  gap: 0.6rem;
  margin-top: 1.25rem;
}

/* ── Next live session banner ───────────────────────────────── */
.teams-banner {
  margin-top: 1.5rem;
  padding: 1.25rem 1.5rem;
  background: var(--navy);
  border-radius: 12px;
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1rem;
  flex-wrap: wrap;
}
.teams-banner .tb-eyebrow {
  margin: 0;
  color: rgba(255, 255, 255, 0.7);
  font-size: 0.78rem;
  text-transform: uppercase;
  letter-spacing: 0.08em;
  font-weight: 700;
}
.teams-banner .tb-label {
  margin: 0.3rem 0 0;
  color: #fff;
  font-size: 1rem;
  font-weight: 600;
}

/* ── Programme schedule table + add to calendar ─────────────── */
.schedule-table { width: 100%; border-collapse: collapse; margin-top: 1.5rem; }
.schedule-table th {
  text-align: left; font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em;
  text-transform: uppercase; color: var(--ink-soft); padding: 0 0.75rem 0.6rem;
  border-bottom: 2px solid var(--navy);
}
.schedule-table td { padding: 0.75rem; vertical-align: middle; border-bottom: 1px solid rgba(0,0,0,0.07); font-size: 0.93rem; }
.schedule-table tr:last-child td { border-bottom: 0; }
.schedule-table tr.break td { font-style: italic; color: var(--ink-soft); font-size: 0.88rem; background: rgba(0,0,0,0.02); }
.schedule-table tr.break td:first-child { font-style: normal; font-weight: 700; font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--ink-soft); }
.schedule-table tr.masterclass td { font-size: 0.88rem; background: rgba(233, 115, 0, 0.05); }
.week-label { font-weight: 700; font-size: 0.75rem; letter-spacing: 0.06em; text-transform: uppercase; color: var(--orange); white-space: nowrap; }
.session-date { white-space: nowrap; color: var(--navy); font-weight: 500; }
.session-topic { color: var(--ink); }
.session-time { white-space: nowrap; color: var(--ink-soft); font-size: 0.88rem; }
.cal-btn {
  display: inline-flex; align-items: center; gap: 0.3rem;
  font-size: 0.78rem; font-weight: 600; padding: 0.3rem 0.65rem;
  border: 1.5px solid var(--navy); border-radius: 4px; color: var(--navy);
  background: transparent; cursor: pointer; white-space: nowrap;
  transition: background 0.15s, color 0.15s;
  font-family: inherit; text-decoration: none;
}
.cal-btn:hover { background: var(--navy); color: #fff; }
.cal-btn-all {
  display: inline-flex; align-items: center; gap: 0.4rem;
  font-size: 0.88rem; font-weight: 600; padding: 0.55rem 1.1rem;
  border: 2px solid var(--navy); border-radius: 6px; color: var(--navy);
  background: transparent; cursor: pointer;
  transition: background 0.15s, color 0.15s;
  font-family: inherit;
}
.cal-btn-all:hover { background: var(--navy); color: #fff; }
.tz-note { font-size: 0.8rem; color: var(--ink-soft); margin-top: 0.5rem; }
@media (max-width: 600px) { .schedule-table .hide-mobile { display: none; } }

/* ── Sessions page week-rail (quick jump + open accordion) ──── */
.week-rail {
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
  margin: 1.5rem 0 0.5rem;
}
.week-rail button {
  font-family: inherit;
  font-size: 0.78rem;
  font-weight: 600;
  padding: 0.4rem 0.7rem;
  border: 1.5px solid rgba(0, 60, 95, 0.18);
  border-radius: 5px;
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  white-space: nowrap;
  transition: background 0.15s, color 0.15s, border-color 0.15s;
}
.week-rail button:hover {
  background: var(--navy);
  color: #fff;
  border-color: var(--navy);
}

/* Upcoming (recording-not-yet-available) placeholder for future cohorts */
.session-pending {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  padding: 1rem 1.1rem;
  background: rgba(0, 60, 95, 0.04);
  border: 1px dashed rgba(0, 60, 95, 0.22);
  border-radius: 8px;
  color: var(--ink-soft);
  font-size: 0.9rem;
}
