/* ============================================================
   SHARED SITE STYLES — loaded by every page after its inline <style>.
   Edit here once instead of in each HTML file.
   ============================================================ */

/* Fix the Fraunces "F" glyph: serif headings draw only F/f from Times New Roman
   (unicode-range), everything else still comes from Fraunces. Replaces the old
   script that wrapped each F in a <span class="tnr-f">. */
@font-face{font-family:'GD F';font-style:normal;font-weight:100 500;unicode-range:U+0046,U+0066;
  src:local('Times New Roman'),local('TimesNewRomanPSMT'),local('Times');}
@font-face{font-family:'GD F';font-style:normal;font-weight:600 900;unicode-range:U+0046,U+0066;
  src:local('Times New Roman Bold'),local('TimesNewRomanPS-BoldMT'),local('Times Bold');}
@font-face{font-family:'GD F';font-style:italic;font-weight:100 500;unicode-range:U+0046,U+0066;
  src:local('Times New Roman Italic'),local('TimesNewRomanPS-ItalicMT'),local('Times Italic');}
@font-face{font-family:'GD F';font-style:italic;font-weight:600 900;unicode-range:U+0046,U+0066;
  src:local('Times New Roman Bold Italic'),local('TimesNewRomanPS-BoldItalicMT'),local('Times Bold Italic');}
h1,h2,h3,h4,.logo,.footer-logo,.mission-visual .quote{font-family:'GD F',var(--serif);}
/* The FAQ section keeps its original Fraunces styling, except on the FAQ page itself */
body:not(.f-all) #faq h1,body:not(.f-all) #faq h2,body:not(.f-all) #faq h3,body:not(.f-all) #faq h4{font-family:var(--serif);}
.f-all .faq-q{font-family:'GD F',var(--serif);}

/* Programs menu: "Individual Courses" group label */
.dropdown-label{display:block;margin:6px 0 2px;padding:12px 14px 4px;border-top:1px solid rgba(42,62,82,0.1);
  font-size:.7rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--pink);}
.dropdown-label ~ a[href="program-finder.html"]{margin-top:6px;border-top:1px solid rgba(42,62,82,0.1);border-radius:0;padding-top:12px;}
@media (max-width:1099px){
  .nav-dropdown.open .dropdown-menu{max-height:900px;}
  .dropdown-label{border-top:none;padding-left:0;}
}

/* Individual course pages: facts card in the hero */
.course-facts{background:rgba(255,255,255,.08);border:1px solid rgba(255,255,255,.18);border-radius:var(--radius);padding:30px 32px;color:#fff;}
.course-facts .badge{display:inline-block;background:rgba(255,255,255,0.14);border:1px solid rgba(255,255,255,0.3);padding:7px 14px;border-radius:100px;
  font-size:0.74rem;font-weight:700;letter-spacing:0.08em;text-transform:uppercase;}
.course-facts dl{margin:22px 0 0;display:grid;gap:18px;}
.course-facts dt{font-size:.74rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase;color:var(--orange);}
.course-facts dd{margin:4px 0 0;font-size:1rem;line-height:1.5;color:#e7edf2;}

  /* ================= ANIMATED ICONS (site-wide) ================= */
  .ia-g{display:inline-block;line-height:1;transform-origin:50% 60%;}
  /* entrance: icons pop in when scrolled into view */
  .ia-pre{opacity:0;scale:.3;rotate:-20deg;}
  .ia-pop{opacity:1;scale:1;rotate:0deg;transition:opacity .35s ease, scale .55s cubic-bezier(.34,1.8,.5,1), rotate .55s cubic-bezier(.34,1.8,.5,1);}

  /* themed animations, played on hover/tap and now and then on their own */
  .ia-go[data-anim="wiggle"]  {animation:iaWiggle .7s ease;}
  .ia-go[data-anim="ring"]    {animation:iaRing .8s ease;}
  .ia-go[data-anim="bounce"]  {animation:iaBounce .7s cubic-bezier(.3,1.6,.5,1);}
  .ia-go[data-anim="flip"]    {animation:iaFlip .7s ease;}
  .ia-go[data-anim="swipe"]   {animation:iaSwipe .7s ease;}
  .ia-go[data-anim="toss"]    {animation:iaToss .8s ease;}
  .ia-go[data-anim="launch"]  {animation:iaLaunch .9s ease;}
  .ia-go[data-anim="wave"]    {animation:iaWave .9s ease;transform-origin:75% 85%;}
  .ia-go[data-anim="grow"]    {animation:iaGrow .8s ease;transform-origin:50% 100%;}
  .ia-go[data-anim="twinkle"] {animation:iaTwinkle .8s ease;}
  .ia-go[data-anim="squeeze"] {animation:iaSqueeze .6s ease;transform-origin:50% 100%;}
  .ia-go[data-anim="jelly"]   {animation:iaJelly .7s ease;}
  .ia-go[data-anim="fly"]     {animation:iaFly .9s ease;}
  .ia-go[data-anim="write"]   {animation:iaWrite .8s ease;}
  .ia-go[data-anim="swing"]   {animation:iaSwing .9s ease;transform-origin:50% 0;}
  .ia-go[data-anim="heart"]   {animation:iaHeart .8s ease;}
  .ia-go[data-anim="spin"]    {animation:iaSpin .7s cubic-bezier(.3,1.4,.5,1);}
  .ia-go[data-anim="steam"]   {animation:iaSteam .9s ease;}

  @keyframes iaWiggle{0%,100%{rotate:0deg}20%{rotate:-14deg}40%{rotate:12deg}60%{rotate:-8deg}80%{rotate:5deg}}
  @keyframes iaRing{0%,100%{rotate:0deg}10%,30%,50%,70%{rotate:-18deg}20%,40%,60%,80%{rotate:18deg}}
  @keyframes iaBounce{0%,100%{translate:0 0;scale:1 1}30%{translate:0 -12px;scale:.95 1.08}55%{translate:0 0;scale:1.12 .88}75%{translate:0 -4px;scale:1 1}}
  @keyframes iaFlip{0%{transform:perspective(200px) rotateY(0)}100%{transform:perspective(200px) rotateY(360deg)}}
  @keyframes iaSwipe{0%,100%{translate:0 0}30%{translate:-8px 0;rotate:-6deg}60%{translate:9px 0;rotate:5deg}}
  @keyframes iaToss{0%,100%{translate:0 0;rotate:0deg}40%{translate:0 -16px;rotate:-25deg}70%{translate:0 2px;rotate:8deg}}
  @keyframes iaLaunch{0%{translate:0 0}35%{translate:6px -26px;opacity:0}36%{translate:-6px 18px;opacity:0}70%{opacity:1}100%{translate:0 0}}
  @keyframes iaWave{0%,100%{rotate:0deg}15%,45%{rotate:22deg}30%,60%{rotate:-12deg}}
  @keyframes iaGrow{0%,100%{scale:1}40%{scale:.7 1.35}70%{scale:1.15 .9}}
  @keyframes iaTwinkle{0%{rotate:0deg;scale:1}50%{rotate:180deg;scale:1.4}100%{rotate:360deg;scale:1}}
  @keyframes iaSqueeze{0%,100%{scale:1}30%{scale:1.25 .75}60%{scale:.85 1.2}}
  @keyframes iaJelly{0%,100%{scale:1}25%{scale:1.25 .8}50%{scale:.85 1.15}75%{scale:1.08 .95}}
  @keyframes iaFly{0%,100%{translate:0 0;opacity:1}40%{translate:14px -14px;opacity:0}41%{translate:-14px 10px;opacity:0}75%{opacity:1}}
  @keyframes iaWrite{0%,100%{translate:0 0}15%{translate:-4px 2px}30%{translate:3px -2px}45%{translate:-3px 2px}60%{translate:4px -1px}75%{translate:-2px 1px}}
  @keyframes iaSwing{0%,100%{rotate:0deg}20%{rotate:16deg}40%{rotate:-12deg}60%{rotate:7deg}80%{rotate:-3deg}}
  @keyframes iaHeart{0%,100%{scale:1}15%{scale:1.3}30%{scale:1}45%{scale:1.2}}
  @keyframes iaSpin{0%{rotate:0deg}100%{rotate:360deg}}
  @keyframes iaSteam{0%,100%{translate:0 0;scale:1}50%{translate:0 -6px;scale:1.1}}

  /* stars twinkle one after another */
  .ia-star{display:inline-block;}
  .ia-stars-go .ia-star{animation:iaStar .6s ease both;}
  @keyframes iaStar{0%{scale:1}40%{scale:1.6;rotate:20deg;color:#eea98f}100%{scale:1;rotate:0deg}}

  /* check marks: pop in, then a hop when you hover the line */
  li:hover > .check-ico, .result-list li:hover::before{animation:iaBounce .6s cubic-bezier(.3,1.6,.5,1);}
  .result-list li::before{transition:scale .3s;}

  /* FAQ plus, dropdown caret, arrows, social, logo */
  .faq-q:hover .plus{scale:1.18;}
  .dropdown-toggle:hover .dropdown-caret{animation:iaCaret .8s ease infinite;}
  @keyframes iaCaret{0%,100%{translate:0 0}50%{translate:0 3px}}
  .ia-arrow{display:inline-block;}
  a:hover .ia-arrow, button:hover .ia-arrow{animation:iaArrow .7s ease infinite;}
  @keyframes iaArrow{0%,100%{translate:0 0}50%{translate:5px 0}}
  .footer-social a svg{transition:translate .25s cubic-bezier(.3,1.6,.5,1), rotate .25s;}
  .footer-social a:hover svg{translate:0 -4px;rotate:-10deg;}
  .logo:hover .logo-icon{animation:iaLogo .9s cubic-bezier(.3,1.4,.5,1);}
  @keyframes iaLogo{0%{rotate:0deg;scale:1}50%{rotate:-12deg;scale:1.12}75%{rotate:6deg}100%{rotate:0deg;scale:1}}
  .avatar{transition:scale .3s cubic-bezier(.3,1.6,.5,1);}
  .t-card:hover .avatar{scale:1.2;}
  .tool-opt:hover .ico{animation:iaBounce .6s cubic-bezier(.3,1.6,.5,1);}
  .tool-opt.selected .ico{animation:iaJelly .6s ease;}

  /* badges get a shimmer sweep */
  .mission-visual .badge{background-image:linear-gradient(110deg,transparent 35%,rgba(255,255,255,.45) 50%,transparent 65%);background-size:250% 100%;background-repeat:no-repeat;animation:iaShimmer 4.5s ease-in-out infinite;}
  @keyframes iaShimmer{0%,60%{background-position:130% 0}100%{background-position:-130% 0}}

  @media (prefers-reduced-motion:reduce){
    .ia-pre{opacity:1;scale:1;rotate:0deg;}
    .ia-go,.ia-stars-go .ia-star,.mission-visual .badge,.dropdown-caret,.ia-arrow,.logo-icon,.check-ico,.tool-opt .ico{animation:none !important;}
  }

  /* ================= MAGIC LAYER (site-wide) ================= */
  body{animation:mdEnter .7s ease both;}
  @keyframes mdEnter{from{opacity:0}to{opacity:1}}
  body.md-leave{transition:opacity .32s ease;opacity:0;}

  /* ---- Magic tooltip ---- */
  .md-tip{position:fixed;left:0;top:0;z-index:5000;pointer-events:none;max-width:280px;padding:12px 16px 13px;border-radius:16px;
    color:#fff;background:rgba(30,42,58,.86);backdrop-filter:blur(10px) saturate(1.4);-webkit-backdrop-filter:blur(10px) saturate(1.4);
    box-shadow:0 18px 40px -14px rgba(20,28,40,.65), 0 0 22px -4px rgba(238,169,143,.55);
    opacity:0;transform:translate(var(--tx),var(--ty)) scale(.6) rotateX(35deg);transform-origin:var(--ox,50%) var(--oy,100%);
    transition:opacity .22s ease, transform .45s cubic-bezier(.2,1.5,.4,1);}
  .md-tip.show{opacity:1;transform:translate(var(--tx),var(--ty)) scale(1) rotateX(0);}
  .md-tip::before{content:"";position:absolute;inset:-1.5px;border-radius:17px;padding:1.5px;z-index:-1;
    background:conic-gradient(from var(--ang,0deg),#cb6d7a,#eea98f,#f6d6a8,#ffffff,#6e5268,#cb6d7a);
    -webkit-mask:linear-gradient(#000 0 0) content-box,linear-gradient(#000 0 0);-webkit-mask-composite:xor;mask-composite:exclude;
    animation:mdSpin 3s linear infinite;}
  @property --ang{syntax:'<angle>';initial-value:0deg;inherits:false;}
  @keyframes mdSpin{to{--ang:360deg}}
  .md-tip::after{content:"";position:absolute;left:var(--ax,50%);width:12px;height:12px;margin-left:-6px;background:rgba(30,42,58,.86);transform:rotate(45deg);border-radius:2px;}
  .md-tip[data-place="top"]::after{bottom:-6px;}
  .md-tip[data-place="bottom"]::after{top:-6px;}
  .md-tip b{display:block;font-family:var(--sans,'Manrope',sans-serif);font-size:.95rem;font-weight:800;letter-spacing:.01em;}
  .md-tip small{display:block;margin-top:3px;font-size:.78rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;
    background:linear-gradient(90deg,#eea98f,#f6d6a8,#cb6d7a,#eea98f);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:mdGlint 2.4s linear infinite;}
  @keyframes mdGlint{to{background-position:-200% 0}}
  .md-ch{display:inline-block;white-space:pre;opacity:0;filter:blur(6px);transform:translateY(6px) scale(1.3);animation:mdCh .5s cubic-bezier(.2,1.2,.4,1) forwards;}
  @keyframes mdCh{to{opacity:1;filter:blur(0);transform:none}}

  /* ---- Sparkles (cursor wand, clicks, tooltips, headings) ---- */
  .md-spark{position:fixed;left:0;top:0;width:var(--s,10px);height:var(--s,10px);pointer-events:none;z-index:5001;color:var(--c,#f6d6a8);
    animation:mdSpark var(--d,.8s) cubic-bezier(.2,.8,.3,1) forwards;}
  .md-spark::before{content:"";position:absolute;inset:0;background:currentColor;filter:drop-shadow(0 0 4px currentColor);
    clip-path:polygon(50% 0,61% 39%,100% 50%,61% 61%,50% 100%,39% 61%,0 50%,39% 39%);}
  @keyframes mdSpark{0%{opacity:1;transform:translate(var(--x0),var(--y0)) scale(.2) rotate(0)}
    25%{opacity:1;transform:translate(calc(var(--x0) + var(--dx)*.35),calc(var(--y0) + var(--dy)*.35)) scale(1) rotate(60deg)}
    100%{opacity:0;transform:translate(calc(var(--x0) + var(--dx)),calc(var(--y0) + var(--dy))) scale(.1) rotate(200deg)}}
  .md-ring{position:fixed;left:0;top:0;width:10px;height:10px;margin:-5px 0 0 -5px;border-radius:50%;pointer-events:none;z-index:5001;
    border:2px solid #f6d6a8;box-shadow:0 0 12px #eea98f;animation:mdRing .6s ease-out forwards;}
  @keyframes mdRing{from{opacity:1;transform:translate(var(--x0),var(--y0)) scale(.3)}to{opacity:0;transform:translate(var(--x0),var(--y0)) scale(6)}}

  /* ---- Headings materialise when scrolled into view ---- */
  .md-head{opacity:0;filter:blur(10px);letter-spacing:.12em;transition:opacity .9s ease, filter .9s ease, letter-spacing 1.1s cubic-bezier(.2,.8,.2,1);}
  .md-head.md-on{opacity:1;filter:blur(0);letter-spacing:normal;}

  /* ---- Floating magic dust in dark sections ---- */
  .md-dust{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0;}
  .md-host > .wrap{position:relative;z-index:1;}
  .md-mote{position:absolute;bottom:-10px;width:var(--s);height:var(--s);border-radius:50%;background:radial-gradient(circle,#fff 0,rgba(246,214,168,.9) 35%,rgba(238,169,143,0) 70%);
    opacity:0;animation:mdRise var(--d) linear var(--delay) infinite;}
  @keyframes mdRise{0%{opacity:0;transform:translate(0,0)}10%{opacity:.9}50%{transform:translate(var(--sway),-55vh)}90%{opacity:.6}100%{opacity:0;transform:translate(0,-110vh)}}

  /* ---- Buttons: a glint sweeps across now and then ---- */
  .btn-primary::after{content:"";position:absolute;top:0;left:-60%;width:40%;height:100%;pointer-events:none;
    background:linear-gradient(100deg,transparent,rgba(255,255,255,.65),transparent);transform:skewX(-20deg);animation:mdBtn 5s ease-in-out infinite;}
  .btn-primary{position:relative;overflow:hidden;}
  @keyframes mdBtn{0%,70%{left:-60%}100%{left:130%}}

  /* hand menu uses the magic tooltip instead of its old label */
  .hm-label{display:none !important;}

  @media (prefers-reduced-motion:reduce){
    body{animation:none;}
    .md-head{opacity:1;filter:none;letter-spacing:normal;transition:none;}
    .md-dust,.md-spark,.md-ring{display:none !important;}
    .btn-primary::after,.md-tip::before,.md-tip small{animation:none;}
    .md-ch{animation:none;opacity:1;filter:none;transform:none;}
  }

/* ================= PROMO POP-UP (site-wide, see site.js) ================= */
.promo-pop{position:fixed;inset:0;z-index:100000;display:flex;align-items:center;justify-content:center;padding:20px;
  background:rgba(16,24,36,.66);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);opacity:0;transition:opacity .3s ease;}
.promo-pop[hidden]{display:none;}
.promo-pop.show{opacity:1;}
.promo-card{position:relative;display:flex;flex-direction:column;width:min(440px,100%);max-height:calc(100vh - 40px);max-height:calc(100dvh - 40px);
  background:#1f3046;border-radius:20px;overflow:hidden;box-shadow:0 40px 80px -30px rgba(0,0,0,.75);
  transform:translateY(18px) scale(.96);transition:transform .4s cubic-bezier(.2,.9,.3,1.15);}
.promo-pop.show .promo-card{transform:none;}
.promo-img{display:flex;justify-content:center;min-height:0;flex:1 1 auto;}
.promo-img img{display:block;width:100%;height:auto;max-height:100%;object-fit:contain;}
.promo-actions{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;padding:14px 14px 16px;flex:none;}
.promo-actions .btn{padding:12px 20px;font-size:.86rem;}
.promo-actions .btn-ghost{color:#fff;border:1.5px solid rgba(255,255,255,.45);}
.promo-close{position:absolute;top:10px;right:10px;z-index:1;width:38px;height:38px;border-radius:50%;border:none;cursor:pointer;
  background:rgba(255,255,255,.92);color:#2a3e52;font-size:1.5rem;line-height:1;box-shadow:0 6px 16px -6px rgba(0,0,0,.5);}
.promo-close:hover{background:#fff;}
.promo-sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;}
html.promo-open{overflow:hidden;}
@media (prefers-reduced-motion:reduce){.promo-pop,.promo-card{transition:none;}}