/* Small hand-written extras that are awkward to express as Tailwind utility classes. */

/* overflow-x on <body> alone does not stop the page scrolling sideways — the
   scroll happens on <html>. Both are needed to kill the blank strip that a
   too-wide element (e.g. the sticky header row on narrow phones) creates. */
html, body { max-width: 100%; overflow-x: hidden; }

body {
  font-family: 'Inter', system-ui, -apple-system, sans-serif;
  background: #fbf6ee;
}

html { scroll-behavior: smooth; }
::selection { background:#f2c14e; color:#2d3923; }

.site-header { transition: box-shadow .3s ease, background .3s ease, padding .3s ease; }
.site-header.is-scrolled { background:rgba(255,255,255,.94); box-shadow:0 12px 40px rgba(45,57,35,.09); }
.site-header nav a { position:relative; }
.site-header nav a::after { content:''; position:absolute; left:0; right:100%; bottom:-7px; height:2px; border-radius:2px; background:linear-gradient(90deg,#b4622b,#f2c14e); transition:right .28s ease; }
.site-header nav a:hover::after { right:0; }
.brand-logo { display:grid; place-items:center; border-radius:50%; transition:transform .35s cubic-bezier(.2,.8,.2,1); }
.brand-mark:hover .brand-logo { transform:rotate(-8deg) scale(1.08); }

.hero-stage { background:radial-gradient(circle at 80% 18%,rgba(242,193,78,.22),transparent 30%),radial-gradient(circle at 8% 80%,rgba(124,147,95,.16),transparent 32%),linear-gradient(145deg,#fffaf2 0%,#fbf6ee 52%,#f3ead9 100%); isolation:isolate; }
.hero-noise { position:absolute; inset:0; opacity:.16; pointer-events:none; background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.18'/%3E%3C/svg%3E"); mix-blend-mode:multiply; }
.hero-orbit { position:absolute; border:1px solid rgba(180,98,43,.15); border-radius:50%; animation:orbit-spin 28s linear infinite; }
.hero-orbit::before { content:''; position:absolute; width:10px; height:10px; border-radius:50%; background:#f2c14e; top:12%; left:14%; box-shadow:0 0 24px #f2c14e; }
.hero-orbit-one { width:520px;height:520px;right:-220px;top:-240px; }
.hero-orbit-two { width:300px;height:300px;left:-180px;bottom:-120px;animation-direction:reverse; }
@keyframes orbit-spin { to { transform:rotate(360deg); } }
.hero-title { letter-spacing:-.045em; text-wrap:balance; }
.text-gradient { color:transparent; background:linear-gradient(110deg,#b4622b 10%,#d79243 52%,#4a5d3a 92%); background-size:200% auto; background-clip:text; -webkit-background-clip:text; animation:gradient-flow 5s ease infinite; }
@keyframes gradient-flow { 50% { background-position:100% center; } }
.hero-primary { box-shadow:0 14px 30px rgba(180,98,43,.28),inset 0 1px rgba(255,255,255,.25); }
.glass-button { background:rgba(255,255,255,.55); backdrop-filter:blur(10px); }
.experience-3d-toggle { display:inline-flex;align-items:center;gap:.5rem;min-height:2.25rem;padding:.42rem .78rem;border:1px solid rgba(180,98,43,.24);border-radius:999px;background:rgba(255,255,255,.72);box-shadow:0 8px 22px rgba(45,57,35,.08);color:#4a5d3a;font-size:.75rem;font-weight:800;letter-spacing:.02em;backdrop-filter:blur(10px);transition:background .25s ease,border-color .25s ease,color .25s ease,box-shadow .25s ease,transform .25s ease; }
.experience-3d-toggle[hidden] { display:none !important; }
.experience-3d-toggle svg { width:1rem;height:1rem;fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:round;stroke-linejoin:round; }
.experience-3d-toggle:hover { transform:translateY(-1px);border-color:rgba(180,98,43,.52);box-shadow:0 12px 26px rgba(45,57,35,.12); }
.experience-3d-toggle:focus-visible { outline:3px solid rgba(242,193,78,.7);outline-offset:3px; }
.experience-3d-toggle[aria-pressed="true"] { border-color:#4a5d3a;background:#2d3923;color:#fff;box-shadow:0 12px 28px rgba(45,57,35,.22),inset 0 0 0 1px rgba(255,255,255,.12); }
.experience-3d-toggle .three-d-label-on { display:none; }
.experience-3d-toggle[aria-pressed="true"] .three-d-label-off { display:none; }
.experience-3d-toggle[aria-pressed="true"] .three-d-label-on { display:inline; }
.hero-visual { perspective:1200px; }
.hero-3d-scene { transform-style:preserve-3d;isolation:isolate; }
.hero-media-card { z-index:2;transform:rotateX(0) rotateY(0) translateZ(0);transform-style:preserve-3d;transition:transform .55s cubic-bezier(.2,.8,.2,1),box-shadow .55s ease;will-change:transform; }
.hero-media-card picture,.hero-media-card video,.hero-media-card img { display:block;width:100%;height:100%; }
.hero-depth-card { position:absolute;z-index:1;width:40%;aspect-ratio:4/3;overflow:hidden;border:4px solid rgba(255,255,255,.9);border-radius:1.35rem;background:#fff;box-shadow:0 18px 45px rgba(45,57,35,.16);opacity:0;pointer-events:none;transition:opacity .35s ease,transform .55s cubic-bezier(.2,.8,.2,1);transform-style:preserve-3d; }
.hero-depth-card picture,.hero-depth-card img { display:block;width:100%;height:100%;object-fit:cover; }
.hero-depth-card-back { top:-8%;left:-7%;transform:translate3d(18%,18%,0) rotate(-7deg) scale(.84); }
.hero-depth-card-side { right:-8%;bottom:-9%;transform:translate3d(-18%,-18%,0) rotate(7deg) scale(.84); }
.hero-stage.is-3d-enabled .hero-media-card { transform:rotateX(var(--scene-rx,-2deg)) rotateY(var(--scene-ry,3deg)) translateZ(42px);box-shadow:0 42px 90px -30px rgba(45,57,35,.62); }
.hero-stage.is-3d-enabled .hero-depth-card { opacity:.95; }
.hero-stage.is-3d-enabled .hero-depth-card-back { transform:translate3d(-3%,-4%,-55px) rotate(-7deg) scale(.9); }
.hero-stage.is-3d-enabled .hero-depth-card-side { transform:translate3d(3%,4%,-35px) rotate(7deg) scale(.9); }
.hero-stage.is-3d-enabled .hero-orbit { border-color:rgba(180,98,43,.28); }
.hero-illustration { overflow:hidden; border:1px solid rgba(255,255,255,.45); box-shadow:0 35px 75px -28px rgba(45,57,35,.5),inset 0 1px rgba(255,255,255,.35); transform-style:preserve-3d; }
.hero-illustration::after { content:''; position:absolute; inset:0; background:linear-gradient(115deg,transparent 30%,rgba(255,255,255,.22) 45%,transparent 60%); transform:translateX(-130%); animation:hero-shimmer 7s ease-in-out infinite; }
@keyframes hero-shimmer { 0%,55%{transform:translateX(-130%)} 80%,100%{transform:translateX(130%)} }
.sun-glow { position:absolute; width:110px;height:110px;border-radius:50%;right:7%;top:2%;background:rgba(242,193,78,.28);filter:blur(22px);animation:sun-breathe 4s ease-in-out infinite; }
@keyframes sun-breathe { 50% { transform:scale(1.22);opacity:.62; } }
.bird-flight { animation:birds 8s ease-in-out infinite; transform-origin:center; }
@keyframes birds { 50% { transform:translate(22px,-8px); } }
.floating-card { position:absolute; z-index:4; display:flex; align-items:center; gap:.75rem; min-width:205px; padding:.85rem 1rem; border:1px solid rgba(255,255,255,.7); border-radius:1rem; background:rgba(255,255,255,.78); box-shadow:0 18px 45px rgba(45,57,35,.18); backdrop-filter:blur(14px); color:#2d3923; animation:card-float 5s ease-in-out infinite; }
.floating-card strong,.floating-card small { display:block; }
.floating-card strong { font-size:.78rem; }
.floating-card small { font-size:.65rem;color:#7c935f;margin-top:.12rem; }
.floating-card-top { right:-3%;top:8%; }
.floating-card-bottom { left:-6%;bottom:8%;animation-delay:-2.2s; }
.floating-icon { display:grid;place-items:center;width:2rem;height:2rem;border-radius:.7rem;background:#f5ead6;color:#b4622b; }
.live-dot { width:.7rem;height:.7rem;border-radius:50%;background:#4a5d3a;box-shadow:0 0 0 6px rgba(74,93,58,.12);animation:live-pulse 1.8s ease infinite; }
@keyframes card-float { 50% { transform:translateY(-8px); } }
@keyframes live-pulse { 50% { box-shadow:0 0 0 10px rgba(74,93,58,0); } }

.experience-marquee { overflow:hidden; background:#f2c14e; color:#2d3923; padding:.65rem 0; border-block:1px solid rgba(45,57,35,.12); }
/* 6 identical groups are rendered; shifting by exactly one group (1/6) loops
   seamlessly while keeping each cycle short, which animates far more smoothly
   than sliding the full 12000px track. */
.marquee-track { display:flex; align-items:center; width:max-content; font-size:.72rem; font-weight:800; letter-spacing:.2em; animation:marquee 26s linear infinite; will-change:transform; transform:translateZ(0); backface-visibility:hidden; }
.marquee-group { display:flex;align-items:center;flex:none; }
.marquee-group span { white-space:nowrap;margin-inline:1.25rem; }
.marquee-group b { flex:none;margin-inline:.65rem; }
.marquee-track b { color:#b4622b;font-size:1rem; }
@keyframes marquee { from { transform:translate3d(0,0,0); } to { transform:translate3d(-16.6667%,0,0); } }
@media (prefers-reduced-motion: reduce) { .marquee-track, .camp-gallery-track { animation: none; } }

.section-glow,.section-pattern { position:relative; isolation:isolate; overflow:hidden; }
.section-glow::before { content:''; position:absolute; z-index:-1; width:420px;height:420px;border-radius:50%;right:-220px;top:10%;background:radial-gradient(circle,rgba(242,193,78,.12),transparent 68%); }
.section-pattern::before { content:'';position:absolute;inset:0;z-index:-1;opacity:.45;background-image:radial-gradient(rgba(180,98,43,.14) 1px,transparent 1px);background-size:28px 28px;mask-image:linear-gradient(to bottom,transparent,black 20%,black 80%,transparent); }
.premium-card,.role-card { position:relative; overflow:hidden; transform-style:preserve-3d; }
.premium-card::before,.role-card::before { content:'';position:absolute;inset:0;background:radial-gradient(circle at var(--mx,50%) var(--my,50%),rgba(242,193,78,.2),transparent 36%);opacity:0;transition:opacity .3s ease;pointer-events:none; }
.premium-card:hover::before,.role-card:hover::before { opacity:1; }
.premium-card > *,.role-card > * { position:relative;z-index:1; }
.role-card { border-top:3px solid transparent; }
.role-card:hover { border-top-color:#f2c14e; }
.pricing-featured { position:relative;overflow:hidden;box-shadow:0 30px 65px -35px rgba(45,57,35,.75); }
.pricing-featured::before { content:'PROGRAMME FEE';position:absolute;right:-3.2rem;top:1.8rem;transform:rotate(45deg);background:#f2c14e;color:#2d3923;font-size:.58rem;font-weight:900;letter-spacing:.1em;padding:.4rem 3.8rem; }
.fee-breakdown li { display:flex;align-items:flex-start;justify-content:space-between;gap:1rem;padding-bottom:.65rem;border-bottom:1px solid rgba(45,57,35,.1); }
.fee-breakdown strong { color:#2d3923;text-align:right;font-weight:700; }
.camp-gallery-section { overflow:hidden; }
.camp-gallery-viewport { overflow:hidden;padding:1.25rem 0 2.5rem; }
.camp-gallery-track { display:flex;gap:1rem;width:max-content;animation:gallery-scroll 70s linear infinite;will-change:transform;transform:translateZ(0);backface-visibility:hidden; }
.camp-gallery-card { position:relative;flex:none;width:clamp(230px,24vw,340px);height:220px;border-radius:1.5rem;overflow:hidden;box-shadow:0 20px 44px -28px rgba(45,57,35,.55); }
.camp-gallery-card img { width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.8,.2,1); }
.camp-gallery-card::after { content:'';position:absolute;inset:35% 0 0;background:linear-gradient(transparent,rgba(31,40,24,.86)); }
.camp-gallery-card figcaption { position:absolute;z-index:2;left:1.15rem;right:1.15rem;bottom:1rem;color:white; }
.camp-gallery-card strong,.camp-gallery-card span { display:block; }
.camp-gallery-card strong { font-family:'DM Serif Display',serif;font-size:1.1rem; }
.camp-gallery-card span { margin-top:.2rem;font-size:.85rem;opacity:.82; }
.camp-gallery-card:hover img { transform:scale(1.045); }
/* 8 photos rendered twice; shifting by exactly one set (50% + half the gap) loops seamlessly. */
@keyframes gallery-scroll { from { transform:translate3d(calc(-50% - .5rem),0,0); } to { transform:translate3d(0,0,0); } }
.process-card { position:relative; }
.partner-logo { filter:grayscale(1) opacity(.55); transition:filter .25s ease; }
.partner-logo:hover { filter:grayscale(0) opacity(1); }
.process-card::after { content:'';position:absolute;left:1.25rem;right:100%;bottom:-1px;height:3px;border-radius:3px;background:linear-gradient(90deg,#b4622b,#f2c14e);transition:right .4s ease; }
.process-card:hover::after { right:1.25rem; }
.final-cta::before,.final-cta::after { content:'';position:absolute;border-radius:50%;filter:blur(2px);border:1px solid rgba(242,193,78,.2); }
.final-cta::before { width:380px;height:380px;left:-160px;top:-230px; }
.final-cta::after { width:500px;height:500px;right:-230px;bottom:-340px; }
.cursor-glow { position:fixed;width:320px;height:320px;border-radius:50%;pointer-events:none;z-index:60;transform:translate(-50%,-50%);background:radial-gradient(circle,rgba(242,193,78,.09),transparent 67%);mix-blend-mode:multiply; }

.font-display {
  font-family: 'Fraunces', Georgia, serif;
}

/* Portal polish: every functional surface feels tactile without changing its behaviour. */
main .bg-white.rounded-2xl { box-shadow:0 1px 2px rgba(45,57,35,.025); transition:box-shadow .3s ease,border-color .3s ease,transform .3s ease; }
main .bg-white.rounded-2xl:hover { border-color:rgba(204,152,86,.48); box-shadow:0 18px 45px -30px rgba(45,57,35,.35); }
input:not([type="checkbox"]):not([type="radio"]),select,textarea { transition:border-color .2s ease,box-shadow .2s ease,background .2s ease; }
input:not([type="checkbox"]):not([type="radio"]):focus,select:focus,textarea:focus { border-color:#cc9856!important;box-shadow:0 0 0 4px rgba(242,193,78,.16)!important;outline:none; }
button:not(:disabled),a { -webkit-tap-highlight-color:transparent; }
button:not(:disabled):active,.btn-cta:active { transform:translateY(1px) scale(.985); }
:where(a,button,input,select,textarea,summary):focus-visible { outline:3px solid #f08a2e; outline-offset:3px; }
.skip-link { position:fixed;left:1rem;top:1rem;z-index:1000;transform:translateY(-180%);border-radius:.75rem;background:#1f2f21;color:#fff;padding:.75rem 1rem;font-weight:700;box-shadow:0 10px 30px rgba(0,0,0,.2); }
.skip-link:focus { transform:translateY(0); }
.nav-link { position:relative;overflow:hidden; }
.nav-link::after { content:'';position:absolute;inset:auto 12% 0;height:1px;background:linear-gradient(90deg,transparent,#f2c14e,transparent);transform:scaleX(0);transition:transform .3s ease; }
.nav-link:hover::after { transform:scaleX(1); }

/* Calendar grid */
.cal-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
}

.cal-day {
  min-height: 92px;
}

.cal-day.is-outside {
  opacity: 0.35;
}

/* Sidebar active link indicator */
.nav-link.active {
  background-color: rgba(180, 98, 43, 0.12);
  color: #B4622B;
  font-weight: 600;
  border-left: 3px solid #B4622B;
}

::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
::-webkit-scrollbar-thumb {
  background: #d8cfc2;
  border-radius: 8px;
}

/* CTA buttons: icon slides right + subtle shine sweep on hover */
.btn-cta {
  position: relative;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.btn-cta:hover {
  transform: translateY(-2px);
}
.btn-cta .btn-icon {
  transition: transform 0.25s ease;
}
.btn-cta:hover .btn-icon {
  transform: translateX(4px);
}
.btn-cta::after {
  content: '';
  position: absolute;
  top: 0;
  left: -75%;
  width: 50%;
  height: 100%;
  background: linear-gradient(120deg, transparent, rgba(255,255,255,0.35), transparent);
  transform: skewX(-20deg);
  transition: left 0.6s ease;
}
.btn-cta:hover::after {
  left: 130%;
}

/* Role/benefit cards: gentle lift + icon bounce */
.hover-lift {
  transition: transform 0.35s cubic-bezier(.2,.8,.2,1), box-shadow 0.35s ease, border-color .35s ease;
}
.hover-lift:hover {
  transform: translateY(-8px);
  box-shadow: 0 24px 50px -18px rgba(74, 93, 58, 0.28);
}
.hover-lift:hover .icon-bounce {
  animation: bounce-icon 0.6s ease;
}
@keyframes bounce-icon {
  0%, 100% { transform: translateY(0); }
  30% { transform: translateY(-6px); }
  60% { transform: translateY(0); }
}

/* FAQ accordion chevron rotation */
.faq-item[open] .faq-chevron {
  transform: rotate(180deg);
}
.faq-chevron {
  transition: transform 0.2s ease;
}

/* Scroll-reveal: elements start hidden, JS (public/js/app.js) adds
   .reveal-visible via IntersectionObserver as they enter the viewport. */
.reveal {
  opacity: 0;
  transform: translateY(20px);
  transition: opacity 0.6s ease, transform 0.6s ease;
}
.reveal-visible {
  opacity: 1;
  transform: none;
}

/* Floating gradient blobs behind the hero illustration */
@keyframes blob-float {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(12px, -16px) scale(1.08); }
}
@keyframes blob-float-slow {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50% { transform: translate(-14px, 14px) scale(1.05); }
}
.blob-float { animation: blob-float 7s ease-in-out infinite; }
.blob-float-slow { animation: blob-float-slow 9s ease-in-out infinite; }

@keyframes hero-drift {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}
.hero-illustration { animation: hero-drift 6s ease-in-out infinite; }

@media (prefers-reduced-motion: reduce) {
  .reveal { opacity: 1; transform: none; transition: none; }
  .blob-float, .blob-float-slow, .hero-illustration { animation: none; }
  .hero-stage.is-3d-enabled .hero-media-card { transform:rotateX(-2deg) rotateY(3deg) translateZ(42px); }
  *, *::before, *::after { animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; scroll-behavior: auto !important; transition-duration: 0.001ms !important; }
}

@media (max-width: 768px) {
  .hero-stage .hero-title { font-size:3.35rem; }
  .hero-3d-scene { perspective:900px; }
  .hero-depth-card { display:none; }
  .hero-stage.is-3d-enabled .hero-media-card { transform:rotateX(-1.5deg) rotateY(2.5deg) translateZ(20px);box-shadow:0 30px 65px -30px rgba(45,57,35,.55); }
  .floating-card { min-width:170px;padding:.65rem .75rem; }
  .floating-card-top { right:-2%;top:3%; }
  .floating-card-bottom { left:-2%;bottom:3%; }
  .cursor-glow { display:none; }
}

.app-toast { position: fixed; right: 1.25rem; bottom: 1.25rem; z-index: 10000; padding: .85rem 1rem; border-radius: .85rem; color: white; background: #2D3923; box-shadow: 0 16px 35px rgba(45,57,35,.25); opacity: 0; transform: translateY(12px); transition: .25s ease; }
.app-toast.is-visible { opacity: 1; transform: none; }
.portal-language-picker { display:block; background:white; border:1px solid #E9D3AA; border-radius:.65rem; box-shadow:0 8px 20px rgba(45,57,35,.12); }
body > .portal-language-picker { position:fixed; right:1rem; top:1rem; z-index:9990; }
.portal-language-picker select { display:block; min-width:4.25rem; background:transparent; padding:.55rem 1.8rem .55rem .7rem; font-size:.75rem; font-weight:700; color:#4A5D3A; outline:none; border:0; }
@media (max-width: 420px) {
  #portal-language-slot .portal-language-picker select { min-width:3.75rem; padding-left:.55rem; padding-right:1.45rem; }
}
.empty-state { border: 1px dashed #E9D3AA; border-radius: 1rem; padding: 2.5rem 1.5rem; text-align: center; color: #7C935F; background: linear-gradient(145deg,#fff,#FBF6EE); }
.journey-track { display:flex; overflow-x:auto; gap:.25rem; padding-bottom:.5rem; }
.journey-step { min-width:9rem; position:relative; text-align:center; color:#7C935F; }
.journey-step::after { content:''; position:absolute; height:2px; background:#E9D3AA; top:1rem; left:58%; width:84%; }
.journey-step:last-child::after { display:none; }
.journey-dot { position:relative; z-index:1; margin:auto; width:2rem; height:2rem; border-radius:999px; display:grid; place-items:center; background:#F5EAD6; color:#B4622B; }
.journey-step.is-complete .journey-dot { background:#4A5D3A; color:white; }
.journey-step.is-complete::after { background:#7C935F; }
/* The step the candidate is on: filled, ringed and darker text so the eye lands on it. */
.journey-step.is-current .journey-dot { background:#B4622B; color:white; box-shadow:0 0 0 4px rgba(180,98,43,.18); }
.journey-step.is-current { color:#2d3923; font-weight:600; }
/* Waiting on our team rather than the candidate. */
.journey-step.is-waiting .journey-dot { background:#F2C14E; color:#2d3923; }
.journey-step.is-upcoming .journey-dot { background:#F5EAD6; color:#B08E5A; }
.journey-payment-label { display:inline-flex; margin-top:.35rem; border-radius:999px; padding:.16rem .48rem; font-size:.58rem; font-weight:800; letter-spacing:.08em; }
.journey-payment-paid { color:#166534; }
.journey-payment-paid .journey-dot,.journey-payment-paid .journey-payment-label { background:#15803d; color:#fff; }
.journey-payment-unpaid { color:#991b1b; }
.journey-payment-unpaid .journey-dot { box-shadow:0 0 0 4px rgba(220,38,38,.12); }
.journey-payment-unpaid .journey-payment-label { background:#fee2e2; color:#991b1b; }
@keyframes milestone-pop { 50% { transform:scale(1.28); box-shadow:0 0 0 10px rgba(242,193,78,.2); } }
.milestone-celebrate .journey-dot { animation:milestone-pop .65s ease; }

/* Callout: draws the eye to a genuinely important piece of info
   (a deadline, a discount, a required document). Use sparingly. */
.callout {
  position: relative;
  border-left: 3px solid #F2C14E;
  background: linear-gradient(90deg, rgba(242, 193, 78, 0.14), rgba(242, 193, 78, 0.03));
}

/* Small pulsing dot for time-sensitive banners */
@keyframes pulse-dot {
  0% { box-shadow: 0 0 0 0 rgba(242, 193, 78, 0.6); }
  70% { box-shadow: 0 0 0 8px rgba(242, 193, 78, 0); }
  100% { box-shadow: 0 0 0 0 rgba(242, 193, 78, 0); }
}
.pulse-dot {
  display: inline-block;
  width: 8px;
  height: 8px;
  border-radius: 999px;
  background: #F2C14E;
  animation: pulse-dot 1.8s ease-out infinite;
}
.partner-logos-section { display: none; }

/* SafriCamps-owned document viewer */
.document-viewer-hero{background:linear-gradient(120deg,#1f3522 0%,#315136 58%,#bd671e 140%)}
.document-viewer-stage{background:radial-gradient(circle at 12% 0%,rgba(241,177,73,.12),transparent 34%),#f5f1e8}
.document-preview-paper{width:min(100%,900px);min-height:64vh;margin:0 auto;padding:clamp(1.5rem,5vw,4.5rem);border:1px solid rgba(50,82,54,.13);border-radius:1rem;background:#fff;box-shadow:0 20px 55px rgba(31,53,34,.10)}
.document-preview-prose{color:#344332;font-size:1rem;line-height:1.8}
.document-preview-prose h1,.document-preview-prose h2,.document-preview-prose h3,.document-preview-prose h4{margin:1.6em 0 .55em;color:#263b28;font-family:Fraunces,serif;line-height:1.25}
.document-preview-prose h1{margin-top:0;font-size:2rem}.document-preview-prose h2{font-size:1.55rem}.document-preview-prose h3{font-size:1.25rem}
.document-preview-prose p,.document-preview-prose ul,.document-preview-prose ol,.document-preview-prose blockquote,.document-preview-prose table{margin:0 0 1.1rem}
.document-preview-prose ul,.document-preview-prose ol{padding-left:1.5rem}.document-preview-prose ul{list-style:disc}.document-preview-prose ol{list-style:decimal}
.document-preview-prose a{color:#327044;text-decoration:underline}.document-preview-prose img{max-width:100%;height:auto;margin:1.5rem auto;border-radius:.75rem}
.document-preview-prose table{width:100%;border-collapse:collapse}.document-preview-prose th,.document-preview-prose td{padding:.65rem;border:1px solid #dbe5d8;text-align:left;vertical-align:top}
.document-preview-sheet{min-width:100%;border-collapse:collapse;font-size:.8rem}.document-preview-sheet td{min-width:7rem;max-width:22rem;padding:.65rem .75rem;border-right:1px solid #e7eee3;border-bottom:1px solid #e7eee3;white-space:pre-wrap;vertical-align:top}
.document-preview-sheet tr:nth-child(even){background:#f7faf5}.document-preview-slide{aspect-ratio:16/9;overflow:auto;border:1px solid rgba(50,82,54,.15);border-radius:1.25rem;background:linear-gradient(145deg,#fff,#f7f8f2);padding:clamp(1.25rem,4vw,2.5rem);box-shadow:0 16px 40px rgba(31,53,34,.09)}
@media(max-width:640px){.document-preview-paper{border-radius:.75rem;padding:1.25rem}.document-viewer-stage{padding:.5rem}.document-preview-slide{aspect-ratio:auto;min-height:15rem}}

/* CampStaffUSA sponsor guidance rendered from the supplied Word document. */
.visa-resource-accordion[open]{border-color:#c9d8c3;box-shadow:0 12px 28px rgba(31,53,34,.07)}
.visa-resource-accordion[open]>summary{background:linear-gradient(90deg,#edf4e9,#fff8ea)}
.visa-resource-chevron{transition:transform .2s ease}
.visa-resource-accordion[open] .visa-resource-chevron{transform:rotate(180deg)}
.programme-resource-copy{color:#52634a;font-size:.94rem;line-height:1.75}
.programme-resource-copy h2,.programme-resource-copy h3{margin:1.4rem 0 .55rem;color:#2d3923;font-family:Fraunces,serif;font-weight:600;line-height:1.3}
.programme-resource-copy h2:first-child,.programme-resource-copy h3:first-child{margin-top:0}
.programme-resource-copy h2{font-size:1.2rem}.programme-resource-copy h3{font-size:1.05rem}
.programme-resource-copy p,.programme-resource-copy ul,.programme-resource-copy ol,.programme-resource-copy blockquote{margin:0 0 1rem}
.programme-resource-copy ul,.programme-resource-copy ol{padding-left:1.4rem}.programme-resource-copy ul{list-style:disc}.programme-resource-copy ol{list-style:decimal}
.programme-resource-copy li+li{margin-top:.45rem}.programme-resource-copy a{color:#2f7040;text-decoration:underline;text-underline-offset:2px}
