/* Stephen Alabi | Static portfolio. No external dependencies. */
:root{--bg:#09131c;--bg2:#101e29;--card:#132633;--line:#2b4050;--text:#edf4f6;--muted:#a4b8c3;--lime:#c5ed83;--mint:#7ce0ce;--max:1160px;--radius:18px}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--bg);color:var(--text);font-family:Inter,ui-sans-serif,system-ui,-apple-system,'Segoe UI',sans-serif;line-height:1.65}a{color:inherit;text-decoration:none}button{font:inherit}::selection{background:var(--lime);color:#0c1821}.container{width:min(var(--max),calc(100% - 44px));margin-inline:auto}.skip{position:absolute;left:-9999px;top:0;padding:12px;background:var(--lime);color:#08121b;z-index:30}.skip:focus{left:15px}.topbar{position:sticky;top:0;z-index:20;background:rgba(9,19,28,.94);border-bottom:1px solid rgba(180,210,216,.12);backdrop-filter:blur(20px)}.nav{min-height:74px;display:flex;justify-content:space-between;align-items:center;gap:24px}.brand{display:flex;align-items:center;gap:11px;font-weight:800;letter-spacing:-.03em;font-size:1.08rem}.brandmark{display:grid;place-items:center;width:37px;height:37px;border:1px solid var(--lime);border-radius:11px;color:var(--lime);font-size:.83rem;letter-spacing:0}.navlinks{display:flex;align-items:center;gap:28px}.navlinks a{font-size:.86rem;color:#cbd9df}.navlinks a:hover,.footlinks a:hover{color:var(--lime)}.navlinks .nav-cta{border:1px solid #708e94;border-radius:8px;padding:9px 15px;color:var(--text)}.menu{display:none;background:transparent;color:var(--text);border:1px solid var(--line);padding:7px 10px;border-radius:8px}.eyebrow{display:inline-flex;align-items:center;gap:9px;text-transform:uppercase;letter-spacing:.17em;font-weight:800;font-size:.7rem;color:var(--lime)}.dot{height:7px;width:7px;background:var(--lime);border-radius:50%;box-shadow:0 0 0 4px #c5ed831a}.hero{position:relative;overflow:hidden;padding:100px 0 85px;border-bottom:1px solid var(--line)}.hero:after{content:'';position:absolute;inset:0;background:radial-gradient(circle at 85% 10%,rgba(124,224,206,.1),transparent 40%),linear-gradient(90deg,transparent 95%,rgba(197,237,131,.035) 95%);background-size:auto,48px 48px;pointer-events:none}.hero-grid{display:grid;grid-template-columns:minmax(0,1.25fr) minmax(290px,.75fr);gap:54px;align-items:center;position:relative;z-index:1}h1,h2,h3,h4,p{margin-top:0}h1{font-size:clamp(3.1rem,6.2vw,5.9rem);line-height:1.03;letter-spacing:-.075em;font-weight:780;margin:21px 0 24px}h1 span,.accent{color:var(--lime)}.intro{font-size:1.1rem;max-width:690px;color:#bed0d9;line-height:1.85}.cta-row{display:flex;gap:12px;flex-wrap:wrap;margin-top:30px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:13px 19px;border-radius:9px;font-weight:750;font-size:.87rem;border:1px solid var(--line);cursor:pointer;transition:transform .2s,background .2s}.btn:hover{transform:translateY(-2px)}.btn-primary{background:var(--lime);border-color:var(--lime);color:#0c201d}.btn-secondary{color:var(--text);background:#ffffff08}.micro{display:flex;flex-wrap:wrap;gap:9px 20px;margin-top:28px;font-size:.78rem;color:var(--muted)}.micro span{display:flex;align-items:center;gap:8px}.hero-art{background:#11222d;border:1px solid #3c5b60;border-radius:20px;padding:24px;min-height:358px;box-shadow:0 30px 80px #0005;position:relative}.hero-art:before{content:'';position:absolute;width:120px;height:120px;background:#c5ed8314;filter:blur(55px);top:0;right:0}.art-top{display:flex;justify-content:space-between;color:#afc8cd;font-family:ui-monospace,monospace;font-size:.72rem;border-bottom:1px solid var(--line);padding-bottom:15px}.art-status{color:var(--lime)}.arch{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:11px;margin-top:35px}.node{border:1px solid #41616a;background:#142d39;padding:16px 8px;border-radius:11px;text-align:center;font-size:.78rem;font-weight:800}.node small{display:block;color:#9db7c2;font-size:.62rem;font-weight:500;margin-top:3px}.arrow{color:var(--lime)}.art-mid{text-align:center;margin:13px 0;color:#87a8b1;font-size:.71rem;letter-spacing:.08em}.art-bottom{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:25px}.terminal{background:#081720;border:1px solid #2d4b51;border-radius:10px;padding:14px;overflow:hidden}.terminal .label{color:#89a8b5;font-size:.65rem;letter-spacing:.08em}.terminal code{display:block;color:var(--lime);font-size:.74rem;margin-top:6px;overflow-wrap:anywhere}.section{padding:88px 0}.section-alt{background:#0d1b25;border-block:1px solid #263c48}.section-heading{display:flex;justify-content:space-between;gap:20px;align-items:end;margin-bottom:31px}.section-heading h2,h2{font-size:clamp(2rem,3.6vw,3rem);letter-spacing:-.055em;line-height:1.14;margin:10px 0 0}.section-heading p{max-width:430px;color:var(--muted);margin:0}.facts{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin-top:36px}.fact{background:#112631;border:1px solid #2c4852;border-radius:14px;padding:24px}.fact strong{display:block;color:var(--lime);font-size:2rem;letter-spacing:-.06em;line-height:1.12}.fact span{display:block;color:#a9bdc6;font-size:.83rem;margin-top:9px}.filters{display:flex;flex-wrap:wrap;gap:8px;margin:20px 0 27px}.filter{border:1px solid #3a5260;background:transparent;color:#c4d4da;border-radius:99px;padding:9px 16px;cursor:pointer;font-size:.82rem}.filter[aria-pressed=true]{background:var(--lime);color:#11221b;border-color:var(--lime);font-weight:750}.projects{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:18px}.project{border:1px solid #344b59;background:linear-gradient(155deg,#172d38,#11222d);padding:28px;border-radius:16px;display:flex;flex-direction:column;min-height:315px;transition:border-color .2s,transform .2s}.project:hover{border-color:#88cdb5;transform:translateY(-3px)}.project.hidden{display:none}.project-top{display:flex;align-items:center;justify-content:space-between;gap:10px;margin-bottom:27px}.project-num{font-family:ui-monospace,monospace;color:var(--lime);font-size:.8rem}.project-cat{font-size:.68rem;letter-spacing:.11em;text-transform:uppercase;color:#aac2ca}.project h3{font-size:1.42rem;line-height:1.28;letter-spacing:-.035em;margin-bottom:12px}.project p{color:#b4c7cf;font-size:.91rem;flex:1}.tags{display:flex;flex-wrap:wrap;gap:6px;margin:9px 0 23px}.tag{border:1px solid #3d5760;padding:4px 9px;border-radius:5px;color:#c2d0d6;font-size:.68rem}.projlink{color:var(--lime);font-size:.85rem;font-weight:750}.about-grid{display:grid;grid-template-columns:.95fr 1.05fr;gap:80px}.bodycopy{color:#b6c9d1;font-size:1rem;line-height:1.9}.skills{display:grid;grid-template-columns:repeat(2,1fr);gap:13px}.skill{background:#142833;border:1px solid #314b57;border-radius:12px;padding:22px}.skill h3{font-size:.96rem;margin-bottom:9px}.skill p{font-size:.84rem;color:var(--muted);margin:0}.cv-grid{display:grid;grid-template-columns:1fr 1fr;gap:16px;margin-top:34px}.cv-card{background:#142934;border:1px solid #3b555e;padding:23px;border-radius:14px}.cv-card h3{font-size:1.08rem;margin:7px 0}.cv-card p{color:#afc5cc;font-size:.84rem}.contact-panel{background:linear-gradient(110deg,#183b3a,#12303d);border:1px solid #486969;border-radius:19px;padding:42px;display:flex;align-items:center;justify-content:space-between;gap:22px}.contact-panel h2{margin:11px 0}.contact-panel p{color:#b9d1d4;max-width:530px;margin-bottom:0}.footer{border-top:1px solid var(--line);padding:29px 0;color:#a1b4be;font-size:.8rem}.footer-inner{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}.footlinks{display:flex;gap:22px}.back{display:inline-block;color:var(--lime);font-size:.83rem;font-weight:800;margin-bottom:24px}.detail-hero{padding:80px 0 52px;background:radial-gradient(circle at 85% 15%,#24494640,transparent 45%);border-bottom:1px solid var(--line)}.detail-hero h1{max-width:950px;font-size:clamp(2.5rem,5vw,4.5rem)}.detail-hero .intro{max-width:830px}.detail-layout{display:grid;grid-template-columns:1fr 280px;gap:65px;padding:62px 0 90px}.article h2{font-size:1.55rem;margin:38px 0 17px;letter-spacing:-.035em}.article h2:first-child{margin-top:0}.article p,.article li{color:#bdd0d7}.article ul{padding-left:20px}.article li{margin-bottom:10px}.aside{align-self:start;position:sticky;top:110px;background:#132833;border:1px solid #35505b;border-radius:14px;padding:23px}.aside h3{font-size:.87rem;margin:0 0 11px}.aside .tags{margin-bottom:15px}.aside p{font-size:.79rem;color:var(--muted)}.disclaimer{font-size:.8rem;color:#94abb5;border-left:2px solid var(--lime);padding:10px 16px;margin-top:30px;background:#122530}.steps{display:grid;gap:10px;margin:22px 0}.step{display:grid;grid-template-columns:24px 1fr;gap:13px;padding:16px;border:1px solid #304d57;border-radius:10px;background:#132633;color:#bdcfd5}.step b{color:var(--lime)}.accentnum{font-weight:780;color:var(--lime)}a:focus-visible,button:focus-visible{outline:3px solid var(--lime);outline-offset:4px}@media(max-width:850px){.hero-grid,.about-grid,.detail-layout{grid-template-columns:1fr}.hero{padding:72px 0}.hero-art{max-width:520px}.aside{position:static}.about-grid{gap:32px}.section-heading{align-items:start;flex-direction:column}.section-heading p{max-width:none}}@media(max-width:650px){.container{width:min(var(--max),calc(100% - 32px))}.nav{min-height:66px}.menu{display:block}.navlinks{display:none;position:absolute;top:66px;left:0;right:0;background:#0d1c27;padding:18px 22px 23px;border-bottom:1px solid var(--line);flex-direction:column;align-items:stretch;gap:15px}.navlinks.open{display:flex}.navlinks a{padding:6px}.section{padding:66px 0}.projects,.facts,.skills,.cv-grid{grid-template-columns:1fr}.fact strong{font-size:1.7rem}.hero-art{min-height:310px}.contact-panel{padding:26px;align-items:start;flex-direction:column}.detail-layout{padding:40px 0 70px;gap:35px}.detail-hero{padding:49px 0}.project{min-height:auto}.intro{font-size:1rem}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

.profile-links{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1.5rem}.profile-links a{color:inherit;text-underline-offset:4px;font-weight:600}
