@import url('https://fonts.googleapis.com/css2?family=DM+Mono:wght@400;500&family=Inter:wght@400;500;600;700;800&family=Orbitron:wght@500;600;700;800&display=swap');

:root{
  --lab-space:#07131f;
  --lab-panel:#0d2130;
  --lab-panel-soft:#102a3c;
  --lab-ink:#eaf3f8;
  --lab-muted:#92aab9;
  --lab-line:rgba(163,211,224,.16);
  --lab-cyan:#25d7d0;
  --lab-violet:#846cff;
  --lab-amber:#ffb547;
  --lab-red:#ff6e7f;
  --lab-green:#55d796;
}

*::selection{background:rgba(37,215,208,.3);color:var(--lab-ink)}
:focus-visible{outline:2px solid var(--lab-cyan)!important;outline-offset:3px}
.meteor-field{position:fixed;inset:0;z-index:0;overflow:hidden;pointer-events:none}.meteor{position:absolute;top:var(--top);left:var(--left);width:var(--length);height:1px;border-radius:999px;opacity:0;transform:rotate(36deg);transform-origin:left center;animation:lab-meteor var(--duration) linear var(--delay) infinite;will-change:transform,opacity}.meteor::before{content:"";position:absolute;right:0;top:50%;width:5px;height:5px;transform:translateY(-50%);border-radius:50%;background:currentColor;box-shadow:0 0 12px currentColor}.meteor--cyan{color:#6cf4ee;background:linear-gradient(90deg,transparent,currentColor)}.meteor--violet{color:#b3a6ff;background:linear-gradient(90deg,transparent,currentColor)}.meteor--amber{color:#ffd180;background:linear-gradient(90deg,transparent,currentColor)}.meteor-field--course{opacity:.42}.meteor-field--course .meteor{filter:blur(.15px)}

/* Portal: an unhurried map of four learning stations. */
body.future-portal{background:var(--lab-space);color:var(--lab-ink);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}
.future-portal .ambient-glow{background:radial-gradient(circle at 12% 20%,rgba(37,215,208,.11),transparent 30%),radial-gradient(circle at 84% 16%,rgba(132,108,255,.13),transparent 29%),radial-gradient(circle at 70% 80%,rgba(255,181,71,.06),transparent 32%);animation:lab-drift 16s ease-in-out infinite alternate}
.future-portal .grid-overlay{opacity:.7;background-size:48px 48px;background-image:linear-gradient(rgba(137,210,228,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(137,210,228,.045) 1px,transparent 1px)}
.future-portal #particle-canvas{opacity:.38}
.future-portal .cursor-glow{background:radial-gradient(circle,rgba(37,215,208,.1),transparent 68%)}
.future-portal .navbar{height:76px;padding:0 clamp(20px,5vw,72px);background:rgba(7,19,31,.72);border-bottom-color:var(--lab-line);box-shadow:none}
.future-portal .navbar.scrolled{background:rgba(7,19,31,.92);box-shadow:0 12px 36px rgba(0,0,0,.2)}
.future-portal .nav-brand{font-family:Orbitron,Inter,sans-serif;font-size:15px;letter-spacing:.06em}
.future-portal .nav-brand .logo-icon{width:39px;height:39px;border-radius:12px;background:conic-gradient(from 210deg,var(--lab-violet),var(--lab-cyan),var(--lab-violet));box-shadow:0 0 0 1px rgba(255,255,255,.12),0 0 28px rgba(37,215,208,.2)}
.future-portal .nav-brand .logo-dot{background:var(--lab-cyan);box-shadow:0 0 12px var(--lab-cyan)}
.future-portal .nav-links{gap:clamp(13px,2.2vw,34px)}
.future-portal .nav-links a{color:var(--lab-muted);font-size:12px;letter-spacing:.08em}
.future-portal .nav-links a:hover{color:var(--lab-ink)}
.future-portal .nav-links a::after{height:1px;background:var(--lab-cyan)}
.future-portal .hero{min-height:auto;padding:156px 24px 56px;isolation:isolate;overflow:hidden}
.future-portal .hero-badge{padding:7px 14px;border-color:rgba(37,215,208,.3);border-radius:6px;background:rgba(37,215,208,.06);color:#a9f6ef;font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.11em}
.future-portal .hero-badge .pulse-dot{width:6px;height:6px;background:var(--lab-cyan);box-shadow:0 0 12px var(--lab-cyan)}
.future-portal .hero-title{font-family:Orbitron,"Microsoft YaHei",sans-serif;font-size:clamp(38px,6vw,76px);letter-spacing:-.055em;line-height:1.13;margin-bottom:14px}
.future-portal .hero-title .gradient-text{background:linear-gradient(110deg,#ecfeff 0%,#7ee7e2 42%,#a596ff 72%,#effbff 100%);background-size:180% 100%;-webkit-background-clip:text;background-clip:text;animation:lab-spectrum 11s ease infinite}
.future-portal .hero-title .accent-line{font-family:Inter,"PingFang SC",sans-serif;color:var(--lab-muted);font-size:clamp(12px,1.55vw,17px);letter-spacing:.19em;margin-top:15px;text-transform:uppercase}
.future-portal .hero-sub{max-width:620px;color:#a8c0ce;font-size:15px;line-height:1.85;margin-bottom:27px}
.future-portal .hero>*:not(.hero-orbit){position:relative;z-index:1}
.hero-orbit{--orbit-x:0px;--orbit-y:0px;position:absolute;z-index:0;left:50%;top:45%;width:min(78vw,830px);aspect-ratio:1;transform:translate(calc(-50% + var(--orbit-x)),calc(-50% + var(--orbit-y)));pointer-events:none;transition:transform .45s cubic-bezier(.2,.8,.2,1)}.hero-orbit__halo{position:absolute;inset:12%;border-radius:50%;background:radial-gradient(circle,rgba(37,215,208,.14),rgba(132,108,255,.06) 30%,transparent 68%);filter:blur(12px);animation:lab-halo 8s ease-in-out infinite alternate}.hero-orbit__ring{position:absolute;border:1px solid rgba(154,229,236,.22);border-radius:50%;box-shadow:0 0 20px rgba(37,215,208,.06),inset 0 0 22px rgba(132,108,255,.04)}.hero-orbit__ring--outer{inset:4%;border-style:dashed;animation:lab-orbit-spin 28s linear infinite}.hero-orbit__ring--middle{inset:19%;border-color:rgba(132,108,255,.32);animation:lab-orbit-spin 19s linear infinite reverse}.hero-orbit__ring--inner{inset:34%;border-color:rgba(255,181,71,.3);border-style:dashed;animation:lab-orbit-spin 13s linear infinite}.hero-orbit__core{position:absolute;left:50%;top:50%;width:14%;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;background:radial-gradient(circle at 35% 30%,#e9ffff 0 4%,#51e2dc 21%,#143c5a 60%,transparent 69%);box-shadow:0 0 34px rgba(37,215,208,.6),0 0 86px rgba(132,108,255,.2);animation:lab-core-pulse 3.8s ease-in-out infinite}.hero-orbit__node{position:absolute;left:50%;top:50%;width:clamp(7px,1.2vw,12px);aspect-ratio:1;transform:rotate(var(--angle)) translateX(var(--radius));border-radius:50%;background:radial-gradient(circle at 30% 30%,#fff 0 12%,var(--lab-cyan) 18%,#155274 70%);box-shadow:0 0 14px rgba(37,215,208,.75);animation:lab-node-orbit var(--duration) linear var(--delay) infinite}.hero-orbit__node:nth-of-type(2n){background:radial-gradient(circle at 30% 30%,#fff 0 12%,#a896ff 18%,#34286e 70%);box-shadow:0 0 14px rgba(132,108,255,.7)}.hero-orbit__node:nth-of-type(3n){width:clamp(5px,.8vw,8px);background:radial-gradient(circle at 30% 30%,#fff 0 12%,#ffcf70 18%,#67451f 70%);box-shadow:0 0 13px rgba(255,181,71,.75)}

.course-route{width:min(900px,100%);margin:0 auto 38px;padding:17px 22px 14px;position:relative;display:grid;grid-template-columns:repeat(4,1fr);gap:8px}
.course-route::before{content:"";position:absolute;top:29px;left:11%;right:11%;height:1px;background:linear-gradient(90deg,var(--lab-cyan),var(--lab-violet),var(--lab-amber));opacity:.7}
.route-stop{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:7px;color:var(--lab-muted);font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.05em}
.route-stop i{display:grid;place-items:center;width:25px;height:25px;border:1px solid rgba(234,243,248,.36);border-radius:50%;background:var(--lab-space);color:var(--lab-ink);font-style:normal;transition:transform .25s ease,box-shadow .25s ease}
.route-stop:hover i{transform:scale(1.16);box-shadow:0 0 0 5px rgba(37,215,208,.1),0 0 18px rgba(37,215,208,.55)}
.route-stop:nth-child(2) i{border-color:var(--lab-cyan)}.route-stop:nth-child(3) i{border-color:var(--lab-violet)}.route-stop:nth-child(4) i{border-color:var(--lab-amber)}

.future-portal .courses-grid{gap:16px;max-width:1150px;padding:0}
.future-portal .course-card{--signal:var(--lab-cyan);min-height:302px;border-radius:14px;padding:29px 31px;background:linear-gradient(135deg,rgba(18,45,63,.89),rgba(10,29,43,.9));border:1px solid rgba(153,210,225,.17);box-shadow:inset 0 1px 0 rgba(255,255,255,.04),0 20px 40px rgba(0,0,0,.1);opacity:0;transform:translateY(24px);transition:opacity .55s ease,transform .35s cubic-bezier(.2,.8,.2,1),border-color .35s ease,box-shadow .35s ease}
.future-portal .connected-card{--signal:var(--lab-violet)}.future-portal .v2x-card{--signal:var(--lab-amber)}.future-portal .arduino-card{--signal:#66d9b1}
.future-portal .course-card::before{content:"";position:absolute;inset:0;background:radial-gradient(circle at var(--x,50%) var(--y,0%),color-mix(in srgb,var(--signal) 19%,transparent),transparent 44%);opacity:0;transition:opacity .3s ease;pointer-events:none}
.future-portal .course-card.is-revealed{opacity:1;transform:none}.future-portal .course-card.is-revealed:hover{transform:translateY(-7px);border-color:color-mix(in srgb,var(--signal) 72%,white);box-shadow:inset 0 1px 0 rgba(255,255,255,.12),0 25px 55px rgba(0,0,0,.24),0 0 0 1px color-mix(in srgb,var(--signal) 20%,transparent)}
.future-portal .course-card:hover::before{opacity:1}.future-portal .course-card .card-glow{background:radial-gradient(circle,var(--signal),transparent 66%);filter:blur(30px);opacity:0;transition:opacity .35s ease}.future-portal .course-card:hover .card-glow{opacity:.16}
.future-portal .card-number{font-family:"DM Mono",monospace;color:color-mix(in srgb,var(--signal) 78%,white);font-size:12px;letter-spacing:.12em}.future-portal .card-icon{width:44px;height:44px;border-radius:12px;background:color-mix(in srgb,var(--signal) 15%,transparent);border:1px solid color-mix(in srgb,var(--signal) 30%,transparent);font-size:22px}.future-portal .card-tag{color:var(--signal);background:color-mix(in srgb,var(--signal) 11%,transparent);border:1px solid color-mix(in srgb,var(--signal) 28%,transparent);font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.06em}
.future-portal .card-title{font-size:25px;letter-spacing:-.04em;line-height:1.28}.future-portal .card-subtitle,.future-portal .card-desc{color:var(--lab-muted)}.future-portal .card-stats{border-top-color:rgba(163,211,224,.13)}.future-portal .card-stat .num{color:var(--lab-ink);font-family:Orbitron,Inter,sans-serif}.future-portal .card-stat .label{color:var(--lab-muted)}.future-portal .card-arrow{color:var(--signal);border-color:color-mix(in srgb,var(--signal) 45%,transparent);background:color-mix(in srgb,var(--signal) 9%,transparent);transition:transform .3s ease,background .3s ease}.future-portal .course-card:hover .card-arrow{transform:translateX(4px);background:var(--signal);color:var(--lab-space)}
.future-portal .upcoming-section{max-width:1150px}.future-portal .upcoming-divider{border-color:var(--lab-line)}.future-portal .upcoming-divider-label{background:var(--lab-space);color:var(--lab-muted);font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.1em}.future-portal .upcoming-card{background:rgba(13,33,48,.62);border-color:var(--lab-line);border-radius:12px}.future-portal .info-section{background:rgba(4,13,23,.55);border-top-color:var(--lab-line)}.future-portal .info-section h2{font-family:Orbitron,"Microsoft YaHei",sans-serif;color:var(--lab-ink)}.future-portal .info-item{background:rgba(13,33,48,.6);border-color:var(--lab-line);border-radius:12px}.future-portal .info-item h4{color:var(--lab-ink)}.future-portal .info-item p,.future-portal .footer{color:var(--lab-muted)}

/* Courseware: quiet cockpit surfaces, designed for extended reading. */
body.future-course{--bg:var(--lab-space);--card:var(--lab-panel);--ink:var(--lab-ink);--muted:var(--lab-muted);--line:var(--lab-line);--primary:#b0f5ef;--primary-2:var(--course-signal,var(--lab-cyan));--accent:var(--lab-violet);--green:var(--lab-green);--amber:var(--lab-amber);--rose:var(--lab-red);background:var(--lab-space);color:var(--lab-ink);font-family:Inter,"PingFang SC","Microsoft YaHei",sans-serif}
body.future-course .layout{position:relative;z-index:1}
body.future-course::before{content:"";position:fixed;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(circle at 88% 8%,color-mix(in srgb,var(--course-signal,var(--lab-cyan)) 14%,transparent),transparent 25%),linear-gradient(rgba(140,213,225,.032) 1px,transparent 1px),linear-gradient(90deg,rgba(140,213,225,.032) 1px,transparent 1px);background-size:auto,42px 42px,42px 42px}
body.ros-course{--course-signal:#25d7d0}body.connected-course{--course-signal:#9f8cff}body.v2x-course{--course-signal:#ffb547}body.arduino-course{--course-signal:#68ddad}
.future-course .topbar{height:70px;padding:0 30px;background:rgba(7,19,31,.92);backdrop-filter:blur(18px);border-bottom:1px solid var(--lab-line);box-shadow:none}.future-course .topbar .logo{font-family:Orbitron,"Microsoft YaHei",sans-serif;font-size:16px;letter-spacing:.03em}.future-course .topbar .logo .dot,.future-course .topbar .dot{background:var(--course-signal);box-shadow:0 0 14px var(--course-signal)}.future-course .topbar .meta{font-size:12px;color:var(--lab-muted);gap:13px}.future-course .topbar .meta span{padding-left:13px;border-left:1px solid var(--lab-line)}
.future-course .layout{margin-top:70px;min-height:calc(100vh - 70px)}.future-course .sidebar{top:70px;width:316px;padding:21px 0 48px;background:rgba(8,25,38,.88);border-right-color:var(--lab-line);backdrop-filter:blur(18px)}.future-course .sidebar h3,.future-course .sidebar .sb-title{color:#7e9cab;font-family:"DM Mono",monospace;font-size:12px;letter-spacing:.14em;padding:0 20px 14px}.future-course .nav-item{color:#b6cad5;font-size:15.5px;line-height:1.5;padding:12px 18px;border-left-width:2px}.future-course .nav-item:hover{background:rgba(173,235,242,.06);color:var(--lab-ink)}.future-course .nav-item.active{color:var(--lab-ink);background:linear-gradient(90deg,color-mix(in srgb,var(--course-signal) 16%,transparent),transparent);border-left-color:var(--course-signal)}.future-course .nav-item .wk{width:28px;height:28px;line-height:28px;background:rgba(214,239,244,.09);border:1px solid rgba(189,230,237,.15);color:#bde8e7;border-radius:7px;font-family:"DM Mono",monospace;font-size:12px}.future-course .nav-item.active .wk{background:var(--course-signal);border-color:var(--course-signal);color:#07131f}.future-course .nav-sub{color:#94aeb9;font-size:13.5px;line-height:1.75;padding:5px 16px 6px 56px}.future-course .nav-sub:hover{color:var(--course-signal);background:transparent}.future-course .sidebar::-webkit-scrollbar-thumb{background:#244557}
.future-course .content{margin-left:316px;padding:42px clamp(20px,4vw,52px) 88px}.future-course .week{max-width:980px}.future-course .week.active{animation:lab-reveal .42s cubic-bezier(.2,.8,.2,1)}.future-course .week-head{padding:0 0 28px;margin-bottom:28px;background:none!important;color:var(--lab-ink)!important;border-bottom:1px solid var(--lab-line);border-radius:0;box-shadow:none}.future-course .week-head .tag{border-radius:5px;background:color-mix(in srgb,var(--course-signal) 13%,transparent)!important;border:1px solid color-mix(in srgb,var(--course-signal) 35%,transparent)!important;color:color-mix(in srgb,var(--course-signal) 70%,white)!important;font-family:"DM Mono",monospace;font-size:11px;letter-spacing:.07em;padding:5px 9px}.future-course .week-head h1{max-width:840px;font-size:clamp(28px,3vw,40px);line-height:1.25;letter-spacing:-.04em}.future-course .week-head .info{gap:8px 18px;margin-top:15px;color:var(--lab-muted)!important;font-size:12px}.future-course .week-head .info span{padding-right:18px;border-right:1px solid var(--lab-line)}
.future-course .card{background:linear-gradient(145deg,rgba(17,43,60,.92),rgba(11,30,45,.93));border:1px solid var(--lab-line);border-radius:12px;padding:29px 31px;margin-bottom:17px;box-shadow:inset 0 1px 0 rgba(255,255,255,.035),0 16px 30px rgba(0,0,0,.12)}.future-course .card h2{font-size:21px;color:var(--lab-ink);padding-bottom:14px;border-bottom-color:var(--lab-line)}.future-course .card h2 .ico,.future-course .ico{border-radius:8px;background:linear-gradient(135deg,var(--course-signal),var(--lab-violet))!important;color:#07131f}.future-course .card h3,.future-course .step h4{color:#c7f5f2}.future-course .card p,.future-course .card li{color:#c4d5de}.future-course .goals,.future-course .card.goals{background:linear-gradient(135deg,rgba(37,215,208,.1),rgba(132,108,255,.08))!important;border-color:rgba(37,215,208,.22)!important}.future-course .goals h2,.future-course .card.goals h2{color:#cffffb!important;border-color:rgba(37,215,208,.2)!important}
.future-course .tip{background:rgba(255,181,71,.08);border-color:rgba(255,181,71,.18);color:#e9d6a6}.future-course .tip.danger{background:rgba(255,110,127,.09);border-color:rgba(255,110,127,.23)}.future-course .tip.ok{background:rgba(85,215,150,.08);border-color:rgba(85,215,150,.2)}.future-course .tip b,.future-course .tip.danger b,.future-course .tip.ok b{color:inherit}.future-course figure img{border-color:var(--lab-line);box-shadow:0 10px 24px rgba(0,0,0,.2)}.future-course figcaption{color:var(--lab-muted)}.future-course table{color:#c6d8e1}.future-course th,.future-course td{border-color:var(--lab-line)}.future-course th{background:rgba(205,242,246,.07)!important;color:#dff6f5}.future-course tr:nth-child(even) td{background:rgba(0,0,0,.08)}.future-course .step{background:rgba(8,25,38,.42);border-color:var(--lab-line);box-shadow:none}.future-course .step::before{background:linear-gradient(135deg,var(--course-signal),var(--lab-violet));color:#07131f}.future-course .step .cmd,.future-course .cmd{background:#07131f!important;border:1px solid rgba(163,211,224,.14);color:#c1f5ef}.future-course details.principle{background:rgba(8,25,38,.55);border-color:var(--lab-line);border-left-color:var(--course-signal)}.future-course details.principle summary{color:#bdf2ee}.future-course details.principle .body,.future-course details.principle .body b{color:#c4d5de}.future-course .worksheet,.future-course .card.worksheet{background:linear-gradient(135deg,rgba(255,181,71,.1),rgba(255,118,84,.06))!important;border-color:rgba(255,181,71,.28)!important}.future-course .worksheet h2,.future-course .card.worksheet h2{color:#ffe4ad!important;border-color:rgba(255,181,71,.24)!important}.future-course .worksheet h3,.future-course .card.worksheet h3{color:#ffd68a}.future-course .ws-fill,.future-course .ws-record,.future-course .ws-info input{color:var(--lab-ink);background:rgba(7,19,31,.4);border-color:rgba(163,211,224,.25)}.future-course .ws-fill:focus,.future-course .ws-record:focus,.future-course .ws-info input:focus{border-color:var(--course-signal);box-shadow:0 0 0 3px color-mix(in srgb,var(--course-signal) 16%,transparent)}.future-course .eval table th,.future-course .card.eval th{background:linear-gradient(135deg,color-mix(in srgb,var(--course-signal) 45%,#07131f),#162c51)!important;border-color:var(--lab-line)}.future-course .chk{border-color:rgba(176,224,234,.23);color:var(--lab-muted);background:rgba(7,19,31,.35)}.future-course .chk.on{background:var(--course-signal)!important;border-color:var(--course-signal)!important;color:#07131f}.future-course .ck{border-color:var(--course-signal);background:rgba(7,19,31,.45);color:var(--course-signal)}.future-course .ck.on{background:var(--course-signal);color:#07131f}.future-course .toolbar{border-color:var(--lab-line)}.future-course .btn{border-radius:7px;background:color-mix(in srgb,var(--course-signal) 13%,transparent);border-color:color-mix(in srgb,var(--course-signal) 38%,transparent);color:#d9fffc;box-shadow:none}.future-course .btn:hover{background:var(--course-signal);border-color:var(--course-signal);color:#07131f}.future-course .btn.ghost{background:transparent;color:#c7e7e7}
.course-menu-button{display:none}.course-progress{margin-left:auto;display:flex;align-items:center;gap:9px;padding:5px 9px;border:1px solid var(--lab-line);border-radius:5px;color:#9db9c5;font-family:"DM Mono",monospace;font-size:10px;letter-spacing:.04em}.course-progress i{display:block;width:58px;height:3px;background:rgba(163,211,224,.15);overflow:hidden}.course-progress b{display:block;height:100%;width:0;background:var(--course-signal);box-shadow:0 0 8px var(--course-signal);transition:width .35s ease}
.future-course .content img[data-lightbox-ready]{cursor:zoom-in;transition:filter .25s ease,transform .25s ease}.future-course .content figure:has(img[data-lightbox-ready]):hover img{filter:brightness(1.08);transform:translateY(-2px)}
.course-image-lightbox[hidden]{display:none}.course-image-lightbox{position:fixed;z-index:500;inset:0;display:grid;place-items:center;padding:clamp(18px,4vw,56px);background:rgba(2,10,17,.88);backdrop-filter:blur(10px);animation:lab-lightbox-in .2s ease}.course-image-lightbox__stage{position:relative;display:grid;max-width:min(1220px,100%);max-height:100%;padding:13px;background:linear-gradient(145deg,rgba(20,53,72,.98),rgba(7,19,31,.98));border:1px solid rgba(184,235,240,.24);border-radius:12px;box-shadow:0 24px 80px rgba(0,0,0,.58)}.course-image-lightbox__image{display:block;max-width:100%;max-height:calc(100vh - 150px);margin:auto;object-fit:contain;border-radius:7px}.course-image-lightbox__caption{padding:12px 45px 2px 3px;color:#c5d9e2;font-size:13px;line-height:1.5}.course-image-lightbox__close{position:absolute;top:-15px;right:-15px;display:grid;place-items:center;width:37px;height:37px;border:1px solid rgba(215,250,250,.38);border-radius:50%;background:#102b3d;color:#effeff;font-size:25px;line-height:1;cursor:pointer;box-shadow:0 8px 20px rgba(0,0,0,.35);transition:background .2s ease,transform .2s ease}.course-image-lightbox__close:hover{background:var(--course-signal);color:#07131f;transform:rotate(90deg)}

@keyframes lab-spectrum{50%{background-position:100% 0}}@keyframes lab-drift{to{transform:translate3d(0,-1%,0) scale(1.03)}}@keyframes lab-reveal{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}@keyframes lab-lightbox-in{from{opacity:0;transform:scale(.98)}to{opacity:1;transform:none}}@keyframes lab-orbit-spin{to{transform:rotate(360deg)}}@keyframes lab-node-orbit{to{transform:rotate(calc(var(--angle) + 360deg)) translateX(var(--radius))}}@keyframes lab-halo{to{transform:scale(1.1);opacity:.65}}@keyframes lab-core-pulse{50%{transform:translate(-50%,-50%) scale(1.15);filter:brightness(1.25)}}@keyframes lab-meteor{0%{opacity:0;transform:translate3d(-22vw,-20vh,0) rotate(36deg)}6%{opacity:.8}25%{opacity:.48}46%,100%{opacity:0;transform:translate3d(125vw,92vh,0) rotate(36deg)}}
@media (max-width:800px){
  .future-portal .navbar{height:64px}.future-portal .nav-links{display:none}.future-portal .hero{padding-top:113px}.future-portal .hero-orbit{width:132vw;top:37%;opacity:.66}.future-portal .hero-orbit__node:nth-of-type(n+12){display:none}.future-portal .courses-grid{grid-template-columns:1fr}.future-portal .course-card{min-height:0}.course-route{padding-left:0;padding-right:0}.route-stop{font-size:8px}
  .future-course .topbar{height:62px;padding:0 16px;gap:10px}.future-course .topbar .logo{font-size:12px;overflow:hidden;text-overflow:ellipsis}.future-course .topbar .meta{display:none}.future-course .layout{margin-top:62px}.future-course .sidebar{top:62px;width:min(310px,86vw);transform:translateX(-104%);transition:transform .25s ease;z-index:120;box-shadow:20px 0 40px rgba(0,0,0,.3)}.future-course.menu-open .sidebar{transform:translateX(0)}.future-course .content{margin-left:0;padding:28px 16px 64px}.future-course .week-head h1{font-size:29px}.future-course .week-head .info span{font-size:11px}.future-course .card{padding:22px 18px}.future-course .card h2{font-size:19px}.future-course .card,.future-course .step{overflow-x:auto}.future-course table{font-size:14px}.future-course th,.future-course td{padding:9px 10px}.course-menu-button{display:grid;place-items:center;flex:0 0 34px;width:34px;height:34px;background:rgba(37,215,208,.1);border:1px solid rgba(37,215,208,.34);border-radius:7px;color:var(--lab-ink);cursor:pointer}.course-progress{margin-left:0}.course-progress i{width:34px}
  .course-image-lightbox{padding:19px}.course-image-lightbox__stage{padding:8px}.course-image-lightbox__image{max-height:calc(100vh - 115px)}.course-image-lightbox__caption{font-size:12px;padding:9px 37px 1px 1px}.course-image-lightbox__close{top:-12px;right:-7px}
}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}.future-portal #particle-canvas,.future-portal .cursor-glow,.meteor-field{display:none}.hero-orbit__node{animation:none!important}}
