/* ===========================================================
   Training Camp topic page
   Builds on style.css. All page-specific rules use the camp- prefix.
   =========================================================== */

/* ---------- hero ---------- */
.camp-hero{position:relative;background:#0d0916;isolation:isolate;color:#fff;overflow:hidden}
.camp-hero-bg{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center center}
.camp-hero::after{content:"";position:absolute;inset:0;z-index:-1;
  background:linear-gradient(100deg,rgba(9,5,18,.93) 0%,rgba(9,5,18,.8) 34%,rgba(9,5,18,.42) 62%,rgba(9,5,18,.5) 100%)}
.camp-hero .wrap{position:relative;padding:36px 20px 44px;display:grid;grid-template-columns:1.2fr .8fr;gap:32px;align-items:end;min-height:460px}
.camp-hero .wrap>*{min-width:0}

/* grid items must not use their content's min-content as an automatic
   minimum size, or a long nowrap button/word can push the item past
   its track and overflow the viewport on narrow screens. */
.camp-intro-grid>*,
.camp-modgrid>*,
.camp-linkgrid>*,
.camp-related-grid>*,
.camp-visit-grid>*,
.camp-access-grid>*{min-width:0}
.camp-crumbs{display:flex;gap:8px;align-items:center;list-style:none;margin:0 0 18px;padding:0;
  font-family:var(--display);font-weight:500;font-size:11.5px;letter-spacing:.13em;
  text-transform:uppercase;color:rgba(255,255,255,.6)}
.camp-crumbs a{color:rgba(255,255,255,.6);transition:color var(--t-fast)}
.camp-crumbs a:hover{color:#fff}
.camp-crumbs [aria-current]{color:#fff}
.camp-eyebrow{display:inline-block;font-family:var(--display);font-weight:600;font-size:12px;
  letter-spacing:.14em;text-transform:uppercase;color:var(--gold);margin-bottom:10px}
.camp-hero h1{font-family:var(--display);font-weight:700;text-transform:uppercase;color:#fff;
  font-size:clamp(30px,5vw,54px);line-height:1.02;letter-spacing:.005em;max-width:14ch;
  text-shadow:0 3px 20px rgba(0,0,0,.5)}
.camp-hero .camp-dek{font-size:15.5px;line-height:1.62;color:rgba(255,255,255,.88);margin-top:14px;max-width:52ch}
.camp-hero .btn{margin-top:22px}

.camp-next{flex:none;background:var(--panel);border:1px solid rgba(255,255,255,.14);border-radius:var(--radius);
  padding:20px 22px 22px;color:#fff}
.camp-next h2{font-family:var(--display);font-weight:700;font-size:13px;letter-spacing:.16em;
  text-transform:uppercase;color:rgba(255,255,255,.6);padding-bottom:12px;border-bottom:1px solid rgba(255,255,255,.16);
  display:flex;align-items:center;gap:9px}
.camp-next h2 svg{width:16px;height:16px;flex:none;color:var(--gold)}
.camp-next .camp-status{font-family:var(--display);font-weight:700;text-transform:uppercase;
  font-size:19px;letter-spacing:.03em;color:var(--gold);margin:14px 0 8px;line-height:1.25}
.camp-next p{font-size:13px;line-height:1.55;color:rgba(255,255,255,.72);margin:0 0 16px}
.camp-next .btn{width:100%;margin-top:0}

/* ---------- sections ---------- */
.camp-sec{padding:48px 0}
.camp-sec-alt{background:#fff}
.camp-h2{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:24px;
  letter-spacing:.01em;color:var(--text,#1a1a1a);margin-bottom:12px}
.camp-h3{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:15px;
  letter-spacing:.03em;color:var(--text,#1a1a1a);margin-bottom:8px}
.camp-lede{font-size:15px;line-height:1.65;color:var(--text-muted);max-width:74ch;margin-bottom:0}
.camp-honest{display:inline-flex;align-items:flex-start;gap:9px;background:#fff6de;border:1px solid #ecd48c;
  border-radius:var(--radius);padding:12px 16px;font-size:13px;line-height:1.55;color:#0b4750;margin-top:18px;max-width:74ch}
.camp-honest svg{width:17px;height:17px;flex:none;margin-top:2px;color:#158596}

/* intro guide */
.camp-intro-grid{display:grid;grid-template-columns:1.3fr .95fr;gap:32px;align-items:start}
.camp-intro-grid p+p{margin-top:14px}
.camp-facts{background:var(--panel);color:#fff;border-radius:var(--radius);padding:24px 24px 18px}
.camp-facts-h{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:14px;
  letter-spacing:.04em;margin:0 0 4px;padding-bottom:14px;border-bottom:2px solid var(--gold)}
.camp-facts dl{margin:0}
.camp-fact{display:flex;justify-content:space-between;align-items:baseline;gap:14px;
  padding:12px 0;border-top:1px solid rgba(255,255,255,.12)}
.camp-fact dt{margin:0;color:rgba(255,255,255,.55);text-transform:uppercase;
  font-family:var(--display);font-size:10.5px;letter-spacing:.09em;flex:none}
.camp-fact dd{margin:0;text-align:right;font-weight:600;font-size:13px;line-height:1.4}

/* editorial modules */
.camp-modgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:22px}
.camp-mod{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:20px;
  display:flex;flex-direction:column;gap:9px;transition:transform var(--t-fast),box-shadow var(--t-fast)}
.camp-mod:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(20,15,40,.1)}
.camp-mod-ic{width:36px;height:36px;border-radius:8px;background:var(--purple);color:var(--gold);
  display:flex;align-items:center;justify-content:center;flex:none}
.camp-mod-ic svg{width:19px;height:19px}
.camp-mod h3{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:14px;
  letter-spacing:.02em;color:var(--text);margin:0}
.camp-mod p{font-size:13px;line-height:1.55;color:var(--text-muted);margin:0}

/* tabs-style section nav (visual only, not JS tabbed) */
.camp-jump{display:flex;gap:10px;flex-wrap:wrap;margin-top:24px}
.camp-jump a{font-family:var(--display);font-weight:600;font-size:12px;letter-spacing:.08em;
  text-transform:uppercase;color:var(--text);background:#fff;border:1px solid var(--line);
  border-radius:999px;padding:9px 16px;min-height:38px;display:inline-flex;align-items:center;
  transition:background var(--t-fast),border-color var(--t-fast),color var(--t-fast)}
.camp-jump a:hover,.camp-jump a:focus-visible{background:var(--purple);border-color:var(--purple);color:#fff}

/* location / visit */
.camp-visit-grid{display:grid;grid-template-columns:1fr 1fr;gap:24px;align-items:start;margin-top:24px}
.camp-venue-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.camp-venue-art{width:100%;height:200px;background:linear-gradient(155deg,var(--purple-ink),var(--purple-deep) 65%,var(--purple));
  display:flex;align-items:center;justify-content:center}
.camp-venue-art svg{width:120px;height:120px}
.camp-venue-body{padding:20px 22px 22px}
.camp-photo-note{font-size:11.5px;line-height:1.5;color:var(--text-faint);margin-top:2px}
.camp-venue-name{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:16px;
  letter-spacing:.02em;color:var(--text);margin-bottom:8px}
.camp-addr{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.55;color:var(--text-muted);margin-bottom:14px}
.camp-addr svg{width:18px;height:18px;flex:none;margin-top:2px;color:var(--purple)}
.camp-venue-body p.camp-note{font-size:13px;line-height:1.55;color:var(--text-muted);margin-bottom:14px}
.camp-venue-body .sect-link{margin-top:4px}

.camp-checklist{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.camp-checklist li{display:flex;gap:10px;align-items:flex-start;font-size:13.5px;line-height:1.5;color:var(--text)}
.camp-checklist svg{width:18px;height:18px;flex:none;margin-top:1px;color:#1a8a4c}

/* tickets / access */
.camp-access-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:22px}
.camp-access-card{background:var(--purple-ink);color:#fff;border-radius:var(--radius);padding:22px}
.camp-access-card h3{font-family:var(--display);font-weight:700;text-transform:uppercase;font-size:14px;
  letter-spacing:.03em;color:var(--gold);margin-bottom:10px}
.camp-access-card p{font-size:13.5px;line-height:1.6;color:rgba(255,255,255,.85);margin:0 0 14px}
.camp-access-card .btn{margin-top:2px;width:100%;white-space:normal;text-align:center;height:auto}

/* practice sessions table + reports */
.camp-tablewrap{overflow-x:auto;border-radius:var(--radius);border:1px solid var(--line);margin-top:18px;background:#fff}
table.camp-table{width:100%;border-collapse:collapse;min-width:560px}
table.camp-table thead th{font-family:var(--display);font-weight:600;font-size:11px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--text-faint);text-align:left;padding:12px 16px;background:#eaebf2;
  border-bottom:1px solid var(--line);white-space:nowrap}
table.camp-table td{padding:13px 16px;font-size:13.5px;color:var(--text-muted);border-bottom:1px solid var(--line)}
table.camp-table tr:last-child td{border-bottom:0}
table.camp-table td.camp-tbd{color:var(--text-faint);font-style:italic}

.camp-reports-empty{background:#fff;border:1px dashed var(--line);border-radius:var(--radius);
  padding:26px 24px;margin-top:18px;max-width:74ch}
.camp-reports-empty p{font-size:13.5px;line-height:1.6;color:var(--text-muted);margin:0 0 12px}
.camp-reports-empty p:last-child{margin-bottom:0}

/* useful links + related coverage */
.camp-linkgrid{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-top:22px}
.camp-linkcard{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--line);
  border-radius:var(--radius);padding:16px;min-height:44px;transition:transform var(--t-fast),box-shadow var(--t-fast),border-color var(--t-fast)}
.camp-linkcard:hover{transform:translateY(-2px);box-shadow:0 8px 20px rgba(20,15,40,.1);border-color:var(--purple)}
.camp-linkcard-ic{width:34px;height:34px;border-radius:8px;background:#f1eefb;color:var(--purple);
  display:flex;align-items:center;justify-content:center;flex:none}
.camp-linkcard-ic svg{width:17px;height:17px}
.camp-linkcard span{font-family:var(--display);font-weight:600;font-size:12.5px;letter-spacing:.02em;
  text-transform:uppercase;color:var(--text)}

.camp-related-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:22px}
.camp-rcard{background:#fff;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;
  display:flex;flex-direction:column;transition:transform var(--t-fast),box-shadow var(--t-fast)}
.camp-rcard:hover{transform:translateY(-3px);box-shadow:0 10px 24px rgba(20,15,40,.14)}
.camp-rcard img{width:100%;height:120px;object-fit:cover;display:block}
.camp-rcard-body{padding:14px 15px 16px}
.camp-rcard h3{font-size:14.5px;font-weight:700;line-height:1.3;color:var(--text);margin:0 0 8px;
  font-family:var(--body);text-transform:none;letter-spacing:0}
.camp-rcard p{font-size:12.5px;line-height:1.5;color:var(--text-muted);margin:0 0 10px}
.camp-rcard a.camp-readmore{font-family:var(--display);font-weight:600;font-size:11.5px;letter-spacing:.06em;
  text-transform:uppercase;color:var(--purple)}

.camp-src{font-size:12px;color:var(--text-faint);line-height:1.6;margin-top:20px;max-width:74ch}
.camp-src a{color:var(--purple);text-decoration:underline}

/* ---------- responsive ---------- */
@media (max-width:960px){
  .camp-hero .wrap{grid-template-columns:1fr;align-items:start}
  .camp-hero-bg{object-position:75% center}
  .camp-next{width:100%;max-width:420px}
  .camp-intro-grid{grid-template-columns:1fr}
  .camp-modgrid{grid-template-columns:1fr 1fr}
  .camp-visit-grid{grid-template-columns:1fr}
  .camp-access-grid{grid-template-columns:1fr}
  .camp-linkgrid{grid-template-columns:1fr 1fr}
  .camp-related-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:640px){
  .camp-modgrid{grid-template-columns:1fr}
  .camp-linkgrid{grid-template-columns:1fr}
  .camp-related-grid{grid-template-columns:1fr}
  .camp-hero h1{max-width:none}
}
