/* AI & Machine Learning page (ai-ml.html). Builds on assets/css/site.css. */

/* ---------- hero ---------- */
.aihero{position:relative;padding:calc(var(--hh) + clamp(28px,4vw,56px)) 0 clamp(30px,4vw,56px);overflow:hidden}
.aihero::before{content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(45% 60% at 74% 48%,rgba(34,211,238,.16),transparent 70%),radial-gradient(40% 50% at 86% 70%,rgba(139,92,246,.18),transparent 70%)}
.aig{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3vw,48px);align-items:center;min-height:min(600px,calc(100vh - var(--hh) - 60px))}
.ait h1{font-size:clamp(38px,4.7vw,66px);line-height:1.04;letter-spacing:-1.8px;font-weight:800;margin-top:18px;color:#F2F8FF}
.ait .lede{color:#B4C6E4;font-size:clamp(16px,1.25vw,19px);line-height:1.65;margin-top:18px;max-width:590px}
.ait .hb{margin-top:28px}
.ait .pill{background:rgba(11,23,52,.8);border-color:rgba(34,211,238,.35);color:#67E8F9}
.aitags{list-style:none;padding:0;margin:26px 0 0;display:flex;flex-wrap:wrap;gap:10px}
.aitags li{display:inline-flex;align-items:center;gap:8px;padding:8px 14px;border-radius:999px;background:rgba(10,22,48,.7);border:1px solid rgba(103,232,249,.22);color:#D7E3F7;font-size:13.5px;font-weight:600}
.aitags svg{color:#22D3EE}

.brain-stage{position:relative;aspect-ratio:1/1;width:100%;max-width:640px;justify-self:end}
.brain-stage canvas{position:absolute;inset:0;width:100%!important;height:100%!important;display:block}
.bs-glow{position:absolute;inset:12%;border-radius:50%;background:radial-gradient(closest-side,rgba(34,211,238,.28),rgba(139,92,246,.16) 55%,transparent);filter:blur(30px);animation:bsg 6s ease-in-out infinite}
@keyframes bsg{0%,100%{opacity:.75;transform:scale(1)}50%{opacity:1;transform:scale(1.06)}}
.bs-fallback{position:absolute;inset:8%;width:84%;height:84%;object-fit:contain;border-radius:28px;animation:bsf 6s ease-in-out infinite;transition:opacity .6s}
@keyframes bsf{0%,100%{transform:translateY(0)}50%{transform:translateY(-10px)}}
.brain-stage.webgl .bs-fallback{opacity:0;pointer-events:none}
.bs-hud span{position:absolute;font:600 11.5px var(--fm);letter-spacing:.8px;text-transform:uppercase;color:#A5F3FC;padding:6px 10px;border-radius:8px;background:rgba(6,15,38,.72);border:1px solid rgba(34,211,238,.32);backdrop-filter:blur(6px);opacity:0;transform:translateY(8px);transition:opacity .8s,transform .8s}
.brain-stage.webgl .bs-hud span{opacity:1;transform:none}
.bs-hud .h1{left:2%;top:16%;transition-delay:.4s}.bs-hud .h2{right:4%;top:40%;color:#DDD6FE;border-color:rgba(167,139,250,.4);transition-delay:.7s}.bs-hud .h3{left:4%;bottom:30%;transition-delay:1s}
.bs-hud .h2::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:#A78BFA;margin-right:7px;vertical-align:1px;animation:blink 1.2s infinite}
@keyframes blink{50%{opacity:.2}}

/* ---------- learning journey ---------- */
.jwrap{position:relative;max-width:1100px;margin:0 auto}
.jpath{position:absolute;inset:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.jpath path{fill:none;stroke-linecap:round}
.jp-base{stroke:rgba(103,232,249,.16);stroke-width:3;stroke-dasharray:2 10}
.jp-prog{stroke:url(#jg);stroke-width:3.5}
.jp-glow{stroke:url(#jg);stroke-width:10;opacity:.45;filter:url(#jglow)}
.jp-dot{fill:#fff;stroke:#22D3EE;stroke-width:3;filter:drop-shadow(0 0 8px #22D3EE)}
.journey{list-style:none;margin:0;padding:0;display:grid;gap:clamp(18px,2.4vw,34px);position:relative}
.jstage{display:grid;grid-template-columns:1fr 96px 1fr;align-items:center}
.jstage.s-l .jcard{grid-column:1;grid-row:1}.jstage.s-l .jnode{grid-column:2;grid-row:1}
.jstage.s-r .jcard{grid-column:3;grid-row:1}.jstage.s-r .jnode{grid-column:2;grid-row:1}
.jnode{justify-self:center;position:relative;z-index:2;width:64px;height:64px;border-radius:50%;display:grid;place-items:center;background:#071330;border:2px solid rgba(103,232,249,.25);color:#5B7199;transition:all .6s var(--ease)}
.jnode span{display:grid;place-items:center}
.jstage.lit .jnode{color:#fff;border-color:var(--sc);background:radial-gradient(circle at 35% 30%,color-mix(in srgb,var(--sc) 55%,#071330),#071330);box-shadow:0 0 0 6px color-mix(in srgb,var(--sc) 14%,transparent),0 0 32px var(--sc)}
.jcard{position:relative;padding:24px 26px;border-radius:22px;background:linear-gradient(160deg,rgba(14,30,64,.94),rgba(7,16,38,.96));border:1px solid rgba(103,232,249,.14);
  box-shadow:0 24px 50px -30px #000;opacity:.35;transform:translateY(24px) scale(.97);transition:opacity .7s var(--ease),transform .7s var(--ease),border-color .3s,box-shadow .3s}
.jstage.lit .jcard{opacity:1;transform:none}
.jcard::before{content:"";position:absolute;top:50%;width:34px;height:2px;background:linear-gradient(90deg,transparent,var(--sc));opacity:0;transition:opacity .6s}
.s-l .jcard::before{right:-34px}.s-r .jcard::before{left:-34px;transform:scaleX(-1)}
.jstage.lit .jcard::before{opacity:1}
.jcard:hover,.jstage.is-open .jcard{border-color:color-mix(in srgb,var(--sc) 70%,transparent);box-shadow:0 0 0 1px color-mix(in srgb,var(--sc) 30%,transparent),0 0 40px -10px var(--sc),0 30px 60px -30px #000}
.jhead{display:flex;align-items:center;justify-content:space-between}
.jnum{font:700 12px var(--fm);letter-spacing:1.2px;text-transform:uppercase;color:var(--sc)}
.jico{width:40px;height:40px;border-radius:12px;display:grid;place-items:center;color:var(--sc);background:color-mix(in srgb,var(--sc) 12%,transparent);box-shadow:inset 0 0 0 1px color-mix(in srgb,var(--sc) 40%,transparent)}
.jcard h3{font-size:clamp(19px,1.7vw,22px);margin:12px 0 6px;color:#F2F8FF}
.jcard>p{color:#9FB3D6;font-size:15px}
.jtopics{list-style:none;padding:0;margin:14px 0 0;display:grid;gap:8px}
.jtopics li{display:flex;gap:9px;align-items:flex-start;color:#D7E3F7;font-size:14.5px}
.jtopics svg{color:var(--sc);margin-top:3px;flex-shrink:0}
.jmore{max-height:0;overflow:hidden;margin-top:0;transition:max-height .5s var(--ease),margin-top .3s}
.jstage.is-open .jmore{max-height:260px;margin-top:8px}
.jtoggle{margin-top:14px;display:inline-flex;align-items:center;gap:8px;background:none;border:0;padding:0;color:var(--sc);font:600 14px var(--fb);cursor:pointer}
.jtoggle svg{transition:transform .3s}
.jstage.is-open .jtoggle svg{transform:rotate(90deg)}

/* ---------- tools ---------- */
.tools{display:grid;grid-template-columns:repeat(auto-fill,minmax(180px,1fr));gap:14px;max-width:1080px;margin:0 auto}
.tool{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto auto;column-gap:12px;align-items:center;padding:16px 18px;border-radius:16px;background:rgba(10,22,48,.88);border:1px solid rgba(103,232,249,.16);transition:all .35s var(--ease)}
.tool:hover{transform:translateY(-4px);border-color:#22D3EE;box-shadow:0 0 26px -8px rgba(34,211,238,.7)}
.tmono{grid-row:1/3;width:44px;height:44px;border-radius:12px;display:grid;place-items:center;font:700 14px var(--fm);color:#fff;background:linear-gradient(135deg,#0E7490,#6D28D9);box-shadow:0 8px 20px -8px rgba(34,211,238,.7)}
.tool b{color:#F2F8FF;font-size:15px}.tool small{color:#8FA3C8;font-size:12.5px}

/* ---------- FAQ ---------- */
.faqs{max-width:860px;margin:0 auto;display:grid;gap:12px}
.faq{border-radius:16px;background:rgba(10,22,48,.88);border:1px solid rgba(103,232,249,.16);transition:border-color .3s,box-shadow .3s}
.faq[open]{border-color:rgba(103,232,249,.5);box-shadow:0 0 30px -14px rgba(34,211,238,.7)}
.faq summary{list-style:none;cursor:pointer;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:20px 22px;color:#F2F8FF;font-weight:700;font-size:16px}
.faq summary::-webkit-details-marker{display:none}
.faq summary:focus-visible{outline:2px solid #22D3EE;outline-offset:2px;border-radius:16px}
.faq summary i{position:relative;width:26px;height:26px;flex-shrink:0;border-radius:50%;background:rgba(34,211,238,.1);box-shadow:inset 0 0 0 1px rgba(34,211,238,.4)}
.faq summary i::before,.faq summary i::after{content:"";position:absolute;left:50%;top:50%;width:11px;height:2px;margin:-1px 0 0 -5.5px;background:#67E8F9;border-radius:2px;transition:transform .3s}
.faq summary i::after{transform:rotate(90deg)}
.faq[open] summary i::after{transform:rotate(0)}
.fa{padding:0 22px 20px;color:#B4C6E4;line-height:1.7}

/* ---------- responsive ---------- */
@media (max-width:900px){
  .aig{grid-template-columns:1fr;min-height:0}
  .brain-stage{justify-self:center;max-width:520px;margin-top:6px}
  .jstage,.jstage.s-l,.jstage.s-r{grid-template-columns:64px 1fr;gap:16px}
  .jstage .jcard,.jstage.s-l .jcard,.jstage.s-r .jcard{grid-column:2}
  .jstage .jnode,.jstage.s-l .jnode,.jstage.s-r .jnode{grid-column:1;width:52px;height:52px;align-self:start;margin-top:18px}
  .jcard::before{display:none}
}
@media (max-width:640px){
  .tools{grid-template-columns:1fr 1fr}
  .tool{grid-template-columns:1fr;grid-template-rows:auto;row-gap:8px;text-align:left}.tmono{grid-row:auto}
  .jstage,.jstage.s-l,.jstage.s-r{grid-template-columns:44px 1fr;gap:12px}
  .jnode,.jstage .jnode{width:44px!important;height:44px!important}
  .jnode svg{width:20px;height:20px}
  .jcard{padding:20px}
  .bs-hud{display:none}
}
@media (prefers-reduced-motion:reduce){.jcard{opacity:1;transform:none}.bs-glow,.bs-fallback{animation:none}}

/* ---------- compact learning journey ---------- */
#journey .head{margin-bottom:clamp(20px,2.4vw,32px)}
.journey{gap:clamp(14px,1.6vw,22px)}
@media (min-width:901px){
  /* alternating cards interlock instead of each taking a full empty row */
  .jstage+.jstage{margin-top:-120px}
}
.jcard{opacity:.6;transform:translateY(14px) scale(.985)}
.jstage:first-child .jcard{opacity:1;transform:none}
.jstage:first-child .jnode{color:#fff;border-color:var(--sc);box-shadow:0 0 0 6px color-mix(in srgb,var(--sc) 14%,transparent),0 0 32px var(--sc)}


/* ---------- tools: official logos ---------- */
.tool{grid-template-columns:auto 1fr;column-gap:14px;padding:16px 18px}
.tlogo{grid-row:1/3;width:52px;height:52px;border-radius:14px;display:grid;place-items:center;
  background:linear-gradient(160deg,#FFFFFF,#E6EEFB);
  box-shadow:0 0 0 1px rgba(103,232,249,.35),0 10px 22px -10px rgba(34,211,238,.65),inset 0 -2px 0 rgba(11,29,58,.08);
  transition:transform .35s var(--ease),box-shadow .35s}
.tlogo svg{width:30px;height:30px;fill:var(--bc)}
.tool:hover .tlogo{transform:translateY(-2px) scale(1.05);box-shadow:0 0 0 1px #22D3EE,0 0 26px -4px rgba(34,211,238,.8)}
@media (max-width:640px){.tlogo{grid-row:auto;width:46px;height:46px}.tlogo svg{width:26px;height:26px}}
.tool{grid-template-rows:1fr 1fr;align-items:center;min-height:92px}
.tool b{align-self:end;line-height:1.25}
.tool small{align-self:start;margin-top:3px;line-height:1.45}
@media (max-width:640px){
  .tool{grid-template-columns:1fr;grid-template-rows:auto auto auto;row-gap:0;min-height:0;padding:16px;align-content:start}
  .tool .tlogo{grid-row:auto;margin-bottom:12px}
  .tool b,.tool small{align-self:start;text-align:left}
}


/* the flat SVG is only a fallback: hidden while the 3D brain loads, shown if it has not started after 10s */
.brain-stage:not(.webgl) .bs-fallback{opacity:0;animation:bsf 6s ease-in-out infinite,fbShow .4s 10s forwards}
@keyframes fbShow{to{opacity:1}}
