:root{
  --blue:#1f5fbf;--blue-d:#154a99;--navy:#0f1f3a;--navy-2:#16294a;
  --ink:#0f1f3a;--body:#4a5b72;--muted:#7c8aa0;
  --bg:#fff;--soft:#f1f5f9;--sky:#e6f0fd;--gold:#f0a91d;
  --line:#e2e8f0;--radius:20px;--max:1200px;
  --font:"Plus Jakarta Sans","Segoe UI",system-ui,-apple-system,Arial,sans-serif;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;font-family:var(--font);color:var(--body);background:var(--bg);line-height:1.7}
img{max-width:100%;display:block}
a{color:var(--blue)}
.container{max-width:var(--max);margin:0 auto;padding:0 24px}
h1,h2,h3{color:var(--ink);line-height:1.15;margin:0 0 .5em;font-weight:800;letter-spacing:-.02em}
h1{font-size:clamp(2.3rem,5vw,3.8rem)}
h2{font-size:clamp(1.8rem,3.6vw,2.6rem)}
h3{font-size:1.15rem;letter-spacing:-.01em}
p{margin:0 0 1em}
.blue{color:var(--blue)}
.label{display:inline-flex;align-items:center;gap:8px;font-size:.74rem;font-weight:800;letter-spacing:.14em;text-transform:uppercase;color:var(--blue);background:var(--sky);padding:6px 14px;border-radius:999px;margin-bottom:16px}
.dark .label{background:rgba(255,255,255,.1);color:#9cc2f5}

/* top bar */
.topbar{background:var(--navy);color:#c3cfe0;font-size:.82rem}
.topbar .container{display:flex;justify-content:space-between;gap:16px;padding-top:9px;padding-bottom:9px;flex-wrap:wrap}
.topbar span+span{margin-left:22px}

/* header */
.site-header{position:sticky;top:0;z-index:50;background:rgba(255,255,255,.96);backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.nav{display:flex;align-items:center;justify-content:space-between;height:78px}
.brand img{height:38px;width:auto}
.nav ul{display:flex;gap:30px;list-style:none;margin:0;padding:0;align-items:center}
.nav a.link{text-decoration:none;color:var(--ink);font-weight:600;font-size:.94rem}
.nav a.link:hover{color:var(--blue)}
.menu-btn{display:none;background:none;border:1px solid var(--line);border-radius:10px;padding:8px 14px;cursor:pointer;font:inherit;white-space:nowrap;flex:none}

/* buttons */
.btn{display:inline-flex;align-items:center;gap:10px;padding:14px 28px;border-radius:999px;font:700 .95rem var(--font);text-decoration:none;border:2px solid transparent;cursor:pointer;transition:.2s}
.btn::after{content:"→";font-weight:700}
.btn-blue{background:var(--blue);color:#fff}
.btn-blue:hover{background:var(--blue-d);transform:translateY(-1px)}
.btn-white{background:#fff;color:var(--ink);border-color:var(--line)}
.btn-white:hover{border-color:var(--blue);color:var(--blue)}
.btn-sm{padding:10px 22px;font-size:.86rem}
.btn.noarrow::after{content:none}

/* hero */
.hero{position:relative;padding:72px 0 0;background:linear-gradient(180deg,#dcebfd 0,#eaf3fe 55%,#fff 100%);overflow:hidden}
.hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 78% 30%,rgba(31,95,191,.16),transparent 45%),radial-gradient(#b9d3f5 1.4px,transparent 1.4px) 0 0/26px 26px;opacity:.55;mask-image:linear-gradient(180deg,#000 40%,transparent)}
.hero-grid{position:relative;display:grid;grid-template-columns:1.1fr 1fr;gap:40px;align-items:end}
.hero-copy{padding-bottom:70px}
.lead{font-size:1.1rem;max-width:560px}
.actions{display:flex;gap:14px;flex-wrap:wrap;margin:28px 0}
.chips{display:flex;gap:10px;flex-wrap:wrap}
.chips span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:7px 16px;font-size:.84rem;font-weight:700;color:var(--ink);box-shadow:0 4px 14px -8px rgba(15,31,58,.25)}
.hero-visual{position:relative;align-self:stretch;min-height:480px}
.hero-photo{position:absolute;inset:0 0 0 8%;border-radius:200px 200px 0 0;overflow:hidden;background:linear-gradient(160deg,#3b7be0,#154a99);display:grid;place-items:center;color:rgba(255,255,255,.7);font-size:.85rem;text-align:center;padding:20px}
.hero-photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.float{position:absolute;background:#fff;border-radius:16px;padding:14px 18px;box-shadow:0 18px 36px -14px rgba(15,31,58,.35);font-size:.84rem;font-weight:700;color:var(--ink);z-index:2}
.float small{display:block;font-weight:500;color:var(--muted)}
.float b{display:block;font-size:1.5rem;color:var(--blue);line-height:1.1}
.fl1{left:-2%;bottom:90px}.fl2{right:0;top:60px}
.pin{position:absolute;background:#fff;border-radius:999px;padding:6px 14px;font-size:.78rem;font-weight:700;color:var(--ink);box-shadow:0 10px 24px -10px rgba(15,31,58,.35);z-index:2}
.pin::before{content:"📍";margin-right:5px}
.p1{left:2%;top:20px}.p2{right:4%;top:210px}.p3{left:0;top:230px}

/* icon strip */
.iconstrip{position:relative;margin-top:-1px;background:#fff;padding:0 0 10px}
.iconstrip .grid{transform:translateY(-36px)}
.mini{background:#fff;border:1px solid var(--line);border-radius:18px;padding:20px 22px;display:flex;gap:14px;align-items:center;box-shadow:0 18px 40px -26px rgba(15,31,58,.4)}
.mini .ico{margin:0;flex:0 0 46px}
.mini b{display:block;color:var(--ink);font-size:.95rem;line-height:1.3}

/* sections */
section{padding:92px 0}
.soft{background:var(--soft)}
.dark{background:var(--navy);color:#b8c6db}
.dark h2,.dark h3{color:#fff}
.head{max-width:680px;margin-bottom:48px}
.head.center{margin-left:auto;margin-right:auto;text-align:center}
.head p{font-size:1.05rem}
.grid{display:grid;gap:22px}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px;transition:.25s}
.card:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(15,31,58,.45);border-color:#c8d9f3}
.card p{margin:0;font-size:.95rem}
.dark .card{background:var(--navy-2);border-color:#243a60}
.dark .card p{color:#a9b9d1}
.dark .card:hover{border-color:var(--blue)}
.ico{width:50px;height:50px;border-radius:15px;background:var(--sky);display:grid;place-items:center;font-size:1.4rem;margin-bottom:18px}
.dark .ico{background:rgba(31,95,191,.3)}
.split{display:grid;grid-template-columns:1fr 1fr;gap:64px;align-items:center}
.ticks{list-style:none;padding:0;margin:20px 0 28px}
.ticks li{padding-left:32px;position:relative;margin-bottom:12px}
.ticks li::before{content:"✓";position:absolute;left:0;top:4px;width:21px;height:21px;border-radius:50%;background:var(--blue);color:#fff;font-size:.7rem;display:grid;place-items:center}
.photo{border-radius:28px;overflow:hidden;background:linear-gradient(150deg,var(--sky),#cfe0f8);aspect-ratio:5/4;display:grid;place-items:center;color:var(--muted);font-size:.85rem;text-align:center;padding:20px;position:relative}
.photo img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.photo .float{left:20px;bottom:20px}

/* how it works */
.steps{display:grid;grid-template-columns:repeat(5,1fr);gap:18px;counter-reset:s;position:relative}
.steps::before{content:"";position:absolute;left:8%;right:8%;top:28px;border-top:2px dashed #bcd0ee}
.step{text-align:center;position:relative}
.step::before{counter-increment:s;content:counter(s);width:56px;height:56px;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;font-size:1.2rem;display:grid;place-items:center;margin:0 auto 18px;box-shadow:0 0 0 8px #fff}
.step p{font-size:.9rem;margin:0}

/* countries */
.countries{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.countries span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 18px;font-weight:700;font-size:.9rem;color:var(--ink)}
.countries span.more{background:var(--blue);border-color:var(--blue);color:#fff}
.note{display:flex;gap:18px;background:#fff;border:1px dashed #b7c8e2;border-radius:var(--radius);padding:26px}
.note .ico{margin:0;flex:0 0 50px}.note p{margin:0}

/* FAQ */
.faq{max-width:820px;margin:0 auto;display:grid;gap:14px}
details{background:#fff;border:1px solid var(--line);border-radius:16px;padding:20px 24px}
details[open]{border-color:var(--blue)}
summary{font-weight:700;color:var(--ink);cursor:pointer;list-style:none;display:flex;justify-content:space-between;gap:16px}
summary::-webkit-details-marker{display:none}
summary::after{content:"+";font-size:1.4rem;line-height:1;color:var(--blue)}
details[open] summary::after{content:"−"}
details p{margin:12px 0 0;font-size:.95rem}

/* portal */
.portal{background:linear-gradient(135deg,var(--blue-d),var(--blue));border-radius:32px;padding:60px;display:grid;grid-template-columns:1.2fr 1fr;gap:44px;align-items:center;color:#dbe8fb}
.portal h2{color:#fff}
.portal .label{background:rgba(255,255,255,.16);color:#fff}
.badge{display:inline-block;background:var(--gold);color:#3a2600;font-weight:800;font-size:.7rem;padding:4px 12px;border-radius:999px;margin-left:8px;vertical-align:middle;letter-spacing:.06em}
.signup{background:#fff;border-radius:22px;padding:28px;color:var(--body)}
.signup h3{margin-bottom:14px}
form{display:grid;gap:12px}
input,select{width:100%;padding:13px 16px;border:1px solid #cfd9e6;border-radius:12px;font:inherit;background:#fff}
input:focus,select:focus{outline:2px solid var(--blue);border-color:var(--blue)}
.hint{font-size:.8rem;color:var(--muted);margin:0}
.ok{display:none;background:#e6f6ee;color:#17603a;padding:10px 14px;border-radius:10px;font-size:.9rem}

/* CTA */
.cta{background:var(--navy);text-align:center;padding:84px 0;color:#b8c6db;position:relative;overflow:hidden}
.cta::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 50% 0,rgba(31,95,191,.55),transparent 60%)}
.cta .container{position:relative}
.cta h2{color:#fff}.cta p{max-width:620px;margin:0 auto 28px}

/* footer */
.site-footer{background:#0a1730;color:#93a5c0;padding:64px 0 24px;font-size:.92rem}
.site-footer h4{color:#fff;margin:0 0 16px;font-size:1rem}
.site-footer ul{list-style:none;margin:0;padding:0}.site-footer li{margin-bottom:9px}
.site-footer a{color:#93a5c0;text-decoration:none}.site-footer a:hover{color:#fff}
.footer-logo{height:30px;width:auto;display:block;margin-bottom:16px}
.fgrid{display:grid;grid-template-columns:2fr 1fr 1fr;gap:44px}
.copy{border-top:1px solid #1e3050;margin-top:40px;padding-top:20px;font-size:.82rem;display:flex;justify-content:space-between;flex-wrap:wrap;gap:8px}

@media(max-width:980px){
  .hero-grid,.split,.portal,.fgrid{grid-template-columns:1fr}
  .g3,.g4{grid-template-columns:1fr 1fr}
  .steps{grid-template-columns:1fr 1fr}.steps::before{display:none}
  .hero-visual{min-height:420px}.hero-copy{padding-bottom:20px}
  .portal{padding:36px 26px}
}
@media(max-width:700px){
  .menu-btn{display:block}
  .brand img{height:28px}
  .nav ul{display:none;position:absolute;top:78px;left:0;right:0;background:#fff;flex-direction:column;align-items:flex-start;padding:18px 24px 26px;border-bottom:1px solid var(--line);gap:14px}
  .nav ul.open{display:flex}
  .g2,.g3,.g4,.steps{grid-template-columns:1fr}
  section{padding:60px 0}.hero{padding-top:44px}
  .topbar .container{justify-content:center;text-align:center}.topbar span+span{margin-left:0}
  .fl1{left:6px}.pin{display:none}
  .iconstrip .grid{transform:none;padding-top:24px}
}

.hero-photo img{object-position:50% 25%}
@media(max-width:980px){.fl2{top:auto;bottom:24px;right:8px}.fl1{display:none}}

/* ===== multi-page additions ===== */
.narrow{max-width:820px}
.nav a.link.active{color:var(--blue)}
.hp{position:absolute;left:-9999px;width:1px;height:1px;opacity:0;overflow:hidden}
.form-err{display:none;background:#fdecec;color:#a12626;padding:10px 14px;border-radius:10px;font-size:.9rem;margin-top:4px}

/* page hero */
.page-hero{position:relative;padding:60px 0 64px;background:linear-gradient(180deg,#dcebfd,#eef4fb);overflow:hidden}
.page-hero::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at 85% 20%,rgba(31,95,191,.14),transparent 45%),radial-gradient(#b9d3f5 1.3px,transparent 1.3px) 0 0/26px 26px;opacity:.5;mask-image:linear-gradient(180deg,#000,transparent)}
.page-hero .container{position:relative}
.page-hero h1{font-size:clamp(2rem,4.4vw,3.1rem)}
.page-hero p{max-width:640px;font-size:1.08rem;margin:0}
.breadcrumb{margin-top:14px;font-size:.85rem;color:var(--muted)}
.breadcrumb a{color:var(--blue);text-decoration:none}

/* cards with lists */
.card ul{margin:14px 0 0;padding-left:18px;color:var(--body)}
.card ul li{margin-bottom:7px;font-size:.93rem}
.panel-cards{display:grid;gap:18px}

/* how-it-works step list */
.steplist{display:grid;gap:18px}
.row-step{display:flex;gap:22px;background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:26px 28px;transition:.2s}
.row-step:hover{box-shadow:0 18px 40px -26px rgba(15,31,58,.4);border-color:#c8d9f3}
.row-step .num{flex:0 0 52px;height:52px;border-radius:50%;background:var(--blue);color:#fff;font-weight:800;font-size:1.25rem;display:grid;place-items:center}
.row-step h3{margin:4px 0 6px}
.row-step p{margin:0}

/* contact page */
.contact-grid{display:grid;grid-template-columns:1.4fr 1fr;gap:48px;align-items:start}
.contact-grid label{display:block;font-weight:600;font-size:.9rem;color:var(--ink);margin-bottom:6px}
.contact-grid textarea{width:100%;padding:13px 16px;border:1px solid #cfd9e6;border-radius:12px;font:inherit;background:#fff;resize:vertical}
.contact-grid textarea:focus{outline:2px solid var(--blue);border-color:var(--blue)}
.two{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.info-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:28px;margin-bottom:20px}
.info-card.alt{background:var(--sky);border-color:#cfe0f8}
.info-card h3{margin-bottom:14px}
.contact-list{list-style:none;margin:0;padding:0}
.contact-list li{display:flex;gap:14px;margin-bottom:16px;font-size:.94rem}
.contact-list li span{font-size:1.2rem}
.contact-list b{color:var(--ink)}

@media(max-width:900px){
  .contact-grid{grid-template-columns:1fr;gap:32px}
}
@media(max-width:700px){
  .two{grid-template-columns:1fr}
  .row-step{padding:20px}
}

/* ===== courses page ===== */
.levels{display:flex;flex-wrap:wrap;gap:10px;margin-top:22px}
.levels span{background:#fff;border:1px solid var(--line);border-radius:999px;padding:8px 18px;font-weight:700;font-size:.9rem;color:var(--ink)}
.course-card{background:#fff;border:1px solid var(--line);border-radius:var(--radius);padding:30px;transition:.25s}
.course-card:hover{transform:translateY(-4px);box-shadow:0 22px 44px -26px rgba(15,31,58,.45);border-color:#c8d9f3}
.course-card>p{margin:0;font-size:.95rem}
.course-lists{display:grid;grid-template-columns:1fr 1fr;gap:20px;margin-top:18px}
.course-lists h4{font-size:.72rem;text-transform:uppercase;letter-spacing:.1em;color:var(--blue);margin:0 0 8px}
.course-lists ul{margin:0;padding-left:16px}
.course-lists li{font-size:.9rem;margin-bottom:6px;color:var(--body)}
.careers{margin-top:18px;padding-top:14px;border-top:1px solid var(--line);font-size:.88rem;color:var(--muted)}
.careers b{color:var(--ink)}
@media(max-width:520px){.course-lists{grid-template-columns:1fr}}

/* ===== portal mockup + product framing ===== */
.mock{background:#fff;border:1px solid var(--line);border-radius:16px;box-shadow:0 34px 70px -34px rgba(15,31,58,.55);overflow:hidden}
.mock-bar{display:flex;align-items:center;gap:7px;padding:12px 16px;background:#eef2f7;border-bottom:1px solid var(--line)}
.mock-bar i{width:10px;height:10px;border-radius:50%;background:#cfd8e3;display:block}
.mock-url{margin-left:10px;font-size:.74rem;color:var(--muted);background:#fff;border:1px solid var(--line);border-radius:8px;padding:5px 12px;flex:1}
.mock-body{padding:18px}
.mock-search{border:1px solid var(--line);border-radius:10px;padding:11px 14px;font-size:.85rem;color:var(--muted);margin-bottom:14px}
.mock-cards{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:14px}
.mock-card{border:1px solid var(--line);border-radius:10px;padding:12px 14px}
.mock-card b{display:block;font-size:.85rem;color:var(--ink);margin-bottom:2px}
.mock-card small{color:var(--blue);font-size:.72rem;font-weight:700}
.mock-track{background:var(--sky);border-radius:10px;padding:13px 15px}
.mock-track>span{font-size:.78rem;font-weight:800;color:var(--ink)}
.mock-prog{height:8px;background:#c9dcf6;border-radius:99px;margin:9px 0 7px;overflow:hidden}
.mock-prog i{display:block;height:100%;width:72%;background:var(--blue)}
.mock-track small{font-size:.72rem;color:var(--muted)}
.badge-soon{display:inline-block;background:var(--gold);color:#3a2600;font-weight:800;font-size:.68rem;padding:4px 12px;border-radius:999px;letter-spacing:.06em;vertical-align:middle;margin-left:8px}
.stepnum{display:inline-grid;place-items:center;width:30px;height:30px;border-radius:50%;background:var(--sky);color:var(--blue);font-weight:800;font-size:.85rem;margin-bottom:12px}
.dark .stepnum{background:rgba(31,95,191,.3);color:#cfe0f8}

/* ===== advanced portal timeline ===== */
.timeline{position:relative;max-width:920px;margin:0 auto}
.timeline::before{content:"";position:absolute;left:31px;top:14px;bottom:14px;width:2px;background:linear-gradient(180deg,var(--blue),#bcd0ee)}
.tl-item{position:relative;display:grid;grid-template-columns:64px 1fr;gap:26px;padding-bottom:26px}
.tl-item:last-child{padding-bottom:0}
.tl-node{width:64px;height:64px;border-radius:18px;background:linear-gradient(150deg,var(--blue),var(--blue-d));color:#fff;display:grid;place-items:center;font-size:1.5rem;box-shadow:0 12px 26px -12px rgba(31,95,191,.8);position:relative;z-index:1}
.tl-content{background:#fff;border:1px solid var(--line);border-radius:16px;padding:22px 26px;transition:.2s}
.tl-content:hover{box-shadow:0 18px 42px -26px rgba(15,31,58,.45);border-color:#c8d9f3;transform:translateY(-2px)}
.tl-step{display:flex;align-items:center;gap:10px;font-size:.72rem;font-weight:800;letter-spacing:.1em;text-transform:uppercase;color:var(--blue);margin-bottom:6px}
.tl-actor{font-size:.66rem;font-weight:800;letter-spacing:.05em;color:var(--muted);background:#eef2f7;border:1px solid var(--line);border-radius:999px;padding:3px 10px}
.tl-content h3{margin:0 0 8px}
.tl-content p{margin:0;font-size:.96rem}
.tl-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.tl-tags span{background:var(--sky);color:var(--blue);font-weight:700;font-size:.76rem;padding:5px 12px;border-radius:999px}
@media(max-width:600px){
  .tl-item{grid-template-columns:48px 1fr;gap:18px}
  .tl-node{width:48px;height:48px;font-size:1.2rem;border-radius:14px}
  .timeline::before{left:23px}
  .tl-content{padding:18px 20px}
}

/* ===== advanced portal flow (dark) ===== */
.flow{display:grid;grid-template-columns:repeat(3,1fr);gap:26px;position:relative}
.flowcard{position:relative;overflow:hidden;background:var(--navy-2);border:1px solid #243a60;border-radius:20px;padding:30px 28px;transition:.25s}
.flowcard::after{content:attr(data-n);position:absolute;right:16px;top:-14px;font-size:5.5rem;font-weight:800;line-height:1;color:rgba(120,170,240,.08)}
.flowcard:hover{transform:translateY(-5px);border-color:var(--blue);box-shadow:0 26px 54px -30px rgba(0,0,0,.85)}
.flowcard .fico{width:54px;height:54px;border-radius:15px;background:linear-gradient(150deg,var(--blue),var(--blue-d));display:grid;place-items:center;font-size:1.45rem;margin-bottom:18px;box-shadow:0 12px 26px -12px rgba(31,95,191,.9);position:relative;z-index:1}
.flowcard h3{color:#fff;margin:0 0 8px;position:relative;z-index:1}
.flowcard p{color:#a9b9d1;margin:0;font-size:.95rem;position:relative;z-index:1}
.flowtags{display:flex;flex-wrap:wrap;gap:8px;margin-top:16px;position:relative;z-index:1}
.flowtags span{background:rgba(31,95,191,.2);color:#9cc2f5;border:1px solid #2c4e7e;border-radius:999px;padding:4px 11px;font-size:.73rem;font-weight:700}
@media(min-width:981px){
  .flow .flowcard:not(:nth-child(3n+1))::before{content:"";position:absolute;left:-19px;top:56px;width:14px;height:14px;border-top:2px solid var(--blue);border-right:2px solid var(--blue);transform:rotate(45deg);opacity:.7}
}
@media(max-width:980px){.flow{grid-template-columns:1fr 1fr}}
@media(max-width:640px){.flow{grid-template-columns:1fr}}

/* ===== track-record stat band ===== */
.statband{background:#fff;border-top:1px solid var(--line);border-bottom:1px solid var(--line);padding:42px 0}
.statband-lead{text-align:center;max-width:740px;margin:0 auto 28px;color:var(--body);font-weight:600;font-size:1.02rem}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:24px}
.stat{text-align:center;position:relative}
.stat+.stat::before{content:"";position:absolute;left:-12px;top:6px;bottom:6px;width:1px;background:var(--line)}
.stat b{display:block;font-size:2.15rem;font-weight:800;color:var(--blue);line-height:1;letter-spacing:-.02em}
.stat span{display:block;margin-top:8px;font-size:.86rem;color:var(--muted);font-weight:600}
@media(max-width:700px){.stats{grid-template-columns:1fr 1fr;gap:26px 24px}.stat:nth-child(odd)::before,.stat:nth-child(3)::before{display:none}}

/* ===== hero route card (Africa -> India) ===== */
.routecard{position:absolute;z-index:3;top:6px;left:-14px;background:#fff;border-radius:16px;padding:12px 20px;box-shadow:0 18px 38px -16px rgba(15,31,58,.42);display:flex;align-items:center;gap:16px}
.rc-end{text-align:center}
.rc-end b{display:block;font-size:.92rem;color:var(--ink);line-height:1.15}
.rc-end small{font-size:.6rem;color:var(--muted);text-transform:uppercase;letter-spacing:.12em;font-weight:700}
.rc-line{position:relative;width:58px;border-top:2px dashed #b9d3f5}
.rc-line .plane{position:absolute;left:50%;top:0;transform:translate(-50%,-50%) rotate(45deg);width:30px;height:30px;border-radius:50%;background:linear-gradient(150deg,var(--blue),var(--blue-d));color:#fff;display:grid;place-items:center;font-size:.9rem;box-shadow:0 8px 16px -5px rgba(31,95,191,.85)}
@media(max-width:980px){.routecard{left:8px;top:8px}}
@media(max-width:420px){.routecard{padding:10px 14px;gap:12px}.rc-line{width:42px}}

/* topbar announcement link */
.topbar a.tb-link{color:inherit;text-decoration:none;border-bottom:1px solid rgba(255,255,255,.4);padding-bottom:1px;transition:.2s}
.topbar a.tb-link:hover{color:#fff;border-color:#fff}

/* ===== hero entrance + idle animations ===== */
@keyframes heroUp{from{opacity:0;transform:translateY(18px)}to{opacity:1;transform:translateY(0)}}
@keyframes heroPop{from{opacity:0;transform:translateY(20px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}
@keyframes heroFloat{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}
@keyframes photoIn{from{opacity:0;transform:scale(1.07)}to{opacity:1;transform:scale(1)}}
@keyframes planeBob{0%,100%{transform:translate(-50%,-50%) rotate(45deg)}50%{transform:translate(-50%,-64%) rotate(45deg)}}

.hero-copy>*{animation:heroUp .7s cubic-bezier(.2,.7,.2,1) both}
.hero-copy>.label{animation-delay:.05s}
.hero-copy>h1{animation-delay:.15s}
.hero-copy>.lead{animation-delay:.32s}
.hero-copy>.actions{animation-delay:.48s}
.hero-copy>.chips{animation-delay:.62s}

.hero-photo img{animation:photoIn 1s ease .15s both}

.routecard{animation:heroPop .7s cubic-bezier(.2,.7,.2,1) .55s both, heroFloat 6s ease-in-out 1.4s infinite}
.fl2{animation:heroPop .7s cubic-bezier(.2,.7,.2,1) .72s both, heroFloat 6.6s ease-in-out 1.7s infinite}
.fl1{animation:heroPop .7s cubic-bezier(.2,.7,.2,1) .9s both, heroFloat 7.2s ease-in-out 2.1s infinite}
.routecard .plane{animation:planeBob 2.8s ease-in-out 1.6s infinite}

@media (prefers-reduced-motion: reduce){
  .hero-copy>*,.hero-photo img,.routecard,.fl1,.fl2,.routecard .plane{animation:none !important}
}

/* ===== smoother hero motion (overrides the block above) ===== */
@keyframes heroFade{from{opacity:0}to{opacity:1}}
@keyframes floatSoft{0%,100%{transform:translate3d(0,0,0)}50%{transform:translate3d(0,-10px,0)}}
@keyframes planeBob2{0%,100%{transform:translate(-50%,-50%) rotate(45deg)}50%{transform:translate(-50%,-66%) rotate(45deg)}}
.hero-copy>*{will-change:transform,opacity}
.hero-photo img{will-change:transform,opacity;backface-visibility:hidden}
/* entrance = opacity only; idle = transform only -> no property conflict, no stutter */
.routecard,.fl1,.fl2{will-change:transform;backface-visibility:hidden}
.routecard{animation:heroFade .7s ease .5s both, floatSoft 5s ease-in-out .9s infinite}
.fl2{animation:heroFade .7s ease .7s both, floatSoft 5.6s ease-in-out 1.15s infinite}
.fl1{animation:heroFade .7s ease .9s both, floatSoft 6.2s ease-in-out 1.45s infinite}
.routecard .plane{animation:planeBob2 3s ease-in-out 1.5s infinite}
@media (prefers-reduced-motion: reduce){
  .routecard,.fl1,.fl2,.hero-copy>*,.hero-photo img,.routecard .plane{animation:none !important}
}

/* ===== portal mock: progress bar fill + sheen ===== */
.mock-prog i{position:relative;overflow:hidden}
@keyframes fillbar{from{width:0}to{width:72%}}
.mock.in .mock-prog i{animation:fillbar 1.5s cubic-bezier(.2,.8,.2,1) both}
.mock-prog i::after{content:"";position:absolute;inset:0;background:linear-gradient(100deg,transparent 25%,rgba(255,255,255,.55) 50%,transparent 75%);transform:translateX(-120%);animation:barsheen 2.6s ease-in-out 1.8s infinite}
@keyframes barsheen{0%{transform:translateX(-120%)}55%,100%{transform:translateX(240%)}}
@media (prefers-reduced-motion: reduce){
  .mock.in .mock-prog i{animation:none}
  .mock-prog i::after{display:none}
}

/* reCAPTCHA: hide badge (disclosure shown in footer) + legal line */
.grecaptcha-badge{visibility:hidden}
.site-footer .legal{font-size:.72rem;color:#6f82a0;margin:14px 0 0;line-height:1.5}
.site-footer .legal a{color:#9cb3d4;text-decoration:underline}
