    *, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }

    :root {
      --black: #111111;
      --white: #0d1421;
      --off-white: #152840;
      --surface-raised: #1e3e64;
      --surface-hi: #254878;
      --accent: #4aaae0;
      --accent-light: #c4def8;
      --mid: #7aaecb;
      --border: #2a4e7a;
      --serif: 'DM Serif Display', Georgia, serif;
      --sans: 'DM Sans', sans-serif;
      --logo: 'Barlow Condensed', Impact, sans-serif;
    }

    html { scroll-behavior: smooth; }

    body {
      font-family: var(--sans);
      background: var(--white);
      color: #d8e6f5;
      font-size: 16px;
      line-height: 1.6;
    }

    /* ── NAV ── */
    nav {
      position: sticky; top: 0; z-index: 100;
      background: var(--white);
      border-bottom: 1px solid var(--border);
      display: flex; align-items: center; justify-content: space-between;
      padding: 0 2rem;
      height: 60px;
    }
    .nav-logo {
      font-family: var(--serif);
      font-size: 1.2rem;
      color: var(--accent);
      text-decoration: none;
      letter-spacing: -0.01em;
    }
    .nav-links {
      display: none;
      position: absolute;
      top: 60px;
      right: 1.5rem;
      flex-direction: column;
      list-style: none;
      background: var(--white);
      border: 1px solid var(--border);
      border-radius: 4px;
      box-shadow: 0 4px 16px rgba(0,0,0,0.09);
      padding: 0.25rem 0;
      gap: 0;
      z-index: 99;
      min-width: 210px;
    }
    nav.nav-open .nav-links { display: flex; }
    .nav-links li { border-bottom: 1px solid var(--border); }
    .nav-links li:last-child { border-bottom: none; }
    .nav-links a {
      display: block;
      text-decoration: none;
      font-size: 0.85rem;
      font-weight: 500;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      color: var(--mid);
      transition: color 0.2s;
      padding: 0.75rem 1.25rem;
    }
    .nav-links a:hover { color: var(--accent); }
    .nav-active { color: var(--accent) !important; }
    .nav-burger {
      display: flex;
      flex-direction: column;
      gap: 5px;
      background: none;
      border: none;
      cursor: pointer;
      padding: 6px 4px;
    }
    .nav-burger span {
      display: block;
      width: 22px;
      height: 2px;
      background: var(--black);
      border-radius: 2px;
      transition: transform 0.2s, opacity 0.2s;
    }
    nav.nav-open .nav-burger span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
    nav.nav-open .nav-burger span:nth-child(2) { opacity: 0; }
    nav.nav-open .nav-burger span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }

    /* ── THIS WEEK ── */
    #thisweek {
      padding: 2rem 4rem;
    }
    .thisweek-header {
      display: flex;
      align-items: baseline;
      justify-content: space-between;
      margin-bottom: 1.5rem;
      flex-wrap: wrap;
      gap: 0.5rem;
    }
    .thisweek-header h2 {
      font-family: var(--serif);
      font-size: clamp(1.8rem, 4vw, 2.4rem);
      letter-spacing: -0.02em;
      line-height: 1;
    }
    .thisweek-header .week-range {
      font-size: 0.78rem;
      font-weight: 600;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--mid);
    }
    .thisweek-cards {
      display: flex;
      flex-direction: column;
      gap: 1rem;
    }
    .tw-card {
      border: 1px solid var(--border);
      border-radius: 8px;
      overflow: hidden;
      transition: box-shadow 0.2s;
    }
    .tw-card:hover { box-shadow: 0 4px 16px rgba(0,0,0,0.07); }
    .tw-card-main {
      display: flex;
      align-items: stretch;
      cursor: pointer;
    }
    .tw-card-accent {
      width: 6px;
      flex-shrink: 0;
    }
    .tw-card-accent.focus-dribbling  { background: #f0a050; }
    .tw-card-accent.focus-passing    { background: var(--accent); }
    .tw-card-accent.focus-shooting   { background: #c0392b; }
    .tw-card-accent.focus-defending  { background: #3a3aab; }
    .tw-card-accent.focus-trapping   { background: #0a7aab; }
    .tw-card-accent.focus-scrimmage  { background: #7a2aab; }
    .tw-card-accent.focus-first_touch { background: #0d9488; }
    .tw-card-accent.focus-one_v_one   { background: #ea580c; }
    .tw-card-accent.focus-crossing    { background: #db2777; }
    .tw-card-accent.focus-finishing   { background: #c0392b; }
    .tw-card-accent.focus-strength    { background: #d97706; }
    .tw-card-accent.focus-sprinting   { background: #2563eb; }
    .tw-card-accent.type-technical    { background: #14532d; }
    .tw-card-accent.type-fitness      { background: #4c1d95; }
    .tw-card-content {
      flex: 1;
      padding: 1rem 1.1rem;
    }
    .tw-card-top {
      display: flex;
      align-items: center;
      justify-content: space-between;
      margin-bottom: 0.35rem;
    }
    .tw-date-day {
      font-size: 0.7rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--mid);
    }
    .tw-date-day.today { color: var(--accent); }
    .tw-card-content h3 {
      font-size: 1rem;
      font-weight: 600;
      line-height: 1.2;
      margin-bottom: 0.3rem;
    }
    .tw-card-meta {
      display: flex;
      gap: 1rem;
      font-size: 0.78rem;
      color: var(--mid);
      flex-wrap: wrap;
    }
    .tw-card-meta span { display: flex; align-items: center; gap: 0.3rem; }
    .tw-rsvp-row {
      border-top: 1px solid var(--border);
      padding: 0.75rem 1.1rem 0.75rem calc(6px + 1.1rem);
      display: flex;
      align-items: center;
      gap: 0.75rem;
    }
    .tw-rsvp-avatars {
      display: flex;
      gap: -4px;
    }
    .tw-avatar {
      width: 24px; height: 24px;
      border-radius: 50%;
      background: var(--accent);
      color: #fff;
      font-size: 0.6rem;
      font-weight: 700;
      display: flex; align-items: center; justify-content: center;
      border: 2px solid var(--white);
      margin-left: -4px;
      flex-shrink: 0;
    }
    .tw-avatar:first-child { margin-left: 0; }
    .tw-rsvp-label {
      font-size: 0.78rem;
      color: var(--mid);
      flex: 1;
    }
    .tw-rsvp-btn {
      background: var(--accent-light);
      color: #1a3d64;
      border: none;
      border-radius: 20px;
      padding: 0.35rem 0.9rem;
      font-family: var(--sans);
      font-size: 0.75rem;
      font-weight: 700;
      cursor: pointer;
      transition: background 0.15s;
      white-space: nowrap;
    }
    .tw-rsvp-btn:hover { background: var(--accent); color: #fff; }
    .tw-rsvp-btn.going { background: var(--accent); color: #fff; }
    .tw-empty {
      text-align: center;
      padding: 3rem 1.5rem;
      border: 1px dashed var(--border);
      border-radius: 8px;
      color: var(--mid);
    }
    .tw-empty .emoji { font-size: 2rem; margin-bottom: 0.5rem; }
    .tw-empty p { font-size: 0.9rem; }
    .tw-empty a { color: var(--accent); font-weight: 600; text-decoration: none; }
    .tw-rsvp-inline {
      display: none;
      padding: 0 1.1rem 0.9rem calc(6px + 1.1rem);
    }
    .tw-rsvp-inline.open { display: block; }
    .tw-rsvp-inline .rsvp-input-row { margin-top: 0.5rem; }
    .tw-card-toggle {
      display: inline-flex;
      align-items: center;
      gap: 0.3rem;
      margin-top: 0.55rem;
      font-size: 0.72rem;
      font-weight: 600;
      color: var(--accent);
      letter-spacing: 0.03em;
    }
    .tw-card-toggle .tw-chevron {
      display: inline-block;
      transition: transform 0.2s;
      font-style: normal;
    }
    .tw-card.expanded .tw-chevron { transform: rotate(90deg); }
    .tw-card-details {
      display: none;
      padding: 0.9rem 1.1rem 1rem calc(6px + 1.1rem);
      border-top: 1px solid var(--border);
      background: var(--off-white);
    }
    .tw-card-details.open { display: block; }
    .tw-plan-heading {
      font-size: 0.7rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.4rem;
    }
    .tw-plan-heading + .tw-plan-heading,
    .tw-plan-section + .tw-plan-heading { margin-top: 0.75rem; }
    .tw-card-details ul {
      list-style: none;
      display: flex;
      flex-direction: column;
      gap: 0.3rem;
      margin-bottom: 0.75rem;
    }
    .tw-card-details ul:last-child { margin-bottom: 0; }
    .tw-card-details ul li {
      font-size: 0.82rem;
      display: flex;
      gap: 0.4rem;
      align-items: flex-start;
    }
    .tw-card-details ul li::before {
      content: '→';
      color: var(--accent);
      flex-shrink: 0;
    }

    .btn {
      display: inline-block;
      background: var(--accent);
      color: #fff;
      padding: 0.85rem 2rem;
      font-family: var(--sans);
      font-size: 0.875rem;
      font-weight: 600;
      letter-spacing: 0.05em;
      text-transform: uppercase;
      text-decoration: none;
      border-radius: 2px;
      transition: background 0.2s, transform 0.15s;
      border: none;
      cursor: pointer;
    }
    .btn:hover { background: #1a3d64; transform: translateY(-1px); }

    @media (max-width: 768px) {
      #thisweek { padding: 1.5rem 1.1rem; }
    }

    /* ── SECTIONS ── */
    section {
      padding: 5rem 4rem;
      border-bottom: 1px solid var(--border);
    }
    .section-label {
      font-size: 0.75rem;
      font-weight: 600;
      letter-spacing: 0.1em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.75rem;
    }
    .section-title {
      font-family: var(--serif);
      font-size: clamp(2rem, 4vw, 3rem);
      line-height: 1.15;
      letter-spacing: -0.01em;
      margin-bottom: 1rem;
    }
    @media (min-width: 769px) {
      .section-title { letter-spacing: 0.01em; line-height: 1.2; }
    }
    .section-subtitle {
      color: var(--mid);
      font-weight: 300;
      font-size: 1rem;
      max-width: 55ch;
      margin-bottom: 3rem;
    }

    /* ── SCHEDULE ── */
    .schedule-grid {
      display: grid;
      gap: 0;
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .schedule-row {
      display: grid;
      grid-template-columns: 110px 140px 1fr 160px;
      align-items: center;
      padding: 1.1rem 1.5rem;
      border-bottom: 1px solid var(--border);
      transition: background 0.15s;
    }
    .schedule-row:last-child { border-bottom: none; }
    .schedule-row:hover { background: var(--off-white); }
    .schedule-row.header {
      background: var(--black);
      color: var(--white);
      font-size: 0.72rem;
      font-weight: 600;
      letter-spacing: 0.08em;
      text-transform: uppercase;
    }
    .schedule-row .date { font-weight: 600; font-size: 0.9rem; }
    .schedule-row .time { font-size: 0.85rem; color: var(--mid); }
    .schedule-row .session { font-size: 0.9rem; }
    .schedule-row .session strong { font-weight: 600; display: block; }
    .schedule-row .session span { font-size: 0.8rem; color: var(--mid); }
    .tag {
      display: inline-block;
      padding: 0.25rem 0.7rem;
      border-radius: 2px;
      font-size: 0.72rem;
      font-weight: 600;
      letter-spacing: 0.05em;
      text-transform: uppercase;
    }
    .tag.fitness { background: #fef3cd; color: #7a5800; }
    .tag.technical { background: var(--accent-light); color: var(--accent); }
    .tag.scrimmage { background: #fde8e8; color: #8b1a1a; }
    .tag.mental { background: #e8e8fd; color: #2a2a8b; }


    /* ── NUTRITION ── */
    .nutrition-cols {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 2rem;
    }
    .nutrition-card {
      border: 1px solid var(--border);
      border-radius: 4px;
      padding: 2rem;
    }
    .nutrition-card h3 {
      font-family: var(--serif);
      font-size: 1.3rem;
      margin-bottom: 0.5rem;
    }
    .nutrition-card .sub {
      font-size: 0.8rem;
      color: var(--mid);
      font-weight: 500;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      margin-bottom: 1.2rem;
    }
    .nutrition-list { list-style: none; display: flex; flex-direction: column; gap: 0.75rem; }
    .nutrition-list li {
      display: flex;
      align-items: flex-start;
      gap: 0.75rem;
      font-size: 0.9rem;
    }
    .nutrition-list li::before {
      content: '→';
      color: var(--accent);
      font-weight: 700;
      flex-shrink: 0;
      margin-top: 0.05rem;
    }
    .nutrition-tip {
      margin-top: 2rem;
      background: var(--accent-light);
      border-left: 3px solid var(--accent);
      padding: 1rem 1.25rem;
      border-radius: 0 4px 4px 0;
      font-size: 0.875rem;
      color: #1a3d64;
    }
    .nutrition-tip strong { display: block; margin-bottom: 0.2rem; font-weight: 600; }

    /* ── CONTACT ── */
    .contact-wrap {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 4rem;
      align-items: start;
    }
    .contact-info p { font-size: 0.95rem; color: var(--mid); margin-bottom: 2rem; font-weight: 300; }
    .contact-detail {
      display: flex;
      flex-direction: column;
      gap: 1rem;
    }
    .contact-detail-item {
      display: flex;
      gap: 1rem;
      align-items: flex-start;
    }
    .contact-detail-item .icon {
      width: 36px; height: 36px;
      background: var(--off-white);
      border: 1px solid var(--border);
      border-radius: 50%;
      display: flex; align-items: center; justify-content: center;
      font-size: 0.9rem;
      flex-shrink: 0;
    }
    .contact-detail-item .text strong { display: block; font-size: 0.8rem; font-weight: 600; letter-spacing: 0.04em; text-transform: uppercase; color: var(--mid); }
    .contact-detail-item .text span { font-size: 0.9rem; }
    .form-group { display: flex; flex-direction: column; gap: 0.4rem; margin-bottom: 1.25rem; }
    .form-group label { font-size: 0.78rem; font-weight: 600; letter-spacing: 0.05em; text-transform: uppercase; color: var(--mid); }
    .form-group input,
    .form-group textarea,
    .form-group select {
      border: 1px solid var(--border);
      border-radius: 2px;
      padding: 0.75rem 1rem;
      font-family: var(--sans);
      font-size: 0.9rem;
      background: var(--white);
      color: inherit;
      outline: none;
      transition: border-color 0.2s;
    }
    .form-group input:focus,
    .form-group textarea:focus,
    .form-group select:focus { border-color: var(--accent); }
    .form-group textarea { resize: vertical; min-height: 100px; }
    .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 1rem; }

    /* ── NEWSLETTER ── */
    .newsletter-wrap {
      margin-top: 3rem;
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .newsletter-inner {
      display: grid;
      grid-template-columns: 1fr 320px;
      gap: 2rem;
      align-items: start;
      padding: 2.5rem;
    }
    .newsletter-form-wrap { flex-shrink: 0; }
    @media (max-width: 768px) {
      .newsletter-inner { grid-template-columns: 1fr; }
    }

    /* ── FOOTER ── */
    footer {
      padding: 2.5rem 4rem;
      display: flex;
      justify-content: space-between;
      align-items: center;
      font-size: 0.8rem;
      color: var(--mid);
    }
    footer .footer-logo {
      font-family: var(--serif);
      font-size: 1rem;
      color: var(--accent);
    }

    /* ── ANIMATIONS ── */
    @keyframes fadeUp {
      from { opacity: 0; transform: translateY(20px); }
      to   { opacity: 1; transform: translateY(0); }
    }

    /* ── RESPONSIVE ── */
    /* ── TECHNICAL CALENDAR ── */
    .cal-wrap {
      display: grid;
      grid-template-columns: 1fr 360px;
      gap: 2rem;
      align-items: start;
    }
    .cal-wrap.panel-closed { grid-template-columns: 1fr; }
    .calendar-grid {
      display: grid;
      grid-template-columns: repeat(7, 1fr);
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .cal-header-cell {
      background: var(--black);
      color: var(--white);
      text-align: center;
      font-size: 0.7rem;
      font-weight: 600;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      padding: 0.6rem 0.25rem;
    }
    .cal-month-banner {
      grid-column: 1 / -1;
      background: var(--off-white);
      border-top: 1px solid var(--border);
      border-bottom: 1px solid var(--border);
      padding: 0.5rem 1rem;
      font-size: 0.75rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--accent);
    }
    .cal-cell {
      border-right: 1px solid var(--border);
      border-bottom: 1px solid var(--border);
      min-height: 90px;
      padding: 0.5rem;
      background: var(--white);
      cursor: default;
      transition: background 0.15s;
      position: relative;
    }
    .cal-cell:nth-child(7n) { border-right: none; }
    .cal-cell.empty { background: var(--off-white); cursor: default; }
    .cal-cell.has-session { cursor: pointer; }
    .cal-cell.has-session:hover { background: #edf5ef; }
    .cal-cell.active { background: var(--accent-light); border-color: var(--accent); }
    .cal-cell .day-num {
      font-size: 0.78rem;
      font-weight: 600;
      color: var(--mid);
      margin-bottom: 0.3rem;
    }
    .cal-cell.has-session .day-num { color: inherit; }
    .focus-pill {
      display: inline-block;
      font-size: 0.65rem;
      font-weight: 700;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      padding: 0.2rem 0.45rem;
      border-radius: 2px;
      margin-top: 0.2rem;
    }
    .focus-dribbling    { background: #fde8c8; color: #7a3f00; }
    .focus-passing      { background: var(--accent-light); color: var(--accent); }
    .focus-shooting     { background: #fde8e8; color: #8b1a1a; }
    .focus-defending    { background: #e8e8fd; color: #2a2a8b; }
    .focus-trapping     { background: #e8f5fd; color: #0a4a6b; }
    .focus-scrimmage    { background: #f3e8fd; color: #5a0a8b; }
    .focus-first_touch  { background: #ccfbf1; color: #0d5c4d; }
    .focus-one_v_one    { background: #ffedd5; color: #7c2d12; }
    .focus-crossing     { background: #fce7f3; color: #831843; }
    .focus-finishing    { background: #fde8e8; color: #8b1a1a; }
    .focus-strength     { background: #fef3c7; color: #92400e; }
    .focus-sprinting    { background: #dbeafe; color: #1e40af; }
    .milestone-tag {
      display: block;
      font-size: 0.62rem;
      font-weight: 700;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      color: #fff;
      background: var(--accent);
      border-radius: 2px;
      padding: 0.15rem 0.4rem;
      margin-top: 0.3rem;
    }
    .milestone-tag.tryouts { background: #8b1a1a; }
    .rsvp-count {
      position: absolute;
      bottom: 0.4rem; right: 0.5rem;
      font-size: 0.65rem;
      color: var(--mid);
      font-weight: 500;
    }

    /* Side Panel */
    .day-panel {
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
      position: static;
    }
    .day-panel-header {
      background: var(--black);
      color: var(--white);
      padding: 1.25rem 1.5rem;
      display: flex;
      justify-content: space-between;
      align-items: flex-start;
    }
    .day-panel-header h3 {
      font-family: var(--serif);
      font-size: 1.2rem;
      line-height: 1.2;
    }
    .day-panel-header .close-btn {
      background: none; border: none;
      color: rgba(255,255,255,0.5);
      font-size: 1.2rem; cursor: pointer;
      line-height: 1; padding: 0;
      transition: color 0.15s;
    }
    .day-panel-header .close-btn:hover { color: #fff; }
    .day-panel-body { padding: 1.25rem 1.5rem; max-width: 660px; }
    .day-panel-meta {
      display: flex; gap: 0.75rem;
      margin-bottom: 1.25rem;
      flex-wrap: wrap;
    }
    .plan-block { margin-bottom: 1.25rem; }
    .plan-block h4 {
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.5rem;
    }
    .plan-block ul { list-style: none; display: flex; flex-direction: column; gap: 0.4rem; }
    .plan-block ul li {
      font-size: 0.85rem;
      display: flex; gap: 0.5rem; align-items: flex-start;
    }
    .plan-block ul li::before { content: '→'; color: var(--accent); flex-shrink: 0; }
    .rsvp-section { border-top: 1px solid var(--border); padding-top: 1.25rem; margin-top: 0.5rem; }
    .rsvp-section h4 {
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--mid);
      margin-bottom: 0.75rem;
    }
    .rsvp-list {
      display: flex; flex-direction: column; gap: 0;
      margin-bottom: 0.75rem;
      max-height: 220px;
      overflow-y: auto;
    }
    .rsvp-group { margin-bottom: 0.5rem; }
    .rsvp-group-label {
      font-size: 0.66rem; font-weight: 700; letter-spacing: 0.07em;
      text-transform: uppercase; margin-bottom: 0.25rem; padding: 0 0.1rem;
    }
    .rsvp-going    { color: #1a6b3a; }
    .rsvp-not-going { color: #a00; }
    .rsvp-conflict { color: #7a5200; }
    .rsvp-entry-name { font-size: 0.82rem; font-weight: 500; }
    .rsvp-entry-comment {
      font-size: 0.74rem; color: var(--mid); font-style: italic; margin-left: 0.4rem;
    }
    .rsvp-name {
      display: flex; align-items: baseline; justify-content: space-between;
      background: var(--off-white);
      border-radius: 2px;
      padding: 0.3rem 0.6rem;
      margin-bottom: 0.2rem;
      gap: 0.4rem;
    }
    .rsvp-name .remove {
      background: none; border: none;
      color: var(--mid); cursor: pointer;
      font-size: 0.75rem; padding: 0; flex-shrink: 0;
      transition: color 0.15s;
    }
    .rsvp-name .remove:hover { color: #c0392b; }
    /* RSVP form layout */
    .rsvp-form { display: flex; flex-direction: column; gap: 0.5rem; margin-top: 1rem; }
    .rsvp-form-heading {
      font-size: 0.72rem; font-weight: 700; letter-spacing: 0.08em;
      text-transform: uppercase; color: var(--mid);
      padding-bottom: 0.5rem; border-bottom: 1px solid var(--border);
    }
    .rsvp-choices { display: flex; flex-direction: column; gap: 0.3rem; }
    .rsvp-choice {
      display: flex; align-items: flex-start; gap: 0.5rem;
      padding: 0.4rem 0.6rem;
      border: 1px solid var(--border); border-radius: 4px;
      cursor: pointer; font-size: 0.82rem; line-height: 1.4;
      transition: background 0.15s, border-color 0.15s;
    }
    .rsvp-choice:hover { background: var(--off-white); }
    .rsvp-choice input[type="radio"] { margin-top: 0.15rem; accent-color: var(--accent); flex-shrink: 0; }
    .rsvp-choice:has(input:checked) { background: var(--accent-light); border-color: var(--accent); }
    .rsvp-comment-input {
      width: 100%; box-sizing: border-box;
      border: 1px solid var(--border); border-radius: 2px;
      padding: 0.5rem 0.75rem;
      font-family: var(--sans); font-size: 0.83rem;
      outline: none; transition: border-color 0.2s;
    }
    .rsvp-comment-input:focus { border-color: var(--accent); }
    .rsvp-submit-btn {
      background: var(--accent); color: #fff; border: none; border-radius: 2px;
      padding: 0.5rem 1rem;
      font-family: var(--sans); font-size: 0.78rem; font-weight: 600;
      cursor: pointer; align-self: flex-start; transition: background 0.2s;
    }
    .rsvp-submit-btn:hover { background: #1a4d2a; }
    .rsvp-input-row { display: flex; gap: 0.5rem; }
    .rsvp-input-row input {
      flex: 1; border: 1px solid var(--border); border-radius: 2px;
      padding: 0.55rem 0.75rem; font-family: var(--sans); font-size: 0.85rem;
      outline: none; transition: border-color 0.2s;
    }
    .rsvp-input-row input:focus { border-color: var(--accent); }
    .rsvp-input-row button {
      background: var(--accent); color: #fff; border: none; border-radius: 2px;
      padding: 0.55rem 0.9rem; font-family: var(--sans);
      font-size: 0.78rem; font-weight: 600; cursor: pointer;
      white-space: nowrap; transition: background 0.2s;
    }
    .rsvp-input-row button:hover { background: #1a3d64; }
    .rsvp-empty { font-size: 0.8rem; color: var(--mid); font-style: italic; }
    .rsvp-locked-msg {
      font-size: 0.78rem; color: var(--mid); font-style: italic;
      padding: 0.5rem 0; margin-top: 0.25rem;
    }

    /* ── STRENGTH PLAN ── */
    .strength-intro {
      display: grid;
      grid-template-columns: 1fr 1fr;
      gap: 2rem;
      margin-bottom: 3rem;
    }
    .strength-intro p { font-size: 0.95rem; color: var(--mid); font-weight: 300; line-height: 1.7; }
    .strength-pillars {
      display: flex; flex-direction: column; gap: 0.75rem;
    }
    .pillar {
      display: flex; gap: 1rem; align-items: flex-start;
      background: var(--off-white);
      border: 1px solid var(--border);
      border-radius: 4px;
      padding: 0.9rem 1.1rem;
    }
    .pillar .pillar-icon { font-size: 1.3rem; flex-shrink: 0; }
    .pillar strong { font-size: 0.85rem; font-weight: 600; display: block; }
    .pillar span { font-size: 0.78rem; color: var(--mid); }

    .week-tabs {
      display: flex; gap: 0.5rem;
      margin-bottom: 1.5rem;
      flex-wrap: wrap;
    }
    .week-tab {
      padding: 0.45rem 1rem;
      border: 1px solid var(--border);
      border-radius: 2px;
      font-size: 0.78rem;
      font-weight: 600;
      letter-spacing: 0.04em;
      text-transform: uppercase;
      cursor: pointer;
      background: var(--off-white);
      color: var(--mid);
      transition: all 0.15s;
    }
    .week-tab:hover { border-color: var(--accent); color: var(--accent); }
    .week-tab.active { background: var(--accent); color: #fff; border-color: var(--accent); }

    .workout-days {
      display: grid;
      grid-template-columns: repeat(3, 1fr);
      gap: 1.5rem;
    }
    .workout-card {
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .workout-card-header {
      padding: 1rem 1.25rem;
      border-bottom: 1px solid var(--border);
    }
    .workout-card-header .day-label {
      font-size: 0.7rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.2rem;
    }
    .workout-card-header h3 { font-size: 0.95rem; font-weight: 600; }
    .workout-card-header .duration {
      font-size: 0.75rem; color: var(--mid); margin-top: 0.2rem;
    }
    .exercise-list { list-style: none; padding: 0; }
    .exercise-item {
      display: grid;
      grid-template-columns: 1fr auto;
      gap: 0.5rem;
      padding: 0.7rem 1.25rem;
      border-bottom: 1px solid var(--border);
      align-items: center;
    }
    .exercise-item:last-child { border-bottom: none; }
    .exercise-item .ex-name { font-size: 0.85rem; font-weight: 500; }
    .exercise-item .ex-note { font-size: 0.72rem; color: var(--mid); }
    .exercise-item .ex-sets {
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.03em;
      color: #1a3d64;
      background: var(--accent-light);
      padding: 0.2rem 0.5rem;
      border-radius: 2px;
      white-space: nowrap;
    }
    .strength-note {
      margin-top: 2rem;
      background: var(--off-white);
      border: 1px solid var(--border);
      border-left: 3px solid var(--accent);
      padding: 1.25rem 1.5rem;
      border-radius: 0 4px 4px 0;
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
      gap: 1rem;
    }
    .strength-note-item strong { font-size: 0.78rem; font-weight: 700; letter-spacing: 0.04em; text-transform: uppercase; color: var(--accent); display: block; margin-bottom: 0.2rem; }
    .strength-note-item span { font-size: 0.82rem; color: var(--mid); }

    @media (max-width: 768px) {
      .cal-wrap { grid-template-columns: 1fr !important; }
      .day-panel { position: static; }
      .strength-intro { grid-template-columns: 1fr; }
      .workout-days { grid-template-columns: 1fr; }
    }

    /* ── PASSWORD GATE ── */
    #gate {
      position: fixed; inset: 0; z-index: 9999;
      background: var(--white);
      display: flex; align-items: center; justify-content: center;
    }
    .gate-box {
      text-align: center;
      padding: 3rem 2.5rem;
      border: 1px solid var(--border);
      border-radius: 4px;
      max-width: 360px;
      width: 90%;
      animation: fadeUp 0.6s ease both;
    }
    .gate-box .gate-logo {
      font-family: var(--logo);
      font-size: 2.4rem;
      letter-spacing: 0.05em;
      color: var(--accent);
      margin-bottom: 0.5rem;
      line-height: 1;
    }
    .nav-logo {
      text-decoration: none;
      display: flex;
      align-items: center;
      font-family: var(--logo);
      font-size: 1.45rem;
      letter-spacing: 0.04em;
      color: var(--accent);
      line-height: 1;
    }
    .nav-logo:hover { color: #1a3d64; }
    .gate-box p {
      font-size: 0.875rem;
      color: var(--mid);
      margin-bottom: 1.75rem;
    }
    .gate-box input {
      width: 100%;
      border: 1px solid var(--border);
      border-radius: 2px;
      padding: 0.75rem 1rem;
      font-family: var(--sans);
      font-size: 1rem;
      text-align: center;
      letter-spacing: 0.12em;
      outline: none;
      margin-bottom: 1rem;
      transition: border-color 0.2s;
    }
    .gate-box input:focus { border-color: var(--accent); }
    .gate-box input.error { border-color: #c0392b; animation: shake 0.3s ease; }
    /* Blinking cursor when empty */
    .gate-box input:placeholder-shown {
      caret-color: var(--accent);
    }
    @keyframes blink { 0%,100% { border-color: var(--border); } 50% { border-color: var(--accent); } }
    .gate-box input:not(:focus) {
      animation: blink 1.1s ease-in-out infinite;
    }
    .gate-box input:focus, .gate-box input.error {
      animation: none;
    }
    .gate-box .gate-btn {
      width: 100%;
      background: var(--accent);
      color: #fff;
      border: none;
      padding: 0.85rem;
      font-family: var(--sans);
      font-size: 0.875rem;
      font-weight: 600;
      letter-spacing: 0.05em;
      text-transform: uppercase;
      border-radius: 2px;
      cursor: pointer;
      transition: background 0.2s;
    }
    .gate-box .gate-btn:hover { background: #1a3d64; }
    .gate-error {
      font-size: 0.78rem;
      color: #c0392b;
      margin-top: 0.6rem;
      min-height: 1rem;
    }
    @keyframes shake {
      0%,100% { transform: translateX(0); }
      25% { transform: translateX(-6px); }
      75% { transform: translateX(6px); }
    }


    /* ── WEEK-SLIDER CALENDAR ── */
    .wk-nav {
      display: flex; align-items: center; gap: 1rem;
      margin-bottom: 1.25rem;
    }
    .wk-arrow {
      background: var(--off-white); border: 1px solid var(--border);
      border-radius: 2px; width: 36px; height: 36px;
      font-size: 1rem; cursor: pointer; color: inherit;
      transition: background 0.15s, border-color 0.15s;
      display: flex; align-items: center; justify-content: center;
    }
    .wk-arrow:hover { background: var(--accent-light); border-color: var(--accent); }
    .wk-arrow:disabled { opacity: 0.25; cursor: default; pointer-events: none; }
    .wk-label {
      font-size: 0.85rem; font-weight: 600;
      letter-spacing: 0.04em; color: inherit;
    }
    .cal-week-wrap {
      display: grid;
      grid-template-columns: repeat(7, 1fr);
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
      margin-bottom: 1.25rem;
    }
    .wk-day-col { border-right: 1px solid var(--border); display: flex; flex-direction: column; }
    .wk-day-col:last-child { border-right: none; }
    .wk-day-header {
      background: var(--black); color: var(--white);
      text-align: center; padding: 0.5rem 0.25rem;
      font-size: 0.65rem; font-weight: 700;
      letter-spacing: 0.08em; text-transform: uppercase;
      line-height: 1.3;
    }
    .wk-day-header.today-header { background: var(--accent); }
    .wk-day-body {
      flex: 1;
      min-height: 120px; padding: 0.4rem;
      display: flex; flex-direction: column; gap: 0.3rem;
      background: var(--white);
    }
    .wk-day-body.today-body { background: #f0f8f2; }
    .wk-event {
      border-radius: 3px; padding: 0.3rem 0.4rem;
      font-size: 0.68rem; font-weight: 600;
      cursor: pointer; line-height: 1.3;
      transition: opacity 0.15s, transform 0.1s;
      border: none; text-align: left; width: 100%;
    }
    .wk-event:hover { opacity: 0.85; transform: translateY(-1px); }
    .wk-event.type-technical { background: #bbf7d0; color: #14532d; }
    .wk-event.type-strength  { background: #fee2e2; color: #7f1d1d; }
    .wk-event.type-fitness    { background: #ede9fe; color: #4c1d95; }
    .wk-event.type-camp       { background: #fef9c3; color: #1a3d64; }
    .wk-event.type-captains   { background: #7f1d1d; color: #fecaca; cursor: default; }
    .wk-event.type-captains:hover { opacity: 1; transform: none; }
    .wk-rest-day {
      font-size: 0.72rem; font-weight: 600;
      color: var(--mid); text-align: center;
      padding: 0.5rem 0.25rem; letter-spacing: 0.03em;
      opacity: 0.75;
    }
    .wk-event .ev-time { font-weight: 400; opacity: 0.75; font-size: 0.6rem; display: block; margin-top: 1px; }
    .ev-status-tag {
      display: inline-block;
      font-size: 0.55rem; font-weight: 700;
      letter-spacing: 0.05em; text-transform: uppercase;
      padding: 0.1rem 0.35rem; border-radius: 3px;
      margin-left: 0.35rem; vertical-align: middle;
    }
    .ev-status-completed { background: rgba(150,150,150,0.25); color: #aaa; }
    .ev-status-scheduled { background: rgba(74,210,140,0.2);  color: #4ad28c; }
    .ev-status-postponed { background: rgba(250,190,50,0.25); color: #fabe32; }
    .ev-status-cancelled { background: rgba(230,60,60,0.25);  color: #e63c3c; }
    .ev-status-tentative { background: rgba(74,170,224,0.25); color: #4aaae0; }
    .wk-event.status-completed { opacity: 0.6; }
    .wk-event.status-postponed { opacity: 0.75; }
    .wk-event.status-cancelled { opacity: 0.5; text-decoration: line-through; }
    .wk-event.status-tentative { opacity: 0.8; }
    .wk-milestone {
      font-size: 0.6rem; font-weight: 700; text-transform: uppercase;
      letter-spacing: 0.04em; padding: 0.2rem 0.35rem;
      border-radius: 2px; color: #fff; background: var(--accent);
      line-height: 1.2;
    }
    .wk-milestone.tryouts { background: #8b1a1a; }
    .wk-empty-day { min-height: 120px; background: var(--off-white); }

    @media (max-width: 768px) {
      .wk-cal-scroll {
        overflow-x: auto;
        -webkit-overflow-scrolling: touch;
        margin-left: -1.5rem;
        margin-right: -1.5rem;
        padding-left: 1.5rem;
        padding-right: 1.5rem;
      }
      .cal-week-wrap { grid-template-columns: repeat(7, 72px); width: max-content; }
      .wk-event { font-size: 0.6rem; padding: 0.25rem 0.3rem; overflow: hidden; word-break: break-word; }
      .wk-event .ev-time { display: block; font-size: 0.55rem; }
      #thisweek { padding: 1.5rem 1.1rem 0.5rem; }
    }

    @media (max-width: 768px) {
      nav { padding: 0 1.25rem; }
      .nav-links {
        left: 0; right: 0;
        border-radius: 0;
        border-left: none;
        border-right: none;
        border-top: none;
        min-width: unset;
        padding: 0.25rem 1.25rem 0.75rem;
      }
      .nav-links a { padding: 0.85rem 0; font-size: 0.9rem; letter-spacing: 0.03em; }
      section { padding: 3rem 1.5rem; }
      .schedule-row { grid-template-columns: 90px 1fr; gap: 0.5rem; }
      .schedule-row .time,
      .schedule-row .tag { display: none; }
      .nutrition-cols { grid-template-columns: 1fr; }
      .contact-wrap { grid-template-columns: 1fr; gap: 2rem; }
      footer { flex-direction: column; gap: 0.5rem; text-align: center; padding: 2rem 1.5rem; }
      .form-row { grid-template-columns: 1fr; }
      .week-tabs { gap: 0.4rem; }
      .week-tab { flex: 1 1 auto; text-align: center; padding: 0.65rem 0.5rem; font-size: 0.75rem; }
    }

    /* ── DARK THEME FIXES ── */

    /* Header elements use --white as text colour — pin to literal white */
    .schedule-row.header,
    .cal-header-cell,
    .day-panel-header,
    .wk-day-header { color: #fff; }
    .wk-day-header.today-header { color: #fff; }

    /* Calendar grid cells — match card green */
    .cal-week-wrap { border-color: var(--border); }
    .wk-day-col { border-right-color: var(--border); }
    .wk-day-body { background: var(--off-white); }
    .wk-day-body.today-body { background: var(--surface-hi); }
    .wk-empty-day { background: var(--white); }

    /* Day-of-week headers — bigger and more readable */
    .wk-day-header { font-size: 0.78rem; padding: 0.65rem 0.25rem; }

    /* Arrow hover needs dark text on light-green background */

    /* Form & RSVP inputs — light text on dark field */
    .form-group input,
    .form-group textarea,
    .form-group select { color: inherit; }
    .gate-box input,
    .rsvp-input-row input,
    .rsvp-comment-input { background: var(--off-white); color: inherit; }

    /* Button hovers — lighter shade of the new brighter accent */
    .btn:hover,
    .rsvp-input-row button:hover { background: #2d7fbe; }
    .rsvp-submit-btn:hover { background: #1a5c30; }

    /* RSVP choice selected state on dark bg */
    .rsvp-choice:has(input:checked) { background: rgba(46,107,62,0.18); border-color: var(--accent); }
    .rsvp-going    { color: #4caf7a; }
    .rsvp-not-going { color: #f08080; }
    .rsvp-conflict { color: #d4a850; }

    /* Nav logo hover visible on dark bg */
    .nav-logo:hover { color: #fff; }

    /* Card shadows more visible on dark bg */
    .tw-card:hover { box-shadow: 0 4px 20px rgba(0,0,0,0.55); }

    /* Arrow hover needs dark text on light-green background */
    .wk-arrow:hover { color: #1a3d64; }

    /* Nav and dropdown must float above page bg */
    nav { background: var(--surface-raised); }
    .nav-links { background: var(--surface-raised); }

    /* Panel header uses surface-raised, not --black */
    .day-panel-header { background: var(--surface-raised); }

    /* Every card/box gets an explicit background so it floats above page bg */
    .tw-card,
    .workout-card,
    .nutrition-card,
    .cond-phase-card,
    .drill-card,
    .day-panel,
    .gate-box { background: var(--off-white); }
    .contact-info { background: transparent; }

    /* Input boxes — lighter green highlight */
    .form-group input,
    .form-group textarea,
    .form-group select,
    .rsvp-input-row input,
    .rsvp-comment-input,
    .gate-box input { background: var(--surface-hi); }

    /* Inner highlighted surfaces one step up from cards */
    .tw-card-details,
    .pillar,
    .strength-note,
    .rsvp-name,
    .cond-session,
    .tw-empty { background: var(--surface-hi); }

    /* Nutrition tip and strength intro pillars already off-white — push up */
    .nutrition-tip { background: var(--surface-hi); color: var(--mid); }

    /* Focus pills — all bumped lighter with brighter text */
    .focus-dribbling  { background: #ffd9a0; color: #5c2d00; }
    .focus-passing    { background: #b8e8c4; color: #1a4d28; }
    .focus-shooting   { background: #ffbdbd; color: #6a0000; }
    .focus-defending  { background: #ccceff; color: #15157a; }
    .focus-trapping   { background: #bde8ff; color: #07385c; }
    .focus-scrimmage  { background: #e0c8ff; color: #3d006b; }
    .focus-first_touch { background: #ccfbf1; color: #0d5c4d; }
    .focus-one_v_one   { background: #ffedd5; color: #7c2d12; }
    .focus-crossing    { background: #fce7f3; color: #831843; }
    .focus-finishing   { background: #fde8e8; color: #8b1a1a; }
    .focus-strength    { background: #fef3c7; color: #92400e; }
    .focus-sprinting   { background: #dbeafe; color: #1e40af; }

    /* Tag chips match */
    .tag.fitness   { background: #ffd9a0; color: #5c2d00; }
    .tag.technical { background: #bbf7d0; color: #14532d; }
    .tag.scrimmage { background: #ffbdbd; color: #6a0000; }
    .tag.mental    { background: #ccceff; color: #15157a; }

    /* ── FAQ PAGE ── */
    .faq-list {
      display: flex;
      flex-direction: column;
      gap: 1.25rem;
      max-width: 72ch;
    }
    .faq-item {
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .faq-question {
      padding: 1rem 1.25rem;
      font-weight: 600;
      font-size: 0.95rem;
      cursor: pointer;
      display: flex;
      justify-content: space-between;
      align-items: center;
      gap: 1rem;
      background: var(--off-white);
      transition: background 0.15s;
    }
    .faq-question:hover { background: var(--surface-hi); }
    .faq-chevron { font-style: normal; transition: transform 0.2s; flex-shrink: 0; color: var(--accent); }
    .faq-item.open .faq-chevron { transform: rotate(90deg); }
    .faq-answer {
      display: none;
      padding: 1rem 1.25rem;
      font-size: 0.9rem;
      color: var(--mid);
      line-height: 1.7;
      border-top: 1px solid var(--border);
    }
    .faq-item.open .faq-answer { display: block; }

    /* ── TECHNICAL PAGE ── */
    .focus-area-pill {
      display: inline-block;
      padding: 0.35rem 0.9rem;
      border-radius: 99px;
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }
    .themes-grid {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
      gap: 1rem;
      margin-top: 1.5rem;
      margin-bottom: 3rem;
    }
    .theme-card {
      border: 1px solid var(--border);
      border-radius: 6px;
      padding: 1.1rem 1.25rem;
      background: var(--off-white);
      display: flex;
      flex-direction: column;
      gap: 0.6rem;
      align-items: flex-start;
    }
    .theme-card-desc {
      font-size: 0.85rem;
      color: var(--mid);
      font-weight: 300;
      line-height: 1.6;
    }
    .tech-sessions-list {
      display: flex;
      flex-direction: column;
      gap: 0.75rem;
    }
    .tech-session-row {
      border: 1px solid var(--border);
      border-radius: 4px;
      background: var(--off-white);
      cursor: pointer;
      transition: background 0.15s;
      overflow: hidden;
    }
    .tech-session-row:hover { background: var(--surface-hi); }
    .tech-session-row-header {
      display: flex;
      align-items: center;
      gap: 1.25rem;
      padding: 0.9rem 1.25rem;
    }
    .tech-session-date {
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--mid);
      min-width: 80px;
    }
    .tech-session-title {
      flex: 1;
      font-size: 0.9rem;
      font-weight: 600;
    }
    .tech-session-time {
      font-size: 0.78rem;
      color: var(--mid);
    }
    .tech-session-chevron {
      font-size: 0.75rem;
      color: var(--mid);
      transition: transform 0.2s;
      flex-shrink: 0;
    }
    .tech-session-row.open .tech-session-chevron { transform: rotate(180deg); }
    .tech-session-detail {
      display: none;
      padding: 0 1.25rem 1.1rem;
      border-top: 1px solid var(--border);
    }
    .tech-session-row.open .tech-session-detail { display: block; }
    .tech-session-detail .plan-block { margin-top: 0.85rem; }
    .tech-session-detail .plan-block h4 { font-size: 0.75rem; font-weight: 700; letter-spacing: 0.06em; text-transform: uppercase; color: var(--mid); margin-bottom: 0.4rem; }
    .tech-session-detail .plan-block ul { list-style: none; display: flex; flex-direction: column; gap: 0.3rem; }
    .tech-session-detail .plan-block li { font-size: 0.85rem; font-weight: 300; line-height: 1.5; padding-left: 1rem; position: relative; }
    .tech-session-detail .plan-block li::before { content: '–'; position: absolute; left: 0; color: var(--mid); }

    /* ── CONDITIONING PHASE CARDS (speed.html) ── */
    .cond-phases {
      display: flex;
      flex-direction: column;
      gap: 0.75rem;
      max-width: 72ch;
    }
    .cond-phase-card {
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .cond-phase-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 1rem;
      padding: 1.25rem 1.5rem;
      cursor: pointer;
      user-select: none;
      transition: background 0.15s;
    }
    .cond-phase-header:hover { background: var(--surface-hi); }
    .cond-phase-tag {
      font-size: 0.7rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.25rem;
    }
    .cond-phase-title {
      font-size: 1rem;
      font-weight: 600;
      margin-bottom: 0.15rem;
    }
    .cond-phase-meta {
      font-size: 0.8rem;
      color: var(--mid);
      font-weight: 300;
    }
    .cond-phase-chevron {
      font-style: normal;
      color: var(--accent);
      flex-shrink: 0;
      margin-top: 0.2rem;
      transition: transform 0.2s;
    }
    .cond-phase-card.open .cond-phase-chevron { transform: rotate(90deg); }
    .cond-phase-body {
      display: none;
      padding: 1.25rem 1.5rem;
      border-top: 1px solid var(--border);
    }
    .cond-phase-card.open .cond-phase-body { display: block; }
    .cond-phase-goal {
      font-size: 0.875rem;
      color: var(--mid);
      font-weight: 300;
      line-height: 1.65;
      margin-bottom: 1.25rem;
    }
    .cond-sessions {
      display: grid;
      grid-template-columns: repeat(auto-fill, minmax(220px, 1fr));
      gap: 1rem;
    }
    .cond-session {
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .cond-session-hd {
      padding: 0.65rem 0.9rem 0.6rem;
      border-bottom: 1px solid var(--border);
    }
    .cond-session-label {
      font-size: 0.67rem;
      font-weight: 700;
      letter-spacing: 0.07em;
      text-transform: uppercase;
      color: var(--mid);
      margin-bottom: 0.1rem;
    }
    .cond-session-name {
      font-size: 0.9rem;
      font-weight: 600;
    }
    .cond-session-body { padding: 0.25rem 0; }

    /* ── DRILL CARDS (solo.html) ── */
    .drill-cards {
      display: flex;
      flex-direction: column;
      gap: 0.75rem;
      max-width: 72ch;
    }
    .drill-card {
      border: 1px solid var(--border);
      border-radius: 4px;
      overflow: hidden;
    }
    .drill-card-header {
      display: flex;
      align-items: flex-start;
      justify-content: space-between;
      gap: 1rem;
      padding: 1.25rem 1.5rem;
      cursor: pointer;
      user-select: none;
      transition: background 0.15s;
    }
    .drill-card-header:hover { background: var(--surface-hi); }
    .drill-num {
      font-size: 0.7rem;
      font-weight: 700;
      letter-spacing: 0.08em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.25rem;
    }
    .drill-title {
      font-size: 1rem;
      font-weight: 600;
      margin-bottom: 0.15rem;
    }
    .drill-summary {
      font-size: 0.8rem;
      color: var(--mid);
      font-weight: 300;
    }
    .drill-chevron {
      font-style: normal;
      color: var(--accent);
      flex-shrink: 0;
      margin-top: 0.2rem;
      transition: transform 0.2s;
    }
    .drill-card.open .drill-chevron { transform: rotate(90deg); }
    .drill-card-body {
      display: none;
      padding: 1.25rem 1.5rem;
      border-top: 1px solid var(--border);
    }
    .drill-card.open .drill-card-body { display: block; }
    .drill-setup-img {
      max-width: 180px;
      width: 100%;
      border-radius: 4px;
      border: 1px solid var(--border);
      margin-bottom: 1.5rem;
      display: block;
    }
    .drill-stage { margin-bottom: 1.5rem; }
    .drill-stage:last-child { margin-bottom: 0; }
    .drill-stage-label {
      font-size: 0.67rem;
      font-weight: 700;
      letter-spacing: 0.07em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.2rem;
    }
    .drill-stage-title {
      font-size: 0.92rem;
      font-weight: 600;
      margin-bottom: 0.5rem;
    }
    .drill-stage-meta {
      font-size: 0.78rem;
      color: var(--mid);
      font-weight: 300;
      margin-bottom: 0.5rem;
      font-style: italic;
    }
    .drill-stage ul {
      list-style: none;
      padding: 0;
      display: flex;
      flex-direction: column;
      gap: 0.35rem;
    }
    .drill-stage ul li {
      font-size: 0.875rem;
      font-weight: 300;
      color: var(--mid);
      padding-left: 1rem;
      position: relative;
      line-height: 1.55;
    }
    .drill-stage ul li::before {
      content: '\2013';
      position: absolute;
      left: 0;
      color: var(--mid);
    }

    /* ── STRENGTH TRAINING POLL (temporary) ── */
    #strengthPoll {
      padding: 2rem 4rem;
      border-bottom: 1px solid var(--border);
    }
    .poll-header h2 {
      font-family: var(--serif);
      font-size: clamp(1.8rem, 4vw, 2.4rem);
      letter-spacing: -0.02em;
      line-height: 1;
      margin-bottom: 1.5rem;
    }
    .poll-empty {
      color: var(--mid);
      font-weight: 300;
      font-size: 0.95rem;
    }
    .poll-question {
      font-size: 0.78rem;
      font-weight: 600;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--mid);
      margin-bottom: 1rem;
    }
    .poll-options {
      display: flex;
      flex-direction: column;
      gap: 0.75rem;
      margin-bottom: 1.25rem;
      max-width: 560px;
    }
    .poll-option {
      display: flex;
      align-items: flex-start;
      border: 1px solid var(--border);
      border-radius: 8px;
      transition: background 0.15s, border-color 0.15s;
    }
    .poll-option:has(input:checked) {
      background: rgba(74, 170, 224, 0.15);
      border-color: var(--accent);
    }
    .poll-option input[type="radio"] {
      margin: 1.1rem 0 0 1.25rem;
      accent-color: var(--accent);
      flex-shrink: 0;
    }
    .poll-option-inner {
      flex: 1;
      padding: 1rem 1.25rem;
      cursor: pointer;
      display: block;
    }
    .poll-option-desc strong { color: inherit; }
    .poll-event-meta { color: var(--mid); }
    .poll-option-label {
      font-size: 0.7rem;
      font-weight: 700;
      letter-spacing: 0.07em;
      text-transform: uppercase;
      color: var(--accent);
      margin-bottom: 0.3rem;
    }
    .poll-option-desc strong {
      display: block;
      font-size: 0.92rem;
      font-weight: 600;
      margin-bottom: 0.1rem;
    }
    .poll-event-meta {
      display: block;
      font-size: 0.78rem;
      color: var(--mid);
      margin-bottom: 0.35rem;
    }
    .poll-submit-row {
      display: flex;
      gap: 0.75rem;
      align-items: center;
      max-width: 420px;
      margin-bottom: 1.25rem;
    }
    .poll-name-input {
      flex: 1;
      padding: 0.55rem 0.9rem;
      border: 1px solid var(--border);
      border-radius: 6px;
      font-family: var(--sans);
      font-size: 0.9rem;
      background: var(--surface-raised);
      color: #d8e6f5;
    }
    .poll-name-input::placeholder { color: var(--mid); }
    .poll-name-input:focus { outline: none; border-color: var(--accent); }
    .poll-submit-btn {
      padding: 0.55rem 1.25rem;
      background: var(--accent);
      color: #fff;
      border: none;
      border-radius: 6px;
      font-family: var(--sans);
      font-size: 0.9rem;
      font-weight: 600;
      cursor: pointer;
      white-space: nowrap;
    }
    .poll-submit-btn:hover { opacity: 0.85; }
    .poll-results-title {
      font-size: 0.78rem;
      font-weight: 600;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--mid);
      margin-bottom: 0.75rem;
    }
    .poll-result-group-label {
      font-size: 0.72rem;
      font-weight: 700;
      letter-spacing: 0.06em;
      text-transform: uppercase;
      color: var(--accent);
      margin: 0.75rem 0 0.4rem;
    }
    .poll-result-row {
      display: flex;
      align-items: center;
      justify-content: space-between;
      padding: 0.5rem 0.9rem;
      border-radius: 6px;
      background: var(--off-white);
      border: 1px solid var(--border);
      margin-bottom: 0.35rem;
      max-width: 420px;
      font-size: 0.88rem;
    }
    .poll-result-name { font-weight: 600; }
    .poll-result-remove {
      background: none;
      border: none;
      color: var(--mid);
      cursor: pointer;
      font-size: 0.8rem;
      padding: 0 0.2rem;
      line-height: 1;
    }
    .poll-result-remove:hover { color: var(--black); }
    @media (max-width: 600px) {
      #strengthPoll { padding: 1.5rem 1.1rem; }
    }
